diff -Nrcpad gcc-16-20251116/ChangeLog gcc-16-20251123/ChangeLog
*** gcc-16-20251116/ChangeLog	Sun Nov 16 22:32:49 2025
--- gcc-16-20251123/ChangeLog	Sun Nov 23 22:32:07 2025
***************
*** 1,3 ****
--- 1,24 ----
+ 2025-11-20  Claudio Bantaloukas  <claudio.bantaloukas@arm.com>
+ 
+ 	* MAINTAINERS:  Add myself in forge integration maintainers
+ 
+ 2025-11-20  Josef Melcr  <josef.melcr@suse.com>
+ 
+ 	* MAINTAINERS: Update my email address.
+ 
+ 2025-11-20  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* MAINTAINERS: Update my email.
+ 
+ 2025-11-19  Martin Liska  <martin.liska@hey.com>
+ 
+ 	* MAINTAINERS: Add myself to write after approval (DSO).
+ 
+ 2025-11-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac (md_exec_prefix): Don't set on Solaris.
+ 	* configure: Regenerate.
+ 
  2025-11-03  Sam James  <sam@gentoo.org>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-16-20251116/LAST_UPDATED gcc-16-20251123/LAST_UPDATED
*** gcc-16-20251116/LAST_UPDATED	Sun Nov 16 22:36:02 2025
--- gcc-16-20251123/LAST_UPDATED	Sun Nov 23 22:33:01 2025
***************
*** 1 ****
! Obtained from git: master revision beba09b5c5a2f4ec4e75e5f6d3dd1e2494b04a2b
--- 1 ----
! Obtained from git: master revision 7d8af199af10078c865acd877937ebbad71b01a6
diff -Nrcpad gcc-16-20251116/MAINTAINERS gcc-16-20251123/MAINTAINERS
*** gcc-16-20251116/MAINTAINERS	Sun Nov 16 22:32:49 2025
--- gcc-16-20251123/MAINTAINERS	Sun Nov 23 22:32:07 2025
*************** gdbhooks.py             David Malcolm
*** 270,275 ****
--- 270,276 ----
  jit                     David Malcolm           <dmalcolm@redhat.com>
  gen* on machine desc    Richard Sandiford       <rdsandiford@googlemail.com>
  static analyzer         David Malcolm           <dmalcolm@redhat.com>
+ forge integration       Claudio Bantaloukas     <claudio.bantaloukas@arm.com>
  
  Note that individuals who maintain parts of the compiler need approval to
  check in changes outside of the parts of the compiler they maintain.
*************** Pedro Alves                     palves
*** 343,349 ****
  John David Anglin               danglin         <dave.anglin@bell.net>
  Harald Anlauf                   anlauf          <anlauf@gmx.de>
  Paul-Antoine Arras              parras          <parras@baylibre.com>
! Arsen Arsenović                 arsen           <arsen@aarsen.me>
  Raksit Ashok                    raksit          <raksit@google.com>
  Sterling Augustine              sterling        <augustine.sterling@gmail.com>
  Matt Austern                    austern         <austern@google.com>
--- 344,350 ----
  John David Anglin               danglin         <dave.anglin@bell.net>
  Harald Anlauf                   anlauf          <anlauf@gmx.de>
  Paul-Antoine Arras              parras          <parras@baylibre.com>
! Arsen Arsenović                 arsen           <aarsenovic@baylibre.com>
  Raksit Ashok                    raksit          <raksit@google.com>
  Sterling Augustine              sterling        <augustine.sterling@gmail.com>
  Matt Austern                    austern         <austern@google.com>
*************** Bryce McKinlay                  bryce
*** 680,686 ****
  Adam Megacz                     -               <adam@xwt.org>
  Bingfeng Mei                    meibf           <bmei@broadcom.com>
  Michael Meissner                meissner        <gnu@the-meissners.org>
! Josef Melcr                     jmelcr          <jmelcr02@gmail.com>
  Jason Merrill                   jason           <jason@redhat.com>
  Jim Meyering                    -               <jim@meyering.net>
  Martin Michlmayr                tbm             <tbm@cyrius.com>
--- 681,687 ----
  Adam Megacz                     -               <adam@xwt.org>
  Bingfeng Mei                    meibf           <bmei@broadcom.com>
  Michael Meissner                meissner        <gnu@the-meissners.org>
! Josef Melcr                     jmelcr          <josef.melcr@suse.com>
  Jason Merrill                   jason           <jason@redhat.com>
  Jim Meyering                    -               <jim@meyering.net>
  Martin Michlmayr                tbm             <tbm@cyrius.com>
*************** Tim Lange
*** 960,965 ****
--- 961,967 ----
  Jeff Law                                        <jeffreyalaw@gmail.com>
  Jeff Law                                        <jlaw@tachyum.com>
  Jeff Law                                        <jlaw@ventanamicro.com>
+ Martin Liška                                    <martin.liska@hey.com>
  H.J. Lu                                         <hjl.tools@gmail.com>
  Yuao Ma                                         <yuao@gcc.gnu.org>
  Matthew Malcomson                               <mmalcomson@nvidia.com>
diff -Nrcpad gcc-16-20251116/MD5SUMS gcc-16-20251123/MD5SUMS
*** gcc-16-20251116/MD5SUMS	Sun Nov 16 22:36:23 2025
--- gcc-16-20251123/MD5SUMS	Sun Nov 23 22:33:17 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20251116.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20251123.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** ac5a8807f431d3dab46a7425b96379e4  .gitig
*** 23,34 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! e3b8f542752068f7deb76cb95b78478f  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 781ec57105d56ed9f0638d047afa4f0e  LAST_UPDATED
! c4d040796ef5e08dc8d7ea898235f87e  MAINTAINERS
  e4676e623f8df5efef68f36db1121a28  Makefile.def
  e602349d286d2792c339d5a6f514efde  Makefile.in
  cc2d22050d55934f814da4b15b72cef2  Makefile.tpl
--- 23,34 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 3002ed26c9d6dcea4d62a9cf70398a6b  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 2d390ab0362a0310c62b1c2da66d78da  LAST_UPDATED
! 976d571bbc65f66833213f8315c6d2d0  MAINTAINERS
  e4676e623f8df5efef68f36db1121a28  Makefile.def
  e602349d286d2792c339d5a6f514efde  Makefile.in
  cc2d22050d55934f814da4b15b72cef2  Makefile.tpl
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 157,163 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  b6028a7b1959751fb1fdfd1c10eae9f5  configure
  5c5c418bb7c467a8774137ab47d4fcae  configure.ac
! fedd7a489e04e54b807fbec3a51647b1  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
--- 157,163 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  b6028a7b1959751fb1fdfd1c10eae9f5  configure
  5c5c418bb7c467a8774137ab47d4fcae  configure.ac
! f3841fbb657fa927db685c972326ec31  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
*************** c031cdd918e93a5780aab350a42591d8  contri
*** 195,201 ****
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  d577ea19d05f19a8364f73c9901223b7  contrib/filter_params.py
  1f09615feb91c049cbf46b27ea159c58  contrib/gcc-changelog/git_check_commit.py
! cfd2b24c705477cb0ef1813fe34726ba  contrib/gcc-changelog/git_commit.py
  6a772ce384751a560f60790681e6fc41  contrib/gcc-changelog/git_email.py
  039963086e96c2e9fdf8ae5643394a9c  contrib/gcc-changelog/git_repository.py
  5c0a44b6238e0b72cf2b5d2ad94c0e36  contrib/gcc-changelog/git_update_version.py
--- 195,201 ----
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  d577ea19d05f19a8364f73c9901223b7  contrib/filter_params.py
  1f09615feb91c049cbf46b27ea159c58  contrib/gcc-changelog/git_check_commit.py
! 775a46a1c14d05608c320955cf3ad8db  contrib/gcc-changelog/git_commit.py
  6a772ce384751a560f60790681e6fc41  contrib/gcc-changelog/git_email.py
  039963086e96c2e9fdf8ae5643394a9c  contrib/gcc-changelog/git_repository.py
  5c0a44b6238e0b72cf2b5d2ad94c0e36  contrib/gcc-changelog/git_update_version.py
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 521,527 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 0868579af2e53bec1b73615b1e6b6306  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 521,527 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 878c35062e7c8162801e0dfd77815bf0  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 558,576 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 66d7a436a6d97eb776ef21e8b92600ca  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! 43e0e9be83efad93efb8371dd6d11721  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
  ee95df275c932cada412ed8168975af9  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! b57c071cd408654eaad1ae6ebe196ffc  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 558,576 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 185ed27aa3f585eae2d73b4297257c02  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! c2da01d26fef7c82d02d2e0dd684d0bb  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
  ee95df275c932cada412ed8168975af9  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! a5fe0c136e032c34a3c7d5e1c7b1ca08  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** cd313e8a12cdfb20b99eede7c5252f16  gcc/ad
*** 694,700 ****
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
! 3b3b1a4a300ed753e0096fbbf83db984  gcc/ada/doc/gnat_rm/obsolescent_features.rst
  24b733fd801c2f3dd690a82519819be0  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  1813c7ae4ff4245bfbeb8dcf9e475019  gcc/ada/doc/gnat_rm/security_hardening_features.rst
  4de72a3ff83ec3e42cb0d1eaffe486dd  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
--- 694,700 ----
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
! 589bf80a1722468834f1e02674ad1e27  gcc/ada/doc/gnat_rm/obsolescent_features.rst
  24b733fd801c2f3dd690a82519819be0  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
  1813c7ae4ff4245bfbeb8dcf9e475019  gcc/ada/doc/gnat_rm/security_hardening_features.rst
  4de72a3ff83ec3e42cb0d1eaffe486dd  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
*************** f1c71b64e1c84e240c7b5aea7331a32a  gcc/ad
*** 724,730 ****
  1624ebd692cbdf84a719739c08b2e6ac  gcc/ada/einfo-utils.adb
  76b28b93a0162cb31366aec9f77d5717  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! e1b8a859266e3f7c63d9f521b703c835  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
--- 724,730 ----
  1624ebd692cbdf84a719739c08b2e6ac  gcc/ada/einfo-utils.adb
  76b28b93a0162cb31366aec9f77d5717  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! f0a4efd83a444d7a3af14c0603f68b7a  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
*************** e1b8a859266e3f7c63d9f521b703c835  gcc/ad
*** 740,746 ****
  5982702e01a95b6f1a9d43d315634f4e  gcc/ada/erroutc-pretty_emitter.ads
  7ff69fee60c99ef8c581bff41c6a2e59  gcc/ada/erroutc-sarif_emitter.adb
  4f1533723c09c587085c55610017eccb  gcc/ada/erroutc-sarif_emitter.ads
! 699cf6f5fa87764d6f78687ee4140545  gcc/ada/erroutc.adb
  e51a9a19184b2a73f27bb944998177e6  gcc/ada/erroutc.ads
  85388e3edfef44bd2d594c366d29305b  gcc/ada/errsw.adb
  718511a4ab2997da906bb1af2b9872f5  gcc/ada/errsw.ads
--- 740,746 ----
  5982702e01a95b6f1a9d43d315634f4e  gcc/ada/erroutc-pretty_emitter.ads
  7ff69fee60c99ef8c581bff41c6a2e59  gcc/ada/erroutc-sarif_emitter.adb
  4f1533723c09c587085c55610017eccb  gcc/ada/erroutc-sarif_emitter.ads
! 9b3bbb10cf315449cca1a1afa1a2e388  gcc/ada/erroutc.adb
  e51a9a19184b2a73f27bb944998177e6  gcc/ada/erroutc.ads
  85388e3edfef44bd2d594c366d29305b  gcc/ada/errsw.adb
  718511a4ab2997da906bb1af2b9872f5  gcc/ada/errsw.ads
*************** e51a9a19184b2a73f27bb944998177e6  gcc/ad
*** 749,759 ****
  8745064abd42114e7f2f12824abd58f8  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! d2a40233452ab7a167be3fb4ec97c4f1  gcc/ada/exp_aggr.adb
  738bfb6669a1b696ef62dbecd858300a  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 2c8336eaf1112c57f5514dbf092163c7  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
--- 749,759 ----
  8745064abd42114e7f2f12824abd58f8  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! 70808af6dd9f36db8cd7a7c3f7022db0  gcc/ada/exp_aggr.adb
  738bfb6669a1b696ef62dbecd858300a  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! edc5a63e8a9a6555d1caa4bfeb18fec4  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
*************** fce186389d317dec9c580f569a2a845a  gcc/ad
*** 766,780 ****
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
  554b13411e0db645844aa504d3260d0f  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! 205beff1a4bd7dcba2726eb5409736c9  gcc/ada/exp_ch3.adb
  d1b7c8ba53a4cc5868e87b17370562ce  gcc/ada/exp_ch3.ads
! 7ea49619ef3664bf01ce8e807e344399  gcc/ada/exp_ch4.adb
  ef982b9647c35560ae7ff386e547bd16  gcc/ada/exp_ch4.ads
! a6101b8ff6b37d2b8018d7081f04151a  gcc/ada/exp_ch5.adb
  f0c7dc0ade3f9639e946e709a9288f31  gcc/ada/exp_ch5.ads
! a79ce2e1b9f7db5ec2ca45de924185f5  gcc/ada/exp_ch6.adb
! 4a10c6dc6840a4fb29cd1b8a6b191865  gcc/ada/exp_ch6.ads
! e689c007fdbafa4cd1e55834518a9ad0  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  273b4eb2c6bce53164ea7f4427c65eb7  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
--- 766,780 ----
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
  554b13411e0db645844aa504d3260d0f  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! 40045b6e204fce140e96693a6c50cc3f  gcc/ada/exp_ch3.adb
  d1b7c8ba53a4cc5868e87b17370562ce  gcc/ada/exp_ch3.ads
! c9c406ca2c19dde461ae02ebbaeaa861  gcc/ada/exp_ch4.adb
  ef982b9647c35560ae7ff386e547bd16  gcc/ada/exp_ch4.ads
! 40dcdab9a967b88066b028e7b211dcc4  gcc/ada/exp_ch5.adb
  f0c7dc0ade3f9639e946e709a9288f31  gcc/ada/exp_ch5.ads
! 6d68ecb035b516ac01b3af4b58d3bd22  gcc/ada/exp_ch6.adb
! 1cc8ea073b02b57f845f26431fb87a6e  gcc/ada/exp_ch6.ads
! a444cc066ffab06bb201f0edfb33e795  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  273b4eb2c6bce53164ea7f4427c65eb7  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
*************** f47ce79d25dbb4d2f5cc6c375ee8c103  gcc/ad
*** 784,798 ****
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
  c5f46927bfde5cfdba7070186c0a3890  gcc/ada/exp_dbug.adb
  3677ab097250ba7eea73ad4042759fff  gcc/ada/exp_dbug.ads
! cc3726d13e05b448f2aafd3e2d176496  gcc/ada/exp_disp.adb
  7151f16c23b394a2f2eef990ebee4e20  gcc/ada/exp_disp.ads
  f8d7c73c2eb136405382e9f889d15683  gcc/ada/exp_dist.adb
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
  d82e2d327d75e250ca7bdd5716c9bf7d  gcc/ada/exp_fixd.adb
  9633ee578c6cb9ea5577a5cade68bdcc  gcc/ada/exp_fixd.ads
! c48a8396237679c48ceef2c507661e1a  gcc/ada/exp_imgv.adb
  9fc56117157205ad4de1209b42148d67  gcc/ada/exp_imgv.ads
! 9f1bbeb12a811457cfb88a7e17ca9740  gcc/ada/exp_intr.adb
  923affd79668e065bae4808313b11bf9  gcc/ada/exp_intr.ads
  6161c718f4bd4f605642bedae6f6642f  gcc/ada/exp_pakd.adb
  0e4de6363c3876604fc8fa97e180ddcf  gcc/ada/exp_pakd.ads
--- 784,798 ----
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
  c5f46927bfde5cfdba7070186c0a3890  gcc/ada/exp_dbug.adb
  3677ab097250ba7eea73ad4042759fff  gcc/ada/exp_dbug.ads
! 8b0641ee10b228800bf6145ff63fde36  gcc/ada/exp_disp.adb
  7151f16c23b394a2f2eef990ebee4e20  gcc/ada/exp_disp.ads
  f8d7c73c2eb136405382e9f889d15683  gcc/ada/exp_dist.adb
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
  d82e2d327d75e250ca7bdd5716c9bf7d  gcc/ada/exp_fixd.adb
  9633ee578c6cb9ea5577a5cade68bdcc  gcc/ada/exp_fixd.ads
! 3750ee67e0ae24c7531e30118722754f  gcc/ada/exp_imgv.adb
  9fc56117157205ad4de1209b42148d67  gcc/ada/exp_imgv.ads
! 7abc7f693b99f82d271a7f9f6d0194e3  gcc/ada/exp_intr.adb
  923affd79668e065bae4808313b11bf9  gcc/ada/exp_intr.ads
  6161c718f4bd4f605642bedae6f6642f  gcc/ada/exp_pakd.adb
  0e4de6363c3876604fc8fa97e180ddcf  gcc/ada/exp_pakd.ads
*************** ee769a63f7ef20a179accef0a80ef873  gcc/ad
*** 812,819 ****
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  1958eceb4f7e06ddd110ee84a21012ef  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! 8ee7eae69576101193cb569cc9705085  gcc/ada/exp_util.adb
! 24baec8a8e8188bc72055a6a83ac20fb  gcc/ada/exp_util.ads
  46d0480b64db4c72cf1f08b18e3c33cf  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
  b38851c9b7a0167a71b96e69b7c86fb1  gcc/ada/expect.c
--- 812,819 ----
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  1958eceb4f7e06ddd110ee84a21012ef  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! 7e96dba8425a62895c551c2ec3e34a37  gcc/ada/exp_util.adb
! 813a5c0b7d57592e75f975d542116d56  gcc/ada/exp_util.ads
  46d0480b64db4c72cf1f08b18e3c33cf  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
  b38851c9b7a0167a71b96e69b7c86fb1  gcc/ada/expect.c
*************** e0c5e28f92b1d5fad283ec608aceb807  gcc/ad
*** 827,833 ****
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  6aaa208cd2b84362faa2525028094cc9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 98545697ec547fb8b75bcd812c250c23  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  5f9e0e6d3b96540c54ba9e0ca89941e4  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
--- 827,833 ----
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  6aaa208cd2b84362faa2525028094cc9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 03c0209452b0328cb372c379dad3a2a0  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  5f9e0e6d3b96540c54ba9e0ca89941e4  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
*************** bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ad
*** 840,846 ****
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! db021d815c75202a31bad7cf052b883d  gcc/ada/gcc-interface/decl.cc
  fa1feb51010fc73b933487acbdcf85e8  gcc/ada/gcc-interface/gadaint.h
  becebc263397cb3c5be3c7083cf21c55  gcc/ada/gcc-interface/gigi.h
  8c3391ec25d2f8a3e26b0553d537d3e2  gcc/ada/gcc-interface/lang-specs.h
--- 840,846 ----
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! 087459e6dbd1baa055ebaeb84b147665  gcc/ada/gcc-interface/decl.cc
  fa1feb51010fc73b933487acbdcf85e8  gcc/ada/gcc-interface/gadaint.h
  becebc263397cb3c5be3c7083cf21c55  gcc/ada/gcc-interface/gigi.h
  8c3391ec25d2f8a3e26b0553d537d3e2  gcc/ada/gcc-interface/lang-specs.h
*************** b350a6fd65cafe8bd47dc42192437310  gcc/ad
*** 852,863 ****
  d7f5374a67a40e0ebecaf6ba95369af1  gcc/ada/gcc-interface/trans.cc
  266cd844950bb1df51718e65e78177aa  gcc/ada/gcc-interface/utils.cc
  0b638ee76fd250092e4f0077d2deb899  gcc/ada/gcc-interface/utils2.cc
! 04cd290576574ac52b92f4be4c411b72  gcc/ada/gen_il-fields.ads
! cb15cb17f05d990b652fea67a129850e  gcc/ada/gen_il-gen-gen_entities.adb
! 8ec84c33f7fdcfd609907357c560f5ef  gcc/ada/gen_il-gen-gen_nodes.adb
  a34dfe8183cd92cbf3a1b3bd307ad987  gcc/ada/gen_il-gen.adb
  f12cc477a1b44809e41831bc2d51d242  gcc/ada/gen_il-gen.ads
! a2d89b8f2815cb0a787f37754f315053  gcc/ada/gen_il-internals.adb
  df0beb95a99f054fd498bb3fc0b8fccc  gcc/ada/gen_il-internals.ads
  6f79de1a05bf91310c857e93030b71e6  gcc/ada/gen_il-main.adb
  8c6b2242472f0e1b3a9a24b609a86723  gcc/ada/gen_il-types.ads
--- 852,863 ----
  d7f5374a67a40e0ebecaf6ba95369af1  gcc/ada/gcc-interface/trans.cc
  266cd844950bb1df51718e65e78177aa  gcc/ada/gcc-interface/utils.cc
  0b638ee76fd250092e4f0077d2deb899  gcc/ada/gcc-interface/utils2.cc
! c890d810259c6c7abec61c9108498443  gcc/ada/gen_il-fields.ads
! cb6e91720726277e3f4542d2859a43b0  gcc/ada/gen_il-gen-gen_entities.adb
! 3275bc2c1516024292d828d48fa7b23e  gcc/ada/gen_il-gen-gen_nodes.adb
  a34dfe8183cd92cbf3a1b3bd307ad987  gcc/ada/gen_il-gen.adb
  f12cc477a1b44809e41831bc2d51d242  gcc/ada/gen_il-gen.ads
! 6873d3c21f0f9bba1145fcaed5038083  gcc/ada/gen_il-internals.adb
  df0beb95a99f054fd498bb3fc0b8fccc  gcc/ada/gen_il-internals.ads
  6f79de1a05bf91310c857e93030b71e6  gcc/ada/gen_il-main.adb
  8c6b2242472f0e1b3a9a24b609a86723  gcc/ada/gen_il-types.ads
*************** a1d2619ccca21c06754f3cdd326876e1  gcc/ad
*** 868,883 ****
  0930ee3acae3e581cd90b4ea71d36c46  gcc/ada/get_scos.ads
  c30d04e8e72b6ecb391a5f74ed43baa6  gcc/ada/get_targ.adb
  1033bc14018eca0ac6056a8955c8e228  gcc/ada/get_targ.ads
! edb8d147c2dac67cc28d546f33545c95  gcc/ada/ghost.adb
! 1109d7291e3ece3ae8cb7b668e16d9cd  gcc/ada/ghost.ads
  6f5b1925a8a5b030703dd62acb3e37cc  gcc/ada/gnat-style.texi
  be98a1e6f04922fb22c79c4540070fe5  gcc/ada/gnat1drv.adb
  9ed317231a93f12d370f13f5070cdaab  gcc/ada/gnat1drv.ads
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! f7aae00b12b09b060b9972d138c24607  gcc/ada/gnat_rm.texi
! 6589658b2ef49f36160e596b9f4d3629  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  4fea416b1232ad73eeb5e21f09d13496  gcc/ada/gnatchop.adb
--- 868,883 ----
  0930ee3acae3e581cd90b4ea71d36c46  gcc/ada/get_scos.ads
  c30d04e8e72b6ecb391a5f74ed43baa6  gcc/ada/get_targ.adb
  1033bc14018eca0ac6056a8955c8e228  gcc/ada/get_targ.ads
! 70d52fc975506913110cee5a16176568  gcc/ada/ghost.adb
! 32b18c6966867f43692dfea3c2706c8d  gcc/ada/ghost.ads
  6f5b1925a8a5b030703dd62acb3e37cc  gcc/ada/gnat-style.texi
  be98a1e6f04922fb22c79c4540070fe5  gcc/ada/gnat1drv.adb
  9ed317231a93f12d370f13f5070cdaab  gcc/ada/gnat1drv.ads
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! 92600035e939bc79593474b309aea545  gcc/ada/gnat_rm.texi
! dac0357611e00c283c45a756c50033ee  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  4fea416b1232ad73eeb5e21f09d13496  gcc/ada/gnatchop.adb
*************** abb502e358163dc5e01633496a0013fc  gcc/ad
*** 932,938 ****
  6b70911496d7f99ec7eaea7aff3cdfdc  gcc/ada/lib-writ.adb
  b6ab6aa41e1a35af588f7ac62bd68af4  gcc/ada/lib-writ.ads
  d1852c8e168ded223730761c0854b44f  gcc/ada/lib-xref-spark_specific.adb
! ec836ec1d277ea32256e18e07e29b00f  gcc/ada/lib-xref.adb
  d4f360a3abffdbf0ea415e2631c58045  gcc/ada/lib-xref.ads
  e15b36c98a01c7093ce126c5b2a938e6  gcc/ada/lib.adb
  cba1c23fd4669470c62a56e00365d141  gcc/ada/lib.ads
--- 932,938 ----
  6b70911496d7f99ec7eaea7aff3cdfdc  gcc/ada/lib-writ.adb
  b6ab6aa41e1a35af588f7ac62bd68af4  gcc/ada/lib-writ.ads
  d1852c8e168ded223730761c0854b44f  gcc/ada/lib-xref-spark_specific.adb
! 162fb1452d3090c65f78931d5c960e59  gcc/ada/lib-xref.adb
  d4f360a3abffdbf0ea415e2631c58045  gcc/ada/lib-xref.ads
  e15b36c98a01c7093ce126c5b2a938e6  gcc/ada/lib.adb
  cba1c23fd4669470c62a56e00365d141  gcc/ada/lib.ads
*************** c04bb8934366f43faa60d914e7ebea7a  gcc/ad
*** 980,987 ****
  cd98b5f4663e198ab5194e652b7df58c  gcc/ada/libgnarl/a-synbar.ads
  b738e4a9820ed618e004930f19779abd  gcc/ada/libgnarl/a-synbar__posix.adb
  2e7483c4a6b759489ca9ec6523a9decf  gcc/ada/libgnarl/a-synbar__posix.ads
! 83f1e734ef59514d08f0513f31d67b79  gcc/ada/libgnarl/a-sytaco.adb
! 91b28b3fa128bb6c32dd4c3d9ee4e0fe  gcc/ada/libgnarl/a-sytaco.ads
  90a1a6010ceb30838371034cddc6b7ef  gcc/ada/libgnarl/a-tasatt.adb
  0ef8e550e2240913458310113866e236  gcc/ada/libgnarl/a-tasatt.ads
  f0df6fe3230f1805261bec2afdbb09e3  gcc/ada/libgnarl/a-taside.adb
--- 980,987 ----
  cd98b5f4663e198ab5194e652b7df58c  gcc/ada/libgnarl/a-synbar.ads
  b738e4a9820ed618e004930f19779abd  gcc/ada/libgnarl/a-synbar__posix.adb
  2e7483c4a6b759489ca9ec6523a9decf  gcc/ada/libgnarl/a-synbar__posix.ads
! 6e975e5c206b063d9138098f591974c5  gcc/ada/libgnarl/a-sytaco.adb
! 6bef6b0ca8c98131f84198e7d562ecd7  gcc/ada/libgnarl/a-sytaco.ads
  90a1a6010ceb30838371034cddc6b7ef  gcc/ada/libgnarl/a-tasatt.adb
  0ef8e550e2240913458310113866e236  gcc/ada/libgnarl/a-tasatt.ads
  f0df6fe3230f1805261bec2afdbb09e3  gcc/ada/libgnarl/a-taside.adb
*************** d475a343d3eed38d614303ac03b832a7  gcc/ad
*** 1085,1099 ****
  caca0580484d424b20706cb62d19b724  gcc/ada/libgnarl/s-taenca.ads
  57e16a30c4f1191e98437b22b4da797a  gcc/ada/libgnarl/s-taprob.adb
  49a07992177fb6dffe1ac26e70bfb70c  gcc/ada/libgnarl/s-taprob.ads
! b11be01de6f079f6e83c844e9fdaf759  gcc/ada/libgnarl/s-taprop.ads
! 280c57372c08d2232f1f1a417ac07c04  gcc/ada/libgnarl/s-taprop__dummy.adb
! 4dea01d120792b0f35f1aec470e7fdfb  gcc/ada/libgnarl/s-taprop__linux.adb
! 19097481817acd9d3de1ed84aa731c02  gcc/ada/libgnarl/s-taprop__mingw.adb
! 139d97e773970f5955d60a4af95755cb  gcc/ada/libgnarl/s-taprop__posix.adb
! 200878ea37f01f75d839ef9be348b246  gcc/ada/libgnarl/s-taprop__qnx.adb
! eba7cc72920c9e16506a4955d48cb118  gcc/ada/libgnarl/s-taprop__rtems.adb
! e819a6c285d9c687a6d0f49862d0ec7a  gcc/ada/libgnarl/s-taprop__solaris.adb
! 2fdbab980ce8e36304f943e853487d36  gcc/ada/libgnarl/s-taprop__vxworks.adb
  54f9a84166acb856f39a340a63cbe93d  gcc/ada/libgnarl/s-tarest.adb
  f943e29ed85f640ca38027258124108b  gcc/ada/libgnarl/s-tarest.ads
  c084158198a46d6300e6a017e3230ba1  gcc/ada/libgnarl/s-tasdeb.adb
--- 1085,1099 ----
  caca0580484d424b20706cb62d19b724  gcc/ada/libgnarl/s-taenca.ads
  57e16a30c4f1191e98437b22b4da797a  gcc/ada/libgnarl/s-taprob.adb
  49a07992177fb6dffe1ac26e70bfb70c  gcc/ada/libgnarl/s-taprob.ads
! c2f0453acedc4e7c43d9fb22e83792ee  gcc/ada/libgnarl/s-taprop.ads
! ae3995dbf442a7dfdadbd543ed3eeb31  gcc/ada/libgnarl/s-taprop__dummy.adb
! 790a02fec12562a3cb9cd9a135e0a3ab  gcc/ada/libgnarl/s-taprop__linux.adb
! 69ac46035fe2b3ca953aff9f812f6608  gcc/ada/libgnarl/s-taprop__mingw.adb
! 3c9c7fa53b814a54eebe4402dd7e8dfd  gcc/ada/libgnarl/s-taprop__posix.adb
! cfd9bdc9f738bc4d3d19b56da5ef2c05  gcc/ada/libgnarl/s-taprop__qnx.adb
! 7eb50d1c9f71494a367ff1af3dcdf7c3  gcc/ada/libgnarl/s-taprop__rtems.adb
! 691d192af7fe4a7171a684d56489a6cb  gcc/ada/libgnarl/s-taprop__solaris.adb
! 5912a7bff39b4cea05f7abf4a60c565c  gcc/ada/libgnarl/s-taprop__vxworks.adb
  54f9a84166acb856f39a340a63cbe93d  gcc/ada/libgnarl/s-tarest.adb
  f943e29ed85f640ca38027258124108b  gcc/ada/libgnarl/s-tarest.ads
  c084158198a46d6300e6a017e3230ba1  gcc/ada/libgnarl/s-tasdeb.adb
*************** bc1be7ed257dc2bc42b04b39ca2bd2fb  gcc/ad
*** 1107,1123 ****
  77f075c6e56bdca08b741f151f9eb005  gcc/ada/libgnarl/s-tasinf__solaris.adb
  6d3b4bd0f78a68204164d82adea0aace  gcc/ada/libgnarl/s-tasinf__solaris.ads
  3f433df8312f68fc2bbd7e62d2becc35  gcc/ada/libgnarl/s-tasinf__vxworks.ads
! 0b8d89b5603a2f2889fd533367bdfacf  gcc/ada/libgnarl/s-tasini.adb
  99bac631458d5922e3e0dfbfc446d7de  gcc/ada/libgnarl/s-tasini.ads
  b47c7bdcc14eca2ae99c4167907594de  gcc/ada/libgnarl/s-taskin.adb
! 18b3b58b71151adeb1d36614622de5a1  gcc/ada/libgnarl/s-taskin.ads
! a52055c2269c1f0aec1997726982cd79  gcc/ada/libgnarl/s-taspri__dummy.ads
! 4e55db4097d62b4fb7fb4ba8157941e9  gcc/ada/libgnarl/s-taspri__lynxos.ads
! 906bfae84e8ffe3ff6c0a68b9e656a52  gcc/ada/libgnarl/s-taspri__mingw.ads
! de6024645e8981661fac17c30b9f9919  gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
! 9f45c9cffd82075ba1427c0cece909df  gcc/ada/libgnarl/s-taspri__posix.ads
! 031c5dca67d492296dad2a7d8e431cef  gcc/ada/libgnarl/s-taspri__solaris.ads
! f0b3eceb2b9265a6b8d06c18e1773ca0  gcc/ada/libgnarl/s-taspri__vxworks.ads
  ac23cdf83e13f4c3400030cce9d6201e  gcc/ada/libgnarl/s-tasque.adb
  ae0a263b4415dd958a4c21f8d7d844d6  gcc/ada/libgnarl/s-tasque.ads
  f92e9f8737cb531736927ccb20d28ad9  gcc/ada/libgnarl/s-tasren.adb
--- 1107,1123 ----
  77f075c6e56bdca08b741f151f9eb005  gcc/ada/libgnarl/s-tasinf__solaris.adb
  6d3b4bd0f78a68204164d82adea0aace  gcc/ada/libgnarl/s-tasinf__solaris.ads
  3f433df8312f68fc2bbd7e62d2becc35  gcc/ada/libgnarl/s-tasinf__vxworks.ads
! ab58fcff81225ac5d2259fa923a13d19  gcc/ada/libgnarl/s-tasini.adb
  99bac631458d5922e3e0dfbfc446d7de  gcc/ada/libgnarl/s-tasini.ads
  b47c7bdcc14eca2ae99c4167907594de  gcc/ada/libgnarl/s-taskin.adb
! 6ad1f56a87a5e0e1fe9e2dbb7c2cd000  gcc/ada/libgnarl/s-taskin.ads
! 4acb1ae019b51c9a3bd119be7e771c88  gcc/ada/libgnarl/s-taspri__dummy.ads
! 4da3c17ad0c534d4e558103e05e41c07  gcc/ada/libgnarl/s-taspri__lynxos.ads
! b7a2573929705f48f90ba20a4b246bde  gcc/ada/libgnarl/s-taspri__mingw.ads
! 1af0135a6dd0610dbb957372784082f8  gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
! 4bc0583a7926868ac5667973d6800428  gcc/ada/libgnarl/s-taspri__posix.ads
! 7b46f9dc3a30adf5127987d9860b2d70  gcc/ada/libgnarl/s-taspri__solaris.ads
! 646fae5d114560ab37852d15453a3794  gcc/ada/libgnarl/s-taspri__vxworks.ads
  ac23cdf83e13f4c3400030cce9d6201e  gcc/ada/libgnarl/s-tasque.adb
  ae0a263b4415dd958a4c21f8d7d844d6  gcc/ada/libgnarl/s-tasque.ads
  f92e9f8737cb531736927ccb20d28ad9  gcc/ada/libgnarl/s-tasren.adb
*************** d10cc7fa24959985d0423591d14ade72  gcc/ad
*** 1247,1253 ****
  bb9ecae44d7df045ef196aea619eb80d  gcc/ada/libgnat/a-clrefi.ads
  bb7aa2b8f3fb3f971a1cb27147b3b0a6  gcc/ada/libgnat/a-coboho.adb
  9d1b1bd680bbc15192e80bcbfdcf1cad  gcc/ada/libgnat/a-coboho.ads
! 56ab40bb18fefd09ea4804521f9fe3fa  gcc/ada/libgnat/a-cobove.adb
  f68c3674aea442040935f9c8a116649c  gcc/ada/libgnat/a-cobove.ads
  7f386d5d78c80b801499b725681bae4f  gcc/ada/libgnat/a-cofove.ads
  14e89eeb20a55f732b055a59e4b9a22a  gcc/ada/libgnat/a-cofuma.ads
--- 1247,1253 ----
  bb9ecae44d7df045ef196aea619eb80d  gcc/ada/libgnat/a-clrefi.ads
  bb7aa2b8f3fb3f971a1cb27147b3b0a6  gcc/ada/libgnat/a-coboho.adb
  9d1b1bd680bbc15192e80bcbfdcf1cad  gcc/ada/libgnat/a-coboho.ads
! 7778b116f02f957763839af6ff0e2305  gcc/ada/libgnat/a-cobove.adb
  f68c3674aea442040935f9c8a116649c  gcc/ada/libgnat/a-cobove.ads
  7f386d5d78c80b801499b725681bae4f  gcc/ada/libgnat/a-cofove.ads
  14e89eeb20a55f732b055a59e4b9a22a  gcc/ada/libgnat/a-cofuma.ads
*************** cf568cc3ccf1e3077d0124147b5eb011  gcc/ad
*** 2832,2840 ****
  8ba431a53d85708c550368659f57c490  gcc/ada/par-ch13.adb
  ed9e0f33947385dfddd6c98bc7c51a92  gcc/ada/par-ch2.adb
  8800956e746f8c66bcfd81ee2c7e3bcc  gcc/ada/par-ch3.adb
! 8008dff554d7685ade76fc72487b4a60  gcc/ada/par-ch4.adb
  63a4bee77501bbe0cb76503f22893cbd  gcc/ada/par-ch5.adb
! 412c27bd941532b189e7f171a0fe23b7  gcc/ada/par-ch6.adb
  156c49bfe462052c8f4cfb04419e91ee  gcc/ada/par-ch7.adb
  c1753ff5c32c0be63d9986ae33c03316  gcc/ada/par-ch8.adb
  07d24cdeaf20bb48b3a9d4a2e11fd748  gcc/ada/par-ch9.adb
--- 2832,2840 ----
  8ba431a53d85708c550368659f57c490  gcc/ada/par-ch13.adb
  ed9e0f33947385dfddd6c98bc7c51a92  gcc/ada/par-ch2.adb
  8800956e746f8c66bcfd81ee2c7e3bcc  gcc/ada/par-ch3.adb
! 172fcb2fdccc36715c250ad1bd68de1a  gcc/ada/par-ch4.adb
  63a4bee77501bbe0cb76503f22893cbd  gcc/ada/par-ch5.adb
! d254e29e597ccd5d6c44bfdecb6d9552  gcc/ada/par-ch6.adb
  156c49bfe462052c8f4cfb04419e91ee  gcc/ada/par-ch7.adb
  c1753ff5c32c0be63d9986ae33c03316  gcc/ada/par-ch8.adb
  07d24cdeaf20bb48b3a9d4a2e11fd748  gcc/ada/par-ch9.adb
*************** fcfa33c29572e4f892bd68b226e0184d  gcc/ad
*** 2862,2868 ****
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
  2068823632327326518141ecef478b56  gcc/ada/repinfo-input.ads
! 9814fde7866f797e7a1d4b4016d1804e  gcc/ada/repinfo.adb
  2b7ee770fce987fa4a536a7ff6f66d28  gcc/ada/repinfo.ads
  9f01bfb3f02044d2af9dd8653ff046c7  gcc/ada/repinfo.h
  3d4a1dc93d967d84654b6489aaf51b1b  gcc/ada/restrict.adb
--- 2862,2868 ----
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
  2068823632327326518141ecef478b56  gcc/ada/repinfo-input.ads
! 2461b5824e3a28fc763e0f53877c2b0d  gcc/ada/repinfo.adb
  2b7ee770fce987fa4a536a7ff6f66d28  gcc/ada/repinfo.ads
  9f01bfb3f02044d2af9dd8653ff046c7  gcc/ada/repinfo.h
  3d4a1dc93d967d84654b6489aaf51b1b  gcc/ada/restrict.adb
*************** a424011f3e6f5e5a1163e2a9e1324779  gcc/ad
*** 2892,2898 ****
  b1230ac9f3cae75bd98a0fc5e0fabdcf  gcc/ada/sem.ads
  486e7e3521da672c20bea967001436f9  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! e5998262bbb642df72b609cbb3652b2c  gcc/ada/sem_attr.adb
  2a239613f39312b54ea82d1e690a3ea2  gcc/ada/sem_attr.ads
  9933f6b1c6d6ebb417929ba3ed154bff  gcc/ada/sem_aux.adb
  e15b069fa2ff472febda85c8b9cacb81  gcc/ada/sem_aux.ads
--- 2892,2898 ----
  b1230ac9f3cae75bd98a0fc5e0fabdcf  gcc/ada/sem.ads
  486e7e3521da672c20bea967001436f9  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! 7c6fefc1754b4b22835c587bcc8d2a75  gcc/ada/sem_attr.adb
  2a239613f39312b54ea82d1e690a3ea2  gcc/ada/sem_attr.ads
  9933f6b1c6d6ebb417929ba3ed154bff  gcc/ada/sem_aux.adb
  e15b069fa2ff472febda85c8b9cacb81  gcc/ada/sem_aux.ads
*************** e364f4e3ae92066699cc93a8f7b828c1  gcc/ad
*** 2904,2910 ****
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 2272b7c3128993772b1404bd7b0051a4  gcc/ada/sem_ch12.adb
  f981520c42b732545be8bb5c8813ccfd  gcc/ada/sem_ch12.ads
  a79af071f7a03cc94e9f8cfb69da09d4  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
--- 2904,2910 ----
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 8e535b4668a8a68d2ed7cdaebe2341fc  gcc/ada/sem_ch12.adb
  f981520c42b732545be8bb5c8813ccfd  gcc/ada/sem_ch12.ads
  a79af071f7a03cc94e9f8cfb69da09d4  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
*************** a79af071f7a03cc94e9f8cfb69da09d4  gcc/ad
*** 2912,2922 ****
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
  2923d481f9927f42b43e131fac264680  gcc/ada/sem_ch3.adb
  76abe89b089728c6eaca6f7593348732  gcc/ada/sem_ch3.ads
! 92ce1e2ad8d12526945acea155e28ae8  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  f03d0c6546218f5b79e770a8cc884877  gcc/ada/sem_ch5.adb
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
! c562011f69d365bea521812b7109c09e  gcc/ada/sem_ch6.adb
  165c2ff9990d74ba204881b7983566c7  gcc/ada/sem_ch6.ads
  3883f8e98e883801346bbdd9e4ecf027  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
--- 2912,2922 ----
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
  2923d481f9927f42b43e131fac264680  gcc/ada/sem_ch3.adb
  76abe89b089728c6eaca6f7593348732  gcc/ada/sem_ch3.ads
! 158db89e024335f611b8d1ad88b5218d  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  f03d0c6546218f5b79e770a8cc884877  gcc/ada/sem_ch5.adb
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
! 45e5caf2dc3097b76888615b865b3515  gcc/ada/sem_ch6.adb
  165c2ff9990d74ba204881b7983566c7  gcc/ada/sem_ch6.ads
  3883f8e98e883801346bbdd9e4ecf027  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
*************** f0b4e317e5d5515a6ec337bc5acf5fe0  gcc/ad
*** 2926,2932 ****
  7b283bd6453de444c7075a8c6f215dda  gcc/ada/sem_ch9.ads
  a3ec3b68d1191d6cfaaaa4ba524b8896  gcc/ada/sem_dim.adb
  d0ed9c569455451ee26c8e2565b7125b  gcc/ada/sem_dim.ads
! 60adabcc73c4a57b33d70d10f01035fb  gcc/ada/sem_disp.adb
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
  8f677120e0bcecbdcfa5b9c4f44cb282  gcc/ada/sem_dist.adb
  a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ada/sem_dist.ads
--- 2926,2932 ----
  7b283bd6453de444c7075a8c6f215dda  gcc/ada/sem_ch9.ads
  a3ec3b68d1191d6cfaaaa4ba524b8896  gcc/ada/sem_dim.adb
  d0ed9c569455451ee26c8e2565b7125b  gcc/ada/sem_dim.ads
! 1173913cc1010afcf98bff32d81003c0  gcc/ada/sem_disp.adb
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
  8f677120e0bcecbdcfa5b9c4f44cb282  gcc/ada/sem_dist.adb
  a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ada/sem_dist.ads
*************** e8e79e2a818321d7816e27eed8d17404  gcc/ad
*** 2940,2958 ****
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! 916f8ef9a7606d5a96186f46d38b422f  gcc/ada/sem_prag.adb
  d16256f1e0a8b84763e3ccc0653e1c4b  gcc/ada/sem_prag.ads
! 38eb5eb14ddec96de3f1f0666378e0fc  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
  224e89cdc39291b2a52f3e96e76cc3aa  gcc/ada/sem_smem.adb
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
! 1f62b0ecc5ebe8e9b39be89d56094a6c  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! 6b04965fc138d9a506bcda88cb490101  gcc/ada/sem_util.adb
! ce5344869562fc546f789ee6a1cdc048  gcc/ada/sem_util.ads
! 9668d6a37fe84f41a81a7ffcb66d5ecc  gcc/ada/sem_warn.adb
  441e0f80657ef72324e40dd20cebfc82  gcc/ada/sem_warn.ads
  239ca67ac9aa430abfe5120a8d4302d9  gcc/ada/set_targ.adb
  b80f6a9d10e348b68d302b5cc4a1eb88  gcc/ada/set_targ.ads
--- 2940,2958 ----
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! 5c18f85f9f139cb9bace5ad72336eb54  gcc/ada/sem_prag.adb
  d16256f1e0a8b84763e3ccc0653e1c4b  gcc/ada/sem_prag.ads
! 71b5231a19ba6bcdd78ec3572fa281b5  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
  224e89cdc39291b2a52f3e96e76cc3aa  gcc/ada/sem_smem.adb
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
! 8569e75d19fdffff7bb4f1f212d08deb  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! e2a0d244b4fce05b618b547a42902707  gcc/ada/sem_util.adb
! 8d404f6d751c7b017cb0e50f75e551a6  gcc/ada/sem_util.ads
! 5f3a0abaff75ad0b25d8db71d07ee534  gcc/ada/sem_warn.adb
  441e0f80657ef72324e40dd20cebfc82  gcc/ada/sem_warn.ads
  239ca67ac9aa430abfe5120a8d4302d9  gcc/ada/set_targ.adb
  b80f6a9d10e348b68d302b5cc4a1eb88  gcc/ada/set_targ.ads
*************** f32c4d3d5df9ad9663b4978f7f8a2573  gcc/ad
*** 2971,2977 ****
  5508690394c02353c472f15fdd05b280  gcc/ada/sinfo-utils.adb
  df1aa3814d8c5281deb3b526c99368fc  gcc/ada/sinfo-utils.ads
  e6d5c3ccb5893bb3943fbdf529b298d6  gcc/ada/sinfo.adb
! a09fdbe7c3f9c0e609f8f6f7ea279634  gcc/ada/sinfo.ads
  ebb37a07fb72782f86b0c141d3f6077c  gcc/ada/sinput-c.adb
  ec9033e4caebeb446063de16e18918f4  gcc/ada/sinput-c.ads
  2fec6a5fbe7c9e765ea70c82814b0fd3  gcc/ada/sinput-d.adb
--- 2971,2977 ----
  5508690394c02353c472f15fdd05b280  gcc/ada/sinfo-utils.adb
  df1aa3814d8c5281deb3b526c99368fc  gcc/ada/sinfo-utils.ads
  e6d5c3ccb5893bb3943fbdf529b298d6  gcc/ada/sinfo.adb
! 8740b83ce43fa66bc2c9d3b5d37c361d  gcc/ada/sinfo.ads
  ebb37a07fb72782f86b0c141d3f6077c  gcc/ada/sinput-c.adb
  ec9033e4caebeb446063de16e18918f4  gcc/ada/sinput-c.ads
  2fec6a5fbe7c9e765ea70c82814b0fd3  gcc/ada/sinput-d.adb
*************** d9d7a0f9b8ac29d8f1e477d6b53076c1  gcc/ad
*** 3021,3027 ****
  6f122fca818bdd0608fc8391dbb411ba  gcc/ada/tempdir.ads
  9926751851ed0d0e60e63eeb59a3c547  gcc/ada/terminals.c
  90388b2ce8b02dc01b5f589caaff07ec  gcc/ada/tracebak.c
! 3deb940e1b20797b3d8751b4cb35a17d  gcc/ada/treepr.adb
  fffc3c236eb600b5b36d78fbe10f489d  gcc/ada/treepr.ads
  d8e53f7aca62bdc4c1656e735e484d72  gcc/ada/ttypes.ads
  e02948c9347a91c37c4f24e7d4356a02  gcc/ada/types.adb
--- 3021,3027 ----
  6f122fca818bdd0608fc8391dbb411ba  gcc/ada/tempdir.ads
  9926751851ed0d0e60e63eeb59a3c547  gcc/ada/terminals.c
  90388b2ce8b02dc01b5f589caaff07ec  gcc/ada/tracebak.c
! cb71251ea018a64a27746701a4fae464  gcc/ada/treepr.adb
  fffc3c236eb600b5b36d78fbe10f489d  gcc/ada/treepr.ads
  d8e53f7aca62bdc4c1656e735e484d72  gcc/ada/ttypes.ads
  e02948c9347a91c37c4f24e7d4356a02  gcc/ada/types.adb
*************** cc81acb908eb9d6b13038a95c3a10a9c  gcc/an
*** 3165,3173 ****
  eeb42b412edc2884a4c60d6f38f7473b  gcc/array-traits.h
  6abcb9777280c69da14835a391a5c347  gcc/asan.cc
  135df8f25422fc20afd9efad9dffdd54  gcc/asan.h
! 4f1054632a45a7a19a5835e89ed342f9  gcc/attr-callback.cc
! d27354907d96bc34ceb8142996a383d0  gcc/attr-callback.h
! c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
  9a7178a90befb7c228527722f0652bc8  gcc/attribs.cc
  74de0da9c4c12c7fd923885069f35eb2  gcc/attribs.h
--- 3165,3173 ----
  eeb42b412edc2884a4c60d6f38f7473b  gcc/array-traits.h
  6abcb9777280c69da14835a391a5c347  gcc/asan.cc
  135df8f25422fc20afd9efad9dffdd54  gcc/asan.h
! a350e0e702ef2468ff3c700dff5b7433  gcc/attr-callback.cc
! 0ec27d414707ba546fed401eaaf2af22  gcc/attr-callback.h
! 8eabb720cd45c245a7d1be51c0f744ca  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
  9a7178a90befb7c228527722f0652bc8  gcc/attribs.cc
  74de0da9c4c12c7fd923885069f35eb2  gcc/attribs.h
*************** ab9fdb6ff2584fb7c564bdd3d5546c02  gcc/bt
*** 3190,3196 ****
  67b762b0b5e04e028c2e2436f9a6cfbe  gcc/builtins.cc
  52ff6fb92e162a8ad41a1af1dfb0171a  gcc/builtins.def
  08bacecaf5d3527bf3df15480fb78537  gcc/builtins.h
! 849095aeeffccedc745c3b0de3075acd  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  9c7ff39ab2ffc5f0938f59efc3657201  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
--- 3190,3196 ----
  67b762b0b5e04e028c2e2436f9a6cfbe  gcc/builtins.cc
  52ff6fb92e162a8ad41a1af1dfb0171a  gcc/builtins.def
  08bacecaf5d3527bf3df15480fb78537  gcc/builtins.h
! 03138da3bb31dffad2abee3726d8badc  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  9c7ff39ab2ffc5f0938f59efc3657201  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
*************** c8d86c12bc259d3a335f338ce3a10304  gcc/c-
*** 3207,3213 ****
  a4b7179d2e948bb7586a9143fbe05593  gcc/c-family/c-indentation.h
  c80c4d6e16ab46358143d22a8a146725  gcc/c-family/c-lex.cc
  c880dc584a0fd4908e5df33dd81137b8  gcc/c-family/c-objc.h
! d21f1c18590954a9e3a2f6fe7f9b0641  gcc/c-family/c-omp.cc
  f3ac926a6f27bce49ebe5dfff41f2e5b  gcc/c-family/c-opts.cc
  5be37a0daa62d32d800f4818f979e598  gcc/c-family/c-pch.cc
  6e53d008a0c4738339154c353a50ff0a  gcc/c-family/c-ppoutput.cc
--- 3207,3213 ----
  a4b7179d2e948bb7586a9143fbe05593  gcc/c-family/c-indentation.h
  c80c4d6e16ab46358143d22a8a146725  gcc/c-family/c-lex.cc
  c880dc584a0fd4908e5df33dd81137b8  gcc/c-family/c-objc.h
! e6e761e6863a733dd3a2cad695281cd7  gcc/c-family/c-omp.cc
  f3ac926a6f27bce49ebe5dfff41f2e5b  gcc/c-family/c-opts.cc
  5be37a0daa62d32d800f4818f979e598  gcc/c-family/c-pch.cc
  6e53d008a0c4738339154c353a50ff0a  gcc/c-family/c-ppoutput.cc
*************** d485abbea4a7be8fd3803b672ae74235  gcc/c-
*** 3233,3250 ****
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 51851628c83c1ccb661878103017b347  gcc/c/ChangeLog
  a1ab86dd79d40d45839823afe798673a  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! 0b7204173b2636cacb46db19df861258  gcc/c/c-decl.cc
  10e620f790089957c832097206d0d6d6  gcc/c/c-errors.cc
  837fc5f348c64d1c90a4430cc0fb3662  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
! 4be9de2ca25340adb8f350478db6a3d8  gcc/c/c-lang.h
  c2644975781d9f78ae4c387d01a3270e  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! 34aab3cabcc61474557b6f6d5bf5fe26  gcc/c/c-parser.cc
  4cd2bf432e96f0de530e0ea4e8b44aa2  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  2ff9ae091101b4377a806073d2e89d3f  gcc/c/c-tree.h
--- 3233,3250 ----
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! fffb308c56361f92047d38fef4096db8  gcc/c/ChangeLog
  a1ab86dd79d40d45839823afe798673a  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! 3190f6cc1d9feef57bf80041ee2a3156  gcc/c/c-decl.cc
  10e620f790089957c832097206d0d6d6  gcc/c/c-errors.cc
  837fc5f348c64d1c90a4430cc0fb3662  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
! 66f4b0672865216b2d3040eee16759b5  gcc/c/c-lang.h
  c2644975781d9f78ae4c387d01a3270e  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! 92404434030a7f41109816fd02bb4a2a  gcc/c/c-parser.cc
  4cd2bf432e96f0de530e0ea4e8b44aa2  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  2ff9ae091101b4377a806073d2e89d3f  gcc/c/c-tree.h
*************** b16722a083547061a927ed6271ce6028  gcc/cf
*** 3271,3291 ****
  1ec4e9a88b7aff0e8dc3577ab103b559  gcc/cfgexpand.h
  5d460f011f4a8ff85a40de115ad0752d  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
! 1103c84ad5690bda0bd6e0c71ea46b93  gcc/cfgloop.cc
! 5b21e1c152c74de1773a6cfb0c115604  gcc/cfgloop.h
  5064c16e8d6a47a0fc2a9a5c144bbc2d  gcc/cfgloopanal.cc
  73dba7f2651c39976a2ac577410e10c3  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
  86fd277253913430380bc5d51e4b395b  gcc/cfgrtl.cc
  132f0eb682ec622dc563cfc697da1fb8  gcc/cfgrtl.h
! 2e97f6f5f8547ba5f0cdb29ffd470a2d  gcc/cgraph.cc
! b6c3335dfa12561fab963bf22e16df60  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
  f260ce27ba36b1e6d964fe6ba1552cb6  gcc/cgraphclones.cc
  4e2f7703a23f2c2483098ddb6edac479  gcc/cgraphunit.cc
  bd38ef84be4e8351bde3ee96f062c357  gcc/cif-code.def
! 34d388fd1d842f2496b843ebf550496c  gcc/cobol/ChangeLog
! 569631bd4020aa574ed66319ac5e67f3  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  b5d944951cc226cf4f33fdd1494aa7e7  gcc/cobol/cbldiag.h
  030342886cc720f11f17d7691f6f24ae  gcc/cobol/cdf-copy.cc
--- 3271,3291 ----
  1ec4e9a88b7aff0e8dc3577ab103b559  gcc/cfgexpand.h
  5d460f011f4a8ff85a40de115ad0752d  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
! 0db4f5bec05b135196299870c0da04f1  gcc/cfgloop.cc
! 620cb42e8a7773141610c09b25e0fc6a  gcc/cfgloop.h
  5064c16e8d6a47a0fc2a9a5c144bbc2d  gcc/cfgloopanal.cc
  73dba7f2651c39976a2ac577410e10c3  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
  86fd277253913430380bc5d51e4b395b  gcc/cfgrtl.cc
  132f0eb682ec622dc563cfc697da1fb8  gcc/cfgrtl.h
! 72076c35b30694d0585b5c934f936f70  gcc/cgraph.cc
! bb9ec881bec012134cb6e7900b5a37bb  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
  f260ce27ba36b1e6d964fe6ba1552cb6  gcc/cgraphclones.cc
  4e2f7703a23f2c2483098ddb6edac479  gcc/cgraphunit.cc
  bd38ef84be4e8351bde3ee96f062c357  gcc/cif-code.def
! b26ad798bd4cac8832aec4f9cc70f9d6  gcc/cobol/ChangeLog
! 5dfddca4a6eb03f4baa2eab2cd61876d  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  b5d944951cc226cf4f33fdd1494aa7e7  gcc/cobol/cbldiag.h
  030342886cc720f11f17d7691f6f24ae  gcc/cobol/cdf-copy.cc
*************** a12042e240a17e29296ee8240d1304ca  gcc/co
*** 3327,3333 ****
  2281970a3bcdaefbd54f7dc641aec071  gcc/cobol/show_parse.h
  c53ffb5b1f39680588d8ace8a3a44953  gcc/cobol/structs.cc
  6a12fdf051ff87867b239b5ae272fd55  gcc/cobol/structs.h
! 0660773450ac6f035bb426cb41fe2b1c  gcc/cobol/symbols.cc
  80e5dffec4b62d9d5f58799583e006dd  gcc/cobol/symbols.h
  56876c7f6bf3230239c8142eb049a183  gcc/cobol/symfind.cc
  ac8f63d8adfa3a7dde880bf5e644ab07  gcc/cobol/token_names.h
--- 3327,3333 ----
  2281970a3bcdaefbd54f7dc641aec071  gcc/cobol/show_parse.h
  c53ffb5b1f39680588d8ace8a3a44953  gcc/cobol/structs.cc
  6a12fdf051ff87867b239b5ae272fd55  gcc/cobol/structs.h
! b465dad3db90ec66032be35f5c0a68d9  gcc/cobol/symbols.cc
  80e5dffec4b62d9d5f58799583e006dd  gcc/cobol/symbols.h
  56876c7f6bf3230239c8142eb049a183  gcc/cobol/symfind.cc
  ac8f63d8adfa3a7dde880bf5e644ab07  gcc/cobol/token_names.h
*************** ed3f467605b997678af9e5189497d41b  gcc/co
*** 3338,3351 ****
  6e6685d60444844fecf36350b5956f77  gcc/collect-utils.h
  30202062ccc5696f6203f07ab6965763  gcc/collect2-aix.cc
  614352499c1022ed9ffb93cdd4b7daef  gcc/collect2-aix.h
! d0fd2d6b92855f5ea2dcf1212cdff3ec  gcc/collect2.cc
  f55010fab8b9aabea82c3ac50d031028  gcc/collect2.h
  47b3611844b583f418ce3aaf051c492a  gcc/color-macros.h
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
  8db32a2301bfbb3281c1cc38024ad792  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
! a470c2795a6a7ef008bd5dbffe485e55  gcc/common.opt
! 2017b10b4e7df8c2e96ff3f55282a452  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
--- 3338,3351 ----
  6e6685d60444844fecf36350b5956f77  gcc/collect-utils.h
  30202062ccc5696f6203f07ab6965763  gcc/collect2-aix.cc
  614352499c1022ed9ffb93cdd4b7daef  gcc/collect2-aix.h
! 8aa5c111b80354a93cc0aedc4a0ff624  gcc/collect2.cc
  f55010fab8b9aabea82c3ac50d031028  gcc/collect2.h
  47b3611844b583f418ce3aaf051c492a  gcc/color-macros.h
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
  8db32a2301bfbb3281c1cc38024ad792  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
! c942f93b8512751e7b27ccab554b066b  gcc/common.opt
! c0e676a9bea2c96261b42fb701537ba1  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
*************** e52e97d4d4876d6657fdd48e9f622383  gcc/co
*** 3369,3376 ****
  2da12f05a7597886b6b659f44fb2d0b0  gcc/common/config/gcn/gcn-common.cc
  cba8bad9b28e5a0f8934b00becb13d4a  gcc/common/config/h8300/h8300-common.cc
  e577851e3fec618f8d95579ba1117872  gcc/common/config/i386/cpuinfo.h
! fd2173a51a8967a4589b39084c2fd4b7  gcc/common/config/i386/i386-common.cc
! b5b29985cb2de5a44d272d90103500b1  gcc/common/config/i386/i386-cpuinfo.h
  1fde110881f428f0dd213fa45b6ca1ad  gcc/common/config/i386/i386-isas.h
  2a64c5f639b347964e652ebb1add9831  gcc/common/config/ia64/ia64-common.cc
  94b8ff9b1f75e2aaff5033327ccfb449  gcc/common/config/iq2000/iq2000-common.cc
--- 3369,3376 ----
  2da12f05a7597886b6b659f44fb2d0b0  gcc/common/config/gcn/gcn-common.cc
  cba8bad9b28e5a0f8934b00becb13d4a  gcc/common/config/h8300/h8300-common.cc
  e577851e3fec618f8d95579ba1117872  gcc/common/config/i386/cpuinfo.h
! 3999256476740a6f5fce61640b1b6013  gcc/common/config/i386/i386-common.cc
! 0b05ae5a9ac775fa157d017b8cdfc6ab  gcc/common/config/i386/i386-cpuinfo.h
  1fde110881f428f0dd213fa45b6ca1ad  gcc/common/config/i386/i386-isas.h
  2a64c5f639b347964e652ebb1add9831  gcc/common/config/ia64/ia64-common.cc
  94b8ff9b1f75e2aaff5033327ccfb449  gcc/common/config/iq2000/iq2000-common.cc
*************** b5a916bb9dd788754ac9e4ad7174ee74  gcc/co
*** 3406,3412 ****
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! dc3bc1f2a902490fc35c0b110c571902  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  756f3bb3af308945746fb7b5683487ea  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 3406,3412 ----
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! 7e31f06ecea6fbb225f8ccc129e5d4b2  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  756f3bb3af308945746fb7b5683487ea  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** f931bc8e97c2f1358ad3ad91e902d553  gcc/co
*** 3441,3447 ****
  a1976079127ae261204af8cdddd28c03  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  a349e9ba39f96f10f6c9f5e13bb8b661  gcc/config/aarch64/aarch64-passes.def
! a29e8a2ccb74ff2bba522f8c2a794afd  gcc/config/aarch64/aarch64-protos.h
  7beff4ec013b184132d7c933faa51208  gcc/config/aarch64/aarch64-sched-dispatch.cc
  b824341b8f6fdb8eb1667425adf63db8  gcc/config/aarch64/aarch64-sched-dispatch.h
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
--- 3441,3447 ----
  a1976079127ae261204af8cdddd28c03  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  a349e9ba39f96f10f6c9f5e13bb8b661  gcc/config/aarch64/aarch64-passes.def
! cde2d12da38572da366849d513955007  gcc/config/aarch64/aarch64-protos.h
  7beff4ec013b184132d7c933faa51208  gcc/config/aarch64/aarch64-sched-dispatch.cc
  b824341b8f6fdb8eb1667425adf63db8  gcc/config/aarch64/aarch64-sched-dispatch.h
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
*************** e2d80b89552da0c6b4cb6bede3b2e573  gcc/co
*** 3465,3479 ****
  6898353f8b81b1bd82f117ddced5b0d5  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
  ae7ea468046099ae99d717e107a85497  gcc/config/aarch64/aarch64-sve-builtins.h
! c2d5232eddeef47e949807fecfc7adf4  gcc/config/aarch64/aarch64-sve.md
  0e48ec989797cfed5b216617692403e9  gcc/config/aarch64/aarch64-sve2.md
  28e8e7965d9ed466a7d53a53e2ec7397  gcc/config/aarch64/aarch64-sys-regs.def
  9abdad77523bfa1246a02b4538de6a7d  gcc/config/aarch64/aarch64-tune.md
  586e3b2fd446baa0a6fb8da7c8cdd660  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 0b86955170b4cfdfe474f11c6f35a885  gcc/config/aarch64/aarch64.cc
  bb0828c96d48c6a01dd1c6dc035d2095  gcc/config/aarch64/aarch64.h
! 07ce4a539515b7e0f29d3af4186105ec  gcc/config/aarch64/aarch64.md
  826e25677a47d91542c89828074d668c  gcc/config/aarch64/aarch64.opt
  be545ebdbead749c3365e9729990237b  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
--- 3465,3479 ----
  6898353f8b81b1bd82f117ddced5b0d5  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
  ae7ea468046099ae99d717e107a85497  gcc/config/aarch64/aarch64-sve-builtins.h
! 7f77c17cc8270fd1cc2af4e91ccb2514  gcc/config/aarch64/aarch64-sve.md
  0e48ec989797cfed5b216617692403e9  gcc/config/aarch64/aarch64-sve2.md
  28e8e7965d9ed466a7d53a53e2ec7397  gcc/config/aarch64/aarch64-sys-regs.def
  9abdad77523bfa1246a02b4538de6a7d  gcc/config/aarch64/aarch64-tune.md
  586e3b2fd446baa0a6fb8da7c8cdd660  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 9e9f2699b517926ad36bdc36136104d9  gcc/config/aarch64/aarch64.cc
  bb0828c96d48c6a01dd1c6dc035d2095  gcc/config/aarch64/aarch64.h
! 3d7c7e4d4daa43f96c460ccc86ef6f40  gcc/config/aarch64/aarch64.md
  826e25677a47d91542c89828074d668c  gcc/config/aarch64/aarch64.opt
  be545ebdbead749c3365e9729990237b  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
*************** f7165d62ef852e1929a8fc9a85c01ab2  gcc/co
*** 3498,3506 ****
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 992b98b93c75e256be48858190b9e050  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
! 9199dc8fc240733f6293f87b6132d53f  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  74ca0ed7fd56ec1d94a1a9efe5113485  gcc/config/aarch64/t-aarch64
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-freebsd
--- 3498,3506 ----
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 63928fd71bb06ff5616b0a9bc58bd4bf  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
! 97e903c4c921fb6286552ae86e497e69  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
  74ca0ed7fd56ec1d94a1a9efe5113485  gcc/config/aarch64/t-aarch64
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-freebsd
*************** e4a75970451275f37c431cddbd360dce  gcc/co
*** 3589,3595 ****
  6704645d075bf670b5ed5d77f0a88b86  gcc/config/arc/arc-tables.opt.urls
  10101c6b4f78c63a29742fb0a11bdae0  gcc/config/arc/arc.cc
  7571a4c51258ecb3cc685c010427e67b  gcc/config/arc/arc.h
! d037b2cbfd8562434b1c937a45f34116  gcc/config/arc/arc.md
  5e49444e76be2e50b3f491529836f101  gcc/config/arc/arc.opt
  37a4012c7ff454831fdb2049d8fa1e27  gcc/config/arc/arc.opt.urls
  6501826900ef8a0676f77ac8ebf5ccd9  gcc/config/arc/arc600.md
--- 3589,3595 ----
  6704645d075bf670b5ed5d77f0a88b86  gcc/config/arc/arc-tables.opt.urls
  10101c6b4f78c63a29742fb0a11bdae0  gcc/config/arc/arc.cc
  7571a4c51258ecb3cc685c010427e67b  gcc/config/arc/arc.h
! 9bcf29ad085475e8b283c9bf942ee607  gcc/config/arc/arc.md
  5e49444e76be2e50b3f491529836f101  gcc/config/arc/arc.opt
  37a4012c7ff454831fdb2049d8fa1e27  gcc/config/arc/arc.opt.urls
  6501826900ef8a0676f77ac8ebf5ccd9  gcc/config/arc/arc600.md
*************** c6495aa81de32f973141a776003c7fec  gcc/co
*** 3620,3626 ****
  f9afd2ef855bfd549493f6da71fd93b7  gcc/config/arm/aarch-common.h
  7fce9ff8e59611a1c7f9d0b0855271c1  gcc/config/arm/aarch-cost-tables.h
  cbe08e188cf39566da9323f36b3f6171  gcc/config/arm/aout.h
! 21ce8fc8466aee09b6bf705a93ef374a  gcc/config/arm/arm-builtins.cc
  9dd7793ad1cabff379e14aed638e7920  gcc/config/arm/arm-builtins.h
  3e423413153b7bb9138b3afe2518a5ea  gcc/config/arm/arm-c.cc
  6e08b5c2d7693f0347ce27416ed7fe69  gcc/config/arm/arm-cpus.in
--- 3620,3626 ----
  f9afd2ef855bfd549493f6da71fd93b7  gcc/config/arm/aarch-common.h
  7fce9ff8e59611a1c7f9d0b0855271c1  gcc/config/arm/aarch-cost-tables.h
  cbe08e188cf39566da9323f36b3f6171  gcc/config/arm/aout.h
! 63c06be34a9a06e7d33aa786342995ad  gcc/config/arm/arm-builtins.cc
  9dd7793ad1cabff379e14aed638e7920  gcc/config/arm/arm-builtins.h
  3e423413153b7bb9138b3afe2518a5ea  gcc/config/arm/arm-c.cc
  6e08b5c2d7693f0347ce27416ed7fe69  gcc/config/arm/arm-cpus.in
*************** a0d6247441e5490d3381c59ed8c5b4f4  gcc/co
*** 3632,3657 ****
  c3db7a7dfc5f086a04da4c1151d755d5  gcc/config/arm/arm-ldmstm.ml
  a7ae9132c9bec5a1cb9d4d193eb9fb9f  gcc/config/arm/arm-mlib.h
  46b06532a5609675535edd3c09991537  gcc/config/arm/arm-modes.def
! 60c69c8736ccaa081c97ec4070d27172  gcc/config/arm/arm-mve-builtins-base.cc
! fbedf5e34271a4a6e915d89a3f84e486  gcc/config/arm/arm-mve-builtins-base.def
! 84b79dbff7b89f334892673f87f3b050  gcc/config/arm/arm-mve-builtins-base.h
  e064d99cd82f974a718dd70c31575709  gcc/config/arm/arm-mve-builtins-functions.h
! 48fba0ab1a3d7c0acbbec2396fa32d90  gcc/config/arm/arm-mve-builtins-shapes.cc
! 5c320503e4397b36a3d4722d3edae7c2  gcc/config/arm/arm-mve-builtins-shapes.h
! 682a014f9e1f141dfb4c3d481e890008  gcc/config/arm/arm-mve-builtins.cc
  c7d2396379cbe9f18b9ac7f95b2376f9  gcc/config/arm/arm-mve-builtins.def
! 657d3ecd350c0aab459e5d706a2466b8  gcc/config/arm/arm-mve-builtins.h
! 203f354ac1bdd79cf0e13cf808e1a632  gcc/config/arm/arm-opts.h
  7172fa6a91c05d4711e3fe34ec3c7d7c  gcc/config/arm/arm-passes.def
  34b90148fda7eba1eb0ff2a4bc6203d5  gcc/config/arm/arm-protos.h
  eafc8a2abc331243ea846fab22b8aec4  gcc/config/arm/arm-simd-builtin-types.def
  5d895a88bb2048a83e3ccc08d50f3151  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  1f1a55560eb97e283125003609418bce  gcc/config/arm/arm-tune.md
! 8dfcbbbd64b8b50f02254784a185dbb8  gcc/config/arm/arm.cc
  4b4c240869c2413c542f051e20fc26d1  gcc/config/arm/arm.h
  f2549733b9a96df12519d1c4e55a1532  gcc/config/arm/arm.md
! 6438602120f5212434b003b5018064ec  gcc/config/arm/arm.opt
  d96083967a30e6eb0f75d624af2d831a  gcc/config/arm/arm.opt.urls
  ccbf8aa9582c7ea8db0ed6a70d1dd691  gcc/config/arm/arm1020e.md
  e8da624def348c2c40197e1b1ad6f812  gcc/config/arm/arm1026ejs.md
--- 3632,3657 ----
  c3db7a7dfc5f086a04da4c1151d755d5  gcc/config/arm/arm-ldmstm.ml
  a7ae9132c9bec5a1cb9d4d193eb9fb9f  gcc/config/arm/arm-mlib.h
  46b06532a5609675535edd3c09991537  gcc/config/arm/arm-modes.def
! fbd10f9b1d06a51da16602bc91a1d415  gcc/config/arm/arm-mve-builtins-base.cc
! 62c0765193f26e504ac37d97a06a476b  gcc/config/arm/arm-mve-builtins-base.def
! 6ad830225631ff158b43b4a9ed66525e  gcc/config/arm/arm-mve-builtins-base.h
  e064d99cd82f974a718dd70c31575709  gcc/config/arm/arm-mve-builtins-functions.h
! 7cc83000c392f08af77b10ebc64ee3d8  gcc/config/arm/arm-mve-builtins-shapes.cc
! 4c37ebd4b407a1a8a9b4f9760c7cc90b  gcc/config/arm/arm-mve-builtins-shapes.h
! 52f21ef99473d6c9db01ced1c43ed1af  gcc/config/arm/arm-mve-builtins.cc
  c7d2396379cbe9f18b9ac7f95b2376f9  gcc/config/arm/arm-mve-builtins.def
! b87a59741de34c3f149902306e406fa2  gcc/config/arm/arm-mve-builtins.h
! 30537318fcff79a48312c21732ff474d  gcc/config/arm/arm-opts.h
  7172fa6a91c05d4711e3fe34ec3c7d7c  gcc/config/arm/arm-passes.def
  34b90148fda7eba1eb0ff2a4bc6203d5  gcc/config/arm/arm-protos.h
  eafc8a2abc331243ea846fab22b8aec4  gcc/config/arm/arm-simd-builtin-types.def
  5d895a88bb2048a83e3ccc08d50f3151  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  1f1a55560eb97e283125003609418bce  gcc/config/arm/arm-tune.md
! 7605c559f4a6e0f80a215dec803fbd14  gcc/config/arm/arm.cc
  4b4c240869c2413c542f051e20fc26d1  gcc/config/arm/arm.h
  f2549733b9a96df12519d1c4e55a1532  gcc/config/arm/arm.md
! df76ad3991ab6e9353aad337445ad34d  gcc/config/arm/arm.opt
  d96083967a30e6eb0f75d624af2d831a  gcc/config/arm/arm.opt.urls
  ccbf8aa9582c7ea8db0ed6a70d1dd691  gcc/config/arm/arm1020e.md
  e8da624def348c2c40197e1b1ad6f812  gcc/config/arm/arm1026ejs.md
*************** e8da624def348c2c40197e1b1ad6f812  gcc/co
*** 3664,3672 ****
  b1a24a24b85a7cb705e34642d6262e82  gcc/config/arm/arm_cde_builtins.def
  97c08aba9b7507a2a727088723d324dd  gcc/config/arm/arm_cmse.h
  6bca088046fad4a4968ac527476fe0d3  gcc/config/arm/arm_fp16.h
! 459a7a15fb48a4e136f38621535a2550  gcc/config/arm/arm_mve.h
  5e9c8b6c6b107ceb0259919168fcb6ca  gcc/config/arm/arm_mve_builtins.def
! 1f4138dbad069d0f988c5b0ab3f8671b  gcc/config/arm/arm_mve_types.h
  6c5754bfb664962c7bf76cf5df6b2397  gcc/config/arm/arm_neon.h
  cb269e14a0ffcaf48937ea37a588d123  gcc/config/arm/arm_neon_builtins.def
  130a8fbe50847f964b84dcc079274131  gcc/config/arm/arm_vfp_builtins.def
--- 3664,3672 ----
  b1a24a24b85a7cb705e34642d6262e82  gcc/config/arm/arm_cde_builtins.def
  97c08aba9b7507a2a727088723d324dd  gcc/config/arm/arm_cmse.h
  6bca088046fad4a4968ac527476fe0d3  gcc/config/arm/arm_fp16.h
! e1a6fb78cea38c2269e48360d95ad61c  gcc/config/arm/arm_mve.h
  5e9c8b6c6b107ceb0259919168fcb6ca  gcc/config/arm/arm_mve_builtins.def
! 5ac8fd098dae5aeea6d078eeebf1f5f5  gcc/config/arm/arm_mve_types.h
  6c5754bfb664962c7bf76cf5df6b2397  gcc/config/arm/arm_neon.h
  cb269e14a0ffcaf48937ea37a588d123  gcc/config/arm/arm_neon_builtins.def
  130a8fbe50847f964b84dcc079274131  gcc/config/arm/arm_vfp_builtins.def
*************** b1bb4aedc65a975961957373495f8b3a  gcc/co
*** 3710,3716 ****
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! 0590a2d33bb90fbcdd093fea0981c95d  gcc/config/arm/mve.md
  2229898d1056f856ff420db3ff4d0998  gcc/config/arm/neon.md
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
--- 3710,3716 ----
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! b496a5b2bd3981a56706ea285440bbcd  gcc/config/arm/mve.md
  2229898d1056f856ff420db3ff4d0998  gcc/config/arm/neon.md
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
*************** a2bf0873375fc2ab681bcd55a2b23e26  gcc/co
*** 4137,4143 ****
  a5346c37d189bcadf27fd946fe2c2566  gcc/config/i386/djgpp.opt
  1b346c8cab1daa697ecd6c31e8e0e1d5  gcc/config/i386/djgpp.opt.urls
  0ada511dcea9cb884e7aed714cecb141  gcc/config/i386/dragonfly.h
! 41825953b7f2137b89e58a5b3fbb68e0  gcc/config/i386/driver-i386.cc
  8db059b2a4621231dcdc591159eace91  gcc/config/i386/driver-mingw32.cc
  436804c1d1ef71b2a318f01e7e91c190  gcc/config/i386/emmintrin.h
  def0edea16aac07cf3e0e7d2daf27455  gcc/config/i386/enqcmdintrin.h
--- 4137,4143 ----
  a5346c37d189bcadf27fd946fe2c2566  gcc/config/i386/djgpp.opt
  1b346c8cab1daa697ecd6c31e8e0e1d5  gcc/config/i386/djgpp.opt.urls
  0ada511dcea9cb884e7aed714cecb141  gcc/config/i386/dragonfly.h
! 38d33571f430d3221ccef0104b24cfbf  gcc/config/i386/driver-i386.cc
  8db059b2a4621231dcdc591159eace91  gcc/config/i386/driver-mingw32.cc
  436804c1d1ef71b2a318f01e7e91c190  gcc/config/i386/emmintrin.h
  def0edea16aac07cf3e0e7d2daf27455  gcc/config/i386/enqcmdintrin.h
*************** fb6d632066a5383c0ec89e867a9cc9c6  gcc/co
*** 4188,4196 ****
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 24c863315a4ba6b94189d6cf5f6a33e2  gcc/config/i386/i386.cc
! 532590c62b232e0546b5d8396d44c6b7  gcc/config/i386/i386.h
! c9cdf3fb4379ad69719783e0dfc2bb3a  gcc/config/i386/i386.md
  079c7adc6dcd21f8ccfb4c0135f16460  gcc/config/i386/i386.opt
  20087f4ff689dc4463c278f4b1ac9e4c  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
--- 4188,4196 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 1f4a32312b032fb883347669e714a376  gcc/config/i386/i386.cc
! e01d46d728877f9a3a104a8d3c4dccd6  gcc/config/i386/i386.h
! 9641f015e68255fd84f9109fe1780dc1  gcc/config/i386/i386.md
  079c7adc6dcd21f8ccfb4c0135f16460  gcc/config/i386/i386.opt
  20087f4ff689dc4463c278f4b1ac9e4c  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
*************** fc41e4ebf77dd1f54ddeec4e60428d5e  gcc/co
*** 4235,4241 ****
  1d9e8c2f64fa31f36bfe9ac83a296943  gcc/config/i386/pmmintrin.h
  62337355ef8c4334a0cc9c1db0cfc0da  gcc/config/i386/popcntintrin.h
  d17b84bc85c341e7f386b3b24b231070  gcc/config/i386/ppro.md
! a70524fcad4f5387541c54cb33f48d62  gcc/config/i386/predicates.md
  e10e34eef814ce6c5e09777d378d36d3  gcc/config/i386/prfchiintrin.h
  eed7a3601ce61f497dcfc5655e5da7a6  gcc/config/i386/prfchwintrin.h
  bc11b09d2de8ba6b9ec2392f1cebdbd9  gcc/config/i386/raointintrin.h
--- 4235,4241 ----
  1d9e8c2f64fa31f36bfe9ac83a296943  gcc/config/i386/pmmintrin.h
  62337355ef8c4334a0cc9c1db0cfc0da  gcc/config/i386/popcntintrin.h
  d17b84bc85c341e7f386b3b24b231070  gcc/config/i386/ppro.md
! fcedb63275d60af1eb60e2ac71009aea  gcc/config/i386/predicates.md
  e10e34eef814ce6c5e09777d378d36d3  gcc/config/i386/prfchiintrin.h
  eed7a3601ce61f497dcfc5655e5da7a6  gcc/config/i386/prfchwintrin.h
  bc11b09d2de8ba6b9ec2392f1cebdbd9  gcc/config/i386/raointintrin.h
*************** de4e89bc042c6bc7eb093bda5d33a266  gcc/co
*** 4252,4259 ****
  8de7167e1276b863c6acf2d3e926bc67  gcc/config/i386/sm3intrin.h
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
! f31e5ef6c122c98b6e22c30df4706546  gcc/config/i386/sol2.h
! c21e362d1f99a6ed46b2e1e6cdc77022  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
--- 4252,4259 ----
  8de7167e1276b863c6acf2d3e926bc67  gcc/config/i386/sm3intrin.h
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
! ffbc43ec2b7f2d37d4a6f69f70d5a345  gcc/config/i386/sol2.h
! 527995c1629648b389936bde09328e13  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
*************** a4ec2c78b6a1042465b12e36133be24a  gcc/co
*** 4298,4312 ****
  b4cde95b709fc93c90bf4d6b3edc7fd0  gcc/config/i386/x-cygwin
  1ab2099a92787dd158135dbcaceb0bf9  gcc/config/i386/x-darwin
  8d6956f3535d501680a321eb01dafb35  gcc/config/i386/x-i386
! 78c5d4aaa3e531354ff15f5de8bbe5f6  gcc/config/i386/x-mingw32
  1453972221e67e9b66910b97c6444e98  gcc/config/i386/x-mingw32-utf8
  458dd4e367214623fc01b5e796d65485  gcc/config/i386/x86-64.h
  42c0a0a536b541307e24f43bb390582e  gcc/config/i386/x86-tune-costs.h
  17e3f95274600e3d41c671903847d8ec  gcc/config/i386/x86-tune-sched-atom.cc
  acfa3e6ce1f37bbad35e49e06b663ea9  gcc/config/i386/x86-tune-sched-bd.cc
  13fcb5234b2d8208c12932d96efef72b  gcc/config/i386/x86-tune-sched-core.cc
! 386439c1f5e6c412caa51de1d9a2c2e0  gcc/config/i386/x86-tune-sched.cc
! 537c2dfb5d0f93958052814a1fd437ac  gcc/config/i386/x86-tune.def
  95b91fd21504348ecd2f8510ebab204c  gcc/config/i386/x86gprintrin.h
  1ef1746c703bfdb9c245f7b7276b7d56  gcc/config/i386/x86intrin.h
  709155b5a0371d397baf22295493b77b  gcc/config/i386/xm-cygwin.h
--- 4298,4312 ----
  b4cde95b709fc93c90bf4d6b3edc7fd0  gcc/config/i386/x-cygwin
  1ab2099a92787dd158135dbcaceb0bf9  gcc/config/i386/x-darwin
  8d6956f3535d501680a321eb01dafb35  gcc/config/i386/x-i386
! 34f45981cce30e0f3bcbdf42730c4442  gcc/config/i386/x-mingw32
  1453972221e67e9b66910b97c6444e98  gcc/config/i386/x-mingw32-utf8
  458dd4e367214623fc01b5e796d65485  gcc/config/i386/x86-64.h
  42c0a0a536b541307e24f43bb390582e  gcc/config/i386/x86-tune-costs.h
  17e3f95274600e3d41c671903847d8ec  gcc/config/i386/x86-tune-sched-atom.cc
  acfa3e6ce1f37bbad35e49e06b663ea9  gcc/config/i386/x86-tune-sched-bd.cc
  13fcb5234b2d8208c12932d96efef72b  gcc/config/i386/x86-tune-sched-core.cc
! 5a7755d4ab94bc8e76dedd1afec3badb  gcc/config/i386/x86-tune-sched.cc
! a22209774c5d6e4cfef16d7c13aeb709  gcc/config/i386/x86-tune.def
  95b91fd21504348ecd2f8510ebab204c  gcc/config/i386/x86gprintrin.h
  1ef1746c703bfdb9c245f7b7276b7d56  gcc/config/i386/x86intrin.h
  709155b5a0371d397baf22295493b77b  gcc/config/i386/xm-cygwin.h
*************** bc8dd76d852d2ad19d13910bd765c798  gcc/co
*** 4327,4333 ****
  bbb558d933142254b80023d99c827218  gcc/config/ia64/elf.h
  a1aa2760dafd21db8bfbe79f8c4bcfa1  gcc/config/ia64/freebsd.h
  89edd175b4bfe583ec3ee965092fd5d0  gcc/config/ia64/hpux-unix2003.h
! 7c85dea21ff54e80ea328592cb27e252  gcc/config/ia64/hpux.h
  78cbbe243dfaefad0db431df9dcf7a5b  gcc/config/ia64/ia64-c.cc
  4df0e9ba2dfafa2d5109b39cf13cbd19  gcc/config/ia64/ia64-modes.def
  f3c2c84ac99eb84969bb9952ee3bcb7f  gcc/config/ia64/ia64-opts.h
--- 4327,4333 ----
  bbb558d933142254b80023d99c827218  gcc/config/ia64/elf.h
  a1aa2760dafd21db8bfbe79f8c4bcfa1  gcc/config/ia64/freebsd.h
  89edd175b4bfe583ec3ee965092fd5d0  gcc/config/ia64/hpux-unix2003.h
! 07cea7341e0483ea13e0df5a81999d16  gcc/config/ia64/hpux.h
  78cbbe243dfaefad0db431df9dcf7a5b  gcc/config/ia64/ia64-c.cc
  4df0e9ba2dfafa2d5109b39cf13cbd19  gcc/config/ia64/ia64-modes.def
  f3c2c84ac99eb84969bb9952ee3bcb7f  gcc/config/ia64/ia64-opts.h
*************** fdc0b83b9dafbea2480c0a1207f45509  gcc/co
*** 4389,4395 ****
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
  da188d4272efc7354911d8ff108c2f4c  gcc/config/lm32/uclinux-elf.h
! 713faf5e5c45f844fbc9ad5551db1456  gcc/config/loongarch/constraints.md
  c34979082425d78409c769a25389d804  gcc/config/loongarch/elf.h
  8b1c9c004fdbc7f460a64bda0b70f4d6  gcc/config/loongarch/generic.md
  8a136345368965009ca46fa36dae9d99  gcc/config/loongarch/genopts/gen-evolution.awk
--- 4389,4395 ----
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
  da188d4272efc7354911d8ff108c2f4c  gcc/config/lm32/uclinux-elf.h
! 3b929641fdb7456994d22fbfacfeec6f  gcc/config/loongarch/constraints.md
  c34979082425d78409c769a25389d804  gcc/config/loongarch/elf.h
  8b1c9c004fdbc7f460a64bda0b70f4d6  gcc/config/loongarch/generic.md
  8a136345368965009ca46fa36dae9d99  gcc/config/loongarch/genopts/gen-evolution.awk
*************** e3b42a852449963bd9c243b0491ada0c  gcc/co
*** 4400,4406 ****
  dfcc88ca848e0510d6a048cef812a984  gcc/config/loongarch/gnu-user.h
  0214c19eeeeb90d46d358333d5381814  gcc/config/loongarch/la464.md
  2da06c6340275c1c0670ab82a7252f77  gcc/config/loongarch/larchintrin.h
! 6316064b23b82e6f2b1b202b2f41740b  gcc/config/loongarch/lasx.md
  c10d06d896b117c45d2d741d1550a990  gcc/config/loongarch/lasxintrin.h
  6fd190fde499f379bf158f471cde9693  gcc/config/loongarch/linux.h
  32b1458773a3d0478a1fb7d089ff8e9b  gcc/config/loongarch/loongarch-builtins.cc
--- 4400,4406 ----
  dfcc88ca848e0510d6a048cef812a984  gcc/config/loongarch/gnu-user.h
  0214c19eeeeb90d46d358333d5381814  gcc/config/loongarch/la464.md
  2da06c6340275c1c0670ab82a7252f77  gcc/config/loongarch/larchintrin.h
! 60dbb878b32a35c38c9313b5683b0c65  gcc/config/loongarch/lasx.md
  c10d06d896b117c45d2d741d1550a990  gcc/config/loongarch/lasxintrin.h
  6fd190fde499f379bf158f471cde9693  gcc/config/loongarch/linux.h
  32b1458773a3d0478a1fb7d089ff8e9b  gcc/config/loongarch/loongarch-builtins.cc
*************** a02aacfb9805dd0efab3f6f9e96176da  gcc/co
*** 4421,4440 ****
  d7cf3f5e6d8c9402706533b8bbd7093d  gcc/config/loongarch/loongarch-modes.def
  8be7856de731f309106734abd0f1f195  gcc/config/loongarch/loongarch-opts.cc
  05b587ad3985a07ac3c23bf92ecf6155  gcc/config/loongarch/loongarch-opts.h
! 2a6772ff90d79dd61bad167203a373bb  gcc/config/loongarch/loongarch-protos.h
  c72c4d71f42573934ede3a3fe4e132b1  gcc/config/loongarch/loongarch-str.h
  6ffb969d44f9d52731fdbc6bca845054  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! 0e72ea68e110ac577fc4fc41c028610d  gcc/config/loongarch/loongarch.cc
  f495bb3a160f92418aeb52557dfbf694  gcc/config/loongarch/loongarch.h
! 29489d6183ff2a8fdfe0c316596f774e  gcc/config/loongarch/loongarch.md
  8f1046a4d0739e3dafbb7e4db3055397  gcc/config/loongarch/loongarch.opt
  e5595d4b88b68429f6fe778dc601f49e  gcc/config/loongarch/loongarch.opt.urls
! 33106e72929bb187a7c4f12d69d1f0bb  gcc/config/loongarch/lsx.md
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
! e313ac39a9e3bdbe30b9cee72b917ed1  gcc/config/loongarch/predicates.md
! f95be1657846ff90106e8941fbdc72de  gcc/config/loongarch/simd.md
  fded5805e6a27c8c4b3a9b1967da6d31  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
  d729927d6d167b8a824eae7e6db4f32b  gcc/config/loongarch/t-loongarch
--- 4421,4440 ----
  d7cf3f5e6d8c9402706533b8bbd7093d  gcc/config/loongarch/loongarch-modes.def
  8be7856de731f309106734abd0f1f195  gcc/config/loongarch/loongarch-opts.cc
  05b587ad3985a07ac3c23bf92ecf6155  gcc/config/loongarch/loongarch-opts.h
! 716a764a5f7b9c1a819efdbf983669c8  gcc/config/loongarch/loongarch-protos.h
  c72c4d71f42573934ede3a3fe4e132b1  gcc/config/loongarch/loongarch-str.h
  6ffb969d44f9d52731fdbc6bca845054  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! 85c820c073e5edb1eab201d1746c3e1e  gcc/config/loongarch/loongarch.cc
  f495bb3a160f92418aeb52557dfbf694  gcc/config/loongarch/loongarch.h
! 5126429b6e9d4370dd24a682457094b6  gcc/config/loongarch/loongarch.md
  8f1046a4d0739e3dafbb7e4db3055397  gcc/config/loongarch/loongarch.opt
  e5595d4b88b68429f6fe778dc601f49e  gcc/config/loongarch/loongarch.opt.urls
! 5f72f375f2dbe12cbb7bb092ff21f010  gcc/config/loongarch/lsx.md
  429434e5f1e9f9afc839f4409102d5ea  gcc/config/loongarch/lsxintrin.h
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
! f6a07697aaf392cb5b7cdee31af56a7f  gcc/config/loongarch/predicates.md
! f212354ea1e442023fdb7018f7660ea0  gcc/config/loongarch/simd.md
  fded5805e6a27c8c4b3a9b1967da6d31  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
  d729927d6d167b8a824eae7e6db4f32b  gcc/config/loongarch/t-loongarch
*************** c7d4fb30a2fe78bcdb23db8d74da3746  gcc/co
*** 4841,4850 ****
  ede4cffb79f5496c4063328b9d126f26  gcc/config/pa/pa-openbsd.h
  cd1b48d66fffc5f91a26b160085fbd1e  gcc/config/pa/pa-opts.h
  596c088c93babeea4848ba2aed2eb6b0  gcc/config/pa/pa-protos.h
! 87b5ccca0556ed085f25a446d6ab4051  gcc/config/pa/pa.cc
  61506e45bb13eed5656f941078761f63  gcc/config/pa/pa.h
  5ad34ac7732965ac669deb50e30e698d  gcc/config/pa/pa.md
! 3fe76eeefa8fabdfab333fb43efecaa8  gcc/config/pa/pa.opt
  933c64daea7344878218813a7a070f31  gcc/config/pa/pa.opt.urls
  b7f09c119e3da135e762b15fc5f8f98e  gcc/config/pa/pa32-linux.h
  9d886aae4bb3e78b28e25d0bdcbaee9c  gcc/config/pa/pa32-netbsd.h
--- 4841,4850 ----
  ede4cffb79f5496c4063328b9d126f26  gcc/config/pa/pa-openbsd.h
  cd1b48d66fffc5f91a26b160085fbd1e  gcc/config/pa/pa-opts.h
  596c088c93babeea4848ba2aed2eb6b0  gcc/config/pa/pa-protos.h
! 5a592947a91e7c831437a29b95f7165c  gcc/config/pa/pa.cc
  61506e45bb13eed5656f941078761f63  gcc/config/pa/pa.h
  5ad34ac7732965ac669deb50e30e698d  gcc/config/pa/pa.md
! 120551d8deffa429a17fa0d4bf19764f  gcc/config/pa/pa.opt
  933c64daea7344878218813a7a070f31  gcc/config/pa/pa.opt.urls
  b7f09c119e3da135e762b15fc5f8f98e  gcc/config/pa/pa32-linux.h
  9d886aae4bb3e78b28e25d0bdcbaee9c  gcc/config/pa/pa32-netbsd.h
*************** c0794717c39357ab9e610e7c0c1ca309  gcc/co
*** 4853,4862 ****
  7ba08dc9bce780e30da2b34ef52a325a  gcc/config/pa/pa64-hpux.h
  fc985a35b7add70ae03a7d05339eec97  gcc/config/pa/pa64-hpux.opt
  b9670a9aa8c6577d9c71118121d7f9a8  gcc/config/pa/pa64-hpux.opt.urls
! 6c96c9e2f019106445f9daea51080cc5  gcc/config/pa/pa64-linux.h
  c25212d06bcb9703e26a948fabe2aea1  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! d3d274f6434d5ab371ee1c8cbc0092f6  gcc/config/pa/predicates.md
  28e4e475db88c4ce6bf6aba1dbe447f1  gcc/config/pa/som.h
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
  16f4ce216414d19c044dd93c60d948ae  gcc/config/pa/t-pa
--- 4853,4862 ----
  7ba08dc9bce780e30da2b34ef52a325a  gcc/config/pa/pa64-hpux.h
  fc985a35b7add70ae03a7d05339eec97  gcc/config/pa/pa64-hpux.opt
  b9670a9aa8c6577d9c71118121d7f9a8  gcc/config/pa/pa64-hpux.opt.urls
! 571cb235c1ce5f162249e5ff6e8cde08  gcc/config/pa/pa64-linux.h
  c25212d06bcb9703e26a948fabe2aea1  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! d353d8210645c5ea0865baac4764d2b5  gcc/config/pa/predicates.md
  28e4e475db88c4ce6bf6aba1dbe447f1  gcc/config/pa/som.h
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
  16f4ce216414d19c044dd93c60d948ae  gcc/config/pa/t-pa
*************** a3d3fa9142d4e2ed34ead146941c574a  gcc/co
*** 4928,4934 ****
  e54a2d33c6fb9bb0381889dad6fa71d8  gcc/config/riscv/riscv-builtins.cc
  e282802a520f3069e108ad136bd6e2fa  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
! cc8c7204a0bd3cebb4d7968ec7f34f5a  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  5d018c4d2b91ca8e5745a3eb3b3b17cd  gcc/config/riscv/riscv-ext-andes.def
--- 4928,4934 ----
  e54a2d33c6fb9bb0381889dad6fa71d8  gcc/config/riscv/riscv-builtins.cc
  e282802a520f3069e108ad136bd6e2fa  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
! ded302cce8c168d50aada6cbe304a37a  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
  790bd2a5355776ab5ebf4c7814489760  gcc/config/riscv/riscv-d.h
  5d018c4d2b91ca8e5745a3eb3b3b17cd  gcc/config/riscv/riscv-ext-andes.def
*************** c9dc9c3c85e48c375f03e9c68511f6d8  gcc/co
*** 4943,4957 ****
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  cf70b07b239c5bc3091fdab32e4d5d09  gcc/config/riscv/riscv-ftypes.def
  b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
! d6820fcc8d5b401f8812a79231532506  gcc/config/riscv/riscv-opts.h
! c5393897179939c1b5af9631e66d78a8  gcc/config/riscv/riscv-passes.def
  121d0828b2622389b84f15f8664c88d0  gcc/config/riscv/riscv-profiles.def
! 30f61243ed67ec80f2fb05a50475bd94  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  003d5626ce3adcac7ca55401c7dec2bc  gcc/config/riscv/riscv-selftests.cc
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
! f565a42da3474d73faf1ea727e2d7dcb  gcc/config/riscv/riscv-string.cc
  645c73713edeee965f139d7c0825f76d  gcc/config/riscv/riscv-subset.h
  728dc8257d59a540cd2c84220df2d596  gcc/config/riscv/riscv-target-attr.cc
  825f46ee578eef7b2d810af106cd3429  gcc/config/riscv/riscv-v.cc
--- 4943,4958 ----
  1b0b6b632f747d9387ef25821e8673b4  gcc/config/riscv/riscv-feature-bits.h
  cf70b07b239c5bc3091fdab32e4d5d09  gcc/config/riscv/riscv-ftypes.def
  b1bc6d82a24b7b0e658a43956a37419c  gcc/config/riscv/riscv-modes.def
! 8f14f2c290395ebe3ff7f23a1e97e56b  gcc/config/riscv/riscv-opt-popretz.cc
! aae5ad0f345cb593c10d152785190bc9  gcc/config/riscv/riscv-opts.h
! 4b5f5f162a40b5ae9dc3359a58f10c33  gcc/config/riscv/riscv-passes.def
  121d0828b2622389b84f15f8664c88d0  gcc/config/riscv/riscv-profiles.def
! a35d88a4767b851bb8ad0ce1b224d363  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  003d5626ce3adcac7ca55401c7dec2bc  gcc/config/riscv/riscv-selftests.cc
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
! 38e9863d2a2af1a5773ed060b713ccc1  gcc/config/riscv/riscv-string.cc
  645c73713edeee965f139d7c0825f76d  gcc/config/riscv/riscv-subset.h
  728dc8257d59a540cd2c84220df2d596  gcc/config/riscv/riscv-target-attr.cc
  825f46ee578eef7b2d810af106cd3429  gcc/config/riscv/riscv-v.cc
*************** f51037a9e437f8e9ce7215b2da5ad4e2  gcc/co
*** 4972,4981 ****
  3d83e85c22d3c9da7a43e8a19a5c8232  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 589c13f7f1a52d4d3e077a540a898d0b  gcc/config/riscv/riscv.cc
  4b6b168bb5f0a493f2a81f63dff567cf  gcc/config/riscv/riscv.h
! bee3af21fb73cd1fcdd15ce96d1c6775  gcc/config/riscv/riscv.md
! fec1c87bba727131a45d4ec4a9ae5490  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
  a8044652cefd826404f261518f9e2321  gcc/config/riscv/riscv_crypto.h
--- 4973,4982 ----
  3d83e85c22d3c9da7a43e8a19a5c8232  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 21a6891e4d9ba739ee2a58cfe8653c66  gcc/config/riscv/riscv.cc
  4b6b168bb5f0a493f2a81f63dff567cf  gcc/config/riscv/riscv.h
! 15968df0f4530cb28d33ea9651554427  gcc/config/riscv/riscv.md
! 011fb3b98a9d049a17db61272a06e9a0  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
  a8044652cefd826404f261518f9e2321  gcc/config/riscv/riscv_crypto.h
*************** ef8111b151f28f36d377df7b23b6b46f  gcc/co
*** 4991,5003 ****
  e83086f984717f1099ceeba6ce6bfb23  gcc/config/riscv/sifive-vector-builtins-functions.def
  1c098ed3792a8a12321513c56b32c66d  gcc/config/riscv/sifive-vector.md
  b5fb046770f7e60fc485d6092c296c38  gcc/config/riscv/sifive_vector.h
  faca69fa18f3f779cd3ee4d6a53e6193  gcc/config/riscv/sync-rvwmo.md
  4dff560d8961c6dd9b4dd18c668c629e  gcc/config/riscv/sync-ztso.md
  e99034efee42fab0266bbd7690bd92db  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
! 4775541dd5d3b254d12a2f76dfc4aa53  gcc/config/riscv/t-riscv
  fe202105dd9e81b9ce8fdcc11d52c294  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
  0478f4e79601d91fb8ad8f210b304a7b  gcc/config/riscv/t-withmultilib-generator
--- 4992,5005 ----
  e83086f984717f1099ceeba6ce6bfb23  gcc/config/riscv/sifive-vector-builtins-functions.def
  1c098ed3792a8a12321513c56b32c66d  gcc/config/riscv/sifive-vector.md
  b5fb046770f7e60fc485d6092c296c38  gcc/config/riscv/sifive_vector.h
+ afc3d8034fa9acd880634ca7807d70a8  gcc/config/riscv/spacemit-x60.md
  faca69fa18f3f779cd3ee4d6a53e6193  gcc/config/riscv/sync-rvwmo.md
  4dff560d8961c6dd9b4dd18c668c629e  gcc/config/riscv/sync-ztso.md
  e99034efee42fab0266bbd7690bd92db  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  381cb38e167feed84dad697fce89cabd  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
! 426f5c3d57e2c018f35a82785c7d6cad  gcc/config/riscv/t-riscv
  fe202105dd9e81b9ce8fdcc11d52c294  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
  0478f4e79601d91fb8ad8f210b304a7b  gcc/config/riscv/t-withmultilib-generator
*************** d70f08b893e019d12b16dc9a70754ef9  gcc/co
*** 5051,5057 ****
  7f04e00d7abf437885d57dbffa4d8f4a  gcc/config/rs6000/aix72.h
  c544fe733de647bba75656a097ef5683  gcc/config/rs6000/aix73.h
  04684068198cd7d4bf973f2cf37245b7  gcc/config/rs6000/altivec.h
! 4ea58cf80385acfad29e2ca331338279  gcc/config/rs6000/altivec.md
  6aae59d4e50476599eca7a9839fcea2a  gcc/config/rs6000/amo.h
  3bd1c96455c52fa67ad166ee514529f5  gcc/config/rs6000/biarch64.h
  bce756c85740f3f618c107b0cfad6962  gcc/config/rs6000/bmi2intrin.h
--- 5053,5059 ----
  7f04e00d7abf437885d57dbffa4d8f4a  gcc/config/rs6000/aix72.h
  c544fe733de647bba75656a097ef5683  gcc/config/rs6000/aix73.h
  04684068198cd7d4bf973f2cf37245b7  gcc/config/rs6000/altivec.h
! 384ce42a3ab8bfe3ab1c82010d480372  gcc/config/rs6000/altivec.md
  6aae59d4e50476599eca7a9839fcea2a  gcc/config/rs6000/amo.h
  3bd1c96455c52fa67ad166ee514529f5  gcc/config/rs6000/biarch64.h
  bce756c85740f3f618c107b0cfad6962  gcc/config/rs6000/bmi2intrin.h
*************** e580c199d31125b230bb2c433094bc3e  gcc/co
*** 5303,5309 ****
  f981246401dc02795a6f58eccb1240a8  gcc/config/sol2-rust.cc
  363aa40b2d2145d97c2b3b23b09d3ed3  gcc/config/sol2-stubs.cc
  a1b33a7b9e5a91f84a66b4e23338c3e1  gcc/config/sol2.cc
! 9206127cf079cbe3e3f753a2f351a226  gcc/config/sol2.h
  4796428cc640a3b87b8371614301a450  gcc/config/sol2.opt
  c9d3baaa833c42e5184e73236cc13b0e  gcc/config/sol2.opt.urls
  c12eeb9c89d82c905c55fe4b468fd9f8  gcc/config/sparc/biarch64.h
--- 5305,5311 ----
  f981246401dc02795a6f58eccb1240a8  gcc/config/sol2-rust.cc
  363aa40b2d2145d97c2b3b23b09d3ed3  gcc/config/sol2-stubs.cc
  a1b33a7b9e5a91f84a66b4e23338c3e1  gcc/config/sol2.cc
! 70bfdad9158fe1922485ee1038c3ddf1  gcc/config/sol2.h
  4796428cc640a3b87b8371614301a450  gcc/config/sol2.opt
  c9d3baaa833c42e5184e73236cc13b0e  gcc/config/sol2.opt.urls
  c12eeb9c89d82c905c55fe4b468fd9f8  gcc/config/sparc/biarch64.h
*************** ecbdfd983044f47fdfdcfd033969d564  gcc/co
*** 5329,5335 ****
  8715ec6c36122d3d59165af3ddc760ae  gcc/config/sparc/openbsd64.h
  a45c575fa02674cf0084efc660f20677  gcc/config/sparc/predicates.md
  e1394032b1fec7cdc6749467afc54d4a  gcc/config/sparc/rtemself.h
! dbaacf0e953709530c9cdf0affe2b6b2  gcc/config/sparc/sol2.h
  bf8a2f1403e13fc9157e782582c7d9b3  gcc/config/sparc/sp-elf.h
  5c39743d5de0cb72c3040a228ad6447d  gcc/config/sparc/sp64-elf.h
  e8ca4f5ac0c8f9928a51a9a82bf0480b  gcc/config/sparc/sparc-c.cc
--- 5331,5337 ----
  8715ec6c36122d3d59165af3ddc760ae  gcc/config/sparc/openbsd64.h
  a45c575fa02674cf0084efc660f20677  gcc/config/sparc/predicates.md
  e1394032b1fec7cdc6749467afc54d4a  gcc/config/sparc/rtemself.h
! 3780eafc8f3d12bb3118c076dc462c7b  gcc/config/sparc/sol2.h
  bf8a2f1403e13fc9157e782582c7d9b3  gcc/config/sparc/sp-elf.h
  5c39743d5de0cb72c3040a228ad6447d  gcc/config/sparc/sp64-elf.h
  e8ca4f5ac0c8f9928a51a9a82bf0480b  gcc/config/sparc/sparc-c.cc
*************** b7f4122a2f55943d0695762fa9fae560  gcc/co
*** 5394,5401 ****
  926160c023a90ab686fb3c72192cba08  gcc/config/t-vxworks
  73c7d281e1aefa4b212e139ac69cc1b3  gcc/config/t-winnt
  17fd5cabcc31b720b23bad47cf7fe84c  gcc/config/tm-dwarf2.h
- ef7e691f110a8f82b4ff41bf98cf76f2  gcc/config/usegas.h
- a6ae71a556271cc116214b3e9e87d867  gcc/config/usegld.h
  3c862f2da3c6468a7c5e4e1a58e7bc49  gcc/config/v850/constraints.md
  05bedf8ee27537603700552f055f8e51  gcc/config/v850/predicates.md
  35c3efadc3f10286dbb7a4c3ee7c4b32  gcc/config/v850/rtems.h
--- 5396,5401 ----
*************** f154c7dc9175c4e8204205bb4fbd2cbc  gcc/co
*** 5509,5516 ****
  0e227e351d2efea226ca8c249e52aff3  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! 06125d156a4d3a438f89782808c5a468  gcc/configure
! b1011b75f3b49cd3b3b1b41d40633ecb  gcc/configure.ac
  ec3aa966ca3fe9c6f84d4378160541b6  gcc/context.cc
  d1bde52b8dee0c0c5506d7e320b1bb61  gcc/context.h
  a9c3cddee4e237141062720b72fe38cd  gcc/convert.cc
--- 5509,5516 ----
  0e227e351d2efea226ca8c249e52aff3  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! 140cd7d69fd1a03813719ffbe3ad66fa  gcc/configure
! a0b40a40efb511c85c8df478e7226405  gcc/configure.ac
  ec3aa966ca3fe9c6f84d4378160541b6  gcc/context.cc
  d1bde52b8dee0c0c5506d7e320b1bb61  gcc/context.h
  a9c3cddee4e237141062720b72fe38cd  gcc/convert.cc
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5520,5526 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! dfb7c9a08f5a31725b39f78fa5e79e4f  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5520,5526 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 3e31c49592c596691cca00ef404a134b  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** bcf7c5d02934e40f17edeb18d58c4d4d  gcc/cp
*** 5556,5586 ****
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  b4ef117247d06b2cf19a0e42dc19459c  gcc/cp/Make-lang.in
! 5b5a65ce43883152bc3f3507d5294bba  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  a096f968454d0245d006f9f559a56a08  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! f9ea0c3919634f5f4d1d47a9251e02e7  gcc/cp/constexpr.cc
! cb52729a59ffce57487c8b275fa5eea1  gcc/cp/constraint.cc
  b4452de3b42a36f42cdd92b905d201b6  gcc/cp/contracts.cc
  e995f4adf7a857b715c0534a24556d3b  gcc/cp/contracts.h
  de31e99c416f73448d9f45f50a7d4823  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
! 616baed1df4afd900234fcdb83350ad4  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  b81a93d025cceb5b80d17336759de93c  gcc/cp/cp-objcp-common.cc
  acb30767d403ad5a0d7ae97437159ebe  gcc/cp/cp-objcp-common.h
  99f4b67f8ef26f58f35166be5ae39170  gcc/cp/cp-trait.def
  d219c7261c4e8b7d170b10d9b450f256  gcc/cp/cp-tree.def
! 490c27d9cec4d3977c44cfd8f6f6be07  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
  dce6e74658eab6bdf17f4f3b74e84891  gcc/cp/cvt.cc
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  2d4d94b8a1d1c1d26764ae93a8039dda  gcc/cp/cxx-pretty-print.h
  c5f1614ded8bb57480eb7d1afecb7c7c  gcc/cp/cxxapi-data.csv
! bd3ab50b2abfe8d73edcbc53905d9198  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
  b60fb404fc796e3de23c680095440d54  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
--- 5556,5586 ----
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  b4ef117247d06b2cf19a0e42dc19459c  gcc/cp/Make-lang.in
! edc9e71099a97b82445fd19c83dea072  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
  a096f968454d0245d006f9f559a56a08  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
! 0b92202b0cb62d8185cdfa9677e5b713  gcc/cp/constexpr.cc
! 6989db9e0165df0eb4e437ac3596cd48  gcc/cp/constraint.cc
  b4452de3b42a36f42cdd92b905d201b6  gcc/cp/contracts.cc
  e995f4adf7a857b715c0534a24556d3b  gcc/cp/contracts.h
  de31e99c416f73448d9f45f50a7d4823  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
! 5b2f957a75538ef4aae586a73067dedb  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  b81a93d025cceb5b80d17336759de93c  gcc/cp/cp-objcp-common.cc
  acb30767d403ad5a0d7ae97437159ebe  gcc/cp/cp-objcp-common.h
  99f4b67f8ef26f58f35166be5ae39170  gcc/cp/cp-trait.def
  d219c7261c4e8b7d170b10d9b450f256  gcc/cp/cp-tree.def
! 89fe936fc6e4a7990e4741e69d82669c  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
  dce6e74658eab6bdf17f4f3b74e84891  gcc/cp/cvt.cc
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  2d4d94b8a1d1c1d26764ae93a8039dda  gcc/cp/cxx-pretty-print.h
  c5f1614ded8bb57480eb7d1afecb7c7c  gcc/cp/cxxapi-data.csv
! 30a5cdb2b0cd8f22dca316fe839f0733  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
  b60fb404fc796e3de23c680095440d54  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
*************** aaf76a9b03fd0532d2904aef004fd66a  gcc/cp
*** 5599,5622 ****
  5efd09b0532a0b524e859d61c942156d  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
! 0456b59fb105d3d30371131d063a685a  gcc/cp/method.cc
! 66e71dfb45275f905b7ad2af0a2159d6  gcc/cp/module.cc
  6a8b7de0216bc4ed4e56a875c5353138  gcc/cp/name-lookup.cc
  6fdcf6a217e83566683fbec935637de3  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 690e9d0328e77535e65224b49bc10b4d  gcc/cp/parser.cc
! db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
! e452eacae3580846b47b3a12456f5b7f  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
! 4164460f8a949afbe1a33c93e1c84682  gcc/cp/semantics.cc
  8ccc82546d801360d2ccd8fd2a48b5d6  gcc/cp/std-name-hint.gperf
  bb87dbae9e49b63a73c4afa927a9018e  gcc/cp/std-name-hint.h
! 78096c8a9025b902dc7bb831ec9506e6  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! 86d985ffb3d7fcdcc86e1e0c88c3b744  gcc/cp/typeck.cc
  d5322228a4b4ea22ae20c897e9baaf69  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
--- 5599,5622 ----
  5efd09b0532a0b524e859d61c942156d  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
! d782b614f6d750ad370fab9e0b19f683  gcc/cp/method.cc
! 75d441928c61d28a2f27a79be9a27e40  gcc/cp/module.cc
  6a8b7de0216bc4ed4e56a875c5353138  gcc/cp/name-lookup.cc
  6fdcf6a217e83566683fbec935637de3  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 59977f4a87c0dc6b0fe52290f98a8a0f  gcc/cp/parser.cc
! f6ddd589a7423f07d554dad74c5e43a7  gcc/cp/parser.h
! 9ebdefcee78a336a22405cd0bd0a814c  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
! 539887a6e4dfe0108a43dd06e511bbca  gcc/cp/semantics.cc
  8ccc82546d801360d2ccd8fd2a48b5d6  gcc/cp/std-name-hint.gperf
  bb87dbae9e49b63a73c4afa927a9018e  gcc/cp/std-name-hint.h
! 1fe34e428beb7b18d5180400e36d9f86  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! dd07aba39873c93f6859b787c8ab428c  gcc/cp/typeck.cc
  d5322228a4b4ea22ae20c897e9baaf69  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
*************** cc65ae2ee101a218fd768c2fee83af6e  gcc/di
*** 5957,5963 ****
  f804348b86b5dda4ae2b27490ef6174a  gcc/diagnostics/paths-output.cc
  de4a955194bb4b0417d906ee181de3b0  gcc/diagnostics/paths.cc
  4fb4afb161f7382c1b6fffa57f6a8de4  gcc/diagnostics/paths.h
! 4e3cc329cefe9c53ccf1c2a120e18cbc  gcc/diagnostics/sarif-sink.cc
  67b819454fada497e7bb752228b03993  gcc/diagnostics/sarif-sink.h
  997b3f6b08ca5f0365ad8829b73c5f3f  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
--- 5957,5963 ----
  f804348b86b5dda4ae2b27490ef6174a  gcc/diagnostics/paths-output.cc
  de4a955194bb4b0417d906ee181de3b0  gcc/diagnostics/paths.cc
  4fb4afb161f7382c1b6fffa57f6a8de4  gcc/diagnostics/paths.h
! 152a513b1af5b3b035d7ced3240ad5a6  gcc/diagnostics/sarif-sink.cc
  67b819454fada497e7bb752228b03993  gcc/diagnostics/sarif-sink.h
  997b3f6b08ca5f0365ad8829b73c5f3f  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
*************** acdfc663791e4321372e79932070d05d  gcc/do
*** 5993,5999 ****
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  916609b97298dbc7d4d607a08543d64f  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! a0ab323fc5dc97da8c865a0e361f11a6  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
--- 5993,5999 ----
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  916609b97298dbc7d4d607a08543d64f  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! d92943efccea075f0634e1a893ca9185  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 6017,6023 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  e876c444c113d5a40798e8580ed11838  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! b689d0d126bfea7d9184c424f73fde65  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6017,6023 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  e876c444c113d5a40798e8580ed11838  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 0dc7a009ce04a4bf8f80190df70972e8  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** a7117c4fee8c54e338b967886f3b2dcb  gcc/do
*** 6064,6077 ****
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  a44260feebffd50db9ea51aed431d69c  gcc/doc/riscv-ext.texi
! b310d64363bd145805f52eb9c3cf33d7  gcc/doc/riscv-mcpu.texi
! 9678bf067dec9e1a06524a95c7ebd2a5  gcc/doc/riscv-mtune.texi
! 8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! 0d1a052fb078fc41715484e278755ead  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
! 60892135dd93bb0e6d2d4d1b1fe11cb1  gcc/doc/tm.texi
! 0801b698039cc220174c1b6ec339c77c  gcc/doc/tm.texi.in
  173ab0ec22dd651701e36e43ed21375f  gcc/doc/tree-ssa.texi
  5f62752970e47d350c8cbce47123d1cf  gcc/doc/trouble.texi
  7f44041407f24d2851135ae497914475  gcc/doc/ux.texi
--- 6064,6077 ----
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
  a44260feebffd50db9ea51aed431d69c  gcc/doc/riscv-ext.texi
! 8d8ef7f8cd979e9c03cfb12311079c7e  gcc/doc/riscv-mcpu.texi
! 4a5d4c4578ee4678e5fdda6dfdbdd4c2  gcc/doc/riscv-mtune.texi
! e0434ec541556c6ba008fe012784ad16  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! 225eabd09d863b3a65b33dc0443ba87c  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
! dfb23f51dafc3f0b119c35a887759f8b  gcc/doc/tm.texi
! eb3553f118b64fb9b027641ed371a756  gcc/doc/tm.texi.in
  173ab0ec22dd651701e36e43ed21375f  gcc/doc/tree-ssa.texi
  5f62752970e47d350c8cbce47123d1cf  gcc/doc/trouble.texi
  7f44041407f24d2851135ae497914475  gcc/doc/ux.texi
*************** a4ee0bae47797ce73f05daef7a07edd4  gcc/ex
*** 6113,6119 ****
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  efeb17689a7453211f59099acc97a475  gcc/expr.cc
  dfa85539f017784504ec3d884e09901f  gcc/expr.h
! 69fe0374b88ff2808ee2eb6493915596  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
--- 6113,6119 ----
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
  efeb17689a7453211f59099acc97a475  gcc/expr.cc
  dfa85539f017784504ec3d884e09901f  gcc/expr.h
! 33bfae66eadce6fbc6ff4df210aeb2c8  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
  4e78fbbdb0a8c835b984d732a6d97a7b  gcc/fibonacci_heap.h
  ee644c05e4a3461a8c2f5a4a5ea285bd  gcc/file-find.cc
*************** b7bf1ecba30babcca6fcc9e9a66bebfb  gcc/fo
*** 6130,6136 ****
  c6bcf556650bd15e73728fb68b1276cc  gcc/fold-const.cc
  1d6c2807b0d1d4dbc716459c64abe92f  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 620a129ba9c94b4849d2d6b14ba6d6e5  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6130,6136 ----
  c6bcf556650bd15e73728fb68b1276cc  gcc/fold-const.cc
  1d6c2807b0d1d4dbc716459c64abe92f  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! a6ee07b7b411f6f079073795ce2126f4  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** b3beb0a8e06a71d205d3639a1bc35738  gcc/fo
*** 6182,6188 ****
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
  8d23aaf7925b41212a7b0a72c36b1fbe  gcc/fortran/gfortran.h
! 2beb36ba1d875edd98fee3f0b52234ee  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  e4fe6ce0303cd182ebd328bdb0ae5743  gcc/fortran/interface.cc
  74d5cc035a8e6ee1fb5826c965c90532  gcc/fortran/intrinsic.cc
--- 6182,6188 ----
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
  8d23aaf7925b41212a7b0a72c36b1fbe  gcc/fortran/gfortran.h
! 7a8d7d055d41e7124395a6d5e59c9209  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  e4fe6ce0303cd182ebd328bdb0ae5743  gcc/fortran/interface.cc
  74d5cc035a8e6ee1fb5826c965c90532  gcc/fortran/intrinsic.cc
*************** c8cf34fcd829ff55e5b3240c7d16d62c  gcc/fo
*** 6206,6215 ****
  27910247f948e0af2baebd9c279bec80  gcc/fortran/module.cc
  a45046a8e919389a8ba78f3ff472f80b  gcc/fortran/openmp.cc
  97facac1dd9ae327c6c4547b527e4527  gcc/fortran/options.cc
! 6d861bb72dba054f1f018f41dbbc9dcb  gcc/fortran/parse.cc
  718f4db6bea1b398551c501068f61597  gcc/fortran/parse.h
  c9d22da97e7dd6a7d6a14a49e9b5dcb0  gcc/fortran/primary.cc
! 8a9182e367e083a0e7e59610641b8704  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  d78cc6d6b48b8228757fb8b674f6ad9b  gcc/fortran/simplify.cc
--- 6206,6215 ----
  27910247f948e0af2baebd9c279bec80  gcc/fortran/module.cc
  a45046a8e919389a8ba78f3ff472f80b  gcc/fortran/openmp.cc
  97facac1dd9ae327c6c4547b527e4527  gcc/fortran/options.cc
! b58e1dba1ed6dbcebf2fad871bef88e2  gcc/fortran/parse.cc
  718f4db6bea1b398551c501068f61597  gcc/fortran/parse.h
  c9d22da97e7dd6a7d6a14a49e9b5dcb0  gcc/fortran/primary.cc
! 09419d3904048783c59f8b4962ac34d9  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  d78cc6d6b48b8228757fb8b674f6ad9b  gcc/fortran/simplify.cc
*************** cac72ec7acd3c0b9265d75c09766a847  gcc/gc
*** 6254,6260 ****
  74b8852724cd126309c2e814288bcaa4  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  7e2f3c81fe7c2381b433886ab2914fa7  gcc/gcc-urlifier.h
! efccd71c7afa5d72dda4035b16b8228e  gcc/gcc.cc
  265ae8f124014a92ca7dee798d9c2b46  gcc/gcc.h
  d66e80f2ea9c1b6754479c999040b857  gcc/gcov-counter.def
  c4e07547b91be991d1bed6c22015cec2  gcc/gcov-dump.cc
--- 6254,6260 ----
  74b8852724cd126309c2e814288bcaa4  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  7e2f3c81fe7c2381b433886ab2914fa7  gcc/gcc-urlifier.h
! c6f0b91e296f34857fb09c32a4a5cab0  gcc/gcc.cc
  265ae8f124014a92ca7dee798d9c2b46  gcc/gcc.h
  d66e80f2ea9c1b6754479c999040b857  gcc/gcov-counter.def
  c4e07547b91be991d1bed6c22015cec2  gcc/gcov-dump.cc
*************** f462d5a18a683a40d6f1e731674d483f  gcc/ge
*** 6298,6304 ****
  a97b3578ac581dcde94c740fbde65486  gcc/genmddeps.cc
  8c578841175ffc99a0d2e35d5844de5f  gcc/genmddump.cc
  2d5f79e0543565e8a2c55a08a6ba8393  gcc/genmodes.cc
! 78862d5c4a5e1a707d3e63e4857adb04  gcc/genmultilib
  eb743d2855e55ff1778bae601dc38551  gcc/genopinit.cc
  697e0460c5aaa13d0d52fcc0000b409c  gcc/genoutput.cc
  29ee68ccc9844e3580e3e9f6da577778  gcc/genpeep.cc
--- 6298,6304 ----
  a97b3578ac581dcde94c740fbde65486  gcc/genmddeps.cc
  8c578841175ffc99a0d2e35d5844de5f  gcc/genmddump.cc
  2d5f79e0543565e8a2c55a08a6ba8393  gcc/genmodes.cc
! 1042368f101ddd6b5002e661859a1db2  gcc/genmultilib
  eb743d2855e55ff1778bae601dc38551  gcc/genopinit.cc
  697e0460c5aaa13d0d52fcc0000b409c  gcc/genoutput.cc
  29ee68ccc9844e3580e3e9f6da577778  gcc/genpeep.cc
*************** da09d1e31d3994eb3d6958074d7b7ce5  gcc/gi
*** 6321,6332 ****
  fea7635818b5d7cefd4c7a0b268a254c  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! b52f7521af68ee0d5854c1573d8b7f91  gcc/gimple-fold.cc
  9b04ce067dded26aa256b48adea40724  gcc/gimple-fold.h
  43ad47e8cd99d438040cf6937a3cbe5e  gcc/gimple-harden-conditionals.cc
  78586a1c0ce6834da91809b77f98c6d7  gcc/gimple-harden-control-flow.cc
  46c40ebab120d543476a2e46ac063bba  gcc/gimple-if-to-switch.cc
! 0c4b12895536294d385322d91bea2a2a  gcc/gimple-isel.cc
  a73e428c3f5211d6dbb9d7ce06f4cd52  gcc/gimple-iterator.cc
  a0c225f8a1deb41873e5984a058b0f45  gcc/gimple-iterator.h
  4ab554af77b78b1a5d2948c9f0632680  gcc/gimple-laddress.cc
--- 6321,6332 ----
  fea7635818b5d7cefd4c7a0b268a254c  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! a906fcf00a8b2e9c4407adab8af97857  gcc/gimple-fold.cc
  9b04ce067dded26aa256b48adea40724  gcc/gimple-fold.h
  43ad47e8cd99d438040cf6937a3cbe5e  gcc/gimple-harden-conditionals.cc
  78586a1c0ce6834da91809b77f98c6d7  gcc/gimple-harden-control-flow.cc
  46c40ebab120d543476a2e46ac063bba  gcc/gimple-if-to-switch.cc
! b5e8f0564fb423f8ce5268f253597467  gcc/gimple-isel.cc
  a73e428c3f5211d6dbb9d7ce06f4cd52  gcc/gimple-iterator.cc
  a0c225f8a1deb41873e5984a058b0f45  gcc/gimple-iterator.h
  4ab554af77b78b1a5d2948c9f0632680  gcc/gimple-laddress.cc
*************** cf3104344cd1bd624fd31423353ea269  gcc/gi
*** 6349,6355 ****
  2267485dd08426f0ba596381f4f4f3ee  gcc/gimple-range-cache.h
  3e4f3306c9eafee14102507900b96dad  gcc/gimple-range-edge.cc
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
! 956e760455baf8d2a429c121da56c574  gcc/gimple-range-fold.cc
  fc0a3b03ceae3864b2e655f21c7468ae  gcc/gimple-range-fold.h
  2ab6e680fbd55d50bfc4690e2ecf8a4f  gcc/gimple-range-gori.cc
  db61cb44af184c491426f70b14b72f64  gcc/gimple-range-gori.h
--- 6349,6355 ----
  2267485dd08426f0ba596381f4f4f3ee  gcc/gimple-range-cache.h
  3e4f3306c9eafee14102507900b96dad  gcc/gimple-range-edge.cc
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
! bb9b07fa9f64bd4a7b02b732ca5043cb  gcc/gimple-range-fold.cc
  fc0a3b03ceae3864b2e655f21c7468ae  gcc/gimple-range-fold.h
  2ab6e680fbd55d50bfc4690e2ecf8a4f  gcc/gimple-range-gori.cc
  db61cb44af184c491426f70b14b72f64  gcc/gimple-range-gori.h
*************** afe93bca845d66d8f5c8bb4e79507028  gcc/gi
*** 6359,6365 ****
  c33a426eeaa6da07a474caf81b43a278  gcc/gimple-range-op.h
  33d3c148e1b6f1df39688e27f3511fe1  gcc/gimple-range-path.cc
  55a80a9f04099be643d37e29c9ac7d10  gcc/gimple-range-path.h
! b4a2ebb0c3e9f6c379505631b6ca27a2  gcc/gimple-range-phi.cc
  079db3f6a23a106d51d55dfa751664d3  gcc/gimple-range-phi.h
  8a80a7176e272213da512b76afcab3d7  gcc/gimple-range-tests.cc
  74bf54ac2be468226c893a76f7919cbf  gcc/gimple-range-trace.cc
--- 6359,6365 ----
  c33a426eeaa6da07a474caf81b43a278  gcc/gimple-range-op.h
  33d3c148e1b6f1df39688e27f3511fe1  gcc/gimple-range-path.cc
  55a80a9f04099be643d37e29c9ac7d10  gcc/gimple-range-path.h
! f5f2a2bd714b9aba3bf45fbcd137ee4a  gcc/gimple-range-phi.cc
  079db3f6a23a106d51d55dfa751664d3  gcc/gimple-range-phi.h
  8a80a7176e272213da512b76afcab3d7  gcc/gimple-range-tests.cc
  74bf54ac2be468226c893a76f7919cbf  gcc/gimple-range-trace.cc
*************** b417ca4d3d865879d0e642790dafa8cf  gcc/gi
*** 6373,6385 ****
  805d5854da4b225bb3c0ca1f01ba7c29  gcc/gimple-ssa-pta-constraints.h
  7cc5761502132b3ca93063369ba8f5c0  gcc/gimple-ssa-sccopy.cc
  b551cb1f1566bf3aa2bca3816f2b1c98  gcc/gimple-ssa-split-paths.cc
! c7ec9ee38b6e99c1260bd3e794ead05f  gcc/gimple-ssa-sprintf.cc
  87d47a47b50b82ce1660751e9d73d3b3  gcc/gimple-ssa-store-merging.cc
  5081e3b07e7210c50573a328ecd9e1b9  gcc/gimple-ssa-strength-reduction.cc
! 21629afaaed834fe2ac98a4e03130ea2  gcc/gimple-ssa-warn-access.cc
  3ae7b597d9d5e0c5ba61dc7ee8a7f2c2  gcc/gimple-ssa-warn-access.h
  58ebb365eca5688d01bd602f9fb054e2  gcc/gimple-ssa-warn-alloca.cc
! 8a142c2c29a0173959321fc4963bb5a9  gcc/gimple-ssa-warn-restrict.cc
  c33f19efabf2e1331a65e467f6a2e7fc  gcc/gimple-ssa-warn-restrict.h
  5ea6e6b9805f4e86b47aabe82b9d1033  gcc/gimple-ssa.h
  7f8c492dbd88d8d371f858c251bb8d5c  gcc/gimple-streamer-in.cc
--- 6373,6385 ----
  805d5854da4b225bb3c0ca1f01ba7c29  gcc/gimple-ssa-pta-constraints.h
  7cc5761502132b3ca93063369ba8f5c0  gcc/gimple-ssa-sccopy.cc
  b551cb1f1566bf3aa2bca3816f2b1c98  gcc/gimple-ssa-split-paths.cc
! fcc4ed911cdab9bdd135501c8faeb812  gcc/gimple-ssa-sprintf.cc
  87d47a47b50b82ce1660751e9d73d3b3  gcc/gimple-ssa-store-merging.cc
  5081e3b07e7210c50573a328ecd9e1b9  gcc/gimple-ssa-strength-reduction.cc
! 46eea1d0c3815d9d4d5022c7e735c5f1  gcc/gimple-ssa-warn-access.cc
  3ae7b597d9d5e0c5ba61dc7ee8a7f2c2  gcc/gimple-ssa-warn-access.h
  58ebb365eca5688d01bd602f9fb054e2  gcc/gimple-ssa-warn-alloca.cc
! 450934534b0c9abf5f470decbc8c446e  gcc/gimple-ssa-warn-restrict.cc
  c33f19efabf2e1331a65e467f6a2e7fc  gcc/gimple-ssa-warn-restrict.h
  5ea6e6b9805f4e86b47aabe82b9d1033  gcc/gimple-ssa.h
  7f8c492dbd88d8d371f858c251bb8d5c  gcc/gimple-streamer-in.cc
*************** b5b13ba4f92b3ef5294cee911b571925  gcc/gi
*** 6390,6399 ****
  b5ed1ca4ba5f0f56cd7e3ec1d2a1d01f  gcc/gimple-warn-recursion.cc
  0809761e93e784b8b311ec9cfaab0e63  gcc/gimple.cc
  ed9c9a9b8efbcca1621cb38f6a7f739b  gcc/gimple.def
! fff83c47fd0320d8175084caf95f1b1d  gcc/gimple.h
  78067ab7e777ee9d0a105da78655ee19  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
! bdc0fe03a3523bc1412d967a0232373c  gcc/gimplify.cc
  08a911f7f8b65840f9b57e0e76a2061c  gcc/gimplify.h
  ba3039c0ed9645080c52c0d4bc46096f  gcc/gimplify_reg_info.h
  7df17d7c2bcdff0a474d633a02195544  gcc/ginclude/float.h
--- 6390,6399 ----
  b5ed1ca4ba5f0f56cd7e3ec1d2a1d01f  gcc/gimple-warn-recursion.cc
  0809761e93e784b8b311ec9cfaab0e63  gcc/gimple.cc
  ed9c9a9b8efbcca1621cb38f6a7f739b  gcc/gimple.def
! 1835ccd82890f84e5a82ca342d0c5455  gcc/gimple.h
  78067ab7e777ee9d0a105da78655ee19  gcc/gimplify-me.cc
  84814cb09300f3db388dd0d22133ccb4  gcc/gimplify-me.h
! 0145d986eb08249f59cc8eb3f173d426  gcc/gimplify.cc
  08a911f7f8b65840f9b57e0e76a2061c  gcc/gimplify.h
  ba3039c0ed9645080c52c0d4bc46096f  gcc/gimplify_reg_info.h
  7df17d7c2bcdff0a474d633a02195544  gcc/ginclude/float.h
*************** d7408ac6c915c3e2f58cd40bdb6a0671  gcc/gi
*** 6413,6419 ****
  18dd241fd4e77ac61edc90586b9fb2b6  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  b41648f499a7db07e24806aae26998b5  gcc/glimits.h
! 5b432076be455f877d914253d6bb8cdd  gcc/go/ChangeLog
  e697a6a6e7d6942b7375c665c70d34b4  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  88217f68368328f3ce651c46f0830df8  gcc/go/config-lang.in
--- 6413,6419 ----
  18dd241fd4e77ac61edc90586b9fb2b6  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  b41648f499a7db07e24806aae26998b5  gcc/glimits.h
! 0f7330014d2575d32fa41f31cef967af  gcc/go/ChangeLog
  e697a6a6e7d6942b7375c665c70d34b4  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  88217f68368328f3ce651c46f0830df8  gcc/go/config-lang.in
*************** bfc57c7a1e73452c4b277ad13efbddbd  gcc/go
*** 6474,6480 ****
  b4fcb26168619862a6f0f95ba175db11  gcc/go/gofrontend/types.h
  1a87c48a17e95c935789de3db97a6ba8  gcc/go/gofrontend/unsafe.cc
  2f67448e4d59de193cdd545537d8dd20  gcc/go/gofrontend/wb.cc
! 614f0490d9c4e47b1caebcecd04b324d  gcc/go/gospec.cc
  c8bf45fde8efe08641c9932b6615f284  gcc/go/lang-specs.h
  523a1493b5ff59d32623e9bfb2c0d36a  gcc/go/lang.opt
  de6e70a04d4bd8d0629a07dcbc6d1ec4  gcc/go/lang.opt.urls
--- 6474,6480 ----
  b4fcb26168619862a6f0f95ba175db11  gcc/go/gofrontend/types.h
  1a87c48a17e95c935789de3db97a6ba8  gcc/go/gofrontend/unsafe.cc
  2f67448e4d59de193cdd545537d8dd20  gcc/go/gofrontend/wb.cc
! a66eb96a4ced95e676f646b608c6314f  gcc/go/gospec.cc
  c8bf45fde8efe08641c9932b6615f284  gcc/go/lang-specs.h
  523a1493b5ff59d32623e9bfb2c0d36a  gcc/go/lang.opt
  de6e70a04d4bd8d0629a07dcbc6d1ec4  gcc/go/lang.opt.urls
*************** fd89e6f19f8415d6bee80d0e6c195788  gcc/ip
*** 6551,6558 ****
  a8bc23feef2d2f8a3d25702ece427f87  gcc/ipa-inline.h
  19c0cbbd70e071bd63dbb0527d02423e  gcc/ipa-locality-cloning.cc
  e1e331896b86db8a2281657bbb21ac72  gcc/ipa-locality-cloning.h
! 5146e44af36aa042f1e1098a4e796065  gcc/ipa-modref-tree.cc
! 5a1edb91a2b7237c3e946f040a3d9697  gcc/ipa-modref-tree.h
  d4b6029d550d1c8bf41bfb44083a9843  gcc/ipa-modref.cc
  8fe1972490c1cce5a10c7cdcd57b2361  gcc/ipa-modref.h
  4ef53e0bff9d618eacffb76e9fb73013  gcc/ipa-param-manipulation.cc
--- 6551,6558 ----
  a8bc23feef2d2f8a3d25702ece427f87  gcc/ipa-inline.h
  19c0cbbd70e071bd63dbb0527d02423e  gcc/ipa-locality-cloning.cc
  e1e331896b86db8a2281657bbb21ac72  gcc/ipa-locality-cloning.h
! d077e947a9fce9c40d0f0c11d3364802  gcc/ipa-modref-tree.cc
! 7f6c600cb6695244b71263edd1186df3  gcc/ipa-modref-tree.h
  d4b6029d550d1c8bf41bfb44083a9843  gcc/ipa-modref.cc
  8fe1972490c1cce5a10c7cdcd57b2361  gcc/ipa-modref.h
  4ef53e0bff9d618eacffb76e9fb73013  gcc/ipa-param-manipulation.cc
*************** d4b6029d550d1c8bf41bfb44083a9843  gcc/ip
*** 6561,6574 ****
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
  3290558dca39b32c0ca581e6c3427551  gcc/ipa-predicate.h
  cb4c87b016a31121941a3b4b6060d470  gcc/ipa-profile.cc
! c541a7e3ba53fb3fa1e3848e1c71bb29  gcc/ipa-prop.cc
  00d42ec7c12a0fe53f1cce1d2ac27096  gcc/ipa-prop.h
  1c585ae593227742840d2cccb610d475  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
  ee6c4ff9a86c5d0a68fa41c8da2b5c6f  gcc/ipa-ref.h
  d26d5182352272175a1093baac59029c  gcc/ipa-reference.cc
  d4930f12a999a28238b013539b631f2f  gcc/ipa-reference.h
! 6e25e7ad90c3ddb398c67560a2eddd86  gcc/ipa-split.cc
  128fc9f66e07a64e6ebecfe0e1f78765  gcc/ipa-sra.cc
  1277e7fb1c75f935550a926b823894bf  gcc/ipa-strub.cc
  7441ae66ef417a1eed323b8c98c8e589  gcc/ipa-strub.h
--- 6561,6574 ----
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
  3290558dca39b32c0ca581e6c3427551  gcc/ipa-predicate.h
  cb4c87b016a31121941a3b4b6060d470  gcc/ipa-profile.cc
! 38a03016010637f74c58b1d0edfb43e4  gcc/ipa-prop.cc
  00d42ec7c12a0fe53f1cce1d2ac27096  gcc/ipa-prop.h
  1c585ae593227742840d2cccb610d475  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
  ee6c4ff9a86c5d0a68fa41c8da2b5c6f  gcc/ipa-ref.h
  d26d5182352272175a1093baac59029c  gcc/ipa-reference.cc
  d4930f12a999a28238b013539b631f2f  gcc/ipa-reference.h
! 10bd9cf4cc47b968947400a00063f357  gcc/ipa-split.cc
  128fc9f66e07a64e6ebecfe0e1f78765  gcc/ipa-sra.cc
  1277e7fb1c75f935550a926b823894bf  gcc/ipa-strub.cc
  7441ae66ef417a1eed323b8c98c8e589  gcc/ipa-strub.h
*************** b54054c495232a416b1cdea9032d1d9f  gcc/lo
*** 6715,6721 ****
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! 0d17cb8be2938e89f8c42126c1281fe8  gcc/lra-constraints.cc
  ebe278d864d3a7e33fbcc46f02926248  gcc/lra-eliminations.cc
  c9f048755e3742fbe86e02e2b4b1eb6d  gcc/lra-int.h
  52ba28cd117bff034bd9a26fe150f692  gcc/lra-lives.cc
--- 6715,6721 ----
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! 96404046cf8b0d00538875e9b57ee9df  gcc/lra-constraints.cc
  ebe278d864d3a7e33fbcc46f02926248  gcc/lra-eliminations.cc
  c9f048755e3742fbe86e02e2b4b1eb6d  gcc/lra-int.h
  52ba28cd117bff034bd9a26fe150f692  gcc/lra-lives.cc
*************** f2a9985147f87fd566d4ae2dd8fceabc  gcc/lt
*** 6735,6741 ****
  6c75be9cf8c45018aae0f2d91e2411ba  gcc/lto-streamer-in.cc
  c123d330c230c1e0fe188e9143a9dcf8  gcc/lto-streamer-out.cc
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
! a02ffd191761acac63f19c981da24abf  gcc/lto-streamer.h
  83090028348934d032ead727241d7ad7  gcc/lto-wrapper.cc
  ece32b16d05d95ef17aaa781597ae7d6  gcc/lto/ChangeLog
  3e7816807401da2506930719e6dc8b3d  gcc/lto/Make-lang.in
--- 6735,6741 ----
  6c75be9cf8c45018aae0f2d91e2411ba  gcc/lto-streamer-in.cc
  c123d330c230c1e0fe188e9143a9dcf8  gcc/lto-streamer-out.cc
  8caf9a68892d64dc294b20c27291b749  gcc/lto-streamer.cc
! c1f5544bbcb0c97f44efaa8e7ab62c22  gcc/lto-streamer.h
  83090028348934d032ead727241d7ad7  gcc/lto-wrapper.cc
  ece32b16d05d95ef17aaa781597ae7d6  gcc/lto/ChangeLog
  3e7816807401da2506930719e6dc8b3d  gcc/lto/Make-lang.in
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7736,7742 ****
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! 208d87699473e48e6ca883967ec3f644  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
--- 7736,7742 ----
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! 7bef7303eadb83672b33fab558966203  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
*************** c2186582925518f8871bcb0f066553f0  gcc/om
*** 7780,7787 ****
  db351af3c135e85d5daecadfdff02e4a  gcc/omp-builtins.def
  084ac62e183b76a6936f7fbb0fd9482e  gcc/omp-expand.cc
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
! 3f32d99b1fca9c14c8a4a741125be1f0  gcc/omp-general.cc
! cb2a8c86939322e491658cba12c21c2f  gcc/omp-general.h
  cc1e50ba6dc2e08f1b9b516e3a0e5368  gcc/omp-low.cc
  73fb62acbdd74e28aff8cc147ee7fa11  gcc/omp-low.h
  bf774332919d8fc6ad76372ccefd0aa2  gcc/omp-oacc-kernels-decompose.cc
--- 7780,7787 ----
  db351af3c135e85d5daecadfdff02e4a  gcc/omp-builtins.def
  084ac62e183b76a6936f7fbb0fd9482e  gcc/omp-expand.cc
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
! 9c0c5720928afb3e264aa62d4e9b9cb3  gcc/omp-general.cc
! 9ba5023e72c73609347d8584119f8372  gcc/omp-general.h
  cc1e50ba6dc2e08f1b9b516e3a0e5368  gcc/omp-low.cc
  73fb62acbdd74e28aff8cc147ee7fa11  gcc/omp-low.h
  bf774332919d8fc6ad76372ccefd0aa2  gcc/omp-oacc-kernels-decompose.cc
*************** bf774332919d8fc6ad76372ccefd0aa2  gcc/om
*** 7789,7795 ****
  e5f5c700eae6affedb70e80bd1956763  gcc/omp-offload.cc
  63335117e85d88f9866c3d00e2c1c163  gcc/omp-offload.h
  d5704680057b6bdba79f8e9d433cc12c  gcc/omp-selectors.h
! c82a0618eb76ff551736f55281d0c66c  gcc/omp-simd-clone.cc
  9c6e4512e96e68638ec219f56388f10b  gcc/omp-simd-clone.h
  f0f50bc7c73f3271a51064cf4a007466  gcc/opt-functions.awk
  613f0b49d06b4fd00699b149b1da03a0  gcc/opt-gather.awk
--- 7789,7795 ----
  e5f5c700eae6affedb70e80bd1956763  gcc/omp-offload.cc
  63335117e85d88f9866c3d00e2c1c163  gcc/omp-offload.h
  d5704680057b6bdba79f8e9d433cc12c  gcc/omp-selectors.h
! 64f09065f7f8ba8d13fd140a40c8da78  gcc/omp-simd-clone.cc
  9c6e4512e96e68638ec219f56388f10b  gcc/omp-simd-clone.h
  f0f50bc7c73f3271a51064cf4a007466  gcc/opt-functions.awk
  613f0b49d06b4fd00699b149b1da03a0  gcc/opt-gather.awk
*************** b4c35ee2dcd91ade3c9baf0bb43c18ca  gcc/op
*** 7821,7827 ****
  6d624f6fea144bbb8e71378935b84abd  gcc/opts-diagnostic.h
  dd6379e65503d93b6eb08844e8bf2d09  gcc/opts-global.cc
  079a115ae417106f3e7f42b0272b866d  gcc/opts-jobserver.h
! d3506b15c10420065e9694e2444a970b  gcc/opts.cc
  7297ae8caf0c34afb0609151e7e3f987  gcc/opts.h
  b7a4b3edfca283f972cdeb23102a28a4  gcc/ordered-hash-map-tests.cc
  fccd951e3de91d49d3824e482c12e070  gcc/ordered-hash-map.h
--- 7821,7827 ----
  6d624f6fea144bbb8e71378935b84abd  gcc/opts-diagnostic.h
  dd6379e65503d93b6eb08844e8bf2d09  gcc/opts-global.cc
  079a115ae417106f3e7f42b0272b866d  gcc/opts-jobserver.h
! 5f6f1ceba66df56398e1ea64bd3f24c7  gcc/opts.cc
  7297ae8caf0c34afb0609151e7e3f987  gcc/opts.h
  b7a4b3edfca283f972cdeb23102a28a4  gcc/ordered-hash-map-tests.cc
  fccd951e3de91d49d3824e482c12e070  gcc/ordered-hash-map.h
*************** c08edc659010d9072c249418c1be7fe6  gcc/rt
*** 7967,7973 ****
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 64ce400f672922ae2e0176874fa88d71  gcc/rust/ChangeLog
  71972a823341f4ee0b2af7347ef7a633  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  27f492ab17f50d840e1e0fd32a89c84a  gcc/rust/ast/rust-ast-builder.cc
--- 7967,7973 ----
  ecb31a48caf7998f695601ec7350bdc0  gcc/run-rtl-passes.cc
  c4bc204b62fdb61848c09abf05a60a9d  gcc/run-rtl-passes.h
  add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! c1696b1c2032360b91f967ca7261ab35  gcc/rust/ChangeLog
  71972a823341f4ee0b2af7347ef7a633  gcc/rust/Make-lang.in
  f3527e161e6e2827d299c1a928ebe1c6  gcc/rust/README.md
  27f492ab17f50d840e1e0fd32a89c84a  gcc/rust/ast/rust-ast-builder.cc
*************** fa22a966da9420728a72f8164b29aeef  gcc/ru
*** 7986,7992 ****
  ab4843ea68c29da6b2a1c9981b059e06  gcc/rust/ast/rust-ast-pointer-visitor.h
  9ab1d23308048adc03212cb5ea086d07  gcc/rust/ast/rust-ast-visitor.cc
  0adfcf6a63038808c3009e74ef1c6a39  gcc/rust/ast/rust-ast-visitor.h
! 1eb26fc80399f5048ea14268eba92770  gcc/rust/ast/rust-ast.cc
  4410fe00611edd66a36aeb28cb79ee1e  gcc/rust/ast/rust-ast.h
  47cbbb053e5e83cfcb63e85fe1777921  gcc/rust/ast/rust-builtin-ast-nodes.h
  6c128fd9e73db1e26ff7ddbc86f69722  gcc/rust/ast/rust-collect-lang-items.cc
--- 7986,7992 ----
  ab4843ea68c29da6b2a1c9981b059e06  gcc/rust/ast/rust-ast-pointer-visitor.h
  9ab1d23308048adc03212cb5ea086d07  gcc/rust/ast/rust-ast-visitor.cc
  0adfcf6a63038808c3009e74ef1c6a39  gcc/rust/ast/rust-ast-visitor.h
! b58176e45d4b9fb73b2f984b4d003508  gcc/rust/ast/rust-ast.cc
  4410fe00611edd66a36aeb28cb79ee1e  gcc/rust/ast/rust-ast.h
  47cbbb053e5e83cfcb63e85fe1777921  gcc/rust/ast/rust-builtin-ast-nodes.h
  6c128fd9e73db1e26ff7ddbc86f69722  gcc/rust/ast/rust-collect-lang-items.cc
*************** ae61b2953e90353ab3719e3f99633865  gcc/ru
*** 8011,8018 ****
  d422ca6fdef486f353c824585452e285  gcc/rust/ast/rust-macro.h
  277825a1ab6df255dbe079bb8560e311  gcc/rust/ast/rust-path.cc
  1a331eb0cd7eedec74fbb2ce3677449b  gcc/rust/ast/rust-path.h
! d9747e9282da6807a2e306f6c66c6766  gcc/rust/ast/rust-pattern.cc
! d8eee9961e4e8aa0be1ebd72b1210cce  gcc/rust/ast/rust-pattern.h
  9525a610723ce5d0d54bac5fe0c23c2b  gcc/rust/ast/rust-stmt.h
  bb6992ee39f25d0e4ec4867b2a979c8f  gcc/rust/ast/rust-type.h
  39774c8ec83393047e843c9b8dff6822  gcc/rust/backend/rust-builtins.cc
--- 8011,8018 ----
  d422ca6fdef486f353c824585452e285  gcc/rust/ast/rust-macro.h
  277825a1ab6df255dbe079bb8560e311  gcc/rust/ast/rust-path.cc
  1a331eb0cd7eedec74fbb2ce3677449b  gcc/rust/ast/rust-path.h
! aa85db7e311dbe19dc2be9abadd44aef  gcc/rust/ast/rust-pattern.cc
! 2d04accbb41ffdc781e42b2efb3876c2  gcc/rust/ast/rust-pattern.h
  9525a610723ce5d0d54bac5fe0c23c2b  gcc/rust/ast/rust-stmt.h
  bb6992ee39f25d0e4ec4867b2a979c8f  gcc/rust/ast/rust-type.h
  39774c8ec83393047e843c9b8dff6822  gcc/rust/backend/rust-builtins.cc
*************** e525943b8d7380cbc76915f9e460adab  gcc/ru
*** 8034,8045 ****
  ee0054c15512a93ccc6bec6718c95863  gcc/rust/backend/rust-compile-implitem.h
  89a46194ac8b4c2f2f2eb7c998a7fbf8  gcc/rust/backend/rust-compile-intrinsic.cc
  a1fb8689400958af8126ae9c477c873e  gcc/rust/backend/rust-compile-intrinsic.h
! baa1a06481456fc6c8d5809aa7185fc7  gcc/rust/backend/rust-compile-item.cc
  3ce37ad182e3bedbc0013ae3dcb6b0ed  gcc/rust/backend/rust-compile-item.h
! 47114ec5093e42104960f135079a112c  gcc/rust/backend/rust-compile-pattern.cc
  cd4b0541904d2e28f01b23b2a117508e  gcc/rust/backend/rust-compile-pattern.h
  cd711182d62e81ac9cb36e89d0ab5062  gcc/rust/backend/rust-compile-proc-macro.cc
! 01afcb5da0eaa135cbe24df78f4b7c05  gcc/rust/backend/rust-compile-resolve-path.cc
  a02df3439a425a492f39168431dbf58b  gcc/rust/backend/rust-compile-resolve-path.h
  1146a28a080b99e199ba9103e1629866  gcc/rust/backend/rust-compile-stmt.cc
  8d042d63efac54929399df3c7b8741f9  gcc/rust/backend/rust-compile-stmt.h
--- 8034,8045 ----
  ee0054c15512a93ccc6bec6718c95863  gcc/rust/backend/rust-compile-implitem.h
  89a46194ac8b4c2f2f2eb7c998a7fbf8  gcc/rust/backend/rust-compile-intrinsic.cc
  a1fb8689400958af8126ae9c477c873e  gcc/rust/backend/rust-compile-intrinsic.h
! 152f50ba0c40302e4fb664e6ec3cc8b7  gcc/rust/backend/rust-compile-item.cc
  3ce37ad182e3bedbc0013ae3dcb6b0ed  gcc/rust/backend/rust-compile-item.h
! 40d8c1abb204a6ee45b1f9058987aae6  gcc/rust/backend/rust-compile-pattern.cc
  cd4b0541904d2e28f01b23b2a117508e  gcc/rust/backend/rust-compile-pattern.h
  cd711182d62e81ac9cb36e89d0ab5062  gcc/rust/backend/rust-compile-proc-macro.cc
! f3bad9a1d05b0057c6e82c2a97f83897  gcc/rust/backend/rust-compile-resolve-path.cc
  a02df3439a425a492f39168431dbf58b  gcc/rust/backend/rust-compile-resolve-path.h
  1146a28a080b99e199ba9103e1629866  gcc/rust/backend/rust-compile-stmt.cc
  8d042d63efac54929399df3c7b8741f9  gcc/rust/backend/rust-compile-stmt.h
*************** b4d59b1df9f1d6e27671a9e166c77abb  gcc/ru
*** 8236,8242 ****
  18c3dfcdc8db737aabbd1ed231a6c8cc  gcc/rust/hir/rust-ast-lower-implitem.h
  b15eb997cb7fcfecc310d0ab4d8832e6  gcc/rust/hir/rust-ast-lower-item.cc
  4692f2513fc1cf935117a527388b3633  gcc/rust/hir/rust-ast-lower-item.h
! 0f8794a9a7d7165d65a1d95743508cea  gcc/rust/hir/rust-ast-lower-pattern.cc
  9ed55743496bcf0607042817cfa4b0d8  gcc/rust/hir/rust-ast-lower-pattern.h
  5b0f3b0dffc07b108851141d7b749598  gcc/rust/hir/rust-ast-lower-stmt.cc
  af09b97c0baeff87520d8face05b8f05  gcc/rust/hir/rust-ast-lower-stmt.h
--- 8236,8242 ----
  18c3dfcdc8db737aabbd1ed231a6c8cc  gcc/rust/hir/rust-ast-lower-implitem.h
  b15eb997cb7fcfecc310d0ab4d8832e6  gcc/rust/hir/rust-ast-lower-item.cc
  4692f2513fc1cf935117a527388b3633  gcc/rust/hir/rust-ast-lower-item.h
! fe874903e1b5971bcc912936191ff5b8  gcc/rust/hir/rust-ast-lower-pattern.cc
  9ed55743496bcf0607042817cfa4b0d8  gcc/rust/hir/rust-ast-lower-pattern.h
  5b0f3b0dffc07b108851141d7b749598  gcc/rust/hir/rust-ast-lower-stmt.cc
  af09b97c0baeff87520d8face05b8f05  gcc/rust/hir/rust-ast-lower-stmt.h
*************** f40fe76efdee3810473f09205ea63119  gcc/ru
*** 8264,8270 ****
  46af2c5116f73b3da4d0bc13d9cd86f8  gcc/rust/hir/tree/rust-hir-path.cc
  d1fbad563a9af986959aeb87f576564e  gcc/rust/hir/tree/rust-hir-path.h
  ee67550806e0bdf8bb66f8d3be82d6fa  gcc/rust/hir/tree/rust-hir-pattern-abstract.h
! 85de3c8aafd695543adab7460e9b1485  gcc/rust/hir/tree/rust-hir-pattern.h
  e55c4f7404915fb3515e09a7441125a5  gcc/rust/hir/tree/rust-hir-simple-path.h
  22283c03c1dc5ac012096d395c9414c2  gcc/rust/hir/tree/rust-hir-stmt.cc
  d231530a896626f20475091e1168963d  gcc/rust/hir/tree/rust-hir-stmt.h
--- 8264,8270 ----
  46af2c5116f73b3da4d0bc13d9cd86f8  gcc/rust/hir/tree/rust-hir-path.cc
  d1fbad563a9af986959aeb87f576564e  gcc/rust/hir/tree/rust-hir-path.h
  ee67550806e0bdf8bb66f8d3be82d6fa  gcc/rust/hir/tree/rust-hir-pattern-abstract.h
! d25cdaf5016eb8e6be29bca0e9c83fd1  gcc/rust/hir/tree/rust-hir-pattern.h
  e55c4f7404915fb3515e09a7441125a5  gcc/rust/hir/tree/rust-hir-simple-path.h
  22283c03c1dc5ac012096d395c9414c2  gcc/rust/hir/tree/rust-hir-stmt.cc
  d231530a896626f20475091e1168963d  gcc/rust/hir/tree/rust-hir-stmt.h
*************** ba332eda5c2e84ae8a3591891ae7adcd  gcc/ru
*** 8278,8284 ****
  a9ce4bb18277085ac0f36fce0ab7f87f  gcc/rust/hir/tree/rust-hir-visitable.h
  171168efa9bc4130608778778ee4464b  gcc/rust/hir/tree/rust-hir-visitor.cc
  a6e7147406b59b396b29ce709fc52f1a  gcc/rust/hir/tree/rust-hir-visitor.h
! 345be3f99a4576e50a17224fadf72641  gcc/rust/hir/tree/rust-hir.cc
  6ea149cdd32444b93f142193c19c3930  gcc/rust/hir/tree/rust-hir.h
  fa7c267c70f0094382b7b3df35e83412  gcc/rust/lang-specs.h
  e090436833a0ec80b591d0e2b8d0276b  gcc/rust/lang.opt
--- 8278,8284 ----
  a9ce4bb18277085ac0f36fce0ab7f87f  gcc/rust/hir/tree/rust-hir-visitable.h
  171168efa9bc4130608778778ee4464b  gcc/rust/hir/tree/rust-hir-visitor.cc
  a6e7147406b59b396b29ce709fc52f1a  gcc/rust/hir/tree/rust-hir-visitor.h
! 7fa0f9d3d6d0f9a6bfbebb2888f3a7b9  gcc/rust/hir/tree/rust-hir.cc
  6ea149cdd32444b93f142193c19c3930  gcc/rust/hir/tree/rust-hir.h
  fa7c267c70f0094382b7b3df35e83412  gcc/rust/lang-specs.h
  e090436833a0ec80b591d0e2b8d0276b  gcc/rust/lang.opt
*************** dff64547611254963c80197402f43560  gcc/ru
*** 8289,8296 ****
  1f730a66d38140f8e1c34d3ed31d8128  gcc/rust/lex/rust-token.cc
  8404a81273a40a4b226acc1d54ae58ff  gcc/rust/lex/rust-token.h
  fe40f8618a9f5a5f007bc1a81fe45d3a  gcc/rust/logo.png
! 5c936180bfa8209866029d2669648b7f  gcc/rust/metadata/rust-export-metadata.cc
! 12ec7837566ee621427ed56d94422509  gcc/rust/metadata/rust-export-metadata.h
  2edf1c3452ec2edc627904170818d7fe  gcc/rust/metadata/rust-extern-crate.cc
  998f5953d66b13c97f7488faa8c315ac  gcc/rust/metadata/rust-extern-crate.h
  3c95bac9fe222be525b70cdb0ef90efb  gcc/rust/metadata/rust-import-archive.cc
--- 8289,8296 ----
  1f730a66d38140f8e1c34d3ed31d8128  gcc/rust/lex/rust-token.cc
  8404a81273a40a4b226acc1d54ae58ff  gcc/rust/lex/rust-token.h
  fe40f8618a9f5a5f007bc1a81fe45d3a  gcc/rust/logo.png
! 0201b5c75305de75e57a4728b7a76c82  gcc/rust/metadata/rust-export-metadata.cc
! 712888ea7ffa6485470176793a92f710  gcc/rust/metadata/rust-export-metadata.h
  2edf1c3452ec2edc627904170818d7fe  gcc/rust/metadata/rust-extern-crate.cc
  998f5953d66b13c97f7488faa8c315ac  gcc/rust/metadata/rust-extern-crate.h
  3c95bac9fe222be525b70cdb0ef90efb  gcc/rust/metadata/rust-import-archive.cc
*************** dcbc600defe89f418c72fb56de980c97  gcc/ru
*** 8301,8307 ****
  d32fa6f6e6b4f85681679a48b9143b49  gcc/rust/parse/rust-parse-impl-lexer.cc
  512507c7858c53e9bcb25b431891ced3  gcc/rust/parse/rust-parse-impl-macro.cc
  eadcb6e38b643a9b344ba845b7eaa4b0  gcc/rust/parse/rust-parse-impl-proc-macro.cc
! 17a3390b956eeab511fe97aa6a2b8d7a  gcc/rust/parse/rust-parse-impl.h
  d60ac257492f0b2d13c8c305707dd04a  gcc/rust/parse/rust-parse.cc
  efd8c95f4749b7137731fe544b287e0f  gcc/rust/parse/rust-parse.h
  d5113906116ffd33fb4c45243a97fb67  gcc/rust/resolve/rust-ast-resolve.h
--- 8301,8307 ----
  d32fa6f6e6b4f85681679a48b9143b49  gcc/rust/parse/rust-parse-impl-lexer.cc
  512507c7858c53e9bcb25b431891ced3  gcc/rust/parse/rust-parse-impl-macro.cc
  eadcb6e38b643a9b344ba845b7eaa4b0  gcc/rust/parse/rust-parse-impl-proc-macro.cc
! 61a42c3aa4063198a39db384b12ece40  gcc/rust/parse/rust-parse-impl.h
  d60ac257492f0b2d13c8c305707dd04a  gcc/rust/parse/rust-parse.cc
  efd8c95f4749b7137731fe544b287e0f  gcc/rust/parse/rust-parse.h
  d5113906116ffd33fb4c45243a97fb67  gcc/rust/resolve/rust-ast-resolve.h
*************** b4a86f011c7581b26f6472b6153b1f91  gcc/ru
*** 8370,8380 ****
  288c2e01e024cba4622c46ac6c6f9bad  gcc/rust/typecheck/rust-hir-type-check-base.h
  3f733188e36db57e34d01019aad0aeac  gcc/rust/typecheck/rust-hir-type-check-enumitem.cc
  14b730fba367cec7b80f769e886344ae  gcc/rust/typecheck/rust-hir-type-check-enumitem.h
! be7eea248410183d9b45d1e08f41b0d8  gcc/rust/typecheck/rust-hir-type-check-expr.cc
  59f5cb0ba8dac0fa595b930d70f6a0b4  gcc/rust/typecheck/rust-hir-type-check-expr.h
! 64dc68dc126e127341e0bdb7532bc0ea  gcc/rust/typecheck/rust-hir-type-check-implitem.cc
  ebae3826def3f8d019935ea950afaf9a  gcc/rust/typecheck/rust-hir-type-check-implitem.h
! 4ee2c58b0cb3b561d48dd80827cc1dee  gcc/rust/typecheck/rust-hir-type-check-item.cc
  b884a7eb4628421bd0b7c31329258b8c  gcc/rust/typecheck/rust-hir-type-check-item.h
  b8c6c90683816b55dc0bc2918c29f55d  gcc/rust/typecheck/rust-hir-type-check-path.cc
  9efa4cb35a0e4bd16fcfb95dd433a6f2  gcc/rust/typecheck/rust-hir-type-check-pattern.cc
--- 8370,8380 ----
  288c2e01e024cba4622c46ac6c6f9bad  gcc/rust/typecheck/rust-hir-type-check-base.h
  3f733188e36db57e34d01019aad0aeac  gcc/rust/typecheck/rust-hir-type-check-enumitem.cc
  14b730fba367cec7b80f769e886344ae  gcc/rust/typecheck/rust-hir-type-check-enumitem.h
! f9b7edc0c817fba279425dbfa7a0152d  gcc/rust/typecheck/rust-hir-type-check-expr.cc
  59f5cb0ba8dac0fa595b930d70f6a0b4  gcc/rust/typecheck/rust-hir-type-check-expr.h
! fa3be1285c84aa33d870845618060158  gcc/rust/typecheck/rust-hir-type-check-implitem.cc
  ebae3826def3f8d019935ea950afaf9a  gcc/rust/typecheck/rust-hir-type-check-implitem.h
! 719df24a5ea498d9682927b961f8475e  gcc/rust/typecheck/rust-hir-type-check-item.cc
  b884a7eb4628421bd0b7c31329258b8c  gcc/rust/typecheck/rust-hir-type-check-item.h
  b8c6c90683816b55dc0bc2918c29f55d  gcc/rust/typecheck/rust-hir-type-check-path.cc
  9efa4cb35a0e4bd16fcfb95dd433a6f2  gcc/rust/typecheck/rust-hir-type-check-pattern.cc
*************** f442f3356acfa69e70087f4d0a915461  gcc/ru
*** 8383,8395 ****
  8cf233a69b1af8083328209d200778c1  gcc/rust/typecheck/rust-hir-type-check-stmt.h
  0817c84983af9fc42e486f3832232669  gcc/rust/typecheck/rust-hir-type-check-struct-field.h
  4e3e67d84938436a77dd3819b1f87ac0  gcc/rust/typecheck/rust-hir-type-check-struct.cc
! ad4a228ff786e57d9edad4e842dc67c7  gcc/rust/typecheck/rust-hir-type-check-type.cc
  4e713ea4973fa9fb07c655c889db01ce  gcc/rust/typecheck/rust-hir-type-check-type.h
! 3a0a56b08644b22c7118757461a09cae  gcc/rust/typecheck/rust-hir-type-check.cc
  56e01e94dbff3e8636e68e613618fec8  gcc/rust/typecheck/rust-hir-type-check.h
  185a6346f5cd7e9039f3676d268d8d30  gcc/rust/typecheck/rust-substitution-mapper.cc
  65ef317da67f9c85d5d6aa12236e4103  gcc/rust/typecheck/rust-substitution-mapper.h
! 35c8993da1ffcf389b72f8f4a230fac3  gcc/rust/typecheck/rust-type-util.cc
  ee1a2e23854267f83989c6a2b13e32e3  gcc/rust/typecheck/rust-type-util.h
  74fb93afc26056a5b925e229d16046d3  gcc/rust/typecheck/rust-typecheck-context.cc
  4fb5d79d75c6dfc974be45c8538b2175  gcc/rust/typecheck/rust-tyty-bounds.cc
--- 8383,8395 ----
  8cf233a69b1af8083328209d200778c1  gcc/rust/typecheck/rust-hir-type-check-stmt.h
  0817c84983af9fc42e486f3832232669  gcc/rust/typecheck/rust-hir-type-check-struct-field.h
  4e3e67d84938436a77dd3819b1f87ac0  gcc/rust/typecheck/rust-hir-type-check-struct.cc
! c8e53eb2634f35a9f5780a9d2416f5b9  gcc/rust/typecheck/rust-hir-type-check-type.cc
  4e713ea4973fa9fb07c655c889db01ce  gcc/rust/typecheck/rust-hir-type-check-type.h
! 3f44641c54627e8d86fc02391652b727  gcc/rust/typecheck/rust-hir-type-check.cc
  56e01e94dbff3e8636e68e613618fec8  gcc/rust/typecheck/rust-hir-type-check.h
  185a6346f5cd7e9039f3676d268d8d30  gcc/rust/typecheck/rust-substitution-mapper.cc
  65ef317da67f9c85d5d6aa12236e4103  gcc/rust/typecheck/rust-substitution-mapper.h
! 41e53f378644a8acfac586a54606327a  gcc/rust/typecheck/rust-type-util.cc
  ee1a2e23854267f83989c6a2b13e32e3  gcc/rust/typecheck/rust-type-util.h
  74fb93afc26056a5b925e229d16046d3  gcc/rust/typecheck/rust-typecheck-context.cc
  4fb5d79d75c6dfc974be45c8538b2175  gcc/rust/typecheck/rust-tyty-bounds.cc
*************** fe9bd81bf0e97e98a21e9e0787e7207a  gcc/ru
*** 8399,8414 ****
  a38838838003c6551067e8b34f582208  gcc/rust/typecheck/rust-tyty-region.h
  fd31bc7d5bef9c6b57e26c8c5434434e  gcc/rust/typecheck/rust-tyty-subst.cc
  54973ca4009bf6087ad1cacc97a3dc36  gcc/rust/typecheck/rust-tyty-subst.h
! c5f7447b073ad1ddccba1352fc544447  gcc/rust/typecheck/rust-tyty-util.cc
! 737d2f701f5c020c1cef24875c4630ae  gcc/rust/typecheck/rust-tyty-util.h
  fcb02130c7b685b134f835bf25092f50  gcc/rust/typecheck/rust-tyty-variance-analysis-private.h
  4b763a53685364f24c7281fe201c9658  gcc/rust/typecheck/rust-tyty-variance-analysis.cc
  d745c17e84fc1621534e477f38dac840  gcc/rust/typecheck/rust-tyty-variance-analysis.h
  6a4d86b2e8fd559a6bc9fa2fc8b1b2c5  gcc/rust/typecheck/rust-tyty-visitor.h
! 8b7e9c11596eea757897e57adc0637bf  gcc/rust/typecheck/rust-tyty.cc
! 7ae5c5a6d80451c3dbfbfc9bad5f9055  gcc/rust/typecheck/rust-tyty.h
! 347bfc0c453df120ae3b6bd4ec78a9eb  gcc/rust/typecheck/rust-unify.cc
! 18069389ad17eb0d4a120bf7dcaf286e  gcc/rust/typecheck/rust-unify.h
  e09d91fb613b21d220449fc5e5c591f2  gcc/rust/util/bi-map.h
  2293b9580441efb8471b45881435c279  gcc/rust/util/expected.h
  9f5807c51b22c3e03a9c8f4e9623e0ef  gcc/rust/util/fnv-hash.h
--- 8399,8414 ----
  a38838838003c6551067e8b34f582208  gcc/rust/typecheck/rust-tyty-region.h
  fd31bc7d5bef9c6b57e26c8c5434434e  gcc/rust/typecheck/rust-tyty-subst.cc
  54973ca4009bf6087ad1cacc97a3dc36  gcc/rust/typecheck/rust-tyty-subst.h
! 22d23ea46a1801e24200b3d68a1df71d  gcc/rust/typecheck/rust-tyty-util.cc
! c743acb12455fc912c1f74b82a45f3ae  gcc/rust/typecheck/rust-tyty-util.h
  fcb02130c7b685b134f835bf25092f50  gcc/rust/typecheck/rust-tyty-variance-analysis-private.h
  4b763a53685364f24c7281fe201c9658  gcc/rust/typecheck/rust-tyty-variance-analysis.cc
  d745c17e84fc1621534e477f38dac840  gcc/rust/typecheck/rust-tyty-variance-analysis.h
  6a4d86b2e8fd559a6bc9fa2fc8b1b2c5  gcc/rust/typecheck/rust-tyty-visitor.h
! 677618ebd1cee18cb26f455d75f254c2  gcc/rust/typecheck/rust-tyty.cc
! f5f745b5b895817a824c09866c807586  gcc/rust/typecheck/rust-tyty.h
! c44cccaca8d8503fbc6121665bdc0515  gcc/rust/typecheck/rust-unify.cc
! 242b34aa81a2b6f04486f34c9494a5dd  gcc/rust/typecheck/rust-unify.h
  e09d91fb613b21d220449fc5e5c591f2  gcc/rust/util/bi-map.h
  2293b9580441efb8471b45881435c279  gcc/rust/util/expected.h
  9f5807c51b22c3e03a9c8f4e9623e0ef  gcc/rust/util/fnv-hash.h
*************** e09d91fb613b21d220449fc5e5c591f2  gcc/ru
*** 8416,8424 ****
  5fab4ccaa5f132cbe9ca8f09047732ad  gcc/rust/util/optional.h
  28960566056dffb6dd86b0c3ad60bf39  gcc/rust/util/rust-abi.cc
  a85e112c6426c604dd9a3a9af712e53b  gcc/rust/util/rust-abi.h
! c49c4bab5705db22261b4bfac203372a  gcc/rust/util/rust-attribute-values.h
! a96160bd6595d514cfc812b45a59dacb  gcc/rust/util/rust-attributes.cc
! d0715dbc215b004eeeda32cecde13dd4  gcc/rust/util/rust-attributes.h
  bca452f773154b078653dfe7acf7df6d  gcc/rust/util/rust-base62.cc
  487f155c2b6c6e0bd786e45db927798e  gcc/rust/util/rust-base62.h
  52e606eb44d3f26e1fa4e3701bf1ffe8  gcc/rust/util/rust-buffered-queue.h
--- 8416,8424 ----
  5fab4ccaa5f132cbe9ca8f09047732ad  gcc/rust/util/optional.h
  28960566056dffb6dd86b0c3ad60bf39  gcc/rust/util/rust-abi.cc
  a85e112c6426c604dd9a3a9af712e53b  gcc/rust/util/rust-abi.h
! fbf60f73d5b5255baa1952468a4a3c04  gcc/rust/util/rust-attribute-values.h
! f07d8884ee5e61856176f83b384528e1  gcc/rust/util/rust-attributes.cc
! a2ab64046ea5754f5ad51f9f4788d4e4  gcc/rust/util/rust-attributes.h
  bca452f773154b078653dfe7acf7df6d  gcc/rust/util/rust-base62.cc
  487f155c2b6c6e0bd786e45db927798e  gcc/rust/util/rust-base62.h
  52e606eb44d3f26e1fa4e3701bf1ffe8  gcc/rust/util/rust-buffered-queue.h
*************** d276acba4372c6be86c88ab32a1a2e8b  gcc/ru
*** 8432,8439 ****
  312caaf1a11f85ba3561fcdc63801d54  gcc/rust/util/rust-edition.h
  7066a7ab173c77ab70f790914031570a  gcc/rust/util/rust-ggc.cc
  3232b843745603441d2d4e56e8c90abd  gcc/rust/util/rust-ggc.h
! 4ac3dc708bf421d1499e952f62377a3c  gcc/rust/util/rust-hir-map.cc
! a4737c9f24f28d26263a0aa5525aed09  gcc/rust/util/rust-hir-map.h
  88c8ae4d133ecd3a043fc12f4fe69091  gcc/rust/util/rust-identifier.h
  e19359a7d7b629c25d7bda5118df43da  gcc/rust/util/rust-inline-visitor.h
  c8834665fd10b27b0d346b0feb8e0c75  gcc/rust/util/rust-keyword-values.cc
--- 8432,8439 ----
  312caaf1a11f85ba3561fcdc63801d54  gcc/rust/util/rust-edition.h
  7066a7ab173c77ab70f790914031570a  gcc/rust/util/rust-ggc.cc
  3232b843745603441d2d4e56e8c90abd  gcc/rust/util/rust-ggc.h
! f1e54716aafdf7bcb4965774a7413845  gcc/rust/util/rust-hir-map.cc
! eb54f8a12b64f1998c472587b2a373ac  gcc/rust/util/rust-hir-map.h
  88c8ae4d133ecd3a043fc12f4fe69091  gcc/rust/util/rust-identifier.h
  e19359a7d7b629c25d7bda5118df43da  gcc/rust/util/rust-inline-visitor.h
  c8834665fd10b27b0d346b0feb8e0c75  gcc/rust/util/rust-keyword-values.cc
*************** fdc04e5af7ee387dce07c6ba9a99eaa8  gcc/se
*** 8486,8492 ****
  50d9999185408bcae454174489317b68  gcc/signop.h
  97a13c24fa48c474198b5767f228fd93  gcc/simple-diagnostic-path.cc
  4daee3acc61f789d9c4c04a27a5bb351  gcc/simple-diagnostic-path.h
! 69a29f59506f7264f438d7229bc2afa7  gcc/simplify-rtx.cc
  456e0937ae4b3a0f49fd44fb0d05eb52  gcc/sort.cc
  599fc125220850c86939202313a6f733  gcc/sparseset.cc
  430469e71b555502fe14de847bb52093  gcc/sparseset.h
--- 8486,8492 ----
  50d9999185408bcae454174489317b68  gcc/signop.h
  97a13c24fa48c474198b5767f228fd93  gcc/simple-diagnostic-path.cc
  4daee3acc61f789d9c4c04a27a5bb351  gcc/simple-diagnostic-path.h
! 13d3470af30c2489fa425acbb3efd296  gcc/simplify-rtx.cc
  456e0937ae4b3a0f49fd44fb0d05eb52  gcc/sort.cc
  599fc125220850c86939202313a6f733  gcc/sparseset.cc
  430469e71b555502fe14de847bb52093  gcc/sparseset.h
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8535,8546 ****
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
  84051f22ca8c9ee213931106395ac151  gcc/target-hooks-macros.h
  354306a484432bca2f94887455f25599  gcc/target-insns.def
! f917b1b792e38f03fb6b295105203e25  gcc/target.def
  5e326cfe9b9871c8077b30f9a44e6663  gcc/target.h
! 598920a18a05f11271f5dd4aa453e76a  gcc/targhooks.cc
! 96ddcc694ec42272d51a10664cd73f89  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 9510464704879b39693a6062808fcb9a  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8535,8546 ----
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
  84051f22ca8c9ee213931106395ac151  gcc/target-hooks-macros.h
  354306a484432bca2f94887455f25599  gcc/target-insns.def
! 76894c1776b009491353fcca183f34cf  gcc/target.def
  5e326cfe9b9871c8077b30f9a44e6663  gcc/target.h
! b3ba747676feafec77aa6befa2dec6f0  gcc/targhooks.cc
! 94a98d77cef80b0f949fc6d206067e2e  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 4f6856565b96be3f37658c2bf3945451  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** c4e5247a7ee4e73d4190e5abea3941e0  gcc/te
*** 17784,17790 ****
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
  65128b17436f6406d9e224257030e000  gcc/testsuite/c-c++-common/asan/pr59063-1.c
! 71cab99b55f359571fa3f6adc89dbc61  gcc/testsuite/c-c++-common/asan/pr59063-2.c
  31c558f06954a14ead49eeebe130dd9a  gcc/testsuite/c-c++-common/asan/pr61530.c
  36a8e4bdcb9cdd4c57029e7a7c755fde  gcc/testsuite/c-c++-common/asan/pr62089.c
  10127067cac44d34f08d701d26036156  gcc/testsuite/c-c++-common/asan/pr62140-1.c
--- 17784,17790 ----
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
  65128b17436f6406d9e224257030e000  gcc/testsuite/c-c++-common/asan/pr59063-1.c
! 30d8a7a719d4b1e3175571b5106dd7dd  gcc/testsuite/c-c++-common/asan/pr59063-2.c
  31c558f06954a14ead49eeebe130dd9a  gcc/testsuite/c-c++-common/asan/pr61530.c
  36a8e4bdcb9cdd4c57029e7a7c755fde  gcc/testsuite/c-c++-common/asan/pr62089.c
  10127067cac44d34f08d701d26036156  gcc/testsuite/c-c++-common/asan/pr62140-1.c
*************** a2cd1716ba4f647ad86a615b0dd86f7e  gcc/te
*** 18349,18356 ****
  3dd709cf9053a917159f758ba74a5c5b  gcc/testsuite/c-c++-common/goacc/builtin-goacc-parlevel-id-size.c
  f1fea57305dfe837e7453401fd24f606  gcc/testsuite/c-c++-common/goacc/cache-1.c
  79cf4f09115a23d38daa740ca4010bbb  gcc/testsuite/c-c++-common/goacc/cache-2.c
! d520e956ceb1443b8b3d0b100a48fa63  gcc/testsuite/c-c++-common/goacc/cache-3-1.c
! 36f9abb3ac94c762f04511594ed7b548  gcc/testsuite/c-c++-common/goacc/cache-3-2.c
  9daa29c22cc0660528399f7d7828729c  gcc/testsuite/c-c++-common/goacc/classify-kernels-parloops.c
  efb01912a3b48dfbd482291a92ff6dd6  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized-parloops.c
  9631d05943a9db2055f3c8771eef6532  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c
--- 18349,18356 ----
  3dd709cf9053a917159f758ba74a5c5b  gcc/testsuite/c-c++-common/goacc/builtin-goacc-parlevel-id-size.c
  f1fea57305dfe837e7453401fd24f606  gcc/testsuite/c-c++-common/goacc/cache-1.c
  79cf4f09115a23d38daa740ca4010bbb  gcc/testsuite/c-c++-common/goacc/cache-2.c
! c765bfd7ad3887c5802a26343acfafb2  gcc/testsuite/c-c++-common/goacc/cache-3-1.c
! f4766d490acf4f8b248f9cc49f0aff02  gcc/testsuite/c-c++-common/goacc/cache-3-2.c
  9daa29c22cc0660528399f7d7828729c  gcc/testsuite/c-c++-common/goacc/classify-kernels-parloops.c
  efb01912a3b48dfbd482291a92ff6dd6  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized-parloops.c
  9631d05943a9db2055f3c8771eef6532  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c
*************** d6e804e09d520d0511d19e5f86e70300  gcc/te
*** 18368,18376 ****
  1526cba07462c6f8367d99a1c22a1250  gcc/testsuite/c-c++-common/goacc/combined-reduction.c
  6ff2b7486e948a4634adb071ea7906c0  gcc/testsuite/c-c++-common/goacc/data-1.c
  d5d5af24e4793fb1e9298a4ba6060015  gcc/testsuite/c-c++-common/goacc/data-2.c
! 8303b2d602314b7af0f96f923e175484  gcc/testsuite/c-c++-common/goacc/data-clause-1.c
! df0c5b2a3f8fd74e59ef06f3c576902b  gcc/testsuite/c-c++-common/goacc/data-clause-2.c
! 60188ceaaaf18fbba1956aef5d80a45a  gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c
  df5a4b39ef7dcc3e7884ba93f68ac8fc  gcc/testsuite/c-c++-common/goacc/declare-1.c
  5daae4226662867648597d7cf7b262d2  gcc/testsuite/c-c++-common/goacc/declare-2.c
  fbee36d1c4d6ed4bfdee66194ad75772  gcc/testsuite/c-c++-common/goacc/declare-pr90861.c
--- 18368,18376 ----
  1526cba07462c6f8367d99a1c22a1250  gcc/testsuite/c-c++-common/goacc/combined-reduction.c
  6ff2b7486e948a4634adb071ea7906c0  gcc/testsuite/c-c++-common/goacc/data-1.c
  d5d5af24e4793fb1e9298a4ba6060015  gcc/testsuite/c-c++-common/goacc/data-2.c
! 45e4cca63cc1d17620ef83df0e9e4a00  gcc/testsuite/c-c++-common/goacc/data-clause-1.c
! b57d44bf58cfc49ec32416df06e99da4  gcc/testsuite/c-c++-common/goacc/data-clause-2.c
! 26c15603b490792507c794e5a69053bd  gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c
  df5a4b39ef7dcc3e7884ba93f68ac8fc  gcc/testsuite/c-c++-common/goacc/declare-1.c
  5daae4226662867648597d7cf7b262d2  gcc/testsuite/c-c++-common/goacc/declare-2.c
  fbee36d1c4d6ed4bfdee66194ad75772  gcc/testsuite/c-c++-common/goacc/declare-pr90861.c
*************** be8b041248798e31b7644ec272413df0  gcc/te
*** 18459,18465 ****
  943121f9af2ecdb53cd96ba15a3c0258  gcc/testsuite/c-c++-common/goacc/loop-private-1.c
  3af11165090f88ea453d1233129e0e60  gcc/testsuite/c-c++-common/goacc/loop-shape.c
  ed327a55641b5a349bcdb14751857aaf  gcc/testsuite/c-c++-common/goacc/mdc-1.c
! 3bf6e0931241e00ebcd408e0098c10fe  gcc/testsuite/c-c++-common/goacc/mdc-2.c
  ca52cdb1b4cfd4d80d0632de43a8acb1  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-kernels.c
  833ecd7a5770c9f4041e327c2d324aac  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-parallel.c
  f6a8c73e3913a7f2cb2ece39276bbe11  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-routine.c
--- 18459,18465 ----
  943121f9af2ecdb53cd96ba15a3c0258  gcc/testsuite/c-c++-common/goacc/loop-private-1.c
  3af11165090f88ea453d1233129e0e60  gcc/testsuite/c-c++-common/goacc/loop-shape.c
  ed327a55641b5a349bcdb14751857aaf  gcc/testsuite/c-c++-common/goacc/mdc-1.c
! fa0d2d3dcd5f4db4c1134fd92d81cef9  gcc/testsuite/c-c++-common/goacc/mdc-2.c
  ca52cdb1b4cfd4d80d0632de43a8acb1  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-kernels.c
  833ecd7a5770c9f4041e327c2d324aac  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-parallel.c
  f6a8c73e3913a7f2cb2ece39276bbe11  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-routine.c
*************** e720097f4b123b43a3c8b5618464d511  gcc/te
*** 18498,18504 ****
  a36d137c61c91eebafe06b69005ed065  gcc/testsuite/c-c++-common/goacc/privatization-1-compute.c
  d901676912c84b1538b682b98df630ac  gcc/testsuite/c-c++-common/goacc/privatization-1-routine_gang-loop.c
  fdeb18440623ddebb1218a2b4b499f03  gcc/testsuite/c-c++-common/goacc/privatization-1-routine_gang.c
! 6fc231d62356d29577321237adcdd629  gcc/testsuite/c-c++-common/goacc/readonly-1.c
  4331391e656c6687b80ca7ee79b21e73  gcc/testsuite/c-c++-common/goacc/reduction-1.c
  092e43f68f7f9d80d1358ca7dc48cb59  gcc/testsuite/c-c++-common/goacc/reduction-2.c
  5ff7f03babb3159e96873f29fbebc584  gcc/testsuite/c-c++-common/goacc/reduction-3.c
--- 18498,18504 ----
  a36d137c61c91eebafe06b69005ed065  gcc/testsuite/c-c++-common/goacc/privatization-1-compute.c
  d901676912c84b1538b682b98df630ac  gcc/testsuite/c-c++-common/goacc/privatization-1-routine_gang-loop.c
  fdeb18440623ddebb1218a2b4b499f03  gcc/testsuite/c-c++-common/goacc/privatization-1-routine_gang.c
! 1dfb1f769a2f9018787488996cdc4411  gcc/testsuite/c-c++-common/goacc/readonly-1.c
  4331391e656c6687b80ca7ee79b21e73  gcc/testsuite/c-c++-common/goacc/reduction-1.c
  092e43f68f7f9d80d1358ca7dc48cb59  gcc/testsuite/c-c++-common/goacc/reduction-2.c
  5ff7f03babb3159e96873f29fbebc584  gcc/testsuite/c-c++-common/goacc/reduction-3.c
*************** d8f3b317a2367cb4501c5836ef9b0229  gcc/te
*** 18548,18554 ****
  b0bdd3295dc12d75c6de7a29c7b0eab9  gcc/testsuite/c-c++-common/gomp/adjust-args-5.c
  43cf0fb5b5dbd082ec114c90b24fc30d  gcc/testsuite/c-c++-common/gomp/adjust-args-6.c
  5cf6813317fa5ef169d543e63d45b26a  gcc/testsuite/c-c++-common/gomp/affinity-1.c
! d463344100a0478350affbdc29db0366  gcc/testsuite/c-c++-common/gomp/affinity-2.c
  2e8a942227251c348ea0e35322d0512a  gcc/testsuite/c-c++-common/gomp/affinity-3.c
  614a49f3f358c35cb4a5b15ce97da263  gcc/testsuite/c-c++-common/gomp/affinity-4.c
  9111959cc520a4e29a99b5bb933a762d  gcc/testsuite/c-c++-common/gomp/affinity-5.c
--- 18548,18554 ----
  b0bdd3295dc12d75c6de7a29c7b0eab9  gcc/testsuite/c-c++-common/gomp/adjust-args-5.c
  43cf0fb5b5dbd082ec114c90b24fc30d  gcc/testsuite/c-c++-common/gomp/adjust-args-6.c
  5cf6813317fa5ef169d543e63d45b26a  gcc/testsuite/c-c++-common/gomp/affinity-1.c
! 02e7c1073f46e6d8b4e8e267c462c39f  gcc/testsuite/c-c++-common/gomp/affinity-2.c
  2e8a942227251c348ea0e35322d0512a  gcc/testsuite/c-c++-common/gomp/affinity-3.c
  614a49f3f358c35cb4a5b15ce97da263  gcc/testsuite/c-c++-common/gomp/affinity-4.c
  9111959cc520a4e29a99b5bb933a762d  gcc/testsuite/c-c++-common/gomp/affinity-5.c
*************** fd6a6a087da70dbd39bdfa12e6a8c7cd  gcc/te
*** 18570,18576 ****
  a844bf6b78ba9a29d15147a46c7cf098  gcc/testsuite/c-c++-common/gomp/allocate-19.c
  67afa8e9a323740282252dc23a7b959a  gcc/testsuite/c-c++-common/gomp/allocate-2.c
  9caab435288f915f6d7fe59b84b443c9  gcc/testsuite/c-c++-common/gomp/allocate-3.c
! b5cc36629f2af04781e8aa71d6a7ae0b  gcc/testsuite/c-c++-common/gomp/allocate-4.c
  c3809265d6de98b36dec2fb830b674d2  gcc/testsuite/c-c++-common/gomp/allocate-5.c
  56edad2f1d021dddfe817eecd7e376e2  gcc/testsuite/c-c++-common/gomp/allocate-6.c
  97a0a45a85b1c1938d08e940a662893f  gcc/testsuite/c-c++-common/gomp/allocate-7.c
--- 18570,18576 ----
  a844bf6b78ba9a29d15147a46c7cf098  gcc/testsuite/c-c++-common/gomp/allocate-19.c
  67afa8e9a323740282252dc23a7b959a  gcc/testsuite/c-c++-common/gomp/allocate-2.c
  9caab435288f915f6d7fe59b84b443c9  gcc/testsuite/c-c++-common/gomp/allocate-3.c
! 4d623f98d85005df0ec9d97df176d9c4  gcc/testsuite/c-c++-common/gomp/allocate-4.c
  c3809265d6de98b36dec2fb830b674d2  gcc/testsuite/c-c++-common/gomp/allocate-5.c
  56edad2f1d021dddfe817eecd7e376e2  gcc/testsuite/c-c++-common/gomp/allocate-6.c
  97a0a45a85b1c1938d08e940a662893f  gcc/testsuite/c-c++-common/gomp/allocate-7.c
*************** aa6f51f0ce9ba32480d8b3eddf2e9835  gcc/te
*** 18662,18668 ****
  ee83cd40d850bc850078e5cf2123b989  gcc/testsuite/c-c++-common/gomp/clause-dups-1.c
  2d100a7efc7458044156ec5ce1b62589  gcc/testsuite/c-c++-common/gomp/clauses-1.c
  d5ffe3929242394b820f074d90b6869f  gcc/testsuite/c-c++-common/gomp/clauses-2.c
! 7c761956c0dbf5422d50dece221c9a7f  gcc/testsuite/c-c++-common/gomp/clauses-3.c
  8d9ef02ce9840a58a8c64026e4df30b2  gcc/testsuite/c-c++-common/gomp/clauses-4.c
  4495a5b525e167ab62035c686fc8d83b  gcc/testsuite/c-c++-common/gomp/clauses-5.c
  fb5ac32eda4e938a1684263a6f7ccfa9  gcc/testsuite/c-c++-common/gomp/clauses-6.c
--- 18662,18668 ----
  ee83cd40d850bc850078e5cf2123b989  gcc/testsuite/c-c++-common/gomp/clause-dups-1.c
  2d100a7efc7458044156ec5ce1b62589  gcc/testsuite/c-c++-common/gomp/clauses-1.c
  d5ffe3929242394b820f074d90b6869f  gcc/testsuite/c-c++-common/gomp/clauses-2.c
! 45fc51cf372958636efd308a8d4b048c  gcc/testsuite/c-c++-common/gomp/clauses-3.c
  8d9ef02ce9840a58a8c64026e4df30b2  gcc/testsuite/c-c++-common/gomp/clauses-4.c
  4495a5b525e167ab62035c686fc8d83b  gcc/testsuite/c-c++-common/gomp/clauses-5.c
  fb5ac32eda4e938a1684263a6f7ccfa9  gcc/testsuite/c-c++-common/gomp/clauses-6.c
*************** c572ac0bc0904c15b451df6870cc393d  gcc/te
*** 18674,18680 ****
  cb01db9e31422d2aeabb9b538ed127e4  gcc/testsuite/c-c++-common/gomp/declare-mapper-10.c
  5c9c560c086262d32a4f6b30aee2d54b  gcc/testsuite/c-c++-common/gomp/declare-mapper-11.c
  9ff51a41887aad9526944e993a5a0a19  gcc/testsuite/c-c++-common/gomp/declare-mapper-12.c
! c171c8a32c8d1c1f3a3851365cbb0405  gcc/testsuite/c-c++-common/gomp/declare-mapper-3.c
  2619b0487cae48530ad103fbc2632fc3  gcc/testsuite/c-c++-common/gomp/declare-mapper-4.c
  230e3c87df45ddf84188f7b5a5a4bb0e  gcc/testsuite/c-c++-common/gomp/declare-mapper-5.c
  dcd1e9ab9770a159f8a1f17c76bd1b03  gcc/testsuite/c-c++-common/gomp/declare-mapper-6.c
--- 18674,18680 ----
  cb01db9e31422d2aeabb9b538ed127e4  gcc/testsuite/c-c++-common/gomp/declare-mapper-10.c
  5c9c560c086262d32a4f6b30aee2d54b  gcc/testsuite/c-c++-common/gomp/declare-mapper-11.c
  9ff51a41887aad9526944e993a5a0a19  gcc/testsuite/c-c++-common/gomp/declare-mapper-12.c
! 71ef2f37cadeab4baf5501bbdd2241f4  gcc/testsuite/c-c++-common/gomp/declare-mapper-3.c
  2619b0487cae48530ad103fbc2632fc3  gcc/testsuite/c-c++-common/gomp/declare-mapper-4.c
  230e3c87df45ddf84188f7b5a5a4bb0e  gcc/testsuite/c-c++-common/gomp/declare-mapper-5.c
  dcd1e9ab9770a159f8a1f17c76bd1b03  gcc/testsuite/c-c++-common/gomp/declare-mapper-6.c
*************** cfe9ce2bee6dfde91d715b2c34a5a896  gcc/te
*** 18720,18738 ****
  2360d693f87ad48a1fb38a5739f3af5e  gcc/testsuite/c-c++-common/gomp/defaultmap-4.c
  8ed0886cc8f102288f0fc679b04d8c13  gcc/testsuite/c-c++-common/gomp/defaultmap-5.c
  e89b36d077224fe9d4b4e2b0fb8a6240  gcc/testsuite/c-c++-common/gomp/defaultmap-6.c
! 066630abcddd44ac2372567273262326  gcc/testsuite/c-c++-common/gomp/depend-1.c
! 4a1085d5478dc95bc2936ae4c0e4c7fd  gcc/testsuite/c-c++-common/gomp/depend-2.c
! 6252c7733cc10415438eac4ecc8f3741  gcc/testsuite/c-c++-common/gomp/depend-3.c
! 685c37a890fe3f63baeef038dca54d42  gcc/testsuite/c-c++-common/gomp/depend-4.c
! 90e9e15dcfe2bb1bc2d07cc4f05b3bb5  gcc/testsuite/c-c++-common/gomp/depend-5.c
! 96ee24acfb0236cf20bc30472bd80148  gcc/testsuite/c-c++-common/gomp/depend-6.c
  4a7e69295838b1320de92a6b5208a196  gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c
  3ec0d6b08677a898631647adbce575dc  gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c
  4d7c198a6e5377f63eba24e105bd8430  gcc/testsuite/c-c++-common/gomp/depobj-1.c
  b0614882466e367a20795bf8a724df2a  gcc/testsuite/c-c++-common/gomp/depobj-2.c
  2a1fa5f3e1fe8821515948afb685410b  gcc/testsuite/c-c++-common/gomp/depobj-3.c
  b7a7c883420d18bb6bc689577f080949  gcc/testsuite/c-c++-common/gomp/directive-1.c
! 9668dafdb6fe222d3cf39e637e5377a8  gcc/testsuite/c-c++-common/gomp/dispatch-1.c
  ae148a523d43d09e8a93c84e90b05c6c  gcc/testsuite/c-c++-common/gomp/dispatch-10.c
  981f90796aa7d4ddd9bf1feb2b6708bd  gcc/testsuite/c-c++-common/gomp/dispatch-11.c
  e4748656b58f157334ae92549959c36f  gcc/testsuite/c-c++-common/gomp/dispatch-12.c
--- 18720,18747 ----
  2360d693f87ad48a1fb38a5739f3af5e  gcc/testsuite/c-c++-common/gomp/defaultmap-4.c
  8ed0886cc8f102288f0fc679b04d8c13  gcc/testsuite/c-c++-common/gomp/defaultmap-5.c
  e89b36d077224fe9d4b4e2b0fb8a6240  gcc/testsuite/c-c++-common/gomp/defaultmap-6.c
! ad82484ae3db61dc57577a2ef69f594f  gcc/testsuite/c-c++-common/gomp/delim-declare-variant-1.c
! b64e7998243f5f8554b4619141869744  gcc/testsuite/c-c++-common/gomp/delim-declare-variant-2.c
! 6422d9620980bf522c8ed047da96dea8  gcc/testsuite/c-c++-common/gomp/delim-declare-variant-3.c
! db2e3139983be94ec49f7df82bc52abe  gcc/testsuite/c-c++-common/gomp/delim-declare-variant-4.c
! 0a575b9d1f47f689bbff139344dcebb6  gcc/testsuite/c-c++-common/gomp/delim-declare-variant-5.c
! dc59de1726c9c568ff4dd8a7b44c2292  gcc/testsuite/c-c++-common/gomp/delim-declare-variant-6.c
! 0217fdee8fc967ffe48472ff4392acfc  gcc/testsuite/c-c++-common/gomp/delim-declare-variant-7.c
! ae6293030dff77f1ce8fa61579f6de6e  gcc/testsuite/c-c++-common/gomp/delim-declare-variant-8.c
! cc441d2ec9bf665e8ec39a8eccd34398  gcc/testsuite/c-c++-common/gomp/delim-declare-variant-9.c
! 96b54f1e36a96b3caa9d606586774bce  gcc/testsuite/c-c++-common/gomp/depend-1.c
! 2c2d88f2098339c4becca3899135982f  gcc/testsuite/c-c++-common/gomp/depend-2.c
! 2a22d1d78ad123967e1e22b80f35281b  gcc/testsuite/c-c++-common/gomp/depend-3.c
! fff73b9cb320e504bdddc09ac0026be4  gcc/testsuite/c-c++-common/gomp/depend-4.c
! a1a97cef83578cd658a8a025db89e271  gcc/testsuite/c-c++-common/gomp/depend-5.c
! 23c22db41ea3bb7ef9861240bdea36af  gcc/testsuite/c-c++-common/gomp/depend-6.c
  4a7e69295838b1320de92a6b5208a196  gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c
  3ec0d6b08677a898631647adbce575dc  gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c
  4d7c198a6e5377f63eba24e105bd8430  gcc/testsuite/c-c++-common/gomp/depobj-1.c
  b0614882466e367a20795bf8a724df2a  gcc/testsuite/c-c++-common/gomp/depobj-2.c
  2a1fa5f3e1fe8821515948afb685410b  gcc/testsuite/c-c++-common/gomp/depobj-3.c
  b7a7c883420d18bb6bc689577f080949  gcc/testsuite/c-c++-common/gomp/directive-1.c
! cc57a55c5ffadf14a7fc057b08775c61  gcc/testsuite/c-c++-common/gomp/dispatch-1.c
  ae148a523d43d09e8a93c84e90b05c6c  gcc/testsuite/c-c++-common/gomp/dispatch-10.c
  981f90796aa7d4ddd9bf1feb2b6708bd  gcc/testsuite/c-c++-common/gomp/dispatch-11.c
  e4748656b58f157334ae92549959c36f  gcc/testsuite/c-c++-common/gomp/dispatch-12.c
*************** d28fa472d0ed4264e8bf9d4545e77ae5  gcc/te
*** 18806,18823 ****
  98a2a47c678a83b550ad02b4645cb7b0  gcc/testsuite/c-c++-common/gomp/loop-2.c
  9592f2cca3c5fd7c0e8fd9da7cb178d1  gcc/testsuite/c-c++-common/gomp/loop-3.c
  96f80819d26df95994ad31e806db9ad9  gcc/testsuite/c-c++-common/gomp/loop-4.c
! f57f51983db80a2fd1be027e87767d44  gcc/testsuite/c-c++-common/gomp/loop-5.c
  3e772c5747e617d6611630ea849e25ab  gcc/testsuite/c-c++-common/gomp/loop-6.c
  576203a21b3e04e83b9327037d1c1809  gcc/testsuite/c-c++-common/gomp/loop-7.c
  bbbe92047177151542b6ff825d52c4e4  gcc/testsuite/c-c++-common/gomp/loop-8.c
  67e2138fdf955d87a5868fe981258015  gcc/testsuite/c-c++-common/gomp/loop-9.c
! 6b8389c7145e0ad858f6b5fe2cab60e4  gcc/testsuite/c-c++-common/gomp/map-1.c
! 6ec7216703861e0dcd0752796794b32b  gcc/testsuite/c-c++-common/gomp/map-2.c
  84b32011b7cc61bdab96dc5182d6fa16  gcc/testsuite/c-c++-common/gomp/map-3.c
! f26a9793012d174bb469a5a2bbe88ed8  gcc/testsuite/c-c++-common/gomp/map-4.c
  277cedbcd2effa8734f83ed409ddc325  gcc/testsuite/c-c++-common/gomp/map-5.c
  35c2af5e502ebab7ba925e704838b547  gcc/testsuite/c-c++-common/gomp/map-6.c
! b8e110ebbec9c6db80b28e633ae2f67e  gcc/testsuite/c-c++-common/gomp/map-7.c
  44f82c91ea0443cfcfe48ff2e2ad3f49  gcc/testsuite/c-c++-common/gomp/map-8.c
  3e29caf558ff43e0252f11af669e8da4  gcc/testsuite/c-c++-common/gomp/map-9.c
  69ff77fd1a974b1db18e0d998cb08b86  gcc/testsuite/c-c++-common/gomp/map-incomplete-type.c
--- 18815,18832 ----
  98a2a47c678a83b550ad02b4645cb7b0  gcc/testsuite/c-c++-common/gomp/loop-2.c
  9592f2cca3c5fd7c0e8fd9da7cb178d1  gcc/testsuite/c-c++-common/gomp/loop-3.c
  96f80819d26df95994ad31e806db9ad9  gcc/testsuite/c-c++-common/gomp/loop-4.c
! a3272b452f6fd0011c49180d75e7b205  gcc/testsuite/c-c++-common/gomp/loop-5.c
  3e772c5747e617d6611630ea849e25ab  gcc/testsuite/c-c++-common/gomp/loop-6.c
  576203a21b3e04e83b9327037d1c1809  gcc/testsuite/c-c++-common/gomp/loop-7.c
  bbbe92047177151542b6ff825d52c4e4  gcc/testsuite/c-c++-common/gomp/loop-8.c
  67e2138fdf955d87a5868fe981258015  gcc/testsuite/c-c++-common/gomp/loop-9.c
! 05c63339ca989589076de2520aa21fc1  gcc/testsuite/c-c++-common/gomp/map-1.c
! c344f817350996173949d094733f67be  gcc/testsuite/c-c++-common/gomp/map-2.c
  84b32011b7cc61bdab96dc5182d6fa16  gcc/testsuite/c-c++-common/gomp/map-3.c
! db038278199fc73220fb4647e0497ea0  gcc/testsuite/c-c++-common/gomp/map-4.c
  277cedbcd2effa8734f83ed409ddc325  gcc/testsuite/c-c++-common/gomp/map-5.c
  35c2af5e502ebab7ba925e704838b547  gcc/testsuite/c-c++-common/gomp/map-6.c
! 2692678faa474fcf195a2428df6fb5e5  gcc/testsuite/c-c++-common/gomp/map-7.c
  44f82c91ea0443cfcfe48ff2e2ad3f49  gcc/testsuite/c-c++-common/gomp/map-8.c
  3e29caf558ff43e0252f11af669e8da4  gcc/testsuite/c-c++-common/gomp/map-9.c
  69ff77fd1a974b1db18e0d998cb08b86  gcc/testsuite/c-c++-common/gomp/map-incomplete-type.c
*************** ef86bb29dfbea0543e8ca02ce440c823  gcc/te
*** 18868,18880 ****
  5e682cf26c41baf2449ab35ba5792ab9  gcc/testsuite/c-c++-common/gomp/ordered-4.c
  6de5cc795b03e66607152e78a7e74075  gcc/testsuite/c-c++-common/gomp/ordered-5.c
  7c7abae5700e726f7de5bd56574429f5  gcc/testsuite/c-c++-common/gomp/pr100450.c
! 6d544b90b3bb63262065e084cddafc04  gcc/testsuite/c-c++-common/gomp/pr100902-1.c
  345ac275dfe65e2e8ba683d2c389ebc3  gcc/testsuite/c-c++-common/gomp/pr101535-1.c
  b3c3fe5a4ecc31231711cb240274d62c  gcc/testsuite/c-c++-common/gomp/pr101535-2.c
  5d5843e74a197943e19c270c43a913e1  gcc/testsuite/c-c++-common/gomp/pr102431.c
  6c331d01569cfa98850571463b5b3cc7  gcc/testsuite/c-c++-common/gomp/pr102432.c
  ef8ec3320ae234be32fcdfc5379eaca2  gcc/testsuite/c-c++-common/gomp/pr102640.c
! 09ab6c8f069be5f939d30b02bdac7a35  gcc/testsuite/c-c++-common/gomp/pr103642.c
  0e59133481fb703cb575967bddb0ce8e  gcc/testsuite/c-c++-common/gomp/pr103705.c
  0cff3c6576e6db18b71f25c5da8bcbb0  gcc/testsuite/c-c++-common/gomp/pr104968.c
  20a09a854dcd3ce8ca6f7a9db64d35cc  gcc/testsuite/c-c++-common/gomp/pr106836.c
--- 18877,18889 ----
  5e682cf26c41baf2449ab35ba5792ab9  gcc/testsuite/c-c++-common/gomp/ordered-4.c
  6de5cc795b03e66607152e78a7e74075  gcc/testsuite/c-c++-common/gomp/ordered-5.c
  7c7abae5700e726f7de5bd56574429f5  gcc/testsuite/c-c++-common/gomp/pr100450.c
! d074232c71f3c9bde5cf2fdec94c73bd  gcc/testsuite/c-c++-common/gomp/pr100902-1.c
  345ac275dfe65e2e8ba683d2c389ebc3  gcc/testsuite/c-c++-common/gomp/pr101535-1.c
  b3c3fe5a4ecc31231711cb240274d62c  gcc/testsuite/c-c++-common/gomp/pr101535-2.c
  5d5843e74a197943e19c270c43a913e1  gcc/testsuite/c-c++-common/gomp/pr102431.c
  6c331d01569cfa98850571463b5b3cc7  gcc/testsuite/c-c++-common/gomp/pr102432.c
  ef8ec3320ae234be32fcdfc5379eaca2  gcc/testsuite/c-c++-common/gomp/pr102640.c
! adad7bd5c50995330c12e8103e6790a5  gcc/testsuite/c-c++-common/gomp/pr103642.c
  0e59133481fb703cb575967bddb0ce8e  gcc/testsuite/c-c++-common/gomp/pr103705.c
  0cff3c6576e6db18b71f25c5da8bcbb0  gcc/testsuite/c-c++-common/gomp/pr104968.c
  20a09a854dcd3ce8ca6f7a9db64d35cc  gcc/testsuite/c-c++-common/gomp/pr106836.c
*************** e8f7b694ebd3603789b6992bc816222d  gcc/te
*** 18886,18892 ****
  d29126c43ce63e6c41ed6130742b15e2  gcc/testsuite/c-c++-common/gomp/pr118965-1.c
  424bcc14d1a0bf87f576aafc485996e9  gcc/testsuite/c-c++-common/gomp/pr118965-2.c
  c83ce004951a9a0719e190f7457302c7  gcc/testsuite/c-c++-common/gomp/pr119000.c
! 1afccb27121ecba72d9c1958db9e64a3  gcc/testsuite/c-c++-common/gomp/pr120180-1.c
  46f67781e5603b2bc3c978d0c4f81881  gcc/testsuite/c-c++-common/gomp/pr120180-2.c
  5a0fc856eddf5869c1607a51a511b91b  gcc/testsuite/c-c++-common/gomp/pr121452-1.c
  25357ab83549c772c7f308537e5445cf  gcc/testsuite/c-c++-common/gomp/pr121452-2.c
--- 18895,18901 ----
  d29126c43ce63e6c41ed6130742b15e2  gcc/testsuite/c-c++-common/gomp/pr118965-1.c
  424bcc14d1a0bf87f576aafc485996e9  gcc/testsuite/c-c++-common/gomp/pr118965-2.c
  c83ce004951a9a0719e190f7457302c7  gcc/testsuite/c-c++-common/gomp/pr119000.c
! 66ea510ba6b3f54e8f1cfe27f71e6df6  gcc/testsuite/c-c++-common/gomp/pr120180-1.c
  46f67781e5603b2bc3c978d0c4f81881  gcc/testsuite/c-c++-common/gomp/pr120180-2.c
  5a0fc856eddf5869c1607a51a511b91b  gcc/testsuite/c-c++-common/gomp/pr121452-1.c
  25357ab83549c772c7f308537e5445cf  gcc/testsuite/c-c++-common/gomp/pr121452-2.c
*************** aae6611cdfa9d295d22870f8c9222f69  gcc/te
*** 18911,18917 ****
  9bc9ad8b454ddee130fb534cf08c4f0e  gcc/testsuite/c-c++-common/gomp/pr60823-3.c
  83d8f65d36e02aa02588d7b997bdd269  gcc/testsuite/c-c++-common/gomp/pr60823-4.c
  1610228a9a46a0984cc32fd91d652f9f  gcc/testsuite/c-c++-common/gomp/pr61200.c
! 5a77df631a4cbd5ca518a8d11dea1c5c  gcc/testsuite/c-c++-common/gomp/pr61486-1.c
  a0bcd73ece188f59d460802714ee5067  gcc/testsuite/c-c++-common/gomp/pr61486-2.c
  2b6ae32069c2763c6ff2b173604cf38c  gcc/testsuite/c-c++-common/gomp/pr63249.c
  301fa510c5c9466fd8fc36226349fc5e  gcc/testsuite/c-c++-common/gomp/pr63326.c
--- 18920,18926 ----
  9bc9ad8b454ddee130fb534cf08c4f0e  gcc/testsuite/c-c++-common/gomp/pr60823-3.c
  83d8f65d36e02aa02588d7b997bdd269  gcc/testsuite/c-c++-common/gomp/pr60823-4.c
  1610228a9a46a0984cc32fd91d652f9f  gcc/testsuite/c-c++-common/gomp/pr61200.c
! 5d62c24a3f7ca5be3884ca9fa737f5ee  gcc/testsuite/c-c++-common/gomp/pr61486-1.c
  a0bcd73ece188f59d460802714ee5067  gcc/testsuite/c-c++-common/gomp/pr61486-2.c
  2b6ae32069c2763c6ff2b173604cf38c  gcc/testsuite/c-c++-common/gomp/pr63249.c
  301fa510c5c9466fd8fc36226349fc5e  gcc/testsuite/c-c++-common/gomp/pr63326.c
*************** d4234712e8b6ad1706a38530b6e6d890  gcc/te
*** 18932,18938 ****
  0c4f14dc0d4f392e3f8ebc8a86ed2e2f  gcc/testsuite/c-c++-common/gomp/pr79429.c
  aef2bdc20ca665badeb6ae399bf1d7e0  gcc/testsuite/c-c++-common/gomp/pr79431.c
  a1d1201800784f60e84899ae25155f9b  gcc/testsuite/c-c++-common/gomp/pr79512.c
! 61e2ab40aa3cda7576749f11b6037c39  gcc/testsuite/c-c++-common/gomp/pr81006.c
  7fcacaaefa9f2c7cfe81a0b52e82cebc  gcc/testsuite/c-c++-common/gomp/pr81887.c
  f518663bb6d3fa214257a2306172d690  gcc/testsuite/c-c++-common/gomp/pr83977-1.c
  2f7e224eea72eb9533c2b8dc9b23926c  gcc/testsuite/c-c++-common/gomp/pr83977-2.c
--- 18941,18947 ----
  0c4f14dc0d4f392e3f8ebc8a86ed2e2f  gcc/testsuite/c-c++-common/gomp/pr79429.c
  aef2bdc20ca665badeb6ae399bf1d7e0  gcc/testsuite/c-c++-common/gomp/pr79431.c
  a1d1201800784f60e84899ae25155f9b  gcc/testsuite/c-c++-common/gomp/pr79512.c
! 86c5579b579304de0763cd5ccb5d34c1  gcc/testsuite/c-c++-common/gomp/pr81006.c
  7fcacaaefa9f2c7cfe81a0b52e82cebc  gcc/testsuite/c-c++-common/gomp/pr81887.c
  f518663bb6d3fa214257a2306172d690  gcc/testsuite/c-c++-common/gomp/pr83977-1.c
  2f7e224eea72eb9533c2b8dc9b23926c  gcc/testsuite/c-c++-common/gomp/pr83977-2.c
*************** e083342c345fbf82eb1bd2fc11805647  gcc/te
*** 18948,18960 ****
  61ca8b866c491c9064a5bbfddd90f421  gcc/testsuite/c-c++-common/gomp/pr90954.c
  819ef14711cd571111df09cc81f8d206  gcc/testsuite/c-c++-common/gomp/pr91401-1.c
  b5b3167776d67985ba91daaee41243de  gcc/testsuite/c-c++-common/gomp/pr91401-2.c
! e4152974615471671fa0299b4121889f  gcc/testsuite/c-c++-common/gomp/pr91920.c
  c47f7acdcdd1614c035f4f07306fc305  gcc/testsuite/c-c++-common/gomp/pr91987.c
  bfdfa56ffe2ff48534494fc41ae0f4d1  gcc/testsuite/c-c++-common/gomp/pr93555-1.c
  b31fd83ffcebdfef84e1d323888e9a76  gcc/testsuite/c-c++-common/gomp/pr93555-2.c
  5099f2ef60912770f0c4404cf9b2c25b  gcc/testsuite/c-c++-common/gomp/pr94874.c
  df4d5a9505c92f441e5ea85708315fed  gcc/testsuite/c-c++-common/gomp/pr96424.c
! 2d2174ea1983262434b1c948662fa390  gcc/testsuite/c-c++-common/gomp/pr96867.c
  16407f97a063776e00434477f996fecf  gcc/testsuite/c-c++-common/gomp/pr97289.c
  164aefc7e8183e2dba0d1ca04fc30cad  gcc/testsuite/c-c++-common/gomp/pr97862.c
  ae2ea6f7d6a1c903e63c85894d80fa1f  gcc/testsuite/c-c++-common/gomp/pr97958.c
--- 18957,18969 ----
  61ca8b866c491c9064a5bbfddd90f421  gcc/testsuite/c-c++-common/gomp/pr90954.c
  819ef14711cd571111df09cc81f8d206  gcc/testsuite/c-c++-common/gomp/pr91401-1.c
  b5b3167776d67985ba91daaee41243de  gcc/testsuite/c-c++-common/gomp/pr91401-2.c
! b3f9ad4f2faec8588c2227d327169f98  gcc/testsuite/c-c++-common/gomp/pr91920.c
  c47f7acdcdd1614c035f4f07306fc305  gcc/testsuite/c-c++-common/gomp/pr91987.c
  bfdfa56ffe2ff48534494fc41ae0f4d1  gcc/testsuite/c-c++-common/gomp/pr93555-1.c
  b31fd83ffcebdfef84e1d323888e9a76  gcc/testsuite/c-c++-common/gomp/pr93555-2.c
  5099f2ef60912770f0c4404cf9b2c25b  gcc/testsuite/c-c++-common/gomp/pr94874.c
  df4d5a9505c92f441e5ea85708315fed  gcc/testsuite/c-c++-common/gomp/pr96424.c
! 634555b205c8283a875f5b5db0fd3609  gcc/testsuite/c-c++-common/gomp/pr96867.c
  16407f97a063776e00434477f996fecf  gcc/testsuite/c-c++-common/gomp/pr97289.c
  164aefc7e8183e2dba0d1ca04fc30cad  gcc/testsuite/c-c++-common/gomp/pr97862.c
  ae2ea6f7d6a1c903e63c85894d80fa1f  gcc/testsuite/c-c++-common/gomp/pr97958.c
*************** ecc136fa73d3794c39f5db17e7e1bf89  gcc/te
*** 18968,18974 ****
  86b220f458eae9523d2d9ffaea28bfde  gcc/testsuite/c-c++-common/gomp/pr99928-13.c
  d2840e9245156eb839b5d29ba5d04813  gcc/testsuite/c-c++-common/gomp/pr99928-14.c
  0fe7c8f841c4d50dbdc412ced09bdc5f  gcc/testsuite/c-c++-common/gomp/pr99928-15.c
! b0234431895813833f4cb4751ffcf698  gcc/testsuite/c-c++-common/gomp/pr99928-16.c
  01e5e6c358c1b2bda2f912c662479951  gcc/testsuite/c-c++-common/gomp/pr99928-2.c
  27c451c1baffe80971c04424e2db95ed  gcc/testsuite/c-c++-common/gomp/pr99928-3.c
  3a7443fce23b0e51df79d4de738fb3aa  gcc/testsuite/c-c++-common/gomp/pr99928-4.c
--- 18977,18983 ----
  86b220f458eae9523d2d9ffaea28bfde  gcc/testsuite/c-c++-common/gomp/pr99928-13.c
  d2840e9245156eb839b5d29ba5d04813  gcc/testsuite/c-c++-common/gomp/pr99928-14.c
  0fe7c8f841c4d50dbdc412ced09bdc5f  gcc/testsuite/c-c++-common/gomp/pr99928-15.c
! 6e2f48832695b8716c9560557d9ebeff  gcc/testsuite/c-c++-common/gomp/pr99928-16.c
  01e5e6c358c1b2bda2f912c662479951  gcc/testsuite/c-c++-common/gomp/pr99928-2.c
  27c451c1baffe80971c04424e2db95ed  gcc/testsuite/c-c++-common/gomp/pr99928-3.c
  3a7443fce23b0e51df79d4de738fb3aa  gcc/testsuite/c-c++-common/gomp/pr99928-4.c
*************** f4385174b55a4a8fa770e9d647279749  gcc/te
*** 18984,18990 ****
  94d691e11060c430935cb6245bd9ef01  gcc/testsuite/c-c++-common/gomp/pragma-5.c
  4d836e95ee0b1c17dd96690f60fc38ea  gcc/testsuite/c-c++-common/gomp/pragma-omp-unknown.c
  5d522e2f1f7455bc45f6c1f230d5a5b0  gcc/testsuite/c-c++-common/gomp/priority-1.c
! a5ab254ee603749ef9330558229e6163  gcc/testsuite/c-c++-common/gomp/reduction-1.c
  857f55ab743945a521e3287d1b905b4b  gcc/testsuite/c-c++-common/gomp/reduction-task-1.c
  640bf7069a4c648fde61378b5eae80c8  gcc/testsuite/c-c++-common/gomp/reduction-task-2.c
  6bfb4e8e6e1307990ff6a4535855f6b7  gcc/testsuite/c-c++-common/gomp/reduction-task-3.c
--- 18993,18999 ----
  94d691e11060c430935cb6245bd9ef01  gcc/testsuite/c-c++-common/gomp/pragma-5.c
  4d836e95ee0b1c17dd96690f60fc38ea  gcc/testsuite/c-c++-common/gomp/pragma-omp-unknown.c
  5d522e2f1f7455bc45f6c1f230d5a5b0  gcc/testsuite/c-c++-common/gomp/priority-1.c
! e444ad99603236df0a9c0aaad51e515e  gcc/testsuite/c-c++-common/gomp/reduction-1.c
  857f55ab743945a521e3287d1b905b4b  gcc/testsuite/c-c++-common/gomp/reduction-task-1.c
  640bf7069a4c648fde61378b5eae80c8  gcc/testsuite/c-c++-common/gomp/reduction-task-2.c
  6bfb4e8e6e1307990ff6a4535855f6b7  gcc/testsuite/c-c++-common/gomp/reduction-task-3.c
*************** cbab216a8de36785197d4e800a979308  gcc/te
*** 18997,19003 ****
  931b4332bd990faa5b9aab4a228ff1f0  gcc/testsuite/c-c++-common/gomp/requires-7.c
  51ad5d5dea3fc1a8b4058a688095449f  gcc/testsuite/c-c++-common/gomp/requires-8.c
  fe0a74c5903b31208f01a6cf910a26c4  gcc/testsuite/c-c++-common/gomp/reverse-offload-1.c
! d2b914e7da7d449d03bc2fd5a17d4ac9  gcc/testsuite/c-c++-common/gomp/scan-1.c
  3fb5b28574137ba1aa754466a8ea9a57  gcc/testsuite/c-c++-common/gomp/scan-2.c
  9f76c491a629f3bbd470f28c269ef485  gcc/testsuite/c-c++-common/gomp/scan-3.c
  640bcd6f5cf5af442783c7dc5ad52d3b  gcc/testsuite/c-c++-common/gomp/scan-4.c
--- 19006,19012 ----
  931b4332bd990faa5b9aab4a228ff1f0  gcc/testsuite/c-c++-common/gomp/requires-7.c
  51ad5d5dea3fc1a8b4058a688095449f  gcc/testsuite/c-c++-common/gomp/requires-8.c
  fe0a74c5903b31208f01a6cf910a26c4  gcc/testsuite/c-c++-common/gomp/reverse-offload-1.c
! d9099abb95b3aa925b93c1cd8e3a018f  gcc/testsuite/c-c++-common/gomp/scan-1.c
  3fb5b28574137ba1aa754466a8ea9a57  gcc/testsuite/c-c++-common/gomp/scan-2.c
  9f76c491a629f3bbd470f28c269ef485  gcc/testsuite/c-c++-common/gomp/scan-3.c
  640bcd6f5cf5af442783c7dc5ad52d3b  gcc/testsuite/c-c++-common/gomp/scan-4.c
*************** ee53749fe1ce6195a2d3af75b4e8d7fb  gcc/te
*** 19031,19037 ****
  0c93f7b88c30539ace084df2f4c7f5ae  gcc/testsuite/c-c++-common/gomp/sink-4.c
  c95f2cef3c7fd923368769c2f5efbc75  gcc/testsuite/c-c++-common/gomp/sink-5.c
  0749f498cf83f772934b8604c900cb5e  gcc/testsuite/c-c++-common/gomp/target-50.c
! 0f606c818aafa917b4e4ca06798a0500  gcc/testsuite/c-c++-common/gomp/target-data-1.c
  6e2b1e79dd9e5bf80f1786de4ce0d44f  gcc/testsuite/c-c++-common/gomp/target-data-2.c
  606d31321e7d5d4bd5f862677a31ccf9  gcc/testsuite/c-c++-common/gomp/target-data-3.c
  cb81da252c32b67e25bcb9e0177c3269  gcc/testsuite/c-c++-common/gomp/target-device-1.c
--- 19040,19046 ----
  0c93f7b88c30539ace084df2f4c7f5ae  gcc/testsuite/c-c++-common/gomp/sink-4.c
  c95f2cef3c7fd923368769c2f5efbc75  gcc/testsuite/c-c++-common/gomp/sink-5.c
  0749f498cf83f772934b8604c900cb5e  gcc/testsuite/c-c++-common/gomp/target-50.c
! 7dd2999f2d02373b3e86e73ae2f05008  gcc/testsuite/c-c++-common/gomp/target-data-1.c
  6e2b1e79dd9e5bf80f1786de4ce0d44f  gcc/testsuite/c-c++-common/gomp/target-data-2.c
  606d31321e7d5d4bd5f862677a31ccf9  gcc/testsuite/c-c++-common/gomp/target-data-3.c
  cb81da252c32b67e25bcb9e0177c3269  gcc/testsuite/c-c++-common/gomp/target-device-1.c
*************** a89d3bc336c39386e5c41b412c5cadf6  gcc/te
*** 19041,19063 ****
  415ffbd983ab85f8ae866ca8d4790b1d  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-3.c
  ca7ba586dac58a7cd9e9b58a6d8e470e  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-4.c
  4561a8adae0edb1000cfcf5746ff89dd  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-5.c
! fdab044e4591c867dbff7d0f2a10a3d4  gcc/testsuite/c-c++-common/gomp/target-enter-data-1.c
! 5ffcda40553abef98cacdff0ec06eea2  gcc/testsuite/c-c++-common/gomp/target-has-device-addr-1.c
  e5def8b0431262a97550aa7141a818a1  gcc/testsuite/c-c++-common/gomp/target-has-device-addr-2.c
  9595c5abb9f5235642349714ba09d690  gcc/testsuite/c-c++-common/gomp/target-implicit-map-1.c
! 1d0d0d7d469cd53fe7b42b2d73a87efb  gcc/testsuite/c-c++-common/gomp/target-implicit-map-2.c
  add511064b968c5d11ab265fa90ad3bc  gcc/testsuite/c-c++-common/gomp/target-in-reduction-1.c
  1a46b3c3357de4a3d24943d0266026f3  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-1.c
  2cfdfdc278ef7c85c5e2ad7e2f1e95be  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-2.c
! 9fcbd53e219a66a6627bb77e876fd400  gcc/testsuite/c-c++-common/gomp/target-map-iterators-1.c
  a6be8d491b81e2bd5a132e54885fb1c2  gcc/testsuite/c-c++-common/gomp/target-map-iterators-2.c
! 3da757001e7ade895add1b6bd2bc09bc  gcc/testsuite/c-c++-common/gomp/target-map-iterators-3.c
  d290e10563b5dcd9cbe022f9ce9d118d  gcc/testsuite/c-c++-common/gomp/target-map-iterators-4.c
  b1764366c6f492a5e181e374576a2120  gcc/testsuite/c-c++-common/gomp/target-teams-1.c
  ecaf3261edcbdf06b45669d051546ad3  gcc/testsuite/c-c++-common/gomp/target-update-1.c
! 08dede3478568650d9a1541988278932  gcc/testsuite/c-c++-common/gomp/target-update-iterators-1.c
  0f6b04454d158c1ca276ecc2763de98f  gcc/testsuite/c-c++-common/gomp/target-update-iterators-2.c
! 6407850cdd605714e99d03892b83dc92  gcc/testsuite/c-c++-common/gomp/target-update-iterators-3.c
  25d48772fc72e3c1f8e2192ec44ffb95  gcc/testsuite/c-c++-common/gomp/task-detach-1.c
  1bc40a217ad51b17433b0b59c1491757  gcc/testsuite/c-c++-common/gomp/task-detach-2.c
  f1e648ba677e52a9fa9d8897002b52a4  gcc/testsuite/c-c++-common/gomp/task-detach-3.c
--- 19050,19072 ----
  415ffbd983ab85f8ae866ca8d4790b1d  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-3.c
  ca7ba586dac58a7cd9e9b58a6d8e470e  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-4.c
  4561a8adae0edb1000cfcf5746ff89dd  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-5.c
! 66e2be8c890c4523436f834850ae75a5  gcc/testsuite/c-c++-common/gomp/target-enter-data-1.c
! 8c2b82227fc84e1d964bb4a1b2f14f03  gcc/testsuite/c-c++-common/gomp/target-has-device-addr-1.c
  e5def8b0431262a97550aa7141a818a1  gcc/testsuite/c-c++-common/gomp/target-has-device-addr-2.c
  9595c5abb9f5235642349714ba09d690  gcc/testsuite/c-c++-common/gomp/target-implicit-map-1.c
! a58a326fc0bf7895719faa1320e03029  gcc/testsuite/c-c++-common/gomp/target-implicit-map-2.c
  add511064b968c5d11ab265fa90ad3bc  gcc/testsuite/c-c++-common/gomp/target-in-reduction-1.c
  1a46b3c3357de4a3d24943d0266026f3  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-1.c
  2cfdfdc278ef7c85c5e2ad7e2f1e95be  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-2.c
! efc9a1ea706c31b0d18f03ed7004c09e  gcc/testsuite/c-c++-common/gomp/target-map-iterators-1.c
  a6be8d491b81e2bd5a132e54885fb1c2  gcc/testsuite/c-c++-common/gomp/target-map-iterators-2.c
! e87cc72174c798e3391c3b978ab190ca  gcc/testsuite/c-c++-common/gomp/target-map-iterators-3.c
  d290e10563b5dcd9cbe022f9ce9d118d  gcc/testsuite/c-c++-common/gomp/target-map-iterators-4.c
  b1764366c6f492a5e181e374576a2120  gcc/testsuite/c-c++-common/gomp/target-teams-1.c
  ecaf3261edcbdf06b45669d051546ad3  gcc/testsuite/c-c++-common/gomp/target-update-1.c
! e807b465f51f25bc3e564cb1576543d7  gcc/testsuite/c-c++-common/gomp/target-update-iterators-1.c
  0f6b04454d158c1ca276ecc2763de98f  gcc/testsuite/c-c++-common/gomp/target-update-iterators-2.c
! 5a3145767cf31c903624fc08a8be5e8a  gcc/testsuite/c-c++-common/gomp/target-update-iterators-3.c
  25d48772fc72e3c1f8e2192ec44ffb95  gcc/testsuite/c-c++-common/gomp/task-detach-1.c
  1bc40a217ad51b17433b0b59c1491757  gcc/testsuite/c-c++-common/gomp/task-detach-2.c
  f1e648ba677e52a9fa9d8897002b52a4  gcc/testsuite/c-c++-common/gomp/task-detach-3.c
*************** b0b55ab8b53606eec0ee5fabee9aa06a  gcc/te
*** 19550,19556 ****
  c43e8c2f4e63188c7d29667b185abde0  gcc/testsuite/c-c++-common/raw-string-directive-3.c
  eef0e9a4755fcdef5bc0aed73aa7dfc5  gcc/testsuite/c-c++-common/raw-string-directive-4.c
  27d899fda0e1e6f64fc3f2e0f3e7832e  gcc/testsuite/c-c++-common/restrict-1.c
! d38712ca0af7a9dc1180236b496d6f9f  gcc/testsuite/c-c++-common/restrict-2.c
  b75f32090613560551fe2b3a16a6bddf  gcc/testsuite/c-c++-common/restrict-4.c
  a1c15ef5229215f0209411736f5ccdfd  gcc/testsuite/c-c++-common/rotate-1.c
  5b438ca153be076de6ede90b95050821  gcc/testsuite/c-c++-common/rotate-10.c
--- 19559,19565 ----
  c43e8c2f4e63188c7d29667b185abde0  gcc/testsuite/c-c++-common/raw-string-directive-3.c
  eef0e9a4755fcdef5bc0aed73aa7dfc5  gcc/testsuite/c-c++-common/raw-string-directive-4.c
  27d899fda0e1e6f64fc3f2e0f3e7832e  gcc/testsuite/c-c++-common/restrict-1.c
! 48e18f43d11bf36c4c6b1ff2bb87a50e  gcc/testsuite/c-c++-common/restrict-2.c
  b75f32090613560551fe2b3a16a6bddf  gcc/testsuite/c-c++-common/restrict-4.c
  a1c15ef5229215f0209411736f5ccdfd  gcc/testsuite/c-c++-common/rotate-1.c
  5b438ca153be076de6ede90b95050821  gcc/testsuite/c-c++-common/rotate-10.c
*************** baa1ff9d67a227d88f5f4a3377afb275  gcc/te
*** 20787,20792 ****
--- 20796,20804 ----
  8ce864b8f2d2ae710018ffa009a91983  gcc/testsuite/g++.dg/DRs/dr1423.C
  c78a7d0e0f56139db13df05e5557054a  gcc/testsuite/g++.dg/DRs/dr1511-1.C
  a8a423a0388215f96cf72d6abf415d72  gcc/testsuite/g++.dg/DRs/dr1511-2.C
+ 85e9ec522afd7c5e768201ef345f8c60  gcc/testsuite/g++.dg/DRs/dr1670-1.C
+ bd632c2a102e05af42772d3992d4df01  gcc/testsuite/g++.dg/DRs/dr1670-2.C
+ 3507e08d74d35e64f039e274560e7e64  gcc/testsuite/g++.dg/DRs/dr1670-3.C
  52d7d568704922e4f339fc4d146480ce  gcc/testsuite/g++.dg/DRs/dr1693-1.C
  bdfdb25d2a95709a4137d69bca1d9b97  gcc/testsuite/g++.dg/DRs/dr1693-2.C
  7f7b3e40c3a4d7651460590c64f31af4  gcc/testsuite/g++.dg/DRs/dr1709.C
*************** a54d8026af685eb4245802f9d393c62f  gcc/te
*** 20843,20848 ****
--- 20855,20863 ----
  c2020757348be38768a84038f994ef30  gcc/testsuite/g++.dg/DRs/dr2867-8.C
  098b67367f9be2c124f0064e61162fa9  gcc/testsuite/g++.dg/DRs/dr2874.C
  a0e21528a4a4b6c55e3ddacf0a8cf5f7  gcc/testsuite/g++.dg/DRs/dr2918.C
+ 35a1ad73c2dad3082e687ad6cb6e4a83  gcc/testsuite/g++.dg/DRs/dr3045.C
+ 2ca94605cdd826e6318b37f454c91235  gcc/testsuite/g++.dg/DRs/dr3061.C
+ 0db4e83f65185c2945cb11bd0815a87e  gcc/testsuite/g++.dg/DRs/dr3079.C
  7a4b27e45b2c85a34faf94f75f8945d1  gcc/testsuite/g++.dg/DRs/dr625.C
  cdd5e29f9e112d6201410809ca83e0d2  gcc/testsuite/g++.dg/DRs/dr882.C
  4e90ef5fccb128fcc1059f5ff34d2ac8  gcc/testsuite/g++.dg/README
*************** acd12a34fb1477ca263e7f38269f40d0  gcc/te
*** 21251,21257 ****
  3ab5a03785e0beb328826ec97a100dfe  gcc/testsuite/g++.dg/analyzer/infinite-recursion-2.C
  6c9235c35035b59cc0a83132c639d00f  gcc/testsuite/g++.dg/analyzer/infinite-recursion-3.C
  715a17af2dffd8cf140b06abfca9c16a  gcc/testsuite/g++.dg/analyzer/infinite-recursion-pr63388.C
! c57f4182655c02f2e4278cdf3d4f9a33  gcc/testsuite/g++.dg/analyzer/malloc.C
  172304701d90affbd3b1d50e2367e8f2  gcc/testsuite/g++.dg/analyzer/named-functions.C
  7292fd874dc6a2a17f2f505c44add678  gcc/testsuite/g++.dg/analyzer/new-1.C
  c7a5d978103dcbcf603f02011660afbb  gcc/testsuite/g++.dg/analyzer/new-2.C
--- 21266,21272 ----
  3ab5a03785e0beb328826ec97a100dfe  gcc/testsuite/g++.dg/analyzer/infinite-recursion-2.C
  6c9235c35035b59cc0a83132c639d00f  gcc/testsuite/g++.dg/analyzer/infinite-recursion-3.C
  715a17af2dffd8cf140b06abfca9c16a  gcc/testsuite/g++.dg/analyzer/infinite-recursion-pr63388.C
! 3f12457ffcbe30a9e7ccc5a5bae189af  gcc/testsuite/g++.dg/analyzer/malloc.C
  172304701d90affbd3b1d50e2367e8f2  gcc/testsuite/g++.dg/analyzer/named-functions.C
  7292fd874dc6a2a17f2f505c44add678  gcc/testsuite/g++.dg/analyzer/new-1.C
  c7a5d978103dcbcf603f02011660afbb  gcc/testsuite/g++.dg/analyzer/new-2.C
*************** c927462765eef1949fbb945e0a8b8a4a  gcc/te
*** 22610,22616 ****
  73e7dbc6a42c3b40a0b909358e12da0d  gcc/testsuite/g++.dg/cpp0x/auto56.C
  dde34d0c42712dec10d9a53ea21565d3  gcc/testsuite/g++.dg/cpp0x/auto57.C
  7051782825f2720fd5eee3be6f2027e9  gcc/testsuite/g++.dg/cpp0x/auto7.C
! 13b23623fc6ec1dc0109c253f332de7c  gcc/testsuite/g++.dg/cpp0x/auto9.C
  4a89b70ea75ae6415ffb0149eed4dc01  gcc/testsuite/g++.dg/cpp0x/bad_array_new1.C
  a8491f3e4ee92a8454ad6b7d6c1e4429  gcc/testsuite/g++.dg/cpp0x/bad_array_new2.C
  1ea60b441f8073714f5b0d7662a304e9  gcc/testsuite/g++.dg/cpp0x/bind.C
--- 22625,22631 ----
  73e7dbc6a42c3b40a0b909358e12da0d  gcc/testsuite/g++.dg/cpp0x/auto56.C
  dde34d0c42712dec10d9a53ea21565d3  gcc/testsuite/g++.dg/cpp0x/auto57.C
  7051782825f2720fd5eee3be6f2027e9  gcc/testsuite/g++.dg/cpp0x/auto7.C
! 2dba7814780bc9499d45a511a6abc729  gcc/testsuite/g++.dg/cpp0x/auto9.C
  4a89b70ea75ae6415ffb0149eed4dc01  gcc/testsuite/g++.dg/cpp0x/bad_array_new1.C
  a8491f3e4ee92a8454ad6b7d6c1e4429  gcc/testsuite/g++.dg/cpp0x/bad_array_new2.C
  1ea60b441f8073714f5b0d7662a304e9  gcc/testsuite/g++.dg/cpp0x/bind.C
*************** e944a760f2bcd206b36820c53e03b241  gcc/te
*** 24285,24290 ****
--- 24300,24306 ----
  573ad180b4337eb14688fd7c74cdeccc  gcc/testsuite/g++.dg/cpp0x/noexcept88.C
  6920aaae5ff91adaae9f973d58b99fd0  gcc/testsuite/g++.dg/cpp0x/noexcept89.C
  01fdf9b25aed01336395f7314f3b5857  gcc/testsuite/g++.dg/cpp0x/noexcept90.C
+ a1c17fbec179b1075e3839acd36429dc  gcc/testsuite/g++.dg/cpp0x/noexcept91.C
  3bf83ccb654cedbb57a45851fb14aa9d  gcc/testsuite/g++.dg/cpp0x/nolinkage1.C
  6b7c91b931bbdacbbffbf9b90a79bc6a  gcc/testsuite/g++.dg/cpp0x/nolinkage1.h
  c92e0eda44dd6b3d74960b249fa5204f  gcc/testsuite/g++.dg/cpp0x/nolinkage1a.cc
*************** c261319c4540e21ce17bbed8a6a44f40  gcc/te
*** 24468,24473 ****
--- 24484,24490 ----
  fadcff10fef6007880be1e8b89051f65  gcc/testsuite/g++.dg/cpp0x/pr118923.C
  c6b0d9f964bf85f5f703f5dfa5e809e9  gcc/testsuite/g++.dg/cpp0x/pr119123.C
  b4c316ecfeb0a9b078a76b658ed94668  gcc/testsuite/g++.dg/cpp0x/pr119563.C
+ 29f9291c87488a55a2dd5fa47188ab10  gcc/testsuite/g++.dg/cpp0x/pr119580.C
  9598abf127e6826158d64ee6b05b0791  gcc/testsuite/g++.dg/cpp0x/pr122302.C
  26dea799d49ce223a0c4130a3c955271  gcc/testsuite/g++.dg/cpp0x/pr31431-2.C
  4d1da29b669bf3178b3987abce4d58b1  gcc/testsuite/g++.dg/cpp0x/pr31431.C
*************** fb2e417a364945cb8149b9526292009b  gcc/te
*** 25408,25415 ****
  dc5451a9ff24848e54d61818d52a6d94  gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
  7f87375ea759512b1c52f02744bd144b  gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
  d9026dcf90b4d54bee061436620287a9  gcc/testsuite/g++.dg/cpp1y/auto-fn11.C
! e8ede97fc5803eed57d07b4123b9a523  gcc/testsuite/g++.dg/cpp1y/auto-fn12.C
! 7b669827bea28277027a523e33b45f0e  gcc/testsuite/g++.dg/cpp1y/auto-fn13.C
  e44b3597936dd6f357553246a242335d  gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
  12bb503f3f6cd0861f245adc2f63e35e  gcc/testsuite/g++.dg/cpp1y/auto-fn15.C
  1c94ff8201633772ca24c7b73d52889a  gcc/testsuite/g++.dg/cpp1y/auto-fn16.C
--- 25425,25432 ----
  dc5451a9ff24848e54d61818d52a6d94  gcc/testsuite/g++.dg/cpp1y/auto-fn1.C
  7f87375ea759512b1c52f02744bd144b  gcc/testsuite/g++.dg/cpp1y/auto-fn10.C
  d9026dcf90b4d54bee061436620287a9  gcc/testsuite/g++.dg/cpp1y/auto-fn11.C
! 5ebb3a8cb693c2132b76c69b985de72f  gcc/testsuite/g++.dg/cpp1y/auto-fn12.C
! 52e7d8f6b7e08dd21b8b55168be0e55f  gcc/testsuite/g++.dg/cpp1y/auto-fn13.C
  e44b3597936dd6f357553246a242335d  gcc/testsuite/g++.dg/cpp1y/auto-fn14.C
  12bb503f3f6cd0861f245adc2f63e35e  gcc/testsuite/g++.dg/cpp1y/auto-fn15.C
  1c94ff8201633772ca24c7b73d52889a  gcc/testsuite/g++.dg/cpp1y/auto-fn16.C
*************** e44b3597936dd6f357553246a242335d  gcc/te
*** 25419,25425 ****
  88ef9523ceb7f9fd808e09124fb3bffc  gcc/testsuite/g++.dg/cpp1y/auto-fn2.C
  bbe5db57b5ad80f6dba45ded13dc4c7a  gcc/testsuite/g++.dg/cpp1y/auto-fn20.C
  525df3382c8e9edf50b15907caea6c08  gcc/testsuite/g++.dg/cpp1y/auto-fn21.C
! 00c8794b62eeeee7392e63c33571f6b9  gcc/testsuite/g++.dg/cpp1y/auto-fn22.C
  24700bf570f1da37dd7403a1ba42584b  gcc/testsuite/g++.dg/cpp1y/auto-fn23.C
  4225acb87f7df9dda5bdd30f046d2bc9  gcc/testsuite/g++.dg/cpp1y/auto-fn24.C
  56e6bd00ba584aef061561c13e30a444  gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
--- 25436,25442 ----
  88ef9523ceb7f9fd808e09124fb3bffc  gcc/testsuite/g++.dg/cpp1y/auto-fn2.C
  bbe5db57b5ad80f6dba45ded13dc4c7a  gcc/testsuite/g++.dg/cpp1y/auto-fn20.C
  525df3382c8e9edf50b15907caea6c08  gcc/testsuite/g++.dg/cpp1y/auto-fn21.C
! a71f80433c2d441bad74bca75a47669a  gcc/testsuite/g++.dg/cpp1y/auto-fn22.C
  24700bf570f1da37dd7403a1ba42584b  gcc/testsuite/g++.dg/cpp1y/auto-fn23.C
  4225acb87f7df9dda5bdd30f046d2bc9  gcc/testsuite/g++.dg/cpp1y/auto-fn24.C
  56e6bd00ba584aef061561c13e30a444  gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
*************** e301f1e1935905abefe3b24b50252da4  gcc/te
*** 25443,25456 ****
  01fd8c37a461e70dd046d084a28295c1  gcc/testsuite/g++.dg/cpp1y/auto-fn41.C
  bfd95cceb44d8c47db7bf1a36a86322d  gcc/testsuite/g++.dg/cpp1y/auto-fn42.C
  820221d75273b01d35f807e36bc12523  gcc/testsuite/g++.dg/cpp1y/auto-fn43.C
! 9eb7dfe1e7ebd445e055643332f3d209  gcc/testsuite/g++.dg/cpp1y/auto-fn44.C
  187c94bfc3db8c059a739ac2dd410e67  gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
  1559f78df9382ec0e0b1c2f4e7bfbf7d  gcc/testsuite/g++.dg/cpp1y/auto-fn46.C
  dd80de1b70fc9fb6f96337aa98d878ed  gcc/testsuite/g++.dg/cpp1y/auto-fn47.C
  9c209f027427ac6a65af30b753bfd4b7  gcc/testsuite/g++.dg/cpp1y/auto-fn48.C
  4e4a5ed56f7431474c3769bf5f8ba8c3  gcc/testsuite/g++.dg/cpp1y/auto-fn49.C
  eaab8c47716923537d6580ede6fbe3ae  gcc/testsuite/g++.dg/cpp1y/auto-fn5.C
! d8b3f03cf98450675631471e52432e53  gcc/testsuite/g++.dg/cpp1y/auto-fn50.C
  da8b691c486f119146bd69dc1d417757  gcc/testsuite/g++.dg/cpp1y/auto-fn51.C
  0124c08ff3f573c99b7680c72aa70116  gcc/testsuite/g++.dg/cpp1y/auto-fn52.C
  f14e5c551fb573045f545479bf77b0d9  gcc/testsuite/g++.dg/cpp1y/auto-fn53.C
--- 25460,25473 ----
  01fd8c37a461e70dd046d084a28295c1  gcc/testsuite/g++.dg/cpp1y/auto-fn41.C
  bfd95cceb44d8c47db7bf1a36a86322d  gcc/testsuite/g++.dg/cpp1y/auto-fn42.C
  820221d75273b01d35f807e36bc12523  gcc/testsuite/g++.dg/cpp1y/auto-fn43.C
! a19998b66b89c56e0d01fab26612eb13  gcc/testsuite/g++.dg/cpp1y/auto-fn44.C
  187c94bfc3db8c059a739ac2dd410e67  gcc/testsuite/g++.dg/cpp1y/auto-fn45.C
  1559f78df9382ec0e0b1c2f4e7bfbf7d  gcc/testsuite/g++.dg/cpp1y/auto-fn46.C
  dd80de1b70fc9fb6f96337aa98d878ed  gcc/testsuite/g++.dg/cpp1y/auto-fn47.C
  9c209f027427ac6a65af30b753bfd4b7  gcc/testsuite/g++.dg/cpp1y/auto-fn48.C
  4e4a5ed56f7431474c3769bf5f8ba8c3  gcc/testsuite/g++.dg/cpp1y/auto-fn49.C
  eaab8c47716923537d6580ede6fbe3ae  gcc/testsuite/g++.dg/cpp1y/auto-fn5.C
! 8bc19c1f88666f494fba3dc33bf15a9d  gcc/testsuite/g++.dg/cpp1y/auto-fn50.C
  da8b691c486f119146bd69dc1d417757  gcc/testsuite/g++.dg/cpp1y/auto-fn51.C
  0124c08ff3f573c99b7680c72aa70116  gcc/testsuite/g++.dg/cpp1y/auto-fn52.C
  f14e5c551fb573045f545479bf77b0d9  gcc/testsuite/g++.dg/cpp1y/auto-fn53.C
*************** afbdcf440b8da95f919e745c0f3a85d1  gcc/te
*** 25492,25497 ****
--- 25509,25515 ----
  bff4672a992bc57b0432abbc32b3c2c9  gcc/testsuite/g++.dg/cpp1y/constexpr-108158.C
  1d40cabd787f31f0fad7fcf842281e0d  gcc/testsuite/g++.dg/cpp1y/constexpr-110382.C
  c0c4053e9d0ac3fdafa8e18c09182922  gcc/testsuite/g++.dg/cpp1y/constexpr-110619.C
+ 99784bf84926c6a7d522ec738bd5f9aa  gcc/testsuite/g++.dg/cpp1y/constexpr-121445.C
  2d72668eefa5659edd32ef8dabc1c48e  gcc/testsuite/g++.dg/cpp1y/constexpr-50060.C
  fd3ea60479a528944a91cfd16e42839f  gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
  9ecc58eab147adafbf3780c51ed706fc  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-1.C
*************** a8edd1159f1c66a732eaec9685596ff4  gcc/te
*** 25551,25557 ****
  fdb8b6b86d13d007f2629fe0e79ef65b  gcc/testsuite/g++.dg/cpp1y/constexpr-array7.C
  212300c9a8da890339615d548652da69  gcc/testsuite/g++.dg/cpp1y/constexpr-array8.C
  a89279abfab0639143c5a2fe29b21829  gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
! 52a229b92919a8cbea59380a1264434c  gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
  96e7ff76936ad5471dd6bfb8bb617ccc  gcc/testsuite/g++.dg/cpp1y/constexpr-assign1.C
  e994f9235ea884899f4cb5f923eca140  gcc/testsuite/g++.dg/cpp1y/constexpr-base1.C
  62c9fcd027436752619939db3ffca36e  gcc/testsuite/g++.dg/cpp1y/constexpr-base2.C
--- 25569,25575 ----
  fdb8b6b86d13d007f2629fe0e79ef65b  gcc/testsuite/g++.dg/cpp1y/constexpr-array7.C
  212300c9a8da890339615d548652da69  gcc/testsuite/g++.dg/cpp1y/constexpr-array8.C
  a89279abfab0639143c5a2fe29b21829  gcc/testsuite/g++.dg/cpp1y/constexpr-assert1.C
! d8e6effce6644a94865d0c684b4d2416  gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
  96e7ff76936ad5471dd6bfb8bb617ccc  gcc/testsuite/g++.dg/cpp1y/constexpr-assign1.C
  e994f9235ea884899f4cb5f923eca140  gcc/testsuite/g++.dg/cpp1y/constexpr-base1.C
  62c9fcd027436752619939db3ffca36e  gcc/testsuite/g++.dg/cpp1y/constexpr-base2.C
*************** ac9f13854ea3e455a1371aaa819ee22a  gcc/te
*** 26497,26502 ****
--- 26515,26521 ----
  5f34b6f6c6b9801ac84fd35a7072c291  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations2.C
  9f9fa73c4ae67e4de5904663c140998d  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations3.C
  5c459c469bb0c88af36817ae049e53f3  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations4.C
+ 6859dea5dbfe2133d0fd69cfd29b9164  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations5.C
  712e0c3f886fdb90e5e03d39bd877f92  gcc/testsuite/g++.dg/cpp1z/inh-ctor1.C
  a5a039fe3394138160509efa1a2212c5  gcc/testsuite/g++.dg/cpp1z/inh-ctor22.C
  08e66730eb666f41f2d9476748d3745f  gcc/testsuite/g++.dg/cpp1z/inh-ctor23.C
*************** d8c0c733385ca64144f09cf94dbfc159  gcc/te
*** 26648,26653 ****
--- 26667,26673 ----
  6ac56ba6fac8f37fd5da42f71b2f6417  gcc/testsuite/g++.dg/cpp1z/nontype8.C
  03ca05bf2eccb98d95222a2435a3d9ed  gcc/testsuite/g++.dg/cpp1z/pr110216.C
  86d3c074d77c88bd7ef317faea9d2968  gcc/testsuite/g++.dg/cpp1z/pr115440.C
+ 77ac27ad1d458dd579a2e0b5c573de59  gcc/testsuite/g++.dg/cpp1z/pr122185.C
  e668ace19a2b0d8946e0e19fd8317af1  gcc/testsuite/g++.dg/cpp1z/pr78771.C
  bc5edc17d9b70d77a054dd4736a66223  gcc/testsuite/g++.dg/cpp1z/pr79143.C
  3e5ca07aaa322577e51fd003d9524cb0  gcc/testsuite/g++.dg/cpp1z/pr81016.C
*************** c544d34e1df7955e274df53b85725097  gcc/te
*** 26982,26987 ****
--- 27002,27008 ----
  47178e4d95ee013f1999b74f8f9c69a4  gcc/testsuite/g++.dg/cpp26/constexpr-eh14.C
  e8e285d5f17f18710b7136f0f788f9c8  gcc/testsuite/g++.dg/cpp26/constexpr-eh15.C
  3b5f2464be3b6237317c355178b6abbf  gcc/testsuite/g++.dg/cpp26/constexpr-eh16.C
+ 65a22a49338fcb7526f2379bbc7d8666  gcc/testsuite/g++.dg/cpp26/constexpr-eh17.C
  5dd3cceecaa6ec4f3aba7e8c298dc74c  gcc/testsuite/g++.dg/cpp26/constexpr-eh2.C
  4c13defc41912f8fa4785f3953df88ed  gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C
  6ef0a812fa0528be79afea3ada17a5eb  gcc/testsuite/g++.dg/cpp26/constexpr-eh4.C
*************** a430b39e1be5d1fb74398b6e2ed2bc77  gcc/te
*** 27059,27064 ****
--- 27080,27086 ----
  f8d8f977a2ce10a22535ceb90309b531  gcc/testsuite/g++.dg/cpp26/expansion-stmt22.C
  acbce95791211ede09f67fcd376b48cb  gcc/testsuite/g++.dg/cpp26/expansion-stmt23.C
  4f56781af7d20030274d9a133126e14b  gcc/testsuite/g++.dg/cpp26/expansion-stmt24.C
+ 6e0ba6570c6704c45f502e328e1b9c51  gcc/testsuite/g++.dg/cpp26/expansion-stmt27.C
  c66852484325a654361305c49419f459  gcc/testsuite/g++.dg/cpp26/expansion-stmt3.C
  05972a123b20a66b9c7899c2bb0b5042  gcc/testsuite/g++.dg/cpp26/expansion-stmt4.C
  7cfc2afc603d55bfd66b320b3d190acd  gcc/testsuite/g++.dg/cpp26/expansion-stmt5.C
*************** ec9f0efa4770d04a1dea842b64f19c44  gcc/te
*** 27698,27703 ****
--- 27720,27726 ----
  2d6205fea644048201c44086df527c3a  gcc/testsuite/g++.dg/cpp2a/consteval4.C
  34ecadb8994bf3d4c005295e95f6f53d  gcc/testsuite/g++.dg/cpp2a/consteval40.C
  09d61acf831f6fd33b3695f66ce79b1e  gcc/testsuite/g++.dg/cpp2a/consteval41.C
+ 25cda58432ffe21cd15da667f5edfb8d  gcc/testsuite/g++.dg/cpp2a/consteval42.C
  e71633ec506016932dc09c057d98c36c  gcc/testsuite/g++.dg/cpp2a/consteval5.C
  f8b2a0016c59d132f059d57a7638806f  gcc/testsuite/g++.dg/cpp2a/consteval6.C
  6517514915e5a24d0ee38257c46994cc  gcc/testsuite/g++.dg/cpp2a/consteval7.C
*************** d7ed0ebf26a6437db2b5aa0d69a1e9d1  gcc/te
*** 28002,28009 ****
  f02e6aefd434d4811321f7875fea5c79  gcc/testsuite/g++.dg/cpp2a/is-corresponding-member8.C
  78d84cdb6c4c5f91546e47eea2a2f29a  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible1.C
  40b9c7b3198914d9138b2e9cb7c85b9e  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible2.C
! 8af20ff9013991ef0a6f4008d09a3290  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible3.C
  087bb26b7fb10078d7689347b3385e63  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of1.C
  82ca9bc7a0479a2d7beaa0abe322c607  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class1.C
  c3fcc7088915b8703f4605aa1eca4ce3  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class2.C
  a32a0480aae35890db6a4b74ebac6bc0  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class3.C
--- 28025,28034 ----
  f02e6aefd434d4811321f7875fea5c79  gcc/testsuite/g++.dg/cpp2a/is-corresponding-member8.C
  78d84cdb6c4c5f91546e47eea2a2f29a  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible1.C
  40b9c7b3198914d9138b2e9cb7c85b9e  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible2.C
! 0ce0b20051d8b7b5a9382c34a9005370  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible3.C
! cadf9c444452cb9eca3ad79d21541287  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible4.C
  087bb26b7fb10078d7689347b3385e63  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of1.C
+ 0046aad3b6ed9922809190e813885c96  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of2.C
  82ca9bc7a0479a2d7beaa0abe322c607  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class1.C
  c3fcc7088915b8703f4605aa1eca4ce3  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class2.C
  a32a0480aae35890db6a4b74ebac6bc0  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class3.C
*************** d74301fd930f4a488c9e941cdd242900  gcc/te
*** 29781,29787 ****
  ebb1df191bcea60ed6342dad182b8901  gcc/testsuite/g++.dg/ext/is_deducible1.C
  94a516051a47d1b7e866ec47efa5de01  gcc/testsuite/g++.dg/ext/is_destructible1.C
  aa081a16610eaae6eaa83ad85ce8aa33  gcc/testsuite/g++.dg/ext/is_destructible2.C
! 31131faa8f100377aa10a66fcdf2a50d  gcc/testsuite/g++.dg/ext/is_destructible3.C
  9da1ecf7ca599ccc9c1677e62cfc809f  gcc/testsuite/g++.dg/ext/is_empty.C
  51590a59aaf8715b9fe4a7ae06414cb8  gcc/testsuite/g++.dg/ext/is_empty2.C
  904cd436fd5b5ebe1349610a0aa7c2da  gcc/testsuite/g++.dg/ext/is_enum.C
--- 29806,29812 ----
  ebb1df191bcea60ed6342dad182b8901  gcc/testsuite/g++.dg/ext/is_deducible1.C
  94a516051a47d1b7e866ec47efa5de01  gcc/testsuite/g++.dg/ext/is_destructible1.C
  aa081a16610eaae6eaa83ad85ce8aa33  gcc/testsuite/g++.dg/ext/is_destructible2.C
! 238eb24c2a5f5d4ba1716f3c2ea7c99a  gcc/testsuite/g++.dg/ext/is_destructible3.C
  9da1ecf7ca599ccc9c1677e62cfc809f  gcc/testsuite/g++.dg/ext/is_empty.C
  51590a59aaf8715b9fe4a7ae06414cb8  gcc/testsuite/g++.dg/ext/is_empty2.C
  904cd436fd5b5ebe1349610a0aa7c2da  gcc/testsuite/g++.dg/ext/is_enum.C
*************** c3525831665d7cbb0d4199640426a8c0  gcc/te
*** 29848,29854 ****
  dfc5fc4d8610f00c7cd27c7795c3494a  gcc/testsuite/g++.dg/ext/is_union.C
  c5162f49c04a31e896fa6b3b85ddc718  gcc/testsuite/g++.dg/ext/is_virtual_base_of.C
  75fff22de399b6176636c77897e0835a  gcc/testsuite/g++.dg/ext/is_virtual_base_of_diagnostic.C
! dd123db08b1e504d0c40a8f9a4b26e72  gcc/testsuite/g++.dg/ext/is_virtual_base_of_diagnostic2.C
  4f23cfdb876ae1f2a68ee65231f5e7d6  gcc/testsuite/g++.dg/ext/is_volatile.C
  db0b295df95be25a97d67c002c45679e  gcc/testsuite/g++.dg/ext/ivdep-1.C
  81d5dcb570c603e51795c99355ec35f2  gcc/testsuite/g++.dg/ext/label1.C
--- 29873,29879 ----
  dfc5fc4d8610f00c7cd27c7795c3494a  gcc/testsuite/g++.dg/ext/is_union.C
  c5162f49c04a31e896fa6b3b85ddc718  gcc/testsuite/g++.dg/ext/is_virtual_base_of.C
  75fff22de399b6176636c77897e0835a  gcc/testsuite/g++.dg/ext/is_virtual_base_of_diagnostic.C
! 4a71df88e3c4fe33e985225a970a1f40  gcc/testsuite/g++.dg/ext/is_virtual_base_of_diagnostic2.C
  4f23cfdb876ae1f2a68ee65231f5e7d6  gcc/testsuite/g++.dg/ext/is_volatile.C
  db0b295df95be25a97d67c002c45679e  gcc/testsuite/g++.dg/ext/ivdep-1.C
  81d5dcb570c603e51795c99355ec35f2  gcc/testsuite/g++.dg/ext/label1.C
*************** faa8333681bedde3ba84daa60ec26ff8  gcc/te
*** 29947,29952 ****
--- 29972,29978 ----
  98638e9fa0777943851858264e4df050  gcc/testsuite/g++.dg/ext/rank.C
  bce41fa775f2176271e957652f0edf69  gcc/testsuite/g++.dg/ext/reference_constructs_from_temporary1.C
  95d105b089ea555ab8e1c29ce9e1f667  gcc/testsuite/g++.dg/ext/reference_converts_from_temporary1.C
+ 0763fce1484e78d744fc7b1372ae9195  gcc/testsuite/g++.dg/ext/reference_xes_from_temporary1.C
  5c1bae2a1fbdc59653647bbd49eb336f  gcc/testsuite/g++.dg/ext/remove_all_extents.C
  01789f18bffef5bcf261727b48fc9bb5  gcc/testsuite/g++.dg/ext/remove_cv.C
  9d092236f17635c7e6d0abe935fd348f  gcc/testsuite/g++.dg/ext/remove_cvref.C
*************** d1af8bc5c6a98042b0799693ddd97d27  gcc/te
*** 30300,30316 ****
  43e67e5747bff990dcdf1da760341232  gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
  57aec36453f242d12bf5515cb425f04e  gcc/testsuite/g++.dg/goacc/cache-1.C
  1f2e4a88f87fa010e31b6c237e00aea7  gcc/testsuite/g++.dg/goacc/cache-2.C
! 7f9f08a09fc949be2045ab00795bc184  gcc/testsuite/g++.dg/goacc/cache-3-1.C
! a730ee1a3c27eea558527775d082bec6  gcc/testsuite/g++.dg/goacc/cache-3-2.C
  04148aa53bf7fbcace7f876837002d79  gcc/testsuite/g++.dg/goacc/data-1.C
! d4df15d043d8968539a88c1beeda4e7e  gcc/testsuite/g++.dg/goacc/data-clause-1.C
! 866b94f28bffcdc4daadd6a07d80a096  gcc/testsuite/g++.dg/goacc/data-clause-2.C
  ab5a2e3886c2a5718ee179f9c9a446ce  gcc/testsuite/g++.dg/goacc/declare-pr94120.C
  2b70bd2b15144e92ee104c07a8e2bc13  gcc/testsuite/g++.dg/goacc/deviceptr-1.C
  50fb26ed859d201ce4b714967a5c4066  gcc/testsuite/g++.dg/goacc/firstprivate-mappings-1.C
  af06faa72f57b0b47a6f79e4c9799a32  gcc/testsuite/g++.dg/goacc/goacc.exp
  ba83af77fe8815dad9c311986752e8e6  gcc/testsuite/g++.dg/goacc/implied-copy.C
! 584c742e0613158e5e3d528f9ded5463  gcc/testsuite/g++.dg/goacc/mdc.C
  919ddcaeee68dd7dab5e3cf7adf25963  gcc/testsuite/g++.dg/goacc/member-array-acc.C
  d597d4e7ee031afa50fadecd64ddac77  gcc/testsuite/g++.dg/goacc/pr101759.C
  e52e88addea4404d3b276d25b44761c5  gcc/testsuite/g++.dg/goacc/pr107028-1.C
--- 30326,30342 ----
  43e67e5747bff990dcdf1da760341232  gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
  57aec36453f242d12bf5515cb425f04e  gcc/testsuite/g++.dg/goacc/cache-1.C
  1f2e4a88f87fa010e31b6c237e00aea7  gcc/testsuite/g++.dg/goacc/cache-2.C
! afa91c55fee98a50c792037a139bde80  gcc/testsuite/g++.dg/goacc/cache-3-1.C
! 61b1b9c372960584257fd5dd0f5f6dba  gcc/testsuite/g++.dg/goacc/cache-3-2.C
  04148aa53bf7fbcace7f876837002d79  gcc/testsuite/g++.dg/goacc/data-1.C
! 82a9cb8d7dde5c620d18f62dfb2d0223  gcc/testsuite/g++.dg/goacc/data-clause-1.C
! cf01d5e31bc9fe8acc577245978fa271  gcc/testsuite/g++.dg/goacc/data-clause-2.C
  ab5a2e3886c2a5718ee179f9c9a446ce  gcc/testsuite/g++.dg/goacc/declare-pr94120.C
  2b70bd2b15144e92ee104c07a8e2bc13  gcc/testsuite/g++.dg/goacc/deviceptr-1.C
  50fb26ed859d201ce4b714967a5c4066  gcc/testsuite/g++.dg/goacc/firstprivate-mappings-1.C
  af06faa72f57b0b47a6f79e4c9799a32  gcc/testsuite/g++.dg/goacc/goacc.exp
  ba83af77fe8815dad9c311986752e8e6  gcc/testsuite/g++.dg/goacc/implied-copy.C
! 60b279f0287253d310248047ff74563c  gcc/testsuite/g++.dg/goacc/mdc.C
  919ddcaeee68dd7dab5e3cf7adf25963  gcc/testsuite/g++.dg/goacc/member-array-acc.C
  d597d4e7ee031afa50fadecd64ddac77  gcc/testsuite/g++.dg/goacc/pr101759.C
  e52e88addea4404d3b276d25b44761c5  gcc/testsuite/g++.dg/goacc/pr107028-1.C
*************** f825374f14531b790e0c2fb5ab09676e  gcc/te
*** 30329,30335 ****
  95770641a336700c84cdc07f3cba2ea1  gcc/testsuite/g++.dg/gomp/all-memory-2.C
  e741249479c6c7025b48c7e503fcff98  gcc/testsuite/g++.dg/gomp/allocate-1.C
  49202612ed526412e25f866f82bd0573  gcc/testsuite/g++.dg/gomp/allocate-2.C
! 0c676d0276d06d9e6ec17a845969619a  gcc/testsuite/g++.dg/gomp/allocate-3.C
  88f1b88f618e371fa510de1faa5e2ba9  gcc/testsuite/g++.dg/gomp/allocate-4.C
  860ec74e962f604e234ee0887b6ef08c  gcc/testsuite/g++.dg/gomp/append-args-1.C
  f8841da56b2cbd119a595eb97825e49a  gcc/testsuite/g++.dg/gomp/append-args-2.C
--- 30355,30361 ----
  95770641a336700c84cdc07f3cba2ea1  gcc/testsuite/g++.dg/gomp/all-memory-2.C
  e741249479c6c7025b48c7e503fcff98  gcc/testsuite/g++.dg/gomp/allocate-1.C
  49202612ed526412e25f866f82bd0573  gcc/testsuite/g++.dg/gomp/allocate-2.C
! a9767597abb2c616a316414cb0e74ea8  gcc/testsuite/g++.dg/gomp/allocate-3.C
  88f1b88f618e371fa510de1faa5e2ba9  gcc/testsuite/g++.dg/gomp/allocate-4.C
  860ec74e962f604e234ee0887b6ef08c  gcc/testsuite/g++.dg/gomp/append-args-1.C
  f8841da56b2cbd119a595eb97825e49a  gcc/testsuite/g++.dg/gomp/append-args-2.C
*************** ae35638d6021101a691c39c642eea0bc  gcc/te
*** 30340,30346 ****
  5bb47181463ddde8e34cd86a5bf3fae1  gcc/testsuite/g++.dg/gomp/append-args-7.C
  35d72bdb8232973de4865e26ba729e4f  gcc/testsuite/g++.dg/gomp/append-args-8.C
  a5e156d12a28581babb7f17d06d081b0  gcc/testsuite/g++.dg/gomp/array-section-1.C
! 9dc67ccab8b4be9f97d8aa37c9f1070b  gcc/testsuite/g++.dg/gomp/array-section-2.C
  0f8c6d06e1f378355b0404338dbd037b  gcc/testsuite/g++.dg/gomp/atomic-14.C
  4c00b09b19e9a90c9f90d361477d4f07  gcc/testsuite/g++.dg/gomp/atomic-17.C
  2c0577ea8f9867c9816d031f9b0f6d9a  gcc/testsuite/g++.dg/gomp/atomic-18.C
--- 30366,30372 ----
  5bb47181463ddde8e34cd86a5bf3fae1  gcc/testsuite/g++.dg/gomp/append-args-7.C
  35d72bdb8232973de4865e26ba729e4f  gcc/testsuite/g++.dg/gomp/append-args-8.C
  a5e156d12a28581babb7f17d06d081b0  gcc/testsuite/g++.dg/gomp/array-section-1.C
! 2e9f6928580a038f0eda56155306e93e  gcc/testsuite/g++.dg/gomp/array-section-2.C
  0f8c6d06e1f378355b0404338dbd037b  gcc/testsuite/g++.dg/gomp/atomic-14.C
  4c00b09b19e9a90c9f90d361477d4f07  gcc/testsuite/g++.dg/gomp/atomic-17.C
  2c0577ea8f9867c9816d031f9b0f6d9a  gcc/testsuite/g++.dg/gomp/atomic-18.C
*************** facc0feac01669ce68a86b330fcd9db6  gcc/te
*** 30375,30382 ****
  a20f699bfc93319b13a27dcb9bef0c26  gcc/testsuite/g++.dg/gomp/attrs-imperfect4.C
  494e9cab1f4f6546b335227f5bcc57c4  gcc/testsuite/g++.dg/gomp/attrs-imperfect5.C
  97e643cbd5bffe9ddc22832bf00e482c  gcc/testsuite/g++.dg/gomp/bad-array-section-1.C
! 7d9cf46bb11f676019dfa72130d61cb5  gcc/testsuite/g++.dg/gomp/bad-array-section-10.C
! 141f7f46c8bb9daf5de01235ce3be81e  gcc/testsuite/g++.dg/gomp/bad-array-section-11.C
  4dc2cecce02439310ccd7543ac3f090c  gcc/testsuite/g++.dg/gomp/bad-array-section-2.C
  7d72726287092d4c1eb4547ccf073d88  gcc/testsuite/g++.dg/gomp/bad-array-section-3.C
  13e94ce72bf2108b49773435129d001d  gcc/testsuite/g++.dg/gomp/bad-array-section-4.C
--- 30401,30408 ----
  a20f699bfc93319b13a27dcb9bef0c26  gcc/testsuite/g++.dg/gomp/attrs-imperfect4.C
  494e9cab1f4f6546b335227f5bcc57c4  gcc/testsuite/g++.dg/gomp/attrs-imperfect5.C
  97e643cbd5bffe9ddc22832bf00e482c  gcc/testsuite/g++.dg/gomp/bad-array-section-1.C
! c3444085f1e48af0a74d43f44ae50e14  gcc/testsuite/g++.dg/gomp/bad-array-section-10.C
! 1f8f4bbb936acedf36a79c1ea98d060d  gcc/testsuite/g++.dg/gomp/bad-array-section-11.C
  4dc2cecce02439310ccd7543ac3f090c  gcc/testsuite/g++.dg/gomp/bad-array-section-2.C
  7d72726287092d4c1eb4547ccf073d88  gcc/testsuite/g++.dg/gomp/bad-array-section-3.C
  13e94ce72bf2108b49773435129d001d  gcc/testsuite/g++.dg/gomp/bad-array-section-4.C
*************** a20f699bfc93319b13a27dcb9bef0c26  gcc/te
*** 30384,30390 ****
  cad5a0f5612b545b9cc5db417c21bdac  gcc/testsuite/g++.dg/gomp/bad-array-section-6.C
  e69b76d336001e3bff0a54bd6620df4a  gcc/testsuite/g++.dg/gomp/bad-array-section-7.C
  4d0df1125375cbd2536ef7189623f71f  gcc/testsuite/g++.dg/gomp/bad-array-section-8.C
! 1c97b709dafe2bb67c43bbef42737c74  gcc/testsuite/g++.dg/gomp/bad-array-section-9.C
  28210efb6de9f161ddfddd705210bc01  gcc/testsuite/g++.dg/gomp/barrier-1.C
  4c453c9ea0f47e5cb5f0c015b01aa7c9  gcc/testsuite/g++.dg/gomp/barrier-2.C
  418aec9a82d0d6ecba7659cc2cbb6dfa  gcc/testsuite/g++.dg/gomp/block-0.C
--- 30410,30416 ----
  cad5a0f5612b545b9cc5db417c21bdac  gcc/testsuite/g++.dg/gomp/bad-array-section-6.C
  e69b76d336001e3bff0a54bd6620df4a  gcc/testsuite/g++.dg/gomp/bad-array-section-7.C
  4d0df1125375cbd2536ef7189623f71f  gcc/testsuite/g++.dg/gomp/bad-array-section-8.C
! 46300df04504a396166de2b6167a3364  gcc/testsuite/g++.dg/gomp/bad-array-section-9.C
  28210efb6de9f161ddfddd705210bc01  gcc/testsuite/g++.dg/gomp/barrier-1.C
  4c453c9ea0f47e5cb5f0c015b01aa7c9  gcc/testsuite/g++.dg/gomp/barrier-2.C
  418aec9a82d0d6ecba7659cc2cbb6dfa  gcc/testsuite/g++.dg/gomp/block-0.C
*************** fe6047f5ca7e2eac34792a3acc1193c2  gcc/te
*** 30410,30417 ****
  73dc4c4897395dc7c307860e0c371fe1  gcc/testsuite/g++.dg/gomp/critical-1.C
  67c49c3ef2f12e8a48820530d769fbd8  gcc/testsuite/g++.dg/gomp/critical-2.C
  d51c209a538c8e7658a85ca99d8eb17b  gcc/testsuite/g++.dg/gomp/critical-3.C
! f1e5ae067b71374e5049e8732e446e72  gcc/testsuite/g++.dg/gomp/declare-mapper-1.C
! 84e11a9dba783ae27aefc99c4aba6f86  gcc/testsuite/g++.dg/gomp/declare-mapper-2.C
  ba4a8a9f66e6db7ad17cae2882bb6ca2  gcc/testsuite/g++.dg/gomp/declare-mapper-3.C
  c33309167faeafe5c8b09666ffbcb15d  gcc/testsuite/g++.dg/gomp/declare-simd-1.C
  6363ff64193eeb8db033202fd0e140f2  gcc/testsuite/g++.dg/gomp/declare-simd-2.C
--- 30436,30443 ----
  73dc4c4897395dc7c307860e0c371fe1  gcc/testsuite/g++.dg/gomp/critical-1.C
  67c49c3ef2f12e8a48820530d769fbd8  gcc/testsuite/g++.dg/gomp/critical-2.C
  d51c209a538c8e7658a85ca99d8eb17b  gcc/testsuite/g++.dg/gomp/critical-3.C
! 60088a85faa379abbf7cbc20ae5fa42c  gcc/testsuite/g++.dg/gomp/declare-mapper-1.C
! 4930d47281726e54daf3369e41c792a4  gcc/testsuite/g++.dg/gomp/declare-mapper-2.C
  ba4a8a9f66e6db7ad17cae2882bb6ca2  gcc/testsuite/g++.dg/gomp/declare-mapper-3.C
  c33309167faeafe5c8b09666ffbcb15d  gcc/testsuite/g++.dg/gomp/declare-simd-1.C
  6363ff64193eeb8db033202fd0e140f2  gcc/testsuite/g++.dg/gomp/declare-simd-2.C
*************** f1c961906365e69ec5d85efca251f7e0  gcc/te
*** 30439,30446 ****
  286892e393f01ad35a3d223d7ea77283  gcc/testsuite/g++.dg/gomp/declare-variant-class-1.C
  7b91164e0a121872e8cc5b15d80ca903  gcc/testsuite/g++.dg/gomp/declare-variant-class-2.C
  0ee7395de6f3410cc3e0730f18e4a8f6  gcc/testsuite/g++.dg/gomp/default-1.C
! 7051d268375289f1835cdff78728de81  gcc/testsuite/g++.dg/gomp/depend-1.C
! 5ed836221748ac8946497bda6d311d53  gcc/testsuite/g++.dg/gomp/depend-2.C
  fb99d6d7d52ead46e97905bf42cf8877  gcc/testsuite/g++.dg/gomp/depend-iterator-1.C
  55e3a09904888da975d3d4b76f18d294  gcc/testsuite/g++.dg/gomp/depend-iterator-2.C
  e7b69c86d16171732a1c9ef74218d864  gcc/testsuite/g++.dg/gomp/depend-iterator-3.C
--- 30465,30486 ----
  286892e393f01ad35a3d223d7ea77283  gcc/testsuite/g++.dg/gomp/declare-variant-class-1.C
  7b91164e0a121872e8cc5b15d80ca903  gcc/testsuite/g++.dg/gomp/declare-variant-class-2.C
  0ee7395de6f3410cc3e0730f18e4a8f6  gcc/testsuite/g++.dg/gomp/default-1.C
! 755ccc483298dbaebf42e83ea5b8ae67  gcc/testsuite/g++.dg/gomp/delim-declare-variant-1.C
! ab6796bbbd027a0118a5d0c35091b93c  gcc/testsuite/g++.dg/gomp/delim-declare-variant-2.C
! aa5ae4999b0256eee22c056ce28deab1  gcc/testsuite/g++.dg/gomp/delim-declare-variant-3.C
! 6312f67fae8ee9faf06e60151de3eb6b  gcc/testsuite/g++.dg/gomp/delim-declare-variant-4.C
! 7b0c5a2a41ae09b370645d06b963aa8a  gcc/testsuite/g++.dg/gomp/delim-declare-variant-40.C
! 5292c3af4526f7e6ea2de38df5c8c6c4  gcc/testsuite/g++.dg/gomp/delim-declare-variant-41.C
! 55bfadd841b7b588056cbb464328d68b  gcc/testsuite/g++.dg/gomp/delim-declare-variant-5.C
! cb6ba733a0c5fb36c07d2b459a5ed7b5  gcc/testsuite/g++.dg/gomp/delim-declare-variant-50.C
! 82355ce4d38a9d4ebebfb888a14b3c39  gcc/testsuite/g++.dg/gomp/delim-declare-variant-51.C
! 902885c49582c4fd10b46b0668738687  gcc/testsuite/g++.dg/gomp/delim-declare-variant-52.C
! d90d98061bb0827b40e915782c675578  gcc/testsuite/g++.dg/gomp/delim-declare-variant-6.C
! 3812705425ec6a9c450e8257bb30dac6  gcc/testsuite/g++.dg/gomp/delim-declare-variant-7.C
! 7014c69d16a1ad686038587723accba6  gcc/testsuite/g++.dg/gomp/delim-declare-variant-70.C
! bddd8d410ed52f2d30633f00da52aa3e  gcc/testsuite/g++.dg/gomp/delim-declare-variant-71.C
! 5fde4edb396687302b0769e1000be869  gcc/testsuite/g++.dg/gomp/depend-1.C
! 3357bb5c0a70641d769ba11be9547921  gcc/testsuite/g++.dg/gomp/depend-2.C
  fb99d6d7d52ead46e97905bf42cf8877  gcc/testsuite/g++.dg/gomp/depend-iterator-1.C
  55e3a09904888da975d3d4b76f18d294  gcc/testsuite/g++.dg/gomp/depend-iterator-2.C
  e7b69c86d16171732a1c9ef74218d864  gcc/testsuite/g++.dg/gomp/depend-iterator-3.C
*************** d9604d99f8b1a6974afc5a3cab2765b3  gcc/te
*** 30482,30488 ****
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/g++.dg/gomp/for-9.C
  ca133d5331151195fe83821418918120  gcc/testsuite/g++.dg/gomp/gomp.exp
  5ba807a5630d6b67e06971a0b91ca947  gcc/testsuite/g++.dg/gomp/has_device_addr-non-lvalue-1.C
! 6f31af1c2ea2f93713b63640ff4b8e57  gcc/testsuite/g++.dg/gomp/ind-base-3.C
  84e8c7f5cf2d79dc03b900128ace9599  gcc/testsuite/g++.dg/gomp/interop-5.C
  eb763d050fd680e1a3302fbda441475d  gcc/testsuite/g++.dg/gomp/lastprivate-1.C
  7f682781cd88149270eb73eb44f419f7  gcc/testsuite/g++.dg/gomp/linear-1.C
--- 30522,30528 ----
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/g++.dg/gomp/for-9.C
  ca133d5331151195fe83821418918120  gcc/testsuite/g++.dg/gomp/gomp.exp
  5ba807a5630d6b67e06971a0b91ca947  gcc/testsuite/g++.dg/gomp/has_device_addr-non-lvalue-1.C
! 4efa844f26c381598c7ae2f467f4b430  gcc/testsuite/g++.dg/gomp/ind-base-3.C
  84e8c7f5cf2d79dc03b900128ace9599  gcc/testsuite/g++.dg/gomp/interop-5.C
  eb763d050fd680e1a3302fbda441475d  gcc/testsuite/g++.dg/gomp/lastprivate-1.C
  7f682781cd88149270eb73eb44f419f7  gcc/testsuite/g++.dg/gomp/linear-1.C
*************** a4271cf7824f2a837486e7951ee23884  gcc/te
*** 30502,30515 ****
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/g++.dg/gomp/macro-2.C
  942f8defe03c25bf08f780cf22c0a1e5  gcc/testsuite/g++.dg/gomp/macro-3.C
  cd9c99991551b9a21416b02b7ae5b5b4  gcc/testsuite/g++.dg/gomp/macro-4.C
! 2a90373b9280848f40b1036e42fdd914  gcc/testsuite/g++.dg/gomp/map-1.C
! cd955c2057012ba387a6b029e23c0d53  gcc/testsuite/g++.dg/gomp/map-2.C
  9dfc87617a82c07e89fab7b80d5eaf22  gcc/testsuite/g++.dg/gomp/map-3.C
  2fd2c913b551d0babeb55eaa546298d3  gcc/testsuite/g++.dg/gomp/map-assignment-1.C
  e12974abf2bb742407d18e9d07505400  gcc/testsuite/g++.dg/gomp/map-inc-1.C
  ebd0af100c738096180052a774559603  gcc/testsuite/g++.dg/gomp/map-lvalue-ref-1.C
! b43bc449348b8a49a2fd8eaeea028d67  gcc/testsuite/g++.dg/gomp/map-ptrmem-1.C
! 8e85b0c099213636ef4b6011f0b1ba8c  gcc/testsuite/g++.dg/gomp/map-ptrmem-2.C
  150dbb1ed7f7addc7f90aa669a7813c5  gcc/testsuite/g++.dg/gomp/map-static-cast-lvalue-1.C
  8f59cb3d015ee89e45d623e205a09a5b  gcc/testsuite/g++.dg/gomp/map-ternary-1.C
  c0b53dcb8d3f8e31c7445987d35c43e7  gcc/testsuite/g++.dg/gomp/masked-1.C
--- 30542,30555 ----
  eabb0107af4ef893414bb3cef506ad03  gcc/testsuite/g++.dg/gomp/macro-2.C
  942f8defe03c25bf08f780cf22c0a1e5  gcc/testsuite/g++.dg/gomp/macro-3.C
  cd9c99991551b9a21416b02b7ae5b5b4  gcc/testsuite/g++.dg/gomp/macro-4.C
! 9aae13bcef421fa550476abd7932cdc4  gcc/testsuite/g++.dg/gomp/map-1.C
! 50fbf14e5c93c58c73a95a4f7fbae8d7  gcc/testsuite/g++.dg/gomp/map-2.C
  9dfc87617a82c07e89fab7b80d5eaf22  gcc/testsuite/g++.dg/gomp/map-3.C
  2fd2c913b551d0babeb55eaa546298d3  gcc/testsuite/g++.dg/gomp/map-assignment-1.C
  e12974abf2bb742407d18e9d07505400  gcc/testsuite/g++.dg/gomp/map-inc-1.C
  ebd0af100c738096180052a774559603  gcc/testsuite/g++.dg/gomp/map-lvalue-ref-1.C
! 5a9a16b88b96f90ad2b701b96ed0e94f  gcc/testsuite/g++.dg/gomp/map-ptrmem-1.C
! 7133f242df279357b92620437d947e52  gcc/testsuite/g++.dg/gomp/map-ptrmem-2.C
  150dbb1ed7f7addc7f90aa669a7813c5  gcc/testsuite/g++.dg/gomp/map-static-cast-lvalue-1.C
  8f59cb3d015ee89e45d623e205a09a5b  gcc/testsuite/g++.dg/gomp/map-ternary-1.C
  c0b53dcb8d3f8e31c7445987d35c43e7  gcc/testsuite/g++.dg/gomp/masked-1.C
*************** aec913fefeac6132003dfcbe3fd035eb  gcc/te
*** 30520,30526 ****
  fc63cfdc56a33b15fa4d063e5ef655b2  gcc/testsuite/g++.dg/gomp/member-2.C
  57b9a2c844df3931aacf1c2702dc3ebe  gcc/testsuite/g++.dg/gomp/member-3.C
  135dd9ca392aa9976b7a20570053aa68  gcc/testsuite/g++.dg/gomp/member-4.C
! c1d74700c9732009a221d3e853e0d1a3  gcc/testsuite/g++.dg/gomp/member-array-2.C
  b04637997ce93ec04bd981d2cda2f110  gcc/testsuite/g++.dg/gomp/member-array-omp.C
  d4182799214f45dabaa5ac64c4ea27b7  gcc/testsuite/g++.dg/gomp/metadirective-condition-class.C
  ba7e10ef037089d1a30c8bf2079be93e  gcc/testsuite/g++.dg/gomp/metadirective-condition-template.C
--- 30560,30566 ----
  fc63cfdc56a33b15fa4d063e5ef655b2  gcc/testsuite/g++.dg/gomp/member-2.C
  57b9a2c844df3931aacf1c2702dc3ebe  gcc/testsuite/g++.dg/gomp/member-3.C
  135dd9ca392aa9976b7a20570053aa68  gcc/testsuite/g++.dg/gomp/member-4.C
! 068adb64c4d55c7713c3dde55ec494d1  gcc/testsuite/g++.dg/gomp/member-array-2.C
  b04637997ce93ec04bd981d2cda2f110  gcc/testsuite/g++.dg/gomp/member-array-omp.C
  d4182799214f45dabaa5ac64c4ea27b7  gcc/testsuite/g++.dg/gomp/metadirective-condition-class.C
  ba7e10ef037089d1a30c8bf2079be93e  gcc/testsuite/g++.dg/gomp/metadirective-condition-template.C
*************** e033ffcb572e3c374bf58a0eebd43584  gcc/te
*** 30716,30723 ****
  2948a42eb9b2368cd175c4e97e1ec30e  gcc/testsuite/g++.dg/gomp/target-teams-1.C
  bcd255e2d0e26acf60901103fc4678cc  gcc/testsuite/g++.dg/gomp/target-this-1.C
  cbbe10902855a271b9728e1fc6174c53  gcc/testsuite/g++.dg/gomp/target-this-2.C
! 1ea95fd2d354c89d4bed13b84496ed98  gcc/testsuite/g++.dg/gomp/target-this-3.C
! d72a2468e540ea752d7c7d28b798724f  gcc/testsuite/g++.dg/gomp/target-this-4.C
  0ff4f4ce212c8528a4be5b080fdf156c  gcc/testsuite/g++.dg/gomp/target-this-5.C
  926d8449d7242be3abf0b04b4f5a0201  gcc/testsuite/g++.dg/gomp/task-1.C
  dd317148fbd7859764db9b7028cfa23d  gcc/testsuite/g++.dg/gomp/task-detach-1.C
--- 30756,30763 ----
  2948a42eb9b2368cd175c4e97e1ec30e  gcc/testsuite/g++.dg/gomp/target-teams-1.C
  bcd255e2d0e26acf60901103fc4678cc  gcc/testsuite/g++.dg/gomp/target-this-1.C
  cbbe10902855a271b9728e1fc6174c53  gcc/testsuite/g++.dg/gomp/target-this-2.C
! 5dc593c0d06eba306eb52a76763f634f  gcc/testsuite/g++.dg/gomp/target-this-3.C
! d2176e309b3418b0b89370a3dc8e8394  gcc/testsuite/g++.dg/gomp/target-this-4.C
  0ff4f4ce212c8528a4be5b080fdf156c  gcc/testsuite/g++.dg/gomp/target-this-5.C
  926d8449d7242be3abf0b04b4f5a0201  gcc/testsuite/g++.dg/gomp/task-1.C
  dd317148fbd7859764db9b7028cfa23d  gcc/testsuite/g++.dg/gomp/task-detach-1.C
*************** cb60536799a89ad1dffce0a15c88b2d7  gcc/te
*** 32286,32293 ****
  f0e89ff7d2d836ff7ecd36d27bbacb19  gcc/testsuite/g++.dg/modules/attrib-3_a.H
  3c275da25d7ace4b3ea9ba624f120c0c  gcc/testsuite/g++.dg/modules/attrib-3_b.C
  81c0c5e828fc012cafc9fa3658ffa887  gcc/testsuite/g++.dg/modules/auto-1.h
! 29e4a658cd6f3050ca87707ca8d0bd7b  gcc/testsuite/g++.dg/modules/auto-1_a.H
! 1e77f8d752cd0eeb7af8d66ff149dcec  gcc/testsuite/g++.dg/modules/auto-1_b.C
  3b264755fa54e09c174088a50027eb56  gcc/testsuite/g++.dg/modules/auto-2.h
  d479e8fed74f485f9b8e9b4816402569  gcc/testsuite/g++.dg/modules/auto-2_a.H
  9e4842387b313ba5aa98f2d5cc9a3592  gcc/testsuite/g++.dg/modules/auto-2_b.C
--- 32326,32333 ----
  f0e89ff7d2d836ff7ecd36d27bbacb19  gcc/testsuite/g++.dg/modules/attrib-3_a.H
  3c275da25d7ace4b3ea9ba624f120c0c  gcc/testsuite/g++.dg/modules/attrib-3_b.C
  81c0c5e828fc012cafc9fa3658ffa887  gcc/testsuite/g++.dg/modules/auto-1.h
! 663d15531836052d0d8d248d77c1d985  gcc/testsuite/g++.dg/modules/auto-1_a.H
! fc7a9d18c3b934f3bab09c32f19f3b8d  gcc/testsuite/g++.dg/modules/auto-1_b.C
  3b264755fa54e09c174088a50027eb56  gcc/testsuite/g++.dg/modules/auto-2.h
  d479e8fed74f485f9b8e9b4816402569  gcc/testsuite/g++.dg/modules/auto-2_a.H
  9e4842387b313ba5aa98f2d5cc9a3592  gcc/testsuite/g++.dg/modules/auto-2_b.C
*************** c087af9321ac0e24731d2a4d1bb3e319  gcc/te
*** 32814,32819 ****
--- 32854,32861 ----
  de8b65b21e105d140eb3a6820d4aff13  gcc/testsuite/g++.dg/modules/internal-17_a.C
  8114f1020d3c84955efc22dd7c18c4cb  gcc/testsuite/g++.dg/modules/internal-17_b.C
  8e050ce1f908224ad301706271ad39c4  gcc/testsuite/g++.dg/modules/internal-18.C
+ eaa5a7feb828c2d301939fe4e5b02ace  gcc/testsuite/g++.dg/modules/internal-19_a.C
+ 0557bb600ba22cb555a81389c8419285  gcc/testsuite/g++.dg/modules/internal-19_b.C
  c66d17d0fb2dc80371978510d0cc1f0f  gcc/testsuite/g++.dg/modules/internal-2_a.H
  21bb55995bb6fa8ed6a8fa69368f7f36  gcc/testsuite/g++.dg/modules/internal-2_b.H
  ba3bc4f8f333742fb78f03db052c4ffa  gcc/testsuite/g++.dg/modules/internal-2_c.C
*************** c60b844a013ddc3832a59b1cd376b1ad  gcc/te
*** 34206,34211 ****
--- 34248,34255 ----
  8ae5f63f132f2e69255225e052069238  gcc/testsuite/g++.dg/opt/pr119614.C
  b67c374c96c5b9bf7bfc34ab5c497627  gcc/testsuite/g++.dg/opt/pr120629.C
  9db6e9a160a496988df91d0d0b96bc85  gcc/testsuite/g++.dg/opt/pr122083-1.C
+ 71e71bffbc009df79284647622bf0ca6  gcc/testsuite/g++.dg/opt/pr122184-1.C
+ d566a0635f6a1e3ba1148b6b36789cd2  gcc/testsuite/g++.dg/opt/pr122184-2.C
  46bab0272c3e399fa4db680833cb9a89  gcc/testsuite/g++.dg/opt/pr122394.C
  2896f5b1a96dd9fabb1dbb65cb4c5921  gcc/testsuite/g++.dg/opt/pr13066-1.C
  4f87f86b9f018cae74888e97468b2fe0  gcc/testsuite/g++.dg/opt/pr14029.C
*************** c3945b36146c7d629c7336eb3f9329fe  gcc/te
*** 35173,35178 ****
--- 35217,35223 ----
  758a5593fac9b92bf48e5bc6573d64dd  gcc/testsuite/g++.dg/parse/crash78a.C
  37c0cb89d800249b63e524b045e2782b  gcc/testsuite/g++.dg/parse/crash79.C
  8192e78f11aebd3019eab4fc03de8002  gcc/testsuite/g++.dg/parse/crash80.C
+ 9312e5f821efad7b8541c62377238ab9  gcc/testsuite/g++.dg/parse/crash81.C
  5818f331167c496db06ad694932a1beb  gcc/testsuite/g++.dg/parse/crash9.C
  5940e29a523673e2c47048c21c11d678  gcc/testsuite/g++.dg/parse/ctor1.C
  6a4d22d64949d622a19d9e79684aad65  gcc/testsuite/g++.dg/parse/ctor10.C
*************** f75072de1c2abdfca708b732cbfafa89  gcc/te
*** 36341,36354 ****
  44d05d042dc79a79585f17b3bcda6ec0  gcc/testsuite/g++.dg/template/crash103.C
  1225a54926913e691b51137aef8b5d33  gcc/testsuite/g++.dg/template/crash104.C
  f07fd8a3820e9db30fbbab54d71dd891  gcc/testsuite/g++.dg/template/crash105.C
! f19bbfba4bb14d6e3ff2d65c8da05557  gcc/testsuite/g++.dg/template/crash106.C
  792c7b5aeb05b03e17861b41172963b0  gcc/testsuite/g++.dg/template/crash107.C
  01e34c6dbadd8c372851425abdb78adb  gcc/testsuite/g++.dg/template/crash108.C
  b3167df4bc44e634fce27a27e383e9a4  gcc/testsuite/g++.dg/template/crash109.C
  b9d6c3e2462b2f141eef9706fb73f7ad  gcc/testsuite/g++.dg/template/crash11.C
  bc34a5c1a684295dab662a89dc6697f6  gcc/testsuite/g++.dg/template/crash110.C
  f5c17c8c05a6c2d1d6b29054c88125a1  gcc/testsuite/g++.dg/template/crash111.C
! cafccb8ed409984b3ee5d4f9079957fa  gcc/testsuite/g++.dg/template/crash112.C
  eefdeb6db423d33961319f597beaebfa  gcc/testsuite/g++.dg/template/crash113.C
  9cf3fd890329936ea0594b310d9a64c1  gcc/testsuite/g++.dg/template/crash114.C
  ef817469f252f778c53765d1bbf1e129  gcc/testsuite/g++.dg/template/crash115.C
--- 36386,36399 ----
  44d05d042dc79a79585f17b3bcda6ec0  gcc/testsuite/g++.dg/template/crash103.C
  1225a54926913e691b51137aef8b5d33  gcc/testsuite/g++.dg/template/crash104.C
  f07fd8a3820e9db30fbbab54d71dd891  gcc/testsuite/g++.dg/template/crash105.C
! f7adbbf195de7e6c3dcc4fd4325a3b5c  gcc/testsuite/g++.dg/template/crash106.C
  792c7b5aeb05b03e17861b41172963b0  gcc/testsuite/g++.dg/template/crash107.C
  01e34c6dbadd8c372851425abdb78adb  gcc/testsuite/g++.dg/template/crash108.C
  b3167df4bc44e634fce27a27e383e9a4  gcc/testsuite/g++.dg/template/crash109.C
  b9d6c3e2462b2f141eef9706fb73f7ad  gcc/testsuite/g++.dg/template/crash11.C
  bc34a5c1a684295dab662a89dc6697f6  gcc/testsuite/g++.dg/template/crash110.C
  f5c17c8c05a6c2d1d6b29054c88125a1  gcc/testsuite/g++.dg/template/crash111.C
! 84836a0a390a3f18de7863dcbb8138a6  gcc/testsuite/g++.dg/template/crash112.C
  eefdeb6db423d33961319f597beaebfa  gcc/testsuite/g++.dg/template/crash113.C
  9cf3fd890329936ea0594b310d9a64c1  gcc/testsuite/g++.dg/template/crash114.C
  ef817469f252f778c53765d1bbf1e129  gcc/testsuite/g++.dg/template/crash115.C
*************** e55baeaf118c452b9f707b8236ee86b1  gcc/te
*** 36515,36521 ****
  bbc0cedc0c23e5084b73fd2bd7d12be0  gcc/testsuite/g++.dg/template/defarg9.C
  08e2480f72bcb72f3f0c69f74625bd4c  gcc/testsuite/g++.dg/template/delete1.C
  f64b5dcbfa3d3051a358c8d1c1e8a878  gcc/testsuite/g++.dg/template/delete2.C
! 405318b0ed9079d8a3152d85bfbe6fc3  gcc/testsuite/g++.dg/template/dependent-args1.C
  ba2918f2d50d14da19e142ac392345e1  gcc/testsuite/g++.dg/template/dependent-base1.C
  2cfeba0039a93060ff77245f34166e52  gcc/testsuite/g++.dg/template/dependent-base2.C
  1ea2af4911d47cd67d9e3ab837ef48bc  gcc/testsuite/g++.dg/template/dependent-base3.C
--- 36560,36566 ----
  bbc0cedc0c23e5084b73fd2bd7d12be0  gcc/testsuite/g++.dg/template/defarg9.C
  08e2480f72bcb72f3f0c69f74625bd4c  gcc/testsuite/g++.dg/template/delete1.C
  f64b5dcbfa3d3051a358c8d1c1e8a878  gcc/testsuite/g++.dg/template/delete2.C
! 4820802a013c4ae847e44af5c8e547b3  gcc/testsuite/g++.dg/template/dependent-args1.C
  ba2918f2d50d14da19e142ac392345e1  gcc/testsuite/g++.dg/template/dependent-base1.C
  2cfeba0039a93060ff77245f34166e52  gcc/testsuite/g++.dg/template/dependent-base2.C
  1ea2af4911d47cd67d9e3ab837ef48bc  gcc/testsuite/g++.dg/template/dependent-base3.C
*************** cbba22e9568932c7e9798b4143e8babf  gcc/te
*** 38763,38768 ****
--- 38808,38814 ----
  3fc97853b7f5a33a82d43b9c8b97e80a  gcc/testsuite/g++.dg/tree-ssa/ssa-sra-3.C
  21d667243f1873cc74a1060b9e5a0f15  gcc/testsuite/g++.dg/tree-ssa/ssa-store-ccp-1.C
  953a8a51c8a8a352b27ca078389cd3a7  gcc/testsuite/g++.dg/tree-ssa/string-1.C
+ cba0d4ad4eb20d07d7b8faa8a679415f  gcc/testsuite/g++.dg/tree-ssa/string-strlen-1.C
  23df56c1ec29f9a5d4f481355d17c3dc  gcc/testsuite/g++.dg/tree-ssa/strlenopt-1.C
  948d00fc979cc2bd7b0f86e83a4eb496  gcc/testsuite/g++.dg/tree-ssa/strlenopt-2.C
  2a5935f325533fa199bc7f5e3b2b36d5  gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C
*************** cd7f71199c7444b1ce9488ac14f59b43  gcc/te
*** 43556,43562 ****
  e64278e516f7ebae5481e326b54f28dd  gcc/testsuite/g++.target/arm/cde_mve.C
  817f6b8bbc13fc92c8ffbe3bcaf7963d  gcc/testsuite/g++.target/arm/interference.C
  34056a6f91190556f714d2205e45e695  gcc/testsuite/g++.target/arm/mve.exp
! fbd0705656c7aac934e685df748ed167  gcc/testsuite/g++.target/arm/mve/general-c++/nomve_fp_1.c
  173a3784153178b563544bb404ea5d2c  gcc/testsuite/g++.target/arm/mve/general-c++/vreinterpretq_1.C
  fefb1ea34abe2e49510cd8293f8c14e5  gcc/testsuite/g++.target/arm/no_unique_address_1.C
  bb7292912fa6d506586421d0df58412b  gcc/testsuite/g++.target/arm/no_unique_address_2.C
--- 43602,43608 ----
  e64278e516f7ebae5481e326b54f28dd  gcc/testsuite/g++.target/arm/cde_mve.C
  817f6b8bbc13fc92c8ffbe3bcaf7963d  gcc/testsuite/g++.target/arm/interference.C
  34056a6f91190556f714d2205e45e695  gcc/testsuite/g++.target/arm/mve.exp
! aa963809b3e294030584ae6ab010e997  gcc/testsuite/g++.target/arm/mve/general-c++/nomve_fp_1.c
  173a3784153178b563544bb404ea5d2c  gcc/testsuite/g++.target/arm/mve/general-c++/vreinterpretq_1.C
  fefb1ea34abe2e49510cd8293f8c14e5  gcc/testsuite/g++.target/arm/no_unique_address_1.C
  bb7292912fa6d506586421d0df58412b  gcc/testsuite/g++.target/arm/no_unique_address_2.C
*************** bda24fd764e95be6398892d48adf8be7  gcc/te
*** 44016,44021 ****
--- 44062,44069 ----
  e24f0e502cef393d2dbeeea684980651  gcc/testsuite/g++.target/riscv/mvc-symbols4.C
  6ccfbdc79a3df2fd72928d9b5b8e49eb  gcc/testsuite/g++.target/riscv/pr115458.C
  d8ba8c12676113bab781623c9b4c8a1f  gcc/testsuite/g++.target/riscv/pr119832.C
+ a8a857220d4221ed70fa20fdbdf0cfca  gcc/testsuite/g++.target/riscv/pr122692-run-1.C
+ 605f86e49704fde491263d58c2ccade7  gcc/testsuite/g++.target/riscv/pr122692-run-2.C
  4c45e102d6dd19ee08a476904b64542d  gcc/testsuite/g++.target/riscv/pr96759.C
  ac37e529bda1269045c3681cc4b425dd  gcc/testsuite/g++.target/riscv/pr97682.C
  daceaf1f0da7e5c955e4b13180536bca  gcc/testsuite/g++.target/riscv/redundant-andi.C
*************** b7d6fb3e14f86c09ea6f178c014109c3  gcc/te
*** 56322,56328 ****
  849572df683294a5f3ad6bb81ee17c53  gcc/testsuite/gcc.dg/pr116546.c
  8a82ecc27f5e5be1a3a5e59a3465ebcf  gcc/testsuite/gcc.dg/pr116588.c
  92460a4ebec7f60dcffc9eb68058c6b8  gcc/testsuite/gcc.dg/pr116726.c
! 4b92dd736564ce47555375b1e0f42355  gcc/testsuite/gcc.dg/pr116815.c
  3661cd7a3a7e0ed72337f96146acfa54  gcc/testsuite/gcc.dg/pr116850.c
  c1b2e797633e4c55b12e32de20ad49e3  gcc/testsuite/gcc.dg/pr116879.c
  8aed09e5b7a0e94c0ab7d89427bc9ee7  gcc/testsuite/gcc.dg/pr116887.c
--- 56370,56376 ----
  849572df683294a5f3ad6bb81ee17c53  gcc/testsuite/gcc.dg/pr116546.c
  8a82ecc27f5e5be1a3a5e59a3465ebcf  gcc/testsuite/gcc.dg/pr116588.c
  92460a4ebec7f60dcffc9eb68058c6b8  gcc/testsuite/gcc.dg/pr116726.c
! 409f923c5a0369bc3b49bed2d7ee1b6c  gcc/testsuite/gcc.dg/pr116815.c
  3661cd7a3a7e0ed72337f96146acfa54  gcc/testsuite/gcc.dg/pr116850.c
  c1b2e797633e4c55b12e32de20ad49e3  gcc/testsuite/gcc.dg/pr116879.c
  8aed09e5b7a0e94c0ab7d89427bc9ee7  gcc/testsuite/gcc.dg/pr116887.c
*************** f3420ae2cec7581a0ad483e1abb174f2  gcc/te
*** 56437,56442 ****
--- 56485,56491 ----
  5d7224a5e3a015d4a5682c4597843dae  gcc/testsuite/gcc.dg/pr121391-1.c
  a900268f8486ddee095c80302941ad60  gcc/testsuite/gcc.dg/pr121391-2.c
  205897ef272ce576adc8067b35b643a8  gcc/testsuite/gcc.dg/pr121468.c
+ c43dd17628b8fb1f84264b202bffe1c1  gcc/testsuite/gcc.dg/pr121519.c
  a0e82361440276cacba8161b406fa08c  gcc/testsuite/gcc.dg/pr121619.c
  4a0b062157a946d90ff3c34224ea0c66  gcc/testsuite/gcc.dg/pr121663.c
  596e137d1ef1fc5f142c61692ba512ae  gcc/testsuite/gcc.dg/pr121678.c
*************** a0e82361440276cacba8161b406fa08c  gcc/te
*** 56445,56450 ****
--- 56494,56501 ----
  3675df2622072bf0e5cccbf94e93a50f  gcc/testsuite/gcc.dg/pr122126_vextr.c
  b975ebfa27ac446e553bacbb75421590  gcc/testsuite/gcc.dg/pr122126_vset.c
  ea90b28181a941740c845e0095310a27  gcc/testsuite/gcc.dg/pr122200.c
+ afbbdc9160c7bbb463b8a9a0ccecc1ec  gcc/testsuite/gcc.dg/pr122756.c
+ 6f902818ec608b0949c72df134c134a3  gcc/testsuite/gcc.dg/pr122773.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** d9ab318bf88df260c040cad6b5bc8c90  gcc/te
*** 60237,60242 ****
--- 60288,60294 ----
  4be6dbd9c5c7d7ab2fa698210dd2d02c  gcc/testsuite/gcc.dg/torture/pr122629-1.c
  217270b9747dc47945d67f9c656c4520  gcc/testsuite/gcc.dg/torture/pr122629-2.c
  03db6841f6edfc51bda3ddb9cad31dc4  gcc/testsuite/gcc.dg/torture/pr122637-1.c
+ 096c0c5e2932e96be4d50815255488fa  gcc/testsuite/gcc.dg/torture/pr122701.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** ac00cf20aa901dad53cb68baa97cc1f8  gcc/te
*** 61670,61675 ****
--- 61722,61734 ----
  efa2bb6bd9a362254dd3391a43a800d2  gcc/testsuite/gcc.dg/tree-ssa/backprop-6.c
  ad829088c2d182fe6e84645dc44f07e6  gcc/testsuite/gcc.dg/tree-ssa/bit-assoc.c
  b0045d2d08c49e824e2e272c7dcb35d1  gcc/testsuite/gcc.dg/tree-ssa/bit1neg-1.c
+ 5d6bac4cd841cbdee08ff003c81dc559  gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.1.c
+ 0eea1a3b4817d9939a653b3974ae2c83  gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.2.c
+ a61bc4cf12b8ecc7dae5ef81d62826bf  gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.3.c
+ 7e8711b5cbde855df7c2ad3941a805a4  gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.4.c
+ e7bb8bd5e98baa50d2da17c628260307  gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.5.c
+ 216ac83b68fa6ba61ff446c9fe1a0b40  gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.6.c
+ f818656fe314cf91a442d5c3d9de320d  gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.h
  8dbf4ef5de01b617ef64b9e8fdf74796  gcc/testsuite/gcc.dg/tree-ssa/bitcmp-1.c
  bb4b8f021ae28e9eb1296a3f9c98bb4e  gcc/testsuite/gcc.dg/tree-ssa/bitcmp-2.c
  b99a791d3dbef7a8c3f50eb93840c713  gcc/testsuite/gcc.dg/tree-ssa/bitcmp-3.c
*************** bf09afbba6493ac87c2ff39ded34ec66  gcc/te
*** 64750,64755 ****
--- 64809,64815 ----
  aca7d2373617a1be34881ac1c7f666c3  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-2.c
  45453c03b2d83b8c253a510f6a157bdd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-3.c
  220ca37927f70593ad75a493a099ae58  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-4.c
+ af1a8b32e71c4979a967ab326a54bace  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr122573.c
  adf307e0a12bcc8d31b97d83adb3e848  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c
  ec5c6a4d5052e20e84aa5eb95742d36f  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c
  e094ee1a12f158fa8be372b1974af637  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr69297.c
*************** b3d1d50601e1d014727ad5f5b5569a98  gcc/te
*** 65531,65537 ****
  fd61a3a4acd9d7431e7535472d55145c  gcc/testsuite/gcc.dg/vect/slp-6.c
  894b51d5fa3a930384f6e5c1b7c7c686  gcc/testsuite/gcc.dg/vect/slp-7.c
  cd278a5b32bf0e2c064277bbe8d933a8  gcc/testsuite/gcc.dg/vect/slp-8.c
! d25431ed7f2be1237c16a48249905766  gcc/testsuite/gcc.dg/vect/slp-9.c
  5acad64e250ee1b7e2bd12bc9ea7d6d1  gcc/testsuite/gcc.dg/vect/slp-cond-1.c
  e3434b5fbbd9da1602aeb7cb6c89079b  gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c
  789b56f01ceac27064c9ad47d1e90159  gcc/testsuite/gcc.dg/vect/slp-cond-2.c
--- 65591,65597 ----
  fd61a3a4acd9d7431e7535472d55145c  gcc/testsuite/gcc.dg/vect/slp-6.c
  894b51d5fa3a930384f6e5c1b7c7c686  gcc/testsuite/gcc.dg/vect/slp-7.c
  cd278a5b32bf0e2c064277bbe8d933a8  gcc/testsuite/gcc.dg/vect/slp-8.c
! ee96509a9a84e59990ca558f739e9e58  gcc/testsuite/gcc.dg/vect/slp-9.c
  5acad64e250ee1b7e2bd12bc9ea7d6d1  gcc/testsuite/gcc.dg/vect/slp-cond-1.c
  e3434b5fbbd9da1602aeb7cb6c89079b  gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c
  789b56f01ceac27064c9ad47d1e90159  gcc/testsuite/gcc.dg/vect/slp-cond-2.c
*************** f611850bdcf6c79cc21bf0f12c5469e8  gcc/te
*** 65575,65580 ****
--- 65635,65641 ----
  72470473142b614c9abbb4961ae363e0  gcc/testsuite/gcc.dg/vect/slp-reduc-11.c
  2b55baa2aeb47417a231e321d018033f  gcc/testsuite/gcc.dg/vect/slp-reduc-12.c
  efeaa043d177e194cd96123499e925b1  gcc/testsuite/gcc.dg/vect/slp-reduc-13.c
+ 6eed17012acaa278bddfae1307bc5559  gcc/testsuite/gcc.dg/vect/slp-reduc-14.c
  13f8e9309546363711eaedb177e2c8b9  gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
  f51f95ff41057eaf23cde404d8d413fa  gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
  89c86f9f96410c8bc70b4ce593a92d1e  gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
*************** d317da023f28bcc842f91f92f1b90a87  gcc/te
*** 66249,66254 ****
--- 66310,66317 ----
  4b150e87dac554fceef613b915933fc7  gcc/testsuite/gcc.dg/vect/vect-iv-9.c
  90c475a933e6b5782b7addead927023e  gcc/testsuite/gcc.dg/vect/vect-ivdep-1.c
  493ca8152f570c674714f0d614c3c345  gcc/testsuite/gcc.dg/vect/vect-ivdep-2.c
+ 9c782f6879db3473c9e3352c24b1e831  gcc/testsuite/gcc.dg/vect/vect-licm-hoist-1.c
+ eb1a21b7f2440c971dde0756255f12e8  gcc/testsuite/gcc.dg/vect/vect-licm-hoist-2.c
  ff7f3590811cf5cc9f69a38040d6fc4b  gcc/testsuite/gcc.dg/vect/vect-live-1.c
  66de5dcfcdd3ea72be055b06dbb21609  gcc/testsuite/gcc.dg/vect/vect-live-2.c
  8c0e3e397a19ebe40d2506b17b99faa7  gcc/testsuite/gcc.dg/vect/vect-live-3.c
*************** a0fd49ab473516c9610de45e68c1d2a2  gcc/te
*** 66455,66460 ****
--- 66518,66524 ----
  137e839c836da0efd1abf91162990b5a  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-1.c
  6e03f3ea11f72547023ed45e5e473a05  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-2.c
  8973a625b6511f40e4e03b24bbcf3159  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-3.c
+ ba18f9c5868c96055013b2f288be87c2  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-add-1.c
  1c446ff114c972abcfb111d361bd107f  gcc/testsuite/gcc.dg/vect/vect-reduc-cond-sub.c
  78bdeb760d9d97cdc35bbb827cdcf29d  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-1.c
  8766f1e32dd79e5d368ecf7021fdac0f  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-10.c
*************** b0cd25f77f52d4eebc59d342a34d3672  gcc/te
*** 66595,66600 ****
--- 66659,66667 ----
  fcf52e93fe21db4ebf8416abf92ac7cb  gcc/testsuite/gcc.dg/vect/vect-simd-clone-2.c
  3de98d5a58d3eb998fd2261369af70cd  gcc/testsuite/gcc.dg/vect/vect-simd-clone-20.c
  be8935c3fb2fa21e3b6bb3a252110433  gcc/testsuite/gcc.dg/vect/vect-simd-clone-21.c
+ bd962c6473ad0b81f41b22787e8c356c  gcc/testsuite/gcc.dg/vect/vect-simd-clone-22.c
+ 0de2b2799e45a60c69b93dd9f859a18e  gcc/testsuite/gcc.dg/vect/vect-simd-clone-22a.c
+ 787d8cb07fc68e197a9ebf9e19f0f792  gcc/testsuite/gcc.dg/vect/vect-simd-clone-23.c
  cff83413760df8eec4e9c7187ee7ada9  gcc/testsuite/gcc.dg/vect/vect-simd-clone-3.c
  0d3326ce976d42f0a96b625fa721ab32  gcc/testsuite/gcc.dg/vect/vect-simd-clone-4.c
  bc0f68b226839ed569e371de527479fe  gcc/testsuite/gcc.dg/vect/vect-simd-clone-5.c
*************** bf526d120c538bd714985ac66c46f7bb  gcc/te
*** 68845,68850 ****
--- 68912,68918 ----
  fd8128a2ace2daef0e57c5d400699061  gcc/testsuite/gcc.target/aarch64/pr122069_3.c
  660be217a5e8446a50ffef18eb8fa6e0  gcc/testsuite/gcc.target/aarch64/pr122069_4.c
  00a887e152d5697873b564b81bde2621  gcc/testsuite/gcc.target/aarch64/pr122190.c
+ 43f64e2ecaed3e7e114e33394cdb9066  gcc/testsuite/gcc.target/aarch64/pr122763.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
*************** e21253a0b461c19afa3bd87ea01f5460  gcc/te
*** 69102,69108 ****
  231fbc62550eac68af09fe0296ecc2b7  gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_3.c
  597879377be3eeffce3944b61e8c8aec  gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_4.c
  cddb2940de62ee127a5f70eb1ee8525d  gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_5.c
! 5c902aa373684ae8f9089744aa438e3a  gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c
  504f31916b3f274eea930e1fc7da2e3c  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons.x
  22d82645ad53737e5bfbe2ba9b98cc05  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_1.c
  f1c9e2aa3c435c9efdc1ea83da4e1eeb  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_2.c
--- 69170,69176 ----
  231fbc62550eac68af09fe0296ecc2b7  gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_3.c
  597879377be3eeffce3944b61e8c8aec  gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_4.c
  cddb2940de62ee127a5f70eb1ee8525d  gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_5.c
! 2e0c31554895b90848474b60de0e3b87  gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c
  504f31916b3f274eea930e1fc7da2e3c  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons.x
  22d82645ad53737e5bfbe2ba9b98cc05  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_1.c
  f1c9e2aa3c435c9efdc1ea83da4e1eeb  gcc/testsuite/gcc.target/aarch64/simd/int_comparisons_2.c
*************** afa7e585db839996b7ab991a21ae5c22  gcc/te
*** 69141,69146 ****
--- 69209,69215 ----
  3bdc28b0037a305b18bdc0489c55e433  gcc/testsuite/gcc.target/aarch64/simd/ssra.c
  6cc70e998362cc09840837fba67910d8  gcc/testsuite/gcc.target/aarch64/simd/trn_zip_p64_1.c
  5de7a6e0814e5fb97ee3b61393d07d26  gcc/testsuite/gcc.target/aarch64/simd/usra.c
+ 696125d25702feaec88cb8239775e1a2  gcc/testsuite/gcc.target/aarch64/simd/usubl2.c
  433cb4ec4520c807f8d4a73e400502ae  gcc/testsuite/gcc.target/aarch64/simd/vadd_poly_1.c
  674bb632e572dd98991d41294ce32e90  gcc/testsuite/gcc.target/aarch64/simd/vaddlv_1.c
  644c7b6ceda9f8b60fb839e127602e3c  gcc/testsuite/gcc.target/aarch64/simd/vbsl_f64_1.c
*************** b1f34999111510e2f313342976d93991  gcc/te
*** 73216,73221 ****
--- 73285,73292 ----
  c6ea286d39fa074b2f5ebe016371f47e  gcc/testsuite/gcc.target/aarch64/sve/fnmsb_1.c
  6e9ddbc9e76e5e00bba8ebfd65599aa7  gcc/testsuite/gcc.target/aarch64/sve/fold_div_zero.c
  8881cd4ed9b7963e01c6ddb91d979872  gcc/testsuite/gcc.target/aarch64/sve/fold_mul_zero.c
+ c88a31bae93602f8e799fc7c08ccddb9  gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_1.c
+ d78e13694c172efacf8d824d3b5062b1  gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_2.c
  09f24f114bf0079fa6cd77c56a4ab54c  gcc/testsuite/gcc.target/aarch64/sve/fp_arith_1.c
  d4b418cc5537148fb9700983744cb6e1  gcc/testsuite/gcc.target/aarch64/sve/frinta_1.c
  7150ced0ec1abb3083a5755508b2f528  gcc/testsuite/gcc.target/aarch64/sve/frinti_1.c
*************** a8ef1d01a0865b83aab1825f39789150  gcc/te
*** 76148,76153 ****
--- 76219,76225 ----
  faeadd9b775f7efdb556fab9131531ce  gcc/testsuite/gcc.target/arc/enter-dw2-1.c
  44b5768bc6140e92ed2010b885a0f7bb  gcc/testsuite/gcc.target/arc/extvsi-1.c
  1739e65eb5e46676f54b11ff2d56e570  gcc/testsuite/gcc.target/arc/extvsi-2.c
+ 2a522def2cd4fe765d9e9ad13c133af2  gcc/testsuite/gcc.target/arc/extvsi-3.c
  d9d9cdf928da4c195b1a99dad0aeda06  gcc/testsuite/gcc.target/arc/extzv-1.c
  548254c3a241c8551ebb0aa5d94e45c4  gcc/testsuite/gcc.target/arc/firq-1.c
  4e583df9e864022980d99fd265bb3ab5  gcc/testsuite/gcc.target/arc/firq-2.c
*************** b28f6252aaf3288f7754a0c50786df34  gcc/te
*** 76228,76233 ****
--- 76300,76306 ----
  a55caab34589aaad4b44c2b23036a38a  gcc/testsuite/gcc.target/arc/mxy.c
  cb20618eea943bb5260b4d5b424f7756  gcc/testsuite/gcc.target/arc/naked-1.c
  77013bd7a2cc422045b496b9aa750111  gcc/testsuite/gcc.target/arc/naked-2.c
+ 730ad9e34f796bf1bd99d30e19c8e2c1  gcc/testsuite/gcc.target/arc/no-barrel-shifter.c
  c2635eb729f09720a184a5826e218569  gcc/testsuite/gcc.target/arc/no-dpfp-lrsr.c
  44056921f356727d2dbdf06018554b44  gcc/testsuite/gcc.target/arc/nps400-1.c
  58fc9721ecffbfdff197d4585c412004  gcc/testsuite/gcc.target/arc/nps400-cpu-flag.c
*************** bd73c95524d9f1019271a9aa2e06bcfa  gcc/te
*** 76778,76784 ****
  9806585bc3a2be7f7426638320d9394d  gcc/testsuite/gcc.target/arm/fp16-compile-ieee-7.c
  f091bc050a5c31d7a6ceeca78aa27839  gcc/testsuite/gcc.target/arm/fp16-compile-ieee-8.c
  3d7448d9e0e2a2cb30266768959fc9af  gcc/testsuite/gcc.target/arm/fp16-compile-ieee-9.c
- d777e2316d0e2a16e9703621b8fb9659  gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c
  60b76176e5d7246f095182cd02e97e14  gcc/testsuite/gcc.target/arm/fp16-compile-none-2.c
  e1bf55d078ccc0f4928c49eb854cdd2c  gcc/testsuite/gcc.target/arm/fp16-compile-vcvt.c
  8d796d7bd29e4649bde373195abd883c  gcc/testsuite/gcc.target/arm/fp16-inf.c
--- 76851,76856 ----
*************** ab72cfcef8400549b3b4d4d318e4955e  gcc/te
*** 76960,76965 ****
--- 77032,77044 ----
  08cf164f5014eeb82272fbef22e3878f  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstr.c
  4211e73819bb661ddd18271cf8dab0e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_vstr_p.c
  cfb4125c4550d5cf153bac3dcd2886ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c
+ e14ba2541ff3c89f58cdffd7fb521907  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f16.c
+ 265568cd3de7b1069f8262b440a9fa8e  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f32.c
+ bf378714d79fc87ae8d2ba5ba38abac9  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f16.c
+ 15aec943165a84d58ffd2c936ae9d803  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f32.c
+ 84354c69eb2873c22b365b20f28334de  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-4-f16.c
+ 3b67b13f1d91d7d82ceff8afa29b36dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f16.c
+ 63d6ed204826c1801633a1d22c899278  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f32.c
  c6565beafc869833d2a6dd9484818c2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr118332.c
  1073bc89c952fc9eb9cdb6a1efd78a78  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122175.c
  b52bd79f0b568c75adaa75c022b0e2a0  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr122223.c
*************** fb0ced273ef16306ca42c89de5e05c4c  gcc/te
*** 77718,77733 ****
  bd107c34bdf08a12683facdbe50fc31a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f32.c
  33fd50313bb612ca3d11f34913c71905  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c
  dff25999b2db1e26ece4cb6a143094ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c
! b01552c789266c987118b7195eba4894  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c
! 11ba3930de77fed6c8f0d1978d3091ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
! 3ce166a22b1f4fc4c27c7993b3e59937  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
! e569afc199dbae8029c3c45ae7b1146b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
! 118164a375f651a3817e6fa89c2b9482  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
! 8fa92932441a04bfec453dd3bf9027c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
! bc931a6565f86d708e452c006a2f2d0c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
! d762f3b873217bbad76a2cccbb6f3c3a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
! a3b7d26a1d14371254a3c36462110c35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
! 7a61457044c43af29fefd61e3eb1e6a3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
  456367251ea09d02e1b559ac0fda6cd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c
  666a634c92812f22f3e579287bf86de2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c
  90add2bcd9e418fec40810e0db7340d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c
--- 77797,77812 ----
  bd107c34bdf08a12683facdbe50fc31a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f32.c
  33fd50313bb612ca3d11f34913c71905  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c
  dff25999b2db1e26ece4cb6a143094ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c
! 6d7ed90e1f533a2224b39406bc8fda0d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c
! 8c7ddb5708dee27f673441b55fcdea25  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
! 9fcee01d34285aa8f1c7be566d1acdc3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
! 33ceb385864d79073ae67e051ffb51ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
! 9417af4a54ca72b71160b6b56151a2a2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
! 1a9332a8f5a1b9fb0e1a8bc340319255  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
! 46b8ff1b7ebca6787608019fc4445985  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
! f9e80e8ea2cb03f67d231209b66ba250  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
! 1344c2ac11b9262494ab8e35fbb1ef04  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
! 2fbaa8a701dfaac06e10944124c98850  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
  456367251ea09d02e1b559ac0fda6cd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c
  666a634c92812f22f3e579287bf86de2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c
  90add2bcd9e418fec40810e0db7340d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c
*************** eecc04e0264dc2ab8b3824ea39698090  gcc/te
*** 79028,79043 ****
--- 79107,79132 ----
  a42ff09d93993a96614fefa3d6e96505  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c
  a719098a51cc49f83ff59264834d4b4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c
  af70db4174c1713b590a6d5ba294aa2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c
+ 129aeadac921d2ca72b2f8de15e511dd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16_bounds.c
  25befadfa1ca09ed85081c818a46c071  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c
+ 893f42f63e7d110bb31fc90b9cb4af73  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32_bounds.c
  c9fa67c20fec9ef097315c2e0664eb2f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c
+ b5577408eaab901f48139ae4dfda8198  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16_bounds.c
  0e904d54afafee544aac46db74a0fb78  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c
+ 17e64233409cfc5dfd9bdcf727340f66  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32_bounds.c
  def367f33eb6f2d3b377c08209d4e3ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c
+ bbf421c5707865a2bfadcd27f1925803  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64_bounds.c
  8260100dce01c5f54338df06aed56da3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c
+ 6267831047491beeeb715ac403fe68ac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8_bounds.c
  bfc6037993ab8de2e59e1fc18bd8c747  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_su64.c
  3aebb2229ee3c92f32168bc434c06dcc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c
+ 2f6704ee691108310872bb899dc52c9b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16_bounds.c
  b6849ec20ab5271453eb6a6910746ff2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c
+ 2e7fc0bab16e6d2e14d2f27d46ac3942  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32_bounds.c
  770546f9f98bbba226ff4a00ebb7d508  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c
+ 305794d5be59ffc0cd058f735398a5f4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64_bounds.c
  ed0f72d390ea11c3168e5e335bdec21d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c
+ eb79a73a3a3d592dcb0a6326c0e45f78  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8_bounds.c
  43bf3461554f8584a060f10ca2b64b30  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c
  90cc10b3fc55e08237e3835d79ec63d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c
  f4a3da6eaaa7a3e3bef7efe2a0c4d05d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c
*************** c1fc8c403bea321e9edbec8f46fe2fd8  gcc/te
*** 84743,84748 ****
--- 84832,84838 ----
  283b4877d58ced6f0c220db178d854a5  gcc/testsuite/gcc.target/i386/avx512vl-pr100648.c
  94073157c7c18d465b0898342cfaf127  gcc/testsuite/gcc.target/i386/avx512vl-pr101472.c
  49cfe28a332e1719c1056e2074f41051  gcc/testsuite/gcc.target/i386/avx512vl-pr103750-1.c
+ 4e8a8e7fc8841ea09a2ef875178e3364  gcc/testsuite/gcc.target/i386/avx512vl-pr103750-2.c
  283543f4907a911dc1da7cea2581ece6  gcc/testsuite/gcc.target/i386/avx512vl-pr106721.c
  1156c3947fee64640053c33ec3a1d627  gcc/testsuite/gcc.target/i386/avx512vl-pr112435-1.c
  de717f1cf1bd87731a52727c854e17f3  gcc/testsuite/gcc.target/i386/avx512vl-pr112435-2.c
*************** a23e3aee9cb7b8d2fe5895c930cac402  gcc/te
*** 87599,87604 ****
--- 87689,87695 ----
  beaa59876937a489a8ce9f276a586c83  gcc/testsuite/gcc.target/i386/pr122457.c
  b5fef8fb540e17f32442a50d6ee40f1e  gcc/testsuite/gcc.target/i386/pr122518.c
  93c2651b636b33af98942b4d04ed3a85  gcc/testsuite/gcc.target/i386/pr122534.c
+ 609faa828d84f786709fd1c4f7c03431  gcc/testsuite/gcc.target/i386/pr122598.c
  f99f88a6e994ad6e55e065e41bc58f8f  gcc/testsuite/gcc.target/i386/pr12329.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
*************** f2246fb526840289cc94bd7e8b0c994a  gcc/te
*** 90541,90550 ****
--- 90632,90646 ----
  9e17a1e6928bcaccff7de2228ffe1189  gcc/testsuite/gcc.target/i386/vect-double-2.c
  4c9ce05e33ac7d3784a3f13d53e110ed  gcc/testsuite/gcc.target/i386/vect-double-2a.c
  96ca3bdabd9bff8485a81bfe7ace5884  gcc/testsuite/gcc.target/i386/vect-epilogues-1.c
+ cef1d09ae109a88edd147d2165e4038d  gcc/testsuite/gcc.target/i386/vect-epilogues-10.c
  17c2d170d498fc9c2649c0cb8d5bd3b9  gcc/testsuite/gcc.target/i386/vect-epilogues-2.c
  0cdc2fbe9ff36733bd7f8f345b352aa9  gcc/testsuite/gcc.target/i386/vect-epilogues-3.c
  96d83c1100ee48a3e94fc3aea99f8c6b  gcc/testsuite/gcc.target/i386/vect-epilogues-4.c
  bd48480826774a1e0edcea9a018ebf1b  gcc/testsuite/gcc.target/i386/vect-epilogues-5.c
+ 4a3752854f880672ab695720ea3d815d  gcc/testsuite/gcc.target/i386/vect-epilogues-6.c
+ 435fdad515e19a24fb9864655d011255  gcc/testsuite/gcc.target/i386/vect-epilogues-7.c
+ a358ef7adfa9247678cbb184ee0193f6  gcc/testsuite/gcc.target/i386/vect-epilogues-8.c
+ 1e7f3c1715eabbf2bb11450edbe63326  gcc/testsuite/gcc.target/i386/vect-epilogues-9.c
  44589af45370ba4865592d1e9e717b40  gcc/testsuite/gcc.target/i386/vect-float16-1.c
  22c6e6a37c837040af7566c0ebd70233  gcc/testsuite/gcc.target/i386/vect-float16-10.c
  412a2e12fa51e461ac9fc29d0bcadfae  gcc/testsuite/gcc.target/i386/vect-float16-11.c
*************** c50397e875cfec6d318c0ef41dbe3596  gcc/te
*** 90576,90581 ****
--- 90672,90678 ----
  92f0334cc6aa244e46623ffea17f19a7  gcc/testsuite/gcc.target/i386/vect-pr113078.c
  b24ba66b3104508ec7610b49a0fdd32f  gcc/testsuite/gcc.target/i386/vect-pr115385.c
  890caaae0bae6a4b8a542ac986a9465e  gcc/testsuite/gcc.target/i386/vect-pr115895.c
+ 207e7402dad5569d0ba57a38fee6a48d  gcc/testsuite/gcc.target/i386/vect-pr122736.c
  515f451843087285cae4273f2866f93b  gcc/testsuite/gcc.target/i386/vect-pr67800.c
  2d95d6fd458e66a2e6ff98ed01238327  gcc/testsuite/gcc.target/i386/vect-pr82426-2.c
  7677260c5e9615f8adc02d0d8774dfd6  gcc/testsuite/gcc.target/i386/vect-pr82426.c
*************** e21ed5cafc7ccdbe2f139e72a1f702e1  gcc/te
*** 90877,90882 ****
--- 90974,90981 ----
  0ef8c999aed72455a824deb73e462b46  gcc/testsuite/gcc.target/loongarch/bstrins-2.c
  5e8c1d5ca86d29f8a0ee54ea74388ce1  gcc/testsuite/gcc.target/loongarch/bstrins-3.c
  70325dffd4df0df0528c85bd49dbc2f8  gcc/testsuite/gcc.target/loongarch/bstrins-4.c
+ 83cf2c4fac5fe267840ffbd21284e610  gcc/testsuite/gcc.target/loongarch/bstrins-5.c
+ 413e1e730a03ef2e6fbdbc5826f0b0b0  gcc/testsuite/gcc.target/loongarch/bstrins-6.c
  d6d72f67d9c86c49fe483871b08cc2c0  gcc/testsuite/gcc.target/loongarch/bstrpick_alsl_paired.c
  ca8ab2fdd097231be9dd3f7bfdcebb7b  gcc/testsuite/gcc.target/loongarch/builtin_thread_pointer.c
  9c31e2b0b719536d37a3b720ea2be5ad  gcc/testsuite/gcc.target/loongarch/bytepick_combine.c
*************** acf1fac916847c2064b8d2bbb6535828  gcc/te
*** 91030,91035 ****
--- 91129,91136 ----
  d1eee63ffd26f53d2b788cb0eb55f5a6  gcc/testsuite/gcc.target/loongarch/pr121875.c
  1dd25b33f6fd8d4c4dc750865d86f404  gcc/testsuite/gcc.target/loongarch/pr121906.c
  4fb67de6ceaa4d3d0dfff318541b470b  gcc/testsuite/gcc.target/loongarch/pr122097.c
+ 0626ac54385b7d00394be7a0b09850a1  gcc/testsuite/gcc.target/loongarch/pr122695-1.c
+ fb640df1e5eb969859e5c360f608dec4  gcc/testsuite/gcc.target/loongarch/pr122695-2.c
  d8ba98681e844aa3cab41dadb293ad62  gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1-2.c
  94f43e2ce509bac58eba454a85dd7a33  gcc/testsuite/gcc.target/loongarch/pragma-la64V1_1.c
  1eac553341d725c6e59615b593aedb0d  gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c
*************** c4a5bf3904159f6c4f6e17ee0da90889  gcc/te
*** 91121,91127 ****
  3ed720b4bc387e4269bf3226dd3fdfe5  gcc/testsuite/gcc.target/loongarch/vect-widen-sub.c
  a78d6c1fd79f5c1d8a67aa38a8dc8943  gcc/testsuite/gcc.target/loongarch/vector-func-attr-1.c
  58826efcc90333c707edc8514608dfc0  gcc/testsuite/gcc.target/loongarch/vector-pragma-attr-1.c
! e76c202c8341e3db8dceb097f5fb590e  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-builtin.c
  fe6faa6ba0306efed8c468b31f250333  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-divf.c
  63c0a41070b08339598b12401f6f0275  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-frecipe-builtin.c
  269e58b3141de7803fd2da2ee4583a7c  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-recip-divf.c
--- 91222,91228 ----
  3ed720b4bc387e4269bf3226dd3fdfe5  gcc/testsuite/gcc.target/loongarch/vect-widen-sub.c
  a78d6c1fd79f5c1d8a67aa38a8dc8943  gcc/testsuite/gcc.target/loongarch/vector-func-attr-1.c
  58826efcc90333c707edc8514608dfc0  gcc/testsuite/gcc.target/loongarch/vector-pragma-attr-1.c
! ff04753758847e0200cd4aee08b80f4a  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-builtin.c
  fe6faa6ba0306efed8c468b31f250333  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-divf.c
  63c0a41070b08339598b12401f6f0275  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-frecipe-builtin.c
  269e58b3141de7803fd2da2ee4583a7c  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-recip-divf.c
*************** ec4196a5693a2d78e09e090c4cfa571d  gcc/te
*** 91130,91141 ****
  a063d665153ff8caea1f55d2d763456e  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-rsqrt.c
  3f0598d49446f929c98c1ebc8637dad6  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-shift-sameimm-vec.c
  775b8d8b29c403d9447185837f4a85a9  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-sqrtf.c
  fc2eff72ff94e1f24b1ded5d567647ec  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-1.c
  c34cbb6754e054b443b5e2e9d65d81ac  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-2.c
  99315ec4e2497c897d8c2f3d9d97cc3c  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-3.c
  46115a5ef060ecd6c057d311e492cbba  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-construct-opt.c
  3c28a8c37a3b35a9bd2a46f1805cd159  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-1.c
! e74ff91fd52e580524be0561ebb0a0cf  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c
  d845651e74eb8d513a9364ca9fc69afa  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vseteqz.c
  f5d040911d7e323a3e9559cb230d0813  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xorsign-run.c
  ed617e6c7440142c020620f5bab5b207  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xorsign.c
--- 91231,91243 ----
  a063d665153ff8caea1f55d2d763456e  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-rsqrt.c
  3f0598d49446f929c98c1ebc8637dad6  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-shift-sameimm-vec.c
  775b8d8b29c403d9447185837f4a85a9  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-sqrtf.c
+ f4767f7e42f7ea8cf7def350ea5c64f2  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-struct-move.c
  fc2eff72ff94e1f24b1ded5d567647ec  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-1.c
  c34cbb6754e054b443b5e2e9d65d81ac  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-2.c
  99315ec4e2497c897d8c2f3d9d97cc3c  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vcond-3.c
  46115a5ef060ecd6c057d311e492cbba  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-construct-opt.c
  3c28a8c37a3b35a9bd2a46f1805cd159  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-1.c
! 1d6158e1f121c126a0fae3e7dcca1254  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c
  d845651e74eb8d513a9364ca9fc69afa  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vseteqz.c
  f5d040911d7e323a3e9559cb230d0813  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xorsign-run.c
  ed617e6c7440142c020620f5bab5b207  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xorsign.c
*************** eabada13f32856fa41e6cac69f561cf4  gcc/te
*** 91230,91235 ****
--- 91332,91338 ----
  766453875b0d43b6c8bb99abbe5b9557  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvinsgr2vr.c
  26672a5dbc3041697a045017e0cde737  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvinsve0.c
  77f3d7a82751f9eb11467be3889070b2  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvld.c
+ ddbedf8146075e517a459f40ac70f9e4  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvldi-2.c
  748ffb4edd4561ec7feb3fec60b26a91  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvldi.c
  0a8c73176bb28027c671b5d568ef09bb  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvldrepl.c
  bbd1785f04afb1fd3106fdd0526be638  gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvmadd.c
*************** d67d0b2dd1af9cfdc8605e911d35033d  gcc/te
*** 91348,91354 ****
  77fb9fd3de6fc5b3b1a643753b89d93c  gcc/testsuite/gcc.target/loongarch/vector/lasx/vect-insert-128-256.c
  d26741a5156634ff29c61fea114bc141  gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp
  5d55305c4d66b32dd004f424d4a0a0fb  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-abs.c
! e9f9a02f0c23d753d9f3a17d45f85db1  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-builtin.c
  a8ab1fe3de13920929161ff744d0be79  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-divf.c
  3ca33073dc5707d30e1c86e7cff80a83  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-frecipe-builtin.c
  7fd4b4d80ef3b95b73b71b66d9e6cd92  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-mov-1.c
--- 91451,91457 ----
  77fb9fd3de6fc5b3b1a643753b89d93c  gcc/testsuite/gcc.target/loongarch/vector/lasx/vect-insert-128-256.c
  d26741a5156634ff29c61fea114bc141  gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp
  5d55305c4d66b32dd004f424d4a0a0fb  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-abs.c
! 6a9047e8dd670a2f365e1b54d968da7b  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-builtin.c
  a8ab1fe3de13920929161ff744d0be79  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-divf.c
  3ca33073dc5707d30e1c86e7cff80a83  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-frecipe-builtin.c
  7fd4b4d80ef3b95b73b71b66d9e6cd92  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-mov-1.c
*************** e84275b7667c2d79a9ec36554a0a0ff8  gcc/te
*** 91392,91398 ****
  cd8d19881388a5f6b39dfcba7f117cde  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vcond-2.c
  b2b648fbb2867c84e9f49bfc3fce51ee  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vdiv-1.c
  31a97a86424b3714d7f6dccb4be9d209  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vdiv-2.c
! 93970ab0ec124181f94e7cf40603c7b3  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vec-construct-opt.c
  d36022645c83931e253e55310ed5e242  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vexth-1.c
  97d7f446a9a9bd22f76abc0db7d87330  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vexth-2.c
  727349918eaca621d2c907e505552319  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vextl-1.c
--- 91495,91501 ----
  cd8d19881388a5f6b39dfcba7f117cde  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vcond-2.c
  b2b648fbb2867c84e9f49bfc3fce51ee  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vdiv-1.c
  31a97a86424b3714d7f6dccb4be9d209  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vdiv-2.c
! 5158c7079bdf006d810f548286d2ad3d  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vec-construct-opt.c
  d36022645c83931e253e55310ed5e242  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vexth-1.c
  97d7f446a9a9bd22f76abc0db7d87330  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vexth-2.c
  727349918eaca621d2c907e505552319  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vextl-1.c
*************** e2aeb686c929d21655a56b41ff82b987  gcc/te
*** 91449,91454 ****
--- 91552,91558 ----
  f9f6637e34ded5af025ddf799b0dd1f7  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vilvl.c
  04017bc91621d05d67abd13e9c9705cc  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vinsgr2vr.c
  9b2425b4d722accf67b41a8487f0fa83  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vld.c
+ ff7ee617e3113467b709dcde88457b18  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vldi-2.c
  6ff8009674b1b0aacde6adf1cc03478d  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vldi.c
  9a97926cb00a679d29797fdb19a15f8e  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vmadd.c
  4e790fa00c3e4756b044c3ee8eafc818  gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vmaddwev-1.c
*************** ee9aafb340a5c2597a6f656ccbd8a374  gcc/te
*** 91561,91567 ****
  32fede0d9373ef10c92cbfd15cda3c85  gcc/testsuite/gcc.target/loongarch/vfcmp-d.c
  c08e307370de6dd5122f517ca9b88bd3  gcc/testsuite/gcc.target/loongarch/vfcmp-f.c
  10ddd292b7613ff19e60e7031e01d5b7  gcc/testsuite/gcc.target/loongarch/vfmax-vfmin.c
! 6ec0b39b5b4b1a97f39db6ffa8466e62  gcc/testsuite/gcc.target/loongarch/vrepli.c
  a005b26aa548eee07a39a18e458d0abc  gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-1.c
  c1d9bd83ec7fb2ffe482949572f2b0d3  gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-2.c
  da307b3ed6f25b19b64faf3b5b9c456e  gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-signed.c
--- 91665,91671 ----
  32fede0d9373ef10c92cbfd15cda3c85  gcc/testsuite/gcc.target/loongarch/vfcmp-d.c
  c08e307370de6dd5122f517ca9b88bd3  gcc/testsuite/gcc.target/loongarch/vfcmp-f.c
  10ddd292b7613ff19e60e7031e01d5b7  gcc/testsuite/gcc.target/loongarch/vfmax-vfmin.c
! dc2394fc2f65e2df2041cf81f93decfe  gcc/testsuite/gcc.target/loongarch/vrepli.c
  a005b26aa548eee07a39a18e458d0abc  gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-1.c
  c1d9bd83ec7fb2ffe482949572f2b0d3  gcc/testsuite/gcc.target/loongarch/wide-mul-reduc-2.c
  da307b3ed6f25b19b64faf3b5b9c456e  gcc/testsuite/gcc.target/loongarch/widen-mul-rtx-cost-signed.c
*************** c02928696f09c7fc9c99174083ecb49c  gcc/te
*** 92980,92986 ****
  a8f9adaf01b9c4605ccf3a2b91395d9a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  d7a191d70b9b9996b4b19f79964cf6c2  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
  3caa2573bbad9fdef8b5573d969fe446  gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
! f2df3bae9f5a0120e073ffd853edc95d  gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
  921f02aebf589561e6c7277649ac973d  gcc/testsuite/gcc.target/powerpc/builtins-1.c
  ec989a2f75efdf3d6a18fdd8ae6ce35b  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
  ec62946f4bc26dd59bb4446e6db2b85f  gcc/testsuite/gcc.target/powerpc/builtins-10-runnable.c
--- 93084,93090 ----
  a8f9adaf01b9c4605ccf3a2b91395d9a  gcc/testsuite/gcc.target/powerpc/builtins-1-be-folded.c
  d7a191d70b9b9996b4b19f79964cf6c2  gcc/testsuite/gcc.target/powerpc/builtins-1-le-folded.c
  3caa2573bbad9fdef8b5573d969fe446  gcc/testsuite/gcc.target/powerpc/builtins-1-p10-runnable.c
! dc57c7d2d3ef6cbd9f55a24e38ba3fca  gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
  921f02aebf589561e6c7277649ac973d  gcc/testsuite/gcc.target/powerpc/builtins-1.c
  ec989a2f75efdf3d6a18fdd8ae6ce35b  gcc/testsuite/gcc.target/powerpc/builtins-1.fold.h
  ec62946f4bc26dd59bb4446e6db2b85f  gcc/testsuite/gcc.target/powerpc/builtins-10-runnable.c
*************** f69135840e05c772e53aa1bd017926c5  gcc/te
*** 96460,96465 ****
--- 96564,96570 ----
  3d20448ba5b8832a124255aa2e84a97f  gcc/testsuite/gcc.target/riscv/pr112478.c
  15f456db6fb5e46494c853d4c141ca96  gcc/testsuite/gcc.target/riscv/pr113095.c
  864744f90db4078acc5574a9ccae9114  gcc/testsuite/gcc.target/riscv/pr113506.c
+ 9d70c1379c63763252909de831509855  gcc/testsuite/gcc.target/riscv/pr113715.c
  9bb9353191b107cdeaf920a4e0796e31  gcc/testsuite/gcc.target/riscv/pr113742.c
  bba0977f2acac23e269d463cd1b7ba52  gcc/testsuite/gcc.target/riscv/pr114087-1.c
  0be9cd6857f2505997bc83cad628e9aa  gcc/testsuite/gcc.target/riscv/pr114139.c
*************** f954ad3d5990ac59183db40e044ebb5b  gcc/te
*** 96644,96651 ****
  6c06251f46956faed6e5b540e9ab010f  gcc/testsuite/gcc.target/riscv/rv32-load-64bit-constant.c
  e27f54d4d18dea365a7174b3b5078c26  gcc/testsuite/gcc.target/riscv/rv32-movdf-cost.c
  7d29e1c767350ae0a4b53fa60c491af1  gcc/testsuite/gcc.target/riscv/rv32e_stack.c
! bcfaff8c96a5626a9e266625ed326c1c  gcc/testsuite/gcc.target/riscv/rv32e_zcmp.c
! c06e6ed768abf01be45f07cd0f30d0f2  gcc/testsuite/gcc.target/riscv/rv32i_zcmp.c
  3e4bfa9ed1e14f800d0563ed26507250  gcc/testsuite/gcc.target/riscv/rvv/autovec/align-1.c
  1331d22c6b347ed0f6bbf2533892ae7e  gcc/testsuite/gcc.target/riscv/rvv/autovec/align-2.c
  081392dfe0eff61072d6f16699ed95c9  gcc/testsuite/gcc.target/riscv/rvv/autovec/avg.h
--- 96749,96756 ----
  6c06251f46956faed6e5b540e9ab010f  gcc/testsuite/gcc.target/riscv/rv32-load-64bit-constant.c
  e27f54d4d18dea365a7174b3b5078c26  gcc/testsuite/gcc.target/riscv/rv32-movdf-cost.c
  7d29e1c767350ae0a4b53fa60c491af1  gcc/testsuite/gcc.target/riscv/rv32e_stack.c
! 5ce61fdd32ee2675499ea219efbbfaf4  gcc/testsuite/gcc.target/riscv/rv32e_zcmp.c
! 357cd805c38f184a636930ce39b4f902  gcc/testsuite/gcc.target/riscv/rv32i_zcmp.c
  3e4bfa9ed1e14f800d0563ed26507250  gcc/testsuite/gcc.target/riscv/rvv/autovec/align-1.c
  1331d22c6b347ed0f6bbf2533892ae7e  gcc/testsuite/gcc.target/riscv/rvv/autovec/align-2.c
  081392dfe0eff61072d6f16699ed95c9  gcc/testsuite/gcc.target/riscv/rvv/autovec/avg.h
*************** f1ef6fa13c480640b814506c7de90cc4  gcc/te
*** 99022,99051 ****
  5d4615048131f4bf8808b05375d398e8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c
  06ed78876e2ec7112f61e7ad4d7ca9ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c
  8964a9709f073f1429277aa175e9ac29  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c
! 532499fe4712240f882f040a52d563b9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
! d32f2a9b504e96400a3946189679f946  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
! e0df0cd54359ab5c58ccdff58aa8183f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
! 0b18f468ab9ea1643eba873965883231  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! 1386a86b219c0eab54844b1dea1278e1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 4e7fb5e3c1474aed8720e4a84809d5cb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! 193658146a5a8ab44d8ac9e133a2c118  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! 7088c846d148c3c8223c9ab7010204bb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
! ae7f31c84be9125152f50384856c1e06  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
! 82ac79827fa79586baf35bbc12346880  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
! 534160f9a0f8dec6626affd35fd54757  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
! 2f4efc7e5bd0c2fbcfacc06f5ab6a1ff  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! 4d0d2fbdacfd95ec6293df34408b9600  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! 1083110a78565438817494eb57c99551  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! c9cb31d41bf684cd88ad13175d41676a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! b26568530655589ddd6a16b86e701efb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
! 0761f19d2e6b2c982158560c35bcd56e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
! ae4fd75622dc3571d9a50acf328fe359  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
! 659db0e2e480662e38dd9e8ac6a35b71  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
! 085e49a1d0ea493faad9af53bf721f1d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! d82d3597122d1b2bc5198b2dda8eeec8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! 139c5c651099dd56ec7efcb4cbd6df9b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! 1424f36e62bc7b379addfddb4fd7cf8d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! 777818a81cb91069bfe32dbe4d7e29b3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
  ddbdedd0bcd1b2f07c63e57ea3edd7f9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
  ecb91086db90af95d3f46740e36b1ce2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
  cee911916a71eee6997697cd65895e73  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
--- 99127,99156 ----
  5d4615048131f4bf8808b05375d398e8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c
  06ed78876e2ec7112f61e7ad4d7ca9ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c
  8964a9709f073f1429277aa175e9ac29  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c
! 2b0974e13a773f3cf747b8a2d2f3afcd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
! 3cc64f46a34aa329dbea077958740ea1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
! 5abc996ed751a1e6e84c659eb10eefa1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
! e4c71ab3d3e69a58113214544774fa5c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! 55504e9776c192f779480b3e94761aed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 08fd1d3b25295da9a6ca95e3b7bab239  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! 6cc943e1749e240cba81b949023b5a0d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! 9768220ca1c93819c25f8527f2599494  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
! a25062a79631dd8f99adeea2d6c9559c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
! 1e78e7111069a6111a93f3e7828d8d33  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
! ea9e9332005c3febee88eada951565e8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
! 92c63b211f99c185f82d40600533888f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! 7ee1d9c01ac0126c0047c3a57e962de3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! 840133270c2384ace51bf6925a08d24a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! bb92157bcb413d197d907e80ae69e2ba  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! 6430fcbac7b7f4c7c4c7f6b38a1c0972  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
! 722ec752e3bf1a61188c3fe68367a78d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
! 85bcdcef366c1e9ee29671acc8804145  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
! 194310aa8da0bc58a4efcb6cd7084a9d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
! 6bf65042498323e4eb7312041f1d3cc6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! 833ca8dad3e54d9c95dc88bb06b0b885  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! ffcaa82e3e13fe86fa2b2ffd90074d77  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! db36b8da030881d4e21fdd6522e61fc1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! 2d3154fa53539784a50c5ad012b4eb10  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
  ddbdedd0bcd1b2f07c63e57ea3edd7f9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
  ecb91086db90af95d3f46740e36b1ce2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
  cee911916a71eee6997697cd65895e73  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
*************** ee4d762425ee9fa02262080e983ca873  gcc/te
*** 99091,99098 ****
  d0716e3befd7d8676e3f95ddfc26cf11  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i32.c
  68f38cf2fee3b275e68ad7b4c0590852  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i64.c
  a668be35e3b0365efdcb1644b843f8f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i8.c
! aa40b20e901d2c973ae8bec3ac33c970  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! f7422c67f2a8f90a20fbfac7fa46a9e4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
  ccb9cff4438796fd5c2c015df2204a55  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h
  847718238428fcf0d191c5e8f66f2c60  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h
  0ac4abbac6b69050fc3b142e914fe58c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h
--- 99196,99203 ----
  d0716e3befd7d8676e3f95ddfc26cf11  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i32.c
  68f38cf2fee3b275e68ad7b4c0590852  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i64.c
  a668be35e3b0365efdcb1644b843f8f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-merge-3-i8.c
! 6ad19726235c13cdc6deefa55477c49e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! 40e3b522abb69be8e65d593b35c0d12b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
  ccb9cff4438796fd5c2c015df2204a55  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_run.h
  847718238428fcf0d191c5e8f66f2c60  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h
  0ac4abbac6b69050fc3b142e914fe58c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h
*************** af39bb531df9d78fb100a8bc074d5527  gcc/te
*** 99197,99202 ****
--- 99302,99315 ----
  8a062701030c2179b34b5cdbe2e5affb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u32.c
  066197fc9e9481f3a6397992b977191b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u64.c
  cfeabedcaa487c67a2318497a6bd3a39  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmseq-run-1-u8.c
+ ba07450cba89795d0ffb8d40b885b494  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i16.c
+ 2318de34fc5b6b3c00d6a2024b706bb0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i32.c
+ 39dfa43d1b70cfe850fcf48eb0a6f84a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i64.c
+ 367b5f1a92121de3fb3537b7c96e018f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i8.c
+ 22c96a134d1c6f1fc7b2a5f9f563ebba  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u16.c
+ 8e342c536d74decb8ffb365614d41a3d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u32.c
+ 787271c522d64daefb3b0b87c28259e9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u64.c
+ eb3d40ba506e2158ad71b1267e423ba0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u8.c
  9076cf8f652bb87f5614bdec4824fc2f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmul-run-1-i16.c
  f3610778d536959133cfda7115cd7ca8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmul-run-1-i32.c
  8b6a8f2a6c0bc3be747fd220041e321f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmul-run-1-i64.c
*************** cca8438331c1dbd3622e6daf22ed8b80  gcc/te
*** 104075,104080 ****
--- 104188,104194 ----
  64e295712ba529fdd2946db085c3daa2  gcc/testsuite/gcc.target/xstormy16/extendhisi2.c
  bbb7c5b98d9519c006ff558814a151b3  gcc/testsuite/gcc.target/xstormy16/mulhi.c
  4a0719312b17c05f941d354fa5c2ce77  gcc/testsuite/gcc.target/xstormy16/neghi2.c
+ 57855fcbcc4959da8439dd480ea6e426  gcc/testsuite/gcc.target/xstormy16/pr118358.c
  7d65d15259c94137a10663d2aeeb1c8a  gcc/testsuite/gcc.target/xstormy16/rotatehi-1.c
  39555eb5da0832d8df88935b6e9d9974  gcc/testsuite/gcc.target/xstormy16/sfr/01_const_to_sfrb.c
  b5a738a34194b338b92901ea41e83d81  gcc/testsuite/gcc.target/xstormy16/sfr/02_const_to_sfrw.c
*************** af48ab22b7ab737b6bda79506c549444  gcc/te
*** 110514,110522 ****
  46fc0e335342f8f0944e95adf5b0fdeb  gcc/testsuite/gfortran.dg/common_2.f90
  12fec303851959d537303ad2bba9aa02  gcc/testsuite/gfortran.dg/common_20.f90
  19d12ed2a13126b3a920f744ce92b00c  gcc/testsuite/gfortran.dg/common_21.f90
! f1da6751bbd1a6186b7f03b7f7e77113  gcc/testsuite/gfortran.dg/common_22.f90
  06e2065883402fa9fd2aeb3912ca2fb7  gcc/testsuite/gfortran.dg/common_23.f90
! d3d62d1603bee1c8f8a03953e6eebba0  gcc/testsuite/gfortran.dg/common_24.f
  d5539b20ee7c35bfc0fcb236052a68ea  gcc/testsuite/gfortran.dg/common_25.f90
  70a95b679d7df7dca534b69660b7f48b  gcc/testsuite/gfortran.dg/common_26.f90
  d92cf739756be07096c110006ed91771  gcc/testsuite/gfortran.dg/common_27.f90
--- 110628,110636 ----
  46fc0e335342f8f0944e95adf5b0fdeb  gcc/testsuite/gfortran.dg/common_2.f90
  12fec303851959d537303ad2bba9aa02  gcc/testsuite/gfortran.dg/common_20.f90
  19d12ed2a13126b3a920f744ce92b00c  gcc/testsuite/gfortran.dg/common_21.f90
! 408f0e06e51fdbe1f4f7ef46fd670434  gcc/testsuite/gfortran.dg/common_22.f90
  06e2065883402fa9fd2aeb3912ca2fb7  gcc/testsuite/gfortran.dg/common_23.f90
! 1191cffb296fbca0e679154d92f70403  gcc/testsuite/gfortran.dg/common_24.f
  d5539b20ee7c35bfc0fcb236052a68ea  gcc/testsuite/gfortran.dg/common_25.f90
  70a95b679d7df7dca534b69660b7f48b  gcc/testsuite/gfortran.dg/common_26.f90
  d92cf739756be07096c110006ed91771  gcc/testsuite/gfortran.dg/common_27.f90
*************** f85d6127bac477d11ee5f336d29750d8  gcc/te
*** 112090,112097 ****
  8ee3c8ca34879d1f3588a457500a390d  gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f90
  ca7caa43807cbf2c069e7b118f010f29  gcc/testsuite/gfortran.dg/goacc/reduction.f95
  df208766c4856bbc03206680d88a78f7  gcc/testsuite/gfortran.dg/goacc/ref_inquiry.f90
! 98a9635d961b647b2f7ee8a0788d11b0  gcc/testsuite/gfortran.dg/goacc/routine-1.f90
! 02135bc0b797b99a2d2126798e1e461b  gcc/testsuite/gfortran.dg/goacc/routine-2.f90
  1a89c5c4052f1cfdc490b450049ea358  gcc/testsuite/gfortran.dg/goacc/routine-3.f90
  c7f7f4bf3ae51a9ac3c0e717461758b5  gcc/testsuite/gfortran.dg/goacc/routine-4.f90
  d8bda8310290b20e70bf191a6dd5db15  gcc/testsuite/gfortran.dg/goacc/routine-5.f90
--- 112204,112211 ----
  8ee3c8ca34879d1f3588a457500a390d  gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f90
  ca7caa43807cbf2c069e7b118f010f29  gcc/testsuite/gfortran.dg/goacc/reduction.f95
  df208766c4856bbc03206680d88a78f7  gcc/testsuite/gfortran.dg/goacc/ref_inquiry.f90
! 5fec6bc529db9b8144a36fb1e197e10e  gcc/testsuite/gfortran.dg/goacc/routine-1.f90
! 679044b6c31722bca9be99788e034ad0  gcc/testsuite/gfortran.dg/goacc/routine-2.f90
  1a89c5c4052f1cfdc490b450049ea358  gcc/testsuite/gfortran.dg/goacc/routine-3.f90
  c7f7f4bf3ae51a9ac3c0e717461758b5  gcc/testsuite/gfortran.dg/goacc/routine-4.f90
  d8bda8310290b20e70bf191a6dd5db15  gcc/testsuite/gfortran.dg/goacc/routine-5.f90
*************** b35ad41711bd8e3aa3e44dc216133117  gcc/te
*** 112319,112325 ****
  cfa62257874a40b2cf30e33dfeaccf4d  gcc/testsuite/gfortran.dg/gomp/declare-variant-14.f90
  bcff008fda796aaaa4aa0c808a1cf8da  gcc/testsuite/gfortran.dg/gomp/declare-variant-15.f90
  12d0afb12d65bdd24eb02d1437cf671f  gcc/testsuite/gfortran.dg/gomp/declare-variant-16.f90
! 7f0e276222c8af41d530e09021a3eded  gcc/testsuite/gfortran.dg/gomp/declare-variant-17.f90
  21e881b2155c903e6c0fe82aa43cc421  gcc/testsuite/gfortran.dg/gomp/declare-variant-18.f90
  580901d43ef2a15dfd465a1a022ae115  gcc/testsuite/gfortran.dg/gomp/declare-variant-19.f90
  ed683a89c7027522aeb6eeffa4f9eb50  gcc/testsuite/gfortran.dg/gomp/declare-variant-2.f90
--- 112433,112439 ----
  cfa62257874a40b2cf30e33dfeaccf4d  gcc/testsuite/gfortran.dg/gomp/declare-variant-14.f90
  bcff008fda796aaaa4aa0c808a1cf8da  gcc/testsuite/gfortran.dg/gomp/declare-variant-15.f90
  12d0afb12d65bdd24eb02d1437cf671f  gcc/testsuite/gfortran.dg/gomp/declare-variant-16.f90
! 664a2c4df3f5dd5e318c82384fd77662  gcc/testsuite/gfortran.dg/gomp/declare-variant-17.f90
  21e881b2155c903e6c0fe82aa43cc421  gcc/testsuite/gfortran.dg/gomp/declare-variant-18.f90
  580901d43ef2a15dfd465a1a022ae115  gcc/testsuite/gfortran.dg/gomp/declare-variant-19.f90
  ed683a89c7027522aeb6eeffa4f9eb50  gcc/testsuite/gfortran.dg/gomp/declare-variant-2.f90
*************** c9c12b39090e7fc13f17ab5f3914978a  gcc/te
*** 112399,112405 ****
  ebb0a8dd169ad9c85b548154cea0be80  gcc/testsuite/gfortran.dg/gomp/inner-loops-1.f90
  d646b4475e0f1b9689437db9772961b9  gcc/testsuite/gfortran.dg/gomp/inner-loops-2.f90
  c6b23e36c3423a3454fb19b0ec6f0e01  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
! c01c8c2ad31a68195b22536b6b88f974  gcc/testsuite/gfortran.dg/gomp/interop-1.f90
  8be388741956185d6cc4a261990308fb  gcc/testsuite/gfortran.dg/gomp/interop-2.f90
  29ec5c45c49c8ec16f2a658ccee76814  gcc/testsuite/gfortran.dg/gomp/interop-3.f90
  902f4ad31cdbc96d2097e70485091287  gcc/testsuite/gfortran.dg/gomp/interop-4.f90
--- 112513,112519 ----
  ebb0a8dd169ad9c85b548154cea0be80  gcc/testsuite/gfortran.dg/gomp/inner-loops-1.f90
  d646b4475e0f1b9689437db9772961b9  gcc/testsuite/gfortran.dg/gomp/inner-loops-2.f90
  c6b23e36c3423a3454fb19b0ec6f0e01  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
! fd8beb621042a5dfb3a9cdfcd84fba1e  gcc/testsuite/gfortran.dg/gomp/interop-1.f90
  8be388741956185d6cc4a261990308fb  gcc/testsuite/gfortran.dg/gomp/interop-2.f90
  29ec5c45c49c8ec16f2a658ccee76814  gcc/testsuite/gfortran.dg/gomp/interop-3.f90
  902f4ad31cdbc96d2097e70485091287  gcc/testsuite/gfortran.dg/gomp/interop-4.f90
*************** c86578519526f3523481033c61923ccb  gcc/te
*** 112506,112512 ****
  727d8f8adf8d29e41a1fd2901fc06410  gcc/testsuite/gfortran.dg/gomp/openmp-simd-7.f90
  0ad011db4bd5ba5d76c5d459ca3559de  gcc/testsuite/gfortran.dg/gomp/openmp-simd-8.f90
  ab6d18741860d8f9094676890b96e068  gcc/testsuite/gfortran.dg/gomp/order-1.f90
! 618c952f5bbb7326c70d6e7a786f679d  gcc/testsuite/gfortran.dg/gomp/order-2.f90
  f5feeab5c486d27ccc1c9005dc112eff  gcc/testsuite/gfortran.dg/gomp/order-3.f90
  f8e40f23828c760759b3893792acb659  gcc/testsuite/gfortran.dg/gomp/order-4.f90
  35c099331d2ac9c6383bb03bcf2fab33  gcc/testsuite/gfortran.dg/gomp/order-5.f90
--- 112620,112626 ----
  727d8f8adf8d29e41a1fd2901fc06410  gcc/testsuite/gfortran.dg/gomp/openmp-simd-7.f90
  0ad011db4bd5ba5d76c5d459ca3559de  gcc/testsuite/gfortran.dg/gomp/openmp-simd-8.f90
  ab6d18741860d8f9094676890b96e068  gcc/testsuite/gfortran.dg/gomp/order-1.f90
! 995e372cac7f414c6d8406155e85671b  gcc/testsuite/gfortran.dg/gomp/order-2.f90
  f5feeab5c486d27ccc1c9005dc112eff  gcc/testsuite/gfortran.dg/gomp/order-3.f90
  f8e40f23828c760759b3893792acb659  gcc/testsuite/gfortran.dg/gomp/order-4.f90
  35c099331d2ac9c6383bb03bcf2fab33  gcc/testsuite/gfortran.dg/gomp/order-5.f90
*************** bb35c5bd7245c0d5e4e5f3ed549e7fef  gcc/te
*** 112615,112621 ****
  47d37571010202f39839c25cbfc3f791  gcc/testsuite/gfortran.dg/gomp/pr77665.f90
  e5f0ff2c94fb41e447563955917d04b7  gcc/testsuite/gfortran.dg/gomp/pr77666.f90
  8968b6642e6ba9ea7870f963ca23770a  gcc/testsuite/gfortran.dg/gomp/pr77973.f90
! 3a11d068cb262058109de03c2147fc09  gcc/testsuite/gfortran.dg/gomp/pr78026.f03
  30ccc07af8b92b2bff3f8e459336b7f5  gcc/testsuite/gfortran.dg/gomp/pr78260-2.f90
  82944b2dcb4533aa8669aa80570f7ac9  gcc/testsuite/gfortran.dg/gomp/pr78260-3.f90
  818814829feac80dc1d477b80fcec48f  gcc/testsuite/gfortran.dg/gomp/pr78260.f90
--- 112729,112735 ----
  47d37571010202f39839c25cbfc3f791  gcc/testsuite/gfortran.dg/gomp/pr77665.f90
  e5f0ff2c94fb41e447563955917d04b7  gcc/testsuite/gfortran.dg/gomp/pr77666.f90
  8968b6642e6ba9ea7870f963ca23770a  gcc/testsuite/gfortran.dg/gomp/pr77973.f90
! 1c91e79439d6589886a15eaab01cbb43  gcc/testsuite/gfortran.dg/gomp/pr78026.f03
  30ccc07af8b92b2bff3f8e459336b7f5  gcc/testsuite/gfortran.dg/gomp/pr78260-2.f90
  82944b2dcb4533aa8669aa80570f7ac9  gcc/testsuite/gfortran.dg/gomp/pr78260-3.f90
  818814829feac80dc1d477b80fcec48f  gcc/testsuite/gfortran.dg/gomp/pr78260.f90
*************** aa73cc15d0a821884197ef200cc49dc8  gcc/te
*** 112676,112684 ****
  2bddefbd1131ecb8f1773bb7b9d5ee8c  gcc/testsuite/gfortran.dg/gomp/requires-11.f90
  6635b1443586fedb6137f7ceefa4df3e  gcc/testsuite/gfortran.dg/gomp/requires-2.f90
  f8131ff96b4007846fbcefaafb022a81  gcc/testsuite/gfortran.dg/gomp/requires-3.f90
! 7d21e9f961337018ba371c76ffd470de  gcc/testsuite/gfortran.dg/gomp/requires-4.f90
  871c853d1a33aa6ec90100b274b61e26  gcc/testsuite/gfortran.dg/gomp/requires-5.f90
! 7d0a4c8fda6858b413ee57216c9cd951  gcc/testsuite/gfortran.dg/gomp/requires-6.f90
  500754a5c2f0c50c248e779b76fc746e  gcc/testsuite/gfortran.dg/gomp/requires-7.f90
  7fc65425798359d226d76344cf1cf404  gcc/testsuite/gfortran.dg/gomp/requires-8.f90
  db8328a4f748cc704f20335b7343890b  gcc/testsuite/gfortran.dg/gomp/requires-9.f90
--- 112790,112798 ----
  2bddefbd1131ecb8f1773bb7b9d5ee8c  gcc/testsuite/gfortran.dg/gomp/requires-11.f90
  6635b1443586fedb6137f7ceefa4df3e  gcc/testsuite/gfortran.dg/gomp/requires-2.f90
  f8131ff96b4007846fbcefaafb022a81  gcc/testsuite/gfortran.dg/gomp/requires-3.f90
! 86dc4fab74ee4e416f2fb1685938a696  gcc/testsuite/gfortran.dg/gomp/requires-4.f90
  871c853d1a33aa6ec90100b274b61e26  gcc/testsuite/gfortran.dg/gomp/requires-5.f90
! 1e626ceb2dc76f28ceeda7c7e5e1c8e0  gcc/testsuite/gfortran.dg/gomp/requires-6.f90
  500754a5c2f0c50c248e779b76fc746e  gcc/testsuite/gfortran.dg/gomp/requires-7.f90
  7fc65425798359d226d76344cf1cf404  gcc/testsuite/gfortran.dg/gomp/requires-8.f90
  db8328a4f748cc704f20335b7343890b  gcc/testsuite/gfortran.dg/gomp/requires-9.f90
*************** b46bd97116489e6e683fb2b742d3b37e  gcc/te
*** 114593,114599 ****
  7d09118ed5915e3ef92dba4a6d9cd54c  gcc/testsuite/gfortran.dg/pr104349.f90
  257c4284afc1b3bc810b7c880cbe249a  gcc/testsuite/gfortran.dg/pr104351.f90
  5b0868c84244a96dfe5b07e4df03eaa7  gcc/testsuite/gfortran.dg/pr104429.f90
! d54a9a735e74cc7d08959a7e744ae292  gcc/testsuite/gfortran.dg/pr104466.f90
  20b528a5635e11a2c7db46289cab958c  gcc/testsuite/gfortran.dg/pr104528.f
  f2033aa803ce0a0763522fb821b7bdf6  gcc/testsuite/gfortran.dg/pr104554.f90
  c1548c06295e664f7406329767d563ab  gcc/testsuite/gfortran.dg/pr104555.f90
--- 114707,114713 ----
  7d09118ed5915e3ef92dba4a6d9cd54c  gcc/testsuite/gfortran.dg/pr104349.f90
  257c4284afc1b3bc810b7c880cbe249a  gcc/testsuite/gfortran.dg/pr104351.f90
  5b0868c84244a96dfe5b07e4df03eaa7  gcc/testsuite/gfortran.dg/pr104429.f90
! b4ff79b7d0893d8d65011da7ca95eb5b  gcc/testsuite/gfortran.dg/pr104466.f90
  20b528a5635e11a2c7db46289cab958c  gcc/testsuite/gfortran.dg/pr104528.f
  f2033aa803ce0a0763522fb821b7bdf6  gcc/testsuite/gfortran.dg/pr104554.f90
  c1548c06295e664f7406329767d563ab  gcc/testsuite/gfortran.dg/pr104555.f90
*************** d03f1dd77bd6dee9a89da7373579df73  gcc/te
*** 114986,114992 ****
  0a4cedf3603ebfbe3f5092a5c5b439c8  gcc/testsuite/gfortran.dg/pr61318.f90
  b4a7352be56f63fec4426a00db50fae5  gcc/testsuite/gfortran.dg/pr61335.f90
  6dedb63c784b5018b208a0535bbce9a1  gcc/testsuite/gfortran.dg/pr61454.f90
! 2c95c461b017b811d75f842a5f254b83  gcc/testsuite/gfortran.dg/pr61669.f90
  218031233fb6ed3ee1eed0974239fbdb  gcc/testsuite/gfortran.dg/pr61765.f90
  7b90c70cbc880439a85c8761bb9d61c0  gcc/testsuite/gfortran.dg/pr61775.f90
  4a29b0cc0691a044e0395d99832117d4  gcc/testsuite/gfortran.dg/pr61921.f90
--- 115100,115106 ----
  0a4cedf3603ebfbe3f5092a5c5b439c8  gcc/testsuite/gfortran.dg/pr61318.f90
  b4a7352be56f63fec4426a00db50fae5  gcc/testsuite/gfortran.dg/pr61335.f90
  6dedb63c784b5018b208a0535bbce9a1  gcc/testsuite/gfortran.dg/pr61454.f90
! af85cf99f97b350aab2242869a5a5de8  gcc/testsuite/gfortran.dg/pr61669.f90
  218031233fb6ed3ee1eed0974239fbdb  gcc/testsuite/gfortran.dg/pr61765.f90
  7b90c70cbc880439a85c8761bb9d61c0  gcc/testsuite/gfortran.dg/pr61775.f90
  4a29b0cc0691a044e0395d99832117d4  gcc/testsuite/gfortran.dg/pr61921.f90
*************** fe8536ad63d0a16274b5bc4f784951a1  gcc/te
*** 116061,116066 ****
--- 116175,116181 ----
  b7f0fac05667f630e8f9b90aebe1fea4  gcc/testsuite/gfortran.dg/select_char_1.f90
  4bf875de20300472ec17d50aced7e0ab  gcc/testsuite/gfortran.dg/select_char_2.f90
  9f98379d27ae7878917fe08a1c19379f  gcc/testsuite/gfortran.dg/select_char_3.f90
+ 940d47f5d16eb43c90d00e589e757088  gcc/testsuite/gfortran.dg/select_contiguous.f90
  37e908eef4b56dca409c4daba93bdcfc  gcc/testsuite/gfortran.dg/select_rank_1.f90
  b7f688acbe6b27032e2d16f367317b58  gcc/testsuite/gfortran.dg/select_rank_2.f90
  de48eaee117c9656a2db00a7ffbe9cb9  gcc/testsuite/gfortran.dg/select_rank_3.f90
*************** aad042410419391c67cbcfe80381dfd6  gcc/te
*** 116211,116216 ****
--- 116326,116332 ----
  74d9192c674d36c49dd61638c0ed9427  gcc/testsuite/gfortran.dg/spec_expr_7.f90
  a85036393b2e190e3e232bfbc36020f8  gcc/testsuite/gfortran.dg/spec_expr_8.f90
  0e550c9c828d36891d4457d13bac694c  gcc/testsuite/gfortran.dg/spec_expr_9.f90
+ bfebd159d765556210feff79e2f8415d  gcc/testsuite/gfortran.dg/spec_statement_in_exec.f90
  4561b9231cf8d91cc26cafd4dfa4eb9d  gcc/testsuite/gfortran.dg/specification_type_resolution_1.f90
  f5153e8883f791f3cc0646a71b5c6e9b  gcc/testsuite/gfortran.dg/specification_type_resolution_2.f90
  d8e60069f2b97e982ac574a084348519  gcc/testsuite/gfortran.dg/specifics_1.f90
*************** eb1595e729e2eaac81c7ffe330d8f24e  gcc/te
*** 124572,124578 ****
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! fe498f625184e44d80542d6e517d8cc2  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
--- 124688,124694 ----
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! ac193710e2e4fc5cf3d6511ef238dee2  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
*************** fc179d4ff1b21540f01410432558749f  gcc/te
*** 125758,125763 ****
--- 125874,125882 ----
  8011a02c904a433ae271b2ab49466382  gcc/testsuite/rust/compile/const_generics_14.rs
  7bf871ed70532f23a7592250b9ec3a99  gcc/testsuite/rust/compile/const_generics_15.rs
  f06601430db6d4d3e822b66306a9a04c  gcc/testsuite/rust/compile/const_generics_16.rs
+ e090d32cdcbdeaf2bfbf8690419623e7  gcc/testsuite/rust/compile/const_generics_17.rs
+ 36de835b6c10d9ed566d2fee9bb5fbb8  gcc/testsuite/rust/compile/const_generics_18.rs
+ eef0e30eeddb26c7fd80cb4c801c61ca  gcc/testsuite/rust/compile/const_generics_19.rs
  843f362a8c63f610af0a4ac77f309065  gcc/testsuite/rust/compile/const_generics_2.rs
  bca4ef052240a6deeee772ed615526ee  gcc/testsuite/rust/compile/const_generics_3.rs
  d24f122dbd7d6bbdb3f7b2c688004a72  gcc/testsuite/rust/compile/const_generics_4.rs
*************** e3074cf23f5849f2fa7c27c13fb282cf  gcc/te
*** 125857,125862 ****
--- 125976,125982 ----
  e8dbcbd07045d7b5b518d0a236325d16  gcc/testsuite/rust/compile/generics11.rs
  d351b74853227cf8b303e585c21d1fe0  gcc/testsuite/rust/compile/generics12.rs
  ed3baf52aef0cae945dfb5c73cd30acb  gcc/testsuite/rust/compile/generics13.rs
+ 271f2a46ab8dcc98e96d339e0e040f71  gcc/testsuite/rust/compile/generics14.rs
  9a59ca7c4e4eadc29fb5bbd7a29af1c6  gcc/testsuite/rust/compile/generics2.rs
  eb85bcea53e38d14f7bcc7f982cc4140  gcc/testsuite/rust/compile/generics3.rs
  4455201ec7ea4bae73c843936c3636e2  gcc/testsuite/rust/compile/generics4.rs
*************** bd3f5f5421f7412556d571aaed504e87  gcc/te
*** 126096,126101 ****
--- 126216,126222 ----
  c68fac7e04fd77c1639ea1fd3277409c  gcc/testsuite/rust/compile/issue-3613.rs
  29d806495de48063ed6be53b85c6a0c0  gcc/testsuite/rust/compile/issue-3614.rs
  084f37585e5f1aabd068014b3d37c129  gcc/testsuite/rust/compile/issue-3615.rs
+ 900ada2e5ea479e8ef067eb00f985691  gcc/testsuite/rust/compile/issue-3617.rs
  1a6f0cc305232f28ce0ea14763a11060  gcc/testsuite/rust/compile/issue-3618.rs
  068bea38ad05bd2a911347bbe3993c6d  gcc/testsuite/rust/compile/issue-3625.rs
  b73bff1144b326261fd3bce5eddb22d3  gcc/testsuite/rust/compile/issue-3628.rs
*************** d690a668cb1a4d9fe94ee30b4e2a967b  gcc/te
*** 126110,126115 ****
--- 126231,126237 ----
  2f2f9aaf2ea9530b005352b48dbde809  gcc/testsuite/rust/compile/issue-3654.rs
  e61604d626a48912503f179b2f698a76  gcc/testsuite/rust/compile/issue-3656.rs
  18b03d5238900eccd4c41898bd1dae1e  gcc/testsuite/rust/compile/issue-3657.rs
+ 24c3fc1ea0f15edca8a9559ed05bd22b  gcc/testsuite/rust/compile/issue-3659.rs
  fda2184844fb3890033e703c7377098c  gcc/testsuite/rust/compile/issue-3660.rs
  205c72d05f3be2ee7941724321625b94  gcc/testsuite/rust/compile/issue-3661.rs
  a9f0b6f3ed20af1732d5abab04fce3bf  gcc/testsuite/rust/compile/issue-3662.rs
*************** a96ecff7ebddf1b3d15a3e3eed146c07  gcc/te
*** 126153,126162 ****
  192eb2bd0b392ae1910cc848e0324baf  gcc/testsuite/rust/compile/issue-4146.rs
  6559995996d8b61db8b4090629e0c41e  gcc/testsuite/rust/compile/issue-4148.rs
  9a90a5823b2fac9dbc891be63a808346  gcc/testsuite/rust/compile/issue-4155.rs
  f84fe23c1ba8b2db0d2401b4fddc498f  gcc/testsuite/rust/compile/issue-4165.rs
  295eeee71b2b9b6c1be4c0ad05c1e862  gcc/testsuite/rust/compile/issue-4168.rs
! f868147efac03c3d68cc22f4e37523f5  gcc/testsuite/rust/compile/issue-4212.rs
  581cc0ff9159a5a7b1c18ed81c2264ff  gcc/testsuite/rust/compile/issue-4231.rs
  229b98c45f842adf4958f0a3abd8e500  gcc/testsuite/rust/compile/issue-557.rs
  f8f243df4bb6d8ad64bad3b19771c416  gcc/testsuite/rust/compile/issue-635-1.rs
  4ebac20282b976fe52f1017d59feaccb  gcc/testsuite/rust/compile/issue-635-2.rs
--- 126275,126291 ----
  192eb2bd0b392ae1910cc848e0324baf  gcc/testsuite/rust/compile/issue-4146.rs
  6559995996d8b61db8b4090629e0c41e  gcc/testsuite/rust/compile/issue-4148.rs
  9a90a5823b2fac9dbc891be63a808346  gcc/testsuite/rust/compile/issue-4155.rs
+ f59b1186003745f5f7bdf10fe4a12678  gcc/testsuite/rust/compile/issue-4162.rs
  f84fe23c1ba8b2db0d2401b4fddc498f  gcc/testsuite/rust/compile/issue-4165.rs
  295eeee71b2b9b6c1be4c0ad05c1e862  gcc/testsuite/rust/compile/issue-4168.rs
! be42b59aa26fcea2b3e4b82ba7cd7e5d  gcc/testsuite/rust/compile/issue-4188.rs
! ec1071b4fb0c33637bd7da589cb438c5  gcc/testsuite/rust/compile/issue-4212.rs
! 1529aa2d41a892e93b3b439dcb3985ab  gcc/testsuite/rust/compile/issue-4219.rs
! 9f16c34e424c842b4df6cbdbc023e1c8  gcc/testsuite/rust/compile/issue-4222.rs
  581cc0ff9159a5a7b1c18ed81c2264ff  gcc/testsuite/rust/compile/issue-4231.rs
+ 21ab8fd38827c96146b33d799d8b71b7  gcc/testsuite/rust/compile/issue-4242.rs
+ 2133db7e84c5e92ff47b3f6ec5232983  gcc/testsuite/rust/compile/issue-4261.rs
+ 982dd5cc22276d1f70ba9c3606bf42ff  gcc/testsuite/rust/compile/issue-4267.rs
  229b98c45f842adf4958f0a3abd8e500  gcc/testsuite/rust/compile/issue-557.rs
  f8f243df4bb6d8ad64bad3b19771c416  gcc/testsuite/rust/compile/issue-635-1.rs
  4ebac20282b976fe52f1017d59feaccb  gcc/testsuite/rust/compile/issue-635-2.rs
*************** e81ff8419c8b0085aa761fb8da969227  gcc/te
*** 126887,126892 ****
--- 127016,127027 ----
  27dd0332fd73b2accf878d9b7db118d3  gcc/testsuite/rust/execute/torture/coercion2.rs
  497b0c18909c49a30e2b53c15f8fc527  gcc/testsuite/rust/execute/torture/coercion3.rs
  8446b8757d4d2c85db0aa361ce166b12  gcc/testsuite/rust/execute/torture/const-generics-1.rs
+ a6cdbfe3707ef28f67bed32232c4cbc7  gcc/testsuite/rust/execute/torture/const-generics-2.rs
+ f1df3ea62ae187528fb69e7eb9d93bac  gcc/testsuite/rust/execute/torture/const-generics-3.rs
+ 276f0470aa5b0a82c97e2925db4be406  gcc/testsuite/rust/execute/torture/const-generics-4.rs
+ d61f3a21c8acdd39c2534f5a93e34b00  gcc/testsuite/rust/execute/torture/const-generics-5.rs
+ 1517d9765ba88616d9a2c28836954b04  gcc/testsuite/rust/execute/torture/const-generics-6.rs
+ bf0edd22a11bec47f52001ab5bd2ea9f  gcc/testsuite/rust/execute/torture/const-generics-7.rs
  744aef37751c0985c87a0e8de312c015  gcc/testsuite/rust/execute/torture/const_block1.rs
  16aaa17474f319d84939e58bd3191fe6  gcc/testsuite/rust/execute/torture/const_fold1.rs
  241a2be1d8747c41bb6696abef8fca56  gcc/testsuite/rust/execute/torture/const_fold2.rs
*************** b00ed11eddbb45f2d076fbabb9980dc0  gcc/te
*** 126955,126960 ****
--- 127090,127096 ----
  63b786f5f35c6c87d722646f2d91b209  gcc/testsuite/rust/execute/torture/issue-3381.rs
  a96b0644743e8e241da6558cbb2c2fba  gcc/testsuite/rust/execute/torture/issue-3502.rs
  bed350f339543e64906d16b02e9f5183  gcc/testsuite/rust/execute/torture/issue-3836.rs
+ 1c8ab14dfd7607c77a2ae45ffa4adc37  gcc/testsuite/rust/execute/torture/issue-4242.rs
  ba2cc9caa5cf695dabb5e09de31fcceb  gcc/testsuite/rust/execute/torture/issue-647.rs
  9aebf168cfdac6b4ffcb96d19980fa72  gcc/testsuite/rust/execute/torture/issue-845.rs
  063e1d1686f93b29ba383722fc51dbed  gcc/testsuite/rust/execute/torture/issue-851.rs
*************** a7f4a565f46d8c8589434308e7968386  gcc/te
*** 126965,126970 ****
--- 127101,127107 ----
  58e6d4e2e10974545dcb38e56ab711d4  gcc/testsuite/rust/execute/torture/let-identifierpattern-subpattern.rs
  e5d4fd47103c9b2ec08ec98416082eb9  gcc/testsuite/rust/execute/torture/let-pattern-1.rs
  3b24a17a7ebb32561ec8e5ad521f06a0  gcc/testsuite/rust/execute/torture/link-name.rs
+ 868f1e6cdc28e8b0c04096fef25d723b  gcc/testsuite/rust/execute/torture/literalpattern_neg.rs
  b9e7dd193296598753c75fbfaae447bd  gcc/testsuite/rust/execute/torture/loop-condition-eval.rs
  d7e1088b7c9ae3714d6c9ac6aeb13b18  gcc/testsuite/rust/execute/torture/macro-issue1426.rs
  6fcd51511bc08d2f26a63f6e5ce98020  gcc/testsuite/rust/execute/torture/macro_use1.rs
*************** bcff760f6710b9047412aba72a381983  gcc/tr
*** 127204,127215 ****
  23590c969997d33ec2e1fa1da2a89526  gcc/tree-call-cdce.cc
  2c03161e3401b5343b2c2e3fe83e557e  gcc/tree-cfg.cc
  10d3c7c1807e0cb252d9100eed514e59  gcc/tree-cfg.h
! 0bc397f7b8f2627f5a416a460713436d  gcc/tree-cfgcleanup.cc
  b528a0932f50504df146d112f7d01a5c  gcc/tree-cfgcleanup.h
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
! 631f383225878af718642d2a458aefae  gcc/tree-complex.cc
! 133c240230db44a5d1807dcda6ab0571  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
  f01aeac56dffd44808096094e2bf76c1  gcc/tree-dfa.cc
--- 127341,127352 ----
  23590c969997d33ec2e1fa1da2a89526  gcc/tree-call-cdce.cc
  2c03161e3401b5343b2c2e3fe83e557e  gcc/tree-cfg.cc
  10d3c7c1807e0cb252d9100eed514e59  gcc/tree-cfg.h
! f52b2355fd5c638140254b4a00ef72f8  gcc/tree-cfgcleanup.cc
  b528a0932f50504df146d112f7d01a5c  gcc/tree-cfgcleanup.h
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
! c610e208c5e1da4ee1bff58dac50e79a  gcc/tree-complex.cc
! 1191933aea8ceb0c68bc9e4b2ab3971b  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
  f01aeac56dffd44808096094e2bf76c1  gcc/tree-dfa.cc
*************** ab245837876f2da0af044a74ebcfac2d  gcc/tr
*** 127232,127238 ****
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
  71aa2d4206ac8bd978b5efd19148dd74  gcc/tree-iterator.cc
  1a3fc26573e4e592efe69f41168a65fa  gcc/tree-iterator.h
! 055a1e7bbc0174c71b40525b65ae660e  gcc/tree-logical-location.cc
  fba074361c117a968daf282ef88a2b6e  gcc/tree-logical-location.h
  809e077fea6aa1e38be693ae0a16dee1  gcc/tree-loop-distribution.cc
  87cc8ab545fc5cfef7174e99c72a407a  gcc/tree-nested.cc
--- 127369,127375 ----
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
  71aa2d4206ac8bd978b5efd19148dd74  gcc/tree-iterator.cc
  1a3fc26573e4e592efe69f41168a65fa  gcc/tree-iterator.h
! 708a19806855f78da0268f0c25a1c1c0  gcc/tree-logical-location.cc
  fba074361c117a968daf282ef88a2b6e  gcc/tree-logical-location.h
  809e077fea6aa1e38be693ae0a16dee1  gcc/tree-loop-distribution.cc
  87cc8ab545fc5cfef7174e99c72a407a  gcc/tree-nested.cc
*************** bc6f720750badcd2ff68dddf544e75eb  gcc/tr
*** 127266,127283 ****
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
  44217fe298d550aecd4800f65391c931  gcc/tree-ssa-coalesce.h
  be605b5b6cac7c418bd348b54f9d47cf  gcc/tree-ssa-copy.cc
! 3caa451b12400d5dfc32f39560675a6f  gcc/tree-ssa-dce.cc
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  b9ccca93dfe789389d268eca6dbec62f  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
  6ddd79e7a349847a539144d422bf5a49  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
! 34c678b95f8438b99212fcb79f1a3e09  gcc/tree-ssa-forwprop.cc
  0915c4bbeb42abdda8799c2b27e5db12  gcc/tree-ssa-ifcombine.cc
! edab16a20512b0146482bb2120696d6a  gcc/tree-ssa-live.cc
  cf4bde43ab3b843eff45bac243d4116d  gcc/tree-ssa-live.h
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
! 8caa648854a0f322f13d04563a559e87  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
  ec0ea4b2fca8f29ceacc9fa4130673d0  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
--- 127403,127420 ----
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
  44217fe298d550aecd4800f65391c931  gcc/tree-ssa-coalesce.h
  be605b5b6cac7c418bd348b54f9d47cf  gcc/tree-ssa-copy.cc
! 80a7f1d6d9a483968c3f95f035bdaa27  gcc/tree-ssa-dce.cc
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
  b9ccca93dfe789389d268eca6dbec62f  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
  6ddd79e7a349847a539144d422bf5a49  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
! d6f35e2f0e95baefcb48a42779ba7ac5  gcc/tree-ssa-forwprop.cc
  0915c4bbeb42abdda8799c2b27e5db12  gcc/tree-ssa-ifcombine.cc
! 9bff033c448d54835a74eae5797b80e7  gcc/tree-ssa-live.cc
  cf4bde43ab3b843eff45bac243d4116d  gcc/tree-ssa-live.h
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
! 56c17094ff91d36af5c68291820c1d2f  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
  ec0ea4b2fca8f29ceacc9fa4130673d0  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
*************** ec25a5b6fd6b05135faa83b07eca7e91  gcc/tr
*** 127306,127312 ****
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
  e5d47aba2057e2eb8f826d03db55c697  gcc/tree-ssa-sink.cc
! 2cbfebeb2591a8cf12b712f5b98ad08d  gcc/tree-ssa-strlen.cc
  817cd7b593b9ca11ac7464ee683d8f98  gcc/tree-ssa-strlen.h
  e073ddb1a50f7814e995e221cd97629c  gcc/tree-ssa-structalias.cc
  23048717b29b909dd79dc2b4cdbbda9b  gcc/tree-ssa-structalias.h
--- 127443,127449 ----
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
  e5d47aba2057e2eb8f826d03db55c697  gcc/tree-ssa-sink.cc
! 2c3b8e5931f97da2b34db9aa788e6d14  gcc/tree-ssa-strlen.cc
  817cd7b593b9ca11ac7464ee683d8f98  gcc/tree-ssa-strlen.h
  e073ddb1a50f7814e995e221cd97629c  gcc/tree-ssa-structalias.cc
  23048717b29b909dd79dc2b4cdbbda9b  gcc/tree-ssa-structalias.h
*************** fbd423299c28bb3b3577ec61aba45439  gcc/tr
*** 127322,127328 ****
  c071186b46f37cd7acd76a679deb3f9d  gcc/tree-ssa-uninit.cc
  0cb7cabeb68ef8727724158e83e6c89e  gcc/tree-ssa.cc
  95d033c8a4bc14c898459494486fd902  gcc/tree-ssa.h
! e1e50f26c4b514ef39e8b153cf8168ac  gcc/tree-ssanames.cc
  6ab32249b70e72b4d8b9d4abc134aa6d  gcc/tree-ssanames.h
  5fa0d7c6143cd9e39c30840b9996fa30  gcc/tree-stdarg.cc
  9817789b6289e73955015beb57c609b1  gcc/tree-stdarg.h
--- 127459,127465 ----
  c071186b46f37cd7acd76a679deb3f9d  gcc/tree-ssa-uninit.cc
  0cb7cabeb68ef8727724158e83e6c89e  gcc/tree-ssa.cc
  95d033c8a4bc14c898459494486fd902  gcc/tree-ssa.h
! 3eb9680827e8f2c146fb865631e87371  gcc/tree-ssanames.cc
  6ab32249b70e72b4d8b9d4abc134aa6d  gcc/tree-ssanames.h
  5fa0d7c6143cd9e39c30840b9996fa30  gcc/tree-stdarg.cc
  9817789b6289e73955015beb57c609b1  gcc/tree-stdarg.h
*************** c98debbdc978c10e8934f3b4fb7e2504  gcc/tr
*** 127336,127346 ****
  afc64fe5f2d0be7edd7fd887eb73b974  gcc/tree-vect-data-refs.cc
  e569116acd109106c3f93f17b35e82c9  gcc/tree-vect-generic.cc
  fb5fe49fc60ad2490a0a550d8b4b75bc  gcc/tree-vect-loop-manip.cc
! dc33e4f886b0f73e1a4496702247ea54  gcc/tree-vect-loop.cc
  1b7dbf0667537cd5ff3a40f07bef6ffa  gcc/tree-vect-patterns.cc
  588899232babed9c67e61795ff405608  gcc/tree-vect-slp-patterns.cc
! bc2ec11489eb4cc7a048437577bb9c4a  gcc/tree-vect-slp.cc
! 20af824df44a8b025768f248fbdf31ed  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  c516450d07587e25c338c4223664b2ad  gcc/tree-vectorizer.cc
--- 127473,127483 ----
  afc64fe5f2d0be7edd7fd887eb73b974  gcc/tree-vect-data-refs.cc
  e569116acd109106c3f93f17b35e82c9  gcc/tree-vect-generic.cc
  fb5fe49fc60ad2490a0a550d8b4b75bc  gcc/tree-vect-loop-manip.cc
! 962c93dc4505f6c836761574df258047  gcc/tree-vect-loop.cc
  1b7dbf0667537cd5ff3a40f07bef6ffa  gcc/tree-vect-patterns.cc
  588899232babed9c67e61795ff405608  gcc/tree-vect-slp-patterns.cc
! f1f137c7af69e893d76bed9162fb33bf  gcc/tree-vect-slp.cc
! 19f75bed81b770f6fc7ad8aaeb41c321  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  c516450d07587e25c338c4223664b2ad  gcc/tree-vectorizer.cc
*************** c7399bbb7eadd31d7cd04991cd79c238  includ
*** 127479,127488 ****
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  c01f38de8270d558b8d3ecac839d3bbf  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 6fed691a56374bc5e02e3eec7949a85b  libatomic/ChangeLog
  22c7908ed07d94ad58548bcab79a35f2  libatomic/Makefile.am
  2e5b5c867693b7f777a87ca4a0ff3628  libatomic/Makefile.in
! 04a8eb275561484cf0d6f8c459a38177  libatomic/acinclude.m4
  65ce51ad1e77408c7dba775ba9859d1e  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
  43e4662201ba553905a037a8ad2a470b  libatomic/cas_n.c
--- 127616,127625 ----
  46d6319e8ffc7eabf27cbecd6141a912  libada/configure
  c01f38de8270d558b8d3ecac839d3bbf  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! ad55c6833cc3ca9160ff469c99404d04  libatomic/ChangeLog
  22c7908ed07d94ad58548bcab79a35f2  libatomic/Makefile.am
  2e5b5c867693b7f777a87ca4a0ff3628  libatomic/Makefile.in
! 3ffebc64ea145f822a3e70192f58b44f  libatomic/acinclude.m4
  65ce51ad1e77408c7dba775ba9859d1e  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
  43e4662201ba553905a037a8ad2a470b  libatomic/cas_n.c
*************** ed3d69739cb2f35407547229f0393f92  libato
*** 127517,127523 ****
  e40da0e8515ee6996456294b571e5572  libatomic/config/x86/fenv.c
  e3229b3119558c9d6d6d8f8676d4f1ce  libatomic/config/x86/host-config.h
  6d8f1d8fc6da675bbeacfbd55dca52c9  libatomic/config/x86/init.c
! 3dcf94b6b67add3eeeeda3e3fd87759e  libatomic/configure
  abf6360bd010fbde8c4c935f1cf5616d  libatomic/configure.ac
  9214be1259694af7ffa422117215249a  libatomic/configure.tgt
  cffc539e08bc3149260124f3eb09e1a1  libatomic/exch_n.c
--- 127654,127660 ----
  e40da0e8515ee6996456294b571e5572  libatomic/config/x86/fenv.c
  e3229b3119558c9d6d6d8f8676d4f1ce  libatomic/config/x86/host-config.h
  6d8f1d8fc6da675bbeacfbd55dca52c9  libatomic/config/x86/init.c
! 3b6472c8de473563896ccfc8b65eddee  libatomic/configure
  abf6360bd010fbde8c4c935f1cf5616d  libatomic/configure.ac
  9214be1259694af7ffa422117215249a  libatomic/configure.tgt
  cffc539e08bc3149260124f3eb09e1a1  libatomic/exch_n.c
*************** a3bae9c01d333f7db29d4511561a7d00  libcc1
*** 127663,127676 ****
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! 2dc7e2a3116b6dd7f4fa5ee5eeb8e42f  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
  55625eec19bfdb5cee37f8c7ae4b796b  libcody/Makefile.in
  ca1c6fe3df5427016005ce753c73d454  libcody/README.md
  99ad81d536fef63b80b7f776f0dec53c  libcody/buffer.cc
! 69dd1db758b0ea369d20d7331d889ef5  libcody/client.cc
  40072537e3589ff033129e9d5aa10660  libcody/cmake/libcody-config-ix.cmake
! 521e6cc4ebd40d0fbc4ad2fbd8c8063b  libcody/cody.hh
  b7630b2f7e3997152972e0d3f86af193  libcody/config.h.in
  a003d1057213ab79099f7bdbea631d9e  libcody/config.m4
  b1c5b142e9fe28fd473595d745695db1  libcody/configure
--- 127800,127813 ----
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! c5ef3334073f308b9891eb9e9d87d1d8  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
  55625eec19bfdb5cee37f8c7ae4b796b  libcody/Makefile.in
  ca1c6fe3df5427016005ce753c73d454  libcody/README.md
  99ad81d536fef63b80b7f776f0dec53c  libcody/buffer.cc
! 6085d20f25e5c2f4809b76fc28261fb5  libcody/client.cc
  40072537e3589ff033129e9d5aa10660  libcody/cmake/libcody-config-ix.cmake
! fbd197f7a8c4380bf81aa2ca35950438  libcody/cody.hh
  b7630b2f7e3997152972e0d3f86af193  libcody/config.h.in
  a003d1057213ab79099f7bdbea631d9e  libcody/config.m4
  b1c5b142e9fe28fd473595d745695db1  libcody/configure
*************** b7f8907c165e46ed56efaa23a2c2a570  libcod
*** 127681,127687 ****
  cffdeae41b78da05839b193e90188f55  libcody/netserver.cc
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
! b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
  bfa0a9ec0fe45dba57e77309735ecc99  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
--- 127818,127824 ----
  cffdeae41b78da05839b193e90188f55  libcody/netserver.cc
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
! c94add0032978604acf65591bb86d2d6  libcody/server.cc
  bfa0a9ec0fe45dba57e77309735ecc99  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 128206,128212 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! a04e6fa7595053a1bd0b1298e3f38dd5  libgcc/ChangeLog
  46871f7f435b4902cf5796badf55e199  libgcc/Makefile.in
  3909078d285165298c78eb97ea152e90  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 128343,128349 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 857583837c571100a22f1b70e3c26e23  libgcc/ChangeLog
  46871f7f435b4902cf5796badf55e199  libgcc/Makefile.in
  3909078d285165298c78eb97ea152e90  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** e97bda1ea310b073e90e48dfa972b46a  libgcc
*** 128519,128525 ****
  40b9f3d0eab4e0a1133e3eb612b47800  libgcc/config/h8300/t-h8300
  5e306047059c21ece876039122734094  libgcc/config/h8300/t-linux
  c7e1d4e1711c51198c2f9c3bf4d3fa91  libgcc/config/hardfp.c
! 460efdaea5e3f282f41ca903d9b2cfd6  libgcc/config/i386/32/dfp-machine.h
  475eef8a468bce21734a4397bd19ae6d  libgcc/config/i386/32/sfp-machine.h
  33fdee54eed1c202a39234d129f2a7ae  libgcc/config/i386/32/t-iamcu
  8271562f1de2b3fa5b976454b83bfdc0  libgcc/config/i386/32/t-softfp
--- 128656,128662 ----
  40b9f3d0eab4e0a1133e3eb612b47800  libgcc/config/h8300/t-h8300
  5e306047059c21ece876039122734094  libgcc/config/h8300/t-linux
  c7e1d4e1711c51198c2f9c3bf4d3fa91  libgcc/config/hardfp.c
! 2f0f1a7c65943d430107c4c883e3270d  libgcc/config/i386/32/dfp-machine.h
  475eef8a468bce21734a4397bd19ae6d  libgcc/config/i386/32/sfp-machine.h
  33fdee54eed1c202a39234d129f2a7ae  libgcc/config/i386/32/t-iamcu
  8271562f1de2b3fa5b976454b83bfdc0  libgcc/config/i386/32/t-softfp
*************** f017ba40c4699f1549cd341ad688007f  libgcc
*** 129777,129797 ****
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! 7ded21f11418514ffab9ff903f285a04  libgcobol/ChangeLog
  b227feb8ac8df349788743a8ade3e840  libgcobol/LICENSE
! 4a6ff5666424f9394e752e8a1dcf914a  libgcobol/Makefile.am
! 5752e5399a34a0a7d80ad4eb8018cbfd  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
  8c9140838556aedbca129aeaedf0855b  libgcobol/acinclude.m4
  edff1d46cc8f5e3fa2007d8fede32717  libgcobol/aclocal.m4
  ea69c0048b747c5afbcca0e5cb85a756  libgcobol/charmaps.cc
  9c61b752c257ce87adcf298dcfc73435  libgcobol/charmaps.h
  e44c6fe97350bdd7eff39bd00d594918  libgcobol/common-defs.h
! e456eb3bc5606b398e310200d6e7a1a7  libgcobol/compat/README.md
! 9724ffdf971bebe59c8b2e8708a371b3  libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl
! 848d2a16eb4e04f66947f0a4f3388039  libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl
! 99d695f529024b68583602d0dd126e38  libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl
! 6c02bd6dd638631136b344cff89cefb8  libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl
  79fab4a17bf7e71b69ea829387984111  libgcobol/compat/t/Makefile
  b293e5545f3c614e2e8d23f125a576b6  libgcobol/compat/t/smoke.cbl
  a405f0e858ec34d69f097e6a2986e188  libgcobol/config.h.in
--- 129914,129935 ----
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! a863cbc783a0a53ea5c8cfebe5ea2f76  libgcobol/ChangeLog
  b227feb8ac8df349788743a8ade3e840  libgcobol/LICENSE
! 04057a81e83131ef0e6ab68dbfab7511  libgcobol/Makefile.am
! 32b0df03b8a0a32ad6a44a8623dc0ab2  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
  8c9140838556aedbca129aeaedf0855b  libgcobol/acinclude.m4
  edff1d46cc8f5e3fa2007d8fede32717  libgcobol/aclocal.m4
  ea69c0048b747c5afbcca0e5cb85a756  libgcobol/charmaps.cc
  9c61b752c257ce87adcf298dcfc73435  libgcobol/charmaps.h
  e44c6fe97350bdd7eff39bd00d594918  libgcobol/common-defs.h
! 6f92fa32eabcfff6e25b59104fbd9a6a  libgcobol/compat/README.md
! 9724ffdf971bebe59c8b2e8708a371b3  libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl
! 848d2a16eb4e04f66947f0a4f3388039  libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl
! 99d695f529024b68583602d0dd126e38  libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl
! 6c02bd6dd638631136b344cff89cefb8  libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl
! f49bdd3b2cc069db17d0b4f9a6a02655  libgcobol/compat/gnu/udf/stored-char-length.cbl
  79fab4a17bf7e71b69ea829387984111  libgcobol/compat/t/Makefile
  b293e5545f3c614e2e8d23f125a576b6  libgcobol/compat/t/smoke.cbl
  a405f0e858ec34d69f097e6a2986e188  libgcobol/config.h.in
*************** de91f2c442f5429dd57a380d4e77abd4  libgco
*** 129821,129832 ****
  807e38148d3d302d10877fa78d259600  libgcobol/posix/bin/sizeofs.c
  5731ef322f2cc56fd96cd89d0e5ecc9c  libgcobol/posix/bin/udf-gen
  d33a3081c7c2f2ff39cf646a35ec62a8  libgcobol/posix/cpy/posix-errno.cbl
  89c4c2d899376a5caefdc9ee44531f91  libgcobol/posix/cpy/statbuf.cpy
  3d39925c2d07caf265c66370d2845166  libgcobol/posix/cpy/tm.cpy
  c057a9c0bf247b066e7de6f079edb2f6  libgcobol/posix/shim/errno.cc
  a7b68930ae7325253870cb373c7849f6  libgcobol/posix/shim/localtime.cc
  308a02a974673252b622e5bbca74784d  libgcobol/posix/shim/stat.cc
! 9cc60958c07c7e1f8e9bad4b841941ca  libgcobol/posix/shim/stat.h
  feda976b2ecc3ba909f736aeb43feb48  libgcobol/posix/shim/tm.h
  db2b66c495eb88a1d722067a5aa3c98b  libgcobol/posix/t/Makefile
  7462812a55d7c4eeb70bf0b480bcf193  libgcobol/posix/t/errno.cbl
--- 129959,129972 ----
  807e38148d3d302d10877fa78d259600  libgcobol/posix/bin/sizeofs.c
  5731ef322f2cc56fd96cd89d0e5ecc9c  libgcobol/posix/bin/udf-gen
  d33a3081c7c2f2ff39cf646a35ec62a8  libgcobol/posix/cpy/posix-errno.cbl
+ df954afb031169710b0fcef1d2c63141  libgcobol/posix/cpy/psx-open.cpy
  89c4c2d899376a5caefdc9ee44531f91  libgcobol/posix/cpy/statbuf.cpy
  3d39925c2d07caf265c66370d2845166  libgcobol/posix/cpy/tm.cpy
  c057a9c0bf247b066e7de6f079edb2f6  libgcobol/posix/shim/errno.cc
  a7b68930ae7325253870cb373c7849f6  libgcobol/posix/shim/localtime.cc
+ 84d32331f0b5857d790711a9353e6ace  libgcobol/posix/shim/open.cc
  308a02a974673252b622e5bbca74784d  libgcobol/posix/shim/stat.cc
! 0627b6b8874b55669b3c13b6a52ef590  libgcobol/posix/shim/stat.h
  feda976b2ecc3ba909f736aeb43feb48  libgcobol/posix/shim/tm.h
  db2b66c495eb88a1d722067a5aa3c98b  libgcobol/posix/t/Makefile
  7462812a55d7c4eeb70bf0b480bcf193  libgcobol/posix/t/errno.cbl
*************** c185f49b81cdf8493183fa80bac2a3a7  libgco
*** 129835,129848 ****
  30c9799508c129fb6190e083a7a7837a  libgcobol/posix/t/stat.cbl
  7eb31de3bb34e7725a6cc8285ec9c00e  libgcobol/posix/udf/posix-exit.cbl
  63471924bc915602fcc79a08d2844cd0  libgcobol/posix/udf/posix-localtime.cbl
  9905637f1731df63655b7c69bee2138d  libgcobol/posix/udf/posix-mkdir.cbl
  b596ffc38045755f7ef0c54f1d5555a1  libgcobol/posix/udf/posix-stat.cbl
  3df03151f09cf8f654bae1aa69897f61  libgcobol/posix/udf/posix-unlink.cbl
  569f88db0d90fcf77b2a1a314beb8bcb  libgcobol/stringbin.cc
  179156ad95afd403a9316969a95142f7  libgcobol/stringbin.h
  2b31946dfaa7df328dd0749c37f1ae36  libgcobol/valconv.cc
  bf52fdaed06effba57a10e8157bc6930  libgcobol/valconv.h
! 5c37094c19a68dece6b4163fdc0f9bc5  libgcobol/xmlparse.cc
  2104c8a11398902021f9bd89abce66de  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
--- 129975,129992 ----
  30c9799508c129fb6190e083a7a7837a  libgcobol/posix/t/stat.cbl
  7eb31de3bb34e7725a6cc8285ec9c00e  libgcobol/posix/udf/posix-exit.cbl
  63471924bc915602fcc79a08d2844cd0  libgcobol/posix/udf/posix-localtime.cbl
+ d0b960468c537843000703d744a80306  libgcobol/posix/udf/posix-lseek.cbl
  9905637f1731df63655b7c69bee2138d  libgcobol/posix/udf/posix-mkdir.cbl
+ aaed34e8da501e8f7406f40adfee9b24  libgcobol/posix/udf/posix-open.cbl
+ 7e68e298d44e171c82ef36bae597b286  libgcobol/posix/udf/posix-read.cbl
  b596ffc38045755f7ef0c54f1d5555a1  libgcobol/posix/udf/posix-stat.cbl
  3df03151f09cf8f654bae1aa69897f61  libgcobol/posix/udf/posix-unlink.cbl
+ 0cbcc2fa8aaaeccc8cd28ddd6e3acb0b  libgcobol/posix/udf/posix-write.cbl
  569f88db0d90fcf77b2a1a314beb8bcb  libgcobol/stringbin.cc
  179156ad95afd403a9316969a95142f7  libgcobol/stringbin.h
  2b31946dfaa7df328dd0749c37f1ae36  libgcobol/valconv.cc
  bf52fdaed06effba57a10e8157bc6930  libgcobol/valconv.h
! c87d0834249e4949627ac190796295e9  libgcobol/xmlparse.cc
  2104c8a11398902021f9bd89abce66de  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
*************** f26132364738756eeee0acf44fb5aadf  libgm2
*** 130876,130883 ****
  5655398e9c1e3027c587898dc4fce566  libgm2/acinclude.m4
  d4629d8a3f44bc8f1060e37d381418f6  libgm2/aclocal.m4
  ec51f8ac3552cbacd95bf08e21a6568a  libgm2/config.h.in
! be242d3ef165bebeb9c2fcd8cff0bfff  libgm2/configure
! a1615402f37d3412d1901ee58bebbc2c  libgm2/configure.ac
  b52a0b00feee9e93f7dc34a66027a39f  libgm2/configure.host
  2a25928a1abd3989edcf11c8def19d00  libgm2/libm2cor/KeyBoardLEDs.cc
  f25de03fc822c5eebf7118fcf5283ebc  libgm2/libm2cor/Makefile.am
--- 131020,131027 ----
  5655398e9c1e3027c587898dc4fce566  libgm2/acinclude.m4
  d4629d8a3f44bc8f1060e37d381418f6  libgm2/aclocal.m4
  ec51f8ac3552cbacd95bf08e21a6568a  libgm2/config.h.in
! 36e171b47cb09508511fc7799c785cc6  libgm2/configure
! e0fe07832564d76c66fdae524e26ecb4  libgm2/configure.ac
  b52a0b00feee9e93f7dc34a66027a39f  libgm2/configure.host
  2a25928a1abd3989edcf11c8def19d00  libgm2/libm2cor/KeyBoardLEDs.cc
  f25de03fc822c5eebf7118fcf5283ebc  libgm2/libm2cor/Makefile.am
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 136407,136418 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! a4a8b99a1954ad8dc708cf7e59279f8a  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
  3c91d539fc9934b5095923265d09ec8f  libgomp/Makefile.in
  f931a90a01b7668928d9f7fcd5c7f3fb  libgomp/acc_prof.h
! d45f3b20f1be5d95a6c06fb81bedafe9  libgomp/acinclude.m4
  0630eb0d021f598b58704f3aed8ad2a2  libgomp/aclocal.m4
  d8aa8371c40b734ac5451e05f1ec3ffd  libgomp/affinity-fmt.c
  01378bd902513e181046d9e2c91aaaf0  libgomp/affinity.c
--- 136551,136562 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! b3721ce47eb69d526d75e72550a68196  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  714e3b9c0810a61df01246c2a97e825a  libgomp/Makefile.am
  3c91d539fc9934b5095923265d09ec8f  libgomp/Makefile.in
  f931a90a01b7668928d9f7fcd5c7f3fb  libgomp/acc_prof.h
! 9a95db76a2060962a69a4afbc3f6a5bd  libgomp/acinclude.m4
  0630eb0d021f598b58704f3aed8ad2a2  libgomp/aclocal.m4
  d8aa8371c40b734ac5451e05f1ec3ffd  libgomp/affinity-fmt.c
  01378bd902513e181046d9e2c91aaaf0  libgomp/affinity.c
*************** efc434763cbe71b67359f1858f6c9480  libgom
*** 136533,136539 ****
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
  ef94b568eb279611f49cecc20fb11baa  libgomp/config/rtems/sem.h
  af41d1d04a4112345554ca8b8a072ed9  libgomp/config/t-aix
! 0a0d35d31f3f457033733775525b093c  libgomp/configure
  250e49a5865485507899765bf69913a0  libgomp/configure.ac
  0eb9aa41c92e30c6fb1494575b1c8daa  libgomp/configure.tgt
  bdbd19a4ded46698d600a262cfc20343  libgomp/critical.c
--- 136677,136683 ----
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
  ef94b568eb279611f49cecc20fb11baa  libgomp/config/rtems/sem.h
  af41d1d04a4112345554ca8b8a072ed9  libgomp/config/t-aix
! 8c9d34219629fa9993f192d0380e2223  libgomp/configure
  250e49a5865485507899765bf69913a0  libgomp/configure.ac
  0eb9aa41c92e30c6fb1494575b1c8daa  libgomp/configure.tgt
  bdbd19a4ded46698d600a262cfc20343  libgomp/critical.c
*************** a41a1f7c44a7fd87722b98cc38a4269c  libgom
*** 136550,136556 ****
  bc78934a73836840269a016981725f46  libgomp/libgomp.h
  cd6a22eaa3c99a58084ad32602f087b4  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! 4194dc4e213a6c70d612e1f6457adddb  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
--- 136694,136700 ----
  bc78934a73836840269a016981725f46  libgomp/libgomp.h
  cd6a22eaa3c99a58084ad32602f087b4  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! f0f7bfa5036cdcbeaf6800c337ff73f3  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
*************** ae0dcb4c08025996b4bf4550cf72832e  libgom
*** 136607,136613 ****
  6d56ea402ff11fa0bd533c6d73e2ecde  libgomp/testsuite/libgomp-test-support.exp.in
  75cc672a1bf25974c5f4c5e3bc1a74b1  libgomp/testsuite/libgomp.c++/affinity-1.C
  bad2b3f952b5f27bb1afaadb25ec0846  libgomp/testsuite/libgomp.c++/alloc-managed-1.C
! 196ffcd43fb2edf60795e6aabf50d259  libgomp/testsuite/libgomp.c++/allocate-1.C
  621f4af33dbb0ad8d27a2993a83c9953  libgomp/testsuite/libgomp.c++/allocator-1.C
  3f8b62419c2c8e4b2039644a97c006e3  libgomp/testsuite/libgomp.c++/allocator-2.C
  2c957d1d7acf181ac6aa27218cc24d76  libgomp/testsuite/libgomp.c++/atomic-1.C
--- 136751,136757 ----
  6d56ea402ff11fa0bd533c6d73e2ecde  libgomp/testsuite/libgomp-test-support.exp.in
  75cc672a1bf25974c5f4c5e3bc1a74b1  libgomp/testsuite/libgomp.c++/affinity-1.C
  bad2b3f952b5f27bb1afaadb25ec0846  libgomp/testsuite/libgomp.c++/alloc-managed-1.C
! b53352ff3eedfe05e27937094f28fa51  libgomp/testsuite/libgomp.c++/allocate-1.C
  621f4af33dbb0ad8d27a2993a83c9953  libgomp/testsuite/libgomp.c++/allocator-1.C
  3f8b62419c2c8e4b2039644a97c006e3  libgomp/testsuite/libgomp.c++/allocator-2.C
  2c957d1d7acf181ac6aa27218cc24d76  libgomp/testsuite/libgomp.c++/atomic-1.C
*************** a4982c95f24943943fbf12cb477f081e  libgom
*** 136633,136644 ****
  69724509fc4737c85d299156bfd1749b  libgomp/testsuite/libgomp.c++/attrs-imperfect4.C
  641b8b1671c0a28e41bf6f400e8b01c1  libgomp/testsuite/libgomp.c++/attrs-imperfect5.C
  53a0813095aa39db65067c52388cc9b1  libgomp/testsuite/libgomp.c++/attrs-imperfect6.C
! 2f586cab612fa932e5f67dcabe94eb0d  libgomp/testsuite/libgomp.c++/baseptrs-3.C
  a1abc023f67b2027953bacc39b863ccd  libgomp/testsuite/libgomp.c++/baseptrs-4.C
! 4047f12e81f298b3d86bc7bc097d7d4c  libgomp/testsuite/libgomp.c++/baseptrs-5.C
  3c39e0ea0fe1e119a0ec4951374fa2ae  libgomp/testsuite/libgomp.c++/baseptrs-6.C
  bc681d2313a30218189b18805656a6c7  libgomp/testsuite/libgomp.c++/baseptrs-8.C
  1b38b58754d8a362b20a84f3aa136dc3  libgomp/testsuite/libgomp.c++/baseptrs-9.C
  56d205cefae539512ef991036c306d5d  libgomp/testsuite/libgomp.c++/c++.exp
  40e00f7e2acb12d4a4edc44e244a8475  libgomp/testsuite/libgomp.c++/cancel-for-1.C
  1390d00e8471a40c55b009573ddeaf72  libgomp/testsuite/libgomp.c++/cancel-for-2.C
--- 136777,136796 ----
  69724509fc4737c85d299156bfd1749b  libgomp/testsuite/libgomp.c++/attrs-imperfect4.C
  641b8b1671c0a28e41bf6f400e8b01c1  libgomp/testsuite/libgomp.c++/attrs-imperfect5.C
  53a0813095aa39db65067c52388cc9b1  libgomp/testsuite/libgomp.c++/attrs-imperfect6.C
! 7c2a5e92ba3e34e5f3838e71cbc4ff51  libgomp/testsuite/libgomp.c++/baseptrs-3.C
  a1abc023f67b2027953bacc39b863ccd  libgomp/testsuite/libgomp.c++/baseptrs-4.C
! 6da013483e0169461db00dcab2ce6134  libgomp/testsuite/libgomp.c++/baseptrs-5.C
  3c39e0ea0fe1e119a0ec4951374fa2ae  libgomp/testsuite/libgomp.c++/baseptrs-6.C
  bc681d2313a30218189b18805656a6c7  libgomp/testsuite/libgomp.c++/baseptrs-8.C
  1b38b58754d8a362b20a84f3aa136dc3  libgomp/testsuite/libgomp.c++/baseptrs-9.C
+ f0e09dde93be670f7b1bd660ab56efc9  libgomp/testsuite/libgomp.c++/bdv_module1.C
+ e1158d2f3e5dfd34ea6d2a6839fa1533  libgomp/testsuite/libgomp.c++/bdv_module1_main.C
+ ef2270921837605c840dcd26cc9d3662  libgomp/testsuite/libgomp.c++/bdv_module2.C
+ 2c6c41c130abf1f9e53899aa120a2853  libgomp/testsuite/libgomp.c++/bdv_module2_impl.C
+ b4922a28ab71a1d4231946eaf7ccabe1  libgomp/testsuite/libgomp.c++/bdv_module2_main.C
+ 5570f8e6ec5f898b0bde691dc573d667  libgomp/testsuite/libgomp.c++/bdv_module3.C
+ 644dd34f60516a94cf77ebcd1e370d44  libgomp/testsuite/libgomp.c++/bdv_module3_impl.C
+ e4dad136e1e8d6b4c3650a1bf731c0a3  libgomp/testsuite/libgomp.c++/bdv_module3_main.C
  56d205cefae539512ef991036c306d5d  libgomp/testsuite/libgomp.c++/c++.exp
  40e00f7e2acb12d4a4edc44e244a8475  libgomp/testsuite/libgomp.c++/cancel-for-1.C
  1390d00e8471a40c55b009573ddeaf72  libgomp/testsuite/libgomp.c++/cancel-for-2.C
*************** b63b7c5e4846e9b37ecd72ca0699c154  libgom
*** 136648,136654 ****
  9874d2651f8d264ffe5215b9ac3a9a67  libgomp/testsuite/libgomp.c++/cancel-sections-1.C
  32ea51703b06ba963528c7c41d454527  libgomp/testsuite/libgomp.c++/cancel-taskgroup-3.C
  33f0025315295e3ad9afe1bedd12075d  libgomp/testsuite/libgomp.c++/cancel-test.h
! e1d4f2c9f4d3f4577f08890613c363cb  libgomp/testsuite/libgomp.c++/class-array-1.C
  3cf387e0409514607d2a5bfe5450a908  libgomp/testsuite/libgomp.c++/collapse-1.C
  95b1d349c03cc5d01483df22751c0183  libgomp/testsuite/libgomp.c++/collapse-2.C
  f1e175a4d49888d51652b27c0e3c8c01  libgomp/testsuite/libgomp.c++/copyin-1.C
--- 136800,136806 ----
  9874d2651f8d264ffe5215b9ac3a9a67  libgomp/testsuite/libgomp.c++/cancel-sections-1.C
  32ea51703b06ba963528c7c41d454527  libgomp/testsuite/libgomp.c++/cancel-taskgroup-3.C
  33f0025315295e3ad9afe1bedd12075d  libgomp/testsuite/libgomp.c++/cancel-test.h
! d45d2e1fd50ef2de185180de7e46168c  libgomp/testsuite/libgomp.c++/class-array-1.C
  3cf387e0409514607d2a5bfe5450a908  libgomp/testsuite/libgomp.c++/collapse-1.C
  95b1d349c03cc5d01483df22751c0183  libgomp/testsuite/libgomp.c++/collapse-2.C
  f1e175a4d49888d51652b27c0e3c8c01  libgomp/testsuite/libgomp.c++/copyin-1.C
*************** dd6b619ee130db82170781062477eb42  libgom
*** 136678,136689 ****
  69326cfd40097e393a1bdb2e95e9052d  libgomp/testsuite/libgomp.c++/declare_target-1.C
  a571dcf473210e7664f748b4e44d47f5  libgomp/testsuite/libgomp.c++/declare_target-2.C
  9680d8fd6dafdcd73ddfb70fce9898b5  libgomp/testsuite/libgomp.c++/default-1.C
  01456b503209d46ee61ee8a1877c839c  libgomp/testsuite/libgomp.c++/depend-1.C
  5ddffb7f236c9b7b81760cac311649f6  libgomp/testsuite/libgomp.c++/depend-iterator-1.C
  521ba1bcee599d1efb924a8c86ed94d1  libgomp/testsuite/libgomp.c++/depobj-1.C
  2619580c0be36294ded42bfd27732a03  libgomp/testsuite/libgomp.c++/doacross-1.C
  8f3fa1739a32f62d1e950e3ffdf69ab6  libgomp/testsuite/libgomp.c++/examples-4/declare_target-2.C
! 401b0240812ff132fea099d20d4dc1ee  libgomp/testsuite/libgomp.c++/examples-4/target_data-5.C
  ccd9ee1d01506847d3ea1b041c796d78  libgomp/testsuite/libgomp.c++/firstprivate-1.C
  2e6cbe250ac9d5c71de572a824df56a0  libgomp/testsuite/libgomp.c++/firstprivate-2.C
  e1ee4867ce68141a641f925070e14fdc  libgomp/testsuite/libgomp.c++/for-1.C
--- 136830,136844 ----
  69326cfd40097e393a1bdb2e95e9052d  libgomp/testsuite/libgomp.c++/declare_target-1.C
  a571dcf473210e7664f748b4e44d47f5  libgomp/testsuite/libgomp.c++/declare_target-2.C
  9680d8fd6dafdcd73ddfb70fce9898b5  libgomp/testsuite/libgomp.c++/default-1.C
+ b46a5d495949774f9240c56cbc76b39d  libgomp/testsuite/libgomp.c++/delim-declare-variant-1.C
+ cb237e684fa48f0d3d0a04a711c5a6b0  libgomp/testsuite/libgomp.c++/delim-declare-variant-2.C
+ 76847f360255d626023722de04e6d21c  libgomp/testsuite/libgomp.c++/delim-declare-variant-7.C
  01456b503209d46ee61ee8a1877c839c  libgomp/testsuite/libgomp.c++/depend-1.C
  5ddffb7f236c9b7b81760cac311649f6  libgomp/testsuite/libgomp.c++/depend-iterator-1.C
  521ba1bcee599d1efb924a8c86ed94d1  libgomp/testsuite/libgomp.c++/depobj-1.C
  2619580c0be36294ded42bfd27732a03  libgomp/testsuite/libgomp.c++/doacross-1.C
  8f3fa1739a32f62d1e950e3ffdf69ab6  libgomp/testsuite/libgomp.c++/examples-4/declare_target-2.C
! 98f2608bd37e360bc09de297923e88b7  libgomp/testsuite/libgomp.c++/examples-4/target_data-5.C
  ccd9ee1d01506847d3ea1b041c796d78  libgomp/testsuite/libgomp.c++/firstprivate-1.C
  2e6cbe250ac9d5c71de572a824df56a0  libgomp/testsuite/libgomp.c++/firstprivate-2.C
  e1ee4867ce68141a641f925070e14fdc  libgomp/testsuite/libgomp.c++/for-1.C
*************** dfcc405ebd10d6186baef55d22ddcf08  libgom
*** 136731,136737 ****
  11ba7800c42755cc61bd9c9ef9173207  libgomp/testsuite/libgomp.c++/loop-8.C
  f4c9230a7d51f0d2f7b5f5a32fdaf7ba  libgomp/testsuite/libgomp.c++/loop-9.C
  b622a4cee9411a85452ee1b29b91d320  libgomp/testsuite/libgomp.c++/lvalue-tofrom-1.C
! f07bd794cd101bd9ba1972e509ed440f  libgomp/testsuite/libgomp.c++/lvalue-tofrom-2.C
  d2827edf08309dd5d05a7ae82eb3a65f  libgomp/testsuite/libgomp.c++/map-comma-1.C
  76b1317d8fa0898f3ddb99d7d9719925  libgomp/testsuite/libgomp.c++/map-rvalue-ref-1.C
  f228bd69972ac57d7838e7a77158e192  libgomp/testsuite/libgomp.c++/master-1.C
--- 136886,136892 ----
  11ba7800c42755cc61bd9c9ef9173207  libgomp/testsuite/libgomp.c++/loop-8.C
  f4c9230a7d51f0d2f7b5f5a32fdaf7ba  libgomp/testsuite/libgomp.c++/loop-9.C
  b622a4cee9411a85452ee1b29b91d320  libgomp/testsuite/libgomp.c++/lvalue-tofrom-1.C
! 414b422384c0287ef05799dee8ee0cb8  libgomp/testsuite/libgomp.c++/lvalue-tofrom-2.C
  d2827edf08309dd5d05a7ae82eb3a65f  libgomp/testsuite/libgomp.c++/map-comma-1.C
  76b1317d8fa0898f3ddb99d7d9719925  libgomp/testsuite/libgomp.c++/map-rvalue-ref-1.C
  f228bd69972ac57d7838e7a77158e192  libgomp/testsuite/libgomp.c++/master-1.C
*************** c24b71428729c4477c68a326981f1502  libgom
*** 136749,136759 ****
  1af322f02a0df2cf1f3c2c01d328da07  libgomp/testsuite/libgomp.c++/nested-1.C
  3f755c96f4b692988ea0d1ddeef1ca9b  libgomp/testsuite/libgomp.c++/parallel-1.C
  930dba8506c04bc3a0ed1285cf54ebb5  libgomp/testsuite/libgomp.c++/pr101544-1-O0.C
! 4255b1cd4aa8da621665101c1b354277  libgomp/testsuite/libgomp.c++/pr101544-1.C
  0a4d31c36842026108385cca1b33c889  libgomp/testsuite/libgomp.c++/pr106445-1-O0.C
  f707c9b8a0f7005cc93bc19e863bbd02  libgomp/testsuite/libgomp.c++/pr106445-1.C
  918bd233ad318b00f080ec4f186b4ee1  libgomp/testsuite/libgomp.c++/pr108180.C
! 47f9fb4165180e335283fecf1a9cd061  libgomp/testsuite/libgomp.c++/pr108286.C
  2b5f66e459a48cd1cbeb9dc42d3b751e  libgomp/testsuite/libgomp.c++/pr114572.C
  8801d963ce68c757ce130916d88cfb17  libgomp/testsuite/libgomp.c++/pr119692-1-1.C
  6fc97c0ff0901911f7091f8eca32d1dd  libgomp/testsuite/libgomp.c++/pr119692-1-2.C
--- 136904,136914 ----
  1af322f02a0df2cf1f3c2c01d328da07  libgomp/testsuite/libgomp.c++/nested-1.C
  3f755c96f4b692988ea0d1ddeef1ca9b  libgomp/testsuite/libgomp.c++/parallel-1.C
  930dba8506c04bc3a0ed1285cf54ebb5  libgomp/testsuite/libgomp.c++/pr101544-1-O0.C
! 28ff93024e689b4bb4133d2be9065e4d  libgomp/testsuite/libgomp.c++/pr101544-1.C
  0a4d31c36842026108385cca1b33c889  libgomp/testsuite/libgomp.c++/pr106445-1-O0.C
  f707c9b8a0f7005cc93bc19e863bbd02  libgomp/testsuite/libgomp.c++/pr106445-1.C
  918bd233ad318b00f080ec4f186b4ee1  libgomp/testsuite/libgomp.c++/pr108180.C
! 54dc0c6a125d470a10c8164512c57368  libgomp/testsuite/libgomp.c++/pr108286.C
  2b5f66e459a48cd1cbeb9dc42d3b751e  libgomp/testsuite/libgomp.c++/pr114572.C
  8801d963ce68c757ce130916d88cfb17  libgomp/testsuite/libgomp.c++/pr119692-1-1.C
  6fc97c0ff0901911f7091f8eca32d1dd  libgomp/testsuite/libgomp.c++/pr119692-1-2.C
*************** d1c9121d5b84b9bde37f37bd398698fe  libgom
*** 136801,136817 ****
  0134f1c5e3657862f4594e97dcd43b0f  libgomp/testsuite/libgomp.c++/range-for-4.C
  c4ddb3d2386dc996c885c768f861212e  libgomp/testsuite/libgomp.c++/range-for-5.C
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c++/reduction-1.C
! 1473f55e3f6f9827b6dd281025b88b85  libgomp/testsuite/libgomp.c++/reduction-10.C
! bd119573b86fb5577edaf97dd86d2a6c  libgomp/testsuite/libgomp.c++/reduction-11.C
! 9d561026ca7b17e021f39b4be6f64c5f  libgomp/testsuite/libgomp.c++/reduction-12.C
  6a724210e4cb30df7ade4ef7ee0aa83e  libgomp/testsuite/libgomp.c++/reduction-2.C
  e6be7ac480ea1328785bc17e9c2ecc9a  libgomp/testsuite/libgomp.c++/reduction-3.C
  a1833069552b16c28ced3f3d98d919bd  libgomp/testsuite/libgomp.c++/reduction-4.C
! ea7582b52459bee267a5af375cca9630  libgomp/testsuite/libgomp.c++/reduction-5.C
! 3b0c52566fe33743c4e952d740c907da  libgomp/testsuite/libgomp.c++/reduction-6.C
! 30e5f262ef79696b3d4c9141842af634  libgomp/testsuite/libgomp.c++/reduction-7.C
! 5e52cc6eae6448f2140723873b911dac  libgomp/testsuite/libgomp.c++/reduction-8.C
! 7564a9cf2787e1ce01496a2c2d59cfb3  libgomp/testsuite/libgomp.c++/reduction-9.C
  c8212ba834a467826fa8d31fbadc090e  libgomp/testsuite/libgomp.c++/ref-mapping-1.C
  3fc5ed7aa4ae9433ba1ad67a60ddf745  libgomp/testsuite/libgomp.c++/reference-1.C
  0b26d5fef87544de8178bcc43b57463a  libgomp/testsuite/libgomp.c++/scan-1.C
--- 136956,136972 ----
  0134f1c5e3657862f4594e97dcd43b0f  libgomp/testsuite/libgomp.c++/range-for-4.C
  c4ddb3d2386dc996c885c768f861212e  libgomp/testsuite/libgomp.c++/range-for-5.C
  a594cebdf052900dd0c8792068e14d85  libgomp/testsuite/libgomp.c++/reduction-1.C
! 35fd695a1f962b8b992a828599a13f38  libgomp/testsuite/libgomp.c++/reduction-10.C
! cdecd36c9b82667e4e85c87f76064dca  libgomp/testsuite/libgomp.c++/reduction-11.C
! 3012b33a92df68922e80c7e98e70bf36  libgomp/testsuite/libgomp.c++/reduction-12.C
  6a724210e4cb30df7ade4ef7ee0aa83e  libgomp/testsuite/libgomp.c++/reduction-2.C
  e6be7ac480ea1328785bc17e9c2ecc9a  libgomp/testsuite/libgomp.c++/reduction-3.C
  a1833069552b16c28ced3f3d98d919bd  libgomp/testsuite/libgomp.c++/reduction-4.C
! 36c45ae05ba79f52b3b3f4a54183f07c  libgomp/testsuite/libgomp.c++/reduction-5.C
! c7d97bc43e8f205d9b62844c0a8108b0  libgomp/testsuite/libgomp.c++/reduction-6.C
! 2b9261c0af03ff63b37380e5f502c740  libgomp/testsuite/libgomp.c++/reduction-7.C
! 4d54476f0bcb1e136be65259eb74288c  libgomp/testsuite/libgomp.c++/reduction-8.C
! 2e271b54008d807758f17dd9c9ecaef8  libgomp/testsuite/libgomp.c++/reduction-9.C
  c8212ba834a467826fa8d31fbadc090e  libgomp/testsuite/libgomp.c++/ref-mapping-1.C
  3fc5ed7aa4ae9433ba1ad67a60ddf745  libgomp/testsuite/libgomp.c++/reference-1.C
  0b26d5fef87544de8178bcc43b57463a  libgomp/testsuite/libgomp.c++/scan-1.C
*************** a6b49af37227f8b4a2b400968972f26d  libgom
*** 136858,136877 ****
  2c4c8267dca8995861a505bab1fbea46  libgomp/testsuite/libgomp.c++/target-15.C
  a847e64529061157489cc5cde35c7ab0  libgomp/testsuite/libgomp.c++/target-16.C
  a627394989a1f5de1aef46f3899651b0  libgomp/testsuite/libgomp.c++/target-17.C
! 026c96202a3641ccf240834b64dca595  libgomp/testsuite/libgomp.c++/target-18.C
! df5716f496620d97e07fe0d5a08e0c9c  libgomp/testsuite/libgomp.c++/target-19.C
  a7edc8ba5a137d69a617a4d3675b5b01  libgomp/testsuite/libgomp.c++/target-2-aux.cc
! adba67f432b50b18b63fd983c7c0402a  libgomp/testsuite/libgomp.c++/target-2.C
  37e4e40177aed08ff1f53d7b901a11ce  libgomp/testsuite/libgomp.c++/target-20.C
  ab3063f8b6682d372e65d063a35a406d  libgomp/testsuite/libgomp.c++/target-21.C
! 5997530d2ff7d321f6ba42c090c31624  libgomp/testsuite/libgomp.c++/target-22.C
! 2ccc87923b6fdd79d28d47e24e5dbfce  libgomp/testsuite/libgomp.c++/target-23.C
  41ce55c66b2d50a3d368e92fd39401b7  libgomp/testsuite/libgomp.c++/target-48.C
  415b1dd37c80a5a1111cd57da2ef7e79  libgomp/testsuite/libgomp.c++/target-49.C
  71c15b60610a2e837b909b193b5386d2  libgomp/testsuite/libgomp.c++/target-6.C
  131b2ab5b78c2725e33c4249f59e5799  libgomp/testsuite/libgomp.c++/target-7.C
  1a7862ad9a2af6943f9928a670bcaf16  libgomp/testsuite/libgomp.c++/target-8.C
! e8abd1a92868914a2a5307268ef4b3d8  libgomp/testsuite/libgomp.c++/target-9.C
  0c3cc98689bf759beba23798d61ce4b1  libgomp/testsuite/libgomp.c++/target-cdtor-1.C
  457b919f3ef79b72a20a5deb55a33a8e  libgomp/testsuite/libgomp.c++/target-cdtor-2.C
  3d15e0d44019185d8004a4d4b87851de  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C
--- 137013,137032 ----
  2c4c8267dca8995861a505bab1fbea46  libgomp/testsuite/libgomp.c++/target-15.C
  a847e64529061157489cc5cde35c7ab0  libgomp/testsuite/libgomp.c++/target-16.C
  a627394989a1f5de1aef46f3899651b0  libgomp/testsuite/libgomp.c++/target-17.C
! c6201e661299df87ddbfd63cbc348ee8  libgomp/testsuite/libgomp.c++/target-18.C
! deb4ef92609374c64135bdc41faa73db  libgomp/testsuite/libgomp.c++/target-19.C
  a7edc8ba5a137d69a617a4d3675b5b01  libgomp/testsuite/libgomp.c++/target-2-aux.cc
! a02eb3284ac535ed3a2d44c927b43d5d  libgomp/testsuite/libgomp.c++/target-2.C
  37e4e40177aed08ff1f53d7b901a11ce  libgomp/testsuite/libgomp.c++/target-20.C
  ab3063f8b6682d372e65d063a35a406d  libgomp/testsuite/libgomp.c++/target-21.C
! e5d6ce5efe3a3b6c2153b1ba784f1cc4  libgomp/testsuite/libgomp.c++/target-22.C
! f66604a729c1a693416c247cef5805b1  libgomp/testsuite/libgomp.c++/target-23.C
  41ce55c66b2d50a3d368e92fd39401b7  libgomp/testsuite/libgomp.c++/target-48.C
  415b1dd37c80a5a1111cd57da2ef7e79  libgomp/testsuite/libgomp.c++/target-49.C
  71c15b60610a2e837b909b193b5386d2  libgomp/testsuite/libgomp.c++/target-6.C
  131b2ab5b78c2725e33c4249f59e5799  libgomp/testsuite/libgomp.c++/target-7.C
  1a7862ad9a2af6943f9928a670bcaf16  libgomp/testsuite/libgomp.c++/target-8.C
! 9ae4b452504278d0f3af44f0a9a2aa71  libgomp/testsuite/libgomp.c++/target-9.C
  0c3cc98689bf759beba23798d61ce4b1  libgomp/testsuite/libgomp.c++/target-cdtor-1.C
  457b919f3ef79b72a20a5deb55a33a8e  libgomp/testsuite/libgomp.c++/target-cdtor-2.C
  3d15e0d44019185d8004a4d4b87851de  libgomp/testsuite/libgomp.c++/target-exceptions-bad_cast-1.C
*************** ec937bfca18dd06fec284c99ab526c23  libgom
*** 136891,136979 ****
  488d32eeb21a3eeda82ddf89a2bfa708  libgomp/testsuite/libgomp.c++/target-exceptions-throw-3.C
  3e34525fadfa0f7d151d5ffe7f6c0f3d  libgomp/testsuite/libgomp.c++/target-exit-data-reftoptr-1.C
  b83d91a3813efbf02b55efe0117eff39  libgomp/testsuite/libgomp.c++/target-flex-10.C
! 1990d65ffda2ff57200ec61c5027c0bd  libgomp/testsuite/libgomp.c++/target-flex-100.C
! a8dd26147de28a91290fbc5cc546736c  libgomp/testsuite/libgomp.c++/target-flex-101.C
  fe4d74edf4ec5a3375e54ddd28a8796a  libgomp/testsuite/libgomp.c++/target-flex-11.C
! 0a4ab3e4091f832114123d88913f8a70  libgomp/testsuite/libgomp.c++/target-flex-12.C
  5ff5527ae7d116bd8013ae15730da4b2  libgomp/testsuite/libgomp.c++/target-flex-2000.C
  3d7f92c220984f9b5df143d83454b2d9  libgomp/testsuite/libgomp.c++/target-flex-2001.C
  954995091329c954f03416c9d68fcd53  libgomp/testsuite/libgomp.c++/target-flex-2002.C
! 77f35f53669a7226e09fcbe543d61a78  libgomp/testsuite/libgomp.c++/target-flex-2003.C
! 79ba21f64aded5953ed95cdb188656e1  libgomp/testsuite/libgomp.c++/target-flex-30.C
! 563f2c38d177db2c2abb6025bf23e8dd  libgomp/testsuite/libgomp.c++/target-flex-300.C
  f11b154ef2f8af567a2bba1f78f3422b  libgomp/testsuite/libgomp.c++/target-flex-31.C
! 2e210834ba5b83143580624d7853e294  libgomp/testsuite/libgomp.c++/target-flex-32.C
! 74c1c725cb1b123cf394d2d4f68e97f6  libgomp/testsuite/libgomp.c++/target-flex-33.C
! 972b82f01a6edf4943dc9782cdfb5dde  libgomp/testsuite/libgomp.c++/target-flex-41.C
! 7aa950ef84725f2baef1cbe81d116606  libgomp/testsuite/libgomp.c++/target-flex-60.C
! 35f9209b4dd56a2cac6e72ee9e1cdd56  libgomp/testsuite/libgomp.c++/target-flex-61.C
! b5f6d6ba64189d7870c4b4912d2af06b  libgomp/testsuite/libgomp.c++/target-flex-62.C
  78f769fdafe753971a11ba1f544862d6  libgomp/testsuite/libgomp.c++/target-flex-70.C
! 819954da74d83a55a001d86b6644a0fc  libgomp/testsuite/libgomp.c++/target-flex-80.C
! 54a02975b37691efc1c05ed51a76557a  libgomp/testsuite/libgomp.c++/target-flex-81.C
  d241074614c759c57e84e4b52f049edc  libgomp/testsuite/libgomp.c++/target-flex-90.C
  868cc196b1bcad33d596bb9de56108d6  libgomp/testsuite/libgomp.c++/target-flex-common.h
  4f1a5a6faf4e4b1e94a99f3df7f59dfd  libgomp/testsuite/libgomp.c++/target-has-device-addr-2.C
  c2ea975d3e14f144e2ade23a720b62bd  libgomp/testsuite/libgomp.c++/target-has-device-addr-4.C
  e259056e47b1dc505accadfe5b89d17a  libgomp/testsuite/libgomp.c++/target-has-device-addr-5.C
  e2dfff93f6318ffc237067f281108b05  libgomp/testsuite/libgomp.c++/target-has-device-addr-6.C
! e6701a1305fd626c1f5d07b941421538  libgomp/testsuite/libgomp.c++/target-has-device-addr-7.C
  19df607ca0e83587c3295f274e8fc1bf  libgomp/testsuite/libgomp.c++/target-has-device-addr-8.C
  8d805913407543aaead455b01dc65b8d  libgomp/testsuite/libgomp.c++/target-has-device-addr-9.C
! 97a638ec3a95eff4958b3eac3dfbfbaf  libgomp/testsuite/libgomp.c++/target-in-reduction-1.C
! 0277e9ef051fe788c9b9cd37617bc8aa  libgomp/testsuite/libgomp.c++/target-in-reduction-2.C
! d23befcb08b7a354553581687606995a  libgomp/testsuite/libgomp.c++/target-lambda-1.C
  b22a767f11646ecb4998ef385c41337f  libgomp/testsuite/libgomp.c++/target-lambda-2.C
! e83625d4c6190854ee54b25cdabe69ca  libgomp/testsuite/libgomp.c++/target-lambda-3.C
  4372bdd89f0ce0490fa57005228167d3  libgomp/testsuite/libgomp.c++/target-lambda-4.C
! d60133477ad2d5ea3c1aca648a09ac9f  libgomp/testsuite/libgomp.c++/target-map-class-1.C
  8f7ce45b75a797c6700eae6c6c482459  libgomp/testsuite/libgomp.c++/target-map-class-2.C
  d01f6cd5771f7784c8ce461cf8b60255  libgomp/testsuite/libgomp.c++/target-same-name-2-a.C
  b0372bd118a07b6674371887148186be  libgomp/testsuite/libgomp.c++/target-same-name-2-b.C
  e20a8ae264dd60aac921ec743e8b6ef6  libgomp/testsuite/libgomp.c++/target-same-name-2.C
  49bec1188a7f331490fd1a884f5ffe7d  libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C
! 3b233a453c3bb44b7fe238e719baaab0  libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C
  abc1f024f366b278405b58df17afe0cd  libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C
! 8bcc7935a48ea91610acb80b5099cfcf  libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C
  46a820315e87c64c2043cfe42375298c  libgomp/testsuite/libgomp.c++/target-std__cmath.C
  31a5c6ae9e1ebbc7d44b7d279bd40b98  libgomp/testsuite/libgomp.c++/target-std__complex.C
  983898d3a6fba310a33cc99a690e61cd  libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C
! 38a9fa8246afedbc1c1efbe0e9ec1e36  libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C
! f57f5eff5728eebc9b6e6d8b443459f4  libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C
! 94776317db2fe825d2635d29d6769208  libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C
! 1f377677e5b07bccd785fa7f52568e33  libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C
! d9a8a0d044e2015bfbdf791ead014021  libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C
  35f877f9bcff198b68b3c7adbe76cc90  libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C
! fdec3ba1b0908da4a102cb7c82a03a71  libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C
  f957ac83f08d36891003338813dcd03d  libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C
! 9ae571f820c7288512759c98e324522e  libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C
  9215d28cde00a16495049615bac940cb  libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C
! aafa0a49328d827ce7bd9ef6ad8f9e4d  libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C
  5e320404381ef41bf4828273a4162e96  libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C
! 4a31a5586722bb1790429ce64bddf798  libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C
  02fbac6f0c9f081d4eb14d7a2f7a0041  libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C
! 870d16f297d84c8add772ed331876a43  libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C
  733f4878044be0e7b75ce52065c6cd77  libgomp/testsuite/libgomp.c++/target-std__numbers.C
  5c629252d916db885e993c42be0fa90e  libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C
! 7d6db87f2bf1a8af87fa7c2bd2510cee  libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C
  85fcbd49d3999b48d99d829e637b8eac  libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C
! 71ab4f627e6d304b2b607c5f1a8b714f  libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C
! 07a67441f7fdd81abbf6c76f9adb48f7  libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C
! 2f3a1c1a1d16e63b8d4ec3e87fb3b3c4  libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C
! c6ffcb486ca72e20c5b5a8aa4e218c32  libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C
! 6b57b6d8473c3645b2bf7ed07ac18605  libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C
! 8183c34ab1e3da10e4d19400ad68a32c  libgomp/testsuite/libgomp.c++/target-std__valarray-1.C
  94b5f7b92b7c4edffc6cfe54dfd4fdee  libgomp/testsuite/libgomp.c++/target-std__valarray-1.output
  965d40172dd9afb6a0a83d60c260bfbb  libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C
! 606c20e786b4a247245b41b2c684700c  libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C
  22adb89598c33012dbbc8c38c19501ce  libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C
! 50720f2d9b3b20280c020df7032e9281  libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C
  dd3ce96eb6e1a02d995c05804baf3219  libgomp/testsuite/libgomp.c++/target-this-1.C
  7ecd542ef8fc4d3c7a2e77af16f33ddc  libgomp/testsuite/libgomp.c++/target-this-2.C
! b259a40bb59294ea9e4a97ffe6189132  libgomp/testsuite/libgomp.c++/target-this-3.C
! 0a7c63c111661f7e3b5339677db5cb26  libgomp/testsuite/libgomp.c++/target-this-4.C
  16c373a225fe82f7f0d604229dd1c144  libgomp/testsuite/libgomp.c++/target-this-5.C
! d3a5c683e9f1ba8fe5f9c52a09722af0  libgomp/testsuite/libgomp.c++/target-virtual-1.C
  4755f8276f35f740d59135af4e5242f0  libgomp/testsuite/libgomp.c++/task-1.C
  5532f36e28daf97021228ebf72885697  libgomp/testsuite/libgomp.c++/task-2.C
  27531bc2a807e1107292fe33e894f8a0  libgomp/testsuite/libgomp.c++/task-3.C
--- 137046,137134 ----
  488d32eeb21a3eeda82ddf89a2bfa708  libgomp/testsuite/libgomp.c++/target-exceptions-throw-3.C
  3e34525fadfa0f7d151d5ffe7f6c0f3d  libgomp/testsuite/libgomp.c++/target-exit-data-reftoptr-1.C
  b83d91a3813efbf02b55efe0117eff39  libgomp/testsuite/libgomp.c++/target-flex-10.C
! 6edf5ba1589c2e4b0678965adba0983b  libgomp/testsuite/libgomp.c++/target-flex-100.C
! 079fbd8ce9ec8a33b97dd29720211063  libgomp/testsuite/libgomp.c++/target-flex-101.C
  fe4d74edf4ec5a3375e54ddd28a8796a  libgomp/testsuite/libgomp.c++/target-flex-11.C
! c862a50d1fdf5eca5abe91529aa9176f  libgomp/testsuite/libgomp.c++/target-flex-12.C
  5ff5527ae7d116bd8013ae15730da4b2  libgomp/testsuite/libgomp.c++/target-flex-2000.C
  3d7f92c220984f9b5df143d83454b2d9  libgomp/testsuite/libgomp.c++/target-flex-2001.C
  954995091329c954f03416c9d68fcd53  libgomp/testsuite/libgomp.c++/target-flex-2002.C
! f50ad3cb8f31df92fdac511c46669329  libgomp/testsuite/libgomp.c++/target-flex-2003.C
! c1bc651f9153db6c8327df878a547ff5  libgomp/testsuite/libgomp.c++/target-flex-30.C
! 19127f46e99d6bd12fd0e6890e69581b  libgomp/testsuite/libgomp.c++/target-flex-300.C
  f11b154ef2f8af567a2bba1f78f3422b  libgomp/testsuite/libgomp.c++/target-flex-31.C
! ccd9638715e5a7eda6f5e7dc895a8ef3  libgomp/testsuite/libgomp.c++/target-flex-32.C
! 05f6bc272f36296138644ce8c0db4594  libgomp/testsuite/libgomp.c++/target-flex-33.C
! 7b126c0871a4efa55df4c04623297817  libgomp/testsuite/libgomp.c++/target-flex-41.C
! a7a2fdf4d2b2a45ca86de6af02a7fc6a  libgomp/testsuite/libgomp.c++/target-flex-60.C
! 23935526216b81f1f6dacd982d4ce5a2  libgomp/testsuite/libgomp.c++/target-flex-61.C
! 390b165b987e6322c944566dedd6185c  libgomp/testsuite/libgomp.c++/target-flex-62.C
  78f769fdafe753971a11ba1f544862d6  libgomp/testsuite/libgomp.c++/target-flex-70.C
! 152a676012f487a597cf97fe8443d1f6  libgomp/testsuite/libgomp.c++/target-flex-80.C
! a422fac7420c68f18c78e6509b5249a9  libgomp/testsuite/libgomp.c++/target-flex-81.C
  d241074614c759c57e84e4b52f049edc  libgomp/testsuite/libgomp.c++/target-flex-90.C
  868cc196b1bcad33d596bb9de56108d6  libgomp/testsuite/libgomp.c++/target-flex-common.h
  4f1a5a6faf4e4b1e94a99f3df7f59dfd  libgomp/testsuite/libgomp.c++/target-has-device-addr-2.C
  c2ea975d3e14f144e2ade23a720b62bd  libgomp/testsuite/libgomp.c++/target-has-device-addr-4.C
  e259056e47b1dc505accadfe5b89d17a  libgomp/testsuite/libgomp.c++/target-has-device-addr-5.C
  e2dfff93f6318ffc237067f281108b05  libgomp/testsuite/libgomp.c++/target-has-device-addr-6.C
! 3f30996cbb6ad3019d08c6070ee98f7b  libgomp/testsuite/libgomp.c++/target-has-device-addr-7.C
  19df607ca0e83587c3295f274e8fc1bf  libgomp/testsuite/libgomp.c++/target-has-device-addr-8.C
  8d805913407543aaead455b01dc65b8d  libgomp/testsuite/libgomp.c++/target-has-device-addr-9.C
! 8e3301c974be75f8c7968867a40e1254  libgomp/testsuite/libgomp.c++/target-in-reduction-1.C
! 940cbc52029d3b66c419146d369dbd5e  libgomp/testsuite/libgomp.c++/target-in-reduction-2.C
! a083fe543164c685afb356b928235923  libgomp/testsuite/libgomp.c++/target-lambda-1.C
  b22a767f11646ecb4998ef385c41337f  libgomp/testsuite/libgomp.c++/target-lambda-2.C
! 0b5bbbcf9eb120684f80f84df54f570d  libgomp/testsuite/libgomp.c++/target-lambda-3.C
  4372bdd89f0ce0490fa57005228167d3  libgomp/testsuite/libgomp.c++/target-lambda-4.C
! cfa4149542c401b73310497159a6cb92  libgomp/testsuite/libgomp.c++/target-map-class-1.C
  8f7ce45b75a797c6700eae6c6c482459  libgomp/testsuite/libgomp.c++/target-map-class-2.C
  d01f6cd5771f7784c8ce461cf8b60255  libgomp/testsuite/libgomp.c++/target-same-name-2-a.C
  b0372bd118a07b6674371887148186be  libgomp/testsuite/libgomp.c++/target-same-name-2-b.C
  e20a8ae264dd60aac921ec743e8b6ef6  libgomp/testsuite/libgomp.c++/target-same-name-2.C
  49bec1188a7f331490fd1a884f5ffe7d  libgomp/testsuite/libgomp.c++/target-std__array-concurrent-usm.C
! 930f1412fb1556f867d16b8bdd015934  libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C
  abc1f024f366b278405b58df17afe0cd  libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent-usm.C
! 06d825a0695b3b2c778183f2a0f15340  libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C
  46a820315e87c64c2043cfe42375298c  libgomp/testsuite/libgomp.c++/target-std__cmath.C
  31a5c6ae9e1ebbc7d44b7d279bd40b98  libgomp/testsuite/libgomp.c++/target-std__complex.C
  983898d3a6fba310a33cc99a690e61cd  libgomp/testsuite/libgomp.c++/target-std__deque-concurrent-usm.C
! 641e02305cef2872a17d09d3aee5e29a  libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C
! 7b8564af7efb36534e06bf9256491d47  libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C
! 50abf3a4f9429a3f337acccadf011f08  libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C
! 462312b79cfd6847f34cdd45245bc748  libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C
! 9f7bf1a7585f20e59cb41e8099f7caf1  libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C
  35f877f9bcff198b68b3c7adbe76cc90  libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent-usm.C
! 738cfd5c2e93632d34138fd16adf5b25  libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C
  f957ac83f08d36891003338813dcd03d  libgomp/testsuite/libgomp.c++/target-std__list-concurrent-usm.C
! 38996444567e6544d8fc2c8896b3857c  libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C
  9215d28cde00a16495049615bac940cb  libgomp/testsuite/libgomp.c++/target-std__map-concurrent-usm.C
! 0850a8e25f775a93e3548200ac6c5e9b  libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C
  5e320404381ef41bf4828273a4162e96  libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent-usm.C
! ebc970badffeaa66f031d7077302889d  libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C
  02fbac6f0c9f081d4eb14d7a2f7a0041  libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent-usm.C
! 3c9a591a77ac428729c14e9aebfdc428  libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C
  733f4878044be0e7b75ce52065c6cd77  libgomp/testsuite/libgomp.c++/target-std__numbers.C
  5c629252d916db885e993c42be0fa90e  libgomp/testsuite/libgomp.c++/target-std__set-concurrent-usm.C
! 5c50c046a303089716d97390d263ae5d  libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C
  85fcbd49d3999b48d99d829e637b8eac  libgomp/testsuite/libgomp.c++/target-std__span-concurrent-usm.C
! 5ef72ef8ba9ff6bc00c1a2437acbe965  libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C
! 1fb1f482d2cc7a45a533ed58a3ad667b  libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C
! bbb993c5215396373d2a2a480d2ef71a  libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C
! 4eb7070d3fbd54355b325be0a2134275  libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C
! 8987e8e0d15420f50e0c3dd2ba9a92fc  libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C
! eb61cd412b5e2700a8043a9017c98ca7  libgomp/testsuite/libgomp.c++/target-std__valarray-1.C
  94b5f7b92b7c4edffc6cfe54dfd4fdee  libgomp/testsuite/libgomp.c++/target-std__valarray-1.output
  965d40172dd9afb6a0a83d60c260bfbb  libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent-usm.C
! 485cd8daad096e850e07025d661fbca6  libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C
  22adb89598c33012dbbc8c38c19501ce  libgomp/testsuite/libgomp.c++/target-std__vector-concurrent-usm.C
! 23b6710435558e7002fc886615d59f56  libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C
  dd3ce96eb6e1a02d995c05804baf3219  libgomp/testsuite/libgomp.c++/target-this-1.C
  7ecd542ef8fc4d3c7a2e77af16f33ddc  libgomp/testsuite/libgomp.c++/target-this-2.C
! ca6e1cf374cf317aca4336ffd0f23b46  libgomp/testsuite/libgomp.c++/target-this-3.C
! 267d80f9766f37b7c01e315688b6f58b  libgomp/testsuite/libgomp.c++/target-this-4.C
  16c373a225fe82f7f0d604229dd1c144  libgomp/testsuite/libgomp.c++/target-this-5.C
! f29fd9fd6b4ceb2153ee577439c12757  libgomp/testsuite/libgomp.c++/target-virtual-1.C
  4755f8276f35f740d59135af4e5242f0  libgomp/testsuite/libgomp.c++/task-1.C
  5532f36e28daf97021228ebf72885697  libgomp/testsuite/libgomp.c++/task-2.C
  27531bc2a807e1107292fe33e894f8a0  libgomp/testsuite/libgomp.c++/task-3.C
*************** e58d1f21c043b7905dfd8072efa52a05  libgom
*** 136984,137004 ****
  c2392e28255d8ad9d2a56b86eddef4b4  libgomp/testsuite/libgomp.c++/task-8.C
  eacb4b2d5ef8455c8e37851883c5714d  libgomp/testsuite/libgomp.c++/task-reduction-1.C
  25ea133533a216a56e66fc40a44dcb42  libgomp/testsuite/libgomp.c++/task-reduction-10.C
! aa976df1d10c33e8641b581d940be81a  libgomp/testsuite/libgomp.c++/task-reduction-11.C
! 26cfec78c79d24711bbf42bda7a555fa  libgomp/testsuite/libgomp.c++/task-reduction-12.C
! 27016454f9df3d9ab4057d6bdbf51075  libgomp/testsuite/libgomp.c++/task-reduction-13.C
  50b64ff9f818d557847d5c8b00fa2972  libgomp/testsuite/libgomp.c++/task-reduction-14.C
  5d6d833485e70ff9aeaabed75eb82364  libgomp/testsuite/libgomp.c++/task-reduction-15.C
  ed9df181e0fa5e9cf64c81b57fd6c737  libgomp/testsuite/libgomp.c++/task-reduction-16.C
! 5c3380263a3e4ee69bc9498f26028ab6  libgomp/testsuite/libgomp.c++/task-reduction-17.C
! 827eb44659382d038df098807c790d5f  libgomp/testsuite/libgomp.c++/task-reduction-18.C
! e83c1b5fc10d976789e468bec73b4ae7  libgomp/testsuite/libgomp.c++/task-reduction-19.C
  86b18fe99055940b077fc87941a4982d  libgomp/testsuite/libgomp.c++/task-reduction-2.C
  d584d89884b73fdaeb2dbdb58307cc54  libgomp/testsuite/libgomp.c++/task-reduction-3.C
! 70205337be77c4adef6e0b33d7c5dbcd  libgomp/testsuite/libgomp.c++/task-reduction-4.C
! d1bcb83388e5836394c31c004a3523b7  libgomp/testsuite/libgomp.c++/task-reduction-5.C
! 4934254955da88230c522b61eb1c98a5  libgomp/testsuite/libgomp.c++/task-reduction-6.C
! 79e71bd2e7607f1ae00bce098b081713  libgomp/testsuite/libgomp.c++/task-reduction-7.C
  b74a32fc280ea9e21760697490ebe443  libgomp/testsuite/libgomp.c++/task-reduction-8.C
  dc6d761bb7690280e86d9b43578c2095  libgomp/testsuite/libgomp.c++/task-reduction-9.C
  952a7f4c3daca43ae5ba697df18b089b  libgomp/testsuite/libgomp.c++/taskloop-5.C
--- 137139,137159 ----
  c2392e28255d8ad9d2a56b86eddef4b4  libgomp/testsuite/libgomp.c++/task-8.C
  eacb4b2d5ef8455c8e37851883c5714d  libgomp/testsuite/libgomp.c++/task-reduction-1.C
  25ea133533a216a56e66fc40a44dcb42  libgomp/testsuite/libgomp.c++/task-reduction-10.C
! 8553e34b9c8e1daab8355b2d32d4f33d  libgomp/testsuite/libgomp.c++/task-reduction-11.C
! ddbae88f32b3c9b1de0fa8fcaff46116  libgomp/testsuite/libgomp.c++/task-reduction-12.C
! a62308588a46722532c7fa3256bda8f6  libgomp/testsuite/libgomp.c++/task-reduction-13.C
  50b64ff9f818d557847d5c8b00fa2972  libgomp/testsuite/libgomp.c++/task-reduction-14.C
  5d6d833485e70ff9aeaabed75eb82364  libgomp/testsuite/libgomp.c++/task-reduction-15.C
  ed9df181e0fa5e9cf64c81b57fd6c737  libgomp/testsuite/libgomp.c++/task-reduction-16.C
! 7983a188b92179d076a26a9d828925dc  libgomp/testsuite/libgomp.c++/task-reduction-17.C
! be68403b92ab91d41e228c6d6e0aff2c  libgomp/testsuite/libgomp.c++/task-reduction-18.C
! c2084bb276cdfec1c29bed43b8541b69  libgomp/testsuite/libgomp.c++/task-reduction-19.C
  86b18fe99055940b077fc87941a4982d  libgomp/testsuite/libgomp.c++/task-reduction-2.C
  d584d89884b73fdaeb2dbdb58307cc54  libgomp/testsuite/libgomp.c++/task-reduction-3.C
! 2586da7d10786a72f88c1e2c8c132097  libgomp/testsuite/libgomp.c++/task-reduction-4.C
! e0b9223f090e13d2eaffa1c4beadfb00  libgomp/testsuite/libgomp.c++/task-reduction-5.C
! 667be26164ed91cd6373fa0993fc4b5b  libgomp/testsuite/libgomp.c++/task-reduction-6.C
! 43dede2457d19ee878bfca6e0827f9b7  libgomp/testsuite/libgomp.c++/task-reduction-7.C
  b74a32fc280ea9e21760697490ebe443  libgomp/testsuite/libgomp.c++/task-reduction-8.C
  dc6d761bb7690280e86d9b43578c2095  libgomp/testsuite/libgomp.c++/task-reduction-9.C
  952a7f4c3daca43ae5ba697df18b089b  libgomp/testsuite/libgomp.c++/taskloop-5.C
*************** b3611556d31dd93c92d3f5f0f9099804  libgom
*** 137007,137015 ****
  1509a4bd1d786f821f29fcd625281ad8  libgomp/testsuite/libgomp.c++/taskloop-8.C
  2709861c62646dd2b7f52c228c6271d7  libgomp/testsuite/libgomp.c++/taskloop-9.C
  542dc7970e6d4a87acac2feba00d3cfc  libgomp/testsuite/libgomp.c++/taskloop-reduction-1.C
! c324270fa0263734570b806cb9dc8634  libgomp/testsuite/libgomp.c++/taskloop-reduction-2.C
! c17f30fd1074dbee7b7ff0bc9e49fc8a  libgomp/testsuite/libgomp.c++/taskloop-reduction-3.C
! 22bcd6aa55135df4188eb236f0c8de9a  libgomp/testsuite/libgomp.c++/taskloop-reduction-4.C
  1c8b2b64c4221e935e377e1cf10d1a03  libgomp/testsuite/libgomp.c++/tile-2.C
  71cd0846135fd169fbe95edc731392a2  libgomp/testsuite/libgomp.c++/tile-3.C
  3f97f3f027f9dba0eb3df8a8ade40bc0  libgomp/testsuite/libgomp.c++/tls-init1.C
--- 137162,137170 ----
  1509a4bd1d786f821f29fcd625281ad8  libgomp/testsuite/libgomp.c++/taskloop-8.C
  2709861c62646dd2b7f52c228c6271d7  libgomp/testsuite/libgomp.c++/taskloop-9.C
  542dc7970e6d4a87acac2feba00d3cfc  libgomp/testsuite/libgomp.c++/taskloop-reduction-1.C
! 7f4692124344d69ebd3f8a913e8062f6  libgomp/testsuite/libgomp.c++/taskloop-reduction-2.C
! c47c26eb550171d349d30225ea3a9a0f  libgomp/testsuite/libgomp.c++/taskloop-reduction-3.C
! 9046bc657a820699d03ba700761062e1  libgomp/testsuite/libgomp.c++/taskloop-reduction-4.C
  1c8b2b64c4221e935e377e1cf10d1a03  libgomp/testsuite/libgomp.c++/tile-2.C
  71cd0846135fd169fbe95edc731392a2  libgomp/testsuite/libgomp.c++/tile-3.C
  3f97f3f027f9dba0eb3df8a8ade40bc0  libgomp/testsuite/libgomp.c++/tls-init1.C
*************** fd2369c7ae56d95d52913f986183913e  libgom
*** 137048,137056 ****
  13f9ffdf78c7c6460416acf1c9e28029  libgomp/testsuite/libgomp.c-c++-common/alloc-7.c
  958b22575f252e68c66b6c7a7f0da79a  libgomp/testsuite/libgomp.c-c++-common/alloc-8.c
  6a6bc24d15d026cca5b2ff5b6e30d6e2  libgomp/testsuite/libgomp.c-c++-common/alloc-9.c
! 41e58903cfe25287db13d4e13157037d  libgomp/testsuite/libgomp.c-c++-common/allocate-1.c
  c1c21337b0fec3c68ff32349fb0a4018  libgomp/testsuite/libgomp.c-c++-common/allocate-2.c
! 345af687e5b4235bd0e1867f591217f5  libgomp/testsuite/libgomp.c-c++-common/allocate-3.c
  338567dfa51841d8ee710d7de3d0b3be  libgomp/testsuite/libgomp.c-c++-common/array-field-1.c
  03ad70a1f1f70761a9211520286abd40  libgomp/testsuite/libgomp.c-c++-common/array-of-struct-1.c
  897c2a61f8cb4611c3645ddb5573d44d  libgomp/testsuite/libgomp.c-c++-common/array-of-struct-2.c
--- 137203,137211 ----
  13f9ffdf78c7c6460416acf1c9e28029  libgomp/testsuite/libgomp.c-c++-common/alloc-7.c
  958b22575f252e68c66b6c7a7f0da79a  libgomp/testsuite/libgomp.c-c++-common/alloc-8.c
  6a6bc24d15d026cca5b2ff5b6e30d6e2  libgomp/testsuite/libgomp.c-c++-common/alloc-9.c
! d6a5077ef893d6314800020ca36249dc  libgomp/testsuite/libgomp.c-c++-common/allocate-1.c
  c1c21337b0fec3c68ff32349fb0a4018  libgomp/testsuite/libgomp.c-c++-common/allocate-2.c
! 0a649641d819d243521ba71bb48e73db  libgomp/testsuite/libgomp.c-c++-common/allocate-3.c
  338567dfa51841d8ee710d7de3d0b3be  libgomp/testsuite/libgomp.c-c++-common/array-field-1.c
  03ad70a1f1f70761a9211520286abd40  libgomp/testsuite/libgomp.c-c++-common/array-of-struct-1.c
  897c2a61f8cb4611c3645ddb5573d44d  libgomp/testsuite/libgomp.c-c++-common/array-of-struct-2.c
*************** c1c21337b0fec3c68ff32349fb0a4018  libgom
*** 137059,137065 ****
  69c685c05133b4a16e0c8dac70b08f1c  libgomp/testsuite/libgomp.c-c++-common/atomic-20.c
  7a2af54d64b5694d40c340fd54e94a2a  libgomp/testsuite/libgomp.c-c++-common/atomic-21.c
  dc92320c20d6c66965c8bbfad8f6127d  libgomp/testsuite/libgomp.c-c++-common/baseptrs-1.c
! c78332b5caf38f4811a80bef6a30ca9b  libgomp/testsuite/libgomp.c-c++-common/baseptrs-2.c
  9827463d9d8147e0833d0b4ab48bc346  libgomp/testsuite/libgomp.c-c++-common/baseptrs-6.c
  e700fabc04a10611a988a11fccaf0fe6  libgomp/testsuite/libgomp.c-c++-common/baseptrs-7.c
  83a30fcfeab47090fa194cc1e6ec2f83  libgomp/testsuite/libgomp.c-c++-common/cancel-parallel-1.c
--- 137214,137220 ----
  69c685c05133b4a16e0c8dac70b08f1c  libgomp/testsuite/libgomp.c-c++-common/atomic-20.c
  7a2af54d64b5694d40c340fd54e94a2a  libgomp/testsuite/libgomp.c-c++-common/atomic-21.c
  dc92320c20d6c66965c8bbfad8f6127d  libgomp/testsuite/libgomp.c-c++-common/baseptrs-1.c
! 561c190a0f09c001552d81fd73cac302  libgomp/testsuite/libgomp.c-c++-common/baseptrs-2.c
  9827463d9d8147e0833d0b4ab48bc346  libgomp/testsuite/libgomp.c-c++-common/baseptrs-6.c
  e700fabc04a10611a988a11fccaf0fe6  libgomp/testsuite/libgomp.c-c++-common/baseptrs-7.c
  83a30fcfeab47090fa194cc1e6ec2f83  libgomp/testsuite/libgomp.c-c++-common/cancel-parallel-1.c
*************** a91d1e81f6056f17808a3f96ef2583c6  libgom
*** 137080,137085 ****
--- 137235,137242 ----
  87cbcc55746faa452b358c6cc4478de3  libgomp/testsuite/libgomp.c-c++-common/declare-variant-1.c
  12e3ee01b70343537315551db476c391  libgomp/testsuite/libgomp.c-c++-common/declare_target-1.c
  59c8656b7740501a704831756762d395  libgomp/testsuite/libgomp.c-c++-common/default-1.c
+ 5003b9495bcf8077b467a405e2a84b81  libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-1.c
+ 1bb8f78534cdd039f92d6f77666853f1  libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-2.c
  a1a09ff547c6ff16fad80cd2261269ee  libgomp/testsuite/libgomp.c-c++-common/depend-1.c
  1cdb324b383818a853a928fc5fde4668  libgomp/testsuite/libgomp.c-c++-common/depend-2.c
  9f82353471029dda0e81fd17d53ada6a  libgomp/testsuite/libgomp.c-c++-common/depend-3.c
*************** ffae923e01f64777614298d5256aa1e4  libgom
*** 137089,137096 ****
  1583f97cbaa7d0b05f4bc3415cf9a901  libgomp/testsuite/libgomp.c-c++-common/depend-mutexinout-1.c
  744de86f8478d3f33bf9ae8549aa5d5f  libgomp/testsuite/libgomp.c-c++-common/depend-mutexinout-2.c
  34181537abfe326d25c077843377069a  libgomp/testsuite/libgomp.c-c++-common/depobj-1.c
! 23ed3daffcef74a83bc8c9a418255362  libgomp/testsuite/libgomp.c-c++-common/dispatch-1.c
! fef31a569b597ba40791c9dbac3f8eb8  libgomp/testsuite/libgomp.c-c++-common/dispatch-2.c
  3035c770acef0fafa426b2d7148c9238  libgomp/testsuite/libgomp.c-c++-common/display-affinity-1.c
  4bb908a5492bbb499dc7bc00082d3676  libgomp/testsuite/libgomp.c-c++-common/error-1.c
  128ad362b06c9753ddbcbe2789351c1a  libgomp/testsuite/libgomp.c-c++-common/for-1.c
--- 137246,137253 ----
  1583f97cbaa7d0b05f4bc3415cf9a901  libgomp/testsuite/libgomp.c-c++-common/depend-mutexinout-1.c
  744de86f8478d3f33bf9ae8549aa5d5f  libgomp/testsuite/libgomp.c-c++-common/depend-mutexinout-2.c
  34181537abfe326d25c077843377069a  libgomp/testsuite/libgomp.c-c++-common/depobj-1.c
! b8d825afda76163d391407189bbdc955  libgomp/testsuite/libgomp.c-c++-common/dispatch-1.c
! 576de2de2369991bc3a08a1d5dffddc9  libgomp/testsuite/libgomp.c-c++-common/dispatch-2.c
  3035c770acef0fafa426b2d7148c9238  libgomp/testsuite/libgomp.c-c++-common/display-affinity-1.c
  4bb908a5492bbb499dc7bc00082d3676  libgomp/testsuite/libgomp.c-c++-common/error-1.c
  128ad362b06c9753ddbcbe2789351c1a  libgomp/testsuite/libgomp.c-c++-common/for-1.c
*************** db84355be6497be803699536cec8df8e  libgom
*** 137134,137140 ****
  1c73b49722635b90556ce6935d2ff0dd  libgomp/testsuite/libgomp.c-c++-common/imperfect6.c
  b292d9e57e7d3e0182bd4d6e553e7747  libgomp/testsuite/libgomp.c-c++-common/ind-base-4.c
  852cd122fb08c5bc98afcacb1f89d53f  libgomp/testsuite/libgomp.c-c++-common/interop-1.c
! 269bc7768d09b8c1206a82f65905ae67  libgomp/testsuite/libgomp.c-c++-common/interop-2.c
  af5c9b7672d901f08fc41aee85da89a5  libgomp/testsuite/libgomp.c-c++-common/interop-routines-1.c
  8beeff3961ba61952c5ee1257dc3593c  libgomp/testsuite/libgomp.c-c++-common/interop-routines-2.c
  2db7225fd29d77c0461e025f76bb7fce  libgomp/testsuite/libgomp.c-c++-common/lastprivate-conditional-1.c
--- 137291,137297 ----
  1c73b49722635b90556ce6935d2ff0dd  libgomp/testsuite/libgomp.c-c++-common/imperfect6.c
  b292d9e57e7d3e0182bd4d6e553e7747  libgomp/testsuite/libgomp.c-c++-common/ind-base-4.c
  852cd122fb08c5bc98afcacb1f89d53f  libgomp/testsuite/libgomp.c-c++-common/interop-1.c
! 051c56d5a2335fe05ecac575b39ab793  libgomp/testsuite/libgomp.c-c++-common/interop-2.c
  af5c9b7672d901f08fc41aee85da89a5  libgomp/testsuite/libgomp.c-c++-common/interop-routines-1.c
  8beeff3961ba61952c5ee1257dc3593c  libgomp/testsuite/libgomp.c-c++-common/interop-routines-2.c
  2db7225fd29d77c0461e025f76bb7fce  libgomp/testsuite/libgomp.c-c++-common/lastprivate-conditional-1.c
*************** c35f644c9ca09d77a080b0628b0c11bb  libgom
*** 137167,137173 ****
  2550a14e2e539289ad029927bc58691a  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-parallel-masked-taskloop-1.c
  97954330f9c0d3bfdd81dbbb4b27e5b7  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-parallel-masked-taskloop-simd-1.c
  7ae814a793cac6448b782fbf534ca929  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-target-parallel-for-1.c
! 2e5b19847f36572875d5edd6c55449dc  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-target-teams-distribute-parallel-for-1.c
  e42f1e345c7fcd9893f399df22eaed2f  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-taskloop-1.c
  5e024236e2e8282a8d8c6f87d7104d33  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-teams-distribute-parallel-for-1.c
  cfa794b61d7b642929f4141128dac867  libgomp/testsuite/libgomp.c-c++-common/matrix-simd-1.c
--- 137324,137330 ----
  2550a14e2e539289ad029927bc58691a  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-parallel-masked-taskloop-1.c
  97954330f9c0d3bfdd81dbbb4b27e5b7  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-parallel-masked-taskloop-simd-1.c
  7ae814a793cac6448b782fbf534ca929  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-target-parallel-for-1.c
! 55032f41bfabaf0e48fa4603b31596da  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-target-teams-distribute-parallel-for-1.c
  e42f1e345c7fcd9893f399df22eaed2f  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-taskloop-1.c
  5e024236e2e8282a8d8c6f87d7104d33  libgomp/testsuite/libgomp.c-c++-common/matrix-omp-teams-distribute-parallel-for-1.c
  cfa794b61d7b642929f4141128dac867  libgomp/testsuite/libgomp.c-c++-common/matrix-simd-1.c
*************** dff7a676c5c7625a109dad1fb29c317d  libgom
*** 137228,137235 ****
  bbbd1b345adde5e2b11d48880c03841d  libgomp/testsuite/libgomp.c-c++-common/pr93515.c
  aa27b099930bc5b5e07e143f2ff6fedc  libgomp/testsuite/libgomp.c-c++-common/pr94366.c
  9a833edb00c6348a6ec9bb286a7a041a  libgomp/testsuite/libgomp.c-c++-common/pr96390.c
! 815799e957465c99070ca74ae5616589  libgomp/testsuite/libgomp.c-c++-common/ptr-attach-1.c
! e76f2f2950cb51f5ef4d063e57da09be  libgomp/testsuite/libgomp.c-c++-common/ptr-attach-2.c
  2d2748b0be4d42cf748c994d23973c0d  libgomp/testsuite/libgomp.c-c++-common/reduction-1.c
  1918a797ca25f14588ff263d56568f8d  libgomp/testsuite/libgomp.c-c++-common/reduction-16.c
  d7ab6e4bfb482647bc734af066fff6e3  libgomp/testsuite/libgomp.c-c++-common/reduction-17.c
--- 137385,137392 ----
  bbbd1b345adde5e2b11d48880c03841d  libgomp/testsuite/libgomp.c-c++-common/pr93515.c
  aa27b099930bc5b5e07e143f2ff6fedc  libgomp/testsuite/libgomp.c-c++-common/pr94366.c
  9a833edb00c6348a6ec9bb286a7a041a  libgomp/testsuite/libgomp.c-c++-common/pr96390.c
! 540dbc81df43f1010c2eb236718b4a4b  libgomp/testsuite/libgomp.c-c++-common/ptr-attach-1.c
! ae1dda1dfff65bea882fe38f014e5472  libgomp/testsuite/libgomp.c-c++-common/ptr-attach-2.c
  2d2748b0be4d42cf748c994d23973c0d  libgomp/testsuite/libgomp.c-c++-common/reduction-1.c
  1918a797ca25f14588ff263d56568f8d  libgomp/testsuite/libgomp.c-c++-common/reduction-16.c
  d7ab6e4bfb482647bc734af066fff6e3  libgomp/testsuite/libgomp.c-c++-common/reduction-17.c
*************** e453d108664fa547feb3b13c881be597  libgom
*** 137238,137244 ****
  5fb06d4bdb476173a92277c8e950d55c  libgomp/testsuite/libgomp.c-c++-common/reduction-4.c
  b81001ea5b86a968c0d65cd22d5ac974  libgomp/testsuite/libgomp.c-c++-common/reduction-5.c
  fde44859b725290055507326964d562d  libgomp/testsuite/libgomp.c-c++-common/reduction-6.c
! ffe87889b4d3a046dbdc776f484123e8  libgomp/testsuite/libgomp.c-c++-common/refcount-1.c
  8a69c8483a5b57f5e10ebe6dc5c601c2  libgomp/testsuite/libgomp.c-c++-common/requires-1-aux.c
  eca8a6233701250737409d5e0acdd0c1  libgomp/testsuite/libgomp.c-c++-common/requires-1.c
  2dc0502463fca130152fb7af108f5ed6  libgomp/testsuite/libgomp.c-c++-common/requires-2-aux.c
--- 137395,137401 ----
  5fb06d4bdb476173a92277c8e950d55c  libgomp/testsuite/libgomp.c-c++-common/reduction-4.c
  b81001ea5b86a968c0d65cd22d5ac974  libgomp/testsuite/libgomp.c-c++-common/reduction-5.c
  fde44859b725290055507326964d562d  libgomp/testsuite/libgomp.c-c++-common/reduction-6.c
! 63c506102689313fb50902a12e2b7c39  libgomp/testsuite/libgomp.c-c++-common/refcount-1.c
  8a69c8483a5b57f5e10ebe6dc5c601c2  libgomp/testsuite/libgomp.c-c++-common/requires-1-aux.c
  eca8a6233701250737409d5e0acdd0c1  libgomp/testsuite/libgomp.c-c++-common/requires-1.c
  2dc0502463fca130152fb7af108f5ed6  libgomp/testsuite/libgomp.c-c++-common/requires-2-aux.c
*************** cbc1c46aca10b5056dd653273e1b22d3  libgom
*** 137269,137280 ****
  4275166e2a03408f5d25127421bfd832  libgomp/testsuite/libgomp.c-c++-common/struct-elem-1.c
  80deab7b7285fa934f6f5e449fc455bb  libgomp/testsuite/libgomp.c-c++-common/struct-elem-2.c
  31d15621334ecdff113afb86d86a61e0  libgomp/testsuite/libgomp.c-c++-common/struct-elem-3.c
! b6ead85ed266e62b8a8477bcdf3073f9  libgomp/testsuite/libgomp.c-c++-common/struct-elem-4.c
  2f381b5b2c1edcb3aff57cd8162f2765  libgomp/testsuite/libgomp.c-c++-common/struct-elem-5.c
  fa179f92bce747c523f38056959318ff  libgomp/testsuite/libgomp.c-c++-common/target-1.c
  d01ee6246770101e0827d46c27fc4cc5  libgomp/testsuite/libgomp.c-c++-common/target-10.c
  52ce685862fa4549564c34c17e73ed24  libgomp/testsuite/libgomp.c-c++-common/target-13.c
! e590f10fae9bf053ed7123777b03bf32  libgomp/testsuite/libgomp.c-c++-common/target-2.c
  783adf27dae6507cf1ecde4a04cdeaf7  libgomp/testsuite/libgomp.c-c++-common/target-40.c
  c1475af16cfcc82bec0d85875d542fdb  libgomp/testsuite/libgomp.c-c++-common/target-41.c
  d87524b525b7f424e584af640f4b038b  libgomp/testsuite/libgomp.c-c++-common/target-42.c
--- 137426,137437 ----
  4275166e2a03408f5d25127421bfd832  libgomp/testsuite/libgomp.c-c++-common/struct-elem-1.c
  80deab7b7285fa934f6f5e449fc455bb  libgomp/testsuite/libgomp.c-c++-common/struct-elem-2.c
  31d15621334ecdff113afb86d86a61e0  libgomp/testsuite/libgomp.c-c++-common/struct-elem-3.c
! 0e9f2991ddeb503b1a576d6dfefe7b15  libgomp/testsuite/libgomp.c-c++-common/struct-elem-4.c
  2f381b5b2c1edcb3aff57cd8162f2765  libgomp/testsuite/libgomp.c-c++-common/struct-elem-5.c
  fa179f92bce747c523f38056959318ff  libgomp/testsuite/libgomp.c-c++-common/target-1.c
  d01ee6246770101e0827d46c27fc4cc5  libgomp/testsuite/libgomp.c-c++-common/target-10.c
  52ce685862fa4549564c34c17e73ed24  libgomp/testsuite/libgomp.c-c++-common/target-13.c
! 5d869d97e503649c0abd949c725eeeb8  libgomp/testsuite/libgomp.c-c++-common/target-2.c
  783adf27dae6507cf1ecde4a04cdeaf7  libgomp/testsuite/libgomp.c-c++-common/target-40.c
  c1475af16cfcc82bec0d85875d542fdb  libgomp/testsuite/libgomp.c-c++-common/target-41.c
  d87524b525b7f424e584af640f4b038b  libgomp/testsuite/libgomp.c-c++-common/target-42.c
*************** ae24e1c7b9fc9100ef17c4595417ef54  libgom
*** 137282,137288 ****
  4d80e900b1dc39b9c34d4f6576cfd9be  libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c
  6814c54bc25aa3da74822d5d4717c414  libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1.c
  606f84c99a4efc1405feef5c9b230de4  libgomp/testsuite/libgomp.c-c++-common/target-cdtor-1.c
! 1120f9e50460c0396d1ae405ffd3e780  libgomp/testsuite/libgomp.c-c++-common/target-has-device-addr-1.c
  038d0072f445d0120f15c605ec76e54a  libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-1.c
  923df9fb10163f8d97c25a33b74c5b70  libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-2.c
  37fce83633860f28a35df3d48f63ff79  libgomp/testsuite/libgomp.c-c++-common/target-imperfect1.c
--- 137439,137445 ----
  4d80e900b1dc39b9c34d4f6576cfd9be  libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1-O0.c
  6814c54bc25aa3da74822d5d4717c414  libgomp/testsuite/libgomp.c-c++-common/target-abi-struct-1.c
  606f84c99a4efc1405feef5c9b230de4  libgomp/testsuite/libgomp.c-c++-common/target-cdtor-1.c
! dcce6a2d3146ada05a00f632271e2669  libgomp/testsuite/libgomp.c-c++-common/target-has-device-addr-1.c
  038d0072f445d0120f15c605ec76e54a  libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-1.c
  923df9fb10163f8d97c25a33b74c5b70  libgomp/testsuite/libgomp.c-c++-common/target-imperfect-transform-2.c
  37fce83633860f28a35df3d48f63ff79  libgomp/testsuite/libgomp.c-c++-common/target-imperfect1.c
*************** ae24e1c7b9fc9100ef17c4595417ef54  libgom
*** 137290,137311 ****
  c194c024e42053dd95f6e219515d6619  libgomp/testsuite/libgomp.c-c++-common/target-imperfect3.c
  083470d5ef36f44cb0686c63b7b2fc70  libgomp/testsuite/libgomp.c-c++-common/target-imperfect4.c
  e73115d6a79251ae1cec9faf5147c7c8  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-1.c
! 5e04725acf39e2f7ef276687748071f9  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-2.c
  b3506d3ed6c7b40289dd8c49dadf0e5a  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-3.c
  be9edae79e36592176a6ef4d75308c5f  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-4.c
! 7a5ccad9c039ea2c070efc3da16249d1  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-5.c
! c59c2b50b25e1cc94ef1440dd9e22f71  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c
! e4ae276ba05cf2521872c73349458117  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c
  d2f77283bea52f0c0d6a1356e85496d0  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-1.c
  69dd12ce5d2a48b7f97153765a590284  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c
  9e8fb2b92bd09fc8b76faad9bb3ef464  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c
  d04c3cda0f5d9481f26ad3a000f4b3d3  libgomp/testsuite/libgomp.c-c++-common/target-link-2.c
  9ff30abde078f26fb73508314a1a4c1e  libgomp/testsuite/libgomp.c-c++-common/target-link-3.c
  f050a6f90c7d48e4c829975976ab7e71  libgomp/testsuite/libgomp.c-c++-common/target-link-4.c
! fc544eb50238edd10811c83c41f204ea  libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-1.c
! 28505bf24857445ac4c001a62050aad2  libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-2.c
! 5015bcaa498fcad3360eebacb71885dd  libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-3.c
! 4f49f4526eb91412060d42cdf5c84f65  libgomp/testsuite/libgomp.c-c++-common/target-map-zlas-1.c
  d989443106e2a262436792d18fb2f23b  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-async-1.c
  3737e3b4823c33573762510eb88c0f0f  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-async-2.c
  b13870c9ccee080373d9f85e69613aa6  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-rect-async-1.c
--- 137447,137468 ----
  c194c024e42053dd95f6e219515d6619  libgomp/testsuite/libgomp.c-c++-common/target-imperfect3.c
  083470d5ef36f44cb0686c63b7b2fc70  libgomp/testsuite/libgomp.c-c++-common/target-imperfect4.c
  e73115d6a79251ae1cec9faf5147c7c8  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-1.c
! 484a97eb41ca00a84f4903464d9270df  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-2.c
  b3506d3ed6c7b40289dd8c49dadf0e5a  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-3.c
  be9edae79e36592176a6ef4d75308c5f  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-4.c
! ea40a48889ca697d07372802d2a0a4aa  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-5.c
! 430a11ff48828f06d3fcf3bd4c8fab56  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c
! bd77f269e406272861b52443fdae9fb5  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c
  d2f77283bea52f0c0d6a1356e85496d0  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-1.c
  69dd12ce5d2a48b7f97153765a590284  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host-2.c
  9e8fb2b92bd09fc8b76faad9bb3ef464  libgomp/testsuite/libgomp.c-c++-common/target-is-initial-host.c
  d04c3cda0f5d9481f26ad3a000f4b3d3  libgomp/testsuite/libgomp.c-c++-common/target-link-2.c
  9ff30abde078f26fb73508314a1a4c1e  libgomp/testsuite/libgomp.c-c++-common/target-link-3.c
  f050a6f90c7d48e4c829975976ab7e71  libgomp/testsuite/libgomp.c-c++-common/target-link-4.c
! 6dac483ba3b23504793becd705f3947d  libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-1.c
! 0cf20228dfeb5394791055d76019d46e  libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-2.c
! 09bc6cf4e088b0fd6625e525cfe99662  libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-3.c
! 7803e5fd9e16ac9bf8d10f1018a092c0  libgomp/testsuite/libgomp.c-c++-common/target-map-zlas-1.c
  d989443106e2a262436792d18fb2f23b  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-async-1.c
  3737e3b4823c33573762510eb88c0f0f  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-async-2.c
  b13870c9ccee080373d9f85e69613aa6  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-rect-async-1.c
*************** d4069bee4bb64a7b1bc7c9545219e88c  libgom
*** 137316,137324 ****
  400c5830e8dd2f17214d8d23477755de  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1-a.c
  469b004815365e46140bcd8b826170ce  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1-b.c
  b85430592a96b021a6f4ab81d5c35eb9  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1.c
! 63ffab94d551fbf9388ecee9e9a0c87e  libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-1.c
! 842ed9cb6491c8226fde6d76bc7724f4  libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-2.c
! b37235de89591e276171bfe08a6e961c  libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-3.c
  5232d615b2109b50002b7e6eb8301a84  libgomp/testsuite/libgomp.c-c++-common/task-detach-1.c
  7f2f3a630783e68a54ffcd18a73085b2  libgomp/testsuite/libgomp.c-c++-common/task-detach-10.c
  bf2a6ba66b2350c597a56727abd53608  libgomp/testsuite/libgomp.c-c++-common/task-detach-11.c
--- 137473,137481 ----
  400c5830e8dd2f17214d8d23477755de  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1-a.c
  469b004815365e46140bcd8b826170ce  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1-b.c
  b85430592a96b021a6f4ab81d5c35eb9  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1.c
! f1b436bdbaa4b38fe6d32370519f68e3  libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-1.c
! cde74e18484ff23e829ac3c95bcde854  libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-2.c
! 4e87ff4920e50f68d51703a7079e191c  libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-3.c
  5232d615b2109b50002b7e6eb8301a84  libgomp/testsuite/libgomp.c-c++-common/task-detach-1.c
  7f2f3a630783e68a54ffcd18a73085b2  libgomp/testsuite/libgomp.c-c++-common/task-detach-10.c
  bf2a6ba66b2350c597a56727abd53608  libgomp/testsuite/libgomp.c-c++-common/task-detach-11.c
*************** d2cb6d4c0500a7f9ba372f1dbf3296c1  libgom
*** 137336,137357 ****
  2e7fff5fa6fdb480df07fd2e3f5b04cd  libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-2.c
  a1b3168ce30f47447336b170740ef26e  libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-3.c
  106ee243910ede9a5511eec8792fcded  libgomp/testsuite/libgomp.c-c++-common/task-reduction-1.c
! 564f092ddd87e8a1beaeda362953188d  libgomp/testsuite/libgomp.c-c++-common/task-reduction-11.c
! 23584c2b5e72b0f66678ce4ada7296dd  libgomp/testsuite/libgomp.c-c++-common/task-reduction-12.c
  e4f419faa09d744436aad29d88eb43cf  libgomp/testsuite/libgomp.c-c++-common/task-reduction-13.c
  d284915ed4a4ac417bfb2b7632453bec  libgomp/testsuite/libgomp.c-c++-common/task-reduction-14.c
  9c603541ce46d78d4526034634edb381  libgomp/testsuite/libgomp.c-c++-common/task-reduction-15.c
! f60960e78fad9b2017aed57b39c1653a  libgomp/testsuite/libgomp.c-c++-common/task-reduction-16.c
  e653bf8d31dab3838d4fca110a3ce845  libgomp/testsuite/libgomp.c-c++-common/task-reduction-17.c
  6fc6fff584c1f373ed1f3621bae88c86  libgomp/testsuite/libgomp.c-c++-common/task-reduction-18.c
  47acc8ff8c516165766737c2f13be4cf  libgomp/testsuite/libgomp.c-c++-common/task-reduction-2.c
! 33b998ac8605f9aab9808c883f2e85eb  libgomp/testsuite/libgomp.c-c++-common/task-reduction-3.c
  5ab2e1d3a94c19b612a71f802938e9d8  libgomp/testsuite/libgomp.c-c++-common/task-reduction-4.c
  3cbec62183a2a342ec1463ff8e14e458  libgomp/testsuite/libgomp.c-c++-common/task-reduction-5.c
  1b038915a126b4286350b6591edbefa2  libgomp/testsuite/libgomp.c-c++-common/task-reduction-6.c
! 65acbbfe912dbdb455d3cb281499699c  libgomp/testsuite/libgomp.c-c++-common/task-reduction-7.c
  e8b91070ba113269db3f80127dea46d1  libgomp/testsuite/libgomp.c-c++-common/task-reduction-8.c
! 9ce5e598ee7fb1c01472593f1888c5f8  libgomp/testsuite/libgomp.c-c++-common/task-reduction-9.c
  9aeca4581b0d88b4cdaf4cd5fb964e23  libgomp/testsuite/libgomp.c-c++-common/taskgroup-1.c
  533a2f763e275eebcca5c5ab19adcde9  libgomp/testsuite/libgomp.c-c++-common/taskloop-1.c
  cbef0235768c1f4944ee1b5c5fa053be  libgomp/testsuite/libgomp.c-c++-common/taskloop-2.c
--- 137493,137514 ----
  2e7fff5fa6fdb480df07fd2e3f5b04cd  libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-2.c
  a1b3168ce30f47447336b170740ef26e  libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-3.c
  106ee243910ede9a5511eec8792fcded  libgomp/testsuite/libgomp.c-c++-common/task-reduction-1.c
! 46ef1e951bcd1926264b756c36ccbaf5  libgomp/testsuite/libgomp.c-c++-common/task-reduction-11.c
! 3ec3d8e842118a228ca6e8fa2d2134a5  libgomp/testsuite/libgomp.c-c++-common/task-reduction-12.c
  e4f419faa09d744436aad29d88eb43cf  libgomp/testsuite/libgomp.c-c++-common/task-reduction-13.c
  d284915ed4a4ac417bfb2b7632453bec  libgomp/testsuite/libgomp.c-c++-common/task-reduction-14.c
  9c603541ce46d78d4526034634edb381  libgomp/testsuite/libgomp.c-c++-common/task-reduction-15.c
! aa692c9fbf6093f12c6ed0803d74067f  libgomp/testsuite/libgomp.c-c++-common/task-reduction-16.c
  e653bf8d31dab3838d4fca110a3ce845  libgomp/testsuite/libgomp.c-c++-common/task-reduction-17.c
  6fc6fff584c1f373ed1f3621bae88c86  libgomp/testsuite/libgomp.c-c++-common/task-reduction-18.c
  47acc8ff8c516165766737c2f13be4cf  libgomp/testsuite/libgomp.c-c++-common/task-reduction-2.c
! 0134350a1e5cc559916eb7632406e2ac  libgomp/testsuite/libgomp.c-c++-common/task-reduction-3.c
  5ab2e1d3a94c19b612a71f802938e9d8  libgomp/testsuite/libgomp.c-c++-common/task-reduction-4.c
  3cbec62183a2a342ec1463ff8e14e458  libgomp/testsuite/libgomp.c-c++-common/task-reduction-5.c
  1b038915a126b4286350b6591edbefa2  libgomp/testsuite/libgomp.c-c++-common/task-reduction-6.c
! 34811d5ad506744da4033d8c6cca9520  libgomp/testsuite/libgomp.c-c++-common/task-reduction-7.c
  e8b91070ba113269db3f80127dea46d1  libgomp/testsuite/libgomp.c-c++-common/task-reduction-8.c
! e2796a1db9565864bbd2d6aee684339f  libgomp/testsuite/libgomp.c-c++-common/task-reduction-9.c
  9aeca4581b0d88b4cdaf4cd5fb964e23  libgomp/testsuite/libgomp.c-c++-common/taskgroup-1.c
  533a2f763e275eebcca5c5ab19adcde9  libgomp/testsuite/libgomp.c-c++-common/taskloop-1.c
  cbef0235768c1f4944ee1b5c5fa053be  libgomp/testsuite/libgomp.c-c++-common/taskloop-2.c
*************** cbef0235768c1f4944ee1b5c5fa053be  libgom
*** 137359,137365 ****
  2a89db069ccb0624db9d711681161fbe  libgomp/testsuite/libgomp.c-c++-common/taskloop-4.c
  f2e93e59b93b24a2a3ed96e4562d49e9  libgomp/testsuite/libgomp.c-c++-common/taskloop-5.c
  a45e0bc2a9defec1ccedcfe9f7d71f80  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-1.c
! bf98adf4221cad6e7da7bfc5a26395d4  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-2.c
  2eba45c946c43172dafb32280f9b9085  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-3.c
  fb173d8d2f7d77807e2f94fea30c2a43  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-4.c
  7766c9cddf6031ff22c64ce9e45948bc  libgomp/testsuite/libgomp.c-c++-common/taskwait-depend-1.c
--- 137516,137522 ----
  2a89db069ccb0624db9d711681161fbe  libgomp/testsuite/libgomp.c-c++-common/taskloop-4.c
  f2e93e59b93b24a2a3ed96e4562d49e9  libgomp/testsuite/libgomp.c-c++-common/taskloop-5.c
  a45e0bc2a9defec1ccedcfe9f7d71f80  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-1.c
! 7edf3f3649daef36cf5cf8a28d58e84b  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-2.c
  2eba45c946c43172dafb32280f9b9085  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-3.c
  fb173d8d2f7d77807e2f94fea30c2a43  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-4.c
  7766c9cddf6031ff22c64ce9e45948bc  libgomp/testsuite/libgomp.c-c++-common/taskwait-depend-1.c
*************** fb173d8d2f7d77807e2f94fea30c2a43  libgom
*** 137367,137373 ****
  b33f1965a6b9dacd7167fd0324c38e22  libgomp/testsuite/libgomp.c-c++-common/taskwait-depend-nowait-2.c
  e8fd73b729dbcad088c01b1d0f31a2ff  libgomp/testsuite/libgomp.c-c++-common/teams-1.c
  7df126bb12429498f7ff59725539584a  libgomp/testsuite/libgomp.c-c++-common/teams-2.c
! a1381676c0198bb6356bfba23e9d3a13  libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-1.c
  ca33c5f9c9903b757ed36247b61aad15  libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-2.c
  801fc413d0c72adbb5636b376e0c3362  libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-3.c
  53a7aa68c95c086a2e05b665c3c56459  libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-4.c
--- 137524,137530 ----
  b33f1965a6b9dacd7167fd0324c38e22  libgomp/testsuite/libgomp.c-c++-common/taskwait-depend-nowait-2.c
  e8fd73b729dbcad088c01b1d0f31a2ff  libgomp/testsuite/libgomp.c-c++-common/teams-1.c
  7df126bb12429498f7ff59725539584a  libgomp/testsuite/libgomp.c-c++-common/teams-2.c
! c594067e5485bea13655b914264632bd  libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-1.c
  ca33c5f9c9903b757ed36247b61aad15  libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-2.c
  801fc413d0c72adbb5636b376e0c3362  libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-3.c
  53a7aa68c95c086a2e05b665c3c56459  libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-4.c
*************** ee1bca91c6e853556cd65170329412cb  libgom
*** 137593,137601 ****
  ee6acb3089ae16656715ede5acd4a769  libgomp/testsuite/libgomp.c/interop-hipblas-nvidia-no-hip-header.c
  73994b391db11a9fa8269d17021fc731  libgomp/testsuite/libgomp.c/interop-hipblas.h
  b892336be3124a54b2f99643e2295959  libgomp/testsuite/libgomp.c/interop-hsa.c
! 0be7b4168859c7fdc935647d38a1243c  libgomp/testsuite/libgomp.c/ipcp-cb-spec1.c
! 167594cb924bb2bbf89a602ff11a5ba5  libgomp/testsuite/libgomp.c/ipcp-cb-spec2.c
! 1d9b8cb8ea7aa55edcbea1a90ef9e9f9  libgomp/testsuite/libgomp.c/ipcp-cb1.c
  60295e2f73526594a93b118333ca7ff3  libgomp/testsuite/libgomp.c/lib-1.c
  af9d852282ae3da623a0727f1df789ab  libgomp/testsuite/libgomp.c/lib-2.c
  954e001a86eca6e39424518360cc7b36  libgomp/testsuite/libgomp.c/linear-1.c
--- 137750,137758 ----
  ee6acb3089ae16656715ede5acd4a769  libgomp/testsuite/libgomp.c/interop-hipblas-nvidia-no-hip-header.c
  73994b391db11a9fa8269d17021fc731  libgomp/testsuite/libgomp.c/interop-hipblas.h
  b892336be3124a54b2f99643e2295959  libgomp/testsuite/libgomp.c/interop-hsa.c
! a6c33c02bb48400578351a95922a2f1c  libgomp/testsuite/libgomp.c/ipcp-cb-spec1.c
! 01e92bf2afe709ab5d5aabf0410fa484  libgomp/testsuite/libgomp.c/ipcp-cb-spec2.c
! 95f6c8613aa251d5def12c5b8ac78a94  libgomp/testsuite/libgomp.c/ipcp-cb1.c
  60295e2f73526594a93b118333ca7ff3  libgomp/testsuite/libgomp.c/lib-1.c
  af9d852282ae3da623a0727f1df789ab  libgomp/testsuite/libgomp.c/lib-2.c
  954e001a86eca6e39424518360cc7b36  libgomp/testsuite/libgomp.c/linear-1.c
*************** c142e6b017d258e84ac7590f6d272afe  libgom
*** 138605,138612 ****
  e86facfc6fa8df609d9a6cd8bda4558b  libgomp/testsuite/libgomp.oacc-c-c++-common/context-4.c
  98ea87c8193e01406d01d50c3ec22bcf  libgomp/testsuite/libgomp.oacc-c-c++-common/crash-1.c
  c826235c3b755ef2376b379ef9b17203  libgomp/testsuite/libgomp.oacc-c-c++-common/data-1.c
! 7e1e83302151387dcf74e27731218cf5  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c
! da21f3624167531fae9d51550d12335d  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c
  ea745e1c937cf1c8c4d8936cb15be168  libgomp/testsuite/libgomp.oacc-c-c++-common/data-3.c
  fb17c028fd87af5b26b4238fa2c2e796  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-kernels-ipa-pta.c
  9b6dd5748b288e6ce971d52df9236ac5  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-kernels.c
--- 138762,138769 ----
  e86facfc6fa8df609d9a6cd8bda4558b  libgomp/testsuite/libgomp.oacc-c-c++-common/context-4.c
  98ea87c8193e01406d01d50c3ec22bcf  libgomp/testsuite/libgomp.oacc-c-c++-common/crash-1.c
  c826235c3b755ef2376b379ef9b17203  libgomp/testsuite/libgomp.oacc-c-c++-common/data-1.c
! 909497d771ed343e6efd85cddf9c4171  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c
! c0e311c8e77f43ddf178f6c655ba7173  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c
  ea745e1c937cf1c8c4d8936cb15be168  libgomp/testsuite/libgomp.oacc-c-c++-common/data-3.c
  fb17c028fd87af5b26b4238fa2c2e796  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-kernels-ipa-pta.c
  9b6dd5748b288e6ce971d52df9236ac5  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-kernels.c
*************** b65152431e98716cff7279c301daa7ed  libgom
*** 138620,138638 ****
  ebb8f3adc650c08eeaf1e77a9b7084d4  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-4.c
  22918a096aad8e89d005adba57f4568d  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-5.c
  7ff9dec9f3762d946f2001619610dfc2  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c
! 87e0504dda48475fd0f053b8ce73c933  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c
  4fa07035c293b9ed9e4dc0c2e01511da  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-10.c
  0b25a866f5d087c91925337a99617ee2  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-11.c
  54a6fa54d0ae478acf5f8fdc6fc64ff9  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-14.c
  447a90dbee57bb28bd50565c32983aa4  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-15.c
! 46b34b68c1cf393ceaf5eaa0c55f1b66  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c
  9c7e1e3debd75360f4656123dcc91d5a  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-2.c
! 75bed8cf1fc38f3bf473a64c15d806c2  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c
! 2cd98ca3b7863b36c45dee4a3287e219  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c
! 4c84a4caca56ab47db99abcfca3e5edc  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c
! 25253ba221aa9b84a2e96a62dad50d32  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c
! 4aabddd036776023f9c2c3d6ed05828d  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c
! 75acd03ecf723aeb4d9d43339562acba  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c
  d4b69294a211a96b70ae02bd130cfd8d  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-9.c
  35633f4e282f736fd241f078bea8466f  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-arrayofstruct.c
  86912a4f5e145ea29f7c45d935bec143  libgomp/testsuite/libgomp.oacc-c-c++-common/default-1.c
--- 138777,138795 ----
  ebb8f3adc650c08eeaf1e77a9b7084d4  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-4.c
  22918a096aad8e89d005adba57f4568d  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-5.c
  7ff9dec9f3762d946f2001619610dfc2  libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla.c
! 441285383e1dc8a766b539c26e61e6d8  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c
  4fa07035c293b9ed9e4dc0c2e01511da  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-10.c
  0b25a866f5d087c91925337a99617ee2  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-11.c
  54a6fa54d0ae478acf5f8fdc6fc64ff9  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-14.c
  447a90dbee57bb28bd50565c32983aa4  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-15.c
! 0cf92afe92734e8eb204f80c8c2155c6  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c
  9c7e1e3debd75360f4656123dcc91d5a  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-2.c
! 636b484acae29c328cf3b7ca29218f9d  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c
! 063e445e7db397100d2bf55deb836083  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c
! c7b39230572b710c257bf707eefd95c8  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c
! 29cd6e0fd7b69d58d111259dc520aa19  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c
! f0733632bdcc6c31b4753db94ac0b2a2  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c
! 292abdea961957a60e1ad3b7e1a70b05  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c
  d4b69294a211a96b70ae02bd130cfd8d  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-9.c
  35633f4e282f736fd241f078bea8466f  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-arrayofstruct.c
  86912a4f5e145ea29f7c45d935bec143  libgomp/testsuite/libgomp.oacc-c-c++-common/default-1.c
*************** e52d95644dc6f186070f349a5903ca72  libibe
*** 140123,140134 ****
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  9ee73c41e33c5385829971172a184c87  libiberty/xstrndup.c
  264565e1673eec920dc95fb09d4605ea  libiberty/xvasprintf.c
! eb6c3cd817bc5aa1798e5e2fb9c5f47f  libitm/ChangeLog
  763fe82c2e5c5ae9547defb28107952a  libitm/Makefile.am
  ef89f818c0c39a850af7e33129d6ba50  libitm/Makefile.in
  354a4dc018f4a1bb610d11d1743d3cb1  libitm/aatree.cc
  54cdad066114166b775abe8ce0248178  libitm/aatree.h
! 724846b555020a9e223c8322082e775a  libitm/acinclude.m4
  166ea233e8cc9f2178a46bc446643c3f  libitm/aclocal.m4
  c79b5415bda61c24f12edba44415f5de  libitm/alloc.cc
  2feec512a7f36ab1cf5f1765e2ed4396  libitm/alloc_c.cc
--- 140280,140291 ----
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  9ee73c41e33c5385829971172a184c87  libiberty/xstrndup.c
  264565e1673eec920dc95fb09d4605ea  libiberty/xvasprintf.c
! d20ff6ed86a70a08afab33963dcd0edc  libitm/ChangeLog
  763fe82c2e5c5ae9547defb28107952a  libitm/Makefile.am
  ef89f818c0c39a850af7e33129d6ba50  libitm/Makefile.in
  354a4dc018f4a1bb610d11d1743d3cb1  libitm/aatree.cc
  54cdad066114166b775abe8ce0248178  libitm/aatree.h
! 6170067f9a1f111a2358807804a455f3  libitm/acinclude.m4
  166ea233e8cc9f2178a46bc446643c3f  libitm/aclocal.m4
  c79b5415bda61c24f12edba44415f5de  libitm/alloc.cc
  2feec512a7f36ab1cf5f1765e2ed4396  libitm/alloc_c.cc
*************** f81355820da74dc94b07e34e2ece3f1a  libitm
*** 140180,140186 ****
  88291da5386602b58a3f67b668a56f5a  libitm/config/x86/target.h
  6bd3c1b6db5455792f68d3a596a638ef  libitm/config/x86/x86_avx.cc
  a2e7f532ae9211e9a75853093fee54f5  libitm/config/x86/x86_sse.cc
! 05af5ce85af4e5334b5173dd28d8e4ec  libitm/configure
  a700d8399f54398174287f2a037d2040  libitm/configure.ac
  a166279bd4ae89049c2f7054633c2526  libitm/configure.tgt
  e25455914644f3311064669e1ce05e86  libitm/containers.h
--- 140337,140343 ----
  88291da5386602b58a3f67b668a56f5a  libitm/config/x86/target.h
  6bd3c1b6db5455792f68d3a596a638ef  libitm/config/x86/x86_avx.cc
  a2e7f532ae9211e9a75853093fee54f5  libitm/config/x86/x86_sse.cc
! c539ff202c0b26cc4402ee07ddf33f80  libitm/configure
  a700d8399f54398174287f2a037d2040  libitm/configure.ac
  a166279bd4ae89049c2f7054633c2526  libitm/configure.tgt
  e25455914644f3311064669e1ce05e86  libitm/containers.h
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 141949,141955 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! a71a7470c74406d26b689b6bd2b4def1  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 142106,142112 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 7645c2cdc04f5f04d4e4bc95557a592b  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** a94321c8d0dbbc71741ebf0f1cc9828c  libstd
*** 141980,141986 ****
  b569b721263ae74c6a8e285903fb9906  libstdc++-v3/Makefile.am
  4f2ea793c6b34934133e8e7e01601c7e  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 3d2015408d19767669f40bae7db2716c  libstdc++-v3/acinclude.m4
  66d9ad645fa12cd3028e72df3375d9a6  libstdc++-v3/aclocal.m4
  99a3cff2df96180120774fefa11f050e  libstdc++-v3/config.h.in
  9e25b4e524e0d639f272a9e96bab0ce3  libstdc++-v3/config/abi/compatibility.h
--- 142137,142143 ----
  b569b721263ae74c6a8e285903fb9906  libstdc++-v3/Makefile.am
  4f2ea793c6b34934133e8e7e01601c7e  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 62e3989a2d28e39265fd9d86c3c87353  libstdc++-v3/acinclude.m4
  66d9ad645fa12cd3028e72df3375d9a6  libstdc++-v3/aclocal.m4
  99a3cff2df96180120774fefa11f050e  libstdc++-v3/config.h.in
  9e25b4e524e0d639f272a9e96bab0ce3  libstdc++-v3/config/abi/compatibility.h
*************** ed199f6700a016816d625b286bf25ead  libstd
*** 142172,142178 ****
  8913cf14e458f9cfae745a0d939c97e4  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  e29a526ec89ed09bf39b0aa4fd4c5d79  libstdc++-v3/config/os/vxworks/ctype_inline.h
  788b66dfe66c25c24ff60bf253c9c7ff  libstdc++-v3/config/os/vxworks/os_defines.h
! feeae486afb5508b110ab4dbd3daa09f  libstdc++-v3/configure
  d1b8e66f3a21a1e0ec3fdd829dea566c  libstdc++-v3/configure.ac
  bfcbc1fdbf99aa57e07470ca81fd7627  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
--- 142329,142335 ----
  8913cf14e458f9cfae745a0d939c97e4  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  e29a526ec89ed09bf39b0aa4fd4c5d79  libstdc++-v3/config/os/vxworks/ctype_inline.h
  788b66dfe66c25c24ff60bf253c9c7ff  libstdc++-v3/config/os/vxworks/os_defines.h
! 01ce75ba0df40c3dfc24bf91381e549a  libstdc++-v3/configure
  d1b8e66f3a21a1e0ec3fdd829dea566c  libstdc++-v3/configure.ac
  bfcbc1fdbf99aa57e07470ca81fd7627  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
*************** fd0df5e706d8c63016745e360cdd1573  libstd
*** 142188,142194 ****
  6d16751d668adf69fac47cc69bde7d40  libstdc++-v3/doc/html/api.html
  08920438eea18325b4bfdf979379ff66  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! 2ff76da9446af5dab1f67ad7cafbacaf  libstdc++-v3/doc/html/faq.html
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/html/images/confdeps.png
  d7f63b43e9f4c39cf71de7585de522ee  libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
  22eedc841676a98f8ae8b95131ac4d7e  libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
--- 142345,142351 ----
  6d16751d668adf69fac47cc69bde7d40  libstdc++-v3/doc/html/api.html
  08920438eea18325b4bfdf979379ff66  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! e577d081e545dbcbecedf1fa3208e7b5  libstdc++-v3/doc/html/faq.html
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/html/images/confdeps.png
  d7f63b43e9f4c39cf71de7585de522ee  libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
  22eedc841676a98f8ae8b95131ac4d7e  libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
*************** d7249eb4d31bd107d0b09ea3c80cb723  libstd
*** 142269,142275 ****
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
  428acfe2f4e5fcc5a4735d2bf0ff8742  libstdc++-v3/doc/html/index.html
! 4e75c9ed55364b062b87405d233e6dd8  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
  e8962e30cf090d22cd4186a86105e4f3  libstdc++-v3/doc/html/manual/api.html
  e5a690ded485bd276ae2fa367fc1fd13  libstdc++-v3/doc/html/manual/appendix.html
--- 142426,142432 ----
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
  428acfe2f4e5fcc5a4735d2bf0ff8742  libstdc++-v3/doc/html/index.html
! da8ef3dbcb662f961907eacee627f1e5  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
  e8962e30cf090d22cd4186a86105e4f3  libstdc++-v3/doc/html/manual/api.html
  e5a690ded485bd276ae2fa367fc1fd13  libstdc++-v3/doc/html/manual/appendix.html
*************** e5a690ded485bd276ae2fa367fc1fd13  libstd
*** 142277,142286 ****
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! 262a7f758fdf059fa415a4fde907f7c6  libstdc++-v3/doc/html/manual/appendix_porting.html
! ac3612f72ad76b3796526d161b19db59  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
! d30e8a474595941b24a6493ad08f78d9  libstdc++-v3/doc/html/manual/backwards.html
  c60c6ae778d5dedae24ac21abf948bdb  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  3a3d01d1d9478286b8c505d1449531d4  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
  6095fbb12cc581b2614870b42ad0e8b0  libstdc++-v3/doc/html/manual/bugs.html
--- 142434,142443 ----
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! d3607480851bb0ef04730339ec5f4471  libstdc++-v3/doc/html/manual/appendix_porting.html
! 28d18f62862955c03fd5de7a9e104581  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
! 1985180c416d737bee7686d60f4e70ef  libstdc++-v3/doc/html/manual/backwards.html
  c60c6ae778d5dedae24ac21abf948bdb  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  3a3d01d1d9478286b8c505d1449531d4  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
  6095fbb12cc581b2614870b42ad0e8b0  libstdc++-v3/doc/html/manual/bugs.html
*************** cc3700f2fde50987f186f23abf98a7b1  libstd
*** 142288,142330 ****
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
  6e1071c3830037b074f1c397f4e7a3e6  libstdc++-v3/doc/html/manual/configure.html
  5328918ec42768cddb06c3e97ef4530c  libstdc++-v3/doc/html/manual/containers.html
! c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
  5905f8be24ae69bb804c3d5a6a4abf7d  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  90b457b0d4240ee5b826a815bcd90912  libstdc++-v3/doc/html/manual/debug_mode_design.html
  397ce9357678670b7c451c92eab7cb57  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  1fe03067a558eb3fd4b3a8c1337db0d1  libstdc++-v3/doc/html/manual/debug_mode_using.html
! 7f6c5a9eb000f65ee1888d459beb9dd5  libstdc++-v3/doc/html/manual/diagnostics.html
  074e3891bbedea5b412c648e455f6adf  libstdc++-v3/doc/html/manual/documentation_hacking.html
! 44375d933be3e667b4c31334c041decb  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  e47e050922ad8c8f67f42be36ea507c4  libstdc++-v3/doc/html/manual/ext_algorithms.html
  f06c80959b51df8ead13e6679a537cbc  libstdc++-v3/doc/html/manual/ext_compile_checks.html
  afcc2751dae09e088abc1e3175cb94cc  libstdc++-v3/doc/html/manual/ext_concurrency.html
  41d83456313998bffbded9e19febedc6  libstdc++-v3/doc/html/manual/ext_concurrency_impl.html
  9eae121ff2ad3f2dd5a2748f87f9f530  libstdc++-v3/doc/html/manual/ext_concurrency_use.html
! 0597d03ff215b7f17e0240178c030166  libstdc++-v3/doc/html/manual/ext_containers.html
! 561a364254927bdc578ac31f1b66747f  libstdc++-v3/doc/html/manual/ext_demangling.html
  05003e71d54cfdfd4c8291489f8ffa07  libstdc++-v3/doc/html/manual/ext_io.html
  44f8ef8b093904d418755d0e32d700b7  libstdc++-v3/doc/html/manual/ext_iterators.html
  ffd5e74a40bbf6623b8ccf687eb584d8  libstdc++-v3/doc/html/manual/ext_numerics.html
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
! 6889f243ab6934ae5f80ea7fa9c69dbf  libstdc++-v3/doc/html/manual/ext_sgi.html
  9b34310c7cb7faa4373ee6683678c457  libstdc++-v3/doc/html/manual/ext_utilities.html
  9e255046a8ef2903114374ed06403045  libstdc++-v3/doc/html/manual/extensions.html
  76cac108e21e304b7607196fb5245e00  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
! b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
  bfdb80842e9876f39424e27dd1e6f8a0  libstdc++-v3/doc/html/manual/index.html
! 8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
  89f96b13d0525d86ec6cd96b462130cf  libstdc++-v3/doc/html/manual/intro.html
! 46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
! 89dd67b210011f646675fa2ede886305  libstdc++-v3/doc/html/manual/io_and_c.html
! 32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
  aa205efdc2e69588d568e2c1738a8581  libstdc++-v3/doc/html/manual/license.html
  945f5ecd78f495a46c64b58665a37d69  libstdc++-v3/doc/html/manual/localization.html
  85ac3d22494cc64118e8df02fa68c90d  libstdc++-v3/doc/html/manual/make.html
! bed9104f8eff5fa454366f451181a04a  libstdc++-v3/doc/html/manual/memory.html
  c40a00e2cba07156a6bd77b14cccc2e4  libstdc++-v3/doc/html/manual/mt_allocator.html
  4934caabf7eef9ff3618e9ac17acba49  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  bdbb1ff20830123a43576a05081312f9  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
--- 142445,142487 ----
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
  6e1071c3830037b074f1c397f4e7a3e6  libstdc++-v3/doc/html/manual/configure.html
  5328918ec42768cddb06c3e97ef4530c  libstdc++-v3/doc/html/manual/containers.html
! f66b4b01119c005cf471450613fc105b  libstdc++-v3/doc/html/manual/containers_and_c.html
  5905f8be24ae69bb804c3d5a6a4abf7d  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  90b457b0d4240ee5b826a815bcd90912  libstdc++-v3/doc/html/manual/debug_mode_design.html
  397ce9357678670b7c451c92eab7cb57  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
  1fe03067a558eb3fd4b3a8c1337db0d1  libstdc++-v3/doc/html/manual/debug_mode_using.html
! ac31629383ea02b6f9d9689f5dd5494c  libstdc++-v3/doc/html/manual/diagnostics.html
  074e3891bbedea5b412c648e455f6adf  libstdc++-v3/doc/html/manual/documentation_hacking.html
! 0a3448d8bfaf5053260aeb3d9b7fd354  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  e47e050922ad8c8f67f42be36ea507c4  libstdc++-v3/doc/html/manual/ext_algorithms.html
  f06c80959b51df8ead13e6679a537cbc  libstdc++-v3/doc/html/manual/ext_compile_checks.html
  afcc2751dae09e088abc1e3175cb94cc  libstdc++-v3/doc/html/manual/ext_concurrency.html
  41d83456313998bffbded9e19febedc6  libstdc++-v3/doc/html/manual/ext_concurrency_impl.html
  9eae121ff2ad3f2dd5a2748f87f9f530  libstdc++-v3/doc/html/manual/ext_concurrency_use.html
! a475500e1e40ccf84021eef6688d0309  libstdc++-v3/doc/html/manual/ext_containers.html
! 36c76de14c65db6652b95eecd36601fb  libstdc++-v3/doc/html/manual/ext_demangling.html
  05003e71d54cfdfd4c8291489f8ffa07  libstdc++-v3/doc/html/manual/ext_io.html
  44f8ef8b093904d418755d0e32d700b7  libstdc++-v3/doc/html/manual/ext_iterators.html
  ffd5e74a40bbf6623b8ccf687eb584d8  libstdc++-v3/doc/html/manual/ext_numerics.html
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
! 80ba3108a407ea691afc0849d1a7a487  libstdc++-v3/doc/html/manual/ext_sgi.html
  9b34310c7cb7faa4373ee6683678c457  libstdc++-v3/doc/html/manual/ext_utilities.html
  9e255046a8ef2903114374ed06403045  libstdc++-v3/doc/html/manual/extensions.html
  76cac108e21e304b7607196fb5245e00  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
! fbe501e55689450dce7bb04b0f9a28b1  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
  bfdb80842e9876f39424e27dd1e6f8a0  libstdc++-v3/doc/html/manual/index.html
! b1c5b19b09af9d16def15e1a73ea851a  libstdc++-v3/doc/html/manual/internals.html
  89f96b13d0525d86ec6cd96b462130cf  libstdc++-v3/doc/html/manual/intro.html
! ad9c4c3d4e5712738facc14da8c89ae7  libstdc++-v3/doc/html/manual/io.html
! 5b9129eca807eb549e59c30ddf1605b9  libstdc++-v3/doc/html/manual/io_and_c.html
! 37ee363acc3e4b5507a49d588bbd797c  libstdc++-v3/doc/html/manual/iterators.html
  aa205efdc2e69588d568e2c1738a8581  libstdc++-v3/doc/html/manual/license.html
  945f5ecd78f495a46c64b58665a37d69  libstdc++-v3/doc/html/manual/localization.html
  85ac3d22494cc64118e8df02fa68c90d  libstdc++-v3/doc/html/manual/make.html
! 8f844e416e347cd59e91e9e3e3ddd63b  libstdc++-v3/doc/html/manual/memory.html
  c40a00e2cba07156a6bd77b14cccc2e4  libstdc++-v3/doc/html/manual/mt_allocator.html
  4934caabf7eef9ff3618e9ac17acba49  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  bdbb1ff20830123a43576a05081312f9  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
*************** a40a3344663fbccc3184759981310047  libstd
*** 142332,142338 ****
  3113c1f4bb72a551ad756a0556819063  libstdc++-v3/doc/html/manual/mt_allocator_impl.html
  9dabea61a71c003598f8a991e614e76c  libstdc++-v3/doc/html/manual/numerics.html
  88a009e3d0a8c9e08103a63fdce3f776  libstdc++-v3/doc/html/manual/numerics_and_c.html
! d569c55932dee4a3a4e8598da8998e28  libstdc++-v3/doc/html/manual/pairs.html
  f9f0e84051f62c45dfb0a2c150dff6ee  libstdc++-v3/doc/html/manual/parallel_mode.html
  d0a5d1e6143763602cd06a3431e5eba7  libstdc++-v3/doc/html/manual/parallel_mode_design.html
  ecf6c505a75fa3dff283b1fefdda671b  libstdc++-v3/doc/html/manual/parallel_mode_semantics.html
--- 142489,142495 ----
  3113c1f4bb72a551ad756a0556819063  libstdc++-v3/doc/html/manual/mt_allocator_impl.html
  9dabea61a71c003598f8a991e614e76c  libstdc++-v3/doc/html/manual/numerics.html
  88a009e3d0a8c9e08103a63fdce3f776  libstdc++-v3/doc/html/manual/numerics_and_c.html
! c113923bbe1c3809744ab0db96c9ca87  libstdc++-v3/doc/html/manual/pairs.html
  f9f0e84051f62c45dfb0a2c150dff6ee  libstdc++-v3/doc/html/manual/parallel_mode.html
  d0a5d1e6143763602cd06a3431e5eba7  libstdc++-v3/doc/html/manual/parallel_mode_design.html
  ecf6c505a75fa3dff283b1fefdda671b  libstdc++-v3/doc/html/manual/parallel_mode_semantics.html
*************** e5c19b8ff5bc3c648559dbeb909a643d  libstd
*** 142341,142367 ****
  9979d7cb4d5cf7e6587881acebf84a4d  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
  270766051c7a0ebb41d65856ebe73508  libstdc++-v3/doc/html/manual/policy_data_structures.html
  84c9bc8c54a3de8b4d90dfe3b438bc43  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
! d973b7693c2b6c717784b81d549c61e5  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
! 11c010c0761e0a41441314b388899e23  libstdc++-v3/doc/html/manual/setup.html
  d0d45f15e189e6eac6d7b09d58e62126  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
  f952452520282507ef765aa60d2bc450  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
! 50160fa9f92780aaa6fc7a4ef13fc897  libstdc++-v3/doc/html/manual/streambufs.html
! 3cb55f3f54e0a98471bffdf9f533a8a2  libstdc++-v3/doc/html/manual/strings.html
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
! 52f0c68b15c7a2b6e098bcfb8da0094b  libstdc++-v3/doc/html/manual/support.html
! fcdceeabf3a95117ea22e93a0354e564  libstdc++-v3/doc/html/manual/termination.html
! baf106ce40413c19bca83e20aaf14360  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
! 530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
  8aa9b7bfbe5a730701f97de49e583432  libstdc++-v3/doc/html/manual/using.html
! 78aa5833e13335bccb9f831528294eb7  libstdc++-v3/doc/html/manual/using_concurrency.html
  f8898e59cc7155a01a17f15a3b853c30  libstdc++-v3/doc/html/manual/using_dual_abi.html
  11dd55e39edb8313b5563e53067c431e  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! 32ab29fe9f7105ef061e7939409ea435  libstdc++-v3/doc/html/manual/using_exceptions.html
  91385600a9fbb5f8f29c666917403807  libstdc++-v3/doc/html/manual/using_headers.html
  3411d1e07939e0319750eceefff4b4c2  libstdc++-v3/doc/html/manual/using_macros.html
  e8b86abd99dc9893dfa1bb7533fdc23d  libstdc++-v3/doc/html/manual/using_namespaces.html
--- 142498,142524 ----
  9979d7cb4d5cf7e6587881acebf84a4d  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
  270766051c7a0ebb41d65856ebe73508  libstdc++-v3/doc/html/manual/policy_data_structures.html
  84c9bc8c54a3de8b4d90dfe3b438bc43  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
! 00aaa10e34d9e8b00a19d6c60ad1ed48  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
! 5fb6d2e05eb98a2128ffe705b93619e8  libstdc++-v3/doc/html/manual/setup.html
  d0d45f15e189e6eac6d7b09d58e62126  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
  f952452520282507ef765aa60d2bc450  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
! ed880ae9a474601ab139b1f243cbad76  libstdc++-v3/doc/html/manual/streambufs.html
! 2a262c4a0f123859ea1ea62fc6c5a226  libstdc++-v3/doc/html/manual/strings.html
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
! 75ab8c3dc22e27fc36cddbf1f63e62e0  libstdc++-v3/doc/html/manual/support.html
! 576070c373ebcaee386d0b95fe56b0c3  libstdc++-v3/doc/html/manual/termination.html
! 97528cc0fac9c8996900de2fb8801324  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
! b2b541e52af05c96f0b4e36d035d6ed9  libstdc++-v3/doc/html/manual/unordered_associative.html
  8aa9b7bfbe5a730701f97de49e583432  libstdc++-v3/doc/html/manual/using.html
! 67af75428c4b0fee1420d75c75421ab6  libstdc++-v3/doc/html/manual/using_concurrency.html
  f8898e59cc7155a01a17f15a3b853c30  libstdc++-v3/doc/html/manual/using_dual_abi.html
  11dd55e39edb8313b5563e53067c431e  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! 292c099f5758d0403ebf7dceea801138  libstdc++-v3/doc/html/manual/using_exceptions.html
  91385600a9fbb5f8f29c666917403807  libstdc++-v3/doc/html/manual/using_headers.html
  3411d1e07939e0319750eceefff4b4c2  libstdc++-v3/doc/html/manual/using_macros.html
  e8b86abd99dc9893dfa1bb7533fdc23d  libstdc++-v3/doc/html/manual/using_namespaces.html
*************** e8b86abd99dc9893dfa1bb7533fdc23d  libstd
*** 142371,142377 ****
  5906074c27c57c65b220c35bbcb2c5ec  libstdc++-v3/doc/xml/book.txml
  44d3a92b83abfb18efac80519c79b44c  libstdc++-v3/doc/xml/chapter.txml
  011b8e6a5442e4dc08f02e7295b644a3  libstdc++-v3/doc/xml/class.txml
! bf9bccd7b0755cfea2731e669eb18a76  libstdc++-v3/doc/xml/faq.xml
  ea77580f7e81e2c49aea3f425c01ee2b  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  56bb32e9ab9358834c5f8eca2cd0e969  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
--- 142528,142534 ----
  5906074c27c57c65b220c35bbcb2c5ec  libstdc++-v3/doc/xml/book.txml
  44d3a92b83abfb18efac80519c79b44c  libstdc++-v3/doc/xml/chapter.txml
  011b8e6a5442e4dc08f02e7295b644a3  libstdc++-v3/doc/xml/class.txml
! e14ffe3f1e608b08e35117356112044b  libstdc++-v3/doc/xml/faq.xml
  ea77580f7e81e2c49aea3f425c01ee2b  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  56bb32e9ab9358834c5f8eca2cd0e969  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
*************** cc132f90a00a3ca05f64b578f9e332aa  libstd
*** 142551,142590 ****
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! e7d6be44d477d4dfab6f169057dc4002  libstdc++-v3/doc/xml/manual/abi.xml
  c1d775ba87be90b85044162eab59a66c  libstdc++-v3/doc/xml/manual/algorithms.xml
! a87c9806b403e8eab90d3020e1111bd5  libstdc++-v3/doc/xml/manual/allocator.xml
  b860270b35e04a2ad4da73d0c27f710e  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  11e0fd62db5b93db462f3c54750904ec  libstdc++-v3/doc/xml/manual/appendix_free.xml
  0e37b1b056c89ad8cd7ef98f9924284c  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  5139cfc8fdaabd93b5aa7362de789702  libstdc++-v3/doc/xml/manual/atomics.xml
! c3d24d92dc2ae1e99149164f60e80337  libstdc++-v3/doc/xml/manual/auto_ptr.xml
! 18ecbccd2db2605dc093780d7b72799b  libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
  b84cb983bda244285e1314327a420e66  libstdc++-v3/doc/xml/manual/bitmap_allocator.xml
! cb78c93608df281eb39db1351be86e3f  libstdc++-v3/doc/xml/manual/build_hacking.xml
  8f13cae7ea80bc018b87b4ff8de7e3cf  libstdc++-v3/doc/xml/manual/codecvt.xml
  af3361d0d0af961859ec0346c38ac8c8  libstdc++-v3/doc/xml/manual/concurrency.xml
  9da4610e32c81714e9188c6852c8dc93  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
  7ac1661f8bba0e715c24ddc063e48ee7  libstdc++-v3/doc/xml/manual/configure.xml
! d7100469dfefd97836f3007f2682087d  libstdc++-v3/doc/xml/manual/containers.xml
  d08c687d9520b2f9d8dd6d973cca9e6a  libstdc++-v3/doc/xml/manual/ctype.xml
  0423695ef5d72eb026dfccb3b68e16ac  libstdc++-v3/doc/xml/manual/debug.xml
  a972c915c47573572139ea9161dec244  libstdc++-v3/doc/xml/manual/debug_mode.xml
! f320f25003678cca910f09ba54c923fc  libstdc++-v3/doc/xml/manual/diagnostics.xml
  3680906036c20b1ccc54e2d06b5a3a24  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
  a428ca9e1e1a450b765156e74924d806  libstdc++-v3/doc/xml/manual/evolution.xml
! 250fbd9ce8e61158b22da9b231426c24  libstdc++-v3/doc/xml/manual/extensions.xml
! 7f1864c7f3c3b2bfde84b7086be97ca7  libstdc++-v3/doc/xml/manual/internals.xml
! fb1b8e4745ce0e8ee919f6013ad8ba87  libstdc++-v3/doc/xml/manual/intro.xml
! 01ddfa93b18eebb84ed0144728f9bc9e  libstdc++-v3/doc/xml/manual/io.xml
! 5ac71d67674ea22bcf1e54043bf8e99d  libstdc++-v3/doc/xml/manual/iterators.xml
  b9c8759ff9b60e09bd2875420a55cd31  libstdc++-v3/doc/xml/manual/locale.xml
  b00f98f125f6186c369ce588d795f978  libstdc++-v3/doc/xml/manual/localization.xml
  90cedee1e8e04d1ab87bbf41d47293ec  libstdc++-v3/doc/xml/manual/messages.xml
  ac9d3bd9fc0873aff36db0b07a78bf4a  libstdc++-v3/doc/xml/manual/mt_allocator.xml
! 42b8355117a7bd9aa755048290e70d2c  libstdc++-v3/doc/xml/manual/numerics.xml
  670fae5ac4c0fa1aec6d56273ad3e32f  libstdc++-v3/doc/xml/manual/parallel_mode.xml
! 7c390b245068bcc2f3f52590bdf8526f  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
  44c53fbcb219a9a8db16061983e78759  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  bdc0ccd8cfd9d1d8cc970f825d5fe4bd  libstdc++-v3/doc/xml/manual/prerequisites.xml
  adadeaccd7e3be18b69dcc095e96f3af  libstdc++-v3/doc/xml/manual/shared_ptr.xml
--- 142708,142747 ----
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! 6a034881f703b198c133eb963958e990  libstdc++-v3/doc/xml/manual/abi.xml
  c1d775ba87be90b85044162eab59a66c  libstdc++-v3/doc/xml/manual/algorithms.xml
! 954cbafffb4b6f40cda84d906436793a  libstdc++-v3/doc/xml/manual/allocator.xml
  b860270b35e04a2ad4da73d0c27f710e  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  11e0fd62db5b93db462f3c54750904ec  libstdc++-v3/doc/xml/manual/appendix_free.xml
  0e37b1b056c89ad8cd7ef98f9924284c  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  5139cfc8fdaabd93b5aa7362de789702  libstdc++-v3/doc/xml/manual/atomics.xml
! 9b574792eb53b53a4c25095856de9eba  libstdc++-v3/doc/xml/manual/auto_ptr.xml
! 61521d63ad9e9ab631ea718a1c9b6bb5  libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
  b84cb983bda244285e1314327a420e66  libstdc++-v3/doc/xml/manual/bitmap_allocator.xml
! 9ef56e62f25e4fe6e3f85aae0b1acec0  libstdc++-v3/doc/xml/manual/build_hacking.xml
  8f13cae7ea80bc018b87b4ff8de7e3cf  libstdc++-v3/doc/xml/manual/codecvt.xml
  af3361d0d0af961859ec0346c38ac8c8  libstdc++-v3/doc/xml/manual/concurrency.xml
  9da4610e32c81714e9188c6852c8dc93  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
  7ac1661f8bba0e715c24ddc063e48ee7  libstdc++-v3/doc/xml/manual/configure.xml
! 8fb8db51febba73cfb5456272d1dcb7a  libstdc++-v3/doc/xml/manual/containers.xml
  d08c687d9520b2f9d8dd6d973cca9e6a  libstdc++-v3/doc/xml/manual/ctype.xml
  0423695ef5d72eb026dfccb3b68e16ac  libstdc++-v3/doc/xml/manual/debug.xml
  a972c915c47573572139ea9161dec244  libstdc++-v3/doc/xml/manual/debug_mode.xml
! 90361f264f5edc899c47c155c4106f24  libstdc++-v3/doc/xml/manual/diagnostics.xml
  3680906036c20b1ccc54e2d06b5a3a24  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
  a428ca9e1e1a450b765156e74924d806  libstdc++-v3/doc/xml/manual/evolution.xml
! 35161972a439c38c57ac30525b12bd9f  libstdc++-v3/doc/xml/manual/extensions.xml
! cf6e1934851f1294436c0a13931cc42b  libstdc++-v3/doc/xml/manual/internals.xml
! b9a71f2513a821d689faf68e4bb3c87f  libstdc++-v3/doc/xml/manual/intro.xml
! ae2b92cd9b8aa5539864e672f2380698  libstdc++-v3/doc/xml/manual/io.xml
! 3a6d3e952f11115ffc8c918555bbd8e7  libstdc++-v3/doc/xml/manual/iterators.xml
  b9c8759ff9b60e09bd2875420a55cd31  libstdc++-v3/doc/xml/manual/locale.xml
  b00f98f125f6186c369ce588d795f978  libstdc++-v3/doc/xml/manual/localization.xml
  90cedee1e8e04d1ab87bbf41d47293ec  libstdc++-v3/doc/xml/manual/messages.xml
  ac9d3bd9fc0873aff36db0b07a78bf4a  libstdc++-v3/doc/xml/manual/mt_allocator.xml
! b087484df7b339be84e496a6dc7e63c6  libstdc++-v3/doc/xml/manual/numerics.xml
  670fae5ac4c0fa1aec6d56273ad3e32f  libstdc++-v3/doc/xml/manual/parallel_mode.xml
! 61958800e0a22fd197373dc5b3cd3452  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
  44c53fbcb219a9a8db16061983e78759  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  bdc0ccd8cfd9d1d8cc970f825d5fe4bd  libstdc++-v3/doc/xml/manual/prerequisites.xml
  adadeaccd7e3be18b69dcc095e96f3af  libstdc++-v3/doc/xml/manual/shared_ptr.xml
*************** c9b4dfcbbb3aa2ab7b1e0df423f53f8f  libstd
*** 142598,142610 ****
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  24e5c202f6a55504167ccc0c8395b881  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  f585d9116a5f533123166622818c4252  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
! bfd38fc5f1090656a5139c94c16ea163  libstdc++-v3/doc/xml/manual/strings.xml
! 2b80feb1b53a8d0895a292620ec430b2  libstdc++-v3/doc/xml/manual/support.xml
! 1fe272dd10b83071f56d2956f94736d5  libstdc++-v3/doc/xml/manual/test.xml
  e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! 89a63a549c3438b3bee6bbf18f4c8b3e  libstdc++-v3/doc/xml/manual/using.xml
! 54d80aab470466c72f0346ca8fb52b6c  libstdc++-v3/doc/xml/manual/using_exceptions.xml
! b820e3490221bb85cbf6bcdde0aa8150  libstdc++-v3/doc/xml/manual/utilities.xml
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
--- 142755,142767 ----
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  24e5c202f6a55504167ccc0c8395b881  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
  f585d9116a5f533123166622818c4252  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
! 6ee9056a13ea8876e565b4ba45134bee  libstdc++-v3/doc/xml/manual/strings.xml
! cbd1ce02ad465e7f996671f14eee4ec9  libstdc++-v3/doc/xml/manual/support.xml
! 1c7dc4c765a2c1e49fdeec9af9ce0274  libstdc++-v3/doc/xml/manual/test.xml
  e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! 51895aad91176abba6bdd35a08b3db4a  libstdc++-v3/doc/xml/manual/using.xml
! 5245e9347bf064c48690e1ad9213f1ba  libstdc++-v3/doc/xml/manual/using_exceptions.xml
! bc0412a9556e7ed39afe5103b73f1f26  libstdc++-v3/doc/xml/manual/utilities.xml
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
*************** d18c16b3c9c3ab2e7d487de90ec27d17  libstd
*** 142629,142635 ****
  9e4d1e459fb0dee50ef813187de0118c  libstdc++-v3/include/bits/atomic_wait.h
  3f7a7ce2588d1e8ea4f282e9f41ac292  libstdc++-v3/include/bits/basic_ios.h
  c54b27ddff7542cc6baa362f62fb5778  libstdc++-v3/include/bits/basic_ios.tcc
! 8a22472745ab3e9a10747f3bcb288d62  libstdc++-v3/include/bits/basic_string.h
  ae1074cab6b583707efdb40bf0099caf  libstdc++-v3/include/bits/basic_string.tcc
  a42bb53b8c5d7cc611ebeb32ed871eba  libstdc++-v3/include/bits/binders.h
  858c4ad0f5f089f87e6b1feede7e0da5  libstdc++-v3/include/bits/boost_concept_check.h
--- 142786,142792 ----
  9e4d1e459fb0dee50ef813187de0118c  libstdc++-v3/include/bits/atomic_wait.h
  3f7a7ce2588d1e8ea4f282e9f41ac292  libstdc++-v3/include/bits/basic_ios.h
  c54b27ddff7542cc6baa362f62fb5778  libstdc++-v3/include/bits/basic_ios.tcc
! 6c5259b73ad46bd2e8d9f3ae9bc6aeda  libstdc++-v3/include/bits/basic_string.h
  ae1074cab6b583707efdb40bf0099caf  libstdc++-v3/include/bits/basic_string.tcc
  a42bb53b8c5d7cc611ebeb32ed871eba  libstdc++-v3/include/bits/binders.h
  858c4ad0f5f089f87e6b1feede7e0da5  libstdc++-v3/include/bits/boost_concept_check.h
*************** ad6b1a9496bacef0b6f949164422ab8d  libstd
*** 142656,142662 ****
  b13fecc1efb3b85dacbed61c6d2a7eed  libstdc++-v3/include/bits/fs_ops.h
  5fa932fcea9eb5ed9e3683af8d5e9276  libstdc++-v3/include/bits/fs_path.h
  b3da24b61a3e8219dde982b2734707ec  libstdc++-v3/include/bits/fstream.tcc
! 02a8c025eda02a35e6a87a42955684fc  libstdc++-v3/include/bits/funcref_impl.h
  bda3ca60f2214f1bd6656e6612aff428  libstdc++-v3/include/bits/functexcept.h
  68bc2b242e62bd27a00ee3f202c736de  libstdc++-v3/include/bits/functional_hash.h
  3283c5ed367802f57dec4ff2994a8f85  libstdc++-v3/include/bits/funcwrap.h
--- 142813,142819 ----
  b13fecc1efb3b85dacbed61c6d2a7eed  libstdc++-v3/include/bits/fs_ops.h
  5fa932fcea9eb5ed9e3683af8d5e9276  libstdc++-v3/include/bits/fs_path.h
  b3da24b61a3e8219dde982b2734707ec  libstdc++-v3/include/bits/fstream.tcc
! 66abab33b154fe334e91c3ed03ed17ce  libstdc++-v3/include/bits/funcref_impl.h
  bda3ca60f2214f1bd6656e6612aff428  libstdc++-v3/include/bits/functexcept.h
  68bc2b242e62bd27a00ee3f202c736de  libstdc++-v3/include/bits/functional_hash.h
  3283c5ed367802f57dec4ff2994a8f85  libstdc++-v3/include/bits/funcwrap.h
*************** b6d83aa40f63760f6b5a58810aabfae9  libstd
*** 142710,142716 ****
  5b95e35539d0071176396cd82a6072b7  libstdc++-v3/include/bits/regex.h
  d0ff506cfa0d3f2d14ebceb08faac4dd  libstdc++-v3/include/bits/regex.tcc
  8574b29ef7f78afa13942ca1525502d5  libstdc++-v3/include/bits/regex_automaton.h
! 1a5c4b076e644644ecb038a6c2e76ca3  libstdc++-v3/include/bits/regex_automaton.tcc
  880962cfcb3932b3a277cfa83a2cd955  libstdc++-v3/include/bits/regex_compiler.h
  54dfcbf3783267b6229ab8b029ef5505  libstdc++-v3/include/bits/regex_compiler.tcc
  fce0df5e6bf950f27228a12451fbd226  libstdc++-v3/include/bits/regex_constants.h
--- 142867,142873 ----
  5b95e35539d0071176396cd82a6072b7  libstdc++-v3/include/bits/regex.h
  d0ff506cfa0d3f2d14ebceb08faac4dd  libstdc++-v3/include/bits/regex.tcc
  8574b29ef7f78afa13942ca1525502d5  libstdc++-v3/include/bits/regex_automaton.h
! db6c4ceeaebe1bbdea30ce7e55390464  libstdc++-v3/include/bits/regex_automaton.tcc
  880962cfcb3932b3a277cfa83a2cd955  libstdc++-v3/include/bits/regex_compiler.h
  54dfcbf3783267b6229ab8b029ef5505  libstdc++-v3/include/bits/regex_compiler.tcc
  fce0df5e6bf950f27228a12451fbd226  libstdc++-v3/include/bits/regex_constants.h
*************** f39ef099759054b1b06019d7072d8e81  libstd
*** 142906,142912 ****
  a1663f21be3a52bf667fd70462c38616  libstdc++-v3/include/debug/string
  1bbb84d6dda5b7556b76bca8a688a606  libstdc++-v3/include/debug/unordered_map
  cbb3efc2d4bba967642edf6dbd10afb5  libstdc++-v3/include/debug/unordered_set
! 10d3703018f4c8ed7603146602ecef91  libstdc++-v3/include/debug/vector
  8679a90f72c7d0f38831c0900918ee81  libstdc++-v3/include/decimal/decimal
  248d4ac49f39decd0c1f0ded12edcf66  libstdc++-v3/include/decimal/decimal.h
  74ee67bc9689b5385f63581bbcaeff91  libstdc++-v3/include/experimental/algorithm
--- 143063,143069 ----
  a1663f21be3a52bf667fd70462c38616  libstdc++-v3/include/debug/string
  1bbb84d6dda5b7556b76bca8a688a606  libstdc++-v3/include/debug/unordered_map
  cbb3efc2d4bba967642edf6dbd10afb5  libstdc++-v3/include/debug/unordered_set
! 0cd3905209b040043685f0d1a066b6ed  libstdc++-v3/include/debug/vector
  8679a90f72c7d0f38831c0900918ee81  libstdc++-v3/include/decimal/decimal
  248d4ac49f39decd0c1f0ded12edcf66  libstdc++-v3/include/decimal/decimal.h
  74ee67bc9689b5385f63581bbcaeff91  libstdc++-v3/include/experimental/algorithm
*************** a90e2b9ed2c236c92f3f2387a39a0ac8  libstd
*** 143343,143349 ****
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
  a0fc3dc83ee36ee79d13e7291b461565  libstdc++-v3/include/std/deque
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
! c7512fdd688111026ada39c2eff08f8e  libstdc++-v3/include/std/expected
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
--- 143500,143506 ----
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
  a0fc3dc83ee36ee79d13e7291b461565  libstdc++-v3/include/std/deque
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
! 9c54a6bb4b807c13903d09028e4fbfdb  libstdc++-v3/include/std/expected
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
*************** d91bc94f2a9c1ff7f642d23c27ec66ae  libstd
*** 143358,143377 ****
  bf5ea5fbda7bfdc1dc462f0303fc4e99  libstdc++-v3/include/std/ios
  4623e874877c5e927587c4bfe1a03c84  libstdc++-v3/include/std/iosfwd
  f7460188b5b2ffa503809fc888af8523  libstdc++-v3/include/std/iostream
! f025fc1b4184111fce84c2384de325d2  libstdc++-v3/include/std/istream
  b33cecab88c41408b5c244cc328a9cae  libstdc++-v3/include/std/iterator
  ccf8cf0658fcc1d11f161189c25b7aa7  libstdc++-v3/include/std/latch
  e8ef6ca7c551cefb5d53bde7cf7c1c75  libstdc++-v3/include/std/limits
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! 86255888fe02daec828bc2cd2465e4c4  libstdc++-v3/include/std/mdspan
  563ae67a140bca148dc565c4a845d161  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
  154adad15522042ed2886d969f645c0b  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
! 1aad6853f83e86015000ff9cf0fff085  libstdc++-v3/include/std/optional
  050dc2c12dd36f95d5fbe750ff182a38  libstdc++-v3/include/std/ostream
  fd773662a4b346f11b66520f34a8898e  libstdc++-v3/include/std/print
  ba14be3c6ffe74b2ec997245d3a94e3d  libstdc++-v3/include/std/queue
--- 143515,143534 ----
  bf5ea5fbda7bfdc1dc462f0303fc4e99  libstdc++-v3/include/std/ios
  4623e874877c5e927587c4bfe1a03c84  libstdc++-v3/include/std/iosfwd
  f7460188b5b2ffa503809fc888af8523  libstdc++-v3/include/std/iostream
! baf59c2efc95958d95547e7d2567d59c  libstdc++-v3/include/std/istream
  b33cecab88c41408b5c244cc328a9cae  libstdc++-v3/include/std/iterator
  ccf8cf0658fcc1d11f161189c25b7aa7  libstdc++-v3/include/std/latch
  e8ef6ca7c551cefb5d53bde7cf7c1c75  libstdc++-v3/include/std/limits
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! 5eef83ecc30e14a81ae80fd3f325b1bb  libstdc++-v3/include/std/mdspan
  563ae67a140bca148dc565c4a845d161  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
  154adad15522042ed2886d969f645c0b  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
! 09bfc6c95c23458cc25ac7cf765bc7c5  libstdc++-v3/include/std/optional
  050dc2c12dd36f95d5fbe750ff182a38  libstdc++-v3/include/std/ostream
  fd773662a4b346f11b66520f34a8898e  libstdc++-v3/include/std/print
  ba14be3c6ffe74b2ec997245d3a94e3d  libstdc++-v3/include/std/queue
*************** a28bf4bed6789b61535d4b05ff48ba76  libstd
*** 143382,143388 ****
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
  91c6fab351369373bcb191b27bc13900  libstdc++-v3/include/std/semaphore
  9b8d5c4868a64371c6591ccd2d8ae5f0  libstdc++-v3/include/std/set
! 949eec685c89914aae84f479774c0556  libstdc++-v3/include/std/shared_mutex
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  522a5acff0bbc10f78a18d5e279f0cf6  libstdc++-v3/include/std/span
  efdde6d8d883a91854d4ae616b627e53  libstdc++-v3/include/std/spanstream
--- 143539,143545 ----
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
  91c6fab351369373bcb191b27bc13900  libstdc++-v3/include/std/semaphore
  9b8d5c4868a64371c6591ccd2d8ae5f0  libstdc++-v3/include/std/set
! 774cbde017a7077c08bbf6ba564295f4  libstdc++-v3/include/std/shared_mutex
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  522a5acff0bbc10f78a18d5e279f0cf6  libstdc++-v3/include/std/span
  efdde6d8d883a91854d4ae616b627e53  libstdc++-v3/include/std/spanstream
*************** b9cf79d1edae688927d40109f321047a  libstd
*** 143400,143413 ****
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  0ed8103f880c65d72326076bb36a84d2  libstdc++-v3/include/std/thread
  8456c84295d4d092b0b55a359845078d  libstdc++-v3/include/std/tuple
! 5d4f004889a4f12ced42e3559d06fef4  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
  667666c43061458376aeaee7dfc78a59  libstdc++-v3/include/std/utility
  14c64f3107d654e98e9cad7d2b1a2bac  libstdc++-v3/include/std/valarray
  6dfedd974a960950b7ce23a1bbb999f2  libstdc++-v3/include/std/variant
! e6dcc9a7721cf0dd849d0c48a2f1768a  libstdc++-v3/include/std/vector
  1c10633087657ad7a31f6c3569a3ebe0  libstdc++-v3/include/std/version
  e0951486c7e6c5afe3105fe5004effb9  libstdc++-v3/include/tr1/array
  d26e5ca1b5598f236aebe125082c5efb  libstdc++-v3/include/tr1/bessel_function.tcc
--- 143557,143570 ----
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  0ed8103f880c65d72326076bb36a84d2  libstdc++-v3/include/std/thread
  8456c84295d4d092b0b55a359845078d  libstdc++-v3/include/std/tuple
! ed236476b32b50d24a4ce7d43f2508c8  libstdc++-v3/include/std/type_traits
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
  667666c43061458376aeaee7dfc78a59  libstdc++-v3/include/std/utility
  14c64f3107d654e98e9cad7d2b1a2bac  libstdc++-v3/include/std/valarray
  6dfedd974a960950b7ce23a1bbb999f2  libstdc++-v3/include/std/variant
! 54cb5753db7ef9673ab74fcd2fbd75d6  libstdc++-v3/include/std/vector
  1c10633087657ad7a31f6c3569a3ebe0  libstdc++-v3/include/std/version
  e0951486c7e6c5afe3105fe5004effb9  libstdc++-v3/include/tr1/array
  d26e5ca1b5598f236aebe125082c5efb  libstdc++-v3/include/tr1/bessel_function.tcc
*************** ee0f63d65224d52e788ab443330fb28d  libstd
*** 143537,143543 ****
  6d66eea53ad7b08f1adb945346f5d756  libstdc++-v3/libsupc++/initializer_list
  f93ba400e65ddaa04dad2dfa46a6d89a  libstdc++-v3/libsupc++/nested_exception.cc
  ea7cf0526f8391feb3f16ffa0ee1065c  libstdc++-v3/libsupc++/nested_exception.h
! 26eeab8f4423d87581d0009985e991fa  libstdc++-v3/libsupc++/new
  7c0c13b2135e3f50c1cd156ab1ed5344  libstdc++-v3/libsupc++/new_handler.cc
  cb888aa40aea823d1d70236de020abac  libstdc++-v3/libsupc++/new_op.cc
  322cda8702abb03f45af9f34c50b9fd7  libstdc++-v3/libsupc++/new_opa.cc
--- 143694,143700 ----
  6d66eea53ad7b08f1adb945346f5d756  libstdc++-v3/libsupc++/initializer_list
  f93ba400e65ddaa04dad2dfa46a6d89a  libstdc++-v3/libsupc++/nested_exception.cc
  ea7cf0526f8391feb3f16ffa0ee1065c  libstdc++-v3/libsupc++/nested_exception.h
! 0dc3a2e0ce7c0973bd2295a175bc0579  libstdc++-v3/libsupc++/new
  7c0c13b2135e3f50c1cd156ab1ed5344  libstdc++-v3/libsupc++/new_handler.cc
  cb888aa40aea823d1d70236de020abac  libstdc++-v3/libsupc++/new_op.cc
  322cda8702abb03f45af9f34c50b9fd7  libstdc++-v3/libsupc++/new_opa.cc
*************** ba1de75ac9c1bb7d2506c503fe17708a  libstd
*** 143713,143719 ****
  ea41b659ccf9f3e1850802e2fddaba52  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! 7867ffe91c96734bed280c617cc05628  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  757f1e829f27dedf5e8d7d83b358ad27  libstdc++-v3/src/c++26/Makefile.am
  7bb4fc4ec0d17bf1e304be661919aad7  libstdc++-v3/src/c++26/Makefile.in
--- 143870,143876 ----
  ea41b659ccf9f3e1850802e2fddaba52  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
  c319163994652e23066095eded5869f0  libstdc++-v3/src/c++23/std-clib.cc.in
! 540b4905703f768b378596d9d51aca70  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  757f1e829f27dedf5e8d7d83b358ad27  libstdc++-v3/src/c++26/Makefile.am
  7bb4fc4ec0d17bf1e304be661919aad7  libstdc++-v3/src/c++26/Makefile.in
*************** d261582526bd72a369fd09b9a5e27b62  libstd
*** 143769,143775 ****
  427145f15c1588507cc854a7c222094f  libstdc++-v3/src/filesystem/cow-path.cc
  b92adb30f5c707f7d2712de402cc66ba  libstdc++-v3/src/filesystem/dir-common.h
  644e833e765e73e5e86bff4b150dab3e  libstdc++-v3/src/filesystem/dir.cc
! 1c849e5f01320436f2c86830e37637be  libstdc++-v3/src/filesystem/ops-common.h
  2c978bede5376b1c0d23fabd3e70ec0f  libstdc++-v3/src/filesystem/ops.cc
  113879e407f06ea51cf09f1d102a9d4d  libstdc++-v3/src/filesystem/path.cc
  6313ac6df82e4bcf54d7f8bc2b00792e  libstdc++-v3/src/libbacktrace/Makefile.am
--- 143926,143932 ----
  427145f15c1588507cc854a7c222094f  libstdc++-v3/src/filesystem/cow-path.cc
  b92adb30f5c707f7d2712de402cc66ba  libstdc++-v3/src/filesystem/dir-common.h
  644e833e765e73e5e86bff4b150dab3e  libstdc++-v3/src/filesystem/dir.cc
! bda843db2d23dffae71b35d326ebf2da  libstdc++-v3/src/filesystem/ops-common.h
  2c978bede5376b1c0d23fabd3e70ec0f  libstdc++-v3/src/filesystem/ops.cc
  113879e407f06ea51cf09f1d102a9d4d  libstdc++-v3/src/filesystem/path.cc
  6313ac6df82e4bcf54d7f8bc2b00792e  libstdc++-v3/src/libbacktrace/Makefile.am
*************** b9af608c6a4d22881cb63adf8ba63192  libstd
*** 143906,143912 ****
  5a3aac9064c6c4ce638cd9b7be4b2616  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
  4f75a3be6c90899d5a1f081e8fc110fd  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
  c8cd653212ebb8cebb09e03c86274f5f  libstdc++-v3/testsuite/18_support/headers/limits/synopsis_cxx23.cc
! 618382140e43d184de71e83fa96f3feb  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
  9d909c7327329544c2ecc51023862851  libstdc++-v3/testsuite/18_support/headers/new/synopsis_cxx98.cc
  befaec8a438bea55f7e2eb65ca1c1519  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
  c5394f5f34128ab3fc0d195585849a59  libstdc++-v3/testsuite/18_support/headers/stdfloat/types_std.cc
--- 144063,144069 ----
  5a3aac9064c6c4ce638cd9b7be4b2616  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
  4f75a3be6c90899d5a1f081e8fc110fd  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
  c8cd653212ebb8cebb09e03c86274f5f  libstdc++-v3/testsuite/18_support/headers/limits/synopsis_cxx23.cc
! 823ca8c3fa464c3d1c48a2354f4d57cb  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
  9d909c7327329544c2ecc51023862851  libstdc++-v3/testsuite/18_support/headers/new/synopsis_cxx98.cc
  befaec8a438bea55f7e2eb65ca1c1519  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
  c5394f5f34128ab3fc0d195585849a59  libstdc++-v3/testsuite/18_support/headers/stdfloat/types_std.cc
*************** ae2ce9313b5b55e9f92c8d0a2fdcd6ba  libstd
*** 144487,144493 ****
  d0675e06358623699e0ac00ab3a3b4ff  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/not_equal_to.cc
  aaf31ad5f5751b35d44492f62dcf0929  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
  f75ada21895a46443c0cf6c6c4272819  libstdc++-v3/testsuite/20_util/function_ref/assign.cc
! 8440f806f3ce4af7f88b77407d17a9a5  libstdc++-v3/testsuite/20_util/function_ref/call.cc
  e6bab8c83483438e3bf29c2ea7c9df3b  libstdc++-v3/testsuite/20_util/function_ref/cons.cc
  3de18ca48e3562cca5c9ed68264b9830  libstdc++-v3/testsuite/20_util/function_ref/cons_neg.cc
  6769087af53b9f703272c8bf23f3c862  libstdc++-v3/testsuite/20_util/function_ref/conv.cc
--- 144644,144650 ----
  d0675e06358623699e0ac00ab3a3b4ff  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/not_equal_to.cc
  aaf31ad5f5751b35d44492f62dcf0929  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
  f75ada21895a46443c0cf6c6c4272819  libstdc++-v3/testsuite/20_util/function_ref/assign.cc
! baf5374006e67fa76fb471156542cc8f  libstdc++-v3/testsuite/20_util/function_ref/call.cc
  e6bab8c83483438e3bf29c2ea7c9df3b  libstdc++-v3/testsuite/20_util/function_ref/cons.cc
  3de18ca48e3562cca5c9ed68264b9830  libstdc++-v3/testsuite/20_util/function_ref/cons_neg.cc
  6769087af53b9f703272c8bf23f3c862  libstdc++-v3/testsuite/20_util/function_ref/conv.cc
*************** f11430abfbf793c9117a6d498fc9e9d6  libstd
*** 147351,147366 ****
  56a0f5d5edaad1117cc988beafc16d5d  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
  669e44182af41d221acecffd45681dc9  libstdc++-v3/testsuite/23_containers/mdspan/extents/extents_mismatch_neg.cc
  b156707a9c78c39d6425cbae7cb3f90a  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
! cf342203a48d5e4765c2284c1a0b5f64  libstdc++-v3/testsuite/23_containers/mdspan/int_like.h
  bead52db525471c98d26137e05743c97  libstdc++-v3/testsuite/23_containers/mdspan/layout_like.h
  ab07a82ad1f2a1ee5e8b19e0b60f44ea  libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
! 38f3b8d524290a367d351843aa4d50db  libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
  ea1a2f61fac46b6b55b9ff2c52289540  libstdc++-v3/testsuite/23_containers/mdspan/layouts/debug/out_of_bounds_neg.cc
  afe443cccc07fbd59aff2af0edd955ce  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
! c80609a1d8ecfd2c22b472d039bbd53f  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
! b149662413e1c5450775a889b0e6b296  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
! 10d8b9dfde32cb758dbacfe5630ab068  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc
! aa091be1cedfca68177519768e919646  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_traits.h
  3f96813b92ac712ab8210f7eb24e7158  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
  94e1c258b4d0ee973edbc3f9311a7883  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
--- 147508,147523 ----
  56a0f5d5edaad1117cc988beafc16d5d  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
  669e44182af41d221acecffd45681dc9  libstdc++-v3/testsuite/23_containers/mdspan/extents/extents_mismatch_neg.cc
  b156707a9c78c39d6425cbae7cb3f90a  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
! 45151a2cf9a16e9d2585ceb05d895da5  libstdc++-v3/testsuite/23_containers/mdspan/int_like.h
  bead52db525471c98d26137e05743c97  libstdc++-v3/testsuite/23_containers/mdspan/layout_like.h
+ 72b470dbb3b1ec39181d25a3e5456df2  libstdc++-v3/testsuite/23_containers/mdspan/layout_traits.h
  ab07a82ad1f2a1ee5e8b19e0b60f44ea  libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
! bf768147c78af893e17cf46daac301d6  libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
  ea1a2f61fac46b6b55b9ff2c52289540  libstdc++-v3/testsuite/23_containers/mdspan/layouts/debug/out_of_bounds_neg.cc
  afe443cccc07fbd59aff2af0edd955ce  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
! f100ecfcef3f79639fc5c07828bee8f2  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
! 810ef0d9608731f373a7e23c8a457b6e  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
! 490297a4a90a084a51d7dfe6eb3a0f72  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc
  3f96813b92ac712ab8210f7eb24e7158  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
  94e1c258b4d0ee973edbc3f9311a7883  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
*************** bfefd9678f199467ec469dc5e384ee1f  libstd
*** 148322,148327 ****
--- 148479,148485 ----
  fade2671607014821f8103337e0869e7  libstdc++-v3/testsuite/23_containers/vector/debug/construct3_neg.cc
  29e4b6d4e51d8aa65701c18e4da23dfe  libstdc++-v3/testsuite/23_containers/vector/debug/construct4_neg.cc
  c52e333b9eaac0c710f5f6ecb32246e5  libstdc++-v3/testsuite/23_containers/vector/debug/debug_functions.cc
+ 3a23763f4e3fb514449365e904dce12f  libstdc++-v3/testsuite/23_containers/vector/debug/erase.cc
  f39d5883cf6d94791fed952e09170907  libstdc++-v3/testsuite/23_containers/vector/debug/insert1_neg.cc
  508b4922ff0983ab94677a552d81820a  libstdc++-v3/testsuite/23_containers/vector/debug/insert2_neg.cc
  28e0a26b8b5462e2214a8222e79155b5  libstdc++-v3/testsuite/23_containers/vector/debug/insert3_neg.cc
*************** f39d5883cf6d94791fed952e09170907  libstd
*** 148333,148338 ****
--- 148491,148497 ----
  9cf431c7a469ec50023f7c9ab9131c61  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/2.cc
  e288a97447a7285419a841cccea6c155  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/3.cc
  216ea46d1c1c99db2b8765bb00916eb1  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/4.cc
+ c8d36597b0fb5793017bbf729243cd6f  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/erase.cc
  cf1a79bd27d2ce249fe88f728eb55753  libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
  7c11c030521322b9405de43761b8d8f5  libstdc++-v3/testsuite/23_containers/vector/debug/move_neg.cc
  3a65e1ca61c767b7d7ea9535672f53ff  libstdc++-v3/testsuite/23_containers/vector/debug/multithreaded_swap.cc
*************** c39ad911e8680a15c396a668601ce6d9  libstd
*** 150351,150359 ****
  fb0fe2962e7f17cf17c17454ff2cfa79  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc
  8a62dbba7fe626130179504b5304230a  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
  fb71d7277ac46768cccfe7eb78814dc1  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc
  d5b143042bc50b2579e153f786d652d5  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/6360.cc
  5809ae819e82ce0cccafa320d9e667e9  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/7220.cc
! e0b8c86bd25f4fc4a5f4baa02e810d07  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/93672.cc
  cbb5c84b6d12aa7e7f4fb9de30d270fb  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/94749.cc
  7869e782cfc0d27d70d9a411620bdcd7  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/96161.cc
  b2a35545be438e518a05f4abf197a253  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/1.cc
--- 150510,150519 ----
  fb0fe2962e7f17cf17c17454ff2cfa79  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc
  8a62dbba7fe626130179504b5304230a  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
  fb71d7277ac46768cccfe7eb78814dc1  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc
+ 0deedb1f69bed3c740ff8251d3ddc250  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/4.cc
  d5b143042bc50b2579e153f786d652d5  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/6360.cc
  5809ae819e82ce0cccafa320d9e667e9  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/7220.cc
! d8daf4a3d8ca79bbf8f7709d38a58f0f  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/93672.cc
  cbb5c84b6d12aa7e7f4fb9de30d270fb  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/94749.cc
  7869e782cfc0d27d70d9a411620bdcd7  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/96161.cc
  b2a35545be438e518a05f4abf197a253  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/1.cc
*************** b1bbe044bf2cc15fe9a6ecc95613510d  libstd
*** 150848,150854 ****
  ab943d9bc5490bc757c8302dfa9a2a91  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
  fb0171897b130763a1ebe8406ab18b30  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
  99ec46decac90cdf2549db4a6bc128d9  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
! 2bb08fe7776156238f12f9a7f4798d55  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
  05d39af031ecce987270ceb9b70d409d  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
  1d9f3065c6978d26c56d44c42e70dc5f  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  099ce0270a6ab9db7d982f896efdd3ed  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
--- 151008,151014 ----
  ab943d9bc5490bc757c8302dfa9a2a91  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
  fb0171897b130763a1ebe8406ab18b30  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
  99ec46decac90cdf2549db4a6bc128d9  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
! 4ca59312344242ce287cd2829ad039b6  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
  05d39af031ecce987270ceb9b70d409d  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
  1d9f3065c6978d26c56d44c42e70dc5f  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
  099ce0270a6ab9db7d982f896efdd3ed  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
*************** b67dbc60a5b0d5e68b3301d42c89d370  libstd
*** 151691,151697 ****
  7f25c665770f98206c485d5d7f18e115  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
  a27f2488c39a2a0bcf060befdd7c5e7e  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
  03a4955f029924a2d0eb6f2d31110f26  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc
! d447566e3b2073bde36e0dd5e2d7708b  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc
  b2646746018971b2f7502408ba69b812  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc
  bef525fe56599b2234510898b1e956af  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc
  033af8991cda03faee5e75cb045b81f7  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/unlock/1.cc
--- 151851,151857 ----
  7f25c665770f98206c485d5d7f18e115  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
  a27f2488c39a2a0bcf060befdd7c5e7e  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
  03a4955f029924a2d0eb6f2d31110f26  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc
! c79c47561b38fe300896990f4078444b  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc
  b2646746018971b2f7502408ba69b812  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc
  bef525fe56599b2234510898b1e956af  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc
  033af8991cda03faee5e75cb045b81f7  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/unlock/1.cc
*************** f2b0e4d916814dffed575ea22219e282  libstd
*** 153974,153998 ****
  115aa7d14fbe6ab56dfbe3ea70aae859  libstdc++-v3/testsuite/util/testsuite_abi.h
  48ffba86c4669f3a97144b731fcff6cd  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
  5181eaba4b9bb86b0b6e535b11d64fe3  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! 7477d7ab6717eab05534bf495dffec17  libstdc++-v3/testsuite/util/testsuite_allocator.h
  476f839662a77a0eadd8ff8fa3c9fa2c  libstdc++-v3/testsuite/util/testsuite_api.h
  760319735b19378de98320351aac54d8  libstdc++-v3/testsuite/util/testsuite_character.cc
  ebb4d891741cf15170ea7d0b26f6ec9e  libstdc++-v3/testsuite/util/testsuite_character.h
! 6a11f85c018158caacf8d7fccde67822  libstdc++-v3/testsuite/util/testsuite_common_types.h
  2ead6d150332edbff29cd2d40ffd1434  libstdc++-v3/testsuite/util/testsuite_container_traits.h
  7a36c10b230fb72df354f42343a4ec9a  libstdc++-v3/testsuite/util/testsuite_containergen.h
! 5d8c70579e40fcba369cf6fb700a5375  libstdc++-v3/testsuite/util/testsuite_containers.h
  ab18c25a487f146f5efc9b083a3125c3  libstdc++-v3/testsuite/util/testsuite_counter_type.h
! 81b9ae06f180fe125b5fdc623e163c47  libstdc++-v3/testsuite/util/testsuite_error.h
  2ee9777061e449a5c7ca5d294f695bac  libstdc++-v3/testsuite/util/testsuite_fs.h
! aa52b04bf095d0226a1314474cb5c3c4  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
  3d3f95e4c126c7714834db5c046f0867  libstdc++-v3/testsuite/util/testsuite_hooks.cc
  c08d7419962b291852dd827d7d78f678  libstdc++-v3/testsuite/util/testsuite_hooks.h
  2cc9d485ece15882c52d8b6a9c1094e8  libstdc++-v3/testsuite/util/testsuite_io.h
! 34556190ebaddca8dd2a1c214b659ba2  libstdc++-v3/testsuite/util/testsuite_iterators.h
! bb471f730bbdca73a1658e3b1e4295c0  libstdc++-v3/testsuite/util/testsuite_new_operators.h
  cb452b2ea9afe9f303a9f003d3d6412b  libstdc++-v3/testsuite/util/testsuite_performance.h
! 9e7f7529d1423cbb841bf18d5251891d  libstdc++-v3/testsuite/util/testsuite_random.h
  ea884f70143c35d477bb93d35594c1cf  libstdc++-v3/testsuite/util/testsuite_regex.h
  a44ae6829c2d6cbdbd08359d948c3328  libstdc++-v3/testsuite/util/testsuite_rng.h
  6e40ca16c3343b0a966b15dca7b1c7fb  libstdc++-v3/testsuite/util/testsuite_rvalref.h
--- 154134,154158 ----
  115aa7d14fbe6ab56dfbe3ea70aae859  libstdc++-v3/testsuite/util/testsuite_abi.h
  48ffba86c4669f3a97144b731fcff6cd  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
  5181eaba4b9bb86b0b6e535b11d64fe3  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! a2eae7addf3a52d73822bd9c963e2763  libstdc++-v3/testsuite/util/testsuite_allocator.h
  476f839662a77a0eadd8ff8fa3c9fa2c  libstdc++-v3/testsuite/util/testsuite_api.h
  760319735b19378de98320351aac54d8  libstdc++-v3/testsuite/util/testsuite_character.cc
  ebb4d891741cf15170ea7d0b26f6ec9e  libstdc++-v3/testsuite/util/testsuite_character.h
! 053281694a0a66c1e8ae0bd91a32b212  libstdc++-v3/testsuite/util/testsuite_common_types.h
  2ead6d150332edbff29cd2d40ffd1434  libstdc++-v3/testsuite/util/testsuite_container_traits.h
  7a36c10b230fb72df354f42343a4ec9a  libstdc++-v3/testsuite/util/testsuite_containergen.h
! 35a45090d68c8ebf72b9705343128e4e  libstdc++-v3/testsuite/util/testsuite_containers.h
  ab18c25a487f146f5efc9b083a3125c3  libstdc++-v3/testsuite/util/testsuite_counter_type.h
! ed3d1adcecea820c979cc9dcb2a10465  libstdc++-v3/testsuite/util/testsuite_error.h
  2ee9777061e449a5c7ca5d294f695bac  libstdc++-v3/testsuite/util/testsuite_fs.h
! 50e04be46c99fc9c2c5a00ea9f9e9d10  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
  3d3f95e4c126c7714834db5c046f0867  libstdc++-v3/testsuite/util/testsuite_hooks.cc
  c08d7419962b291852dd827d7d78f678  libstdc++-v3/testsuite/util/testsuite_hooks.h
  2cc9d485ece15882c52d8b6a9c1094e8  libstdc++-v3/testsuite/util/testsuite_io.h
! 02e4c78c1c05b723078b35b3d46306fc  libstdc++-v3/testsuite/util/testsuite_iterators.h
! 655166be8c731e7d0019b2d174d58142  libstdc++-v3/testsuite/util/testsuite_new_operators.h
  cb452b2ea9afe9f303a9f003d3d6412b  libstdc++-v3/testsuite/util/testsuite_performance.h
! 049f8c7ae417aa0a4ab5545539c8ecf8  libstdc++-v3/testsuite/util/testsuite_random.h
  ea884f70143c35d477bb93d35594c1cf  libstdc++-v3/testsuite/util/testsuite_regex.h
  a44ae6829c2d6cbdbd08359d948c3328  libstdc++-v3/testsuite/util/testsuite_rng.h
  6e40ca16c3343b0a966b15dca7b1c7fb  libstdc++-v3/testsuite/util/testsuite_rvalref.h
diff -Nrcpad gcc-16-20251116/contrib/ChangeLog gcc-16-20251123/contrib/ChangeLog
*** gcc-16-20251116/contrib/ChangeLog	Sun Nov 16 22:32:49 2025
--- gcc-16-20251123/contrib/ChangeLog	Sun Nov 23 22:32:07 2025
***************
*** 1,3 ****
--- 1,11 ----
+ 2025-11-22  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* gcc-changelog/git_commit.py: Add algol68.
+ 
+ 2025-11-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* make_sunver.pl ($elfdump): Remove ccs from path.
+ 
  2025-11-13  Filip Kastl  <fkastl@suse.cz>
  
  	* check-params-in-docs.py: Start parsing from
diff -Nrcpad gcc-16-20251116/contrib/gcc-changelog/git_commit.py gcc-16-20251123/contrib/gcc-changelog/git_commit.py
*** gcc-16-20251116/contrib/gcc-changelog/git_commit.py	Sun Nov 16 22:32:49 2025
--- gcc-16-20251123/contrib/gcc-changelog/git_commit.py	Sun Nov 23 22:32:07 2025
*************** default_changelog_locations = {
*** 88,93 ****
--- 88,94 ----
  
  bug_components = {
      'ada',
+     'algol68',
      'analyzer',
      'boehm-gc',
      'bootstrap',
diff -Nrcpad gcc-16-20251116/gcc/ChangeLog gcc-16-20251123/gcc/ChangeLog
*** gcc-16-20251116/gcc/ChangeLog	Sun Nov 16 22:32:50 2025
--- gcc-16-20251123/gcc/ChangeLog	Sun Nov 23 22:32:07 2025
***************
*** 1,3 ****
--- 1,823 ----
+ 2025-11-22  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/122701
+ 	* ext-dce.cc (ext_dce_try_optimize_rshift): Emit a fresh reg->reg
+ 	copy rather than modifying the existing right shift.
+ 
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* omp-general.cc (omp_context_selector_matches): Add an optional
+ 	bool argument for the code elision case.
+ 	* omp-general.h (omp_context_selector_matches): Likewise.
+ 
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* omp-general.cc (omp_mangle_variant_name): New.
+ 	(omp_check_for_duplicate_variant): New.
+ 	(omp_copy_trait_set): New.
+ 	(omp_trait_selectors_equivalent): New.
+ 	(omp_combine_trait_sets): New.
+ 	(omp_merge_context_selectors): New.
+ 	* omp-general.h (omp_mangle_variant_name): Declare.
+ 	(omp_check_for_duplicate_variant): Declare.
+ 	(omp_merge_context_selectors): Declare.
+ 
+ 2025-11-22  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc: Extract plus operation.
+ 
+ 2025-11-22  Deng Jianbo  <dengjianbo@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.md
+ 	(*bstrins_w_for_ior_ashift_and_extend): New template.
+ 	(*bstrins_d_for_ior_ashift_and): New template.
+ 	* config/loongarch/predicates.md (const_uimm63_operand): New
+ 	predicate.
+ 
+ 2025-11-22  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* config/loongarch/lsx.md (lsx_vshuf4i_mem_w_0): Add template.
+ 	(lsx_vldrepl_merge_w_0): Ditto.
+ 
+ 2025-11-22  Kees Cook  <kees@kernel.org>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_indirect_branch_asm):
+ 	Declare.
+ 	* config/aarch64/aarch64.cc (aarch64_indirect_branch_asm): New
+ 	function to generate indirect branch with SLS barrier.
+ 	* config/aarch64/aarch64.md (*sibcall_insn): Use
+ 	aarch64_indirect_branch_asm.
+ 	(*sibcall_value_insn): Likewise.
+ 
+ 2025-11-21  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/118358
+ 	* lra-constraints.cc (curr_insn_transform): Move insn reloading
+ 	constant into a register right before insn using it.
+ 
+ 2025-11-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122762
+ 	PR tree-optimization/122736
+ 	PR tree-optimization/122790
+ 	* cgraph.h (cgraph_simd_clone_arg::linear_step): Document
+ 	use for SIMD_CLONE_ARG_TYPE_MASK.
+ 	* omp-simd-clone.cc (simd_clone_adjust_argument_types):
+ 	Record the number of mask arguments in linear_step if
+ 	mask_mode is not VOIDmode.
+ 	* tree-vect-stmts.cc (vectorizable_simd_clone_call):
+ 	Remove num_mask_args computation, use a proper ncopies
+ 	to query/register loop masks, use linear_step for the
+ 	number of mask arguments when determining the number of
+ 	mask elements in a mask argument.
+ 
+ 2025-11-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122778
+ 	* tree-vect-stmts.cc (vectorizable_simd_clone_call): Honor
+ 	a loop mask when passing the conditional mask with AVX512
+ 	style masking.
+ 
+ 2025-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/122598
+ 	* config/i386/predicates.md (const_vec_dup_operand): Remove.
+ 	* config/i386/sse.md (cond<<insn><mode> with VI1_AVX512VL iterator):
+ 	Remove.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/invoke.texi (Optimize Options) <-fmalloc-dce>: Remove
+ 	trailing space.
+ 	(AArch64 Options) <-march>: Fix pasto.
+ 
+ 2025-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/122773
+ 	* gimplify.cc (collect_fallthrough_labels): Check whether
+ 	gimple_goto_dest is a LABEL_DECL before testing VACUOUS_INIT_LABEL_P.
+ 	(expand_FALLTHROUGH_r): Likewise.
+ 
+ 2025-11-21  Loeka Rogge  <loeka@synopsys.com>
+ 	    Keith Packard  <keithp@keithp.com>
+ 
+ 	PR target/120375
+ 	* config/arc/arc.md (*<insn>si3_nobs): merged with <insn>si3_loop.
+ 	(<insn>si3_loop): splits to relevant pattern or emits loop assembly.
+ 	(<insn>si3_cnt1_clobber): Removes clobber for shift or rotate by
+ 	const1.
+ 
+ 2025-11-21  Claudiu Zissulescu  <claziss@gmail.com>
+ 	    Michiel Derhaeg  <michiel@synopsys.com>
+ 
+ 	* config/arc/arc.md: Modify define_insn_and_split "*extvsi_n_0"
+ 
+ 2025-11-21  Josef Melcr  <josef.melcr@suse.com>
+ 
+ 	* attr-callback.cc (callback_edge_callee_has_attr): New
+ 	function.
+ 	* attr-callback.h (callback_edge_callee_has_attr): New function
+ 	decl.
+ 	* ipa-prop.cc (ipa_compute_jump_functions_for_bb): Don't skip
+ 	callback carriers when calculating jump functions.
+ 
+ 2025-11-21  Josef Melcr  <josef.melcr@suse.com>
+ 
+ 	PR ipa/122768
+ 	* attr-callback.cc (callback_edge_useful_p): Rewrite the
+ 	heuristic, now consider clones as well as icf bodies.
+ 
+ 2025-11-21  Deng Jianbo  <dengjianbo@loongson.cn>
+ 
+ 	* config/loongarch/constraints.md: Update constraint YI to support
+ 	more numbers.
+ 	* config/loongarch/loongarch-protos.h
+ 	(loongarch_const_vector_vrepli): Rename.
+ 	(loongarch_const_vector_vldi): Ditto.
+ 	* config/loongarch/loongarch.cc (VLDI_NEG_MASK): New macro.
+ 	(loongarch_parse_vldi_const): New function to check if numbers can
+ 	be generated by {x}vldi instruction.
+ 	(loongarch_const_vector_vrepli): Rename.
+ 	(loongarch_const_vector_vldi): Use above function.
+ 	(loongarch_const_insns): Call renamed function.
+ 	(loongarch_split_vector_move_p): Ditto.
+ 	(loongarch_output_move): Ditto.
+ 
+ 2025-11-21  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* config/loongarch/lsx.md: Fix predicate.
+ 
+ 2025-11-20  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/121345
+ 	* gimple-range-phi.cc (phi_group::calculate_using_modifier): Restore
+ 	performance loss by being more selective when iterating.
+ 
+ 2025-11-20  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-opt-popretz.cc: New file.
+ 	* config/riscv/riscv-passes.def: Insert pass_combine_popretz before
+ 	pass_shorten_branches.
+ 	* config/riscv/riscv-protos.h (make_pass_combine_popretz): New
+ 	declaration.
+ 	* config/riscv/t-riscv: Add riscv-opt-popretz.o build rule.
+ 	* config.gcc (riscv*): Add riscv-opt-popretz.o to extra_objs.
+ 
+ 2025-11-20  Pan Li  <pan2.li@intel.com>
+ 
+ 	PR target/122692
+ 	* config/riscv/riscv.cc (riscv_expand_ustrunc): Leverage
+ 	riscv_extend_to_xmode_reg to take care of src rtx.
+ 
+ 2025-11-20  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* target.def (instruction_selection): New.
+ 	* doc/tm.texi.in: Document it.
+ 	* doc/tm.texi: Regenerate
+ 	* gimple-isel.cc (pass_gimple_isel::execute): Use it.
+ 	* targhooks.cc (default_instruction_selection): New.
+ 	* targhooks.h (default_instruction_selection): New.
+ 
+ 2025-11-20  Josef Melcr  <josef.melcr@suse.com>
+ 
+ 	PR ipa/122358
+ 	* cgraph.cc (cgraph_add_edge_to_call_site_hash): Add an early
+ 	return when the hashed edge is a callback-carrying edge.
+ 
+ 2025-11-20  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* doc/rtl.texi (Regs and Memory): Use @table instead of @itemize
+ 	for lists with named items.
+ 
+ 2025-11-20  Xinhui Yang  <cyan@cyano.uk>
+ 
+ 	PR bootstrap/105664
+ 	* Makefile.in (install-driver): detect name collision when
+ 	installing the driver program.
+ 
+ 2025-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config/i386/sol2.h: Replace USE_GAS by HAVE_GNU_AS.
+ 	Replace USE_GLD by HAVE_GNU_LD.
+ 	* config/sol2.h: Likewise.
+ 	* config/sparc/sol2.h: Likewise.
+ 	* config/i386/i386.cc (i386_solaris_elf_named_section)
+ 	[TARGET_SOLARIS]: Replace USE_GAS by HAVE_GNU_AS.
+ 	* config/ia64/hpux.h: Likewise.
+ 	* config.gcc: Remove usegas.h, usegld.h.
+ 	* config/usegas.h: Remove.
+ 	* config/usegld.h: Remove
+ 
+ 2025-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config/sol2.h (LINK_ARCH32_SPEC_BASE): Don't provide -YP
+ 	defaults.  Rename to ...
+ 	(LINK_ARCH_SPEC_BASE): ... this.
+ 	(LINK_ARCH32_SPEC): Remove.
+ 	(LINK_ARCH64_SPEC_BASE): Remove.
+ 	(LINK_ARCH64_SPEC): Rename to ...
+ 	(LINK_ARCH_SPEC_1): ... this.
+ 	[!USE_GLD]: Simplify map.below4G use.
+ 	(LINK_ARCH_ERROR_SPEC): New macro.
+ 	(LINK_ARCH32_SPEC): Remove.
+ 	(LINK_ARCH_DEFAULT_SPEC): Remove.
+ 	(LINK_ARCH_SPEC): Simplify using LINK_ARCH_ERROR_SPEC,
+ 	LINK_ARCH_SPEC_1.
+ 	(SUBTARGET_EXTRA_SPECS): Remove link_arch32, link_arch64
+ 	link_arch_default.
+ 
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/lsx.md (vec_perm<mode>): Expand directly with
+ 	RTL template.
+ 	* config/loongarch/loongarch-protos.h
+ 	(loongarch_expand_vec_perm): Delete.
+ 	* config/loongarch/loongarch.cc (loongarch_expand_vec_perm):
+ 	Delete.
+ 
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/lasx.md (lasx_xvpermi_d): Add "@".
+ 	* config/loongarch/loongarch.cc (loongarch_expand_vec_perm_1):
+ 	Use gen_lasx_xvpermi_d instead of
+ 	gen_lasx_xvpermi_d_{v32qi,v16hi} to deduplicate the logic.  Do
+ 	structrual programming instead of goto and label.
+ 
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_expand_vec_perm_1):
+ 	Clamp the selector using the twice of actual number of elements.
+ 	Compare the clamped selector with the element number to get the
+ 	blending mask.
+ 
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/lasx.md (lasx_xvshuf_b): Remove.
+ 	(lasx_xvshuf_<lasxfmt_f): Remove.
+ 	(unspec): Remove UNSPEC_LASX_XVSHUF and UNSPEC_LASX_XVSHUF_B.
+ 	* config/loongarch/lsx.md (lsx_vshuf_b): Remove.
+ 	(lsx_vshuf_<lasxfmt_f): Remove.
+ 	(unspec): Remove UNSPEC_LSX_VSHUF and UNSPEC_LSX_VSHUF_B.
+ 	* config/loongarch/simd.md (unspec): Add UNSPEC_SIMD_VSHUF.
+ 	(@simd_vshuf): New define_insn.
+ 	(<simd_isa>_<x>vshuf_<simdfmt><_f>): New define_expand.
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_try_expand_lsx_vshuf_const): Call gen_simd_vshuf
+ 	instead of gen_lasx_xvshuf and gen_lasx_xvshuf_b.
+ 	(loongarch_expand_vec_perm_const): Likewise.
+ 
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/lasx.md (lasx_xvperm_<lasxfmt_f_wd>): Add
+ 	"@" for gen_lasx_xvperm helper.
+ 	* config/loongarch/loongarch.cc (loongarch_expand_vec_perm_1):
+ 	Call gen_lasx_xvperm to unify V8SF and V8SI handling.
+ 
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_expand_vec_perm_1):
+ 	Use lasx_xvpackev_h (mask * 2, mask * 2 + 1) to "expand" the
+ 	V4DI selector to V8SI.
+ 
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/122695
+ 	* config/loongarch/loongarch.cc (loongarch_expand_vec_perm_1):
+ 	Simplify and fix the logic preventing the xvshuf.* unpredictable
+ 	behavior.
+ 
+ 2025-11-19  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/122756
+ 	* gimple-range-fold.cc (range_of_ssa_name_with_loop_info): Do
+ 	not invoke SCEV if already in a SCEV call.
+ 
+ 2025-11-19  Martin Liska  <martin.liska@hey.com>
+ 
+ 	* common.opt.urls: Include -fuse-ld=wild
+ 
+ 2025-11-19  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122754
+ 	* gimple-fold.cc (get_range_strlen_tree): Use POINTER_TYPE_P instead
+ 	of direct comparing to POINTER_TYPE.
+ 	* gimple-ssa-sprintf.cc (format_integer): Likewise.
+ 	* gimple-ssa-warn-access.cc (maybe_warn_nonstring_arg): Likewise.
+ 	* gimple-ssa-warn-restrict.cc (pass_wrestrict::check_call): Likewise.
+ 	* tree-ssa-strlen.cc (maybe_set_strlen_range): Likewise.
+ 	(is_strlen_related_p): Likewise.
+ 	(strlen_pass::handle_assign): Likewise.
+ 
+ 2025-11-19  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-dce.cc (simple_dce_from_worklist): Use FOR_EACH_IMM_USE_FAST instead of
+ 	FOR_EACH_IMM_USE_STMT.
+ 
+ 2025-11-19  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	PR target/122763
+ 	* config/aarch64/aarch64.cc (aarch64_layout_arg): Return NULL_RTX for
+ 	arguments of size 0.
+ 	(aarch64_function_arg_advance): Remove assert.
+ 
+ 2025-11-19  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* doc/extend.texi (preserve_none): Minor grammar fix.
+ 
+ 2025-11-19  Martin Liska  <martin.liska@hey.com>
+ 
+ 	* collect2.cc (main): Add wild linker to -fuse-ld.
+ 	* common.opt: Likewise.
+ 	* configure: Regenerate.
+ 	* configure.ac: Add detection for wild linker.
+ 	* doc/invoke.texi: Document -fuse-ld=wild.
+ 	* gcc.cc (driver_handle_option): Support -fuse-ld=wild.
+ 	* opts.cc (common_handle_option): Likewise.
+ 
+ 2025-11-19  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (vec_extract<mode><v128>,
+ 	vec_extract<mode><v64>): New.
+ 	* config/aarch64/iterators.md (V64, v64): New.
+ 	* config/aarch64/predicates.md (const0_to_1_operand): New.
+ 
+ 2025-11-19  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv-string.cc (riscv_expand_block_move_scalar):
+ 	Fix signed vs unsigned warning.
+ 
+ 2025-11-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.cc (vectorizable_load): Make dr_chain
+ 	an auto_vec, move down to where we use it to avoid creating
+ 	it twice.
+ 
+ 2025-11-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122722
+ 	* tree-vect-slp.cc (vect_analyze_slp_reductions): New
+ 	function, split out from vect_analyze_slp.  Try SLP
+ 	sub-groups.
+ 	(vect_analyze_slp_reduction_group): New helper.
+ 
+ 2025-11-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122747
+ 	* tree-vect-stmts.cc (vectorizable_call): Handle reduction
+ 	operations that are already conditional.
+ 
+ 2025-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-ssanames.cc (get_known_nonzero_bits): Fix a pasto in
+ 	function comment, this function returns 0 if unknown rather
+ 	than -1.
+ 
+ 2025-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/122184
+ 	* tree-ssa-live.cc (remove_unused_locals): Drop .DEFERRED_INIT
+ 	calls with MEM_REF lhs based on uninitialized SSA_NAME.
+ 
+ 2025-11-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* genmultilib: Check $enable_multilib to define DISABLE_MULTILIB.
+ 
+ 2025-11-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config/sol2.h: Check USE_GLD instead of USE_GNU_LD.
+ 
+ 2025-11-19  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR target/119130
+ 	* config/rs6000/altivec.md (convert_4f32_8f16): Use same operand
+ 	order for both endian format.
+ 
+ 2025-11-19  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/i386-common.cc: Adjust to P_PROC_AVX10_1.
+ 	* config/i386/driver-i386.cc (host_detect_local_cpu):
+ 	Move Nova Lake to under AVX512 part.
+ 	* config/i386/i386.h (PTA_NOVALAKE): Add AVX10.1, AVX10.2,
+ 	APX_F and MOVRS.
+ 	* config/i386/x86-tune-sched.cc (ix86_issue_rate): Set to 8.
+ 	* config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add Nova
+ 	Lake.
+ 	* doc/invoke.texi: Adjust documentation.
+ 
+ 2025-11-18  Edwin Lu  <ewlu@rivosinc.com>
+ 
+ 	* config/riscv/riscv-string.cc (riscv_expand_block_move_scalar):
+ 	Add length check.
+ 	(expand_block_move): Ditto.
+ 	(expand_vec_setmem): Ditto.
+ 	* config/riscv/riscv.opt: Add param flags.
+ 
+ 2025-11-18  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm_mve.h (__ARM_mve_typeid): Delete.
+ 	(__ARM_mve_coerce): Delete.
+ 	(__ARM_mve_coerce_i_scalar): Delete.
+ 	(__ARM_mve_coerce_s8_ptr): Delete.
+ 	(__ARM_mve_coerce_u8_ptr): Delete.
+ 	(__ARM_mve_coerce_s16_ptr): Delete.
+ 	(__ARM_mve_coerce_u16_ptr): Delete.
+ 	(__ARM_mve_coerce_s32_ptr): Delete.
+ 	(__ARM_mve_coerce_u32_ptr): Delete.
+ 	(__ARM_mve_coerce_s64_ptr): Delete.
+ 	(__ARM_mve_coerce_u64_ptr): Delete.
+ 	(__ARM_mve_coerce_f_scalar): Delete.
+ 	(__ARM_mve_coerce_f16_ptr): Delete.
+ 	(__ARM_mve_coerce_f32_ptr): Delete.
+ 
+ 2025-11-18  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm-mve-builtins-shapes.cc (build_one): Add
+ 	which_overload parameter.
+ 	(inherent): Derive from overloaded_base<0>.  Add support for
+ 	overloaded version.
+ 	* config/arm/arm-mve-builtins-shapes.h (inherent): Update comment.
+ 	* config/arm/arm-mve-builtins.cc (add_unique_function): Add
+ 	support for new which_overload parameter.
+ 	(pop_and_resolve_to): New.
+ 	* config/arm/arm-mve-builtins.h (NONOVERLOADED_FORM)
+ 	(OVERLOADED_FORM): New.
+ 	(add_unique_function): Update prototype.
+ 	(pop_and_resolve_to): New prototype.
+ 	* config/arm/arm_mve.h (vuninitializedq): Delete.
+ 	(vuninitializedq_u8): Delete.
+ 	(vuninitializedq_u16): Delete.
+ 	(vuninitializedq_u32): Delete.
+ 	(vuninitializedq_u64): Delete.
+ 	(vuninitializedq_s8): Delete.
+ 	(vuninitializedq_s16): Delete.
+ 	(vuninitializedq_s32): Delete.
+ 	(vuninitializedq_s64): Delete.
+ 	(vuninitializedq_f16): Delete.
+ 	(vuninitializedq_f32): Delete.
+ 	(__arm_vuninitializedq): Delete.
+ 
+ 2025-11-18  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/arm-mve-builtins-base.cc (class
+ 	mve_function_vset_vget_lane): New.
+ 	(vgetq_lane, vsetq_lane): New.
+ 	* config/arm/arm-mve-builtins-base.def (vgetq_lane, vsetq_lane):
+ 	New.
+ 	* config/arm/arm-mve-builtins-base.h (vgetq_lane, vsetq_lane):
+ 	New.
+ 	* config/arm/arm-mve-builtins-shapes.cc (struct getq_lane)
+ 	(setq_lane): New.
+ 	* config/arm/arm-mve-builtins-shapes.h (getq_lane, setq_lane):
+ 	New.
+ 	* config/arm/arm_mve.h (vsetq_lane): Delete.
+ 	(vgetq_lane): Delete.
+ 	(vsetq_lane_f16): Delete.
+ 	(vsetq_lane_f32): Delete.
+ 	(vsetq_lane_s16): Delete.
+ 	(vsetq_lane_s32): Delete.
+ 	(vsetq_lane_s8): Delete.
+ 	(vsetq_lane_s64): Delete.
+ 	(vsetq_lane_u8): Delete.
+ 	(vsetq_lane_u16): Delete.
+ 	(vsetq_lane_u32): Delete.
+ 	(vsetq_lane_u64): Delete.
+ 	(vgetq_lane_f16): Delete.
+ 	(vgetq_lane_f32): Delete.
+ 	(vgetq_lane_s16): Delete.
+ 	(vgetq_lane_s32): Delete.
+ 	(vgetq_lane_s8): Delete.
+ 	(vgetq_lane_s64): Delete.
+ 	(vgetq_lane_u8): Delete.
+ 	(vgetq_lane_u16): Delete.
+ 	(vgetq_lane_u32): Delete.
+ 	(vgetq_lane_u64): Delete.
+ 	(__ARM_NUM_LANES): Delete.
+ 	(__ARM_LANEQ): Delete.
+ 	(__ARM_CHECK_LANEQ): Delete.
+ 	(__arm_vsetq_lane_s16): Delete.
+ 	(__arm_vsetq_lane_s32): Delete.
+ 	(__arm_vsetq_lane_s8): Delete.
+ 	(__arm_vsetq_lane_s64): Delete.
+ 	(__arm_vsetq_lane_u8): Delete.
+ 	(__arm_vsetq_lane_u16): Delete.
+ 	(__arm_vsetq_lane_u32): Delete.
+ 	(__arm_vsetq_lane_u64): Delete.
+ 	(__arm_vgetq_lane_s16): Delete.
+ 	(__arm_vgetq_lane_s32): Delete.
+ 	(__arm_vgetq_lane_s8): Delete.
+ 	(__arm_vgetq_lane_s64): Delete.
+ 	(__arm_vgetq_lane_u8): Delete.
+ 	(__arm_vgetq_lane_u16): Delete.
+ 	(__arm_vgetq_lane_u32): Delete.
+ 	(__arm_vgetq_lane_u64): Delete.
+ 	(__arm_vsetq_lane_f16): Delete.
+ 	(__arm_vsetq_lane_f32): Delete.
+ 	(__arm_vgetq_lane_f16): Delete.
+ 	(__arm_vgetq_lane_f32): Delete.
+ 	(__arm_vsetq_lane): Delete.
+ 	(__arm_vgetq_lane): Delete.
+ 	* config/arm/mve.md (mve_vec_extract<mode><V_elem_l>): Add '@'
+ 	prefix.
+ 	(mve_vec_set<mode>_internal): Likewise.
+ 
+ 2025-11-18  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* doc/extend.texi (Half-precision Floating-point): __fp16 is now
+ 	always available on arm.  Move x86 paragraph closer to the rest of
+ 	the x86 information, and make it use present tense.
+ 
+ 2025-11-18  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/117814
+ 	* config/arm/arm-builtins.cc (arm_init_fp16_builtins): Always
+ 	register __fp16 type.
+ 	* config/arm/arm-mve-builtins.cc (register_builtin_tuple_types):
+ 	Remove special handling when TARGET_HAVE_MVE_FLOAT is false.
+ 	(register_vector_type): Likewise.
+ 	(register_builtin_tuple_types): Likewise.
+ 	* config/arm/arm-opts.h (arm_fp16_format_type): Add
+ 	ARM_FP16_FORMAT_DEFAULT.
+ 	* config/arm/arm.cc (arm_vector_mode_supported_p): Accept
+ 	floating-point vector modes even if TARGET_HAVE_MVE_FLOAT is
+ 	false.
+ 	(arm_option_reconfigure_globals): Apply ARM_FP16_FORMAT_NONE if
+ 	requested.
+ 	* config/arm/arm.opt (mfp16-format): Default to
+ 	ARM_FP16_FORMAT_DEFAULT.
+ 	* config/arm/arm_mve_types.h (float16_t, float32_t): Define
+ 	unconditionally.
+ 	* doc/sourcebuild.texi (ARM-specific attributes): Document
+ 	arm_v8_1m_mve_nofp_ok.
+ 
+ 2025-11-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122736
+ 	* tree-vect-stmts.cc (vectorizable_simd_clone_call): Compute
+ 	num_mask_args for all mask modes.  Pass the mask vector
+ 	type to vect_record_loop_mask and adjust ncopies according
+ 	to the number of mask arguments.
+ 
+ 2025-11-18  Austin Law  <austinkylelaw@gmail.com>
+ 
+ 	* config/riscv/riscv-cores.def: Add RISCV_TUNE and RISCV_CORE entries
+ 	for the spacemit-x60 design.
+ 	* config/riscv/riscv-opts.h (riscv_microarchitecture_type): Add entry
+ 	for spacemit-x60 design.
+ 	* config/riscv/riscv.cc (spacemit_x60_tune_info): New tune structure
+ 	for the spacemit-x60 design.
+ 	* config/riscv/riscv.md (tune): Add spacemit_x60.
+ 	Include spacemit-x60.md.
+ 	* config/riscv/spacemit-x60.md: New file
+ 	* doc/riscv-mtune.texi: Regenerate.
+ 	* doc/riscv-mcpu.texi: Regenerate.
+ 
+ 2025-11-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122723
+ 	* tree-vect-loop.cc (vect_reduction_update_partial_vector_usage):
+ 	Handle incoming .COND_* operation.
+ 	(vect_transform_reduction): Likewise.  Handle .COND_*
+ 	operation when not using COND_EXPR masking in a masked loop.
+ 
+ 2025-11-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122723
+ 	* tree-vect-stmts.cc (supportable_widening_operation):
+ 	Correct optab to query in the multi-step case when it is
+ 	supposed to hit the sbool case.
+ 
+ 2025-11-18  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/103750
+ 	* config/i386/sse.md (*<avx512>_eq<mode>3_and15): New
+ 	define_insn.
+ 	(*avx512vl_eqv2di_and3): Ditto.
+ 	* config/i386/i386.md (*ior<mode>_ccz_1): Fix the typo in the
+ 	comments above.
+ 
+ 2025-11-17  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/122626
+ 	* tree-logical-location.cc
+ 	(tree_logical_location_manager::get_parent): Return null when
+ 	TYPE_CONTEXT is a TRANSLATION_UNIT_DECL so that we don't fail
+ 	the assertion in assert_valid_tree.
+ 
+ 2025-11-17  Evgeny Karpov  <evgeny@kmaps.co>
+ 
+ 	PR diagnostics/122666
+ 	* config/i386/x-mingw32 (LIBS): Add -lws2_32
+ 	* diagnostics/sarif-sink.cc: Move sockets includes to before
+ 	config.h and support __MINGW32__.
+ 
+ 2025-11-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/97894
+ 	* attr-fnspec.h (attr_fnspec): arg_idx, known_p, arg_specified_p,
+ 	arg_direct_p,  arg_used_p, arg_readonly_p,
+ 	arg_maybe_read_p, arg_maybe_written_p,
+ 	arg_max_access_size_given_by_arg_p,
+ 	arg_access_size_given_by_type_p,
+ 	arg_copied_to_arg_p, arg_noescape_p, returns_arg,
+ 	returns_noalias_p, global_memory_read_p,
+ 	global_memory_written_p, errno_maybe_written_p, arg_eaf_flags,
+ 	and get_str as const methods.
+ 
+ 2025-11-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (maybe_remove_forwarder_block): Move a few
+ 	checks earlier.
+ 
+ 2025-11-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (tree_forwarder_block_p): Merge this and ...
+ 	(remove_forwarder_block): This into ...
+ 	(maybe_remove_forwarder_block): Here.
+ 	(cleanup_tree_cfg_bb): Call only maybe_remove_forwarder_block.
+ 	(pass_merge_phi::execute): Likewise.
+ 
+ 2025-11-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (pass_merge_phi::execute): Add stats for the removed
+ 	blocks.
+ 
+ 2025-11-17  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/122575
+ 	* simplify-rtx.cc (simplify_context::simplify_relational_operation_1):
+ 	Use correct mode for simplified IOR expression inside equality
+ 	conditional.
+ 
+ 2025-11-17  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* simplify-rtx.cc (simplify_const_binary_operation): Simplify
+ 	VEC_CONCAT two constant vectors.
+ 
+ 2025-11-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-im.cc (move_computations_worker): Avoid newline
+ 	between 'Moving statement' and actual statement dump in dumpfile.
+ 
+ 2025-11-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-im.cc (fill_always_executed_in): Skip
+ 	blocks not in loops when looking for possibly not returning
+ 	calls.
+ 
+ 2025-11-17  Victor Do Nascimento  <vicdon01@ip-10-248-139-187.eu-west-1.compute.internal>
+ 
+ 	* cfgloop.cc (loop_exits_to_bb_p): Change return type.
+ 	(loop_exits_from_bb_p): Likewise.
+ 	* cfgloop.h: (loop_exits_to_bb_p): Likewise.
+ 	(loop_exits_from_bb_p): Likewise.
+ 
+ 2025-11-17  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* doc/extend.texi: (ARM C Language Extensions (ACLE)) Update ACLE URL
+ 	and description.
+ 
+ 2025-11-17  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* tree-ssa-forwprop.cc (optimize_vector_load): Inhibit
+ 	optimization when all uses are through subvectors without
+ 	extension.
+ 
+ 2025-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-core.h (enum built_in_function): Avoid arithmetics or
+ 	bitwise operations between enumerators from different enums.
+ 	* lto-streamer.h (lto_tag_is_gimple_code_p): Likewise.
+ 	* gimple.h (gimple_omp_atomic_set_memory_order): Likewise.
+ 	* common/config/i386/i386-cpuinfo.h (M_CPU_SUBTYPE_START,
+ 	M_CPU_TYPE): Likewise.
+ 	* tree-complex.cc (expand_complex_libcall): Likewise.
+ 	* ipa-modref-tree.h (modref_access_node::operator ==): Change
+ 	argument type from modref_access_node & to
+ 	const modref_access_node &.
+ 	* ipa-modref-tree.cc (modref_access_node::operator ==): Likewise.
+ 
+ 2025-11-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122573
+ 	* config/i386/i386.cc (ix86_vector_costs::finish_cost): Avoid
+ 	using masked epilogues when an SSE epilogue would have a VF of one.
+ 
+ 2025-11-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* configure.ac (gcc_cv_ld_compress_debug) <*-*-solaris2*>: Check
+ 	for zstd compression support.
+ 	* configure: Regenerate.
+ 	* doc/invoke.texi (Debugging Options, gz): Document zstd.
+ 
+ 2025-11-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/121345
+ 	* gimple-range-phi.cc (phi_group::phi_group): Add modifier name.
+ 	(phi_group::is_modifier_p): Set modifier stmt operand name.
+ 	(phi_group::calculate_using_modifier): Bound the iteration range
+ 	by known global range.
+ 	(phi_analyzer::process_phi): Allow single PHIS if they meet certain
+ 	criteria.
+ 	* gimple-range-phi.h (m_modifier_name): New member.
+ 	(is_modifier_p): Adjust prototype.
+ 
+ 2025-11-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (fold_using_range::range_of_phi): Remove
+ 	the PHI analysis query.
+ 	* gimple-range-phi.cc (phi_analysis_object): Delete.
+ 	(phi_analysis_initialize): Delete.
+ 	(phi_analysis_finalize): Delete.
+ 	(phi_analysis_available_p): Delete.
+ 	(phi_analysis): Invoke a phi analyzer.
+ 	(phi_analyzer::phi_analyzer): Preprocess all phi nodes and set
+ 	global values for them in a query.
+ 	(phi_analyzer::process_phi): Use query, and export any inital
+ 	values found to the query.
+ 	* gimple-range-phi.h (m_global): Delete.
+ 	(phi_analysis_initialize): Delete.
+ 	(phi_analysis_finalize): Delete.
+ 	(phi_analysis_available_p): Delete.
+ 	(phi_analysis): Change prototype.
+ 	* tree-vrp.cc (execute_ranger_vrp): Call phi_analysis.
+ 
+ 2025-11-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::update_consumers): New.
+ 	* gimple-range-cache.h (update_consumers): New prototype.
+ 	* gimple-range-fold.cc (fur_depend::fur_depend): Add cache ptr.
+ 	(fur_depend::register_relation): call update_consumers.
+ 	* gimple-range-fold.h (fur_depend): Add a cache pointer.
+ 	* gimple-range.cc (gimple_ranger::fold_range_internal): Add cache ptr.
+ 
+ 2025-11-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range.cc (gimple_ranger::update_range_info): New.
+ 	* gimple-range.h (update_range_info): New prototype.
+ 	* tree-ssanames.cc (set_range_info): Update the range info for
+ 	the current range query.
+ 	* value-query.h (update_range_info): New prototype.
+ 	* value-query.cc (update_range_info): New default stub.
+ 
+ 2025-11-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-cfgcleanup.cc (tree_forwarder_block_p): Restore check on
+ 	LOOPS_HAVE_PREHEADERS.
+ 
+ 2025-11-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config/sol2.h (MD_EXEC_PREFIX): Remove.
+ 
+ 2025-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (_loop_vec_info::_loop_vec_info):
+ 	Initialize can_use_partial_vectors_p to true.
+ 	(vect_determine_partial_vectors_and_peeling): Add masked_p
+ 	parameter and honor it.
+ 	(vect_analyze_loop_2): Pass through masked_p.
+ 	(vect_analyze_loop_1): Pass down masked_p.
+ 	(vect_analyze_loop): Simplify check on possible masking of
+ 	the epilog when there's no .WHILE_ULT.
+ 
+ 2025-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
+ 	Remove resetting of LOOP_VINFO_USING_SELECT_VL_P.
+ 	(vect_analyze_loop_2): Decide on partial vectors before
+ 	deciding on decrementing IV or .SELECT_VL usage.
+ 
+ 2025-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_determine_partial_vectors_and_peeling):
+ 	Remove.
+ 	(vect_need_peeling_or_partial_vectors_p): Declare.
+ 	* tree-vect-loop.cc (vect_determine_partial_vectors_and_peeling):
+ 	Make static.
+ 	(vect_need_peeling_or_partial_vectors_p): Export.
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Do not call
+ 	vect_determine_partial_vectors_and_peeling but instead
+ 	re-compute LOOP_VINFO_PEELING_FOR_NITER using
+ 	vect_need_peeling_or_partial_vectors_p.
+ 
+ 2025-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_loop_vec_info::epil_using_partial_vectors_p):
+ 	Remove.
+ 	(LOOP_VINFO_EPIL_USING_PARTIAL_VECTORS_P): Likewise.
+ 	* tree-vect-loop.cc (_loop_vec_info::_loop_vec_info):
+ 	Do not initialize epil_using_partial_vectors_p.
+ 	(vect_determine_partial_vectors_and_peeling): Do not set it.
+ 
+ 2025-11-16  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* diagnostics/context.cc (num_digits): Change argument type from
+ 	`int' to `uint64_t'.
+ 	(test_num_digits): Add test for 64-bit argument.
+ 	* diagnostic.h (num_digits): Adjust prototype.
+ 	* input.cc (write_digit): Accept argument in range 0-9 instead of
+ 	an arbitrary int.
+ 	(write_digit_row): Adjust to change in write_digit().
+ 
  2025-11-15  Jason Xu  <bravejason@outlook.com>
  
  	* config.gcc (aarch64-*-mingw*): Set use_gcc_stdint to wrap.
***************
*** 20979,20985 ****
  	original address with more adaptive operations
  
  2025-05-06  Julian Waters  <tanksherman27@gmail.com>
! 	    Eric Botcazou  <botcazou@adacore.com>
  	    Uroš Bizjak  <ubizjak@gmail.com>
  	    Liu Hao  <lh_mouse@126.com>
  
--- 21799,21805 ----
  	original address with more adaptive operations
  
  2025-05-06  Julian Waters  <tanksherman27@gmail.com>
! 	    Eric Botcazou  <ebotcazou@adacore.com>
  	    Uroš Bizjak  <ubizjak@gmail.com>
  	    Liu Hao  <lh_mouse@126.com>
  
diff -Nrcpad gcc-16-20251116/gcc/DATESTAMP gcc-16-20251123/gcc/DATESTAMP
*** gcc-16-20251116/gcc/DATESTAMP	Sun Nov 16 22:32:50 2025
--- gcc-16-20251123/gcc/DATESTAMP	Sun Nov 23 22:32:07 2025
***************
*** 1 ****
! 20251116
--- 1 ----
! 20251123
diff -Nrcpad gcc-16-20251116/gcc/Makefile.in gcc-16-20251123/gcc/Makefile.in
*** gcc-16-20251116/gcc/Makefile.in	Sun Nov 16 22:32:50 2025
--- gcc-16-20251123/gcc/Makefile.in	Sun Nov 23 22:32:07 2025
*************** install-driver: installdirs xgcc$(exeext
*** 4253,4259 ****
  	      $(LN) $(GCC_INSTALL_NAME)$(exeext) $(FULL_DRIVER_NAME) ); \
  	  fi; \
  	  if [ ! -f gcc-cross$(exeext) ] \
! 	      && [ "$(GCC_INSTALL_NAME)" != "$(GCC_TARGET_INSTALL_NAME)" ]; then \
  	    rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-tmp$(exeext); \
  	    ( cd $(DESTDIR)$(bindir) && \
  	      $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-tmp$(exeext) && \
--- 4253,4260 ----
  	      $(LN) $(GCC_INSTALL_NAME)$(exeext) $(FULL_DRIVER_NAME) ); \
  	  fi; \
  	  if [ ! -f gcc-cross$(exeext) ] \
! 	      && [ "$(GCC_INSTALL_NAME)" != "$(GCC_TARGET_INSTALL_NAME)" ] \
! 	      && [ "$(GCC_TARGET_INSTALL_NAME)$(exeext)" != "$(FULL_DRIVER_NAME)" ] ; then \
  	    rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-tmp$(exeext); \
  	    ( cd $(DESTDIR)$(bindir) && \
  	      $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-tmp$(exeext) && \
diff -Nrcpad gcc-16-20251116/gcc/ada/ChangeLog gcc-16-20251123/gcc/ada/ChangeLog
*** gcc-16-20251116/gcc/ada/ChangeLog	Sun Nov 16 22:32:50 2025
--- gcc-16-20251123/gcc/ada/ChangeLog	Sun Nov 23 22:32:07 2025
***************
*** 1,3 ****
--- 1,274 ----
+ 2025-11-21  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Formal_Container_Loop):
+ 	Preanalyze block with empty statements; then set
+ 	the statements later before doing Analyze of the
+ 	block.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_Array_Aggregate): Remove obsolete call to
+ 	Establish_Transient_Scope for an allocator in a loop.
+ 	* exp_ch7.adb (Establish_Transient_Scope): Adjust description.
+ 
+ 2025-11-21  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref.adb (Output_References): Put local array object on the heap.
+ 
+ 2025-11-21  Viljar Indus  <indus@adacore.com>
+ 
+ 	* erroutc.adb (Is_Redundant_Error_Message): Avoid non-serious errors
+ 	masking fatal errors.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.ads (BIP_Formal_Kind): Update description of some values.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Eq): Use No instead of not Present.
+ 	(Optimize_Length_Comparison): Initialize Is_Zero and Comp variables.
+ 	(Safe_In_Place_Array_Op): Do not use local variable to pass data to
+ 	nested function Is_Safe_Operand.
+ 
+ 2025-11-21  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch6.adb (Create_Extra_Formals): Do not add extra formals to
+ 	anonymous access to subprogram types defined in the profile of
+ 	subprograms that have foreign convention.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Delete ancient comment.
+ 	* exp_ch6.adb (Expand_Call_Helper): Do not establish a transient
+ 	scope for build-in-place functions in anonymous contexts here...
+ 	(Make_Build_In_Place_Call_In_Anonymous_Context): ...but here instead.
+ 	* sem_attr.adb (Resolve_Attribute) <Attribute_Range>: Remove obsolete
+ 	code dealing with transient scopes.
+ 	* sem_res.adb (Resolve_Actuals): Likewise.
+ 	(Resolve_Call): Adjust comment on the strategy for transient scopes.
+ 
+ 2025-11-21  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Formal_Container_Loop):
+ 	Analyze Init_Decl in the correct scope. Remove patch-up
+ 	code that was needed because we were using the wrong scope.
+ 	* exp_ch7.adb (Process_Object_Declaration):
+ 	Remove code to unique-ify the name of Master_Node_Id;
+ 	no longer needed because of change to exp_ch5.adb.
+ 	* sem_warn.adb (Check_References):
+ 	Suppress warnings during preanalysis, because we don't
+ 	have complete information yet; otherwise, the new Preanalyze
+ 	call in exp_ch5.adb generates bogus warnings.
+ 
+ 2025-11-21  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/a-cobove.adb
+ 	(Append): Add an equivalent fast path for the case where tampering
+ 	checks are suppressed.
+ 
+ 2025-11-21  Viljar Indus  <indus@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Profile): Improve -gnatwx message.
+ 
+ 2025-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* repinfo.adb (List_Location): Do not output the final comma.
+ 	(List_Common_Type_Info): Adjust to above change.  Do not output
+ 	"??" for an unknown alignment.
+ 	(List_Entities): Do not output generic types.
+ 	(List_Object_Info): Adjust to above change.
+ 	(List_Subprogram_Info): Likewise.
+ 
+ 2025-11-21  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Call): ensure we generate a reference to the
+ 	non limited view of the return type to avoid scenarios where
+ 	the with-ed unit is not considered referenced.
+ 
+ 2025-11-18  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* gcc-interface/decl.cc
+ 	(is_cplusplus_method,gnat_to_gnu_param,gnat_to_gnu_subprog_type):
+ 	Adjust Is_Constructor/Is_CPP_Constructor after renaming.
+ 
+ 2025-11-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/34290
+ 	* sem_ch4.adb (Try_Object_Operation.Complete_Object_Operation): Call
+ 	Preserve_Comes_From_Source to preserve the flag on nodes.  Relocate
+ 	the Obj node consistently.  Preserve the Comes_From_Source flag for
+ 	the case of an implicit 'Access reference and post the local errors
+ 	on the rewritten prefix consistently.
+ 	* sem_util.adb (Is_Aliased_View): Also return true for a generalized
+ 	reference to the result of a function call.
+ 
+ 2025-11-18  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_util.ads (Flag_Interface_Pointer_Displacement): New subprogram.
+ 	* exp_util.adb (Flag_Interface_Pointer_Displacement): Ditto.
+ 	* exp_attr.adb (Add_Implicit_Interface_Type_Conversion): Flag type
+ 	conversions internally added to displace the pointer to the object.
+ 	(Expand_N_Attribute_Reference): Ditto.
+ 	* exp_ch4.adb (Displace_Allocator_Pointer): Ditto.
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): Ditto.
+ 	(Make_Build_In_Place_Call_In_Allocator): Ditto.
+ 	(Make_CPP_Constructor_Call_In_Allocator): Ditto.
+ 	* exp_disp.adb (Expand_Interface_Actuals): Ditto.
+ 	* exp_intr.adb (Expand_Dispatching_Constructor_Call): Ditto.
+ 	* sem_ch6.adb (Analyze_Function_Return): Ditto.
+ 	* sem_disp.adb (Propagate_Tag): Ditto.
+ 	* sem_res.adb (Resolve_Actuals): Ditto.
+ 	(Valid_Conversion): Rely on the new flag to handle the type conversion
+ 	as a conversion added to displace the pointer to the object. Factorize
+ 	code handling general and anonymous access types.
+ 	* sem_type.adb (Interface_Present_In_Ancestor): For concurrent types
+ 	add missing handling of class-wide types. Noticed working on this
+ 	issue.
+ 	* sinfo.ads (Is_Interface_Pointer_Displacement): Document this new flag.
+ 	* gen_il-fields.ads (Is_Interface_Pointer_Displacement): New flag.
+ 	* gen_il-gen-gen_nodes.adb (Is_Interface_Pointer_Displacement): New
+ 	flag on N_Type_Conversion nodes.
+ 	* gen_il-internals.adb (Image): Add Is_Interface_Pointer_Displacement
+ 	flag image.
+ 
+ 2025-11-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Package_Instantiation): Streamline and move
+ 	code clearing Needs_Body after it is computed to ...
+ 	(Needs_Body_Instantiated): ...here.  Chain if-then constructs.
+ 
+ 2025-11-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_type.adb (Last_Overloaded): Fix typo.
+ 
+ 2025-11-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/111433
+ 	* sem_util.ads (Incomplete_Or_Partial_View): Add Partial_Only formal
+ 	parameter.
+ 	* sem_util.adb (Incomplete_Or_Partial_View): Likewise.  Do not look
+ 	for an incomplete view if it is set to True.
+ 	* sem_ch6.adb (Check_Conformance.Null_Exclusions_Match): Pass True
+ 	for Partial_Only in the call to Incomplete_Or_Partial_View.
+ 
+ 2025-11-18  Tonu Naks  <naks@adacore.com>
+ 
+ 	* doc/gnat_rm/obsolescent_features.rst: update PolyOrb reference
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-11-18  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* par-ch4.adb (P_Simple_Expression): Improve diagnostic.
+ 
+ 2025-11-18  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Procedure_Call_Levels): New function for
+ 	implementing the check.
+ 	* ghost.ads (Check_Procedure_Call_Levels): Likewise.
+ 	* sem_ch6.adb (Analyze_Procedure_Call): Check the levels after
+ 	the call has been resolved and the previous ghost region has
+ 	been restored.
+ 
+ 2025-11-18  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_util.adb (Is_Constructor_Procedure): Replace by Is_Constructor.
+ 	* sem_util.ads: Likewise.
+ 	* sem_ch6.adb (Analyze_Direct_Attribute_Definition): Set Is_Constructor.
+ 	* einfo.ads: Use Is_Constructor for Ada constructors, and
+ 	Is_CPP_Constructor for CPP constructors.
+ 	* exp_ch6.adb: Likewise.
+ 	* exp_disp.adb: Likewise.
+ 	* freeze.adb: Likewise.
+ 	* gen_il-fields.ads: Likewise.
+ 	* gen_il-gen-gen_entities.adb: Likewise.
+ 	* gen_il-internals.adb: Likewise.
+ 	* par-ch6.adb: Likewise.
+ 	* sem_prag.adb: Likewise.
+ 	* treepr.adb: Likewise.
+ 
+ 2025-11-18  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Ensure that
+ 	Build_Record_Or_Elementary_Input_Function and
+ 	Build_Record_Or_Elementary_Output_Procedure are only called
+ 	from within an instance of Build_And_Insert_Type_Attr_Subp.
+ 	In particular, the results returned by those 2 functions should
+ 	not be passed directly to Insert_Action. This is needed to
+ 	ensure that the newly-built subprogram is inserted at the correct
+ 	point in the tree.
+ 
+ 2025-11-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch4.adb (Warn_On_Abstract_Equality_For_Component):
+ 	Add additional information in the record-component case.
+ 
+ 2025-11-18  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Valid_Ghost_Policy): Remove function.
+ 	(Ghost_Policy_In_Effect): Force the ghost policy to be always be
+ 	ignore inside ignored regions.
+ 	(Mark_And_Set_Ghost_Declaration): Likewise.
+ 
+ 2025-11-18  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_imgv.adb (Build_Enumeration_Image_Tables): If a
+ 	No_Dynamic_Sized_Objects restriction is in effect, then choose a large
+ 	value for Threshold so that no Lit_Hash function is generated.
+ 
+ 2025-11-18  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-taspri__mingw.ads (Suspension_Object): Remove.
+ 	(Private_Data): Revert unintentional removal.
+ 
+ 2025-11-18  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/a-sytaco.ads (Suspension_Object): Change components.
+ 	* libgnarl/a-sytaco.adb (Initialize, Finalize, Current_State,
+ 	Set_False, Set_True, Suspend_Until_True): New cross-platform version.
+ 	* libgnarl/s-taskin.ads (Task_States): New task state.
+ 	* libgnarl/s-tasini.adb (Locked_Abort_To_Level): Adapt to new state.
+ 	* libgnarl/s-taprop.ads (Is_Task_Context): New function Spec.
+ 	(Initialize, Finalize, Current_State, Set_False, Set_True,
+ 	Suspend_Until_True): Remove.
+ 	* libgnarl/s-taprop__dummy.adb (Is_Task_Context): New body.
+ 	(Initialize, Finalize, Current_State, Set_False, Set_True,
+ 	Suspend_Until_True): Remove.
+ 	* libgnarl/s-taprop__linux.adb (Is_Task_Context): New body.
+ 	(Initialize, Finalize, Current_State, Set_False, Set_True,
+ 	Suspend_Until_True): Remove.
+ 	* libgnarl/s-taprop__mingw.adb (Is_Task_Context): New body.
+ 	(Initialize, Finalize, Current_State, Set_False, Set_True,
+ 	Suspend_Until_True): Remove.
+ 	* libgnarl/s-taprop__posix.adb (Is_Task_Context): New body.
+ 	(Initialize, Finalize, Current_State, Set_False, Set_True,
+ 	Suspend_Until_True): Remove.
+ 	* libgnarl/s-taprop__qnx.adb (Is_Task_Context): New body.
+ 	(Initialize, Finalize, Current_State, Set_False, Set_True,
+ 	Suspend_Until_True): Remove.
+ 	* libgnarl/s-taprop__rtems.adb (Is_Task_Context): New body.
+ 	(Initialize, Finalize, Current_State, Set_False, Set_True,
+ 	Suspend_Until_True): Remove.
+ 	* libgnarl/s-taprop__solaris.adb (Is_Task_Context): New body.
+ 	(Initialize, Finalize, Current_State, Set_False, Set_True,
+ 	Suspend_Until_True): Remove.
+ 	* libgnarl/s-taprop__vxworks.adb (Is_Task_Context): Remove spec.
+ 	(Initialize, Finalize, Current_State, Set_False, Set_True,
+ 	Suspend_Until_True): Remove.
+ 	* libgnarl/s-taspri__dummy.ads (Suspension_Object): Remove.
+ 	* libgnarl/s-taspri__lynxos.ads (Suspension_Object): Remove.
+ 	* libgnarl/s-taspri__mingw.ads (Suspension_Object): Remove.
+ 	* libgnarl/s-taspri__posix-noaltstack.ads (Suspension_Object):
+ 	Remove.
+ 	* libgnarl/s-taspri__posix.ads (Suspension_Object): Remove.
+ 	* libgnarl/s-taspri__solaris.ads (Suspension_Object): Remove.
+ 	* libgnarl/s-taspri__vxworks.ads (Suspension_Object): Remove.
+ 
+ 2025-11-18  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/a-sytaco.ads (Suspension_Object): Use Finalizable aspect.
+ 
  2025-11-13  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* exp_ch9.adb (Expand_N_Entry_Declaration): In the deferred case,
diff -Nrcpad gcc-16-20251116/gcc/ada/doc/gnat_rm/obsolescent_features.rst gcc-16-20251123/gcc/ada/doc/gnat_rm/obsolescent_features.rst
*** gcc-16-20251116/gcc/ada/doc/gnat_rm/obsolescent_features.rst	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/doc/gnat_rm/obsolescent_features.rst	Sun Nov 23 22:32:07 2025
*************** PolyORB
*** 16,23 ****
  
  PolyORB is a deprecated product. It will be baselined with the GNAT Pro
  release 28. After this release, there will be no new versions of this
! product. Contact your sales representative or send a message to
! sales@adacore.com to get recommendations for replacements.
  
  .. _pragma_No_Run_Time:
  
--- 16,22 ----
  
  PolyORB is a deprecated product. It will be baselined with the GNAT Pro
  release 28. After this release, there will be no new versions of this
! product. Contact AdaCore support to get recommendations for replacements.
  
  .. _pragma_No_Run_Time:
  
diff -Nrcpad gcc-16-20251116/gcc/ada/einfo.ads gcc-16-20251123/gcc/ada/einfo.ads
*** gcc-16-20251116/gcc/ada/einfo.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/einfo.ads	Sun Nov 23 22:32:07 2025
*************** package Einfo is
*** 2537,2542 ****
--- 2537,2546 ----
  --       and subtypes, string types and subtypes, and all numeric types).
  --       Set if the type or subtype is constrained.
  
+ --    Is_Constructor
+ --       Defined in procedure entities. Set if a procedure denotes a
+ --       constructor that allows object initialization via the 'Make attribute.
+ 
  --    Is_Constr_Array_Subt_With_Bounds
  --       Defined in all types and subtypes. Set only for an array subtype
  --       which is constrained but nevertheless requires objects of this
*************** package Einfo is
*** 2548,2557 ****
  --       subtype of an object whose nominal subtype is unconstrained. Note
  --       that the constructed subtype itself will be constrained.
  
- --    Is_Constructor
- --       Defined in function and procedure entities. Set if a pragma
- --       CPP_Constructor applies to the subprogram.
- 
  --    Is_Controlled_Active [base type only]
  --       Defined in all type entities. Indicates that the type is controlled,
  --       i.e. has been declared with the Finalizable or the Destructor aspect
--- 2552,2557 ----
*************** package Einfo is
*** 2573,2578 ****
--- 2573,2582 ----
  --       Defined in all type entities, set only for tagged types to which a
  --       valid pragma Import (CPP, ...) or pragma CPP_Class has been applied.
  
+ --    Is_CPP_Constructor
+ --       Defined in function and procedure entities. Set if a pragma
+ --       CPP_Constructor applies to the subprogram.
+ 
  --    Is_CUDA_Kernel
  --       Defined in function and procedure entities. Set if the subprogram is a
  --       CUDA kernel.
*************** package Einfo is
*** 5632,5638 ****
     --    Is_Abstract_Subprogram               (non-generic case only)
     --    Is_Called                            (non-generic case only)
     --    Is_Class_Wide_Wrapper
!    --    Is_Constructor
     --    Is_CUDA_Kernel                       (non-generic case only)
     --    Is_DIC_Procedure                     (non-generic case only)
     --    Is_Discrim_SO_Function
--- 5636,5642 ----
     --    Is_Abstract_Subprogram               (non-generic case only)
     --    Is_Called                            (non-generic case only)
     --    Is_Class_Wide_Wrapper
!    --    Is_CPP_Constructor
     --    Is_CUDA_Kernel                       (non-generic case only)
     --    Is_DIC_Procedure                     (non-generic case only)
     --    Is_Discrim_SO_Function
*************** package Einfo is
*** 5994,5999 ****
--- 5998,6004 ----
     --    Is_Called                            (non-generic case only)
     --    Is_Class_Wide_Wrapper
     --    Is_Constructor
+    --    Is_CPP_Constructor
     --    Is_CUDA_Kernel
     --    Is_Destructor                        (non-generic case only)
     --    Is_DIC_Procedure                     (non-generic case only)
diff -Nrcpad gcc-16-20251116/gcc/ada/erroutc.adb gcc-16-20251123/gcc/ada/erroutc.adb
*** gcc-16-20251116/gcc/ada/erroutc.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/erroutc.adb	Sun Nov 23 22:32:07 2025
*************** package body Erroutc is
*** 461,475 ****
  
          and then not Errors.Table (Cur_Msg).Msg_Cont
  
!         --  Don't delete if prev msg is warning and new msg is an error.
!         --  This is because we don't want a real error masked by a
!         --  warning. In all other cases (that is parse errors for the
!         --  same line that are not unconditional) we do delete the
!         --  message. This helps to avoid junk extra messages from
!         --  cascaded parsing errors
  
!         and then (Errors.Table (Prev_Msg).Kind not in Warning | Style
!                   or else Errors.Table (Cur_Msg).Kind in Warning | Style);
     end Is_Redundant_Error_Message;
  
     --------------------
--- 461,476 ----
  
          and then not Errors.Table (Cur_Msg).Msg_Cont
  
!         --  Don't delete if prev msg is warning or a non-serious-error and new
!         --  msg is an error. This is because we don't want a real error masked
!         --  by a warning. In all other cases (that is parse errors for the same
!         --  line that are not unconditional) we do delete the message. This
!         --  helps to avoid junk extra messages from cascaded parsing errors.
  
!         and then (Errors.Table (Prev_Msg).Kind
!                   not in Warning | Style | Non_Serious_Error
!                   or else Errors.Table (Cur_Msg).Kind
!                           in Warning | Style | Non_Serious_Error);
     end Is_Redundant_Error_Message;
  
     --------------------
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_aggr.adb gcc-16-20251123/gcc/ada/exp_aggr.adb
*** gcc-16-20251116/gcc/ada/exp_aggr.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_aggr.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Aggr is
*** 6400,6420 ****
               Object_Definition   => New_Occurrence_Of (Typ, Loc));
           Set_No_Initialization (Tmp_Decl, True);
  
-          --  If we are within a loop, the temporary will be pushed on the
-          --  stack at each iteration. If the aggregate is the expression
-          --  for an allocator, it will be immediately copied to the heap
-          --  and can be reclaimed at once. We create a transient scope
-          --  around the aggregate for this purpose.
- 
-          if Ekind (Current_Scope) = E_Loop
-            and then Nkind (Parent_Node) = N_Allocator
-          then
-             Establish_Transient_Scope (N, Manage_Sec_Stack => False);
- 
           --  If the parent is an assignment for which no controlled actions
           --  should take place, prevent the temporary from being finalized.
  
!          elsif Nkind (Parent_Node) = N_Assignment_Statement
             and then No_Ctrl_Actions (Parent_Node)
           then
              Mutate_Ekind (Tmp, E_Variable);
--- 6400,6409 ----
               Object_Definition   => New_Occurrence_Of (Typ, Loc));
           Set_No_Initialization (Tmp_Decl, True);
  
           --  If the parent is an assignment for which no controlled actions
           --  should take place, prevent the temporary from being finalized.
  
!          if Nkind (Parent_Node) = N_Assignment_Statement
             and then No_Ctrl_Actions (Parent_Node)
           then
              Mutate_Ekind (Tmp, E_Variable);
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_attr.adb gcc-16-20251123/gcc/ada/exp_attr.adb
*** gcc-16-20251116/gcc/ada/exp_attr.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_attr.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Attr is
*** 2186,2191 ****
--- 2186,2201 ----
           end if;
        end Build_And_Insert_Type_Attr_Subp;
  
+       --  Two instances, used for doing what the instance names suggest.
+ 
+       procedure Build_And_Insert_Record_Or_Elementary_Input_Func is
+         new Build_And_Insert_Type_Attr_Subp
+           (Build_Record_Or_Elementary_Input_Function);
+ 
+       procedure Build_And_Insert_Record_Or_Elementary_Output_Proc is
+         new Build_And_Insert_Type_Attr_Subp
+           (Build_Record_Or_Elementary_Output_Procedure);
+ 
        ----------------------
        -- Get_Integer_Type --
        ----------------------
*************** package body Exp_Attr is
*** 2641,2646 ****
--- 2651,2657 ----
                       Rewrite (Prefix (N),
                         Convert_To (Btyp_DDT,
                           New_Copy_Tree (Prefix (N))));
+                      Flag_Interface_Pointer_Displacement (Prefix (N));
  
                       Analyze_And_Resolve (Prefix (N), Btyp_DDT);
                    end if;
*************** package body Exp_Attr is
*** 2665,2670 ****
--- 2676,2683 ----
                          Rewrite (N,
                            Convert_To (Typ,
                              New_Copy_Tree (Prefix (Ref_Object))));
+                         Flag_Interface_Pointer_Displacement (N);
+ 
                          Analyze_And_Resolve (N, Typ);
                       end if;
                    end;
*************** package body Exp_Attr is
*** 3117,3122 ****
--- 3130,3136 ----
                               Designated_Type (Etype (Parent (N)));
              begin
                 Rewrite (Pref, Convert_To (Iface_Typ, Relocate_Node (Pref)));
+                Flag_Interface_Pointer_Displacement (Pref);
                 Analyze_And_Resolve (Pref, Iface_Typ);
                 return;
              end;
*************** package body Exp_Attr is
*** 4761,4769 ****
                 --  since in this case we are required to call this routine.
  
                 if Present (Find_Inherited_TSS (P_Type, TSS_Stream_Read)) then
!                   Build_Record_Or_Elementary_Input_Function
!                     (P_Type, Decl, Fname);
!                   Insert_Action (N, Decl);
  
                 --  For normal cases, we call the I_xxx routine directly
  
--- 4775,4785 ----
                 --  since in this case we are required to call this routine.
  
                 if Present (Find_Inherited_TSS (P_Type, TSS_Stream_Read)) then
!                   Build_And_Insert_Record_Or_Elementary_Input_Func
!                     (Typ      => Base_Type (U_Type),
!                      Decl     => Decl,
!                      Subp     => Fname,
!                      Attr_Ref => N);
  
                 --  For normal cases, we call the I_xxx routine directly
  
*************** package body Exp_Attr is
*** 4882,4898 ****
                 --  first named subtype is unconstrained? Shouldn't we be
                 --  passing in the first named subtype of the type?
  
!                declare
!                   procedure Build_And_Insert_Record_Input_Func is
!                     new Build_And_Insert_Type_Attr_Subp
!                           (Build_Record_Or_Elementary_Input_Function);
!                begin
!                   Build_And_Insert_Record_Input_Func
!                     (Typ      => U_Type,
!                      Decl     => Decl,
!                      Subp     => Fname,
!                      Attr_Ref => N);
!                end;
  
                 if Nkind (Parent (N)) = N_Object_Declaration
                   and then Is_Record_Type (U_Type)
--- 4898,4908 ----
                 --  first named subtype is unconstrained? Shouldn't we be
                 --  passing in the first named subtype of the type?
  
!                Build_And_Insert_Record_Or_Elementary_Input_Func
!                  (Typ      => Underlying_Type (First_Subtype (P_Type)),
!                   Decl     => Decl,
!                   Subp     => Fname,
!                   Attr_Ref => N);
  
                 if Nkind (Parent (N)) = N_Object_Declaration
                   and then Is_Record_Type (U_Type)
*************** package body Exp_Attr is
*** 5952,5960 ****
                 --  since in this case we are required to call this routine.
  
                 if Present (Find_Inherited_TSS (P_Type, TSS_Stream_Write)) then
!                   Build_Record_Or_Elementary_Output_Procedure
!                     (P_Type, Decl, Pname);
!                   Insert_Action (N, Decl);
  
                 --  For normal cases, we call the W_xxx routine directly
  
--- 5962,5972 ----
                 --  since in this case we are required to call this routine.
  
                 if Present (Find_Inherited_TSS (P_Type, TSS_Stream_Write)) then
!                   Build_And_Insert_Record_Or_Elementary_Output_Proc
!                     (Typ      => Base_Type (U_Type),
!                      Decl     => Decl,
!                      Subp     => Pname,
!                      Attr_Ref => N);
  
                 --  For normal cases, we call the W_xxx routine directly
  
*************** package body Exp_Attr is
*** 6033,6049 ****
                    return;
                 end if;
  
!                declare
!                   procedure Build_And_Insert_Record_Output_Proc is
!                     new Build_And_Insert_Type_Attr_Subp
!                           (Build_Record_Or_Elementary_Output_Procedure);
!                begin
!                   Build_And_Insert_Record_Output_Proc
!                     (Typ      => Base_Type (U_Type),
!                      Decl     => Decl,
!                      Subp     => Pname,
!                      Attr_Ref => N);
!                end;
              end if;
  
              if not Is_Tagged_Type (U_Type) then
--- 6045,6055 ----
                    return;
                 end if;
  
!                Build_And_Insert_Record_Or_Elementary_Output_Proc
!                  (Typ      => Underlying_Type (First_Subtype (P_Type)),
!                   Decl     => Decl,
!                   Subp     => Pname,
!                   Attr_Ref => N);
              end if;
  
              if not Is_Tagged_Type (U_Type) then
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_ch3.adb gcc-16-20251123/gcc/ada/exp_ch3.adb
*** gcc-16-20251116/gcc/ada/exp_ch3.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_ch3.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Ch3 is
*** 7858,7867 ****
  
           --  Ada 2005 (AI-318-02): If the initialization expression is a call
           --  to a build-in-place function, then access to the declared object
!          --  must be passed to the function. Currently we limit such functions
!          --  to those with constrained limited result subtypes, but eventually
!          --  plan to expand the allowed forms of functions that are treated as
!          --  build-in-place.
  
           elsif Is_Build_In_Place_Function_Call (Expr_Q) then
              Make_Build_In_Place_Call_In_Object_Declaration (N, Expr_Q);
--- 7858,7864 ----
  
           --  Ada 2005 (AI-318-02): If the initialization expression is a call
           --  to a build-in-place function, then access to the declared object
!          --  must be passed to the function.
  
           elsif Is_Build_In_Place_Function_Call (Expr_Q) then
              Make_Build_In_Place_Call_In_Object_Declaration (N, Expr_Q);
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_ch4.adb gcc-16-20251123/gcc/ada/exp_ch4.adb
*** gcc-16-20251116/gcc/ada/exp_ch4.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_ch4.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Ch4 is
*** 548,553 ****
--- 548,554 ----
                 --     the secondary dispatch table.
  
                 Rewrite (N, Convert_To (Dtyp, Relocate_Node (N)));
+                Flag_Interface_Pointer_Displacement (N);
                 Analyze_And_Resolve (N, Dtyp);
  
                 --  3) The 'access to the secondary dispatch table will be used
*************** package body Exp_Ch4 is
*** 8190,8198 ****
        --  Unchecked_Union subtype. Typ is a record type.
  
        procedure Warn_On_Abstract_Equality_For_Component
!         (Comp_Type : Entity_Id);
        --  If Comp_Type is a record type with a user-defined abstract primitive
        --  equality, then issue a warning that Program_Error will be raised.
  
        -------------------------
        -- Build_Equality_Call --
--- 8191,8201 ----
        --  Unchecked_Union subtype. Typ is a record type.
  
        procedure Warn_On_Abstract_Equality_For_Component
!         (Comp_Type : Entity_Id; Comp : Entity_Id);
        --  If Comp_Type is a record type with a user-defined abstract primitive
        --  equality, then issue a warning that Program_Error will be raised.
+       --  Comp is Empty in the array case. In the record case, it is the
+       --  component declaration, and is used in the message.
  
        -------------------------
        -- Build_Equality_Call --
*************** package body Exp_Ch4 is
*** 8423,8429 ****
        ---------------------------------------------
  
        procedure Warn_On_Abstract_Equality_For_Component
!         (Comp_Type : Entity_Id)
        is
           Eq : Entity_Id;
        begin
--- 8426,8432 ----
        ---------------------------------------------
  
        procedure Warn_On_Abstract_Equality_For_Component
!         (Comp_Type : Entity_Id; Comp : Entity_Id)
        is
           Eq : Entity_Id;
        begin
*************** package body Exp_Ch4 is
*** 8435,8440 ****
--- 8438,8449 ----
                 Error_Msg_NE ("call to abstract equality function of "
                               & "component type &<<", N, Comp_Type);
                 Error_Msg_N ("\Program_Error [<<", N);
+ 
+                if Present (Comp) then
+                   Error_Msg_Sloc := Sloc (Comp);
+                   Error_Msg_NE
+                     ("\abstract ""="" called for component & #<<", N, Comp);
+                end if;
              end if;
           end if;
        end Warn_On_Abstract_Equality_For_Component;
*************** package body Exp_Ch4 is
*** 8513,8520 ****
           --  Program_Error of objects of the outer type are compared using
           --  predefined equality.
  
!          if not Present (Get_User_Defined_Equality (Typl)) then
!             Warn_On_Abstract_Equality_For_Component (Component_Type (Typl));
           end if;
  
           --  If we are doing full validity checking, and it is possible for the
--- 8522,8530 ----
           --  Program_Error of objects of the outer type are compared using
           --  predefined equality.
  
!          if No (Get_User_Defined_Equality (Typl)) then
!             Warn_On_Abstract_Equality_For_Component
!               (Component_Type (Typl), Comp => Empty);
           end if;
  
           --  If we are doing full validity checking, and it is possible for the
*************** package body Exp_Ch4 is
*** 8602,8614 ****
           --  during analysis and resolution, and do not reach this code (but in
           --  many cases tagged equality comparisons do reach the code below).
  
!          if not Present (Get_User_Defined_Equality (Typl)) then
              declare
                 Comp : Entity_Id := First_Component (Typl);
              begin
                 while Present (Comp) loop
                    if Chars (Comp) /= Name_uParent then
!                      Warn_On_Abstract_Equality_For_Component (Etype (Comp));
                    end if;
  
                    Next_Component (Comp);
--- 8612,8625 ----
           --  during analysis and resolution, and do not reach this code (but in
           --  many cases tagged equality comparisons do reach the code below).
  
!          if No (Get_User_Defined_Equality (Typl)) then
              declare
                 Comp : Entity_Id := First_Component (Typl);
              begin
                 while Present (Comp) loop
                    if Chars (Comp) /= Name_uParent then
!                      Warn_On_Abstract_Equality_For_Component
!                        (Etype (Comp), Comp);
                    end if;
  
                    Next_Component (Comp);
*************** package body Exp_Ch4 is
*** 14347,14353 ****
        --  First and Last attribute reference nodes, which end up as left and
        --  right operands of the optimized result.
  
!       Is_Zero : Boolean;
        --  True for comparison operand of zero
  
        Maybe_Superflat : Boolean;
--- 14358,14364 ----
        --  First and Last attribute reference nodes, which end up as left and
        --  right operands of the optimized result.
  
!       Is_Zero : Boolean := False; -- prevent junk warning
        --  True for comparison operand of zero
  
        Maybe_Superflat : Boolean;
*************** package body Exp_Ch4 is
*** 14358,14364 ****
        --  is itself the length of an array with the same bounds as the array on
        --  the LHS, we can entirely optimize away the comparison.
  
!       Comp : Node_Id;
        --  Comparison operand, set only if Is_Zero is false
  
        Ent : array (Pos range 1 .. 2) of Entity_Id := (Empty, Empty);
--- 14369,14375 ----
        --  is itself the length of an array with the same bounds as the array on
        --  the LHS, we can entirely optimize away the comparison.
  
!       Comp : Node_Id := Empty; -- prevent junk warning
        --  Comparison operand, set only if Is_Zero is false
  
        Ent : array (Pos range 1 .. 2) of Entity_Id := (Empty, Empty);
*************** package body Exp_Ch4 is
*** 15065,15073 ****
        Op1 : Node_Id;
        Op2 : Node_Id) return Boolean
     is
!       Target : Entity_Id;
! 
!       function Is_Safe_Operand (Op : Node_Id) return Boolean;
        --  Operand is safe if it cannot overlap part of the target of the
        --  operation. If the operand and the target are identical, the operand
        --  is safe. The operand can be empty in the case of negation.
--- 15076,15082 ----
        Op1 : Node_Id;
        Op2 : Node_Id) return Boolean
     is
!       function Is_Safe_Operand (Op : Node_Id; Tgt : Entity_Id) return Boolean;
        --  Operand is safe if it cannot overlap part of the target of the
        --  operation. If the operand and the target are identical, the operand
        --  is safe. The operand can be empty in the case of negation.
*************** package body Exp_Ch4 is
*** 15091,15097 ****
        -- Is_Safe_Operand --
        ---------------------
  
!       function Is_Safe_Operand (Op : Node_Id) return Boolean is
        begin
           if No (Op) then
              return True;
--- 15100,15107 ----
        -- Is_Safe_Operand --
        ---------------------
  
!       function Is_Safe_Operand (Op : Node_Id; Tgt : Entity_Id) return Boolean
!       is
        begin
           if No (Op) then
              return True;
*************** package body Exp_Ch4 is
*** 15105,15114 ****
           elsif Nkind (Op) = N_Slice then
              return
                Is_Unaliased (Prefix (Op))
!                 and then Entity (Prefix (Op)) /= Target;
  
           elsif Nkind (Op) = N_Op_Not then
!             return Is_Safe_Operand (Right_Opnd (Op));
  
           else
              return False;
--- 15115,15124 ----
           elsif Nkind (Op) = N_Slice then
              return
                Is_Unaliased (Prefix (Op))
!                 and then Entity (Prefix (Op)) /= Tgt;
  
           elsif Nkind (Op) = N_Op_Not then
!             return Is_Safe_Operand (Right_Opnd (Op), Tgt);
  
           else
              return False;
*************** package body Exp_Ch4 is
*** 15133,15140 ****
           return False;
  
        else
!          Target := Entity (Lhs);
!          return Is_Safe_Operand (Op1) and then Is_Safe_Operand (Op2);
        end if;
     end Safe_In_Place_Array_Op;
  
--- 15143,15150 ----
           return False;
  
        else
!          return Is_Safe_Operand (Op1, Entity (Lhs))
!            and then Is_Safe_Operand (Op2, Entity (Lhs));
        end if;
     end Safe_In_Place_Array_Op;
  
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_ch5.adb gcc-16-20251123/gcc/ada/exp_ch5.adb
*** gcc-16-20251116/gcc/ada/exp_ch5.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_ch5.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Ch5 is
*** 168,178 ****
     --  a procedure with an in-out parameter, and expanded as such.
  
     procedure Expand_Formal_Container_Loop (N : Node_Id);
!    --  Use the primitives specified in an Iterable aspect to expand a loop
!    --  over a so-called formal container, primarily for SPARK usage.
  
     procedure Expand_Formal_Container_Element_Loop (N : Node_Id);
!    --  Same, for an iterator of the form " For E of C". In this case the
     --  iterator provides the name of the element, and the cursor is generated
     --  internally.
  
--- 168,179 ----
     --  a procedure with an in-out parameter, and expanded as such.
  
     procedure Expand_Formal_Container_Loop (N : Node_Id);
!    --  Use the primitives specified in an Iterable aspect to expand a loop.
!    --  The Iterable aspect is used by the SPARK formal containers, and can
!    --  also be used by user code.
  
     procedure Expand_Formal_Container_Element_Loop (N : Node_Id);
!    --  Same, for an iterator of the form "for E of C". In this case the
     --  iterator provides the name of the element, and the cursor is generated
     --  internally.
  
*************** package body Exp_Ch5 is
*** 4547,4558 ****
            Declarations               => New_List (Init_Decl),
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc,
!               Statements => New_List (New_Loop))));
  
!       --  The loop parameter is declared by an object declaration, but within
!       --  the loop we must prevent user assignments to it, so we analyze the
!       --  declaration and reset the entity kind, before analyzing the rest of
!       --  the loop.
  
        Analyze (Init_Decl);
        Init_Name := Defining_Identifier (Init_Decl);
--- 4548,4567 ----
            Declarations               => New_List (Init_Decl),
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc,
!               Statements => Empty_List)));
  
!       --  The loop parameter is declared by an object declaration (Init_Decl),
!       --  but within the loop we must prevent user assignments to it, so we
!       --  analyze Init_Decl and reset the entity kind, before analyzing the
!       --  rest of the loop. First Preanalyze the (empty) block statement,
!       --  to set its Identifier, and then push that as the scope in which
!       --  to analyze Init_Decl. Fill in the Statements after preanalysis;
!       --  otherwise we incorrectly duplicate whatever temps are created
!       --  for the loop.
! 
!       Preanalyze (N);
!       Push_Scope (Entity (Identifier (N)));
!       Set_Statements (Handled_Statement_Sequence (N), New_List (New_Loop));
  
        Analyze (Init_Decl);
        Init_Name := Defining_Identifier (Init_Decl);
*************** package body Exp_Ch5 is
*** 4564,4569 ****
--- 4573,4580 ----
        Reinit_Field_To_Zero (Init_Name, F_SPARK_Pragma_Inherited);
        Mutate_Ekind (Init_Name, E_Loop_Parameter);
  
+       Pop_Scope;
+ 
        --  Wrap the block statements with the condition specified in the
        --  iterator filter when one is present.
  
*************** package body Exp_Ch5 is
*** 4583,4597 ****
  
        Set_Assignment_OK (Name (Advance));
        Analyze (N);
- 
-       --  Because we have to analyze the initial declaration of the loop
-       --  parameter multiple times its scope is incorrectly set at this point
-       --  to the one surrounding the block statement - so set the scope
-       --  manually to be the actual block statement, and indicate that it is
-       --  not visible after the block has been analyzed.
- 
-       Set_Scope (Init_Name, Entity (Identifier (N)));
-       Set_Is_Immediately_Visible (Init_Name, False);
     end Expand_Formal_Container_Loop;
  
     ------------------------------------------
--- 4594,4599 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_ch6.adb gcc-16-20251123/gcc/ada/exp_ch6.adb
*** gcc-16-20251116/gcc/ada/exp_ch6.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_ch6.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Ch6 is
*** 5713,5750 ****
  
        if Nkind (Call_Node) = N_Function_Call
          and then Needs_Finalization (Etype (Call_Node))
        then
!          if not Is_Build_In_Place_Function_Call (Call_Node)
!            and then
!              (No (First_Formal (Subp))
!                or else
!                  not Is_Concurrent_Record_Type (Etype (First_Formal (Subp))))
!          then
!             Expand_Ctrl_Function_Call
!               (Call_Node, Needs_Secondary_Stack (Etype (Call_Node)));
! 
!          --  Build-in-place function calls which appear in anonymous contexts
!          --  need a transient scope to ensure the proper finalization of the
!          --  intermediate result after its use.
! 
!          elsif Is_Build_In_Place_Function_Call (Call_Node)
!            and then Nkind (Parent (Unqual_Conv (Call_Node))) in
!                       N_Attribute_Reference
!                     | N_Function_Call
!                     | N_Indexed_Component
!                     | N_Object_Renaming_Declaration
!                     | N_Procedure_Call_Statement
!                     | N_Selected_Component
!                     | N_Slice
!            and then
!              (Ekind (Current_Scope) /= E_Loop
!                or else Nkind (Parent (Call_Node)) /= N_Function_Call
!                or else not
!                  Is_Build_In_Place_Function_Call (Parent (Call_Node)))
!          then
!             Establish_Transient_Scope
!               (Call_Node, Needs_Secondary_Stack (Etype (Call_Node)));
!          end if;
  
        --  Functions returning noncontrolled objects that may be subject to
        --  user-defined indexing also need special attention. The problem
--- 5713,5725 ----
  
        if Nkind (Call_Node) = N_Function_Call
          and then Needs_Finalization (Etype (Call_Node))
+         and then not Is_Build_In_Place_Function_Call (Call_Node)
+         and then (No (First_Formal (Subp))
+                    or else not
+                      Is_Concurrent_Record_Type (Etype (First_Formal (Subp))))
        then
!          Expand_Ctrl_Function_Call
!            (Call_Node, Needs_Secondary_Stack (Etype (Call_Node)));
  
        --  Functions returning noncontrolled objects that may be subject to
        --  user-defined indexing also need special attention. The problem
*************** package body Exp_Ch6 is
*** 6341,6347 ****
  
        begin
           if not (Nkind (Specification (N)) = N_Procedure_Specification
!                   and then Is_Constructor_Procedure (Spec_Id))
           then
              return; -- the usual case
           end if;
--- 6316,6322 ----
  
        begin
           if not (Nkind (Specification (N)) = N_Procedure_Specification
!                   and then Is_Constructor (Spec_Id))
           then
              return; -- the usual case
           end if;
*************** package body Exp_Ch6 is
*** 7724,7729 ****
--- 7699,7705 ----
  
              if Is_Interface (R_Type) then
                 Rewrite (Exp, Convert_To (R_Type, Relocate_Node (Exp)));
+                Flag_Interface_Pointer_Displacement (Exp);
              end if;
  
              Analyze_And_Resolve (Exp, R_Type);
*************** package body Exp_Ch6 is
*** 7802,7807 ****
--- 7778,7784 ----
  
                 if Is_Interface (R_Type) then
                    Rewrite (Exp, Convert_To (R_Type, Relocate_Node (Exp)));
+                   Flag_Interface_Pointer_Displacement (Exp);
                 end if;
  
                 Analyze_And_Resolve (Exp, R_Type);
*************** package body Exp_Ch6 is
*** 7996,8001 ****
--- 7973,7979 ----
          and then Utyp /= Underlying_Type (Exp_Typ)
        then
           Rewrite (Exp, Convert_To (Utyp, Relocate_Node (Exp)));
+          Flag_Interface_Pointer_Displacement (Exp);
           Analyze_And_Resolve (Exp);
        end if;
  
*************** package body Exp_Ch6 is
*** 9196,9201 ****
--- 9174,9180 ----
           Rewrite
             (Ref_Func_Call,
              OK_Convert_To (Acc_Type, Ref_Func_Call));
+          Flag_Interface_Pointer_Displacement (Ref_Func_Call);
  
        --  If the types are incompatible, we need an unchecked conversion. Note
        --  that the full types will be compatible, but the types not visibly
*************** package body Exp_Ch6 is
*** 9309,9314 ****
--- 9288,9295 ----
        Loc         : constant Source_Ptr := Sloc (Function_Call);
        Func_Call   : constant Node_Id    := Unqual_Conv (Function_Call);
        Function_Id : Entity_Id;
+       Known_Size  : Boolean;
+       Needs_Fin   : Boolean;
        Result_Subt : Entity_Id;
  
     begin
*************** package body Exp_Ch6 is
*** 9335,9345 ****
        Warn_BIP (Func_Call);
  
        Result_Subt := Etype (Function_Id);
  
        --  If the build-in-place function returns a controlled object, then the
!       --  object needs to be finalized immediately after the context. Since
!       --  this case produces a transient scope, the servicing finalizer needs
!       --  to name the returned object.
  
        --  If the build-in-place function returns a definite subtype, then an
        --  object also needs to be created and an access value designating it
--- 9316,9327 ----
        Warn_BIP (Func_Call);
  
        Result_Subt := Etype (Function_Id);
+       Known_Size := Caller_Known_Size (Func_Call, Result_Subt);
+       Needs_Fin := Needs_Finalization (Result_Subt);
  
        --  If the build-in-place function returns a controlled object, then the
!       --  object needs to be finalized immediately after the context is exited,
!       --  which requires the creation of a transient scope and a named object.
  
        --  If the build-in-place function returns a definite subtype, then an
        --  object also needs to be created and an access value designating it
*************** package body Exp_Ch6 is
*** 9353,9361 ****
        --  the expander using the appropriate mechanism in Make_Build_In_Place_
        --  Call_In_Object_Declaration.
  
!       if Needs_Finalization (Result_Subt)
!         or else Caller_Known_Size (Func_Call, Result_Subt)
!       then
           declare
              Temp_Id   : constant Entity_Id := Make_Temporary (Loc, 'R');
              Temp_Decl : constant Node_Id   :=
--- 9335,9346 ----
        --  the expander using the appropriate mechanism in Make_Build_In_Place_
        --  Call_In_Object_Declaration.
  
!       if Needs_Fin or else Known_Size then
!          if Needs_Fin then
!             Establish_Transient_Scope
!               (Func_Call, Manage_Sec_Stack => not Known_Size);
!          end if;
! 
           declare
              Temp_Id   : constant Entity_Id := Make_Temporary (Loc, 'R');
              Temp_Decl : constant Node_Id   :=
*************** package body Exp_Ch6 is
*** 9396,9401 ****
--- 9381,9388 ----
           Add_Access_Actual_To_Build_In_Place_Call
             (Func_Call, Function_Id, Empty);
  
+          Establish_Transient_Scope (Func_Call, Manage_Sec_Stack => True);
+ 
           --  Mark the call as processed as a build-in-place call
  
           Set_Is_Expanded_Build_In_Place_Call (Func_Call);
*************** package body Exp_Ch6 is
*** 10002,10007 ****
--- 9989,9995 ----
        Rewrite (Allocator,
          Convert_To (Etype (Allocator),
            New_Occurrence_Of (Tmp_Id, Loc)));
+       Flag_Interface_Pointer_Displacement (Allocator);
     end Make_Build_In_Place_Iface_Call_In_Allocator;
  
     ---------------------------------------------------------
*************** package body Exp_Ch6 is
*** 10155,10161 ****
        pragma Assert (Nkind (Allocator) = N_Allocator
                        and then Nkind (Function_Call) = N_Function_Call);
        pragma Assert (Convention (Function_Id) = Convention_CPP
!                       and then Is_Constructor (Function_Id));
        pragma Assert (Is_Constrained (Underlying_Type (Result_Subt)));
  
        --  Replace the initialized allocator of form "new T'(Func (...))" with
--- 10143,10149 ----
        pragma Assert (Nkind (Allocator) = N_Allocator
                        and then Nkind (Function_Call) = N_Function_Call);
        pragma Assert (Convention (Function_Id) = Convention_CPP
!                       and then Is_CPP_Constructor (Function_Id));
        pragma Assert (Is_Constrained (Underlying_Type (Result_Subt)));
  
        --  Replace the initialized allocator of form "new T'(Func (...))" with
*************** package body Exp_Ch6 is
*** 10219,10224 ****
--- 10207,10213 ----
  
        if Is_Interface (Designated_Type (Acc_Type)) then
           Rewrite (Allocator, Convert_To (Acc_Type, Relocate_Node (Allocator)));
+          Flag_Interface_Pointer_Displacement (Allocator);
        end if;
  
        Analyze_And_Resolve (Allocator, Acc_Type);
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_ch6.ads gcc-16-20251123/gcc/ada/exp_ch6.ads
*** gcc-16-20251116/gcc/ada/exp_ch6.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_ch6.ads	Sun Nov 23 22:32:07 2025
*************** package Exp_Ch6 is
*** 67,84 ****
        --  Present if result subtype is returned on the secondary stack or is
        --  tagged: in this case, this indicates whether the return object is
        --  allocated by the caller or callee, and if the callee, whether to
!       --  use the secondary stack, the global heap or a storage pool. Also
!       --  present if result type needs finalization.
  
        BIP_Storage_Pool,
        --  Present if result subtype is returned on the secondary stack or is
        --  tagged: in this case, if BIP_Alloc_Form = User_Storage_Pool, this
        --  is a pointer to the pool (of type Root_Storage_Pool_Ptr); otherwise
!       --  this is null. Also present if result type needs finalization.
  
        BIP_Collection,
!       --  Present if result type needs finalization. Pointer to the collection
!       --  of the access type used by the caller.
  
        BIP_Task_Master,
        --  Present if result type contains tasks. Master associated with
--- 67,84 ----
        --  Present if result subtype is returned on the secondary stack or is
        --  tagged: in this case, this indicates whether the return object is
        --  allocated by the caller or callee, and if the callee, whether to
!       --  use the secondary stack, the global heap or a storage pool.
  
        BIP_Storage_Pool,
        --  Present if result subtype is returned on the secondary stack or is
        --  tagged: in this case, if BIP_Alloc_Form = User_Storage_Pool, this
        --  is a pointer to the pool (of type Root_Storage_Pool_Ptr); otherwise
!       --  this is null.
  
        BIP_Collection,
!       --  Present if result type is returned on the secondary stack and needs
!       --  finalization, or is tagged. Pointer to the collection of the access
!       --  type used by the caller.
  
        BIP_Task_Master,
        --  Present if result type contains tasks. Master associated with
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_ch7.adb gcc-16-20251123/gcc/ada/exp_ch7.adb
*** gcc-16-20251116/gcc/ada/exp_ch7.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_ch7.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Ch7 is
*** 2727,2734 ****
           Obj_Ref            : Node_Id;
           Obj_Typ            : Entity_Id;
  
-       --  Start of processing for Process_Object_Declaration
- 
        begin
           --  Handle the object type and the reference to the object. Note
           --  that objects having simple protected components or of a CW type
--- 2727,2732 ----
*************** package body Exp_Ch7 is
*** 2789,2806 ****
  
              Push_Scope (Scope (Obj_Id));
  
-             --  Avoid generating duplicate names for master nodes
- 
-             if Ekind (Obj_Id) = E_Loop_Parameter
-               and then
-                 Present (Current_Entity_In_Scope (Chars (Master_Node_Id)))
-             then
-                Set_Chars (Master_Node_Id,
-                  New_External_Name (Chars (Obj_Id),
-                    Suffix => "MN",
-                    Suffix_Index => -1));
-             end if;
- 
              if not Has_Strict_Ctrl_Objs or else Count = 1 then
                 Prepend_To (Decls, Master_Node_Decl);
              else
--- 2787,2792 ----
*************** package body Exp_Ch7 is
*** 4290,4297 ****
     -- Establish_Transient_Scope --
     -------------------------------
  
!    --  This procedure is called each time a transient block has to be inserted
!    --  that is to say for each call to a function with unconstrained or tagged
     --  result. It creates a new scope on the scope stack in order to enclose
     --  all transient variables generated.
  
--- 4276,4284 ----
     -- Establish_Transient_Scope --
     -------------------------------
  
!    --  This procedure is called when a transient scope has to be inserted in
!    --  the tree to manage the lifetime of temporaries created for a construct,
!    --  most notably for calls to functions with a controlled or unconstrained
     --  result. It creates a new scope on the scope stack in order to enclose
     --  all transient variables generated.
  
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_disp.adb gcc-16-20251123/gcc/ada/exp_disp.adb
*** gcc-16-20251116/gcc/ada/exp_disp.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_disp.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Disp is
*** 1708,1713 ****
--- 1708,1714 ----
                 end if;
  
                 Conversion := Convert_To (Formal_Typ, Relocate_Node (Actual));
+                Flag_Interface_Pointer_Displacement (Conversion);
                 Rewrite (Actual, Conversion);
                 Analyze_And_Resolve (Actual, Formal_Typ);
              end if;
*************** package body Exp_Disp is
*** 1776,1781 ****
--- 1777,1784 ----
  
                 Conversion := Convert_To (Formal_Typ, Actual_Dup);
                 Rewrite (Actual, Conversion);
+                Flag_Interface_Pointer_Displacement (Actual);
+ 
                 Analyze_And_Resolve (Actual, Formal_Typ);
              end if;
           end if;
*************** package body Exp_Disp is
*** 2332,2338 ****
  
        E := Next_Entity (Typ);
        while Present (E) loop
!          if Ekind (E) = E_Function and then Is_Constructor (E) then
              return True;
           end if;
  
--- 2335,2341 ----
  
        E := Next_Entity (Typ);
        while Present (E) loop
!          if Ekind (E) = E_Function and then Is_CPP_Constructor (E) then
              return True;
           end if;
  
*************** package body Exp_Disp is
*** 8285,8291 ****
        E := Next_Entity (Typ);
        while Present (E) loop
           if Ekind (E) = E_Function
!            and then Is_Constructor (E)
           then
              Found := True;
              Loc   := Sloc (E);
--- 8288,8294 ----
        E := Next_Entity (Typ);
        while Present (E) loop
           if Ekind (E) = E_Function
!            and then Is_CPP_Constructor (E)
           then
              Found := True;
              Loc   := Sloc (E);
*************** package body Exp_Disp is
*** 8307,8321 ****
                          Defining_Unit_Name       => IP,
                          Parameter_Specifications => Parms)));
  
!                Set_Init_Proc   (Typ, IP);
!                Set_Is_Imported      (IP);
!                Set_Is_Constructor   (IP);
!                Set_Interface_Name   (IP, Interface_Name (E));
!                Set_Convention       (IP, Convention_CPP);
!                Set_Is_Public        (IP);
!                Set_Has_Completion   (IP);
!                Mutate_Ekind         (IP, E_Procedure);
!                Freeze_Extra_Formals (IP);
  
              --  Case 2: Constructor of a tagged type
  
--- 8310,8324 ----
                          Defining_Unit_Name       => IP,
                          Parameter_Specifications => Parms)));
  
!                Set_Init_Proc     (Typ, IP);
!                Set_Is_Imported        (IP);
!                Set_Is_CPP_Constructor (IP);
!                Set_Interface_Name     (IP, Interface_Name (E));
!                Set_Convention         (IP, Convention_CPP);
!                Set_Is_Public          (IP);
!                Set_Has_Completion     (IP);
!                Mutate_Ekind           (IP, E_Procedure);
!                Freeze_Extra_Formals   (IP);
  
              --  Case 2: Constructor of a tagged type
  
*************** package body Exp_Disp is
*** 8351,8362 ****
                          Defining_Unit_Name => Constructor_Id,
                          Parameter_Specifications => Parms));
  
!                   Set_Is_Imported    (Constructor_Id);
!                   Set_Is_Constructor (Constructor_Id);
!                   Set_Interface_Name (Constructor_Id, Interface_Name (E));
!                   Set_Convention     (Constructor_Id, Convention_CPP);
!                   Set_Is_Public      (Constructor_Id);
!                   Set_Has_Completion (Constructor_Id);
  
                    --  Build the init procedure as a wrapper of this constructor
  
--- 8354,8365 ----
                          Defining_Unit_Name => Constructor_Id,
                          Parameter_Specifications => Parms));
  
!                   Set_Is_Imported        (Constructor_Id);
!                   Set_Is_CPP_Constructor (Constructor_Id);
!                   Set_Interface_Name     (Constructor_Id, Interface_Name (E));
!                   Set_Convention         (Constructor_Id, Convention_CPP);
!                   Set_Is_Public          (Constructor_Id);
!                   Set_Has_Completion     (Constructor_Id);
  
                    --  Build the init procedure as a wrapper of this constructor
  
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_imgv.adb gcc-16-20251123/gcc/ada/exp_imgv.adb
*** gcc-16-20251116/gcc/ada/exp_imgv.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_imgv.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Imgv is
*** 112,124 ****
        --  exactly spent on all possible paths from this point.
  
        Threshold : constant Nat :=
!         (if Is_Library_Level_Entity (E)
             or else not Always_Compatible_Rep_On_Target
           then 3
           else Nat'Last);
        --  Threshold above which we want to generate the hash function in the
        --  default case. We avoid doing it if this would cause a trampoline to
        --  be generated because the type is local and descriptors are not used.
  
        Threshold_For_Size : constant Nat := Nat'Max (Threshold, 9);
        --  But the function and its tables take a bit of space so the threshold
--- 112,129 ----
        --  exactly spent on all possible paths from this point.
  
        Threshold : constant Nat :=
!         (if Restriction_Active (No_Dynamic_Sized_Objects)
!          then Nat'Last
!          elsif Is_Library_Level_Entity (E)
             or else not Always_Compatible_Rep_On_Target
           then 3
           else Nat'Last);
        --  Threshold above which we want to generate the hash function in the
        --  default case. We avoid doing it if this would cause a trampoline to
        --  be generated because the type is local and descriptors are not used.
+       --  We also avoid doing it if a No_Dynamic_Sized_Objects restriction is
+       --  in effect because the hash function will violate the restriction
+       --  by declaring an array subtype with dynamic bounds.
  
        Threshold_For_Size : constant Nat := Nat'Max (Threshold, 9);
        --  But the function and its tables take a bit of space so the threshold
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_intr.adb gcc-16-20251123/gcc/ada/exp_intr.adb
*** gcc-16-20251116/gcc/ada/exp_intr.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_intr.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Intr is
*** 415,420 ****
--- 415,424 ----
  
        Rewrite (N, Convert_To (Result_Typ, Cnstr_Call));
  
+       if Is_Interface (Result_Typ) then
+          Flag_Interface_Pointer_Displacement (N);
+       end if;
+ 
        --  Do not generate a run-time check on the built object if tag
        --  checks are suppressed for the result type or tagged type expansion
        --  is disabled or if CodePeer_Mode.
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_util.adb gcc-16-20251123/gcc/ada/exp_util.adb
*** gcc-16-20251116/gcc/ada/exp_util.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_util.adb	Sun Nov 23 22:32:07 2025
*************** package body Exp_Util is
*** 7127,7132 ****
--- 7127,7143 ----
        end if;
     end Find_Hook_Context;
  
+    -----------------------------------------
+    -- Flag_Interface_Pointer_Displacement --
+    -----------------------------------------
+ 
+    procedure Flag_Interface_Pointer_Displacement (N : Node_Id) is
+    begin
+       if Nkind (N) = N_Type_Conversion then
+          Set_Is_Interface_Pointer_Displacement (N);
+       end if;
+    end Flag_Interface_Pointer_Displacement;
+ 
     ------------------------------
     -- Following_Address_Clause --
     ------------------------------
diff -Nrcpad gcc-16-20251116/gcc/ada/exp_util.ads gcc-16-20251123/gcc/ada/exp_util.ads
*** gcc-16-20251116/gcc/ada/exp_util.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/exp_util.ads	Sun Nov 23 22:32:07 2025
*************** package Exp_Util is
*** 680,685 ****
--- 680,691 ----
     --  be evaluated, for example if N is the right operand of a short circuit
     --  operator.
  
+    procedure Flag_Interface_Pointer_Displacement (N : Node_Id);
+    --  If N is an N_Type_Conversion node then flag N to indicate that this
+    --  type conversion was internally added to force the displacement of the
+    --  pointer to the object (pointer named "this" in the C++ terminology)
+    --  from a dispatch table to another dispatch table.
+ 
     function Following_Address_Clause (D : Node_Id) return Node_Id;
     --  D is the node for an object declaration. This function searches the
     --  current declarative part to look for an address clause for the object
*************** private
*** 1370,1375 ****
--- 1376,1382 ----
     pragma Inline (Duplicate_Subexpr);
     pragma Inline (Find_Controlled_Prim_Op);
     pragma Inline (Find_Prim_Op);
+    pragma Inline (Flag_Interface_Pointer_Displacement);
     pragma Inline (Force_Evaluation);
     pragma Inline (Get_Mapped_Entity);
     pragma Inline (Is_Library_Level_Tagged_Type);
diff -Nrcpad gcc-16-20251116/gcc/ada/freeze.adb gcc-16-20251123/gcc/ada/freeze.adb
*** gcc-16-20251116/gcc/ada/freeze.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/freeze.adb	Sun Nov 23 22:32:07 2025
*************** package body Freeze is
*** 4872,4887 ****
                 if Nkind (Original_Node (Parent (E))) = N_Full_Type_Declaration
                 then
                    Warn_Node := Parent (E);
- 
-                   if Formal = First_Formal (E) then
-                      Error_Msg_NE ("??in inherited operation&", Warn_Node, E);
-                   end if;
                 else
                    Warn_Node := Formal;
                 end if;
  
                 Error_Msg_NE ("?x?type of argument& is unconstrained array",
                    Warn_Node, Formal);
                 Error_Msg_N ("\?x?foreign caller must pass bounds explicitly",
                    Warn_Node);
                 Error_Msg_Qual_Level := 0;
--- 4872,4890 ----
                 if Nkind (Original_Node (Parent (E))) = N_Full_Type_Declaration
                 then
                    Warn_Node := Parent (E);
                 else
                    Warn_Node := Formal;
                 end if;
  
                 Error_Msg_NE ("?x?type of argument& is unconstrained array",
                    Warn_Node, Formal);
+ 
+                if Nkind (Original_Node (Parent (E))) = N_Full_Type_Declaration
+                  and then Formal = First_Formal (E)
+                then
+                   Error_Msg_NE ("\?x?in inherited operation&", Warn_Node, E);
+                end if;
+ 
                 Error_Msg_N ("\?x?foreign caller must pass bounds explicitly",
                    Warn_Node);
                 Error_Msg_Qual_Level := 0;
*************** package body Freeze is
*** 10490,10496 ****
        --  For C++ constructors check that their external name has been given
        --  (either in pragma CPP_Constructor or in a pragma import).
  
!       if Is_Constructor (E)
          and then Convention (E) = Convention_CPP
          and then
             (No (Interface_Name (E))
--- 10493,10499 ----
        --  For C++ constructors check that their external name has been given
        --  (either in pragma CPP_Constructor or in a pragma import).
  
!       if Is_CPP_Constructor (E)
          and then Convention (E) = Convention_CPP
          and then
             (No (Interface_Name (E))
diff -Nrcpad gcc-16-20251116/gcc/ada/gcc-interface/decl.cc gcc-16-20251123/gcc/ada/gcc-interface/decl.cc
*** gcc-16-20251116/gcc/ada/gcc-interface/decl.cc	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/gcc-interface/decl.cc	Sun Nov 23 22:32:07 2025
*************** is_cplusplus_method (Entity_Id gnat_enti
*** 5206,5212 ****
       it is declared without the 'this' parameter in the sources and, although
       the front-end will create a version with the 'this' parameter for code
       generation purposes, we want to return true for both versions.  */
!   if (Is_Constructor (gnat_entity))
      return true;
  
    /* Check that the subprogram has C++ convention.  */
--- 5206,5212 ----
       it is declared without the 'this' parameter in the sources and, although
       the front-end will create a version with the 'this' parameter for code
       generation purposes, we want to return true for both versions.  */
!   if (Is_CPP_Constructor (gnat_entity))
      return true;
  
    /* Check that the subprogram has C++ convention.  */
*************** gnat_to_gnu_param (Entity_Id gnat_param,
*** 5836,5842 ****
        = make_type_from_size (gnu_param_type, size_int (POINTER_SIZE), 0);
  
    /* Use a pointer type for the "this" pointer of C++ constructors.  */
!   else if (Chars (gnat_param) == Name_uInit && Is_Constructor (gnat_subprog))
      {
        gcc_assert (mech == By_Reference);
        gnu_param_type = build_pointer_type (gnu_param_type);
--- 5836,5842 ----
        = make_type_from_size (gnu_param_type, size_int (POINTER_SIZE), 0);
  
    /* Use a pointer type for the "this" pointer of C++ constructors.  */
!   else if (Chars (gnat_param) == Name_uInit && Is_CPP_Constructor (gnat_subprog))
      {
        gcc_assert (mech == By_Reference);
        gnu_param_type = build_pointer_type (gnu_param_type);
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 6611,6617 ****
    /* Turn imported C++ constructors into their callable form as done in the
       front-end, i.e. add the "this" pointer and void the return type.  */
    if (method_p
!       && Is_Constructor (gnat_subprog)
        && !VOID_TYPE_P (gnu_return_type))
      {
        tree gnu_param_type
--- 6611,6617 ----
    /* Turn imported C++ constructors into their callable form as done in the
       front-end, i.e. add the "this" pointer and void the return type.  */
    if (method_p
!       && Is_CPP_Constructor (gnat_subprog)
        && !VOID_TYPE_P (gnu_return_type))
      {
        tree gnu_param_type
diff -Nrcpad gcc-16-20251116/gcc/ada/gen_il-fields.ads gcc-16-20251123/gcc/ada/gen_il-fields.ads
*** gcc-16-20251116/gcc/ada/gen_il-fields.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/gen_il-fields.ads	Sun Nov 23 22:32:07 2025
*************** package Gen_IL.Fields is
*** 263,268 ****
--- 263,269 ----
        Is_Implicit_With,
        Is_In_Discriminant_Check,
        Is_Initialization_Block,
+       Is_Interface_Pointer_Displacement,
        Is_Interpolated_String_Literal,
        Is_Known_Guaranteed_ABE,
        Is_Machine_Number,
*************** package Gen_IL.Fields is
*** 700,705 ****
--- 701,707 ----
        Is_Controlled_Active,
        Is_Controlling_Formal,
        Is_CPP_Class,
+       Is_CPP_Constructor,
        Is_CUDA_Kernel,
        Is_Descendant_Of_Address,
        Is_Destructor,
diff -Nrcpad gcc-16-20251116/gcc/ada/gen_il-gen-gen_entities.adb gcc-16-20251123/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-16-20251116/gcc/ada/gen_il-gen-gen_entities.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/gen_il-gen-gen_entities.adb	Sun Nov 23 22:32:07 2025
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 137,142 ****
--- 137,143 ----
          Sm (Is_Constructor, Flag),
          Sm (Is_Controlled_Active, Flag, Base_Type_Only),
          Sm (Is_CPP_Class, Flag),
+         Sm (Is_CPP_Constructor, Flag),
          Sm (Is_Descendant_Of_Address, Flag),
          Sm (Is_Discrim_SO_Function, Flag),
          Sm (Is_Discriminant_Check_Function, Flag),
diff -Nrcpad gcc-16-20251116/gcc/ada/gen_il-gen-gen_nodes.adb gcc-16-20251123/gcc/ada/gen_il-gen-gen_nodes.adb
*** gcc-16-20251116/gcc/ada/gen_il-gen-gen_nodes.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/gen_il-gen-gen_nodes.adb	Sun Nov 23 22:32:07 2025
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 476,481 ****
--- 476,482 ----
          Sm (Do_Length_Check, Flag),
          Sm (Do_Overflow_Check, Flag),
          Sm (Float_Truncate, Flag),
+         Sm (Is_Interface_Pointer_Displacement, Flag),
          Sm (Tag_Propagated, Flag),
          Sm (Rounded_Result, Flag)));
  
diff -Nrcpad gcc-16-20251116/gcc/ada/gen_il-internals.adb gcc-16-20251123/gcc/ada/gen_il-internals.adb
*** gcc-16-20251116/gcc/ada/gen_il-internals.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/gen_il-internals.adb	Sun Nov 23 22:32:07 2025
*************** package body Gen_IL.Internals is
*** 297,302 ****
--- 297,304 ----
              return "Ignore_SPARK_Mode_Pragmas";
           when Is_CPP_Class =>
              return "Is_CPP_Class";
+          when Is_CPP_Constructor =>
+             return "Is_CPP_Constructor";
           when Is_CUDA_Kernel =>
              return "Is_CUDA_Kernel";
           when Is_DIC_Procedure =>
*************** package body Gen_IL.Internals is
*** 313,318 ****
--- 315,322 ----
              return "Is_Elaboration_Warnings_OK_Node";
           when Is_IEEE_Extended_Precision =>
              return "Is_IEEE_Extended_Precision";
+          when Is_Interface_Pointer_Displacement =>
+             return "Is_Interface_Pointer_Displacement";
           when Is_Known_Guaranteed_ABE =>
              return "Is_Known_Guaranteed_ABE";
           when Is_RACW_Stub_Type =>
diff -Nrcpad gcc-16-20251116/gcc/ada/ghost.adb gcc-16-20251123/gcc/ada/ghost.adb
*** gcc-16-20251116/gcc/ada/ghost.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/ghost.adb	Sun Nov 23 22:32:07 2025
*************** package body Ghost is
*** 112,117 ****
--- 112,122 ----
     --  applicable to the enclosing declaration, statement, assertion pragma
     --  or specification aspect.
     --
+    --  If the declaration occurs inside a ghost declaration, ghost statement,
+    --  assertion pragma or specification aspect and the assertion policy
+    --  applicable to this scope is Ignore, then the assertion policy applicable
+    --  to the declaration is also Ignore.
+    --
     --  Otherwise, the assertion policy applicable to an object declaration
     --  comes either from its assertion level if any, or from the ghost
     --  policy at the point of declaration.
*************** package body Ghost is
*** 1031,1040 ****
        --  Check that the the assertion level of the declared entity is
        --  compatible with assertion level of the ghost region.
  
-       procedure Check_Valid_Ghost_Policy (Id : Entity_Id; Ref : Node_Id);
-       --  Check that the declared identifier does not have a Checked assertion
-       --  policy while being declared inside an ignored ghost region.
- 
        ---------------------------------
        -- Check_Valid_Assertion_Level --
        ---------------------------------
--- 1036,1041 ----
*************** package body Ghost is
*** 1063,1086 ****
           end if;
        end Check_Valid_Assertion_Level;
  
-       ------------------------------
-       -- Check_Valid_Ghost_Policy --
-       ------------------------------
- 
-       procedure Check_Valid_Ghost_Policy (Id : Entity_Id; Ref : Node_Id) is
-          Policy : constant Name_Id := Ghost_Policy_In_Effect (Id);
-       begin
-          if Ghost_Config.Ghost_Mode = Ignore and then Policy = Name_Check
-          then
-             Error_Msg_Sloc := Sloc (Ref);
- 
-             Error_Msg_N (Ghost_Policy_Error_Msg, Ref);
-             Error_Msg_NE ("\& has ghost policy `Check`", Ref, Id);
-             Error_Msg_NE
-               ("\& is declared # within ghost policy `Ignore`", Ref, Id);
-          end if;
-       end Check_Valid_Ghost_Policy;
- 
        --  Local variables
  
        Id : constant Entity_Id := Defining_Entity (N);
--- 1064,1069 ----
*************** package body Ghost is
*** 1092,1098 ****
           return;
        end if;
  
-       Check_Valid_Ghost_Policy (Id, N);
        Check_Valid_Assertion_Level (Id, N);
     end Check_Valid_Ghost_Declaration;
  
--- 1075,1080 ----
*************** package body Ghost is
*** 1568,1574 ****
        Level_Nam : constant Name_Id :=
          (if No (Level) then No_Name else Chars (Level));
     begin
!       if Ghost_Config.Is_Inside_Statement_Or_Pragma
          and then Is_Implicit_Ghost (Id)
        then
           case Ghost_Config.Ghost_Mode is
--- 1550,1558 ----
        Level_Nam : constant Name_Id :=
          (if No (Level) then No_Name else Chars (Level));
     begin
!       if Present (Ghost_Config.Ignored_Ghost_Region) then
!          return Name_Ignore;
!       elsif Ghost_Config.Is_Inside_Statement_Or_Pragma
          and then Is_Implicit_Ghost (Id)
        then
           case Ghost_Config.Ghost_Mode is
*************** package body Ghost is
*** 2126,2133 ****
        --  the region.
  
        if Present (Level) then
!          Policy :=
!            Policy_In_Effect (Name_Ghost, Assertion_Level_To_Name (Level));
  
        --  A declaration elaborated in a Ghost region is automatically Ghost
        --  (SPARK RM 6.9(2)).
--- 2110,2125 ----
        --  the region.
  
        if Present (Level) then
!          --  Default to the Ignore policy inside ignored ghost regions.
!          --  Similarly to how we do it in Ghost_Policy_In_Effect.
!          --  SPARK RM 6.9 (3)
! 
!          if Present (Ghost_Config.Ignored_Ghost_Region) then
!             Policy := Name_Ignore;
!          else
!             Policy :=
!               Policy_In_Effect (Name_Ghost, Assertion_Level_To_Name (Level));
!          end if;
  
        --  A declaration elaborated in a Ghost region is automatically Ghost
        --  (SPARK RM 6.9(2)).
*************** package body Ghost is
*** 2272,2277 ****
--- 2264,2371 ----
        Check_Ghost_Actuals;
     end Mark_And_Set_Ghost_Instantiation;
  
+    ------------------------------------------
+    -- Check_Procedure_Call_Argument_Levels --
+    ------------------------------------------
+ 
+    procedure Check_Procedure_Call_Argument_Levels (N : Node_Id) is
+       procedure Check_Argument_Levels
+         (Actual : Entity_Id; Actual_Ref : Node_Id);
+       --  Check that the ghost assertion level of an actual is an assertion
+       --  level which depends on the ghost region where the procedure call
+       --  is located.
+ 
+       ---------------------------
+       -- Check_Argument_Levels --
+       ---------------------------
+ 
+       procedure Check_Argument_Levels
+         (Actual : Entity_Id; Actual_Ref : Node_Id)
+       is
+          Actual_Level : constant Entity_Id := Ghost_Assertion_Level (Actual);
+          Region_Level : constant Entity_Id :=
+            Ghost_Config.Ghost_Mode_Assertion_Level;
+       begin
+          --  If an assignment to a part of a ghost variable occurs in a ghost
+          --  entity, then the variable should be assertion-level-dependent on
+          --  this entity [This includes both assignment statements and passing
+          --  a ghost variable as an out or in out mode actual parameter.]
+          --  (SPARK RM 6.9(18)).
+ 
+          if Present (Region_Level)
+            and then not Is_Assertion_Level_Dependent
+                           (Actual_Level, Region_Level)
+          then
+             Error_Msg_N (Assertion_Level_Error_Msg, Actual_Ref);
+             Error_Msg_Name_1 := Chars (Actual_Level);
+             Error_Msg_N ("\& has assertion level %", Actual_Ref);
+             Error_Msg_Name_1 := Chars (Region_Level);
+             Error_Msg_N ("\& is modified within a region with %", Actual_Ref);
+             Error_Msg_Name_1 := Chars (Region_Level);
+             Error_Msg_N
+               ("\assertion level of & should depend on %", Actual_Ref);
+          end if;
+       end Check_Argument_Levels;
+ 
+       --  Local variables
+ 
+       Actual      : Node_Id;
+       Actual_Id   : Entity_Id;
+       Formal      : Node_Id;
+       Id          : Entity_Id;
+       Orig_Actual : Node_Id;
+ 
+    --  Start of processing for Check_Procedure_Call_Argument_Levels
+ 
+    begin
+       if Nkind (N) not in N_Procedure_Call_Statement then
+          return;
+       end if;
+ 
+       --  Handle the access-to-subprogram case
+ 
+       if Ekind (Etype (Name (N))) = E_Subprogram_Type then
+          Id := Etype (Name (N));
+       else
+          Id := Get_Enclosing_Ghost_Entity (Name (N));
+       end if;
+ 
+       --  Check for context if we are able to derive the called subprogram and
+       --  we are not dealing with an expanded construct.
+ 
+       if Present (Id)
+         and then Comes_From_Source (N)
+         and then Ghost_Config.Ghost_Mode /= None
+       then
+          Orig_Actual := First_Actual (N);
+          Formal := First_Formal (Id);
+ 
+          while Present (Orig_Actual) loop
+             --  Similarly to Mark_And_Set_Ghost_Procedure_Call we need to
+             --  analyze the call argument first to get its level for this
+             --  analysis.
+ 
+             Actual :=
+               (if Analyzed (Orig_Actual)
+                then Orig_Actual
+                else New_Copy_Tree (Orig_Actual));
+             if not Analyzed (Actual) then
+                Preanalyze_Without_Errors (Actual);
+             end if;
+ 
+             if Ekind (Formal) in E_Out_Parameter | E_In_Out_Parameter then
+                Actual_Id := Get_Enclosing_Ghost_Entity (Actual);
+                if Present (Actual_Id) then
+                   Check_Argument_Levels (Actual_Id, Orig_Actual);
+                end if;
+             end if;
+ 
+             Next_Formal (Formal);
+             Next_Actual (Orig_Actual);
+          end loop;
+       end if;
+    end Check_Procedure_Call_Argument_Levels;
+ 
     ---------------------------------------
     -- Mark_And_Set_Ghost_Procedure_Call --
     ---------------------------------------
diff -Nrcpad gcc-16-20251116/gcc/ada/ghost.ads gcc-16-20251123/gcc/ada/ghost.ads
*** gcc-16-20251116/gcc/ada/ghost.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/ghost.ads	Sun Nov 23 22:32:07 2025
*************** package Ghost is
*** 221,226 ****
--- 221,231 ----
     --  Install the Ghost mode of the instantiation. This routine starts a Ghost
     --  region and must be used with routine Restore_Ghost_Region.
  
+    procedure Check_Procedure_Call_Argument_Levels (N : Node_Id);
+    --  Check that the variable being modified by a call argument inside a ghost
+    --  region is assertion-level-dependent on the ghost region (SPARK RM
+    --  6.9(18)).
+ 
     procedure Mark_And_Set_Ghost_Procedure_Call (N : Node_Id);
     --  Mark procedure call N as Ghost when:
     --
diff -Nrcpad gcc-16-20251116/gcc/ada/gnat_rm.texi gcc-16-20251123/gcc/ada/gnat_rm.texi
*** gcc-16-20251116/gcc/ada/gnat_rm.texi	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/gnat_rm.texi	Sun Nov 23 22:32:07 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT Reference Manual , Nov 13, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT Reference Manual , Nov 18, 2025
  
  AdaCore
  
*************** historical compatibility purposes.
*** 33625,33632 ****
  
  PolyORB is a deprecated product. It will be baselined with the GNAT Pro
  release 28. After this release, there will be no new versions of this
! product. Contact your sales representative or send a message to
! @email{sales@@adacore.com} to get recommendations for replacements.
  
  @node pragma No_Run_Time,pragma Ravenscar,PolyORB,Obsolescent Features
  @anchor{gnat_rm/obsolescent_features id3}@anchor{487}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{488}
--- 33625,33631 ----
  
  PolyORB is a deprecated product. It will be baselined with the GNAT Pro
  release 28. After this release, there will be no new versions of this
! product. Contact AdaCore support to get recommendations for replacements.
  
  @node pragma No_Run_Time,pragma Ravenscar,PolyORB,Obsolescent Features
  @anchor{gnat_rm/obsolescent_features id3}@anchor{487}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{488}
diff -Nrcpad gcc-16-20251116/gcc/ada/gnat_ugn.texi gcc-16-20251123/gcc/ada/gnat_ugn.texi
*** gcc-16-20251116/gcc/ada/gnat_ugn.texi	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/gnat_ugn.texi	Sun Nov 23 22:32:07 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Nov 13, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Nov 18, 2025
  
  AdaCore
  
*************** to permit their use in free software.
*** 30333,30340 ****
  
  @printindex ge
  
- @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
  @anchor{d2}@w{                              }
  
  @c %**end of body
  @bye
--- 30333,30340 ----
  
  @printindex ge
  
  @anchor{d2}@w{                              }
+ @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
  
  @c %**end of body
  @bye
diff -Nrcpad gcc-16-20251116/gcc/ada/lib-xref.adb gcc-16-20251123/gcc/ada/lib-xref.adb
*** gcc-16-20251116/gcc/ada/lib-xref.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/lib-xref.adb	Sun Nov 23 22:32:07 2025
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Unchecked_Deallocation;
  with Atree;          use Atree;
  with Csets;          use Csets;
  with Einfo;          use Einfo;
*************** package body Lib.Xref is
*** 1827,1833 ****
           Nrefs : constant Nat := Xrefs.Last;
           --  Number of references in table
  
!          Rnums : array (0 .. Nrefs) of Nat;
           --  This array contains numbers of references in the Xrefs table.
           --  This list is sorted in output order. The extra 0'th entry is
           --  convenient for the call to sort. When we sort the table, we
--- 1828,1843 ----
           Nrefs : constant Nat := Xrefs.Last;
           --  Number of references in table
  
!          type Refs_Numbers is array (0 .. Nrefs) of Nat;
!          type Refs_Numbers_Ptr is access Refs_Numbers;
!          --  Since the number of references can be large, we need to allocate
!          --  the sorting array on the heap.
! 
!          procedure Free is
!            new Ada.Unchecked_Deallocation (Refs_Numbers, Refs_Numbers_Ptr);
!          --  Release memory allocated for the sorting array
! 
!          Rnums : Refs_Numbers_Ptr := new Refs_Numbers;
           --  This array contains numbers of references in the Xrefs table.
           --  This list is sorted in output order. The extra 0'th entry is
           --  convenient for the call to sort. When we sort the table, we
*************** package body Lib.Xref is
*** 2709,2714 ****
--- 2719,2726 ----
              null;
           end loop;
  
+          Free (Rnums);
+ 
           Write_Info_EOL;
        end Output_Refs;
     end Output_References;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/a-sytaco.adb gcc-16-20251123/gcc/ada/libgnarl/a-sytaco.adb
*** gcc-16-20251116/gcc/ada/libgnarl/a-sytaco.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/a-sytaco.adb	Sun Nov 23 22:32:07 2025
***************
*** 31,42 ****
  
  with Ada.Exceptions;
  
! with System.Tasking;
! with System.Task_Primitives.Operations;
  
  package body Ada.Synchronous_Task_Control with
    SPARK_Mode => Off
  is
  
     ----------------
     -- Initialize --
--- 31,45 ----
  
  with Ada.Exceptions;
  
! with System.Soft_Links;
! with System.Task_Primitives.Operations; use System.Task_Primitives.Operations;
  
  package body Ada.Synchronous_Task_Control with
    SPARK_Mode => Off
  is
+    use type System.Tasking.Task_Id;
+ 
+    package SSL renames System.Soft_Links;
  
     ----------------
     -- Initialize --
*************** is
*** 44,50 ****
  
     procedure Initialize (S : in out Suspension_Object) is
     begin
!       System.Task_Primitives.Operations.Initialize (S.SO);
     end Initialize;
  
     --------------
--- 47,55 ----
  
     procedure Initialize (S : in out Suspension_Object) is
     begin
!       Initialize_Lock (S.L'Access, PO_Level);
! 
!       S.State := False;
     end Initialize;
  
     --------------
*************** is
*** 53,59 ****
  
     procedure Finalize (S : in out Suspension_Object) is
     begin
!       System.Task_Primitives.Operations.Finalize (S.SO);
     end Finalize;
  
     -------------------
--- 58,64 ----
  
     procedure Finalize (S : in out Suspension_Object) is
     begin
!       Finalize_Lock (S.L'Access);
     end Finalize;
  
     -------------------
*************** is
*** 62,68 ****
  
     function Current_State (S : Suspension_Object) return Boolean is
     begin
!       return System.Task_Primitives.Operations.Current_State (S.SO);
     end Current_State;
  
     ---------------
--- 67,73 ----
  
     function Current_State (S : Suspension_Object) return Boolean is
     begin
!       return S.State;
     end Current_State;
  
     ---------------
*************** is
*** 71,77 ****
  
     procedure Set_False (S : in out Suspension_Object) is
     begin
!       System.Task_Primitives.Operations.Set_False (S.SO);
     end Set_False;
  
     --------------
--- 76,88 ----
  
     procedure Set_False (S : in out Suspension_Object) is
     begin
!       SSL.Abort_Defer.all;
!       Write_Lock (S.L'Access);
! 
!       S.State := False;
! 
!       Unlock (S.L'Access);
!       SSL.Abort_Undefer.all;
     end Set_False;
  
     --------------
*************** is
*** 79,86 ****
     --------------
  
     procedure Set_True (S : in out Suspension_Object) is
     begin
!       System.Task_Primitives.Operations.Set_True (S.SO);
     end Set_True;
  
     ------------------------
--- 90,125 ----
     --------------
  
     procedure Set_True (S : in out Suspension_Object) is
+       Suspended_Task : System.Tasking.Task_Id := null;
     begin
!       if Is_Task_Context then
!          SSL.Abort_Defer.all;
!       end if;
! 
!       Write_Lock (S.L'Access);
! 
!       if S.Suspended_Task /= null then
!          --  We copy the suspended task's ID to a local object. We'll wake the
!          --  task up right after we unlock the suspension object.
!          Suspended_Task := S.Suspended_Task;
!          S.Suspended_Task := null;
!       else
!          S.State := True;
!       end if;
! 
!       Unlock (S.L'Access);
! 
!       if Suspended_Task /= null then
!          Write_Lock (Suspended_Task);
! 
!          Wakeup (Suspended_Task, System.Tasking.Runnable);
! 
!          Unlock (Suspended_Task);
!       end if;
! 
!       if Is_Task_Context then
!          SSL.Abort_Undefer.all;
!       end if;
     end Set_True;
  
     ------------------------
*************** is
*** 88,93 ****
--- 127,133 ----
     ------------------------
  
     procedure Suspend_Until_True (S : in out Suspension_Object) is
+       Self_ID : constant System.Tasking.Task_Id := Self;
     begin
        --  This is a potentially blocking (see ARM D.10, par. 10), so that
        --  if pragma Detect_Blocking is active then Program_Error must be
*************** is
*** 100,106 ****
             (Program_Error'Identity, "potentially blocking operation");
        end if;
  
!       System.Task_Primitives.Operations.Suspend_Until_True (S.SO);
     end Suspend_Until_True;
  
  end Ada.Synchronous_Task_Control;
--- 140,211 ----
             (Program_Error'Identity, "potentially blocking operation");
        end if;
  
!       SSL.Abort_Defer.all;
!       Write_Lock (S.L'Access);
! 
!       if S.Suspended_Task /= null then
!          Unlock (S.L'Access);
!          SSL.Abort_Undefer.all;
! 
!          raise Program_Error;
!       else
!          if S.State then
!             S.State := False;
! 
!             Unlock (S.L'Access);
!          else
!             Write_Lock (Self_ID);
! 
!             --  We treat starting to block in Suspend_Until_True as an abort
!             --  completion point, even if the language does not require it.
!             if Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level then
!                Unlock (Self_ID);
!                Unlock (S.L'Access);
!                SSL.Abort_Undefer.all;
!                return;
!             end if;
! 
!             S.Suspended_Task := Self_ID;
! 
!             Unlock (S.L'Access);
! 
!             Self_ID.Common.State := System.Tasking.Suspension_Object_Sleep;
! 
!             --  We sleep until at least one of the following propositions
!             --  becomes true:
!             --
!             --  1. We have been unsuspended by some other task calling
!             --  Set_True.
!             --  2. We have received an abort.
!             loop
!                Sleep (Self_ID, System.Tasking.Suspension_Object_Sleep);
! 
!                Write_Lock (S.L'Access);
! 
!                --  If S.Suspended_Task /= Self_ID, we've been unsuspended by a
!                --  call to Set_True. S.Suspended_Task is not necessarily null
!                --  because some other task might have started waiting on the
!                --  suspension object.
!                if S.Suspended_Task /= Self_ID then
!                   exit;
! 
!                --  Otherwise if we have received an abort, we must free the
!                --  waiting slot on the suspension object.
!                elsif Self_ID.Pending_ATC_Level < Self_ID.ATC_Nesting_Level then
!                   S.Suspended_Task := null;
!                   exit;
!                end if;
! 
!                Unlock (S.L'Access);
!             end loop;
! 
!             Self_ID.Common.State := System.Tasking.Runnable;
!             Unlock (S.L'Access);
!             Unlock (Self_ID);
!          end if;
!          SSL.Abort_Undefer.all;
!       end if;
! 
     end Suspend_Until_True;
  
  end Ada.Synchronous_Task_Control;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/a-sytaco.ads gcc-16-20251123/gcc/ada/libgnarl/a-sytaco.ads
*** gcc-16-20251116/gcc/ada/libgnarl/a-sytaco.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/a-sytaco.ads	Sun Nov 23 22:32:07 2025
***************
*** 33,41 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.Task_Primitives;
  
- with Ada.Finalization;
  with Ada.Task_Identification;
  
  package Ada.Synchronous_Task_Control with
--- 33,41 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with System.OS_Locks;
! with System.Tasking;
  
  with Ada.Task_Identification;
  
  package Ada.Synchronous_Task_Control with
*************** private
*** 75,88 ****
     procedure Finalize (S : in out Suspension_Object);
     --  Finalization for Suspension_Object
  
!    type Suspension_Object is
!      new Ada.Finalization.Limited_Controlled with
!    record
!       SO : System.Task_Primitives.Suspension_Object;
!       --  Use low-level suspension objects so that the synchronization
!       --  functionality provided by this object can be achieved using
!       --  efficient operating system primitives.
!    end record;
  
     pragma Inline (Set_True);
     pragma Inline (Set_False);
--- 75,90 ----
     procedure Finalize (S : in out Suspension_Object);
     --  Finalization for Suspension_Object
  
!    type Suspension_Object is limited record
!       L              : aliased System.OS_Locks.RTS_Lock;
!       State          : Boolean with Atomic;
!       Suspended_Task : System.Tasking.Task_Id;
!    end record
!    with
!      Finalizable =>
!        (Initialize           => Initialize,
!         Finalize             => Finalize,
!         Relaxed_Finalization => False);
  
     pragma Inline (Set_True);
     pragma Inline (Set_False);
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taprop.ads gcc-16-20251123/gcc/ada/libgnarl/s-taprop.ads
*** gcc-16-20251116/gcc/ada/libgnarl/s-taprop.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taprop.ads	Sun Nov 23 22:32:07 2025
*************** package System.Task_Primitives.Operation
*** 473,510 ****
     --  The call to Stack_Guard has no effect if guard pages are not used on
     --  the target, or if guard pages are automatically provided by the system.
  
-    ------------------------
-    -- Suspension objects --
-    ------------------------
- 
-    --  These subprograms provide the functionality required for synchronizing
-    --  on a suspension object. Tasks can suspend execution and relinquish the
-    --  processors until the condition is signaled.
- 
-    function Current_State (S : Suspension_Object) return Boolean;
-    --  Return the state of the suspension object
- 
-    procedure Set_False (S : in out Suspension_Object);
-    --  Set the state of the suspension object to False
- 
-    procedure Set_True (S : in out Suspension_Object);
-    --  Set the state of the suspension object to True. If a task were
-    --  suspended on the protected object then this task is released (and
-    --  the state of the suspension object remains set to False).
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object);
-    --  If the state of the suspension object is True then the calling task
-    --  continues its execution, and the state is set to False. If the state
-    --  of the object is False then the task is suspended on the suspension
-    --  object until a Set_True operation is executed. Program_Error is raised
-    --  if another task is already waiting on that suspension object.
- 
-    procedure Initialize (S : in out Suspension_Object);
-    --  Initialize the suspension object
- 
-    procedure Finalize (S : in out Suspension_Object);
-    --  Finalize the suspension object
- 
     -----------------------------------------
     -- Runtime System Debugging Interfaces --
     -----------------------------------------
--- 473,478 ----
*************** package System.Task_Primitives.Operation
*** 562,565 ****
--- 530,543 ----
     --  Ada Task Control Block. Has no effect if the underlying operating system
     --  does not support this capability.
  
+    function Is_Task_Context return Boolean
+    with Inline;
+    --  This function returns False if all the following points hold:
+    --
+    --  1. Abort_Defer should not be called in an interrupt context on the
+    --     current operating system.
+    --  2. The current execution is in the context of an interrupt context.
+    --
+    --  Otherwise this function returns True.
+ 
  end System.Task_Primitives.Operations;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taprop__dummy.adb gcc-16-20251123/gcc/ada/libgnarl/s-taprop__dummy.adb
*** gcc-16-20251116/gcc/ada/libgnarl/s-taprop__dummy.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taprop__dummy.adb	Sun Nov 23 22:32:07 2025
*************** package body System.Task_Primitives.Oper
*** 110,124 ****
        return False;
     end Continue_Task;
  
-    -------------------
-    -- Current_State --
-    -------------------
- 
-    function Current_State (S : Suspension_Object) return Boolean is
-    begin
-       return False;
-    end Current_State;
- 
     ----------------------
     -- Environment_Task --
     ----------------------
--- 110,115 ----
*************** package body System.Task_Primitives.Oper
*** 161,175 ****
        null;
     end Exit_Task;
  
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Suspension_Object) is
-    begin
-       null;
-    end Finalize;
- 
     -------------------
     -- Finalize_Lock --
     -------------------
--- 152,157 ----
*************** package body System.Task_Primitives.Oper
*** 221,231 ****
        raise Program_Error with "tasking not implemented on this configuration";
     end Initialize;
  
-    procedure Initialize (S : in out Suspension_Object) is
-    begin
-       null;
-    end Initialize;
- 
     ---------------------
     -- Initialize_Lock --
     ---------------------
--- 203,208 ----
*************** package body System.Task_Primitives.Oper
*** 345,359 ****
        null;
     end Set_Ceiling;
  
-    ---------------
-    -- Set_False --
-    ---------------
- 
-    procedure Set_False (S : in out Suspension_Object) is
-    begin
-       null;
-    end Set_False;
- 
     ------------------
     -- Set_Priority --
     ------------------
--- 322,327 ----
*************** package body System.Task_Primitives.Oper
*** 376,390 ****
        null;
     end Set_Task_Affinity;
  
-    --------------
-    -- Set_True --
-    --------------
- 
-    procedure Set_True (S : in out Suspension_Object) is
-    begin
-       null;
-    end Set_True;
- 
     -----------
     -- Sleep --
     -----------
--- 344,349 ----
*************** package body System.Task_Primitives.Oper
*** 434,448 ****
        return False;
     end Stop_Task;
  
-    ------------------------
-    -- Suspend_Until_True --
-    ------------------------
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) is
-    begin
-       null;
-    end Suspend_Until_True;
- 
     -----------------
     -- Timed_Delay --
     -----------------
--- 393,398 ----
*************** package body System.Task_Primitives.Oper
*** 540,543 ****
--- 490,501 ----
        null;
     end Yield;
  
+    ---------------------
+    -- Is_Task_Context --
+    ---------------------
+ 
+    function Is_Task_Context return Boolean is
+    begin
+       return True;
+    end Is_Task_Context;
  end System.Task_Primitives.Operations;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taprop__linux.adb gcc-16-20251123/gcc/ada/libgnarl/s-taprop__linux.adb
*** gcc-16-20251116/gcc/ada/libgnarl/s-taprop__linux.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taprop__linux.adb	Sun Nov 23 22:32:07 2025
*************** with System.OS_Primitives;
*** 43,58 ****
  with System.Task_Info;
  with System.Tasking.Debug;
  
- with System.Soft_Links;
- --  We use System.Soft_Links instead of System.Tasking.Initialization
- --  because the later is a higher level package that we shouldn't depend on.
- --  For example when using the restricted run time, it is replaced by
- --  System.Tasking.Restricted.Stages.
- 
  package body System.Task_Primitives.Operations is
  
     package OSC renames System.OS_Constants;
-    package SSL renames System.Soft_Links;
  
     use Interfaces;
  
--- 43,51 ----
*************** package body System.Task_Primitives.Oper
*** 1105,1292 ****
     end Abort_Task;
  
     ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (S : in out Suspension_Object) is
-       Result : C.int;
- 
-    begin
-       --  Initialize internal state (always to False (RM D.10(6)))
- 
-       S.State := False;
-       S.Waiting := False;
- 
-       --  Initialize internal mutex
- 
-       Result := pthread_mutex_init (S.L'Access, null);
- 
-       pragma Assert (Result in 0 | ENOMEM);
- 
-       if Result = ENOMEM then
-          raise Storage_Error;
-       end if;
- 
-       --  Initialize internal condition variable
- 
-       Result := pthread_cond_init (S.CV'Access, null);
- 
-       pragma Assert (Result in 0 | ENOMEM);
- 
-       if Result /= 0 then
-          Result := pthread_mutex_destroy (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          if Result = ENOMEM then
-             raise Storage_Error;
-          end if;
-       end if;
-    end Initialize;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Suspension_Object) is
-       Result : C.int;
- 
-    begin
-       --  Destroy internal mutex
- 
-       Result := pthread_mutex_destroy (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  Destroy internal condition variable
- 
-       Result := pthread_cond_destroy (S.CV'Access);
-       pragma Assert (Result = 0);
-    end Finalize;
- 
-    -------------------
-    -- Current_State --
-    -------------------
- 
-    function Current_State (S : Suspension_Object) return Boolean is
-    begin
-       --  We do not want to use lock on this read operation. State is marked
-       --  as Atomic so that we ensure that the value retrieved is correct.
- 
-       return S.State;
-    end Current_State;
- 
-    ---------------
-    -- Set_False --
-    ---------------
- 
-    procedure Set_False (S : in out Suspension_Object) is
-       Result : C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       S.State := False;
- 
-       Result := pthread_mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_False;
- 
-    --------------
-    -- Set_True --
-    --------------
- 
-    procedure Set_True (S : in out Suspension_Object) is
-       Result : C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  If there is already a task waiting on this suspension object then
-       --  we resume it, leaving the state of the suspension object to False,
-       --  as it is specified in ARM D.10 par. 9. Otherwise, it just leaves
-       --  the state to True.
- 
-       if S.Waiting then
-          S.Waiting := False;
-          S.State := False;
- 
-          Result := pthread_cond_signal (S.CV'Access);
-          pragma Assert (Result = 0);
- 
-       else
-          S.State := True;
-       end if;
- 
-       Result := pthread_mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_True;
- 
-    ------------------------
-    -- Suspend_Until_True --
-    ------------------------
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) is
-       Result : C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       if S.Waiting then
- 
-          --  Program_Error must be raised upon calling Suspend_Until_True
-          --  if another task is already waiting on that suspension object
-          --  (RM D.10(10)).
- 
-          Result := pthread_mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
- 
-          raise Program_Error;
- 
-       else
-          --  Suspend the task if the state is False. Otherwise, the task
-          --  continues its execution, and the state of the suspension object
-          --  is set to False (ARM D.10 par. 9).
- 
-          if S.State then
-             S.State := False;
-          else
-             S.Waiting := True;
- 
-             loop
-                --  Loop in case pthread_cond_wait returns earlier than expected
-                --  (e.g. in case of EINTR caused by a signal). This should not
-                --  happen with the current Linux implementation of pthread, but
-                --  POSIX does not guarantee it so this may change in future.
- 
-                Result := pthread_cond_wait (S.CV'Access, S.L'Access);
-                pragma Assert (Result in 0 | EINTR);
- 
-                exit when not S.Waiting;
-             end loop;
-          end if;
- 
-          Result := pthread_mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
-       end if;
-    end Suspend_Until_True;
- 
-    ----------------
     -- Check_Exit --
     ----------------
  
--- 1098,1103 ----
*************** package body System.Task_Primitives.Oper
*** 1545,1548 ****
--- 1356,1367 ----
        end if;
     end Set_Task_Affinity;
  
+    ---------------------
+    -- Is_Task_Context --
+    ---------------------
+ 
+    function Is_Task_Context return Boolean is
+    begin
+       return True;
+    end Is_Task_Context;
  end System.Task_Primitives.Operations;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taprop__mingw.adb gcc-16-20251123/gcc/ada/libgnarl/s-taprop__mingw.adb
*** gcc-16-20251116/gcc/ada/libgnarl/s-taprop__mingw.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taprop__mingw.adb	Sun Nov 23 22:32:07 2025
*************** with System.Task_Info;
*** 45,60 ****
  with System.Tasking.Debug;
  with System.Win32.Ext;
  
- with System.Soft_Links;
- --  We use System.Soft_Links instead of System.Tasking.Initialization because
- --  the later is a higher level package that we shouldn't depend on. For
- --  example when using the restricted run time, it is replaced by
- --  System.Tasking.Restricted.Stages.
- 
  package body System.Task_Primitives.Operations is
- 
-    package SSL renames System.Soft_Links;
- 
     use Interfaces.C;
     use Interfaces.C.Strings;
  
--- 45,51 ----
*************** package body System.Task_Primitives.Oper
*** 1042,1204 ****
     end RT_Resolution;
  
     ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (S : in out Suspension_Object) is
-    begin
-       --  Initialize internal state. It is always initialized to False (ARM
-       --  D.10 par. 6).
- 
-       S.State := False;
-       S.Waiting := False;
- 
-       --  Initialize internal mutex
- 
-       InitializeCriticalSection (S.L'Access);
- 
-       --  Initialize internal condition variable
- 
-       S.CV := CreateEvent (null, Win32.TRUE, Win32.FALSE, Null_Ptr);
-       pragma Assert (S.CV /= 0);
-    end Initialize;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Suspension_Object) is
-       Result : BOOL;
- 
-    begin
-       --  Destroy internal mutex
- 
-       DeleteCriticalSection (S.L'Access);
- 
-       --  Destroy internal condition variable
- 
-       Result := CloseHandle (S.CV);
-       pragma Assert (Result = Win32.TRUE);
-    end Finalize;
- 
-    -------------------
-    -- Current_State --
-    -------------------
- 
-    function Current_State (S : Suspension_Object) return Boolean is
-    begin
-       --  We do not want to use lock on this read operation. State is marked
-       --  as Atomic so that we ensure that the value retrieved is correct.
- 
-       return S.State;
-    end Current_State;
- 
-    ---------------
-    -- Set_False --
-    ---------------
- 
-    procedure Set_False (S : in out Suspension_Object) is
-    begin
-       SSL.Abort_Defer.all;
- 
-       EnterCriticalSection (S.L'Access);
- 
-       S.State := False;
- 
-       LeaveCriticalSection (S.L'Access);
- 
-       SSL.Abort_Undefer.all;
-    end Set_False;
- 
-    --------------
-    -- Set_True --
-    --------------
- 
-    procedure Set_True (S : in out Suspension_Object) is
-       Result : BOOL;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       EnterCriticalSection (S.L'Access);
- 
-       --  If there is already a task waiting on this suspension object then
-       --  we resume it, leaving the state of the suspension object to False,
-       --  as it is specified in ARM D.10 par. 9. Otherwise, it just leaves
-       --  the state to True.
- 
-       if S.Waiting then
-          S.Waiting := False;
-          S.State := False;
- 
-          Result := SetEvent (S.CV);
-          pragma Assert (Result = Win32.TRUE);
- 
-       else
-          S.State := True;
-       end if;
- 
-       LeaveCriticalSection (S.L'Access);
- 
-       SSL.Abort_Undefer.all;
-    end Set_True;
- 
-    ------------------------
-    -- Suspend_Until_True --
-    ------------------------
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) is
-       Result      : DWORD;
-       Result_Bool : BOOL;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       EnterCriticalSection (S.L'Access);
- 
-       if S.Waiting then
- 
-          --  Program_Error must be raised upon calling Suspend_Until_True
-          --  if another task is already waiting on that suspension object
-          --  (ARM D.10 par. 10).
- 
-          LeaveCriticalSection (S.L'Access);
- 
-          SSL.Abort_Undefer.all;
- 
-          raise Program_Error;
- 
-       else
-          --  Suspend the task if the state is False. Otherwise, the task
-          --  continues its execution, and the state of the suspension object
-          --  is set to False (ARM D.10 par. 9).
- 
-          if S.State then
-             S.State := False;
- 
-             LeaveCriticalSection (S.L'Access);
- 
-             SSL.Abort_Undefer.all;
- 
-          else
-             S.Waiting := True;
- 
-             --  Must reset CV BEFORE L is unlocked
- 
-             Result_Bool := ResetEvent (S.CV);
-             pragma Assert (Result_Bool = Win32.TRUE);
- 
-             LeaveCriticalSection (S.L'Access);
- 
-             SSL.Abort_Undefer.all;
- 
-             Result := WaitForSingleObject (S.CV, Wait_Infinite);
-             pragma Assert (Result = 0);
-          end if;
-       end if;
-    end Suspend_Until_True;
- 
-    ----------------
     -- Check_Exit --
     ----------------
  
--- 1033,1038 ----
*************** package body System.Task_Primitives.Oper
*** 1358,1361 ****
--- 1192,1203 ----
        end if;
     end Set_Task_Affinity;
  
+    ---------------------
+    -- Is_Task_Context --
+    ---------------------
+ 
+    function Is_Task_Context return Boolean is
+    begin
+       return True;
+    end Is_Task_Context;
  end System.Task_Primitives.Operations;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taprop__posix.adb gcc-16-20251123/gcc/ada/libgnarl/s-taprop__posix.adb
*** gcc-16-20251116/gcc/ada/libgnarl/s-taprop__posix.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taprop__posix.adb	Sun Nov 23 22:32:07 2025
*************** with System.OS_Primitives;
*** 50,65 ****
  with System.Task_Info;
  with System.Tasking.Debug;
  
- with System.Soft_Links;
- --  We use System.Soft_Links instead of System.Tasking.Initialization
- --  because the later is a higher level package that we shouldn't depend on.
- --  For example when using the restricted run time, it is replaced by
- --  System.Tasking.Restricted.Stages.
- 
  package body System.Task_Primitives.Operations is
  
     package OSC renames System.OS_Constants;
-    package SSL renames System.Soft_Links;
  
     use Interfaces.C;
  
--- 50,58 ----
*************** package body System.Task_Primitives.Oper
*** 913,1135 ****
     end Abort_Task;
  
     ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (S : in out Suspension_Object) is
-       Mutex_Attr : aliased pthread_mutexattr_t;
-       Cond_Attr  : aliased pthread_condattr_t;
-       Result     : Interfaces.C.int;
- 
-    begin
-       --  Initialize internal state (always to False (RM D.10 (6)))
- 
-       S.State := False;
-       S.Waiting := False;
- 
-       --  Initialize internal mutex
- 
-       Result := pthread_mutexattr_init (Mutex_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result = ENOMEM then
-          raise Storage_Error;
-       end if;
- 
-       Result := pthread_mutex_init (S.L'Access, Mutex_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result = ENOMEM then
-          Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
-          pragma Assert (Result = 0);
- 
-          raise Storage_Error;
-       end if;
- 
-       Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
-       pragma Assert (Result = 0);
- 
-       --  Initialize internal condition variable
- 
-       Result := pthread_condattr_init (Cond_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result /= 0 then
-          Result := pthread_mutex_destroy (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          --  Storage_Error is propagated as intended if the allocation of the
-          --  underlying OS entities fails.
- 
-          raise Storage_Error;
- 
-       else
-          Result := GNAT_pthread_condattr_setup (Cond_Attr'Access);
-          pragma Assert (Result = 0);
-       end if;
- 
-       Result := pthread_cond_init (S.CV'Access, Cond_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result /= 0 then
-          Result := pthread_mutex_destroy (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          Result := pthread_condattr_destroy (Cond_Attr'Access);
-          pragma Assert (Result = 0);
- 
-          --  Storage_Error is propagated as intended if the allocation of the
-          --  underlying OS entities fails.
- 
-          raise Storage_Error;
-       end if;
- 
-       Result := pthread_condattr_destroy (Cond_Attr'Access);
-       pragma Assert (Result = 0);
-    end Initialize;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       --  Destroy internal mutex
- 
-       Result := pthread_mutex_destroy (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  Destroy internal condition variable
- 
-       Result := pthread_cond_destroy (S.CV'Access);
-       pragma Assert (Result = 0);
-    end Finalize;
- 
-    -------------------
-    -- Current_State --
-    -------------------
- 
-    function Current_State (S : Suspension_Object) return Boolean is
-    begin
-       --  We do not want to use lock on this read operation. State is marked
-       --  as Atomic so that we ensure that the value retrieved is correct.
- 
-       return S.State;
-    end Current_State;
- 
-    ---------------
-    -- Set_False --
-    ---------------
- 
-    procedure Set_False (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       S.State := False;
- 
-       Result := pthread_mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_False;
- 
-    --------------
-    -- Set_True --
-    --------------
- 
-    procedure Set_True (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  If there is already a task waiting on this suspension object then
-       --  we resume it, leaving the state of the suspension object to False,
-       --  as it is specified in (RM D.10(9)). Otherwise, it just leaves
-       --  the state to True.
- 
-       if S.Waiting then
-          S.Waiting := False;
-          S.State := False;
- 
-          Result := pthread_cond_signal (S.CV'Access);
-          pragma Assert (Result = 0);
- 
-       else
-          S.State := True;
-       end if;
- 
-       Result := pthread_mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_True;
- 
-    ------------------------
-    -- Suspend_Until_True --
-    ------------------------
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       if S.Waiting then
- 
-          --  Program_Error must be raised upon calling Suspend_Until_True
-          --  if another task is already waiting on that suspension object
-          --  (RM D.10(10)).
- 
-          Result := pthread_mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
- 
-          raise Program_Error;
- 
-       else
-          --  Suspend the task if the state is False. Otherwise, the task
-          --  continues its execution, and the state of the suspension object
-          --  is set to False (ARM D.10 par. 9).
- 
-          if S.State then
-             S.State := False;
-          else
-             S.Waiting := True;
- 
-             loop
-                --  Loop in case pthread_cond_wait returns earlier than expected
-                --  (e.g. in case of EINTR caused by a signal).
- 
-                Result := pthread_cond_wait (S.CV'Access, S.L'Access);
-                pragma Assert (Result = 0 or else Result = EINTR);
- 
-                exit when not S.Waiting;
-             end loop;
-          end if;
- 
-          Result := pthread_mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
-       end if;
-    end Suspend_Until_True;
- 
-    ----------------
     -- Check_Exit --
     ----------------
  
--- 906,911 ----
*************** package body System.Task_Primitives.Oper
*** 1327,1330 ****
--- 1103,1114 ----
        null;
     end Set_Task_Affinity;
  
+    ---------------------
+    -- Is_Task_Context --
+    ---------------------
+ 
+    function Is_Task_Context return Boolean is
+    begin
+       return True;
+    end Is_Task_Context;
  end System.Task_Primitives.Operations;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taprop__qnx.adb gcc-16-20251123/gcc/ada/libgnarl/s-taprop__qnx.adb
*** gcc-16-20251116/gcc/ada/libgnarl/s-taprop__qnx.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taprop__qnx.adb	Sun Nov 23 22:32:07 2025
*************** with System.OS_Primitives;
*** 51,66 ****
  with System.Task_Info;
  with System.Tasking.Debug;
  
- with System.Soft_Links;
- --  We use System.Soft_Links instead of System.Tasking.Initialization
- --  because the later is a higher level package that we shouldn't depend on.
- --  For example when using the restricted run time, it is replaced by
- --  System.Tasking.Restricted.Stages.
- 
  package body System.Task_Primitives.Operations is
  
     package OSC renames System.OS_Constants;
-    package SSL renames System.Soft_Links;
  
     use Interfaces.C;
  
--- 51,59 ----
*************** package body System.Task_Primitives.Oper
*** 933,1155 ****
     end Abort_Task;
  
     ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (S : in out Suspension_Object) is
-       Mutex_Attr : aliased pthread_mutexattr_t;
-       Cond_Attr  : aliased pthread_condattr_t;
-       Result     : Interfaces.C.int;
- 
-    begin
-       --  Initialize internal state (always to False (RM D.10 (6)))
- 
-       S.State := False;
-       S.Waiting := False;
- 
-       --  Initialize internal mutex
- 
-       Result := pthread_mutexattr_init (Mutex_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result = ENOMEM then
-          raise Storage_Error;
-       end if;
- 
-       Result := pthread_mutex_init (S.L'Access, Mutex_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result = ENOMEM then
-          Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
-          pragma Assert (Result = 0);
- 
-          raise Storage_Error;
-       end if;
- 
-       Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
-       pragma Assert (Result = 0);
- 
-       --  Initialize internal condition variable
- 
-       Result := pthread_condattr_init (Cond_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result /= 0 then
-          Result := pthread_mutex_destroy (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          --  Storage_Error is propagated as intended if the allocation of the
-          --  underlying OS entities fails.
- 
-          raise Storage_Error;
- 
-       else
-          Result := GNAT_pthread_condattr_setup (Cond_Attr'Access);
-          pragma Assert (Result = 0);
-       end if;
- 
-       Result := pthread_cond_init (S.CV'Access, Cond_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result /= 0 then
-          Result := pthread_mutex_destroy (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          Result := pthread_condattr_destroy (Cond_Attr'Access);
-          pragma Assert (Result = 0);
- 
-          --  Storage_Error is propagated as intended if the allocation of the
-          --  underlying OS entities fails.
- 
-          raise Storage_Error;
-       end if;
- 
-       Result := pthread_condattr_destroy (Cond_Attr'Access);
-       pragma Assert (Result = 0);
-    end Initialize;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       --  Destroy internal mutex
- 
-       Result := pthread_mutex_destroy (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  Destroy internal condition variable
- 
-       Result := pthread_cond_destroy (S.CV'Access);
-       pragma Assert (Result = 0);
-    end Finalize;
- 
-    -------------------
-    -- Current_State --
-    -------------------
- 
-    function Current_State (S : Suspension_Object) return Boolean is
-    begin
-       --  We do not want to use lock on this read operation. State is marked
-       --  as Atomic so that we ensure that the value retrieved is correct.
- 
-       return S.State;
-    end Current_State;
- 
-    ---------------
-    -- Set_False --
-    ---------------
- 
-    procedure Set_False (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       S.State := False;
- 
-       Result := pthread_mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_False;
- 
-    --------------
-    -- Set_True --
-    --------------
- 
-    procedure Set_True (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  If there is already a task waiting on this suspension object then
-       --  we resume it, leaving the state of the suspension object to False,
-       --  as it is specified in (RM D.10(9)). Otherwise, it just leaves
-       --  the state to True.
- 
-       if S.Waiting then
-          S.Waiting := False;
-          S.State := False;
- 
-          Result := pthread_cond_signal (S.CV'Access);
-          pragma Assert (Result = 0);
- 
-       else
-          S.State := True;
-       end if;
- 
-       Result := pthread_mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_True;
- 
-    ------------------------
-    -- Suspend_Until_True --
-    ------------------------
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       if S.Waiting then
- 
-          --  Program_Error must be raised upon calling Suspend_Until_True
-          --  if another task is already waiting on that suspension object
-          --  (RM D.10(10)).
- 
-          Result := pthread_mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
- 
-          raise Program_Error;
- 
-       else
-          --  Suspend the task if the state is False. Otherwise, the task
-          --  continues its execution, and the state of the suspension object
-          --  is set to False (ARM D.10 par. 9).
- 
-          if S.State then
-             S.State := False;
-          else
-             S.Waiting := True;
- 
-             loop
-                --  Loop in case pthread_cond_wait returns earlier than expected
-                --  (e.g. in case of EINTR caused by a signal).
- 
-                Result := pthread_cond_wait (S.CV'Access, S.L'Access);
-                pragma Assert (Result = 0 or else Result = EINTR);
- 
-                exit when not S.Waiting;
-             end loop;
-          end if;
- 
-          Result := pthread_mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
-       end if;
-    end Suspend_Until_True;
- 
-    ----------------
     -- Check_Exit --
     ----------------
  
--- 926,931 ----
*************** package body System.Task_Primitives.Oper
*** 1437,1440 ****
--- 1213,1220 ----
        pragma Assert (Result = 0);
     end Enable_Signals;
  
+    function Is_Task_Context return Boolean is
+    begin
+       return True;
+    end Is_Task_Context;
  end System.Task_Primitives.Operations;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taprop__rtems.adb gcc-16-20251123/gcc/ada/libgnarl/s-taprop__rtems.adb
*** gcc-16-20251116/gcc/ada/libgnarl/s-taprop__rtems.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taprop__rtems.adb	Sun Nov 23 22:32:07 2025
*************** with System.OS_Primitives;
*** 44,59 ****
  with System.Task_Info;
  with System.Tasking.Debug;
  
- with System.Soft_Links;
- --  We use System.Soft_Links instead of System.Tasking.Initialization
- --  because the later is a higher level package that we shouldn't depend on.
- --  For example when using the restricted run time, it is replaced by
- --  System.Tasking.Restricted.Stages.
- 
  package body System.Task_Primitives.Operations is
  
     package OSC renames System.OS_Constants;
-    package SSL renames System.Soft_Links;
  
     use Interfaces.C;
  
--- 44,52 ----
*************** package body System.Task_Primitives.Oper
*** 923,1145 ****
     end Abort_Task;
  
     ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (S : in out Suspension_Object) is
-       Mutex_Attr : aliased pthread_mutexattr_t;
-       Cond_Attr  : aliased pthread_condattr_t;
-       Result     : Interfaces.C.int;
- 
-    begin
-       --  Initialize internal state (always to False (RM D.10 (6)))
- 
-       S.State := False;
-       S.Waiting := False;
- 
-       --  Initialize internal mutex
- 
-       Result := pthread_mutexattr_init (Mutex_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result = ENOMEM then
-          raise Storage_Error;
-       end if;
- 
-       Result := pthread_mutex_init (S.L'Access, Mutex_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result = ENOMEM then
-          Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
-          pragma Assert (Result = 0);
- 
-          raise Storage_Error;
-       end if;
- 
-       Result := pthread_mutexattr_destroy (Mutex_Attr'Access);
-       pragma Assert (Result = 0);
- 
-       --  Initialize internal condition variable
- 
-       Result := pthread_condattr_init (Cond_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result /= 0 then
-          Result := pthread_mutex_destroy (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          --  Storage_Error is propagated as intended if the allocation of the
-          --  underlying OS entities fails.
- 
-          raise Storage_Error;
- 
-       else
-          Result := GNAT_pthread_condattr_setup (Cond_Attr'Access);
-          pragma Assert (Result = 0);
-       end if;
- 
-       Result := pthread_cond_init (S.CV'Access, Cond_Attr'Access);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result /= 0 then
-          Result := pthread_mutex_destroy (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          Result := pthread_condattr_destroy (Cond_Attr'Access);
-          pragma Assert (Result = 0);
- 
-          --  Storage_Error is propagated as intended if the allocation of the
-          --  underlying OS entities fails.
- 
-          raise Storage_Error;
-       end if;
- 
-       Result := pthread_condattr_destroy (Cond_Attr'Access);
-       pragma Assert (Result = 0);
-    end Initialize;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       --  Destroy internal mutex
- 
-       Result := pthread_mutex_destroy (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  Destroy internal condition variable
- 
-       Result := pthread_cond_destroy (S.CV'Access);
-       pragma Assert (Result = 0);
-    end Finalize;
- 
-    -------------------
-    -- Current_State --
-    -------------------
- 
-    function Current_State (S : Suspension_Object) return Boolean is
-    begin
-       --  We do not want to use lock on this read operation. State is marked
-       --  as Atomic so that we ensure that the value retrieved is correct.
- 
-       return S.State;
-    end Current_State;
- 
-    ---------------
-    -- Set_False --
-    ---------------
- 
-    procedure Set_False (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       S.State := False;
- 
-       Result := pthread_mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_False;
- 
-    --------------
-    -- Set_True --
-    --------------
- 
-    procedure Set_True (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  If there is already a task waiting on this suspension object then
-       --  we resume it, leaving the state of the suspension object to False,
-       --  as it is specified in (RM D.10(9)). Otherwise, it just leaves
-       --  the state to True.
- 
-       if S.Waiting then
-          S.Waiting := False;
-          S.State := False;
- 
-          Result := pthread_cond_signal (S.CV'Access);
-          pragma Assert (Result = 0);
- 
-       else
-          S.State := True;
-       end if;
- 
-       Result := pthread_mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_True;
- 
-    ------------------------
-    -- Suspend_Until_True --
-    ------------------------
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := pthread_mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       if S.Waiting then
- 
-          --  Program_Error must be raised upon calling Suspend_Until_True
-          --  if another task is already waiting on that suspension object
-          --  (RM D.10(10)).
- 
-          Result := pthread_mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
- 
-          raise Program_Error;
- 
-       else
-          --  Suspend the task if the state is False. Otherwise, the task
-          --  continues its execution, and the state of the suspension object
-          --  is set to False (ARM D.10 par. 9).
- 
-          if S.State then
-             S.State := False;
-          else
-             S.Waiting := True;
- 
-             loop
-                --  Loop in case pthread_cond_wait returns earlier than expected
-                --  (e.g. in case of EINTR caused by a signal).
- 
-                Result := pthread_cond_wait (S.CV'Access, S.L'Access);
-                pragma Assert (Result = 0 or else Result = EINTR);
- 
-                exit when not S.Waiting;
-             end loop;
-          end if;
- 
-          Result := pthread_mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
-       end if;
-    end Suspend_Until_True;
- 
-    ----------------
     -- Check_Exit --
     ----------------
  
--- 916,921 ----
*************** package body System.Task_Primitives.Oper
*** 1325,1328 ****
--- 1101,1112 ----
        null;
     end Set_Task_Affinity;
  
+    ---------------------
+    -- Is_Task_Context --
+    ---------------------
+ 
+    function Is_Task_Context return Boolean is
+    begin
+       return True;
+    end Is_Task_Context;
  end System.Task_Primitives.Operations;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taprop__solaris.adb gcc-16-20251123/gcc/ada/libgnarl/s-taprop__solaris.adb
*** gcc-16-20251116/gcc/ada/libgnarl/s-taprop__solaris.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taprop__solaris.adb	Sun Nov 23 22:32:07 2025
*************** pragma Warnings (Off);
*** 48,63 ****
  with System.OS_Lib;
  pragma Warnings (On);
  
- with System.Soft_Links;
- --  We use System.Soft_Links instead of System.Tasking.Initialization
- --  because the later is a higher level package that we shouldn't depend on.
- --  For example when using the restricted run time, it is replaced by
- --  System.Tasking.Restricted.Stages.
- 
  package body System.Task_Primitives.Operations is
  
     package OSC renames System.OS_Constants;
-    package SSL renames System.Soft_Links;
  
     use Interfaces.C;
  
--- 48,56 ----
*************** package body System.Task_Primitives.Oper
*** 1580,1763 ****
     end Check_Finalize_Lock;
  
     ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       --  Initialize internal state (always to zero (RM D.10(6)))
- 
-       S.State := False;
-       S.Waiting := False;
- 
-       --  Initialize internal mutex
- 
-       Result := mutex_init (S.L'Access, USYNC_THREAD, System.Null_Address);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result = ENOMEM then
-          raise Storage_Error with "Failed to allocate a lock";
-       end if;
- 
-       --  Initialize internal condition variable
- 
-       Result := cond_init (S.CV'Access, USYNC_THREAD, 0);
-       pragma Assert (Result = 0 or else Result = ENOMEM);
- 
-       if Result /= 0 then
-          Result := mutex_destroy (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          if Result = ENOMEM then
-             raise Storage_Error;
-          end if;
-       end if;
-    end Initialize;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Suspension_Object) is
-       Result  : Interfaces.C.int;
- 
-    begin
-       --  Destroy internal mutex
- 
-       Result := mutex_destroy (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  Destroy internal condition variable
- 
-       Result := cond_destroy (S.CV'Access);
-       pragma Assert (Result = 0);
-    end Finalize;
- 
-    -------------------
-    -- Current_State --
-    -------------------
- 
-    function Current_State (S : Suspension_Object) return Boolean is
-    begin
-       --  We do not want to use lock on this read operation. State is marked
-       --  as Atomic so that we ensure that the value retrieved is correct.
- 
-       return S.State;
-    end Current_State;
- 
-    ---------------
-    -- Set_False --
-    ---------------
- 
-    procedure Set_False (S : in out Suspension_Object) is
-       Result  : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       S.State := False;
- 
-       Result := mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_False;
- 
-    --------------
-    -- Set_True --
-    --------------
- 
-    procedure Set_True (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       --  If there is already a task waiting on this suspension object then
-       --  we resume it, leaving the state of the suspension object to False,
-       --  as it is specified in ARM D.10 par. 9. Otherwise, it just leaves
-       --  the state to True.
- 
-       if S.Waiting then
-          S.Waiting := False;
-          S.State := False;
- 
-          Result := cond_signal (S.CV'Access);
-          pragma Assert (Result = 0);
- 
-       else
-          S.State := True;
-       end if;
- 
-       Result := mutex_unlock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       SSL.Abort_Undefer.all;
-    end Set_True;
- 
-    ------------------------
-    -- Suspend_Until_True --
-    ------------------------
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) is
-       Result : Interfaces.C.int;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := mutex_lock (S.L'Access);
-       pragma Assert (Result = 0);
- 
-       if S.Waiting then
- 
-          --  Program_Error must be raised upon calling Suspend_Until_True
-          --  if another task is already waiting on that suspension object
-          --  (RM D.10(10)).
- 
-          Result := mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
- 
-          raise Program_Error;
- 
-       else
-          --  Suspend the task if the state is False. Otherwise, the task
-          --  continues its execution, and the state of the suspension object
-          --  is set to False (ARM D.10 par. 9).
- 
-          if S.State then
-             S.State := False;
-          else
-             S.Waiting := True;
- 
-             loop
-                --  Loop in case pthread_cond_wait returns earlier than expected
-                --  (e.g. in case of EINTR caused by a signal).
- 
-                Result := cond_wait (S.CV'Access, S.L'Access);
-                pragma Assert (Result = 0 or else Result = EINTR);
- 
-                exit when not S.Waiting;
-             end loop;
-          end if;
- 
-          Result := mutex_unlock (S.L'Access);
-          pragma Assert (Result = 0);
- 
-          SSL.Abort_Undefer.all;
-       end if;
-    end Suspend_Until_True;
- 
-    ----------------
     -- Check_Exit --
     ----------------
  
--- 1573,1578 ----
*************** package body System.Task_Primitives.Oper
*** 1997,2000 ****
--- 1812,1823 ----
        end if;
     end Set_Task_Affinity;
  
+    ---------------------
+    -- Is_Task_Context --
+    ---------------------
+ 
+    function Is_Task_Context return Boolean is
+    begin
+       return True;
+    end Is_Task_Context;
  end System.Task_Primitives.Operations;
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taprop__vxworks.adb gcc-16-20251123/gcc/ada/libgnarl/s-taprop__vxworks.adb
*** gcc-16-20251116/gcc/ada/libgnarl/s-taprop__vxworks.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taprop__vxworks.adb	Sun Nov 23 22:32:07 2025
*************** with System.Multiprocessors;
*** 45,63 ****
  with System.OS_Constants;
  with System.Tasking.Debug;
  
- with System.Soft_Links;
- --  We use System.Soft_Links instead of System.Tasking.Initialization
- --  because the later is a higher level package that we shouldn't depend
- --  on. For example when using the restricted run time, it is replaced by
- --  System.Tasking.Restricted.Stages.
- 
  with System.Task_Info;
  with System.VxWorks.Ext;
  
  package body System.Task_Primitives.Operations is
  
     package OSC renames System.OS_Constants;
-    package SSL renames System.Soft_Links;
  
     use System.OS_Interface;
     use System.OS_Locks;
--- 45,56 ----
*************** package body System.Task_Primitives.Oper
*** 174,183 ****
     procedure Install_Signal_Handlers;
     --  Install the default signal handlers for the current task
  
-    function Is_Task_Context return Boolean;
-    --  This function returns True if the current execution is in the context of
-    --  a task, and False if it is an interrupt context.
- 
     type Set_Stack_Limit_Proc_Acc is access procedure;
     pragma Convention (C, Set_Stack_Limit_Proc_Acc);
  
--- 167,172 ----
*************** package body System.Task_Primitives.Oper
*** 988,1171 ****
     end Abort_Task;
  
     ----------------
-    -- Initialize --
-    ----------------
- 
-    procedure Initialize (S : in out Suspension_Object) is
-    begin
-       --  Initialize internal state (always to False (RM D.10(6)))
- 
-       S.State := False;
-       S.Waiting := False;
- 
-       --  Initialize internal mutex
- 
-       --  Use simpler binary semaphore instead of VxWorks mutual exclusion
-       --  semaphore, because we don't need the fancier semantics and their
-       --  overhead.
- 
-       S.L := semBCreate (SEM_Q_FIFO, SEM_FULL);
- 
-       --  Initialize internal condition variable
- 
-       S.CV := semBCreate (SEM_Q_FIFO, SEM_EMPTY);
-    end Initialize;
- 
-    --------------
-    -- Finalize --
-    --------------
- 
-    procedure Finalize (S : in out Suspension_Object) is
-       pragma Unmodified (S);
-       --  S may be modified on other targets, but not on VxWorks
- 
-       Result : STATUS;
- 
-    begin
-       --  Destroy internal mutex
- 
-       Result := semDelete (S.L);
-       pragma Assert (Result = OK);
- 
-       --  Destroy internal condition variable
- 
-       Result := semDelete (S.CV);
-       pragma Assert (Result = OK);
-    end Finalize;
- 
-    -------------------
-    -- Current_State --
-    -------------------
- 
-    function Current_State (S : Suspension_Object) return Boolean is
-    begin
-       --  We do not want to use lock on this read operation. State is marked
-       --  as Atomic so that we ensure that the value retrieved is correct.
- 
-       return S.State;
-    end Current_State;
- 
-    ---------------
-    -- Set_False --
-    ---------------
- 
-    procedure Set_False (S : in out Suspension_Object) is
-       Result : STATUS;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := semTake (S.L, WAIT_FOREVER);
-       pragma Assert (Result = OK);
- 
-       S.State := False;
- 
-       Result := semGive (S.L);
-       pragma Assert (Result = OK);
- 
-       SSL.Abort_Undefer.all;
-    end Set_False;
- 
-    --------------
-    -- Set_True --
-    --------------
- 
-    procedure Set_True (S : in out Suspension_Object) is
-       Result : STATUS;
- 
-    begin
-       --  Set_True can be called from an interrupt context, in which case
-       --  Abort_Defer is undefined.
- 
-       if Is_Task_Context then
-          SSL.Abort_Defer.all;
-       end if;
- 
-       Result := semTake (S.L, WAIT_FOREVER);
-       pragma Assert (Result = OK);
- 
-       --  If there is already a task waiting on this suspension object then we
-       --  resume it, leaving the state of the suspension object to False, as it
-       --  is specified in (RM D.10 (9)). Otherwise, it just leaves the state to
-       --  True.
- 
-       if S.Waiting then
-          S.Waiting := False;
-          S.State := False;
- 
-          Result := semGive (S.CV);
-          pragma Assert (Result = OK);
-       else
-          S.State := True;
-       end if;
- 
-       Result := semGive (S.L);
-       pragma Assert (Result = OK);
- 
-       --  Set_True can be called from an interrupt context, in which case
-       --  Abort_Undefer is undefined.
- 
-       if Is_Task_Context then
-          SSL.Abort_Undefer.all;
-       end if;
- 
-    end Set_True;
- 
-    ------------------------
-    -- Suspend_Until_True --
-    ------------------------
- 
-    procedure Suspend_Until_True (S : in out Suspension_Object) is
-       Result : STATUS;
- 
-    begin
-       SSL.Abort_Defer.all;
- 
-       Result := semTake (S.L, WAIT_FOREVER);
- 
-       if S.Waiting then
- 
-          --  Program_Error must be raised upon calling Suspend_Until_True
-          --  if another task is already waiting on that suspension object
-          --  (RM D.10(10)).
- 
-          Result := semGive (S.L);
-          pragma Assert (Result = OK);
- 
-          SSL.Abort_Undefer.all;
- 
-          raise Program_Error;
- 
-       else
-          --  Suspend the task if the state is False. Otherwise, the task
-          --  continues its execution, and the state of the suspension object
-          --  is set to False (RM D.10 (9)).
- 
-          if S.State then
-             S.State := False;
- 
-             Result := semGive (S.L);
-             pragma Assert (Result = OK);
- 
-             SSL.Abort_Undefer.all;
- 
-          else
-             S.Waiting := True;
- 
-             --  Release the mutex before sleeping
- 
-             Result := semGive (S.L);
-             pragma Assert (Result = OK);
- 
-             SSL.Abort_Undefer.all;
- 
-             Result := semTake (S.CV, WAIT_FOREVER);
-             pragma Assert (Result = 0);
-          end if;
-       end if;
-    end Suspend_Until_True;
- 
-    ----------------
     -- Check_Exit --
     ----------------
  
--- 977,982 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-tasini.adb gcc-16-20251123/gcc/ada/libgnarl/s-tasini.adb
*** gcc-16-20251116/gcc/ada/libgnarl/s-tasini.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-tasini.adb	Sun Nov 23 22:32:07 2025
*************** package body System.Tasking.Initializati
*** 529,534 ****
--- 529,535 ----
                 | Interrupt_Server_Blocked_Interrupt_Sleep
                 | Interrupt_Server_Idle_Sleep
                 | Timer_Server_Sleep
+                | Suspension_Object_Sleep
              =>
                 Wakeup (T, T.Common.State);
  
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taskin.ads gcc-16-20251123/gcc/ada/libgnarl/s-taskin.ads
*** gcc-16-20251116/gcc/ada/libgnarl/s-taskin.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taskin.ads	Sun Nov 23 22:32:07 2025
*************** package System.Tasking is
*** 205,212 ****
        Activating,
        --  Task has been created and is being made Runnable
  
!       Acceptor_Delay_Sleep
        --  Task is waiting on an selective wait statement
       );
  
     type Call_Modes is
--- 205,215 ----
        Activating,
        --  Task has been created and is being made Runnable
  
!       Acceptor_Delay_Sleep,
        --  Task is waiting on an selective wait statement
+ 
+       Suspension_Object_Sleep
+       --  Task is blocked in a call to Suspend_Until_True
       );
  
     type Call_Modes is
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taspri__dummy.ads gcc-16-20251123/gcc/ada/libgnarl/s-taspri__dummy.ads
*** gcc-16-20251116/gcc/ada/libgnarl/s-taspri__dummy.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taspri__dummy.ads	Sun Nov 23 22:32:07 2025
*************** package System.Task_Primitives is
*** 38,45 ****
  
     type Lock is new Integer;
  
-    type Suspension_Object is new Integer;
- 
     type Task_Body_Access is access procedure;
  
     type Private_Data is limited record
--- 38,43 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taspri__lynxos.ads gcc-16-20251123/gcc/ada/libgnarl/s-taspri__lynxos.ads
*** gcc-16-20251116/gcc/ada/libgnarl/s-taspri__lynxos.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taspri__lynxos.ads	Sun Nov 23 22:32:07 2025
*************** package System.Task_Primitives is
*** 41,49 ****
     type Lock is limited private;
     --  Should be used for implementation of protected objects
  
-    type Suspension_Object is limited private;
-    --  Should be used for the implementation of Ada.Synchronous_Task_Control
- 
     type Task_Body_Access is access procedure;
     --  Pointer to the task body's entry point (or possibly a wrapper declared
     --  local to the GNARL).
--- 41,46 ----
*************** private
*** 67,89 ****
        WO : aliased System.OS_Locks.RTS_Lock;
     end record;
  
-    type Suspension_Object is record
-       State : Boolean;
-       pragma Atomic (State);
-       --  Boolean that indicates whether the object is open. This field is
-       --  marked Atomic to ensure that we can read its value without locking
-       --  the access to the Suspension_Object.
- 
-       Waiting : Boolean;
-       --  Flag showing if there is a task already suspended on this object
- 
-       L : aliased System.OS_Locks.RTS_Lock;
-       --  Protection for ensuring mutual exclusion on the Suspension_Object
- 
-       CV : aliased System.OS_Interface.pthread_cond_t;
-       --  Condition variable used to queue threads until condition is signaled
-    end record;
- 
     type Private_Data is limited record
        Thread : aliased System.OS_Interface.pthread_t;
        --  This component is written to once before concurrent access to it is
--- 64,69 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taspri__mingw.ads gcc-16-20251123/gcc/ada/libgnarl/s-taspri__mingw.ads
*** gcc-16-20251116/gcc/ada/libgnarl/s-taspri__mingw.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taspri__mingw.ads	Sun Nov 23 22:32:07 2025
*************** package System.Task_Primitives is
*** 41,49 ****
     type Lock is limited private;
     --  Should be used for implementation of protected objects
  
-    type Suspension_Object is limited private;
-    --  Should be used for the implementation of Ada.Synchronous_Task_Control
- 
     type Task_Body_Access is access procedure;
     --  Pointer to the task body's entry point (or possibly a wrapper
     --  declared local to the GNARL).
--- 41,46 ----
*************** private
*** 70,92 ****
  
     type Condition_Variable is new System.Win32.HANDLE;
  
-    type Suspension_Object is record
-       State : Boolean;
-       pragma Atomic (State);
-       --  Boolean that indicates whether the object is open. This field is
-       --  marked Atomic to ensure that we can read its value without locking
-       --  the access to the Suspension_Object.
- 
-       Waiting : Boolean;
-       --  Flag showing if there is a task already suspended on this object
- 
-       L : aliased System.OS_Locks.RTS_Lock;
-       --  Protection for ensuring mutual exclusion on the Suspension_Object
- 
-       CV : aliased Win32.HANDLE;
-       --  Condition variable used to queue threads until condition is signaled
-    end record;
- 
     type Private_Data is limited record
        Thread : aliased System.OS_Interface.Thread_Id;
        pragma Atomic (Thread);
--- 67,72 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads gcc-16-20251123/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
*** gcc-16-20251116/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads	Sun Nov 23 22:32:07 2025
*************** package System.Task_Primitives is
*** 44,52 ****
     type Lock is limited private;
     --  Should be used for implementation of protected objects
  
-    type Suspension_Object is limited private;
-    --  Should be used for the implementation of Ada.Synchronous_Task_Control
- 
     type Task_Body_Access is access procedure;
     --  Pointer to the task body's entry point (or possibly a wrapper declared
     --  local to the GNARL).
--- 44,49 ----
*************** private
*** 70,92 ****
        WO : aliased System.OS_Locks.RTS_Lock;
     end record;
  
-    type Suspension_Object is record
-       State : Boolean;
-       pragma Atomic (State);
-       --  Boolean that indicates whether the object is open. This field is
-       --  marked Atomic to ensure that we can read its value without locking
-       --  the access to the Suspension_Object.
- 
-       Waiting : Boolean;
-       --  Flag showing if there is a task already suspended on this object
- 
-       L : aliased System.OS_Locks.RTS_Lock;
-       --  Protection for ensuring mutual exclusion on the Suspension_Object
- 
-       CV : aliased System.OS_Interface.pthread_cond_t;
-       --  Condition variable used to queue threads until condition is signaled
-    end record;
- 
     type Private_Data is limited record
        Thread : aliased System.OS_Interface.pthread_t;
        --  This component is written to once before concurrent access to it is
--- 67,72 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taspri__posix.ads gcc-16-20251123/gcc/ada/libgnarl/s-taspri__posix.ads
*** gcc-16-20251116/gcc/ada/libgnarl/s-taspri__posix.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taspri__posix.ads	Sun Nov 23 22:32:07 2025
*************** package System.Task_Primitives is
*** 47,55 ****
     type Lock is limited private;
     --  Should be used for implementation of protected objects
  
-    type Suspension_Object is limited private;
-    --  Should be used for the implementation of Ada.Synchronous_Task_Control
- 
     type Task_Body_Access is access procedure;
     --  Pointer to the task body's entry point (or possibly a wrapper declared
     --  local to the GNARL).
--- 47,52 ----
*************** private
*** 73,134 ****
        WO : aliased System.OS_Locks.RTS_Lock;
     end record;
  
-    type Suspension_Object is record
-       State : Boolean;
-       pragma Atomic (State);
-       --  Boolean that indicates whether the object is open. This field is
-       --  marked Atomic to ensure that we can read its value without locking
-       --  the access to the Suspension_Object.
- 
-       Waiting : Boolean;
-       --  Flag showing if there is a task already suspended on this object
-       --
-       --  When reviewing how this component is used, one should keep in mind
-       --  RM D.10 (10.2/5), which allows us to tolerate some race conditions
-       --  that can potentially cause deadlocks.
-       --
-       --  For example, consider the following code:
-       --
-       --     SO : Suspension_Object;
-       --
-       --     task A;
-       --     task B;
-       --
-       --     task body A is
-       --     begin
-       --        Suspend_Until_True (SO);
-       --     end A;
-       --
-       --     task body B is
-       --     begin
-       --        Set_True (SO);
-       --        Suspend_Until_True (SO);
-       --     end B;
-       --
-       --  One might be worried about the following ordering of events:
-       --  - A enters Suspend_Until_True and starts waiting on the condition
-       --    variable
-       --  - B calls Set_True, which sets Waiting to False and signals the
-       --    condvar.
-       --  - The scheduler keeps running B. B enters Suspend_Until_True and sets
-       --    Waiting to True again.
-       --  - A wakes up from pthread_cond_wait, sees that Waiting is True, so
-       --    concludes that the wakeup was spurious and starts waiting again,
-       --    effectively missing B's Set_True.
-       --
-       --  But this is in fact not a problem because the code falls into the
-       --  category described by RM D.10 (10.2/5): if the first thing to happen
-       --  is B's call to Set_True, the two remaining calls to
-       --  Suspend_Until_True clearly happen concurrently, which is the bounded
-       --  error case.
- 
-       L : aliased System.OS_Locks.RTS_Lock;
-       --  Protection for ensuring mutual exclusion on the Suspension_Object
- 
-       CV : aliased System.OS_Interface.pthread_cond_t;
-       --  Condition variable used to queue threads until condition is signaled
-    end record;
- 
     type Private_Data is limited record
        Thread : aliased System.OS_Interface.pthread_t;
        --  This component is written to once before concurrent access to it is
--- 70,75 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taspri__solaris.ads gcc-16-20251123/gcc/ada/libgnarl/s-taspri__solaris.ads
*** gcc-16-20251116/gcc/ada/libgnarl/s-taspri__solaris.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taspri__solaris.ads	Sun Nov 23 22:32:07 2025
*************** package System.Task_Primitives is
*** 50,58 ****
     function To_RTS_Lock_Ptr is
       new Ada.Unchecked_Conversion (Lock_Ptr, OS_Locks.RTS_Lock_Ptr);
  
-    type Suspension_Object is limited private;
-    --  Should be used for the implementation of Ada.Synchronous_Task_Control
- 
     type Task_Body_Access is access procedure;
     --  Pointer to the task body's entry point (or possibly a wrapper
     --  declared local to the GNARL).
--- 50,55 ----
*************** private
*** 73,95 ****
  
     type Lock is new OS_Locks.RTS_Lock;
  
-    type Suspension_Object is record
-       State : Boolean;
-       pragma Atomic (State);
-       --  Boolean that indicates whether the object is open. This field is
-       --  marked Atomic to ensure that we can read its value without locking
-       --  the access to the Suspension_Object.
- 
-       Waiting : Boolean;
-       --  Flag showing if there is a task already suspended on this object
- 
-       L : aliased System.OS_Interface.mutex_t;
-       --  Protection for ensuring mutual exclusion on the Suspension_Object
- 
-       CV : aliased System.OS_Interface.cond_t;
-       --  Condition variable used to queue threads until condition is signaled
-    end record;
- 
     --  Note that task support on gdb relies on the fact that the first two
     --  fields of Private_Data are Thread and LWP.
  
--- 70,75 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnarl/s-taspri__vxworks.ads gcc-16-20251123/gcc/ada/libgnarl/s-taspri__vxworks.ads
*** gcc-16-20251116/gcc/ada/libgnarl/s-taspri__vxworks.ads	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnarl/s-taspri__vxworks.ads	Sun Nov 23 22:32:07 2025
*************** package System.Task_Primitives is
*** 40,48 ****
     type Lock is limited private;
     --  Should be used for implementation of protected objects
  
-    type Suspension_Object is limited private;
-    --  Should be used for the implementation of Ada.Synchronous_Task_Control
- 
     type Task_Body_Access is access procedure;
     --  Pointer to the task body's entry point (or possibly a wrapper
     --  declared local to the GNARL).
--- 40,45 ----
*************** private
*** 63,85 ****
  
     type Lock is new System.OS_Locks.RTS_Lock;
  
-    type Suspension_Object is record
-       State : Boolean;
-       pragma Atomic (State);
-       --  Boolean that indicates whether the object is open. This field is
-       --  marked Atomic to ensure that we can read its value without locking
-       --  the access to the Suspension_Object.
- 
-       Waiting : Boolean;
-       --  Flag showing if there is a task already suspended on this object
- 
-       L : aliased System.OS_Interface.SEM_ID;
-       --  Protection for ensuring mutual exclusion on the Suspension_Object
- 
-       CV : aliased System.OS_Interface.SEM_ID;
-       --  Condition variable used to queue threads until condition is signaled
-    end record;
- 
     type Private_Data is limited record
        Thread : aliased System.OS_Interface.t_id := 0;
        pragma Atomic (Thread);
--- 60,65 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/libgnat/a-cobove.adb gcc-16-20251123/gcc/ada/libgnat/a-cobove.adb
*** gcc-16-20251116/gcc/ada/libgnat/a-cobove.adb	Sun Nov 16 22:32:51 2025
--- gcc-16-20251123/gcc/ada/libgnat/a-cobove.adb	Sun Nov 23 22:32:07 2025
*************** package body Ada.Containers.Bounded_Vect
*** 363,369 ****
                       New_Item  :        Element_Type)
     is
     begin
!       Insert (Container, Last_Index (Container) + 1, New_Item, 1);
     end Append;
  
     --------------
--- 363,377 ----
                       New_Item  :        Element_Type)
     is
     begin
!       if T_Check then
!          --  handle the general case
!          Insert (Container, Last_Index (Container) + 1, New_Item, 1);
!       else
!          --  The fast path.
!          --  The first (but not the second) statement may fail a check.
!          Container.Elements (To_Array_Index (Container.Last) + 1) := New_Item;
!          Container.Last := Container.Last + 1;
!       end if;
     end Append;
  
     --------------
diff -Nrcpad gcc-16-20251116/gcc/ada/par-ch4.adb gcc-16-20251123/gcc/ada/par-ch4.adb
*** gcc-16-20251116/gcc/ada/par-ch4.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/par-ch4.adb	Sun Nov 23 22:32:08 2025
*************** package body Ch4 is
*** 2783,2797 ****
        --  not the first token on a line (as determined by checking the
        --  previous token position with the start of the current line),
        --  then we insist that we have an appropriate terminating token.
!       --  Consider the following two examples:
  
        --   1)  if A nad B then ...
  
!       --   2)  A := B
        --       C := D
  
        --  In the first example, we would like to issue a binary operator
        --  expected message and resynchronize to the then. In the second
        --  example, we do not want to issue a binary operator message, so
        --  that instead we will get the missing semicolon message. This
        --  distinction is of course a heuristic which does not always work,
--- 2783,2805 ----
        --  not the first token on a line (as determined by checking the
        --  previous token position with the start of the current line),
        --  then we insist that we have an appropriate terminating token.
!       --  Consider the following examples:
  
        --   1)  if A nad B then ...
  
!       --   2)  if A [B] then ...
!       --            ^
!       --   2)  A := [B[;
!       --              ^
! 
!       --   3)  A := B
        --       C := D
  
        --  In the first example, we would like to issue a binary operator
        --  expected message and resynchronize to the then. In the second
+       --  example, a left bracket was found instead of a left parenthesis (eg.
+       --  array indexing), or instead of a closing right bracket; in both cases
+       --  we issue an incorrect or mismatching bracket message. In the third
        --  example, we do not want to issue a binary operator message, so
        --  that instead we will get the missing semicolon message. This
        --  distinction is of course a heuristic which does not always work,
*************** package body Ch4 is
*** 2827,2832 ****
--- 2835,2845 ----
                 Error_Msg_SC ("\qualify expression to turn it into a name");
              end if;
  
+          --  Mistake of using brackets instead of parentheses
+ 
+          elsif Token = Tok_Left_Bracket then
+             Error_Msg_SC ("incorrect or mismatching bracket");
+ 
           --  Normal case for binary operator expected message
  
           else
diff -Nrcpad gcc-16-20251116/gcc/ada/par-ch6.adb gcc-16-20251123/gcc/ada/par-ch6.adb
*** gcc-16-20251116/gcc/ada/par-ch6.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/par-ch6.adb	Sun Nov 23 22:32:08 2025
*************** package body Ch6 is
*** 233,241 ****
           then
              --  Note that, this workaround is needed to retain the info that
              --  the current subprogram comes from a direct attribute
!             --  definition. Otherwise, we would need to add an entity flag
!             --  Is_Constructor. Currently this flag already exists and could be
!             --  misleading as it refer to CPP constructors ???
  
              Copy_Spec := New_Copy (Spec);
  
--- 233,240 ----
           then
              --  Note that, this workaround is needed to retain the info that
              --  the current subprogram comes from a direct attribute
!             --  definition. Otherwise, we would need to add an entity flag like
!             --  Is_Direct_Attribute_Definition ???
  
              Copy_Spec := New_Copy (Spec);
  
diff -Nrcpad gcc-16-20251116/gcc/ada/repinfo.adb gcc-16-20251123/gcc/ada/repinfo.adb
*** gcc-16-20251116/gcc/ada/repinfo.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/repinfo.adb	Sun Nov 23 22:32:08 2025
*************** package body Repinfo is
*** 362,370 ****
  
              if Esize (Ent) = RM_Size (Ent) then
                 if List_Representation_Info_To_JSON then
                    Write_Str ("  ""Size"": ");
                    Write_Val (Esize (Ent));
-                   Write_Line (",");
                 else
                    Write_Str ("for ");
                    List_Name (Ent);
--- 362,370 ----
  
              if Esize (Ent) = RM_Size (Ent) then
                 if List_Representation_Info_To_JSON then
+                   Write_Line (",");
                    Write_Str ("  ""Size"": ");
                    Write_Val (Esize (Ent));
                 else
                    Write_Str ("for ");
                    List_Name (Ent);
*************** package body Repinfo is
*** 377,389 ****
  
              else
                 if List_Representation_Info_To_JSON then
                    Write_Str ("  ""Object_Size"": ");
                    Write_Val (Esize (Ent));
-                   Write_Line (",");
  
                    Write_Str ("  ""Value_Size"": ");
                    Write_Val (RM_Size (Ent));
-                   Write_Line (",");
  
                 else
                    Write_Str ("for ");
--- 377,389 ----
  
              else
                 if List_Representation_Info_To_JSON then
+                   Write_Line (",");
                    Write_Str ("  ""Object_Size"": ");
                    Write_Val (Esize (Ent));
  
+                   Write_Line (",");
                    Write_Str ("  ""Value_Size"": ");
                    Write_Val (RM_Size (Ent));
  
                 else
                    Write_Str ("for ");
*************** package body Repinfo is
*** 404,409 ****
--- 404,410 ----
  
        if Known_Alignment (Ent) then
           if List_Representation_Info_To_JSON then
+             Write_Line (",");
              Write_Str ("  ""Alignment"": ");
              Write_Val (Alignment (Ent));
           else
*************** package body Repinfo is
*** 419,432 ****
        --  aspects are not computed for types declared in a generic unit.
  
        else
-          --  Add unknown alignment entry in JSON format to ensure the format is
-          --  valid, as a comma is added by the caller before another field.
- 
-          if List_Representation_Info_To_JSON then
-             Write_Str ("  ""Alignment"": ");
-             Write_Unknown_Val;
-          end if;
- 
           pragma Assert (not Expander_Active
             or else Is_Concurrent_Type (Ent)
             or else Is_Class_Wide_Type (Ent)
--- 420,425 ----
*************** package body Repinfo is
*** 471,482 ****
  
           E := First_Entity (Ent);
           while Present (E) loop
!             --  We list entities that come from source (excluding private or
!             --  incomplete types or deferred constants, for which we will list
!             --  the information for the full view). If requested, we also list
!             --  relevant entities that have been generated when processing the
!             --  original entities coming from source. But if debug flag A is
!             --  set, then all entities are listed.
  
              if ((Comes_From_Source (E)
                     or else (Ekind (E) = E_Block
--- 464,476 ----
  
           E := First_Entity (Ent);
           while Present (E) loop
!             --  We list entities that come from source (except for incomplete,
!             --  private and generic types, as well as deferred constants, for
!             --  which we list the information for the full view). If requested
!             --  by the -gnatR4 switch, we also list relevant entities that have
!             --  been created when processing the original entities coming from
!             --  source. If debug switch -gnatdA is specified, then all entities
!             --  are listed.
  
              if ((Comes_From_Source (E)
                     or else (Ekind (E) = E_Block
*************** package body Repinfo is
*** 484,492 ****
                              Nkind (Parent (E)) = N_Implicit_Label_Declaration
                                and then
                              Comes_From_Source (Label_Construct (Parent (E)))))
!               and then not Is_Incomplete_Or_Private_Type (E)
!               and then not (Ekind (E) = E_Constant
!                               and then Present (Full_View (E))))
                or else (List_Representation_Info = 4
                           and then Relevant_Entities.Get (E))
                or else Debug_Flag_AA
--- 478,487 ----
                              Nkind (Parent (E)) = N_Implicit_Label_Declaration
                                and then
                              Comes_From_Source (Label_Construct (Parent (E)))))
!                  and then not Is_Incomplete_Or_Private_Type (E)
!                  and then not Is_Generic_Type (E)
!                  and then not (Ekind (E) = E_Constant
!                                 and then Present (Full_View (E))))
                or else (List_Representation_Info = 4
                           and then Relevant_Entities.Get (E))
                or else Debug_Flag_AA
*************** package body Repinfo is
*** 813,819 ****
        pragma Assert (List_Representation_Info_To_JSON);
        Write_Str ("  ""location"": """);
        Write_Location (Sloc (Ent));
!       Write_Line (""",");
     end List_Location;
  
     ---------------
--- 808,814 ----
        pragma Assert (List_Representation_Info_To_JSON);
        Write_Str ("  ""location"": """);
        Write_Location (Sloc (Ent));
!       Write_Str ("""");
     end List_Location;
  
     ---------------
*************** package body Repinfo is
*** 874,879 ****
--- 869,875 ----
           List_Name (Ent);
           Write_Line (""",");
           List_Location (Ent);
+          Write_Line (",");
  
           Write_Str ("  ""Size"": ");
           Write_Val (Esize (Ent));
*************** package body Repinfo is
*** 2039,2044 ****
--- 2035,2041 ----
           List_Name (Ent);
           Write_Line (""",");
           List_Location (Ent);
+          Write_Line (",");
  
           Write_Str ("  ""Convention"": """);
        else
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_attr.adb gcc-16-20251123/gcc/ada/sem_attr.adb
*** gcc-16-20251116/gcc/ada/sem_attr.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_attr.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Attr is
*** 12631,12646 ****
           begin
              if not Is_Entity_Name (P) or else not Is_Type (Entity (P)) then
                 Resolve (P);
- 
-                --  If the prefix is a function call returning on the secondary
-                --  stack, we must make sure to mark/release the stack.
- 
-                if Nkind (P) = N_Function_Call
-                  and then Nkind (Parent (N)) = N_Loop_Parameter_Specification
-                  and then Requires_Transient_Scope (Etype (P))
-                then
-                   Set_Uses_Sec_Stack (Scope (Current_Scope));
-                end if;
              end if;
  
              Dims := Expressions (N);
--- 12631,12636 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_ch12.adb gcc-16-20251123/gcc/ada/sem_ch12.adb
*** gcc-16-20251116/gcc/ada/sem_ch12.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_ch12.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Ch12 is
*** 4882,4906 ****
        -------------------------------
  
        function Needs_Body_Instantiated (Gen_Unit : Entity_Id) return Boolean is
        begin
           --  If the instantiation is in the auxiliary declarations of the main
           --  unit, then the body is needed, even if the main unit is generic.
  
!          if Parent (N) = Aux_Decls_Node (Cunit (Main_Unit)) then
              return True;
-          end if;
  
           --  No need to instantiate bodies in generic units
  
!          if Is_Generic_Unit (Cunit_Entity (Main_Unit)) then
              return False;
-          end if;
  
           --  If the instantiation is in the main unit, then the body is needed
  
!          if Is_In_Main_Unit (N) then
              return True;
-          end if;
  
           --  In GNATprove mode, never instantiate bodies outside of the main
           --  unit, as it does not use frontend/backend inlining in the way that
--- 4882,4919 ----
        -------------------------------
  
        function Needs_Body_Instantiated (Gen_Unit : Entity_Id) return Boolean is
+          S : constant Entity_Id := Scope (Gen_Unit);
+ 
        begin
+          --  If the generic package being instantiated is declared within
+          --  a formal package, and we are in the context of the enclosing
+          --  generic unit of the formal package, then there is no body to
+          --  instantiate until the enclosing generic unit is instantiated
+          --  with an actual for the formal package.
+ 
+          if Is_Generic_Instance (S)
+            and then
+              Nkind (Original_Node (Unit_Declaration_Node (S))) =
+                N_Formal_Package_Declaration
+            and then In_Open_Scopes (Scope (S))
+          then
+             return False;
+ 
           --  If the instantiation is in the auxiliary declarations of the main
           --  unit, then the body is needed, even if the main unit is generic.
  
!          elsif Parent (N) = Aux_Decls_Node (Cunit (Main_Unit)) then
              return True;
  
           --  No need to instantiate bodies in generic units
  
!          elsif Is_Generic_Unit (Cunit_Entity (Main_Unit)) then
              return False;
  
           --  If the instantiation is in the main unit, then the body is needed
  
!          elsif Is_In_Main_Unit (N) then
              return True;
  
           --  In GNATprove mode, never instantiate bodies outside of the main
           --  unit, as it does not use frontend/backend inlining in the way that
*************** package body Sem_Ch12 is
*** 4908,4922 ****
           --  contrary, such instantiations may bring artificial constraints,
           --  as for example such bodies may require preprocessing.
  
!          if GNATprove_Mode then
              return False;
-          end if;
  
           --  If not, then again no need to instantiate bodies in generic units
  
!          if Is_Generic_Unit (Cunit_Entity (Get_Code_Unit (N))) then
              return False;
-          end if;
  
           --  Here we have a special handling for back-end inlining: if inline
           --  processing is required, then we unconditionally want to have the
--- 4921,4933 ----
           --  contrary, such instantiations may bring artificial constraints,
           --  as for example such bodies may require preprocessing.
  
!          elsif GNATprove_Mode then
              return False;
  
           --  If not, then again no need to instantiate bodies in generic units
  
!          elsif Is_Generic_Unit (Cunit_Entity (Get_Code_Unit (N))) then
              return False;
  
           --  Here we have a special handling for back-end inlining: if inline
           --  processing is required, then we unconditionally want to have the
*************** package body Sem_Ch12 is
*** 4926,4939 ****
           --  these instantiations are only performed on demand when back-end
           --  inlining is enabled, so this causes very little extra work.
  
!          if Inline_Processing_Required and then Back_End_Inlining then
              return True;
-          end if;
  
           --  We want to have the bodies instantiated in non-main units if
           --  they might contribute inlined subprograms.
  
!          return Might_Inline_Subp (Gen_Unit);
        end Needs_Body_Instantiated;
  
        --  Local declarations
--- 4937,4951 ----
           --  these instantiations are only performed on demand when back-end
           --  inlining is enabled, so this causes very little extra work.
  
!          elsif Inline_Processing_Required and then Back_End_Inlining then
              return True;
  
           --  We want to have the bodies instantiated in non-main units if
           --  they might contribute inlined subprograms.
  
!          else
!             return Might_Inline_Subp (Gen_Unit);
!          end if;
        end Needs_Body_Instantiated;
  
        --  Local declarations
*************** package body Sem_Ch12 is
*** 5414,5456 ****
                 and then (Operating_Mode = Generate_Code
                            or else (Operating_Mode = Check_Semantics
                                      and then GNATprove_Mode));
- 
-             --  If front-end inlining is enabled or there are any subprograms
-             --  marked with Inline_Always, do not instantiate body when within
-             --  a generic context.
- 
-             if not Back_End_Inlining
-               and then (Front_End_Inlining or else Has_Inline_Always)
-               and then not Expander_Active
-             then
-                Needs_Body := False;
-             end if;
- 
-             --  If the current context is generic, and the package being
-             --  instantiated is declared within a formal package, there is no
-             --  body to instantiate until the enclosing generic is instantiated
-             --  and there is an actual for the formal package. If the formal
-             --  package has parameters, we build a regular package instance for
-             --  it, that precedes the original formal package declaration.
- 
-             if In_Open_Scopes (Scope (Scope (Gen_Unit))) then
-                declare
-                   Decl : constant Node_Id :=
-                            Original_Node
-                              (Unit_Declaration_Node (Scope (Gen_Unit)));
-                begin
-                   if Nkind (Decl) = N_Formal_Package_Declaration
-                     or else (Nkind (Decl) = N_Package_Declaration
-                               and then Is_List_Member (Decl)
-                               and then Present (Next (Decl))
-                               and then
-                                 Nkind (Next (Decl)) =
-                                                 N_Formal_Package_Declaration)
-                   then
-                      Needs_Body := False;
-                   end if;
-                end;
-             end if;
           end;
  
           --  For RCI unit calling stubs, we omit the instance body if the
--- 5426,5431 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_ch4.adb gcc-16-20251123/gcc/ada/sem_ch4.adb
*** gcc-16-20251116/gcc/ada/sem_ch4.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_ch4.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Ch4 is
*** 1626,1631 ****
--- 1626,1632 ----
                    or else Is_Thunk (Current_Scope))
              then
                 Set_Etype (N, Non_Limited_View (Etype (N)));
+                Generate_Reference (Scope (Etype (N)), N);
  
              --  If there is no completion for the type, this may be because
              --  there is only a limited view of it and there is nothing in
*************** package body Sem_Ch4 is
*** 9791,9798 ****
           --  source if the original one is. Set entity and type, even though
           --  they may be overwritten during resolution if overloaded.
  
!          Set_Comes_From_Source (Subprog, Comes_From_Source (N));
!          Set_Comes_From_Source (Call_Node, Comes_From_Source (N));
  
           if Nkind (N) = N_Selected_Component
             and then not Inside_A_Generic
--- 9792,9799 ----
           --  source if the original one is. Set entity and type, even though
           --  they may be overwritten during resolution if overloaded.
  
!          Preserve_Comes_From_Source (Subprog, N);
!          Preserve_Comes_From_Source (Call_Node, N);
  
           if Nkind (N) = N_Selected_Component
             and then not Inside_A_Generic
*************** package body Sem_Ch4 is
*** 9820,9826 ****
             and then Is_Access_Type (Etype (Obj))
           then
              Rewrite (First_Actual,
!               Make_Explicit_Dereference (Sloc (Obj), Obj));
              Analyze (First_Actual);
  
              --  If we need to introduce an explicit dereference, verify that
--- 9821,9827 ----
             and then Is_Access_Type (Etype (Obj))
           then
              Rewrite (First_Actual,
!               Make_Explicit_Dereference (Sloc (Obj), Relocate_Node (Obj)));
              Analyze (First_Actual);
  
              --  If we need to introduce an explicit dereference, verify that
*************** package body Sem_Ch4 is
*** 9832,9842 ****
                 Error_Msg_NE
                   ("expect variable in call to&", Prefix (N), Entity (Subprog));
              end if;
           --  Conversely, if the formal is an access parameter and the object is
!          --  not an access type or a reference type (i.e. a type with the
           --  Implicit_Dereference aspect specified), replace the actual with a
!          --  'Access reference. Its analysis will check that the object is
!          --  aliased.
  
           elsif Is_Access_Type (Formal_Type)
             and then not Is_Access_Type (Etype (Obj))
--- 9833,9844 ----
                 Error_Msg_NE
                   ("expect variable in call to&", Prefix (N), Entity (Subprog));
              end if;
+ 
           --  Conversely, if the formal is an access parameter and the object is
!          --  neither an access type nor a reference type (i.e. a type with the
           --  Implicit_Dereference aspect specified), replace the actual with a
!          --  'Access reference and give more specific error messages in common
!          --  illegal cases than Resolve_Attribute would.
  
           elsif Is_Access_Type (Formal_Type)
             and then not Is_Access_Type (Etype (Obj))
*************** package body Sem_Ch4 is
*** 9846,9851 ****
--- 9848,9864 ----
                   not Is_Access_Type (Designated_Type (Etype
                         (Get_Reference_Discriminant (Etype (Obj))))))
           then
+             Rewrite (First_Actual,
+               Make_Attribute_Reference (Loc,
+                 Attribute_Name => Name_Access,
+                 Prefix => Relocate_Node (Obj)));
+ 
+             --  Treat the new actual as being in the source if the object is.
+             --  This is necessary when interface types are involved, see the
+             --  Expand_N_Attribute_Reference procedure.
+ 
+             Preserve_Comes_From_Source (First_Actual, Obj);
+ 
              --  A special case: A.all'Access is illegal if A is an access to a
              --  constant and the context requires an access to a variable.
  
*************** package body Sem_Ch4 is
*** 9855,9871 ****
                   or else not Is_Variable (Obj)
                 then
                    Error_Msg_NE
!                     ("actual for & must be a variable", Obj, Control);
                 end if;
              end if;
  
!             Rewrite (First_Actual,
!               Make_Attribute_Reference (Loc,
!                 Attribute_Name => Name_Access,
!                 Prefix => Relocate_Node (Obj)));
! 
!             --  If the object is not overloaded verify that taking access of
!             --  it is legal. Otherwise check is made during resolution.
  
              if not Is_Overloaded (Obj)
                and then not Is_Aliased_View (Obj)
--- 9868,9880 ----
                   or else not Is_Variable (Obj)
                 then
                    Error_Msg_NE
!                     ("actual for & must be a variable",
!                      Prefix (First_Actual), Control);
                 end if;
              end if;
  
!             --  If the object is not overloaded, verify that taking access of
!             --  it is legal. Otherwise the check is made during resolution.
  
              if not Is_Overloaded (Obj)
                and then not Is_Aliased_View (Obj)
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_ch6.adb gcc-16-20251123/gcc/ada/sem_ch6.adb
*** gcc-16-20251116/gcc/ada/sem_ch6.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_ch6.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Ch6 is
*** 886,891 ****
--- 886,893 ----
                                        Designated_Type (Etype (Expr)))
              then
                 Rewrite (Expr, Convert_To (R_Type, Relocate_Node (Expr)));
+                Flag_Interface_Pointer_Displacement (Expr);
+ 
                 Analyze (Expr);
              end if;
  
*************** package body Sem_Ch6 is
*** 1899,1904 ****
--- 1901,1907 ----
  
     <<Leave>>
        Restore_Ghost_Region (Saved_Ghost_Config);
+       Check_Procedure_Call_Argument_Levels (N);
     end Analyze_Procedure_Call;
  
     ------------------------------
*************** package body Sem_Ch6 is
*** 5354,5359 ****
--- 5357,5363 ----
  
                 else
                    Set_Needs_Construction (Prefix_E);
+                   Set_Is_Constructor (Designator);
                 end if;
  
              when others =>
*************** package body Sem_Ch6 is
*** 5730,5736 ****
              declare
                 D : constant Entity_Id := Directly_Designated_Type (Etype (F1));
                 Partial_View_Of_Desig : constant Entity_Id :=
!                  Incomplete_Or_Partial_View (D);
              begin
                 return No (Partial_View_Of_Desig)
                   or else Is_Tagged_Type (Partial_View_Of_Desig)
--- 5734,5740 ----
              declare
                 D : constant Entity_Id := Directly_Designated_Type (Etype (F1));
                 Partial_View_Of_Desig : constant Entity_Id :=
!                  Incomplete_Or_Partial_View (D, Partial_Only => True);
              begin
                 return No (Partial_View_Of_Desig)
                   or else Is_Tagged_Type (Partial_View_Of_Desig)
*************** package body Sem_Ch6 is
*** 9073,9078 ****
--- 9077,9093 ----
        then
           Freeze_Extra_Formals (E);
           return;
+ 
+       elsif Ekind (Ref_E) in E_Subprogram_Type
+         and then Is_Itype (Ref_E)
+         and then Nkind (Associated_Node_For_Itype (Ref_E)) in
+                    N_Function_Specification
+                  | N_Procedure_Specification
+         and then Has_Foreign_Convention
+                    (Defining_Entity (Associated_Node_For_Itype (Ref_E)))
+       then
+          Freeze_Extra_Formals (E);
+          return;
        end if;
  
        --  If the subprogram is a predefined dispatching subprogram then don't
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_disp.adb gcc-16-20251123/gcc/ada/sem_disp.adb
*** gcc-16-20251116/gcc/ada/sem_disp.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_disp.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Disp is
*** 3324,3329 ****
--- 3324,3330 ----
                     Subtype_Mark =>
                       New_Occurrence_Of (Etype (Control), Sloc (Call_Node)),
                     Expression => Relocate_Node (Call_Node)));
+                Flag_Interface_Pointer_Displacement (Call_Node);
                 Set_Etype (Call_Node, Etype (Control));
                 Set_Analyzed (Call_Node);
  
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_prag.adb gcc-16-20251123/gcc/ada/sem_prag.adb
*** gcc-16-20251116/gcc/ada/sem_prag.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_prag.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Prag is
*** 16587,16593 ****
  
              --  Check if already defined as constructor
  
!             if Is_Constructor (Def_Id) then
                 Error_Msg_N
                   ("??duplicate argument for pragma 'C'P'P_Constructor", Arg1);
                 return;
--- 16587,16593 ----
  
              --  Check if already defined as constructor
  
!             if Is_CPP_Constructor (Def_Id) then
                 Error_Msg_N
                   ("??duplicate argument for pragma 'C'P'P_Constructor", Arg1);
                 return;
*************** package body Sem_Prag is
*** 16612,16618 ****
                 end if;
  
                 Set_Has_Completion (Def_Id);
!                Set_Is_Constructor (Def_Id);
                 Set_Convention (Def_Id, Convention_CPP);
  
                 --  Imported C++ constructors are not dispatching primitives
--- 16612,16618 ----
                 end if;
  
                 Set_Has_Completion (Def_Id);
!                Set_Is_CPP_Constructor (Def_Id);
                 Set_Convention (Def_Id, Convention_CPP);
  
                 --  Imported C++ constructors are not dispatching primitives
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_res.adb gcc-16-20251123/gcc/ada/sem_res.adb
*** gcc-16-20251116/gcc/ada/sem_res.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_res.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Res is
*** 4486,4506 ****
                    Set_Do_Range_Check (Expression (A));
                 end if;
  
-             --  If the actual is a function call that returns a limited
-             --  unconstrained object that needs finalization, create a
-             --  transient scope for it, so that it can receive the proper
-             --  finalization list.
- 
-             elsif Expander_Active
-               and then Nkind (A) = N_Function_Call
-               and then Is_Limited_Record (Etype (F))
-               and then not Is_Constrained (Etype (F))
-               and then (Needs_Finalization (Etype (F))
-                          or else Has_Task (Etype (F)))
-             then
-                Establish_Transient_Scope (A, Manage_Sec_Stack => False);
-                Resolve (A, Etype (F));
- 
              --  A small optimization: if one of the actuals is a concatenation
              --  create a block around a procedure call to recover stack space.
              --  This alleviates stack usage when several procedure calls in
--- 4486,4491 ----
*************** package body Sem_Res is
*** 4561,4566 ****
--- 4546,4553 ----
                         and then Is_Interface (DDT)
                       then
                          Rewrite (A, Convert_To (Etype (F), Relocate_Node (A)));
+                         Flag_Interface_Pointer_Displacement (A);
+ 
                          Analyze_And_Resolve (A, Etype (F),
                            Suppress => Access_Check);
                       end if;
*************** package body Sem_Res is
*** 7061,7070 ****
  
        --  b) Subprograms that are ignored ghost entities do not return anything
  
!       --  c) Calls to a build-in-place function, since such functions may
!       --  allocate their result directly in a target object, and cases where
!       --  the result does get allocated in the secondary stack are checked for
!       --  within the specialized Exp_Ch6 procedures for expanding those
        --  build-in-place calls.
  
        --  d) Calls to inlinable expression functions do not use the secondary
--- 7048,7058 ----
  
        --  b) Subprograms that are ignored ghost entities do not return anything
  
!       --  c) Calls to a build-in-place function, since such functions allocate
!       --  their result directly in the target object or on the secondary stack,
!       --  and cases where the target object needs to be created and destroyed
!       --  on exit to the context, or the secondary stack is used, are checked
!       --  for within the specialized Exp_Ch6 procedures for expanding those
        --  build-in-place calls.
  
        --  d) Calls to inlinable expression functions do not use the secondary
*************** package body Sem_Res is
*** 14325,14435 ****
        --  reference the corresponding dispatch table.
  
        elsif not Comes_From_Source (N)
           and then Is_Access_Type (Target_Type)
           and then Is_Interface (Designated_Type (Target_Type))
        then
           return True;
  
-       --  Ada 2005 (AI-251): Anonymous access types where target references an
-       --  interface type.
- 
-       elsif Is_Access_Type (Opnd_Type)
-         and then Ekind (Target_Type) in
-                    E_General_Access_Type | E_Anonymous_Access_Type
-         and then Is_Interface (Directly_Designated_Type (Target_Type))
-       then
-          --  Check the static accessibility rule of 4.6(17). Note that the
-          --  check is not enforced when within an instance body, since the
-          --  RM requires such cases to be caught at run time.
- 
-          --  If the operand is a rewriting of an allocator no check is needed
-          --  because there are no accessibility issues.
- 
-          if Nkind (Original_Node (N)) = N_Allocator then
-             null;
- 
-          elsif Ekind (Target_Type) /= E_Anonymous_Access_Type then
-             if Type_Access_Level (Opnd_Type) >
-                Deepest_Type_Access_Level (Target_Type)
-             then
-                --  In an instance, this is a run-time check, but one we know
-                --  will fail, so generate an appropriate warning. The raise
-                --  will be generated by Expand_N_Type_Conversion.
- 
-                if In_Instance_Body then
-                   Error_Msg_Warn := SPARK_Mode /= On;
-                   Report_Error_N
-                     ("cannot convert local pointer to non-local access type<<",
-                      Operand, Report_Errs);
-                   Report_Error_N ("\Program_Error [<<", Operand, Report_Errs);
- 
-                else
-                   Report_Error_N
-                     ("cannot convert local pointer to non-local access type",
-                      Operand, Report_Errs);
-                   return False;
-                end if;
- 
-             --  Special accessibility checks are needed in the case of access
-             --  discriminants declared for a limited type.
- 
-             elsif Ekind (Opnd_Type) = E_Anonymous_Access_Type
-               and then not Is_Local_Anonymous_Access (Opnd_Type)
-             then
-                --  When the operand is a selected access discriminant the check
-                --  needs to be made against the level of the object denoted by
-                --  the prefix of the selected name (Accessibility_Level handles
-                --  checking the prefix of the operand for this case).
- 
-                if Nkind (Operand) = N_Selected_Component
-                  and then Static_Accessibility_Level
-                             (Operand, Zero_On_Dynamic_Level)
-                               > Deepest_Type_Access_Level (Target_Type)
-                then
-                   --  In an instance, this is a run-time check, but one we know
-                   --  will fail, so generate an appropriate warning. The raise
-                   --  will be generated by Expand_N_Type_Conversion.
- 
-                   if In_Instance_Body then
-                      Error_Msg_Warn := SPARK_Mode /= On;
-                      Report_Error_N
-                        ("cannot convert access discriminant to non-local "
-                         & "access type<<", Operand, Report_Errs);
-                      Report_Error_N
-                        ("\Program_Error [<<", Operand, Report_Errs);
- 
-                   --  Real error if not in instance body
- 
-                   else
-                      Report_Error_N
-                        ("cannot convert access discriminant to non-local "
-                         & "access type", Operand, Report_Errs);
-                      return False;
-                   end if;
-                end if;
- 
-                --  The case of a reference to an access discriminant from
-                --  within a limited type declaration (which will appear as
-                --  a discriminal) is always illegal because the level of the
-                --  discriminant is considered to be deeper than any (nameable)
-                --  access type.
- 
-                if Is_Entity_Name (Operand)
-                  and then not Is_Local_Anonymous_Access (Opnd_Type)
-                  and then
-                    Ekind (Entity (Operand)) in E_In_Parameter | E_Constant
-                  and then Present (Discriminal_Link (Entity (Operand)))
-                then
-                   Report_Error_N
-                     ("discriminant has deeper accessibility level than target",
-                      Operand, Report_Errs);
-                   return False;
-                end if;
-             end if;
-          end if;
- 
-          return True;
- 
        --  General and anonymous access types
  
        elsif Ekind (Target_Type) in
--- 14313,14325 ----
        --  reference the corresponding dispatch table.
  
        elsif not Comes_From_Source (N)
+          and then Nkind (N) = N_Type_Conversion
           and then Is_Access_Type (Target_Type)
           and then Is_Interface (Designated_Type (Target_Type))
+          and then Is_Interface_Pointer_Displacement (N)
        then
           return True;
  
        --  General and anonymous access types
  
        elsif Ekind (Target_Type) in
*************** package body Sem_Res is
*** 14484,14493 ****
           end;
  
           --  Check the static accessibility rule of 4.6(17). Note that the
!          --  check is not enforced when within an instance body, since the RM
!          --  requires such cases to be caught at run time.
  
!          if Ekind (Target_Type) /= E_Anonymous_Access_Type
             or else Is_Local_Anonymous_Access (Target_Type)
             or else Nkind (Associated_Node_For_Itype (Target_Type)) =
                       N_Object_Declaration
--- 14374,14389 ----
           end;
  
           --  Check the static accessibility rule of 4.6(17). Note that the
!          --  check is not enforced when within an instance body, since the
!          --  RM requires such cases to be caught at run time.
  
!          --  If the operand is a rewriting of an allocator no check is needed
!          --  because there are no accessibility issues.
! 
!          if Nkind (Original_Node (N)) = N_Allocator then
!             null;
! 
!          elsif Ekind (Target_Type) /= E_Anonymous_Access_Type
             or else Is_Local_Anonymous_Access (Target_Type)
             or else Nkind (Associated_Node_For_Itype (Target_Type)) =
                       N_Object_Declaration
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_type.adb gcc-16-20251123/gcc/ada/sem_type.adb
*** gcc-16-20251116/gcc/ada/sem_type.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_type.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Type is
*** 109,115 ****
        Equal      => "=");
  
     Last_Overloaded : Node_Id := Empty;
!    --  Overloaded node after initializing a new collection of intepretation
  
     -------------------------------------
     -- Handling of Overload Resolution --
--- 109,115 ----
        Equal      => "=");
  
     Last_Overloaded : Node_Id := Empty;
!    --  Overloaded node after initializing a new collection of interpretations
  
     -------------------------------------
     -- Handling of Overload Resolution --
*************** package body Sem_Type is
*** 2685,2691 ****
        end if;
  
        if Is_Concurrent_Record_Type (Target_Typ) then
!          Target_Typ := Corresponding_Concurrent_Type (Target_Typ);
        end if;
  
        Target_Typ := Base_Type (Target_Typ);
--- 2685,2696 ----
        end if;
  
        if Is_Concurrent_Record_Type (Target_Typ) then
!          if Is_Class_Wide_Type (Target_Typ) then
!             Target_Typ :=
!               Corresponding_Concurrent_Type (Root_Type (Target_Typ));
!          else
!             Target_Typ := Corresponding_Concurrent_Type (Target_Typ);
!          end if;
        end if;
  
        Target_Typ := Base_Type (Target_Typ);
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_util.adb gcc-16-20251123/gcc/ada/sem_util.adb
*** gcc-16-20251116/gcc/ada/sem_util.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_util.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Util is
*** 11863,11869 ****
        Cursor := Get_Name_Entity_Id
                    (Direct_Attribute_Definition_Name (Typ, Name_Constructor));
        while Present (Cursor) loop
!          if Is_Constructor_Procedure (Cursor)
             and then No (Next_Formal (First_Formal (Cursor)))
           then
              return True;
--- 11863,11869 ----
        Cursor := Get_Name_Entity_Id
                    (Direct_Attribute_Definition_Name (Typ, Name_Constructor));
        while Present (Cursor) loop
!          if Is_Constructor (Cursor)
             and then No (Next_Formal (First_Formal (Cursor)))
           then
              return True;
*************** package body Sem_Util is
*** 14914,14920 ****
     -- Incomplete_Or_Partial_View --
     --------------------------------
  
!    function Incomplete_Or_Partial_View (Id : Entity_Id) return Entity_Id is
        S : constant Entity_Id := Scope (Id);
  
        function Inspect_Decls
--- 14914,14922 ----
     -- Incomplete_Or_Partial_View --
     --------------------------------
  
!    function Incomplete_Or_Partial_View
!      (Id : Entity_Id; Partial_Only : Boolean := False) return Entity_Id
!    is
        S : constant Entity_Id := Scope (Id);
  
        function Inspect_Decls
*************** package body Sem_Util is
*** 14997,15002 ****
--- 14999,15005 ----
          and then (Is_Incomplete_Type (Prev) or else Ekind (Prev) = E_Constant)
          and then Present (Full_View (Prev))
          and then Full_View (Prev) = Id
+         and then not Partial_Only
        then
           return Prev;
        end if;
*************** package body Sem_Util is
*** 15008,15014 ****
              Pkg_Decl : constant Node_Id := Package_Specification (S);
  
           begin
!             --  It is knows that Typ has a private view, look for it in the
              --  visible declarations of the enclosing scope. A special case
              --  of this is when the two views have been exchanged - the full
              --  appears earlier than the private.
--- 15011,15017 ----
              Pkg_Decl : constant Node_Id := Package_Specification (S);
  
           begin
!             --  It is known that Typ has a private view, look for it in the
              --  visible declarations of the enclosing scope. A special case
              --  of this is when the two views have been exchanged - the full
              --  appears earlier than the private.
*************** package body Sem_Util is
*** 15028,15034 ****
              --  Taft amendment type. The incomplete view should be located in
              --  the private declarations of the enclosing scope.
  
!             elsif In_Package_Body (S) then
                 return Inspect_Decls (Private_Declarations (Pkg_Decl), True);
              end if;
           end;
--- 15031,15037 ----
              --  Taft amendment type. The incomplete view should be located in
              --  the private declarations of the enclosing scope.
  
!             elsif In_Package_Body (S) and then not Partial_Only then
                 return Inspect_Decls (Private_Declarations (Pkg_Decl), True);
              end if;
           end;
*************** package body Sem_Util is
*** 16145,16150 ****
--- 16148,16159 ----
               (Nkind (Parent (Obj)) = N_Object_Renaming_Declaration
                 and then Is_Return_Object (Defining_Entity (Parent (Obj))));
  
+       --  RM 4.1.5(6/3): A generalized reference denotes a view equivalent to
+       --  that of a dereference of the reference discriminant of the object.
+ 
+       elsif Nkind (Obj) = N_Function_Call then
+          return Has_Implicit_Dereference (Etype (Obj));
+ 
        elsif Nkind (Obj) = N_Slice then
           --  A slice of a bit-packed array is not considered aliased even
           --  for an extended access type because even extended access types
*************** package body Sem_Util is
*** 16720,16747 ****
        end if;
     end Is_Constant_Bound;
  
-    ------------------------------
-    -- Is_Constructor_Procedure --
-    ------------------------------
- 
-    function Is_Constructor_Procedure (Subp : Entity_Id) return Boolean is
-       First_Param : Entity_Id;
-    begin
-       if not (Present (First_Formal (Subp))
-                 and then Ekind (First_Formal (Subp)) = E_In_Out_Parameter
-                 and then Is_Direct_Attribute_Subp_Spec (Parent (Subp))
-                 and then Attribute_Name (Defining_Unit_Name
-                                           (Original_Node (Parent (Subp))))
-                            = Name_Constructor)
-       then
-          return False;
-       end if;
- 
-       First_Param := Implementation_Base_Type (Etype (First_Formal (Subp)));
-       return Scope (Subp) = Scope (First_Param)
-         and then Needs_Construction (First_Param);
-    end Is_Constructor_Procedure;
- 
     ---------------------------
     --  Is_Container_Element --
     ---------------------------
--- 16729,16734 ----
*************** package body Sem_Util is
*** 17009,17015 ****
  
        return Present (Ret_Typ)
          and then Is_CPP_Class (Ret_Typ)
!         and then Is_Constructor (Entity (Name (N)))
          and then Is_Imported (Entity (Name (N)));
     end Is_CPP_Constructor_Call;
  
--- 16996,17002 ----
  
        return Present (Ret_Typ)
          and then Is_CPP_Class (Ret_Typ)
!         and then Is_CPP_Constructor (Entity (Name (N)))
          and then Is_Imported (Entity (Name (N)));
     end Is_CPP_Constructor_Call;
  
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_util.ads gcc-16-20251123/gcc/ada/sem_util.ads
*** gcc-16-20251116/gcc/ada/sem_util.ads	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_util.ads	Sun Nov 23 22:32:08 2025
*************** package Sem_Util is
*** 1751,1759 ****
     --  package specification. The package must be on the scope stack, and the
     --  corresponding private part must not.
  
!    function Incomplete_Or_Partial_View (Id : Entity_Id) return Entity_Id;
     --  Given the entity of a constant or a type, retrieve the incomplete or
!    --  partial view of the same entity. Note that Id may not have a partial
     --  view in which case the function returns Empty.
  
     function Incomplete_View_From_Limited_With
--- 1751,1761 ----
     --  package specification. The package must be on the scope stack, and the
     --  corresponding private part must not.
  
!    function Incomplete_Or_Partial_View
!      (Id : Entity_Id; Partial_Only : Boolean := False) return Entity_Id;
     --  Given the entity of a constant or a type, retrieve the incomplete or
!    --  partial view of the same entity. If Partial_Only is True, retrieve
!    --  only the partial view of a type. Note that Id may not have a partial
     --  view in which case the function returns Empty.
  
     function Incomplete_View_From_Limited_With
*************** package Sem_Util is
*** 1921,1930 ****
     --  enumeration literal, or an expression composed of constant-bound
     --  subexpressions which are evaluated by means of standard operators.
  
-    function Is_Constructor_Procedure (Subp : Entity_Id) return Boolean;
-    --  Returns True if Subp's name directly references an attribute, has a
-    --  first in out formal that needs construction within the same scope.
- 
     function Is_Container_Element (Exp : Node_Id) return Boolean;
     --  This routine recognizes expressions that denote an element of one of
     --  the predefined containers, when the source only contains an indexing
--- 1923,1928 ----
diff -Nrcpad gcc-16-20251116/gcc/ada/sem_warn.adb gcc-16-20251123/gcc/ada/sem_warn.adb
*** gcc-16-20251116/gcc/ada/sem_warn.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sem_warn.adb	Sun Nov 23 22:32:08 2025
*************** package body Sem_Warn is
*** 1207,1215 ****
     begin
        --  No messages if warnings are suppressed, or if we have detected any
        --  real errors so far (this last check avoids junk messages resulting
!       --  from errors, e.g. a subunit that is not loaded).
  
!       if Warning_Mode = Suppress or else Serious_Errors_Detected /= 0 then
           return;
        end if;
  
--- 1207,1220 ----
     begin
        --  No messages if warnings are suppressed, or if we have detected any
        --  real errors so far (this last check avoids junk messages resulting
!       --  from errors, e.g. a subunit that is not loaded). No messages if
!       --  we are in preanalysis (warnings will be detected properly later,
!       --  during analysis).
  
!       if Warning_Mode = Suppress
!         or else Serious_Errors_Detected /= 0
!         or else not Full_Analysis
!       then
           return;
        end if;
  
diff -Nrcpad gcc-16-20251116/gcc/ada/sinfo.ads gcc-16-20251123/gcc/ada/sinfo.ads
*** gcc-16-20251116/gcc/ada/sinfo.ads	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/sinfo.ads	Sun Nov 23 22:32:08 2025
*************** package Sinfo is
*** 1739,1744 ****
--- 1739,1750 ----
     --    composed of interpolated string elements from string literals found
     --    in interpolated expressions.
  
+    --  Is_Interface_Pointer_Displacement
+    --    This flag is set in N_Type_Conversion nodes, and is used to indicate
+    --    that the type conversion was generated to displace the pointer to one
+    --    tagged object (pointer named "this" in the C++ terminology) from a
+    --    dispatch table to another dispatch table.
+ 
     --  Is_Known_Guaranteed_ABE
     --    Note: this flag is shared between the legacy ABE mechanism and the
     --    default ABE mechanism.
*************** package Sinfo is
*** 4757,4762 ****
--- 4763,4769 ----
        --  Do_Overflow_Check
        --  Rounded_Result
        --  Tag_Propagated
+       --  Is_Interface_Pointer_Displacement
        --  plus fields for expression
  
        --  Note: if a range check is required, then the Do_Range_Check flag
diff -Nrcpad gcc-16-20251116/gcc/ada/treepr.adb gcc-16-20251123/gcc/ada/treepr.adb
*** gcc-16-20251116/gcc/ada/treepr.adb	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/ada/treepr.adb	Sun Nov 23 22:32:08 2025
*************** package body Treepr is
*** 331,336 ****
--- 331,338 ----
              return "Ignore_SPARK_Mode_Pragmas";
           when F_Is_CPP_Class =>
              return "Is_CPP_Class";
+          when F_Is_CPP_Constructor =>
+             return "Is_CPP_Constructor";
           when F_Is_CUDA_Kernel =>
              return "Is_CUDA_Kernel";
           when F_Is_DIC_Procedure =>
diff -Nrcpad gcc-16-20251116/gcc/attr-callback.cc gcc-16-20251123/gcc/attr-callback.cc
*** gcc-16-20251116/gcc/attr-callback.cc	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/attr-callback.cc	Sun Nov 23 22:32:08 2025
*************** callback_special_case_attr (tree decl)
*** 83,88 ****
--- 83,97 ----
    gcc_unreachable ();
  }
  
+ /* Returns TRUE if the callee of E has a callback attribute.  */
+ bool
+ callback_edge_callee_has_attr (cgraph_edge *e)
+ {
+   return lookup_attribute (CALLBACK_ATTR_IDENT,
+ 			   DECL_ATTRIBUTES (e->callee->decl))
+ 	 || callback_is_special_cased (e->callee->decl, e->call_stmt);
+ }
+ 
  /* Given an instance of callback attribute, return the 0-based
     index of the called function in question.  */
  int
*************** bool
*** 344,354 ****
  callback_edge_useful_p (cgraph_edge *e)
  {
    gcc_checking_assert (e->callback);
!   /* If the edge is not pointing towards a clone, it is no longer useful as its
!      entire purpose is to produce clones of callbacks.  */
!   if (!e->callee->clone_of)
!     return false;
!   return true;
  }
  
  /* Returns the number of arguments the callback function described by ATTR
--- 353,371 ----
  callback_edge_useful_p (cgraph_edge *e)
  {
    gcc_checking_assert (e->callback);
!   /* If the edge is pointing towards a clone, it is useful.  */
!   if (e->callee->clone_of)
!     return true;
! 
!   /* If the callee has been produced by icf, the edge is useful, as it will be
!      used to for the redirection.  */
!   if (e->callee->icf_merged)
!     return true;
! 
!   /* In case some future pass redirects edges, it should be added as a case
!      here.  */
! 
!   return false;
  }
  
  /* Returns the number of arguments the callback function described by ATTR
diff -Nrcpad gcc-16-20251116/gcc/attr-callback.h gcc-16-20251123/gcc/attr-callback.h
*** gcc-16-20251116/gcc/attr-callback.h	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/attr-callback.h	Sun Nov 23 22:32:08 2025
*************** bool callback_is_special_cased (tree dec
*** 43,48 ****
--- 43,51 ----
  /* Returns an attribute for a special cased function.  */
  tree callback_special_case_attr (tree decl);
  
+ /* Returns TRUE if the callee of E has a callback attribute.  */
+ bool callback_edge_callee_has_attr (cgraph_edge *e);
+ 
  /* Given an instance of callback attribute, return the 0-based
     index of the called function in question.  */
  int callback_get_fn_index (tree cb_attr);
diff -Nrcpad gcc-16-20251116/gcc/attr-fnspec.h gcc-16-20251123/gcc/attr-fnspec.h
*** gcc-16-20251116/gcc/attr-fnspec.h	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/attr-fnspec.h	Sun Nov 23 22:32:08 2025
*************** private:
*** 74,80 ****
    const unsigned int arg_desc_size = 2;
  
    /* Return start of specifier of arg i.  */
!   unsigned int arg_idx (int i)
    {
      return return_desc_size + arg_desc_size * i;
    }
--- 74,80 ----
    const unsigned int arg_desc_size = 2;
  
    /* Return start of specifier of arg i.  */
!   unsigned int arg_idx (int i) const
    {
      return return_desc_size + arg_desc_size * i;
    }
*************** public:
*** 106,119 ****
  
    /* Return true if fn spec is known.  */
    bool
!   known_p ()
    {
      return len;
    }
  
    /* Return true if arg I is specified.  */
    bool
!   arg_specified_p (unsigned int i)
    {
      return len >= arg_idx (i + 1);
    }
--- 106,119 ----
  
    /* Return true if fn spec is known.  */
    bool
!   known_p () const
    {
      return len;
    }
  
    /* Return true if arg I is specified.  */
    bool
!   arg_specified_p (unsigned int i) const
    {
      return len >= arg_idx (i + 1);
    }
*************** public:
*** 121,127 ****
    /* True if the argument is not dereferenced recursively, thus only
       directly reachable memory is read or written.  */
    bool
!   arg_direct_p (unsigned int i)
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
--- 121,127 ----
    /* True if the argument is not dereferenced recursively, thus only
       directly reachable memory is read or written.  */
    bool
!   arg_direct_p (unsigned int i) const
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
*************** public:
*** 131,137 ****
  
    /* True if argument is used.  */
    bool
!   arg_used_p (unsigned int i)
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
--- 131,137 ----
  
    /* True if argument is used.  */
    bool
!   arg_used_p (unsigned int i) const
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
*************** public:
*** 140,146 ****
  
    /* True if memory reached by the argument is readonly (not clobbered).  */
    bool
!   arg_readonly_p (unsigned int i)
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
--- 140,146 ----
  
    /* True if memory reached by the argument is readonly (not clobbered).  */
    bool
!   arg_readonly_p (unsigned int i) const
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
*************** public:
*** 149,155 ****
  
    /* True if memory reached by the argument is read (directly or indirectly)  */
    bool
!   arg_maybe_read_p (unsigned int i)
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
--- 149,155 ----
  
    /* True if memory reached by the argument is read (directly or indirectly)  */
    bool
!   arg_maybe_read_p (unsigned int i) const
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
*************** public:
*** 160,166 ****
    /* True if memory reached by the argument is written.
       (directly or indirectly)  */
    bool
!   arg_maybe_written_p (unsigned int i)
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
--- 160,166 ----
    /* True if memory reached by the argument is written.
       (directly or indirectly)  */
    bool
!   arg_maybe_written_p (unsigned int i) const
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
*************** public:
*** 172,178 ****
    /* Return true if load of memory pointed to by argument I is bound
       by another argument.  In this case set ARG.  */
    bool
!   arg_max_access_size_given_by_arg_p (unsigned int i, unsigned int *arg)
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
--- 172,178 ----
    /* Return true if load of memory pointed to by argument I is bound
       by another argument.  In this case set ARG.  */
    bool
!   arg_max_access_size_given_by_arg_p (unsigned int i, unsigned int *arg) const
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
*************** public:
*** 188,194 ****
    /* Return true if the pointed-to type of the argument correspond to the
       size of the memory acccess.  */
    bool
!   arg_access_size_given_by_type_p (unsigned int i)
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
--- 188,194 ----
    /* Return true if the pointed-to type of the argument correspond to the
       size of the memory acccess.  */
    bool
!   arg_access_size_given_by_type_p (unsigned int i) const
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
*************** public:
*** 199,205 ****
       pointed to by a different argument (as in memcpy).
       In this case set ARG.  */
    bool
!   arg_copied_to_arg_p (unsigned int i, unsigned int *arg)
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
--- 199,205 ----
       pointed to by a different argument (as in memcpy).
       In this case set ARG.  */
    bool
!   arg_copied_to_arg_p (unsigned int i, unsigned int *arg) const
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
*************** public:
*** 212,218 ****
  
    /* True if the argument does not escape.  */
    bool
!   arg_noescape_p (unsigned int i)
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
--- 212,218 ----
  
    /* True if the argument does not escape.  */
    bool
!   arg_noescape_p (unsigned int i) const
    {
      unsigned int idx = arg_idx (i);
      gcc_checking_assert (arg_specified_p (i));
*************** public:
*** 224,230 ****
    /* Return true if function returns value of its parameter.  If ARG_NO is
       non-NULL return initialize it to the argument returned.  */
    bool
!   returns_arg (unsigned int *arg_no)
    {
      if (str[0] >= '1' && str[0] <= '4')
        {
--- 224,230 ----
    /* Return true if function returns value of its parameter.  If ARG_NO is
       non-NULL return initialize it to the argument returned.  */
    bool
!   returns_arg (unsigned int *arg_no) const
    {
      if (str[0] >= '1' && str[0] <= '4')
        {
*************** public:
*** 238,251 ****
    /* Nonzero if the return value does not alias with anything.  Functions
       with the malloc attribute have this set on their return value.  */
    bool
!   returns_noalias_p ()
    {
      return str[0] == 'm';
    }
  
    /* Return true if all memory read by the function is specified by fnspec.  */
    bool
!   global_memory_read_p ()
    {
      return str[1] != 'c' && str[1] != 'C';
    }
--- 238,251 ----
    /* Nonzero if the return value does not alias with anything.  Functions
       with the malloc attribute have this set on their return value.  */
    bool
!   returns_noalias_p () const
    {
      return str[0] == 'm';
    }
  
    /* Return true if all memory read by the function is specified by fnspec.  */
    bool
!   global_memory_read_p () const
    {
      return str[1] != 'c' && str[1] != 'C';
    }
*************** public:
*** 253,272 ****
    /* Return true if all memory written by the function
       is specified by fnspec.  */
    bool
!   global_memory_written_p ()
    {
      return str[1] != 'c' && str[1] != 'C' && str[1] != 'p' && str[1] != 'P';
    }
  
    bool
!   errno_maybe_written_p ()
    {
      return str[1] == 'C' || str[1] == 'P';
    }
  
    /* Return EAF flags for arg I.  */
    int
!   arg_eaf_flags (unsigned int i)
    {
      int flags = 0;
  
--- 253,272 ----
    /* Return true if all memory written by the function
       is specified by fnspec.  */
    bool
!   global_memory_written_p () const
    {
      return str[1] != 'c' && str[1] != 'C' && str[1] != 'p' && str[1] != 'P';
    }
  
    bool
!   errno_maybe_written_p () const
    {
      return str[1] == 'C' || str[1] == 'P';
    }
  
    /* Return EAF flags for arg I.  */
    int
!   arg_eaf_flags (unsigned int i) const
    {
      int flags = 0;
  
*************** public:
*** 292,298 ****
  
    /* Return the fnspec string.  */
    const char *
!   get_str ()
    {
      return str;
    }
--- 292,298 ----
  
    /* Return the fnspec string.  */
    const char *
!   get_str () const
    {
      return str;
    }
diff -Nrcpad gcc-16-20251116/gcc/c/ChangeLog gcc-16-20251123/gcc/c/ChangeLog
*** gcc-16-20251116/gcc/c/ChangeLog	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/c/ChangeLog	Sun Nov 23 22:32:08 2025
***************
*** 1,3 ****
--- 1,24 ----
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 	    Julian Brown  <julian@codesourcery.com>
+ 
+ 	* c-decl.cc (current_omp_declare_variant_attribute): Define.
+ 	* c-lang.h (struct c_omp_declare_variant_attr): Declare.
+ 	(current_omp_declare_variant_attribute): Declare.
+ 	* c-parser.cc (struct omp_begin_declare_variant_map_entry): New.
+ 	(omp_begin_declare_variant_map): New.
+ 	(c_parser_skip_to_pragma_omp_end_declare_variant): New.
+ 	(c_parser_translation_unit): Check for "omp begin declare variant"
+ 	with no matching "end".  Record base functions for variants.
+ 	(c_parser_declaration_or_fndef): Handle functions in "omp begin
+ 	declare variant" block.
+ 	(c_finish_omp_declare_variant): Merge context selectors with
+ 	surrounding "omp begin declare variant".
+ 	(JOIN_STR): Define.
+ 	(omp_start_variant_function): New.
+ 	(omp_finish_variant_function): New.
+ 	(c_parser_omp_begin): Handle "omp begin declare variant".
+ 	(c_parser_omp_end): Likewise.
+ 
  2025-11-10  Alejandro Colomar  <alx@kernel.org>
  
  	* c-parser.cc (c_parser_sizeof_expression): Remove function.
diff -Nrcpad gcc-16-20251116/gcc/c/c-decl.cc gcc-16-20251123/gcc/c/c-decl.cc
*** gcc-16-20251116/gcc/c/c-decl.cc	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/c/c-decl.cc	Sun Nov 23 22:32:08 2025
*************** vec<c_omp_declare_target_attr, va_gc> *c
*** 164,169 ****
--- 164,172 ----
     we are in.  */
  vec<c_omp_begin_assumes_data, va_gc> *current_omp_begin_assumes;
  
+ /* Vector of "omp begin/end declare variant" blocks we are in.  */
+ vec<c_omp_declare_variant_attr, va_gc> *current_omp_declare_variant_attribute;
+ 
  /* Vector of loop names with C_DECL_LOOP_NAME or C_DECL_SWITCH_NAME marked
     LABEL_DECL as the last and canonical for each loop or switch.  */
  static vec<tree> loop_names;
diff -Nrcpad gcc-16-20251116/gcc/c/c-lang.h gcc-16-20251123/gcc/c/c-lang.h
*** gcc-16-20251116/gcc/c/c-lang.h	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/c/c-lang.h	Sun Nov 23 22:32:08 2025
*************** struct GTY(()) c_omp_begin_assumes_data
*** 76,81 ****
--- 76,86 ----
    bool attr_syntax;
  };
  
+ struct GTY(()) c_omp_declare_variant_attr {
+   bool attr_syntax;
+   tree selector;
+ };
+ 
  /* If non-empty, implicit "omp declare target" attribute is added into the
     attribute lists.  */
  extern GTY(()) vec<c_omp_declare_target_attr, va_gc>
*************** extern GTY(()) vec<c_omp_declare_target_
*** 84,88 ****
--- 89,96 ----
     #pragma omp end assumes (and how many times when nested).  */
  extern GTY(()) vec<c_omp_begin_assumes_data, va_gc>
    *current_omp_begin_assumes;
+ /* And similarly for #pragma omp begin/end declare variant.  */
+ extern GTY(()) vec<c_omp_declare_variant_attr, va_gc>
+   *current_omp_declare_variant_attribute;
  
  #endif /* ! GCC_C_LANG_H */
diff -Nrcpad gcc-16-20251116/gcc/c/c-parser.cc gcc-16-20251123/gcc/c/c-parser.cc
*** gcc-16-20251116/gcc/c/c-parser.cc	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/c/c-parser.cc	Sun Nov 23 22:32:08 2025
*************** struct GTY(()) omp_attribute_pragma_stat
*** 286,291 ****
--- 286,304 ----
    unsigned int save_tokens_avail;
  };
  
+ /* Holds data for deferred lookup of base functions for OpenMP
+    "begin declare variant", which are permitted to be declared after
+    the variant.  */
+ struct GTY(()) omp_begin_declare_variant_map_entry {
+   tree variant;		/* The variant decl.  */
+   tree id;		/* Name of base function.  */
+   tree ctx;		/* The context selector associated with the variant.  */
+ };
+ vec<omp_begin_declare_variant_map_entry, va_gc> *omp_begin_declare_variant_map;
+ 
+ static tree omp_start_variant_function (c_declarator *, tree);
+ static void omp_finish_variant_function (tree, tree, tree);
+ 
  /* Return a pointer to the Nth token in PARSERs tokens_buf.  */
  
  c_token *
*************** c_parser_skip_to_pragma_eol (c_parser *p
*** 1521,1526 ****
--- 1534,1588 ----
    parser->error = false;
  }
  
+ /* Skip tokens up to and including "#pragma omp end declare variant".
+    Properly handle nested "#pragma omp begin declare variant" pragmas.  */
+ static void
+ c_parser_skip_to_pragma_omp_end_declare_variant (c_parser *parser)
+ {
+   for (int depth = 0; depth >= 0; )
+     {
+       c_token *token = c_parser_peek_token (parser);
+ 
+       switch (token->type)
+ 	{
+ 	case CPP_PRAGMA_EOL:
+ 	  if (!parser->in_pragma)
+ 	    break;
+ 	  /* FALLTHRU */
+ 	case CPP_EOF:
+ 	  /* If we've run out of tokens, stop.  */
+ 	  return;
+ 
+ 	case CPP_PRAGMA:
+ 	  if ((token->pragma_kind == PRAGMA_OMP_BEGIN
+ 	       || token->pragma_kind == PRAGMA_OMP_END)
+ 	      && c_parser_peek_nth_token (parser, 2)->type == CPP_NAME
+ 	      && c_parser_peek_nth_token (parser, 3)->type == CPP_NAME)
+ 	    {
+ 	      tree id1 = c_parser_peek_nth_token (parser, 2)->value;
+ 	      tree id2 = c_parser_peek_nth_token (parser, 3)->value;
+ 	      if (strcmp (IDENTIFIER_POINTER (id1), "declare") == 0
+ 		  && strcmp (IDENTIFIER_POINTER (id2), "variant") == 0)
+ 		{
+ 		  if (token->pragma_kind == PRAGMA_OMP_BEGIN)
+ 		    depth++;
+ 		  else
+ 		    depth--;
+ 		}
+ 	    }
+ 	  c_parser_consume_pragma (parser);
+ 	  c_parser_skip_to_pragma_eol (parser, false);
+ 	  continue;
+ 
+ 	default:
+ 	  break;
+ 	}
+ 
+       /* Consume the token.  */
+       c_parser_consume_token (parser);
+     }
+ }
+ 
  /* Skip tokens until we have consumed an entire block, or until we
     have consumed a non-nested ';'.  */
  
*************** c_parser_translation_unit (c_parser *par
*** 2052,2057 ****
--- 2114,2134 ----
  	       "#pragma omp begin assumes", "#pragma omp end assumes");
        vec_safe_truncate (current_omp_begin_assumes, 0);
      }
+   if (vec_safe_length (current_omp_declare_variant_attribute))
+     {
+       if (!errorcount)
+ 	error ("%<omp begin declare variant%> without corresponding "
+ 	       "%<omp end declare variant%>");
+       vec_safe_truncate (current_omp_declare_variant_attribute, 0);
+     }
+   if (vec_safe_length (omp_begin_declare_variant_map))
+     {
+       unsigned int i;
+       omp_begin_declare_variant_map_entry *e;
+       FOR_EACH_VEC_ELT (*omp_begin_declare_variant_map, i, e)
+ 	omp_finish_variant_function (e->variant, e->id, e->ctx);
+       vec_safe_truncate (omp_begin_declare_variant_map, 0);
+     }
  
  #if ENABLE_ANALYZER
    if (flag_analyzer)
*************** c_parser_declaration_or_fndef (c_parser
*** 3130,3135 ****
--- 3207,3227 ----
  	  pedwarn (here, OPT_Wpedantic, "ISO C forbids nested functions");
  	  c_push_function_context ();
  	}
+ 
+       /* If we're in an OpenMP "begin declare variant" block, the
+ 	 name in the declarator refers to the base function.  We need
+ 	 to save that and modify the declarator to have the mangled
+ 	 name for the variant function instead.  */
+       tree dv_base = NULL_TREE;
+       tree dv_ctx = NULL_TREE;
+       if (!vec_safe_is_empty (current_omp_declare_variant_attribute))
+ 	{
+ 	  c_omp_declare_variant_attr a
+ 	    = current_omp_declare_variant_attribute->last ();
+ 	  dv_ctx = copy_list (a.selector);
+ 	  dv_base = omp_start_variant_function (declarator, dv_ctx);
+ 	}
+ 
        if (!start_function (specs, declarator, all_prefix_attrs))
  	{
  	  /* At this point we've consumed:
*************** c_parser_declaration_or_fndef (c_parser
*** 3207,3212 ****
--- 3299,3314 ----
        DECL_STRUCT_FUNCTION (current_function_decl)->function_start_locus
  	= startloc;
        location_t endloc = startloc;
+       /* If this function was in a "begin declare variant" block,
+ 	 remember it.  We will associate it with the base function at
+ 	 the end of processing the translation unit, since it is permitted
+ 	 for the variant definition to appear before the base declaration.  */
+       if (dv_base && current_function_decl != error_mark_node)
+ 	{
+ 	  omp_begin_declare_variant_map_entry e
+ 	    = { current_function_decl, dv_base, dv_ctx };
+ 	  vec_safe_push (omp_begin_declare_variant_map, e);
+ 	}
  
        /* If the definition was marked with __RTL, use the RTL parser now,
  	 consuming the function body.  */
*************** c_finish_omp_declare_variant (c_parser *
*** 27445,27450 ****
--- 27547,27566 ----
  	    goto fail;
  	  ctx = omp_check_context_selector (match_loc, ctx,
  					    OMP_CTX_DECLARE_VARIANT);
+ 
+ 	  /* The OpenMP spec says the merging rules for enclosing
+ 	     "begin declare variant" contexts apply to "declare variant
+ 	     directives" -- the term it uses to refer to both directive
+ 	     forms.  */
+ 	  if (ctx != error_mark_node
+ 	      && !vec_safe_is_empty (current_omp_declare_variant_attribute))
+ 	    {
+ 	      c_omp_declare_variant_attr a
+ 		= current_omp_declare_variant_attribute->last ();
+ 	      tree outer_ctx = a.selector;
+ 	      ctx = omp_merge_context_selectors (match_loc, outer_ctx, ctx,
+ 						 OMP_CTX_DECLARE_VARIANT);
+ 	    }
  	}
        else if (ccode == adjust_args)
  	{
*************** c_finish_omp_declare_simd (c_parser *par
*** 27862,27867 ****
--- 27978,28067 ----
      clauses[0].type = CPP_PRAGMA;
  }
  
+ /* This is consistent with the C++ front end.  */
+ 
+ #if !defined (NO_DOT_IN_LABEL)
+ #define JOIN_STR "."
+ #elif !defined (NO_DOLLAR_IN_LABEL)
+ #define JOIN_STR "$"
+ #else
+ #define JOIN_STR "_"
+ #endif
+ 
+ /* Helper function for OpenMP "begin declare variant" directives.
+    Function definitions inside the construct need to have their names
+    mangled according to the context selector CTX.  The DECLARATOR is
+    modified in place to point to a new identifier; the original name of
+    the function is returned.  */
+ static tree
+ omp_start_variant_function (c_declarator *declarator, tree ctx)
+ {
+   c_declarator *id = declarator;
+   while (id->kind != cdk_id)
+     {
+       id = id->declarator;
+       gcc_assert (id);
+     }
+   tree name = id->u.id.id;
+   id->u.id.id = omp_mangle_variant_name (name, ctx, JOIN_STR);
+   return name;
+ }
+ 
+ /* Helper function for OpenMP "begin declare variant" directives.  Now
+    that we have a DECL for the variant function, and BASE_NAME for the
+    base function, add an "omp declare variant base" attribute pointing
+    at CTX to the base decl, and an "omp declare variant variant"
+    attribute to the variant DECL.  */
+ static void
+ omp_finish_variant_function (tree decl, tree base_name, tree ctx)
+ {
+   /* First look up BASE_NAME and ensure it matches DECL.  */
+   tree base_decl = lookup_name (base_name);
+   if (base_decl == error_mark_node)
+     base_decl = NULL_TREE;
+   if (!base_decl)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"no declaration of base function %qs",
+ 		IDENTIFIER_POINTER (base_name));
+       return;
+     }
+ 
+   if (!comptypes (TREE_TYPE (decl), TREE_TYPE (base_decl)))
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"variant function definition does not match "
+ 		"declaration of %qE", base_decl);
+       inform (DECL_SOURCE_LOCATION (base_decl),
+ 	      "%qE declared here", base_decl);
+       return;
+     }
+ 
+   /* Now set the attributes on the base and variant decls for the middle
+      end.  */
+   omp_check_for_duplicate_variant (DECL_SOURCE_LOCATION (decl),
+ 				   base_decl, ctx);
+   tree construct
+     = omp_get_context_selector_list (ctx, OMP_TRAIT_SET_CONSTRUCT);
+   omp_mark_declare_variant (DECL_SOURCE_LOCATION (decl), decl, construct);
+   tree attrs = DECL_ATTRIBUTES (base_decl);
+   tree match_loc_node
+     = maybe_wrap_with_location (integer_zero_node,
+ 				DECL_SOURCE_LOCATION (base_decl));
+   tree loc_node = tree_cons (match_loc_node, integer_zero_node,
+ 			     build_tree_list (match_loc_node,
+ 					      integer_zero_node));
+   attrs = tree_cons (get_identifier ("omp declare variant base"),
+ 		     tree_cons (decl, ctx, loc_node), attrs);
+   DECL_ATTRIBUTES (base_decl) = attrs;
+ 
+   /* Variant functions are essentially anonymous and cannot be referenced
+      outside the compilation unit.  */
+   TREE_PUBLIC (decl) = 0;
+   DECL_COMDAT (decl) = 0;
+ }
+ 
+ 
  /* D should be C_TOKEN_VEC from omp::decl attribute.  If it contains
     a threadprivate, groupprivate, allocate or declare target directive,
     return true and parse it for DECL.  */
*************** c_parser_omp_declare_target (c_parser *p
*** 28094,28100 ****
  /* OpenMP 5.1
     #pragma omp begin assumes clauses[optseq] new-line
  
!    #pragma omp begin declare target clauses[optseq] new-line  */
  
  #define OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK			\
  	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE_TYPE)	\
--- 28294,28302 ----
  /* OpenMP 5.1
     #pragma omp begin assumes clauses[optseq] new-line
  
!    #pragma omp begin declare target clauses[optseq] new-line
! 
!    #pragma omp begin declare variant match (context-selector) new-line  */
  
  #define OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK			\
  	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE_TYPE)	\
*************** c_parser_omp_begin (c_parser *parser)
*** 28134,28144 ****
  					     indirect };
  	  vec_safe_push (current_omp_declare_target_attribute, attr);
  	}
!       else
  	{
! 	  c_parser_error (parser, "expected %<target%>");
  	  c_parser_skip_to_pragma_eol (parser);
  	}
      }
    else if (strcmp (p, "assumes") == 0)
      {
--- 28336,28412 ----
  					     indirect };
  	  vec_safe_push (current_omp_declare_target_attribute, attr);
  	}
!       else if (strcmp (p, "variant") == 0)
  	{
! 	  c_parser_consume_token (parser);
! 	  const char *clause = "";
! 	  matching_parens parens;
! 	  location_t match_loc = c_parser_peek_token (parser)->location;
! 	  if (c_parser_next_token_is (parser, CPP_COMMA))
! 	    c_parser_consume_token (parser);
! 	  if (c_parser_next_token_is (parser, CPP_NAME))
! 	    {
! 	      tree id = c_parser_peek_token (parser)->value;
! 	      clause = IDENTIFIER_POINTER (id);
! 	    }
! 	  if (strcmp (clause, "match") != 0)
! 	    {
! 	      c_parser_error (parser, "expected %<match%>");
! 	      c_parser_skip_to_pragma_eol (parser);
! 	      return;
! 	    }
! 
! 	  c_parser_consume_token (parser);
! 
! 	  if (!parens.require_open (parser))
! 	    {
! 	      c_parser_skip_to_pragma_eol (parser, false);
! 	      return;
! 	    }
! 
! 	  tree ctx =
! 	    c_parser_omp_context_selector_specification (parser, NULL_TREE);
! 	  if (ctx != error_mark_node)
! 	    ctx = omp_check_context_selector (match_loc, ctx,
! 					      OMP_CTX_BEGIN_DECLARE_VARIANT);
! 
! 	  if (ctx != error_mark_node
! 	      && !vec_safe_is_empty (current_omp_declare_variant_attribute))
! 	    {
! 	      c_omp_declare_variant_attr a
! 		= current_omp_declare_variant_attribute->last ();
! 	      tree outer_ctx = a.selector;
! 	      ctx = omp_merge_context_selectors (match_loc, outer_ctx, ctx,
! 						 OMP_CTX_BEGIN_DECLARE_VARIANT);
! 	    }
! 
! 	  if (ctx == error_mark_node
! 	      || !omp_context_selector_matches (ctx, NULL_TREE, false, true))
! 	    {
! 	      /* The context is either invalid or cannot possibly match.
! 		 In the latter case the spec says all code in the begin/end
! 		 sequence will be elided.  In the former case we'll get bogus
! 		 errors from trying to parse it without a valid context to
! 		 use for name-mangling, so elide that too.  */
! 	      c_parser_skip_to_pragma_eol (parser, false);
! 	      c_parser_skip_to_pragma_omp_end_declare_variant (parser);
! 	      return;
! 	    }
! 	  else
! 	    {
! 	      bool attr_syntax = parser->in_omp_attribute_pragma != NULL;
! 	      c_omp_declare_variant_attr a = { attr_syntax, ctx };
! 	      vec_safe_push (current_omp_declare_variant_attribute, a);
! 	    }
! 
! 	  parens.require_close (parser);
  	  c_parser_skip_to_pragma_eol (parser);
  	}
+       else
+ 	{
+ 	  c_parser_error (parser, "expected %<target%> or %<variant%>");
+ 	  c_parser_skip_to_pragma_eol (parser, false);
+ 	}
      }
    else if (strcmp (p, "assumes") == 0)
      {
*************** c_parser_omp_begin (c_parser *parser)
*** 28150,28156 ****
      }
    else
      {
!       c_parser_error (parser, "expected %<declare target%> or %<assumes%>");
        c_parser_skip_to_pragma_eol (parser);
      }
  }
--- 28418,28425 ----
      }
    else
      {
!       c_parser_error (parser, "expected %<declare target%>, "
! 		      "%<declare variant%>, or %<assumes%>");
        c_parser_skip_to_pragma_eol (parser);
      }
  }
*************** c_parser_omp_begin (c_parser *parser)
*** 28159,28165 ****
     #pragma omp end declare target
  
     OpenMP 5.1
!    #pragma omp end assumes  */
  
  static void
  c_parser_omp_end (c_parser *parser)
--- 28428,28435 ----
     #pragma omp end declare target
  
     OpenMP 5.1
!    #pragma omp end assumes
!    #pragma omp end declare variant  */
  
  static void
  c_parser_omp_end (c_parser *parser)
*************** c_parser_omp_end (c_parser *parser)
*** 28172,28215 ****
    if (strcmp (p, "declare") == 0)
      {
        c_parser_consume_token (parser);
!       if (c_parser_next_token_is (parser, CPP_NAME)
! 	  && strcmp (IDENTIFIER_POINTER (c_parser_peek_token (parser)->value),
! 		     "target") == 0)
! 	c_parser_consume_token (parser);
!       else
  	{
! 	  c_parser_error (parser, "expected %<target%>");
  	  c_parser_skip_to_pragma_eol (parser);
! 	  return;
  	}
!       bool attr_syntax = parser->in_omp_attribute_pragma != NULL;
!       c_parser_skip_to_pragma_eol (parser);
!       if (!vec_safe_length (current_omp_declare_target_attribute))
! 	error_at (loc, "%<#pragma omp end declare target%> without "
! 		       "corresponding %<#pragma omp declare target%> or "
! 		       "%<#pragma omp begin declare target%>");
!       else
  	{
! 	  c_omp_declare_target_attr
! 	    a = current_omp_declare_target_attribute->pop ();
! 	  if (a.attr_syntax != attr_syntax)
  	    {
! 	      if (a.attr_syntax)
! 		error_at (loc,
! 			  "%qs in attribute syntax terminated "
! 			  "with %qs in pragma syntax",
! 			  a.device_type >= 0 ? "begin declare target"
! 					     : "declare target",
! 			  "end declare target");
! 	      else
! 		error_at (loc,
! 			  "%qs in pragma syntax terminated "
! 			  "with %qs in attribute syntax",
! 			  a.device_type >= 0 ? "begin declare target"
! 					     : "declare target",
! 			  "end declare target");
  	    }
  	}
      }
    else if (strcmp (p, "assumes") == 0)
      {
--- 28442,28515 ----
    if (strcmp (p, "declare") == 0)
      {
        c_parser_consume_token (parser);
!       p = "";
!       if (c_parser_next_token_is (parser, CPP_NAME))
! 	p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
!       if (strcmp (p, "target") == 0)
  	{
! 	  c_parser_consume_token (parser);
! 	  bool attr_syntax = parser->in_omp_attribute_pragma != NULL;
  	  c_parser_skip_to_pragma_eol (parser);
! 	  if (!vec_safe_length (current_omp_declare_target_attribute))
! 	    error_at (loc, "%<#pragma omp end declare target%> without "
! 		      "corresponding %<#pragma omp declare target%> or "
! 		      "%<#pragma omp begin declare target%>");
! 	  else
! 	    {
! 	      c_omp_declare_target_attr
! 		a = current_omp_declare_target_attribute->pop ();
! 	      if (a.attr_syntax != attr_syntax)
! 		{
! 		  if (a.attr_syntax)
! 		    error_at (loc,
! 			      "%qs in attribute syntax terminated "
! 			      "with %qs in pragma syntax",
! 			      a.device_type >= 0 ? "begin declare target"
! 						 : "declare target",
! 			      "end declare target");
! 		  else
! 		    error_at (loc,
! 			      "%qs in pragma syntax terminated "
! 			      "with %qs in attribute syntax",
! 			      a.device_type >= 0 ? "begin declare target"
! 						 : "declare target",
! 			      "end declare target");
! 		}
! 	    }
  	}
!       else if (strcmp (p, "variant") == 0)
  	{
! 	  c_parser_consume_token (parser);
! 	  bool attr_syntax = parser->in_omp_attribute_pragma != NULL;
! 	  c_parser_skip_to_pragma_eol (parser);
! 	  if (!vec_safe_length (current_omp_declare_variant_attribute))
! 	    error_at (loc, "%<#pragma omp end declare variant%> without "
! 		      "corresponding %<#pragma omp begin declare variant%>");
! 	  else
  	    {
! 	      c_omp_declare_variant_attr
! 		a = current_omp_declare_variant_attribute->pop ();
! 	      if (a.attr_syntax != attr_syntax)
! 		{
! 		  if (a.attr_syntax)
! 		    error_at (loc,
! 			      "%<begin declare variant%> in attribute syntax "
! 			      "terminated with "
! 			      "%<end declare variant%> in pragma syntax");
! 		  else
! 		    error_at (loc,
! 			      "%<begin declare variant%> in pragma syntax "
! 			      "terminated with "
! 			      "%<end declare variant%> in attribute syntax");
! 		}
  	    }
  	}
+       else
+ 	{
+ 	  c_parser_error (parser, "expected %<target%> or %<variant%>");
+ 	  c_parser_skip_to_pragma_eol (parser);
+ 	  return;
+ 	}
      }
    else if (strcmp (p, "assumes") == 0)
      {
diff -Nrcpad gcc-16-20251116/gcc/c-family/ChangeLog gcc-16-20251123/gcc/c-family/ChangeLog
*** gcc-16-20251116/gcc/c-family/ChangeLog	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/c-family/ChangeLog	Sun Nov 23 22:32:08 2025
***************
*** 1,3 ****
--- 1,10 ----
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 	    Julian Brown  <julian@codesourcery.com>
+ 	    waffl3x  <waffl3x@baylibre.com>
+ 
+ 	* c-omp.cc (c_omp_directives): Uncomment "begin declare variant"
+ 	and "end declare variant".
+ 
  2025-11-11  Alejandro Colomar  <alx@kernel.org>
  
  	* c-warn.cc (warn_parms_array_mismatch): Split out body of
diff -Nrcpad gcc-16-20251116/gcc/c-family/c-omp.cc gcc-16-20251123/gcc/c-family/c-omp.cc
*** gcc-16-20251116/gcc/c-family/c-omp.cc	Sun Nov 16 22:32:52 2025
--- gcc-16-20251123/gcc/c-family/c-omp.cc	Sun Nov 23 22:32:08 2025
*************** const struct c_omp_directive c_omp_direc
*** 4602,4609 ****
      C_OMP_DIR_INFORMATIONAL, false },
    { "begin", "declare", "target", PRAGMA_OMP_BEGIN,
      C_OMP_DIR_DECLARATIVE, false },
!   /* { "begin", "declare", "variant", PRAGMA_OMP_BEGIN,
!     C_OMP_DIR_DECLARATIVE, false }, */
    /* 'begin metadirective' is not yet implemented; however,
       it is only applicable if an end-directive exists, but
       metadirectives are of limited use for declarative directives.  */
--- 4602,4609 ----
      C_OMP_DIR_INFORMATIONAL, false },
    { "begin", "declare", "target", PRAGMA_OMP_BEGIN,
      C_OMP_DIR_DECLARATIVE, false },
!   { "begin", "declare", "variant", PRAGMA_OMP_BEGIN,
!     C_OMP_DIR_DECLARATIVE, false },
    /* 'begin metadirective' is not yet implemented; however,
       it is only applicable if an end-directive exists, but
       metadirectives are of limited use for declarative directives.  */
*************** const struct c_omp_directive c_omp_direc
*** 4637,4644 ****
      C_OMP_DIR_INFORMATIONAL, false },
    { "end", "declare", "target", PRAGMA_OMP_END,
      C_OMP_DIR_DECLARATIVE, false },
!   /* { "end", "declare", "variant", PRAGMA_OMP_END,
!     C_OMP_DIR_DECLARATIVE, false }, */
    /* { "end", "metadirective", nullptr, PRAGMA_OMP_END,
      C_OMP_DIR_META, false },  */
    /* error with at(execution) is C_OMP_DIR_STANDALONE.  */
--- 4637,4644 ----
      C_OMP_DIR_INFORMATIONAL, false },
    { "end", "declare", "target", PRAGMA_OMP_END,
      C_OMP_DIR_DECLARATIVE, false },
!   { "end", "declare", "variant", PRAGMA_OMP_END,
!     C_OMP_DIR_DECLARATIVE, false },
    /* { "end", "metadirective", nullptr, PRAGMA_OMP_END,
      C_OMP_DIR_META, false },  */
    /* error with at(execution) is C_OMP_DIR_STANDALONE.  */
diff -Nrcpad gcc-16-20251116/gcc/cfgloop.cc gcc-16-20251123/gcc/cfgloop.cc
*** gcc-16-20251116/gcc/cfgloop.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/cfgloop.cc	Sun Nov 23 22:32:08 2025
*************** single_exit (const class loop *loop)
*** 1805,1813 ****
      return NULL;
  }
  
! /* Returns true when BB has an incoming edge exiting LOOP.  */
  
! bool
  loop_exits_to_bb_p (class loop *loop, basic_block bb)
  {
    edge e;
--- 1805,1814 ----
      return NULL;
  }
  
! /* Returns incoming edge when BB has an incoming edge exiting LOOP, else return
!    NULL.  */
  
! edge
  loop_exits_to_bb_p (class loop *loop, basic_block bb)
  {
    edge e;
*************** loop_exits_to_bb_p (class loop *loop, ba
*** 1815,1828 ****
  
    FOR_EACH_EDGE (e, ei, bb->preds)
      if (loop_exit_edge_p (loop, e))
!       return true;
  
!   return false;
  }
  
! /* Returns true when BB has an outgoing edge exiting LOOP.  */
  
! bool
  loop_exits_from_bb_p (class loop *loop, basic_block bb)
  {
    edge e;
--- 1816,1830 ----
  
    FOR_EACH_EDGE (e, ei, bb->preds)
      if (loop_exit_edge_p (loop, e))
!       return e;
  
!   return NULL;
  }
  
! /* Returns outgoing edge when BB has an outgoing edge exiting LOOP, else return
!    NULL.  */
  
! edge
  loop_exits_from_bb_p (class loop *loop, basic_block bb)
  {
    edge e;
*************** loop_exits_from_bb_p (class loop *loop,
*** 1830,1838 ****
  
    FOR_EACH_EDGE (e, ei, bb->succs)
      if (loop_exit_edge_p (loop, e))
!       return true;
  
!   return false;
  }
  
  /* Return location corresponding to the loop control condition if possible.  */
--- 1832,1840 ----
  
    FOR_EACH_EDGE (e, ei, bb->succs)
      if (loop_exit_edge_p (loop, e))
!       return e;
  
!   return NULL;
  }
  
  /* Return location corresponding to the loop control condition if possible.  */
diff -Nrcpad gcc-16-20251116/gcc/cfgloop.h gcc-16-20251123/gcc/cfgloop.h
*** gcc-16-20251116/gcc/cfgloop.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/cfgloop.h	Sun Nov 23 22:32:08 2025
*************** extern int num_loop_insns (const class l
*** 370,377 ****
  extern int average_num_loop_insns (const class loop *);
  extern unsigned get_loop_level (const class loop *);
  extern bool loop_exit_edge_p (const class loop *, const_edge);
! extern bool loop_exits_to_bb_p (class loop *, basic_block);
! extern bool loop_exits_from_bb_p (class loop *, basic_block);
  extern void mark_loop_exit_edges (void);
  extern dump_user_location_t get_loop_location (class loop *loop);
  
--- 370,377 ----
  extern int average_num_loop_insns (const class loop *);
  extern unsigned get_loop_level (const class loop *);
  extern bool loop_exit_edge_p (const class loop *, const_edge);
! extern edge loop_exits_to_bb_p (class loop *, basic_block);
! extern edge loop_exits_from_bb_p (class loop *, basic_block);
  extern void mark_loop_exit_edges (void);
  extern dump_user_location_t get_loop_location (class loop *loop);
  
diff -Nrcpad gcc-16-20251116/gcc/cgraph.cc gcc-16-20251123/gcc/cgraph.cc
*** gcc-16-20251116/gcc/cgraph.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/cgraph.cc	Sun Nov 23 22:32:08 2025
*************** cgraph_add_edge_to_call_site_hash (cgrap
*** 885,893 ****
        gcc_assert (edge->speculative || edge->has_callback);
        if (edge->has_callback)
  	/* If the slot is already occupied, then the hashed edge is the
! 	   callback-carrying edge, which is desired behavior, so we can safely
! 	   return.  */
! 	gcc_checking_assert (edge == e);
        if (e->callee && (!e->prev_callee
  			|| !e->prev_callee->speculative
  			|| e->prev_callee->call_stmt != e->call_stmt))
--- 885,894 ----
        gcc_assert (edge->speculative || edge->has_callback);
        if (edge->has_callback)
  	/* If the slot is already occupied, then the hashed edge is the
! 	   callback-carrying edge, which is desired behavior.  In some cases,
! 	   the callback flag of E is not set yet and so the early exit above is
! 	   not taken.  */
! 	return;
        if (e->callee && (!e->prev_callee
  			|| !e->prev_callee->speculative
  			|| e->prev_callee->call_stmt != e->call_stmt))
diff -Nrcpad gcc-16-20251116/gcc/cgraph.h gcc-16-20251123/gcc/cgraph.h
*** gcc-16-20251116/gcc/cgraph.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/cgraph.h	Sun Nov 23 22:32:08 2025
*************** struct GTY(()) cgraph_simd_clone_arg {
*** 805,811 ****
    /* For arg_type SIMD_CLONE_ARG_TYPE_LINEAR_*CONSTANT_STEP this is
       the constant linear step, if arg_type is
       SIMD_CLONE_ARG_TYPE_LINEAR_*VARIABLE_STEP, this is index of
!      the uniform argument holding the step, otherwise 0.  */
    HOST_WIDE_INT linear_step;
  };
  
--- 805,813 ----
    /* For arg_type SIMD_CLONE_ARG_TYPE_LINEAR_*CONSTANT_STEP this is
       the constant linear step, if arg_type is
       SIMD_CLONE_ARG_TYPE_LINEAR_*VARIABLE_STEP, this is index of
!      the uniform argument holding the step, otherwise 0.
!      For arg_type SIMD_CLONE_ARG_TYPE_MASK and a mask_mode that is
!      not VOIDmode, this is the number of mask arguments.  */
    HOST_WIDE_INT linear_step;
  };
  
diff -Nrcpad gcc-16-20251116/gcc/cobol/ChangeLog gcc-16-20251123/gcc/cobol/ChangeLog
*** gcc-16-20251116/gcc/cobol/ChangeLog	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/cobol/ChangeLog	Sun Nov 23 22:32:08 2025
***************
*** 1,3 ****
--- 1,13 ----
+ 2025-11-17  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/122702
+ 	* Make-lang.in: Move stored-char-length.cbl to libgcobol.
+ 
+ 2025-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* symbols.cc (symbol_table_init): Avoid arithmetics or
+ 	bitwise operations between enumerators from different enums.
+ 
  2025-11-15  Jakub Jelinek  <jakub@redhat.com>
  
  	PR cobol/122691
diff -Nrcpad gcc-16-20251116/gcc/cobol/Make-lang.in gcc-16-20251123/gcc/cobol/Make-lang.in
*** gcc-16-20251116/gcc/cobol/Make-lang.in	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/cobol/Make-lang.in	Sun Nov 23 22:32:08 2025
*************** cobol.install-common: installdirs
*** 301,308 ****
  	      $(LN) $(GCOBC_INSTALL_NAME)$(exeext) $(GCOBC_TARGET_INSTALL_NAME)$(exeext) ); \
  	  fi; \
  	fi
- 	mkdir -p $(DESTDIR)$(datadir)/gcobol/udf
- 	$(INSTALL_DATA) $(srcdir)/cobol/udf/*   $(DESTDIR)$(datadir)/gcobol/udf/
  
  cobol.install-man: installdirs
  	$(INSTALL_DATA) $(srcdir)/cobol/gcobol.1 $(DESTDIR)$(man1dir)/$(GCOBOL_INSTALL_NAME)$(man1ext)
--- 301,306 ----
diff -Nrcpad gcc-16-20251116/gcc/cobol/symbols.cc gcc-16-20251123/gcc/cobol/symbols.cc
*** gcc-16-20251116/gcc/cobol/symbols.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/cobol/symbols.cc	Sun Nov 23 22:32:08 2025
*************** symbol_table_init(void) {
*** 2270,2289 ****
  
    // These should match the definitions in libgcobol/constants.cc
    static cbl_field_t constants[] = {
!     { FldAlphanumeric, space_value_e | constq | register_e,
        {1,1,0,0, " \0\xFF"}, 0, "SPACE" },
!     { FldAlphanumeric, space_value_e | constq | register_e,
        {1,1,0,0, " \0\xFF"}, 0, "SPACES" },
!     { FldAlphanumeric, low_value_e | constq | register_e,
        {1,1,0,0, "L\0\xFF"}, 0, "LOW_VALUES" },
!     { FldAlphanumeric, zero_value_e | constq | register_e,
        {1,1,0,0, "0"}, 0, "ZEROS" },
!     { FldAlphanumeric, high_value_e | constq | register_e,
        {1,1,0,0, "H\0\xFF"}, 0, "HIGH_VALUES" },
      // IBM standard: QUOTE is a double-quote unless APOST compiler option
!     { FldAlphanumeric, quote_value_e | constq | register_e ,
        {1,1,0,0, "\"\0\xFF"}, 0, "QUOTES" },
!     { FldPointer, constq | register_e ,
        {8,8,0,0, zeroes_for_null_pointer}, 0, "NULLS" },
      // IBM defines TALLY
      // 01  TALLY GLOBAL PICTURE 9(5) USAGE BINARY VALUE ZERO.
--- 2270,2289 ----
  
    // These should match the definitions in libgcobol/constants.cc
    static cbl_field_t constants[] = {
!     { FldAlphanumeric, space_value_e | int(constq) | register_e,
        {1,1,0,0, " \0\xFF"}, 0, "SPACE" },
!     { FldAlphanumeric, space_value_e | int(constq) | register_e,
        {1,1,0,0, " \0\xFF"}, 0, "SPACES" },
!     { FldAlphanumeric, low_value_e | int(constq) | register_e,
        {1,1,0,0, "L\0\xFF"}, 0, "LOW_VALUES" },
!     { FldAlphanumeric, zero_value_e | int(constq) | register_e,
        {1,1,0,0, "0"}, 0, "ZEROS" },
!     { FldAlphanumeric, high_value_e | int(constq) | register_e,
        {1,1,0,0, "H\0\xFF"}, 0, "HIGH_VALUES" },
      // IBM standard: QUOTE is a double-quote unless APOST compiler option
!     { FldAlphanumeric, quote_value_e | int(constq) | register_e ,
        {1,1,0,0, "\"\0\xFF"}, 0, "QUOTES" },
!     { FldPointer, int(constq) | register_e ,
        {8,8,0,0, zeroes_for_null_pointer}, 0, "NULLS" },
      // IBM defines TALLY
      // 01  TALLY GLOBAL PICTURE 9(5) USAGE BINARY VALUE ZERO.
*************** symbol_table_init(void) {
*** 2421,2429 ****
      { FldNumericBin5,    signable_e|register_e, {2,2,4,0, NULL}, 0, "RETURN-CODE" },
      { FldNumericBin5,    register_e, {2,2,4,0, NULL}, 0, "LINAGE-COUNTER" },
      { FldLiteralA,        register_e, {0,0,0,0, "/dev/stdin"}, 0, "_dev_stdin" },
!     { FldLiteralA, constq|register_e, {0,0,0,0, "/dev/stdout"}, 0, "_dev_stdout" },
!     { FldLiteralA, constq|register_e, {0,0,0,0, "/dev/stderr"}, 0, "_dev_stderr" },
!     { FldLiteralA, constq|register_e, {0,0,0,0, "/dev/null"},   0, "_dev_null" },
    };
  
    assert(table.nelem + COUNT_OF(special_registers) < table.capacity);
--- 2421,2429 ----
      { FldNumericBin5,    signable_e|register_e, {2,2,4,0, NULL}, 0, "RETURN-CODE" },
      { FldNumericBin5,    register_e, {2,2,4,0, NULL}, 0, "LINAGE-COUNTER" },
      { FldLiteralA,        register_e, {0,0,0,0, "/dev/stdin"}, 0, "_dev_stdin" },
!     { FldLiteralA, int(constq)|register_e, {0,0,0,0, "/dev/stdout"}, 0, "_dev_stdout" },
!     { FldLiteralA, int(constq)|register_e, {0,0,0,0, "/dev/stderr"}, 0, "_dev_stderr" },
!     { FldLiteralA, int(constq)|register_e, {0,0,0,0, "/dev/null"},   0, "_dev_null" },
    };
  
    assert(table.nelem + COUNT_OF(special_registers) < table.capacity);
diff -Nrcpad gcc-16-20251116/gcc/collect2.cc gcc-16-20251123/gcc/collect2.cc
*** gcc-16-20251116/gcc/collect2.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/collect2.cc	Sun Nov 23 22:32:08 2025
*************** main (int argc, char **argv)
*** 777,782 ****
--- 777,783 ----
        USE_BFD_LD,
        USE_LLD_LD,
        USE_MOLD_LD,
+       USE_WILD_LD,
        USE_LD_MAX
      } selected_linker = USE_DEFAULT_LD;
    static const char *const ld_suffixes[USE_LD_MAX] =
*************** main (int argc, char **argv)
*** 786,792 ****
        "ld.gold",
        "ld.bfd",
        "ld.lld",
!       "ld.mold"
      };
    static const char *const real_ld_suffix = "real-ld";
    static const char *const collect_ld_suffix = "collect-ld";
--- 787,794 ----
        "ld.gold",
        "ld.bfd",
        "ld.lld",
!       "ld.mold",
!       "wild"
      };
    static const char *const real_ld_suffix = "real-ld";
    static const char *const collect_ld_suffix = "collect-ld";
*************** main (int argc, char **argv)
*** 868,874 ****
  #ifdef CROSS_DIRECTORY_STRUCTURE
      /* lld and mold are platform-agnostic and not prefixed with target
         triple.  */
!     if (!(i == USE_LLD_LD || i == USE_MOLD_LD))
        full_ld_suffixes[i] = concat (target_machine, "-", ld_suffixes[i],
  				    NULL);
      else
--- 870,876 ----
  #ifdef CROSS_DIRECTORY_STRUCTURE
      /* lld and mold are platform-agnostic and not prefixed with target
         triple.  */
!     if (!(i == USE_LLD_LD || i == USE_MOLD_LD || i == USE_WILD_LD))
        full_ld_suffixes[i] = concat (target_machine, "-", ld_suffixes[i],
  				    NULL);
      else
*************** main (int argc, char **argv)
*** 964,969 ****
--- 966,973 ----
  	  selected_linker = USE_LLD_LD;
  	else if (strcmp (argv[i], "-fuse-ld=mold") == 0)
  	  selected_linker = USE_MOLD_LD;
+ 	else if (strcmp (argv[i], "-fuse-ld=wild") == 0)
+ 	  selected_linker = USE_WILD_LD;
  	else if (startswith (argv[i], "-o"))
  	  {
  	    /* Parse the output filename if it's given so that we can make
*************** main (int argc, char **argv)
*** 1056,1062 ****
    ld_file_name = 0;
  #ifdef DEFAULT_LINKER
    if (selected_linker == USE_BFD_LD || selected_linker == USE_GOLD_LD ||
!       selected_linker == USE_LLD_LD || selected_linker == USE_MOLD_LD)
      {
        char *linker_name;
  # ifdef HOST_EXECUTABLE_SUFFIX
--- 1060,1067 ----
    ld_file_name = 0;
  #ifdef DEFAULT_LINKER
    if (selected_linker == USE_BFD_LD || selected_linker == USE_GOLD_LD ||
!       selected_linker == USE_LLD_LD || selected_linker == USE_MOLD_LD ||
!       selected_linker == USE_WILD_LD)
      {
        char *linker_name;
  # ifdef HOST_EXECUTABLE_SUFFIX
*************** main (int argc, char **argv)
*** 1293,1299 ****
  	      else if (!use_collect_ld
  		       && startswith (arg, "-fuse-ld="))
  		{
! 		  /* Do not pass -fuse-ld={bfd|gold|lld|mold} to the linker. */
  		  ld1--;
  		  ld2--;
  		}
--- 1298,1304 ----
  	      else if (!use_collect_ld
  		       && startswith (arg, "-fuse-ld="))
  		{
! 		  /* Do not pass -fuse-ld={bfd|gold|lld|mold|wild} to the linker. */
  		  ld1--;
  		  ld2--;
  		}
diff -Nrcpad gcc-16-20251116/gcc/common/config/i386/i386-common.cc gcc-16-20251123/gcc/common/config/i386/i386-common.cc
*** gcc-16-20251116/gcc/common/config/i386/i386-common.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/common/config/i386/i386-common.cc	Sun Nov 23 22:32:08 2025
*************** const pta processor_alias_table[] =
*** 2274,2280 ****
    {"wildcatlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
      M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    {"novalake", PROCESSOR_NOVALAKE, CPU_HASWELL, PTA_NOVALAKE,
!     M_CPU_SUBTYPE (INTEL_COREI7_NOVALAKE), P_PROC_AVX2},
    {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
      M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
    {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
--- 2274,2280 ----
    {"wildcatlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
      M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    {"novalake", PROCESSOR_NOVALAKE, CPU_HASWELL, PTA_NOVALAKE,
!     M_CPU_SUBTYPE (INTEL_COREI7_NOVALAKE), P_PROC_AVX10_1},
    {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
      M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
    {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
diff -Nrcpad gcc-16-20251116/gcc/common/config/i386/i386-cpuinfo.h gcc-16-20251123/gcc/common/config/i386/i386-cpuinfo.h
*** gcc-16-20251116/gcc/common/config/i386/i386-cpuinfo.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/common/config/i386/i386-cpuinfo.h	Sun Nov 23 22:32:08 2025
*************** enum processor_features
*** 285,291 ****
  
  #define M_CPU_TYPE_START (BUILTIN_VENDOR_MAX)
  #define M_CPU_SUBTYPE_START \
!   (M_CPU_TYPE_START + BUILTIN_CPU_TYPE_MAX)
  #define M_VENDOR(a) (a)
! #define M_CPU_TYPE(a) (M_CPU_TYPE_START + a)
  #define M_CPU_SUBTYPE(a) (M_CPU_SUBTYPE_START + a)
--- 285,291 ----
  
  #define M_CPU_TYPE_START (BUILTIN_VENDOR_MAX)
  #define M_CPU_SUBTYPE_START \
!   (M_CPU_TYPE_START + int (BUILTIN_CPU_TYPE_MAX))
  #define M_VENDOR(a) (a)
! #define M_CPU_TYPE(a) (M_CPU_TYPE_START + int (a))
  #define M_CPU_SUBTYPE(a) (M_CPU_SUBTYPE_START + a)
diff -Nrcpad gcc-16-20251116/gcc/common.opt gcc-16-20251123/gcc/common.opt
*** gcc-16-20251116/gcc/common.opt	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/common.opt	Sun Nov 23 22:32:08 2025
*************** fuse-ld=mold
*** 3448,3453 ****
--- 3448,3457 ----
  Common Driver Negative(fuse-ld=mold)
  Use the Modern linker (MOLD) linker instead of the default linker.
  
+ fuse-ld=wild
+ Common Driver Negative(fuse-ld=wild)
+ Use the Wild linker instead of the default linker.
+ 
  fuse-linker-plugin
  Common Undocumented Var(flag_use_linker_plugin)
  
diff -Nrcpad gcc-16-20251116/gcc/common.opt.urls gcc-16-20251123/gcc/common.opt.urls
*** gcc-16-20251116/gcc/common.opt.urls	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/common.opt.urls	Sun Nov 23 22:32:08 2025
*************** UrlSuffix(gcc/Link-Options.html#index-fu
*** 1685,1690 ****
--- 1685,1693 ----
  fuse-ld=mold
  UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dmold)
  
+ fuse-ld=wild
+ UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dwild)
+ 
  fuse-linker-plugin
  UrlSuffix(gcc/Optimize-Options.html#index-fuse-linker-plugin)
  
diff -Nrcpad gcc-16-20251116/gcc/config/aarch64/aarch64-protos.h gcc-16-20251123/gcc/config/aarch64/aarch64-protos.h
*** gcc-16-20251116/gcc/config/aarch64/aarch64-protos.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/aarch64/aarch64-protos.h	Sun Nov 23 22:32:08 2025
*************** tree aarch64_resolve_overloaded_builtin_
*** 1272,1277 ****
--- 1272,1278 ----
  
  const char *aarch64_sls_barrier (int);
  const char *aarch64_indirect_call_asm (rtx);
+ extern const char *aarch64_indirect_branch_asm (rtx);
  extern bool aarch64_harden_sls_retbr_p (void);
  extern bool aarch64_harden_sls_blr_p (void);
  
diff -Nrcpad gcc-16-20251116/gcc/config/aarch64/aarch64-sve.md gcc-16-20251123/gcc/config/aarch64/aarch64-sve.md
*** gcc-16-20251116/gcc/config/aarch64/aarch64-sve.md	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/aarch64/aarch64-sve.md	Sun Nov 23 22:32:08 2025
***************
*** 3112,3117 ****
--- 3112,3159 ----
    }
  )
  
+ ;; Don't allow expansions of SVE to Adv. SIMD registers immediately as subregs.
+ ;; Doing so prevents combine from matching instructions generated by the
+ ;; SVE/Adv. SIMD bridge as the SVE modes are not valid inside the instructions.
+ ;; Eventually early-ra or reload will split them but by then we've lost the
+ ;; combinations.  Instead split them early and allow fwprop or combine to
+ ;; push them into instructions where they are actually supported as part of the
+ ;; instruction.
+ (define_expand "vec_extract<mode><v128>"
+   [(match_operand:<V128> 0 "register_operand")
+    (match_operand:SVE_FULL 1 "register_operand")
+    (match_operand:SI 2 "const0_operand")]
+   "TARGET_SVE"
+ {
+     emit_move_insn (operands[0],
+ 		    force_lowpart_subreg (<V128>mode, operands[1], <MODE>mode));
+     DONE;
+ })
+ 
+ ;; Similarly for extractions of 64-bit Adv. SIMD vectors from SVE vectors.  For
+ ;; these extractions we can support offsets 0 and 1 by first extracting a
+ ;; 128-bit vector and then selecting the appropriate half.
+ (define_expand "vec_extract<mode><v64>"
+   [(match_operand:<V64> 0 "register_operand")
+    (match_operand:SVE_FULL_BHS 1 "register_operand")
+    (match_operand:SI 2 "const0_to_1_operand")]
+   "TARGET_SVE"
+ {
+     if (CONST0_RTX (SImode) == operands[2])
+       emit_move_insn (operands[0],
+ 		      force_lowpart_subreg (<V64>mode, operands[1],
+ 					    <MODE>mode));
+     else
+       {
+ 	rtx tmp = gen_reg_rtx (<V128>mode);
+ 	emit_move_insn (tmp,
+ 			force_lowpart_subreg (<V128>mode, operands[1],
+ 					      <MODE>mode));
+ 	emit_insn (gen_vec_extract<v128><v64> (operands[0], tmp, operands[2]));
+       }
+     DONE;
+ })
+ 
  ;; Extract element zero.  This is a special case because we want to force
  ;; the registers to be the same for the second alternative, and then
  ;; split the instruction into nothing after RA.
diff -Nrcpad gcc-16-20251116/gcc/config/aarch64/aarch64.cc gcc-16-20251123/gcc/config/aarch64/aarch64.cc
*** gcc-16-20251116/gcc/config/aarch64/aarch64.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/aarch64/aarch64.cc	Sun Nov 23 22:32:08 2025
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7656,7666 ****
  	}
  
        /* NREGS can be 0 when e.g. an empty structure is to be passed.
! 	 A reg is still generated for it, but the caller should be smart
! 	 enough not to use it.  */
!       if (nregs == 0
! 	  || (nregs == 1 && !sve_p)
! 	  || GET_MODE_CLASS (mode) == MODE_INT)
  	pcum->aapcs_reg
  	  = gen_rtx_REG (mode, get_pcs_arg_reg (pcum->pcs_variant, ncrn));
        else
--- 7656,7666 ----
  	}
  
        /* NREGS can be 0 when e.g. an empty structure is to be passed.
! 	 In this situation the register should never be used, so assign
! 	 NULL_RTX.  */
!       if (nregs == 0)
! 	pcum->aapcs_reg = NULL_RTX;
!       else if ((nregs == 1 && !sve_p) || GET_MODE_CLASS (mode) == MODE_INT)
  	pcum->aapcs_reg
  	  = gen_rtx_REG (mode, get_pcs_arg_reg (pcum->pcs_variant, ncrn));
        else
*************** aarch64_function_arg_advance (cumulative
*** 7863,7872 ****
        || pcum->pcs_variant == ARM_PCS_PRESERVE_NONE)
      {
        aarch64_layout_arg (pcum_v, arg);
!       gcc_assert ((pcum->aapcs_reg != NULL_RTX)
! 		  != (pcum->aapcs_stack_words != 0));
!       if (pcum->aapcs_reg
! 	  && aarch64_call_switches_pstate_sm (pcum->isa_mode))
  	aarch64_record_sme_mode_switch_args (pcum);
  
        pcum->aapcs_arg_processed = false;
--- 7863,7869 ----
        || pcum->pcs_variant == ARM_PCS_PRESERVE_NONE)
      {
        aarch64_layout_arg (pcum_v, arg);
!       if (pcum->aapcs_reg && aarch64_call_switches_pstate_sm (pcum->isa_mode))
  	aarch64_record_sme_mode_switch_args (pcum);
  
        pcum->aapcs_arg_processed = false;
*************** aarch64_indirect_call_asm (rtx addr)
*** 30825,30830 ****
--- 30822,30839 ----
    return "";
  }
  
+ /* Generate assembly for AArch64 indirect branch instruction.  ADDR is the
+    target address register.  Returns any additional barrier instructions
+    needed for SLS (Straight Line Speculation) mitigation.  */
+ 
+ const char *
+ aarch64_indirect_branch_asm (rtx addr)
+ {
+   gcc_assert (REG_P (addr));
+   output_asm_insn ("br\t%0", &addr);
+   return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
+ }
+ 
  /* Emit the assembly instruction to load the thread pointer into DEST.
     Select between different tpidr_elN registers depending on -mtp= setting.  */
  
diff -Nrcpad gcc-16-20251116/gcc/config/aarch64/aarch64.md gcc-16-20251123/gcc/config/aarch64/aarch64.md
*** gcc-16-20251116/gcc/config/aarch64/aarch64.md	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/aarch64/aarch64.md	Sun Nov 23 22:32:08 2025
***************
*** 1581,1590 ****
    "SIBLING_CALL_P (insn)"
    {
      if (which_alternative == 0)
!       {
! 	output_asm_insn ("br\\t%0", operands);
! 	return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
!       }
      return "b\\t%c0";
    }
    [(set_attr "type" "branch, branch")
--- 1581,1587 ----
    "SIBLING_CALL_P (insn)"
    {
      if (which_alternative == 0)
!       return aarch64_indirect_branch_asm (operands[0]);
      return "b\\t%c0";
    }
    [(set_attr "type" "branch, branch")
***************
*** 1601,1610 ****
    "SIBLING_CALL_P (insn)"
    {
      if (which_alternative == 0)
!       {
! 	output_asm_insn ("br\\t%1", operands);
! 	return aarch64_sls_barrier (aarch64_harden_sls_retbr_p ());
!       }
      return "b\\t%c1";
    }
    [(set_attr "type" "branch, branch")
--- 1598,1604 ----
    "SIBLING_CALL_P (insn)"
    {
      if (which_alternative == 0)
!       return aarch64_indirect_branch_asm (operands[1]);
      return "b\\t%c1";
    }
    [(set_attr "type" "branch, branch")
diff -Nrcpad gcc-16-20251116/gcc/config/aarch64/iterators.md gcc-16-20251123/gcc/config/aarch64/iterators.md
*** gcc-16-20251116/gcc/config/aarch64/iterators.md	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/aarch64/iterators.md	Sun Nov 23 22:32:08 2025
***************
*** 1820,1825 ****
--- 1820,1837 ----
  			(VNx4SI  "v4si") (VNx4SF "v4sf")
  			(VNx2DI  "v2di") (VNx2DF "v2df")])
  
+ ;; Gives the mode of the 64-bit lowpart of an SVE vector.
+ (define_mode_attr V64 [(VNx16QI "V8QI")
+ 			(VNx8HI  "V4HI") (VNx8HF "V4HF") (VNx8BF "V4BF")
+ 			(VNx4SI  "V2SI") (VNx4SF "V2SF")
+ 			(VNx2DI  "DI") (VNx2DF "DF")])
+ 
+ ;; ...and again in lower case.
+ (define_mode_attr v64 [(VNx16QI "v8qi")
+ 			(VNx8HI  "v4hi") (VNx8HF "v4hf") (VNx8BF "v4bf")
+ 			(VNx4SI  "v2si") (VNx4SF "v2sf")
+ 			(VNx2DI  "di") (VNx2DF "df")])
+ 
  (define_mode_attr vnx [(V4SI "vnx4si") (V2DI "vnx2di")])
  
  ;; 64-bit container modes the inner or scalar source mode.
diff -Nrcpad gcc-16-20251116/gcc/config/aarch64/predicates.md gcc-16-20251123/gcc/config/aarch64/predicates.md
*** gcc-16-20251116/gcc/config/aarch64/predicates.md	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/aarch64/predicates.md	Sun Nov 23 22:32:08 2025
***************
*** 46,51 ****
--- 46,55 ----
    (and (match_code "const_int")
         (match_test "op == CONST0_RTX (mode)")))
  
+ (define_predicate "const0_to_1_operand"
+   (and (match_code "const_int")
+        (match_test "IN_RANGE (INTVAL (op), 0, 1)")))
+ 
  (define_predicate "const_0_to_7_operand"
    (and (match_code "const_int")
         (match_test "IN_RANGE (INTVAL (op), 0, 7)")))
diff -Nrcpad gcc-16-20251116/gcc/config/arc/arc.md gcc-16-20251123/gcc/config/arc/arc.md
*** gcc-16-20251116/gcc/config/arc/arc.md	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arc/arc.md	Sun Nov 23 22:32:08 2025
*************** archs4x, archs4xd"
*** 3555,3561 ****
    [(set (match_operand:SI 0 "dest_reg_operand" "")
  	(ANY_SHIFT_ROTATE:SI (match_operand:SI 1 "register_operand" "")
  			     (match_operand:SI 2 "nonmemory_operand" "")))]
!   "")
  
  ; asl, asr, lsr patterns:
  ; There is no point in including an 'I' alternative since only the lowest 5
--- 3555,3568 ----
    [(set (match_operand:SI 0 "dest_reg_operand" "")
  	(ANY_SHIFT_ROTATE:SI (match_operand:SI 1 "register_operand" "")
  			     (match_operand:SI 2 "nonmemory_operand" "")))]
!   ""
! {
!   if (!TARGET_BARREL_SHIFTER && operands[2] != const1_rtx)
!     {
!       emit_insn (gen_<insn>si3_loop (operands[0], operands[1], operands[2]));
!       DONE;
!     }
! })
  
  ; asl, asr, lsr patterns:
  ; There is no point in including an 'I' alternative since only the lowest 5
*************** archs4x, archs4xd"
*** 3654,3688 ****
    [(set_attr "type" "shift")
     (set_attr "length" "8")])
  
! (define_insn_and_split "*<insn>si3_nobs"
!   [(set (match_operand:SI 0 "dest_reg_operand")
! 	(ANY_SHIFT_ROTATE:SI (match_operand:SI 1 "register_operand")
! 			     (match_operand:SI 2 "nonmemory_operand")))]
    "!TARGET_BARREL_SHIFTER
!    && operands[2] != const1_rtx
!    && arc_pre_reload_split ()"
!   "#"
!   "&& 1"
    [(const_int 0)]
  {
    arc_split_<insn> (operands);
    DONE;
! })
! 
! ;; <ANY_SHIFT_ROTATE>si3_loop appears after <ANY_SHIFT_ROTATE>si3_nobs
! (define_insn "<insn>si3_loop"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r")
! 	(ANY_SHIFT_ROTATE:SI 
! 	  (match_operand:SI 1 "register_operand" "0,0")
! 	  (match_operand:SI 2 "nonmemory_operand" "rn,Cal")))
!    (clobber (reg:SI LP_COUNT))
!    (clobber (reg:CC CC_REG))
!   ]
!   "!TARGET_BARREL_SHIFTER
!    && operands[2] != const1_rtx"
!   "* return output_shift_loop (<CODE>, operands);"
!   [(set_attr "type" "shift")
!    (set_attr "length" "16,20")])
  
  ;; DImode shifts
  
--- 3661,3683 ----
    [(set_attr "type" "shift")
     (set_attr "length" "8")])
  
! (define_insn_and_split "<insn>si3_loop"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r")
!   (ANY_SHIFT_ROTATE:SI (match_operand:SI 1 "register_operand" "0,0")
!         (match_operand:SI 2 "nonmemory_operand" "rn,Cal")))
!   (clobber (reg:SI LP_COUNT))
!   (clobber (reg:CC CC_REG))]
    "!TARGET_BARREL_SHIFTER
!   && operands[2] != const1_rtx"
!   "* return output_shift_loop (<CODE>, operands);"
!   "&& arc_pre_reload_split ()"
    [(const_int 0)]
  {
    arc_split_<insn> (operands);
    DONE;
! }
! [(set_attr "type" "shift")
!  (set_attr "length" "16,20")])
  
  ;; DImode shifts
  
*************** archs4x, archs4xd"
*** 6286,6300 ****
  
  (define_insn_and_split "*extvsi_n_0"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(sign_extract:SI (match_operand:SI 1 "register_operand" "0")
  			 (match_operand:QI 2 "const_int_operand")
  			 (const_int 0)))]
    "!TARGET_BARREL_SHIFTER
     && IN_RANGE (INTVAL (operands[2]), 2,
  		(optimize_insn_for_size_p () ? 28 : 30))"
    "#"
!   "&& 1"
! [(set (match_dup 0) (and:SI (match_dup 0) (match_dup 3)))
   (set (match_dup 0) (xor:SI (match_dup 0) (match_dup 4)))
   (set (match_dup 0) (minus:SI (match_dup 0) (match_dup 4)))]
  {
--- 6281,6295 ----
  
  (define_insn_and_split "*extvsi_n_0"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(sign_extract:SI (match_operand:SI 1 "register_operand" "r")
  			 (match_operand:QI 2 "const_int_operand")
  			 (const_int 0)))]
    "!TARGET_BARREL_SHIFTER
     && IN_RANGE (INTVAL (operands[2]), 2,
  		(optimize_insn_for_size_p () ? 28 : 30))"
    "#"
!   "&& reload_completed"
! [(set (match_dup 0) (and:SI (match_dup 1) (match_dup 3)))
   (set (match_dup 0) (xor:SI (match_dup 0) (match_dup 4)))
   (set (match_dup 0) (minus:SI (match_dup 0) (match_dup 4)))]
  {
*************** archs4x, archs4xd"
*** 6414,6419 ****
--- 6409,6429 ----
     (set_attr "length" "4")
     (set_attr "predicable" "no")])
  
+ ;; Match <insn>si3_loop pattern if operand 2 has become const_int 1 in the meantime
+ (define_insn_and_split "<insn>si3_cnt1_clobber"
+   [(set (match_operand:SI 0 "dest_reg_operand")
+   (ANY_SHIFT_ROTATE:SI (match_operand:SI 1 "register_operand")
+         (const_int 1)))
+   (clobber (reg:SI LP_COUNT))
+   (clobber (reg:CC CC_REG))]
+   "!TARGET_BARREL_SHIFTER"
+   "#"
+   "&& arc_pre_reload_split ()"
+   [(set (match_dup 0) (ANY_SHIFT_ROTATE:SI (match_dup 1) (const_int 1)))]
+   ""
+ [(set_attr "type" "shift")
+  (set_attr "length" "4")])
+ 
  (define_peephole2
    [(set (match_operand:SI 0 "register_operand" "")
  	(zero_extract:SI (match_dup 0)
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm-builtins.cc gcc-16-20251123/gcc/config/arm/arm-builtins.cc
*** gcc-16-20251116/gcc/config/arm/arm-builtins.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm-builtins.cc	Sun Nov 23 22:32:08 2025
*************** arm_init_fp16_builtins (void)
*** 1685,1693 ****
    arm_fp16_type_node = make_node (REAL_TYPE);
    TYPE_PRECISION (arm_fp16_type_node) = GET_MODE_PRECISION (HFmode);
    layout_type (arm_fp16_type_node);
!   if (arm_fp16_format)
!     (*lang_hooks.types.register_builtin_type) (arm_fp16_type_node,
! 					       "__fp16");
  }
  
  void
--- 1685,1691 ----
    arm_fp16_type_node = make_node (REAL_TYPE);
    TYPE_PRECISION (arm_fp16_type_node) = GET_MODE_PRECISION (HFmode);
    layout_type (arm_fp16_type_node);
!   (*lang_hooks.types.register_builtin_type) (arm_fp16_type_node, "__fp16");
  }
  
  void
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.cc gcc-16-20251123/gcc/config/arm/arm-mve-builtins-base.cc
*** gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm-mve-builtins-base.cc	Sun Nov 23 22:32:08 2025
*************** public:
*** 1298,1303 ****
--- 1298,1360 ----
    }
  };
  
+  /* Map the function directly to mve_vec_set_internal (M) or mve_vec_extract
+    (M, M) where M is the vector mode associated with type suffix 0, except when
+    mode is V2DI where the builtin name is hardcoded.  */
+ class mve_function_vsetq_vgetq_lane : public function_base
+ {
+ public:
+   CONSTEXPR mve_function_vsetq_vgetq_lane (bool is_get)
+     : m_is_get (is_get)
+   {}
+ 
+   /* True for vgetq_lane, false for vsetq_lane.  */
+   bool m_is_get;
+ 
+   rtx
+   expand (function_expander &e) const override
+   {
+     machine_mode mode = e.vector_mode (0);
+     insn_code code;
+     HOST_WIDE_INT elem;
+ 
+     code = (mode == V2DImode)
+       ? (m_is_get
+ 	 ? CODE_FOR_mve_vec_extractv2didi
+ 	 : CODE_FOR_mve_vec_setv2di_internal)
+       : (m_is_get
+ 	 ? code_for_mve_vec_extract (mode, mode)
+ 	 : code_for_mve_vec_set_internal (mode));
+ 
+     if (!m_is_get)
+       {
+ 	/* mve_vec_set has vector and lane number arguments in opposite order
+ 	   compared to the intrinsic: swap them now...  */
+ 	std::swap (e.args[1], e.args[2]);
+       }
+ 
+     elem = INTVAL (e.args[1]);
+ 
+     /* For big-endian, GCC's vector indices are reversed within each 64 bits
+        compared to the architectural lane indices used by MVE intrinsics.  */
+     if (BYTES_BIG_ENDIAN)
+       {
+ 	unsigned int num_lanes = 128 / e.type_suffix (0).element_bits;
+ 	elem ^= (num_lanes / 2) - 1;
+       }
+ 
+     if (!m_is_get)
+       {
+ 	/* ... and convert the lane number into a mask as expected by the
+ 	   builtin.  */
+ 	elem = HOST_WIDE_INT_1 << elem;
+       }
+     e.args[1] = GEN_INT (elem);
+ 
+     return e.use_unpred_insn (code);
+   }
+ };
+ 
  } /* end anonymous namespace */
  
  namespace arm_mve {
*************** FUNCTION_WITH_RTX_M (veorq, XOR, VEORQ)
*** 1537,1542 ****
--- 1594,1600 ----
  FUNCTION (vfmaq, unspec_mve_function_exact_insn, (-1, -1, VFMAQ_F, -1, -1, VFMAQ_N_F, -1, -1, VFMAQ_M_F, -1, -1, VFMAQ_M_N_F))
  FUNCTION (vfmasq, unspec_mve_function_exact_insn, (-1, -1, -1, -1, -1, VFMASQ_N_F, -1, -1, -1, -1, -1, VFMASQ_M_N_F))
  FUNCTION (vfmsq, unspec_mve_function_exact_insn, (-1, -1, VFMSQ_F, -1, -1, -1, -1, -1, VFMSQ_M_F, -1, -1, -1))
+ FUNCTION (vgetq_lane, mve_function_vsetq_vgetq_lane, (true))
  FUNCTION_WITH_M_N_NO_F (vhaddq, VHADDQ)
  FUNCTION_WITH_M_N_NO_F (vhsubq, VHSUBQ)
  FUNCTION (vld1q, vld1_impl,)
*************** FUNCTION_ONLY_N_NO_F (vrshrntq, VRSHRNTQ
*** 1665,1670 ****
--- 1723,1729 ----
  FUNCTION_ONLY_N_NO_F (vrshrq, VRSHRQ)
  FUNCTION (vsbciq, vadc_vsbc_impl, (true, false))
  FUNCTION (vsbcq, vadc_vsbc_impl, (false, false))
+ FUNCTION (vsetq_lane, mve_function_vsetq_vgetq_lane, (false))
  FUNCTION (vshlcq, vshlc_impl,)
  FUNCTION_ONLY_N_NO_F (vshllbq, VSHLLBQ)
  FUNCTION_ONLY_N_NO_F (vshlltq, VSHLLTQ)
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.def gcc-16-20251123/gcc/config/arm/arm-mve-builtins-base.def
*** gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.def	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm-mve-builtins-base.def	Sun Nov 23 22:32:08 2025
*************** DEF_MVE_FUNCTION (vddupq, viddup, all_un
*** 68,73 ****
--- 68,74 ----
  DEF_MVE_FUNCTION (vdupq, unary_n, all_integer, mx_or_none)
  DEF_MVE_FUNCTION (vdwdupq, vidwdup, all_unsigned, mx_or_none)
  DEF_MVE_FUNCTION (veorq, binary, all_integer, mx_or_none)
+ DEF_MVE_FUNCTION (vgetq_lane, getq_lane, all_integer_with_64, none)
  DEF_MVE_FUNCTION (vhaddq, binary_opt_n, all_integer, mx_or_none)
  DEF_MVE_FUNCTION (vhcaddq_rot270, binary, all_signed, mx_or_none)
  DEF_MVE_FUNCTION (vhcaddq_rot90, binary, all_signed, mx_or_none)
*************** DEF_MVE_FUNCTION (vrshrq, binary_rshift,
*** 188,193 ****
--- 189,195 ----
  DEF_MVE_FUNCTION (vsbciq, vadc_vsbc, integer_32, m_or_none)
  DEF_MVE_FUNCTION (vsbcq, vadc_vsbc, integer_32, m_or_none)
  DEF_MVE_FUNCTION (vshlcq, vshlc, all_integer, m_or_none)
+ DEF_MVE_FUNCTION (vsetq_lane, setq_lane, all_integer_with_64, none)
  DEF_MVE_FUNCTION (vshllbq, binary_widen_n, integer_8_16, mx_or_none)
  DEF_MVE_FUNCTION (vshlltq, binary_widen_n, integer_8_16, mx_or_none)
  DEF_MVE_FUNCTION (vshlq, binary_lshift, all_integer, mx_or_none)
*************** DEF_MVE_FUNCTION (veorq, binary, all_flo
*** 254,259 ****
--- 256,262 ----
  DEF_MVE_FUNCTION (vfmaq, ternary_opt_n, all_float, m_or_none)
  DEF_MVE_FUNCTION (vfmasq, ternary_n, all_float, m_or_none)
  DEF_MVE_FUNCTION (vfmsq, ternary, all_float, m_or_none)
+ DEF_MVE_FUNCTION (vgetq_lane, getq_lane, all_float, none)
  DEF_MVE_FUNCTION (vld1q, load, all_float, z_or_none)
  DEF_MVE_FUNCTION (vld2q, load, all_float, none)
  DEF_MVE_FUNCTION (vld4q, load, all_float, none)
*************** DEF_MVE_FUNCTION (vrndnq, unary, all_flo
*** 286,291 ****
--- 289,295 ----
  DEF_MVE_FUNCTION (vrndpq, unary, all_float, mx_or_none)
  DEF_MVE_FUNCTION (vrndq, unary, all_float, mx_or_none)
  DEF_MVE_FUNCTION (vrndxq, unary, all_float, mx_or_none)
+ DEF_MVE_FUNCTION (vsetq_lane, setq_lane, all_float, none)
  DEF_MVE_FUNCTION (vst1q, store, all_float, p_or_none)
  DEF_MVE_FUNCTION (vst2q, store, all_float, none)
  DEF_MVE_FUNCTION (vst4q, store, all_float, none)
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.h gcc-16-20251123/gcc/config/arm/arm-mve-builtins-base.h
*** gcc-16-20251116/gcc/config/arm/arm-mve-builtins-base.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm-mve-builtins-base.h	Sun Nov 23 22:32:08 2025
*************** extern const function_base *const veorq;
*** 91,96 ****
--- 91,97 ----
  extern const function_base *const vfmaq;
  extern const function_base *const vfmasq;
  extern const function_base *const vfmsq;
+ extern const function_base *const vgetq_lane;
  extern const function_base *const vhaddq;
  extern const function_base *const vhcaddq_rot270;
  extern const function_base *const vhcaddq_rot90;
*************** extern const function_base *const vrshrn
*** 223,228 ****
--- 224,230 ----
  extern const function_base *const vrshrq;
  extern const function_base *const vsbciq;
  extern const function_base *const vsbcq;
+ extern const function_base *const vsetq_lane;
  extern const function_base *const vshlcq;
  extern const function_base *const vshllbq;
  extern const function_base *const vshlltq;
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm-mve-builtins-shapes.cc gcc-16-20251123/gcc/config/arm/arm-mve-builtins-shapes.cc
*** gcc-16-20251116/gcc/config/arm/arm-mve-builtins-shapes.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm-mve-builtins-shapes.cc	Sun Nov 23 22:32:08 2025
*************** static void
*** 249,255 ****
  build_one (function_builder &b, const char *signature,
  	   const function_group_info &group, mode_suffix_index mode_suffix_id,
  	   unsigned int ti, unsigned int pi, bool preserve_user_namespace,
! 	   bool force_direct_overloads)
  {
    /* Current functions take at most five arguments.  Match
       parse_signature parameter below.  */
--- 249,256 ----
  build_one (function_builder &b, const char *signature,
  	   const function_group_info &group, mode_suffix_index mode_suffix_id,
  	   unsigned int ti, unsigned int pi, bool preserve_user_namespace,
! 	   bool force_direct_overloads,
! 	   unsigned int which_overload = NONOVERLOADED_FORM | OVERLOADED_FORM)
  {
    /* Current functions take at most five arguments.  Match
       parse_signature parameter below.  */
*************** build_one (function_builder &b, const ch
*** 261,267 ****
    apply_predication (instance, return_type, argument_types);
    b.add_unique_function (instance, return_type, argument_types,
  			 preserve_user_namespace, group.requires_float,
! 			 force_direct_overloads);
  }
  
  /* Add a function instance for every type and predicate combination in
--- 262,268 ----
    apply_predication (instance, return_type, argument_types);
    b.add_unique_function (instance, return_type, argument_types,
  			 preserve_user_namespace, group.requires_float,
! 			 force_direct_overloads, which_overload);
  }
  
  /* Add a function instance for every type and predicate combination in
*************** struct create_def : public nonoverloaded
*** 1467,1485 ****
  };
  SHAPE (create)
  
  /* <T0>[xN]_t vfoo_t0().
  
     Example: vuninitializedq.
     int8x16_t [__arm_]vuninitializedq_s8(void)
     int8x16_t [__arm_]vuninitializedq(int8x16_t t)  */
! struct inherent_def : public nonoverloaded_base
  {
    void
    build (function_builder &b, const function_group_info &group,
  	 bool preserve_user_namespace) const override
    {
!     build_all (b, "t0", group, MODE_none, preserve_user_namespace);
    }
  };
  SHAPE (inherent)
  
--- 1468,1560 ----
  };
  SHAPE (create)
  
+ /* <S0>_t vfoo[_t0](<T0>_t, const int)
+ 
+    Check that 'idx' is in the [0..#num_lanes - 1] range.
+ 
+    Example: vgetq_lane.
+    int8_t [__arm_]vgetq_lane[_s8](int8x16_t a, const int idx)  */
+ 
+ struct getq_lane_def : public overloaded_base<0>
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     b.add_overloaded_functions (group, MODE_none, preserve_user_namespace);
+     build_all (b, "s0,v0,su64", group, MODE_none, preserve_user_namespace);
+   }
+ 
+   tree
+   resolve (function_resolver &r) const override
+   {
+     unsigned int i, nargs;
+     type_suffix_index type;
+     if (!r.check_gp_argument (2, i, nargs)
+ 	|| (type = r.infer_vector_type (i-1)) == NUM_TYPE_SUFFIXES
+ 	|| !r.require_integer_immediate (i))
+       return error_mark_node;
+ 
+     return r.resolve_to (r.mode_suffix_id, type);
+   }
+ 
+   bool
+   check (function_checker &c) const override
+   {
+     unsigned int num_lanes = 128 / c.type_suffix (0).element_bits;
+ 
+     return c.require_immediate_range (1, 0, num_lanes - 1);
+   }
+ 
+ };
+ SHAPE (getq_lane)
+ 
  /* <T0>[xN]_t vfoo_t0().
+    <T0>[xN]_t vfoo(<T0>_t).
  
     Example: vuninitializedq.
     int8x16_t [__arm_]vuninitializedq_s8(void)
     int8x16_t [__arm_]vuninitializedq(int8x16_t t)  */
! struct inherent_def : public overloaded_base<0>
  {
    void
    build (function_builder &b, const function_group_info &group,
  	 bool preserve_user_namespace) const override
    {
!     b.add_overloaded_functions (group, MODE_none, preserve_user_namespace);
! 
!     /* Overloaded and non-overloaded forms have different signatures, so call
!        build_one with either OVERLOADED_FORM or NONOVERLOADED_FORM.  */
!     unsigned int pi = 0;
!     bool force_direct_overloads = false;
!     for (unsigned int ti = 0;
! 	 ti == 0 || group.types[ti][0] != NUM_TYPE_SUFFIXES; ++ti)
!       {
! 	/* For int8x16_t [__arm_]vuninitializedq(int8x16_t t), generate only
! 	   the overloaded form, i.e. without type suffix.  */
! 	build_one (b, "t0,t0", group, MODE_none, ti, pi,
! 		   preserve_user_namespace, force_direct_overloads,
! 		   OVERLOADED_FORM);
! 	/* For int8x16_t [__arm_]vuninitializedq_s8(void), generate only the
! 	   non-overloaded form, i.e. with type suffix.  */
! 	build_one (b, "t0", group, MODE_none, ti, pi,
! 		   preserve_user_namespace, force_direct_overloads,
! 		   NONOVERLOADED_FORM);
!       }
    }
+ 
+   tree
+   resolve (function_resolver &r) const override
+   {
+     type_suffix_index type;
+     if (!r.check_num_arguments (1)
+ 	|| (type = r.infer_vector_type (0)) == NUM_TYPE_SUFFIXES)
+       return error_mark_node;
+ 
+     /* We need to pop the useless argument for the non-overloaded function.  */
+     return r.pop_and_resolve_to (r.mode_suffix_id, type);
+   }
+ 
  };
  SHAPE (inherent)
  
*************** struct scalar_u64_shift_imm_def : public
*** 1834,1839 ****
--- 1909,1954 ----
  };
  SHAPE (scalar_u64_shift_imm)
  
+ /* <T0>_t vfoo[_t0](<S0>_t, <T0>_t, const_int)
+ 
+    Check that 'idx' is in the [0..#num_lanes - 1] range.
+ 
+    Example: vsetq_lane.
+    int8x16_t [__arm_]vsetq_lane[_s8](int8_t a, int8x16_t b, const int idx)  */
+ struct setq_lane_def : public overloaded_base<0>
+ {
+   void
+   build (function_builder &b, const function_group_info &group,
+ 	 bool preserve_user_namespace) const override
+   {
+     b.add_overloaded_functions (group, MODE_none, preserve_user_namespace);
+     build_all (b, "v0,s0,v0,su64", group, MODE_none, preserve_user_namespace);
+   }
+ 
+   tree
+   resolve (function_resolver &r) const override
+   {
+     unsigned int i, nargs;
+     type_suffix_index type;
+     if (!r.check_gp_argument (3, i, nargs)
+ 	|| (type = r.infer_vector_type (i-1)) == NUM_TYPE_SUFFIXES
+ 	|| !r.require_derived_scalar_type (i - 2, r.SAME_TYPE_CLASS)
+ 	|| !r.require_integer_immediate (i))
+       return error_mark_node;
+ 
+     return r.resolve_to (r.mode_suffix_id, type);
+   }
+ 
+   bool
+   check (function_checker &c) const override
+   {
+     unsigned int num_lanes = 128 / c.type_suffix (0).element_bits;
+ 
+     return c.require_immediate_range (2, 0, num_lanes - 1);
+   }
+ };
+ SHAPE (setq_lane)
+ 
  /* void vfoo[_t0](<X>_t *, <T0>[xN]_t)
  
     where <X> might be tied to <t0> (for non-truncating stores) or might
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm-mve-builtins-shapes.h gcc-16-20251123/gcc/config/arm/arm-mve-builtins-shapes.h
*** gcc-16-20251116/gcc/config/arm/arm-mve-builtins-shapes.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm-mve-builtins-shapes.h	Sun Nov 23 22:32:08 2025
*************** namespace arm_mve
*** 29,35 ****
  
       Also:
  
!      - "inherent" means that the function takes no arguments.  */
  
    namespace shapes
    {
--- 29,36 ----
  
       Also:
  
!      - "inherent" means that the function takes no arguments, except in its
!        overloaded form.  */
  
    namespace shapes
    {
*************** namespace arm_mve
*** 60,65 ****
--- 61,67 ----
      extern const function_shape *const binary_widen_poly;
      extern const function_shape *const cmp;
      extern const function_shape *const create;
+     extern const function_shape *const getq_lane;
      extern const function_shape *const inherent;
      extern const function_shape *const load;
      extern const function_shape *const load_ext;
*************** namespace arm_mve
*** 74,79 ****
--- 76,82 ----
      extern const function_shape *const scalar_s64_shift_imm;
      extern const function_shape *const scalar_u64_shift;
      extern const function_shape *const scalar_u64_shift_imm;
+     extern const function_shape *const setq_lane;
      extern const function_shape *const store;
      extern const function_shape *const store_scatter_base;
      extern const function_shape *const store_scatter_offset;
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm-mve-builtins.cc gcc-16-20251123/gcc/config/arm/arm-mve-builtins.cc
*** gcc-16-20251116/gcc/config/arm/arm-mve-builtins.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm-mve-builtins.cc	Sun Nov 23 22:32:08 2025
*************** register_builtin_types ()
*** 410,417 ****
  #include "arm-mve-builtins.def"
    for (unsigned int i = 0; i < NUM_VECTOR_TYPES; ++i)
      {
-       if (vector_types[i].requires_float && !TARGET_HAVE_MVE_FLOAT)
- 	continue;
        tree eltype = scalar_types[i];
        tree vectype;
        if (eltype == boolean_type_node)
--- 410,415 ----
*************** register_builtin_types ()
*** 433,450 ****
  static void
  register_vector_type (vector_type_index type)
  {
- 
-   /* If the target does not have the mve.fp extension, but the type requires
-      it, then it needs to be assigned a non-dummy type so that functions
-      with those types in their signature can be registered.  This allows for
-      diagnostics about the missing extension, rather than about a missing
-      function definition.  */
-   if (vector_types[type].requires_float && !TARGET_HAVE_MVE_FLOAT)
-     {
-       acle_vector_types[0][type] = void_type_node;
-       return;
-     }
- 
    tree vectype = abi_vector_types[type];
    tree id = get_identifier (vector_types[type].acle_name);
    tree decl = build_decl (input_location, TYPE_DECL, id, vectype);
--- 431,436 ----
*************** register_builtin_tuple_types (vector_typ
*** 470,482 ****
  {
    const vector_type_info* info = &vector_types[type];
  
!   /* If the target does not have the mve.fp extension, but the type requires
!      it, then it needs to be assigned a non-dummy type so that functions
!      with those types in their signature can be registered.  This allows for
!      diagnostics about the missing extension, rather than about a missing
!      function definition.  */
!   if (scalar_types[type] == boolean_type_node
!       || (info->requires_float && !TARGET_HAVE_MVE_FLOAT))
      {
        for (unsigned int num_vectors = 2; num_vectors <= 4; num_vectors += 2)
  	acle_vector_types[num_vectors >> 1][type] = void_type_node;
--- 456,462 ----
  {
    const vector_type_info* info = &vector_types[type];
  
!   if (scalar_types[type] == boolean_type_node)
      {
        for (unsigned int num_vectors = 2; num_vectors <= 4; num_vectors += 2)
  	acle_vector_types[num_vectors >> 1][type] = void_type_node;
*************** function_builder::add_unique_function (c
*** 1014,1020 ****
  				       vec<tree> &argument_types,
  				       bool preserve_user_namespace,
  				       bool requires_float,
! 				       bool force_direct_overloads)
  {
    /* Add the function under its full (unique) name with prefix.  */
    char *name = get_name (instance, true, false);
--- 994,1001 ----
  				       vec<tree> &argument_types,
  				       bool preserve_user_namespace,
  				       bool requires_float,
! 				       bool force_direct_overloads,
! 				       unsigned int which_overload)
  {
    /* Add the function under its full (unique) name with prefix.  */
    char *name = get_name (instance, true, false);
*************** function_builder::add_unique_function (c
*** 1022,1048 ****
  					   argument_types.length (),
  					   argument_types.address ());
    tree attrs = get_attributes (instance);
!   registered_function &rfn = add_function (instance, name, fntype, attrs,
! 					   requires_float, false, false);
  
!   /* Enter the function into the hash table.  */
!   hashval_t hash = instance.hash ();
!   registered_function **rfn_slot
!     = function_table->find_slot_with_hash (instance, hash, INSERT);
!   gcc_assert (!*rfn_slot);
!   *rfn_slot = &rfn;
  
!   /* Also add the non-prefixed non-overloaded function, as placeholder
!      if the user namespace does not need to be preserved.  */
!   char *noprefix_name = get_name (instance, false, false);
!   attrs = get_attributes (instance);
!   add_function (instance, noprefix_name, fntype, attrs, requires_float,
! 		false, preserve_user_namespace);
  
    /* Also add the function under its overloaded alias, if we want
       a separate decl for each instance of an overloaded function.  */
    char *overload_name = get_name (instance, true, true);
!   if (strcmp (name, overload_name) != 0)
      {
        /* Attribute lists shouldn't be shared.  */
        attrs = get_attributes (instance);
--- 1003,1033 ----
  					   argument_types.length (),
  					   argument_types.address ());
    tree attrs = get_attributes (instance);
!   if (which_overload & NONOVERLOADED_FORM)
!     {
!       registered_function &rfn = add_function (instance, name, fntype, attrs,
! 					       requires_float, false, false);
  
!       /* Enter the function into the hash table.  */
!       hashval_t hash = instance.hash ();
!       registered_function **rfn_slot
! 	= function_table->find_slot_with_hash (instance, hash, INSERT);
!       gcc_assert (!*rfn_slot);
!       *rfn_slot = &rfn;
  
!       /* Also add the non-prefixed non-overloaded function, as placeholder
! 	 if the user namespace does not need to be preserved.  */
!       char *noprefix_name = get_name (instance, false, false);
!       attrs = get_attributes (instance);
!       add_function (instance, noprefix_name, fntype, attrs, requires_float,
! 		    false, preserve_user_namespace);
!     }
  
    /* Also add the function under its overloaded alias, if we want
       a separate decl for each instance of an overloaded function.  */
    char *overload_name = get_name (instance, true, true);
!   if ((which_overload & OVERLOADED_FORM)
!       && (strcmp (name, overload_name) != 0))
      {
        /* Attribute lists shouldn't be shared.  */
        attrs = get_attributes (instance);
*************** function_resolver::resolve_to (mode_suff
*** 1251,1256 ****
--- 1236,1253 ----
    return res;
  }
  
+ /* Pop an argument and resolve the function to one with the mode suffix given
+    by MODE and the type suffixes given by TYPE0 and TYPE1.  Return its function
+    decl on success, otherwise report an error and return error_mark_node.  */
+ tree
+ function_resolver::pop_and_resolve_to (mode_suffix_index mode,
+ 				       type_suffix_index type0,
+ 				       type_suffix_index type1)
+ {
+   m_arglist.pop ();
+   return resolve_to (mode, type0, type1);
+ }
+ 
  /* Require argument ARGNO to be a pointer to a scalar type that has a
     corresponding type suffix.  Return that type suffix on success,
     otherwise report an error and return NUM_TYPE_SUFFIXES.  */
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm-mve-builtins.h gcc-16-20251123/gcc/config/arm/arm-mve-builtins.h
*** gcc-16-20251116/gcc/config/arm/arm-mve-builtins.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm-mve-builtins.h	Sun Nov 23 22:32:08 2025
*************** const unsigned int CP_RAISE_FP_EXCEPTION
*** 94,99 ****
--- 94,106 ----
  const unsigned int CP_READ_MEMORY = 1U << 2;
  const unsigned int CP_WRITE_MEMORY = 1U << 3;
  
+ /* Flags that describe which forms of an intrinsic to generate: non-overloaded
+    and/or overloaded ones.  In general we want both, but for vuninitialized the
+    two forms have different signatures and we need to generate them
+    separately.  */
+ const unsigned int NONOVERLOADED_FORM = 1U << 0;
+ const unsigned int OVERLOADED_FORM = 1U << 1;
+ 
  /* Enumerates the MVE predicate and (data) vector types, together called
     "vector types" for brevity.  */
  enum vector_type_index
*************** public:
*** 311,317 ****
    ~function_builder ();
  
    void add_unique_function (const function_instance &, tree,
! 			    vec<tree> &, bool, bool, bool);
    void add_overloaded_function (const function_instance &, bool, bool);
    void add_overloaded_functions (const function_group_info &,
  				 mode_suffix_index, bool);
--- 318,324 ----
    ~function_builder ();
  
    void add_unique_function (const function_instance &, tree,
! 			    vec<tree> &, bool, bool, bool, unsigned int);
    void add_overloaded_function (const function_instance &, bool, bool);
    void add_overloaded_functions (const function_group_info &,
  				 mode_suffix_index, bool);
*************** public:
*** 383,388 ****
--- 390,398 ----
    tree resolve_to (mode_suffix_index,
  		   type_suffix_index = NUM_TYPE_SUFFIXES,
  		   type_suffix_index = NUM_TYPE_SUFFIXES);
+   tree pop_and_resolve_to (mode_suffix_index,
+ 			   type_suffix_index = NUM_TYPE_SUFFIXES,
+ 			   type_suffix_index = NUM_TYPE_SUFFIXES);
  
    type_suffix_index infer_pointer_type (unsigned int);
    type_suffix_index infer_vector_or_tuple_type (unsigned int, unsigned int);
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm-opts.h gcc-16-20251123/gcc/config/arm/arm-opts.h
*** gcc-16-20251116/gcc/config/arm/arm-opts.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm-opts.h	Sun Nov 23 22:32:08 2025
***************
*** 35,40 ****
--- 35,41 ----
   */
  enum arm_fp16_format_type
  {
+   ARM_FP16_FORMAT_DEFAULT = -1,
    ARM_FP16_FORMAT_NONE = 0,
    ARM_FP16_FORMAT_IEEE = 1,
    ARM_FP16_FORMAT_ALTERNATIVE = 2
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm.cc gcc-16-20251123/gcc/config/arm/arm.cc
*** gcc-16-20251116/gcc/config/arm/arm.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm.cc	Sun Nov 23 22:32:08 2025
*************** arm_option_reconfigure_globals (void)
*** 3923,3935 ****
    arm_arch_bf16 = bitmap_bit_p (arm_active_target.isa, isa_bit_bf16);
  
    arm_fp16_inst = bitmap_bit_p (arm_active_target.isa, isa_bit_fp16);
!   if (arm_fp16_inst)
      {
        if (arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)
  	error ("selected fp16 options are incompatible");
        arm_fp16_format = ARM_FP16_FORMAT_IEEE;
      }
  
    arm_arch_cde = 0;
    arm_arch_cde_coproc = 0;
    int cde_bits[] = {isa_bit_cdecp0, isa_bit_cdecp1, isa_bit_cdecp2,
--- 3923,3941 ----
    arm_arch_bf16 = bitmap_bit_p (arm_active_target.isa, isa_bit_bf16);
  
    arm_fp16_inst = bitmap_bit_p (arm_active_target.isa, isa_bit_fp16);
! 
!   /* Set arm_fp16_format to IEEE if the target has fp16 support unless user
!      forced ARM_FP16_FORMAT_NONE.  */
!   if (arm_fp16_inst && (arm_fp16_format != ARM_FP16_FORMAT_NONE))
      {
        if (arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)
  	error ("selected fp16 options are incompatible");
        arm_fp16_format = ARM_FP16_FORMAT_IEEE;
      }
  
+   if (arm_fp16_format == ARM_FP16_FORMAT_DEFAULT)
+     arm_fp16_format = ARM_FP16_FORMAT_NONE;
+ 
    arm_arch_cde = 0;
    arm_arch_cde_coproc = 0;
    int cde_bits[] = {isa_bit_cdecp0, isa_bit_cdecp1, isa_bit_cdecp2,
*************** arm_vector_mode_supported_p (machine_mod
*** 29639,29649 ****
      return true;
  
    if (TARGET_HAVE_MVE
!       && (VALID_MVE_SI_MODE (mode) || VALID_MVE_PRED_MODE (mode)))
!     return true;
! 
!   if (TARGET_HAVE_MVE_FLOAT
!       && (mode == V2DFmode || mode == V4SFmode || mode == V8HFmode))
      return true;
  
    return false;
--- 29645,29651 ----
      return true;
  
    if (TARGET_HAVE_MVE
!       && (VALID_MVE_MODE (mode) || VALID_MVE_PRED_MODE (mode)))
      return true;
  
    return false;
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm.opt gcc-16-20251123/gcc/config/arm/arm.opt
*** gcc-16-20251116/gcc/config/arm/arm.opt	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm.opt	Sun Nov 23 22:32:08 2025
*************** Target Var(TARGET_FLIP_THUMB) Undocument
*** 139,145 ****
  Switch ARM/Thumb modes on alternating functions for compiler testing.
  
  mfp16-format=
! Target RejectNegative Joined Enum(arm_fp16_format_type) Var(arm_fp16_format) Init(ARM_FP16_FORMAT_NONE)
  Specify the __fp16 floating-point format.
  
  Enum
--- 139,145 ----
  Switch ARM/Thumb modes on alternating functions for compiler testing.
  
  mfp16-format=
! Target RejectNegative Joined Enum(arm_fp16_format_type) Var(arm_fp16_format) Init(ARM_FP16_FORMAT_DEFAULT)
  Specify the __fp16 floating-point format.
  
  Enum
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm_mve.h gcc-16-20251123/gcc/config/arm/arm_mve.h
*** gcc-16-20251116/gcc/config/arm/arm_mve.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm_mve.h	Sun Nov 23 22:32:08 2025
***************
*** 44,806 ****
  #pragma GCC arm "arm_mve.h" false
  #endif
  
- #ifndef __ARM_MVE_PRESERVE_USER_NAMESPACE
- #define vuninitializedq(__v) __arm_vuninitializedq(__v)
- #define vsetq_lane(__a, __b, __idx) __arm_vsetq_lane(__a, __b, __idx)
- #define vgetq_lane(__a, __idx) __arm_vgetq_lane(__a, __idx)
- 
- 
- #define vuninitializedq_u8(void) __arm_vuninitializedq_u8(void)
- #define vuninitializedq_u16(void) __arm_vuninitializedq_u16(void)
- #define vuninitializedq_u32(void) __arm_vuninitializedq_u32(void)
- #define vuninitializedq_u64(void) __arm_vuninitializedq_u64(void)
- #define vuninitializedq_s8(void) __arm_vuninitializedq_s8(void)
- #define vuninitializedq_s16(void) __arm_vuninitializedq_s16(void)
- #define vuninitializedq_s32(void) __arm_vuninitializedq_s32(void)
- #define vuninitializedq_s64(void) __arm_vuninitializedq_s64(void)
- #define vuninitializedq_f16(void) __arm_vuninitializedq_f16(void)
- #define vuninitializedq_f32(void) __arm_vuninitializedq_f32(void)
- #define vsetq_lane_f16(__a, __b,  __idx) __arm_vsetq_lane_f16(__a, __b,  __idx)
- #define vsetq_lane_f32(__a, __b,  __idx) __arm_vsetq_lane_f32(__a, __b,  __idx)
- #define vsetq_lane_s16(__a, __b,  __idx) __arm_vsetq_lane_s16(__a, __b,  __idx)
- #define vsetq_lane_s32(__a, __b,  __idx) __arm_vsetq_lane_s32(__a, __b,  __idx)
- #define vsetq_lane_s8(__a, __b,  __idx) __arm_vsetq_lane_s8(__a, __b,  __idx)
- #define vsetq_lane_s64(__a, __b,  __idx) __arm_vsetq_lane_s64(__a, __b,  __idx)
- #define vsetq_lane_u8(__a, __b,  __idx) __arm_vsetq_lane_u8(__a, __b,  __idx)
- #define vsetq_lane_u16(__a, __b,  __idx) __arm_vsetq_lane_u16(__a, __b,  __idx)
- #define vsetq_lane_u32(__a, __b,  __idx) __arm_vsetq_lane_u32(__a, __b,  __idx)
- #define vsetq_lane_u64(__a, __b,  __idx) __arm_vsetq_lane_u64(__a, __b,  __idx)
- #define vgetq_lane_f16(__a,  __idx) __arm_vgetq_lane_f16(__a,  __idx)
- #define vgetq_lane_f32(__a,  __idx) __arm_vgetq_lane_f32(__a,  __idx)
- #define vgetq_lane_s16(__a,  __idx) __arm_vgetq_lane_s16(__a,  __idx)
- #define vgetq_lane_s32(__a,  __idx) __arm_vgetq_lane_s32(__a,  __idx)
- #define vgetq_lane_s8(__a,  __idx) __arm_vgetq_lane_s8(__a,  __idx)
- #define vgetq_lane_s64(__a,  __idx) __arm_vgetq_lane_s64(__a,  __idx)
- #define vgetq_lane_u8(__a,  __idx) __arm_vgetq_lane_u8(__a,  __idx)
- #define vgetq_lane_u16(__a,  __idx) __arm_vgetq_lane_u16(__a,  __idx)
- #define vgetq_lane_u32(__a,  __idx) __arm_vgetq_lane_u32(__a,  __idx)
- #define vgetq_lane_u64(__a,  __idx) __arm_vgetq_lane_u64(__a,  __idx)
- #endif
- 
- /* For big-endian, GCC's vector indices are reversed within each 64 bits
-    compared to the architectural lane indices used by MVE intrinsics.  */
- #define __ARM_NUM_LANES(__v) (sizeof (__v) / sizeof (__v[0]))
- #ifdef __ARM_BIG_ENDIAN
- #define __ARM_LANEQ(__vec, __idx) (__idx ^ (__ARM_NUM_LANES(__vec)/2 - 1))
- #else
- #define __ARM_LANEQ(__vec, __idx) __idx
- #endif
- #define __ARM_CHECK_LANEQ(__vec, __idx)		 \
-   __builtin_arm_lane_check (__ARM_NUM_LANES(__vec),     \
- 			    __ARM_LANEQ(__vec, __idx))
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_s16 (int16_t __a, int16x8_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_s32 (int32_t __a, int32x4_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_s8 (int8_t __a, int8x16_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_s64 (int64_t __a, int64x2_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_u8 (uint8_t __a, uint8x16_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_u16 (uint16_t __a, uint16x8_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_u32 (uint32_t __a, uint32x4_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_u64 (uint64_t __a, uint64x2_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline int16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_s16 (int16x8_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- 
- __extension__ extern __inline int32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_s32 (int32x4_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- 
- __extension__ extern __inline int8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_s8 (int8x16_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- 
- __extension__ extern __inline int64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_s64 (int64x2_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- 
- __extension__ extern __inline uint8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_u8 (uint8x16_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- 
- __extension__ extern __inline uint16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_u16 (uint16x8_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- 
- __extension__ extern __inline uint32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_u32 (uint32x4_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- 
- __extension__ extern __inline uint64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_u64 (uint64x2_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- 
- 
- #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_f16 (float16_t __a, float16x8_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane_f32 (float32_t __a, float32x4_t __b, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__b, __idx);
-   __b[__ARM_LANEQ(__b,__idx)] = __a;
-   return __b;
- }
- 
- __extension__ extern __inline float16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_f16 (float16x8_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- 
- __extension__ extern __inline float32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane_f32 (float32x4_t __a, const int __idx)
- {
-   __ARM_CHECK_LANEQ (__a, __idx);
-   return __a[__ARM_LANEQ(__a,__idx)];
- }
- #endif
- 
- #ifdef __cplusplus
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (int16_t __a, int16x8_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_s16 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (int32_t __a, int32x4_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_s32 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (int8_t __a, int8x16_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_s8 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (int64_t __a, int64x2_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_s64 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (uint8_t __a, uint8x16_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_u8 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (uint16_t __a, uint16x8_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_u16 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (uint32_t __a, uint32x4_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_u32 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (uint64_t __a, uint64x2_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_u64 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline int16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (int16x8_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_s16 (__a, __idx);
- }
- 
- __extension__ extern __inline int32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (int32x4_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_s32 (__a, __idx);
- }
- 
- __extension__ extern __inline int8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (int8x16_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_s8 (__a, __idx);
- }
- 
- __extension__ extern __inline int64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (int64x2_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_s64 (__a, __idx);
- }
- 
- __extension__ extern __inline uint8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (uint8x16_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_u8 (__a, __idx);
- }
- 
- __extension__ extern __inline uint16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (uint16x8_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_u16 (__a, __idx);
- }
- 
- __extension__ extern __inline uint32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (uint32x4_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_u32 (__a, __idx);
- }
- 
- __extension__ extern __inline uint64_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (uint64x2_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_u64 (__a, __idx);
- }
- 
- #if (__ARM_FEATURE_MVE & 2)  /* MVE Floating point.  */
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (float16_t __a, float16x8_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_f16 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vsetq_lane (float32_t __a, float32x4_t __b, const int __idx)
- {
-  return __arm_vsetq_lane_f32 (__a, __b, __idx);
- }
- 
- __extension__ extern __inline float16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (float16x8_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_f16 (__a, __idx);
- }
- 
- __extension__ extern __inline float32_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vgetq_lane (float32x4_t __a, const int __idx)
- {
-  return __arm_vgetq_lane_f32 (__a, __idx);
- }
- #endif /* MVE Floating point.  */
- 
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (uint8x16_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_u8 ();
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (uint16x8_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_u16 ();
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (uint32x4_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_u32 ();
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (uint64x2_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_u64 ();
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (int8x16_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_s8 ();
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (int16x8_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_s16 ();
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (int32x4_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_s32 ();
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (int64x2_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_s64 ();
- }
- 
- #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (float16x8_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_f16 ();
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- __arm_vuninitializedq (float32x4_t /* __v ATTRIBUTE UNUSED */)
- {
-  return __arm_vuninitializedq_f32 ();
- }
- #endif /* __ARM_FEATURE_MVE & 2 (MVE floating point)  */
- 
- #else
- enum {
-     __ARM_mve_type_fp_n = 1,
-     __ARM_mve_type_int_n,
-     __ARM_mve_type_float16_t_ptr,
-     __ARM_mve_type_float16x8_t,
-     __ARM_mve_type_float16x8x2_t,
-     __ARM_mve_type_float16x8x4_t,
-     __ARM_mve_type_float32_t_ptr,
-     __ARM_mve_type_float32x4_t,
-     __ARM_mve_type_float32x4x2_t,
-     __ARM_mve_type_float32x4x4_t,
-     __ARM_mve_type_int16_t_ptr,
-     __ARM_mve_type_int16x8_t,
-     __ARM_mve_type_int16x8x2_t,
-     __ARM_mve_type_int16x8x4_t,
-     __ARM_mve_type_int32_t_ptr,
-     __ARM_mve_type_int32x4_t,
-     __ARM_mve_type_int32x4x2_t,
-     __ARM_mve_type_int32x4x4_t,
-     __ARM_mve_type_int64_t_ptr,
-     __ARM_mve_type_int64x2_t,
-     __ARM_mve_type_int8_t_ptr,
-     __ARM_mve_type_int8x16_t,
-     __ARM_mve_type_int8x16x2_t,
-     __ARM_mve_type_int8x16x4_t,
-     __ARM_mve_type_uint16_t_ptr,
-     __ARM_mve_type_uint16x8_t,
-     __ARM_mve_type_uint16x8x2_t,
-     __ARM_mve_type_uint16x8x4_t,
-     __ARM_mve_type_uint32_t_ptr,
-     __ARM_mve_type_uint32x4_t,
-     __ARM_mve_type_uint32x4x2_t,
-     __ARM_mve_type_uint32x4x4_t,
-     __ARM_mve_type_uint64_t_ptr,
-     __ARM_mve_type_uint64x2_t,
-     __ARM_mve_type_uint8_t_ptr,
-     __ARM_mve_type_uint8x16_t,
-     __ARM_mve_type_uint8x16x2_t,
-     __ARM_mve_type_uint8x16x4_t,
-     __ARM_mve_unsupported_type
- };
- 
- #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */
- #define __ARM_mve_typeid(x) _Generic(x, \
-     float16_t: __ARM_mve_type_fp_n, \
-     float16_t *: __ARM_mve_type_float16_t_ptr, \
-     float16_t const *: __ARM_mve_type_float16_t_ptr, \
-     float16x8_t: __ARM_mve_type_float16x8_t, \
-     float16x8x2_t: __ARM_mve_type_float16x8x2_t, \
-     float16x8x4_t: __ARM_mve_type_float16x8x4_t, \
-     float32_t: __ARM_mve_type_fp_n, \
-     float32_t *: __ARM_mve_type_float32_t_ptr, \
-     float32_t const *: __ARM_mve_type_float32_t_ptr, \
-     float32x4_t: __ARM_mve_type_float32x4_t, \
-     float32x4x2_t: __ARM_mve_type_float32x4x2_t, \
-     float32x4x4_t: __ARM_mve_type_float32x4x4_t, \
-     int16_t: __ARM_mve_type_int_n, \
-     int16_t *: __ARM_mve_type_int16_t_ptr, \
-     int16_t const *: __ARM_mve_type_int16_t_ptr, \
-     int16x8_t: __ARM_mve_type_int16x8_t, \
-     int16x8x2_t: __ARM_mve_type_int16x8x2_t, \
-     int16x8x4_t: __ARM_mve_type_int16x8x4_t, \
-     int32_t: __ARM_mve_type_int_n, \
-     int32_t *: __ARM_mve_type_int32_t_ptr, \
-     int32_t const *: __ARM_mve_type_int32_t_ptr, \
-     int32x4_t: __ARM_mve_type_int32x4_t, \
-     int32x4x2_t: __ARM_mve_type_int32x4x2_t, \
-     int32x4x4_t: __ARM_mve_type_int32x4x4_t, \
-     int64_t: __ARM_mve_type_int_n, \
-     int64_t *: __ARM_mve_type_int64_t_ptr, \
-     int64_t const *: __ARM_mve_type_int64_t_ptr, \
-     int64x2_t: __ARM_mve_type_int64x2_t, \
-     int8_t: __ARM_mve_type_int_n, \
-     int8_t *: __ARM_mve_type_int8_t_ptr, \
-     int8_t const *: __ARM_mve_type_int8_t_ptr, \
-     int8x16_t: __ARM_mve_type_int8x16_t, \
-     int8x16x2_t: __ARM_mve_type_int8x16x2_t, \
-     int8x16x4_t: __ARM_mve_type_int8x16x4_t, \
-     uint16_t: __ARM_mve_type_int_n, \
-     uint16_t *: __ARM_mve_type_uint16_t_ptr, \
-     uint16_t const *: __ARM_mve_type_uint16_t_ptr, \
-     uint16x8_t: __ARM_mve_type_uint16x8_t, \
-     uint16x8x2_t: __ARM_mve_type_uint16x8x2_t, \
-     uint16x8x4_t: __ARM_mve_type_uint16x8x4_t, \
-     uint32_t: __ARM_mve_type_int_n, \
-     uint32_t *: __ARM_mve_type_uint32_t_ptr, \
-     uint32_t const *: __ARM_mve_type_uint32_t_ptr, \
-     uint32x4_t: __ARM_mve_type_uint32x4_t, \
-     uint32x4x2_t: __ARM_mve_type_uint32x4x2_t, \
-     uint32x4x4_t: __ARM_mve_type_uint32x4x4_t, \
-     uint64_t: __ARM_mve_type_int_n, \
-     uint64_t *: __ARM_mve_type_uint64_t_ptr, \
-     uint64_t const *: __ARM_mve_type_uint64_t_ptr, \
-     uint64x2_t: __ARM_mve_type_uint64x2_t, \
-     uint8_t: __ARM_mve_type_int_n, \
-     uint8_t *: __ARM_mve_type_uint8_t_ptr, \
-     uint8_t const *: __ARM_mve_type_uint8_t_ptr, \
-     uint8x16_t: __ARM_mve_type_uint8x16_t, \
-     uint8x16x2_t: __ARM_mve_type_uint8x16x2_t, \
-     uint8x16x4_t: __ARM_mve_type_uint8x16x4_t, \
-     default: _Generic(x, \
- 	signed char: __ARM_mve_type_int_n, \
- 	short: __ARM_mve_type_int_n, \
- 	int: __ARM_mve_type_int_n, \
- 	long: __ARM_mve_type_int_n, \
- 	long long: __ARM_mve_type_int_n, \
- 	_Float16: __ARM_mve_type_fp_n, \
- 	__fp16: __ARM_mve_type_fp_n, \
- 	float: __ARM_mve_type_fp_n, \
- 	double: __ARM_mve_type_fp_n, \
- 	unsigned char: __ARM_mve_type_int_n, \
- 	unsigned short: __ARM_mve_type_int_n, \
- 	unsigned int: __ARM_mve_type_int_n, \
- 	unsigned long: __ARM_mve_type_int_n, \
- 	unsigned long long: __ARM_mve_type_int_n, \
- 	signed char*: __ARM_mve_type_int8_t_ptr, \
- 	short*: __ARM_mve_type_int16_t_ptr, \
- 	int*: __ARM_mve_type_int32_t_ptr, \
- 	long*: __ARM_mve_type_int32_t_ptr, \
- 	long long*: __ARM_mve_type_int64_t_ptr, \
- 	_Float16*: __ARM_mve_type_float16_t_ptr, \
- 	__fp16*: __ARM_mve_type_float16_t_ptr, \
- 	float*: __ARM_mve_type_float32_t_ptr, \
- 	unsigned char*: __ARM_mve_type_uint8_t_ptr, \
- 	unsigned short*: __ARM_mve_type_uint16_t_ptr, \
- 	unsigned int*: __ARM_mve_type_uint32_t_ptr, \
- 	unsigned long*: __ARM_mve_type_uint32_t_ptr, \
- 	unsigned long long*: __ARM_mve_type_uint64_t_ptr, \
- 	default: __ARM_mve_unsupported_type))
- #else
- #define __ARM_mve_typeid(x) _Generic(x, \
-     int16_t: __ARM_mve_type_int_n, \
-     int16_t *: __ARM_mve_type_int16_t_ptr, \
-     int16_t const *: __ARM_mve_type_int16_t_ptr, \
-     int16x8_t: __ARM_mve_type_int16x8_t, \
-     int16x8x2_t: __ARM_mve_type_int16x8x2_t, \
-     int16x8x4_t: __ARM_mve_type_int16x8x4_t, \
-     int32_t: __ARM_mve_type_int_n, \
-     int32_t *: __ARM_mve_type_int32_t_ptr, \
-     int32_t const *: __ARM_mve_type_int32_t_ptr, \
-     int32x4_t: __ARM_mve_type_int32x4_t, \
-     int32x4x2_t: __ARM_mve_type_int32x4x2_t, \
-     int32x4x4_t: __ARM_mve_type_int32x4x4_t, \
-     int64_t: __ARM_mve_type_int_n, \
-     int64_t *: __ARM_mve_type_int64_t_ptr, \
-     int64_t const *: __ARM_mve_type_int64_t_ptr, \
-     int64x2_t: __ARM_mve_type_int64x2_t, \
-     int8_t: __ARM_mve_type_int_n, \
-     int8_t *: __ARM_mve_type_int8_t_ptr, \
-     int8_t const *: __ARM_mve_type_int8_t_ptr, \
-     int8x16_t: __ARM_mve_type_int8x16_t, \
-     int8x16x2_t: __ARM_mve_type_int8x16x2_t, \
-     int8x16x4_t: __ARM_mve_type_int8x16x4_t, \
-     uint16_t: __ARM_mve_type_int_n, \
-     uint16_t *: __ARM_mve_type_uint16_t_ptr, \
-     uint16_t const *: __ARM_mve_type_uint16_t_ptr, \
-     uint16x8_t: __ARM_mve_type_uint16x8_t, \
-     uint16x8x2_t: __ARM_mve_type_uint16x8x2_t, \
-     uint16x8x4_t: __ARM_mve_type_uint16x8x4_t, \
-     uint32_t: __ARM_mve_type_int_n, \
-     uint32_t *: __ARM_mve_type_uint32_t_ptr, \
-     uint32_t const *: __ARM_mve_type_uint32_t_ptr, \
-     uint32x4_t: __ARM_mve_type_uint32x4_t, \
-     uint32x4x2_t: __ARM_mve_type_uint32x4x2_t, \
-     uint32x4x4_t: __ARM_mve_type_uint32x4x4_t, \
-     uint64_t: __ARM_mve_type_int_n, \
-     uint64_t *: __ARM_mve_type_uint64_t_ptr, \
-     uint64_t const *: __ARM_mve_type_uint64_t_ptr, \
-     uint64x2_t: __ARM_mve_type_uint64x2_t, \
-     uint8_t: __ARM_mve_type_int_n, \
-     uint8_t *: __ARM_mve_type_uint8_t_ptr, \
-     uint8_t const *: __ARM_mve_type_uint8_t_ptr, \
-     uint8x16_t: __ARM_mve_type_uint8x16_t, \
-     uint8x16x2_t: __ARM_mve_type_uint8x16x2_t, \
-     uint8x16x4_t: __ARM_mve_type_uint8x16x4_t, \
-     default: _Generic(x, \
- 	signed char: __ARM_mve_type_int_n, \
- 	short: __ARM_mve_type_int_n, \
- 	int: __ARM_mve_type_int_n, \
- 	long: __ARM_mve_type_int_n, \
- 	long long: __ARM_mve_type_int_n, \
- 	unsigned char: __ARM_mve_type_int_n, \
- 	unsigned short: __ARM_mve_type_int_n, \
- 	unsigned int: __ARM_mve_type_int_n, \
- 	unsigned long: __ARM_mve_type_int_n, \
- 	unsigned long long: __ARM_mve_type_int_n, \
- 	signed char*: __ARM_mve_type_int8_t_ptr, \
- 	short*: __ARM_mve_type_int16_t_ptr, \
- 	int*: __ARM_mve_type_int32_t_ptr, \
- 	long*: __ARM_mve_type_int32_t_ptr, \
- 	long long*: __ARM_mve_type_int64_t_ptr, \
- 	unsigned char*: __ARM_mve_type_uint8_t_ptr, \
- 	unsigned short*: __ARM_mve_type_uint16_t_ptr, \
- 	unsigned int*: __ARM_mve_type_uint32_t_ptr, \
- 	unsigned long*: __ARM_mve_type_uint32_t_ptr, \
- 	unsigned long long*: __ARM_mve_type_uint64_t_ptr, \
- 	default: __ARM_mve_unsupported_type))
- #endif /* MVE Floating point.  */
- 
- extern void *__ARM_undef;
- #define __ARM_mve_coerce(param, type) \
-     _Generic(param, type: param, default: *(type *)__ARM_undef)
- #define __ARM_mve_coerce_i_scalar(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, int8_t: param, int16_t: param, int32_t: param, int64_t: param, uint8_t: param, uint16_t: param, uint32_t: param, uint64_t: param, default: *(type *)__ARM_undef))
- 
- #define __ARM_mve_coerce_s8_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, signed char*: param, default: *(type *)__ARM_undef))
- #define __ARM_mve_coerce_u8_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, unsigned char*: param, default: *(type *)__ARM_undef))
- 
- #define __ARM_mve_coerce_s16_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, short*: param, default: *(type *)__ARM_undef))
- #define __ARM_mve_coerce_u16_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, unsigned short*: param, default: *(type *)__ARM_undef))
- 
- #define __ARM_mve_coerce_s32_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, int*: param, long*: param, default: *(type *)__ARM_undef))
- #define __ARM_mve_coerce_u32_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, unsigned int*: param, unsigned long*: param, default: *(type *)__ARM_undef))
- 
- #define __ARM_mve_coerce_s64_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, long long*: param, default: *(type *)__ARM_undef))
- #define __ARM_mve_coerce_u64_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, unsigned long long*: param, default: *(type *)__ARM_undef))
- 
- #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */
- #define __ARM_mve_coerce_f_scalar(param, type) \
-     _Generic(param, type: param, const type: param, __fp16: param, default: _Generic (param, _Float16: param, float16_t: param, float32_t: param, default: *(type *)__ARM_undef))
- #define __ARM_mve_coerce_f16_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, __fp16*: param, _Float16*: param, default: *(type *)__ARM_undef))
- #define __ARM_mve_coerce_f32_ptr(param, type) \
-     _Generic(param, type: param, const type: param, default: _Generic (param, float*: param, default: *(type *)__ARM_undef))
- #endif
- 
- #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */
- 
- #define __arm_vuninitializedq(p0) ({ __typeof(p0) __p0 = (p0); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
-   int (*)[__ARM_mve_type_int8x16_t]: __arm_vuninitializedq_s8 (), \
-   int (*)[__ARM_mve_type_int16x8_t]: __arm_vuninitializedq_s16 (), \
-   int (*)[__ARM_mve_type_int32x4_t]: __arm_vuninitializedq_s32 (), \
-   int (*)[__ARM_mve_type_int64x2_t]: __arm_vuninitializedq_s64 (), \
-   int (*)[__ARM_mve_type_uint8x16_t]: __arm_vuninitializedq_u8 (), \
-   int (*)[__ARM_mve_type_uint16x8_t]: __arm_vuninitializedq_u16 (), \
-   int (*)[__ARM_mve_type_uint32x4_t]: __arm_vuninitializedq_u32 (), \
-   int (*)[__ARM_mve_type_uint64x2_t]: __arm_vuninitializedq_u64 (), \
-   int (*)[__ARM_mve_type_float16x8_t]: __arm_vuninitializedq_f16 (), \
-   int (*)[__ARM_mve_type_float32x4_t]: __arm_vuninitializedq_f32 ());})
- 
- #define __arm_vgetq_lane(p0,p1) ({ __typeof(p0) __p0 = (p0); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
-   int (*)[__ARM_mve_type_int8x16_t]: __arm_vgetq_lane_s8 (__ARM_mve_coerce(__p0, int8x16_t), p1), \
-   int (*)[__ARM_mve_type_int16x8_t]: __arm_vgetq_lane_s16 (__ARM_mve_coerce(__p0, int16x8_t), p1), \
-   int (*)[__ARM_mve_type_int32x4_t]: __arm_vgetq_lane_s32 (__ARM_mve_coerce(__p0, int32x4_t), p1), \
-   int (*)[__ARM_mve_type_int64x2_t]: __arm_vgetq_lane_s64 (__ARM_mve_coerce(__p0, int64x2_t), p1), \
-   int (*)[__ARM_mve_type_uint8x16_t]: __arm_vgetq_lane_u8 (__ARM_mve_coerce(__p0, uint8x16_t), p1), \
-   int (*)[__ARM_mve_type_uint16x8_t]: __arm_vgetq_lane_u16 (__ARM_mve_coerce(__p0, uint16x8_t), p1), \
-   int (*)[__ARM_mve_type_uint32x4_t]: __arm_vgetq_lane_u32 (__ARM_mve_coerce(__p0, uint32x4_t), p1), \
-   int (*)[__ARM_mve_type_uint64x2_t]: __arm_vgetq_lane_u64 (__ARM_mve_coerce(__p0, uint64x2_t), p1), \
-   int (*)[__ARM_mve_type_float16x8_t]: __arm_vgetq_lane_f16 (__ARM_mve_coerce(__p0, float16x8_t), p1), \
-   int (*)[__ARM_mve_type_float32x4_t]: __arm_vgetq_lane_f32 (__ARM_mve_coerce(__p0, float32x4_t), p1));})
- 
- #define __arm_vsetq_lane(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int64x2_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint64x2_t), p2), \
-   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vsetq_lane_f16 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
-   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vsetq_lane_f32 (__ARM_mve_coerce_f_scalar(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
- 
- #else /* MVE Integer.  */
- 
- #define __arm_vuninitializedq(p0) ({ __typeof(p0) __p0 = (p0); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
-   int (*)[__ARM_mve_type_int8x16_t]: __arm_vuninitializedq_s8 (), \
-   int (*)[__ARM_mve_type_int16x8_t]: __arm_vuninitializedq_s16 (), \
-   int (*)[__ARM_mve_type_int32x4_t]: __arm_vuninitializedq_s32 (), \
-   int (*)[__ARM_mve_type_int64x2_t]: __arm_vuninitializedq_s64 (), \
-   int (*)[__ARM_mve_type_uint8x16_t]: __arm_vuninitializedq_u8 (), \
-   int (*)[__ARM_mve_type_uint16x8_t]: __arm_vuninitializedq_u16 (), \
-   int (*)[__ARM_mve_type_uint32x4_t]: __arm_vuninitializedq_u32 (), \
-   int (*)[__ARM_mve_type_uint64x2_t]: __arm_vuninitializedq_u64 ());})
- 
- #define __arm_vgetq_lane(p0,p1) ({ __typeof(p0) __p0 = (p0); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
-   int (*)[__ARM_mve_type_int8x16_t]: __arm_vgetq_lane_s8 (__ARM_mve_coerce(__p0, int8x16_t), p1), \
-   int (*)[__ARM_mve_type_int16x8_t]: __arm_vgetq_lane_s16 (__ARM_mve_coerce(__p0, int16x8_t), p1), \
-   int (*)[__ARM_mve_type_int32x4_t]: __arm_vgetq_lane_s32 (__ARM_mve_coerce(__p0, int32x4_t), p1), \
-   int (*)[__ARM_mve_type_int64x2_t]: __arm_vgetq_lane_s64 (__ARM_mve_coerce(__p0, int64x2_t), p1), \
-   int (*)[__ARM_mve_type_uint8x16_t]: __arm_vgetq_lane_u8 (__ARM_mve_coerce(__p0, uint8x16_t), p1), \
-   int (*)[__ARM_mve_type_uint16x8_t]: __arm_vgetq_lane_u16 (__ARM_mve_coerce(__p0, uint16x8_t), p1), \
-   int (*)[__ARM_mve_type_uint32x4_t]: __arm_vgetq_lane_u32 (__ARM_mve_coerce(__p0, uint32x4_t), p1), \
-   int (*)[__ARM_mve_type_uint64x2_t]: __arm_vgetq_lane_u64 (__ARM_mve_coerce(__p0, uint64x2_t), p1));})
- 
- #define __arm_vsetq_lane(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int8x16_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int16x8_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, int64x2_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce_i_scalar(__p0, int), __ARM_mve_coerce(__p1, uint64x2_t), p2));})
- 
- #endif /* MVE Integer.  */
- 
- #endif /* __cplusplus  */
  #endif /* __ARM_FEATURE_MVE  */
  #endif /* _GCC_ARM_MVE_H.  */
--- 44,48 ----
diff -Nrcpad gcc-16-20251116/gcc/config/arm/arm_mve_types.h gcc-16-20251123/gcc/config/arm/arm_mve_types.h
*** gcc-16-20251116/gcc/config/arm/arm_mve_types.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/arm_mve_types.h	Sun Nov 23 22:32:08 2025
***************
*** 26,35 ****
  #ifndef _GCC_ARM_MVE_TYPES_H
  #define _GCC_ARM_MVE_TYPES_H
  
- #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */
  typedef __fp16 float16_t;
  typedef float float32_t;
- #endif
  
  #pragma GCC arm "arm_mve_types.h"
  
--- 26,33 ----
diff -Nrcpad gcc-16-20251116/gcc/config/arm/mve.md gcc-16-20251123/gcc/config/arm/mve.md
*** gcc-16-20251116/gcc/config/arm/mve.md	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/arm/mve.md	Sun Nov 23 22:32:08 2025
***************
*** 4158,4167 ****
     return "";
  }
    [(set_attr "length" "16")])
  ;;
  ;; [vgetq_lane_u, vgetq_lane_s, vgetq_lane_f])
  ;;
! (define_insn "mve_vec_extract<mode><V_elem_l>"
   [(set (match_operand:<V_elem> 0 "nonimmediate_operand" "=r")
     (vec_select:<V_elem>
      (match_operand:MVE_VLD_ST 1 "s_register_operand" "w")
--- 4158,4168 ----
     return "";
  }
    [(set_attr "length" "16")])
+ 
  ;;
  ;; [vgetq_lane_u, vgetq_lane_s, vgetq_lane_f])
  ;;
! (define_insn "@mve_vec_extract<mode><V_elem_l>"
   [(set (match_operand:<V_elem> 0 "nonimmediate_operand" "=r")
     (vec_select:<V_elem>
      (match_operand:MVE_VLD_ST 1 "s_register_operand" "w")
***************
*** 4236,4242 ****
  ;;
  ;; [vsetq_lane_u, vsetq_lane_s, vsetq_lane_f])
  ;;
! (define_insn "mve_vec_set<mode>_internal"
   [(set (match_operand:VQ2 0 "s_register_operand" "=w")
         (vec_merge:VQ2
  	(vec_duplicate:VQ2
--- 4237,4243 ----
  ;;
  ;; [vsetq_lane_u, vsetq_lane_s, vsetq_lane_f])
  ;;
! (define_insn "@mve_vec_set<mode>_internal"
   [(set (match_operand:VQ2 0 "s_register_operand" "=w")
         (vec_merge:VQ2
  	(vec_duplicate:VQ2
diff -Nrcpad gcc-16-20251116/gcc/config/i386/driver-i386.cc gcc-16-20251123/gcc/config/i386/driver-i386.cc
*** gcc-16-20251116/gcc/config/i386/driver-i386.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/driver-i386.cc	Sun Nov 23 22:32:08 2025
*************** const char *host_detect_local_cpu (int a
*** 603,608 ****
--- 603,611 ----
  		  /* Assume Diamond Rapids.  */
  		  if (has_feature (FEATURE_AMX_FP8))
  		    cpu = "diamondrapids";
+ 		  /* Assume Nova Lake.  */
+ 		  else if (has_feature (FEATURE_AVX10_2))
+ 		    cpu = "novalake";
  		  /* Assume Granite Rapids D.  */
  		  else if (has_feature (FEATURE_AMX_COMPLEX))
  		    cpu = "graniterapids-d";
*************** const char *host_detect_local_cpu (int a
*** 643,651 ****
  		  /* Assume Clearwater Forest.  */
  		  if (has_feature (FEATURE_USER_MSR))
  		    cpu = "clearwaterforest";
- 		  /* Assume Nova Lake.  */
- 		  else if (has_feature (FEATURE_PREFETCHI))
- 		    cpu = "novalake";
  		  else if (has_feature (FEATURE_SM3))
  		    {
  			if (has_feature (FEATURE_KL))
--- 646,651 ----
diff -Nrcpad gcc-16-20251116/gcc/config/i386/i386.cc gcc-16-20251123/gcc/config/i386/i386.cc
*** gcc-16-20251116/gcc/config/i386/i386.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/i386.cc	Sun Nov 23 22:32:08 2025
*************** i386_solaris_elf_named_section (const ch
*** 25103,25109 ****
        return;
      }
  
! #ifndef USE_GAS
    if (HAVE_COMDAT_GROUP && flags & SECTION_LINKONCE)
      {
        solaris_elf_asm_comdat_section (name, flags, decl);
--- 25103,25109 ----
        return;
      }
  
! #if !HAVE_GNU_AS
    if (HAVE_COMDAT_GROUP && flags & SECTION_LINKONCE)
      {
        solaris_elf_asm_comdat_section (name, flags, decl);
*************** ix86_vector_costs::finish_cost (const ve
*** 26609,26614 ****
--- 26609,26619 ----
    if (loop_vinfo
        && !LOOP_VINFO_EPILOGUE_P (loop_vinfo)
        && LOOP_VINFO_VECT_FACTOR (loop_vinfo).to_constant () > 2
+       /* Avoid a masked epilog if cascaded epilogues eventually get us
+ 	 to one with VF 1 as that means no scalar epilog at all.  */
+       && !((GET_MODE_SIZE (loop_vinfo->vector_mode)
+ 	    / LOOP_VINFO_VECT_FACTOR (loop_vinfo).to_constant () == 16)
+ 	   && ix86_tune_features[X86_TUNE_AVX512_TWO_EPILOGUES])
        && ix86_tune_features[X86_TUNE_AVX512_MASKED_EPILOGUES]
        && !OPTION_SET_P (param_vect_partial_vector_usage))
      {
diff -Nrcpad gcc-16-20251116/gcc/config/i386/i386.h gcc-16-20251123/gcc/config/i386/i386.h
*** gcc-16-20251116/gcc/config/i386/i386.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/i386.h	Sun Nov 23 22:32:08 2025
*************** constexpr wide_int_bitmask PTA_DIAMONDRA
*** 2488,2494 ****
    | PTA_CMPCCXADD | PTA_SHA512 | PTA_SM3 | PTA_SM4 | PTA_AVX10_2
    | PTA_APX_F | PTA_AMX_AVX512 | PTA_AMX_FP8 | PTA_AMX_TF32 | PTA_MOVRS
    | PTA_AMX_MOVRS;
! constexpr wide_int_bitmask PTA_NOVALAKE = PTA_PANTHERLAKE | PTA_PREFETCHI;
  
  constexpr wide_int_bitmask PTA_BDVER1 = PTA_64BIT | PTA_MMX | PTA_SSE
    | PTA_SSE2 | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_POPCNT | PTA_LZCNT
--- 2488,2498 ----
    | PTA_CMPCCXADD | PTA_SHA512 | PTA_SM3 | PTA_SM4 | PTA_AVX10_2
    | PTA_APX_F | PTA_AMX_AVX512 | PTA_AMX_FP8 | PTA_AMX_TF32 | PTA_MOVRS
    | PTA_AMX_MOVRS;
! constexpr wide_int_bitmask PTA_NOVALAKE = PTA_PANTHERLAKE | PTA_PREFETCHI
!   | PTA_AVX512F | PTA_AVX512CD | PTA_AVX512VL | PTA_AVX512BW | PTA_AVX512DQ
!   | PTA_AVX512VBMI | PTA_AVX512IFMA | PTA_AVX512VNNI | PTA_AVX512VBMI2
!   | PTA_AVX512BITALG | PTA_AVX512VPOPCNTDQ | PTA_AVX512FP16 | PTA_AVX512BF16
!   | PTA_AVX10_1 | PTA_AVX10_2 | PTA_APX_F | PTA_MOVRS;
  
  constexpr wide_int_bitmask PTA_BDVER1 = PTA_64BIT | PTA_MMX | PTA_SSE
    | PTA_SSE2 | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_POPCNT | PTA_LZCNT
diff -Nrcpad gcc-16-20251116/gcc/config/i386/i386.md gcc-16-20251123/gcc/config/i386/i386.md
*** gcc-16-20251116/gcc/config/i386/i386.md	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/i386.md	Sun Nov 23 22:32:08 2025
***************
*** 14203,14209 ****
     (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "SI")])
  
! ;; It must be put before *<code><mode>_3, the blow one.
  (define_insn "*ior<mode>_ccz_1"
    [(set (reg:CCZ FLAGS_REG)
  	(compare:CCZ
--- 14203,14209 ----
     (set_attr "isa" "*,apx_ndd")
     (set_attr "mode" "SI")])
  
! ;; It must be put before *<code><mode>_3, the one below.
  (define_insn "*ior<mode>_ccz_1"
    [(set (reg:CCZ FLAGS_REG)
  	(compare:CCZ
diff -Nrcpad gcc-16-20251116/gcc/config/i386/predicates.md gcc-16-20251123/gcc/config/i386/predicates.md
*** gcc-16-20251116/gcc/config/i386/predicates.md	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/predicates.md	Sun Nov 23 22:32:08 2025
***************
*** 1319,1327 ****
    (ior (match_operand 0 "nonimmediate_operand")
         (match_test "const_vec_duplicate_p (op)")))
  
- (define_predicate "const_vec_dup_operand"
-        (match_test "const_vec_duplicate_p (op)"))
- 
  ;; Return true when OP is either register operand, or any
  ;; CONST_VECTOR.
  (define_predicate "reg_or_const_vector_operand"
--- 1319,1324 ----
diff -Nrcpad gcc-16-20251116/gcc/config/i386/sol2.h gcc-16-20251123/gcc/config/i386/sol2.h
*** gcc-16-20251116/gcc/config/i386/sol2.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/sol2.h	Sun Nov 23 22:32:08 2025
*************** along with GCC; see the file COPYING3.
*** 60,66 ****
  
  /* GNU as understands --32 and --64, but the native Solaris
     assembler requires -xarch=generic or -xarch=generic64 instead.  */
! #ifdef USE_GAS
  #define ASM_CPU32_DEFAULT_SPEC "--32"
  #define ASM_CPU64_DEFAULT_SPEC "--64"
  #else
--- 60,66 ----
  
  /* GNU as understands --32 and --64, but the native Solaris
     assembler requires -xarch=generic or -xarch=generic64 instead.  */
! #if HAVE_GNU_AS
  #define ASM_CPU32_DEFAULT_SPEC "--32"
  #define ASM_CPU64_DEFAULT_SPEC "--64"
  #else
*************** along with GCC; see the file COPYING3.
*** 90,96 ****
  
  #define ARCH64_SUBDIR "amd64"
  
! #ifdef USE_GLD
  #define ARCH32_EMULATION "elf_i386_sol2"
  #define ARCH64_EMULATION "elf_x86_64_sol2"
  #endif
--- 90,96 ----
  
  #define ARCH64_SUBDIR "amd64"
  
! #if HAVE_GNU_LD
  #define ARCH32_EMULATION "elf_i386_sol2"
  #define ARCH64_EMULATION "elf_x86_64_sol2"
  #endif
*************** along with GCC; see the file COPYING3.
*** 149,155 ****
        }							\
    } while (0)
  
! #ifndef USE_GAS
  /* The Sun assembler uses .tcomm for TLS common sections.  */
  #define TLS_COMMON_ASM_OP ".tcomm"
  
--- 149,155 ----
        }							\
    } while (0)
  
! #if !HAVE_GNU_AS
  /* The Sun assembler uses .tcomm for TLS common sections.  */
  #define TLS_COMMON_ASM_OP ".tcomm"
  
*************** along with GCC; see the file COPYING3.
*** 179,185 ****
        ASM_OUTPUT_LABEL (FILE, NAME);				\
      }								\
    while (0)
! #endif /* !USE_GAS */
  
  /* As in sparc/sol2.h, override the default from i386/x86-64.h to work
     around Sun as TLS bug.  */
--- 179,185 ----
        ASM_OUTPUT_LABEL (FILE, NAME);				\
      }								\
    while (0)
! #endif /* !HAVE_GNU_AS */
  
  /* As in sparc/sol2.h, override the default from i386/x86-64.h to work
     around Sun as TLS bug.  */
*************** along with GCC; see the file COPYING3.
*** 210,222 ****
  
  /* Sun as requires "h" flag for large sections, GNU as can do without, but
     accepts "l".  */
! #ifdef USE_GAS
  #define MACH_DEP_SECTION_ASM_FLAG 'l'
  #else
  #define MACH_DEP_SECTION_ASM_FLAG 'h'
  #endif
  
! #ifndef USE_GAS
  /* Emit COMDAT group signature symbols for Sun as.  */
  #undef TARGET_ASM_FILE_END
  #define TARGET_ASM_FILE_END solaris_file_end
--- 210,222 ----
  
  /* Sun as requires "h" flag for large sections, GNU as can do without, but
     accepts "l".  */
! #if HAVE_GNU_AS
  #define MACH_DEP_SECTION_ASM_FLAG 'l'
  #else
  #define MACH_DEP_SECTION_ASM_FLAG 'h'
  #endif
  
! #if !HAVE_GNU_AS
  /* Emit COMDAT group signature symbols for Sun as.  */
  #undef TARGET_ASM_FILE_END
  #define TARGET_ASM_FILE_END solaris_file_end
*************** along with GCC; see the file COPYING3.
*** 224,235 ****
  
  /* Unlike GNU ld, Sun ld doesn't coalesce .ctors.N/.dtors.N sections, so
     inhibit their creation.  Also cf. sparc/sysv4.h.  */
! #ifndef USE_GLD
  #define CTORS_SECTION_ASM_OP	"\t.section\t.ctors, \"aw\""
  #define DTORS_SECTION_ASM_OP	"\t.section\t.dtors, \"aw\""
  #endif
  
! #ifndef USE_GAS
  #define LARGECOMM_SECTION_ASM_OP "\t.lbcomm\t"
  #endif
  
--- 224,235 ----
  
  /* Unlike GNU ld, Sun ld doesn't coalesce .ctors.N/.dtors.N sections, so
     inhibit their creation.  Also cf. sparc/sysv4.h.  */
! #if !HAVE_GNU_LD
  #define CTORS_SECTION_ASM_OP	"\t.section\t.ctors, \"aw\""
  #define DTORS_SECTION_ASM_OP	"\t.section\t.dtors, \"aw\""
  #endif
  
! #if !HAVE_GNU_AS
  #define LARGECOMM_SECTION_ASM_OP "\t.lbcomm\t"
  #endif
  
diff -Nrcpad gcc-16-20251116/gcc/config/i386/sse.md gcc-16-20251123/gcc/config/i386/sse.md
*** gcc-16-20251116/gcc/config/i386/sse.md	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/sse.md	Sun Nov 23 22:32:08 2025
***************
*** 4653,4658 ****
--- 4653,4661 ----
  	   UNSPEC_PCMP))]
    "operands[4] = GEN_INT (INTVAL (operands[3]) ^ 4);")
  
+ (define_int_iterator UNSPEC_PCMP_ITER
+   [UNSPEC_PCMP UNSPEC_UNSIGNED_PCMP])
+ 
  (define_insn "*<avx512>_cmp<mode>3_and15"
    [(set (match_operand:QI 0 "register_operand" "=k")
  	(and:QI
***************
*** 4685,4690 ****
--- 4688,4710 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
+ (define_insn "*<avx512>_eq<mode>3_and15"
+   [(set (match_operand:QI 0 "register_operand" "=k, k")
+ 	(and:QI
+ 	  (unspec:QI
+ 	    [(match_operand:VI48_AVX512VL_4 1 "nonimm_or_0_operand" "%v, v")
+ 	     (match_operand:VI48_AVX512VL_4 2 "nonimm_or_0_operand" "vm, C")
+ 	     (const_int 0)]
+ 	    UNSPEC_PCMP_ITER)
+ 	  (const_int 15)))]
+   "TARGET_AVX512F && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
+   "@
+    vpcmpeq<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}
+    vptestnm<ssemodesuffix>\t{%1, %1, %0|%0, %1, %1}"
+   [(set_attr "type" "ssecmp")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "<sseinsnmode>")])
+ 
  (define_insn "*<avx512>_cmp<mode>3_and3"
    [(set (match_operand:QI 0 "register_operand" "=k")
  	(and:QI
***************
*** 4717,4722 ****
--- 4737,4759 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
+ (define_insn "*avx512vl_eqv2di_and3"
+   [(set (match_operand:QI 0 "register_operand" "=k, k")
+ 	(and:QI
+ 	  (unspec:QI
+ 	    [(match_operand:V2DI 1 "nonimm_or_0_operand" "%v, v")
+ 	     (match_operand:V2DI 2 "nonimm_or_0_operand" "vm, C")
+ 	     (const_int 0)]
+ 	    UNSPEC_PCMP_ITER)
+ 	  (const_int 3)))]
+   "TARGET_AVX512F && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
+   "@
+    vpcmpeqq\t{%2, %1, %0|%0, %1, %2}
+    vptestnmq\t{%1, %1, %0|%0, %1, %1}"
+   [(set_attr "type" "ssecmp")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "TI")])
+ 
  (define_insn "<avx512>_cmp<mode>3<mask_scalar_merge_name>"
    [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k")
  	(unspec:<avx512fmaskmode>
***************
*** 4790,4798 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "<VI12_AVX512VL:sseinsnmode>")])
  
- (define_int_iterator UNSPEC_PCMP_ITER
-   [UNSPEC_PCMP UNSPEC_UNSIGNED_PCMP])
- 
  (define_insn_and_split "*<avx512>_cmp<mode>3"
    [(set (match_operand:<avx512fmaskmode> 0 "register_operand")
  	(not:<avx512fmaskmode>
--- 4827,4832 ----
***************
*** 27259,27282 ****
    DONE;
  })
  
- (define_expand "cond_<insn><mode>"
-   [(set (match_operand:VI1_AVX512VL 0 "register_operand")
- 	(vec_merge:VI1_AVX512VL
- 	  (any_shift:VI1_AVX512VL
- 	    (match_operand:VI1_AVX512VL 2 "register_operand")
- 	    (match_operand:VI1_AVX512VL 3 "const_vec_dup_operand"))
- 	  (match_operand:VI1_AVX512VL 4 "nonimm_or_0_operand")
- 	(match_operand:<avx512fmaskmode> 1 "register_operand")))]
-   "TARGET_GFNI && TARGET_AVX512F"
- {
-   rtx count = XVECEXP (operands[3], 0, 0);
-   rtx matrix = ix86_vgf2p8affine_shift_matrix (operands[0], count, <CODE>);
-   emit_insn (gen_vgf2p8affineqb_<mode>_mask (operands[0], operands[2], matrix,
- 					     const0_rtx, operands[4],
- 					     operands[1]));
-   DONE;
- })
- 
  (define_expand "<insn><mode>3"
    [(set (match_operand:VI1_AVX512_3264 0 "register_operand")
  	(any_rotate:VI1_AVX512_3264
--- 27293,27298 ----
diff -Nrcpad gcc-16-20251116/gcc/config/i386/x-mingw32 gcc-16-20251123/gcc/config/i386/x-mingw32
*** gcc-16-20251116/gcc/config/i386/x-mingw32	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/x-mingw32	Sun Nov 23 22:32:08 2025
***************
*** 21,26 ****
--- 21,29 ----
  #
  local_includedir=$(libsubdir)/$(unlibsubdir)/..`echo $(exec_prefix) | sed -e 's|^$(prefix)||' -e 's|/[^/]*|/..|g'`/include
  
+ # Add Windows socket library.
+ LIBS += -lws2_32
+ 
  # On MinGW, we use "%IA64d" to print 64-bit integers, and the format-checking
  # code does not handle that, so we have to disable checking here.
  WERROR_FLAGS += -Wno-format
diff -Nrcpad gcc-16-20251116/gcc/config/i386/x86-tune-sched.cc gcc-16-20251123/gcc/config/i386/x86-tune-sched.cc
*** gcc-16-20251116/gcc/config/i386/x86-tune-sched.cc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/x86-tune-sched.cc	Sun Nov 23 22:32:08 2025
*************** ix86_issue_rate (void)
*** 110,115 ****
--- 110,118 ----
      case PROCESSOR_PANTHERLAKE:
        return 6;
  
+     case PROCESSOR_NOVALAKE:
+       return 8;
+ 
      default:
        return 1;
      }
diff -Nrcpad gcc-16-20251116/gcc/config/i386/x86-tune.def gcc-16-20251123/gcc/config/i386/x86-tune.def
*** gcc-16-20251116/gcc/config/i386/x86-tune.def	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/i386/x86-tune.def	Sun Nov 23 22:32:08 2025
*************** DEF_TUNE (X86_TUNE_AVX128_OPTIMAL, "avx1
*** 602,608 ****
  
  /* X86_TUNE_AVX256_OPTIMAL: Use 256-bit AVX instructions instead of 512-bit AVX
     instructions in the auto-vectorizer.  */
! DEF_TUNE (X86_TUNE_AVX256_OPTIMAL, "avx256_optimal", m_CORE_AVX512)
  
  /* X86_TUNE_AVX256_AVOID_VEC_PERM: Avoid using 256-bit cross-lane
     vector permutation instructions in the auto-vectorizer.  */
--- 602,608 ----
  
  /* X86_TUNE_AVX256_OPTIMAL: Use 256-bit AVX instructions instead of 512-bit AVX
     instructions in the auto-vectorizer.  */
! DEF_TUNE (X86_TUNE_AVX256_OPTIMAL, "avx256_optimal", m_CORE_AVX512 | m_NOVALAKE)
  
  /* X86_TUNE_AVX256_AVOID_VEC_PERM: Avoid using 256-bit cross-lane
     vector permutation instructions in the auto-vectorizer.  */
diff -Nrcpad gcc-16-20251116/gcc/config/ia64/hpux.h gcc-16-20251123/gcc/config/ia64/hpux.h
*** gcc-16-20251116/gcc/config/ia64/hpux.h	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config/ia64/hpux.h	Sun Nov 23 22:32:08 2025
*************** do {							\
*** 62,68 ****
  #undef  ASM_EXTRA_SPEC
  #define ASM_EXTRA_SPEC "%{milp32:-milp32} %{mlp64:-mlp64}"
  
! #ifndef USE_GAS
  #define AS_NEEDS_DASH_FOR_PIPED_INPUT
  #endif
  
--- 62,68 ----
  #undef  ASM_EXTRA_SPEC
  #define ASM_EXTRA_SPEC "%{milp32:-milp32} %{mlp64:-mlp64}"
  
! #ifndef HAVE_GNU_AS
  #define AS_NEEDS_DASH_FOR_PIPED_INPUT
  #endif
  
diff -Nrcpad gcc-16-20251116/gcc/config/loongarch/constraints.md gcc-16-20251123/gcc/config/loongarch/constraints.md
*** gcc-16-20251116/gcc/config/loongarch/constraints.md	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/loongarch/constraints.md	Sun Nov 23 22:32:08 2025
***************
*** 298,307 ****
  
  (define_constraint "YI"
    "@internal
!    A replicated vector const in which the replicated value is in the range
!    [-512,511]."
    (and (match_code "const_vector")
!        (match_test "loongarch_const_vector_vrepli (op, mode)")))
  
  (define_constraint "YC"
    "@internal
--- 298,306 ----
  
  (define_constraint "YI"
    "@internal
!    A vector const can be generated by vldi or xvldi instruction."
    (and (match_code "const_vector")
!        (match_test "loongarch_const_vector_vldi (op, mode)")))
  
  (define_constraint "YC"
    "@internal
diff -Nrcpad gcc-16-20251116/gcc/config/loongarch/lasx.md gcc-16-20251123/gcc/config/loongarch/lasx.md
*** gcc-16-20251116/gcc/config/loongarch/lasx.md	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/loongarch/lasx.md	Sun Nov 23 22:32:08 2025
***************
*** 44,51 ****
    UNSPEC_LASX_XVREPL128VEI
    UNSPEC_LASX_XVSRAR
    UNSPEC_LASX_XVSRLR
-   UNSPEC_LASX_XVSHUF
-   UNSPEC_LASX_XVSHUF_B
    UNSPEC_LASX_BRANCH
    UNSPEC_LASX_BRANCH_V
  
--- 44,49 ----
***************
*** 135,146 ****
  ;; Only used for copy256_{u,s}.w.
  (define_mode_iterator LASX_W    [V8SI V8SF])
  
- ;; As ILASX but excludes V32QI.
- (define_mode_iterator ILASX_DWH [V4DI V8SI V16HI])
- 
- ;; As LASX but excludes V32QI.
- (define_mode_iterator LASX_DWH [V4DF V8SF V4DI V8SI V16HI])
- 
  ;; As ILASX but excludes V4DI.
  (define_mode_iterator ILASX_WHB [V8SI V16HI V32QI])
  
--- 133,138 ----
***************
*** 469,476 ****
    [(set_attr "type" "simd_splat")
     (set_attr "mode" "<MODE>")])
  
! ;; xshuf.w
! (define_insn "lasx_xvperm_<lasxfmt_f_wd>"
    [(set (match_operand:LASX_W 0 "register_operand" "=f")
  	(unspec:LASX_W
  	  [(match_operand:LASX_W 1 "nonimmediate_operand" "f")
--- 461,468 ----
    [(set_attr "type" "simd_splat")
     (set_attr "mode" "<MODE>")])
  
! ;; xvperm.w
! (define_insn "@lasx_xvperm_<lasxfmt_f_wd>"
    [(set (match_operand:LASX_W 0 "register_operand" "=f")
  	(unspec:LASX_W
  	  [(match_operand:LASX_W 1 "nonimmediate_operand" "f")
***************
*** 482,488 ****
     (set_attr "mode" "<MODE>")])
  
  ;; xvpermi.d
! (define_insn "lasx_xvpermi_d_<LASX:mode>"
    [(set (match_operand:LASX 0 "register_operand" "=f")
  	  (unspec:LASX
  	    [(match_operand:LASX 1 "register_operand" "f")
--- 474,480 ----
     (set_attr "mode" "<MODE>")])
  
  ;; xvpermi.d
! (define_insn "@lasx_xvpermi_d_<LASX:mode>"
    [(set (match_operand:LASX 0 "register_operand" "=f")
  	  (unspec:LASX
  	    [(match_operand:LASX 1 "register_operand" "f")
***************
*** 2103,2130 ****
    [(set_attr "type" "simd_int_arith")
     (set_attr "mode" "<MODE>")])
  
- (define_insn "@lasx_xvshuf_<lasxfmt_f>"
-   [(set (match_operand:LASX_DWH 0 "register_operand" "=f")
- 	(unspec:LASX_DWH [(match_operand:<VIMODE> 1 "register_operand" "0")
- 			  (match_operand:LASX_DWH 2 "register_operand" "f")
- 			  (match_operand:LASX_DWH 3 "register_operand" "f")]
- 			UNSPEC_LASX_XVSHUF))]
-   "ISA_HAS_LASX"
-   "xvshuf.<lasxfmt>\t%u0,%u2,%u3"
-   [(set_attr "type" "simd_sld")
-    (set_attr "mode" "<MODE>")])
- 
- (define_insn "lasx_xvshuf_b"
-   [(set (match_operand:V32QI 0 "register_operand" "=f")
- 	(unspec:V32QI [(match_operand:V32QI 1 "register_operand" "f")
- 		       (match_operand:V32QI 2 "register_operand" "f")
- 		       (match_operand:V32QI 3 "register_operand" "f")]
- 		      UNSPEC_LASX_XVSHUF_B))]
-   "ISA_HAS_LASX"
-   "xvshuf.b\t%u0,%u1,%u2,%u3"
-   [(set_attr "type" "simd_sld")
-    (set_attr "mode" "V32QI")])
- 
  (define_insn "lasx_xvreplve0_<lasxfmt_f>"
    [(set (match_operand:LASX 0 "register_operand" "=f")
  	(vec_duplicate:LASX
--- 2095,2100 ----
diff -Nrcpad gcc-16-20251116/gcc/config/loongarch/loongarch-protos.h gcc-16-20251123/gcc/config/loongarch/loongarch-protos.h
*** gcc-16-20251116/gcc/config/loongarch/loongarch-protos.h	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/loongarch/loongarch-protos.h	Sun Nov 23 22:32:08 2025
*************** extern bool loongarch_const_vector_shuff
*** 124,130 ****
  extern bool loongarch_const_vector_bitimm_set_p (rtx, machine_mode);
  extern bool loongarch_const_vector_bitimm_clr_p (rtx, machine_mode);
  extern bool loongarch_check_vect_par_cnst_half (rtx, machine_mode, bool);
! extern rtx loongarch_const_vector_vrepli (rtx, machine_mode);
  extern rtx loongarch_lsx_vec_parallel_const_half (machine_mode, bool);
  extern rtx loongarch_gen_const_int_vector (machine_mode, HOST_WIDE_INT);
  extern enum reg_class loongarch_secondary_reload_class (enum reg_class,
--- 124,130 ----
  extern bool loongarch_const_vector_bitimm_set_p (rtx, machine_mode);
  extern bool loongarch_const_vector_bitimm_clr_p (rtx, machine_mode);
  extern bool loongarch_check_vect_par_cnst_half (rtx, machine_mode, bool);
! extern rtx loongarch_const_vector_vldi (rtx, machine_mode);
  extern rtx loongarch_lsx_vec_parallel_const_half (machine_mode, bool);
  extern rtx loongarch_gen_const_int_vector (machine_mode, HOST_WIDE_INT);
  extern enum reg_class loongarch_secondary_reload_class (enum reg_class,
*************** extern void loongarch_expand_atomic_qihi
*** 179,185 ****
  extern void loongarch_expand_vector_group_init (rtx, rtx);
  extern void loongarch_expand_vector_init (rtx, rtx);
  extern void loongarch_expand_vec_unpack (rtx op[2], bool);
- extern void loongarch_expand_vec_perm (rtx, rtx, rtx, rtx);
  extern void loongarch_expand_vec_perm_1 (rtx[]);
  extern void loongarch_expand_vector_extract (rtx, rtx, int);
  extern void loongarch_expand_vector_reduc (rtx (*)(rtx, rtx, rtx), rtx, rtx);
--- 179,184 ----
diff -Nrcpad gcc-16-20251116/gcc/config/loongarch/loongarch.cc gcc-16-20251123/gcc/config/loongarch/loongarch.cc
*** gcc-16-20251116/gcc/config/loongarch/loongarch.cc	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/loongarch/loongarch.cc	Sun Nov 23 22:32:08 2025
*************** loongarch_check_vect_par_cnst_half (rtx
*** 1977,1984 ****
    return true;
  }
  
  rtx
! loongarch_const_vector_vrepli (rtx x, machine_mode mode)
  {
    int size = GET_MODE_SIZE (mode);
  
--- 1977,2146 ----
    return true;
  }
  
+ /* VLDI or XVLDI instruction could have 13 bits imm part, this mask is used to
+    indicate the highest bit is 1.  */
+ #define VLDI_NEG_MASK HOST_WIDE_INT_UC(0xFFFFFFFFFFFFF000)
+ 
+ /* Return true if repeated value in vector for machine mode can be set by VLDI
+    or XVLDI instruction, the immediate value for VLDI or XVLDI will be put into
+    res.  */
+ static bool
+ loongarch_parse_vldi_const (rtx op, machine_mode mode,
+ 			    unsigned HOST_WIDE_INT *res)
+ {
+   if (!loongarch_const_vector_same_val_p (op, mode))
+     return false;
+ 
+   rtx elem0 = CONST_VECTOR_ELT (op, 0);
+   if (!CONST_INT_P (elem0))
+     return false;
+ 
+   HOST_WIDE_INT value = INTVAL (elem0);
+   switch (mode)
+     {
+     case E_V16QImode:
+     case E_V32QImode:
+       {
+ 	*res = value & 0xFF;
+ 	return true;
+       }
+     case E_V8HImode:
+     case E_V16HImode:
+       {
+ 	if (value >= -512 && value <= 511)
+ 	  {
+ 	    *res = 0x400 | (value & 0x3FF);
+ 	    return true;
+ 	  }
+ 
+ 	uint16_t num = value & 0xFFFF;
+ 	/* 4'b0101:data={4{x[7:0],8'b0}}.  */
+ 	if ((num & 0xFF) == 0)
+ 	  {
+ 	    *res = VLDI_NEG_MASK | 0x500 | (num >> 8);
+ 	    return true;
+ 	  }
+ 	break;
+       }
+     case E_V4SImode:
+     case E_V8SImode:
+       {
+ 	if (value >= -512 && value <= 511)
+ 	  {
+ 	    *res = 0x800 | (value & 0x3FF);
+ 	    return true;
+ 	  }
+ 	uint32_t num = value & 0xFFFFFFFF;
+ 	/* 4'b0001:data={2{16'b0,x[7:0],8'b0}}.  */
+ 	if ((num & 0xFFFF00FF) == 0)
+ 	  {
+ 	    *res = VLDI_NEG_MASK | 0x100 | ((num >> 8) & 0xFF);
+ 	    return true;
+ 	  }
+ 
+ 	/* 4'b0010:data={2{8'b0,x[7:0],16'b0}}.  */
+ 	if ((num & 0xFF00FFFF) == 0)
+ 	  {
+ 	    *res = VLDI_NEG_MASK | 0x200 | ((num >> 16) & 0xFF);
+ 	    return true;
+ 	  }
+ 
+ 	/* 4'b0011:data={2{x[7:0],24'b0}}.  */
+ 	if ((num & 0xFFFFFF) == 0)
+ 	  {
+ 	    *res = VLDI_NEG_MASK | 0x300 | ((num >> 24) & 0xFF);
+ 	    return true;
+ 	  }
+ 
+ 	/* 4'b0110:data={2{16'b0,x[7:0],8'hFF}}.  */
+ 	if (num >> 16 == 0 && (num & 0xFF) == 0xFF)
+ 	  {
+ 	    *res = VLDI_NEG_MASK | 0x600 | ((num >> 8) & 0xFF);
+ 	    return true;
+ 	  }
+ 
+ 	/* 4'b0111:data={2{8'b0,x[7:0],16'hFFFF}}.  */
+ 	if (num >> 24 == 0 && (num & 0xFFFF) == 0xFFFF)
+ 	  {
+ 	    *res = VLDI_NEG_MASK | 0x700 | ((num >> 16) & 0xFF);
+ 	    return true;
+ 	  }
+ 
+ 	/* 4'b1010:data={2{x[7],~x[6],{5{x[6]}},x[5:0],19'b0}}.  */
+ 	uint32_t temp = (num >> 25) & 0x3F;
+ 	/* x[6] == 0, then ~x[6],{5{x[6]}} should be 0b10 0000,
+ 	   x[6] == 1, then ~x[6],{5{x[6]}} should be 0b01 1111.  */
+ 	if ((temp == 0x20 || temp == 0x1F) && (num & 0x7FFFF) == 0)
+ 	  {
+ 	    temp = ((num >> 19) & 0x7F) | ((num >> 24) & 0x80);
+ 	    *res = VLDI_NEG_MASK | 0xa00 | temp;
+ 	    return true;
+ 	  }
+ 	break;
+       }
+     case E_V2DImode:
+     case E_V4DImode:
+       {
+ 	if (value >= -512 && value <= 511)
+ 	  {
+ 	    *res = 0xC00 | (value & 0x3FF);
+ 	    return true;
+ 	  }
+ 
+ 	uint64_t num = value;
+ 	/* 4'b1001:data={{8{x[7]}},{8{x[6]}},{8{x[5]}},{8{x[4]}},{8{x[3]}},
+ 	   {8{x[2]}},{8{x[1]}},{8{x[0]}}}.  */
+ 	bool same_bit = true;
+ 	uint64_t temp = 0;
+ 	for (int i = 0; i < 8; i++)
+ 	  {
+ 	    uint8_t n = (num >> (i * 8)) & 0xFF;
+ 	    if (n != 0 && n != 0xFF)
+ 	      {
+ 		same_bit = false;
+ 		break;
+ 	      }
+ 
+ 	    if (n == 0xFF)
+ 	      temp = (1 << i) | temp;
+ 	  }
+ 	if (same_bit)
+ 	  {
+ 	    *res = VLDI_NEG_MASK | 0x900 | temp;
+ 	    return true;
+ 	  }
+ 
+ 	/* 4'b1011:data={32'b0,x[7],~x[6],{5{x[6]}},x[5:0],19'b0}.  */
+ 	temp = (num >> 25) & 0x3F;
+ 	if ((num & 0xFFFFFFFF) == num
+ 	    && (temp == 0x20 || temp == 0x1F)
+ 	    && (num & 0x7FFFF) == 0)
+ 	  {
+ 	    temp = ((num >> 19) & 0x7F) | ((num >> 24) & 0x80);
+ 	    *res = VLDI_NEG_MASK | 0xB00 | temp;
+ 	    return true;
+ 	  }
+ 
+ 	/* 4'b1100:data={x[7],~x[6],{8{x[6]}},x[5:0],48'b0}.  */
+ 	temp = (num >> 54) & 0x1FF;
+ 	if ((num & HOST_WIDE_INT_UC(0xFFFF000000000000)) == num
+ 	    && (temp == 0xFF || temp == 0x100))
+ 	  {
+ 	    temp = ((num >> 48) & 0x7F) | ((num >> 56) & 0x80);
+ 	    *res = VLDI_NEG_MASK | 0xC00 | temp;
+ 	    return true;
+ 	  }
+ 	break;
+       }
+     default:
+       break;
+     }
+ 
+   return false;
+ }
+ 
  rtx
! loongarch_const_vector_vldi (rtx x, machine_mode mode)
  {
    int size = GET_MODE_SIZE (mode);
  
*************** loongarch_const_vector_vrepli (rtx x, ma
*** 1992,1999 ****
  	mode_for_vector (elem_mode, size / GET_MODE_SIZE (elem_mode))
  	  .require ();
        rtx op = lowpart_subreg (new_mode, x, mode);
!       if (loongarch_const_vector_same_int_p (op, new_mode, -512, 511))
! 	return op;
      }
  
    return NULL_RTX;
--- 2154,2164 ----
  	mode_for_vector (elem_mode, size / GET_MODE_SIZE (elem_mode))
  	  .require ();
        rtx op = lowpart_subreg (new_mode, x, mode);
! 
!       HOST_WIDE_INT res = 0;
!       if (loongarch_parse_vldi_const (op, new_mode,
! 				      (unsigned HOST_WIDE_INT *)&res))
! 	return GEN_INT (res);
      }
  
    return NULL_RTX;
*************** loongarch_const_insns (rtx x)
*** 2661,2667 ****
      case CONST_VECTOR:
        if ((LSX_SUPPORTED_MODE_P (GET_MODE (x))
  	   || LASX_SUPPORTED_MODE_P (GET_MODE (x)))
! 	  && loongarch_const_vector_vrepli (x, GET_MODE (x)))
  	return 1;
        /* Fall through.  */
      case CONST_DOUBLE:
--- 2826,2832 ----
      case CONST_VECTOR:
        if ((LSX_SUPPORTED_MODE_P (GET_MODE (x))
  	   || LASX_SUPPORTED_MODE_P (GET_MODE (x)))
! 	  && loongarch_const_vector_vldi (x, GET_MODE (x)))
  	return 1;
        /* Fall through.  */
      case CONST_DOUBLE:
*************** loongarch_split_vector_move_p (rtx dest,
*** 4920,4926 ****
    /* Check for vector set to an immediate const vector with valid replicated
       element.  */
    if (FP_REG_RTX_P (dest)
!       && loongarch_const_vector_vrepli (src, GET_MODE (src)))
      return false;
  
    /* Check for vector load zero immediate.  */
--- 5085,5091 ----
    /* Check for vector set to an immediate const vector with valid replicated
       element.  */
    if (FP_REG_RTX_P (dest)
!       && loongarch_const_vector_vldi (src, GET_MODE (src)))
      return false;
  
    /* Check for vector load zero immediate.  */
*************** loongarch_output_move (rtx *operands)
*** 5056,5070 ****
        && src_code == CONST_VECTOR
        && CONST_INT_P (CONST_VECTOR_ELT (src, 0)))
      {
!       operands[1] = loongarch_const_vector_vrepli (src, mode);
        gcc_assert (operands[1]);
  
        switch (GET_MODE_SIZE (mode))
  	{
  	case 16:
! 	  return "vrepli.%v1\t%w0,%E1";
  	case 32:
! 	  return "xvrepli.%v1\t%u0,%E1";
  	default: gcc_unreachable ();
  	}
      }
--- 5221,5235 ----
        && src_code == CONST_VECTOR
        && CONST_INT_P (CONST_VECTOR_ELT (src, 0)))
      {
!       operands[1] = loongarch_const_vector_vldi (src, mode);
        gcc_assert (operands[1]);
  
        switch (GET_MODE_SIZE (mode))
  	{
  	case 16:
! 	  return "vldi\t%w0,%1";
  	case 32:
! 	  return "xvldi\t%u0,%1";
  	default: gcc_unreachable ();
  	}
      }
*************** loongarch_block_move_straight (rtx dest,
*** 5922,5927 ****
--- 6087,6102 ----
    /* Allocate a buffer for the temporary registers.  */
    regs = XALLOCAVEC (rtx, num_reg);
  
+   /* Extract the base address what plus operation to promote the combine of
+      RTX.  */
+   if (GET_CODE (XEXP (dest, 0)) == PLUS)
+     {
+       unsigned int dest_align = MEM_ALIGN (dest);
+       rtx dest_reg = copy_addr_to_reg (XEXP (dest, 0));
+       dest = change_address (dest, BLKmode, dest_reg);
+       set_mem_align (dest, dest_align);
+     }
+ 
    for (delta_cur = delta, i = 0, offs = 0; offs < length; delta_cur /= 2)
      {
        mode = loongarch_mode_for_move_size (delta_cur);
*************** loongarch_try_expand_lsx_vshuf_const (st
*** 8712,8721 ****
        rtx sel = force_reg (sel_mode,
  			   gen_rtx_CONST_VECTOR (sel_mode, sel_v));
  
!       if (d->vmode == E_V16QImode)
! 	emit_insn (gen_lsx_vshuf_b (target, op1, op0, sel));
!       else
! 	emit_insn (gen_lsx_vshuf (d->vmode, target, sel, op1, op0));
  
        return true;
      }
--- 8887,8893 ----
        rtx sel = force_reg (sel_mode,
  			   gen_rtx_CONST_VECTOR (sel_mode, sel_v));
  
!       emit_insn (gen_simd_vshuf (d->vmode, target, op1, op0, sel));
  
        return true;
      }
*************** loongarch_expand_vec_perm_1 (rtx operand
*** 9090,9190 ****
    rtx t1 = NULL;
    rtx t2 = NULL;
    rtx t3, t4, t5, t6, vt = NULL;
-   rtx vec[32] = {NULL};
    machine_mode mode = GET_MODE (op0);
    machine_mode maskmode = GET_MODE (mask);
!   int w, i;
  
    /* Number of elements in the vector.  */
    w = GET_MODE_NUNITS (mode);
  
!   rtx round_data[MAX_VECT_LEN];
!   rtx round_reg, round_data_rtx;
! 
!   if (mode != E_V32QImode)
      {
!       for (int i = 0; i < w; i += 1)
! 	{
! 	  round_data[i] = GEN_INT (0x1f);
! 	}
! 
!       if (mode == E_V4DFmode)
! 	{
! 	  round_data_rtx = gen_rtx_CONST_VECTOR (E_V4DImode,
! 						 gen_rtvec_v (w, round_data));
! 	  round_reg = gen_reg_rtx (E_V4DImode);
! 	}
!       else if (mode == E_V8SFmode)
! 	{
! 
! 	  round_data_rtx = gen_rtx_CONST_VECTOR (E_V8SImode,
! 						 gen_rtvec_v (w, round_data));
! 	  round_reg = gen_reg_rtx (E_V8SImode);
! 	}
!       else
! 	{
! 	  round_data_rtx = gen_rtx_CONST_VECTOR (mode,
! 						 gen_rtvec_v (w, round_data));
! 	  round_reg = gen_reg_rtx (mode);
! 	}
! 
!       emit_move_insn (round_reg, round_data_rtx);
!       switch (mode)
! 	{
! 	case E_V32QImode:
! 	  emit_insn (gen_andv32qi3 (mask, mask, round_reg));
! 	  break;
! 	case E_V16HImode:
! 	  emit_insn (gen_andv16hi3 (mask, mask, round_reg));
! 	  break;
! 	case E_V8SImode:
! 	case E_V8SFmode:
! 	  emit_insn (gen_andv8si3 (mask, mask, round_reg));
! 	  break;
! 	case E_V4DImode:
! 	case E_V4DFmode:
! 	  emit_insn (gen_andv4di3 (mask, mask, round_reg));
! 	  break;
! 	default:
! 	  gcc_unreachable ();
! 	  break;
! 	}
      }
  
    if (mode == V4DImode || mode == V4DFmode)
      {
        maskmode = mode = V8SImode;
        w = 8;
-       t1 = gen_reg_rtx (maskmode);
  
        /* Replicate the low bits of the V4DImode mask into V8SImode:
! 	 mask = { A B C D }
! 	 t1 = { A A B B C C D D }.  */
!       for (i = 0; i < w / 2; ++i)
! 	vec[i*2 + 1] = vec[i*2] = GEN_INT (i * 2);
!       vt = gen_rtx_CONST_VECTOR (maskmode, gen_rtvec_v (w, vec));
!       vt = force_reg (maskmode, vt);
!       mask = gen_lowpart (maskmode, mask);
!       emit_insn (gen_lasx_xvperm_w (t1, mask, vt));
! 
!       /* Multiply the shuffle indicies by two.  */
!       t1 = expand_simple_binop (maskmode, PLUS, t1, t1, t1, 1,
! 				OPTAB_DIRECT);
! 
!       /* Add one to the odd shuffle indicies:
! 	 t1 = { A*2, A*2+1, B*2, B*2+1, ... }.  */
!       for (i = 0; i < w / 2; ++i)
! 	{
! 	  vec[i * 2] = const0_rtx;
! 	  vec[i * 2 + 1] = const1_rtx;
! 	}
!       vt = gen_rtx_CONST_VECTOR (maskmode, gen_rtvec_v (w, vec));
!       vt = validize_mem (force_const_mem (maskmode, vt));
!       t1 = expand_simple_binop (maskmode, PLUS, t1, vt, t1, 1,
! 				OPTAB_DIRECT);
  
        /* Continue as if V8SImode (resp.  V32QImode) was used initially.  */
!       operands[3] = mask = t1;
        target = gen_reg_rtx (mode);
        op0 = gen_lowpart (mode, op0);
        op1 = gen_lowpart (mode, op1);
--- 9262,9305 ----
    rtx t1 = NULL;
    rtx t2 = NULL;
    rtx t3, t4, t5, t6, vt = NULL;
    machine_mode mode = GET_MODE (op0);
    machine_mode maskmode = GET_MODE (mask);
!   int w;
  
    /* Number of elements in the vector.  */
    w = GET_MODE_NUNITS (mode);
  
!   /* If we are using xvshuf.*, clamp the selector to avoid unpredictable
!      output; if we need to blend two shuf results for the final result,
!      also clamp it so we can use xvslei to generate the bitmask for
!      the blending.  */
!   if ((maskmode != V8SImode && maskmode != V4DImode)
!       || !one_operand_shuffle)
      {
!       rtx t = gen_const_vec_duplicate (maskmode, GEN_INT (2 * w - 1));
!       mask = expand_binop (maskmode, and_optab, mask, t, NULL_RTX, false,
! 			   OPTAB_DIRECT);
      }
  
    if (mode == V4DImode || mode == V4DFmode)
      {
        maskmode = mode = V8SImode;
        w = 8;
  
        /* Replicate the low bits of the V4DImode mask into V8SImode:
! 	 mask = lasx_xvpackev_w (mask * 2, mask * 2 + 1)  */
!       t1 = expand_binop (V4DImode, add_optab, mask, mask, NULL_RTX,
! 			 false, OPTAB_DIRECT);
!       t2 = gen_const_vec_duplicate (V4DImode, CONST1_RTX (DImode));
!       t2 = expand_binop (V4DImode, add_optab, t1, t2, NULL_RTX,
! 			 true, OPTAB_DIRECT);
!       t1 = gen_lowpart (mode, t1);
!       t2 = gen_lowpart (mode, t2);
!       t3 = gen_reg_rtx (mode);
!       emit_insn (gen_lasx_xvpackev_w (t3, t1, t2));
  
        /* Continue as if V8SImode (resp.  V32QImode) was used initially.  */
!       operands[3] = mask = t3;
        target = gen_reg_rtx (mode);
        op0 = gen_lowpart (mode, op0);
        op1 = gen_lowpart (mode, op1);
*************** loongarch_expand_vec_perm_1 (rtx operand
*** 9193,9304 ****
    switch (mode)
      {
      case E_V8SImode:
        if (one_operand_shuffle)
  	{
! 	  emit_insn (gen_lasx_xvperm_w (target, op0, mask));
  	  if (target != operands[0])
  	    emit_move_insn (operands[0],
  			    gen_lowpart (GET_MODE (operands[0]), target));
  	}
        else
  	{
! 	  t1 = gen_reg_rtx (V8SImode);
! 	  t2 = gen_reg_rtx (V8SImode);
! 	  emit_insn (gen_lasx_xvperm_w (t1, op0, mask));
! 	  emit_insn (gen_lasx_xvperm_w (t2, op1, mask));
! 	  goto merge_two;
! 	}
!       return;
! 
!     case E_V8SFmode:
!       mask = gen_lowpart (V8SImode, mask);
!       if (one_operand_shuffle)
! 	emit_insn (gen_lasx_xvperm_w_f (target, op0, mask));
!       else
! 	{
! 	  t1 = gen_reg_rtx (V8SFmode);
! 	  t2 = gen_reg_rtx (V8SFmode);
! 	  emit_insn (gen_lasx_xvperm_w_f (t1, op0, mask));
! 	  emit_insn (gen_lasx_xvperm_w_f (t2, op1, mask));
! 	  goto merge_two;
  	}
!       return;
  
      case E_V16HImode:
-       if (one_operand_shuffle)
- 	{
- 	  t1 = gen_reg_rtx (V16HImode);
- 	  t2 = gen_reg_rtx (V16HImode);
- 	  emit_insn (gen_lasx_xvpermi_d_v16hi (t1, op0, GEN_INT (0x44)));
- 	  emit_insn (gen_lasx_xvpermi_d_v16hi (t2, op0, GEN_INT (0xee)));
- 	  emit_insn (gen_lasx_xvshuf_h (target, mask, t2, t1));
- 	}
-       else
- 	{
- 	  t1 = gen_reg_rtx (V16HImode);
- 	  t2 = gen_reg_rtx (V16HImode);
- 	  t3 = gen_reg_rtx (V16HImode);
- 	  t4 = gen_reg_rtx (V16HImode);
- 	  t5 = gen_reg_rtx (V16HImode);
- 	  t6 = gen_reg_rtx (V16HImode);
- 	  emit_insn (gen_lasx_xvpermi_d_v16hi (t3, op0, GEN_INT (0x44)));
- 	  emit_insn (gen_lasx_xvpermi_d_v16hi (t4, op0, GEN_INT (0xee)));
- 	  emit_insn (gen_lasx_xvshuf_h (t1, mask, t4, t3));
- 	  emit_insn (gen_lasx_xvpermi_d_v16hi (t5, op1, GEN_INT (0x44)));
- 	  emit_insn (gen_lasx_xvpermi_d_v16hi (t6, op1, GEN_INT (0xee)));
- 	  emit_insn (gen_lasx_xvshuf_h (t2, mask, t6, t5));
- 	  goto merge_two;
- 	}
-       return;
- 
      case E_V32QImode:
        if (one_operand_shuffle)
  	{
! 	  t1 = gen_reg_rtx (V32QImode);
! 	  t2 = gen_reg_rtx (V32QImode);
! 	  emit_insn (gen_lasx_xvpermi_d_v32qi (t1, op0, GEN_INT (0x44)));
! 	  emit_insn (gen_lasx_xvpermi_d_v32qi (t2, op0, GEN_INT (0xee)));
! 	  emit_insn (gen_lasx_xvshuf_b (target, t2, t1, mask));
  	}
        else
  	{
! 	  t1 = gen_reg_rtx (V32QImode);
! 	  t2 = gen_reg_rtx (V32QImode);
! 	  t3 = gen_reg_rtx (V32QImode);
! 	  t4 = gen_reg_rtx (V32QImode);
! 	  t5 = gen_reg_rtx (V32QImode);
! 	  t6 = gen_reg_rtx (V32QImode);
! 	  emit_insn (gen_lasx_xvpermi_d_v32qi (t3, op0, GEN_INT (0x44)));
! 	  emit_insn (gen_lasx_xvpermi_d_v32qi (t4, op0, GEN_INT (0xee)));
! 	  emit_insn (gen_lasx_xvshuf_b (t1, t4, t3, mask));
! 	  emit_insn (gen_lasx_xvpermi_d_v32qi (t5, op1, GEN_INT (0x44)));
! 	  emit_insn (gen_lasx_xvpermi_d_v32qi (t6, op1, GEN_INT (0xee)));
! 	  emit_insn (gen_lasx_xvshuf_b (t2, t6, t5, mask));
! 	  goto merge_two;
  	}
!       return;
  
      default:
!       gcc_assert (GET_MODE_SIZE (mode) == 32);
        break;
      }
  
! merge_two:
    /* Then merge them together.  The key is whether any given control
       element contained a bit set that indicates the second word.  */
    rtx xops[6];
!   mask = operands[3];
!   vt = GEN_INT (w);
!   vt = gen_const_vec_duplicate (maskmode, vt);
!   vt = force_reg (maskmode, vt);
!   mask = expand_simple_binop (maskmode, AND, mask, vt,
! 			      NULL_RTX, 0, OPTAB_DIRECT);
    if (GET_MODE (target) != mode)
      target = gen_reg_rtx (mode);
    xops[0] = target;
!   xops[1] = gen_lowpart (mode, t2);
!   xops[2] = gen_lowpart (mode, t1);
!   xops[3] = gen_rtx_EQ (maskmode, mask, vt);
    xops[4] = mask;
    xops[5] = vt;
  
--- 9308,9375 ----
    switch (mode)
      {
      case E_V8SImode:
+     case E_V8SFmode:
        if (one_operand_shuffle)
  	{
! 	  emit_insn (gen_lasx_xvperm (mode, target, op0, mask));
  	  if (target != operands[0])
  	    emit_move_insn (operands[0],
  			    gen_lowpart (GET_MODE (operands[0]), target));
  	}
        else
  	{
! 	  t1 = gen_reg_rtx (mode);
! 	  t2 = gen_reg_rtx (mode);
! 	  emit_insn (gen_lasx_xvperm (mode, t1, op0, mask));
! 	  emit_insn (gen_lasx_xvperm (mode, t2, op1, mask));
  	}
!       break;
  
      case E_V16HImode:
      case E_V32QImode:
        if (one_operand_shuffle)
  	{
! 	  t1 = gen_reg_rtx (mode);
! 	  t2 = gen_reg_rtx (mode);
! 	  emit_insn (gen_lasx_xvpermi_d (mode, t1, op0, GEN_INT (0x44)));
! 	  emit_insn (gen_lasx_xvpermi_d (mode, t2, op0, GEN_INT (0xee)));
! 	  emit_insn (gen_simd_vshuf (mode, target, t2, t1, mask));
  	}
        else
  	{
! 	  t1 = gen_reg_rtx (mode);
! 	  t2 = gen_reg_rtx (mode);
! 	  t3 = gen_reg_rtx (mode);
! 	  t4 = gen_reg_rtx (mode);
! 	  t5 = gen_reg_rtx (mode);
! 	  t6 = gen_reg_rtx (mode);
! 	  emit_insn (gen_lasx_xvpermi_d (mode, t3, op0, GEN_INT (0x44)));
! 	  emit_insn (gen_lasx_xvpermi_d (mode, t4, op0, GEN_INT (0xee)));
! 	  emit_insn (gen_simd_vshuf (mode, t1, t4, t3, mask));
! 	  emit_insn (gen_lasx_xvpermi_d (mode, t5, op1, GEN_INT (0x44)));
! 	  emit_insn (gen_lasx_xvpermi_d (mode, t6, op1, GEN_INT (0xee)));
! 	  emit_insn (gen_simd_vshuf (mode, t2, t6, t5, mask));
  	}
!       break;
  
      default:
!       gcc_unreachable ();
        break;
      }
  
!   if (one_operand_shuffle)
!     return;
! 
    /* Then merge them together.  The key is whether any given control
       element contained a bit set that indicates the second word.  */
    rtx xops[6];
!   vt = gen_const_vec_duplicate (maskmode, GEN_INT (w - 1));
    if (GET_MODE (target) != mode)
      target = gen_reg_rtx (mode);
    xops[0] = target;
!   xops[1] = gen_lowpart (mode, t1);
!   xops[2] = gen_lowpart (mode, t2);
!   xops[3] = gen_rtx_LEU (maskmode, mask, vt);
    xops[4] = mask;
    xops[5] = vt;
  
*************** merge_two:
*** 9308,9362 ****
  		    gen_lowpart (GET_MODE (operands[0]), target));
  }
  
- void
- loongarch_expand_vec_perm (rtx target, rtx op0, rtx op1, rtx sel)
- {
-   machine_mode vmode = GET_MODE (target);
-   machine_mode vimode = GET_MODE (sel);
-   auto nelt = GET_MODE_NUNITS (vmode);
-   auto round_reg = gen_reg_rtx (vimode);
-   rtx round_data[MAX_VECT_LEN];
- 
-   for (int i = 0; i < nelt; i += 1)
-     {
-       round_data[i] = GEN_INT (0x1f);
-     }
- 
-   rtx round_data_rtx = gen_rtx_CONST_VECTOR (vimode, gen_rtvec_v (nelt, round_data));
-   emit_move_insn (round_reg, round_data_rtx);
- 
-   if (vmode != vimode)
-     {
-       target = lowpart_subreg (vimode, target, vmode);
-       op0 = lowpart_subreg (vimode, op0, vmode);
-       op1 = lowpart_subreg (vimode, op1, vmode);
-     }
- 
-   switch (vmode)
-     {
-     case E_V16QImode:
-       emit_insn (gen_andv16qi3 (sel, sel, round_reg));
-       emit_insn (gen_lsx_vshuf_b (target, op1, op0, sel));
-       break;
-     case E_V2DFmode:
-     case E_V2DImode:
-       emit_insn (gen_andv2di3 (sel, sel, round_reg));
-       emit_insn (gen_lsx_vshuf_d (target, sel, op1, op0));
-       break;
-     case E_V4SFmode:
-     case E_V4SImode:
-       emit_insn (gen_andv4si3 (sel, sel, round_reg));
-       emit_insn (gen_lsx_vshuf_w (target, sel, op1, op0));
-       break;
-     case E_V8HImode:
-       emit_insn (gen_andv8hi3 (sel, sel, round_reg));
-       emit_insn (gen_lsx_vshuf_h (target, sel, op1, op0));
-       break;
-     default:
-       break;
-     }
- }
- 
  /* Following are the assist function for const vector permutation support.  */
  static bool
  loongarch_is_quad_duplicate (struct expand_vec_perm_d *d)
--- 9379,9384 ----
*************** expand_perm_const_end:
*** 9821,9831 ****
  	  rtx sel = force_reg (sel_mode,
  			       gen_rtx_CONST_VECTOR (sel_mode, sel_v));
  
! 	  if (d->vmode == E_V32QImode)
! 	    emit_insn (gen_lasx_xvshuf_b (target, op1, op0, sel));
! 	  else
! 	    emit_insn (gen_lasx_xvshuf (d->vmode, target, sel, op1, op0));
! 
  	  return true;
  	}
      }
--- 9843,9849 ----
  	  rtx sel = force_reg (sel_mode,
  			       gen_rtx_CONST_VECTOR (sel_mode, sel_v));
  
! 	  emit_insn (gen_simd_vshuf (d->vmode, target, op1, op0, sel));
  	  return true;
  	}
      }
diff -Nrcpad gcc-16-20251116/gcc/config/loongarch/loongarch.md gcc-16-20251123/gcc/config/loongarch/loongarch.md
*** gcc-16-20251116/gcc/config/loongarch/loongarch.md	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/loongarch/loongarch.md	Sun Nov 23 22:32:08 2025
***************
*** 1637,1642 ****
--- 1637,1701 ----
      operands[3] = tmp;
    })
  
+ ;; Optimize (a << imm1) | (b & imm2) to use bstrins.w instruction, both a and b
+ ;; should be 32bits, imm2 value should be equal to (1LL << imm1) - 1.
+ ;; For example: (a << 1) | (b & 1)
+ ;;     slli.w  $r12,$r12,1
+ ;;     andi    $r13,$r13,1
+ ;;     or  $r12,$r12,$r13
+ ;; Optimized to use bstrins.w instruction as below:
+ ;;     bstrins.w   $r13,$r12,31,1
+ (define_insn_and_split "*bstrins_w_for_ior_ashift_and_extend"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(any_or_plus:DI
+ 	  (and:DI (match_operand:DI 1 "register_operand" "r")
+ 		  (match_operand:SI 2 "const_int_operand" "i"))
+ 	  (ashift:DI
+ 	    (sign_extract:DI
+ 	      (match_operand:DI 3 "register_operand" "r")
+ 	      (match_operand:SI 4 "const_uimm5_operand")
+ 	      (const_int 0))
+ 	    (match_operand:SI 5 "const_uimm5_operand"))))]
+   "TARGET_64BIT && loongarch_pre_reload_split ()
+    && !reg_overlap_mentioned_p (operands[0], operands[3])
+    && INTVAL (operands[2]) != 0 && INTVAL (operands[5]) != 0
+    && INTVAL (operands[2]) == (1LL << INTVAL (operands[5])) - 1
+    && INTVAL (operands[4]) + INTVAL (operands[5]) == 0x20"
+   "#"
+   "&& true"
+   [(const_int 0)]
+   {
+     emit_move_insn (operands[0], operands[1]);
+     rtx len = GEN_INT (32 - INTVAL (operands[5]));
+     rtx dest = gen_lowpart (SImode, operands[0]);
+     rtx op = gen_lowpart (SImode, operands[3]);
+     emit_insn (gen_insvsi (dest, len, operands[5], op));
+   })
+ 
+ ;; Optimize (a << imm1) | (b & imm2) to use bstrins.d instruction, the size of
+ ;; a and b are 8 bits, 16 bits or 64bits, imm2 value should be equal to
+ ;; (1LL << imm1) - 1.
+ (define_insn_and_split "*bstrins_d_for_ior_ashift_and"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(any_or_plus:DI
+ 	  (and:DI (match_operand:DI 1 "register_operand" "r")
+ 		  (match_operand:DI 2 "const_int_operand" "i"))
+ 	  (ashift:DI
+ 	      (match_operand:DI 3 "register_operand" "r")
+ 	      (match_operand:DI 4 "const_uimm63_operand"))))]
+   "TARGET_64BIT && loongarch_pre_reload_split ()
+    && !reg_overlap_mentioned_p (operands[0], operands[3])
+    && INTVAL (operands[2]) != 0 && INTVAL (operands[4]) != 0
+    && INTVAL (operands[2]) == (1LL << INTVAL (operands[4])) - 1"
+   "#"
+   "&& true"
+   [(set (match_dup 0) (match_dup 1))
+    (set (zero_extract:DI (match_dup 0) (match_dup 2) (match_dup 4))
+ 	(match_dup 3))]
+   {
+     operands[2] = GEN_INT (64 - INTVAL (operands[4]));
+   })
+ 
  (define_insn "and_load_zero_extend<mode>"
    [(set (match_operand:X 0 "register_operand" "=r,r,r,r,r,r")
  	(and:X (match_operand:X 1 "memory_operand" "%m,m,m,k,k,k")
diff -Nrcpad gcc-16-20251116/gcc/config/loongarch/lsx.md gcc-16-20251123/gcc/config/loongarch/lsx.md
*** gcc-16-20251116/gcc/config/loongarch/lsx.md	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/loongarch/lsx.md	Sun Nov 23 22:32:08 2025
***************
*** 45,51 ****
    UNSPEC_LSX_VSAT_U
    UNSPEC_LSX_VSRAR
    UNSPEC_LSX_VSRLR
-   UNSPEC_LSX_VSHUF
    UNSPEC_LSX_VEXTW_S
    UNSPEC_LSX_VEXTW_U
    UNSPEC_LSX_VSLLWIL_S
--- 45,50 ----
***************
*** 86,92 ****
    UNSPEC_LSX_VSSRLN
    UNSPEC_LSX_VSSRLRN
    UNSPEC_LSX_VLDI
-   UNSPEC_LSX_VSHUF_B
    UNSPEC_LSX_VSTX
    UNSPEC_LSX_VEXTL_QU_DU
    UNSPEC_LSX_VSETEQZ_V
--- 85,90 ----
***************
*** 133,144 ****
  ;; Only used for copy_{u,s}.w and vilvh.
  (define_mode_iterator LSX_W    [V4SI V4SF])
  
- ;; As ILSX but excludes V16QI.
- (define_mode_iterator ILSX_DWH [V2DI V4SI V8HI])
- 
- ;; As LSX but excludes V16QI.
- (define_mode_iterator LSX_DWH  [V2DF V4SF V2DI V4SI V8HI])
- 
  ;; As ILSX but excludes V2DI.
  (define_mode_iterator ILSX_WHB [V4SI V8HI V16QI])
  
--- 131,136 ----
***************
*** 521,548 ****
  })
  
  (define_expand "vec_perm<mode>"
!  [(match_operand:LSX 0 "register_operand")
!   (match_operand:LSX 1 "register_operand")
!   (match_operand:LSX 2 "register_operand")
!   (match_operand:<VIMODE> 3 "register_operand")]
!   "ISA_HAS_LSX"
! {
!   loongarch_expand_vec_perm (operands[0], operands[1],
! 			     operands[2], operands[3]);
!   DONE;
! })
! 
! (define_insn "@lsx_vshuf_<lsxfmt_f>"
!   [(set (match_operand:LSX_DWH 0 "register_operand" "=f")
! 	(unspec:LSX_DWH [(match_operand:<VIMODE> 1 "register_operand" "0")
! 			 (match_operand:LSX_DWH 2 "register_operand" "f")
! 			 (match_operand:LSX_DWH 3 "register_operand" "f")]
! 			UNSPEC_LSX_VSHUF))]
!   "ISA_HAS_LSX"
!   "vshuf.<lsxfmt>\t%w0,%w2,%w3"
!   [(set_attr "type" "simd_sld")
!    (set_attr "mode" "<MODE>")])
! 
  
  ;; Integer operations
  (define_insn "add<mode>3"
--- 513,531 ----
  })
  
  (define_expand "vec_perm<mode>"
!  [(set (match_dup 4)
!        (and:<VIMODE> (match_operand:<VIMODE> 3 "register_operand")
! 		     (match_dup 5)))
!   (set (match_operand:LSX 0 "register_operand")
!        (unspec:LSX [(match_operand:LSX 2 "register_operand")
!                     (match_operand:LSX 1 "register_operand")
!                     (match_dup 4)]
! 		   UNSPEC_SIMD_VSHUF))]
!  "ISA_HAS_LSX"
!  {
!    operands[4] = gen_reg_rtx (<VIMODE>mode);
!    operands[5] = gen_const_vec_duplicate (<VIMODE>mode, GEN_INT (0x1f));
!  })
  
  ;; Integer operations
  (define_insn "add<mode>3"
***************
*** 1631,1636 ****
--- 1614,1652 ----
    [(set_attr "type" "simd_shf")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn_and_split "lsx_vshuf4i_mem_w_0"
+   [(set (match_operand:V4SI 0 "register_operand" "=f")
+        (vec_merge:V4SI
+          (vec_duplicate:V4SI
+            (mem:SI (match_operand:DI 1 "register_operand" "r")))
+          (vec_duplicate:V4SI
+            (mem:SI (plus:DI (match_dup 1) (const_int 4))))
+          (match_operand 2 "const_uimm4_operand" "")))]
+   "ISA_HAS_LSX"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+ {
+   operands[0] = gen_rtx_REG (V2DImode, REGNO (operands[0]));
+   emit_insn (gen_lsx_vldrepl_d_insn_0 (operands[0], operands[1]));
+ 
+   operands[0] = gen_rtx_REG (V4SImode, REGNO (operands[0]));
+   rtx sel[4];
+   int op2 = INTVAL (operands[2]);
+   int mask = 1;
+ 
+   /* Convert imm to an selection.  */
+   for (int i = 0; i < 4; ++i)
+     {
+       sel[i] =  (op2 & mask) ? const0_rtx : const1_rtx;
+       mask = mask << 1;
+     }
+ 
+   rtx shuf4i_mask = gen_rtx_PARALLEL (V4SImode, gen_rtvec_v (4, sel));
+   emit_insn (gen_lsx_vshuf4i_w (operands[0], operands[0], shuf4i_mask));
+   DONE;
+ })
+ 
  (define_insn "lsx_vsrar_<lsxfmt>"
    [(set (match_operand:ILSX 0 "register_operand" "=f")
  	(unspec:ILSX [(match_operand:ILSX 1 "register_operand" "f")
***************
*** 1680,1690 ****
    [(set_attr "type" "simd_splat")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "lsx_vreplvei_mirror_<lsxfmt_f>"
    [(set (match_operand:LSX 0 "register_operand" "=f")
  	(unspec: LSX [(match_operand:LSX 1 "register_operand" "f")
! 				(match_operand 2 "const_<indeximm>_operand" "")]
! 				UNSPEC_LSX_VREPLVEI_MIRROR))]
    "ISA_HAS_LSX"
    "vreplvei.d\t%w0,%w1,%2"
    [(set_attr "type" "simd_splat")
--- 1696,1710 ----
    [(set_attr "type" "simd_splat")
     (set_attr "mode" "<MODE>")])
  
+ ;; UNSPEC_LSX_VREPLVEI_MIRROR describes the mirror operation that copies
+ ;; the lower 64 bits of a 128-bit register to the upper 64 bits. It is only
+ ;; called when the high half-part is the same as the low.
+ 
  (define_insn "lsx_vreplvei_mirror_<lsxfmt_f>"
    [(set (match_operand:LSX 0 "register_operand" "=f")
  	(unspec: LSX [(match_operand:LSX 1 "register_operand" "f")
! 		      (match_operand 2 "const_0_or_1_operand" "")]
! 		      UNSPEC_LSX_VREPLVEI_MIRROR))]
    "ISA_HAS_LSX"
    "vreplvei.d\t%w0,%w1,%2"
    [(set_attr "type" "simd_splat")
***************
*** 2550,2555 ****
--- 2570,2604 ----
     (set_attr "mode" "<MODE>")
     (set_attr "length" "4")])
  
+ ;; In 128-bits register, the template implements the load of identical
+ ;; consecutive SImode data into both the upper 64 bits and lower 64 bits.
+ ;; Operand[2] performs a vec_merge operation on two consecutive addresses
+ ;; SImode data items, and places the result in either the lower 64 bits or
+ ;; the upper 64 bits. When operand[3] is 0, the lower 64 bits are copied
+ ;; to the upper 64 bits; when operand[3] is 1, the upper 64 bits are copied
+ ;; to the lower 64 bits.
+ 
+ (define_insn "lsx_vldrepl_merge_w_0"
+   [(set (match_operand:V4SI 0 "register_operand" "=f")
+        (unspec:V4SI
+          [(vec_merge:V4SI
+            (vec_duplicate:V4SI
+              (mem:SI (match_operand:DI 1 "register_operand" "r")))
+            (vec_duplicate:V4SI
+              (mem:SI (plus:DI (match_dup 1) (const_int 4))))
+            (match_operand 2 "const_uimm4_operand" ""))
+          (match_operand 3 "const_0_or_1_operand" "")]
+          UNSPEC_LSX_VREPLVEI_MIRROR))]
+   "ISA_HAS_LSX
+    && (INTVAL (operands[3]) ? (INTVAL (operands[2]) & 0xc) == 0x4
+ 			    : (INTVAL (operands[2]) & 0x3) == 0x1)"
+ {
+   return "vldrepl.d\t%w0,%1,0";
+ }
+   [(set_attr "type" "simd_load")
+    (set_attr "mode" "V4SI")
+    (set_attr "length" "4")])
+ 
  ;; Offset store by sel
  (define_expand "lsx_vstelm_<lsxfmt_f>"
    [(match_operand:LSX 0 "register_operand")
***************
*** 2668,2684 ****
    [(set_attr "type" "simd_load")
     (set_attr "mode" "V2DI")])
  
- (define_insn "lsx_vshuf_b"
-   [(set (match_operand:V16QI 0 "register_operand" "=f")
- 	(unspec:V16QI [(match_operand:V16QI 1 "register_operand" "f")
- 		       (match_operand:V16QI 2 "register_operand" "f")
- 		       (match_operand:V16QI 3 "register_operand" "f")]
- 		      UNSPEC_LSX_VSHUF_B))]
-   "ISA_HAS_LSX"
-   "vshuf.b\t%w0,%w1,%w2,%w3"
-   [(set_attr "type" "simd_shf")
-    (set_attr "mode" "V16QI")])
- 
  (define_insn "lsx_vstx"
    [(set (mem:V16QI (plus:DI (match_operand:DI 1 "register_operand" "r")
  			    (match_operand:DI 2 "reg_or_0_operand" "rJ")))
--- 2717,2722 ----
diff -Nrcpad gcc-16-20251116/gcc/config/loongarch/predicates.md gcc-16-20251123/gcc/config/loongarch/predicates.md
*** gcc-16-20251116/gcc/config/loongarch/predicates.md	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/loongarch/predicates.md	Sun Nov 23 22:32:08 2025
***************
*** 135,140 ****
--- 135,144 ----
    (and (match_code "const_int")
         (match_test "IN_RANGE (INTVAL (op), -16, 15)")))
  
+ (define_predicate "const_uimm63_operand"
+   (and (match_code "const_int")
+        (match_test "IN_RANGE (INTVAL (op), 0, 63)")))
+ 
  (define_predicate "const_imm10_operand"
    (and (match_code "const_int")
         (match_test "IMM10_OPERAND (INTVAL (op))")))
diff -Nrcpad gcc-16-20251116/gcc/config/loongarch/simd.md gcc-16-20251123/gcc/config/loongarch/simd.md
*** gcc-16-20251116/gcc/config/loongarch/simd.md	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/loongarch/simd.md	Sun Nov 23 22:32:08 2025
***************
*** 18,27 ****
  ;; <http://www.gnu.org/licenses/>.
  
  ;; Integer modes supported by LSX.
! (define_mode_iterator ILSX    [V2DI V4SI V8HI V16QI])
  
  ;; Integer modes supported by LASX.
! (define_mode_iterator ILASX   [V4DI V8SI V16HI V32QI])
  
  ;; Only integer modes smaller than a word.
  (define_mode_iterator ILSX_HB  [V8HI V16QI])
--- 18,31 ----
  ;; <http://www.gnu.org/licenses/>.
  
  ;; Integer modes supported by LSX.
! (define_mode_iterator ILSX_DWH [V2DI V4SI V8HI])
! (define_mode_iterator ILSX     [ILSX_DWH V16QI])
! (define_mode_iterator LSX_DWH  [ILSX_DWH V2DF V4SF])
  
  ;; Integer modes supported by LASX.
! (define_mode_iterator ILASX_DWH [V4DI V8SI V16HI])
! (define_mode_iterator ILASX     [ILASX_DWH V32QI])
! (define_mode_iterator LASX_DWH  [ILASX_DWH V4DF V8SF])
  
  ;; Only integer modes smaller than a word.
  (define_mode_iterator ILSX_HB  [V8HI V16QI])
***************
*** 46,51 ****
--- 50,59 ----
  (define_mode_iterator IVEC_HB [(ILSX_HB "ISA_HAS_LSX")
  			       (ILASX_HB "ISA_HAS_LASX")])
  
+ ;; All modes longer than a byte
+ (define_mode_iterator VEC_DWH [(LSX_DWH "ISA_HAS_LSX")
+ 			       (LASX_DWH "ISA_HAS_LASX")])
+ 
  ;; All FP modes available
  (define_mode_iterator FVEC    [(FLSX "ISA_HAS_LSX") (FLASX "ISA_HAS_LASX")])
  
***************
*** 255,261 ****
     UNSPEC_SIMD_FRINTRZ
     UNSPEC_SIMD_FRINT
     UNSPEC_SIMD_FRINTRM
!    UNSPEC_SIMD_FRINTRNE])
  
  (define_int_iterator SIMD_FRINT
    [UNSPEC_SIMD_FRINTRP
--- 263,270 ----
     UNSPEC_SIMD_FRINTRZ
     UNSPEC_SIMD_FRINT
     UNSPEC_SIMD_FRINTRM
!    UNSPEC_SIMD_FRINTRNE
!    UNSPEC_SIMD_VSHUF])
  
  (define_int_iterator SIMD_FRINT
    [UNSPEC_SIMD_FRINTRP
***************
*** 1107,1112 ****
--- 1116,1181 ----
    [(set_attr "type" "simd_logic,simd_bit,simd_logic")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "@simd_vshuf_<mode>"
+   [(set (match_operand:QIVEC 0 "register_operand" "=f")
+ 	(unspec:QIVEC [(match_operand:QIVEC 1 "register_operand" "f")
+ 		       (match_operand:QIVEC 2 "register_operand" "f")
+ 		       (match_operand:QIVEC 3 "register_operand" "f")]
+ 		       UNSPEC_SIMD_VSHUF))]
+   ""
+   {
+     return "<x>vshuf.b\t%<wu>0,%<wu>1,%<wu>2,%<wu>3";
+   }
+   [(set_attr "type" "simd_sld")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@simd_vshuf_<mode>"
+   [(set (match_operand:VEC_DWH 0 "register_operand" "=f")
+ 	(unspec:VEC_DWH [(match_operand:VEC_DWH 1 "register_operand" "f")
+ 			 (match_operand:VEC_DWH 2 "register_operand" "f")
+ 			 (match_operand:<VIMODE> 3 "register_operand" "0")]
+ 			UNSPEC_SIMD_VSHUF))]
+   ""
+   {
+     return "<x>vshuf.<simdfmt_as_i>\t%<wu>0,%<wu>1,%<wu>2";
+   }
+   [(set_attr "type" "simd_sld")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Backward compatibility wrapper.  New code should use simd_vshuf
+ ;; directly instead: gen_simd_vshuf (mode, ...) can often significantly
+ ;; simplify the logic.
+ (define_expand "<simd_isa>_<x>vshuf_<simdfmt><_f>"
+   [(match_operand:ALLVEC 0 "register_operand")
+    (match_operand 1 "register_operand")
+    (match_operand 2 "register_operand")
+    (match_operand 3 "register_operand")]
+   ""
+   {
+     rtx op0 = operands[0], op1, op2, op3;
+ 
+     switch (<MODE>mode)
+       {
+       case V32QImode:
+       case V16QImode:
+ 	op1 = operands[1];
+ 	op2 = operands[2];
+ 	op3 = operands[3];
+ 	break;
+       default:
+ 	op3 = operands[1];
+ 	op1 = operands[2];
+ 	op2 = operands[3];
+       }
+ 
+     gcc_assert (GET_MODE (op1) == <MODE>mode);
+     gcc_assert (GET_MODE (op2) == <MODE>mode);
+     gcc_assert (GET_MODE (op3) == <VIMODE>mode);
+ 
+     emit_insn (gen_simd_vshuf (<MODE>mode, op0, op1, op2, op3));
+     DONE;
+   })
+ 
  ; The LoongArch SX Instructions.
  (include "lsx.md")
  
diff -Nrcpad gcc-16-20251116/gcc/config/pa/pa.cc gcc-16-20251123/gcc/config/pa/pa.cc
*** gcc-16-20251116/gcc/config/pa/pa.cc	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/pa/pa.cc	Sun Nov 23 22:32:08 2025
*************** pa_print_operand (FILE *file, rtx x, int
*** 5764,5774 ****
  		   && GET_CODE (XEXP (XEXP (x, 0), 1)) == REG)
  	    {
  	      /* Because the REG_POINTER flag can get lost during reload,
! 		 pa_legitimate_address_p canonicalizes the order of the
! 		 index and base registers in the combined move patterns.  */
  	      rtx base = XEXP (XEXP (x, 0), 1);
  	      rtx index = XEXP (XEXP (x, 0), 0);
  
  	      fprintf (file, "%s(%s)",
  		       reg_names [REGNO (index)], reg_names [REGNO (base)]);
  	    }
--- 5764,5785 ----
  		   && GET_CODE (XEXP (XEXP (x, 0), 1)) == REG)
  	    {
  	      /* Because the REG_POINTER flag can get lost during reload,
! 		 we now defer creation of instructions with scaled and
! 		 unscaled index addresses until after reload.  We require
! 		 that the flag be set in the base register on targets
! 		 that use space registers.  */
  	      rtx base = XEXP (XEXP (x, 0), 1);
  	      rtx index = XEXP (XEXP (x, 0), 0);
  
+ 	      /* Accept non-canonical register order.  */
+ 	      if (!TARGET_NO_SPACE_REGS && !REG_POINTER (base))
+ 		{
+ 		  rtx tmp = base;
+ 		  base = index;
+ 		  index = tmp;
+ 		  gcc_assert (REG_POINTER (base));
+ 		}
+ 
  	      fprintf (file, "%s(%s)",
  		       reg_names [REGNO (index)], reg_names [REGNO (base)]);
  	    }
*************** pa_legitimate_address_p (machine_mode mo
*** 11001,11012 ****
  
        if (!TARGET_DISABLE_INDEXING
  	  /* Currently, the REG_POINTER flag is not set in a variety
! 	     of situations (e.g., call arguments and pointer arithmetic).
! 	     As a result, we can't reliably determine when unscaled
! 	     addresses are legitimate on targets that need space register
! 	     selection.  */
! 	  && TARGET_NO_SPACE_REGS
  	  && REG_P (index)
  	  && MODE_OK_FOR_UNSCALED_INDEXING_P (mode)
  	  && (strict ? STRICT_REG_OK_FOR_INDEX_P (index)
  		     : REG_OK_FOR_INDEX_P (index))
--- 11012,11026 ----
  
        if (!TARGET_DISABLE_INDEXING
  	  /* Currently, the REG_POINTER flag is not set in a variety
! 	     of situations (e.g., call arguments and pointer arithmetic)
! 	     and the flag can be lost during reload.  So, we only allow
! 	     unscaled index addresses after reload.  We can accept either
! 	     register order.  */
  	  && REG_P (index)
+ 	  && (TARGET_NO_SPACE_REGS
+ 	      || (reload_completed
+ 		  && ((REG_POINTER (base) && !REG_POINTER (index))
+ 		      || (!REG_POINTER (base) && REG_POINTER (index)))))
  	  && MODE_OK_FOR_UNSCALED_INDEXING_P (mode)
  	  && (strict ? STRICT_REG_OK_FOR_INDEX_P (index)
  		     : REG_OK_FOR_INDEX_P (index))
*************** pa_legitimate_address_p (machine_mode mo
*** 11015,11027 ****
  	return true;
  
        if (!TARGET_DISABLE_INDEXING
! 	  /* Only accept base operands with the REG_POINTER flag prior to
  	     reload on targets with non-equivalent space registers.  */
  	  && (TARGET_NO_SPACE_REGS
! 	      || reload_completed
! 	      || ((lra_in_progress || reload_in_progress)
! 		   && HARD_REGISTER_P (base))
! 	      || REG_POINTER (base))
  	  && GET_CODE (index) == MULT
  	  && REG_P (XEXP (index, 0))
  	  && GET_MODE (XEXP (index, 0)) == Pmode
--- 11029,11038 ----
  	return true;
  
        if (!TARGET_DISABLE_INDEXING
! 	  /* Only accept base operands with the REG_POINTER flag after
  	     reload on targets with non-equivalent space registers.  */
  	  && (TARGET_NO_SPACE_REGS
! 	      || (reload_completed && REG_POINTER (base)))
  	  && GET_CODE (index) == MULT
  	  && REG_P (XEXP (index, 0))
  	  && GET_MODE (XEXP (index, 0)) == Pmode
diff -Nrcpad gcc-16-20251116/gcc/config/pa/pa.opt gcc-16-20251123/gcc/config/pa/pa.opt
*** gcc-16-20251116/gcc/config/pa/pa.opt	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/pa/pa.opt	Sun Nov 23 22:32:08 2025
*************** Target Mask(LONG_CALLS)
*** 87,93 ****
  Always generate long calls.
  
  mlra
! Target Var(pa_lra_p) Init(0)
  Use LRA instead of reload (transitional).
  
  mlong-load-store
--- 87,93 ----
  Always generate long calls.
  
  mlra
! Target Var(pa_lra_p) Init(1)
  Use LRA instead of reload (transitional).
  
  mlong-load-store
diff -Nrcpad gcc-16-20251116/gcc/config/pa/pa64-linux.h gcc-16-20251123/gcc/config/pa/pa64-linux.h
*** gcc-16-20251116/gcc/config/pa/pa64-linux.h	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/pa/pa64-linux.h	Sun Nov 23 22:32:08 2025
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,32 ----
  #undef TARGET_ELF64
  #define TARGET_ELF64 1
  
+ /* Define this for shared library support because it isn't in the main
+    linux.h file.  */
+ 
+ #undef GLIBC_DYNAMIC_LINKER
+ #define GLIBC_DYNAMIC_LINKER "/lib64/ld64.so.1"
+ 
  #if 0 /* needs some work :-( */
  /* If defined, this macro specifies a table of register pairs used to
     eliminate unneeded registers that point into the stack frame.  */
diff -Nrcpad gcc-16-20251116/gcc/config/pa/predicates.md gcc-16-20251123/gcc/config/pa/predicates.md
*** gcc-16-20251116/gcc/config/pa/predicates.md	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/pa/predicates.md	Sun Nov 23 22:32:08 2025
***************
*** 472,487 ****
    if (! MEM_P (op))
      return false;
  
-   /* Until problems with management of the REG_POINTER flag are resolved,
-      we need to delay creating move insns with unscaled indexed addresses
-      until CSE is not expected.  */
-   if (!TARGET_NO_SPACE_REGS
-       && !cse_not_expected
-       && GET_CODE (XEXP (op, 0)) == PLUS
-       && REG_P (XEXP (XEXP (op, 0), 0))
-       && REG_P (XEXP (XEXP (op, 0), 1)))
-     return false;
- 
    return memory_address_p (mode, XEXP (op, 0));
  })
  
--- 472,477 ----
***************
*** 496,511 ****
    if (! MEM_P (op))
      return false;
  
-   /* Until problems with management of the REG_POINTER flag are resolved,
-      we need to delay creating move insns with unscaled indexed addresses
-      until CSE is not expected.  */
-   if (!TARGET_NO_SPACE_REGS
-       && !cse_not_expected
-       && GET_CODE (XEXP (op, 0)) == PLUS
-       && REG_P (XEXP (XEXP (op, 0), 0))
-       && REG_P (XEXP (XEXP (op, 0), 1)))
-     return false;
- 
    return (memory_address_p (mode, XEXP (op, 0)));
  })
  
--- 486,491 ----
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/riscv-cores.def gcc-16-20251123/gcc/config/riscv/riscv-cores.def
*** gcc-16-20251116/gcc/config/riscv/riscv-cores.def	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/riscv/riscv-cores.def	Sun Nov 23 22:32:08 2025
*************** RISCV_TUNE("xt-c920", generic, generic_o
*** 50,55 ****
--- 50,56 ----
  RISCV_TUNE("xt-c920v2", generic, generic_ooo_tune_info)
  RISCV_TUNE("xiangshan-nanhu", xiangshan, xiangshan_nanhu_tune_info)
  RISCV_TUNE("xiangshan-kunminghu", xiangshan, generic_ooo_tune_info)
+ RISCV_TUNE("spacemit-x60", spacemit_x60, spacemit_x60_tune_info)
  RISCV_TUNE("generic-ooo", generic_ooo, generic_ooo_tune_info)
  RISCV_TUNE("size", generic, optimize_size_tune_info)
  RISCV_TUNE("mips-p8700", mips_p8700, mips_p8700_tune_info)
*************** RISCV_CORE("andes-nx25",      "rv64imc_z
*** 180,184 ****
--- 181,188 ----
  RISCV_CORE("andes-ax25",      "rv64imafdc_zicsr_zifencei_xandesperf", "andes-25-series")
  RISCV_CORE("andes-a27",       "rv32imafdc_zicsr_zifencei_xandesperf", "andes-25-series")
  RISCV_CORE("andes-ax27",      "rv64imafdc_zicsr_zifencei_xandesperf", "andes-25-series")
+ RISCV_CORE("spacemit-x60",    "rv64imafdcv_zba_zbb_zbc_zbs_zicboz_zicond_"
+ 			      "zbkc_zfh_zvfh_zvkt_zvl256b_sscofpmf",
+ 			      "spacemit-x60")
  
  #undef RISCV_CORE
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/riscv-opt-popretz.cc gcc-16-20251123/gcc/config/riscv/riscv-opt-popretz.cc
*** gcc-16-20251116/gcc/config/riscv/riscv-opt-popretz.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/config/riscv/riscv-opt-popretz.cc	Sun Nov 23 22:32:08 2025
***************
*** 0 ****
--- 1,294 ----
+ /* RISC-V cm.popretz optimization pass.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+ 
+    This file is part of GCC.
+ 
+    GCC 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.
+ 
+    GCC 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 GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ /*
+    This pass combines "li a0, 0" + "cm.popret" into "cm.popretz" instruction
+    for the RISC-V Zcmp extension.
+ 
+    Rationale:
+    ---------
+    Ideally, cm.popretz should be generated during prologue/epilogue expansion.
+    However, as documented in PR113715 [1], this approach causes shrink-wrapping
+    analysis to fail, resulting in incorrect code generation.
+ 
+    To address this issue, we use a dedicated RTL pass to combine these
+    instructions later in the compilation pipeline, after shrink-wrapping has
+    completed.
+ 
+    Why not use peephole2?
+    ----------------------
+    An alternative approach would be to use a peephole2 pattern to perform this
+    optimization. However, between "li a0, 0" and "cm.popret", there can be
+    STACK_TIE and other instructions that make it difficult to write a robust
+    peephole pattern that handles all cases.
+ 
+    For example, in RV32, when the return value is in DImode but the low part
+    (a0) is zero, this pattern is hard to describe effectively in peephole2.
+    Using a dedicated pass gives us more flexibility to handle these cases.
+ 
+    [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113715  */
+ 
+ #define IN_TARGET_CODE 1
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "backend.h"
+ #include "target.h"
+ #include "rtl.h"
+ #include "tree.h"
+ #include "tm_p.h"
+ #include "emit-rtl.h"
+ #include "dumpfile.h"
+ #include "tree-pass.h"
+ #include "insn-config.h"
+ #include "insn-opinit.h"
+ #include "recog.h"
+ 
+ namespace {
+ 
+ const pass_data pass_data_combine_popretz =
+ {
+   RTL_PASS, /* type. */
+   "popretz", /* name. */
+   OPTGROUP_NONE, /* optinfo_flags. */
+   TV_MACH_DEP, /* tv_id. */
+   0, /* properties_required. */
+   0, /* properties_provided. */
+   0, /* properties_destroyed. */
+   0, /* todo_flags_start. */
+   0, /* todo_flags_finish. */
+ };
+ 
+ class pass_combine_popretz : public rtl_opt_pass
+ {
+ public:
+   pass_combine_popretz (gcc::context *ctxt)
+     : rtl_opt_pass (pass_data_combine_popretz, ctxt)
+   {}
+ 
+   virtual bool gate (function *)
+     {
+       return TARGET_ZCMP && !frame_pointer_needed;
+     }
+ 
+   virtual unsigned int execute (function *);
+ }; // class pass_combine_popretz
+ 
+ 
+ /* Check if the given instruction code is a cm.popret instruction.
+    Returns true if the code corresponds to any variant of gpr_multi_popret
+    (for different register bounds and modes).  */
+ static bool
+ riscv_popret_insn_p (int code)
+ {
+ #define CASE_CODE_FOR_POPRET_(REG_BOUND, MODE) \
+   case CODE_FOR_gpr_multi_popret_up_to_##REG_BOUND##_##MODE:
+ #define CASE_CODE_FOR_POPRET(REG_BOUND) \
+   CASE_CODE_FOR_POPRET_(REG_BOUND, si) \
+   CASE_CODE_FOR_POPRET_(REG_BOUND, di)
+ #define ALL_CASE_CODE_FOR_POPRET \
+   CASE_CODE_FOR_POPRET(ra) \
+   CASE_CODE_FOR_POPRET(s0) \
+   CASE_CODE_FOR_POPRET(s1) \
+   CASE_CODE_FOR_POPRET(s2) \
+   CASE_CODE_FOR_POPRET(s3) \
+   CASE_CODE_FOR_POPRET(s4) \
+   CASE_CODE_FOR_POPRET(s5) \
+   CASE_CODE_FOR_POPRET(s6) \
+   CASE_CODE_FOR_POPRET(s7) \
+   CASE_CODE_FOR_POPRET(s8) \
+   CASE_CODE_FOR_POPRET(s9) \
+   CASE_CODE_FOR_POPRET(s11) \
+ 
+   switch (code)
+     {
+     ALL_CASE_CODE_FOR_POPRET
+       return true;
+     default:
+       return false;
+     }
+ 
+ #undef CASE_CODE_FOR_POPRET_
+ #undef CASE_CODE_FOR_POPRET
+ #undef ALL_CASE_CODE_FOR_POPRET
+ }
+ 
+ /* Convert a cm.popret instruction code to its corresponding cm.popretz code.
+    Given an instruction code for gpr_multi_popret, returns the equivalent
+    gpr_multi_popretz instruction code. Returns CODE_FOR_nothing if the
+    input is not a valid popret instruction.  */
+ static int
+ riscv_code_for_popretz (int code)
+ {
+ #define CASE_CODE_FOR_POPRETZ_(REG_BOUND, MODE) \
+   case CODE_FOR_gpr_multi_popret_up_to_##REG_BOUND##_##MODE: \
+     return CODE_FOR_gpr_multi_popretz_up_to_##REG_BOUND##_##MODE;
+ 
+ #define CASE_CODE_FOR_POPRETZ(REG_BOUND) \
+   CASE_CODE_FOR_POPRETZ_(REG_BOUND, si) \
+   CASE_CODE_FOR_POPRETZ_(REG_BOUND, di)
+ 
+ #define ALL_CASE_CODE_FOR_POPRETZ \
+   CASE_CODE_FOR_POPRETZ(ra) \
+   CASE_CODE_FOR_POPRETZ(s0) \
+   CASE_CODE_FOR_POPRETZ(s1) \
+   CASE_CODE_FOR_POPRETZ(s2) \
+   CASE_CODE_FOR_POPRETZ(s3) \
+   CASE_CODE_FOR_POPRETZ(s4) \
+   CASE_CODE_FOR_POPRETZ(s5) \
+   CASE_CODE_FOR_POPRETZ(s6) \
+   CASE_CODE_FOR_POPRETZ(s7) \
+   CASE_CODE_FOR_POPRETZ(s8) \
+   CASE_CODE_FOR_POPRETZ(s9) \
+   CASE_CODE_FOR_POPRETZ(s11) \
+ 
+   switch (code)
+     {
+     ALL_CASE_CODE_FOR_POPRETZ
+     default:
+       return CODE_FOR_nothing;
+     }
+ 
+ #undef CASE_CODE_FOR_POPRETZ_
+ #undef CASE_CODE_FOR_POPRETZ
+ #undef ALL_CASE_CODE_FOR_POPRETZ
+ }
+ 
+ /* Combine "li a0, 0" with "cm.popret" to form "cm.popretz".
+ 
+    This pass scans basic blocks that precede the exit block, looking for
+    the following pattern:
+      1. A cm.popret instruction (function epilogue with return)
+      2. A (use a0) pseudo-instruction before the cm.popret
+      3. A "li a0, 0" instruction (set a0 to zero) before the use
+ 
+    When this pattern is found AND a0 is not referenced by any other
+    instructions between the "li a0, 0" and the (use a0), we can safely
+    combine them into a single cm.popretz instruction, which performs
+    the same operations more efficiently.
+ 
+    This is a late RTL pass that runs before branch shortening.  */
+ unsigned int
+ pass_combine_popretz::execute (function *fn)
+ {
+   timevar_push (TV_MACH_DEP);
+   edge e;
+   edge_iterator ei;
+ 
+   /* Only visit exit block's pred since popret will only appear there.  */
+   FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR_FOR_FN (fn)->preds)
+     {
+       basic_block bb = e->src;
+       rtx_insn *popret_insn = BB_END (bb);
+       if (!JUMP_P (popret_insn))
+         continue;
+       int code = recog_memoized (popret_insn);
+       if (!riscv_popret_insn_p (code))
+         continue;
+ 
+       rtx_insn *def_a0_insn = NULL;
+       rtx_insn *use_a0_insn = NULL;
+       rtx a0_reg = NULL;
+       /* Scan backwards from popret to find the pattern:
+          1. First, find the (use a0) pseudo-instruction
+          2. Continue scanning to find "li a0, 0" (set a0 to const0_rtx)
+          3. Ensure a0 is not referenced by any instructions between them
+          4. Stop at the first definition of a0 (to ensure we have the
+             last/most recent def before the use).  */
+       for (rtx_insn *def_insn = PREV_INSN (popret_insn);
+ 	   def_insn && def_insn != PREV_INSN (BB_HEAD (bb));
+ 	   def_insn = PREV_INSN (def_insn))
+ 	{
+ 	  if (!INSN_P (def_insn))
+ 	    continue;
+ 	  rtx def_pat = PATTERN (def_insn);
+ 	  if (GET_CODE (def_pat) == USE
+ 	      && REG_P (XEXP (def_pat, 0))
+ 	      && REGNO (XEXP (def_pat, 0)) == A0_REGNUM)
+ 	    {
+ 	      a0_reg = XEXP (def_pat, 0);
+ 	      use_a0_insn = def_insn;
+ 	      continue;
+ 	    }
+ 
+ 	  if (use_a0_insn && reg_referenced_p (a0_reg, def_pat))
+ 	    {
+ 	      /* a0 is used by other instruction before its use in popret.  */
+ 	      use_a0_insn = NULL;
+ 	      break;
+ 	    }
+ 
+ 	  if (use_a0_insn
+ 	      && GET_CODE (def_pat) == SET
+ 	      && REG_P (SET_DEST (def_pat))
+ 	      && REGNO (SET_DEST (def_pat)) == A0_REGNUM)
+ 	    {
+ 	      if (SET_SRC (def_pat) == CONST0_RTX (GET_MODE (SET_SRC (def_pat))))
+ 	        def_a0_insn = def_insn;
+ 	      /* Stop the search regardless of the value assigned to a0,
+ 	         because we only want to match the last (most recent)
+ 	         definition of a0 before the (use a0).  */
+ 	      break;
+ 	    }
+ 	  }
+ 
+         /* If we found a def of a0 before its use, and the value is zero,
+ 	   we can replace the popret with popretz.  */
+ 	if (!def_a0_insn || !use_a0_insn)
+ 	  continue;
+ 
+ 	int code_for_popretz = riscv_code_for_popretz (code);
+ 	gcc_assert (code_for_popretz != CODE_FOR_nothing);
+ 
+ 	/* Extract the stack adjustment value from the popret instruction.
+ 	   The popret pattern is a PARALLEL, and the first element is the
+ 	   stack pointer adjustment: (set sp (plus sp const_int)).  */
+ 	rtx stack_adj_rtx = XVECEXP (PATTERN (popret_insn), 0, 0);
+ 	gcc_assert (GET_CODE (stack_adj_rtx) == SET
+ 		    && REG_P (SET_DEST (stack_adj_rtx))
+ 		    && REGNO (SET_DEST (stack_adj_rtx)) == SP_REGNUM
+ 		    && GET_CODE (SET_SRC (stack_adj_rtx)) == PLUS
+ 		    && CONST_INT_P (XEXP (SET_SRC (stack_adj_rtx), 1)));
+ 
+ 	rtx stack_adj_val = XEXP (SET_SRC (stack_adj_rtx), 1);
+ 
+ 	/* Generate and insert the popretz instruction at the position of
+ 	   the original popret. emit_insn_after places the new instruction
+ 	   after PREV_INSN(popret_insn).  */
+ 	rtx popretz = GEN_FCN (code_for_popretz) (stack_adj_val);
+ 	emit_insn_after (popretz, PREV_INSN (popret_insn));
+ 
+ 	/* Clean up those instructions.  */
+ 	remove_insn (popret_insn);
+ 	remove_insn (use_a0_insn);
+ 	remove_insn (def_a0_insn);
+     }
+ 
+   timevar_pop (TV_MACH_DEP);
+   return 0;
+ }
+ 
+ } // anon namespace
+ 
+ rtl_opt_pass *
+ make_pass_combine_popretz (gcc::context *ctxt)
+ {
+   return new pass_combine_popretz (ctxt);
+ }
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/riscv-opts.h gcc-16-20251123/gcc/config/riscv/riscv-opts.h
*** gcc-16-20251116/gcc/config/riscv/riscv-opts.h	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/riscv/riscv-opts.h	Sun Nov 23 22:32:08 2025
*************** enum riscv_microarchitecture_type {
*** 62,67 ****
--- 62,68 ----
    mips_p8700,
    tt_ascalon_d8,
    andes_25_series,
+   spacemit_x60,
  };
  extern enum riscv_microarchitecture_type riscv_microarchitecture;
  
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/riscv-passes.def gcc-16-20251123/gcc/config/riscv/riscv-passes.def
*** gcc-16-20251116/gcc/config/riscv/riscv-passes.def	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/riscv/riscv-passes.def	Sun Nov 23 22:32:08 2025
*************** INSERT_PASS_AFTER (pass_rtl_store_motion
*** 22,26 ****
--- 22,27 ----
  INSERT_PASS_AFTER (pass_split_all_insns, 1, pass_avlprop);
  INSERT_PASS_BEFORE (pass_fast_rtl_dce, 1, pass_vsetvl);
  INSERT_PASS_BEFORE (pass_shorten_branches, 1, pass_insert_landing_pad);
+ INSERT_PASS_BEFORE (pass_shorten_branches, 1, pass_combine_popretz);
  INSERT_PASS_AFTER (pass_cse2, 1, pass_vector_permconst);
  
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/riscv-protos.h gcc-16-20251123/gcc/config/riscv/riscv-protos.h
*** gcc-16-20251116/gcc/config/riscv/riscv-protos.h	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/riscv/riscv-protos.h	Sun Nov 23 22:32:08 2025
*************** rtl_opt_pass * make_pass_vsetvl (gcc::co
*** 208,213 ****
--- 208,214 ----
  rtl_opt_pass * make_pass_insert_landing_pad (gcc::context *ctxt);
  rtl_opt_pass * make_pass_vector_permconst (gcc::context *ctxt);
  rtl_opt_pass * make_pass_bclr_lowest_set_bit (gcc::context *ctxt);
+ rtl_opt_pass * make_pass_combine_popretz (gcc::context *ctxt);
  
  /* Routines implemented in riscv-vsetvl.cc.  */
  extern bool has_vtype_op (rtx_insn *);
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/riscv-string.cc gcc-16-20251123/gcc/config/riscv/riscv-string.cc
*** gcc-16-20251116/gcc/config/riscv/riscv-string.cc	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/riscv/riscv-string.cc	Sun Nov 23 22:32:08 2025
*************** riscv_expand_block_move_scalar (rtx dest
*** 923,928 ****
--- 923,932 ----
    unsigned HOST_WIDE_INT hwi_length = UINTVAL (length);
    unsigned HOST_WIDE_INT factor, align;
  
+   if (riscv_memcpy_size_threshold >= 0
+       && hwi_length > (unsigned HOST_WIDE_INT) riscv_memcpy_size_threshold)
+     return false;
+ 
    if (riscv_slow_unaligned_access_p)
      {
        align = MIN (MIN (MEM_ALIGN (src), MEM_ALIGN (dest)), BITS_PER_WORD);
*************** expand_block_move (rtx dst_in, rtx src_i
*** 1233,1238 ****
--- 1237,1257 ----
    if (!use_vector_stringop_p (info, potential_ew, length_in))
      return false;
  
+   if (CONST_INT_P (length_in))
+     {
+       HOST_WIDE_INT length = INTVAL (length_in);
+       if (movmem_p
+ 	  && riscv_memmove_size_threshold >= 0
+ 	  && length > riscv_memmove_size_threshold)
+ 	return false;
+       else if (!movmem_p
+ 	       && riscv_memmove_size_threshold >= 0
+ 	       && length > riscv_memcpy_size_threshold)
+ 	return false;
+     }
+   else
+     return false;
+ 
    /* Inlining general memmove is a pessimisation: we can't avoid having to
       decide which direction to go at runtime, which is costly in instruction
       count however for situations where the entire move fits in one vector
*************** expand_vec_setmem (rtx dst_in, rtx lengt
*** 1615,1620 ****
--- 1634,1649 ----
    if (!use_vector_stringop_p (info, 1, length_in) || info.need_loop)
      return false;
  
+   if (CONST_INT_P (length_in))
+     {
+       HOST_WIDE_INT length = INTVAL (length_in);
+       if (riscv_memset_size_threshold >= 0
+ 	  && length > riscv_memset_size_threshold)
+ 	return false;
+     }
+   else
+     return false;
+ 
    rtx dst_addr = copy_addr_to_reg (XEXP (dst_in, 0));
    rtx dst = change_address (dst_in, info.vmode, dst_addr);
  
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/riscv.cc gcc-16-20251123/gcc/config/riscv/riscv.cc
*** gcc-16-20251116/gcc/config/riscv/riscv.cc	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/riscv/riscv.cc	Sun Nov 23 22:32:08 2025
*************** static const struct riscv_tune_param and
*** 756,761 ****
--- 756,785 ----
    NULL,						/* vector cost */
    NULL,						/* function_align */
    NULL,						/* jump_align */
+   NULL,						/* loop_align.  */
+   true,						/* prefer-agnostic.  */
+ };
+ 
+ static const struct riscv_tune_param spacemit_x60_tune_info= {
+   {COSTS_N_INSNS (4), COSTS_N_INSNS (5)},	/* fp_add */
+   {COSTS_N_INSNS (4), COSTS_N_INSNS (5)},	/* fp_mul */
+   {COSTS_N_INSNS (15), COSTS_N_INSNS (22)},	/* fp_div */
+   {COSTS_N_INSNS (3), COSTS_N_INSNS (6)},	/* int_mul */
+   {COSTS_N_INSNS (12), COSTS_N_INSNS (20)},	/* int_div */
+   2,						/* issue_rate */
+   3,						/* branch_cost */
+   5,						/* memory_cost */
+   6,						/* fmv_cost */
+   false,					/* slow_unaligned_access */
+   false,					/* vector_unaligned_access */
+   false,					/* use_divmod_expansion */
+   false,					/* overlap_op_by_pieces */
+   false,					/* use_zero_stride_load */
+   true,						/* speculative_sched_vsetvl */
+   RISCV_FUSE_NOTHING,				/* fusible_ops */
+   NULL,						/* vector cost */
+   NULL,						/* function_align */
+   NULL,						/* jump_align */
    NULL,						/* loop_align */
    true,						/* prefer-agnostic.  */
  };
*************** riscv_expand_ustrunc (rtx dest, rtx src)
*** 14523,14529 ****
    gcc_assert (precision < 64);
  
    uint64_t max = ((uint64_t)1u << precision) - 1u;
!   rtx xmode_src = gen_lowpart (Xmode, src);
    rtx xmode_dest = gen_reg_rtx (Xmode);
    rtx xmode_lt = gen_reg_rtx (Xmode);
  
--- 14547,14553 ----
    gcc_assert (precision < 64);
  
    uint64_t max = ((uint64_t)1u << precision) - 1u;
!   rtx xmode_src = riscv_extend_to_xmode_reg (src, GET_MODE (src), ZERO_EXTEND);
    rtx xmode_dest = gen_reg_rtx (Xmode);
    rtx xmode_lt = gen_reg_rtx (Xmode);
  
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/riscv.md gcc-16-20251123/gcc/config/riscv/riscv.md
*** gcc-16-20251116/gcc/config/riscv/riscv.md	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/riscv/riscv.md	Sun Nov 23 22:32:08 2025
***************
*** 673,679 ****
  ;; Keep this in sync with enum riscv_microarchitecture.
  (define_attr "tune"
    "generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo,mips_p8700,
!    tt_ascalon_d8,andes_25_series"
    (const (symbol_ref "((enum attr_tune) riscv_microarchitecture)")))
  
  ;; Describe a user's asm statement.
--- 673,679 ----
  ;; Keep this in sync with enum riscv_microarchitecture.
  (define_attr "tune"
    "generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo,mips_p8700,
!    tt_ascalon_d8,andes_25_series,spacemit_x60"
    (const (symbol_ref "((enum attr_tune) riscv_microarchitecture)")))
  
  ;; Describe a user's asm statement.
***************
*** 4989,4991 ****
--- 4989,4992 ----
  (include "generic-ooo.md")
  (include "tt-ascalon-d8.md")
  (include "andes-25-series.md")
+ (include "spacemit-x60.md")
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/riscv.opt gcc-16-20251123/gcc/config/riscv/riscv.opt
*** gcc-16-20251116/gcc/config/riscv/riscv.opt	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/riscv/riscv.opt	Sun Nov 23 22:32:08 2025
*************** mstringop-strategy=
*** 361,366 ****
--- 361,378 ----
  Target RejectNegative Joined Enum(stringop_strategy) Var(stringop_strategy) Init(STRATEGY_AUTO)
  Specify stringop expansion strategy.
  
+ -param=memcpy-size-threshold=
+ Target Joined UInteger Var(riscv_memcpy_size_threshold) Init(-1) Param
+ Constant memcpy size in bytes above which to start using libcalls over inlining.
+ 
+ -param=memmove-size-threshold=
+ Target Joined UInteger Var(riscv_memmove_size_threshold) Init(-1) Param
+ Constant memmove size in bytes above which to start using libcalls over inlining.
+ 
+ -param=memset-size-threshold=
+ Target Joined UInteger Var(riscv_memset_size_threshold) Init(-1) Param
+ Constant memset size in bytes above which to start using libcalls over inlining.
+ 
  Enum
  Name(rvv_vector_bits) Type(enum rvv_vector_bits_enum)
  The possible RVV vector register lengths:
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/spacemit-x60.md gcc-16-20251123/gcc/config/riscv/spacemit-x60.md
*** gcc-16-20251116/gcc/config/riscv/spacemit-x60.md	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/config/riscv/spacemit-x60.md	Sun Nov 23 22:32:08 2025
***************
*** 0 ****
--- 1,190 ----
+ ;; spacemit_x60 DFA-based pipeline description for RISC-V targets.
+ ;; Copyright (C) 2011-2025 Free Software Foundation, Inc.
+ ;; Contributed by Andrew Waterman (andrew@sifive.com).
+ ;; Based on MIPS target for GNU compiler.
+ 
+ ;; This file is part of GCC.
+ 
+ ;; GCC 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.
+ 
+ ;; GCC 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 GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ 
+ ;; ----------------------------------------------------
+ ;; Spacemit-x60 Units
+ ;; 2*alu + 2*lsu + 1*fpalu + 1*fdivsqrt + 1*vxu
+ ;;
+ ;; There's actually two VXU units and ops get split across them
+ ;; to give the illusion of a single wider unit with higher 
+ ;; performance.  There are a few ops that can only be fed into
+ ;; one of the two units.  Probably best to initially model as
+ ;; a single unit
+ ;;
+ ;; The VXU is not currently modeled.
+ ;; Some ops like shadd.uw and add.uw, cpop take an extra cycle
+ ;; Given everything is in-order, anti-dependencies probably matter
+ ;; FP sign injection isn't handled correctly
+ ;; ----------------------------------------------------
+ 
+ (define_automaton "spacemit_x60")
+ (define_cpu_unit "spacemit_x60_alu0,spacemit_x60_alu1" "spacemit_x60")
+ (define_cpu_unit "spacemit_x60_lsu0,spacemit_x60_lsu1" "spacemit_x60")
+ ;;(define_cpu_unit "spacemit_x60_vxu0" "spacemit_x60")
+ (define_cpu_unit "spacemit_x60_fpalu" "spacemit_x60")
+ (define_cpu_unit "spacemit_x60_fdivsqrt" "spacemit_x60")
+ 
+ (define_reservation "spacemit_x60_lsu" "spacemit_x60_lsu0, spacemit_x60_lsu1")
+ (define_reservation "spacemit_x60_alu" "spacemit_x60_alu0, spacemit_x60_alu1")
+ 
+ ;; ----------------------------------------------------
+ ;; Memory (load/store)
+ ;; ----------------------------------------------------
+ 
+ (define_insn_reservation "spacemit_x60_load" 5
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "load,fpload,atomic"))
+   "spacemit_x60_lsu")
+ 
+ (define_insn_reservation "spacemit_x60_store" 3
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "store,fpstore"))
+   "spacemit_x60_lsu")
+ 
+ ;; ----------------------------------------------------
+ ;; Int
+ ;; ----------------------------------------------------
+ 
+ ;; alu0 handles div/rem and jumps
+ (define_insn_reservation "spacemit_x60_jump" 1
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "branch,jump,call,jalr,ret,trap,sfb_alu"))
+   "spacemit_x60_alu0")
+ 
+ (define_insn_reservation "spacemit_x60_idivsi" 12
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "idiv")
+ 	    (eq_attr "mode" "SI")))
+   "spacemit_x60_alu0*12")
+ 
+ (define_insn_reservation "spacemit_x60_idivdi" 20
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "idiv")
+ 	    (eq_attr "mode" "DI")))
+   "spacemit_x60_alu0*20")
+ 
+ (define_insn_reservation "spacemit_x60_imulsi" 3
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "imul")
+ 	    (eq_attr "mode" "SI")))
+   "spacemit_x60_alu")
+ 
+ (define_insn_reservation "spacemit_x60_imuldi" 5
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "imul")
+ 	    (eq_attr "mode" "DI")))
+   "spacemit_x60_alu")
+ 
+ (define_insn_reservation "spacemit_x60_clmul" 5
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "clmul"))
+   "spacemit_x60_alu")
+ 
+ (define_insn_reservation "spacemit_x60_mtc_mfc" 3
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "mtc,mfc"))
+   "spacemit_x60_alu")
+ 
+ (define_insn_reservation "spacemit_x60_fcvt_i2f" 4
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "fcvt_i2f"))
+   "spacemit_x60_alu")
+ 
+ (define_insn_reservation "spacemit_x60_fcvt_f2i" 6
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "fcvt_f2i"))
+   "spacemit_x60_alu")
+ 
+ (define_insn_reservation "spacemit_x60_alu" 1
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "unknown,const,arith,shift,slt,multi,auipc,nop,logical,\
+ 			move,bitmanip,min,max,minu,maxu,clz,ctz,rotate,\
+ 			condmove,crypto,mvpair,zicond,cpop"))
+   "spacemit_x60_alu")
+ 
+ (define_insn_reservation "spacemit_x60_alu2c" 2
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "cpop"))
+   "spacemit_x60_alu")
+ 
+ ;; ----------------------------------------------------
+ ;; Float
+ ;; ----------------------------------------------------
+ 
+ (define_insn_reservation "spacemit_x60_fcvt" 4
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "fcvt,fmove"))
+   "spacemit_x60_fpalu")
+ 
+ (define_insn_reservation "spacemit_x60_fcmp" 6
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "fcmp"))
+   "spacemit_x60_fpalu")
+ 
+ (define_insn_reservation "spacemit_x60_fmul_half_single" 4
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "fadd,fmul")
+        (ior (eq_attr "mode" "HF")
+ 	    (eq_attr "mode" "SF"))))
+   "spacemit_x60_fpalu")
+ 
+ (define_insn_reservation "spacemit_x60_fmadd_half_single" 5
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "fmadd")
+        (ior (eq_attr "mode" "HF")
+ 	    (eq_attr "mode" "SF"))))
+   "spacemit_x60_fpalu")
+ 
+ (define_insn_reservation "spacemit_x60_fmul_double" 5
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "fadd,fmul")
+ 	    (eq_attr "mode" "DF")))
+   "spacemit_x60_fpalu")
+ 
+ (define_insn_reservation "spacemit_x60_fmadd_double" 5
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "fmadd")
+ 	    (eq_attr "mode" "DF")))
+   "spacemit_x60_fpalu")
+ 
+ (define_insn_reservation "spacemit_x60_fdiv_half" 12
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "fdiv,fsqrt")
+ 	    (eq_attr "mode" "HF")))
+   "spacemit_x60_fdivsqrt*12")
+ 
+ (define_insn_reservation "spacemit_x60_fdiv_single" 15
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "fdiv,fsqrt")
+ 	    (eq_attr "mode" "SF")))
+   "spacemit_x60_fdivsqrt*15")
+ 
+ (define_insn_reservation "spacemit_x60_fdiv_double" 22
+   (and (eq_attr "tune" "spacemit_x60")
+        (and (eq_attr "type" "fdiv,fsqrt")
+ 	    (eq_attr "mode" "DF")))
+   "spacemit_x60_fdivsqrt*22")
+ 
+ (define_insn_reservation "spacemi6_x60_dummy" 1
+   (and (eq_attr "tune" "spacemit_x60")
+        (eq_attr "type" "viminmax,vfmuladd,vfmovvf,vssegte,vlsegds,rdvlenb,vaesef,vfcmp,vmpop,vwsll,vsha2cl,vfwcvtbf16,vfncvtftoi,vgather,vsha2ch,vsts,vldm,vmsfs,vfmul,vcompress,vaesz,vssegtox,vstox,vclmulh,vghsh,vaalu,vslideup,vfalu,vaeskf1,vfcvtitof,vaesdm,vmffs,vandn,vstm,vgmul,vlds,viwmul,vfmerge,vlsegdff,vshift,vaesem,vaesdf,vste,ghost,viwred,vsalu,vfwredu,vmidx,sf_vfnrclip,vstux,vfslide1down,vfcvtftoi,vfncvtitof,vnshift,vsm3me,vired,vlde,vfwalu,sf_vc_se,vlsegdux,vicmp,vfncvtftof,vror,vfwmaccbf16,vfminmax,vldff,vstr,vsm3c,vfwcvtftoi,vbrev,vaeskf2,vidiv,vfwcvtftof,rdvl,vimul,vfsgnj,vimovvx,vsha2ms,vialu,vfredo,vctz,vlsegde,viwmuladd,vcpop,vsetvl,vldux,vfwmuladd,vector,wrvxrm,vsshift,vfredu,vimerge,vlsegdox,vfrecp,vnclip,vfclass,vbrev8,vslidedown,vldox,vmalu,vext,vimuladd,sf_vqmacc,vldr,vrol,vmov,vsmul,vclmul,vfmov,vislide1up,vssegtux,vclz,rdfrm,vfwcvtitof,vfncvtbf16,vfmovfv,vislide1down,vfwmul,vfsqrt,vrev8,vicalu,vimov,wrfrm,vfdiv,sf_vc,vsm4k,vmiota,vsm4r,viwalu,vsetvl_pre,vimovxv,vfwredo,vfslide1up,vssegts"))
+   "nothing")
+ 
diff -Nrcpad gcc-16-20251116/gcc/config/riscv/t-riscv gcc-16-20251123/gcc/config/riscv/t-riscv
*** gcc-16-20251116/gcc/config/riscv/t-riscv	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/riscv/t-riscv	Sun Nov 23 22:32:08 2025
*************** riscv-sr.o: $(srcdir)/config/riscv/riscv
*** 89,94 ****
--- 89,100 ----
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/riscv/riscv-sr.cc
  
+ riscv-opt-popretz.o: $(srcdir)/config/riscv/riscv-opt-popretz.cc $(CONFIG_H) \
+   $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(TARGET_H) recog.h insn-opinit.h \
+   tree-pass.h emit-rtl.h insn-config.h
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ 		$(srcdir)/config/riscv/riscv-opt-popretz.cc
+ 
  riscv-c.o: $(srcdir)/config/riscv/riscv-c.cc $(CONFIG_H) $(SYSTEM_H) \
      coretypes.h $(TM_H) $(TREE_H) output.h $(C_COMMON_H) $(TARGET_H)
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
diff -Nrcpad gcc-16-20251116/gcc/config/rs6000/altivec.md gcc-16-20251123/gcc/config/rs6000/altivec.md
*** gcc-16-20251116/gcc/config/rs6000/altivec.md	Sun Nov 16 22:32:54 2025
--- gcc-16-20251123/gcc/config/rs6000/altivec.md	Sun Nov 23 22:32:08 2025
***************
*** 3625,3634 ****
  
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_hi, operands[1]));
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_lo, operands[2]));
!   if (!BYTES_BIG_ENDIAN)
!     emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_hi, rtx_tmp_lo));
!   else
!     emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_lo, rtx_tmp_hi));
    DONE;
  })
  
--- 3625,3631 ----
  
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_hi, operands[1]));
    emit_insn (gen_vsx_xvcvsphp (rtx_tmp_lo, operands[2]));
!   emit_insn (gen_altivec_vpkuwum (operands[0], rtx_tmp_hi, rtx_tmp_lo));
    DONE;
  })
  
diff -Nrcpad gcc-16-20251116/gcc/config/sol2.h gcc-16-20251123/gcc/config/sol2.h
*** gcc-16-20251116/gcc/config/sol2.h	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/config/sol2.h	Sun Nov 23 22:32:08 2025
*************** along with GCC; see the file COPYING3.
*** 224,230 ****
     in that case, and for executable link with --{,no-}whole-archive around
     it to force everything into the executable.  */
  
! #ifndef USE_GNU_LD
  #define LD_WHOLE_ARCHIVE_OPTION "-z allextract"
  #define LD_NO_WHOLE_ARCHIVE_OPTION "-z defaultextract"
  #else
--- 224,230 ----
     in that case, and for executable link with --{,no-}whole-archive around
     it to force everything into the executable.  */
  
! #if !HAVE_GNU_LD
  #define LD_WHOLE_ARCHIVE_OPTION "-z allextract"
  #define LD_NO_WHOLE_ARCHIVE_OPTION "-z defaultextract"
  #else
*************** along with GCC; see the file COPYING3.
*** 270,307 ****
    "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} \
     %(endfile_arch) %(endfile_vtv) %(endfile_crtend) crtn.o%s"
  
! #undef LINK_ARCH32_SPEC_BASE
! #define LINK_ARCH32_SPEC_BASE \
!   "%{G:-G} \
!    %{YP,*} \
!    %{R*} \
!    %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp%R/lib:%R/usr/lib} \
! 	   %{!p:%{!pg:-Y P,%R/lib:%R/usr/lib}}}"
! 
! #undef LINK_ARCH32_SPEC
! #define LINK_ARCH32_SPEC LINK_ARCH32_SPEC_BASE
! 
! /* This should be the same as LINK_ARCH32_SPEC_BASE, except with
!    ARCH64_SUBDIR appended to the paths.  */
! #undef LINK_ARCH64_SPEC_BASE
! #define LINK_ARCH64_SPEC_BASE \
    "%{G:-G} \
     %{YP,*} \
!    %{R*} \
!    %{!YP,*:%{p|pg:-Y P,%R/usr/lib/libp/" ARCH64_SUBDIR ":%R/lib/" ARCH64_SUBDIR ":%R/usr/lib/" ARCH64_SUBDIR "}	\
! 	   %{!p:%{!pg:-Y P,%R/lib/" ARCH64_SUBDIR ":%R/usr/lib/" ARCH64_SUBDIR "}}}"
  
! #undef LINK_ARCH64_SPEC
! #ifndef USE_GLD
! /* FIXME: Used to be SPARC-only.  Not SPARC-specfic but for the model name!  */
! #define LINK_ARCH64_SPEC \
!   "%{mcmodel=medlow:-M /usr/lib/ld/" ARCH64_SUBDIR "/map.below4G} " \
!   LINK_ARCH64_SPEC_BASE
  #else
! #define LINK_ARCH64_SPEC LINK_ARCH64_SPEC_BASE
  #endif
  
! #ifdef USE_GLD
  #if DEFAULT_ARCH32_P
  #define ARCH_DEFAULT_EMULATION ARCH32_EMULATION
  #else
--- 270,289 ----
    "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} \
     %(endfile_arch) %(endfile_vtv) %(endfile_crtend) crtn.o%s"
  
! #undef LINK_ARCH_SPEC_BASE
! #define LINK_ARCH_SPEC_BASE \
    "%{G:-G} \
     %{YP,*} \
!    %{R*}"
  
! #if !HAVE_GNU_LD
! #define LINK_ARCH_SPEC_1 \
!   "%{mcmodel=medlow:-M /usr/lib/ld/map.below4G} " LINK_ARCH_SPEC_BASE
  #else
! #define LINK_ARCH_SPEC_1 LINK_ARCH_SPEC_BASE
  #endif
  
! #if HAVE_GNU_LD
  #if DEFAULT_ARCH32_P
  #define ARCH_DEFAULT_EMULATION ARCH32_EMULATION
  #else
*************** along with GCC; see the file COPYING3.
*** 314,359 ****
  #define TARGET_LD_EMULATION ""
  #endif
  
- #undef LINK_ARCH_SPEC
  #if DISABLE_MULTILIB
  #if DEFAULT_ARCH32_P
! #define LINK_ARCH_SPEC TARGET_LD_EMULATION " \
! %{m32:%(link_arch32)} \
! %{m64:%edoes not support multilib} \
! %{!m32:%{!m64:%(link_arch_default)}} \
! "
  #else
! #define LINK_ARCH_SPEC TARGET_LD_EMULATION " \
! %{m32:%edoes not support multilib} \
! %{m64:%(link_arch64)} \
! %{!m32:%{!m64:%(link_arch_default)}} \
! "
  #endif
  #else
! #define LINK_ARCH_SPEC TARGET_LD_EMULATION " \
! %{m32:%(link_arch32)} \
! %{m64:%(link_arch64)} \
! %{!m32:%{!m64:%(link_arch_default)}}"
  #endif
  
! #define LINK_ARCH_DEFAULT_SPEC \
! (DEFAULT_ARCH32_P ? LINK_ARCH32_SPEC : LINK_ARCH64_SPEC)
  
  #undef SUBTARGET_EXTRA_SPECS
  #define SUBTARGET_EXTRA_SPECS \
    { "startfile_arch",	 	STARTFILE_ARCH_SPEC },		\
    { "startfile_crtbegin",	STARTFILE_CRTBEGIN_SPEC },	\
    { "startfile_vtv",		STARTFILE_VTV_SPEC },		\
-   { "link_arch32",       	LINK_ARCH32_SPEC },		\
-   { "link_arch64",       	LINK_ARCH64_SPEC },		\
-   { "link_arch_default", 	LINK_ARCH_DEFAULT_SPEC },	\
    { "link_arch",	 	LINK_ARCH_SPEC },		\
    { "endfile_arch",	 	ENDFILE_ARCH_SPEC },		\
    { "endfile_crtend",		ENDFILE_CRTEND_SPEC },		\
    { "endfile_vtv",		ENDFILE_VTV_SPEC },		\
    SUBTARGET_CPU_EXTRA_SPECS
  
! #ifndef USE_GLD
  /* With Sun ld, -rdynamic is a no-op.  */
  #define RDYNAMIC_SPEC ""
  #else
--- 296,327 ----
  #define TARGET_LD_EMULATION ""
  #endif
  
  #if DISABLE_MULTILIB
  #if DEFAULT_ARCH32_P
! #define LINK_ARCH_ERROR_SPEC "%{m64:%edoes not support multilib}"
  #else
! #define LINK_ARCH_ERROR_SPEC "%{m32:%edoes not support multilib}"
  #endif
  #else
! #define LINK_ARCH_ERROR_SPEC ""
  #endif
  
! #undef LINK_ARCH_SPEC
! #define LINK_ARCH_SPEC TARGET_LD_EMULATION \
!   " " LINK_ARCH_ERROR_SPEC " " LINK_ARCH_SPEC_1
  
  #undef SUBTARGET_EXTRA_SPECS
  #define SUBTARGET_EXTRA_SPECS \
    { "startfile_arch",	 	STARTFILE_ARCH_SPEC },		\
    { "startfile_crtbegin",	STARTFILE_CRTBEGIN_SPEC },	\
    { "startfile_vtv",		STARTFILE_VTV_SPEC },		\
    { "link_arch",	 	LINK_ARCH_SPEC },		\
    { "endfile_arch",	 	ENDFILE_ARCH_SPEC },		\
    { "endfile_crtend",		ENDFILE_CRTEND_SPEC },		\
    { "endfile_vtv",		ENDFILE_VTV_SPEC },		\
    SUBTARGET_CPU_EXTRA_SPECS
  
! #if !HAVE_GNU_LD
  /* With Sun ld, -rdynamic is a no-op.  */
  #define RDYNAMIC_SPEC ""
  #else
*************** along with GCC; see the file COPYING3.
*** 361,372 ****
  #define RDYNAMIC_SPEC "--export-dynamic"
  #endif
  
! #ifndef USE_GLD
  /* Prefer native form with Solaris ld.  */
  #define SYSROOT_SPEC "-z sysroot=%R"
  #endif
  
! #if !defined(USE_GLD) && defined(ENABLE_SHARED_LIBGCC)
  /* With Sun ld, use mapfile to enforce direct binding to libgcc_s unwinder.  */
  #define LINK_LIBGCC_MAPFILE_SPEC \
    "%{shared|shared-libgcc:-M %slibgcc-unwind.map}"
--- 329,340 ----
  #define RDYNAMIC_SPEC "--export-dynamic"
  #endif
  
! #if !HAVE_GNU_LD
  /* Prefer native form with Solaris ld.  */
  #define SYSROOT_SPEC "-z sysroot=%R"
  #endif
  
! #if !HAVE_GNU_LD && defined(ENABLE_SHARED_LIBGCC)
  /* With Sun ld, use mapfile to enforce direct binding to libgcc_s unwinder.  */
  #define LINK_LIBGCC_MAPFILE_SPEC \
    "%{shared|shared-libgcc:-M %slibgcc-unwind.map}"
*************** along with GCC; see the file COPYING3.
*** 399,410 ****
  #define USE_LD_AS_NEEDED 1
  #endif
  
! #ifdef USE_GLD
  /* GNU ld needs --eh-frame-hdr to create the required .eh_frame_hdr sections.  */
  #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
  #endif
  
! #ifdef USE_GLD
  /* Assert -z text by default to match Solaris ld.  */
  #define LD_PIE_SPEC "-pie %{!mimpure-text:-z text}"
  #else
--- 367,378 ----
  #define USE_LD_AS_NEEDED 1
  #endif
  
! #if HAVE_GNU_LD
  /* GNU ld needs --eh-frame-hdr to create the required .eh_frame_hdr sections.  */
  #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
  #endif
  
! #if HAVE_GNU_LD
  /* Assert -z text by default to match Solaris ld.  */
  #define LD_PIE_SPEC "-pie %{!mimpure-text:-z text}"
  #else
*************** along with GCC; see the file COPYING3.
*** 455,461 ****
      }								\
    while (0)
  
! #ifndef USE_GAS
  #undef TARGET_ASM_ASSEMBLE_VISIBILITY
  #define TARGET_ASM_ASSEMBLE_VISIBILITY solaris_assemble_visibility
  
--- 423,429 ----
      }								\
    while (0)
  
! #if !HAVE_GNU_AS
  #undef TARGET_ASM_ASSEMBLE_VISIBILITY
  #define TARGET_ASM_ASSEMBLE_VISIBILITY solaris_assemble_visibility
  
diff -Nrcpad gcc-16-20251116/gcc/config/sparc/sol2.h gcc-16-20251123/gcc/config/sparc/sol2.h
*** gcc-16-20251116/gcc/config/sparc/sol2.h	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/config/sparc/sol2.h	Sun Nov 23 22:32:08 2025
*************** along with GCC; see the file COPYING3.
*** 64,70 ****
  #define AS_SPARC32_FLAG ""
  #define AS_SPARC64_FLAG ""
  
! #ifndef USE_GAS
  #undef ASM_ARCH32_SPEC
  #define ASM_ARCH32_SPEC "-m32"
  #undef ASM_ARCH64_SPEC
--- 64,70 ----
  #define AS_SPARC32_FLAG ""
  #define AS_SPARC64_FLAG ""
  
! #if !HAVE_GNU_AS
  #undef ASM_ARCH32_SPEC
  #define ASM_ARCH32_SPEC "-m32"
  #undef ASM_ARCH64_SPEC
*************** extern const char *host_detect_local_cpu
*** 307,313 ****
  %{!mcpu*:%(asm_cpu_default)} \
  "
  
! #ifdef USE_GLD
  #define ARCH32_EMULATION "elf32_sparc_sol2"
  #define ARCH64_EMULATION "elf64_sparc_sol2"
  #endif
--- 307,313 ----
  %{!mcpu*:%(asm_cpu_default)} \
  "
  
! #if HAVE_GNU_LD
  #define ARCH32_EMULATION "elf32_sparc_sol2"
  #define ARCH64_EMULATION "elf64_sparc_sol2"
  #endif
*************** extern const char *host_detect_local_cpu
*** 326,332 ****
  /* Register the Solaris-specific #pragma directives.  */
  #define REGISTER_TARGET_PRAGMAS() solaris_register_pragmas ()
  
! #if defined(USE_GAS) && defined(HAVE_AS_TLS)
  /* Use GNU extensions to TLS support.  */
  #undef TARGET_SUN_TLS
  #undef TARGET_GNU_TLS
--- 326,332 ----
  /* Register the Solaris-specific #pragma directives.  */
  #define REGISTER_TARGET_PRAGMAS() solaris_register_pragmas ()
  
! #if HAVE_GNU_AS && defined(HAVE_AS_TLS)
  /* Use GNU extensions to TLS support.  */
  #undef TARGET_SUN_TLS
  #undef TARGET_GNU_TLS
*************** extern const char *host_detect_local_cpu
*** 405,411 ****
      }									\
    while (0)
  
! #ifndef USE_GAS
  /* This is how to output an assembler line that says to advance
     the location counter to a multiple of 2**LOG bytes using the
     NOP instruction as padding.  The filler pattern doesn't work
--- 405,411 ----
      }									\
    while (0)
  
! #if !HAVE_GNU_AS
  /* This is how to output an assembler line that says to advance
     the location counter to a multiple of 2**LOG bytes using the
     NOP instruction as padding.  The filler pattern doesn't work
*************** extern const char *host_detect_local_cpu
*** 421,430 ****
  /* Sun as requires doublequoted section names on SPARC.  While GNU as
     supports that, too, we prefer the standard variant.  */
  #define SECTION_NAME_FORMAT	"\"%s\""
! #endif /* !USE_GAS */
  
  /* Undefine this so that attribute((init_priority)) works with GNU ld.  */
! #ifdef USE_GLD
  #undef CTORS_SECTION_ASM_OP
  #undef DTORS_SECTION_ASM_OP
  #endif
--- 421,430 ----
  /* Sun as requires doublequoted section names on SPARC.  While GNU as
     supports that, too, we prefer the standard variant.  */
  #define SECTION_NAME_FORMAT	"\"%s\""
! #endif /* !HAVE_GNU_AS */
  
  /* Undefine this so that attribute((init_priority)) works with GNU ld.  */
! #if HAVE_GNU_LD
  #undef CTORS_SECTION_ASM_OP
  #undef DTORS_SECTION_ASM_OP
  #endif
diff -Nrcpad gcc-16-20251116/gcc/config/usegas.h gcc-16-20251123/gcc/config/usegas.h
*** gcc-16-20251116/gcc/config/usegas.h	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/config/usegas.h	Thu Jan  1 00:00:00 1970
***************
*** 1,20 ****
- /* Copyright (C) 2001-2025 Free Software Foundation, Inc.
- 
-    This file is part of GCC.
- 
-    GCC 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.
- 
-    GCC 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 GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- /* Just set a single flag we can test for it inside other files.  */
- #define USE_GAS 1
--- 0 ----
diff -Nrcpad gcc-16-20251116/gcc/config/usegld.h gcc-16-20251123/gcc/config/usegld.h
*** gcc-16-20251116/gcc/config/usegld.h	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/config/usegld.h	Thu Jan  1 00:00:00 1970
***************
*** 1 ****
- #define USE_GLD 1
--- 0 ----
diff -Nrcpad gcc-16-20251116/gcc/config.gcc gcc-16-20251123/gcc/config.gcc
*** gcc-16-20251116/gcc/config.gcc	Sun Nov 16 22:32:53 2025
--- gcc-16-20251123/gcc/config.gcc	Sun Nov 23 22:32:08 2025
*************** riscv*)
*** 560,566 ****
  	extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-string.o"
  	extra_objs="${extra_objs} riscv-v.o riscv-vsetvl.o riscv-vector-costs.o riscv-avlprop.o riscv-vect-permconst.o"
  	extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o sifive-vector-builtins-bases.o andes-vector-builtins-bases.o"
! 	extra_objs="${extra_objs} thead.o riscv-target-attr.o riscv-zicfilp.o riscv-bclr-lowest-set-bit.o"
  	d_target_objs="riscv-d.o"
  	extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h riscv_th_vector.h sifive_vector.h andes_vector.h"
  	target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
--- 560,566 ----
  	extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-string.o"
  	extra_objs="${extra_objs} riscv-v.o riscv-vsetvl.o riscv-vector-costs.o riscv-avlprop.o riscv-vect-permconst.o"
  	extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o sifive-vector-builtins-bases.o andes-vector-builtins-bases.o"
! 	extra_objs="${extra_objs} thead.o riscv-target-attr.o riscv-zicfilp.o riscv-bclr-lowest-set-bit.o riscv-opt-popretz.o"
  	d_target_objs="riscv-d.o"
  	extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h riscv_th_vector.h sifive_vector.h andes_vector.h"
  	target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc"
*************** case ${target} in
*** 1066,1077 ****
    # __cxa_atexit was introduced in Solaris 11.4.
    default_use_cxa_atexit=yes
    use_gcc_stdint=wrap
-   if test x$gnu_ld = xyes; then
-     tm_file="usegld.h ${tm_file}"
-   fi
-   if test x$gas = xyes; then
-     tm_file="usegas.h ${tm_file}"
-   fi
    tm_p_file="${tm_p_file} sol2-protos.h"
    tmake_file="${tmake_file} t-sol2 t-slibgcc"
    c_target_objs="${c_target_objs} sol2-c.o"
--- 1066,1071 ----
*************** powerpc-*-eabisimaltivec*)
*** 3067,3079 ****
  	use_gcc_stdint=wrap
  	;;
  powerpc-*-eabisim*)
! 	tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	use_gcc_stdint=wrap
  	;;
  powerpc-*-elf*)
! 	tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	;;
--- 3061,3073 ----
  	use_gcc_stdint=wrap
  	;;
  powerpc-*-eabisim*)
! 	tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	use_gcc_stdint=wrap
  	;;
  powerpc-*-elf*)
! 	tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	;;
*************** powerpc-*-eabialtivec*)
*** 3084,3090 ****
  	use_gcc_stdint=wrap
  	;;
  powerpc-*-eabi*)
! 	tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	use_gcc_stdint=wrap
--- 3078,3084 ----
  	use_gcc_stdint=wrap
  	;;
  powerpc-*-eabi*)
! 	tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	use_gcc_stdint=wrap
*************** powerpc-*-lynxos*)
*** 3212,3229 ****
  	gas=yes
  	;;
  powerpcle-*-elf*)
! 	tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	;;
  powerpcle-*-eabisim*)
! 	tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/eabisim.h"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	use_gcc_stdint=wrap
  	;;
  powerpcle-*-eabi*)
! 	tm_file="${tm_file} elfos.h gnu-user.h usegas.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	use_gcc_stdint=wrap
--- 3206,3223 ----
  	gas=yes
  	;;
  powerpcle-*-elf*)
! 	tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	;;
  powerpcle-*-eabisim*)
! 	tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h rs6000/eabisim.h"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	use_gcc_stdint=wrap
  	;;
  powerpcle-*-eabi*)
! 	tm_file="${tm_file} elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/sysv4le.h rs6000/eabi.h"
  	tmake_file="rs6000/t-fprules rs6000/t-ppcgas rs6000/t-ppccomm"
  	extra_options="${extra_options} rs6000/sysv4.opt"
  	use_gcc_stdint=wrap
diff -Nrcpad gcc-16-20251116/gcc/configure gcc-16-20251123/gcc/configure
*** gcc-16-20251116/gcc/configure	Sun Nov 16 22:35:46 2025
--- gcc-16-20251123/gcc/configure	Sun Nov 23 22:33:00 2025
*************** fi
*** 25562,25567 ****
--- 25562,25579 ----
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_is_mold" >&5
  $as_echo "$ld_is_mold" >&6; }
  
+ # Check to see if we are using Wild instead of ld
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using wild" >&5
+ $as_echo_n "checking whether we are using wild... " >&6; }
+ ld_is_wild=no
+ if test x$gcc_cv_ld != x; then
+   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
+      | grep "Wild" > /dev/null; then
+     ld_is_wild=yes
+   fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_is_wild" >&5
+ $as_echo "$ld_is_wild" >&6; }
  
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking gold linker with split stack support as non default" >&5
  $as_echo_n "checking gold linker with split stack support as non default... " >&6; }
*************** else
*** 26526,26531 ****
--- 26538,26545 ----
      :
    elif test x"$ld_is_mold" = xyes; then
      :
+   elif test x"$ld_is_wild" = xyes; then
+     :
    elif echo "$ld_ver" | grep GNU > /dev/null; then
      if test 0"$ld_date" -lt 20020404; then
        if test -n "$ld_date"; then
*************** elif test x"$gcc_cv_as" != x -a x"$gcc_c
*** 26598,26605 ****
    if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
       && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
       && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1; then
      if $gcc_cv_ld -shared -o conftest1.so conftest1.o \
!        conftest2.o conftest3.o > /dev/null 2>&1 \
         || $gcc_cv_ld -r -o conftest1.so conftest1.o \
  	  conftest2.o conftest3.o > /dev/null 2>&1; then
        gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
--- 26612,26622 ----
    if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
       && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
       && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1; then
+     # Note the Wild linker has --gc-sections on by default.
      if $gcc_cv_ld -shared -o conftest1.so conftest1.o \
!           conftest2.o conftest3.o --no-gc-sections > /dev/null 2>&1 \
!        || $gcc_cv_ld -shared -o conftest1.so conftest1.o \
!           conftest2.o conftest3.o > /dev/null 2>&1 \
         || $gcc_cv_ld -r -o conftest1.so conftest1.o \
  	  conftest2.o conftest3.o > /dev/null 2>&1; then
        gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
*************** if test x"$ld_is_gold" = xyes; then
*** 27653,27658 ****
--- 27670,27677 ----
    comdat_group=yes
  elif test x"$ld_is_mold" = xyes; then
    comdat_group=yes
+ elif test x"$ld_is_wild" = xyes; then
+   comdat_group=yes
  elif test $in_tree_ld = yes ; then
    comdat_group=no
    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
*************** else
*** 33103,33108 ****
--- 33122,33132 ----
        # Introduced in Solaris 11.2.
        gcc_cv_ld_compress_debug=1
        gcc_cv_ld_compress_debug_option="-z compress-sections"
+       # Detect zstd debug section compression support.  Introduced in
+       # Solaris 11.4 SRU 90.
+       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections.*\<zstd\>' > /dev/null; then
+ 	gcc_cv_ld_compress_debug=2
+       fi
        ;;
      *)
        # Assume linkers other than GNU ld don't support compessed debug
diff -Nrcpad gcc-16-20251116/gcc/configure.ac gcc-16-20251123/gcc/configure.ac
*** gcc-16-20251116/gcc/configure.ac	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/configure.ac	Sun Nov 23 22:32:08 2025
*************** if test x$gcc_cv_ld != x; then
*** 2797,2802 ****
--- 2797,2812 ----
  fi
  AC_MSG_RESULT($ld_is_mold)
  
+ # Check to see if we are using Wild instead of ld
+ AC_MSG_CHECKING(whether we are using wild)
+ ld_is_wild=no
+ if test x$gcc_cv_ld != x; then
+   if $gcc_cv_ld --version 2>/dev/null | sed 1q \
+      | grep "Wild" > /dev/null; then
+     ld_is_wild=yes
+   fi
+ fi
+ AC_MSG_RESULT($ld_is_wild)
  
  AC_MSG_CHECKING(gold linker with split stack support as non default)
  # Check to see if default ld is not gold, but gold is
*************** else
*** 3219,3224 ****
--- 3229,3236 ----
      :
    elif test x"$ld_is_mold" = xyes; then
      :
+   elif test x"$ld_is_wild" = xyes; then
+     :
    elif echo "$ld_ver" | grep GNU > /dev/null; then
      if test 0"$ld_date" -lt 20020404; then
        if test -n "$ld_date"; then
*************** elif test x"$gcc_cv_as" != x -a x"$gcc_c
*** 3286,3293 ****
    if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
       && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
       && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1; then
      if $gcc_cv_ld -shared -o conftest1.so conftest1.o \
!        conftest2.o conftest3.o > /dev/null 2>&1 \
         || $gcc_cv_ld -r -o conftest1.so conftest1.o \
  	  conftest2.o conftest3.o > /dev/null 2>&1; then
        gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
--- 3298,3308 ----
    if $gcc_cv_as -o conftest1.o conftest1.s > /dev/null 2>&1 \
       && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
       && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1; then
+     # Note the Wild linker has --gc-sections on by default.
      if $gcc_cv_ld -shared -o conftest1.so conftest1.o \
!           conftest2.o conftest3.o --no-gc-sections > /dev/null 2>&1 \
!        || $gcc_cv_ld -shared -o conftest1.so conftest1.o \
!           conftest2.o conftest3.o > /dev/null 2>&1 \
         || $gcc_cv_ld -r -o conftest1.so conftest1.o \
  	  conftest2.o conftest3.o > /dev/null 2>&1; then
        gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
*************** if test x"$ld_is_gold" = xyes; then
*** 3703,3708 ****
--- 3718,3725 ----
    comdat_group=yes
  elif test x"$ld_is_mold" = xyes; then
    comdat_group=yes
+ elif test x"$ld_is_wild" = xyes; then
+   comdat_group=yes
  elif test $in_tree_ld = yes ; then
    comdat_group=no
    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
*************** changequote(,)dnl
*** 6375,6380 ****
--- 6392,6402 ----
        # Introduced in Solaris 11.2.
        gcc_cv_ld_compress_debug=1
        gcc_cv_ld_compress_debug_option="-z compress-sections"
+       # Detect zstd debug section compression support.  Introduced in
+       # Solaris 11.4 SRU 90.
+       if $gcc_cv_ld --help 2>&1 | grep -- '-z compress-sections.*\<zstd\>' > /dev/null; then
+ 	gcc_cv_ld_compress_debug=2
+       fi
        ;;
      *)
        # Assume linkers other than GNU ld don't support compessed debug
diff -Nrcpad gcc-16-20251116/gcc/cp/ChangeLog gcc-16-20251123/gcc/cp/ChangeLog
*** gcc-16-20251116/gcc/cp/ChangeLog	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/ChangeLog	Sun Nov 23 22:32:08 2025
***************
*** 1,3 ****
--- 1,161 ----
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122636
+ 	* module.cc (instantiating_tu_local_entity): Don't check
+ 	importingness of originating module decl; also check templates.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* constraint.cc (diagnose_trait_expr):
+ 	<case CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF>: Explain failure
+ 	with more detail.
+ 	* cp-tree.h (pointer_interconvertible_base_of_p): Add explain
+ 	parameter.
+ 	* semantics.cc (pointer_interconvertible_base_of_p): Explain why
+ 	not.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* constraint.cc (diagnose_trait_expr)
+ 	<case CPTK_IS_LAYOUT_COMPATIBLE>: Explain why not.
+ 	* cp-tree.h (layout_compatible_type_p): Add explain parameter.
+ 	* typeck.cc (layout_compatible_type_p): Add explanations when
+ 	returning false.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* constraint.cc (diagnose_trait_expr)
+ 	<case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS>: Explain failure with
+ 	more detail.
+ 	* cp-tree.h (type_has_unique_obj_representations): Add explain
+ 	parameter.
+ 	* tree.cc (record_has_unique_obj_representations): Explain when
+ 	returning false.
+ 	(type_has_unique_obj_representations): Likewise.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* method.cc (destructible_expr): Add explanation when type is
+ 	neither class nor scalar.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* constraint.cc (diagnose_trait_expr): Use t2's location for
+ 	is_base_of, is_pointer_interconvertible_base_of, and
+ 	is_virtual_base_of.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* constraint.cc (diagnose_trait_expr): Reset input_location.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* typeck.cc (layout_compatible_type_p): Do not check TYPE_SIZE.
+ 
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 	    Julian Brown  <julian@codesourcery.com>
+ 	    waffl3x  <waffl3x@baylibre.com>
+ 
+ 	* cp-tree.h (struct cp_omp_declare_variant_attr): New.
+ 	(struct saved_scope): Add omp_declare_variant_attribute field.
+ 	* decl.cc (omp_declare_variant_finalize_one): Add logic to inject
+ 	"this" parameter for method calls.
+ 	* parser.cc (cp_parser_skip_to_pragma_omp_end_declare_variant): New.
+ 	(cp_parser_translation_unit): Handle leftover "begin declare variant"
+ 	functions.
+ 	(omp_start_variant_function): New.
+ 	(omp_finish_variant_function): New.
+ 	(omp_maybe_record_variant_base): New.
+ 	(cp_parser_init_declarator): Handle variant functions.
+ 	(cp_parser_class_specifier): Handle deferred lookup of base functions
+ 	when the entire class has been seen.
+ 	(cp_parser_member_declaration): Handle variant functions.
+ 	(cp_finish_omp_declare_variant): Merge context selectors if in
+ 	a "begin declare variant" block.
+ 	(cp_parser_omp_begin): Match "omp begin declare variant".  Adjust
+ 	error messages.
+ 	(cp_parser_omp_end): Match "omp end declare variant".
+ 	* parser.h (struct omp_begin_declare_variant_map_entry): New.
+ 	(struct cp_parser): Add omp_begin_declare_variant_map field.
+ 	* semantics.cc (finish_translation_unit): Detect unmatched
+ 	"omp begin declare variant".
+ 
+ 2025-11-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122788
+ 	* pt.cc (finish_expansion_stmt): Or in TREE_USED and DECL_READ_P
+ 	flags from range_decl to decl or from corresponding structured binding
+ 	to this_decl.
+ 
+ 2025-11-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122185
+ 	* cp-gimplify.cc (cp_fold) <case CALL_EXPR>: For -ffold-simple-inlines
+ 	restore check that both types are INDIRECT_TYPE_P, except for
+ 	"to_underlying" check that r has ENUMERAL_TYPE and x has
+ 	INTEGRAL_TYPE_P.
+ 
+ 2025-11-22  Daniele Sahebi  <daniele@mkryss.me>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122658
+ 	* call.cc (build_over_call): Don't call build_cplus_new in
+ 	template declarations.
+ 
+ 2025-11-21  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/120529
+ 	* call.cc (ref_conv_binds_to_temporary): Don't ignore access control.
+ 
+ 2025-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121445
+ 	* constexpr.cc (build_data_member_initialization): Just return
+ 	false if member is COMPONENT_REF of COMPONENT_REF with
+ 	VAR_P get_base_address.
+ 
+ 2025-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120876
+ 	* pt.cc (tsubst_baselink): Move maybe_incomplete handling after
+ 	!baselink handling.
+ 
+ 2025-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122540
+ 	* decl.cc (start_enum): When setting ENUM_UNDERLYING_TYPE
+ 	to integer_type_node during error recovery, also call copy_type_enum.
+ 
+ 2025-11-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/119580
+ 	* pt.cc (tsubst_baselink): Return error_mark_node if
+ 	tsubst_template_args returned error_mark_node.
+ 
+ 2025-11-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122668
+ 	PR c++/114764
+ 	* pt.cc (dependentish_scope_p): Return true for the current
+ 	instantiation from within an immediately parsed noexcept-spec.
+ 
+ 2025-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* parser.cc (cp_parser_conversion_type_id): Implement C++ DR1670
+ 	- auto as conversion-type-id.  Pedwarn on conversion operators
+ 	with placeholder return type.
+ 
+ 2025-11-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/122677
+ 	* module.cc (create_dirs): Skip past any leading slashes.
+ 
+ 2025-11-16  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122625
+ 	* module.cc (trees_in::read_var_def): Also track class-scope
+ 	primary template specialisations.
+ 
  2025-11-15  Jason Merrill  <jason@redhat.com>
  
  	* module.cc (trees_out::write_function_def): Check flag consistency.
diff -Nrcpad gcc-16-20251116/gcc/cp/call.cc gcc-16-20251123/gcc/cp/call.cc
*** gcc-16-20251116/gcc/cp/call.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/call.cc	Sun Nov 23 22:32:08 2025
*************** ref_conv_binds_to_temporary (tree type,
*** 10203,10213 ****
    const int flags = direct_init_p ? LOOKUP_NORMAL : LOOKUP_IMPLICIT;
    conversion *conv = implicit_conversion (type, TREE_TYPE (expr), expr,
  					  /*c_cast_p=*/false, flags, tf_none);
!   tristate ret (tristate::TS_UNKNOWN);
!   if (conv && !conv->bad_p)
!     ret = tristate (conv_binds_ref_to_temporary (conv));
  
!   return ret;
  }
  
  /* Call the trivial destructor for INSTANCE, which can be either an lvalue of
--- 10203,10221 ----
    const int flags = direct_init_p ? LOOKUP_NORMAL : LOOKUP_IMPLICIT;
    conversion *conv = implicit_conversion (type, TREE_TYPE (expr), expr,
  					  /*c_cast_p=*/false, flags, tf_none);
!   if (!conv || conv->bad_p)
!     return tristate::unknown ();
  
!   if (conv_binds_ref_to_temporary (conv))
!     {
!       /* Actually perform the conversion to check access control.  */
!       if (convert_like (conv, expr, tf_none) != error_mark_node)
! 	return tristate (true);
!       else
! 	return tristate::unknown ();
!     }
! 
!   return tristate (false);
  }
  
  /* Call the trivial destructor for INSTANCE, which can be either an lvalue of
*************** build_over_call (struct z_candidate *can
*** 10328,10345 ****
  	TREE_NO_WARNING (expr) = true;
        if (immediate_invocation_p (fn))
  	{
! 	  tree obj_arg = NULL_TREE, exprimm = expr;
  	  if (DECL_CONSTRUCTOR_P (fn))
  	    obj_arg = first_arg;
- 	  if (obj_arg
- 	      && is_dummy_object (obj_arg)
- 	      && !type_dependent_expression_p (obj_arg))
- 	    {
- 	      exprimm = build_cplus_new (DECL_CONTEXT (fn), expr, complain);
- 	      obj_arg = NULL_TREE;
- 	    }
  	  /* Look through *(const T *)&obj.  */
! 	  else if (obj_arg && INDIRECT_REF_P (obj_arg))
  	    {
  	      tree addr = TREE_OPERAND (obj_arg, 0);
  	      STRIP_NOPS (addr);
--- 10336,10346 ----
  	TREE_NO_WARNING (expr) = true;
        if (immediate_invocation_p (fn))
  	{
! 	  tree obj_arg = NULL_TREE;
  	  if (DECL_CONSTRUCTOR_P (fn))
  	    obj_arg = first_arg;
  	  /* Look through *(const T *)&obj.  */
! 	  if (obj_arg && INDIRECT_REF_P (obj_arg))
  	    {
  	      tree addr = TREE_OPERAND (obj_arg, 0);
  	      STRIP_NOPS (addr);
*************** build_over_call (struct z_candidate *can
*** 10351,10357 ****
  		    obj_arg = TREE_OPERAND (addr, 0);
  		}
  	    }
! 	  fold_non_dependent_expr (exprimm, complain,
  				   /*manifestly_const_eval=*/true,
  				   obj_arg);
  	}
--- 10352,10358 ----
  		    obj_arg = TREE_OPERAND (addr, 0);
  		}
  	    }
! 	  fold_non_dependent_expr (expr, complain,
  				   /*manifestly_const_eval=*/true,
  				   obj_arg);
  	}
diff -Nrcpad gcc-16-20251116/gcc/cp/constexpr.cc gcc-16-20251123/gcc/cp/constexpr.cc
*** gcc-16-20251116/gcc/cp/constexpr.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/constexpr.cc	Sun Nov 23 22:32:08 2025
*************** build_data_member_initialization (tree t
*** 477,482 ****
--- 477,485 ----
        if (TREE_CODE (aggr) != COMPONENT_REF)
  	/* Normal member initialization.  */
  	member = TREE_OPERAND (member, 1);
+       else if (VAR_P (get_base_address (aggr)))
+ 	/* Initializing a local variable, don't add anything.  */
+ 	return true;
        else if (ANON_AGGR_TYPE_P (TREE_TYPE (aggr)))
  	/* Initializing a member of an anonymous union.  */
  	return build_anon_member_initialization (member, init, vec);
diff -Nrcpad gcc-16-20251116/gcc/cp/constraint.cc gcc-16-20251123/gcc/cp/constraint.cc
*** gcc-16-20251116/gcc/cp/constraint.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/constraint.cc	Sun Nov 23 22:32:08 2025
*************** diagnose_trait_expr (location_t loc, tre
*** 3075,3080 ****
--- 3075,3083 ----
  
    tree t1 = TRAIT_EXPR_TYPE1 (expr);
    tree t2 = TRAIT_EXPR_TYPE2 (expr);
+   gcc_checking_assert (t1 != error_mark_node && t2 != error_mark_node);
+ 
+   iloc_sentinel ils (loc);
  
    /* For traits intrinsically about the properties of user-defined types,
       decl_loc will point to the declaration of that type.  */
*************** diagnose_trait_expr (location_t loc, tre
*** 3106,3112 ****
        inform (decl_loc, "%qT is not trivially destructible", t1);
        break;
      case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
!       inform (decl_loc, "%qT does not have unique object representations", t1);
        break;
      case CPTK_HAS_VIRTUAL_DESTRUCTOR:
        {
--- 3109,3117 ----
        inform (decl_loc, "%qT is not trivially destructible", t1);
        break;
      case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
!       inform (decl_loc, "%qT does not have unique object "
! 	      "representations, because", t1);
!       type_has_unique_obj_representations (t1, /*explain=*/true);
        break;
      case CPTK_HAS_VIRTUAL_DESTRUCTOR:
        {
*************** diagnose_trait_expr (location_t loc, tre
*** 3131,3137 ****
        is_xible (MODIFY_EXPR, t1, t2, /*explain=*/true);
        break;
      case CPTK_IS_BASE_OF:
!       inform (decl_loc, "%qT is not a base of %qT", t1, t2);
        break;
      case CPTK_IS_BOUNDED_ARRAY:
        inform (loc, "%qT is not a bounded array", t1);
--- 3136,3142 ----
        is_xible (MODIFY_EXPR, t1, t2, /*explain=*/true);
        break;
      case CPTK_IS_BASE_OF:
!       inform (location_of (t2), "%qT is not a base of %qT", t1, t2);
        break;
      case CPTK_IS_BOUNDED_ARRAY:
        inform (loc, "%qT is not a bounded array", t1);
*************** diagnose_trait_expr (location_t loc, tre
*** 3183,3189 ****
        }
        break;
      case CPTK_IS_LAYOUT_COMPATIBLE:
!       inform (loc, "%qT is not layout compatible with %qT", t1, t2);
        break;
      case CPTK_IS_LITERAL_TYPE:
        inform (decl_loc, "%qT is not a literal type", t1);
--- 3188,3195 ----
        }
        break;
      case CPTK_IS_LAYOUT_COMPATIBLE:
!       inform (loc, "%qT is not layout compatible with %qT, because", t1, t2);
!       layout_compatible_type_p (t1, t2, /*explain=*/true);
        break;
      case CPTK_IS_LITERAL_TYPE:
        inform (decl_loc, "%qT is not a literal type", t1);
*************** diagnose_trait_expr (location_t loc, tre
*** 3232,3239 ****
        inform (loc, "%qT is not an object type", t1);
        break;
      case CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF:
!       inform (decl_loc, "%qT is not a pointer-interconvertible base of %qT",
  	      t1, t2);
        break;
      case CPTK_IS_POD:
        inform (loc, "%qT is not a POD type", t1);
--- 3238,3247 ----
        inform (loc, "%qT is not an object type", t1);
        break;
      case CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF:
!       inform (location_of (t2),
! 	      "%qT is not a pointer-interconvertible base of %qT, because",
  	      t1, t2);
+       pointer_interconvertible_base_of_p (t1, t2, /*explain=*/true);
        break;
      case CPTK_IS_POD:
        inform (loc, "%qT is not a POD type", t1);
*************** diagnose_trait_expr (location_t loc, tre
*** 3285,3293 ****
        inform (decl_loc, "%qT is not a union", t1);
        break;
      case CPTK_IS_VIRTUAL_BASE_OF:
!       inform (decl_loc, "%qT is not a virtual base of %qT", t1, t2);
!       if (CLASS_TYPE_P (t2))
! 	inform (location_of (t2), "%qT declared here", t2);
        break;
      case CPTK_IS_VOLATILE:
        inform (loc, "%qT is not a volatile type", t1);
--- 3293,3299 ----
        inform (decl_loc, "%qT is not a union", t1);
        break;
      case CPTK_IS_VIRTUAL_BASE_OF:
!       inform (location_of (t2), "%qT is not a virtual base of %qT", t1, t2);
        break;
      case CPTK_IS_VOLATILE:
        inform (loc, "%qT is not a volatile type", t1);
diff -Nrcpad gcc-16-20251116/gcc/cp/cp-gimplify.cc gcc-16-20251123/gcc/cp/cp-gimplify.cc
*** gcc-16-20251116/gcc/cp/cp-gimplify.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/cp-gimplify.cc	Sun Nov 23 22:32:08 2025
*************** cp_fold (tree x, fold_flags_t flags)
*** 3447,3454 ****
  		|| id_equal (DECL_NAME (callee), "as_const")))
  	  {
  	    r = CALL_EXPR_ARG (x, 0);
! 	    r = build_nop (TREE_TYPE (x), r);
! 	    x = cp_fold (r, flags);
  	    break;
  	  }
  
--- 3447,3464 ----
  		|| id_equal (DECL_NAME (callee), "as_const")))
  	  {
  	    r = CALL_EXPR_ARG (x, 0);
! 	    /* These type-checks must be performed here, because invalid
! 	       definitions of these functions could fail to ensure those and
! 	       build_nop could misbehave.  See PR122185.  */
! 	    if (id_equal (DECL_NAME (callee), "to_underlying")
! 		? TREE_CODE (TREE_TYPE (r)) == ENUMERAL_TYPE
! 		  && INTEGRAL_TYPE_P (TREE_TYPE (x))
! 		: INDIRECT_TYPE_P (TREE_TYPE (x))
! 		  && INDIRECT_TYPE_P (TREE_TYPE (r)))
! 	      {
! 		r = build_nop (TREE_TYPE (x), r);
! 		x = cp_fold (r, flags);
! 	      }
  	    break;
  	  }
  
diff -Nrcpad gcc-16-20251116/gcc/cp/cp-tree.h gcc-16-20251123/gcc/cp/cp-tree.h
*** gcc-16-20251116/gcc/cp/cp-tree.h	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/cp-tree.h	Sun Nov 23 22:32:08 2025
*************** struct GTY(()) cp_omp_begin_assumes_data
*** 1946,1951 ****
--- 1946,1956 ----
    bool attr_syntax;
  };
  
+ struct GTY(()) cp_omp_declare_variant_attr {
+   bool attr_syntax;
+   tree selector;
+ };
+ 
  /* Global state.  */
  
  struct GTY(()) saved_scope {
*************** struct GTY(()) saved_scope {
*** 1998,2003 ****
--- 2003,2009 ----
    hash_map<tree, tree> *GTY((skip)) x_local_specializations;
    vec<cp_omp_declare_target_attr, va_gc> *omp_declare_target_attribute;
    vec<cp_omp_begin_assumes_data, va_gc> *omp_begin_assumes;
+   vec<cp_omp_declare_variant_attr, va_gc> *omp_declare_variant_attribute;
  
    struct saved_scope *prev;
  };
*************** extern void finish_static_assert
*** 8285,8290 ****
--- 8291,8297 ----
  						 bool, bool, bool = false);
  extern tree finish_decltype_type                (tree, bool, tsubst_flags_t);
  extern tree fold_builtin_is_corresponding_member (location_t, int, tree *);
+ extern bool pointer_interconvertible_base_of_p	(tree, tree, bool = false);
  extern tree fold_builtin_is_pointer_inverconvertible_with_class (location_t, int, tree *);
  extern tree finish_structured_binding_size	(location_t, tree, tsubst_flags_t);
  extern tree finish_trait_expr			(location_t, enum cp_trait_kind, tree, tree);
*************** extern bool std_layout_type_p			(const_t
*** 8361,8367 ****
  extern bool trivial_type_p			(const_tree);
  extern bool implicit_lifetime_type_p		(tree);
  extern bool trivially_copyable_p		(const_tree);
! extern bool type_has_unique_obj_representations (const_tree);
  extern bool scalarish_type_p			(const_tree);
  extern bool structural_type_p			(tree, bool = false);
  extern bool type_has_nontrivial_default_init	(const_tree);
--- 8368,8374 ----
  extern bool trivial_type_p			(const_tree);
  extern bool implicit_lifetime_type_p		(tree);
  extern bool trivially_copyable_p		(const_tree);
! extern bool type_has_unique_obj_representations (const_tree, bool = false);
  extern bool scalarish_type_p			(const_tree);
  extern bool structural_type_p			(tree, bool = false);
  extern bool type_has_nontrivial_default_init	(const_tree);
*************** extern bool same_type_ignoring_top_level
*** 8534,8540 ****
  extern bool similar_type_p			(tree, tree);
  extern bool cp_comp_parm_types			(tree, tree);
  extern bool next_common_initial_sequence	(tree &, tree &);
! extern bool layout_compatible_type_p		(tree, tree);
  extern bool compparms				(const_tree, const_tree);
  extern int comp_cv_qualification		(const_tree, const_tree);
  extern int comp_cv_qualification		(int, int);
--- 8541,8547 ----
  extern bool similar_type_p			(tree, tree);
  extern bool cp_comp_parm_types			(tree, tree);
  extern bool next_common_initial_sequence	(tree &, tree &);
! extern bool layout_compatible_type_p		(tree, tree, bool = false);
  extern bool compparms				(const_tree, const_tree);
  extern int comp_cv_qualification		(const_tree, const_tree);
  extern int comp_cv_qualification		(int, int);
diff -Nrcpad gcc-16-20251116/gcc/cp/decl.cc gcc-16-20251123/gcc/cp/decl.cc
*** gcc-16-20251116/gcc/cp/decl.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/decl.cc	Sun Nov 23 22:32:08 2025
*************** omp_declare_variant_finalize_one (tree d
*** 9075,9080 ****
--- 9075,9095 ----
    if (idk == CP_ID_KIND_QUALIFIED)
      variant = finish_call_expr (variant, &args, /*disallow_virtual=*/true,
  				koenig_p, tf_warning_or_error);
+   else if (idk == CP_ID_KIND_NONE
+ 	   && TREE_CODE (variant) == FUNCTION_DECL
+ 	   && DECL_IOBJ_MEMBER_FUNCTION_P (variant)
+ 	   && CLASS_TYPE_P (DECL_CONTEXT (decl)))
+     {
+       tree saved_ccp = current_class_ptr;
+       tree saved_ccr = current_class_ref;
+       current_class_ptr = NULL_TREE;
+       current_class_ref = NULL_TREE;
+       inject_this_parameter (DECL_CONTEXT (decl), TYPE_UNQUALIFIED);
+       variant = finish_call_expr (variant, &args, /*disallow_virtual=*/false,
+ 				  koenig_p, tf_warning_or_error);
+       current_class_ptr = saved_ccp;
+       current_class_ref = saved_ccr;
+     }
    else
      variant = finish_call_expr (variant, &args, /*disallow_virtual=*/false,
  				koenig_p, tf_warning_or_error);
*************** start_enum (tree name, tree enumtype, tr
*** 18723,18728 ****
--- 18738,18744 ----
  	{
  	  error ("underlying type %qT of %qT must be an integral type",
  		 underlying_type, enumtype);
+ 	  copy_type_enum (enumtype, integer_type_node);
  	  ENUM_UNDERLYING_TYPE (enumtype) = integer_type_node;
  	}
      }
diff -Nrcpad gcc-16-20251116/gcc/cp/method.cc gcc-16-20251123/gcc/cp/method.cc
*** gcc-16-20251116/gcc/cp/method.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/method.cc	Sun Nov 23 22:32:08 2025
*************** destructible_expr (tree to, bool explain
*** 2410,2416 ****
    else if (scalarish_type_p (to))
      return void_node;
    else
!     return error_mark_node;
  }
  
  /* Returns a tree iff TO is assignable (if CODE is MODIFY_EXPR) or
--- 2410,2420 ----
    else if (scalarish_type_p (to))
      return void_node;
    else
!     {
!       if (explain)
! 	error_at (location_of (to), "%qT is not a class or scalar type", to);
!       return error_mark_node;
!     }
  }
  
  /* Returns a tree iff TO is assignable (if CODE is MODIFY_EXPR) or
diff -Nrcpad gcc-16-20251116/gcc/cp/module.cc gcc-16-20251123/gcc/cp/module.cc
*** gcc-16-20251116/gcc/cp/module.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/module.cc	Sun Nov 23 22:32:08 2025
*************** maybe_add_cmi_prefix (const char *to, si
*** 4941,4948 ****
  static void
  create_dirs (char *path)
  {
    /* Try and create the missing directories.  */
!   for (char *base = path; *base; base++)
      if (IS_DIR_SEPARATOR (*base))
        {
  	char sep = *base;
--- 4941,4953 ----
  static void
  create_dirs (char *path)
  {
+   char *base = path;
+   /* Skip past initial slashes of absolute path.  */
+   while (IS_DIR_SEPARATOR (*base))
+     base++;
+ 
    /* Try and create the missing directories.  */
!   for (; *base; base++)
      if (IS_DIR_SEPARATOR (*base))
        {
  	char sep = *base;
*************** instantiating_tu_local_entity (tree decl
*** 14229,14237 ****
        return true;
      }
  
!   /* Currently, only TU-local variables and functions will be emitted
!      from named modules.  */
!   if (!VAR_OR_FUNCTION_DECL_P (decl))
      return false;
  
    /* From this point we will only be emitting warnings; if we're not
--- 14234,14243 ----
        return true;
      }
  
!   /* Currently, only TU-local variables and functions, or possibly
!      templates thereof, will be emitted from named modules.  */
!   tree inner = STRIP_TEMPLATE (decl);
!   if (!VAR_OR_FUNCTION_DECL_P (inner))
      return false;
  
    /* From this point we will only be emitting warnings; if we're not
*************** instantiating_tu_local_entity (tree decl
*** 14244,14259 ****
    if (!is_tu_local_entity (decl))
      return false;
  
!   tree origin = get_originating_module_decl (decl);
!   if (!DECL_LANG_SPECIFIC (STRIP_TEMPLATE (origin))
!       || !DECL_MODULE_IMPORT_P (STRIP_TEMPLATE (origin)))
      return false;
  
    /* Referencing TU-local entities from a header is generally OK.
       We don't have an easy way to detect if this declaration came
       from a header via a separate named module, but we can just
       ignore that case for warning purposes.  */
!   unsigned index = import_entity_index (origin);
    module_state *mod = import_entity_module (index);
    if (mod->is_header ())
      return false;
--- 14250,14264 ----
    if (!is_tu_local_entity (decl))
      return false;
  
!   if (!DECL_LANG_SPECIFIC (inner)
!       || !DECL_MODULE_IMPORT_P (inner))
      return false;
  
    /* Referencing TU-local entities from a header is generally OK.
       We don't have an easy way to detect if this declaration came
       from a header via a separate named module, but we can just
       ignore that case for warning purposes.  */
!   unsigned index = import_entity_index (decl);
    module_state *mod = import_entity_module (index);
    if (mod->is_header ())
      return false;
diff -Nrcpad gcc-16-20251116/gcc/cp/parser.cc gcc-16-20251123/gcc/cp/parser.cc
*** gcc-16-20251116/gcc/cp/parser.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/parser.cc	Sun Nov 23 22:32:08 2025
*************** static void cp_finalize_oacc_routine
*** 273,278 ****
--- 273,282 ----
  static void check_omp_intervening_code
    (cp_parser *);
  
+ static tree omp_start_variant_function
+   (cp_declarator *, tree);
+ static int omp_finish_variant_function
+   (cp_parser *, tree, tree, tree, bool, bool);
  
  /* Manifest constants.  */
  #define CP_LEXER_BUFFER_SIZE ((256 * 1024) / sizeof (cp_token))
*************** cp_parser_require_pragma_eol (cp_parser
*** 4561,4566 ****
--- 4565,4618 ----
      }
  }
  
+ /* Skip tokens up to and including "#pragma omp end declare variant".
+    Properly handle nested "#pragma omp begin declare variant" pragmas.  */
+ static void
+ cp_parser_skip_to_pragma_omp_end_declare_variant (cp_parser *parser)
+ {
+   for (int depth = 0; depth >= 0; )
+     {
+       cp_token *token = cp_lexer_peek_token (parser->lexer);
+ 
+       switch (token->type)
+ 	{
+ 	case CPP_PRAGMA_EOL:
+ 	  if (!parser->lexer->in_pragma)
+ 	    break;
+ 	  /* FALLTHRU */
+ 	case CPP_EOF:
+ 	  /* If we've run out of tokens, stop.  */
+ 	  return;
+ 
+ 	case CPP_PRAGMA:
+ 	  if ((cp_parser_pragma_kind (token) == PRAGMA_OMP_BEGIN
+ 	       || cp_parser_pragma_kind (token) == PRAGMA_OMP_END)
+ 	      && cp_lexer_nth_token_is (parser->lexer, 2, CPP_NAME)
+ 	      && cp_lexer_nth_token_is (parser->lexer, 3, CPP_NAME))
+ 	    {
+ 	      tree id1 = cp_lexer_peek_nth_token (parser->lexer, 2)->u.value;
+ 	      tree id2 = cp_lexer_peek_nth_token (parser->lexer, 3)->u.value;
+ 	      if (strcmp (IDENTIFIER_POINTER (id1), "declare") == 0
+ 		  && strcmp (IDENTIFIER_POINTER (id2), "variant") == 0)
+ 		{
+ 		  if (cp_parser_pragma_kind (token) == PRAGMA_OMP_BEGIN)
+ 		    depth++;
+ 		  else
+ 		    depth--;
+ 		}
+ 	    }
+ 	  cp_parser_skip_to_pragma_eol (parser, token);
+ 	  continue;
+ 
+ 	default:
+ 	  break;
+ 	}
+ 
+       /* Consume the token.  */
+       cp_lexer_consume_token (parser->lexer);
+     }
+ }
+ 
  /* This is a simple wrapper around make_typename_type. When the id is
     an unresolved identifier node, we can provide a superior diagnostic
     using cp_parser_diagnose_invalid_type_name.  */
*************** cp_parser_translation_unit (cp_parser* p
*** 5506,5511 ****
--- 5558,5579 ----
  	cp_parser_toplevel_declaration (parser);
      }
  
+   /* Register any functions found in "begin declare variant" blocks, whose
+      base function declarations may be found "elsewhere" in the translation
+      unit.  */
+   /* FIXME: we could probably just diagnose any leftover functions as an
+      error directly here, all valid cases were supposed to have been
+      caught already.  */
+   if (vec_safe_length (parser->omp_begin_declare_variant_map))
+     {
+       unsigned int i;
+       omp_begin_declare_variant_map_entry *e;
+       FOR_EACH_VEC_ELT (*parser->omp_begin_declare_variant_map, i, e)
+ 	omp_finish_variant_function (parser, e->variant, e->id, e->ctx,
+ 				     false, true);
+       parser->omp_begin_declare_variant_map = NULL;
+     }
+ 
  #if ENABLE_ANALYZER
    if (flag_analyzer)
      {
*************** cp_parser_conversion_type_id (cp_parser*
*** 18779,18787 ****
  	  error ("invalid use of %<auto%> in conversion operator");
  	  return error_mark_node;
  	}
!       else if (template_parm_scope_p ())
! 	warning (0, "use of %<auto%> in member template "
! 		 "conversion operator can never be deduced");
      }
  
    return type_specified;
--- 18847,18860 ----
  	  error ("invalid use of %<auto%> in conversion operator");
  	  return error_mark_node;
  	}
!       else
! 	{
! 	  pedwarn (input_location, OPT_Wpedantic,
! 		   "invalid use of %<auto%> in conversion operator");
! 	  if (template_parm_scope_p ())
! 	    warning (0, "use of %<auto%> in member template "
! 			"conversion operator can never be deduced");
! 	}
      }
  
    return type_specified;
*************** cp_parser_maybe_adjust_declarator_for_dg
*** 24510,24515 ****
--- 24583,24860 ----
      }
  }
  
+ /* Helper function for OpenMP "begin declare variant" directives.
+    Function definitions inside the construct need to have their names
+    mangled according to the context selector CTX.  The DECLARATOR is
+    modified in place to point to a new identifier; the original name of
+    the function is returned.  */
+ static tree
+ omp_start_variant_function (cp_declarator *declarator, tree ctx)
+ {
+   cp_declarator *id = get_id_declarator (declarator);
+   tree name = id->u.id.unqualified_name;
+   tree scope = id->u.id.qualifying_scope;
+   enum special_function_kind sfk = id->u.id.sfk;
+ 
+   /* There seems to be no reasonable interpretation of what the behavior
+      should be if the name is qualified.  You cannot add the variant function
+      to a class or namespace from outside of that scope.  */
+   if (scope)
+     {
+       sorry_at (id->id_loc,
+ 		"cannot handle qualified name for variant function");
+       return NULL_TREE;
+     }
+ 
+   /* Catch disallowed constructors and destructors now.  We can't mangle
+      destructor names (which are not IDENTIFIER_NODEs) in any case.  */
+   if (sfk == sfk_constructor)
+     {
+       error_at (id->id_loc,
+ 		"declare variant directives are not allowed on constructors");
+       return NULL_TREE;
+     }
+   if (sfk == sfk_destructor)
+     {
+       error_at (id->id_loc,
+ 		"declare variant directives are not allowed on destructors");
+       return NULL_TREE;
+     }
+   if (TREE_CODE (name) != IDENTIFIER_NODE)
+     {
+       sorry_at (id->id_loc,
+ 		"cannot handle %s identifier name",
+ 		get_tree_code_name (TREE_CODE (name)));
+       return NULL_TREE;
+     }
+ 
+   /* Mangle the name in the declarator.  If we're in a module interface,
+      add an additional prefix on the name ("mi" == "module interface"),
+      so that it will not collide with names in the module purview that
+      are defined locally within module interface TUs.  Note that the
+      module name mangling of this name happens after this step.  */
+   const char *sep
+     = (module_interface_p () ? JOIN_STR "mi" : JOIN_STR);
+   id->u.id.unqualified_name = omp_mangle_variant_name (name, ctx, sep);
+ 
+   return name;
+ }
+ 
+ /* Helper function for OpenMP "begin declare variant" directives.  Now
+    that we have a DECL for the variant function, and BASE_NAME for the
+    base function, look up the decl for BASE_NAME in the same scope as
+    DECL, add an "omp declare variant base" attribute pointing at CTX
+    to the base decl, and an "omp declare variant variant" attribute to
+    the variant DECL.  IN_CLASS_P is true for DECLs appearing in a class
+    scope, and if DIAGNOSE_ERROR_P is false do not diagnose errors about
+    failure to match at this time (although other semantic errors when a
+    match is found are always diagnosed).  Returns 1 on success, 0 for no
+    match, and -1 for a match with semantic errors.  */
+ static int
+ omp_finish_variant_function (cp_parser *parser, tree decl, tree base_name,
+ 			     tree ctx, bool in_class_p, bool diagnose_error_p)
+ {
+   tree match = NULL_TREE;
+   bool is_template = false;
+   tree decl_context = CP_DECL_CONTEXT (decl);
+   tree base_decl;
+ 
+   /* First find the base_decl in the same scope as decl.  If we are in
+      a class scope the parser still points at the scope, otherwise
+      look up base_name in the same namespace as decl appeared in.  */
+   if (in_class_p)
+     base_decl = cp_parser_lookup_name_simple (parser, base_name,
+ 					      DECL_SOURCE_LOCATION (decl));
+   else
+     base_decl = lookup_qualified_name (decl_context, base_name);
+ 
+   if (base_decl == error_mark_node)
+     base_decl = NULL_TREE;
+   if (!base_decl)
+     {
+       if (!diagnose_error_p)
+ 	return 0;
+       /* We previously rejected non-identifier base function names.  */
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"no declaration of base function %qs in this scope",
+ 		IDENTIFIER_POINTER (base_name));
+       return -1;
+     }
+ 
+   /* Find the right overloaded function.  */
+   if (TREE_CODE (base_decl) == OVERLOAD)
+     {
+       for (ovl_iterator iter (base_decl); iter; ++iter)
+ 	{
+ 	  tree bb = *iter;
+ 	  if (decls_match (decl, bb))
+ 	    {
+ 	      match = bb;
+ 	      break;
+ 	    }
+ 	  else if (TREE_CODE (bb) == TEMPLATE_DECL
+ 		   && TREE_CODE (decl) == FUNCTION_DECL
+ 		   && DECL_TEMPLATE_INFO (decl))
+ 	    {
+ 	      tree decl_template = DECL_TI_TEMPLATE (decl);
+ 	      if (decl_template
+ 		  && PRIMARY_TEMPLATE_P (decl_template)
+ 		  && decls_match (bb, decl_template))
+ 		{
+ 		  /* We want to put the attributes on the function rather
+ 		     than on the TEMPLATE_DECL that points to it.  */
+ 		  match = DECL_TEMPLATE_RESULT (bb);
+ 		  is_template = true;
+ 		  break;
+ 		}
+ 	    }
+ 	}
+       }
+   else if (decls_match (decl, base_decl))
+     match = base_decl;
+   else if (TREE_CODE (base_decl) == TEMPLATE_DECL)
+     /* Per comment in cp-tree.h, TEMPLATE_DECLs are always wrapped in an
+        OVERLOAD, so we should never see them here.  */
+     gcc_unreachable ();
+   else if (TREE_CODE (base_decl) == TREE_LIST)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl), "base function is ambiguous");
+       return -1;
+     }
+   else if (BASELINK_P (base_decl))
+     {
+       /* Baselink tree nodes do not have a DECL_NAME so we can't use it
+ 	 in the error message.  */
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"variant function must be in the same scope as the "
+ 		"base function %qs", IDENTIFIER_POINTER (base_name));
+       return -1;
+     }
+   if (!match)
+     {
+       /* We get here if base_decl doesn't match DECL or have an
+ 	 overload matching DECL.  */
+       if (!diagnose_error_p)
+ 	return 0;
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"variant function definition does not match "
+ 		"declaration of %qE", base_decl);
+       if (TREE_CODE (base_decl) != OVERLOAD)
+ 	inform (DECL_SOURCE_LOCATION (base_decl), "declared here");
+       return -1;
+     }
+   else if (CP_DECL_CONTEXT (match) != decl_context)
+     {
+       /* Reject inherited or using decls.  */
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"variant function must be in the same scope as the "
+ 		"base function %qE", base_decl);
+       return -1;
+     }
+   else if (DECL_VIRTUAL_P (decl) || DECL_VIRTUAL_P (match))
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"declare variant directives are not allowed on "
+ 		"virtual functions");
+       return -1;
+     }
+   else if (DECL_DEFAULTED_FN (decl) || DECL_DEFAULTED_FN (match))
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"declare variant directives are not allowed on "
+ 		"defaulted functions");
+       return -1;
+     }
+   else if (DECL_DELETED_FN (decl) || DECL_DELETED_FN (match))
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"declare variant directives are not allowed on "
+ 		"deleted functions");
+       return -1;
+     }
+   else if (DECL_IMMEDIATE_FUNCTION_P (decl)
+ 	   || DECL_IMMEDIATE_FUNCTION_P (match))
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"declare variant directives are not allowed on "
+ 		"immediate functions");
+       return -1;
+     }
+ 
+   /* Inside a template, make the "omp declare variant base" attribute
+      point to the name of DECL rather than DECL itself.  During template
+      instantiation, omp_declare_variant_finalize_one will handle this
+      using the same logic as for the non-delimited form of "declare variant",
+      causing template instantiation as needed.  For the non-template case,
+      there is nothing that will trigger omp_declare_variant_finalize_one;
+      so we create the final form of the attribute here, which points
+      directly to DECL rather than its name.  */
+   tree decl_or_name = decl;
+   cp_id_kind idk = CP_ID_KIND_NONE;
+   if (processing_template_decl && is_template)
+     {
+       decl_or_name = DECL_NAME (decl);
+       idk = CP_ID_KIND_TEMPLATE_ID;
+     }
+ 
+   omp_check_for_duplicate_variant (DECL_SOURCE_LOCATION (decl),
+ 				   match, ctx);
+   tree construct
+     = omp_get_context_selector_list (ctx, OMP_TRAIT_SET_CONSTRUCT);
+   omp_mark_declare_variant (DECL_SOURCE_LOCATION (decl), decl, construct);
+ 
+   tree attrs = DECL_ATTRIBUTES (match);
+   tree match_loc_node = build_empty_stmt (DECL_SOURCE_LOCATION (match));
+   tree loc_node = tree_cons (match_loc_node,
+ 			     build_int_cst (integer_type_node, idk),
+ 			     build_tree_list (match_loc_node,
+ 					      integer_zero_node));
+   attrs = tree_cons (get_identifier ("omp declare variant base"),
+ 		     tree_cons (decl_or_name, ctx, loc_node), attrs);
+   if (processing_template_decl)
+     ATTR_IS_DEPENDENT (attrs) = 1;
+   DECL_ATTRIBUTES (match) = attrs;
+ 
+   /* Except for variants defined in a module interface, variant functions
+      are essentially anonymous and cannot be referenced by name, so make
+      them have internal linkage.  Note that class methods in C++ normally
+      have external linkage with weak/comdat semantics; this prevents that.  */
+   if (!module_interface_p ())
+     {
+       TREE_PUBLIC (decl) = 0;
+       DECL_COMDAT (decl) = 0;
+       DECL_INTERFACE_KNOWN (decl) = 1;
+       DECL_NOT_REALLY_EXTERN (decl) = 1;
+     }
+   return 1;
+ }
+ 
+ /* Called when we have seen a function declaration or definition DECL.
+    OpenMP "begin declare variant" allows variant definitions to precede
+    the declaration of the base function.  If DECL is a newly-declared
+    function matching some variant that hasn't been recorded on its base
+    function yet, do that now.  */
+ 
+ static void
+ omp_maybe_record_variant_base (cp_parser* parser, tree decl)
+ {
+   if (vec_safe_length (parser->omp_begin_declare_variant_map))
+     {
+       unsigned int i;
+       omp_begin_declare_variant_map_entry *e;
+       FOR_EACH_VEC_ELT (*parser->omp_begin_declare_variant_map, i, e)
+ 	{
+ 	  if (DECL_NAME (decl) == e->id
+ 	      && omp_finish_variant_function (parser, e->variant, e->id,
+ 					      e->ctx, false, false))
+ 	    {
+ 	      parser->omp_begin_declare_variant_map->unordered_remove (i);
+ 	      break;
+ 	    }
+ 	}
+     }
+ }
+ 
  /* Declarators [gram.dcl.decl] */
  
  /* Parse an init-declarator.
*************** cp_parser_init_declarator (cp_parser* pa
*** 24726,24731 ****
--- 25071,25097 ----
  	  /* This is a function-definition.  */
  	  *function_definition_p = true;
  
+ 	  /* If we're in an OpenMP "begin declare variant" block, the
+ 	     name in the declarator refers to the base function.  We need
+ 	     to save that and modify the declarator to have the mangled
+ 	     name for the variant function instead.  */
+ 	  tree dv_base = NULL_TREE;
+ 	  tree dv_ctx = NULL_TREE;
+ 	  vec<cp_omp_declare_variant_attr, va_gc> *dv_state
+ 	    = scope_chain->omp_declare_variant_attribute;
+ 
+ 	  if (!vec_safe_is_empty (dv_state))
+ 	    {
+ 	      cp_omp_declare_variant_attr a = dv_state->last ();
+ 	      dv_ctx = copy_list (a.selector);
+ 	      dv_base = omp_start_variant_function (declarator, dv_ctx);
+ 	      if (dv_base == NULL_TREE)
+ 		{
+ 		  cp_parser_skip_to_end_of_statement (parser);
+ 		  return error_mark_node;
+ 		}
+ 	    }
+ 
  	  /* Parse the function definition.  */
  	  if (member_p)
  	    decl = cp_parser_save_member_function_body (parser,
*************** cp_parser_init_declarator (cp_parser* pa
*** 24744,24749 ****
--- 25110,25129 ----
  		= func_brace_location;
  	    }
  
+ 	  /* If this function was in a "begin declare variant" block,
+ 	     store the pointer back to the base function and fix up
+ 	     the attributes for the middle end.  Do it now if the base
+ 	     function has already been declared, otherwise save the info.  */
+ 	  if (dv_base && decl != error_mark_node
+ 	      && !omp_finish_variant_function (parser, decl, dv_base, dv_ctx,
+ 					       false, false))
+ 	    {
+ 	      omp_begin_declare_variant_map_entry e = { decl, dv_base, dv_ctx };
+ 	      vec_safe_push (parser->omp_begin_declare_variant_map, e);
+ 	    }
+ 	  else if (flag_openmp && !member_p)
+ 	    omp_maybe_record_variant_base (parser, decl);
+ 
  	  return decl;
  	}
      }
*************** cp_parser_init_declarator (cp_parser* pa
*** 24821,24826 ****
--- 25201,25227 ----
  	    is_initialized = SD_DEFAULTED;
  	  else if (t2->keyword == RID_DELETE)
  	    is_initialized = SD_DELETED;
+ 	  if (!vec_safe_is_empty (scope_chain->omp_declare_variant_attribute))
+ 	    {
+ 	      /* We're in a "begin declare variant" construct.  The parser
+ 		 doesn't go through the normal function definition path for
+ 		 these and hence doesn't invoke omp_finish_variant_function
+ 		 where these errors would otherwise be caught.  */
+ 	      if (is_initialized == SD_DEFAULTED)
+ 		{
+ 		  error_at (declarator->init_loc,
+ 			    "declare variant directives are not allowed on "
+ 			    "defaulted functions");
+ 		  return error_mark_node;
+ 		}
+ 	      else if (is_initialized == SD_DELETED)
+ 		{
+ 		  error_at (declarator->init_loc,
+ 			    "declare variant directives are not allowed on "
+ 			    "deleted functions");
+ 		  return error_mark_node;
+ 		}
+ 	    }
  	}
      }
    else
*************** cp_parser_init_declarator (cp_parser* pa
*** 25070,25075 ****
--- 25471,25489 ----
        && type_uses_auto (decl_specifiers->type))
      *auto_result = strip_declarator_types (TREE_TYPE (decl), declarator);
  
+   /* Check whether a function declaration might be a base function for a
+      variant previously declared in an OpenMP "begin declare variant" block
+      that has not been recorded yet.  Class members are ignored here because
+      they are all processed after parsing the whole class.
+      FIXME: We store these variants in a vector and use a linear search here.
+      We don't expect gazillions of these variant functions to be provided
+      without an earlier declaration, but if it's problematical we could
+      use a hash table instead.  */
+   if (flag_openmp
+       && !member_p
+       && function_declarator_p (declarator))
+     omp_maybe_record_variant_base (parser, decl);
+ 
    return decl;
  }
  
*************** cp_parser_class_specifier (cp_parser* pa
*** 28321,28326 ****
--- 28735,28745 ----
    tree saved_ccr = current_class_ref;
    current_class_ptr = NULL_TREE;
    current_class_ref = NULL_TREE;
+   /* Set up for deferred lookup of "omp begin declare variant" base functions
+      in the class.  */
+   vec<omp_begin_declare_variant_map_entry, va_gc> *save_variant_map
+     = parser->omp_begin_declare_variant_map;
+   parser->omp_begin_declare_variant_map = NULL;
  
    /* Start the class.  */
    if (nested_name_specifier_p)
*************** cp_parser_class_specifier (cp_parser* pa
*** 28342,28347 ****
--- 28761,28779 ----
      /* Parse the member-specification.  */
      cp_parser_member_specification_opt (parser);
  
+   /* Register any "begin declare variant" functions in this class, since
+      references to the base function can only be resolved after the
+      entire class is seen.  */
+   if (vec_safe_length (parser->omp_begin_declare_variant_map))
+     {
+       unsigned int i;
+       omp_begin_declare_variant_map_entry *e;
+       FOR_EACH_VEC_ELT (*parser->omp_begin_declare_variant_map, i, e)
+ 	omp_finish_variant_function (parser, e->variant, e->id, e->ctx,
+ 				     true, true);
+     }
+   parser->omp_begin_declare_variant_map = save_variant_map;
+ 
    /* Look for the trailing `}'.  */
    closing_brace = braces.require_close (parser);
    /* Look for trailing attributes to apply to this class.  */
*************** cp_parser_member_declaration (cp_parser*
*** 30065,30070 ****
--- 30497,30524 ----
  		  if (initializer && initializer_token_start)
  		    error_at (initializer_token_start->location,
  			      "pure-specifier on function-definition");
+ 
+ 		  /* If we're in an OpenMP "begin declare variant" block,
+ 		     the name in the declarator refers to the base function.
+ 		     We need to save that and modify the declarator to have
+ 		     the mangled name for the variant function instead.  */
+ 		  tree dv_base = NULL_TREE;
+ 		  tree dv_ctx = NULL_TREE;
+ 		  vec<cp_omp_declare_variant_attr, va_gc> *dv_state
+ 		    = scope_chain->omp_declare_variant_attribute;
+ 		  if (!vec_safe_is_empty (dv_state))
+ 		    {
+ 		      cp_omp_declare_variant_attr a = dv_state->last ();
+ 		      dv_ctx = copy_list (a.selector);
+ 		      dv_base = omp_start_variant_function (declarator,
+ 							    dv_ctx);
+ 		      if (dv_base == NULL_TREE)
+ 			{
+ 			  cp_parser_skip_to_end_of_statement (parser);
+ 			  goto out;
+ 			}
+ 		    }
+ 
  		  decl = cp_parser_save_member_function_body (parser,
  							      &decl_specifiers,
  							      declarator,
*************** cp_parser_member_declaration (cp_parser*
*** 30075,30080 ****
--- 30529,30548 ----
  		  /* If the member was not a friend, declare it here.  */
  		  if (!friend_p)
  		    finish_member_declaration (decl);
+ 
+ 		  /* If this function was in a "begin declare variant"
+ 		     block, record the information we need to find the
+ 		     base function and fix it up later.  At this point in
+ 		     parsing, we may not have seen the base function yet
+ 		     so we defer looking it up and registering the variant
+ 		     until the class is complete.  */
+ 		  if (dv_base && decl != error_mark_node)
+ 		    {
+ 		      omp_begin_declare_variant_map_entry e
+ 			= { decl, dv_base, dv_ctx };
+ 		      vec_safe_push (parser->omp_begin_declare_variant_map, e);
+ 		    }
+ 
  		  /* Peek at the next token.  */
  		  token = cp_lexer_peek_token (parser->lexer);
  		  /* If the next token is a semicolon, consume it.  */
*************** cp_finish_omp_declare_variant (cp_parser
*** 51561,51566 ****
--- 52029,52048 ----
  	    goto fail;
  	  ctx = omp_check_context_selector (match_loc, ctx,
  					    OMP_CTX_DECLARE_VARIANT);
+ 
+ 	  /* The OpenMP spec says the merging rules for enclosing
+ 	     "begin declare variant" contexts apply to "declare variant
+ 	     directives" -- the term it uses to refer to both directive
+ 	     forms.  */
+ 	  if (ctx != error_mark_node
+ 	      && !vec_safe_is_empty (scope_chain->omp_declare_variant_attribute))
+ 	    {
+ 	      cp_omp_declare_variant_attr a
+ 		= scope_chain->omp_declare_variant_attribute->last ();
+ 	      tree outer_ctx = a.selector;
+ 	      ctx = omp_merge_context_selectors (match_loc, outer_ctx, ctx,
+ 						 OMP_CTX_DECLARE_VARIANT);
+ 	    }
  	  if (ctx != error_mark_node && variant != error_mark_node)
  	    {
  	      tree match_loc_node
*************** cp_parser_omp_declare_target (cp_parser
*** 52222,52228 ****
  /* OpenMP 5.1
     # pragma omp begin assumes clauses[optseq] new-line
  
!    # pragma omp begin declare target clauses[optseq] new-line  */
  
  #define OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK			\
  	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE_TYPE)	\
--- 52704,52712 ----
  /* OpenMP 5.1
     # pragma omp begin assumes clauses[optseq] new-line
  
!    # pragma omp begin declare target clauses[optseq] new-line
! 
!    # pragma omp begin declare variant match (context-selector) new-line  */
  
  #define OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK			\
  	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE_TYPE)	\
*************** cp_parser_omp_begin (cp_parser *parser,
*** 52268,52276 ****
  	    = { in_omp_attribute_pragma, device_type, indirect };
  	  vec_safe_push (scope_chain->omp_declare_target_attribute, a);
  	}
        else
  	{
! 	  cp_parser_error (parser, "expected %<target%>");
  	  cp_parser_skip_to_pragma_eol (parser, pragma_tok);
  	}
      }
--- 52752,52826 ----
  	    = { in_omp_attribute_pragma, device_type, indirect };
  	  vec_safe_push (scope_chain->omp_declare_target_attribute, a);
  	}
+       else if (strcmp (p, "variant") == 0)
+ 	{
+ 	  cp_lexer_consume_token (parser->lexer);
+ 	  const char *clause = "";
+ 	  matching_parens parens;
+ 	  location_t match_loc = cp_lexer_peek_token (parser->lexer)->location;
+ 	  if (cp_lexer_next_token_is (parser->lexer, CPP_COMMA))
+ 	    cp_lexer_consume_token (parser->lexer);
+ 	  if (cp_lexer_next_token_is (parser->lexer, CPP_NAME))
+ 	    {
+ 	      tree id = cp_lexer_peek_token (parser->lexer)->u.value;
+ 	      clause = IDENTIFIER_POINTER (id);
+ 	    }
+ 	  if (strcmp (clause, "match") != 0)
+ 	    {
+ 	      cp_parser_error (parser, "expected %<match%>");
+ 	      cp_parser_skip_to_pragma_eol (parser, pragma_tok);
+ 	      return;
+ 	    }
+ 
+ 	  cp_lexer_consume_token (parser->lexer);
+ 
+ 	  if (!parens.require_open (parser))
+ 	    {
+ 	      cp_parser_skip_to_pragma_eol (parser, pragma_tok);
+ 	      return;
+ 	    }
+ 
+ 	  tree ctx = cp_parser_omp_context_selector_specification (parser,
+ 								   true);
+ 	  if (ctx != error_mark_node)
+ 	    ctx = omp_check_context_selector (match_loc, ctx,
+ 					      OMP_CTX_BEGIN_DECLARE_VARIANT);
+ 
+ 	  if (ctx != error_mark_node
+ 	      && !vec_safe_is_empty (scope_chain->omp_declare_variant_attribute))
+ 	    {
+ 	      cp_omp_declare_variant_attr a
+ 		= scope_chain->omp_declare_variant_attribute->last ();
+ 	      tree outer_ctx = a.selector;
+ 	      ctx = omp_merge_context_selectors (match_loc, outer_ctx, ctx,
+ 						 OMP_CTX_BEGIN_DECLARE_VARIANT);
+ 	    }
+ 
+ 	  if (ctx == error_mark_node
+ 	      || !omp_context_selector_matches (ctx, NULL_TREE, false, true))
+ 	    {
+ 	      /* The context is either invalid or cannot possibly match.
+ 		 In the latter case the spec says all code in the begin/end
+ 		 sequence will be elided.  In the former case we'll get bogus
+ 		 errors from trying to parse it without a valid context to
+ 		 use for name-mangling, so elide that too.  */
+ 	      cp_parser_skip_to_pragma_eol (parser, pragma_tok);
+ 	      cp_parser_skip_to_pragma_omp_end_declare_variant (parser);
+ 	      return;
+ 	    }
+ 	  else
+ 	    {
+ 	      cp_omp_declare_variant_attr a
+ 		= { parser->lexer->in_omp_attribute_pragma, ctx };
+ 	      vec_safe_push (scope_chain->omp_declare_variant_attribute, a);
+ 	    }
+ 
+ 	  parens.require_close (parser);
+ 	  cp_parser_skip_to_pragma_eol (parser, pragma_tok);
+ 	}
        else
  	{
! 	  cp_parser_error (parser, "expected %<target%> or %<variant%>");
  	  cp_parser_skip_to_pragma_eol (parser, pragma_tok);
  	}
      }
*************** cp_parser_omp_begin (cp_parser *parser,
*** 52283,52289 ****
      }
    else
      {
!       cp_parser_error (parser, "expected %<declare target%> or %<assumes%>");
        cp_parser_skip_to_pragma_eol (parser, pragma_tok);
      }
  }
--- 52833,52840 ----
      }
    else
      {
!       cp_parser_error (parser, "expected %<declare target%>, "
! 		       "%<declare variant%>, or %<assumes%>");
        cp_parser_skip_to_pragma_eol (parser, pragma_tok);
      }
  }
*************** cp_parser_omp_begin (cp_parser *parser,
*** 52292,52298 ****
     # pragma omp end declare target new-line
  
     OpenMP 5.1:
!    # pragma omp end assumes new-line  */
  
  static void
  cp_parser_omp_end (cp_parser *parser, cp_token *pragma_tok)
--- 52843,52850 ----
     # pragma omp end declare target new-line
  
     OpenMP 5.1:
!    # pragma omp end assumes new-line
!    # pragma omp end declare variant new-line  */
  
  static void
  cp_parser_omp_end (cp_parser *parser, cp_token *pragma_tok)
*************** cp_parser_omp_end (cp_parser *parser, cp
*** 52314,52354 ****
  	  p = IDENTIFIER_POINTER (id);
  	}
        if (strcmp (p, "target") == 0)
- 	cp_lexer_consume_token (parser->lexer);
-       else
  	{
! 	  cp_parser_error (parser, "expected %<target%>");
! 	  cp_parser_skip_to_pragma_eol (parser, pragma_tok);
! 	  return;
  	}
!       cp_parser_require_pragma_eol (parser, pragma_tok);
!       if (!vec_safe_length (scope_chain->omp_declare_target_attribute))
! 	error_at (pragma_tok->location,
! 		  "%<#pragma omp end declare target%> without corresponding "
! 		  "%<#pragma omp declare target%> or "
! 		  "%<#pragma omp begin declare target%>");
!       else
  	{
! 	  cp_omp_declare_target_attr
! 	    a = scope_chain->omp_declare_target_attribute->pop ();
! 	  if (a.attr_syntax != in_omp_attribute_pragma)
  	    {
! 	      if (a.attr_syntax)
! 		error_at (pragma_tok->location,
! 			  "%qs in attribute syntax terminated "
! 			  "with %qs in pragma syntax",
! 			  a.device_type >= 0 ? "begin declare target"
! 					     : "declare target",
! 			  "end declare target");
! 	      else
! 		error_at (pragma_tok->location,
! 			  "%qs in pragma syntax terminated "
! 			  "with %qs in attribute syntax",
! 			  a.device_type >= 0 ? "begin declare target"
! 					     : "declare target",
! 			  "end declare target");
  	    }
  	}
      }
    else if (strcmp (p, "assumes") == 0)
      {
--- 52866,52935 ----
  	  p = IDENTIFIER_POINTER (id);
  	}
        if (strcmp (p, "target") == 0)
  	{
! 	  cp_lexer_consume_token (parser->lexer);
! 	  cp_parser_require_pragma_eol (parser, pragma_tok);
! 	  if (!vec_safe_length (scope_chain->omp_declare_target_attribute))
! 	    error_at (pragma_tok->location,
! 		      "%<#pragma omp end declare target%> without "
! 		      "corresponding %<#pragma omp declare target%> or "
! 		      "%<#pragma omp begin declare target%>");
! 	  else
! 	    {
! 	      cp_omp_declare_target_attr
! 		a = scope_chain->omp_declare_target_attribute->pop ();
! 	      if (a.attr_syntax != in_omp_attribute_pragma)
! 		{
! 		  if (a.attr_syntax)
! 		    error_at (pragma_tok->location,
! 			      "%qs in attribute syntax terminated "
! 			      "with %qs in pragma syntax",
! 			      a.device_type >= 0 ? "begin declare target"
! 						 : "declare target",
! 			      "end declare target");
! 		  else
! 		    error_at (pragma_tok->location,
! 			      "%qs in pragma syntax terminated "
! 			      "with %qs in attribute syntax",
! 			      a.device_type >= 0 ? "begin declare target"
! 						 : "declare target",
! 			      "end declare target");
! 		}
! 	    }
  	}
!       else if (strcmp (p, "variant") == 0)
  	{
! 	  cp_lexer_consume_token (parser->lexer);
! 	  cp_parser_require_pragma_eol (parser, pragma_tok);
! 	  if (!vec_safe_length (scope_chain->omp_declare_variant_attribute))
! 	    error_at (pragma_tok->location,
! 		      "%<#pragma omp end declare variant%> without "
! 		      "corresponding %<#pragma omp begin declare variant%>");
! 	  else
  	    {
! 	      cp_omp_declare_variant_attr
! 		a = scope_chain->omp_declare_variant_attribute->pop ();
! 	      if (a.attr_syntax != in_omp_attribute_pragma)
! 		{
! 		  if (a.attr_syntax)
! 		    error_at (pragma_tok->location,
! 			      "%<begin declare variant%> in attribute syntax "
! 			      "terminated with %<end declare variant%> in "
! 			      "pragma syntax");
! 		  else
! 		    error_at (pragma_tok->location,
! 			      "%<begin declare variant%> in pragma syntax "
! 			      "terminated with %<end declare variant%> in "
! 			      "attribute syntax");
! 		}
  	    }
  	}
+       else
+ 	{
+ 	  cp_parser_error (parser, "expected %<target%>");
+ 	  cp_parser_skip_to_pragma_eol (parser, pragma_tok);
+ 	  return;
+ 	}
      }
    else if (strcmp (p, "assumes") == 0)
      {
diff -Nrcpad gcc-16-20251116/gcc/cp/parser.h gcc-16-20251123/gcc/cp/parser.h
*** gcc-16-20251116/gcc/cp/parser.h	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/parser.h	Sun Nov 23 22:32:08 2025
*************** struct cp_oacc_routine_data : cp_omp_dec
*** 233,238 ****
--- 233,245 ----
    tree clauses;
  };
  
+ /* Helper data structure for parsing #pragma omp begin declare variant.  */
+ struct GTY(()) omp_begin_declare_variant_map_entry {
+   tree variant;		/* The variant decl.  */
+   tree id;		/* Name of base function.  */
+   tree ctx;		/* The context selector associated with the variant.  */
+ };
+ 
  /* The cp_parser structure represents the C++ parser.  */
  
  struct GTY(()) cp_parser {
*************** struct GTY(()) cp_parser {
*** 458,463 ****
--- 465,475 ----
       outside that file.  */
    struct omp_metadirective_parse_data * GTY((skip))
      omp_metadirective_state;
+ 
+   /* Recorded information about functions in OpenMP "begin declare variant"
+      constructs that still need to be registered with their base functions.  */
+   vec<omp_begin_declare_variant_map_entry, va_gc> *
+     omp_begin_declare_variant_map;
  };
  
  /* In parser.cc  */
diff -Nrcpad gcc-16-20251116/gcc/cp/pt.cc gcc-16-20251123/gcc/cp/pt.cc
*** gcc-16-20251116/gcc/cp/pt.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/pt.cc	Sun Nov 23 22:32:08 2025
*************** tsubst_baselink (tree baselink, tree obj
*** 17595,17600 ****
--- 17595,17602 ----
        if (template_args)
  	template_args = tsubst_template_args (template_args, args,
  					      complain, in_decl);
+       if (template_args == error_mark_node)
+ 	return error_mark_node;
      }
  
    tree binfo_type = BINFO_TYPE (BASELINK_BINFO (baselink));
*************** tsubst_baselink (tree baselink, tree obj
*** 17625,17643 ****
        bool maybe_incomplete = BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P (baselink);
        baselink = lookup_fnfields (qualifying_scope, name, /*protect=*/1,
  				  complain);
-       if (maybe_incomplete)
- 	{
- 	  /* Filter out from the new lookup set those functions which didn't
- 	     appear in the original lookup set (in a less specialized form).
- 	     This is needed to preserve the consistency of member lookup
- 	     performed in an incomplete-class context, within which
- 	     later-declared members ought to remain invisible.  */
- 	  BASELINK_FUNCTIONS (baselink)
- 	    = filter_memfn_lookup (fns, BASELINK_FUNCTIONS (baselink),
- 				   binfo_type);
- 	  BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P (baselink) = true;
- 	}
- 
        if (!baselink)
  	{
  	  if (complain & tf_error)
--- 17627,17632 ----
*************** tsubst_baselink (tree baselink, tree obj
*** 17655,17660 ****
--- 17644,17662 ----
  	  return error_mark_node;
  	}
  
+       if (maybe_incomplete)
+ 	{
+ 	  /* Filter out from the new lookup set those functions which didn't
+ 	     appear in the original lookup set (in a less specialized form).
+ 	     This is needed to preserve the consistency of member lookup
+ 	     performed in an incomplete-class context, within which
+ 	     later-declared members ought to remain invisible.  */
+ 	  BASELINK_FUNCTIONS (baselink)
+ 	    = filter_memfn_lookup (fns, BASELINK_FUNCTIONS (baselink),
+ 				   binfo_type);
+ 	  BASELINK_FUNCTIONS_MAYBE_INCOMPLETE_P (baselink) = true;
+ 	}
+ 
        fns = BASELINK_FUNCTIONS (baselink);
      }
    else
*************** dependent_scope_p (tree scope)
*** 29030,29036 ****
  bool
  dependentish_scope_p (tree scope)
  {
!   return dependent_scope_p (scope) || any_dependent_bases_p (scope);
  }
  
  /* T is a SCOPE_REF.  Return whether it represents a non-static member of
--- 29032,29047 ----
  bool
  dependentish_scope_p (tree scope)
  {
!   return dependent_scope_p (scope) || any_dependent_bases_p (scope)
!     /* A noexcept-spec is a complete-class context, so this should never hold.
!        But since we don't implement deferred noexcept-spec parsing of a friend
!        declaration (PR114764) we compensate by treating the current
!        instantiation as dependent to avoid bogus name lookup failures in this
!        case (PR122668).  */
!     || (cp_noexcept_operand
! 	&& CLASS_TYPE_P (scope)
! 	&& TYPE_BEING_DEFINED (scope)
! 	&& dependent_type_p (scope));
  }
  
  /* T is a SCOPE_REF.  Return whether it represents a non-static member of
*************** finish_expansion_stmt (tree expansion_st
*** 32889,32894 ****
--- 32900,32907 ----
  	type = tsubst (type, args, complain | tf_tst_ok, in_decl);
        tree decl = build_decl (loc, VAR_DECL, DECL_NAME (range_decl), type);
        DECL_ATTRIBUTES (decl) = DECL_ATTRIBUTES (range_decl);
+       TREE_USED (decl) |= TREE_USED (range_decl);
+       DECL_READ_P (decl) |= DECL_READ_P (range_decl);
        if (args)
  	apply_late_template_attributes (&decl, DECL_ATTRIBUTES (decl),
  					/*flags=*/0, args, complain,
*************** finish_expansion_stmt (tree expansion_st
*** 32947,32952 ****
--- 32960,32967 ----
  	      DECL_ARTIFICIAL (this_decl) = 1;
  	      DECL_ATTRIBUTES (this_decl)
  		= DECL_ATTRIBUTES (TREE_VEC_ELT (v, i + 1));
+ 	      TREE_USED (this_decl) |= TREE_USED (TREE_VEC_ELT (v, i + 1));
+ 	      DECL_READ_P (this_decl) |= DECL_READ_P (TREE_VEC_ELT (v, i + 1));
  	      if (DECL_PACK_P (TREE_VEC_ELT (v, i + 1)))
  		{
  		  tree dtype = cxx_make_type (DECLTYPE_TYPE);
diff -Nrcpad gcc-16-20251116/gcc/cp/semantics.cc gcc-16-20251123/gcc/cp/semantics.cc
*** gcc-16-20251116/gcc/cp/semantics.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/semantics.cc	Sun Nov 23 22:32:08 2025
*************** finish_translation_unit (void)
*** 4051,4056 ****
--- 4051,4063 ----
  	       "#pragma omp end declare target");
        vec_safe_truncate (scope_chain->omp_declare_target_attribute, 0);
      }
+   if (vec_safe_length (scope_chain->omp_declare_variant_attribute))
+     {
+       if (!errorcount)
+ 	error ("%<omp begin declare variant%> without corresponding "
+ 	       "%<omp end declare variant%>");
+       vec_safe_truncate (scope_chain->omp_declare_variant_attribute, 0);
+     }
    if (vec_safe_length (scope_chain->omp_begin_assumes))
      {
        if (!errorcount)
*************** classtype_has_nothrow_assign_or_copy_p (
*** 13081,13106 ****
    return saw_copy;
  }
  
! /* Return true if DERIVED is pointer interconvertible base of BASE.  */
  
! static bool
! pointer_interconvertible_base_of_p (tree base, tree derived)
  {
    if (base == error_mark_node || derived == error_mark_node)
      return false;
    base = TYPE_MAIN_VARIANT (base);
    derived = TYPE_MAIN_VARIANT (derived);
!   if (!NON_UNION_CLASS_TYPE_P (base)
!       || !NON_UNION_CLASS_TYPE_P (derived))
!     return false;
  
    if (same_type_p (base, derived))
      return true;
  
    if (!std_layout_type_p (derived))
!     return false;
  
!   return uniquely_derived_from_p (base, derived);
  }
  
  /* Helper function for fold_builtin_is_pointer_inverconvertible_with_class,
--- 13088,13144 ----
    return saw_copy;
  }
  
! /* Return true if BASE is a pointer-interconvertible base of DERIVED.  */
  
! bool
! pointer_interconvertible_base_of_p (tree base, tree derived,
! 				    bool explain/*=false*/)
  {
    if (base == error_mark_node || derived == error_mark_node)
      return false;
+ 
    base = TYPE_MAIN_VARIANT (base);
    derived = TYPE_MAIN_VARIANT (derived);
!   if (!NON_UNION_CLASS_TYPE_P (base))
!     {
!       if (explain)
! 	inform (location_of (base),
! 		"%qT is not a non-union class type", base);
!       return false;
!     }
!   if (!NON_UNION_CLASS_TYPE_P (derived))
!     {
!       if (explain)
! 	inform (location_of (derived),
! 		"%qT is not a non-union class type", derived);
!       return false;
!     }
  
    if (same_type_p (base, derived))
      return true;
  
    if (!std_layout_type_p (derived))
!     {
!       if (explain)
! 	inform (location_of (derived),
! 		"%qT is not a standard-layout type", derived);
!       return false;
!     }
  
!   if (!uniquely_derived_from_p (base, derived))
!     {
!       if (explain)
! 	{
! 	  /* An ambiguous base should already be impossible due to
! 	     the std_layout_type_p check.  */
! 	  gcc_checking_assert (!DERIVED_FROM_P (base, derived));
! 	  inform (location_of (derived),
! 		  "%qT is not a base of %qT", base, derived);
! 	}
!       return false;
!     }
! 
!   return true;
  }
  
  /* Helper function for fold_builtin_is_pointer_inverconvertible_with_class,
diff -Nrcpad gcc-16-20251116/gcc/cp/tree.cc gcc-16-20251123/gcc/cp/tree.cc
*** gcc-16-20251116/gcc/cp/tree.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/tree.cc	Sun Nov 23 22:32:08 2025
*************** std_layout_type_p (const_tree t)
*** 4898,4919 ****
      return scalarish_type_p (t);
  }
  
! static bool record_has_unique_obj_representations (const_tree, const_tree);
  
  /* Returns true iff T satisfies std::has_unique_object_representations<T>,
!    as defined in [meta.unary.prop].  */
  
  bool
! type_has_unique_obj_representations (const_tree t)
  {
    bool ret;
  
    t = strip_array_types (CONST_CAST_TREE (t));
  
!   if (!trivially_copyable_p (t))
      return false;
  
!   if (CLASS_TYPE_P (t) && CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET (t))
      return CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS (t);
  
    switch (TREE_CODE (t))
--- 4898,4932 ----
      return scalarish_type_p (t);
  }
  
! static bool record_has_unique_obj_representations (const_tree, const_tree, bool);
  
  /* Returns true iff T satisfies std::has_unique_object_representations<T>,
!    as defined in [meta.unary.prop].  If EXPLAIN is true, explain why not.  */
  
  bool
! type_has_unique_obj_representations (const_tree t, bool explain/*=false*/)
  {
    bool ret;
  
    t = strip_array_types (CONST_CAST_TREE (t));
  
!   if (t == error_mark_node)
      return false;
  
!   location_t loc = input_location;
!   if (tree m = TYPE_MAIN_DECL (t))
!     loc = DECL_SOURCE_LOCATION (m);
! 
!   if (!trivially_copyable_p (t))
!     {
!       if (explain)
! 	inform (loc, "%qT is not trivially copyable", t);
!       return false;
!     }
! 
!   if (CLASS_TYPE_P (t)
!       && CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET (t)
!       && !explain)
      return CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS (t);
  
    switch (TREE_CODE (t))
*************** type_has_unique_obj_representations (con
*** 4931,4946 ****
        return true;
  
      case ENUMERAL_TYPE:
!       return type_has_unique_obj_representations (ENUM_UNDERLYING_TYPE (t));
  
      case REAL_TYPE:
        /* XFmode certainly contains padding on x86, which the CPU doesn't store
  	 when storing long double values, so for that we have to return false.
  	 Other kinds of floating point values are questionable due to +.0/-.0
  	 and NaNs, let's play safe for now.  */
        return false;
  
      case FIXED_POINT_TYPE:
        return false;
  
      case OFFSET_TYPE:
--- 4944,4964 ----
        return true;
  
      case ENUMERAL_TYPE:
!       return type_has_unique_obj_representations (ENUM_UNDERLYING_TYPE (t),
! 						  explain);
  
      case REAL_TYPE:
        /* XFmode certainly contains padding on x86, which the CPU doesn't store
  	 when storing long double values, so for that we have to return false.
  	 Other kinds of floating point values are questionable due to +.0/-.0
  	 and NaNs, let's play safe for now.  */
+       if (explain)
+ 	inform (loc, "%qT is a floating-point type", t);
        return false;
  
      case FIXED_POINT_TYPE:
+       if (explain)
+ 	inform (loc, "%qT is a fixed-point type", t);
        return false;
  
      case OFFSET_TYPE:
*************** type_has_unique_obj_representations (con
*** 4948,4957 ****
  
      case COMPLEX_TYPE:
      case VECTOR_TYPE:
!       return type_has_unique_obj_representations (TREE_TYPE (t));
  
      case RECORD_TYPE:
!       ret = record_has_unique_obj_representations (t, TYPE_SIZE (t));
        if (CLASS_TYPE_P (t))
  	{
  	  CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET (t) = 1;
--- 4966,4975 ----
  
      case COMPLEX_TYPE:
      case VECTOR_TYPE:
!       return type_has_unique_obj_representations (TREE_TYPE (t), explain);
  
      case RECORD_TYPE:
!       ret = record_has_unique_obj_representations (t, TYPE_SIZE (t), explain);
        if (CLASS_TYPE_P (t))
  	{
  	  CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET (t) = 1;
*************** type_has_unique_obj_representations (con
*** 4967,4981 ****
  	if (TREE_CODE (field) == FIELD_DECL)
  	  {
  	    any_fields = true;
! 	    if (!type_has_unique_obj_representations (TREE_TYPE (field))
! 		|| simple_cst_equal (DECL_SIZE (field), TYPE_SIZE (t)) != 1)
  	      {
  		ret = false;
  		break;
  	      }
  	  }
        if (!any_fields && !integer_zerop (TYPE_SIZE (t)))
! 	ret = false;
        if (CLASS_TYPE_P (t))
  	{
  	  CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET (t) = 1;
--- 4985,5015 ----
  	if (TREE_CODE (field) == FIELD_DECL)
  	  {
  	    any_fields = true;
! 	    if (simple_cst_equal (DECL_SIZE (field), TYPE_SIZE (t)) != 1)
  	      {
+ 		if (explain)
+ 		  inform (DECL_SOURCE_LOCATION (field),
+ 			  "%qD does not fill all bits of %q#T", field, t);
+ 		ret = false;
+ 		break;
+ 	      }
+ 	    if (!type_has_unique_obj_representations (TREE_TYPE (field)))
+ 	      {
+ 		if (explain)
+ 		  inform (DECL_SOURCE_LOCATION (field),
+ 			  "%qD has type %qT that does not have "
+ 			  "unique object representations",
+ 			  field, TREE_TYPE (field));
  		ret = false;
  		break;
  	      }
  	  }
        if (!any_fields && !integer_zerop (TYPE_SIZE (t)))
! 	{
! 	  if (explain)
! 	    inform (loc, "%q#T has no data fields", t);
! 	  ret = false;
! 	}
        if (CLASS_TYPE_P (t))
  	{
  	  CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET (t) = 1;
*************** type_has_unique_obj_representations (con
*** 4984,4992 ****
        return ret;
  
      case NULLPTR_TYPE:
!       return false;
! 
!     case ERROR_MARK:
        return false;
  
      default:
--- 5018,5025 ----
        return ret;
  
      case NULLPTR_TYPE:
!       if (explain)
! 	inform (loc, "%<std::nullptr_t%> has padding bits and no value bits");
        return false;
  
      default:
*************** type_has_unique_obj_representations (con
*** 4997,5003 ****
  /* Helper function for type_has_unique_obj_representations.  */
  
  static bool
! record_has_unique_obj_representations (const_tree t, const_tree sz)
  {
    for (tree field = TYPE_FIELDS (t); field; field = DECL_CHAIN (field))
      if (TREE_CODE (field) != FIELD_DECL)
--- 5030,5037 ----
  /* Helper function for type_has_unique_obj_representations.  */
  
  static bool
! record_has_unique_obj_representations (const_tree t, const_tree sz,
! 				       bool explain)
  {
    for (tree field = TYPE_FIELDS (t); field; field = DECL_CHAIN (field))
      if (TREE_CODE (field) != FIELD_DECL)
*************** record_has_unique_obj_representations (c
*** 5009,5043 ****
      else if (DECL_FIELD_IS_BASE (field))
        {
  	if (!record_has_unique_obj_representations (TREE_TYPE (field),
! 						    DECL_SIZE (field)))
! 	  return false;
        }
      else if (DECL_C_BIT_FIELD (field) && !DECL_UNNAMED_BIT_FIELD (field))
        {
  	tree btype = DECL_BIT_FIELD_TYPE (field);
  	if (!type_has_unique_obj_representations (btype))
! 	  return false;
        }
      else if (!type_has_unique_obj_representations (TREE_TYPE (field)))
!       return false;
  
    offset_int cur = 0;
    for (tree field = TYPE_FIELDS (t); field; field = DECL_CHAIN (field))
!     if (TREE_CODE (field) == FIELD_DECL && !DECL_UNNAMED_BIT_FIELD (field))
        {
  	offset_int fld = wi::to_offset (DECL_FIELD_OFFSET (field));
  	offset_int bitpos = wi::to_offset (DECL_FIELD_BIT_OFFSET (field));
  	fld = fld * BITS_PER_UNIT + bitpos;
  	if (cur != fld)
! 	  return false;
  	if (DECL_SIZE (field))
  	  {
  	    offset_int size = wi::to_offset (DECL_SIZE (field));
  	    cur += size;
  	  }
        }
    if (cur != wi::to_offset (sz))
!     return false;
  
    return true;
  }
--- 5043,5133 ----
      else if (DECL_FIELD_IS_BASE (field))
        {
  	if (!record_has_unique_obj_representations (TREE_TYPE (field),
! 						    DECL_SIZE (field),
! 						    /*explain=*/false))
! 	  {
! 	    if (explain)
! 	      inform (DECL_SOURCE_LOCATION (field),
! 		      "base %qT does not have unique object representations",
! 		      TREE_TYPE (field));
! 	    return false;
! 	  }
        }
      else if (DECL_C_BIT_FIELD (field) && !DECL_UNNAMED_BIT_FIELD (field))
        {
  	tree btype = DECL_BIT_FIELD_TYPE (field);
  	if (!type_has_unique_obj_representations (btype))
! 	  {
! 	    if (explain)
! 	      inform (DECL_SOURCE_LOCATION (field),
! 		      "%qD with type %qT does not have "
! 		      "unique object representations",
! 		      field, btype);
! 	    return false;
! 	  }
        }
      else if (!type_has_unique_obj_representations (TREE_TYPE (field)))
!       {
! 	if (explain)
! 	  inform (DECL_SOURCE_LOCATION (field),
! 		  "%qD with type %qT does not have "
! 		  "unique object representations",
! 		  field, TREE_TYPE (field));
! 	return false;
!       }
  
    offset_int cur = 0;
+   tree last_field = NULL_TREE;
+   tree last_named_field = NULL_TREE;
    for (tree field = TYPE_FIELDS (t); field; field = DECL_CHAIN (field))
!     if (TREE_CODE (field) == FIELD_DECL)
        {
+ 	if (DECL_UNNAMED_BIT_FIELD (field))
+ 	  {
+ 	    last_field = field;
+ 	    continue;
+ 	  }
  	offset_int fld = wi::to_offset (DECL_FIELD_OFFSET (field));
  	offset_int bitpos = wi::to_offset (DECL_FIELD_BIT_OFFSET (field));
  	fld = fld * BITS_PER_UNIT + bitpos;
  	if (cur != fld)
! 	  {
! 	    if (explain)
! 	      {
! 		if (last_named_field)
! 		  inform (DECL_SOURCE_LOCATION (last_named_field),
! 			  "padding occurs between %qD and %qD",
! 			  last_named_field, field);
! 		else if (last_field)
! 		  inform (DECL_SOURCE_LOCATION (last_field),
! 			  "unnamed bit-field inserts padding before %qD",
! 			  field);
! 		else
! 		  inform (DECL_SOURCE_LOCATION (field),
! 			  "padding occurs before %qD", field);
! 	      }
! 	    return false;
! 	  }
  	if (DECL_SIZE (field))
  	  {
  	    offset_int size = wi::to_offset (DECL_SIZE (field));
  	    cur += size;
  	  }
+ 	last_named_field = last_field = field;
        }
    if (cur != wi::to_offset (sz))
!     {
!       if (explain)
! 	{
! 	  if (last_named_field)
! 	    inform (DECL_SOURCE_LOCATION (last_named_field),
! 		    "padding occurs after %qD", last_named_field);
! 	  else
! 	    inform (DECL_SOURCE_LOCATION (t),
! 		    "%qT has padding and no data fields", t);
! 	}
!       return false;
!     }
  
    return true;
  }
diff -Nrcpad gcc-16-20251116/gcc/cp/typeck.cc gcc-16-20251123/gcc/cp/typeck.cc
*** gcc-16-20251116/gcc/cp/typeck.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/cp/typeck.cc	Sun Nov 23 22:32:08 2025
*************** next_common_initial_sequence (tree &memb
*** 1870,1913 ****
  /* Return true if TYPE1 and TYPE2 are layout-compatible types.  */
  
  bool
! layout_compatible_type_p (tree type1, tree type2)
  {
    if (type1 == error_mark_node || type2 == error_mark_node)
      return false;
    if (type1 == type2)
      return true;
-   if (TREE_CODE (type1) != TREE_CODE (type2))
-     return false;
  
    type1 = cp_build_qualified_type (type1, TYPE_UNQUALIFIED);
    type2 = cp_build_qualified_type (type2, TYPE_UNQUALIFIED);
  
!   if (TREE_CODE (type1) == ENUMERAL_TYPE)
!     return (tree_int_cst_equal (TYPE_SIZE (type1), TYPE_SIZE (type2))
! 	    && same_type_p (finish_underlying_type (type1),
! 			    finish_underlying_type (type2)));
  
!   if (CLASS_TYPE_P (type1)
!       && std_layout_type_p (type1)
!       && std_layout_type_p (type2)
!       && tree_int_cst_equal (TYPE_SIZE (type1), TYPE_SIZE (type2)))
      {
        tree field1 = TYPE_FIELDS (type1);
        tree field2 = TYPE_FIELDS (type2);
!       if (TREE_CODE (type1) == RECORD_TYPE)
  	{
! 	  while (1)
  	    {
! 	      if (!next_common_initial_sequence (field1, field2))
! 		return false;
! 	      if (field1 == NULL_TREE)
! 		return true;
! 	      field1 = DECL_CHAIN (field1);
! 	      field2 = DECL_CHAIN (field2);
  	    }
  	}
!       /* Otherwise both types must be union types.
! 	 The standard says:
  	 "Two standard-layout unions are layout-compatible if they have
  	 the same number of non-static data members and corresponding
  	 non-static data members (in any order) have layout-compatible
--- 1870,1972 ----
  /* Return true if TYPE1 and TYPE2 are layout-compatible types.  */
  
  bool
! layout_compatible_type_p (tree type1, tree type2, bool explain/*=false*/)
  {
    if (type1 == error_mark_node || type2 == error_mark_node)
      return false;
    if (type1 == type2)
      return true;
  
    type1 = cp_build_qualified_type (type1, TYPE_UNQUALIFIED);
    type2 = cp_build_qualified_type (type2, TYPE_UNQUALIFIED);
+   if (same_type_p (type1, type2))
+     return true;
  
!   if (TREE_CODE (type1) != TREE_CODE (type2)
!       || (TREE_CODE (type1) != ENUMERAL_TYPE
! 	  && !CLASS_TYPE_P (type1))
!       || (TREE_CODE (type2) != ENUMERAL_TYPE
! 	  && !CLASS_TYPE_P (type2)))
!     {
!       if (explain)
! 	inform (input_location, "%q#T and %q#T are not both the same type, "
! 		"layout-compatible enumerations, or "
! 		"layout-compatible standard-layout class types",
! 		type1, type2);
!       return false;
!     }
  
!   if (!std_layout_type_p (type1))
!     {
!       if (explain)
! 	inform (location_of (type1),
! 		"%qT is not a standard-layout type", type1);
!       return false;
!     }
!   if (!std_layout_type_p (type2))
!     {
!       if (explain)
! 	inform (location_of (type2),
! 		"%qT is not a standard-layout type", type2);
!       return false;
!     }
! 
!   if (TREE_CODE (type1) == ENUMERAL_TYPE)
!     {
!       tree underlying1 = finish_underlying_type (type1);
!       tree underlying2 = finish_underlying_type (type2);
!       if (!same_type_p (underlying1, underlying2))
! 	{
! 	  if (explain)
! 	    {
! 	      inform (location_of (type1),
! 		      "the underlying type of %qT is %qT, but",
! 		      type1, underlying1);
! 	      inform (location_of (type2),
! 		      "the underlying type of %qT is %qT",
! 		      type2, underlying2);
! 	    }
! 	  return false;
! 	}
!     }
!   else if (TREE_CODE (type1) == RECORD_TYPE)
      {
        tree field1 = TYPE_FIELDS (type1);
        tree field2 = TYPE_FIELDS (type2);
!       while (1)
  	{
! 	  if (!next_common_initial_sequence (field1, field2))
  	    {
! 	      if (explain)
! 		{
! 		  if (field1 && field2)
! 		    {
! 		      inform (DECL_SOURCE_LOCATION (field1),
! 			      "%qD and %qD do not correspond",
! 			      field1, field2);
! 		      inform (DECL_SOURCE_LOCATION (field2),
! 			      "%qD declared here", field2);
! 		    }
! 		  else if (field1)
! 		    inform (DECL_SOURCE_LOCATION (field1),
! 			    "%qT has no member corresponding to %qD",
! 			    type2, field1);
! 		  else if (field2)
! 		    inform (DECL_SOURCE_LOCATION (field2),
! 			    "%qT has no member corresponding to %qD",
! 			    type1, field2);
! 		}
! 	      return false;
  	    }
+ 	  if (field1 == NULL_TREE)
+ 	    break;
+ 	  field1 = DECL_CHAIN (field1);
+ 	  field2 = DECL_CHAIN (field2);
  	}
!     }
!   else if (TREE_CODE (type1) == UNION_TYPE)
!     {
!       /* The standard says:
  	 "Two standard-layout unions are layout-compatible if they have
  	 the same number of non-static data members and corresponding
  	 non-static data members (in any order) have layout-compatible
*************** layout_compatible_type_p (tree type1, tr
*** 1915,1920 ****
--- 1974,1981 ----
  	 but the code anticipates that bitfield vs. non-bitfield,
  	 different bitfield widths or presence/absence of
  	 [[no_unique_address]] should be checked as well.  */
+       tree field1 = TYPE_FIELDS (type1);
+       tree field2 = TYPE_FIELDS (type2);
        auto_vec<tree, 16> vec;
        unsigned int count = 0;
        for (; field1; field1 = DECL_CHAIN (field1))
*************** layout_compatible_type_p (tree type1, tr
*** 1923,1933 ****
        for (; field2; field2 = DECL_CHAIN (field2))
  	if (TREE_CODE (field2) == FIELD_DECL)
  	  vec.safe_push (field2);
        /* Discussions on core lean towards treating multiple union fields
  	 of the same type as the same field, so this might need changing
  	 in the future.  */
        if (count != vec.length ())
! 	return false;
        for (field1 = TYPE_FIELDS (type1); field1; field1 = DECL_CHAIN (field1))
  	{
  	  if (TREE_CODE (field1) != FIELD_DECL)
--- 1984,2009 ----
        for (; field2; field2 = DECL_CHAIN (field2))
  	if (TREE_CODE (field2) == FIELD_DECL)
  	  vec.safe_push (field2);
+ 
        /* Discussions on core lean towards treating multiple union fields
  	 of the same type as the same field, so this might need changing
  	 in the future.  */
        if (count != vec.length ())
! 	{
! 	  if (explain)
! 	    {
! 	      inform_n (location_of (type1), count,
! 			"%qT has %u field, but",
! 			"%qT has %u fields, but",
! 			type1, count);
! 	      inform_n (location_of (type2), vec.length (),
! 			"%qT has %u field",
! 			"%qT has %u fields",
! 			type2, vec.length ());
! 	    }
! 	  return false;
! 	}
! 
        for (field1 = TYPE_FIELDS (type1); field1; field1 = DECL_CHAIN (field1))
  	{
  	  if (TREE_CODE (field1) != FIELD_DECL)
*************** layout_compatible_type_p (tree type1, tr
*** 1961,1973 ****
  	      break;
  	    }
  	  if (j == vec.length ())
! 	    return false;
  	  vec.unordered_remove (j);
  	}
-       return true;
      }
  
!   return same_type_p (type1, type2);
  }
  
  /* Returns 1 if TYPE1 is at least as qualified as TYPE2.  */
--- 2037,2059 ----
  	      break;
  	    }
  	  if (j == vec.length ())
! 	    {
! 	      if (explain)
! 		{
! 		  inform (DECL_SOURCE_LOCATION (field1),
! 			  "%qT has no member corresponding to %qD",
! 			  type2, field1);
! 		  inform (location_of (type2), "%qT declared here", type2);
! 		}
! 	      return false;
! 	    }
  	  vec.unordered_remove (j);
  	}
      }
+   else
+     gcc_unreachable ();
  
!   return true;
  }
  
  /* Returns 1 if TYPE1 is at least as qualified as TYPE2.  */
diff -Nrcpad gcc-16-20251116/gcc/diagnostics/sarif-sink.cc gcc-16-20251123/gcc/diagnostics/sarif-sink.cc
*** gcc-16-20251116/gcc/diagnostics/sarif-sink.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/diagnostics/sarif-sink.cc	Sun Nov 23 22:32:08 2025
*************** You should have received a copy of the G
*** 18,23 ****
--- 18,30 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ #ifdef __MINGW32__
+ #include <winsock2.h>
+ #include <afunix.h>
+ #else
+ #include <sys/un.h>
+ #include <sys/socket.h>
+ #endif
  
  #include "config.h"
  #define INCLUDE_LIST
*************** along with GCC; see the file COPYING3.
*** 55,62 ****
  #include "backtrace.h"
  #include "xml.h"
  #include "intl.h"
- #include <sys/un.h>
- #include <sys/socket.h>
  
  namespace diagnostics {
  
--- 62,67 ----
diff -Nrcpad gcc-16-20251116/gcc/doc/extend.texi gcc-16-20251123/gcc/doc/extend.texi
*** gcc-16-20251116/gcc/doc/extend.texi	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/doc/extend.texi	Sun Nov 23 22:32:08 2025
*************** typedef _Complex float __attribute__((mo
*** 299,347 ****
  @node Half-Precision
  @subsection Half-Precision Floating Point
  @cindex half-precision floating point
! @cindex @code{__fp16} data type
! @cindex @code{__Float16} data type
! 
! On ARM and AArch64 targets, GCC supports half-precision (16-bit) floating
! point via the @code{__fp16} type defined in the ARM C Language Extensions.
! On ARM systems, you must enable this type explicitly with the
! @option{-mfp16-format} command-line option in order to use it.
! On x86 targets with SSE2 enabled, GCC supports half-precision (16-bit)
! floating point via the @code{_Float16} type. For C++, x86 provides a builtin
! type named @code{_Float16} which contains same data format as C.
! 
! ARM targets support two incompatible representations for half-precision
! floating-point values.  You must choose one of the representations and
! use it consistently in your program.
! 
! Specifying @option{-mfp16-format=ieee} selects the IEEE 754-2008 format.
! This format can represent normalized values in the range of @math{2^{-14}} to 65504.
! There are 11 bits of significand precision, approximately 3
! decimal digits.
  
! Specifying @option{-mfp16-format=alternative} selects the ARM
! alternative format.  This representation is similar to the IEEE
! format, but does not support infinities or NaNs.  Instead, the range
! of exponents is extended, so that this format can represent normalized
! values in the range of @math{2^{-14}} to 131008.
  
! The GCC port for AArch64 only supports the IEEE 754-2008 format, and does
! not require use of the @option{-mfp16-format} command-line option.
  
! The @code{__fp16} type may only be used as an argument to intrinsics defined
! in @code{<arm_fp16.h>}, or as a storage format.  For purposes of
! arithmetic and other operations, @code{__fp16} values in C or C++
! expressions are automatically promoted to @code{float}.
  
! The ARM target provides hardware support for conversions between
! @code{__fp16} and @code{float} values
! as an extension to VFP and NEON (Advanced SIMD), and from ARMv8-A provides
! hardware support for conversions between @code{__fp16} and @code{double}
! values.  GCC generates code using these hardware instructions if you
! compile with options to select an FPU that provides them;
! for example, @option{-mfpu=neon-fp16 -mfloat-abi=softfp},
! in addition to the @option{-mfp16-format} option to select
! a half-precision format.
  
  Language-level support for the @code{__fp16} data type is
  independent of whether GCC generates code using hardware floating-point
--- 299,317 ----
  @node Half-Precision
  @subsection Half-Precision Floating Point
  @cindex half-precision floating point
! @cindex @code{_Float16} data type
  
! GCC supports half-precision (16-bit) floating point on several targets.
  
! It is recommended that portable code use the @code{_Float16} type defined
! by ISO/IEC TS 18661-3:2015.  @xref{Floating Types}.
  
! Some targets have peculiarities as follows.
  
! @cindex @code{__fp16} data type
! On Arm and AArch64 targets, GCC supports half-precision (16-bit)
! floating point via the @code{__fp16} type defined in the Arm
! C-Language Extensions (ACLE).
  
  Language-level support for the @code{__fp16} data type is
  independent of whether GCC generates code using hardware floating-point
*************** instructions.  In cases where hardware s
*** 349,365 ****
  implements conversions between @code{__fp16} and other types as library
  calls.
  
! It is recommended that portable code use the @code{_Float16} type defined
! by ISO/IEC TS 18661-3:2015.  @xref{Floating Types}.
  
  On x86 targets with SSE2 enabled, without @option{-mavx512fp16},
! all operations will be emulated by software emulation and the @code{float}
  instructions. The default behavior for @code{FLT_EVAL_METHOD} is to keep the
  intermediate result of the operation as 32-bit precision. This may lead to
  inconsistent behavior between software emulation and AVX512-FP16 instructions.
! Using @option{-fexcess-precision=16} will force round back after each operation.
  
! Using @option{-mavx512fp16} will generate AVX512-FP16 instructions instead of
  software emulation. The default behavior of @code{FLT_EVAL_METHOD} is to round
  after each operation. The same is true with @option{-fexcess-precision=standard}
  and @option{-mfpmath=sse}. If there is no @option{-mfpmath=sse},
--- 319,395 ----
  implements conversions between @code{__fp16} and other types as library
  calls.
  
! Arm targets support two mutually incompatible half-precision
! floating-point formats:
! 
! @itemize @bullet
! @item
! A format that implements IEEE 754-2008 16-bit floating point types,
! enabled with the @option{-mfp16-format=ieee} command-line option; this
! format can represent normalized values in the range of @math{2^{-14}}
! to 65504.  There are 11 bits of significand precision, approximately 3
! decimal digits.
! 
! @item
! An alternative format that sacrifices NaNs and infinity values, but
! has a larger range of values that can be represented: @math{2^{-14}}
! to 131008.  This is enabled with the
! @option{-mfp16-format=alternative} option.
! @end itemize
! 
! You must choose one of the formats and use it consistently in your
! program.
! 
! GCC only supports the @samp{alternative} format on implementations
! that support it in hardware; there is no support for conversions to
! and from this format using library functions.  Furthermore, you cannot
! link together code compiled with one format and code compiled for the
! other.  GCC also supports the @option{-mfp16-format=none} option,
! which disables all support for half-precision floating-point types.
! Code compiled with this option can be linked safely with code compiled
! for either format.
! 
! The Arm architecture extension @code{FEAT_FP16} (enabled, for example,
! with @option{-march=armv8.2-a+fp16}, or
! @option{-march=armv8.1-m.main+mve.fp}) defines data processing
! instructions that only support the @samp{ieee} format.  The compiler
! rejects attempts to use the @samp{alternative} format when this
! architecture extension is enabled.
! 
! Note that the ACLE has deprecated use of the @samp{alternative} format
! and recommends that only the @samp{ieee} format be used.
! 
! The default is to compile with @option{-mfp16-format=ieee}.
! 
! In C and C++ there are two related data types:
! @itemize @bullet
! @item
! 
! @code{__fp16}, as defined by the Arm C-Language Extensions (ACLE).
! This can be used to hold either format;
! 
! @item
! @code{_Float16}, which is defined by ISO/IEC TS 18661-3:2015.  This is
! only defined when the format selected is @samp{ieee}.
! @end itemize
! 
! The GCC port for AArch64 only supports the IEEE 754-2008 format, and
! does not have the @option{-mfp16-format} command-line option.
! 
! 
! On x86 targets with SSE2 enabled, GCC supports half-precision (16-bit)
! floating point via the @code{_Float16} type.  For C++, x86 provides a
! builtin type named @code{_Float16} which contains same data format as C.
! 
  
  On x86 targets with SSE2 enabled, without @option{-mavx512fp16},
! all operations are emulated by software emulation and the @code{float}
  instructions. The default behavior for @code{FLT_EVAL_METHOD} is to keep the
  intermediate result of the operation as 32-bit precision. This may lead to
  inconsistent behavior between software emulation and AVX512-FP16 instructions.
! Using @option{-fexcess-precision=16} forces round back after each operation.
  
! Using @option{-mavx512fp16} generates AVX512-FP16 instructions instead of
  software emulation. The default behavior of @code{FLT_EVAL_METHOD} is to round
  after each operation. The same is true with @option{-fexcess-precision=standard}
  and @option{-mfpmath=sse}. If there is no @option{-mfpmath=sse},
*************** adds a @code{BTI J} instruction when BTI
*** 3975,3985 ****
  Use this attribute to change the procedure call standard of the specified
  function to the preserve-none variant.
  
! The preserve-none ABI variant modifies the AAPCS such that has no callee-saved
! registers (including SIMD and floating-point registers). That is, with the
! exception of the stack register, link register (r30), and frame pointer (r29),
! all registers are caller saved, and can be used as scratch registers by the
! callee.
  
  Additionally, registers r20--r28, r0--r7, r10--r14, r9 and r15 are used for
  argument passing, in that order.  For Microsoft Windows targets
--- 4005,4015 ----
  Use this attribute to change the procedure call standard of the specified
  function to the preserve-none variant.
  
! The preserve-none ABI variant modifies the AAPCS such that it has no
! callee-saved registers (including SIMD and floating-point registers). That is,
! with the exception of the stack register, link register (r30), and frame pointer
! (r29), all registers are changed to caller saved, and can be used as scratch
! registers by the callee.
  
  Additionally, registers r20--r28, r0--r7, r10--r14, r9 and r15 are used for
  argument passing, in that order.  For Microsoft Windows targets
*************** instructions, but allow the compiler to
*** 18534,18540 ****
  * Alpha Built-in Functions::
  * ARC Built-in Functions::
  * ARC SIMD Built-in Functions::
! * ARM C Language Extensions (ACLE)::
  * ARM Floating Point Status and Control Intrinsics::
  * ARM ARMv8-M Security Extensions::
  * AVR Built-in Functions::
--- 18564,18570 ----
  * Alpha Built-in Functions::
  * ARC Built-in Functions::
  * ARC SIMD Built-in Functions::
! * Arm C Language Extensions (ACLE)::
  * ARM Floating Point Status and Control Intrinsics::
  * ARM ARMv8-M Security Extensions::
  * AVR Built-in Functions::
*************** _v4hi __builtin_arc_vaddsub4h (__v4hi, _
*** 19149,19174 ****
  _v4hi __builtin_arc_vsubadd4h (__v4hi, __v4hi);
  @end example
  
! @node ARM C Language Extensions (ACLE)
! @subsection ARM C Language Extensions (ACLE)
  
! GCC implements extensions for C as described in the ARM C Language
  Extensions (ACLE) specification, which can be found at
! @uref{https://developer.arm.com/documentation/ihi0053/latest/}.
  
! As a part of ACLE, GCC implements extensions for Advanced SIMD as described in
! the ARM C Language Extensions Specification.  The complete list of Advanced SIMD
! intrinsics can be found at
! @uref{https://developer.arm.com/documentation/ihi0073/latest/}.
! The built-in intrinsics for the Advanced SIMD extension are available when
! NEON is enabled.
  
! Currently, ARM and AArch64 back ends do not support ACLE 2.0 fully.  Both
! back ends support CRC32 intrinsics and the ARM back end supports the
! Coprocessor intrinsics, all from @file{arm_acle.h}.  The ARM back end's 16-bit
! floating-point Advanced SIMD intrinsics currently comply to ACLE v1.1.
! AArch64's back end does not have support for 16-bit floating point Advanced SIMD
! intrinsics yet.
  
  See @ref{ARM Options} and @ref{AArch64 Options} for more information on the
  availability of extensions.
--- 19179,19200 ----
  _v4hi __builtin_arc_vsubadd4h (__v4hi, __v4hi);
  @end example
  
! @node Arm C Language Extensions (ACLE)
! @subsection Arm C Language Extensions (ACLE)
  
! GCC implements extensions for C and C++ as described in the Arm C Language
  Extensions (ACLE) specification, which can be found at
! @uref{https://arm-software.github.io/acle/main/}.
  
! As a part of ACLE, GCC implements extensions for Arm Vector extensions
! as described in the Arm C Language Extensions Specification.  The complete
! list of Arm Vector extension intrinsics is available at
! @uref{https://arm-software.github.io/acle/main/}.
! The built-in intrinsics for the Arm vector extensions are available when
! the respective extensions are enabled.
  
! Not all aspects of ACLE are supported.  Support for each feature of the ACLE
! is determined with the @code{__ARM_FEATURE_@var{X}} macros.
  
  See @ref{ARM Options} and @ref{AArch64 Options} for more information on the
  availability of extensions.
*************** a resolver which is used by the dynamic
*** 31262,31268 ****
  
  For the AArch64 target GCC implements function multiversionsing, with the
  semantics and version strings as specified in the
! @ref{ARM C Language Extensions (ACLE)}.
  
  For targets that support multiversioning with the @code{target} attribute
  (x86) a multiversioned function can be defined with either multiple function
--- 31288,31294 ----
  
  For the AArch64 target GCC implements function multiversionsing, with the
  semantics and version strings as specified in the
! @ref{Arm C Language Extensions (ACLE)}.
  
  For targets that support multiversioning with the @code{target} attribute
  (x86) a multiversioned function can be defined with either multiple function
diff -Nrcpad gcc-16-20251116/gcc/doc/invoke.texi gcc-16-20251123/gcc/doc/invoke.texi
*** gcc-16-20251116/gcc/doc/invoke.texi	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/doc/invoke.texi	Sun Nov 23 22:32:08 2025
*************** location views are enabled.
*** 13089,13095 ****
  Produce compressed debug sections in DWARF format, if that is supported.
  If @var{type} is not given, the default type depends on the capabilities
  of the assembler and linker used.  @var{type} may be one of
! @samp{none} (don't compress debug sections), or @samp{zlib} (use zlib
  compression in ELF gABI format).  If the linker doesn't support writing
  compressed debug sections, the option is rejected.  Otherwise, if the
  assembler does not support them, @option{-gz} is silently ignored when
--- 13089,13096 ----
  Produce compressed debug sections in DWARF format, if that is supported.
  If @var{type} is not given, the default type depends on the capabilities
  of the assembler and linker used.  @var{type} may be one of
! @samp{none} (don't compress debug sections), @samp{zlib} (use zlib
! compression in ELF gABI format), or  @samp{zstd} (use zstd
  compression in ELF gABI format).  If the linker doesn't support writing
  compressed debug sections, the option is rejected.  Otherwise, if the
  assembler does not support them, @option{-gz} is silently ignored when
*************** as a parameter of @code{free} call or co
*** 16333,16339 ****
  with @option{-fmalloc-dce=2} also comparisons with @code{NULL} pointer are
  considered safe to remove.
  
! The default is @option{-fmalloc-dce=2}.  See also @option{-fallocation-dce}. 
  
  @opindex fmove-loop-invariants
  @item -fmove-loop-invariants
--- 16334,16340 ----
  with @option{-fmalloc-dce=2} also comparisons with @code{NULL} pointer are
  considered safe to remove.
  
! The default is @option{-fmalloc-dce=2}.  See also @option{-fallocation-dce}.
  
  @opindex fmove-loop-invariants
  @item -fmove-loop-invariants
*************** Use the LLVM @command{lld} linker instea
*** 19758,19763 ****
--- 19759,19768 ----
  @item -fuse-ld=mold
  Use the Modern Linker (@command{mold}) instead of the default linker.
  
+ @opindex fuse-ld=wild
+ @item -fuse-ld=wild
+ Use the Wild linker (@command{wild}) instead of the default linker.
+ 
  @cindex Libraries
  @opindex l
  @item -l@var{library}
*************** and the features that they enable by def
*** 22660,22666 ****
  @item @samp{armv9.2-a} @tab Armv9.2-A @tab @samp{armv9.1-a}, @samp{+wfxt}, @samp{+xs}
  @item @samp{armv9.3-a} @tab Armv9.3-A @tab @samp{armv9.2-a}, @samp{+mops}
  @item @samp{armv9.4-a} @tab Armv9.4-A @tab @samp{armv9.3-a}, @samp{+sve2p1}
! @item @samp{armv9.5-a} @tab Armv9.4-A @tab @samp{armv9.4-a}, @samp{cpa}, @samp{+faminmax}, @samp{+lut}
  @item @samp{armv8-r} @tab Armv8-R @tab @samp{armv8-r}
  @end multitable
  
--- 22665,22671 ----
  @item @samp{armv9.2-a} @tab Armv9.2-A @tab @samp{armv9.1-a}, @samp{+wfxt}, @samp{+xs}
  @item @samp{armv9.3-a} @tab Armv9.3-A @tab @samp{armv9.2-a}, @samp{+mops}
  @item @samp{armv9.4-a} @tab Armv9.4-A @tab @samp{armv9.3-a}, @samp{+sve2p1}
! @item @samp{armv9.5-a} @tab Armv9.5-A @tab @samp{armv9.4-a}, @samp{cpa}, @samp{+faminmax}, @samp{+lut}
  @item @samp{armv8-r} @tab Armv8-R @tab @samp{armv8-r}
  @end multitable
  
*************** SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREF
*** 35492,35499 ****
  XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
  VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8,
! AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4 and PREFETCHI
! instruction set support.
  
  @item sapphirerapids
  @itemx emeraldrapids
--- 35497,35504 ----
  XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
  MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
  VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8,
! AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4, PREFETCHI, APX_F,
! AVX10.1, AVX10.2 and MOVRS instruction set support.
  
  @item sapphirerapids
  @itemx emeraldrapids
diff -Nrcpad gcc-16-20251116/gcc/doc/riscv-mcpu.texi gcc-16-20251123/gcc/doc/riscv-mcpu.texi
*** gcc-16-20251116/gcc/doc/riscv-mcpu.texi	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/doc/riscv-mcpu.texi	Sun Nov 23 22:32:08 2025
*************** by particular CPU name. Permissible valu
*** 80,83 ****
  
  @samp{andes-a27},
  
! @samp{andes-ax27}.
--- 80,85 ----
  
  @samp{andes-a27},
  
! @samp{andes-ax27},
! 
! @samp{spacemit-x60}.
diff -Nrcpad gcc-16-20251116/gcc/doc/riscv-mtune.texi gcc-16-20251123/gcc/doc/riscv-mtune.texi
*** gcc-16-20251116/gcc/doc/riscv-mtune.texi	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/doc/riscv-mtune.texi	Sun Nov 23 22:32:08 2025
*************** particular CPU name.  Permissible values
*** 50,55 ****
--- 50,57 ----
  
  @samp{xiangshan-kunminghu},
  
+ @samp{spacemit-x60},
+ 
  @samp{generic-ooo},
  
  @samp{size},
diff -Nrcpad gcc-16-20251116/gcc/doc/rtl.texi gcc-16-20251123/gcc/doc/rtl.texi
*** gcc-16-20251116/gcc/doc/rtl.texi	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/doc/rtl.texi	Sun Nov 23 22:32:08 2025
*************** enclosed in a @code{subreg}.
*** 2066,2072 ****
  
  There are currently three supported types for the first operand of a
  @code{subreg}:
! @itemize
  @item pseudo registers
  This is the most common case.  Most @code{subreg}s have pseudo
  @code{reg}s as their first operand.
--- 2066,2073 ----
  
  There are currently three supported types for the first operand of a
  @code{subreg}:
! 
! @table @asis
  @item pseudo registers
  This is the most common case.  Most @code{subreg}s have pseudo
  @code{reg}s as their first operand.
*************** It is seldom necessary to wrap hard regi
*** 2096,2102 ****
  registers would normally reduce to a single @code{reg} rtx.  This use of
  @code{subreg}s is discouraged and may not be supported in the future.
  
! @end itemize
  
  @code{subreg}s of @code{subreg}s are not supported.  Using
  @code{simplify_gen_subreg} is the recommended way to avoid this problem.
--- 2097,2103 ----
  registers would normally reduce to a single @code{reg} rtx.  This use of
  @code{subreg}s is discouraged and may not be supported in the future.
  
! @end table
  
  @code{subreg}s of @code{subreg}s are not supported.  Using
  @code{simplify_gen_subreg} is the recommended way to avoid this problem.
*************** defined.
*** 2123,2129 ****
  
  The high-order bits of rvalues are defined in the following circumstances:
  
! @itemize
  @item @code{subreg}s of @code{mem}
  When @var{m2} is smaller than a word, the macro @code{LOAD_EXTEND_OP},
  can control how the high-order bits are defined.
--- 2124,2130 ----
  
  The high-order bits of rvalues are defined in the following circumstances:
  
! @table @asis
  @item @code{subreg}s of @code{mem}
  When @var{m2} is smaller than a word, the macro @code{LOAD_EXTEND_OP},
  can control how the high-order bits are defined.
*************** The upper bits are defined when @code{SU
*** 2134,2140 ****
  Such subregs usually represent local variables, register variables
  and parameter pseudo variables that have been promoted to a wider mode.
  
! @end itemize
  
  @var{bytenum} is always zero for a paradoxical @code{subreg}, even on
  big-endian targets.
--- 2135,2141 ----
  Such subregs usually represent local variables, register variables
  and parameter pseudo variables that have been promoted to a wider mode.
  
! @end table
  
  @var{bytenum} is always zero for a paradoxical @code{subreg}, even on
  big-endian targets.
diff -Nrcpad gcc-16-20251116/gcc/doc/sourcebuild.texi gcc-16-20251123/gcc/doc/sourcebuild.texi
*** gcc-16-20251116/gcc/doc/sourcebuild.texi	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/doc/sourcebuild.texi	Sun Nov 23 22:32:08 2025
*************** the Half-precision floating-point instru
*** 2219,2224 ****
--- 2219,2230 ----
  (FP) along with M-Profile Vector Extension (MVE). Some multilibs may be
  incompatible with these options.
  
+ @item arm_v8_1m_mve_nofp_ok
+ ARM target supports options to generate instructions from ARMv8.1-M
+ with the M-Profile Vector Extension (MVE) but without the
+ Half-precision floating-point instructions (HP) and Floating-point
+ Extension (FP). Some multilibs may be incompatible with these options.
+ 
  @item arm_mve_hw
  Test system supports executing MVE instructions.
  
diff -Nrcpad gcc-16-20251116/gcc/doc/tm.texi gcc-16-20251123/gcc/doc/tm.texi
*** gcc-16-20251116/gcc/doc/tm.texi	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/doc/tm.texi	Sun Nov 23 22:32:08 2025
*************** like @code{cond_add@var{m}}.  The defaul
*** 6628,6633 ****
--- 6628,6647 ----
  constant of type @var{type}.
  @end deftypefn
  
+ @deftypefn {Target Hook} bool TARGET_INSTRUCTION_SELECTION (function *@var{fun}, gimple_stmt_iterator *@var{gsi})
+ This hook allows a target to perform custom instruction selection for an
+ instruction or sequence of instructions before expand to allow expansion to
+ generate more efficient code.
+ 
+ @var{fun} is the current function being considered and @var{gsi} is the
+ iterator pointing to the current instruction being optimized.  The default
+ implementation does not do any rewriting and returns false.  The result of
+ the function should be whether any changes were made to the CFG or not.  If a
+ change was made then the @var{gsi} should be left at the same position as at
+ the function start.  The caller is allowed to change the CFG at any point
+ before the current statement @var{gsi} is pointing to but not afterwards.
+ @end deftypefn
+ 
  @deftypefn {Target Hook} tree TARGET_GOACC_ADJUST_PRIVATE_DECL (location_t @var{loc}, tree @var{var}, int @var{level})
  This hook, if defined, is used by accelerator target back-ends to adjust
  OpenACC variable declarations that should be made private to the given
diff -Nrcpad gcc-16-20251116/gcc/doc/tm.texi.in gcc-16-20251123/gcc/doc/tm.texi.in
*** gcc-16-20251116/gcc/doc/tm.texi.in	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/doc/tm.texi.in	Sun Nov 23 22:32:08 2025
*************** address;  but often a machine-dependent
*** 4352,4357 ****
--- 4352,4359 ----
  
  @hook TARGET_PREFERRED_ELSE_VALUE
  
+ @hook TARGET_INSTRUCTION_SELECTION
+ 
  @hook TARGET_GOACC_ADJUST_PRIVATE_DECL
  
  @hook TARGET_GOACC_EXPAND_VAR_DECL
diff -Nrcpad gcc-16-20251116/gcc/ext-dce.cc gcc-16-20251123/gcc/ext-dce.cc
*** gcc-16-20251116/gcc/ext-dce.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/ext-dce.cc	Sun Nov 23 22:32:08 2025
*************** along with GCC; see the file COPYING3.
*** 26,31 ****
--- 26,32 ----
  #include "memmodel.h"
  #include "insn-config.h"
  #include "emit-rtl.h"
+ #include "expr.h"
  #include "recog.h"
  #include "cfganal.h"
  #include "tree-pass.h"
*************** ext_dce_try_optimize_rshift (rtx_insn *i
*** 421,433 ****
        return;
      }
  
!   /* Replace SET_SRC (set) with NEW_SRC.  This changes the form of INSN, so
!      force rerecognition.  We also need to force DF to rescan INSN.  */
!   SET_SRC (set) = new_src;
!   INSN_CODE (insn) = -1;
!   df_insn_rescan (insn);
! 
!   rtx new_pattern = PATTERN (insn);
  
    /* Mark the destination as changed.  */
    rtx x = SET_DEST (set);
--- 422,433 ----
        return;
      }
  
!   /* We're going to generate a fresh insn for the move, so put it
!      into a sequence that we can emit after the current insn.   */
!   start_sequence ();
!   emit_move_insn (SET_DEST (set), new_src);
!   rtx_insn *seq = end_sequence (); 
!   emit_insn_after (seq, insn);
  
    /* Mark the destination as changed.  */
    rtx x = SET_DEST (set);
*************** ext_dce_try_optimize_rshift (rtx_insn *i
*** 439,452 ****
    if (dump_file)
      {
        fprintf (dump_file, "Successfully transformed to:\n");
!       print_rtl_single (dump_file, new_pattern);
        fprintf (dump_file, "\n");
      }
  
!   /* INSN may have a REG_EQUAL note indicating that the value was
!      sign or zero extended.  That note is no longer valid since we've
!      just removed the extension.  Just wipe the notes.  */
!   remove_reg_equal_equiv_notes (insn, false);
  
    /* If NEW_SRC died in its prior location, then we need to remove the
       death note and move it to the new location.  */
--- 439,449 ----
    if (dump_file)
      {
        fprintf (dump_file, "Successfully transformed to:\n");
!       print_rtl_single (dump_file, PATTERN (seq));
        fprintf (dump_file, "\n");
      }
  
!   delete_insn (insn);
  
    /* If NEW_SRC died in its prior location, then we need to remove the
       death note and move it to the new location.  */
diff -Nrcpad gcc-16-20251116/gcc/fortran/ChangeLog gcc-16-20251123/gcc/fortran/ChangeLog
*** gcc-16-20251116/gcc/fortran/ChangeLog	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/fortran/ChangeLog	Sun Nov 23 22:32:08 2025
***************
*** 1,3 ****
--- 1,28 ----
+ 2025-11-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/32365
+ 	* parse.cc (parse_executable): Reject declaration/OpenMP
+ 	specification statements seen after executable code
+ 	unconditionally, keeping the legacy DATA diagnostic as
+ 	a warning.
+ 
+ 2025-11-17  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/122709
+ 	* resolve.cc (resolve_assoc_var): If the associate target is a
+ 	contiguous pointer, so is the associate variable.
+ 
+ 2025-11-17  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	* gfortran.texi: Remove section "Experimental features for future
+ 	Fortran revisions". Move documentation of UNSIGNED into Extensions.
+ 	Mention flang compatibility.
+ 
+ 2025-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* parse.cc (gfc_parse_file): Avoid arithmetics or
+ 	bitwise operations between enumerators from different enums.
+ 
  2025-11-14  Yuao Ma  <c8ef@outlook.com>
  
  	* trans-expr.cc (conv_dummy_value): Add check for NULL allocatable.
diff -Nrcpad gcc-16-20251116/gcc/fortran/gfortran.texi gcc-16-20251123/gcc/fortran/gfortran.texi
*** gcc-16-20251116/gcc/fortran/gfortran.texi	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/fortran/gfortran.texi	Sun Nov 23 22:32:08 2025
*************** extensions.
*** 1186,1192 ****
  @menu
  * Extensions implemented in GNU Fortran::
  * Extensions not implemented in GNU Fortran::
- * Experimental features for future Fortran versions::
  @end menu
  
  
--- 1186,1191 ----
*************** additional compatibility extensions alon
*** 1242,1247 ****
--- 1241,1247 ----
  * Extended I/O specifiers::
  * Legacy PARAMETER statements::
  * Default exponents::
+ * Unsigned integers::
  @end menu
  
  @node Old-style kind specifications
*************** For compatibility, GNU Fortran supports
*** 2535,2540 ****
--- 2535,2679 ----
  constants with @option{-fdec}.  For example, @code{9e} would be
  interpreted as @code{9e0}, rather than an error.
  
+ @menu
+ * Unsigned integers::
+ @end menu
+ 
+ @node Unsigned integers
+ @subsection Unsigned integers
+ @cindex Unsigned integers
+ If the @option{-funsigned} option is given, GNU Fortran supports
+ unsigned integers according to
+ @uref{https://j3-fortran.org/doc/year/24/24-116.txt, J3/24-116}.  The
+ data type is called @code{UNSIGNED}.  For an unsigned type with @code{n}
+ bits, it implements integer arithmetic modulo @code{2**n}, comparable
+ to the @code{unsigned} data type in C.
+ 
+ The data type has @code{KIND} numbers comparable to other Fortran data
+ types, which can be selected via the @code{SELECTED_UNSIGNED_KIND}
+ function.
+ 
+ Mixed arithmetic, comparisons and assignment between @code{UNSIGNED}
+ and other types are only possible via explicit conversion.  Conversion
+ from @code{UNSIGNED} to other types is done via type conversion
+ functions like @code{INT} or @code{REAL}. Conversion from other types
+ to @code{UNSIGNED} is done via @code{UINT}. Unsigned variables cannot be
+ used as index variables in @code{DO} loops or as array indices.
+ 
+ Unsigned numbers have a trailing @code{u} as suffix, optionally followed
+ by a @code{KIND} number separated by an underscore.
+ 
+ Input and output can be done using the @samp{I}, @samp{B}, @samp{O}
+ and @samp{Z} descriptors, plus unformatted I/O.
+ 
+ Unsigned integers as implemented in gfortran are compatible with flang.
+ 
+ Here is a small, somewhat contrived example of their use:
+ @smallexample
+ program main
+   use iso_fortran_env, only : uint64
+   unsigned(kind=uint64) :: v
+   v = huge(v) - 32u_uint64
+   print *,v
+ end program main
+ @end smallexample
+ @noindent
+ which outputs the number 18446744073709551583.
+ 
+ Arithmetic operations work on unsigned integers, also for
+ exponentiation.  As an extension to J3/24-116.txt, unary minus
+ and exponentiation of unsigned integers are permitted unless
+ @code{-pedantic} is in force.
+ 
+ In intrinsic procedures, unsigned arguments are typically permitted
+ for arguments for the data to be processed, analogous to the
+ use of @code{REAL} arguments. Unsigned values are prohibited
+ as index variables in @code{DO} loops and as array indices.
+ 
+ Unsigned numbers can be read and written using list-directed,
+ formatted and unformatted I/O.  For formatted I/O, the @samp{B},
+ @samp{I}, @samp{O} and @samp{Z} descriptors are valid.  Negative
+ values and values that would overflow are rejected with
+ @code{-pedantic}.
+ 
+ @code{SELECT CASE} is supported for unsigned integers.
+ 
+ The following intrinsics take unsigned arguments:
+ @itemize @bullet
+ @item @code{BGE}, @pxref{BGE}
+ @item @code{BGT}, @pxref{BGT}
+ @item @code{BIT_SIZE}, @pxref{BIT_SIZE}
+ @item @code{BLE}, @pxref{BLE}
+ @item @code{BLT}, @pxref{BLT}
+ @item @code{CMPLX}, @pxref{CMPLX}
+ @item @code{CSHIFT}, @pxref{CSHIFT}
+ @item @code{DIGITS}, @pxref{DIGITS}
+ @item @code{DOT_PRODUCT}, @pxref{DOT_PRODUCT}
+ @item @code{DSHIFTL}, @pxref{DSHIFTL}
+ @item @code{DSHIFTR}, @pxref{DSHIFTR}
+ @item @code{EOSHIFT}, @pxref{EOSHIFT}
+ @item @code{FINDLOC}, @pxref{FINDLOC}
+ @item @code{HUGE}, @pxref{HUGE}
+ @item @code{IALL}, @pxref{IALL}
+ @item @code{IAND}, @pxref{IAND}
+ @item @code{IANY}, @pxref{IANY}
+ @item @code{IBCLR}, @pxref{IBCLR}
+ @item @code{IBITS}, @pxref{IBITS}
+ @item @code{IBSET}, @pxref{IBSET}
+ @item @code{IEOR}, @pxref{IEOR}
+ @item @code{INT}, @pxref{INT}
+ @item @code{IOR}, @pxref{IOR}
+ @item @code{IPARITY}, @pxref{IPARITY}
+ @item @code{ISHFT}, @pxref{ISHFT}
+ @item @code{ISHFTC}, @pxref{ISHFTC}
+ @item @code{MATMUL}, @pxref{MATMUL}
+ @item @code{MAX}, @pxref{MAX}
+ @item @code{MAXLOC}, @pxref{MAXLOC}
+ @item @code{MAXVAL}, @pxref{MAXVAL}
+ @item @code{MERGE}, @pxref{MERGE}
+ @item @code{MERGE_BITS}, @pxref{MERGE_BITS}
+ @item @code{MIN}, @pxref{MIN}
+ @item @code{MINLOC}, @pxref{MINLOC}
+ @item @code{MINVAL}, @pxref{MINVAL}
+ @item @code{MOD}, @pxref{MOD}
+ @item @code{MODULO}, @pxref{MODULO}
+ @item @code{MVBITS}, @pxref{MVBITS}
+ @item @code{NOT}, @pxref{NOT}
+ @item @code{OUT_OF_RANGE}, @pxref{OUT_OF_RANGE}
+ @item @code{PRODUCT}, @pxref{PRODUCT}
+ @item @code{RANDOM_NUMBER}, @pxref{RANDOM_NUMBER}
+ @item @code{RANGE}, @pxref{RANGE}
+ @item @code{REAL}, @pxref{REAL}
+ @item @code{SHIFTA}, @pxref{SHIFTA}
+ @item @code{SHIFTL}, @pxref{SHIFTL}
+ @item @code{SHIFTR}, @pxref{SHIFTR}
+ @item @code{SUM}, @pxref{SUM}
+ @item @code{TRANSPOSE}, @pxref{TRANSPOSE}
+ @item @code{TRANSFER}, @pxref{TRANSFER}
+ @end itemize
+ 
+ The following intrinsics are enabled with @option{-funsigned}:
+ @itemize @bullet
+ @item @code{UINT}, @pxref{UINT}
+ @item @code{UMASKL}, @pxref{UMASKL}
+ @item @code{UMASKR}, @pxref{UMASKR}
+ @item @code{SELECTED_UNSIGNED_KIND}, @pxref{SELECTED_UNSIGNED_KIND}
+ @end itemize
+ 
+ The following constants have been added to the intrinsic
+ @code{ISO_C_BINDING} module: @code{c_unsigned},
+ @code{c_unsigned_short}, @code{c_unsigned_char},
+ @code{c_unsigned_long}, @code{c_unsigned_long_long},
+ @code{c_uintmax_t}, @code{c_uint8_t}, @code{c_uint16_t},
+ @code{c_uint32_t}, @code{c_uint64_t}, @code{c_uint128_t},
+ @code{c_uint_fast8_t}, @code{c_uint_fast16_t}, @code{c_uint_fast32_t},
+ @code{c_uint_fast64_t}, @code{c_uint_fast128_t},
+ @code{c_uint_least8_t}, @code{c_uint_least16_t}, @code{c_uint_least32_t},
+ @code{c_uint_least64_t} and @code{c_uint_least128_t}.
+ 
+ The following constants have been added to the intrinsic
+ @code{ISO_FORTRAN_ENV} module: @code{uint8}, @code{uint16},
+ @code{uint32} and @code{uint64}.
  
  @node Extensions not implemented in GNU Fortran
  @section Extensions not implemented in GNU Fortran
*************** descriptor occurred, use @code{INQUIRE}
*** 2715,2871 ****
  count the characters up to the next @code{NEW_LINE} and then start
  reading from the position marked previously.
  
- @node Experimental features for future Fortran versions
- @section Experimental features future Fortran versions
- @cindex Future Fortran versions
- 
- GNU Fortran supports some experimental features that have been
- proposed and accepted by the J3 standards committee.  These
- exist to give users a chance to try them out, and to provide
- a reference implementation.
- 
- As these features have not been included in the worklist for Fortran
- 202Y by WG5, there is a chance that a version in any upcoming standard
- will differ from what GNU Fortran currently implements.  These
- features are therefore currently classified as an extension.
- 
- @menu
- * Unsigned integers::
- @end menu
- 
- @node Unsigned integers
- @subsection Unsigned integers
- @cindex Unsigned integers
- If the @option{-funsigned} option is given, GNU Fortran supports
- unsigned integers according to
- @uref{https://j3-fortran.org/doc/year/24/24-116.txt, J3/24-116}.  The
- data type is called @code{UNSIGNED}.  For an unsigned type with @code{n}
- bits, it implements integer arithmetic modulo @code{2**n}, comparable
- to the @code{unsigned} data type in C.
- 
- The data type has @code{KIND} numbers comparable to other Fortran data
- types, which can be selected via the @code{SELECTED_UNSIGNED_KIND}
- function.
- 
- Mixed arithmetic, comparisons and assignment between @code{UNSIGNED}
- and other types are only possible via explicit conversion.  Conversion
- from @code{UNSIGNED} to other types is done via type conversion
- functions like @code{INT} or @code{REAL}. Conversion from other types
- to @code{UNSIGNED} is done via @code{UINT}. Unsigned variables cannot be
- used as index variables in @code{DO} loops or as array indices.
- 
- Unsigned numbers have a trailing @code{u} as suffix, optionally followed
- by a @code{KIND} number separated by an underscore.
- 
- Input and output can be done using the @samp{I}, @samp{B}, @samp{O}
- and @samp{Z} descriptors, plus unformatted I/O.
- 
- Here is a small, somewhat contrived example of their use:
- @smallexample
- program main
-   use iso_fortran_env, only : uint64
-   unsigned(kind=uint64) :: v
-   v = huge(v) - 32u_uint64
-   print *,v
- end program main
- @end smallexample
- @noindent
- which outputs the number 18446744073709551583.
- 
- Arithmetic operations work on unsigned integers, also for
- exponentiation.  As an extension to J3/24-116.txt, unary minus
- and exponentiation of unsigned integers are permitted unless
- @code{-pedantic} is in force.
- 
- In intrinsic procedures, unsigned arguments are typically permitted
- for arguments for the data to be processed, analogous to the
- use of @code{REAL} arguments. Unsigned values are prohibited
- as index variables in @code{DO} loops and as array indices.
- 
- Unsigned numbers can be read and written using list-directed,
- formatted and unformatted I/O.  For formatted I/O, the @samp{B},
- @samp{I}, @samp{O} and @samp{Z} descriptors are valid.  Negative
- values and values that would overflow are rejected with
- @code{-pedantic}.
- 
- @code{SELECT CASE} is supported for unsigned integers.
- 
- The following intrinsics take unsigned arguments:
- @itemize @bullet
- @item @code{BGE}, @pxref{BGE}
- @item @code{BGT}, @pxref{BGT}
- @item @code{BIT_SIZE}, @pxref{BIT_SIZE}
- @item @code{BLE}, @pxref{BLE}
- @item @code{BLT}, @pxref{BLT}
- @item @code{CMPLX}, @pxref{CMPLX}
- @item @code{CSHIFT}, @pxref{CSHIFT}
- @item @code{DIGITS}, @pxref{DIGITS}
- @item @code{DOT_PRODUCT}, @pxref{DOT_PRODUCT}
- @item @code{DSHIFTL}, @pxref{DSHIFTL}
- @item @code{DSHIFTR}, @pxref{DSHIFTR}
- @item @code{EOSHIFT}, @pxref{EOSHIFT}
- @item @code{FINDLOC}, @pxref{FINDLOC}
- @item @code{HUGE}, @pxref{HUGE}
- @item @code{IALL}, @pxref{IALL}
- @item @code{IAND}, @pxref{IAND}
- @item @code{IANY}, @pxref{IANY}
- @item @code{IBCLR}, @pxref{IBCLR}
- @item @code{IBITS}, @pxref{IBITS}
- @item @code{IBSET}, @pxref{IBSET}
- @item @code{IEOR}, @pxref{IEOR}
- @item @code{INT}, @pxref{INT}
- @item @code{IOR}, @pxref{IOR}
- @item @code{IPARITY}, @pxref{IPARITY}
- @item @code{ISHFT}, @pxref{ISHFT}
- @item @code{ISHFTC}, @pxref{ISHFTC}
- @item @code{MATMUL}, @pxref{MATMUL}
- @item @code{MAX}, @pxref{MAX}
- @item @code{MAXLOC}, @pxref{MAXLOC}
- @item @code{MAXVAL}, @pxref{MAXVAL}
- @item @code{MERGE}, @pxref{MERGE}
- @item @code{MERGE_BITS}, @pxref{MERGE_BITS}
- @item @code{MIN}, @pxref{MIN}
- @item @code{MINLOC}, @pxref{MINLOC}
- @item @code{MINVAL}, @pxref{MINVAL}
- @item @code{MOD}, @pxref{MOD}
- @item @code{MODULO}, @pxref{MODULO}
- @item @code{MVBITS}, @pxref{MVBITS}
- @item @code{NOT}, @pxref{NOT}
- @item @code{OUT_OF_RANGE}, @pxref{OUT_OF_RANGE}
- @item @code{PRODUCT}, @pxref{PRODUCT}
- @item @code{RANDOM_NUMBER}, @pxref{RANDOM_NUMBER}
- @item @code{RANGE}, @pxref{RANGE}
- @item @code{REAL}, @pxref{REAL}
- @item @code{SHIFTA}, @pxref{SHIFTA}
- @item @code{SHIFTL}, @pxref{SHIFTL}
- @item @code{SHIFTR}, @pxref{SHIFTR}
- @item @code{SUM}, @pxref{SUM}
- @item @code{TRANSPOSE}, @pxref{TRANSPOSE}
- @item @code{TRANSFER}, @pxref{TRANSFER}
- @end itemize
- 
- The following intrinsics are enabled with @option{-funsigned}:
- @itemize @bullet
- @item @code{UINT}, @pxref{UINT}
- @item @code{UMASKL}, @pxref{UMASKL}
- @item @code{UMASKR}, @pxref{UMASKR}
- @item @code{SELECTED_UNSIGNED_KIND}, @pxref{SELECTED_UNSIGNED_KIND}
- @end itemize
- 
- The following constants have been added to the intrinsic
- @code{ISO_C_BINDING} module: @code{c_unsigned},
- @code{c_unsigned_short}, @code{c_unsigned_char},
- @code{c_unsigned_long}, @code{c_unsigned_long_long},
- @code{c_uintmax_t}, @code{c_uint8_t}, @code{c_uint16_t},
- @code{c_uint32_t}, @code{c_uint64_t}, @code{c_uint128_t},
- @code{c_uint_fast8_t}, @code{c_uint_fast16_t}, @code{c_uint_fast32_t},
- @code{c_uint_fast64_t}, @code{c_uint_fast128_t},
- @code{c_uint_least8_t}, @code{c_uint_least16_t}, @code{c_uint_least32_t},
- @code{c_uint_least64_t} and @code{c_uint_least128_t}.
- 
- The following constants have been added to the intrinsic
- @code{ISO_FORTRAN_ENV} module: @code{uint8}, @code{uint16},
- @code{uint32} and @code{uint64}.
  
  @c ---------------------------------------------------------------------
  @c ---------------------------------------------------------------------
--- 2854,2859 ----
diff -Nrcpad gcc-16-20251116/gcc/fortran/parse.cc gcc-16-20251123/gcc/fortran/parse.cc
*** gcc-16-20251116/gcc/fortran/parse.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/fortran/parse.cc	Sun Nov 23 22:32:08 2025
*************** loop:
*** 7132,7137 ****
--- 7132,7146 ----
  	  accept_statement (st);
  	  goto done;
  
+ 	/* Specification statements cannot appear after executable statements.  */
+ 	case_decl:
+ 	case_omp_decl:
+ 	  gfc_error ("%s statement at %C cannot appear after executable statements",
+ 		     gfc_ascii_statement (st));
+ 	  reject_statement ();
+ 	  st = next_statement ();
+ 	  continue;
+ 
  	default:
  	  break;
  	}
*************** done:
*** 7793,7837 ****
      {
      case OMP_REQ_ATOMIC_MEM_ORDER_SEQ_CST:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask | OMP_MEMORY_ORDER_SEQ_CST);
        break;
      case OMP_REQ_ATOMIC_MEM_ORDER_ACQ_REL:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask | OMP_MEMORY_ORDER_ACQ_REL);
        break;
      case OMP_REQ_ATOMIC_MEM_ORDER_ACQUIRE:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask | OMP_MEMORY_ORDER_ACQUIRE);
        break;
      case OMP_REQ_ATOMIC_MEM_ORDER_RELAXED:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask | OMP_MEMORY_ORDER_RELAXED);
        break;
      case OMP_REQ_ATOMIC_MEM_ORDER_RELEASE:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask | OMP_MEMORY_ORDER_RELEASE);
        break;
      }
  
    if (omp_target_seen)
      omp_requires_mask = (enum omp_requires) (omp_requires_mask
! 					     | OMP_REQUIRES_TARGET_USED);
    if (omp_requires & OMP_REQ_REVERSE_OFFLOAD)
!     omp_requires_mask = (enum omp_requires) (omp_requires_mask
! 					     | OMP_REQUIRES_REVERSE_OFFLOAD);
    if (omp_requires & OMP_REQ_UNIFIED_ADDRESS)
!     omp_requires_mask = (enum omp_requires) (omp_requires_mask
! 					     | OMP_REQUIRES_UNIFIED_ADDRESS);
    if (omp_requires & OMP_REQ_UNIFIED_SHARED_MEMORY)
      omp_requires_mask
! 	  = (enum omp_requires) (omp_requires_mask
! 				 | OMP_REQUIRES_UNIFIED_SHARED_MEMORY);
    if (omp_requires & OMP_REQ_SELF_MAPS)
      omp_requires_mask
! 	  = (enum omp_requires) (omp_requires_mask | OMP_REQUIRES_SELF_MAPS);
    if (omp_requires & OMP_REQ_DYNAMIC_ALLOCATORS)
!     omp_requires_mask = (enum omp_requires) (omp_requires_mask
! 					     | OMP_REQUIRES_DYNAMIC_ALLOCATORS);
    /* Do the parse tree dump.  */
    gfc_current_ns = flag_dump_fortran_original ? gfc_global_ns_list : NULL;
  
--- 7802,7854 ----
      {
      case OMP_REQ_ATOMIC_MEM_ORDER_SEQ_CST:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask
! 			       | int (OMP_MEMORY_ORDER_SEQ_CST));
        break;
      case OMP_REQ_ATOMIC_MEM_ORDER_ACQ_REL:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask
! 			       | int (OMP_MEMORY_ORDER_ACQ_REL));
        break;
      case OMP_REQ_ATOMIC_MEM_ORDER_ACQUIRE:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask
! 			       | int (OMP_MEMORY_ORDER_ACQUIRE));
        break;
      case OMP_REQ_ATOMIC_MEM_ORDER_RELAXED:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask
! 			       | int (OMP_MEMORY_ORDER_RELAXED));
        break;
      case OMP_REQ_ATOMIC_MEM_ORDER_RELEASE:
        omp_requires_mask
! 	= (enum omp_requires) (omp_requires_mask
! 			       | int (OMP_MEMORY_ORDER_RELEASE));
        break;
      }
  
    if (omp_target_seen)
      omp_requires_mask = (enum omp_requires) (omp_requires_mask
! 					     | int (OMP_REQUIRES_TARGET_USED));
    if (omp_requires & OMP_REQ_REVERSE_OFFLOAD)
!     omp_requires_mask
!       = (enum omp_requires) (omp_requires_mask
! 			     | int (OMP_REQUIRES_REVERSE_OFFLOAD));
    if (omp_requires & OMP_REQ_UNIFIED_ADDRESS)
!     omp_requires_mask
!       = (enum omp_requires) (omp_requires_mask
! 			     | int (OMP_REQUIRES_UNIFIED_ADDRESS));
    if (omp_requires & OMP_REQ_UNIFIED_SHARED_MEMORY)
      omp_requires_mask
!       = (enum omp_requires) (omp_requires_mask
! 			     | int (OMP_REQUIRES_UNIFIED_SHARED_MEMORY));
    if (omp_requires & OMP_REQ_SELF_MAPS)
      omp_requires_mask
!       = (enum omp_requires) (omp_requires_mask | int (OMP_REQUIRES_SELF_MAPS));
    if (omp_requires & OMP_REQ_DYNAMIC_ALLOCATORS)
!     omp_requires_mask
!       = (enum omp_requires) (omp_requires_mask
! 			     | int (OMP_REQUIRES_DYNAMIC_ALLOCATORS));
    /* Do the parse tree dump.  */
    gfc_current_ns = flag_dump_fortran_original ? gfc_global_ns_list : NULL;
  
diff -Nrcpad gcc-16-20251116/gcc/fortran/resolve.cc gcc-16-20251123/gcc/fortran/resolve.cc
*** gcc-16-20251116/gcc/fortran/resolve.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/fortran/resolve.cc	Sun Nov 23 22:32:08 2025
*************** resolve_assoc_var (gfc_symbol* sym, bool
*** 10790,10795 ****
--- 10790,10799 ----
    /* If the target is a good class object, so is the associate variable.  */
    if (sym->ts.type == BT_CLASS && gfc_expr_attr (target).class_ok)
      sym->attr.class_ok = 1;
+ 
+   /* If the target is a contiguous pointer, so is the associate variable.  */
+   if (gfc_expr_attr (target).pointer && gfc_expr_attr (target).contiguous)
+     sym->attr.contiguous = 1;
  }
  
  
diff -Nrcpad gcc-16-20251116/gcc/gcc.cc gcc-16-20251123/gcc/gcc.cc
*** gcc-16-20251116/gcc/gcc.cc	Sun Nov 16 22:32:55 2025
--- gcc-16-20251123/gcc/gcc.cc	Sun Nov 23 22:32:09 2025
*************** driver_handle_option (struct gcc_options
*** 4290,4295 ****
--- 4290,4299 ----
         use_ld = ".mold";
         break;
  
+     case OPT_fuse_ld_wild:
+        use_ld = ".wild";
+        break;
+ 
      case OPT_fcompare_debug_second:
        compare_debug_second = 1;
        break;
diff -Nrcpad gcc-16-20251116/gcc/genmultilib gcc-16-20251123/gcc/genmultilib
*** gcc-16-20251116/gcc/genmultilib	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/genmultilib	Sun Nov 23 22:32:09 2025
*************** echo ""
*** 549,555 ****
  echo "static const char *multilib_options = \"${moptions}\";"
  
  # Finally output the disable flag if specified
! if [ "x${disable_multilib}" = xyes ]; then
    echo ""
    echo "#define DISABLE_MULTILIB  1"
  fi
--- 549,555 ----
  echo "static const char *multilib_options = \"${moptions}\";"
  
  # Finally output the disable flag if specified
! if [ "x${enable_multilib}" != xyes ]; then
    echo ""
    echo "#define DISABLE_MULTILIB  1"
  fi
diff -Nrcpad gcc-16-20251116/gcc/gimple-fold.cc gcc-16-20251123/gcc/gimple-fold.cc
*** gcc-16-20251116/gcc/gimple-fold.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/gimple-fold.cc	Sun Nov 23 22:32:09 2025
*************** get_range_strlen_tree (tree arg, bitmap
*** 1806,1812 ****
  	     the size of the enclosing object minus the offset of
  	     the referenced subobject minus 1 (for the terminating nul).  */
  	  tree type = TREE_TYPE (base);
! 	  if (TREE_CODE (type) == POINTER_TYPE
  	      || (TREE_CODE (base) != PARM_DECL && !VAR_P (base))
  	      || !(val = DECL_SIZE_UNIT (base)))
  	    val = build_all_ones_cst (size_type_node);
--- 1806,1812 ----
  	     the size of the enclosing object minus the offset of
  	     the referenced subobject minus 1 (for the terminating nul).  */
  	  tree type = TREE_TYPE (base);
! 	  if (POINTER_TYPE_P (type)
  	      || (TREE_CODE (base) != PARM_DECL && !VAR_P (base))
  	      || !(val = DECL_SIZE_UNIT (base)))
  	    val = build_all_ones_cst (size_type_node);
diff -Nrcpad gcc-16-20251116/gcc/gimple-isel.cc gcc-16-20251123/gcc/gimple-isel.cc
*** gcc-16-20251116/gcc/gimple-isel.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/gimple-isel.cc	Sun Nov 23 22:32:09 2025
*************** pass_gimple_isel::execute (struct functi
*** 1357,1362 ****
--- 1357,1365 ----
      {
        for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
  	{
+ 	  /* Give the target first try at replacing the instruction.  */
+ 	  cfg_changed |= targetm.instruction_selection (fun, &gsi);
+ 
  	  /* Pre-expand VEC_COND_EXPRs to .VCOND* internal function
  	     calls mapping to supported optabs.  */
  	  gimple *g = gimple_expand_vec_cond_expr (&gsi);
diff -Nrcpad gcc-16-20251116/gcc/gimple-range-fold.cc gcc-16-20251123/gcc/gimple-range-fold.cc
*** gcc-16-20251116/gcc/gimple-range-fold.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/gimple-range-fold.cc	Sun Nov 23 22:32:09 2025
*************** fold_using_range::range_of_ssa_name_with
*** 1252,1262 ****
  						    class loop *l, gphi *phi,
  						    fur_source &src)
  {
    gcc_checking_assert (TREE_CODE (name) == SSA_NAME);
    // SCEV currently invokes get_range_query () for values.  If the query
    // being passed in is not the same SCEV will use, do not invoke SCEV.
    // This can be remove if/when SCEV uses a passed in range-query.
!   if (src.query () != get_range_query (cfun))
      {
        r.set_varying (TREE_TYPE (name));
        // Report the msmatch if SRC is not the global query.  The cache
--- 1252,1266 ----
  						    class loop *l, gphi *phi,
  						    fur_source &src)
  {
+   static bool in_scev_call = false;
    gcc_checking_assert (TREE_CODE (name) == SSA_NAME);
+   // Avoid SCEV callbacks causing infinite recursion.
+   if (in_scev_call)
+     r.set_varying (TREE_TYPE (name));
    // SCEV currently invokes get_range_query () for values.  If the query
    // being passed in is not the same SCEV will use, do not invoke SCEV.
    // This can be remove if/when SCEV uses a passed in range-query.
!   else if (src.query () != get_range_query (cfun))
      {
        r.set_varying (TREE_TYPE (name));
        // Report the msmatch if SRC is not the global query.  The cache
*************** fold_using_range::range_of_ssa_name_with
*** 1266,1273 ****
  	fprintf (dump_file,
  	  "fold_using-range:: SCEV not invoked due to mismatched queries\n");
      }
!   else if (!range_of_var_in_loop (r, name, l, phi, src.query ()))
!       r.set_varying (TREE_TYPE (name));
  }
  
  // -----------------------------------------------------------------------
--- 1270,1282 ----
  	fprintf (dump_file,
  	  "fold_using-range:: SCEV not invoked due to mismatched queries\n");
      }
!   else
!     {
!       in_scev_call = true;
!       if (!range_of_var_in_loop (r, name, l, phi, src.query ()))
! 	r.set_varying (TREE_TYPE (name));
!       in_scev_call = false;
!     }
  }
  
  // -----------------------------------------------------------------------
diff -Nrcpad gcc-16-20251116/gcc/gimple-range-phi.cc gcc-16-20251123/gcc/gimple-range-phi.cc
*** gcc-16-20251116/gcc/gimple-range-phi.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/gimple-range-phi.cc	Sun Nov 23 22:32:09 2025
*************** phi_group::calculate_using_modifier (ran
*** 127,155 ****
    else
      return false;
  
!   // Examine modifier and run 10 iterations to see if it convergences.
    // The constructor initilaized m_vr to the initial value already.
-   const unsigned num_iter = 10;
    int_range_max nv;
    int_range_max iter_value = m_vr;
    int_range_max iter_reach;
!   // Determie the maximum range of ITER reaching here.  Often a loop
!   // bound restricts the range reaching here.  Default to VARYING.
    if (!m_modifier_name
        || !q->range_of_expr (iter_reach, m_modifier_name, m_modifier))
      iter_reach.set_varying (m_vr.type ());
    for (unsigned x = 0; x < num_iter; x++)
      {
        if (!fold_range (nv, m_modifier, iter_value, q))
  	break;
!       // Ensure nothing calculate is outside outside the reaching range.
        nv.intersect (iter_reach);
        // If union does nothing, then we have convergence.
        if (!iter_value.union_ (nv))
  	{
  	  if (iter_value.varying_p ())
  	    break;
! 	  // The last iteration Will reach the PHI node.
  	  fold_range (nv, m_modifier, iter_value, q);
  	  iter_value.union_ (nv);
  	  m_vr = iter_value;
--- 127,185 ----
    else
      return false;
  
!   // If we can resolve the range using relations, use that range.
!   if (refine_using_relation (k))
!     return true;
! 
!   // Examine modifier and run iteration evaluations  to see if it convergences.
    // The constructor initilaized m_vr to the initial value already.
    int_range_max nv;
    int_range_max iter_value = m_vr;
    int_range_max iter_reach;
! 
!   // Determine the maximum range of the var reaching here.  The back edge
!   // usually has a guard restircting the range. Default to VARYING.
    if (!m_modifier_name
        || !q->range_of_expr (iter_reach, m_modifier_name, m_modifier))
      iter_reach.set_varying (m_vr.type ());
+ 
+   // Iterative evaluation can be expensive, so heuristically :
+   //  - PLUS and MINUS are 98% of the cases, and usually handled well enough
+   //    by loop analysis, The exception is if the reaching range has multiple
+   //    subranges, those are often worth examining.
+   //  - All other operations (2%) are worth checking.
+   bool do_iterative = false;
+   if (gimple_code (m_modifier) == GIMPLE_ASSIGN)
+     switch (gimple_assign_rhs_code (m_modifier))
+       {
+ 	case PLUS_EXPR:
+ 	case MINUS_EXPR:
+ 	  if (iter_reach.num_pairs () > 1)
+ 	    do_iterative = true;
+ 	  break;
+ 	default:
+ 	  do_iterative = true;
+       }
+ 
+   // Limit iterations to 1 more than the number of bits.
+   unsigned num_iter;
+   if (do_iterative)
+     num_iter = TYPE_PRECISION (m_vr.type ()) + 1;
+   else
+     num_iter = 0;
+ 
    for (unsigned x = 0; x < num_iter; x++)
      {
        if (!fold_range (nv, m_modifier, iter_value, q))
  	break;
!       // Ensure nothing calculated is outside outside the reaching range.
        nv.intersect (iter_reach);
        // If union does nothing, then we have convergence.
        if (!iter_value.union_ (nv))
  	{
  	  if (iter_value.varying_p ())
  	    break;
! 	  // The last iteration Will also reach the PHI node, add it in.
  	  fold_range (nv, m_modifier, iter_value, q);
  	  iter_value.union_ (nv);
  	  m_vr = iter_value;
*************** phi_group::calculate_using_modifier (ran
*** 157,173 ****
  	}
      }
  
-   // If we can resolve the range using relations, use that range.
-   if (refine_using_relation (k))
-     return true;
- 
    // Never converged, so bail for now. we could examine the pattern
    // from m_initial to m_vr as an extension  Especially if we had a way
    // to project the actual number of iterations (SCEV?)
    //
    //  We can also try to identify "parallel" phis to get loop counts and
    //  determine the number of iterations of these parallel PHIs.
!   //
    return false;
  }
  
--- 187,199 ----
  	}
      }
  
    // Never converged, so bail for now. we could examine the pattern
    // from m_initial to m_vr as an extension  Especially if we had a way
    // to project the actual number of iterations (SCEV?)
    //
    //  We can also try to identify "parallel" phis to get loop counts and
    //  determine the number of iterations of these parallel PHIs.
! 
    return false;
  }
  
diff -Nrcpad gcc-16-20251116/gcc/gimple-ssa-sprintf.cc gcc-16-20251123/gcc/gimple-ssa-sprintf.cc
*** gcc-16-20251116/gcc/gimple-ssa-sprintf.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/gimple-ssa-sprintf.cc	Sun Nov 23 22:32:09 2025
*************** format_integer (const directive &dir, tr
*** 1372,1378 ****
        return res;
      }
    else if (INTEGRAL_TYPE_P (TREE_TYPE (arg))
! 	   || TREE_CODE (TREE_TYPE (arg)) == POINTER_TYPE)
      /* Determine the type of the provided non-constant argument.  */
      argtype = TREE_TYPE (arg);
    else
--- 1372,1378 ----
        return res;
      }
    else if (INTEGRAL_TYPE_P (TREE_TYPE (arg))
! 	   || POINTER_TYPE_P (TREE_TYPE (arg)))
      /* Determine the type of the provided non-constant argument.  */
      argtype = TREE_TYPE (arg);
    else
*************** format_integer (const directive &dir, tr
*** 1434,1440 ****
  		{
  		  tree type = TREE_TYPE (gimple_assign_rhs1 (def));
  		  if (INTEGRAL_TYPE_P (type)
! 		      || TREE_CODE (type) == POINTER_TYPE)
  		    argtype = type;
  		}
  	    }
--- 1434,1440 ----
  		{
  		  tree type = TREE_TYPE (gimple_assign_rhs1 (def));
  		  if (INTEGRAL_TYPE_P (type)
! 		      || POINTER_TYPE_P (type))
  		    argtype = type;
  		}
  	    }
*************** format_integer (const directive &dir, tr
*** 1443,1449 ****
  
    if (!argmin)
      {
!       if (TREE_CODE (argtype) == POINTER_TYPE)
  	{
  	  argmin = build_int_cst (pointer_sized_int_node, 0);
  	  argmax = build_all_ones_cst (pointer_sized_int_node);
--- 1443,1449 ----
  
    if (!argmin)
      {
!       if (POINTER_TYPE_P (argtype))
  	{
  	  argmin = build_int_cst (pointer_sized_int_node, 0);
  	  argmax = build_all_ones_cst (pointer_sized_int_node);
diff -Nrcpad gcc-16-20251116/gcc/gimple-ssa-warn-access.cc gcc-16-20251123/gcc/gimple-ssa-warn-access.cc
*** gcc-16-20251116/gcc/gimple-ssa-warn-access.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/gimple-ssa-warn-access.cc	Sun Nov 23 22:32:09 2025
*************** maybe_warn_nonstring_arg (tree fndecl, G
*** 554,560 ****
        if (!argtype)
  	break;
  
!       if (TREE_CODE (argtype) != POINTER_TYPE)
  	continue;
  
        argtype = TREE_TYPE (argtype);
--- 554,560 ----
        if (!argtype)
  	break;
  
!       if (!POINTER_TYPE_P (argtype))
  	continue;
  
        argtype = TREE_TYPE (argtype);
diff -Nrcpad gcc-16-20251116/gcc/gimple-ssa-warn-restrict.cc gcc-16-20251123/gcc/gimple-ssa-warn-restrict.cc
*** gcc-16-20251116/gcc/gimple-ssa-warn-restrict.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/gimple-ssa-warn-restrict.cc	Sun Nov 23 22:32:09 2025
*************** pass_wrestrict::check_call (gimple *call
*** 1998,2005 ****
    /* DST, SRC, or DSTWR can also have the wrong type in a call to
       a function declared without a prototype.  Avoid checking such
       invalid calls.  */
!   if (TREE_CODE (TREE_TYPE (dst)) != POINTER_TYPE
!       || (src && TREE_CODE (TREE_TYPE (src)) != POINTER_TYPE)
        || (dstwr && !INTEGRAL_TYPE_P (TREE_TYPE (dstwr))))
      return;
  
--- 1998,2005 ----
    /* DST, SRC, or DSTWR can also have the wrong type in a call to
       a function declared without a prototype.  Avoid checking such
       invalid calls.  */
!   if (!POINTER_TYPE_P (TREE_TYPE (dst))
!       || (src && !POINTER_TYPE_P (TREE_TYPE (src)))
        || (dstwr && !INTEGRAL_TYPE_P (TREE_TYPE (dstwr))))
      return;
  
diff -Nrcpad gcc-16-20251116/gcc/gimple.h gcc-16-20251123/gcc/gimple.h
*** gcc-16-20251116/gcc/gimple.h	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/gimple.h	Sun Nov 23 22:32:09 2025
*************** gimple_omp_atomic_set_memory_order (gimp
*** 2559,2565 ****
    if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
      GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_STORE);
    g->subcode = ((g->subcode & ~GF_OMP_ATOMIC_MEMORY_ORDER)
! 		| (mo & GF_OMP_ATOMIC_MEMORY_ORDER));
  }
  
  
--- 2559,2565 ----
    if (gimple_code (g) != GIMPLE_OMP_ATOMIC_LOAD)
      GIMPLE_CHECK (g, GIMPLE_OMP_ATOMIC_STORE);
    g->subcode = ((g->subcode & ~GF_OMP_ATOMIC_MEMORY_ORDER)
! 		| (int (mo) & GF_OMP_ATOMIC_MEMORY_ORDER));
  }
  
  
diff -Nrcpad gcc-16-20251116/gcc/gimplify.cc gcc-16-20251123/gcc/gimplify.cc
*** gcc-16-20251116/gcc/gimplify.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/gimplify.cc	Sun Nov 23 22:32:09 2025
*************** collect_fallthrough_labels (gimple_stmt_
*** 2673,2678 ****
--- 2673,2679 ----
  	  gsi_next (gsi_p);
  	}
  
+       tree lab;
        /* Remember the last statement.  Skip labels that are of no interest
  	 to us.  */
        if (gimple_code (gsi_stmt (*gsi_p)) == GIMPLE_LABEL)
*************** collect_fallthrough_labels (gimple_stmt_
*** 2691,2697 ****
  	;
        else if (flag_auto_var_init > AUTO_INIT_UNINITIALIZED
  	       && gimple_code (gsi_stmt (*gsi_p)) == GIMPLE_GOTO
! 	       && VACUOUS_INIT_LABEL_P (gimple_goto_dest (gsi_stmt (*gsi_p))))
  	;
        else if (!is_gimple_debug (gsi_stmt (*gsi_p)))
  	prev = gsi_stmt (*gsi_p);
--- 2692,2700 ----
  	;
        else if (flag_auto_var_init > AUTO_INIT_UNINITIALIZED
  	       && gimple_code (gsi_stmt (*gsi_p)) == GIMPLE_GOTO
! 	       && (lab = gimple_goto_dest (gsi_stmt (*gsi_p)))
! 	       && TREE_CODE (lab) == LABEL_DECL
! 	       && VACUOUS_INIT_LABEL_P (lab))
  	;
        else if (!is_gimple_debug (gsi_stmt (*gsi_p)))
  	prev = gsi_stmt (*gsi_p);
*************** expand_FALLTHROUGH_r (gimple_stmt_iterat
*** 2928,2936 ****
  
  	  gimple_stmt_iterator gsi2 = *gsi_p;
  	  stmt = gsi_stmt (gsi2);
  	  if (flag_auto_var_init > AUTO_INIT_UNINITIALIZED
  	      && gimple_code (stmt) == GIMPLE_GOTO
! 	      && VACUOUS_INIT_LABEL_P (gimple_goto_dest (stmt)))
  	    {
  	      /* Handle for C++ artificial -ftrivial-auto-var-init=
  		 sequences.  Those look like:
--- 2931,2942 ----
  
  	  gimple_stmt_iterator gsi2 = *gsi_p;
  	  stmt = gsi_stmt (gsi2);
+ 	  tree lab;
  	  if (flag_auto_var_init > AUTO_INIT_UNINITIALIZED
  	      && gimple_code (stmt) == GIMPLE_GOTO
! 	      && (lab = gimple_goto_dest (stmt))
! 	      && TREE_CODE (lab) == LABEL_DECL
! 	      && VACUOUS_INIT_LABEL_P (lab))
  	    {
  	      /* Handle for C++ artificial -ftrivial-auto-var-init=
  		 sequences.  Those look like:
diff -Nrcpad gcc-16-20251116/gcc/go/ChangeLog gcc-16-20251123/gcc/go/ChangeLog
*** gcc-16-20251116/gcc/go/ChangeLog	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/go/ChangeLog	Sun Nov 23 22:32:09 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-11-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* gospec.cc (lang_specific_driver) [TARGET_SOLARIS]: Replace
+ 	USE_GLD by HAVE_GNU_LD.
+ 
  2025-10-27  Richard Biener  <rguenther@suse.de>
  
  	PR middle-end/122325
diff -Nrcpad gcc-16-20251116/gcc/go/gospec.cc gcc-16-20251123/gcc/go/gospec.cc
*** gcc-16-20251116/gcc/go/gospec.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/go/gospec.cc	Sun Nov 23 22:32:09 2025
*************** lang_specific_driver (struct cl_decoded_
*** 438,444 ****
        j++;
      }
  
! #if defined(TARGET_SOLARIS) && !defined(USE_GLD)
    /* We use a common symbol for go$zerovalue.  On Solaris, when not
       using the GNU linker, the Solaris linker needs an option to not
       warn about this.  Everything works without this option, but you
--- 438,444 ----
        j++;
      }
  
! #if defined(TARGET_SOLARIS) && !HAVE_GNU_LD
    /* We use a common symbol for go$zerovalue.  On Solaris, when not
       using the GNU linker, the Solaris linker needs an option to not
       warn about this.  Everything works without this option, but you
diff -Nrcpad gcc-16-20251116/gcc/ipa-modref-tree.cc gcc-16-20251123/gcc/ipa-modref-tree.cc
*** gcc-16-20251116/gcc/ipa-modref-tree.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/ipa-modref-tree.cc	Sun Nov 23 22:32:09 2025
*************** along with GCC; see the file COPYING3.
*** 32,38 ****
  
  /* Return true if both accesses are the same.  */
  bool
! modref_access_node::operator == (modref_access_node &a) const
  {
    if (parm_index != a.parm_index)
      return false;
--- 32,38 ----
  
  /* Return true if both accesses are the same.  */
  bool
! modref_access_node::operator == (const modref_access_node &a) const
  {
    if (parm_index != a.parm_index)
      return false;
diff -Nrcpad gcc-16-20251116/gcc/ipa-modref-tree.h gcc-16-20251123/gcc/ipa-modref-tree.h
*** gcc-16-20251116/gcc/ipa-modref-tree.h	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/ipa-modref-tree.h	Sun Nov 23 22:32:09 2025
*************** struct GTY(()) modref_access_node
*** 96,102 ****
    /* Dump range to debug OUT.  */
    void dump (FILE *out);
    /* Return true if both accesses are the same.  */
!   bool operator == (modref_access_node &a) const;
    /* Return true if range info is useful.  */
    bool range_info_useful_p () const;
    /* Return tree corresponding to parameter of the range in STMT.  */
--- 96,102 ----
    /* Dump range to debug OUT.  */
    void dump (FILE *out);
    /* Return true if both accesses are the same.  */
!   bool operator == (const modref_access_node &a) const;
    /* Return true if range info is useful.  */
    bool range_info_useful_p () const;
    /* Return tree corresponding to parameter of the range in STMT.  */
diff -Nrcpad gcc-16-20251116/gcc/ipa-prop.cc gcc-16-20251123/gcc/ipa-prop.cc
*** gcc-16-20251116/gcc/ipa-prop.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/ipa-prop.cc	Sun Nov 23 22:32:09 2025
*************** ipa_compute_jump_functions_for_bb (struc
*** 2698,2704 ****
  	  /* We do not need to bother analyzing calls to unknown functions
  	     unless they may become known during lto/whopr.  */
  	  if (!callee->definition && !flag_lto
! 	      && !gimple_call_fnspec (cs->call_stmt).known_p ())
  	    continue;
  	}
        ipa_compute_jump_functions_for_edge (fbi, cs);
--- 2698,2705 ----
  	  /* We do not need to bother analyzing calls to unknown functions
  	     unless they may become known during lto/whopr.  */
  	  if (!callee->definition && !flag_lto
! 	      && !gimple_call_fnspec (cs->call_stmt).known_p ()
! 	      && !callback_edge_callee_has_attr (cs))
  	    continue;
  	}
        ipa_compute_jump_functions_for_edge (fbi, cs);
diff -Nrcpad gcc-16-20251116/gcc/ipa-split.cc gcc-16-20251123/gcc/ipa-split.cc
*** gcc-16-20251116/gcc/ipa-split.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/ipa-split.cc	Sun Nov 23 22:32:09 2025
*************** pass_split_functions::gate (function *)
*** 1950,1956 ****
    /* When doing profile feedback, we want to execute the pass after profiling
       is read.  So disable one in early optimization.  */
    return (flag_partial_inlining
!       && !profile_arc_flag && !flag_branch_probabilities);
  }
  
  } // anon namespace
--- 1950,1958 ----
    /* When doing profile feedback, we want to execute the pass after profiling
       is read.  So disable one in early optimization.  */
    return (flag_partial_inlining
!       && !profile_arc_flag
!       && !flag_branch_probabilities
!       && !flag_auto_profile);
  }
  
  } // anon namespace
*************** pass_feedback_split_functions::gate (fun
*** 2013,2019 ****
    /* We don't need to split when profiling at all, we are producing
       lousy code anyway.  */
    return (flag_partial_inlining
! 	  && flag_branch_probabilities);
  }
  
  } // anon namespace
--- 2015,2021 ----
    /* We don't need to split when profiling at all, we are producing
       lousy code anyway.  */
    return (flag_partial_inlining
! 	  && (flag_branch_probabilities || flag_auto_profile));
  }
  
  } // anon namespace
diff -Nrcpad gcc-16-20251116/gcc/lra-constraints.cc gcc-16-20251123/gcc/lra-constraints.cc
*** gcc-16-20251116/gcc/lra-constraints.cc	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/lra-constraints.cc	Sun Nov 23 22:32:09 2025
*************** curr_insn_transform (bool check_only_p)
*** 4960,4966 ****
--- 4960,5006 ----
  	  }
        lra_assert (done_p);
      }
+   int const_regno = -1;
+   rtx set;
+   rtx_insn *prev, *const_insn = NULL;
+   if (before != NULL_RTX && (prev = PREV_INSN (curr_insn)) != NULL_RTX
+       && (set = single_set (prev)) != NULL_RTX && CONSTANT_P (SET_SRC (set)))
+     {
+       rtx reg = SET_DEST (set);
+       if (GET_CODE (reg) == SUBREG)
+ 	reg = SUBREG_REG (reg);
+       /* Consider only reload insns as we don't want to change the order
+ 	 created by previous optimizations.  */
+       if (REG_P (reg) && (int) REGNO (reg) >= lra_new_regno_start
+ 	  && bitmap_bit_p (&lra_reg_info[REGNO (reg)].insn_bitmap,
+ 			   INSN_UID (curr_insn)))
+ 	{
+ 	  const_regno = REGNO (reg);
+ 	  const_insn = prev;
+ 	}
+     }
    lra_process_new_insns (curr_insn, before, after, "Inserting insn reload");
+   if (const_regno >= 0) {
+     bool move_p = true;
+     for (rtx_insn *insn = before; insn != curr_insn; insn = NEXT_INSN (insn))
+       if (bitmap_bit_p (&lra_reg_info[const_regno].insn_bitmap,
+ 			INSN_UID (insn)))
+ 	{
+ 	  move_p = false;
+ 	  break;
+ 	}
+     if (move_p)
+       {
+ 	reorder_insns_nobb (const_insn, const_insn, PREV_INSN (curr_insn));
+ 	if (lra_dump_file != NULL)
+ 	  {
+ 	    dump_insn_slim (lra_dump_file, const_insn);
+ 	    fprintf (lra_dump_file,
+ 		     "    to decrease reg pressure, it is moved before:\n");
+ 	    dump_insn_slim (lra_dump_file, curr_insn);
+ 	  }
+       }
+   }
    return change_p;
  }
  
diff -Nrcpad gcc-16-20251116/gcc/lto-streamer.h gcc-16-20251123/gcc/lto-streamer.h
*** gcc-16-20251116/gcc/lto-streamer.h	Sun Nov 16 22:32:56 2025
--- gcc-16-20251123/gcc/lto-streamer.h	Sun Nov 23 22:32:09 2025
*************** lto_tag_is_gimple_code_p (enum LTO_tags
*** 990,996 ****
  {
    return (unsigned) tag >= LTO_first_gimple_tag
  	 && (unsigned) tag
! 	    < LTO_first_gimple_tag + LAST_AND_UNUSED_GIMPLE_CODE;
  }
  
  
--- 990,996 ----
  {
    return (unsigned) tag >= LTO_first_gimple_tag
  	 && (unsigned) tag
! 	    < (unsigned) LTO_first_gimple_tag + LAST_AND_UNUSED_GIMPLE_CODE;
  }
  
  
diff -Nrcpad gcc-16-20251116/gcc/match.pd gcc-16-20251123/gcc/match.pd
*** gcc-16-20251116/gcc/match.pd	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/match.pd	Sun Nov 23 22:32:09 2025
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 607,613 ****
        && (!flag_non_call_exceptions || tree_expr_nonzero_p (@1)))
    (if (TYPE_UNSIGNED (type))
     (convert (eq:boolean_type_node @1 { build_one_cst (type); }))
!    (if (!canonicalize_math_p ())
      (with { tree utype = unsigned_type_for (type); }
       (cond (le (plus (convert:utype @1) { build_one_cst (utype); })
  		{ build_int_cst (utype, 2); })
--- 607,613 ----
        && (!flag_non_call_exceptions || tree_expr_nonzero_p (@1)))
    (if (TYPE_UNSIGNED (type))
     (convert (eq:boolean_type_node @1 { build_one_cst (type); }))
!    (if (fold_before_rtl_expansion_p ())
      (with { tree utype = unsigned_type_for (type); }
       (cond (le (plus (convert:utype @1) { build_one_cst (utype); })
  		{ build_int_cst (utype, 2); })
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2310,2316 ****
         && types_match (type, @0)
         && !POINTER_TYPE_P (TREE_TYPE (@0))
         && TREE_CODE (TREE_TYPE (@0)) != OFFSET_TYPE)
!    (bitop @0 (convert @1)))))
  
  (for bitop (bit_and bit_ior)
       rbitop (bit_ior bit_and)
--- 2310,2328 ----
         && types_match (type, @0)
         && !POINTER_TYPE_P (TREE_TYPE (@0))
         && TREE_CODE (TREE_TYPE (@0)) != OFFSET_TYPE)
!    (bitop @0 (convert @1))))
!  /* Similar as above, but @0 has a widen type.  */
!  (simplify
!   (convert (bitop:cs@2 (convert:s @0) @1))
!    (if (GIMPLE
! 	&& INTEGRAL_TYPE_P (type)
! 	&& INTEGRAL_TYPE_P (TREE_TYPE (@0))
! 	&& TREE_CODE (@1) != INTEGER_CST
! 	&& tree_nop_conversion_p (type, TREE_TYPE (@2))
! 	&& !POINTER_TYPE_P (TREE_TYPE (@0))
! 	&& TREE_CODE (TREE_TYPE (@0)) != OFFSET_TYPE
! 	&& TYPE_PRECISION (TREE_TYPE (@0)) > TYPE_PRECISION (type))
!    (bitop:type (convert @0) (convert @1)))))
  
  (for bitop (bit_and bit_ior)
       rbitop (bit_ior bit_and)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2670,2676 ****
    (convert (bit_and (bit_not @1) @0))))
  
  /* (m1 CMP m2) * d -> (m1 CMP m2) ? d : 0  */
! (if (!canonicalize_math_p ())
   (for cmp (tcc_comparison)
    (simplify
     (mult:c (convert (cmp@0 @1 @2)) @3)
--- 2682,2688 ----
    (convert (bit_and (bit_not @1) @0))))
  
  /* (m1 CMP m2) * d -> (m1 CMP m2) ? d : 0  */
! (if (fold_before_rtl_expansion_p ())
   (for cmp (tcc_comparison)
    (simplify
     (mult:c (convert (cmp@0 @1 @2)) @3)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3766,3777 ****
  	return lo | -!!hi;
        } while WT is uint128_t, uint64_t, uint32_t, uint16_t,
  	and T is uint64_t, uint32_t, uint16_t, uint8_t.  */
!    (convert1?
!     (bit_ior
!      (convert?
!       (negate
!        (convert (ne (convert2? (rshift @3 INTEGER_CST@2)) integer_zerop))))
!      (convert (usmul_widen_mult@3 @0 @1))))
     (if (types_match (type, @0, @1))
      (with
       {
--- 3778,3788 ----
  	return lo | -!!hi;
        } while WT is uint128_t, uint64_t, uint32_t, uint16_t,
  	and T is uint64_t, uint32_t, uint16_t, uint8_t.  */
!    (bit_ior:c
!     (convert?
!      (negate
!       (convert (ne (convert2? (rshift @3 INTEGER_CST@2)) integer_zerop))))
!     (convert (usmul_widen_mult@3 @0 @1)))
     (if (types_match (type, @0, @1))
      (with
       {
diff -Nrcpad gcc-16-20251116/gcc/omp-general.cc gcc-16-20251123/gcc/omp-general.cc
*** gcc-16-20251116/gcc/omp-general.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/omp-general.cc	Sun Nov 23 22:32:09 2025
*************** omp_check_context_selector (location_t l
*** 1501,1506 ****
--- 1501,1575 ----
    return ctx;
  }
  
+ /* Produce a mangled version of BASE_ID for the name of the variant
+    function with context selector CTX.  SEP is a separator string.
+    The return value is an IDENTIFIER_NODE.
+ 
+    Per the OpenMP spec, "the symbol names of two definitions of a function are
+    considered to be equal if and only if their effective context selectors are
+    equivalent".  However, if we did have two such definitions, we'd get an ODR
+    violation.  We already take steps in the front ends to make variant
+    functions internal to the compilation unit, since there is no (portable) way
+    to reference them directly by name or declare them as extern in another
+    compilation unit.  So, we can diagnose the would-be ODR violations by
+    checking that there is not already a variant for the same function with an
+    equivalent context selector, and otherwise just use a simple counter to name
+    the variant functions instead of any complicated scheme to encode the
+    context selector in the name.
+ 
+    C++ and Fortran modules are an exception to this, as variants in a module
+    interface unit are visible to implementation TUs for that module.  This
+    is handled in the C++ front end by adding an additional prefix to SEP for
+    variants in a module interface to prevent collisions with names in the
+    other TUs.  The Fortran and C++ front ends add the module name to the
+    output of this function using their normal mechanisms for symbols with
+    module linkage.  */
+ tree
+ omp_mangle_variant_name (tree base_id, tree ctx ATTRIBUTE_UNUSED,
+ 			 const char *sep)
+ {
+   const char *base_name = IDENTIFIER_POINTER (base_id);
+ 
+   /* Now do the actual mangling.  */
+   static int variant_counter;
+   /* The numeric suffix and terminating byte ought to need way less than
+      32 bytes extra, that's just a magic number.  */
+   size_t buflen = (strlen (base_name) + strlen (sep) + strlen ("ompvariant")
+ 		   + 32);
+   char *buffer = (char *) alloca (buflen);
+   buflen = snprintf (buffer, buflen, "%s%sompvariant%d", base_name, sep,
+ 		     ++variant_counter);
+   return get_identifier_with_length (buffer, buflen);
+ }
+ 
+ /* Forward declaration.  */
+ static int omp_context_selector_compare (tree ctx1, tree ctx2);
+ 
+ /* Diagnose an error if there is already a variant with CTX registered
+    for BASE_DECL.  Returns true if OK, false otherwise.  */
+ bool
+ omp_check_for_duplicate_variant (location_t loc, tree base_decl, tree ctx)
+ {
+   for (tree attr = DECL_ATTRIBUTES (base_decl); attr; attr = TREE_CHAIN (attr))
+     {
+       attr = lookup_attribute ("omp declare variant base", attr);
+       if (attr == NULL_TREE)
+ 	break;
+ 
+       tree selector = TREE_VALUE (TREE_VALUE (attr));
+       if (omp_context_selector_compare (ctx, selector) == 0)
+ 	{
+ 	  error_at (loc,
+ 		    "multiple definitions of variants with the same "
+ 		    "context selector violate the one-definition rule");
+ 	  inform (DECL_SOURCE_LOCATION (TREE_PURPOSE (attr)),
+ 		  "previous variant declaration here");
+ 	  return false;
+ 	}
+     }
+   return true;
+ }
+ 
  /* Forward declarations.  */
  static int omp_context_selector_set_compare (enum omp_tss_code, tree, tree);
  static int omp_construct_simd_compare (tree, tree, bool);
*************** omp_construct_traits_match (tree selecto
*** 1675,1687 ****
     CONSTRUCT_CONTEXT is known to be complete and not missing constructs
     filled in later during compilation.
  
     Dynamic properties (which are evaluated at run-time) should always
     return 1.  */
  
  int
  omp_context_selector_matches (tree ctx,
  			      tree construct_context,
! 			      bool complete_p)
  {
    int ret = 1;
    bool maybe_offloaded = omp_maybe_offloaded (construct_context);
--- 1744,1762 ----
     CONSTRUCT_CONTEXT is known to be complete and not missing constructs
     filled in later during compilation.
  
+    If DECLARE_VARIANT_ELISION_P is true, the function implements the test
+    for elision of preprocessed code in "begin declare variant" constructs,
+    and returns 0 only for failure to match traits in the device and
+    implementation sets.
+ 
     Dynamic properties (which are evaluated at run-time) should always
     return 1.  */
  
  int
  omp_context_selector_matches (tree ctx,
  			      tree construct_context,
! 			      bool complete_p,
! 			      bool declare_variant_elision_p)
  {
    int ret = 1;
    bool maybe_offloaded = omp_maybe_offloaded (construct_context);
*************** omp_context_selector_matches (tree ctx,
*** 1693,1701 ****
  
        /* Immediately reject the match if there are any ignored
  	 selectors present.  */
!       for (tree ts = selectors; ts; ts = TREE_CHAIN (ts))
! 	if (OMP_TS_CODE (ts) == OMP_TRAIT_INVALID)
! 	  return 0;
  
        if (set == OMP_TRAIT_SET_CONSTRUCT)
  	{
--- 1768,1779 ----
  
        /* Immediately reject the match if there are any ignored
  	 selectors present.  */
!       if (!declare_variant_elision_p
! 	  || set == OMP_TRAIT_SET_DEVICE
! 	  || set == OMP_TRAIT_SET_IMPLEMENTATION)
! 	for (tree ts = selectors; ts; ts = TREE_CHAIN (ts))
! 	  if (OMP_TS_CODE (ts) == OMP_TRAIT_INVALID)
! 	    return 0;
  
        if (set == OMP_TRAIT_SET_CONSTRUCT)
  	{
*************** omp_context_selector_matches (tree ctx,
*** 2049,2054 ****
--- 2127,2139 ----
  	      break;
  	    case OMP_TRAIT_USER_CONDITION:
  	      gcc_assert (set == OMP_TRAIT_SET_USER);
+ 	      /* The spec does not include the "user" set in the things that
+ 		 can trigger code elision in "begin declare variant".  */
+ 	      if (declare_variant_elision_p)
+ 		{
+ 		  ret = -1;
+ 		  break;
+ 		}
  	      for (tree p = OMP_TS_PROPERTIES (ts); p; p = TREE_CHAIN (p))
  		if (OMP_TP_NAME (p) == NULL_TREE)
  		  {
*************** omp_context_selector_matches (tree ctx,
*** 2064,2069 ****
--- 2149,2158 ----
  		    ret = -1;
  		  }
  	      break;
+ 	    case OMP_TRAIT_INVALID:
+ 	      /* This is only for the declare_variant_elision_p case.  */
+ 	      ret = -1;
+ 	      break;
  	    default:
  	      break;
  	    }
*************** omp_maybe_apply_loop_xforms (tree *expr_
*** 4928,4930 ****
--- 5017,5153 ----
      }
  }
  
+ /* The next group of functions support merging of context selectors for
+    nested "begin declare variant" directives.  The spec says:
+ 
+      ...the effective context selectors of the outer directive are
+      appended to the context selector of the inner directive to form the
+      effective context selector of the inner directive.  If a
+      trait-set-selector is present on both directives, the trait-selector
+      list of the outer directive is appended to the trait-selector list
+      of the inner directive after equivalent trait-selectors have been
+      removed from the outer list.
+ 
+    In other words, there is no requirement to combine non-equivalent
+    trait-selectors according to their peculiar semantics, such as allowing
+    "any" as a wildcard, ANDing trait-property-expressions of "condition" trait
+    property expressions together, etc.  Also there is no special provision for
+    treating the "construct" selector as an ordered list.
+ 
+    Note that the spec does not explicitly say what "equivalent" means;
+    whether the properties and score of the trait-selectors must be identical,
+    or only the name of the trait-selector.  This code assumes the former
+    except for the construct trait set where the order of selectors
+    is significant (so that it is *not* equivalent to have the same
+    trait-selector appearing in a different order in the list).  */
+ 
+ /* Copy traits from FROM_TS and push them onto TAIL.  */
+ 
+ static tree
+ omp_copy_trait_set (tree from_ts, tree tail)
+ {
+   for (tree ts = from_ts; ts; ts = TREE_CHAIN (ts))
+     tail = make_trait_selector (OMP_TS_CODE (ts), OMP_TS_SCORE (ts),
+ 				OMP_TS_PROPERTIES (ts), tail);
+   return nreverse (tail);
+ }
+ 
+ /* Return true if trait selectors TS1 and TS2 for set TSS are "equivalent".  */
+ 
+ static bool
+ omp_trait_selectors_equivalent (tree ts1, tree ts2, enum omp_tss_code tss)
+ {
+   if (OMP_TS_CODE (ts1) != OMP_TS_CODE (ts2))
+     return false;
+ 
+   tree score1 = OMP_TS_SCORE (ts1);
+   tree score2 = OMP_TS_SCORE (ts2);
+   if ((score1 && score2 && !simple_cst_equal (score1, score2))
+       || (score1 && !score2)
+       || (!score1 && score2))
+     return false;
+ 
+   return (omp_context_selector_props_compare (tss, OMP_TS_CODE (ts1),
+ 					      OMP_TS_PROPERTIES (ts1),
+ 					      OMP_TS_PROPERTIES (ts2))
+ 	  == 0);
+ }
+ 
+ /* Merge lists of the trait selectors OUTER_TS and INNER_TS for selector set
+    TSS: "the trait-selector list of the outer directive is appended to the
+    trait-selector list of the inner directive after equivalent trait-selectors
+    have been removed from the outer list".  */
+ 
+ static tree
+ omp_combine_trait_sets (tree outer_ts, tree inner_ts, enum omp_tss_code tss)
+ {
+   unsigned HOST_WIDE_INT inner_traits = 0;
+   tree to_list = NULL_TREE;
+ 
+   for (tree inner = inner_ts; inner; inner = TREE_CHAIN (inner))
+     {
+       omp_ts_code ts_code = OMP_TS_CODE (inner);
+       inner_traits |= 1 << ts_code;
+       to_list
+ 	= make_trait_selector (ts_code, OMP_TS_SCORE (inner),
+ 			       unshare_expr (OMP_TS_PROPERTIES (inner)),
+ 			       to_list);
+     }
+ 
+   for (tree outer = outer_ts; outer; outer = TREE_CHAIN (outer))
+     {
+       omp_ts_code ts_code = OMP_TS_CODE (outer);
+       bool remove = false;
+       if (inner_traits & (1 << ts_code))
+ 	for (tree inner = inner_ts; inner; inner = TREE_CHAIN (inner))
+ 	  if (OMP_TS_CODE (inner) == ts_code)
+ 	    {
+ 	      if (omp_trait_selectors_equivalent (inner, outer, tss))
+ 		remove = true;
+ 	      break;
+ 	    }
+       if (!remove)
+ 	to_list
+ 	  = make_trait_selector (ts_code, OMP_TS_SCORE (outer),
+ 				 unshare_expr (OMP_TS_PROPERTIES (outer)),
+ 				 to_list);
+     }
+ 
+   return nreverse (to_list);
+ }
+ 
+ /* Merge context selector INNER_CTX with OUTER_CTX.  LOC and DIRECTIVE are
+    used for error checking.  Returns the merged context, or error_mark_node
+    if the contexts cannot be merged.  */
+ 
+ tree
+ omp_merge_context_selectors (location_t loc, tree outer_ctx, tree inner_ctx,
+ 			     enum omp_ctx_directive directive)
+ {
+   tree merged_ctx = NULL_TREE;
+ 
+   if (inner_ctx == error_mark_node || outer_ctx == error_mark_node)
+     return error_mark_node;
+ 
+   for (unsigned i = OMP_TRAIT_SET_CONSTRUCT; i != OMP_TRAIT_SET_LAST; i++)
+     {
+       omp_tss_code tss_code = static_cast<omp_tss_code>(i);
+       tree outer_ts = omp_get_context_selector_list (outer_ctx, tss_code);
+       tree inner_ts = omp_get_context_selector_list (inner_ctx, tss_code);
+       tree merged_ts = NULL_TREE;
+ 
+       if (inner_ts && outer_ts)
+ 	merged_ts = omp_combine_trait_sets (outer_ts, inner_ts, tss_code);
+       else if (inner_ts)
+ 	merged_ts = omp_copy_trait_set (inner_ts, NULL_TREE);
+       else if (outer_ts)
+ 	merged_ts = omp_copy_trait_set (outer_ts, NULL_TREE);
+ 
+       if (merged_ts)
+ 	merged_ctx = make_trait_set_selector (tss_code, merged_ts,
+ 					      merged_ctx);
+     }
+ 
+   merged_ctx = nreverse (merged_ctx);
+   return omp_check_context_selector (loc, merged_ctx, directive);
+ }
diff -Nrcpad gcc-16-20251116/gcc/omp-general.h gcc-16-20251123/gcc/omp-general.h
*** gcc-16-20251116/gcc/omp-general.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/omp-general.h	Sun Nov 23 22:32:09 2025
*************** enum omp_ctx_directive
*** 200,208 ****
      OMP_CTX_METADIRECTIVE };
  extern tree omp_check_context_selector (location_t loc, tree ctx,
  					enum omp_ctx_directive directive);
  extern void omp_mark_declare_variant (location_t loc, tree variant,
  				      tree construct);
! extern int omp_context_selector_matches (tree, tree, bool);
  extern tree resolve_omp_target_device_matches (tree node);
  extern tree omp_get_context_selector (tree, enum omp_tss_code,
  				      enum omp_ts_code);
--- 200,213 ----
      OMP_CTX_METADIRECTIVE };
  extern tree omp_check_context_selector (location_t loc, tree ctx,
  					enum omp_ctx_directive directive);
+ extern tree omp_mangle_variant_name (tree base_id, tree ctx, const char *sep);
+ extern bool omp_check_for_duplicate_variant (location_t loc,
+ 					     tree base_decl, tree ctx);
  extern void omp_mark_declare_variant (location_t loc, tree variant,
  				      tree construct);
! extern int omp_context_selector_matches (tree, tree, bool, bool = false);
! extern tree omp_merge_context_selectors (location_t, tree, tree,
! 					 enum omp_ctx_directive);
  extern tree resolve_omp_target_device_matches (tree node);
  extern tree omp_get_context_selector (tree, enum omp_tss_code,
  				      enum omp_ts_code);
diff -Nrcpad gcc-16-20251116/gcc/omp-simd-clone.cc gcc-16-20251123/gcc/omp-simd-clone.cc
*** gcc-16-20251116/gcc/omp-simd-clone.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/omp-simd-clone.cc	Sun Nov 23 22:32:09 2025
*************** simd_clone_adjust_argument_types (struct
*** 892,897 ****
--- 892,901 ----
        sc->args[i].orig_type = base_type;
        sc->args[i].arg_type = SIMD_CLONE_ARG_TYPE_MASK;
        sc->args[i].vector_type = mask_type;
+       /* Record the number of mask copies when that is difficult to
+ 	 compute.  */
+       if (sc->mask_mode != VOIDmode)
+ 	sc->args[i].linear_step = k;
      }
  
    if (!node->definition)
diff -Nrcpad gcc-16-20251116/gcc/opts.cc gcc-16-20251123/gcc/opts.cc
*** gcc-16-20251116/gcc/opts.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/opts.cc	Sun Nov 23 22:32:09 2025
*************** common_handle_option (struct gcc_options
*** 3382,3387 ****
--- 3382,3388 ----
      case OPT_fuse_ld_gold:
      case OPT_fuse_ld_lld:
      case OPT_fuse_ld_mold:
+     case OPT_fuse_ld_wild:
      case OPT_fuse_linker_plugin:
        /* No-op. Used by the driver and passed to us because it starts with f.*/
        break;
diff -Nrcpad gcc-16-20251116/gcc/rust/ChangeLog gcc-16-20251123/gcc/rust/ChangeLog
*** gcc-16-20251116/gcc/rust/ChangeLog	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/ChangeLog	Sun Nov 23 22:32:09 2025
***************
*** 1,3 ****
--- 1,104 ----
+ 2025-11-17  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit): null guard
+ 	* typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): default to anon
+ 
+ 2025-11-17  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* backend/rust-compile-item.cc (CompileItem::visit): support the synthetic function consts
+ 	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::Resolve): likewise
+ 	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit): create the synth
+ 	* typecheck/rust-tyty.h: new flag for synthetic constant
+ 
+ 2025-11-17  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): fix mappings
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* ast/rust-ast.cc (Attribute::is_derive):
+ 	Change is_derive method with its valid path.
+ 	* util/rust-attribute-values.h:
+ 	Delete redudant derive attribute.
+ 	* util/rust-attributes.cc (AttributeChecker::check_inner_attribute):
+ 	Helper method for check_inner_attributes
+ 	(AttributeChecker::check_inner_attributes):
+ 	Implement method for errors check.
+ 	* util/rust-attributes.h:
+ 	Add methods above in header.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* parse/rust-parse-impl.h(Parser<ManagedTokenSource>::parse_while_let_loop_expr):
+ 	Add check for missing pattern.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* ast/rust-ast.cc (MetaItemLitExpr::check_cfg_predicate): Make error.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* ast/rust-ast.cc (Attribute::check_cfg_predicate): add cfg path in condition
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* ast/rust-ast.cc (Attribute::check_cfg_predicate):
+ 	Make error.
+ 
+ 2025-11-17  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* backend/rust-compile-resolve-path.cc: handle const param values
+ 	* typecheck/rust-hir-type-check-item.cc: generate const infer vars when required
+ 	* typecheck/rust-type-util.cc (unify_site_and): handle a null param cleanup
+ 	* typecheck/rust-tyty-util.cc (TyVar::get_implicit_const_infer_var): helper interface
+ 	* typecheck/rust-tyty-util.h: update header prototypes
+ 	* typecheck/rust-tyty.cc (BaseType::is_concrete): correctly handle const types
+ 	(ConstParamType::get_name): emit the specified type
+ 	(ConstParamType::is_equal): fix recursion loop
+ 	* typecheck/rust-unify.cc (UnifyRules::go): const infer vars need cleanup too
+ 	* typecheck/rust-unify.h: support base generics
+ 
+ 2025-11-17  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* backend/rust-compile-pattern.cc(compilePatternCheckExpr::visit(RangePattern)):
+ 	Add E0579 check to ensure that lower bound is always below upper bound.
+ 
+ 2025-11-17  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* backend/rust-compile-pattern.cc (compile_range_pattern_bound): Set litexpr
+ 	to negative if has_minus is present in the RangePatternBoundLiteral param.
+ 
+ 2025-11-17  vishruth-thimmaiah  <vishruththimmaiah@gmail.com>
+ 
+ 	* parse/rust-parse-impl.h (Parser::parse_generic_params): Emit
+ 	an error when const generics with a default value is not
+ 	trailing.
+ 
+ 2025-11-17  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* parse/rust-parse-impl.h (parse_literal_or_range_pattern): Parse minus sign
+ 	properly for LiteralPattern.
+ 	* ast/rust-pattern.h (LiteralPattern): Add has_minus boolean for LiteralPattern.
+ 	* hir/tree/rust-hir-pattern.h (LiteralPattern): Ditto.
+ 	* ast/rust-pattern.cc (LiteralPattern::as_string): Update to include minus sign
+ 	if present.
+ 	* hir/tree/rust-hir.cc (LiteralPattern::as_string): Ditto.
+ 	* hir/rust-ast-lower-pattern.cc (visit(LiteralPattern)): Pass has_minus boolean
+ 	from AST to HIR.
+ 	* backend/rust-compile-pattern.cc (CompilePatternCheckExpr::visit(LiteralPattern)):
+ 	Compile litexpr as negative if minus sign is present.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.fr>
+ 
+ 	* metadata/rust-export-metadata.cc (ExportContext::emit_macro):
+ 	Change method argument NodeId to AST::MacroRulesDefinition.
+ 	* metadata/rust-export-metadata.h:
+ 	Likewise.
+ 	* util/rust-hir-map.cc (Mappings::insert_exported_macro):
+ 	Insert AST::MacroRulesDefinition instead of NodeId.
+ 	* util/rust-hir-map.h:
+ 	Change methods declarations of exported macros.
+ 
  2025-11-12  Arthur Cohen  <arthur.cohen@embecosm.com>
  
  	* ast/rust-fmt.h: Simplify diagnostic avoidance.
diff -Nrcpad gcc-16-20251116/gcc/rust/ast/rust-ast.cc gcc-16-20251123/gcc/rust/ast/rust-ast.cc
*** gcc-16-20251116/gcc/rust/ast/rust-ast.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/ast/rust-ast.cc	Sun Nov 23 22:32:09 2025
*************** Attribute::as_string () const
*** 248,254 ****
  bool
  Attribute::is_derive () const
  {
!   return has_attr_input () && get_path () == Values::Attributes::DERIVE;
  }
  
  /**
--- 248,254 ----
  bool
  Attribute::is_derive () const
  {
!   return has_attr_input () && get_path () == Values::Attributes::DERIVE_ATTR;
  }
  
  /**
*************** MetaItemLitExpr::check_cfg_predicate (co
*** 3834,3839 ****
--- 3834,3842 ----
  {
    /* as far as I can tell, a literal expr can never be a valid cfg body, so
     * false */
+   rust_error_at (this->get_locus (), "'%s' predicate key cannot be a literal",
+ 		 this->as_string ().c_str ());
+ 
    return false;
  }
  
*************** Attribute::check_cfg_predicate (const Se
*** 4179,4188 ****
  
    auto &meta_item = static_cast<AttrInputMetaItemContainer &> (*attr_input);
    if (meta_item.get_items ().empty ()
!       && string_path == Values::Attributes::CFG_ATTR)
      {
!       rust_error_at (path.get_locus (),
! 		     "malformed %<cfg_attr%> attribute input");
        return false;
      }
    return meta_item.get_items ().front ()->check_cfg_predicate (session);
--- 4182,4200 ----
  
    auto &meta_item = static_cast<AttrInputMetaItemContainer &> (*attr_input);
    if (meta_item.get_items ().empty ()
!       && (string_path == Values::Attributes::CFG
! 	  || string_path == Values::Attributes::CFG_ATTR))
      {
!       rust_error_at (path.get_locus (), "malformed %<%s%> attribute input",
! 		     string_path.c_str ());
!       return false;
!     }
! 
!   if (string_path == Values::Attributes::CFG
!       && meta_item.get_items ().size () != 1)
!     {
!       rust_error_at (path.get_locus (), "multiple %qs predicates are specified",
! 		     path.as_string ().c_str ());
        return false;
      }
    return meta_item.get_items ().front ()->check_cfg_predicate (session);
diff -Nrcpad gcc-16-20251116/gcc/rust/ast/rust-pattern.cc gcc-16-20251123/gcc/rust/ast/rust-pattern.cc
*** gcc-16-20251116/gcc/rust/ast/rust-pattern.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/ast/rust-pattern.cc	Sun Nov 23 22:32:09 2025
*************** tokenid_to_rangekind (TokenId id)
*** 48,54 ****
  std::string
  LiteralPattern::as_string () const
  {
!   return lit.as_string ();
  }
  
  std::string
--- 48,54 ----
  std::string
  LiteralPattern::as_string () const
  {
!   return (has_minus ? "-" : "") + lit.as_string ();
  }
  
  std::string
diff -Nrcpad gcc-16-20251116/gcc/rust/ast/rust-pattern.h gcc-16-20251123/gcc/rust/ast/rust-pattern.h
*** gcc-16-20251116/gcc/rust/ast/rust-pattern.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/ast/rust-pattern.h	Sun Nov 23 22:32:09 2025
*************** class LiteralPattern : public Pattern
*** 30,35 ****
--- 30,36 ----
    Literal lit;
    location_t locus;
    NodeId node_id;
+   bool has_minus;
  
  public:
    std::string as_string () const override;
*************** public:
*** 37,53 ****
    // Constructor for a literal pattern
    LiteralPattern (Literal lit, location_t locus)
      : lit (std::move (lit)), locus (locus),
!       node_id (Analysis::Mappings::get ().get_next_node_id ())
    {}
  
    LiteralPattern (std::string val, Literal::LitType type, location_t locus,
  		  PrimitiveCoreType type_hint)
      : lit (Literal (std::move (val), type, type_hint)), locus (locus),
!       node_id (Analysis::Mappings::get ().get_next_node_id ())
    {}
  
    location_t get_locus () const override final { return locus; }
  
    void accept_vis (ASTVisitor &vis) override;
  
    NodeId get_node_id () const override { return node_id; }
--- 38,71 ----
    // Constructor for a literal pattern
    LiteralPattern (Literal lit, location_t locus)
      : lit (std::move (lit)), locus (locus),
!       node_id (Analysis::Mappings::get ().get_next_node_id ()),
!       has_minus (false)
!   {}
! 
!   LiteralPattern (Literal lit, location_t locus, bool has_minus)
!     : lit (std::move (lit)), locus (locus),
!       node_id (Analysis::Mappings::get ().get_next_node_id ()),
!       has_minus (has_minus)
    {}
  
    LiteralPattern (std::string val, Literal::LitType type, location_t locus,
  		  PrimitiveCoreType type_hint)
      : lit (Literal (std::move (val), type, type_hint)), locus (locus),
!       node_id (Analysis::Mappings::get ().get_next_node_id ()),
!       has_minus (false)
!   {}
! 
!   LiteralPattern (std::string val, Literal::LitType type, location_t locus,
! 		  PrimitiveCoreType type_hint, bool has_minus)
!     : lit (Literal (std::move (val), type, type_hint)), locus (locus),
!       node_id (Analysis::Mappings::get ().get_next_node_id ()),
!       has_minus (has_minus)
    {}
  
    location_t get_locus () const override final { return locus; }
  
+   bool get_has_minus () const { return has_minus; }
+ 
    void accept_vis (ASTVisitor &vis) override;
  
    NodeId get_node_id () const override { return node_id; }
diff -Nrcpad gcc-16-20251116/gcc/rust/backend/rust-compile-item.cc gcc-16-20251123/gcc/rust/backend/rust-compile-item.cc
*** gcc-16-20251116/gcc/rust/backend/rust-compile-item.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/backend/rust-compile-item.cc	Sun Nov 23 22:32:09 2025
*************** CompileItem::visit (HIR::ConstantItem &c
*** 109,114 ****
--- 109,125 ----
    // canonical path
    Resolver::CanonicalPath canonical_path
      = nr_ctx.to_canonical_path (mappings.get_nodeid ());
+   if (constant_type->is<const TyTy::FnType> ())
+     {
+       if (concrete == nullptr)
+ 	return;
+ 
+       rust_assert (concrete->get_kind () == TyTy::TypeKind::FNDEF);
+       TyTy::FnType *concrete_fnty = static_cast<TyTy::FnType *> (concrete);
+ 
+       concrete_fnty->override_context ();
+       constant_type = expr_type = concrete_fnty->get_return_type ();
+     }
  
    ctx->push_const_context ();
    tree const_expr
diff -Nrcpad gcc-16-20251116/gcc/rust/backend/rust-compile-pattern.cc gcc-16-20251123/gcc/rust/backend/rust-compile-pattern.cc
*** gcc-16-20251116/gcc/rust/backend/rust-compile-pattern.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/backend/rust-compile-pattern.cc	Sun Nov 23 22:32:09 2025
*************** CompilePatternCheckExpr::visit (HIR::Lit
*** 87,92 ****
--- 87,94 ----
    auto litexpr = std::make_unique<HIR::LiteralExpr> (
      HIR::LiteralExpr (pattern.get_mappings (), pattern.get_literal (),
  		      pattern.get_locus (), std::vector<AST::Attribute> ()));
+   if (pattern.get_has_minus ())
+     litexpr->set_negative ();
  
    // Note: Floating point literals are currently accepted but will likely be
    // forbidden in LiteralPatterns in a future version of Rust.
*************** compile_range_pattern_bound (HIR::RangeP
*** 119,124 ****
--- 121,128 ----
  
  	HIR::LiteralExpr litexpr (mappings, ref.get_literal (), locus,
  				  std::vector<AST::Attribute> ());
+ 	if (ref.get_has_minus ())
+ 	  litexpr.set_negative ();
  
  	result = CompileExpr::Compile (litexpr, ctx);
        }
*************** CompilePatternCheckExpr::visit (HIR::Ran
*** 159,164 ****
--- 163,192 ----
  					    pattern.get_mappings (),
  					    pattern.get_locus (), ctx);
  
+   rust_assert (
+     (TREE_CODE (upper) == REAL_CST && TREE_CODE (lower) == REAL_CST)
+     || (TREE_CODE (upper) == INTEGER_CST && TREE_CODE (lower) == INTEGER_CST));
+ 
+   bool error_E0579 = false;
+   if (TREE_CODE (upper) == REAL_CST)
+     {
+       REAL_VALUE_TYPE upper_r = TREE_REAL_CST (upper);
+       REAL_VALUE_TYPE lower_r = TREE_REAL_CST (lower);
+       if (real_compare (GE_EXPR, &lower_r, &upper_r))
+ 	error_E0579 = true;
+     }
+   else if (TREE_CODE (upper) == INTEGER_CST)
+     {
+       auto upper_wi = wi::to_wide (upper).to_shwi ();
+       auto lower_wi = wi::to_wide (lower).to_shwi ();
+       if (lower_wi >= upper_wi)
+ 	error_E0579 = true;
+     }
+ 
+   if (error_E0579)
+     rust_error_at (pattern.get_locus (), ErrorCode::E0579,
+ 		   "lower range bound must be less than upper");
+ 
    ComparisonOperator upper_cmp = pattern.is_inclusive_range ()
  				   ? ComparisonOperator::LESS_OR_EQUAL
  				   : ComparisonOperator::LESS_THAN;
diff -Nrcpad gcc-16-20251116/gcc/rust/backend/rust-compile-resolve-path.cc gcc-16-20251123/gcc/rust/backend/rust-compile-resolve-path.cc
*** gcc-16-20251116/gcc/rust/backend/rust-compile-resolve-path.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/backend/rust-compile-resolve-path.cc	Sun Nov 23 22:32:09 2025
*************** ResolvePathRef::resolve_with_node_id (
*** 132,141 ****
    tl::optional<HirId> hid
      = ctx->get_mappings ().lookup_node_to_hir (resolved_node_id);
    if (!hid.has_value ())
!     {
!       rust_error_at (expr_locus, "reverse call path lookup failure");
!       return error_mark_node;
!     }
    auto ref = hid.value ();
  
    // might be a constant
--- 132,139 ----
    tl::optional<HirId> hid
      = ctx->get_mappings ().lookup_node_to_hir (resolved_node_id);
    if (!hid.has_value ())
!     return error_mark_node;
! 
    auto ref = hid.value ();
  
    // might be a constant
*************** ResolvePathRef::resolve_with_node_id (
*** 189,194 ****
--- 187,203 ----
  	}
      }
  
+   // possibly a const expr value
+   if (lookup->get_kind () == TyTy::TypeKind::CONST)
+     {
+       auto d = lookup->destructure ();
+       rust_assert (d->get_kind () == TyTy::TypeKind::CONST);
+       auto c = d->as_const_type ();
+       rust_assert (c->const_kind () == TyTy::BaseConstType::ConstKind::Value);
+       auto val = static_cast<TyTy::ConstValueType *> (c);
+       return val->get_value ();
+     }
+ 
    // Handle unit struct
    tree resolved_item = error_mark_node;
    if (lookup->get_kind () == TyTy::TypeKind::ADT)
*************** ResolvePathRef::resolve_with_node_id (
*** 203,211 ****
    resolved_item = query_compile (ref, lookup, final_segment, mappings,
  				 expr_locus, is_qualified_path);
    if (resolved_item != error_mark_node)
!     {
!       TREE_USED (resolved_item) = 1;
!     }
  
    return resolved_item;
  }
--- 212,218 ----
    resolved_item = query_compile (ref, lookup, final_segment, mappings,
  				 expr_locus, is_qualified_path);
    if (resolved_item != error_mark_node)
!     TREE_USED (resolved_item) = 1;
  
    return resolved_item;
  }
diff -Nrcpad gcc-16-20251116/gcc/rust/hir/rust-ast-lower-pattern.cc gcc-16-20251123/gcc/rust/hir/rust-ast-lower-pattern.cc
*** gcc-16-20251116/gcc/rust/hir/rust-ast-lower-pattern.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/hir/rust-ast-lower-pattern.cc	Sun Nov 23 22:32:09 2025
*************** ASTLoweringPattern::visit (AST::LiteralP
*** 280,286 ****
  
    HIR::Literal l = lower_literal (pattern.get_literal ());
    translated
!     = new HIR::LiteralPattern (mapping, std::move (l), pattern.get_locus ());
  }
  
  void
--- 280,287 ----
  
    HIR::Literal l = lower_literal (pattern.get_literal ());
    translated
!     = new HIR::LiteralPattern (mapping, std::move (l), pattern.get_locus (),
! 			       pattern.get_has_minus ());
  }
  
  void
diff -Nrcpad gcc-16-20251116/gcc/rust/hir/tree/rust-hir-pattern.h gcc-16-20251123/gcc/rust/hir/tree/rust-hir-pattern.h
*** gcc-16-20251116/gcc/rust/hir/tree/rust-hir-pattern.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/hir/tree/rust-hir-pattern.h	Sun Nov 23 22:32:09 2025
*************** class LiteralPattern : public Pattern
*** 32,50 ****
    Literal lit;
    location_t locus;
    Analysis::NodeMapping mappings;
  
  public:
    std::string as_string () const override;
  
    // Constructor for a literal pattern
    LiteralPattern (Analysis::NodeMapping mappings, Literal lit, location_t locus)
!     : lit (std::move (lit)), locus (locus), mappings (mappings)
    {}
  
    LiteralPattern (Analysis::NodeMapping mappings, std::string val,
  		  Literal::LitType type, location_t locus)
      : lit (Literal (std::move (val), type, PrimitiveCoreType::CORETYPE_STR)),
!       locus (locus), mappings (mappings)
    {}
  
    location_t get_locus () const override { return locus; }
--- 32,58 ----
    Literal lit;
    location_t locus;
    Analysis::NodeMapping mappings;
+   bool has_minus;
  
  public:
    std::string as_string () const override;
  
    // Constructor for a literal pattern
    LiteralPattern (Analysis::NodeMapping mappings, Literal lit, location_t locus)
!     : lit (std::move (lit)), locus (locus), mappings (mappings),
!       has_minus (false)
!   {}
! 
!   LiteralPattern (Analysis::NodeMapping mappings, Literal lit, location_t locus,
! 		  bool has_minus)
!     : lit (std::move (lit)), locus (locus), mappings (mappings),
!       has_minus (has_minus)
    {}
  
    LiteralPattern (Analysis::NodeMapping mappings, std::string val,
  		  Literal::LitType type, location_t locus)
      : lit (Literal (std::move (val), type, PrimitiveCoreType::CORETYPE_STR)),
!       locus (locus), mappings (mappings), has_minus (false)
    {}
  
    location_t get_locus () const override { return locus; }
*************** public:
*** 65,70 ****
--- 73,80 ----
    Literal &get_literal () { return lit; }
    const Literal &get_literal () const { return lit; }
  
+   bool get_has_minus () const { return has_minus; }
+ 
  protected:
    /* Use covariance to implement clone function as returning this object rather
     * than base */
diff -Nrcpad gcc-16-20251116/gcc/rust/hir/tree/rust-hir.cc gcc-16-20251123/gcc/rust/hir/tree/rust-hir.cc
*** gcc-16-20251116/gcc/rust/hir/tree/rust-hir.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/hir/tree/rust-hir.cc	Sun Nov 23 22:32:09 2025
*************** StructPattern::as_string () const
*** 2634,2640 ****
  std::string
  LiteralPattern::as_string () const
  {
!   return lit.as_string ();
  }
  
  std::string
--- 2634,2640 ----
  std::string
  LiteralPattern::as_string () const
  {
!   return (has_minus ? "-" : "") + lit.as_string ();
  }
  
  std::string
diff -Nrcpad gcc-16-20251116/gcc/rust/metadata/rust-export-metadata.cc gcc-16-20251123/gcc/rust/metadata/rust-export-metadata.cc
*** gcc-16-20251116/gcc/rust/metadata/rust-export-metadata.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/metadata/rust-export-metadata.cc	Sun Nov 23 22:32:09 2025
***************
*** 23,28 ****
--- 23,29 ----
  #include "rust-ast-dump.h"
  #include "rust-abi.h"
  #include "rust-item.h"
+ #include "rust-macro.h"
  #include "rust-object-export.h"
  
  #include "md5.h"
*************** ExportContext::emit_function (const HIR:
*** 111,124 ****
  }
  
  void
! ExportContext::emit_macro (NodeId macro)
  {
    std::stringstream oss;
    AST::Dump dumper (oss);
  
!   AST::Item *item = mappings.lookup_ast_item (macro).value ();
! 
!   dumper.go (*item);
  
    public_interface_buffer += oss.str ();
  }
--- 112,123 ----
  }
  
  void
! ExportContext::emit_macro (AST::MacroRulesDefinition &macro)
  {
    std::stringstream oss;
    AST::Dump dumper (oss);
  
!   dumper.go (macro);
  
    public_interface_buffer += oss.str ();
  }
*************** PublicInterface::gather_export_data ()
*** 195,201 ****
  	vis_item.accept_vis (visitor);
      }
  
!   for (const auto &macro : mappings.get_exported_macros ())
      context.emit_macro (macro);
  }
  
--- 194,200 ----
  	vis_item.accept_vis (visitor);
      }
  
!   for (auto &macro : mappings.get_exported_macros ())
      context.emit_macro (macro);
  }
  
diff -Nrcpad gcc-16-20251116/gcc/rust/metadata/rust-export-metadata.h gcc-16-20251123/gcc/rust/metadata/rust-export-metadata.h
*** gcc-16-20251116/gcc/rust/metadata/rust-export-metadata.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/metadata/rust-export-metadata.h	Sun Nov 23 22:32:09 2025
*************** public:
*** 48,54 ****
     * directly refer to them using their NodeId. There's no need to keep an HIR
     * node for them.
     */
!   void emit_macro (NodeId macro);
  
    const std::string &get_interface_buffer () const;
  
--- 48,54 ----
     * directly refer to them using their NodeId. There's no need to keep an HIR
     * node for them.
     */
!   void emit_macro (AST::MacroRulesDefinition &macro);
  
    const std::string &get_interface_buffer () const;
  
diff -Nrcpad gcc-16-20251116/gcc/rust/parse/rust-parse-impl.h gcc-16-20251123/gcc/rust/parse/rust-parse-impl.h
*** gcc-16-20251116/gcc/rust/parse/rust-parse-impl.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/parse/rust-parse-impl.h	Sun Nov 23 22:32:09 2025
*************** Parser<ManagedTokenSource>::parse_generi
*** 3262,3269 ****
--- 3262,3273 ----
  
    // Did we parse a generic type param yet
    auto type_seen = false;
+   // Did we parse a const param with a default value yet
+   auto const_with_default_seen = false;
    // Did the user write a lifetime parameter after a type one
    auto order_error = false;
+   // Did the user write a const param with a default value after a type one
+   auto const_with_default_order_error = false;
  
    // parse lifetime params
    while (!is_end_token (lexer.peek_token ()->get_id ()))
*************** Parser<ManagedTokenSource>::parse_generi
*** 3271,3282 ****
        auto param = parse_generic_param (is_end_token);
        if (param)
  	{
- 	  // TODO: Handle `Const` here as well if necessary
  	  if (param->get_kind () == AST::GenericParam::Kind::Type)
! 	    type_seen = true;
  	  else if (param->get_kind () == AST::GenericParam::Kind::Lifetime
  		   && type_seen)
! 	    order_error = true;
  
  	  generic_params.emplace_back (std::move (param));
  	  maybe_skip_token (COMMA);
--- 3275,3303 ----
        auto param = parse_generic_param (is_end_token);
        if (param)
  	{
  	  if (param->get_kind () == AST::GenericParam::Kind::Type)
! 	    {
! 	      type_seen = true;
! 	      if (const_with_default_seen)
! 		const_with_default_order_error = true;
! 	    }
  	  else if (param->get_kind () == AST::GenericParam::Kind::Lifetime
  		   && type_seen)
! 	    {
! 	      order_error = true;
! 	      if (const_with_default_seen)
! 		const_with_default_order_error = true;
! 	    }
! 	  else if (param->get_kind () == AST::GenericParam::Kind::Const)
! 	    {
! 	      type_seen = true;
! 	      AST::ConstGenericParam *const_param
! 		= static_cast<AST::ConstGenericParam *> (param.get ());
! 	      if (const_param->has_default_value ())
! 		const_with_default_seen = true;
! 	      else if (const_with_default_seen)
! 		const_with_default_order_error = true;
! 	    }
  
  	  generic_params.emplace_back (std::move (param));
  	  maybe_skip_token (COMMA);
*************** Parser<ManagedTokenSource>::parse_generi
*** 3293,3298 ****
--- 3314,3326 ----
  		   "must be declared prior to type and const parameters");
        add_error (std::move (error));
      }
+   if (const_with_default_order_error)
+     {
+       Error error (generic_params.front ()->get_locus (),
+ 		   "invalid order for generic parameters: generic parameters "
+ 		   "with a default must be trailing");
+       add_error (std::move (error));
+     }
  
    generic_params.shrink_to_fit ();
    return generic_params;
*************** Parser<ManagedTokenSource>::parse_while_
*** 8206,8212 ****
    // parse predicate patterns
    std::vector<std::unique_ptr<AST::Pattern>> predicate_patterns
      = parse_match_arm_patterns (EQUAL);
!   // TODO: have to ensure that there is at least 1 pattern?
  
    if (!skip_token (EQUAL))
      {
--- 8234,8247 ----
    // parse predicate patterns
    std::vector<std::unique_ptr<AST::Pattern>> predicate_patterns
      = parse_match_arm_patterns (EQUAL);
!   // ensure that there is at least 1 pattern
!   if (predicate_patterns.empty ())
!     {
!       Error error (lexer.peek_token ()->get_locus (),
! 		   "should be at least 1 pattern");
!       add_error (std::move (error));
!       return nullptr;
!     }
  
    if (!skip_token (EQUAL))
      {
*************** Parser<ManagedTokenSource>::parse_litera
*** 10345,10351 ****
        return std::unique_ptr<AST::LiteralPattern> (
  	new AST::LiteralPattern (range_lower->get_str (), type,
  				 range_lower->get_locus (),
! 				 range_lower->get_type_hint ()));
      }
  }
  
--- 10380,10386 ----
        return std::unique_ptr<AST::LiteralPattern> (
  	new AST::LiteralPattern (range_lower->get_str (), type,
  				 range_lower->get_locus (),
! 				 range_lower->get_type_hint (), has_minus));
      }
  }
  
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check-expr.cc gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check-expr.cc
*** gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check-expr.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check-expr.cc	Sun Nov 23 22:32:09 2025
*************** TypeCheckExpr::Resolve (HIR::Expr &expr)
*** 53,62 ****
    if (resolver.infered == nullptr)
      return new TyTy::ErrorType (expr.get_mappings ().get_hirid ());
  
!   auto ref = expr.get_mappings ().get_hirid ();
!   resolver.infered->set_ref (ref);
    resolver.context->insert_type (expr.get_mappings (), resolver.infered);
  
    return resolver.infered;
  }
  
--- 53,71 ----
    if (resolver.infered == nullptr)
      return new TyTy::ErrorType (expr.get_mappings ().get_hirid ());
  
!   if (resolver.infered->get_kind () != TyTy::TypeKind::CONST)
!     {
!       auto ref = expr.get_mappings ().get_hirid ();
!       resolver.infered->set_ref (ref);
!     }
    resolver.context->insert_type (expr.get_mappings (), resolver.infered);
  
+   if (auto fn = resolver.infered->try_as<const TyTy::FnType> ())
+     {
+       if (fn->is_syn_constant ())
+ 	resolver.infered = fn->get_return_type ();
+     }
+ 
    return resolver.infered;
  }
  
*************** bool
*** 2358,2364 ****
  TypeCheckExpr::validate_arithmetic_type (
    const TyTy::BaseType *tyty, HIR::ArithmeticOrLogicalExpr::ExprType expr_type)
  {
!   const TyTy::BaseType *type = tyty->destructure ();
  
    // https://doc.rust-lang.org/reference/expressions/operator-expr.html#arithmetic-and-logical-binary-operators
    // this will change later when traits are added
--- 2367,2378 ----
  TypeCheckExpr::validate_arithmetic_type (
    const TyTy::BaseType *tyty, HIR::ArithmeticOrLogicalExpr::ExprType expr_type)
  {
!   auto type = tyty->destructure ();
!   if (type->get_kind () == TyTy::TypeKind::CONST)
!     {
!       auto base_const = type->as_const_type ();
!       type = base_const->get_specified_type ();
!     }
  
    // https://doc.rust-lang.org/reference/expressions/operator-expr.html#arithmetic-and-logical-binary-operators
    // this will change later when traits are added
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check-implitem.cc gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check-implitem.cc
*** gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check-implitem.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check-implitem.cc	Sun Nov 23 22:32:09 2025
*************** TypeCheckImplItem::visit (HIR::ConstantI
*** 391,398 ****
      TyTy::TyWithLocation (type, constant.get_type ().get_locus ()),
      TyTy::TyWithLocation (expr_type, constant.get_expr ().get_locus ()),
      constant.get_locus ());
!   context->insert_type (constant.get_mappings (), unified);
!   result = unified;
  }
  
  void
--- 391,422 ----
      TyTy::TyWithLocation (type, constant.get_type ().get_locus ()),
      TyTy::TyWithLocation (expr_type, constant.get_expr ().get_locus ()),
      constant.get_locus ());
! 
!   if (substitutions.empty ())
!     {
!       context->insert_type (constant.get_mappings (), unified);
!       result = unified;
!       return;
!     }
! 
!   // special case when this is a generic constant
!   auto &nr_ctx
!     = Resolver2_0::ImmutableNameResolutionContext::get ().resolver ();
!   CanonicalPath canonical_path
!     = nr_ctx.to_canonical_path (constant.get_mappings ().get_nodeid ());
!   RustIdent ident{canonical_path, constant.get_locus ()};
!   auto fnType = new TyTy::FnType (
!     constant.get_mappings ().get_hirid (),
!     constant.get_mappings ().get_defid (),
!     constant.get_identifier ().as_string (), ident,
!     TyTy::FnType::FNTYPE_IS_SYN_CONST_FLAG, ABI::RUST, {}, unified,
!     std::move (substitutions),
!     TyTy::SubstitutionArgumentMappings::empty (
!       context->get_lifetime_resolver ().get_num_bound_regions ()),
!     {});
! 
!   context->insert_type (constant.get_mappings (), fnType);
!   result = fnType;
  }
  
  void
*************** TypeCheckImplItemWithTrait::visit (HIR::
*** 558,563 ****
--- 582,589 ----
    // normal resolution of the item
    TyTy::BaseType *lookup
      = TypeCheckImplItem::Resolve (parent, function, self, substitutions);
+   if (lookup == nullptr)
+     return;
  
    // map the impl item to the associated trait item
    const auto tref = trait_reference.get ();
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check-item.cc gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check-item.cc
*** gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check-item.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check-item.cc	Sun Nov 23 22:32:09 2025
*************** TypeCheckItem::ResolveImplBlockSelfWithI
*** 112,128 ****
    std::vector<TyTy::SubstitutionArg> args;
    for (auto &p : substitutions)
      {
!       if (p.needs_substitution ())
  	{
! 	  TyTy::TyVar infer_var = TyTy::TyVar::get_implicit_infer_var (locus);
! 	  args.emplace_back (&p, infer_var.get_tyty ());
  	}
        else
  	{
! 	  auto param = p.get_param_ty ();
! 	  auto resolved = param->destructure ();
! 	  args.emplace_back (&p, resolved);
  	}
      }
  
    // create argument mappings
--- 112,138 ----
    std::vector<TyTy::SubstitutionArg> args;
    for (auto &p : substitutions)
      {
!       auto param = p.get_param_ty ();
!       if (!p.needs_substitution ())
  	{
! 	  auto resolved = param->destructure ();
! 	  args.emplace_back (&p, resolved);
! 
! 	  continue;
! 	}
! 
!       TyTy::BaseType *argument = nullptr;
!       if (param->get_kind () == TyTy::TypeKind::CONST)
! 	{
! 	  auto i = TyTy::TyVar::get_implicit_const_infer_var (locus);
! 	  argument = i.get_tyty ();
  	}
        else
  	{
! 	  auto i = TyTy::TyVar::get_implicit_infer_var (locus);
! 	  argument = i.get_tyty ();
  	}
+       args.emplace_back (&p, argument);
      }
  
    // create argument mappings
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check-type.cc gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check-type.cc
*** gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check-type.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check-type.cc	Sun Nov 23 22:32:09 2025
*************** TypeCheckType::visit (HIR::ArrayType &ty
*** 704,710 ****
    TyTy::BaseType *expected_ty = nullptr;
    bool ok = context->lookup_builtin ("usize", &expected_ty);
    rust_assert (ok);
-   context->insert_type (type.get_size_expr ().get_mappings (), expected_ty);
  
    TyTy::BaseConstType *const_type = nullptr;
    if (capacity_type->get_kind () == TyTy::TypeKind::CONST)
--- 704,709 ----
*************** TypeCheckType::visit (HIR::ArrayType &ty
*** 745,751 ****
    translated
      = new TyTy::ArrayType (type.get_mappings ().get_hirid (), type.get_locus (),
  			   TyTy::TyVar (
! 			     const_type->as_base_type ()->get_ty_ref ()),
  			   TyTy::TyVar (element_type->get_ref ()));
  }
  
--- 744,750 ----
    translated
      = new TyTy::ArrayType (type.get_mappings ().get_hirid (), type.get_locus (),
  			   TyTy::TyVar (
! 			     const_type->as_base_type ()->get_ref ()),
  			   TyTy::TyVar (element_type->get_ref ()));
  }
  
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check.cc gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check.cc
*** gcc-16-20251116/gcc/rust/typecheck/rust-hir-type-check.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-hir-type-check.cc	Sun Nov 23 22:32:09 2025
*************** TraitItemReference::get_type_from_fn (/*
*** 237,255 ****
  		      : Mutability::Mut;
  		rust_assert (self_param.has_lifetime ());
  
  		auto maybe_region = context->lookup_and_resolve_lifetime (
  		  self_param.get_lifetime ());
! 
! 		if (!maybe_region.has_value ())
  		  {
  		    rust_error_at (self_param.get_locus (),
  				   "failed to resolve lifetime");
- 		    return get_error ();
  		  }
  		self_type = new TyTy::ReferenceType (
  		  self_param.get_mappings ().get_hirid (),
! 		  TyTy::TyVar (self->get_ref ()), mutability,
! 		  maybe_region.value ());
  	      }
  	      break;
  
--- 237,256 ----
  		      : Mutability::Mut;
  		rust_assert (self_param.has_lifetime ());
  
+ 		auto region = TyTy::Region::make_anonymous ();
  		auto maybe_region = context->lookup_and_resolve_lifetime (
  		  self_param.get_lifetime ());
! 		if (maybe_region.has_value ())
! 		  region = maybe_region.value ();
! 		else
  		  {
  		    rust_error_at (self_param.get_locus (),
  				   "failed to resolve lifetime");
  		  }
+ 
  		self_type = new TyTy::ReferenceType (
  		  self_param.get_mappings ().get_hirid (),
! 		  TyTy::TyVar (self->get_ref ()), mutability, region);
  	      }
  	      break;
  
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-type-util.cc gcc-16-20251123/gcc/rust/typecheck/rust-type-util.cc
*** gcc-16-20251116/gcc/rust/typecheck/rust-type-util.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-type-util.cc	Sun Nov 23 22:32:09 2025
*************** unify_site_and (HirId id, TyTy::TyWithLo
*** 221,233 ****
      }
    else if (cleanup)
      {
-       // FIXME
-       // reset the get_next_hir_id
- 
        for (auto &i : infers)
  	{
! 	  i.param->set_ref (i.pref);
! 	  i.param->set_ty_ref (i.ptyref);
  
  	  // remove the inference variable
  	  context.clear_type (i.infer);
--- 221,233 ----
      }
    else if (cleanup)
      {
        for (auto &i : infers)
  	{
! 	  if (i.param != nullptr)
! 	    {
! 	      i.param->set_ref (i.pref);
! 	      i.param->set_ty_ref (i.ptyref);
! 	    }
  
  	  // remove the inference variable
  	  context.clear_type (i.infer);
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-tyty-util.cc gcc-16-20251123/gcc/rust/typecheck/rust-tyty-util.cc
*** gcc-16-20251116/gcc/rust/typecheck/rust-tyty-util.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-tyty-util.cc	Sun Nov 23 22:32:09 2025
*************** TyVar::get_implicit_infer_var (location_
*** 62,75 ****
  }
  
  TyVar
! TyVar::get_implicit_const_infer_var (location_t locus)
  {
    auto &mappings = Analysis::Mappings::get ();
    auto context = Resolver::TypeCheckContext::get ();
  
!   TyVar ty_infer = get_implicit_infer_var (locus);
    HirId next = mappings.get_next_hir_id ();
!   auto infer = new ConstInferType (ty_infer.get_tyty (), next, next, {});
  
    context->insert_implicit_type (infer->get_ref (), infer);
    mappings.insert_location (infer->get_ref (), locus);
--- 62,76 ----
  }
  
  TyVar
! TyVar::get_implicit_const_infer_var (location_t locus, TyVar *implicit_type)
  {
    auto &mappings = Analysis::Mappings::get ();
    auto context = Resolver::TypeCheckContext::get ();
  
!   TyVar it = (implicit_type != nullptr) ? *implicit_type
! 					: get_implicit_infer_var (locus);
    HirId next = mappings.get_next_hir_id ();
!   auto infer = new ConstInferType (it.get_tyty (), next, next, {});
  
    context->insert_implicit_type (infer->get_ref (), infer);
    mappings.insert_location (infer->get_ref (), locus);
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-tyty-util.h gcc-16-20251123/gcc/rust/typecheck/rust-tyty-util.h
*** gcc-16-20251116/gcc/rust/typecheck/rust-tyty-util.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-tyty-util.h	Sun Nov 23 22:32:09 2025
*************** public:
*** 43,49 ****
  
    static TyVar get_implicit_infer_var (location_t locus);
  
!   static TyVar get_implicit_const_infer_var (location_t locus);
  
    static TyVar subst_covariant_var (TyTy::BaseType *orig,
  				    TyTy::BaseType *subst);
--- 43,50 ----
  
    static TyVar get_implicit_infer_var (location_t locus);
  
!   static TyVar get_implicit_const_infer_var (location_t locus,
! 					     TyVar *implicit_type = nullptr);
  
    static TyVar subst_covariant_var (TyTy::BaseType *orig,
  				    TyTy::BaseType *subst);
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-tyty.cc gcc-16-20251123/gcc/rust/typecheck/rust-tyty.cc
*** gcc-16-20251116/gcc/rust/typecheck/rust-tyty.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-tyty.cc	Sun Nov 23 22:32:09 2025
*************** BaseType::is_concrete () const
*** 785,795 ****
  {
    const TyTy::BaseType *x = destructure ();
  
!   if (x->is<ParamType> () || x->is<ProjectionType> ()
!       || x->is<ConstParamType> ())
      {
        return false;
      }
    // placeholder is a special case for this case when it is not resolvable
    // it means we its just an empty placeholder associated type which is
    // concrete
--- 785,802 ----
  {
    const TyTy::BaseType *x = destructure ();
  
!   if (x->is<ParamType> () || x->is<ProjectionType> ())
      {
        return false;
      }
+   else if (x->get_kind () == TyTy::TypeKind::CONST)
+     {
+       auto p = x->as_const_type ();
+       if (p->const_kind () == BaseConstType::ConstKind::Decl)
+ 	return false;
+ 
+       return true;
+     }
    // placeholder is a special case for this case when it is not resolvable
    // it means we its just an empty placeholder associated type which is
    // concrete
*************** ConstParamType::get_name () const
*** 3633,3641 ****
      return get_symbol ();
  
    BaseType *lookup = resolve ();
-   // Avoid infinite recursion if resolve() returns this same type
    if (lookup == this->as_base_type ())
!     return get_symbol ();
  
    return lookup->get_name ();
  }
--- 3640,3647 ----
      return get_symbol ();
  
    BaseType *lookup = resolve ();
    if (lookup == this->as_base_type ())
!     return get_symbol () + ":" + get_specified_type ()->get_name ();
  
    return lookup->get_name ();
  }
*************** ConstParamType::is_equal (const BaseType
*** 3660,3668 ****
      return false;
  
    if (can_resolve ())
!     return Resolver::types_compatable (TyTy::TyWithLocation (resolve ()),
! 				       TyTy::TyWithLocation (other2.resolve ()),
! 				       ident.locus, false);
  
    return get_symbol ().compare (other2.get_symbol ()) == 0;
  }
--- 3666,3690 ----
      return false;
  
    if (can_resolve ())
!     {
!       // Compare the resolved ty_ref values to avoid infinite recursion
!       // through types_compatable/unification
!       BaseType *lhs = resolve ();
!       BaseType *rhs = other2.resolve ();
! 
!       // If they resolve to the same type (same ty_ref), they're equal
!       if (lhs->get_ty_ref () == rhs->get_ty_ref ())
! 	return true;
! 
!       // Otherwise check if the resolved types are equal
!       // Avoid recursion by checking if we'd be comparing ConstParamTypes again
!       if (lhs->get_kind () == TypeKind::CONST
! 	  && lhs->as_const_type ()->const_kind ()
! 	       == BaseConstType::ConstKind::Decl)
! 	return false; // Would cause recursion, so not equal
! 
!       return lhs->is_equal (*rhs);
!     }
  
    return get_symbol ().compare (other2.get_symbol ()) == 0;
  }
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-tyty.h gcc-16-20251123/gcc/rust/typecheck/rust-tyty.h
*** gcc-16-20251116/gcc/rust/typecheck/rust-tyty.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-tyty.h	Sun Nov 23 22:32:09 2025
*************** public:
*** 1050,1055 ****
--- 1050,1056 ----
    static const uint8_t FNTYPE_IS_METHOD_FLAG = 0x01;
    static const uint8_t FNTYPE_IS_EXTERN_FLAG = 0x02;
    static const uint8_t FNTYPE_IS_VARADIC_FLAG = 0X04;
+   static const uint8_t FNTYPE_IS_SYN_CONST_FLAG = 0X08;
  
    FnType (HirId ref, DefId id, std::string identifier, RustIdent ident,
  	  uint8_t flags, ABI abi, std::vector<FnParam> params, BaseType *type,
*************** public:
*** 1111,1116 ****
--- 1112,1122 ----
  
    bool is_variadic () const { return (flags & FNTYPE_IS_VARADIC_FLAG) != 0; }
  
+   bool is_syn_constant () const
+   {
+     return (flags & FNTYPE_IS_SYN_CONST_FLAG) != 0;
+   }
+ 
    DefId get_id () const { return id; }
  
    // get the Self type for the method
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-unify.cc gcc-16-20251123/gcc/rust/typecheck/rust-unify.cc
*** gcc-16-20251116/gcc/rust/typecheck/rust-unify.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-unify.cc	Sun Nov 23 22:32:09 2025
***************
*** 18,25 ****
  
  #include "rust-unify.h"
  #include "fold-const.h"
  #include "rust-tyty.h"
- #include "tree.h"
  
  namespace Rust {
  namespace Resolver {
--- 18,25 ----
  
  #include "rust-unify.h"
  #include "fold-const.h"
+ #include "rust-tyty-util.h"
  #include "rust-tyty.h"
  
  namespace Rust {
  namespace Resolver {
*************** UnifyRules::go ()
*** 302,336 ****
        else if (ltype->get_kind () == TyTy::TypeKind::CONST
  	       && rtype->get_kind () == TyTy::TypeKind::CONST)
  	{
! 	  const auto &lhs = *ltype->as_const_type ();
! 	  const auto &rhs = *rtype->as_const_type ();
  
  	  bool both_are_decls
! 	    = lhs.const_kind () == TyTy::BaseConstType::ConstKind::Decl
! 	      && rhs.const_kind () == TyTy::BaseConstType::ConstKind::Decl;
  	  bool have_decls
! 	    = lhs.const_kind () == TyTy::BaseConstType::ConstKind::Decl
! 	      || rhs.const_kind () == TyTy::BaseConstType::ConstKind::Decl;
  
  	  if (have_decls && !both_are_decls)
  	    {
! 	      if (lhs.const_kind () == TyTy::BaseConstType::ConstKind::Decl)
  		{
! 		  TyTy::TyVar iv = TyTy::TyVar::get_implicit_const_infer_var (
! 		    lhs.as_base_type ()->get_locus ());
! 		  ltype = iv.get_tyty ();
  		}
! 	      else if (rhs.const_kind ()
  		       == TyTy::BaseConstType::ConstKind::Decl)
  		{
! 		  TyTy::TyVar iv = TyTy::TyVar::get_implicit_const_infer_var (
! 		    rhs.as_base_type ()->get_locus ());
! 		  rtype = iv.get_tyty ();
  		}
  	    }
  	}
      }
  
    switch (ltype->get_kind ())
      {
      case TyTy::INFER:
--- 302,368 ----
        else if (ltype->get_kind () == TyTy::TypeKind::CONST
  	       && rtype->get_kind () == TyTy::TypeKind::CONST)
  	{
! 	  auto lhs = ltype->as_const_type ();
! 	  auto rhs = rtype->as_const_type ();
  
  	  bool both_are_decls
! 	    = lhs->const_kind () == TyTy::BaseConstType::ConstKind::Decl
! 	      && rhs->const_kind () == TyTy::BaseConstType::ConstKind::Decl;
  	  bool have_decls
! 	    = lhs->const_kind () == TyTy::BaseConstType::ConstKind::Decl
! 	      || rhs->const_kind () == TyTy::BaseConstType::ConstKind::Decl;
  
  	  if (have_decls && !both_are_decls)
  	    {
! 	      if (lhs->const_kind () == TyTy::BaseConstType::ConstKind::Decl)
  		{
! 		  auto l = lhs->as_base_type ()->get_locus ();
! 		  auto p = static_cast<TyTy::ConstParamType *> (lhs);
! 		  auto it = TyTy::TyVar::get_implicit_infer_var (l);
! 		  auto iv = TyTy::TyVar::get_implicit_const_infer_var (l, &it);
! 		  auto ivt = iv.get_tyty ();
! 
! 		  infers.emplace_back (0, 0, nullptr, it.get_tyty ());
! 		  infers.emplace_back (ltype->get_ref (), ltype->get_ty_ref (),
! 				       p, ivt);
! 
! 		  ltype = ivt;
! 		  p->set_ty_ref (ltype->get_ref ());
  		}
! 	      else if (rhs->const_kind ()
  		       == TyTy::BaseConstType::ConstKind::Decl)
  		{
! 		  auto l = rhs->as_base_type ()->get_locus ();
! 		  auto p = static_cast<TyTy::ConstParamType *> (rhs);
! 		  auto it = TyTy::TyVar::get_implicit_infer_var (l);
! 		  auto iv = TyTy::TyVar::get_implicit_const_infer_var (l, &it);
! 		  auto ivt = iv.get_tyty ();
! 
! 		  infers.emplace_back (0, 0, nullptr, it.get_tyty ());
! 		  infers.emplace_back (rtype->get_ref (), rtype->get_ty_ref (),
! 				       p, ivt);
! 
! 		  rtype = ivt;
! 		  p->set_ty_ref (rtype->get_ref ());
  		}
  	    }
  	}
      }
  
+   if (ltype->get_kind () != TyTy::TypeKind::CONST
+       && rtype->get_kind () == TyTy::TypeKind::CONST)
+     {
+       auto *rc = rtype->as_const_type ();
+       rtype = rc->get_specified_type ();
+     }
+ 
+   if (ltype->get_kind () == TyTy::TypeKind::CONST
+       && rtype->get_kind () != TyTy::TypeKind::CONST)
+     {
+       auto *lc = ltype->as_const_type ();
+       ltype = lc->get_specified_type ();
+     }
+ 
    switch (ltype->get_kind ())
      {
      case TyTy::INFER:
diff -Nrcpad gcc-16-20251116/gcc/rust/typecheck/rust-unify.h gcc-16-20251123/gcc/rust/typecheck/rust-unify.h
*** gcc-16-20251116/gcc/rust/typecheck/rust-unify.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/typecheck/rust-unify.h	Sun Nov 23 22:32:09 2025
*************** class UnifyRules
*** 30,44 ****
  public:
    struct InferenceSite
    {
!     InferenceSite (HirId pref, HirId ptyref, TyTy::ParamType *param,
! 		   TyTy::InferType *infer)
        : pref (pref), ptyref (ptyref), param (param), infer (infer)
      {}
  
      HirId pref;
      HirId ptyref;
!     TyTy::ParamType *param;
!     TyTy::InferType *infer;
    };
    struct CommitSite
    {
--- 30,44 ----
  public:
    struct InferenceSite
    {
!     InferenceSite (HirId pref, HirId ptyref, TyTy::BaseGeneric *param,
! 		   TyTy::BaseType *infer)
        : pref (pref), ptyref (ptyref), param (param), infer (infer)
      {}
  
      HirId pref;
      HirId ptyref;
!     TyTy::BaseGeneric *param;
!     TyTy::BaseType *infer;
    };
    struct CommitSite
    {
diff -Nrcpad gcc-16-20251116/gcc/rust/util/rust-attribute-values.h gcc-16-20251123/gcc/rust/util/rust-attribute-values.h
*** gcc-16-20251116/gcc/rust/util/rust-attribute-values.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/util/rust-attribute-values.h	Sun Nov 23 22:32:09 2025
*************** public:
*** 49,56 ****
    static constexpr auto &PROC_MACRO_DERIVE = "proc_macro_derive";
    static constexpr auto &PROC_MACRO_ATTRIBUTE = "proc_macro_attribute";
  
-   static constexpr auto &DERIVE = "derive";
- 
    static constexpr auto &TARGET_FEATURE = "target_feature";
    // From now on, these are reserved by the compiler and gated through
    // #![feature(rustc_attrs)]
--- 49,54 ----
diff -Nrcpad gcc-16-20251116/gcc/rust/util/rust-attributes.cc gcc-16-20251123/gcc/rust/util/rust-attributes.cc
*** gcc-16-20251116/gcc/rust/util/rust-attributes.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/util/rust-attributes.cc	Sun Nov 23 22:32:09 2025
*************** static const BuiltinAttrDefinition __def
*** 90,97 ****
       {Attrs::PROC_MACRO, EXPANSION},
       {Attrs::PROC_MACRO_DERIVE, EXPANSION},
       {Attrs::PROC_MACRO_ATTRIBUTE, EXPANSION},
- 
-      {Attrs::DERIVE, EXPANSION},
       // FIXME: This is not implemented yet, see
       // https://github.com/Rust-GCC/gccrs/issues/1475
       {Attrs::TARGET_FEATURE, CODE_GENERATION},
--- 90,95 ----
*************** static const BuiltinAttrDefinition __def
*** 101,107 ****
       {Attrs::RUSTC_INHERIT_OVERFLOW_CHECKS, CODE_GENERATION},
       {Attrs::STABLE, STATIC_ANALYSIS},
       {Attrs::UNSTABLE, STATIC_ANALYSIS},
- 
       // assuming we keep these for static analysis
       {Attrs::RUSTC_PROMOTABLE, CODE_GENERATION},
       {Attrs::RUSTC_CONST_STABLE, STATIC_ANALYSIS},
--- 99,104 ----
*************** static const BuiltinAttrDefinition __def
*** 114,136 ****
       {Attrs::RUSTC_RESERVATION_IMPL, TYPE_CHECK},
       {Attrs::RUSTC_PAREN_SUGAR, TYPE_CHECK},
       {Attrs::RUSTC_NONNULL_OPTIMIZATION_GUARANTEED, TYPE_CHECK},
- 
       {Attrs::RUSTC_LAYOUT_SCALAR_VALID_RANGE_START, CODE_GENERATION},
- 
       // TODO: be careful about calling functions marked with this?
       {Attrs::RUSTC_ARGS_REQUIRED_CONST, CODE_GENERATION},
- 
       {Attrs::PRELUDE_IMPORT, NAME_RESOLUTION},
- 
       {Attrs::RUSTC_DIAGNOSTIC_ITEM, STATIC_ANALYSIS},
       {Attrs::RUSTC_ON_UNIMPLEMENTED, STATIC_ANALYSIS},
- 
       {Attrs::FUNDAMENTAL, TYPE_CHECK},
       {Attrs::NON_EXHAUSTIVE, TYPE_CHECK},
       {Attrs::RUSTFMT, EXTERNAL},
- 
       {Attrs::TEST, CODE_GENERATION}};
  
  BuiltinAttributeMappings *
  BuiltinAttributeMappings::get ()
  {
--- 111,132 ----
       {Attrs::RUSTC_RESERVATION_IMPL, TYPE_CHECK},
       {Attrs::RUSTC_PAREN_SUGAR, TYPE_CHECK},
       {Attrs::RUSTC_NONNULL_OPTIMIZATION_GUARANTEED, TYPE_CHECK},
       {Attrs::RUSTC_LAYOUT_SCALAR_VALID_RANGE_START, CODE_GENERATION},
       // TODO: be careful about calling functions marked with this?
       {Attrs::RUSTC_ARGS_REQUIRED_CONST, CODE_GENERATION},
       {Attrs::PRELUDE_IMPORT, NAME_RESOLUTION},
       {Attrs::RUSTC_DIAGNOSTIC_ITEM, STATIC_ANALYSIS},
       {Attrs::RUSTC_ON_UNIMPLEMENTED, STATIC_ANALYSIS},
       {Attrs::FUNDAMENTAL, TYPE_CHECK},
       {Attrs::NON_EXHAUSTIVE, TYPE_CHECK},
       {Attrs::RUSTFMT, EXTERNAL},
       {Attrs::TEST, CODE_GENERATION}};
  
+ static const std::set<std::string> __outer_attributes
+   = {Attrs::INLINE,	    Attrs::DERIVE_ATTR, Attrs::ALLOW_INTERNAL_UNSTABLE,
+      Attrs::LANG,	    Attrs::REPR,	Attrs::PATH,
+      Attrs::TARGET_FEATURE, Attrs::TEST};
+ 
  BuiltinAttributeMappings *
  BuiltinAttributeMappings::get ()
  {
*************** check_proc_macro_non_root (AST::AttrVec
*** 327,332 ****
--- 323,348 ----
  }
  
  void
+ AttributeChecker::check_inner_attribute (const AST::Attribute &attribute)
+ {
+   BuiltinAttrDefinition result;
+ 
+   if (!is_builtin (attribute, result))
+     return;
+ 
+   if (__outer_attributes.find (result.name) != __outer_attributes.end ())
+     rust_error_at (attribute.get_locus (),
+ 		   "attribute cannot be used at crate level");
+ }
+ 
+ void
+ AttributeChecker::check_inner_attributes (const AST::AttrVec &attributes)
+ {
+   for (auto &attr : attributes)
+     check_inner_attribute (attr);
+ }
+ 
+ void
  AttributeChecker::check_attribute (const AST::Attribute &attribute)
  {
    if (!attribute.empty_input ())
*************** AttributeChecker::check_attribute (const
*** 357,371 ****
  }
  
  void
- AttributeChecker::check_inner_attributes (const AST::AttrVec &attributes)
- {
-   for (auto &attr : attributes)
-     if (attr.is_derive ())
-       rust_error_at (attr.get_locus (),
- 		     "derive attribute cannot be used at crate level");
- }
- 
- void
  AttributeChecker::check_attributes (const AST::AttrVec &attributes)
  {
    for (auto &attr : attributes)
--- 373,378 ----
diff -Nrcpad gcc-16-20251116/gcc/rust/util/rust-attributes.h gcc-16-20251123/gcc/rust/util/rust-attributes.h
*** gcc-16-20251116/gcc/rust/util/rust-attributes.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/util/rust-attributes.h	Sun Nov 23 22:32:09 2025
*************** public:
*** 102,113 ****
  
  private:
    using AST::DefaultASTVisitor::visit;
    /* Check the validity of a given attribute */
    void check_attribute (const AST::Attribute &attribute);
- 
    /* Check the validity of all given attributes */
- 
-   void check_inner_attributes (const AST::AttrVec &attributes);
    void check_attributes (const AST::AttrVec &attributes);
  
    // rust-ast.h
--- 102,115 ----
  
  private:
    using AST::DefaultASTVisitor::visit;
+ 
+   /* Check the validity of an inner attribute */
+   void check_inner_attribute (const AST::Attribute &attribute);
+   /* Check the validy of all inner attributes */
+   void check_inner_attributes (const AST::AttrVec &attributes);
    /* Check the validity of a given attribute */
    void check_attribute (const AST::Attribute &attribute);
    /* Check the validity of all given attributes */
    void check_attributes (const AST::AttrVec &attributes);
  
    // rust-ast.h
diff -Nrcpad gcc-16-20251116/gcc/rust/util/rust-hir-map.cc gcc-16-20251123/gcc/rust/util/rust-hir-map.cc
*** gcc-16-20251116/gcc/rust/util/rust-hir-map.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/util/rust-hir-map.cc	Sun Nov 23 22:32:09 2025
*************** Mappings::lookup_macro_invocation (AST::
*** 925,934 ****
  void
  Mappings::insert_exported_macro (AST::MacroRulesDefinition &def)
  {
!   exportedMacros.emplace_back (def.get_node_id ());
  }
  
! std::vector<NodeId> &
  Mappings::get_exported_macros ()
  {
    return exportedMacros;
--- 925,934 ----
  void
  Mappings::insert_exported_macro (AST::MacroRulesDefinition &def)
  {
!   exportedMacros.emplace_back (def);
  }
  
! std::vector<AST::MacroRulesDefinition>
  Mappings::get_exported_macros ()
  {
    return exportedMacros;
diff -Nrcpad gcc-16-20251116/gcc/rust/util/rust-hir-map.h gcc-16-20251123/gcc/rust/util/rust-hir-map.h
*** gcc-16-20251116/gcc/rust/util/rust-hir-map.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/rust/util/rust-hir-map.h	Sun Nov 23 22:32:09 2025
*************** public:
*** 279,285 ****
    lookup_macro_invocation (AST::MacroInvocation &invoc);
  
    void insert_exported_macro (AST::MacroRulesDefinition &def);
!   std::vector<NodeId> &get_exported_macros ();
  
    void insert_derive_proc_macros (CrateNum num,
  				  std::vector<CustomDeriveProcMacro> macros);
--- 279,285 ----
    lookup_macro_invocation (AST::MacroInvocation &invoc);
  
    void insert_exported_macro (AST::MacroRulesDefinition &def);
!   std::vector<AST::MacroRulesDefinition> get_exported_macros ();
  
    void insert_derive_proc_macros (CrateNum num,
  				  std::vector<CustomDeriveProcMacro> macros);
*************** private:
*** 408,414 ****
    std::map<NodeId, std::pair<AST::MacroRulesDefinition *, CrateNum>>
      macroMappings;
    std::map<NodeId, AST::MacroRulesDefinition *> macroInvocations;
!   std::vector<NodeId> exportedMacros;
  
    // Procedural macros
    std::map<CrateNum, std::vector<CustomDeriveProcMacro>>
--- 408,414 ----
    std::map<NodeId, std::pair<AST::MacroRulesDefinition *, CrateNum>>
      macroMappings;
    std::map<NodeId, AST::MacroRulesDefinition *> macroInvocations;
!   std::vector<AST::MacroRulesDefinition> exportedMacros;
  
    // Procedural macros
    std::map<CrateNum, std::vector<CustomDeriveProcMacro>>
diff -Nrcpad gcc-16-20251116/gcc/simplify-rtx.cc gcc-16-20251123/gcc/simplify-rtx.cc
*** gcc-16-20251116/gcc/simplify-rtx.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/simplify-rtx.cc	Sun Nov 23 22:32:09 2025
*************** simplify_const_binary_operation (enum rt
*** 5489,5498 ****
        && code == VEC_CONCAT
        && (CONST_SCALAR_INT_P (op0)
  	  || CONST_FIXED_P (op0)
! 	  || CONST_DOUBLE_AS_FLOAT_P (op0))
        && (CONST_SCALAR_INT_P (op1)
  	  || CONST_DOUBLE_AS_FLOAT_P (op1)
! 	  || CONST_FIXED_P (op1)))
      {
        /* Both inputs have a constant number of elements, so the result
  	 must too.  */
--- 5489,5500 ----
        && code == VEC_CONCAT
        && (CONST_SCALAR_INT_P (op0)
  	  || CONST_FIXED_P (op0)
! 	  || CONST_DOUBLE_AS_FLOAT_P (op0)
! 	  || CONST_VECTOR_P (op0))
        && (CONST_SCALAR_INT_P (op1)
  	  || CONST_DOUBLE_AS_FLOAT_P (op1)
! 	  || CONST_FIXED_P (op1)
! 	  || CONST_VECTOR_P (op1)))
      {
        /* Both inputs have a constant number of elements, so the result
  	 must too.  */
*************** simplify_context::simplify_relational_op
*** 6498,6507 ****
  	  /* only enters if op1 is 0 */
  	  /* Verify IOR operand is NE */
  	  && GET_CODE (XEXP (op0, 0)) == NE
! 	  /* Verfiy second NE operand is 0 */
  	  && XEXP (XEXP (op0, 0), 1) == CONST0_RTX (mode))
  	{
! 	  rtx t = gen_rtx_IOR (mode, XEXP (XEXP (op0, 0), 0), XEXP (op0, 1));
  	  t = gen_rtx_fmt_ee (code, mode, t, CONST0_RTX (mode));
  	  return t;
  	}
--- 6500,6509 ----
  	  /* only enters if op1 is 0 */
  	  /* Verify IOR operand is NE */
  	  && GET_CODE (XEXP (op0, 0)) == NE
! 	  /* Verify second NE operand is 0 */
  	  && XEXP (XEXP (op0, 0), 1) == CONST0_RTX (mode))
  	{
! 	  rtx t = gen_rtx_IOR (cmp_mode, XEXP (XEXP (op0, 0), 0), XEXP (op0, 1));
  	  t = gen_rtx_fmt_ee (code, mode, t, CONST0_RTX (mode));
  	  return t;
  	}
diff -Nrcpad gcc-16-20251116/gcc/target.def gcc-16-20251123/gcc/target.def
*** gcc-16-20251116/gcc/target.def	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/target.def	Sun Nov 23 22:32:09 2025
*************** constant of type @var{type}.",
*** 2138,2143 ****
--- 2138,2160 ----
   default_preferred_else_value)
  
  DEFHOOK
+ (instruction_selection,
+  "This hook allows a target to perform custom instruction selection for an\n\
+ instruction or sequence of instructions before expand to allow expansion to\n\
+ generate more efficient code.\n\
+ \n\
+ @var{fun} is the current function being considered and @var{gsi} is the\n\
+ iterator pointing to the current instruction being optimized.  The default\n\
+ implementation does not do any rewriting and returns false.  The result of\n\
+ the function should be whether any changes were made to the CFG or not.  If a\n\
+ change was made then the @var{gsi} should be left at the same position as at\n\
+ the function start.  The caller is allowed to change the CFG at any point\n\
+ before the current statement @var{gsi} is pointing to but not afterwards.",
+  bool,
+  (function *fun, gimple_stmt_iterator *gsi),
+  default_instruction_selection)
+ 
+ DEFHOOK
  (record_offload_symbol,
   "Used when offloaded functions are seen in the compilation unit and no named\n\
  sections are available.  It is called once for each symbol that must be\n\
diff -Nrcpad gcc-16-20251116/gcc/targhooks.cc gcc-16-20251123/gcc/targhooks.cc
*** gcc-16-20251116/gcc/targhooks.cc	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/targhooks.cc	Sun Nov 23 22:32:09 2025
*************** default_preferred_else_value (unsigned,
*** 2764,2769 ****
--- 2764,2777 ----
    return build_zero_cst (type);
  }
  
+ /* The default implementation of TARGET_INSTRUCTION_SELECTION.  */
+ 
+ bool
+ default_instruction_selection (function *, gimple_stmt_iterator *)
+ {
+   return false;
+ }
+ 
  /* Default implementation of TARGET_HAVE_SPECULATION_SAFE_VALUE.  */
  bool
  default_have_speculation_safe_value (bool active ATTRIBUTE_UNUSED)
diff -Nrcpad gcc-16-20251116/gcc/targhooks.h gcc-16-20251123/gcc/targhooks.h
*** gcc-16-20251116/gcc/targhooks.h	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/targhooks.h	Sun Nov 23 22:32:09 2025
*************** extern machine_mode default_mode_for_flo
*** 305,311 ****
  extern HOST_WIDE_INT default_stack_clash_protection_alloca_probe_range (void);
  extern void default_select_early_remat_modes (sbitmap);
  extern tree default_preferred_else_value (unsigned, tree, unsigned, tree *);
! 
  extern bool default_have_speculation_safe_value (bool);
  extern bool speculation_safe_value_not_needed (bool);
  extern rtx default_speculation_safe_value (machine_mode, rtx, rtx, rtx);
--- 305,311 ----
  extern HOST_WIDE_INT default_stack_clash_protection_alloca_probe_range (void);
  extern void default_select_early_remat_modes (sbitmap);
  extern tree default_preferred_else_value (unsigned, tree, unsigned, tree *);
! extern bool default_instruction_selection (function *, gimple_stmt_iterator *);
  extern bool default_have_speculation_safe_value (bool);
  extern bool speculation_safe_value_not_needed (bool);
  extern rtx default_speculation_safe_value (machine_mode, rtx, rtx, rtx);
diff -Nrcpad gcc-16-20251116/gcc/testsuite/ChangeLog gcc-16-20251123/gcc/testsuite/ChangeLog
*** gcc-16-20251116/gcc/testsuite/ChangeLog	Sun Nov 16 22:32:57 2025
--- gcc-16-20251123/gcc/testsuite/ChangeLog	Sun Nov 23 22:32:09 2025
***************
*** 1,3 ****
--- 1,618 ----
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122636
+ 	* g++.dg/modules/internal-19_a.C: New test.
+ 	* g++.dg/modules/internal-19_b.C: New test.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/cpp2a/is-pointer-interconvertible-base-of2.C: New test.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/cpp2a/is-layout-compatible4.C: New test.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/cpp1z/has-unique-obj-representations5.C: New test.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/ext/is_destructible3.C: Add test for function type.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/ext/is_virtual_base_of_diagnostic2.C: Adjust
+ 	diagnostic.
+ 
+ 2025-11-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* g++.dg/cpp2a/is-layout-compatible3.C: Adjust expected results.
+ 
+ 2025-11-22  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR rtl-optimization/122701
+ 	* gcc.dg/torture/pr122701.c: New test.
+ 
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 	    Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* c-c++-common/gomp/delim-declare-variant-1.c: New.
+ 	* c-c++-common/gomp/delim-declare-variant-2.c: New.
+ 	* c-c++-common/gomp/delim-declare-variant-3.c: New.
+ 	* c-c++-common/gomp/delim-declare-variant-4.c: New.
+ 	* c-c++-common/gomp/delim-declare-variant-5.c: New.
+ 	* c-c++-common/gomp/delim-declare-variant-6.c: New.
+ 	* c-c++-common/gomp/delim-declare-variant-7.c: New.
+ 	* c-c++-common/gomp/delim-declare-variant-8.c: New.
+ 	* c-c++-common/gomp/delim-declare-variant-9.c: New.
+ 
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 	    Julian Brown  <julian@codesourcery.com>
+ 	    waffl3x  <waffl3x@baylibre.com>
+ 
+ 	* g++.dg/gomp/delim-declare-variant-1.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-2.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-3.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-4.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-5.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-6.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-7.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-40.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-41.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-50.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-51.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-52.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-70.C: New.
+ 	* g++.dg/gomp/delim-declare-variant-71.C: New.
+ 
+ 2025-11-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122788
+ 	* g++.dg/cpp26/expansion-stmt27.C: New test.
+ 
+ 2025-11-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122185
+ 	* g++.dg/cpp1z/pr122185.C: New test.
+ 
+ 2025-11-22  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* gcc.target/loongarch/vector/lasx/lasx-struct-move.c: New test.
+ 
+ 2025-11-22  Deng Jianbo  <dengjianbo@loongson.cn>
+ 
+ 	* gcc.target/loongarch/bstrins-5.c: New test.
+ 	* gcc.target/loongarch/bstrins-6.c: New test.
+ 
+ 2025-11-22  zhaozhou  <zhaozhou@loongson.cn>
+ 
+ 	* gcc.target/loongarch/vector/lsx/lsx-vec-construct-opt.c:
+ 
+ 2025-11-22  Daniele Sahebi  <daniele@mkryss.me>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122658
+ 	* g++.dg/cpp2a/consteval42.C: New test.
+ 
+ 2025-11-21  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/118358
+ 	* gcc.target/xstormy16/pr118358.c: New.
+ 
+ 2025-11-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122762
+ 	PR tree-optimization/122736
+ 	PR tree-optimization/122790
+ 	* gcc.dg/vect/vect-simd-clone-23.c: New testcase.
+ 
+ 2025-11-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122778
+ 	* gcc.dg/vect/vect-simd-clone-22.c: New testcase.
+ 	* gcc.dg/vect/vect-simd-clone-22a.c: Likewise.
+ 
+ 2025-11-21  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/120529
+ 	* g++.dg/ext/reference_xes_from_temporary1.C: New test.
+ 
+ 2025-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121445
+ 	* g++.dg/cpp1y/constexpr-121445.C: New test.
+ 
+ 2025-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/122598
+ 	* gcc.target/i386/pr122598.c: New test.
+ 
+ 2025-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/122773
+ 	* gcc.dg/pr122773.c: New test.
+ 
+ 2025-11-21  Loeka Rogge  <loeka@synopsys.com>
+ 	    Keith Packard  <keithp@keithp.com>
+ 
+ 	PR target/120375
+ 	* gcc.target/arc/no-barrel-shifter.c: New test.
+ 
+ 2025-11-21  Claudiu Zissulescu  <claziss@gmail.com>
+ 	    Michiel Derhaeg  <michiel@synopsys.com>
+ 
+ 	* gcc.target/arc/extvsi-3.c: New test.
+ 
+ 2025-11-21  Deng Jianbo  <dengjianbo@loongson.cn>
+ 
+ 	* gcc.target/loongarch/vector/lasx/lasx-builtin.c: Replace xvrepli
+ 	with xvldi.
+ 	* gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c: Fix test.
+ 	* gcc.target/loongarch/vector/lsx/lsx-builtin.c: Repalce vrepli with
+ 	vldi.
+ 	* gcc.target/loongarch/vrepli.c: Ditto.
+ 	* gcc.target/loongarch/vector/lasx/lasx-xvldi-2.c: New test.
+ 	* gcc.target/loongarch/vector/lsx/lsx-vldi-2.c: New test.
+ 
+ 2025-11-20  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* gcc.target/riscv/pr113715.c: New test.
+ 	* gcc.target/riscv/rv32e_zcmp.c: Update expected output for
+ 	test_popretz.
+ 	* gcc.target/riscv/rv32i_zcmp.c: Likewise.
+ 
+ 2025-11-20  Pan Li  <pan2.li@intel.com>
+ 
+ 	PR target/122692
+ 	* g++.target/riscv/pr122692-run-1.C: New test.
+ 	* g++.target/riscv/pr122692-run-2.C: New test.
+ 
+ 2025-11-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/122695
+ 	* gcc.target/loongarch/pr122695-1.c: New test.
+ 	* gcc.target/loongarch/pr122695-2.c: New test.
+ 
+ 2025-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/120876
+ 	* g++.dg/parse/crash81.C: New test.
+ 
+ 2025-11-19  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/122756
+ 	* gcc.dg/pr122756.c: New.
+ 
+ 2025-11-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/119580
+ 	* g++.dg/template/crash106.C: Adjust expected diagnostics.
+ 	* g++.dg/template/crash112.C: Likewise.
+ 	* g++.dg/template/dependent-args1.C: Likewise.
+ 	* g++.dg/cpp0x/pr119580.C: New test.
+ 
+ 2025-11-19  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122754
+ 	* g++.dg/tree-ssa/string-strlen-1.C: New test.
+ 
+ 2025-11-19  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	PR target/122763
+ 	* gcc.target/aarch64/pr122763.c: New test.
+ 
+ 2025-11-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122668
+ 	PR c++/114764
+ 	* g++.dg/cpp0x/noexcept91.C: New test.
+ 
+ 2025-11-19  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* gcc.target/aarch64/simd/fold_to_highpart_6.c: Update codegen.
+ 	* gcc.target/aarch64/sve/fold_to_highpart_1.c: New test.
+ 	* gcc.target/aarch64/sve/fold_to_highpart_2.c: New test.
+ 
+ 2025-11-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122722
+ 	* gcc.dg/vect/slp-reduc-14.c: New testcase.
+ 
+ 2025-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/121519
+ 	* gcc.dg/pr121519.c: Add testcase for already fixed PR.
+ 
+ 2025-11-19  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c: Add missing
+ 	extern "C". Remove dg-skip-if.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c: Likewise. Add
+ 	check-function-bodies.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c: Likewise.
+ 
+ 2025-11-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122747
+ 	* gcc.target/i386/vect-epilogues-10.c: New testcase.
+ 
+ 2025-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/DRs/dr1670-1.C: New test.
+ 	* g++.dg/DRs/dr1670-2.C: New test.
+ 	* g++.dg/DRs/dr1670-3.C: New test.
+ 	* g++.dg/modules/auto-1_a.H: Use dg-options instead of
+ 	dg-additional-options.
+ 	* g++.dg/modules/auto-1_b.C: Likewise.
+ 	* g++.dg/cpp1y/auto-fn12.C: Likewise.
+ 	* g++.dg/cpp1y/auto-fn13.C: Add empty dg-options.
+ 	* g++.dg/cpp1y/auto-fn22.C: Likewise.
+ 	* g++.dg/cpp1y/constexpr-assert2.C: Likewise.
+ 	* g++.dg/cpp1y/auto-fn44.C: Add dg-options -Wpedantic and expect
+ 	further warnings.
+ 	* g++.dg/cpp1y/auto-fn50.C: Likewise.
+ 	* g++.dg/cpp0x/auto9.C: Expect two errors always rather than just
+ 	for C++11.
+ 
+ 2025-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/122671
+ 	* g++.dg/cpp26/constexpr-eh17.C: New test.
+ 
+ 2025-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/122184
+ 	* g++.dg/opt/pr122184-1.C: New test.
+ 	* g++.dg/opt/pr122184-2.C: New test.
+ 
+ 2025-11-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* c-c++-common/asan/pr59063-2.c: Enable on Solaris.
+ 
+ 2025-11-19  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR target/119130
+ 	* gcc.target/powerpc/builtins-1-p9-runnable.c: Use same expected
+ 	results for both endian format.
+ 
+ 2025-11-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/32365
+ 	* gfortran.dg/goacc/routine-1.f90: Adjust dg-error format.
+ 	* gfortran.dg/goacc/routine-2.f90: Adjust dg-error format.
+ 	* gfortran.dg/gomp/declare-variant-17.f90: Adjust dg-error format.
+ 	* gfortran.dg/gomp/order-2.f90: Adjust dg-error format.
+ 	* gfortran.dg/gomp/pr78026.f03: Adjust dg-error format.
+ 	* gfortran.dg/gomp/requires-4.f90: Adjust dg-error format.
+ 	* gfortran.dg/gomp/requires-6.f90: Adjust dg-error format.
+ 
+ 2025-11-18  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_f16_bounds.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_f32_bounds.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_s16_bounds.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_s32_bounds.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_s64_bounds.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_s8_bounds.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_u16_bounds.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_u32_bounds.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_u64_bounds.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vsetq_lane_u8_bounds.c: New test.
+ 
+ 2025-11-18  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/117814
+ 	* gcc.target/arm/mve/intrinsics/pr117814-f16.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/pr117814-2-f16.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/pr117814-3-f16.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/pr117814-4-f16.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/pr117814-f32.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/pr117814-2-f32.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/pr117814-3-f32.c: New test.
+ 	* gcc.target/arm/fp16-compile-none-1.c: Delete.
+ 	* g++.target/arm/mve/general-c++/nomve_fp_1.c: Fix expected error
+ 	message.
+ 	* lib/target-supports.exp
+ 	(check_effective_target_arm_v8_1m_mve_nofp_ok_nocache): New.
+ 	(check_effective_target_arm_v8_1m_mve_nofp_ok): New.
+ 	(add_options_for_arm_v8_1m_mve_nofp): New.
+ 
+ 2025-11-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/32365
+ 	* gfortran.dg/common_22.f90: Update.
+ 	* gfortran.dg/common_24.f: Update.
+ 	* gfortran.dg/goacc/routine-1.f90: Update.
+ 	* gfortran.dg/goacc/routine-2.f90: Update.
+ 	* gfortran.dg/gomp/declare-variant-17.f90: Update.
+ 	* gfortran.dg/gomp/interop-1.f90: Update.
+ 	* gfortran.dg/gomp/order-2.f90: Update.
+ 	* gfortran.dg/gomp/pr78026.f03: Update.
+ 	* gfortran.dg/gomp/requires-4.f90: Update.
+ 	* gfortran.dg/gomp/requires-6.f90: Update.
+ 	* gfortran.dg/pr61669.f90: Update.
+ 	* gfortran.dg/spec_statement_in_exec.f90: New test exercises
+ 	data/common/namelist/OpenMP directives with -fopenmp.
+ 
+ 2025-11-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* gcc.dg/pr116815.c: Require target int32.
+ 
+ 2025-11-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122736
+ 	* gcc.target/i386/vect-pr122736.c: New testcase.
+ 
+ 2025-11-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122723
+ 	* gcc.dg/vect/vect-reduc-cond-add-1.c: New generic functional
+ 	testcase.
+ 	* gcc.target/i386/vect-epilogues-6.c: New testcase.
+ 	* gcc.target/i386/vect-epilogues-7.c: Likewise.
+ 	* gcc.target/i386/vect-epilogues-8.c: Likewise.
+ 	* gcc.target/i386/vect-epilogues-9.c: Likewise.
+ 
+ 2025-11-18  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/avx512vl-pr103750-2.c: New test.
+ 
+ 2025-11-17  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/122709
+ 	* gfortran.dg/select_contiguous.f90: New test.
+ 
+ 2025-11-17  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/122626
+ 	* g++.dg/analyzer/malloc.C: Add sarif output to verify the fix for
+ 	PR analyzer/122626.
+ 
+ 2025-11-17  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* rust/compile/issue-4188.rs: New test.
+ 
+ 2025-11-17  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* rust/execute/torture/const-generics-5.rs: New test.
+ 	* rust/execute/torture/const-generics-6.rs: New test.
+ 	* rust/execute/torture/const-generics-7.rs: New test.
+ 
+ 2025-11-17  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* rust/compile/const_generics_18.rs: New test.
+ 	* rust/compile/const_generics_19.rs: New test.
+ 	* rust/execute/torture/const-generics-3.rs: New test.
+ 	* rust/execute/torture/const-generics-4.rs: New test.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* rust/compile/issue-4212.rs:
+ 	* rust/compile/issue-4219.rs: New test.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* rust/compile/issue-4162.rs: New test.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* rust/compile/issue-4222.rs: New test.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* rust/compile/issue-4261.rs: New test.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.com>
+ 
+ 	* rust/compile/issue-4267.rs: New test.
+ 
+ 2025-11-17  Philip Herron  <herron.philip@googlemail.com>
+ 
+ 	* rust/execute/torture/const-generics-2.rs: New test.
+ 
+ 2025-11-17  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* rust/compile/issue-3659.rs: New file.
+ 
+ 2025-11-17  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* rust/compile/issue-4242.rs: New file.
+ 	* rust/execute/torture/issue-4242.rs: New file.
+ 
+ 2025-11-17  vishruth-thimmaiah  <vishruththimmaiah@gmail.com>
+ 
+ 	* rust/compile/const_generics_17.rs: New test.
+ 	* rust/compile/generics14.rs: New test.
+ 
+ 2025-11-17  Yap Zhi Heng  <yapzhhg@gmail.com>
+ 
+ 	* rust/execute/torture/literalpattern_neg.rs: New file.
+ 
+ 2025-11-17  Lucas Ly Ba  <lucas.ly-ba@outlook.fr>
+ 
+ 	* rust/compile/issue-3617.rs: New test.
+ 
+ 2025-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/DRs/dr3079.C: New test.
+ 
+ 2025-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/DRs/dr3061.C: New test.
+ 
+ 2025-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/DRs/dr3045.C: New test.
+ 
+ 2025-11-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.dg/vect/slp-9.c: Use noipa function attribute, drop
+ 	-fno-early-inlining option.
+ 	* c-c++-common/restrict-2.c: Explicitly look for hoisted loads.
+ 	* gfortran.dg/pr104466.f90: Adjust.
+ 
+ 2025-11-17  Artemiy Volkov  <artemiy.volkov@arm.com>
+ 
+ 	* gcc.target/aarch64/simd/usubl2.c: New test.
+ 
+ 2025-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-c++-common/goacc/cache-3-1.c: Add dg-skip-if for c++26.
+ 	* g++.dg/goacc/data-clause-2.C: Likewise.
+ 	* g++.dg/gomp/allocate-3.C: Likewise.
+ 	* c-c++-common/gomp/affinity-2.c: Use { c || c++23_down } effective
+ 	target.
+ 	* c-c++-common/goacc/cache-3-2.c: Replace [: in OpenMP or OpenACC
+ 	pragmas or attributes with [ : and :] with : ].
+ 	* c-c++-common/goacc/data-clause-1.c: Likewise.
+ 	* c-c++-common/goacc/data-clause-2.c: Likewise.
+ 	* c-c++-common/goacc/data-clause-duplicate-1.c: Likewise.
+ 	* c-c++-common/goacc/mdc-2.c: Likewise.
+ 	* c-c++-common/goacc/readonly-1.c: Likewise.
+ 	* c-c++-common/gomp/allocate-4.c: Likewise.
+ 	* c-c++-common/gomp/clauses-3.c: Likewise.
+ 	* c-c++-common/gomp/declare-mapper-3.c: Likewise.
+ 	* c-c++-common/gomp/depend-1.c: Likewise.
+ 	* c-c++-common/gomp/depend-2.c: Likewise.
+ 	* c-c++-common/gomp/depend-3.c: Likewise.
+ 	* c-c++-common/gomp/depend-4.c: Likewise.
+ 	* c-c++-common/gomp/depend-5.c: Likewise.
+ 	* c-c++-common/gomp/depend-6.c: Likewise.
+ 	* c-c++-common/gomp/dispatch-1.c: Likewise.
+ 	* c-c++-common/gomp/loop-5.c: Likewise.
+ 	* c-c++-common/gomp/map-1.c: Likewise.
+ 	* c-c++-common/gomp/map-2.c: Likewise.
+ 	* c-c++-common/gomp/map-4.c: Likewise.
+ 	* c-c++-common/gomp/map-7.c: Likewise.
+ 	* c-c++-common/gomp/pr100902-1.c: Likewise.
+ 	* c-c++-common/gomp/pr103642.c: Likewise.
+ 	* c-c++-common/gomp/pr120180-1.c: Likewise.
+ 	* c-c++-common/gomp/pr61486-1.c: Likewise.
+ 	* c-c++-common/gomp/pr81006.c: Likewise.
+ 	* c-c++-common/gomp/pr91920.c: Likewise.
+ 	* c-c++-common/gomp/pr96867.c: Likewise.
+ 	* c-c++-common/gomp/pr99928-16.c: Likewise.
+ 	* c-c++-common/gomp/reduction-1.c: Likewise.
+ 	* c-c++-common/gomp/scan-1.c: Likewise.
+ 	* c-c++-common/gomp/target-data-1.c: Likewise.
+ 	* c-c++-common/gomp/target-enter-data-1.c: Likewise.
+ 	* c-c++-common/gomp/target-has-device-addr-1.c: Likewise.
+ 	* c-c++-common/gomp/target-implicit-map-2.c: Likewise.
+ 	* c-c++-common/gomp/target-map-iterators-1.c: Likewise.
+ 	* c-c++-common/gomp/target-map-iterators-3.c: Likewise.
+ 	* c-c++-common/gomp/target-update-iterators-1.c: Likewise.
+ 	* c-c++-common/gomp/target-update-iterators-3.c: Likewise.
+ 	* g++.dg/goacc/cache-3-1.C: Likewise.
+ 	* g++.dg/goacc/cache-3-2.C: Likewise.
+ 	* g++.dg/goacc/data-clause-1.C: Likewise.
+ 	* g++.dg/goacc/mdc.C: Likewise.
+ 	* g++.dg/gomp/array-section-2.C: Likewise.
+ 	* g++.dg/gomp/bad-array-section-10.C: Likewise.
+ 	* g++.dg/gomp/bad-array-section-11.C: Likewise.
+ 	* g++.dg/gomp/bad-array-section-9.C: Likewise.
+ 	* g++.dg/gomp/declare-mapper-1.C: Likewise.
+ 	* g++.dg/gomp/declare-mapper-2.C: Likewise.
+ 	* g++.dg/gomp/depend-1.C: Likewise.
+ 	* g++.dg/gomp/depend-2.C: Likewise.
+ 	* g++.dg/gomp/ind-base-3.C: Likewise.
+ 	* g++.dg/gomp/map-1.C: Likewise.
+ 	* g++.dg/gomp/map-2.C: Likewise.
+ 	* g++.dg/gomp/map-ptrmem-1.C: Likewise.
+ 	* g++.dg/gomp/map-ptrmem-2.C: Likewise.
+ 	* g++.dg/gomp/member-array-2.C: Likewise.
+ 	* g++.dg/gomp/target-this-3.C: Likewise.
+ 	* g++.dg/gomp/target-this-4.C: Likewise.
+ 
+ 2025-11-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122573
+ 	* gcc.dg/vect/costmodel/x86_64/costmodel-pr122573.c: New testcase.
+ 
+ 2025-11-17  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: Add asm check
+ 	for vmsne.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 the 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_vmsne-run-1-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u8.c: New test.
+ 
+ 2025-11-17  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add asm check
+ 	for vmsne.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_vmsne-run-1-i16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i8.c: New test.
+ 
+ 2025-11-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/121345
+ 	* g++.dg/pr121345.C: New.
+ 
+ 2025-11-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gcc.dg/pr102983.c: Adjust final check.
+ 
+ 2025-11-16  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122625
+ 	* g++.dg/modules/inst-7_a.C: New test.
+ 	* g++.dg/modules/inst-7_b.C: New test.
+ 
+ 2025-11-16  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* gcc.dg/plugin/location-overflow-test-3.c: New test.
+ 	* gcc.dg/plugin/plugin.exp: Add the new test.
+ 
+ 2025-11-16  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* g++.dg/tree-ssa/pr117123.C: un-xfail.
+ 
+ 2025-11-16  Sam James  <sam@gentoo.org>
+ 
+ 	* gcc.target/aarch64/crc-crc32-data16.c: Fix iteration
+ 	count to match testname.
+ 
  2025-11-15  Jakub Jelinek  <jakub@redhat.com>
  
  	* c-c++-common/asan/asan-stack-small.c (pa, pb, pc): Make these
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/asan/pr59063-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/asan/pr59063-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/asan/pr59063-2.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/asan/pr59063-2.c	Sun Nov 23 22:32:11 2025
***************
*** 1,4 ****
! /* { dg-do run { target { *-*-linux* *-*-freebsd* } } } */
  /* { dg-options "-static-libasan" } */
  
  #include <time.h>
--- 1,4 ----
! /* { dg-do run { target { *-*-linux* *-*-freebsd* *-*-solaris2* } } } */
  /* { dg-options "-static-libasan" } */
  
  #include <time.h>
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/cache-3-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/cache-3-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/cache-3-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/cache-3-1.c	Sun Nov 23 22:32:11 2025
***************
*** 6,11 ****
--- 6,15 ----
  
  /* { dg-additional-options "-fopenmp" } for '#pragma omp threadprivate'.  */
  
+ /* Array sections without spaces between [ and : or : and ] are incompatible
+    with C++26.  */
+ /* { dg-skip-if "array sections vs. C++26" { c++26 } } */
+ 
  /* The current implementation doesn't restrict where a 'cache' directive may
     appear, so we don't make any special arrangements.  */
  
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/cache-3-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/cache-3-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/cache-3-2.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/cache-3-2.c	Sun Nov 23 22:32:11 2025
*************** foo (int *p, int (*q)[10], int r[10], in
*** 19,43 ****
    ;
    #pragma acc cache (r[-1:2])
    ;
!   #pragma acc cache (s[-1:2][:])
    ;
    #pragma acc cache (s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma acc cache (b[-1:2][0:])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc cache (q[2:-3][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc cache (s[2:-5][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
--- 19,43 ----
    ;
    #pragma acc cache (r[-1:2])
    ;
!   #pragma acc cache (s[-1:2][ : ])
    ;
    #pragma acc cache (s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma acc cache (b[-1:2][0: ])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc cache (q[2:-3][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc cache (s[2:-5][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/data-clause-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/data-clause-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/data-clause-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/data-clause-1.c	Sun Nov 23 22:32:11 2025
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 30,42 ****
      ;
    #pragma acc parallel copyout(t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma acc parallel copy(k[0.5:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copyout(l[:7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copyin(m[p:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copy(n[:p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma acc parallel copyin(o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
--- 30,42 ----
      ;
    #pragma acc parallel copyout(t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma acc parallel copy(k[0.5: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copyout(l[ :7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copyin(m[p: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copy(n[ :p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma acc parallel copyin(o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 44,115 ****
      ;
    #pragma acc parallel create(s2) /* { dg-error "'s2' does not have a mappable type in 'map' clause" } */
      ;
!   #pragma acc parallel copyin(a[:][:]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]); /* { dg-error "referenced in target region does not have a mappable type" } */
!   #pragma acc parallel copy(b[-1:]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma acc parallel copy(c[:-3][:]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma acc parallel copyout(d[11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma acc parallel copyin(e[:11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma acc parallel copyin(f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma acc parallel copyout(g[:][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma acc parallel copyout(h[2:1][-1:]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma acc parallel copy(h[:1][:-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma acc parallel copy(i[:1][11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma acc parallel copyout(j[3:1][:10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma acc parallel copyin(j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma acc parallel copyin(a2[:1][2:4])
      bar (&a2[0][0]);
!   #pragma acc parallel copy(a2[3:5][:])
      bar (&a2[0][0]);
!   #pragma acc parallel copyin(a2[3:5][:10])
      bar (&a2[0][0]);
!   #pragma acc parallel copy(b2[0:])
      bar (b2);
!   #pragma acc parallel copy(c2[:3][:])
      bar (&c2[0][0]);
!   #pragma acc parallel copyout(d2[9:])
      bar (d2);
!   #pragma acc parallel copyin(e2[:10])
      bar (e2);
    #pragma acc parallel copyin(f2[1:9])
      bar (f2);
!   #pragma acc parallel copy(g2[:1][2:4])
      bar (&g2[0][0]);
!   #pragma acc parallel copyout(h2[2:2][0:])
      bar (&h2[0][0]);
!   #pragma acc parallel copy(h2[:1][:3])
      bar (&h2[0][0]);
!   #pragma acc parallel copyin(i2[:1][9:])
      bar (&i2[0][0]);
!   #pragma acc parallel copyout(j2[3:4][:9])
      bar (&j2[0][0]);
    #pragma acc parallel copyin(j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma acc parallel copy(q[1:2])
      ;
!   #pragma acc parallel copy(q[3:5][:10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2])
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][:][0:4])
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][1:][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][:3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][:][1:]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][:][:3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
--- 44,115 ----
      ;
    #pragma acc parallel create(s2) /* { dg-error "'s2' does not have a mappable type in 'map' clause" } */
      ;
!   #pragma acc parallel copyin(a[ : ][ : ]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]); /* { dg-error "referenced in target region does not have a mappable type" } */
!   #pragma acc parallel copy(b[-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma acc parallel copy(c[ :-3][ : ]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma acc parallel copyout(d[11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma acc parallel copyin(e[ :11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma acc parallel copyin(f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma acc parallel copyout(g[ : ][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma acc parallel copyout(h[2:1][-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma acc parallel copy(h[ :1][ :-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma acc parallel copy(i[ :1][11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma acc parallel copyout(j[3:1][ :10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma acc parallel copyin(j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma acc parallel copyin(a2[ :1][2:4])
      bar (&a2[0][0]);
!   #pragma acc parallel copy(a2[3:5][ : ])
      bar (&a2[0][0]);
!   #pragma acc parallel copyin(a2[3:5][ :10])
      bar (&a2[0][0]);
!   #pragma acc parallel copy(b2[0: ])
      bar (b2);
!   #pragma acc parallel copy(c2[ :3][ : ])
      bar (&c2[0][0]);
!   #pragma acc parallel copyout(d2[9: ])
      bar (d2);
!   #pragma acc parallel copyin(e2[ :10])
      bar (e2);
    #pragma acc parallel copyin(f2[1:9])
      bar (f2);
!   #pragma acc parallel copy(g2[ :1][2:4])
      bar (&g2[0][0]);
!   #pragma acc parallel copyout(h2[2:2][0: ])
      bar (&h2[0][0]);
!   #pragma acc parallel copy(h2[ :1][ :3])
      bar (&h2[0][0]);
!   #pragma acc parallel copyin(i2[ :1][9: ])
      bar (&i2[0][0]);
!   #pragma acc parallel copyout(j2[3:4][ :9])
      bar (&j2[0][0]);
    #pragma acc parallel copyin(j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma acc parallel copy(q[1:2])
      ;
!   #pragma acc parallel copy(q[3:5][ :10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2])
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][ : ][0:4])
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][1: ][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][ :3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][ : ][1: ]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][ : ][ :3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/data-clause-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/data-clause-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/data-clause-2.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/data-clause-2.c	Sun Nov 23 22:32:11 2025
*************** foo (int *p, int (*q)[10], int r[10], in
*** 18,42 ****
    ;
    #pragma acc parallel copy (r[-1:2])
    ;
!   #pragma acc parallel copy (s[-1:2][:])
    ;
    #pragma acc parallel copy (s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc parallel copy (a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma acc parallel copy (b[-1:2][0:])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc parallel copy (b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc parallel copy (p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc parallel copy (q[2:-3][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc parallel copy (q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc parallel copy (r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc parallel copy (s[2:-5][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc parallel copy (s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
--- 18,42 ----
    ;
    #pragma acc parallel copy (r[-1:2])
    ;
!   #pragma acc parallel copy (s[-1:2][ : ])
    ;
    #pragma acc parallel copy (s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc parallel copy (a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma acc parallel copy (b[-1:2][0: ])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc parallel copy (b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc parallel copy (p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc parallel copy (q[2:-3][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc parallel copy (q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc parallel copy (r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc parallel copy (s[2:-5][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc parallel copy (s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/data-clause-duplicate-1.c	Sun Nov 23 22:32:11 2025
*************** fun (void)
*** 8,14 ****
    ;
  #pragma acc serial present(fp[0:2]) copyin(fp[0:2]) /* { dg-error "'fp' appears more than once in data clauses" } */
    ;
! #pragma acc data create(fp[:10]) deviceptr(fp) /* { dg-error "'fp' appears more than once in data clauses" } */
    ;
  #pragma acc data create(fp) present(fp) /* { dg-error "'fp' appears more than once in data clauses" } */
    ;
--- 8,14 ----
    ;
  #pragma acc serial present(fp[0:2]) copyin(fp[0:2]) /* { dg-error "'fp' appears more than once in data clauses" } */
    ;
! #pragma acc data create(fp[ :10]) deviceptr(fp) /* { dg-error "'fp' appears more than once in data clauses" } */
    ;
  #pragma acc data create(fp) present(fp) /* { dg-error "'fp' appears more than once in data clauses" } */
    ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/mdc-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/mdc-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/mdc-2.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/mdc-2.c	Sun Nov 23 22:32:11 2025
*************** t1 ()
*** 24,40 ****
  #pragma acc exit data detach(a)
      }
  
! #pragma acc enter data attach(z[:5]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(z[:5]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc enter data attach(z[1:]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(z[1:]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc enter data attach(z[:]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(z[:]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
  #pragma acc enter data attach(z[3]) /* { dg-error "expected pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
--- 24,40 ----
  #pragma acc exit data detach(a)
      }
  
! #pragma acc enter data attach(z[ :5]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(z[ :5]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc enter data attach(z[1: ]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(z[1: ]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc enter data attach(z[ : ]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(z[ : ]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
  #pragma acc enter data attach(z[3]) /* { dg-error "expected pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/readonly-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/readonly-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/goacc/readonly-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/goacc/readonly-1.c	Sun Nov 23 22:32:11 2025
*************** int main (void)
*** 15,47 ****
    int x[32], y[32];
    struct S s = {x, 0};
  
!   #pragma acc declare copyin(readonly: x/*[:32]*/, s/*.ptr[:16]*/) copyin(y/*[:32]*/)
  
!   #pragma acc parallel copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32])
    {
!     #pragma acc cache (readonly: x[:32])
!     #pragma acc cache (y[:32])
    }
  
!   #pragma acc kernels copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32])
    {
!     #pragma acc cache (readonly: x[:32])
!     #pragma acc cache (y[:32])
    }
  
!   #pragma acc serial copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32])
    {
!     #pragma acc cache (readonly: x[:32])
!     #pragma acc cache (y[:32])
    }
  
!   #pragma acc data copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32])
    {
!     #pragma acc cache (readonly: x[:32])
!     #pragma acc cache (y[:32])
    }
  
!   #pragma acc enter data copyin(readonly: x[:32], s.ptr[:16]) copyin(y[:32])
  
    return 0;
  }
--- 15,47 ----
    int x[32], y[32];
    struct S s = {x, 0};
  
!   #pragma acc declare copyin(readonly: x/*[ :32]*/, s/*.ptr[ :16]*/) copyin(y/*[ :32]*/)
  
!   #pragma acc parallel copyin(readonly: x[ :32], s.ptr[ :16]) copyin(y[ :32])
    {
!     #pragma acc cache (readonly: x[ :32])
!     #pragma acc cache (y[ :32])
    }
  
!   #pragma acc kernels copyin(readonly: x[ :32], s.ptr[ :16]) copyin(y[ :32])
    {
!     #pragma acc cache (readonly: x[ :32])
!     #pragma acc cache (y[ :32])
    }
  
!   #pragma acc serial copyin(readonly: x[ :32], s.ptr[ :16]) copyin(y[ :32])
    {
!     #pragma acc cache (readonly: x[ :32])
!     #pragma acc cache (y[ :32])
    }
  
!   #pragma acc data copyin(readonly: x[ :32], s.ptr[ :16]) copyin(y[ :32])
    {
!     #pragma acc cache (readonly: x[ :32])
!     #pragma acc cache (y[ :32])
    }
  
!   #pragma acc enter data copyin(readonly: x[ :32], s.ptr[ :16]) copyin(y[ :32])
  
    return 0;
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/affinity-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/affinity-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/affinity-2.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/affinity-2.c	Sun Nov 23 22:32:11 2025
***************
*** 1,4 ****
! /* { dg-do compile } */
  /* { dg-options "-fopenmp" } */
  
  extern int a[][10], a2[][10];
--- 1,4 ----
! /* { dg-do compile { target { c || c++23_down } } } */
  /* { dg-options "-fopenmp" } */
  
  extern int a[][10], a2[][10];
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/allocate-4.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/allocate-4.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/allocate-4.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/allocate-4.c	Sun Nov 23 22:32:11 2025
*************** foo (void)
*** 9,15 ****
    s[0]++;
  #pragma omp parallel reduction (+: s[2:2]) allocate(s)
    s[2]++;
! #pragma omp parallel reduction (+: p[:2]) allocate(p)
    p[0]++;
  #pragma omp parallel reduction (+: p[2:2]) allocate(p)
    p[2]++;
--- 9,15 ----
    s[0]++;
  #pragma omp parallel reduction (+: s[2:2]) allocate(s)
    s[2]++;
! #pragma omp parallel reduction (+: p[ :2]) allocate(p)
    p[0]++;
  #pragma omp parallel reduction (+: p[2:2]) allocate(p)
    p[2]++;
*************** bar (void)
*** 30,36 ****
  #pragma omp teams distribute parallel for reduction (+: s[2:2]) allocate(s)
    for (i = 0; i < 64; i++)
      s[2]++;
! #pragma omp teams distribute parallel for reduction (+: p[:2]) allocate(p)
    for (i = 0; i < 64; i++)
      p[0]++;
  #pragma omp teams distribute parallel for reduction (+: p[2:2]) allocate(p)
--- 30,36 ----
  #pragma omp teams distribute parallel for reduction (+: s[2:2]) allocate(s)
    for (i = 0; i < 64; i++)
      s[2]++;
! #pragma omp teams distribute parallel for reduction (+: p[ :2]) allocate(p)
    for (i = 0; i < 64; i++)
      p[0]++;
  #pragma omp teams distribute parallel for reduction (+: p[2:2]) allocate(p)
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/clauses-3.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/clauses-3.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/clauses-3.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/clauses-3.c	Sun Nov 23 22:32:11 2025
*************** main ()
*** 17,25 ****
    bar (&s.v.a);
    #pragma omp target map (s.v.a) map (always, to: s.u) map (s.x)
    ;
!   #pragma omp target map (s.s[0]) map (s.v.b[:3])
    ;
!   #pragma omp target map (s.s[0]) map (s.v.b[:3])
    baz (s.s);
    return 0;
  }
--- 17,25 ----
    bar (&s.v.a);
    #pragma omp target map (s.v.a) map (always, to: s.u) map (s.x)
    ;
!   #pragma omp target map (s.s[0]) map (s.v.b[ :3])
    ;
!   #pragma omp target map (s.s[0]) map (s.v.b[ :3])
    baz (s.s);
    return 0;
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/declare-mapper-3.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/declare-mapper-3.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/declare-mapper-3.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/declare-mapper-3.c	Sun Nov 23 22:32:11 2025
*************** int main (int argc, char *argv[])
*** 14,20 ****
  {
    int N = 1024;
  #pragma omp declare mapper (mapN:struct S s) map(to:s.ptr, s.size) \
! 					     map(s.ptr[:N])
  
    struct S s;
    s.ptr = (int *) malloc (sizeof (int) * N);
--- 14,20 ----
  {
    int N = 1024;
  #pragma omp declare mapper (mapN:struct S s) map(to:s.ptr, s.size) \
! 					     map(s.ptr[ :N])
  
    struct S s;
    s.ptr = (int *) malloc (sizeof (int) * N);
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-1.c	Sun Nov 23 22:32:11 2025
***************
*** 0 ****
--- 1,55 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fdump-tree-gimple" } */
+ 
+ /* Check basic functionality for the delimited form of "declare variant"
+    - no error re duplicate definitions
+    - variants are registered and correctly resolved at call site.  */
+ 
+ int foo (int a)
+ {
+   return a;
+ }
+ 
+ int bar (int x)
+ {
+   return x;
+ }
+ 
+ #pragma omp begin declare variant match (construct={target})
+ int foo (int a)
+ {
+   return a + 1;
+ }
+ 
+ int bar (int x)
+ {
+   return x * 2;
+ }
+ #pragma omp end declare variant
+ 
+ /* Because of the high score value, this variant for "bar" should always be
+    selected even when the one above also matches.  */
+ #pragma omp begin declare variant match (implementation={vendor(score(10000):"gnu")})
+ int bar (int x)
+ {
+   return x * 4;
+ }
+ #pragma omp end declare variant
+ 
+ int main (void)
+ {
+   if (foo (42) != 42) __builtin_abort ();
+   if (bar (3) != 12) __builtin_abort ();
+ #pragma omp target
+   {
+     if (foo (42) != 43) __builtin_abort ();
+     if (bar (3) != 12) __builtin_abort ();
+   }
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "omp declare variant base \\(foo.ompvariant." 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "omp declare variant base \\(bar.ompvariant." 2 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "foo \\(42\\)" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "foo\\.ompvariant. \\(42\\)" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "bar \\(3\\)" 0 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "bar\\.ompvariant. \\(3\\)" 2 "gimple" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-2.c	Sun Nov 23 22:32:11 2025
***************
*** 0 ****
--- 1,66 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-foffload=disable -fdump-tree-original" } */
+ 
+ /* Check for elision of preprocessed code in a begin/end declare variant
+    construct when it can be determined at parse time that the selector
+    can never match.  */
+ 
+ int foobar (int x, int y)
+ {
+   return x * y;
+ }
+ 
+ int baz (int x)
+ {
+   return x;
+ }
+ 
+ #pragma omp begin declare variant match (implementation={vendor("acme")}) /* { dg-warning "unknown property" } */
+ int foobar (int x, int y)
+ {
+   random junk that would ordinarily cause a parse error;
+   return x + y;
+ }
+ #pragma omp end declare variant
+ 
+ #pragma omp begin declare variant match (device={kind(fpga)})
+ int foobar (int x, int y)
+ {
+   random junk that would ordinarily cause a parse error;
+   return x + y;
+ }
+ #pragma omp end declare variant
+ 
+ /* Per the OpenMP specification, elision only happens when the implementation
+    or device selectors cannot match; the user/condition selector doesn't
+    matter for this.  */
+ #pragma omp begin declare variant match (user={condition (0)})
+ int foobar (int x, int y)
+ {
+   return x + y;
+ }
+ #pragma omp end declare variant
+ 
+ /* Check that we're finding the right "omp end declare variant" when
+    constructs are nested.  */
+ #pragma omp begin declare variant match (implementation={vendor("acme")})  /* { dg-warning "unknown property" } */
+   #pragma omp begin declare variant match (device={kind(fpga)})
+   int baz (int x)
+   {
+     random junk that would ordinarily cause a parse error;
+     return x + 1;
+   }
+   #pragma omp end declare variant
+   #pragma omp begin declare variant match (device={kind(host)})
+   int baz (int x)
+   {
+     random junk that would ordinarily cause a parse error;
+     return x + 2;
+   }
+   #pragma omp end declare variant
+ #pragma omp end declare variant
+ 
+ /* { dg-final { scan-tree-dump-times "foobar.ompvariant" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-not "baz.ompvariant" "original" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-3.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-3.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-3.c	Sun Nov 23 22:32:11 2025
***************
*** 0 ****
--- 1,49 ----
+ /* { dg-do compile } */
+ 
+ /* Check that an error is diagnosed when a function defined in a
+    "begin declare variant" construct doesn't have a visible declaration
+    at that point.  
+ 
+    The spec is not completely clear on this; it says the base function must be
+    "declared elsewhere without an associated declare variant directive",
+    without defining what "elsewhere" means.  Particularly in C++ it would be
+    incorrect to inject such a declaration at the point of the variant
+    definition (think of a variant for a class method that is defined with a
+    qualified name outside of the class declaration, for instance).  The C++
+    front end could differentiate between cases where base declaration injection
+    is allowed vs not, but for now it seems simplest just to require that a
+    definition always be visible.  */
+ 
+ /* This declaration of baz is incompatible with the variant below.  */
+ extern double baz (double, double);
+ 
+ /* This is not a function at all.  */
+ extern int quux;
+ 
+ #pragma omp begin declare variant match (construct={target})
+ int foo (int a)
+ {
+   return a + 1;
+ }
+ 
+ int bar (int x)  /* { dg-error "no declaration of base function" } */
+ {
+   return x * 2;
+ }
+ 
+ int baz (int x)  /* { dg-error "variant function definition does not match declaration of .baz." } */
+ {
+   return x * 2;
+ }
+ 
+ int quux (int x, int y)  /* { dg-error "variant function definition does not match declaration of .quux." } */
+ {
+   return x + y;
+ }
+ #pragma omp end declare variant
+ 
+ /* It's supposedly allowed to define the base function after the variant.  */
+ int foo (int a)
+ {
+   return a;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-4.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-4.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-4.c	Sun Nov 23 22:32:11 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ 
+ /* Check that a proper error is diagnosed if an "omp begin declare variant"
+    construct has an invalid selector, and that this causes the whole variant
+    to be skipped over rather than a duplicate definition error.  */
+ 
+ int foo (int a)
+ {
+   return a;
+ }
+ 
+ #pragma omp begin declare variant match (construct=target)  /* { dg-error "expected '\{' before 'target'" } */
+ int foo (int a)
+ {
+   return a + 1;
+ }
+ 
+ #pragma omp end declare variant
+ 
+ int bar (int x)
+ {
+   return x;
+ }
+ 
+ #pragma omp begin declare variant match (gibberish = {blah(1)})  /* { dg-error "expected context selector set name" } */
+ int bar (int x)
+ {
+   return x + 2;
+ }
+ 
+ #pragma omp end declare variant
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-5.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-5.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-5.c	Sun Nov 23 22:32:11 2025
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ 
+ /* Check that the simd trait is rejected in the match clause for
+    "begin declare variant".  */
+ 
+ int foo (int a)
+ {
+   return a;
+ }
+ 
+ int bar (int x)
+ {
+   return x;
+ }
+ 
+ #pragma omp begin declare variant match (construct={target, simd})  /* { dg-error "the 'simd' selector is not permitted" } */
+ int foo (int a)
+ {
+   return a + 1;
+ }
+ 
+ int bar (int x)
+ {
+   return x * 2;
+ }
+ #pragma omp end declare variant
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-6.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-6.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-6.c	Sun Nov 23 22:32:11 2025
***************
*** 0 ****
--- 1,70 ----
+ /* { dg-do compile { target x86_64-*-* } } */
+ /* { dg-additional-options "-fdump-tree-gimple -foffload=disable" } */
+ 
+ /* Test merging of context selectors for nested "begin declare variant"
+    directives.
+ 
+    The OpenMP 6.0 spec says: "the effective context selectors of the outer
+    directive are appended do the context selector of the inner directive to
+    form the effective context selector of the inner directive.  If a
+    trait-set-selector is present on both directives, the trait-selector list of
+    the outer directive is appended to the trait-selector list of the inner
+    directive after equivalent trait-selectors have been removed from the outer
+    list."  */
+ 
+ int f1 (int x) { return x; }
+ int f2 (int x) { return x; }
+ int f3 (int x) { return x; }
+ int f4 (int x) { return x; }
+ int f5 (int x) { return x; }
+ 
+ /* Check that duplicate traits can be detected, even when the properties
+    use different forms.  (If these were considered different, it would
+    trigger an error instead.)  */
+ #pragma omp begin declare variant match (implementation={vendor(gnu)})
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ int f1 (int x) { return -x; }
+ #pragma omp end declare variant
+ #pragma omp end declare variant
+ 
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ #pragma omp begin declare variant match (implementation={vendor(gnu)})
+ int f2 (int x) { return -x; }
+ #pragma omp end declare variant
+ #pragma omp end declare variant
+ 
+ /* Check that non-duplicate traits are collected from both inner and outer.  */
+ 
+ #pragma omp begin declare variant match (device={kind("host")})
+ #pragma omp begin declare variant match (device={arch("x86")})
+ int f3 (int x) { return -x; }
+ #pragma omp end declare variant
+ #pragma omp end declare variant
+ /* { dg-final { scan-tree-dump "f3\\.ompvariant.*kind \\(.host.\\)" "gimple" } } */
+ /* { dg-final { scan-tree-dump "f3\\.ompvariant.*arch \\(.x86.\\)" "gimple" } } */
+ 
+ /* Check that traits for construct selectors merge as expected.  */
+ 
+ #pragma omp begin declare variant match (construct={parallel, for})
+ #pragma omp begin declare variant match (construct={teams})
+ int f4 (int x) { return -x; }
+ #pragma omp end declare variant
+ #pragma omp end declare variant
+ /* { dg-final { scan-tree-dump "f4\\.ompvariant.*teams, parallel, for" "gimple" }  } */
+ 
+ /* Check that multiple trait sets are collected.  */
+ 
+ extern int flag;
+ 
+ #pragma omp begin declare variant match (construct={parallel, for})
+ #pragma omp begin declare variant match (construct={teams})
+ #pragma omp begin declare variant match (user={condition(flag)})
+ #pragma omp begin declare variant match (device={kind("host")})
+ int f5 (int x) { return -x; }
+ #pragma omp end declare variant
+ #pragma omp end declare variant
+ #pragma omp end declare variant
+ #pragma omp end declare variant
+ /* { dg-final { scan-tree-dump "f5\\.ompvariant.*teams, parallel, for" "gimple" }  } */
+ /* { dg-final { scan-tree-dump "f5\\.ompvariant.*flag" "gimple" }  } */
+ /* { dg-final { scan-tree-dump "f5\\.ompvariant.*kind \\(.host.\\)" "gimple" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-7.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-7.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-7.c	Sun Nov 23 22:32:11 2025
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fdump-tree-gimple" } */
+ 
+ /* Test that merging of context selectors from an enclosing "begin declare
+    variant" directive applies to nested regular "declare variant" directives
+    (not just nested "begin declare variant", which is tested elsewhere).  */
+ 
+ extern int foo1 (int);
+ extern int foo2 (int);
+ 
+ #pragma omp begin declare variant match (implementation={vendor(gnu)})
+ 
+ #pragma omp declare variant (foo1) \
+   match (construct={parallel,for})
+ #pragma omp declare variant (foo2) \
+   match (device={kind(any)})
+ extern int foo (int);
+ 
+ #pragma omp end declare variant
+ 
+ int foo (int x)
+ {
+   return x + 42;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "omp declare variant base" 2 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "vendor \\(.gnu.\\)" 2 "gimple" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-8.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-8.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-8.c	Sun Nov 23 22:32:11 2025
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fdump-tree-gimple" } */
+ 
+ /* This is the same as delim-declare-variant-1.c, but using attribute
+    syntax.  */
+ 
+ int foo (int a)
+ {
+   return a;
+ }
+ 
+ int bar (int x)
+ {
+   return x;
+ }
+ 
+ [[omp::directive (begin declare variant, match (construct={target}))]];
+ int foo (int a)
+ {
+   return a + 1;
+ }
+ 
+ int bar (int x)
+ {
+   return x * 2;
+ }
+ [[omp::directive (end declare variant)]];
+ 
+ /* Because of the high score value, this variant for "bar" should always be
+    selected even when the one above also matches.  */
+ [[omp::directive (begin declare variant match (implementation={vendor(score(10000):"gnu")}))]];
+ int bar (int x)
+ {
+   return x * 4;
+ }
+ [[omp::directive (end declare variant)]];
+ 
+ int main (void)
+ {
+   if (foo (42) != 42) __builtin_abort ();
+   if (bar (3) != 12) __builtin_abort ();
+ #pragma omp target
+   {
+     if (foo (42) != 43) __builtin_abort ();
+     if (bar (3) != 12) __builtin_abort ();
+   }
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "omp declare variant base \\(foo.ompvariant." 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "omp declare variant base \\(bar.ompvariant." 2 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "foo \\(42\\)" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "foo\\.ompvariant. \\(42\\)" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "bar \\(3\\)" 0 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "bar\\.ompvariant. \\(3\\)" 2 "gimple" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-9.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-9.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-9.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/delim-declare-variant-9.c	Sun Nov 23 22:32:11 2025
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do compile } */
+ 
+ /* Check diagnostics for mismatched pragma/attribute forms of delimited
+    declare variant.  */
+ 
+ int foo (int a)
+ {
+   return a;
+ }
+ 
+ int bar (int x)
+ {
+   return x;
+ }
+ 
+ [[omp::directive (begin declare variant match (construct={target}))]];
+ int foo (int a)
+ {
+   return a + 1;
+ }
+ 
+ int bar (int x)
+ {
+   return x * 2;
+ }
+ #pragma omp end declare variant  /* { dg-error "'begin declare variant' in attribute syntax terminated with 'end declare variant' in pragma syntax" } */
+ 
+ /* Because of the high score value, this variant for "bar" should always be
+    selected even when the one above also matches.  */
+ #pragma omp begin declare variant match (implementation={vendor(score(10000):"gnu")})
+ int bar (int x)
+ {
+   return x * 4;
+ }
+ [[omp::directive (end declare variant)]];  /* { dg-error "'begin declare variant' in pragma syntax terminated with 'end declare variant' in attribute syntax" } */
+ 
+ int main (void)
+ {
+   if (foo (42) != 42) __builtin_abort ();
+   if (bar (3) != 12) __builtin_abort ();
+ #pragma omp target
+   {
+     if (foo (42) != 43) __builtin_abort ();
+     if (bar (3) != 12) __builtin_abort ();
+   }
+ }
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-1.c	Sun Nov 23 22:32:11 2025
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 18,78 ****
      ;
    #pragma omp task depend(out: t[2:5])
      ;
!   #pragma omp task depend(inout: k[0.5:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp task depend(in: l[:7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp task depend(out: m[p:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp task depend(inout: n[:p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma omp task depend(in: o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
!   #pragma omp task depend(out: a[:][2:4]) /* { dg-error "array type length expression must be specified" } */
      ;
!   #pragma omp task depend(inout: b[-1:]) /* { dg-error "negative low bound in array section" } */
      ;
!   #pragma omp task depend(inout: c[:-3][1:1]) /* { dg-error "negative length in array section" } */
      ;
!   #pragma omp task depend(in: d[11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      ;
!   #pragma omp task depend(out: e[:11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      ;
    #pragma omp task depend(out: f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      ;
!   #pragma omp task depend(in: g[:][2:4]) /* { dg-error "for array function parameter length expression must be specified" } */
      ;
!   #pragma omp task depend(in: h[2:2][-1:]) /* { dg-error "negative low bound in array section" } */
      ;
!   #pragma omp task depend(inout: h[:1][:-3]) /* { dg-error "negative length in array section" } */
      ;
!   #pragma omp task depend(out: i[:1][11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      ;
!   #pragma omp task depend(in: j[3:4][:10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      ;
    #pragma omp task depend(out: j[30:10][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      ;
!   #pragma omp task depend(out: a2[:3][2:4])
      ;
!   #pragma omp task depend(inout: b2[0:])
      ;
!   #pragma omp task depend(inout: c2[:3][1:1])
      ;
!   #pragma omp task depend(in: d2[9:])
      ;
!   #pragma omp task depend(out: e2[:10])
      ;
    #pragma omp task depend(out: f2[1:9])
      ;
!   #pragma omp task depend(in: g2[:2][2:4])
      ;
!   #pragma omp task depend(in: h2[2:2][0:])
      ;
!   #pragma omp task depend(inout: h2[:1][:3])
      ;
!   #pragma omp task depend(out: i2[:1][9:])
      ;
!   #pragma omp task depend(in: j2[3:4][:9])
      ;
    #pragma omp task depend(out: j2[30:10][5:4])
      ;
--- 18,78 ----
      ;
    #pragma omp task depend(out: t[2:5])
      ;
!   #pragma omp task depend(inout: k[0.5: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp task depend(in: l[ :7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp task depend(out: m[p: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp task depend(inout: n[ :p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma omp task depend(in: o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
!   #pragma omp task depend(out: a[ : ][2:4]) /* { dg-error "array type length expression must be specified" } */
      ;
!   #pragma omp task depend(inout: b[-1: ]) /* { dg-error "negative low bound in array section" } */
      ;
!   #pragma omp task depend(inout: c[ :-3][1:1]) /* { dg-error "negative length in array section" } */
      ;
!   #pragma omp task depend(in: d[11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      ;
!   #pragma omp task depend(out: e[ :11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      ;
    #pragma omp task depend(out: f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      ;
!   #pragma omp task depend(in: g[ : ][2:4]) /* { dg-error "for array function parameter length expression must be specified" } */
      ;
!   #pragma omp task depend(in: h[2:2][-1: ]) /* { dg-error "negative low bound in array section" } */
      ;
!   #pragma omp task depend(inout: h[ :1][ :-3]) /* { dg-error "negative length in array section" } */
      ;
!   #pragma omp task depend(out: i[ :1][11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      ;
!   #pragma omp task depend(in: j[3:4][ :10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      ;
    #pragma omp task depend(out: j[30:10][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      ;
!   #pragma omp task depend(out: a2[ :3][2:4])
      ;
!   #pragma omp task depend(inout: b2[0: ])
      ;
!   #pragma omp task depend(inout: c2[ :3][1:1])
      ;
!   #pragma omp task depend(in: d2[9: ])
      ;
!   #pragma omp task depend(out: e2[ :10])
      ;
    #pragma omp task depend(out: f2[1:9])
      ;
!   #pragma omp task depend(in: g2[ :2][2:4])
      ;
!   #pragma omp task depend(in: h2[2:2][0: ])
      ;
!   #pragma omp task depend(inout: h2[ :1][ :3])
      ;
!   #pragma omp task depend(out: i2[ :1][9: ])
      ;
!   #pragma omp task depend(in: j2[3:4][ :9])
      ;
    #pragma omp task depend(out: j2[30:10][5:4])
      ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-2.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-2.c	Sun Nov 23 22:32:11 2025
*************** void
*** 6,17 ****
  foo (int a[10][10][10], int **b)
  {
    int c[10][10][10];
!   #pragma omp task depend(out: a[2:4][3:][:7], b[1:7][2:8])
      bar (a);
    int i = 1, j = 3, k = 2, l = 6;
!   #pragma omp task depend(in: a[++i:++j][++k:][:++l])
      bar (a);
!   #pragma omp task depend(out: a[7:2][:][:], c[5:2][:][:])
    {
      bar (c);
      bar (a);
--- 6,17 ----
  foo (int a[10][10][10], int **b)
  {
    int c[10][10][10];
!   #pragma omp task depend(out: a[2:4][3: ][ :7], b[1:7][2:8])
      bar (a);
    int i = 1, j = 3, k = 2, l = 6;
!   #pragma omp task depend(in: a[++i:++j][++k: ][ :++l])
      bar (a);
!   #pragma omp task depend(out: a[7:2][ : ][ : ], c[5:2][ : ][ : ])
    {
      bar (c);
      bar (a);
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-3.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-3.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-3.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-3.c	Sun Nov 23 22:32:11 2025
*************** void
*** 6,21 ****
  foo (int a[10][10][10], int **b, int x)
  {
    int c[10][10][10];
!   #pragma omp task depend(out: a[2:4][3:0][:7])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp task depend(inout: b[:7][0:0][:0]) /* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp task depend(in: c[:][:][10:])	/* { dg-error "zero length array section" } */
      bar (c);
!   #pragma omp task depend(out: a[2:4][3:0][:x])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp task depend(inout: b[:x][0:0][:0]) /* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp task depend(in: c[:][x-2:x][10:])	/* { dg-error "zero length array section" } */
      bar (c);
  }
--- 6,21 ----
  foo (int a[10][10][10], int **b, int x)
  {
    int c[10][10][10];
!   #pragma omp task depend(out: a[2:4][3:0][ :7])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp task depend(inout: b[ :7][0:0][ :0]) /* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp task depend(in: c[ : ][ : ][10: ])	/* { dg-error "zero length array section" } */
      bar (c);
!   #pragma omp task depend(out: a[2:4][3:0][ :x])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp task depend(inout: b[ :x][0:0][ :0]) /* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp task depend(in: c[ : ][x-2:x][10: ])	/* { dg-error "zero length array section" } */
      bar (c);
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-4.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-4.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-4.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-4.c	Sun Nov 23 22:32:11 2025
*************** foo (int *p, int (*q)[10], int r[10], in
*** 25,37 ****
    ;
    #pragma omp task depend (inout: p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp task depend (inout: q[2:-3][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp task depend (inout: q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp task depend (inout: r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp task depend (inout: s[2:-5][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp task depend (inout: s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
--- 25,37 ----
    ;
    #pragma omp task depend (inout: p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp task depend (inout: q[2:-3][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp task depend (inout: q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp task depend (inout: r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp task depend (inout: s[2:-5][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp task depend (inout: s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-5.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-5.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-5.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-5.c	Sun Nov 23 22:32:11 2025
*************** foo (void)
*** 15,25 ****
    ;
    #pragma omp task depend(out: d[2])
    ;
!   #pragma omp task depend(in: d[:])
    ;
    #pragma omp task depend(in: d[2:2])
    ;
!   #pragma omp task depend(in: d[:2])
    ;
    #pragma omp task depend(inout: d[1].b->c[2])
    ;
--- 15,25 ----
    ;
    #pragma omp task depend(out: d[2])
    ;
!   #pragma omp task depend(in: d[ : ])
    ;
    #pragma omp task depend(in: d[2:2])
    ;
!   #pragma omp task depend(in: d[ :2])
    ;
    #pragma omp task depend(inout: d[1].b->c[2])
    ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-6.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-6.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/depend-6.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/depend-6.c	Sun Nov 23 22:32:11 2025
*************** struct U i;
*** 13,21 ****
  void
  foo (void)
  {
!   #pragma omp task depend(in: d[:2].b->c[2])	/* { dg-error "expected" } */
    ;
!   #pragma omp task depend(inout: d[1:].b->c[2])	/* { dg-error "expected" } */
    ;
    #pragma omp task depend(out: d[0:1].a)	/* { dg-error "expected" } */
    ;
--- 13,21 ----
  void
  foo (void)
  {
!   #pragma omp task depend(in: d[ :2].b->c[2])	/* { dg-error "expected" } */
    ;
!   #pragma omp task depend(inout: d[1: ].b->c[2])	/* { dg-error "expected" } */
    ;
    #pragma omp task depend(out: d[0:1].a)	/* { dg-error "expected" } */
    ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/dispatch-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/dispatch-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/dispatch-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/dispatch-1.c	Sun Nov 23 22:32:11 2025
*************** void f1 (void)
*** 64,70 ****
    f2 ();
  #pragma omp dispatch depend(inout: sp)
    f2 ();
! #pragma omp dispatch depend(inoutset: arr[:2])
    f2 ();
  #pragma omp dispatch depend(out: arr)
    f2 ();
--- 64,70 ----
    f2 ();
  #pragma omp dispatch depend(inout: sp)
    f2 ();
! #pragma omp dispatch depend(inoutset: arr[ :2])
    f2 ();
  #pragma omp dispatch depend(out: arr)
    f2 ();
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/loop-5.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/loop-5.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/loop-5.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/loop-5.c	Sun Nov 23 22:32:11 2025
*************** __attribute__((noipa)) int
*** 2,8 ****
  foo (int *a, int *r3)
  {
    int r = 0, r2[2] = { 0, 0 }, i;
!   #pragma omp parallel loop default (none) reduction (+:r, r2[:2], r3[:2]) shared (a) lastprivate (i)
    for (i = 0; i < 1024; i++)
      {
        r += a[i];
--- 2,8 ----
  foo (int *a, int *r3)
  {
    int r = 0, r2[2] = { 0, 0 }, i;
!   #pragma omp parallel loop default (none) reduction (+:r, r2[ :2], r3[ :2]) shared (a) lastprivate (i)
    for (i = 0; i < 1024; i++)
      {
        r += a[i];
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/map-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/map-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/map-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/map-1.c	Sun Nov 23 22:32:11 2025
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 27,39 ****
      ;
    #pragma omp target map(from: t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma omp target map(tofrom: k[0.5:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(from: l[:7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(to: m[p:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(tofrom: n[:p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma omp target map(to: o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
--- 27,39 ----
      ;
    #pragma omp target map(from: t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma omp target map(tofrom: k[0.5: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(from: l[ :7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(to: m[p: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(tofrom: n[ :p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma omp target map(to: o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 41,112 ****
      ;
    #pragma omp target map(alloc: s2) /* { dg-error "'s2' does not have a mappable type in 'map' clause" } */
      ;
!   #pragma omp target map(to: a[:][:]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]); /* { dg-error "referenced in target region does not have a mappable type" } */
!   #pragma omp target map(tofrom: b[-1:]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma omp target map(tofrom: c[:-3][:]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma omp target map(from: d[11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma omp target map(to: e[:11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma omp target map(to: f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma omp target map(from: g[:][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma omp target map(from: h[2:1][-1:]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma omp target map(tofrom: h[:1][:-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma omp target map(i[:1][11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma omp target map(from: j[3:1][:10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma omp target map(to: j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma omp target map(to: a2[:1][2:4])
      bar (&a2[0][0]);
!   #pragma omp target map(a2[3:5][:])
      bar (&a2[0][0]);
!   #pragma omp target map(to: a2[3:5][:10])
      bar (&a2[0][0]);
!   #pragma omp target map(tofrom: b2[0:])
      bar (b2);
!   #pragma omp target map(tofrom: c2[:3][:])
      bar (&c2[0][0]);
!   #pragma omp target map(from: d2[9:])
      bar (d2);
!   #pragma omp target map(to: e2[:10])
      bar (e2);
    #pragma omp target map(to: f2[1:9])
      bar (f2);
!   #pragma omp target map(g2[:1][2:4])
      bar (&g2[0][0]);
!   #pragma omp target map(from: h2[2:2][0:])
      bar (&h2[0][0]);
!   #pragma omp target map(tofrom: h2[:1][:3])
      bar (&h2[0][0]);
!   #pragma omp target map(to: i2[:1][9:])
      bar (&i2[0][0]);
!   #pragma omp target map(from: j2[3:4][:9])
      bar (&j2[0][0]);
    #pragma omp target map(to: j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma omp target map(q[1:2])
      ;
!   #pragma omp target map(tofrom: q[3:5][:10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3:][2:1][1:2])
      ;
!   #pragma omp target map(r[3:][2:1][1:2][:][0:4])
      ;
!   #pragma omp target map(r[3:][2:1][1:2][1:][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3:][2:1][1:2][:3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3:][2:1][1:2][:][1:]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3:][2:1][1:2][:][:3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
--- 41,112 ----
      ;
    #pragma omp target map(alloc: s2) /* { dg-error "'s2' does not have a mappable type in 'map' clause" } */
      ;
!   #pragma omp target map(to: a[ : ][ : ]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]); /* { dg-error "referenced in target region does not have a mappable type" } */
!   #pragma omp target map(tofrom: b[-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma omp target map(tofrom: c[ :-3][ : ]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma omp target map(from: d[11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma omp target map(to: e[ :11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma omp target map(to: f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma omp target map(from: g[ : ][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma omp target map(from: h[2:1][-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma omp target map(tofrom: h[ :1][ :-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma omp target map(i[ :1][11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma omp target map(from: j[3:1][ :10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma omp target map(to: j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma omp target map(to: a2[ :1][2:4])
      bar (&a2[0][0]);
!   #pragma omp target map(a2[3:5][ : ])
      bar (&a2[0][0]);
!   #pragma omp target map(to: a2[3:5][ :10])
      bar (&a2[0][0]);
!   #pragma omp target map(tofrom: b2[0: ])
      bar (b2);
!   #pragma omp target map(tofrom: c2[ :3][ : ])
      bar (&c2[0][0]);
!   #pragma omp target map(from: d2[9: ])
      bar (d2);
!   #pragma omp target map(to: e2[ :10])
      bar (e2);
    #pragma omp target map(to: f2[1:9])
      bar (f2);
!   #pragma omp target map(g2[ :1][2:4])
      bar (&g2[0][0]);
!   #pragma omp target map(from: h2[2:2][0: ])
      bar (&h2[0][0]);
!   #pragma omp target map(tofrom: h2[ :1][ :3])
      bar (&h2[0][0]);
!   #pragma omp target map(to: i2[ :1][9: ])
      bar (&i2[0][0]);
!   #pragma omp target map(from: j2[3:4][ :9])
      bar (&j2[0][0]);
    #pragma omp target map(to: j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma omp target map(q[1:2])
      ;
!   #pragma omp target map(tofrom: q[3:5][ :10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3: ][2:1][1:2])
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][ : ][0:4])
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][1: ][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][ :3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][ : ][1: ]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][ : ][ :3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/map-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/map-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/map-2.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/map-2.c	Sun Nov 23 22:32:11 2025
*************** foo (int *p, int (*q)[10], int r[10], in
*** 16,40 ****
    ;
    #pragma omp target map (tofrom: r[-1:2])
    ;
!   #pragma omp target map (tofrom: s[-1:2][:])
    ;
    #pragma omp target map (tofrom: s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma omp target map (tofrom: b[-1:2][0:])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp target map (tofrom: q[2:-3][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp target map (tofrom: s[2:-5][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
--- 16,40 ----
    ;
    #pragma omp target map (tofrom: r[-1:2])
    ;
!   #pragma omp target map (tofrom: s[-1:2][ : ])
    ;
    #pragma omp target map (tofrom: s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma omp target map (tofrom: b[-1:2][0: ])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp target map (tofrom: q[2:-3][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp target map (tofrom: s[2:-5][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/map-4.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/map-4.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/map-4.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/map-4.c	Sun Nov 23 22:32:11 2025
*************** typedef double Grid[SIZE];
*** 5,11 ****
  
  void test (Grid src1)
  {
!   #pragma omp target map(alloc:src1[:])  /* { dg-error "for array function parameter length expression must be specified" }  */
    {
      src1[0] = 5;
    }
--- 5,11 ----
  
  void test (Grid src1)
  {
!   #pragma omp target map(alloc:src1[ : ])  /* { dg-error "for array function parameter length expression must be specified" }  */
    {
      src1[0] = 5;
    }
*************** void test (Grid src1)
*** 13,19 ****
  
  void test2 (double src2[])
  {
!   #pragma omp target map(alloc:src2[:])  /* { dg-error "for array function parameter length expression must be specified" }  */
    {
      src2[0] = 5;
    }
--- 13,19 ----
  
  void test2 (double src2[])
  {
!   #pragma omp target map(alloc:src2[ : ])  /* { dg-error "for array function parameter length expression must be specified" }  */
    {
      src2[0] = 5;
    }
*************** void test2 (double src2[])
*** 21,27 ****
  
  void test3 (double *src3)
  {
!   #pragma omp target map(alloc:src3[:])  /* { dg-error "for pointer type length expression must be specified" }  */
    {
      src3[0] = 5;
    }
--- 21,27 ----
  
  void test3 (double *src3)
  {
!   #pragma omp target map(alloc:src3[ : ])  /* { dg-error "for pointer type length expression must be specified" }  */
    {
      src3[0] = 5;
    }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/map-7.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/map-7.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/map-7.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/map-7.c	Sun Nov 23 22:32:11 2025
*************** foo (void)
*** 9,20 ****
    int always[N];
    int close;
  
!   #pragma omp target map(always[:N]) 
    ;
  
!   #pragma omp target map(close, always[:N]) 
    ;
  
!   #pragma omp target map(always[:N], close) 
    ;
  }
--- 9,20 ----
    int always[N];
    int close;
  
!   #pragma omp target map(always[ :N]) 
    ;
  
!   #pragma omp target map(close, always[ :N]) 
    ;
  
!   #pragma omp target map(always[ :N], close) 
    ;
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr100902-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr100902-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr100902-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr100902-1.c	Sun Nov 23 22:32:11 2025
***************
*** 3,9 ****
  void
  foo (int *ptr)
  {
!   #pragma omp target map (ptr, ptr[:4])
    #pragma omp parallel master
    ptr[0] = 1;
  }
--- 3,9 ----
  void
  foo (int *ptr)
  {
!   #pragma omp target map (ptr, ptr[ :4])
    #pragma omp parallel master
    ptr[0] = 1;
  }
*************** foo (int *ptr)
*** 11,17 ****
  void
  bar (int *ptr)
  {
!   #pragma omp target parallel map (ptr[:4], ptr)
    #pragma omp master
    ptr[0] = 1;
  }
--- 11,17 ----
  void
  bar (int *ptr)
  {
!   #pragma omp target parallel map (ptr[ :4], ptr)
    #pragma omp master
    ptr[0] = 1;
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr103642.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr103642.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr103642.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr103642.c	Sun Nov 23 22:32:11 2025
*************** int main (void)
*** 23,29 ****
    t.s = (S *) malloc (sizeof (S));
    t.s->a = (int *) malloc (sizeof(int) * N);
  
!   #pragma omp target map(from: t.s->a[:N])
    {
      t.s->a[0] = 1;
    }
--- 23,29 ----
    t.s = (S *) malloc (sizeof (S));
    t.s->a = (int *) malloc (sizeof(int) * N);
  
!   #pragma omp target map(from: t.s->a[ :N])
    {
      t.s->a[0] = 1;
    }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr120180-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr120180-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr120180-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr120180-1.c	Sun Nov 23 22:32:11 2025
*************** int main()
*** 9,17 ****
    double *qq;
    int i, k, nq;
  
!   #pragma omp metadirective when(user={condition(0)}: target teams distribute parallel for collapse(2) map(qq[:0]) private(i)) \
!                             when(user={condition(0)}: target teams distribute parallel for map(qq[:0]) private(i)) \
!                             when(user={condition(1)}: target teams loop collapse(2) map(qq[:0]) private(i))
    for(k=0; k<blksize; k++)
      {
  #pragma omp metadirective when(user={condition(0)}: simd) default()
--- 9,17 ----
    double *qq;
    int i, k, nq;
  
!   #pragma omp metadirective when(user={condition(0)}: target teams distribute parallel for collapse(2) map(qq[ :0]) private(i)) \
!                             when(user={condition(0)}: target teams distribute parallel for map(qq[ :0]) private(i)) \
!                             when(user={condition(1)}: target teams loop collapse(2) map(qq[ :0]) private(i))
    for(k=0; k<blksize; k++)
      {
  #pragma omp metadirective when(user={condition(0)}: simd) default()
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr61486-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr61486-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr61486-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr61486-1.c	Sun Nov 23 22:32:11 2025
*************** int
*** 6,12 ****
  foo (int *a)
  {
    int i, j = 0;
!   #pragma omp target teams distribute simd linear(i) map(a[:10])
    for (i = 0; i < 10; i++)
      a[i] = j;
    return i;
--- 6,12 ----
  foo (int *a)
  {
    int i, j = 0;
!   #pragma omp target teams distribute simd linear(i) map(a[ :10])
    for (i = 0; i < 10; i++)
      a[i] = j;
    return i;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr81006.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr81006.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr81006.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr81006.c	Sun Nov 23 22:32:11 2025
*************** int a[] = {};
*** 5,10 ****
  
  void foo()
  {
!   #pragma omp task depend(out: a[:])	/* { dg-error "zero length array section in .depend. clause" } */
      {}
  }
--- 5,10 ----
  
  void foo()
  {
!   #pragma omp task depend(out: a[ : ])	/* { dg-error "zero length array section in .depend. clause" } */
      {}
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr91920.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr91920.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr91920.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr91920.c	Sun Nov 23 22:32:11 2025
*************** foo (void)
*** 7,13 ****
  {
    int i;
    float f[3] = { 0.0f, 0.0f, 0.0f };
! #pragma omp parallel for default(none) reduction(+:f[:3])
    for (i = 0; i < 1000; i++)
      {
        int j;
--- 7,13 ----
  {
    int i;
    float f[3] = { 0.0f, 0.0f, 0.0f };
! #pragma omp parallel for default(none) reduction(+:f[ :3])
    for (i = 0; i < 1000; i++)
      {
        int j;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr96867.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr96867.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr96867.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr96867.c	Sun Nov 23 22:32:11 2025
*************** int *v;
*** 5,9 ****
  void
  foo (int x)
  {
!   #pragma omp target update to (x, v[:])	/* { dg-error "for pointer type length expression must be specified" } */
  }
--- 5,9 ----
  void
  foo (int x)
  {
!   #pragma omp target update to (x, v[ : ])	/* { dg-error "for pointer type length expression must be specified" } */
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr99928-16.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr99928-16.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/pr99928-16.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/pr99928-16.c	Sun Nov 23 22:32:11 2025
*************** void
*** 4,16 ****
  foo (void)
  {
    int a[6] = {};
!   #pragma omp target simd reduction(+:a[:3])
    for (int i = 0; i < 6; i++)
      a[0]++;
!   #pragma omp target simd reduction(+:a[:3]) map(always, tofrom: a)
    for (int i = 0; i < 6; i++)
      a[0]++;
!   #pragma omp target simd reduction(+:a[:3]) map(always, tofrom: a[:6])
    for (int i = 0; i < 6; i++)
      a[0]++;
  }
--- 4,16 ----
  foo (void)
  {
    int a[6] = {};
!   #pragma omp target simd reduction(+:a[ :3])
    for (int i = 0; i < 6; i++)
      a[0]++;
!   #pragma omp target simd reduction(+:a[ :3]) map(always, tofrom: a)
    for (int i = 0; i < 6; i++)
      a[0]++;
!   #pragma omp target simd reduction(+:a[ :3]) map(always, tofrom: a[ :6])
    for (int i = 0; i < 6; i++)
      a[0]++;
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/reduction-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/reduction-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/reduction-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/reduction-1.c	Sun Nov 23 22:32:11 2025
*************** foo (int a[10][10][10], int **b, int x)
*** 10,26 ****
    int c[10][10][0];
    int d[0];
    char e[12];
!   #pragma omp parallel reduction(+: a[:4][:0][:7])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp parallel reduction(+: b[:7][0:0][:0])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp parallel reduction(+: c[:][:][0:])	/* { dg-error "zero length array section|for unknown bound array type length expression must be specified" } */
      bar (a);
!   #pragma omp parallel reduction(+: a[:4][:0][:x])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp parallel reduction(+: b[:x][0:0][:0])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp parallel reduction(+: c[:][:x][0:])	/* { dg-error "zero length array section|for unknown bound array type length expression must be specified" } */
      bar (a);
    #pragma omp parallel reduction(+: d)			/* { dg-error "is a zero size array" } */
      bar (a);
--- 10,26 ----
    int c[10][10][0];
    int d[0];
    char e[12];
!   #pragma omp parallel reduction(+: a[ :4][ :0][ :7])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp parallel reduction(+: b[ :7][0:0][ :0])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp parallel reduction(+: c[ : ][ : ][0: ])	/* { dg-error "zero length array section|for unknown bound array type length expression must be specified" } */
      bar (a);
!   #pragma omp parallel reduction(+: a[ :4][ :0][ :x])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp parallel reduction(+: b[ :x][0:0][ :0])	/* { dg-error "zero length array section" } */
      bar (a);
!   #pragma omp parallel reduction(+: c[ : ][ :x][0: ])	/* { dg-error "zero length array section|for unknown bound array type length expression must be specified" } */
      bar (a);
    #pragma omp parallel reduction(+: d)			/* { dg-error "is a zero size array" } */
      bar (a);
*************** foo (int a[10][10][10], int **b, int x)
*** 42,52 ****
      bar (a);
    #pragma omp parallel reduction(+: a[0:2.5])		/* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      bar (a);
!   #pragma omp parallel reduction(+: f[:][0:2])		/* { dg-error "for unknown bound array type length expression must be specified" } */
      bar (a);
!   #pragma omp parallel reduction(+: a[:][0:10])		/* { dg-error "for array function parameter length expression must be specified" } */
      bar (a);
!   #pragma omp parallel reduction(+: a[:10][0:12])	/* { dg-error "above array section size" } */
      bar (a);
    #pragma omp parallel reduction(+: b[0:10][0:10])	/* { dg-error "array section is not contiguous" } */
      bar (a);
--- 42,52 ----
      bar (a);
    #pragma omp parallel reduction(+: a[0:2.5])		/* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      bar (a);
!   #pragma omp parallel reduction(+: f[ : ][0:2])		/* { dg-error "for unknown bound array type length expression must be specified" } */
      bar (a);
!   #pragma omp parallel reduction(+: a[ : ][0:10])		/* { dg-error "for array function parameter length expression must be specified" } */
      bar (a);
!   #pragma omp parallel reduction(+: a[ :10][0:12])	/* { dg-error "above array section size" } */
      bar (a);
    #pragma omp parallel reduction(+: b[0:10][0:10])	/* { dg-error "array section is not contiguous" } */
      bar (a);
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/scan-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/scan-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/scan-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/scan-1.c	Sun Nov 23 22:32:11 2025
*************** f2 (int *c, int *d, int *e, int *f)
*** 25,35 ****
        #pragma omp scan inclusive (b)				/* { dg-error "" } */
        d[i] = b;
      }
!   #pragma omp for reduction (inscan, +: e[:2])			/* { dg-error "'inscan' 'reduction' clause with array section" } */
    for (i = 0; i < 64; ++i)
      {
        { e[0] += c[i]; e[1] += c[i]; }
!       #pragma omp scan inclusive (a, e[:2])			/* { dg-error "" } */
        { d[i] = e[0]; f[i] = e[1]; }
      }
    #pragma omp for reduction (inscan, +: a) ordered		/* { dg-error "'ordered' clause specified together with 'inscan' 'reduction' clause" } */
--- 25,35 ----
        #pragma omp scan inclusive (b)				/* { dg-error "" } */
        d[i] = b;
      }
!   #pragma omp for reduction (inscan, +: e[ :2])			/* { dg-error "'inscan' 'reduction' clause with array section" } */
    for (i = 0; i < 64; ++i)
      {
        { e[0] += c[i]; e[1] += c[i]; }
!       #pragma omp scan inclusive (a, e[ :2])			/* { dg-error "" } */
        { d[i] = e[0]; f[i] = e[1]; }
      }
    #pragma omp for reduction (inscan, +: a) ordered		/* { dg-error "'ordered' clause specified together with 'inscan' 'reduction' clause" } */
*************** f3 (int *c, int *d)
*** 91,97 ****
    }
    #pragma omp scope reduction (inscan, +: a)	/* { dg-error "'inscan' 'reduction' clause on 'scope' construct" } */
    ;
!   #pragma omp target parallel for reduction (inscan, +: a) map (c[:64], d[:64])	/* { dg-error "'inscan' 'reduction' clause on construct other than 'for', 'simd', 'for simd', 'parallel for', 'parallel for simd'" } */
    for (i = 0; i < 64; i++)
      {
        d[i] = a;
--- 91,97 ----
    }
    #pragma omp scope reduction (inscan, +: a)	/* { dg-error "'inscan' 'reduction' clause on 'scope' construct" } */
    ;
!   #pragma omp target parallel for reduction (inscan, +: a) map (c[ :64], d[ :64])	/* { dg-error "'inscan' 'reduction' clause on construct other than 'for', 'simd', 'for simd', 'parallel for', 'parallel for simd'" } */
    for (i = 0; i < 64; i++)
      {
        d[i] = a;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-data-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-data-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-data-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-data-1.c	Sun Nov 23 22:32:11 2025
*************** foo (void)
*** 6,12 ****
    int a[4] = { 1, 2, 3, 4 };
    int *p = &a[0];
    int x = 5;
!   #pragma omp target data map(to:p[:4])
    #pragma omp target data use_device_ptr(p)
    #pragma omp target is_device_ptr(p)
    {
--- 6,12 ----
    int a[4] = { 1, 2, 3, 4 };
    int *p = &a[0];
    int x = 5;
!   #pragma omp target data map(to:p[ :4])
    #pragma omp target data use_device_ptr(p)
    #pragma omp target is_device_ptr(p)
    {
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-enter-data-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-enter-data-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-enter-data-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-enter-data-1.c	Sun Nov 23 22:32:11 2025
*************** struct foo
*** 16,24 ****
  
  void func (struct foo *f, int n, int m)
  {
!   #pragma omp target enter data map (to: f->vectors[m][:n])
!   #pragma omp target enter data map (to: f->bars[n].vectors[:m])
!   #pragma omp target enter data map (to: f->bars[n].vectors[:f->bars[n].num_vectors])
  }
  
  /* { dg-final { scan-tree-dump-times {map\(struct:\*f \[len: 1\]\) map\(alloc:[a-z0-9\._]+->vectors \[len: 0\]\) map\(to:\*_[0-9]+ \[len: _[0-9]+\]\) map\(attach:[a-z0-9\._]+->vectors \[bias: [^\]]+\]\) map\(attach:\*_[0-9]+ \[bias: [^\]]+\]\)} 1 "gimple" } } */
--- 16,24 ----
  
  void func (struct foo *f, int n, int m)
  {
!   #pragma omp target enter data map (to: f->vectors[m][ :n])
!   #pragma omp target enter data map (to: f->bars[n].vectors[ :m])
!   #pragma omp target enter data map (to: f->bars[n].vectors[ :f->bars[n].num_vectors])
  }
  
  /* { dg-final { scan-tree-dump-times {map\(struct:\*f \[len: 1\]\) map\(alloc:[a-z0-9\._]+->vectors \[len: 0\]\) map\(to:\*_[0-9]+ \[len: _[0-9]+\]\) map\(attach:[a-z0-9\._]+->vectors \[bias: [^\]]+\]\) map\(attach:\*_[0-9]+ \[bias: [^\]]+\]\)} 1 "gimple" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-has-device-addr-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-has-device-addr-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-has-device-addr-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-has-device-addr-1.c	Sun Nov 23 22:32:11 2025
*************** foo ()
*** 26,45 ****
    ;
  
    int z[3] = { 2, 5, 7 };
!   #pragma omp target data map(z[:3]) use_device_addr(z)
!     #pragma omp target has_device_addr(z[1:])
      ;
  
!   #pragma omp target data map(z[:3]) use_device_addr(z)
      #pragma omp target has_device_addr(z[1])
      ;
  
!   #pragma omp target data map(z[:3]) use_device_addr(z)
      #pragma omp target has_device_addr(z[1:2])
      ;
  
!   #pragma omp target data map(z[:3]) use_device_addr(z)
!     #pragma omp target has_device_addr(z[:2])
      ;
  
    int w[3][4];
--- 26,45 ----
    ;
  
    int z[3] = { 2, 5, 7 };
!   #pragma omp target data map(z[ :3]) use_device_addr(z)
!     #pragma omp target has_device_addr(z[1: ])
      ;
  
!   #pragma omp target data map(z[ :3]) use_device_addr(z)
      #pragma omp target has_device_addr(z[1])
      ;
  
!   #pragma omp target data map(z[ :3]) use_device_addr(z)
      #pragma omp target has_device_addr(z[1:2])
      ;
  
!   #pragma omp target data map(z[ :3]) use_device_addr(z)
!     #pragma omp target has_device_addr(z[ :2])
      ;
  
    int w[3][4];
*************** foo ()
*** 48,54 ****
      ;
  
    #pragma omp target data map(w) use_device_addr(w)
!     #pragma omp target has_device_addr(w[:1][2:])
      ;
  
    int u[0];
--- 48,54 ----
      ;
  
    #pragma omp target data map(w) use_device_addr(w)
!     #pragma omp target has_device_addr(w[ :1][2: ])
      ;
  
    int u[0];
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-implicit-map-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-implicit-map-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-implicit-map-2.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-implicit-map-2.c	Sun Nov 23 22:32:11 2025
*************** main (void)
*** 22,50 ****
    for (int i = 0; i < N; i++)
      a.ptr[i] = 0;
  
!   #pragma omp target enter data map(to: a.ptr, a.ptr[:N])
  
    #pragma omp target
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[:N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 1)
        abort ();
  
!   #pragma omp target map(a.ptr[:N])
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[:N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 2)
        abort ();
  
!   #pragma omp target exit data map(from:a.ptr, a.ptr[:N])
  
    return 0;
  }
--- 22,50 ----
    for (int i = 0; i < N; i++)
      a.ptr[i] = 0;
  
!   #pragma omp target enter data map(to: a.ptr, a.ptr[ :N])
  
    #pragma omp target
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[ :N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 1)
        abort ();
  
!   #pragma omp target map(a.ptr[ :N])
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[ :N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 2)
        abort ();
  
!   #pragma omp target exit data map(from:a.ptr, a.ptr[ :N])
  
    return 0;
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-map-iterators-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-map-iterators-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-map-iterators-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-map-iterators-1.c	Sun Nov 23 22:32:11 2025
***************
*** 6,18 ****
  
  void f (int **x, int **y)
  {
!   #pragma omp target map(iterator(i=0:DIM1), to: x[i][:DIM2])
      ;
  
!   #pragma omp target map(iterator(i=0:DIM1), to: x[i][:DIM2], y[i][:DIM2])
      ;
  
!   #pragma omp target map(iterator(i=0:DIM1), to: x[i][:DIM2] + 2) /* { dg-message "unsupported map expression" } */
      ;
  
    #pragma omp target map(iterator(i=0:DIM1), iterator(j=0:DIM2), to: x[i][j]) /* { dg-error "too many 'iterator' modifiers" } */
--- 6,18 ----
  
  void f (int **x, int **y)
  {
!   #pragma omp target map(iterator(i=0:DIM1), to: x[i][ :DIM2])
      ;
  
!   #pragma omp target map(iterator(i=0:DIM1), to: x[i][ :DIM2], y[i][ :DIM2])
      ;
  
!   #pragma omp target map(iterator(i=0:DIM1), to: x[i][ :DIM2] + 2) /* { dg-message "unsupported map expression" } */
      ;
  
    #pragma omp target map(iterator(i=0:DIM1), iterator(j=0:DIM2), to: x[i][j]) /* { dg-error "too many 'iterator' modifiers" } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-map-iterators-3.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-map-iterators-3.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-map-iterators-3.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-map-iterators-3.c	Sun Nov 23 22:32:11 2025
*************** void f (int ***x, float ***y, double **z
*** 9,17 ****
  {
    #pragma omp target \
        map(to: x, y) \
!       map(iterator(i=0:DIM1, j=0:DIM2), to: x[i][j][:DIM3], y[i][j][:DIM3]) \
        map(from: z) \
!       map(iterator(i=0:DIM1), from: z[i][:DIM2])
      ;
  }
  
--- 9,17 ----
  {
    #pragma omp target \
        map(to: x, y) \
!       map(iterator(i=0:DIM1, j=0:DIM2), to: x[i][j][ :DIM3], y[i][j][ :DIM3]) \
        map(from: z) \
!       map(iterator(i=0:DIM1), from: z[i][ :DIM2])
      ;
  }
  
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-update-iterators-1.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-update-iterators-1.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-update-iterators-1.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-update-iterators-1.c	Sun Nov 23 22:32:11 2025
***************
*** 6,16 ****
  
  void f (int **x, float **y)
  {
!   #pragma omp target update to (iterator(i=0:DIM1): x[i][:DIM2])
  
!   #pragma omp target update to (iterator(i=0:DIM1): x[i][:DIM2], y[i][:DIM2])
  
!   #pragma omp target update to (iterator(i=0:DIM1), present: x[i][:DIM2])
  
    #pragma omp target update to (iterator(i=0:DIM1), iterator(j=0:DIM2): x[i][j]) /* { dg-error "too many 'iterator' modifiers" } */
    /* { dg-error "'#pragma omp target update' must contain at least one 'from' or 'to' clauses" "" { target *-*-* } .-1 } */
--- 6,16 ----
  
  void f (int **x, float **y)
  {
!   #pragma omp target update to (iterator(i=0:DIM1): x[i][ :DIM2])
  
!   #pragma omp target update to (iterator(i=0:DIM1): x[i][ :DIM2], y[i][ :DIM2])
  
!   #pragma omp target update to (iterator(i=0:DIM1), present: x[i][ :DIM2])
  
    #pragma omp target update to (iterator(i=0:DIM1), iterator(j=0:DIM2): x[i][j]) /* { dg-error "too many 'iterator' modifiers" } */
    /* { dg-error "'#pragma omp target update' must contain at least one 'from' or 'to' clauses" "" { target *-*-* } .-1 } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-update-iterators-3.c gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-update-iterators-3.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/gomp/target-update-iterators-3.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/gomp/target-update-iterators-3.c	Sun Nov 23 22:32:11 2025
***************
*** 7,14 ****
  
  void f (int ***x, float ***y, double **z)
  {
!   #pragma omp target update to (iterator(i=0:DIM1, j=0:DIM2): x[i][j][:DIM3], y[i][j][:DIM3])
!   #pragma omp target update from (iterator(i=0:DIM1): z[i][:DIM2])
  }
  
  /* { dg-final { scan-tree-dump-times "if \\(i <= 9\\) goto <D\.\[0-9\]+>; else goto <D\.\[0-9\]+>;" 2 "gimple" } } */
--- 7,14 ----
  
  void f (int ***x, float ***y, double **z)
  {
!   #pragma omp target update to (iterator(i=0:DIM1, j=0:DIM2): x[i][j][ :DIM3], y[i][j][ :DIM3])
!   #pragma omp target update from (iterator(i=0:DIM1): z[i][ :DIM2])
  }
  
  /* { dg-final { scan-tree-dump-times "if \\(i <= 9\\) goto <D\.\[0-9\]+>; else goto <D\.\[0-9\]+>;" 2 "gimple" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/c-c++-common/restrict-2.c gcc-16-20251123/gcc/testsuite/c-c++-common/restrict-2.c
*** gcc-16-20251116/gcc/testsuite/c-c++-common/restrict-2.c	Sun Nov 16 22:33:12 2025
--- gcc-16-20251123/gcc/testsuite/c-c++-common/restrict-2.c	Sun Nov 23 22:32:12 2025
*************** void foo (float * __restrict__ a, float
*** 10,13 ****
  
  /* We should move the RHS of the store out of the loop.  */
  
! /* { dg-final { scan-tree-dump-times "Moving statement" 11 "lim2" } } */
--- 10,13 ----
  
  /* We should move the RHS of the store out of the loop.  */
  
! /* { dg-final { scan-tree-dump-times "Moving statement _\[0-9\]+ = \\\*_" 2 "lim2" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr1670-1.C gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr1670-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr1670-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr1670-1.C	Sun Nov 23 22:32:12 2025
***************
*** 0 ****
--- 1,9 ----
+ // DR 1670 - auto as conversion-type-id
+ // { dg-do compile { target c++14 } }
+ 
+ struct S {
+   operator auto () { return 0; }		// { dg-error "invalid use of 'auto' in conversion operator" }
+ };
+ struct T {
+   operator decltype (auto) () { return 0; }	// { dg-error "invalid use of 'auto' in conversion operator" }
+ };
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr1670-2.C gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr1670-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr1670-2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr1670-2.C	Sun Nov 23 22:32:12 2025
***************
*** 0 ****
--- 1,10 ----
+ // DR 1670 - auto as conversion-type-id
+ // { dg-do compile { target c++14 } }
+ // { dg-options "-Wpedantic" }
+ 
+ struct S {
+   operator auto () { return 0; }		// { dg-warning "invalid use of 'auto' in conversion operator" }
+ };
+ struct T {
+   operator decltype (auto) () { return 0; }	// { dg-warning "invalid use of 'auto' in conversion operator" }
+ };
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr1670-3.C gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr1670-3.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr1670-3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr1670-3.C	Sun Nov 23 22:32:12 2025
***************
*** 0 ****
--- 1,10 ----
+ // DR 1670 - auto as conversion-type-id
+ // { dg-do compile { target c++14 } }
+ // { dg-options "" }
+ 
+ struct S {
+   operator auto () { return 0; }
+ };
+ struct T {
+   operator decltype (auto) () { return 0; }
+ };
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr3045.C gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr3045.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr3045.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr3045.C	Sun Nov 23 22:32:12 2025
***************
*** 0 ****
--- 1,16 ----
+ // DR 3045 - Regularizing environment interactions of expansion statement
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ void
+ foo ()
+ {
+   static constexpr int arr[] = { 1, 2, 3 };
+   for (auto g : arr) {				// { dg-message "'int g' previously declared here" }
+     int g = 42;					// { dg-error "redeclaration of 'int g'" }
+   }
+   template for (auto x : arr) {			// { dg-warning "'template for' only available with" "" { target c++23_down } }
+ 						// { dg-message "'int x' previously declared here" "" { target *-*-* } .-1 }
+     int x = 42;					// { dg-error "redeclaration of 'int x'" }
+   }
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr3061.C gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr3061.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr3061.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr3061.C	Sun Nov 23 22:32:12 2025
***************
*** 0 ****
--- 1,18 ----
+ // DR 3061 - Trailing comma in an expansion-init-list
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ #include <initializer_list>
+ 
+ void
+ foo ()
+ {
+   for (int x : { 1, })
+     ;
+   template for (int x : { 1, })		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     ;
+   for (int x : { , })			// { dg-error "expected primary-expression before ',' token" }
+     ;					// { dg-error "unable to deduce" "" { target *-*-* } .-1 }
+   template for (int x : { , })		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     ;					// { dg-error "expected primary-expression before ',' token" "" { target *-*-* } .-1 }
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr3079.C gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr3079.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/DRs/dr3079.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/DRs/dr3079.C	Sun Nov 23 22:32:12 2025
***************
*** 0 ****
--- 1,5 ----
+ // DR 3079 - Allow empty-declarations in anonymous unions
+ // { dg-do compile { target c++11 } }
+ 
+ struct A { union { int x;; } u; };
+ struct B { union { int x;; }; };
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/analyzer/malloc.C gcc-16-20251123/gcc/testsuite/g++.dg/analyzer/malloc.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/analyzer/malloc.C	Sun Nov 16 22:33:13 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/analyzer/malloc.C	Sun Nov 23 22:32:12 2025
***************
*** 1,6 ****
--- 1,9 ----
  // { dg-do compile }
  /* { dg-skip-if "requires hosted libstdc++ for stdlib free" { ! hostedlib } } */
  
+ /* Verify we don't ICE on SARIF output (PR analyzer/122626).  */
+ /* { dg-additional-options "-fdiagnostics-add-output=sarif" } */
+ 
  #include <stdlib.h>
  
  void test_1 (void *ptr)
*************** void test_2 (void *ptr)
*** 24,26 ****
--- 27,31 ----
    free (ptr); // { dg-message "first 'free' here" }
    s2 a (ptr); // { dg-message "passing freed pointer 'ptr' in call to 's2::s2' from 'test_2'" }
  }
+ 
+ /* { dg-final { verify-sarif-file } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp0x/auto9.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp0x/auto9.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp0x/auto9.C	Sun Nov 16 22:33:14 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp0x/auto9.C	Sun Nov 23 22:32:12 2025
*************** const std::type_info &t2 = typeid (auto
*** 15,22 ****
  
  struct A
  {
!   operator auto ();				// { dg-error "auto" "" { target { ! c++14 } } }
!   operator auto *();				// { dg-error "auto" "" { target { ! c++14 } } }
  };
  
  struct A2
--- 15,22 ----
  
  struct A
  {
!   operator auto ();				// { dg-error "auto" }
!   operator auto *();				// { dg-error "auto" }
  };
  
  struct A2
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp0x/noexcept91.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp0x/noexcept91.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp0x/noexcept91.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp0x/noexcept91.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/122668
+ // { dg-do compile { target c++11 } }
+ 
+ template<class T>
+ struct A {
+   friend void f1(A& a) noexcept(noexcept(a.g(0))) { }
+   friend void f2(A& a) noexcept(noexcept(A::g(0))) { }
+   static void g(int) noexcept;
+ };
+ 
+ int main() {
+   A<int> a;
+   static_assert(noexcept(f1(a)), "");
+   static_assert(noexcept(f2(a)), "");
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp0x/pr119580.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp0x/pr119580.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp0x/pr119580.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp0x/pr119580.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/119580
+ // { dg-do compile { target c++11 } }
+ 
+ template<typename> struct V;
+ template<typename> class C;
+ class F;
+ 
+ struct S {
+   template<typename>
+   static void foo ();
+   template<typename T, typename>
+   C<decltype(S::foo<T::value_type>)> foo ();
+   decltype(foo<V<F>>()) *a;
+ };
+ 
+ S s;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn12.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn12.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	Sun Nov 16 22:33:15 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn12.C	Sun Nov 23 22:32:13 2025
***************
*** 1,6 ****
  // { dg-do compile { target c++14 } }
  // { dg-final { scan-assembler "_ZN1AIiEcvDaEv" } }
! // { dg-additional-options -fno-implicit-constexpr }
  
  template <class T>
  struct A {
--- 1,6 ----
  // { dg-do compile { target c++14 } }
  // { dg-final { scan-assembler "_ZN1AIiEcvDaEv" } }
! // { dg-options -fno-implicit-constexpr }
  
  template <class T>
  struct A {
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn13.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn13.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	Sun Nov 16 22:33:15 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn13.C	Sun Nov 23 22:32:13 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-do compile { target c++14 } }
+ // { dg-options "" }
  
  struct A {
    template <class T>
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn22.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn22.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	Sun Nov 16 22:33:15 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn22.C	Sun Nov 23 22:32:13 2025
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-do compile { target c++14 } }
+ // { dg-options "" }
  
  struct A
  {
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn44.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn44.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn44.C	Sun Nov 16 22:33:15 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn44.C	Sun Nov 23 22:32:13 2025
***************
*** 1,11 ****
  // PR c++/79474
  // { dg-do compile { target c++14 } }
  
  struct Funject
  {  
!   operator auto() { return +[](bool b) {return b;}; }
    operator auto() { return +[](bool b, bool, bool) {return b;}; }  // { dg-error "cannot be overloaded" }
! };
  
  Funject fun;
  auto bbb = fun(true);
--- 1,12 ----
  // PR c++/79474
  // { dg-do compile { target c++14 } }
+ // { dg-options "-Wpedantic" }
  
  struct Funject
  {  
!   operator auto() { return +[](bool b) {return b;}; }		   // { dg-warning "invalid use of 'auto' in conversion operator" }
    operator auto() { return +[](bool b, bool, bool) {return b;}; }  // { dg-error "cannot be overloaded" }
! };								   // { dg-warning "invalid use of 'auto' in conversion operator" "" { target *-*-* } .-1 }
  
  Funject fun;
  auto bbb = fun(true);
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn50.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn50.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/auto-fn50.C	Sun Nov 16 22:33:15 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/auto-fn50.C	Sun Nov 23 22:32:13 2025
***************
*** 1,10 ****
  // PR c++/84906
  // { dg-do compile { target c++14 } }
  
  extern "C" int puts(const char*);
  
  struct aa {
!   operator auto() {
      puts("auto");
      return false;
    }
--- 1,11 ----
  // PR c++/84906
  // { dg-do compile { target c++14 } }
+ // { dg-options "-Wpedantic" }
  
  extern "C" int puts(const char*);
  
  struct aa {
!   operator auto() {		// { dg-warning "invalid use of 'auto' in conversion operator" }
      puts("auto");
      return false;
    }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/constexpr-121445.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/constexpr-121445.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/constexpr-121445.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/constexpr-121445.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/121445
+ // { dg-do compile { target c++14 } }
+ 
+ struct D {
+   const char *d;
+   const char *foo () { return ""; };			// { dg-message "declared here" "" { target c++20_down } }
+   constexpr D () : d (foo ()) {}			// { dg-error "call to non-'constexpr' function 'const char\\\* D::foo\\\(\\\)'" "" { target c++20_down } }
+   constexpr D &operator= (const char *) { return *this; }
+ };
+ struct S {
+   constexpr S ()
+   {
+     struct A { D a; };
+     struct B { A b; };
+     struct C { B c; };
+     C d {};
+     d.c.b.a = "";
+   }
+ };
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C	Sun Nov 16 22:33:15 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp1y/constexpr-assert2.C	Sun Nov 23 22:32:13 2025
***************
*** 1,6 ****
--- 1,7 ----
  // PR c++/65985
  // { dg-do compile { target c++14 } }
  // { dg-skip-if "requires hosted libstdc++ for cassert" { ! hostedlib } }
+ // { dg-options "" }
  
  #include <cassert>
  
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations5.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations5.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations5.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations5.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,47 ----
+ // { dg-do compile { target c++17 } }
+ // Test diagnostics on static assertion failure.
+ 
+ template <typename T>
+ constexpr bool is_unique = __has_unique_object_representations(T);
+ 
+ struct AA {
+   float x;  // { dg-message "float" }
+ };
+ static_assert(is_unique<AA>);  // { dg-error "assert" }
+ 
+ struct A : AA {};  // { dg-message "base" }
+ static_assert(is_unique<A>);  // { dg-error "assert" }
+ 
+ struct B {
+   char   : 1;  // { dg-message "unnamed bit-field inserts padding before" }
+   char x : 7;
+ };
+ static_assert(is_unique<B>);  // { dg-error "assert" }
+ 
+ struct C {
+   char x : 5;  // { dg-message "padding occurs between 'C::x' and 'C::y'" }
+   char y;
+ };
+ static_assert(is_unique<C>);  // { dg-error "assert" }
+ 
+ struct D {
+   int x : 5;  // { dg-message "padding occurs" }
+ };
+ static_assert(is_unique<D>);  // { dg-error "assert" }
+ 
+ union E {
+   char x[1];  // { dg-message "does not fill all bits" }
+   char y[2];
+ };
+ static_assert(is_unique<E>);  // { dg-error "assert" }
+ 
+ union F {};  // { dg-message "no data fields" }
+ static_assert(is_unique<F>);  // { dg-error "assert" }
+ 
+ struct G { G(const G&); };  // { dg-message "trivially copyable" }
+ static_assert(is_unique<G>);  // { dg-error "assert" }
+ 
+ struct H {
+   AA a;  // { dg-message "unique object representations" }
+ };
+ static_assert(is_unique<H>);  // { dg-error "assert" }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp1z/pr122185.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp1z/pr122185.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp1z/pr122185.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp1z/pr122185.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,49 ----
+ // PR c++/122185
+ // { dg-do compile { target c++17 } }
+ // { dg-options "-w -O2" }
+ 
+ namespace std {
+ template <typename _Tp> struct remove_reference {
+   using type = __remove_reference(_Tp);
+ };
+ template <typename _Tp> _Tp forward(typename remove_reference<_Tp>::type);
+ }
+ template <typename T> struct static_const {
+   static constexpr T value{};
+ };
+ template <typename, typename> struct adl_serializer;
+ template <template <typename, typename> class = adl_serializer>
+ class basic_json;
+ struct from_json_fn {
+   template <typename BasicJsonType, typename T>
+   void operator()(BasicJsonType, T) const;
+ };
+ template <typename, typename> struct adl_serializer {
+   template <typename BasicJsonType, typename TargetType>
+   static void from_json(BasicJsonType &&j, TargetType val) {
+     static_const<from_json_fn>::value(std::forward<BasicJsonType>(j), val);
+   }
+ };
+ struct iter_impl {
+   basic_json<> operator*();
+   void operator++();
+   bool operator!=(iter_impl);
+ };
+ template <template <typename, typename = void> class JSONSerializer>
+ struct basic_json {
+   template <typename> using iter_impl = iter_impl;
+   using iterator = iter_impl<basic_json>;
+   template <typename> void get_impl(int) {
+     auto ret = int();
+     JSONSerializer<int>::from_json(*this, ret);
+   }
+   template <typename> void get() { get_impl<int>({}); }
+   iterator begin();
+   iterator end();
+   char type_name;
+ };
+ void _ValidateSignatureFile() {
+   basic_json signatures;
+   for (auto signature : signatures)
+     signature.get<int>();
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/constexpr-eh17.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp26/constexpr-eh17.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/constexpr-eh17.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp26/constexpr-eh17.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,38 ----
+ // PR libstdc++/122671
+ // { dg-do compile { target c++26 } }
+ 
+ #include <new>
+ #include <memory>
+ 
+ consteval auto
+ foo ()
+ {
+   struct E {};
+   struct O
+   {
+     constexpr explicit O (int x)
+     {
+       if (x < 0) { throw E {}; }
+     }
+   };
+ 
+   try
+   {
+     struct S
+     {
+       O *s;
+       constexpr S () : s { std::allocator <O> {}.allocate (1) } {}
+       constexpr ~S () { std::allocator <O> {}.deallocate (s, 1); }
+     };
+ 
+     auto s = S {};
+ 
+     ::new (s.s) O { -1 };
+   }
+   catch (E &)
+   {
+   }
+   return true;
+ }
+ 
+ static_assert (foo ());
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/expansion-stmt27.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp26/expansion-stmt27.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp26/expansion-stmt27.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp26/expansion-stmt27.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/122788
+ // { dg-do compile { target c++14 } }
+ // { dg-options "-Wunused" }
+ 
+ void
+ foo ()
+ {
+   template for ([[maybe_unused]] auto i : { 42 })		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     ;								// { dg-bogus "unused variable 'i'" "" { target *-*-* } .-1 }
+   template for ([[maybe_unused]] auto j : { 1, 2, 3 })		// { dg-warning "'template for' only available with" "" { target c++23_down } }
+     {								// { dg-bogus "unused variable 'j'" "" { target *-*-* } .-1 }
+ #if __cpp_if_constexpr >= 201606
+       if constexpr (false)
+ 	(void) j;
+ #endif
+     }
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp2a/consteval42.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp2a/consteval42.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp2a/consteval42.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp2a/consteval42.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/122658
+ // { dg-do compile { target c++20 } }
+ 
+ struct S {
+   consteval S () noexcept { }
+   consteval S (const S &) = default;
+ };
+ 
+ template <typename T>
+ S
+ foo ()
+ {
+   constexpr auto s = S();
+   return s;
+ }
+ 
+ S
+ bar ()
+ {
+   return foo <int> ();
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp2a/is-layout-compatible3.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp2a/is-layout-compatible3.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp2a/is-layout-compatible3.C	Sun Nov 16 22:33:16 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp2a/is-layout-compatible3.C	Sun Nov 23 22:32:13 2025
*************** struct B1 { signed int b; };
*** 51,65 ****
  struct alignas (16) C1 : public A1 {};
  struct alignas (16) D1 : public B1 {};
  
! static_assert (!std::is_layout_compatible_v<I, J>);
  static_assert (!std::is_layout_compatible_v<K, L>);
! static_assert (!std::is_layout_compatible_v<M, N>);
  static_assert (!std::is_layout_compatible_v<O, P>);
  static_assert (!std::is_layout_compatible_v<P, D>);
  static_assert (std::is_layout_compatible_v<Q, R>);
  static_assert (!std::is_layout_compatible_v<U, V>);
! static_assert (!std::is_layout_compatible_v<A, I>);
! static_assert (!std::is_layout_compatible_v<C, I>);
  static_assert (!std::is_layout_compatible_v<E, F>);
  static_assert (std::is_layout_compatible_v<G, H>);
  static_assert (std::is_layout_compatible_v<C1, D1>);
--- 51,65 ----
  struct alignas (16) C1 : public A1 {};
  struct alignas (16) D1 : public B1 {};
  
! static_assert (std::is_layout_compatible_v<I, J>);
  static_assert (!std::is_layout_compatible_v<K, L>);
! static_assert (std::is_layout_compatible_v<M, N>);
  static_assert (!std::is_layout_compatible_v<O, P>);
  static_assert (!std::is_layout_compatible_v<P, D>);
  static_assert (std::is_layout_compatible_v<Q, R>);
  static_assert (!std::is_layout_compatible_v<U, V>);
! static_assert (std::is_layout_compatible_v<A, I>);
! static_assert (std::is_layout_compatible_v<C, I>);
  static_assert (!std::is_layout_compatible_v<E, F>);
  static_assert (std::is_layout_compatible_v<G, H>);
  static_assert (std::is_layout_compatible_v<C1, D1>);
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp2a/is-layout-compatible4.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp2a/is-layout-compatible4.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp2a/is-layout-compatible4.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp2a/is-layout-compatible4.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,78 ----
+ // Test for diagnostics on failed is_layout_compatible.
+ // { dg-do compile { target c++20 } }
+ 
+ template <typename T, typename U>
+ constexpr bool is_layout_compatible_v = __is_layout_compatible (T, U);
+ 
+ static_assert(is_layout_compatible_v<int, unsigned>);  // { dg-error "assert" }
+ // { dg-message "is not layout compatible" "" { target *-*-* } .-1 }
+ // { dg-message "same type" "" { target *-*-* } .-2 }
+ 
+ struct S {};
+ static_assert(is_layout_compatible_v<const S, volatile int>);  // { dg-error "assert" }
+ // { dg-message "is not layout compatible" "" { target *-*-* } .-1 }
+ // { dg-message "same type" "" { target *-*-* } .-2 }
+ 
+ struct A {
+   int a;
+   char b;  // { dg-message "'A::b' and 'B::b' do not correspond" }
+ };
+ struct B {
+   int a;
+   signed char b;  // { dg-message "declared here" }
+ };
+ static_assert(is_layout_compatible_v<A, B>);  // { dg-error "assert" }
+ 
+ struct C {
+   int : 1;
+   int c : 7;
+   int : 0;  // { dg-message "'C::<anonymous>' and 'D::g' do not correspond" }
+   int : 2;
+ };
+ struct D {
+   int f : 1;
+   int : 7;
+   int g : 2;  // { dg-message "declared here" }
+ };
+ static_assert(is_layout_compatible_v<C, D>);  // { dg-error "assert" }
+ 
+ struct E {  // { dg-message "'E' is not a standard-layout type" }
+   int a;
+ private:
+   int b;
+ };
+ struct F {
+   int a;
+ private:
+   int b;
+ };
+ static_assert(is_layout_compatible_v<E, F>);  // { dg-error "assert" }
+ 
+ union G {
+   int a;
+   long long b;
+   signed char c;  // { dg-message "'H' has no member corresponding to 'G::c'" }
+ };
+ union H {  // { dg-message "declared here" }
+   char x;
+   int y;
+   long long z;
+ };
+ static_assert(is_layout_compatible_v<G, H>);  // { dg-error "assert" }
+ 
+ union I {  // { dg-message "'I' has 2 fields, but" }
+   int a;
+   double b;
+ };
+ union J {  // { dg-message "'J' has 1 field" }
+   int c;
+ };
+ static_assert(is_layout_compatible_v<I, J>);  // { dg-error "assert" }
+ 
+ enum K : int {  // { dg-message "the underlying type of 'K' is 'int'" }
+   K0, K1
+ };
+ enum L : long int {  // { dg-message "the underlying type of 'L' is 'long int'" }
+   L0, L1
+ };
+ static_assert(is_layout_compatible_v<K, L>);  // { dg-error "assert" }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of2.C gcc-16-20251123/gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of2.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,29 ----
+ // { dg-do compile { target c++20 } }
+ // { dg-additional-options "-Wno-inaccessible-base" }
+ 
+ template <typename T, typename U>
+ constexpr bool pointer_interconvertible_base_of
+   = __is_pointer_interconvertible_base_of(T, U);
+ 
+ struct A {};
+ struct B {};  // { dg-message "not a pointer-interconvertible base" }
+ static_assert(pointer_interconvertible_base_of<A, B>);  // { dg-error "assert" }
+ 
+ struct C {
+   int x;
+ private:
+   int y;
+ };
+ struct D : C {};  // { dg-message "standard-layout" }
+ static_assert(pointer_interconvertible_base_of<C, D>);  // { dg-error "assert" }
+ 
+ struct E {};
+ struct F : E {};
+ struct G : F, E {};  // { dg-message "standard-layout" }
+ static_assert(pointer_interconvertible_base_of<E, G>);  // { dg-error "assert" }
+ 
+ union H {};  // { dg-message "non-union" }
+ static_assert(pointer_interconvertible_base_of<H, H>);  // { dg-error "assert" }
+ 
+ static_assert(pointer_interconvertible_base_of<A, int>);  // { dg-error "assert" }
+ // { dg-message "non-union" "" { target *-*-* } .-1 }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/ext/is_destructible3.C gcc-16-20251123/gcc/testsuite/g++.dg/ext/is_destructible3.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/ext/is_destructible3.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/ext/is_destructible3.C	Sun Nov 23 22:32:13 2025
*************** static_assert(is_destructible<void>::val
*** 9,14 ****
--- 9,18 ----
  // { dg-message "'void' is not destructible, because" "" { target *-*-* } .-1 }
  // { dg-error "'void' is incomplete" "" { target *-*-* } .-2 }
  
+ static_assert(is_destructible<void() volatile>::value, "");  // { dg-error "assert" }
+ // { dg-message "'void\\(\\) volatile' is not destructible, because" "" { target *-*-* } .-1 }
+ // { dg-error "not a class or scalar type" "" { target *-*-* } .-2 }
+ 
  struct A {
    ~A() = delete;  // { dg-message "declared here" }
  };
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/ext/is_virtual_base_of_diagnostic2.C gcc-16-20251123/gcc/testsuite/g++.dg/ext/is_virtual_base_of_diagnostic2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/ext/is_virtual_base_of_diagnostic2.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/ext/is_virtual_base_of_diagnostic2.C	Sun Nov 23 22:32:13 2025
*************** struct is_virtual_base_of {
*** 8,13 ****
  static_assert(is_virtual_base_of<int, int>::value, "");  // { dg-error "assert" }
  // { dg-message "'int' is not a virtual base of 'int'" "" { target *-*-* } .-1 }
  
! struct A {};  // { dg-message "'A' is not a virtual base of 'B'" }
! struct B : A {};  // { dg-message "declared here" }
  static_assert(is_virtual_base_of<A, B>::value, "");  // { dg-error "assert" }
--- 8,13 ----
  static_assert(is_virtual_base_of<int, int>::value, "");  // { dg-error "assert" }
  // { dg-message "'int' is not a virtual base of 'int'" "" { target *-*-* } .-1 }
  
! struct A {};
! struct B : A {};  // { dg-message "'A' is not a virtual base of 'B'" }
  static_assert(is_virtual_base_of<A, B>::value, "");  // { dg-error "assert" }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/ext/reference_xes_from_temporary1.C gcc-16-20251123/gcc/testsuite/g++.dg/ext/reference_xes_from_temporary1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/ext/reference_xes_from_temporary1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/ext/reference_xes_from_temporary1.C	Sun Nov 23 22:32:13 2025
***************
*** 0 ****
--- 1,28 ----
+ // PR c++/120529
+ // { dg-do compile { target c++11 } }
+ 
+ #define SA(X) static_assert((X),#X)
+ 
+ class Dst {};
+ 
+ class Src {
+ private:
+     operator Dst() const;
+ };
+ 
+ class Src2 {
+ protected:
+     operator Dst() const;
+ };
+ 
+ class Src3 {
+ public:
+     operator Dst() const;
+ };
+ 
+ SA (!__reference_converts_from_temporary (Dst&&, Src));
+ SA (!__reference_constructs_from_temporary (Dst&&, Src));
+ SA (!__reference_converts_from_temporary (Dst&&, Src2));
+ SA (!__reference_constructs_from_temporary (Dst&&, Src2));
+ SA (__reference_converts_from_temporary (Dst&&, Src3));
+ SA (__reference_constructs_from_temporary (Dst&&, Src3));
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/goacc/cache-3-1.C gcc-16-20251123/gcc/testsuite/g++.dg/goacc/cache-3-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/goacc/cache-3-1.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/goacc/cache-3-1.C	Sun Nov 23 22:32:14 2025
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 32,44 ****
      ;
    #pragma acc cache(t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma acc cache(k[0.5:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc cache(l[:7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc cache(m[p:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc cache(n[:p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma acc cache(o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
--- 32,44 ----
      ;
    #pragma acc cache(t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma acc cache(k[0.5: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc cache(l[ :7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc cache(m[p: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc cache(n[ :p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma acc cache(o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 46,118 ****
      ;
    #pragma acc cache(s2) /* { dg-error "expected '\\\['" } */
      ;
!   #pragma acc cache(a[:][:]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]);
!   #pragma acc cache(b[-1:]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma acc cache(c[:-3][:]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma acc cache(d[11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma acc cache(e[:11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma acc cache(f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma acc cache(g[:][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma acc cache(h[2:1][-1:]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma acc cache(h[:1][:-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma acc cache(i[:1][11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma acc cache(j[3:1][:10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma acc cache(j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma acc cache(a2[:1][2:4])
      bar (&a2[0][0]);
!   #pragma acc cache(a2[3:5][:])
      bar (&a2[0][0]);
!   #pragma acc cache(a2[3:5][:10])
      bar (&a2[0][0]);
!   #pragma acc cache(b2[0:])
      bar (b2);
!   #pragma acc cache(c2[:3][:])
      bar (&c2[0][0]);
!   #pragma acc cache(d2[9:])
      bar (d2);
!   #pragma acc cache(e2[:10])
      bar (e2);
    #pragma acc cache(f2[1:9])
      bar (f2);
!   #pragma acc cache(g2[:1][2:4])
      bar (&g2[0][0]);
!   #pragma acc cache(h2[2:2][0:])
      bar (&h2[0][0]);
!   #pragma acc cache(h2[:1][:3])
      bar (&h2[0][0]);
!   #pragma acc cache(i2[:1][9:])
      bar (&i2[0][0]);
!   #pragma acc cache(j2[3:4][:9])
      bar (&j2[0][0]);
    #pragma acc cache(j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma acc cache(q[1:2])
      ;
!   #pragma acc cache(q[3:5][:10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc cache(r[3:][2:1][1:2])
      ;
!   #pragma acc cache(r[3:][2:1][1:2][:][0:4])
      ;
!   #pragma acc cache(r[3:][2:1][1:2][1:][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc cache(r[3:][2:1][1:2][:3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc cache(r[3:][2:1][1:2][:][1:]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc cache(r[3:][2:1][1:2][:][:3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
  
--- 46,118 ----
      ;
    #pragma acc cache(s2) /* { dg-error "expected '\\\['" } */
      ;
!   #pragma acc cache(a[ : ][ : ]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]);
!   #pragma acc cache(b[-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma acc cache(c[ :-3][ : ]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma acc cache(d[11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma acc cache(e[ :11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma acc cache(f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma acc cache(g[ : ][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma acc cache(h[2:1][-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma acc cache(h[ :1][ :-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma acc cache(i[ :1][11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma acc cache(j[3:1][ :10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma acc cache(j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma acc cache(a2[ :1][2:4])
      bar (&a2[0][0]);
!   #pragma acc cache(a2[3:5][ : ])
      bar (&a2[0][0]);
!   #pragma acc cache(a2[3:5][ :10])
      bar (&a2[0][0]);
!   #pragma acc cache(b2[0: ])
      bar (b2);
!   #pragma acc cache(c2[ :3][ : ])
      bar (&c2[0][0]);
!   #pragma acc cache(d2[9: ])
      bar (d2);
!   #pragma acc cache(e2[ :10])
      bar (e2);
    #pragma acc cache(f2[1:9])
      bar (f2);
!   #pragma acc cache(g2[ :1][2:4])
      bar (&g2[0][0]);
!   #pragma acc cache(h2[2:2][0: ])
      bar (&h2[0][0]);
!   #pragma acc cache(h2[ :1][ :3])
      bar (&h2[0][0]);
!   #pragma acc cache(i2[ :1][9: ])
      bar (&i2[0][0]);
!   #pragma acc cache(j2[3:4][ :9])
      bar (&j2[0][0]);
    #pragma acc cache(j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma acc cache(q[1:2])
      ;
!   #pragma acc cache(q[3:5][ :10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc cache(r[3: ][2:1][1:2])
      ;
!   #pragma acc cache(r[3: ][2:1][1:2][ : ][0:4])
      ;
!   #pragma acc cache(r[3: ][2:1][1:2][1: ][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc cache(r[3: ][2:1][1:2][ :3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc cache(r[3: ][2:1][1:2][ : ][1: ]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc cache(r[3: ][2:1][1:2][ : ][ :3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
  
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/goacc/cache-3-2.C gcc-16-20251123/gcc/testsuite/g++.dg/goacc/cache-3-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/goacc/cache-3-2.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/goacc/cache-3-2.C	Sun Nov 23 22:32:14 2025
*************** foo (int *p, int (*q)[10], int r[10], in
*** 20,44 ****
    ;
    #pragma acc cache (r[-1:2])
    ;
!   #pragma acc cache (s[-1:2][:])
    ;
    #pragma acc cache (s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma acc cache (b[-1:2][0:])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc cache (q[2:-3][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc cache (s[2:-5][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
--- 20,44 ----
    ;
    #pragma acc cache (r[-1:2])
    ;
!   #pragma acc cache (s[-1:2][ : ])
    ;
    #pragma acc cache (s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma acc cache (b[-1:2][0: ])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma acc cache (p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc cache (q[2:-3][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma acc cache (s[2:-5][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma acc cache (s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/goacc/data-clause-1.C gcc-16-20251123/gcc/testsuite/g++.dg/goacc/data-clause-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/goacc/data-clause-1.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/goacc/data-clause-1.C	Sun Nov 23 22:32:14 2025
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 31,43 ****
      ;
    #pragma acc parallel copyout(t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma acc parallel copy(k[0.5:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copyout(l[:7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copyin(m[p:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copy(n[:p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma acc parallel copyin(o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
--- 31,43 ----
      ;
    #pragma acc parallel copyout(t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma acc parallel copy(k[0.5: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copyout(l[ :7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copyin(m[p: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma acc parallel copy(n[ :p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma acc parallel copyin(o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 45,117 ****
      ;
    #pragma acc parallel create(s2) /* { dg-error "'s2' does not have a mappable type in 'map' clause" } */
      ;
!   #pragma acc parallel copyin(a[:][:]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]); /* { dg-error "referenced in target region does not have a mappable type" "PR97996" { xfail *-*-* } } */
!   #pragma acc parallel copy(b[-1:]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma acc parallel copy(c[:-3][:]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma acc parallel copyout(d[11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma acc parallel copyin(e[:11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma acc parallel copyin(f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma acc parallel copyout(g[:][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma acc parallel copyout(h[2:1][-1:]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma acc parallel copy(h[:1][:-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma acc parallel copy(i[:1][11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma acc parallel copyout(j[3:1][:10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma acc parallel copyin(j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma acc parallel copyin(a2[:1][2:4])
      bar (&a2[0][0]);
!   #pragma acc parallel copy(a2[3:5][:])
      bar (&a2[0][0]);
!   #pragma acc parallel copyin(a2[3:5][:10])
      bar (&a2[0][0]);
!   #pragma acc parallel copy(b2[0:])
      bar (b2);
!   #pragma acc parallel copy(c2[:3][:])
      bar (&c2[0][0]);
!   #pragma acc parallel copyout(d2[9:])
      bar (d2);
!   #pragma acc parallel copyin(e2[:10])
      bar (e2);
    #pragma acc parallel copyin(f2[1:9])
      bar (f2);
!   #pragma acc parallel copy(g2[:1][2:4])
      bar (&g2[0][0]);
!   #pragma acc parallel copyout(h2[2:2][0:])
      bar (&h2[0][0]);
!   #pragma acc parallel copy(h2[:1][:3])
      bar (&h2[0][0]);
!   #pragma acc parallel copyin(i2[:1][9:])
      bar (&i2[0][0]);
!   #pragma acc parallel copyout(j2[3:4][:9])
      bar (&j2[0][0]);
    #pragma acc parallel copyin(j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma acc parallel copy(q[1:2])
      ;
!   #pragma acc parallel copy(q[3:5][:10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2])
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][:][0:4])
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][1:][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][:3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][:][1:]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3:][2:1][1:2][:][:3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
  
--- 45,117 ----
      ;
    #pragma acc parallel create(s2) /* { dg-error "'s2' does not have a mappable type in 'map' clause" } */
      ;
!   #pragma acc parallel copyin(a[ : ][ : ]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]); /* { dg-error "referenced in target region does not have a mappable type" "PR97996" { xfail *-*-* } } */
!   #pragma acc parallel copy(b[-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma acc parallel copy(c[ :-3][ : ]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma acc parallel copyout(d[11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma acc parallel copyin(e[ :11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma acc parallel copyin(f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma acc parallel copyout(g[ : ][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma acc parallel copyout(h[2:1][-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma acc parallel copy(h[ :1][ :-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma acc parallel copy(i[ :1][11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma acc parallel copyout(j[3:1][ :10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma acc parallel copyin(j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma acc parallel copyin(a2[ :1][2:4])
      bar (&a2[0][0]);
!   #pragma acc parallel copy(a2[3:5][ : ])
      bar (&a2[0][0]);
!   #pragma acc parallel copyin(a2[3:5][ :10])
      bar (&a2[0][0]);
!   #pragma acc parallel copy(b2[0: ])
      bar (b2);
!   #pragma acc parallel copy(c2[ :3][ : ])
      bar (&c2[0][0]);
!   #pragma acc parallel copyout(d2[9: ])
      bar (d2);
!   #pragma acc parallel copyin(e2[ :10])
      bar (e2);
    #pragma acc parallel copyin(f2[1:9])
      bar (f2);
!   #pragma acc parallel copy(g2[ :1][2:4])
      bar (&g2[0][0]);
!   #pragma acc parallel copyout(h2[2:2][0: ])
      bar (&h2[0][0]);
!   #pragma acc parallel copy(h2[ :1][ :3])
      bar (&h2[0][0]);
!   #pragma acc parallel copyin(i2[ :1][9: ])
      bar (&i2[0][0]);
!   #pragma acc parallel copyout(j2[3:4][ :9])
      bar (&j2[0][0]);
    #pragma acc parallel copyin(j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma acc parallel copy(q[1:2])
      ;
!   #pragma acc parallel copy(q[3:5][ :10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2])
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][ : ][0:4])
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][1: ][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][ :3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][ : ][1: ]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma acc parallel copy(r[3: ][2:1][1:2][ : ][ :3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
  
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/goacc/data-clause-2.C gcc-16-20251123/gcc/testsuite/g++.dg/goacc/data-clause-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/goacc/data-clause-2.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/goacc/data-clause-2.C	Sun Nov 23 22:32:14 2025
***************
*** 6,11 ****
--- 6,15 ----
  
  /* See also corresponding OpenMP variant: '../gomp/map-2.C'.  */
  
+ /* Array sections without spaces between [ and : or : and ] are incompatible
+    with C++26.  */
+ /* { dg-skip-if "array sections vs. C++26" { c++26 } } */
+ 
  template <int N>
  void
  foo (int *p, int (*q)[10], int r[10], int s[10][10])
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/goacc/mdc.C gcc-16-20251123/gcc/testsuite/g++.dg/goacc/mdc.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/goacc/mdc.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/goacc/mdc.C	Sun Nov 23 22:32:14 2025
*************** t1 ()
*** 30,46 ****
  #pragma acc exit data detach(ra)
      }
  
! #pragma acc enter data attach(rz[:5]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(rz[:5]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc enter data attach(rz[1:]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(rz[1:]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc enter data attach(rz[:]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(rz[:]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
  #pragma acc enter data attach(rz[3]) /* { dg-error "expected pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
--- 30,46 ----
  #pragma acc exit data detach(ra)
      }
  
! #pragma acc enter data attach(rz[ :5]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(rz[ :5]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc enter data attach(rz[1: ]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(rz[1: ]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc enter data attach(rz[ : ]) /* { dg-error "expected single pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
! #pragma acc exit data detach(rz[ : ]) /* { dg-error "expected single pointer in .detach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
  #pragma acc enter data attach(rz[3]) /* { dg-error "expected pointer in .attach. clause" } */
  /* { dg-error "has no data movement clause" "" { target *-*-* } .-1 } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/allocate-3.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/allocate-3.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/allocate-3.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/allocate-3.C	Sun Nov 23 22:32:14 2025
***************
*** 1,3 ****
--- 1,7 ----
+ // Array sections without spaces between [ and : or : and ] are incompatible
+ // with C++26.
+ // { dg-skip-if "array sections vs. C++26" { c++26 } }
+ 
  template <typename T>
  void
  foo (T &x, T (&y)[4], T *&z, int &u, int (&v)[4], int *&w)
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/array-section-2.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/array-section-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/array-section-2.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/array-section-2.C	Sun Nov 23 22:32:14 2025
*************** int C::foo()
*** 18,27 ****
  #pragma omp target map(arr1[::x: ::y])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[SAVE_EXPR <x>\] \[len: \(sizetype\) y \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: \((?:long )?int\) &arr1\[SAVE_EXPR <x>\] - \((?:long )?int\) &arr1\]\)} "original" } }
    { }
! #pragma omp target map(arr1[::x:])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[SAVE_EXPR <x>\] \[len: \(40 - \(sizetype\) SAVE_EXPR <x>\) \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: \((?:long )?int\) &arr1\[SAVE_EXPR <x>\] - \((?:long )?int\) &arr1\]\)} "original" } }
    { }
! #pragma omp target map(arr1[: ::y])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[0\] \[len: \(sizetype\) y \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: 0\]\)} "original" } }
    { }
    return ::x + ::y;
--- 18,27 ----
  #pragma omp target map(arr1[::x: ::y])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[SAVE_EXPR <x>\] \[len: \(sizetype\) y \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: \((?:long )?int\) &arr1\[SAVE_EXPR <x>\] - \((?:long )?int\) &arr1\]\)} "original" } }
    { }
! #pragma omp target map(arr1[::x: ])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[SAVE_EXPR <x>\] \[len: \(40 - \(sizetype\) SAVE_EXPR <x>\) \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: \((?:long )?int\) &arr1\[SAVE_EXPR <x>\] - \((?:long )?int\) &arr1\]\)} "original" } }
    { }
! #pragma omp target map(arr1[ : ::y])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[0\] \[len: \(sizetype\) y \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: 0\]\)} "original" } }
    { }
    return ::x + ::y;
*************** void Ct<T>::foo()
*** 42,51 ****
  #pragma omp target map(arr1[::x: ::y])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[SAVE_EXPR <x>\] \[len: \(sizetype\) y \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: \((?:long )?int\) &arr1\[SAVE_EXPR <x>\] - \((?:long )?int\) &arr1\]\)} "original" } }
    { }
! #pragma omp target map(arr1[::x:])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[SAVE_EXPR <x>\] \[len: \(40 - \(sizetype\) SAVE_EXPR <x>\) \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: \((?:long )?int\) &arr1\[SAVE_EXPR <x>\] - \((?:long )?int\) &arr1\]\)} "original" } }
    { }
! #pragma omp target map(arr1[: ::y])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[0\] \[len: \(sizetype\) y \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: 0\]\)} "original" } }
    { }
  }
--- 42,51 ----
  #pragma omp target map(arr1[::x: ::y])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[SAVE_EXPR <x>\] \[len: \(sizetype\) y \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: \((?:long )?int\) &arr1\[SAVE_EXPR <x>\] - \((?:long )?int\) &arr1\]\)} "original" } }
    { }
! #pragma omp target map(arr1[::x: ])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[SAVE_EXPR <x>\] \[len: \(40 - \(sizetype\) SAVE_EXPR <x>\) \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: \((?:long )?int\) &arr1\[SAVE_EXPR <x>\] - \((?:long )?int\) &arr1\]\)} "original" } }
    { }
! #pragma omp target map(arr1[ : ::y])
  // { dg-final { scan-tree-dump {map\(tofrom:arr1\[0\] \[len: \(sizetype\) y \* [0-9]+\]\) map\(firstprivate:arr1 \[pointer assign, bias: 0\]\)} "original" } }
    { }
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/bad-array-section-10.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/bad-array-section-10.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/bad-array-section-10.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/bad-array-section-10.C	Sun Nov 23 22:32:14 2025
*************** template<int C, int D>
*** 4,10 ****
  void foo()
  {
    int arr1[40];
! #pragma omp target map(arr1[4,C:])
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
--- 4,10 ----
  void foo()
  {
    int arr1[40];
! #pragma omp target map(arr1[4,C: ])
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
*************** void foo()
*** 12,18 ****
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
! #pragma omp target map(arr1[:8,C,10])
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
--- 12,18 ----
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
! #pragma omp target map(arr1[ :8,C,10])
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
*************** void foo()
*** 21,27 ****
  int main()
  {
    int arr1[40];
! #pragma omp target map(arr1[4,5:])
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
--- 21,27 ----
  int main()
  {
    int arr1[40];
! #pragma omp target map(arr1[4,5: ])
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
*************** int main()
*** 29,35 ****
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
! #pragma omp target map(arr1[:8,9,10])
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
--- 29,35 ----
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
! #pragma omp target map(arr1[ :8,9,10])
  // { dg-warning "top-level comma expression in array subscript is deprecated" "" { target c++20_only } .-1 }
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target c++23 } .-2 }
    { }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/bad-array-section-11.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/bad-array-section-11.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/bad-array-section-11.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/bad-array-section-11.C	Sun Nov 23 22:32:14 2025
*************** template<int C, int D>
*** 5,17 ****
  void foo()
  {
    int arr1[40];
! #pragma omp target map(arr1[4,C:])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
  #pragma omp target map(arr1[4,5:C,7])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
! #pragma omp target map(arr1[:8,C,10])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
  }
--- 5,17 ----
  void foo()
  {
    int arr1[40];
! #pragma omp target map(arr1[4,C: ])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
  #pragma omp target map(arr1[4,5:C,7])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
! #pragma omp target map(arr1[ :8,C,10])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
  }
*************** void foo()
*** 19,31 ****
  int main()
  {
    int arr1[40];
! #pragma omp target map(arr1[4,5:])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
  #pragma omp target map(arr1[4,5:6,7])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
! #pragma omp target map(arr1[:8,9,10])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
  
--- 19,31 ----
  int main()
  {
    int arr1[40];
! #pragma omp target map(arr1[4,5: ])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
  #pragma omp target map(arr1[4,5:6,7])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
! #pragma omp target map(arr1[ :8,9,10])
  // { dg-error "cannot use multidimensional subscript in OpenMP array section" "" { target *-*-* } .-1 }
    { }
  
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/bad-array-section-9.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/bad-array-section-9.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/bad-array-section-9.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/bad-array-section-9.C	Sun Nov 23 22:32:14 2025
*************** void foo()
*** 10,16 ****
  #pragma omp target map(arr1[arr2[4:5]:arr2[6:7]])
  // { dg-error {low bound 'arr2\[4:5\]' of array section does not have integral type} "" { target *-*-* } .-1 }
    { }
! #pragma omp target map(arr1[arr2[:1]:arr2[6:1]])
  // { dg-error {low bound 'arr2\[:1\]' of array section does not have integral type} "" { target *-*-* } .-1 }
    { }
  #pragma omp target map(arr1[x:arr2[6:1]])
--- 10,16 ----
  #pragma omp target map(arr1[arr2[4:5]:arr2[6:7]])
  // { dg-error {low bound 'arr2\[4:5\]' of array section does not have integral type} "" { target *-*-* } .-1 }
    { }
! #pragma omp target map(arr1[arr2[ :1]:arr2[6:1]])
  // { dg-error {low bound 'arr2\[:1\]' of array section does not have integral type} "" { target *-*-* } .-1 }
    { }
  #pragma omp target map(arr1[x:arr2[6:1]])
*************** int main()
*** 25,31 ****
  #pragma omp target map(arr1[arr2[4:5]:arr2[6:7]])
  // { dg-error {low bound 'arr2\[4:5\]' of array section does not have integral type} "" { target *-*-* } .-1 }
    { }
! #pragma omp target map(arr1[arr2[:1]:arr2[6:1]])
  // { dg-error {low bound 'arr2\[:1\]' of array section does not have integral type} "" { target *-*-* } .-1 }
    { }
  #pragma omp target map(arr1[x:arr2[6:1]])
--- 25,31 ----
  #pragma omp target map(arr1[arr2[4:5]:arr2[6:7]])
  // { dg-error {low bound 'arr2\[4:5\]' of array section does not have integral type} "" { target *-*-* } .-1 }
    { }
! #pragma omp target map(arr1[arr2[ :1]:arr2[6:1]])
  // { dg-error {low bound 'arr2\[:1\]' of array section does not have integral type} "" { target *-*-* } .-1 }
    { }
  #pragma omp target map(arr1[x:arr2[6:1]])
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/declare-mapper-1.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/declare-mapper-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/declare-mapper-1.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/declare-mapper-1.C	Sun Nov 23 22:32:14 2025
*************** struct S {
*** 10,17 ****
  
  #define N 64
  
! #pragma omp declare mapper (S w) map(w.size, w.ptr, w.ptr[:w.size])
! #pragma omp declare mapper (foo:S w) map(to:w.size, w.ptr) map(w.ptr[:w.size])
  
  int main (int argc, char *argv[])
  {
--- 10,17 ----
  
  #define N 64
  
! #pragma omp declare mapper (S w) map(w.size, w.ptr, w.ptr[ :w.size])
! #pragma omp declare mapper (foo:S w) map(to:w.size, w.ptr) map(w.ptr[ :w.size])
  
  int main (int argc, char *argv[])
  {
*************** int main (int argc, char *argv[])
*** 19,25 ****
    s.ptr = new int[N];
    s.size = N;
  
! #pragma omp declare mapper (bar:S w) map(w.size, w.ptr, w.ptr[:w.size])
  
  #pragma omp target
    {
--- 19,25 ----
    s.ptr = new int[N];
    s.size = N;
  
! #pragma omp declare mapper (bar:S w) map(w.size, w.ptr, w.ptr[ :w.size])
  
  #pragma omp target
    {
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/declare-mapper-2.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/declare-mapper-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/declare-mapper-2.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/declare-mapper-2.C	Sun Nov 23 22:32:14 2025
*************** struct Z {
*** 13,19 ****
  
  int main (int argc, char *argv[])
  {
! #pragma omp declare mapper (S v) map(v.size, v.ptr[:v.size]) // { dg-note "'#pragma omp declare mapper \\(S\\)' previously declared here" }
  
    /* This one's a duplicate.  */
  #pragma omp declare mapper (default: S v) map (to: v.size) map (v) // { dg-error "redeclaration of '#pragma omp declare mapper \\(S\\)'" }
--- 13,19 ----
  
  int main (int argc, char *argv[])
  {
! #pragma omp declare mapper (S v) map(v.size, v.ptr[ :v.size]) // { dg-note "'#pragma omp declare mapper \\(S\\)' previously declared here" }
  
    /* This one's a duplicate.  */
  #pragma omp declare mapper (default: S v) map (to: v.size) map (v) // { dg-error "redeclaration of '#pragma omp declare mapper \\(S\\)'" }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-1.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-1.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-foffload=disable -fdump-tree-gimple" } */
+ 
+ /* Check that variants within a "begin declare variant" directive 
+    are attached to the correct overloaded function.  */
+ 
+ int f (int x) { return x; }
+ 
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ int f (int x) { return -1; }
+ #pragma omp end declare variant
+ 
+ int f (int x, int y) { return x * y; }
+ 
+ #pragma omp begin declare variant match (construct={target})
+ int f (int x, int y) { return -2; }
+ #pragma omp end declare variant
+ 
+ int f (int x, int y, int z) { return x * y * z; }
+ 
+ #pragma omp begin declare variant match (device={kind("host")})
+ int f (int x, int y, int z) { return -3; }
+ #pragma omp end declare variant
+ 
+ int main (void)
+ {
+   if (f (10) != -1) __builtin_abort ();
+   if (f (10, 20) != 200) __builtin_abort ();   /* no match on this one */
+   if (f (10, 20, 30) != -3) __builtin_abort ();
+ }
+ 
+ /* { dg-final { scan-tree-dump "f\\.ompvariant. \\(10\\)" "gimple" } } */
+ /* { dg-final { scan-tree-dump "f \\(10, 20\\)" "gimple" } } */
+ /* { dg-final { scan-tree-dump "f\\.ompvariant. \\(10, 20, 30\\)" "gimple" } } */
+ 
+ 
+ 
+ 
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-2.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-2.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fdump-tree-gimple" } */
+ 
+ /* Check that "omp begin declare variant" works on methods in a 
+    class declaration.  */
+ 
+ class test1 {
+ 
+  private:
+   int n;
+   static int m;
+ 
+  public:
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   int get_n (void) { return n * 2; }
+   static int get_m (void) { return m * 2; }
+   #pragma omp end declare variant
+ 
+   #pragma omp begin declare variant match (construct={target})
+   int get_n (void) { return this->n * 2; }
+   #pragma omp end declare variant
+ 
+   /* The base methods are deliberately declared after the variants in order
+      to check that the lookup can still find them.  */
+   void set_n (int x) { n = x; }
+   int get_n (void) { return n; }
+   
+   static void set_m (int x) { m = x; }
+   static int get_m (void) { return m; }
+ };
+ 
+ int test1::m;
+ 
+ int main (void)
+ {
+   test1 t1;
+   t1.set_n (10);
+   if (t1.get_n () != 20) __builtin_abort ();
+   test1::set_m (1);
+   if (test1::get_m () != 2) __builtin_abort ();
+ }
+ 
+ /* { dg-final { scan-tree-dump "test1::get_n\\.ompvariant. \\(&t1\\)" "gimple" } } */
+ /* { dg-final { scan-tree-dump "test1::get_m\\.ompvariant. \\(\\)" "gimple" } } */
+ 
+ /* The variants must have internal linkage, not .globl or .weak.  */
+ /* { dg-final { scan-assembler-not "\\.globl\[ \t\]*_?_ZN5test117get_n\\.ompvariant" } } */
+ /* { dg-final { scan-assembler-not "\\.globl\[ \t\]*_?_ZN5test117get_m\\.ompvariant" } } */
+ /* { dg-final { scan-assembler-not "\\.weak\[ \t\]*_?_ZN5test117get_n\\.ompvariant" } } */
+ /* { dg-final { scan-assembler-not "\\.weak\[ \t\]*_?_ZN5test117get_m\\.ompvariant" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-3.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-3.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-3.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do compile } */
+ 
+ /* Check that "omp begin declare variant" for class methods outside of the
+    class declaration gives a sorry.  C++ generally does not allow injection
+    of additional methods into a class outside of its declaration so it is
+    not clear what this is supposed to do.  */
+ 
+ class test1 {
+ 
+  private:
+   int n;
+   static int m;
+ 
+  public:
+ 
+   void set_n (int x) { n = x; }
+   int get_n (void) { return n; }
+   
+   static void set_m (int x) { m = x; }
+   static int get_m (void) { return m; }
+ 
+ };
+ 
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ int test1::get_n (void) { return n * 2; }  /* { dg-message "sorry, unimplemented: cannot handle qualified name for variant function" } */
+ static int test1::get_m (void) { return m * 2; }  /* { dg-message "sorry, unimplemented: cannot handle qualified name for variant function" } */
+ #pragma omp end declare variant
+ 
+ int main (void)
+ {
+   test1 t1;
+   t1.set_n (10);
+   if (t1.get_n () != 20) __builtin_abort ();
+   test1::set_m (1);
+   if (test1::get_m () != 2) __builtin_abort ();
+ }
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-4.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-4.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-4.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-4.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,57 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fdump-tree-gimple" } */
+ 
+ /* Like c-c++-common/delim-declare-variant-1.c, but with namespaces.  */
+ 
+ namespace n1 {
+ 
+ int foo (int a)
+ {
+   return a;
+ }
+ 
+ int bar (int x)
+ {
+   return x;
+ }
+ 
+ #pragma omp begin declare variant match (construct={target})
+ int foo (int a)
+ {
+   return a + 1;
+ }
+ 
+ int bar (int x)
+ {
+   return x * 2;
+ }
+ #pragma omp end declare variant
+ 
+ /* Because of the high score value, this variant for "bar" should always be
+    selected even when the one above also matches.  */
+ #pragma omp begin declare variant match (implementation={vendor(score(10000):"gnu")})
+ int bar (int x)
+ {
+   return x * 4;
+ }
+ #pragma omp end declare variant
+ 
+ } /* namespace n1 */
+ 
+ int main (void)
+ {
+   if (n1::foo (42) != 42) __builtin_abort ();
+   if (n1::bar (3) != 12) __builtin_abort ();
+ #pragma omp target
+   {
+     if (n1::foo (42) != 43) __builtin_abort ();
+     if (n1::bar (3) != 12) __builtin_abort ();
+   }
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "omp declare variant base \\(foo.ompvariant." 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "omp declare variant base \\(bar.ompvariant." 2 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "foo \\(42\\)" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "foo\\.ompvariant. \\(42\\)" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "bar \\(3\\)" 0 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "bar\\.ompvariant. \\(3\\)" 2 "gimple" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-40.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-40.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-40.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-40.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,51 ----
+ // { dg-do compile }
+ 
+ // Check that variants for a template function are instantiated correctly.
+ // FIXME:  Fails due to PR118530.  
+ 
+ template<typename T>
+ void f_default_param (T = 42) {}
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void f_default_param (T = 42) {}
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void f_no_param () {}  // { dg-bogus "no matching function for call" "PR118530" { xfail *-*-* } }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void f_no_param () {}
+ #pragma omp end declare variant
+ 
+ void instantiate_f()
+ {
+   f_default_param<int>();
+   f_no_param<int>();
+ }
+ 
+ template<int>
+ void nttp () {}  // { dg-bogus "no matching function for call" "PR118530" { xfail *-*-* } }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<int>
+ void nttp () {}
+ #pragma omp end declare variant
+ 
+ void instantiate_nttp()
+ {
+   nttp<42>();
+ }
+ 
+ template<typename>
+ struct S {};
+ 
+ template<template<typename> class Templ>
+ void templ_templ () {}  // { dg-bogus "no matching function for call" "PR118530" { xfail *-*-* } }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<template<typename> class Templ>
+ void templ_templ () {}
+ #pragma omp end declare variant
+ 
+ void instantiate_templ_templ()
+ {
+   templ_templ<S>();
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-41.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-41.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-41.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-41.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile { target c++11 } } */
+ 
+ template<typename T, typename U>
+ class is_same {
+  public:
+   static constexpr bool value = false;
+ };
+ 
+ template<typename T>
+ class is_same<T, T> {
+  public:
+   static constexpr bool value = true;
+ };
+ 
+ template<typename T>
+ void fn (T&&) { }
+ 
+ #pragma omp begin declare variant match(implementation={vendor("gnu")})
+ template<typename T>
+ void fn(T&&) {
+   static_assert(is_same<T, int>::value);
+ }
+ #pragma omp end declare variant
+ 
+ int main()
+ {
+   int lvalue = 42;
+   fn(0);
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-5.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-5.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-5.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-5.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do compile } */
+ 
+ /* Check that "omp begin declare variant" for a namespace function outside of
+    the namespace gives an error.  C++ generally does not allow injection of
+    additional function into a namespace outside of its scope so this is just a
+    generic error.  */
+ 
+ namespace n1 {
+ 
+ int foo (int a)
+ {
+   return a;
+ }
+ 
+ int bar (int x)
+ {
+   return x;
+ }
+ 
+ } /* namespace n1 */
+ 
+ 
+ #pragma omp begin declare variant match (construct={target})
+ int n1::foo (int a)  /* { dg-message "sorry, unimplemented: cannot handle qualified name for variant function" } */
+ {
+   return a + 1;
+ }
+ 
+ int n1::bar (int x)  /* { dg-message "sorry, unimplemented: cannot handle qualified name for variant function" } */
+ {
+   return x * 2;
+ }
+ #pragma omp end declare variant
+ 
+ /* Because of the high score value, this variant for "bar" should always be
+    selected even when the one above also matches.  */
+ #pragma omp begin declare variant match (implementation={vendor(score(10000):"gnu")})
+ int n1::bar (int x)  /* { dg-message "sorry, unimplemented: cannot handle qualified name for variant function" } */
+ {
+   return x * 4;
+ }
+ #pragma omp end declare variant
+ 
+ int main (void)
+ {
+   if (n1::foo (42) != 42) __builtin_abort ();
+   if (n1::bar (3) != 12) __builtin_abort ();
+ #pragma omp target
+   {
+     if (n1::foo (42) != 43) __builtin_abort ();
+     if (n1::bar (3) != 12) __builtin_abort ();
+   }
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-50.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-50.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-50.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-50.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,99 ----
+ /* { dg-do compile } */
+ 
+ /* Test for restrictions on declare variant functions on virtual functions,
+    constructors, and destructors.  */
+ 
+ struct S0
+ {
+   virtual void f_virtual_before0 () {}
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   virtual void f_virtual_before0 () {}  // { dg-error "declare variant directives are not allowed on virtual functions" }
+   #pragma omp end declare variant
+ 
+   virtual void f_virtual_before1 () {}
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   void f_virtual_before1 () {}  // { dg-error "declare variant directives are not allowed on virtual functions" }
+   #pragma omp end declare variant
+ 
+   void f_virtual_before2 () {}
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   virtual void f_virtual_before2 () {}  // { dg-error "declare variant directives are not allowed on virtual functions" }
+   #pragma omp end declare variant
+ 
+   void f_virtual_before3 () {}
+   // code elision, no error
+   #pragma omp begin declare variant match (implementation={vendor("cray")})
+   virtual void f_virtual_before3 () {}
+   #pragma omp end declare variant
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   virtual void f_virtual_after0 () {}  // { dg-error "declare variant directives are not allowed on virtual functions" }
+   #pragma omp end declare variant
+   virtual void f_virtual_after0 () {}
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   void f_virtual_after1 () {}  // { dg-error "declare variant directives are not allowed on virtual functions" }
+   #pragma omp end declare variant
+   virtual void f_virtual_after1 () {}
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   virtual void f_virtual_after2 () {}  // { dg-error "declare variant directives are not allowed on virtual functions" }
+   #pragma omp end declare variant
+   void f_virtual_after2 () {}
+ };
+ 
+ struct S_before {
+   S_before() {}
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_before() {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+ 
+   S_before(int) {}
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_before(int) {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+ 
+   S_before(double) {}
+   // code elision, no error
+   #pragma omp begin declare variant match (implementation={vendor("cray")})
+   S_before(double) {}
+   #pragma omp end declare variant
+   
+   template<typename T>
+   S_before(T) {}
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   template<typename T>
+   S_before(T) {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+ 
+   ~S_before() {}
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   ~S_before() {}  // { dg-error "declare variant directives are not allowed on destructors" }
+   #pragma omp end declare variant
+ };
+ 
+ struct S_after {
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_after() {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+   S_after() {}
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_after(int) {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+   S_after(int) {}
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   template<typename T>
+   S_after(T) {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+   template<typename T>
+   S_after(T) {}
+ 
+   // code elision, no error
+   #pragma omp begin declare variant match (implementation={vendor("cray")})
+   ~S_after() {}
+   #pragma omp end declare variant
+   ~S_after() {}
+ };
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-51.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-51.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-51.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-51.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,181 ----
+ /* { dg-do compile { target c++11 } } */
+ 
+ /* Test delimited declare variant on constexpr, deleted, and defaulted
+    functions.  */
+ /* C++11 */
+ 
+ /* TODO: add templates cases for constexpr/delete free functions */
+ 
+ /* Do we warn for the mismatch?
+    TBH we probably warn whenever a variant function is constexpr in general.
+    I can't imagine that we are going to support constant evaluation of a
+    variant function, realistically the only choice is to always use the base
+    function if a constant-expression is required.  */
+ constexpr int freefn_mismatched_constexpr_before0 () { return 0; }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ int freefn_mismatched_constexpr_before0 () { return 1; }
+ #pragma omp end declare variant
+ 
+ int freefn_mismatched_constexpr_before1 () { return 0; }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ constexpr int freefn_mismatched_constexpr_before1 () { return 1; }
+ #pragma omp end declare variant
+ 
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ constexpr int freefn_mismatched_constexpr_after0 () { return 1; }
+ #pragma omp end declare variant
+ int freefn_mismatched_constexpr_after0 () { return 0; }
+ 
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ int freefn_mismatched_constexpr_after1 () { return 1; }
+ #pragma omp end declare variant
+ constexpr int freefn_mismatched_constexpr_after1 () { return 0; }
+ 
+ 
+ 
+ void freefn_deleted_before () = delete;
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ void freefn_deleted_before () {}  // { dg-error "declare variant directives are not allowed on deleted functions" }
+ #pragma omp end declare variant
+ 
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ void freefn_deleted_after () {}  // { dg-error "declare variant directives are not allowed on deleted functions" }
+ #pragma omp end declare variant
+ void freefn_deleted_after () = delete;
+ 
+ /* TECHNICALLY allowed by the spec, but obviously conflicts with the intention.  */
+ void freefn_variant_deleted_base_before () {}
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ void freefn_variant_deleted_base_before () = delete;  // { dg-error "declare variant directives are not allowed on deleted functions" }
+ #pragma omp end declare variant
+ 
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ void freefn_variant_deleted_base_after () = delete;  // { dg-error "declare variant directives are not allowed on deleted functions" }
+ #pragma omp end declare variant
+ void freefn_variant_deleted_base_after () {};
+ 
+ 
+ /* For now, obviously error, not sure if we error on just the base or on
+    both though.
+    In the future, I think if the base and all variants are deleted, we can
+    treat a call to the function as deleted before we determine a variant.  */
+ void freefn_both_deleted_base_before () = delete;
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ void freefn_both_deleted_base_before () = delete;  // { dg-error "declare variant directives are not allowed on deleted functions" }
+ #pragma omp end declare variant
+ 
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ void freefn_both_deleted_base_after () = delete;  // { dg-error "declare variant directives are not allowed on deleted functions" }
+ #pragma omp end declare variant
+ void freefn_both_deleted_base_after () = delete;
+ 
+ 
+ 
+ 
+ struct S0
+ {
+   void f_deleted_before () = delete;
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   void f_deleted_before () {}  // { dg-error "declare variant directives are not allowed on deleted functions" }
+   #pragma omp end declare variant
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   void f_deleted_after () {}  // { dg-error "declare variant directives are not allowed on deleted functions" }
+   #pragma omp end declare variant
+   void f_deleted_after () = delete;
+ };
+ 
+ 
+ /* These should error for constructor/destructor, not default.  */
+ struct S_default_before {
+   S_default_before() = default;
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_before() {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+ 
+   S_default_before(S_default_before const&) = default;
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_before(S_default_before const&) {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+ 
+   S_default_before(S_default_before&&) = default;
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_before(S_default_before&&) {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+ 
+   ~S_default_before() = default;
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   ~S_default_before() {}  // { dg-error "declare variant directives are not allowed on destructors" }
+   #pragma omp end declare variant
+ };
+ 
+ struct S_default_after {
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_after() {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+   S_default_after() = default;
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_after(S_default_after const&) {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+   S_default_after(S_default_after const&) = default;
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_after(S_default_after&&) {}  // { dg-error "declare variant directives are not allowed on constructors" }
+   #pragma omp end declare variant
+   S_default_after(S_default_after&&) = default;
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   ~S_default_after() {}  // { dg-error "declare variant directives are not allowed on destructors" }
+   #pragma omp end declare variant
+   ~S_default_after() = default;
+ };
+ 
+ /* These should error for default/delete.  */
+ struct S_default_assignment_before {
+   S_default_assignment_before& operator=(S_default_assignment_before const&) = default;
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_assignment_before& operator=(S_default_assignment_before const&) { return *this; }  // { dg-error "declare variant directives are not allowed on defaulted functions" }
+   #pragma omp end declare variant
+ 
+   S_default_assignment_before& operator=(S_default_assignment_before&&) = default;
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_assignment_before& operator=(S_default_assignment_before&&) { return *this; }  // { dg-error "declare variant directives are not allowed on defaulted functions" }
+   #pragma omp end declare variant
+ };
+ 
+ struct S_default_assignment_after {
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_assignment_after& operator=(S_default_assignment_after const&) { return *this; }  // { dg-error "declare variant directives are not allowed on defaulted functions" }
+   #pragma omp end declare variant
+   S_default_assignment_after& operator=(S_default_assignment_after const&) = default;
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_default_assignment_after& operator=(S_default_assignment_after&&) { return *this; }  // { dg-error "declare variant directives are not allowed on defaulted functions" }
+   #pragma omp end declare variant
+   S_default_assignment_after& operator=(S_default_assignment_after&&) = default;
+ };
+ 
+ struct S_deleted_assignment_before {
+   S_deleted_assignment_before& operator=(S_deleted_assignment_before const&) = delete;
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_deleted_assignment_before& operator=(S_deleted_assignment_before const&) { return *this; }  // { dg-error "declare variant directives are not allowed on deleted functions" }
+   #pragma omp end declare variant
+ 
+   S_deleted_assignment_before& operator=(S_deleted_assignment_before&&) = delete;
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_deleted_assignment_before& operator=(S_deleted_assignment_before&&) { return *this; }  // { dg-error "declare variant directives are not allowed on deleted functions" }
+   #pragma omp end declare variant
+ };
+ 
+ struct S_deleted_assignment_after {
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_deleted_assignment_after& operator=(S_deleted_assignment_after const&) { return *this; }  // { dg-error "declare variant directives are not allowed on deleted functions" }
+   #pragma omp end declare variant
+   S_deleted_assignment_after& operator=(S_deleted_assignment_after const&) = delete;
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   S_deleted_assignment_after& operator=(S_deleted_assignment_after&&) { return *this; }  // { dg-error "declare variant directives are not allowed on deleted functions" }
+   #pragma omp end declare variant
+   S_deleted_assignment_after& operator=(S_deleted_assignment_after&&) = delete;
+ };
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-52.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-52.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-52.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-52.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target c++20 } } */
+ 
+ /* The procedure that a declare variant directive determined to be a function
+    variant may not be an immediate function + Declare variant directives may
+    not be specified for immediate functions. */
+ consteval void freefn_consteval_before0 () {}
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ consteval void freefn_consteval_before0 () {}  // { dg-error "declare variant directives are not allowed on immediate functions" }
+ #pragma omp end declare variant
+ 
+ /* Declare variant directives may not be specified for immediate functions.  */
+ consteval void freefn_consteval_before1 () {}
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ void freefn_consteval_before1 () {}  // { dg-error "declare variant directives are not allowed on immediate functions" }
+ #pragma omp end declare variant
+ 
+ /* The procedure that a declare variant directive determined to be a function
+    variant may not be an immediate function.  */
+ void freefn_consteval_before2 () {}
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ consteval void freefn_consteval_before2 () {}  // { dg-error "declare variant directives are not allowed on immediate functions" }
+ #pragma omp end declare variant
+ 
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-6.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-6.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-6.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-6.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,72 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fdump-tree-gimple" } */
+ 
+ /* Check "begin declare variant" on template functions.  */
+ 
+ template <typename T>
+ T foo (T a)
+ {
+   return a;
+ }
+ 
+ template <typename T>
+ T bar (T x)
+ {
+   return x;
+ }
+ 
+ #pragma omp begin declare variant match (construct={target})
+ template <typename T1>
+ T1 foo (T1 a)
+ {
+   return a + 1;
+ }
+ 
+ template <typename T1>
+ T1 bar (T1 x)
+ {
+   return x * 2;
+ }
+ #pragma omp end declare variant
+ 
+ /* Because of the high score value, this variant for "bar" should always be
+    selected even when the one above also matches.  */
+ #pragma omp begin declare variant match (implementation={vendor(score(10000):"gnu")})
+ template <typename T2>
+ T2 bar (T2 x)
+ {
+   return x * 4;
+ }
+ #pragma omp end declare variant
+ 
+ int main (void)
+ {
+   if (foo<int> (42) != 42) __builtin_abort ();
+   if (bar<int> (3) != 12) __builtin_abort ();
+ #pragma omp target
+   {
+     if (foo<int> (42) != 43) __builtin_abort ();
+     if (bar<int> (3) != 12) __builtin_abort ();
+   }
+ }
+ 
+ /* Make sure all the template functions are instantiated.  */
+ /* { dg-final { scan-tree-dump "int foo.ompvariant.<int> \\(.*\\)" "gimple" } } */
+ /* { dg-final { scan-tree-dump "int foo<int> \\(.*\\)" "gimple" } } */
+ /* { dg-final { scan-tree-dump "int bar.ompvariant.<int> \\(.*\\)" "gimple" } } */
+ 
+ /* Make sure the calls are resolved correctly.  */
+ /* { dg-final { scan-tree-dump-times "foo<int> \\(42\\)" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "foo\\.ompvariant.<int> \\(42\\)" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "bar<int> \\(3\\)" 0 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "bar\\.ompvariant.<int> \\(3\\)" 2 "gimple" } } */
+ 
+ /* The variants must have internal linkage, not .globl or .weak.  */
+ /* { dg-final { scan-assembler-not "\\.globl\[ \t\]*_?_Z15foo.ompvariant" } } */
+ /* { dg-final { scan-assembler-not "\\.globl\[ \t\]*_?_Z15bar.ompvariant" } } */
+ /* { dg-final { scan-assembler-not "\\.weak\[ \t\]*_?_Z15foo.ompvariant" } } */
+ /* { dg-final { scan-assembler-not "\\.weak\[ \t\]*_?_Z15bar.ompvariant" } } */
+ 
+ 
+ 
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-7.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-7.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-7.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-7.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,57 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fdump-tree-gimple" } */
+ 
+ /* Check that "omp begin declare variant" works on methods in a template
+    class declaration.  */
+ 
+ template <typename T>
+ class test1 {
+ 
+  private:
+   T n;
+   static T m;
+ 
+  public:
+ 
+   void set_n (T x) { n = x; }
+   T get_n (void) { return n; }
+   
+   static void set_m (T x) { m = x; }
+   static T get_m (void) { return m; }
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   T get_n (void) { return n * 2; }
+   static T get_m (void) { return m * 2; }
+   #pragma omp end declare variant
+ 
+   #pragma omp begin declare variant match (construct={target})
+   T get_n (void) { return this->n * 2; }
+   #pragma omp end declare variant
+ };
+ 
+ template <typename T>
+ T test1<T>::m;
+ 
+ int main (void)
+ {
+   test1<int> t1;
+   t1.set_n (10);
+   if (t1.get_n () != 20) __builtin_abort ();
+   test1<int>::set_m (1);
+   if (test1<int>::get_m () != 2) __builtin_abort ();
+ }
+ 
+ /* Make sure the "declare variant" replacement happens.  */
+ /* { dg-final { scan-tree-dump "test1<int>::get_n\\.ompvariant. \\(&t1\\)" "gimple" } } */
+ /* { dg-final { scan-tree-dump "test1<int>::get_m\\.ompvariant. \\(\\)" "gimple" } } */
+ 
+ /* Make sure the variant methods are instantiated.  */
+ /* { dg-final { scan-tree-dump "int test1<int>::get_n\\.ompvariant. \\(.*\\)" "gimple" } }  */
+ /* { dg-final { scan-tree-dump "int test1<int>::get_m\\.ompvariant. \\(.*\\)" "gimple" } }  */
+ 
+ /* The variants must have internal linkage, not .globl or .weak.  */
+ /* { dg-final { scan-assembler-not "\\.globl\[ \t\]*_?_ZN5test1IiE17get_n.ompvariant" } } */
+ /* { dg-final { scan-assembler-not "\\.globl\[ \t\]*_?_ZN5test1IiE17get_m.ompvariant" } } */
+ /* { dg-final { scan-assembler-not "\\.weak\[ \t\]*_?_ZN5test1IiE17get_n.ompvariant" } } */
+ /* { dg-final { scan-assembler-not "\\.weak\[ \t\]*_?_ZN5test1IiE17get_m.ompvariant" } } */
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-70.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-70.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-70.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-70.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,206 ----
+ /* { dg-do compile { target c++11 } } */
+ 
+ /* Check that the substituted type in variant is the same as the one in the
+    base.  */
+ 
+ template<typename T, typename U>
+ struct is_same {
+   static constexpr bool value = false;
+ };
+ 
+ template<typename T>
+ struct is_same<T, T> {
+   static constexpr bool value = true;
+ };
+ 
+ /* Using static_assert directly in a variant triggers the SCOPE_REF bug noted
+    in delim-declare-variant-41.C.  We'll avoid that by outsourcing the checks
+    to this function.  PR118791 is a different bug that affects also the
+    non-delimited form of "declare variant".  */
+ template<typename T, typename U>
+ void fail_if_not_same() {
+   static_assert(is_same<T, U>::value);  // { dg-bogus "static assertion failed" "PR118791" { xfail *-*-* } }
+ }
+ 
+ /* Sanity checks are included in the base function just to be absolutely
+    certain there were no mistakes made in the tests.  They should match the
+    cases in the variant function exactly.  */
+ 
+ template<typename T>
+ void fwdref_passed_lvalue_int (T&& p) {
+   static_assert(is_same<T, int&>::value);
+   static_assert(is_same<decltype(p), int&>::value);
+   static_assert(is_same<decltype((p)), int&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void fwdref_passed_lvalue_int (T&& p) {
+   fail_if_not_same<T, int&>();
+   fail_if_not_same<decltype(p), int&>();
+   fail_if_not_same<decltype((p)), int&>();
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void fwdref_passed_lvalue_const_int (T&& p) {
+   static_assert(is_same<T, int const&>::value);
+   static_assert(is_same<decltype(p), int const&>::value);
+   static_assert(is_same<decltype((p)), int const&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void fwdref_passed_lvalue_const_int (T&& p) {
+   fail_if_not_same<T, int const&>();
+   fail_if_not_same<decltype(p), int const&>();
+   fail_if_not_same<decltype((p)), int const&>();
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void fwdref_passed_rvalue_int (T&& p) {
+   static_assert(is_same<T, int>::value);
+   static_assert(is_same<decltype(p), int&&>::value);
+   static_assert(is_same<decltype((p)), int&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void fwdref_passed_rvalue_int (T&& p) {
+   fail_if_not_same<T, int>();
+   fail_if_not_same<decltype(p), int&&>();
+   fail_if_not_same<decltype((p)), int&>();
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void fwdref_passed_rvalue_const_int (T&& p) {
+   static_assert(is_same<T, int const>::value);
+   static_assert(is_same<decltype(p), int const&&>::value);
+   static_assert(is_same<decltype((p)), int const&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void fwdref_passed_rvalue_const_int (T&& p) {
+   fail_if_not_same<T, int const>();
+   fail_if_not_same<decltype(p), int const&&>();
+   fail_if_not_same<decltype((p)), int const&>();
+ }
+ #pragma omp end declare variant
+ 
+ void instantiate_fwdref()
+ {
+   int lvalue = 0;
+   fwdref_passed_lvalue_int(lvalue);
+   fwdref_passed_lvalue_const_int(static_cast<int const&>(lvalue));
+   fwdref_passed_rvalue_int(0);
+   fwdref_passed_rvalue_const_int(static_cast<int const&&>(0));
+ }
+ 
+ 
+ 
+ template<typename T>
+ void explicit_instantiate_fwdref_with_lvalue_int (T&& p) {
+   static_assert(is_same<T, int&>::value);
+   static_assert(is_same<decltype(p), int&>::value);
+   static_assert(is_same<decltype((p)), int&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void explicit_instantiate_fwdref_with_lvalue_int (T&& p) {
+   fail_if_not_same<T, int&>();
+   fail_if_not_same<decltype(p), int&>();
+   fail_if_not_same<decltype((p)), int&>();
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void explicit_instantiate_fwdref_with_lvalue_const_int (T&& p) {
+   static_assert(is_same<T, int const&>::value);
+   static_assert(is_same<decltype(p), int const&>::value);
+   static_assert(is_same<decltype((p)), int const&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void explicit_instantiate_fwdref_with_lvalue_const_int (T&& p) {
+   fail_if_not_same<T, int const&>();
+   fail_if_not_same<decltype(p), int const&>();
+   fail_if_not_same<decltype((p)), int const&>();
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void explicit_instantiate_fwdref_with_rvalue_int (T&& p) {
+   static_assert(is_same<T, int&&>::value);
+   static_assert(is_same<decltype(p), int&&>::value);
+   static_assert(is_same<decltype((p)), int&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void explicit_instantiate_fwdref_with_rvalue_int (T&& p) {
+   fail_if_not_same<T, int&&>();
+   fail_if_not_same<decltype(p), int&&>();
+   fail_if_not_same<decltype((p)), int&>();
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void explicit_instantiate_fwdref_with_rvalue_const_int (T&& p) {
+   static_assert(is_same<T, int const&&>::value);
+   static_assert(is_same<decltype(p), int const&&>::value);
+   static_assert(is_same<decltype((p)), int const&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void explicit_instantiate_fwdref_with_rvalue_const_int (T&& p) {
+   fail_if_not_same<T, int const&&>();
+   fail_if_not_same<decltype(p), int const&&>();
+   fail_if_not_same<decltype((p)), int const&>();
+ }
+ #pragma omp end declare variant
+ 
+ /* Technically a missuse of a forwarding reference */
+ void explicit_instantiate_fwdref()
+ {
+   int lvalue = 0;
+   explicit_instantiate_fwdref_with_lvalue_int<int&>(lvalue);
+   explicit_instantiate_fwdref_with_lvalue_const_int<int const&>(static_cast<int const&>(lvalue));
+   explicit_instantiate_fwdref_with_rvalue_int<int&&>(0);  // { dg-bogus "required from here" "PR118791" { xfail *-*-* } }
+   explicit_instantiate_fwdref_with_rvalue_const_int<int const&&>(static_cast<int const&&>(0));  // { dg-bogus "required from here" "PR118791" { xfail *-*-* } }
+ }
+ 
+ 
+ template<typename T>
+ void const_lref_passed_lvalue_int (T const& p) {
+   static_assert(is_same<T, int>::value);
+   static_assert(is_same<decltype(p), int const&>::value);
+   static_assert(is_same<decltype((p)), int const&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void const_lref_passed_lvalue_int (T const& p) {
+   fail_if_not_same<T, int>();
+   fail_if_not_same<decltype(p), int const&>();
+   fail_if_not_same<decltype((p)), int const&>();
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void const_lref_passed_lvalue_const_int (T const& p) {
+   static_assert(is_same<T, int>::value);
+   static_assert(is_same<decltype(p), int const&>::value);
+   static_assert(is_same<decltype((p)), int const&>::value);
+ }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void const_lref_passed_lvalue_const_int (T const& p) {
+   fail_if_not_same<T, int>();
+   fail_if_not_same<decltype(p), int const&>();
+   fail_if_not_same<decltype((p)), int const&>();
+ }
+ #pragma omp end declare variant
+ 
+ void instantiate_const_lref()
+ {
+   int lvalue = 0;
+   const_lref_passed_lvalue_int(lvalue);
+   const_lref_passed_lvalue_const_int(static_cast<int const&>(lvalue));
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-71.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-71.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/delim-declare-variant-71.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/delim-declare-variant-71.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,157 ----
+ /* { dg-do compile { target c++11 } } */
+ 
+ /* Test static_assert in variants.  */
+ /* Most of the tests in this file are broken and xfailed.
+    See also delim-declare-variant-41.C for a simpler test case for
+    the "base function cannot be resolved" sorry.  */
+ 
+ struct has_value_true { static constexpr bool value = true; };
+ 
+ template<typename T>
+ struct always_true {
+   static constexpr bool value = true;
+ };
+ 
+ template<typename T>
+ void static_assert_in_variant_static_member_uninstantiated (T) { }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void static_assert_in_variant_static_member_uninstantiated (T)
+ {
+   static_assert(T::value);
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void static_assert_in_variant_static_member_no_param_uninstantiated () { }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void static_assert_in_variant_static_member_no_param_uninstantiated ()
+ {
+   static_assert(T::value);
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void static_assert_in_variant_static_member (T) { }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void static_assert_in_variant_static_member (T)
+ {
+   static_assert(T::value);
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void static_assert_in_variant_static_member_no_param () { }  // { dg-bogus "no matching function for call" "" { xfail *-*-* } }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void static_assert_in_variant_static_member_no_param ()
+ {
+   static_assert(T::value);
+ }
+ #pragma omp end declare variant
+ 
+ void instantiate_static_assert_in_variant_static_member()
+ {
+   static_assert_in_variant_static_member(has_value_true{});
+   static_assert_in_variant_static_member_no_param<has_value_true>();
+ }
+ 
+ 
+ template<typename T>
+ void static_assert_in_variant_templ_member_uninstantiated (T) { }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void static_assert_in_variant_templ_member_uninstantiated (T)
+ {
+   static_assert(always_true<T>::value);
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void static_assert_in_variant_templ_member_no_param_uninstantiated () { }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void static_assert_in_variant_templ_member_no_param_uninstantiated ()
+ {
+   static_assert(always_true<T>::value);
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void static_assert_in_variant_templ_member (T) { }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void static_assert_in_variant_templ_member (T)
+ {
+   static_assert(always_true<T>::value);
+ }
+ #pragma omp end declare variant
+ 
+ template<typename T>
+ void static_assert_in_variant_templ_member_no_param () { }  // { dg-bogus "no matching function for call" "" { xfail *-*-* } }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<typename T>
+ void static_assert_in_variant_templ_member_no_param ()
+ {
+   static_assert(always_true<T>::value);
+ }
+ #pragma omp end declare variant
+ 
+ void instantiate_static_assert_in_variant_templ_member()
+ {
+   static_assert_in_variant_templ_member(0);
+   static_assert_in_variant_templ_member_no_param<int>();
+ }
+ 
+ 
+ /* PR118530 affects also the non-delimited form of "declare variant".  */
+ template<bool B>
+ void static_assert_in_variant_nttp_uninstantiated () { }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<bool B>
+ void static_assert_in_variant_nttp_uninstantiated () {
+   static_assert(B);
+ }
+ #pragma omp end declare variant
+ 
+ template<bool B>
+ void static_assert_in_variant_nttp () { }  // { dg-bogus "no matching function for call" "PR118530" { xfail *-*-* } }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<bool B>
+ void static_assert_in_variant_nttp () {
+   static_assert(B);
+ }
+ #pragma omp end declare variant
+ 
+ void instantiate_static_assert_in_variant_nttp()
+ {
+   static_assert_in_variant_nttp<true>();
+ }
+ 
+ 
+ template<template<typename> class Templ>
+ void static_assert_in_variant_template_template_uninstantiated () { }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<template<typename> class Templ>
+ void static_assert_in_variant_template_template_uninstantiated ()
+ {
+   static_assert(Templ<void>::value);
+ }
+ #pragma omp end declare variant
+ 
+ template<template<typename> class Templ>
+ void static_assert_in_variant_template_template () { }  // { dg-bogus "no matching function for call" "" { xfail *-*-* } }
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ template<template<typename> class Templ>
+ void static_assert_in_variant_template_template ()
+ {
+   static_assert(Templ<void>::value);
+ }
+ #pragma omp end declare variant
+ 
+ void instantiate_static_assert_in_variant_template_template()
+ {
+   static_assert_in_variant_template_template<always_true>();
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/depend-1.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/depend-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/depend-1.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/depend-1.C	Sun Nov 23 22:32:14 2025
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 17,69 ****
  {
    #pragma omp task depend(out: t[2:5])
      ;
!   #pragma omp task depend(inout: k[0.5:]) // { dg-error "low bound \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(in: l[:7.5f]) // { dg-error "length \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(out: m[p:]) // { dg-error "low bound \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(inout: n[:p]) // { dg-error "length \[^\n\r]* of array section does not have integral type" }
      ;
    #pragma omp task depend(in: o[2:5]) // { dg-error "does not have pointer or array type" }
      ;
!   #pragma omp task depend(out: a[:][2:4]) // { dg-error "array type length expression must be specified" }
      ;
!   #pragma omp task depend(in: d[11:]) // { dg-error "low bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(out: e[:11]) // { dg-error "length \[^\n\r]* above array section size" }
      ;
    #pragma omp task depend(out: f[1:10]) // { dg-error "high bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(in: g[:][2:4]) // { dg-error "for array function parameter length expression must be specified" }
      ;
!   #pragma omp task depend(out: i[:1][11:]) // { dg-error "low bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(in: j[3:4][:10]) // { dg-error "length \[^\n\r]* above array section size" }
      ;
    #pragma omp task depend(out: j[30:10][5:5]) // { dg-error "high bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(out: a2[:3][2:4])
      ;
!   #pragma omp task depend(inout: b2[0:])
      ;
!   #pragma omp task depend(inout: c2[:3][1:1])
      ;
!   #pragma omp task depend(in: d2[9:])
      ;
!   #pragma omp task depend(out: e2[:10])
      ;
    #pragma omp task depend(out: f2[1:9])
      ;
!   #pragma omp task depend(in: g2[:2][2:4])
      ;
!   #pragma omp task depend(in: h2[2:2][0:])
      ;
!   #pragma omp task depend(inout: h2[:1][:3])
      ;
!   #pragma omp task depend(out: i2[:1][9:])
      ;
!   #pragma omp task depend(in: j2[3:4][:9])
      ;
    #pragma omp task depend(out: j2[30:10][5:4])
      ;
--- 17,69 ----
  {
    #pragma omp task depend(out: t[2:5])
      ;
!   #pragma omp task depend(inout: k[0.5: ]) // { dg-error "low bound \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(in: l[ :7.5f]) // { dg-error "length \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(out: m[p: ]) // { dg-error "low bound \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(inout: n[ :p]) // { dg-error "length \[^\n\r]* of array section does not have integral type" }
      ;
    #pragma omp task depend(in: o[2:5]) // { dg-error "does not have pointer or array type" }
      ;
!   #pragma omp task depend(out: a[ : ][2:4]) // { dg-error "array type length expression must be specified" }
      ;
!   #pragma omp task depend(in: d[11: ]) // { dg-error "low bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(out: e[ :11]) // { dg-error "length \[^\n\r]* above array section size" }
      ;
    #pragma omp task depend(out: f[1:10]) // { dg-error "high bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(in: g[ : ][2:4]) // { dg-error "for array function parameter length expression must be specified" }
      ;
!   #pragma omp task depend(out: i[ :1][11: ]) // { dg-error "low bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(in: j[3:4][ :10]) // { dg-error "length \[^\n\r]* above array section size" }
      ;
    #pragma omp task depend(out: j[30:10][5:5]) // { dg-error "high bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(out: a2[ :3][2:4])
      ;
!   #pragma omp task depend(inout: b2[0: ])
      ;
!   #pragma omp task depend(inout: c2[ :3][1:1])
      ;
!   #pragma omp task depend(in: d2[9: ])
      ;
!   #pragma omp task depend(out: e2[ :10])
      ;
    #pragma omp task depend(out: f2[1:9])
      ;
!   #pragma omp task depend(in: g2[ :2][2:4])
      ;
!   #pragma omp task depend(in: h2[2:2][0: ])
      ;
!   #pragma omp task depend(inout: h2[ :1][ :3])
      ;
!   #pragma omp task depend(out: i2[ :1][9: ])
      ;
!   #pragma omp task depend(in: j2[3:4][ :9])
      ;
    #pragma omp task depend(out: j2[30:10][5:4])
      ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/depend-2.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/depend-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/depend-2.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/depend-2.C	Sun Nov 23 22:32:14 2025
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 19,79 ****
      ;
    #pragma omp task depend(out: t[2:5])
      ;
!   #pragma omp task depend(inout: k[0.5:]) // { dg-error "low bound \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(in: l[:7.5f]) // { dg-error "length \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(out: m[p:]) // { dg-error "low bound \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(inout: n[:p]) // { dg-error "length \[^\n\r]* of array section does not have integral type" }
      ;
    #pragma omp task depend(in: o[2:5]) // { dg-error "does not have pointer or array type" }
      ;
!   #pragma omp task depend(out: a[:][2:4]) // { dg-error "array type length expression must be specified" }
      ;
!   #pragma omp task depend(inout: b[-1:]) // { dg-error "negative low bound in array section" }
      ;
!   #pragma omp task depend(inout: c[:-3][1:1]) // { dg-error "negative length in array section" }
      ;
!   #pragma omp task depend(in: d[11:]) // { dg-error "low bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(out: e[:11]) // { dg-error "length \[^\n\r]* above array section size" }
      ;
    #pragma omp task depend(out: f[1:10]) // { dg-error "high bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(in: g[:][2:4]) // { dg-error "for array function parameter length expression must be specified" }
      ;
!   #pragma omp task depend(in: h[2:2][-1:]) // { dg-error "negative low bound in array section" }
      ;
!   #pragma omp task depend(inout: h[:1][:-3]) // { dg-error "negative length in array section" }
      ;
!   #pragma omp task depend(out: i[:1][11:]) // { dg-error "low bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(in: j[3:4][:10]) // { dg-error "length \[^\n\r]* above array section size" }
      ;
    #pragma omp task depend(out: j[30:10][5:5]) // { dg-error "high bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(out: a2[:3][2:4])
      ;
!   #pragma omp task depend(inout: b2[0:])
      ;
!   #pragma omp task depend(inout: c2[:3][1:1])
      ;
!   #pragma omp task depend(in: d2[9:])
      ;
!   #pragma omp task depend(out: e2[:10])
      ;
    #pragma omp task depend(out: f2[1:9])
      ;
!   #pragma omp task depend(in: g2[:2][2:4])
      ;
!   #pragma omp task depend(in: h2[2:2][0:])
      ;
!   #pragma omp task depend(inout: h2[:1][:3])
      ;
!   #pragma omp task depend(out: i2[:1][9:])
      ;
!   #pragma omp task depend(in: j2[3:4][:9])
      ;
    #pragma omp task depend(out: j2[30:10][5:4])
      ;
--- 19,79 ----
      ;
    #pragma omp task depend(out: t[2:5])
      ;
!   #pragma omp task depend(inout: k[0.5: ]) // { dg-error "low bound \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(in: l[ :7.5f]) // { dg-error "length \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(out: m[p: ]) // { dg-error "low bound \[^\n\r]* of array section does not have integral type" }
      ;
!   #pragma omp task depend(inout: n[ :p]) // { dg-error "length \[^\n\r]* of array section does not have integral type" }
      ;
    #pragma omp task depend(in: o[2:5]) // { dg-error "does not have pointer or array type" }
      ;
!   #pragma omp task depend(out: a[ : ][2:4]) // { dg-error "array type length expression must be specified" }
      ;
!   #pragma omp task depend(inout: b[-1: ]) // { dg-error "negative low bound in array section" }
      ;
!   #pragma omp task depend(inout: c[ :-3][1:1]) // { dg-error "negative length in array section" }
      ;
!   #pragma omp task depend(in: d[11: ]) // { dg-error "low bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(out: e[ :11]) // { dg-error "length \[^\n\r]* above array section size" }
      ;
    #pragma omp task depend(out: f[1:10]) // { dg-error "high bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(in: g[ : ][2:4]) // { dg-error "for array function parameter length expression must be specified" }
      ;
!   #pragma omp task depend(in: h[2:2][-1: ]) // { dg-error "negative low bound in array section" }
      ;
!   #pragma omp task depend(inout: h[ :1][ :-3]) // { dg-error "negative length in array section" }
      ;
!   #pragma omp task depend(out: i[ :1][11: ]) // { dg-error "low bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(in: j[3:4][ :10]) // { dg-error "length \[^\n\r]* above array section size" }
      ;
    #pragma omp task depend(out: j[30:10][5:5]) // { dg-error "high bound \[^\n\r]* above array section size" }
      ;
!   #pragma omp task depend(out: a2[ :3][2:4])
      ;
!   #pragma omp task depend(inout: b2[0: ])
      ;
!   #pragma omp task depend(inout: c2[ :3][1:1])
      ;
!   #pragma omp task depend(in: d2[9: ])
      ;
!   #pragma omp task depend(out: e2[ :10])
      ;
    #pragma omp task depend(out: f2[1:9])
      ;
!   #pragma omp task depend(in: g2[ :2][2:4])
      ;
!   #pragma omp task depend(in: h2[2:2][0: ])
      ;
!   #pragma omp task depend(inout: h2[ :1][ :3])
      ;
!   #pragma omp task depend(out: i2[ :1][9: ])
      ;
!   #pragma omp task depend(in: j2[3:4][ :9])
      ;
    #pragma omp task depend(out: j2[30:10][5:4])
      ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/ind-base-3.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/ind-base-3.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/ind-base-3.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/ind-base-3.C	Sun Nov 23 22:32:14 2025
*************** int main (int argc, char *argv[])
*** 24,30 ****
  
    for (int i = 0; i < 10; i++)
      {
! #pragma omp target map(choose(&a, &b, i)->x[:10])
  /* { dg-message {sorry, unimplemented: unsupported map expression 'choose\(\(& a\), \(& b\), i\)->S::x\[0\]'} "" { target *-*-* } .-1 } */
        for (int j = 0; j < 10; j++)
          choose (&a, &b, i)->x[j]++;
--- 24,30 ----
  
    for (int i = 0; i < 10; i++)
      {
! #pragma omp target map(choose(&a, &b, i)->x[ :10])
  /* { dg-message {sorry, unimplemented: unsupported map expression 'choose\(\(& a\), \(& b\), i\)->S::x\[0\]'} "" { target *-*-* } .-1 } */
        for (int j = 0; j < 10; j++)
          choose (&a, &b, i)->x[j]++;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/map-1.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/map-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/map-1.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/map-1.C	Sun Nov 23 22:32:14 2025
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 28,40 ****
      ;
    #pragma omp target map(from: t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma omp target map(tofrom: k[0.5:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(from: l[:7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(to: m[p:]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(tofrom: n[:p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma omp target map(to: o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
--- 28,40 ----
      ;
    #pragma omp target map(from: t[2:5]) /* { dg-error "is threadprivate variable" } */
      ;
!   #pragma omp target map(tofrom: k[0.5: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(from: l[ :7.5f]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(to: m[p: ]) /* { dg-error "low bound \[^\n\r]* of array section does not have integral type" } */
      ;
!   #pragma omp target map(tofrom: n[ :p]) /* { dg-error "length \[^\n\r]* of array section does not have integral type" } */
      ;
    #pragma omp target map(to: o[2:5]) /* { dg-error "does not have pointer or array type" } */
      ;
*************** foo (int g[3][10], int h[4][8], int i[2]
*** 42,114 ****
      ;
    #pragma omp target map(alloc: s2) /* { dg-error "'s2' does not have a mappable type in 'map' clause" } */
      ;
!   #pragma omp target map(to: a[:][:]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]); /* { dg-error "referenced in target region does not have a mappable type" "PR97996" { xfail *-*-* } } */
!   #pragma omp target map(tofrom: b[-1:]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma omp target map(tofrom: c[:-3][:]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma omp target map(from: d[11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma omp target map(to: e[:11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma omp target map(to: f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma omp target map(from: g[:][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma omp target map(from: h[2:1][-1:]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma omp target map(tofrom: h[:1][:-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma omp target map(i[:1][11:]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma omp target map(from: j[3:1][:10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma omp target map(to: j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma omp target map(to: a2[:1][2:4])
      bar (&a2[0][0]);
!   #pragma omp target map(a2[3:5][:])
      bar (&a2[0][0]);
!   #pragma omp target map(to: a2[3:5][:10])
      bar (&a2[0][0]);
!   #pragma omp target map(tofrom: b2[0:])
      bar (b2);
!   #pragma omp target map(tofrom: c2[:3][:])
      bar (&c2[0][0]);
!   #pragma omp target map(from: d2[9:])
      bar (d2);
!   #pragma omp target map(to: e2[:10])
      bar (e2);
    #pragma omp target map(to: f2[1:9])
      bar (f2);
!   #pragma omp target map(g2[:1][2:4])
      bar (&g2[0][0]);
!   #pragma omp target map(from: h2[2:2][0:])
      bar (&h2[0][0]);
!   #pragma omp target map(tofrom: h2[:1][:3])
      bar (&h2[0][0]);
!   #pragma omp target map(to: i2[:1][9:])
      bar (&i2[0][0]);
!   #pragma omp target map(from: j2[3:4][:9])
      bar (&j2[0][0]);
    #pragma omp target map(to: j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma omp target map(q[1:2])
      ;
!   #pragma omp target map(tofrom: q[3:5][:10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3:][2:1][1:2])
      ;
!   #pragma omp target map(r[3:][2:1][1:2][:][0:4])
      ;
!   #pragma omp target map(r[3:][2:1][1:2][1:][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3:][2:1][1:2][:3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3:][2:1][1:2][:][1:]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3:][2:1][1:2][:][:3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
  
--- 42,114 ----
      ;
    #pragma omp target map(alloc: s2) /* { dg-error "'s2' does not have a mappable type in 'map' clause" } */
      ;
!   #pragma omp target map(to: a[ : ][ : ]) /* { dg-error "array type length expression must be specified" } */
      bar (&a[0][0]); /* { dg-error "referenced in target region does not have a mappable type" "PR97996" { xfail *-*-* } } */
!   #pragma omp target map(tofrom: b[-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (b);
!   #pragma omp target map(tofrom: c[ :-3][ : ]) /* { dg-error "negative length in array section" } */
      bar (&c[0][0]);
!   #pragma omp target map(from: d[11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (d);
!   #pragma omp target map(to: e[ :11]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (e);
    #pragma omp target map(to: f[1:10]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (f);
!   #pragma omp target map(from: g[ : ][0:10]) /* { dg-error "for array function parameter length expression must be specified" } */
      bar (&g[0][0]);
!   #pragma omp target map(from: h[2:1][-1: ]) /* { dg-error "negative low bound in array section" } */
      bar (&h[0][0]);
!   #pragma omp target map(tofrom: h[ :1][ :-3]) /* { dg-error "negative length in array section" } */
      bar (&h[0][0]);
!   #pragma omp target map(i[ :1][11: ]) /* { dg-error "low bound \[^\n\r]* above array section size" } */
      bar (&i[0][0]);
!   #pragma omp target map(from: j[3:1][ :10]) /* { dg-error "length \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
    #pragma omp target map(to: j[30:1][5:5]) /* { dg-error "high bound \[^\n\r]* above array section size" } */
      bar (&j[0][0]);
!   #pragma omp target map(to: a2[ :1][2:4])
      bar (&a2[0][0]);
!   #pragma omp target map(a2[3:5][ : ])
      bar (&a2[0][0]);
!   #pragma omp target map(to: a2[3:5][ :10])
      bar (&a2[0][0]);
!   #pragma omp target map(tofrom: b2[0: ])
      bar (b2);
!   #pragma omp target map(tofrom: c2[ :3][ : ])
      bar (&c2[0][0]);
!   #pragma omp target map(from: d2[9: ])
      bar (d2);
!   #pragma omp target map(to: e2[ :10])
      bar (e2);
    #pragma omp target map(to: f2[1:9])
      bar (f2);
!   #pragma omp target map(g2[ :1][2:4])
      bar (&g2[0][0]);
!   #pragma omp target map(from: h2[2:2][0: ])
      bar (&h2[0][0]);
!   #pragma omp target map(tofrom: h2[ :1][ :3])
      bar (&h2[0][0]);
!   #pragma omp target map(to: i2[ :1][9: ])
      bar (&i2[0][0]);
!   #pragma omp target map(from: j2[3:4][ :9])
      bar (&j2[0][0]);
    #pragma omp target map(to: j2[30:1][5:4])
      bar (&j2[0][0]);
    #pragma omp target map(q[1:2])
      ;
!   #pragma omp target map(tofrom: q[3:5][ :10]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3: ][2:1][1:2])
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][ : ][0:4])
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][1: ][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][ :3][0:4]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][ : ][1: ]) /* { dg-error "array section is not contiguous" } */
      ;
!   #pragma omp target map(r[3: ][2:1][1:2][ : ][ :3]) /* { dg-error "array section is not contiguous" } */
      ;
  }
  
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/map-2.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/map-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/map-2.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/map-2.C	Sun Nov 23 22:32:14 2025
*************** foo (int *p, int (*q)[10], int r[10], in
*** 17,41 ****
    ;
    #pragma omp target map (tofrom: r[-1:2])
    ;
!   #pragma omp target map (tofrom: s[-1:2][:])
    ;
    #pragma omp target map (tofrom: s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma omp target map (tofrom: b[-1:2][0:])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp target map (tofrom: q[2:-3][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp target map (tofrom: s[2:-5][:])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
--- 17,41 ----
    ;
    #pragma omp target map (tofrom: r[-1:2])
    ;
!   #pragma omp target map (tofrom: s[-1:2][ : ])
    ;
    #pragma omp target map (tofrom: s[-1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: a[-1:2])	 /* { dg-error "negative low bound in array section in" } */
    ;
!   #pragma omp target map (tofrom: b[-1:2][0: ])	 /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: b[1:2][-2:10]) /* { dg-error "negative low bound in array section in" } */
    ;
    #pragma omp target map (tofrom: p[2:-3])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp target map (tofrom: q[2:-3][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: q[2:3][0:-1])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: r[2:-5])	 /* { dg-error "negative length in array section in" } */
    ;
!   #pragma omp target map (tofrom: s[2:-5][ : ])	 /* { dg-error "negative length in array section in" } */
    ;
    #pragma omp target map (tofrom: s[2:5][0:-4])	 /* { dg-error "negative length in array section in" } */
    ;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/map-ptrmem-1.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/map-ptrmem-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/map-ptrmem-1.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/map-ptrmem-1.C	Sun Nov 23 22:32:14 2025
*************** main (int argc, char *argv[])
*** 20,26 ****
    for (int i = 0; i < 64; i++)
      (s.*ptrp)[i] = i;
  
! #pragma omp target map(s.*xp, s.*ptrp, (s.*ptrp)[:64])
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\*\(\(\(int\*\*\)\(& s\)\) \+ \(\(sizetype\)ptrp\)\)\)' not supported} "" { target *-*-* } .-1 } */
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\(\(int\*\*\)\(& s\)\) \+ \(\(sizetype\)ptrp\)\)' not supported} "" { target *-*-* } .-2 } */
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\(\(int\*\)\(& s\)\) \+ \(\(sizetype\)xp\)\)' not supported} "" { target *-*-* } .-3 } */
--- 20,26 ----
    for (int i = 0; i < 64; i++)
      (s.*ptrp)[i] = i;
  
! #pragma omp target map(s.*xp, s.*ptrp, (s.*ptrp)[ :64])
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\*\(\(\(int\*\*\)\(& s\)\) \+ \(\(sizetype\)ptrp\)\)\)' not supported} "" { target *-*-* } .-1 } */
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\(\(int\*\*\)\(& s\)\) \+ \(\(sizetype\)ptrp\)\)' not supported} "" { target *-*-* } .-2 } */
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\(\(int\*\)\(& s\)\) \+ \(\(sizetype\)xp\)\)' not supported} "" { target *-*-* } .-3 } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/map-ptrmem-2.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/map-ptrmem-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/map-ptrmem-2.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/map-ptrmem-2.C	Sun Nov 23 22:32:14 2025
*************** main (int argc, char *argv[])
*** 20,26 ****
    for (int i = 0; i < 64; i++)
      (s->*ptrp)[i] = i;
  
! #pragma omp target map(s->*xp, s->*ptrp, (s->*ptrp)[:64])
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\(\(int\*\*\)s\) \+ \(\(sizetype\)ptrp\)\)' not supported} "" { target *-*-* } .-1 } */
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\(\(int\*\)s\) \+ \(\(sizetype\)xp\)\)' not supported} "" { target *-*-* } .-2 } */
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\*\(\(\(int\*\*\)s\) \+ \(\(sizetype\)ptrp\)\)\)' not supported} "" { target *-*-* } .-3 } */
--- 20,26 ----
    for (int i = 0; i < 64; i++)
      (s->*ptrp)[i] = i;
  
! #pragma omp target map(s->*xp, s->*ptrp, (s->*ptrp)[ :64])
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\(\(int\*\*\)s\) \+ \(\(sizetype\)ptrp\)\)' not supported} "" { target *-*-* } .-1 } */
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\(\(int\*\)s\) \+ \(\(sizetype\)xp\)\)' not supported} "" { target *-*-* } .-2 } */
    /* { dg-message {sorry, unimplemented: pointer-to-member mapping '\*\(\*\(\(\(int\*\*\)s\) \+ \(\(sizetype\)ptrp\)\)\)' not supported} "" { target *-*-* } .-3 } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/member-array-2.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/member-array-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/member-array-2.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/member-array-2.C	Sun Nov 23 22:32:14 2025
*************** C::zero ()
*** 40,46 ****
  void
  C::do_operation ()
  {
! #pragma omp target map(arr, ptr, ptr[:100])
  #pragma omp teams distribute parallel for
    for (int i = 0; i < 100; i++)
      {
--- 40,46 ----
  void
  C::do_operation ()
  {
! #pragma omp target map(arr, ptr, ptr[ :100])
  #pragma omp teams distribute parallel for
    for (int i = 0; i < 100; i++)
      {
*************** main (int argc, char *argv[])
*** 70,76 ****
  
    /* It might sort of make sense to be able to do this, but we don't support
       it for now.  */
!   #pragma omp target map(c.get_arr()[:100])
    /* { dg-message {sorry, unimplemented: unsupported map expression 'c\.C::get_arr\(\)\[0\]'} "" { target *-*-* } .-1 } */
    #pragma omp teams distribute parallel for
      for (int i = 0; i < 100; i++)
--- 70,76 ----
  
    /* It might sort of make sense to be able to do this, but we don't support
       it for now.  */
!   #pragma omp target map(c.get_arr()[ :100])
    /* { dg-message {sorry, unimplemented: unsupported map expression 'c\.C::get_arr\(\)\[0\]'} "" { target *-*-* } .-1 } */
    #pragma omp teams distribute parallel for
      for (int i = 0; i < 100; i++)
*************** main (int argc, char *argv[])
*** 79,85 ****
    c.check (5, 5);
  
    /* Same for this.  */
!   #pragma omp target map(c.get_ptr(), c.get_ptr()[:100])
    /* { dg-message {sorry, unimplemented: unsupported map expression 'c\.C::get_ptr\(\)'} "" { target *-*-* } .-1 } */
    /* { dg-message {sorry, unimplemented: unsupported map expression '\* c\.C::get_ptr\(\)'} "" { target *-*-* } .-2 } */
    #pragma omp teams distribute parallel for
--- 79,85 ----
    c.check (5, 5);
  
    /* Same for this.  */
!   #pragma omp target map(c.get_ptr(), c.get_ptr()[ :100])
    /* { dg-message {sorry, unimplemented: unsupported map expression 'c\.C::get_ptr\(\)'} "" { target *-*-* } .-1 } */
    /* { dg-message {sorry, unimplemented: unsupported map expression '\* c\.C::get_ptr\(\)'} "" { target *-*-* } .-2 } */
    #pragma omp teams distribute parallel for
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/target-this-3.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/target-this-3.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/target-this-3.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/target-this-3.C	Sun Nov 23 22:32:14 2025
*************** int main (void)
*** 73,79 ****
      if (ptr2[i] != 0)
        abort ();
  
!   #pragma omp target data map(ptr1[:N])
    mapped = s.set_ptr (val);
  
    if (!mapped)
--- 73,79 ----
      if (ptr2[i] != 0)
        abort ();
  
!   #pragma omp target data map(ptr1[ :N])
    mapped = s.set_ptr (val);
  
    if (!mapped)
*************** int main (void)
*** 86,92 ****
      if (ptr1[i] != val)
        abort ();
  
!   #pragma omp target data map(ptr2[:N])
    mapped = s.set_refptr (val);
  
    if (!mapped)
--- 86,92 ----
      if (ptr1[i] != val)
        abort ();
  
!   #pragma omp target data map(ptr2[ :N])
    mapped = s.set_refptr (val);
  
    if (!mapped)
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/gomp/target-this-4.C gcc-16-20251123/gcc/testsuite/g++.dg/gomp/target-this-4.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/gomp/target-this-4.C	Sun Nov 16 22:33:17 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/gomp/target-this-4.C	Sun Nov 23 22:32:14 2025
*************** int main (void)
*** 80,86 ****
      if (ptr2[i] != 0)
        abort ();
  
!   #pragma omp target data map(ptr1[:N], ptr2[:N])
    {
      if (!p1 ())
        abort ();
--- 80,86 ----
      if (ptr2[i] != 0)
        abort ();
  
!   #pragma omp target data map(ptr1[ :N], ptr2[ :N])
    {
      if (!p1 ())
        abort ();
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/modules/auto-1_a.H gcc-16-20251123/gcc/testsuite/g++.dg/modules/auto-1_a.H
*** gcc-16-20251116/gcc/testsuite/g++.dg/modules/auto-1_a.H	Sun Nov 16 22:33:18 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/modules/auto-1_a.H	Sun Nov 23 22:32:14 2025
***************
*** 1,4 ****
! // { dg-additional-options -fmodule-header }
  // { dg-module-cmi {} }
  
  #include "auto-1.h"
--- 1,4 ----
! // { dg-options -fmodule-header }
  // { dg-module-cmi {} }
  
  #include "auto-1.h"
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/modules/auto-1_b.C gcc-16-20251123/gcc/testsuite/g++.dg/modules/auto-1_b.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/modules/auto-1_b.C	Sun Nov 16 22:33:18 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/modules/auto-1_b.C	Sun Nov 23 22:32:14 2025
***************
*** 1,4 ****
! // { dg-additional-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
  
  #include "auto-1.h"
  import "auto-1_a.H";
--- 1,4 ----
! // { dg-options "-fmodules-ts -fno-module-lazy -fdump-lang-module-alias" }
  
  #include "auto-1.h"
  import "auto-1_a.H";
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/modules/internal-19_a.C gcc-16-20251123/gcc/testsuite/g++.dg/modules/internal-19_a.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/modules/internal-19_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/modules/internal-19_a.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/122636
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi M }
+ 
+ export module M;
+ export template <typename>
+ struct Foo {
+   constexpr static inline auto lambda = []{};
+   template <typename T = decltype(lambda)>
+   static void foo(T = lambda) {}
+ };
+ 
+ export template <typename... Types>
+ struct Type
+ {
+   template <typename T>
+   auto test(T to)
+   {
+     return [to](auto && ...){ return to; }();
+   }
+ };
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/modules/internal-19_b.C gcc-16-20251123/gcc/testsuite/g++.dg/modules/internal-19_b.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/modules/internal-19_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/modules/internal-19_b.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/122636
+ // { dg-additional-options "-fmodules -Werror=expose-global-module-tu-local" }
+ 
+ import M;
+ namespace {
+   struct Bar {};
+   void bar() { Foo<Bar>::foo(); }
+ }
+ 
+ int main() {
+   bar();
+ 
+   enum class E { };
+   Type<E> t;
+   t.test(0);
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/opt/pr122184-1.C gcc-16-20251123/gcc/testsuite/g++.dg/opt/pr122184-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/opt/pr122184-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/opt/pr122184-1.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR tree-optimization/122184
+ // { dg-do compile }
+ // { dg-require-stack-check "generic" }
+ // { dg-options "-O2 -fstack-check=generic" }
+ 
+ void
+ foo ()
+ {
+   goto fail;
+   char var[41];
+ fail:;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/opt/pr122184-2.C gcc-16-20251123/gcc/testsuite/g++.dg/opt/pr122184-2.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/opt/pr122184-2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/opt/pr122184-2.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR tree-optimization/122184
+ // { dg-do compile }
+ // { dg-require-stack-check "generic" }
+ // { dg-options "-O2 -fstack-check=generic -ftrivial-auto-var-init=zero" }
+ 
+ void
+ foo ()
+ {
+   goto fail;
+   char var[41];
+ fail:;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/parse/crash81.C gcc-16-20251123/gcc/testsuite/g++.dg/parse/crash81.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/parse/crash81.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/parse/crash81.C	Sun Nov 23 22:32:14 2025
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/120876
+ // { dg-do compile { target c++11 } }
+ 
+ template <typename T>
+ struct S {
+   static bool foo (decltype (bar (T {})));	// { dg-error "'bar' was not declared in this scope; did you mean 'baz'\\\?" }
+   static constexpr bool s = foo (0);		// { dg-error "declaration of 'S<int>::foo' depends on itself" }
+ };
+ 
+ void
+ baz ()
+ {
+   S <int>::s;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/template/crash106.C gcc-16-20251123/gcc/testsuite/g++.dg/template/crash106.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/template/crash106.C	Sun Nov 16 22:33:20 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/template/crash106.C	Sun Nov 23 22:32:14 2025
*************** struct A
*** 7,12 ****
    template<T> void foo(); // { dg-error "type" "" { target c++17_down } }
  };
  
! template<T N = 0.0, void (A::*)() = &A::foo<N> > struct B {}; // { dg-error "type|declared|could not convert" "" { target c++17_down } }
  
! B<> b; // { dg-message "" "" { target c++17_down } }
--- 7,12 ----
    template<T> void foo(); // { dg-error "type" "" { target c++17_down } }
  };
  
! template<T N = 0.0, void (A::*)() = &A::foo<N> > struct B {}; // { dg-error "type|not a member" "" { target c++17_down } }
  
! B<> b; // { dg-error "invalid" "" { target c++17_down } }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/template/crash112.C gcc-16-20251123/gcc/testsuite/g++.dg/template/crash112.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/template/crash112.C	Sun Nov 16 22:33:20 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/template/crash112.C	Sun Nov 23 22:32:14 2025
*************** template<void (A::*)()> struct B {};
*** 9,17 ****
  
  template<int> struct C
  {
!   B<&A::foo<int int> > b; // { dg-error "declaration|type" }
  };
  
  C<0> c;
- 
- // { dg-prune-output "could not convert" }
--- 9,15 ----
  
  template<int> struct C
  {
!   B<&A::foo<int int> > b; // { dg-error "declaration|not a member" }
  };
  
  C<0> c;
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/template/dependent-args1.C gcc-16-20251123/gcc/testsuite/g++.dg/template/dependent-args1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/template/dependent-args1.C	Sun Nov 16 22:33:20 2025
--- gcc-16-20251123/gcc/testsuite/g++.dg/template/dependent-args1.C	Sun Nov 23 22:32:14 2025
*************** struct A
*** 6,13 ****
    template<int> void foo();
  };
  
! template<int N, void (A::*)() = &A::foo<N> > struct B {};
! 
! B<int> b; // { dg-error "type/value mismatch|expected a constant|invalid type" }
  
! // { dg-prune-output "(could not convert|no match)" }
--- 6,11 ----
    template<int> void foo();
  };
  
! template<int N, void (A::*)() = &A::foo<N> > struct B {};  // { dg-error "not a member" }
  
! B<int> b; // { dg-error "type/value mismatch|invalid" }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.dg/tree-ssa/string-strlen-1.C gcc-16-20251123/gcc/testsuite/g++.dg/tree-ssa/string-strlen-1.C
*** gcc-16-20251116/gcc/testsuite/g++.dg/tree-ssa/string-strlen-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.dg/tree-ssa/string-strlen-1.C	Sun Nov 23 22:32:15 2025
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile } */
+ // { dg-additional-options "-fdump-tree-optimized -O2" }
+ // { dg-skip-if "requires hosted libstdc++ for string" { ! hostedlib } }
+ // PR tree-optimization/122754
+ 
+ #include <string>
+ 
+ int g(void)
+ {
+   std::string a="a";
+   return __builtin_strlen(a.c_str());
+ }
+ 
+ // This should be optimized to just `return 1` without any
+ // references to struct string or any other variables.
+ 
+ // { dg-final { scan-tree-dump-not "strlen " "optimized" } }
+ // { dg-final { scan-tree-dump-not "struct string" "optimized" } }
+ // { dg-final { scan-tree-dump "return 1" "optimized" } }
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.target/arm/mve/general-c++/nomve_fp_1.c gcc-16-20251123/gcc/testsuite/g++.target/arm/mve/general-c++/nomve_fp_1.c
*** gcc-16-20251116/gcc/testsuite/g++.target/arm/mve/general-c++/nomve_fp_1.c	Sun Nov 16 22:33:24 2025
--- gcc-16-20251123/gcc/testsuite/g++.target/arm/mve/general-c++/nomve_fp_1.c	Sun Nov 23 22:32:15 2025
***************
*** 12,17 ****
  void
  f1 (uint8x16_t v)
  {
!   vreinterpretq_f16 (v); /* { dg-error {ACLE function 'void vreinterpretq_f16\(uint8x16_t\)' requires ISA extension 'mve.fp'} } */
    /* { dg-message {note: you can enable mve.fp by using the command-line option '-march', or by using the 'target' attribute or pragma} "" {target *-*-*} .-1 } */
  }
--- 12,17 ----
  void
  f1 (uint8x16_t v)
  {
!   vreinterpretq_f16 (v); /* { dg-error {ACLE function 'float16x8_t vreinterpretq_f16\(uint8x16_t\)' requires ISA extension 'mve.fp'} } */
    /* { dg-message {note: you can enable mve.fp by using the command-line option '-march', or by using the 'target' attribute or pragma} "" {target *-*-*} .-1 } */
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.target/riscv/pr122692-run-1.C gcc-16-20251123/gcc/testsuite/g++.target/riscv/pr122692-run-1.C
*** gcc-16-20251116/gcc/testsuite/g++.target/riscv/pr122692-run-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.target/riscv/pr122692-run-1.C	Sun Nov 23 22:32:15 2025
***************
*** 0 ****
--- 1,116 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-options "-O2" } */
+ 
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ 
+ #include <array>
+ #include <limits>
+ #include <memory>
+ #include <new>
+ #include <type_traits>
+ 
+ #define HWY_INLINE inline __attribute__((__always_inline__))
+ #define HWY_MIN(a, b) ((a) < (b) ? (a) : (b))
+ #define HWY_MAX(a, b) ((a) > (b) ? (a) : (b))
+ 
+ #if defined(__GNUC__) && !defined(__clang__)
+ #define NOIPA_ATTR __attribute__((__noipa__))
+ #else
+ #define NOIPA_ATTR
+ #endif
+ 
+ namespace test {
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR int Unpredictable1() {
+   int result = 1;
+   __asm__("" : "+r"(result)::);
+   return result;
+ }
+ 
+ class RandomState {
+  public:
+   explicit RandomState(
+       const uint64_t seed = uint64_t{0x123456789} *
+                             static_cast<uint64_t>(test::Unpredictable1())) {
+     s0_ = SplitMix64(seed + 0x9E3779B97F4A7C15ull);
+     s1_ = SplitMix64(s0_);
+   }
+ 
+   HWY_INLINE uint64_t operator()() {
+     uint64_t s1 = s0_;
+     const uint64_t s0 = s1_;
+     const uint64_t bits = s1 + s0;
+     s0_ = s0;
+     s1 ^= s1 << 23;
+     s1 ^= s0 ^ (s1 >> 18) ^ (s0 >> 5);
+     s1_ = s1;
+     return bits;
+   }
+ 
+  private:
+   static uint64_t SplitMix64(uint64_t z) {
+     z = (z ^ (z >> 30)) * 0xBF58476D1CE4E5B9ull;
+     z = (z ^ (z >> 27)) * 0x94D049BB133111EBull;
+     return z ^ (z >> 31);
+   }
+ 
+   uint64_t s0_;
+   uint64_t s1_;
+ };
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR void GenerateRandomU16x16Vals(
+     RandomState& rng, uint16_t* const from, uint8_t* const expected) {
+   using T = uint16_t;
+   using TN = uint8_t;
+ 
+   const T min = 0;
+   const T max = static_cast<T>(std::numeric_limits<TN>::max());
+ 
+   for (size_t i = 0; i < 16; ++i) {
+     const uint64_t bits = rng();
+     __builtin_memcpy(&from[i], &bits, sizeof(T));  // not same size
+     expected[i] = static_cast<TN>(HWY_MIN(HWY_MAX(min, from[i]), max));
+   }
+ }
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR void DoVerifyU16x16Demote(
+     const uint16_t* const from, const uint8_t* const expected) {
+   for (int i = 0; i < 16; ++i) {
+     const uint8_t actual =
+         static_cast<uint8_t>((from[i] < 0xFF) ? from[i] : 0xFF);
+     if (expected[i] != actual) {
+       fprintf(stderr,
+               "Mismatch between expected result and actual result\nfrom=%u, "
+               "expected=%u, actual=%u\n",
+               static_cast<unsigned>(from[i]),
+               static_cast<unsigned>(expected[i]),
+               static_cast<unsigned>(actual));
+       __builtin_abort();
+     }
+   }
+ }
+ 
+ static void DoDemoteU16x16ToU8x16Test() {
+   using T = uint16_t;
+   using TN = uint8_t;
+   std::array<T, 16> from;
+   std::array<TN, 16> expected;
+ 
+   RandomState rng;
+   for (size_t rep = 0; rep < 1000; ++rep) {
+     GenerateRandomU16x16Vals(rng, from.data(), expected.data());
+     DoVerifyU16x16Demote(from.data(), expected.data());
+   }
+ }
+ 
+ }  // namespace test
+ 
+ int main(int /*argc*/, char** /*argv*/) {
+   printf("Doing DoDemoteU16x16ToU8x16Test\n");
+   test::DoDemoteU16x16ToU8x16Test();
+   printf("Test completed successfully\n");
+   return 0;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/g++.target/riscv/pr122692-run-2.C gcc-16-20251123/gcc/testsuite/g++.target/riscv/pr122692-run-2.C
*** gcc-16-20251116/gcc/testsuite/g++.target/riscv/pr122692-run-2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/g++.target/riscv/pr122692-run-2.C	Sun Nov 23 22:32:15 2025
***************
*** 0 ****
--- 1,178 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-options "-O2" } */
+ 
+ #include <inttypes.h>
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ 
+ #include <array>
+ #include <limits>
+ #include <memory>
+ #include <new>
+ #include <type_traits>
+ 
+ #define HWY_INLINE inline __attribute__((__always_inline__))
+ #define HWY_MIN(a, b) ((a) < (b) ? (a) : (b))
+ #define HWY_MAX(a, b) ((a) > (b) ? (a) : (b))
+ 
+ #if defined(__GNUC__) && !defined(__clang__)
+ #define NOIPA_ATTR __attribute__((__noipa__))
+ #else
+ #define NOIPA_ATTR
+ #endif
+ 
+ namespace test {
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR int Unpredictable1() {
+   int result = 1;
+   __asm__("" : "+r"(result)::);
+   return result;
+ }
+ 
+ class RandomState {
+  public:
+   explicit RandomState(
+       const uint64_t seed = uint64_t{0x123456789} *
+                             static_cast<uint64_t>(test::Unpredictable1())) {
+     s0_ = SplitMix64(seed + 0x9E3779B97F4A7C15ull);
+     s1_ = SplitMix64(s0_);
+   }
+ 
+   HWY_INLINE uint64_t operator()() {
+     uint64_t s1 = s0_;
+     const uint64_t s0 = s1_;
+     const uint64_t bits = s1 + s0;
+     s0_ = s0;
+     s1 ^= s1 << 23;
+     s1 ^= s0 ^ (s1 >> 18) ^ (s0 >> 5);
+     s1_ = s1;
+     return bits;
+   }
+ 
+  private:
+   static uint64_t SplitMix64(uint64_t z) {
+     z = (z ^ (z >> 30)) * 0xBF58476D1CE4E5B9ull;
+     z = (z ^ (z >> 27)) * 0x94D049BB133111EBull;
+     return z ^ (z >> 31);
+   }
+ 
+   uint64_t s0_;
+   uint64_t s1_;
+ };
+ 
+ template <class T>
+ static __attribute__((noinline)) NOIPA_ATTR T* MallocArray(
+     size_t num_to_alloc) {
+   static_assert(sizeof(T) > 0, "sizeof(T) > 0 must be true");
+   constexpr size_t kMaxNumToAlloc =
+       std::numeric_limits<size_t>::max() / sizeof(T);
+   if (num_to_alloc > kMaxNumToAlloc) {
+     return nullptr;
+   }
+ 
+   return reinterpret_cast<T*>(::malloc(num_to_alloc * sizeof(T)));
+ }
+ 
+ struct CFreeDeleter {
+   HWY_INLINE void operator()(const volatile void* ptr) const noexcept {
+     if (ptr) {
+       ::free(const_cast<void*>(ptr));
+     }
+   }
+ };
+ 
+ #define HWY_ASSERT(cond)                                              \
+   do {                                                                \
+     if (__builtin_expect(!(cond), false)) {                           \
+       fprintf(stderr, "Assertion failed at line %d of file %s: %s\n", \
+               static_cast<int>(__LINE__), __FILE__, "" #cond);        \
+       fflush(stderr);                                                 \
+       __builtin_abort();                                              \
+     }                                                                 \
+   } while (false)
+ 
+ static __attribute__((__noinline__)) NOIPA_ATTR void AssertU8x16ArrayEquals(
+     std::array<uint8_t, 16> expected, std::array<uint8_t, 16> actual,
+     const int line, const char* filename) {
+   for (size_t i = 0; i < 16; i++) {
+     if (expected[i] != actual[i]) {
+       fprintf(stderr, "Array mismatch at line %d of file %s:\n", line,
+               filename);
+       fprintf(stderr,
+               "Expected: {%" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 "}\n",
+               expected[0], expected[1], expected[2], expected[3], expected[4],
+               expected[5], expected[6], expected[7], expected[8], expected[9],
+               expected[10], expected[11], expected[12], expected[13],
+               expected[14], expected[15]);
+       fprintf(stderr,
+               "Actual:   {%" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8 ", %" PRIu8
+               ", %" PRIu8 ", %" PRIu8 "}\n",
+               actual[0], actual[1], actual[2], actual[3], actual[4], actual[5],
+               actual[6], actual[7], actual[8], actual[9], actual[10],
+               actual[11], actual[12], actual[13], actual[14], actual[15]);
+       __builtin_abort();
+     }
+   }
+ }
+ 
+ #define ASSERT_U8X16_ARR_EQUALS(expected, actual) \
+   AssertU8x16ArrayEquals(expected, actual, __LINE__, __FILE__)
+ 
+ static std::array<uint8_t, 16> LoadU8x16Vec(const uint8_t* __restrict ptr) {
+   std::array<uint8_t, 16> result;
+   __builtin_memcpy(&result, ptr, 16 * sizeof(uint8_t));
+   return result;
+ }
+ 
+ static std::array<uint16_t, 8> LoadU16x8Vec(const uint16_t* __restrict ptr) {
+   std::array<uint16_t, 8> result;
+   __builtin_memcpy(&result, ptr, 8 * sizeof(uint16_t));
+   return result;
+ }
+ 
+ static void DoOrderedDemote2U16x8ToU8x16Test() {
+   using T = uint16_t;
+   using TN = uint8_t;
+   std::unique_ptr<T[], CFreeDeleter> from(MallocArray<T>(16));
+   std::unique_ptr<TN[], CFreeDeleter> expected(MallocArray<TN>(16));
+   HWY_ASSERT(from && expected);
+ 
+   constexpr size_t N = 8;
+   constexpr size_t twiceN = 16;
+ 
+   // Narrower range in the wider type, for clamping before we cast
+   const T min = static_cast<T>(
+       std::is_signed_v<T> ? std::numeric_limits<TN>::lowest() : TN{0});
+   const T max = std::numeric_limits<TN>::max();
+ 
+   RandomState rng;
+   for (size_t rep = 0; rep < 1000; ++rep) {
+     for (size_t i = 0; i < twiceN; ++i) {
+       const uint64_t bits = rng();
+       __builtin_memcpy(&from[i], &bits, sizeof(T));  // not same size
+       expected[i] = static_cast<TN>(HWY_MIN(HWY_MAX(min, from[i]), max));
+     }
+ 
+     std::array<uint8_t, 16> actual;
+     for (size_t i = 0; i < 16; i++) {
+       actual[i] = static_cast<uint8_t>(HWY_MIN(from[i], 0xFF));
+     }
+     ASSERT_U8X16_ARR_EQUALS(LoadU8x16Vec(expected.get()), actual);
+   }
+ }
+ 
+ }  // namespace test
+ 
+ int main(int /*argc*/, char** /*argv*/) {
+   printf("Doing DoOrderedDemote2U16x8ToU8x16Test\n");
+   test::DoOrderedDemote2U16x8ToU8x16Test();
+   printf("Test completed successfully\n");
+   return 0;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/pr116815.c gcc-16-20251123/gcc/testsuite/gcc.dg/pr116815.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/pr116815.c	Sun Nov 16 22:33:35 2025
--- gcc-16-20251123/gcc/testsuite/gcc.dg/pr116815.c	Sun Nov 23 22:32:17 2025
***************
*** 1,5 ****
  /* PR target/116815 */
! /* { dg-do run } */
  /* { dg-options "-O2" } */
  
  [[gnu::always_inline]]
--- 1,5 ----
  /* PR target/116815 */
! /* { dg-do run { target int32 } } */
  /* { dg-options "-O2" } */
  
  [[gnu::always_inline]]
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/pr121519.c gcc-16-20251123/gcc/testsuite/gcc.dg/pr121519.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/pr121519.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/pr121519.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,41 ----
+ /* PR tree-optimization/121519 */
+ /* { dg-do compile { target int32plus } } */
+ /* { dg-options "-O3" } */
+ 
+ extern int foo (void);
+ int a, b, c;
+ 
+ int
+ bar (int f)
+ {
+   int d = 0;
+   for (; d < 6; d++)
+     {
+       a = f <<= 1;
+       if (f & 64)
+ 	f ^= 67;
+     }
+   return a;
+ }
+ 
+ void
+ baz (void)
+ {
+   int i = 0;
+   if (c)
+     goto j;
+   i = -32644994;
+ k:
+   b = 0;
+ j:
+   if (foo () - 508050053 + bar (i + 79))
+     goto k;
+ }
+ 
+ int
+ main ()
+ {
+   while (a)
+     baz ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/pr122756.c gcc-16-20251123/gcc/testsuite/gcc.dg/pr122756.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/pr122756.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/pr122756.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3" } */
+ /* { dg-additional-options "-march=rv64gcv -mabi=lp64d" { target { rv64 } } } */
+ 
+ long a;
+ void b() {
+   unsigned long c, d;
+   for (;; c = d + 2000) {
+     d = c;
+     for (; d < a; d += 2)
+       if (d % 2)
+         for (;;)
+           ;
+   }
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/pr122773.c gcc-16-20251123/gcc/testsuite/gcc.dg/pr122773.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/pr122773.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/pr122773.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,25 ----
+ /* PR middle-end/122773 */
+ /* { dg-do compile } */
+ /* { dg-options "-Wimplicit-fallthrough -O2 -ftrivial-auto-var-init=zero" } */
+ 
+ void *l;
+ int
+ foo (int x)
+ {
+   __label__ l1, l2, l3;
+   static void *l[] = { &&l1, &&l2, &&l3 };
+   switch (0)
+     {
+     case 0:
+       while (0)
+         ;
+       goto *l[x];
+     }
+   l1:
+   ++x;
+   l2:
+   ++x;
+   l3:
+   ++x;
+   return x;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/torture/pr122701.c gcc-16-20251123/gcc/testsuite/gcc.dg/torture/pr122701.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/torture/pr122701.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/torture/pr122701.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ 
+ char _strtoimax_r_c;
+ void _strtoimax_r() {
+   for (;; _strtoimax_r_c++) {
+     if (_strtoimax_r_c <= '9')
+       _strtoimax_r_c -= '0';
+     if (_strtoimax_r_c >= 'A')
+       break;
+   }
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.1.c gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.1.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.1.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ #include "bit_op_cvt.h"
+ 
+ DEF_BIT_CVT_0(uint8_t, int8_t, uint16_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, int8_t, uint32_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, int8_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, uint16_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, uint32_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, int16_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, int32_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, int64_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, int8_t, int16_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, int8_t, int32_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint8_t, int8_t, int64_t, |, bit_ior)
+ 
+ DEF_BIT_CVT_0(uint16_t, int16_t, uint32_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint16_t, int16_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint16_t, int16_t, int32_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint16_t, int16_t, int64_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, uint32_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, int32_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, int64_t, |, bit_ior)
+ 
+ DEF_BIT_CVT_0(uint32_t, int32_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint32_t, int32_t, int64_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint32_t, uint32_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(uint32_t, uint32_t, int64_t, |, bit_ior)
+ 
+ /* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.2.c gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.2.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.2.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ #include "bit_op_cvt.h"
+ 
+ DEF_BIT_CVT_0(int8_t, int8_t, uint16_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, int8_t, uint32_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, int8_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, uint8_t, uint16_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, uint8_t, uint32_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, uint8_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, uint8_t, int16_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, uint8_t, int32_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, uint8_t, int64_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, int8_t, int16_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, int8_t, int32_t, |, bit_ior)
+ DEF_BIT_CVT_0(int8_t, int8_t, int64_t, |, bit_ior)
+ 
+ DEF_BIT_CVT_0(int16_t, int16_t, uint32_t, |, bit_ior)
+ DEF_BIT_CVT_0(int16_t, int16_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(int16_t, int16_t, int32_t, |, bit_ior)
+ DEF_BIT_CVT_0(int16_t, int16_t, int64_t, |, bit_ior)
+ DEF_BIT_CVT_0(int16_t, uint16_t, uint32_t, |, bit_ior)
+ DEF_BIT_CVT_0(int16_t, uint16_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(int16_t, uint16_t, int32_t, |, bit_ior)
+ DEF_BIT_CVT_0(int16_t, uint16_t, int64_t, |, bit_ior)
+ 
+ DEF_BIT_CVT_0(int32_t, int32_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(int32_t, int32_t, int64_t, |, bit_ior)
+ DEF_BIT_CVT_0(int32_t, uint32_t, uint64_t, |, bit_ior)
+ DEF_BIT_CVT_0(int32_t, uint32_t, int64_t, |, bit_ior)
+ 
+ /* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.3.c gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.3.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.3.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ #include "bit_op_cvt.h"
+ 
+ DEF_BIT_CVT_0(uint8_t, int8_t, uint16_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, int8_t, uint32_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, int8_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, uint16_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, uint32_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, int16_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, int32_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, int64_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, int8_t, int16_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, int8_t, int32_t, &, bit_and)
+ DEF_BIT_CVT_0(uint8_t, int8_t, int64_t, &, bit_and)
+ 
+ DEF_BIT_CVT_0(uint16_t, int16_t, uint32_t, &, bit_and)
+ DEF_BIT_CVT_0(uint16_t, int16_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(uint16_t, int16_t, int32_t, &, bit_and)
+ DEF_BIT_CVT_0(uint16_t, int16_t, int64_t, &, bit_and)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, uint32_t, &, bit_and)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, int32_t, &, bit_and)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, int64_t, &, bit_and)
+ 
+ DEF_BIT_CVT_0(uint32_t, int32_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(uint32_t, int32_t, int64_t, &, bit_and)
+ DEF_BIT_CVT_0(uint32_t, uint32_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(uint32_t, uint32_t, int64_t, &, bit_and)
+ 
+ /* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.4.c gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.4.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.4.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ #include "bit_op_cvt.h"
+ 
+ DEF_BIT_CVT_0(int8_t, int8_t, uint16_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, int8_t, uint32_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, int8_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, uint8_t, uint16_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, uint8_t, uint32_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, uint8_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, uint8_t, int16_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, uint8_t, int32_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, uint8_t, int64_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, int8_t, int16_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, int8_t, int32_t, &, bit_and)
+ DEF_BIT_CVT_0(int8_t, int8_t, int64_t, &, bit_and)
+ 
+ DEF_BIT_CVT_0(int16_t, int16_t, uint32_t, &, bit_and)
+ DEF_BIT_CVT_0(int16_t, int16_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(int16_t, int16_t, int32_t, &, bit_and)
+ DEF_BIT_CVT_0(int16_t, int16_t, int64_t, &, bit_and)
+ DEF_BIT_CVT_0(int16_t, uint16_t, uint32_t, &, bit_and)
+ DEF_BIT_CVT_0(int16_t, uint16_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(int16_t, uint16_t, int32_t, &, bit_and)
+ DEF_BIT_CVT_0(int16_t, uint16_t, int64_t, &, bit_and)
+ 
+ DEF_BIT_CVT_0(int32_t, int32_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(int32_t, int32_t, int64_t, &, bit_and)
+ DEF_BIT_CVT_0(int32_t, uint32_t, uint64_t, &, bit_and)
+ DEF_BIT_CVT_0(int32_t, uint32_t, int64_t, &, bit_and)
+ 
+ /* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.5.c gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.5.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.5.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ #include "bit_op_cvt.h"
+ 
+ DEF_BIT_CVT_0(uint8_t, int8_t, uint16_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, int8_t, uint32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, int8_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, uint16_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, uint32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, int16_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, int32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, uint8_t, int64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, int8_t, int16_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, int8_t, int32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint8_t, int8_t, int64_t, ^, bit_xor)
+ 
+ DEF_BIT_CVT_0(uint16_t, int16_t, uint32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint16_t, int16_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint16_t, int16_t, int32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint16_t, int16_t, int64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, uint32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, int32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint16_t, uint16_t, int64_t, ^, bit_xor)
+ 
+ DEF_BIT_CVT_0(uint32_t, int32_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint32_t, int32_t, int64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint32_t, uint32_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(uint32_t, uint32_t, int64_t, ^, bit_xor)
+ 
+ /* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.6.c gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.6.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.6.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ #include "bit_op_cvt.h"
+ 
+ DEF_BIT_CVT_0(int8_t, int8_t, uint16_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, int8_t, uint32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, int8_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, uint8_t, uint16_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, uint8_t, uint32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, uint8_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, uint8_t, int16_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, uint8_t, int32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, uint8_t, int64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, int8_t, int16_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, int8_t, int32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int8_t, int8_t, int64_t, ^, bit_xor)
+ 
+ DEF_BIT_CVT_0(int16_t, int16_t, uint32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int16_t, int16_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int16_t, int16_t, int32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int16_t, int16_t, int64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int16_t, uint16_t, uint32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int16_t, uint16_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int16_t, uint16_t, int32_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int16_t, uint16_t, int64_t, ^, bit_xor)
+ 
+ DEF_BIT_CVT_0(int32_t, int32_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int32_t, int32_t, int64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int32_t, uint32_t, uint64_t, ^, bit_xor)
+ DEF_BIT_CVT_0(int32_t, uint32_t, int64_t, ^, bit_xor)
+ 
+ /* { dg-final { scan-tree-dump-not "_\[0-9]\+ = \\(u?int\[0-9]\+_t\\) _\[0-9]\+;\\s+return _\[0-9]\+;" "optimized" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.h gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.h
*** gcc-16-20251116/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/tree-ssa/bit_op_cvt.h	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,13 ----
+ #ifndef HAVE_DEFINED_BIT_OP_CVT
+ #define HAVE_DEFINED_BIT_OP_CVT
+ 
+ #include <stdint.h>
+ 
+ #define DEF_BIT_CVT_0(T1, T2, T3, OP, NAME) \
+ T1 test_bit_##NAME##_##T1##_##T2##_##T3##_0(T2 a, \
+ 					    T3 b) \
+ { \
+   return (T1)(a OP (T3)b); \
+ }
+ 
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr122573.c gcc-16-20251123/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr122573.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr122573.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr122573.c	Sun Nov 23 22:32:17 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-march=znver5" } */
+ 
+ struct S {
+     float m_col1[4];
+     float m_col2[4];
+     float m_col3[4];
+     float m_col4[4];
+ };
+ 
+ void apply(struct S *s, const float *in, float *out, long numPixels)
+ {
+   for (long idx = 0; idx < numPixels; ++idx)
+     {
+       const float r = in[0];
+       const float g = in[1];
+       const float b = in[2];
+       const float a = in[3];
+       out[0] = r*s->m_col1[0] + g*s->m_col2[0] + b*s->m_col3[0] + a*s->m_col4[0];
+       out[1] = r*s->m_col1[1] + g*s->m_col2[1] + b*s->m_col3[1] + a*s->m_col4[1];
+       out[2] = r*s->m_col1[2] + g*s->m_col2[2] + b*s->m_col3[2] + a*s->m_col4[2];
+       out[3] = r*s->m_col1[3] + g*s->m_col2[3] + b*s->m_col3[3] + a*s->m_col4[3];
+       in  += 4;
+       out += 4;
+     }
+ }
+ 
+ /* Check that we do not use a masked epilog but a SSE one with VF 1
+    (and possibly a AVX2 one as well).  */
+ /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using 16 byte vectors and unroll factor 1" "vect" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/vect/slp-9.c gcc-16-20251123/gcc/testsuite/gcc.dg/vect/slp-9.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/vect/slp-9.c	Sun Nov 16 22:33:58 2025
--- gcc-16-20251123/gcc/testsuite/gcc.dg/vect/slp-9.c	Sun Nov 23 22:32:18 2025
***************
*** 1,5 ****
  /* { dg-require-effective-target vect_int } */
- /* { dg-additional-options "-fno-early-inlining" } */
  
  #include <stdarg.h>
  #include "tree-vect.h"
--- 1,4 ----
*************** short Y[N] __attribute__ ((__aligned__(_
*** 11,17 ****
  int result[N];
  
  /* short->int widening-mult */
! int
  foo1(int len) {
    int i;
  
--- 10,16 ----
  int result[N];
  
  /* short->int widening-mult */
! int __attribute__((noipa))
  foo1(int len) {
    int i;
  
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/vect/slp-reduc-14.c gcc-16-20251123/gcc/testsuite/gcc.dg/vect/slp-reduc-14.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/vect/slp-reduc-14.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/vect/slp-reduc-14.c	Sun Nov 23 22:32:18 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "--param vect-epilogues-nomask=0" } */
+ 
+ void foo (int * __restrict sums, int *a, int *b, int n)
+ {
+   for (int i = 0; i < n; ++i)
+     {
+       sums[0] = sums[0] + a[2*i];
+       sums[1] = sums[1] + a[2*i+1];
+       sums[2] = sums[2] + b[2*i];
+       sums[3] = sums[3] + b[2*i+1];
+     }
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "SLP discovery of size 2 reduction group" 2 "vect" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-licm-hoist-1.c gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-licm-hoist-1.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-licm-hoist-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-licm-hoist-1.c	Sun Nov 23 22:32:19 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_float } */
+ /* { dg-additional-options "-fdump-tree-lim2-details -fdump-tree-vect-details" } */
+ 
+ /* Test vectorization of "self write" pattern: a[i] = a[0].
+    LICM should hoist a[0] by recognizing that even when i==0 causes
+    aliasing, the stored value equals the loaded value (via SSA).  */
+ 
+ #define N 32000
+ 
+ float a[N];
+ 
+ /* Should vectorize.  */
+ 
+ void
+ test_safe_hoist (void)
+ {
+   for (int i = 0; i < N; i++)
+     a[i] = a[0];
+ }
+ 
+ /* { dg-final { scan-tree-dump "loop vectorized" "vect" } } */
+ /* { dg-final { scan-tree-dump "independent \\(self write\\)" "lim2" } } */
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-licm-hoist-2.c gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-licm-hoist-2.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-licm-hoist-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-licm-hoist-2.c	Sun Nov 23 22:32:19 2025
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_float } */
+ /* { dg-additional-options "-fdump-tree-lim2-details -fdump-tree-vect-details" } */
+ 
+ /* Negative test: ensure we don't incorrectly hoist when
+    a store invalidates the loaded value.  */
+ 
+ #define N 32000
+ 
+ float a[N];
+ 
+ /* Should NOT hoist: a[0] = 5.0f breaks the SSA dependency.  */
+ 
+ void
+ test_unsafe_hoist (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       float x = a[0];
+       a[i] = x;
+       a[0] = 5.0f;
+     }
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "independent \\(constant-indexed load" "lim2" } } */
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-reduc-cond-add-1.c gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-reduc-cond-add-1.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-reduc-cond-add-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-reduc-cond-add-1.c	Sun Nov 23 22:32:19 2025
***************
*** 0 ****
--- 1,50 ----
+ #include "tree-vect.h"
+ 
+ char mask[128];
+ 
+ double __attribute__((noipa))
+ foo (double *a, int n)
+ {
+   double sum = 0.0;
+   for (int i = 0; i < n; ++i)
+     {
+       double val;
+       if (mask[i])
+         val = a[i];
+       else
+         val = -0.0;
+       sum = sum + val;
+     }
+   return sum;
+ }
+ 
+ double a[128];
+ 
+ int main()
+ {
+   check_vect ();
+ 
+ #pragma GCC novector
+   for (int i = 0; i < 128; ++i)
+     {
+       a[i] = (i * 7) % 15;
+       mask[i] = (i + 1) & 4;
+     }
+ 
+   double sum = foo (a, 87);
+   double sum2 = 0.0;
+ #pragma GCC novector
+   for (int i = 0; i < 87; ++i)
+     {
+       double val;
+       if (mask[i])
+         val = a[i];
+       else
+         val = -0.0;
+       sum2 = sum2 + val;
+     }
+ 
+   if (sum != sum2)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-simd-clone-22.c gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-simd-clone-22.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-simd-clone-22.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-simd-clone-22.c	Sun Nov 23 22:32:19 2025
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-require-effective-target vect_simd_clones } */
+ /* { dg-additional-options "-fopenmp-simd --param vect-partial-vector-usage=2" } */
+ /* { dg-additional-options "-mavx512f" { target avx512f_runtime } } */
+ /* { dg-add-options ieee } */
+ /* { dg-require-effective-target fenv_exceptions } */
+ /* { dg-additional-sources vect-simd-clone-22a.c linkonly } */
+ 
+ #include <fenv.h>
+ #include "tree-vect.h"
+ 
+ #pragma omp declare simd simdlen(16) inbranch
+ float __attribute__((const)) baz (float x, float y);
+ 
+ float a[1024];
+ int c[1024];
+ 
+ void __attribute__((noipa))
+ foo (int n, float * __restrict b)
+ {
+   for (int i = 0; i < n; ++i)
+     {
+       float aa = a[i];
+       float bb = b[i];
+       if (c[i] == 0)
+ 	aa = baz (aa, bb);
+       a[i] = aa;
+     }
+ }
+ 
+ float b[1024];
+ 
+ int main()
+ {
+   check_vect ();
+ 
+ #pragma GCC novector
+   for (int i = 0; i < 1020; ++i)
+     a[i] = b[i] = 2;
+   foo (1020, b);
+   if (fetestexcept (FE_DIVBYZERO) || fetestexcept (FE_INVALID))
+     abort ();
+ #pragma GCC novector
+   for (int i = 0; i < 1020; ++i)
+     if (a[i] != 1)
+       abort ();
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-simd-clone-22a.c gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-simd-clone-22a.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-simd-clone-22a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-simd-clone-22a.c	Sun Nov 23 22:32:19 2025
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ 
+ #pragma omp declare simd simdlen(16) inbranch
+ float baz (float x, float y)
+ {
+   return x / y;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-simd-clone-23.c gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-simd-clone-23.c
*** gcc-16-20251116/gcc/testsuite/gcc.dg/vect/vect-simd-clone-23.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.dg/vect/vect-simd-clone-23.c	Sun Nov 23 22:32:19 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target vect_simd_clones } */
+ /* { dg-additional-options "-fopenmp-simd" } */
+ /* { dg-additional-options "-mavx512bw" { target avx512bw } } */
+ 
+ #pragma omp declare simd simdlen(32) inbranch
+ int __attribute__((const)) baz (int x);
+ 
+ short a[1024];
+ 
+ void __attribute__((noipa))
+ foo (int n, int * __restrict b)
+ {
+   for (int i = 0; i < n; ++i)
+     if (a[i])
+       b[i] = baz (b[i]);
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/pr122763.c gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/pr122763.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/pr122763.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/pr122763.c	Sun Nov 23 22:32:19 2025
***************
*** 0 ****
--- 1,75 ----
+ /* { dg-do compile } */
+ /* { dg-options "-std=gnu99 " } */
+ /* { dg-additional-options "-O -fno-schedule-insns -fno-schedule-insns2 " } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ /* { dg-skip-if "" { *-*-mingw* } } */
+ 
+ typedef struct es {} Empty;
+ 
+ __attribute__ ((__noinline__)) void
+ aarchpcs_overflow (int, int, int, int, int, int, int, int, Empty);
+ 
+ /*
+ **aarchpcs_overflow_call:
+ **	...
+ **	mov	w7, 7
+ **	mov	w6, 6
+ **	mov	w5, 5
+ **	mov	w4, 4
+ **	mov	w3, 3
+ **	mov	w2, 2
+ **	mov	w1, 1
+ **	mov	w0, 0
+ **	bl	aarchpcs_overflow 
+ **	...
+ */
+ 
+ void
+ aarchpcs_overflow_call (void)
+ {
+   Empty e;
+   aarchpcs_overflow (0, 1, 2, 3, 4, 5, 6, 7, e);
+ }
+ 
+ __attribute__ ((__noinline__, preserve_none)) void
+ preserve_none_overflow (int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, Empty);
+ 
+ /*
+ **preserve_none_overflow_call:
+ **	...
+ **	mov	w15, 23
+ **	mov	w9, 22
+ **	mov	w14, 21
+ **	mov	w13, 20
+ **	mov	w12, 19
+ **	mov	w11, 18
+ **	mov	w10, 17
+ **	mov	w7, 16
+ **	mov	w6, 15
+ **	mov	w5, 14
+ **	mov	w4, 13
+ **	mov	w3, 12
+ **	mov	w2, 11
+ **	mov	w1, 10
+ **	mov	w0, 9
+ **	mov	w28, 8
+ **	mov	w27, 7
+ **	mov	w26, 6
+ **	mov	w25, 5
+ **	mov	w24, 4
+ **	mov	w23, 3
+ **	mov	w22, 2
+ **	mov	w21, 1
+ **	mov	w20, 0
+ **	...
+ **	bl	preserve_none_overflow 
+ **	...
+ */
+ 
+ __attribute__ ((preserve_none)) void
+ preserve_none_overflow_call (void)
+ {
+   Empty e;
+   preserve_none_overflow(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, e);
+ }
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c	Sun Nov 16 22:34:01 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/simd/fold_to_highpart_6.c	Sun Nov 23 22:32:19 2025
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target aarch64_little_endian } */
  /* { dg-options "-O2 -march=armv8-a+sve" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
  
  #include <arm_neon_sve_bridge.h>
  
*************** test_addressable ()
*** 16,21 ****
--- 17,27 ----
    return vmovl_s8 (vget_high_s8 (z));
  }
  
+ /*
+ ** test_scalable_type:
+ **	sxtl2	v0.8h, v0.16b
+ **	ret
+ */
  int16x8_t
  test_scalable_type (svint8_t scalable)
  {
*************** test_256b_type (int16x16_t foo)
*** 34,37 ****
    return vmovl_s16 ((int16x4_t) { foo[4], foo[5], foo[6], foo[7] });
  }
  
! /* { dg-final { scan-assembler-not {sxtl2\t} } } */
--- 40,44 ----
    return vmovl_s16 ((int16x4_t) { foo[4], foo[5], foo[6], foo[7] });
  }
  
! /* { dg-final { scan-assembler-times {sxtl2\t} 1 } } */
! /* { dg-final { scan-assembler-times {sxtl\t} 3 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/simd/usubl2.c gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/simd/usubl2.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/simd/usubl2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/simd/usubl2.c	Sun Nov 23 22:32:19 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ #include <arm_neon.h>
+ 
+ void foo(int16_t *dst, const uint8_t *src0, const uint8_t *src1)
+ {
+   uint8x16_t s0 = vld1q_u8 (src0);
+   uint8x16_t s1 = vld1q_u8 (src1);
+ 
+   uint16x8_t d0_lo = vsubl_u8 (vget_low_u8 (s0), vget_low_u8 (s1));
+   uint16x8_t d0_hi = vsubl_u8 (vget_high_u8 (s0), vget_high_u8 (s1));
+     
+   vst1q_s16 (dst, vreinterpretq_s16_u16 (d0_lo));
+   vst1q_s16 (dst + 8, vreinterpretq_s16_u16 (d0_hi));
+ }
+ 
+ /* { dg-final { scan-assembler "usubl\tv\[0-9\]+\.8h,\ v\[0-9\]+\.8b,\ v\[0-9\]+\.8b" } } */
+ /* { dg-final { scan-assembler "usubl2\tv\[0-9\]+\.8h,\ v\[0-9\]+\.16b,\ v\[0-9\]+\.16b" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_1.c gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_1.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_1.c	Sun Nov 23 22:32:20 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O1" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include <arm_neon.h>
+ #include <arm_neon_sve_bridge.h>
+ #include <stdint.h>
+ 
+ /*
+ ** sub_neon_i16_sve_bridged:
+ **	ssubl2	v0.8h, v0.16b, v1.16b
+ **	ret
+ */
+ svint16_t sub_neon_i16_sve_bridged(svint8_t a, svint8_t b) {
+     return svset_neonq_s16(svundef_s16(),
+             vsubq_s16(vmovl_high_s8(svget_neonq(a)),
+                       vmovl_high_s8(svget_neonq(b))));
+ }
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_2.c gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_2.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/aarch64/sve/fold_to_highpart_2.c	Sun Nov 23 22:32:20 2025
***************
*** 0 ****
--- 1,295 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O1" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include <arm_neon.h>
+ #include <arm_sve.h>
+ #include <arm_neon_sve_bridge.h>
+ 
+ // ============================================================================
+ // 8 -> 16 : SIGNED
+ // ============================================================================
+ 
+ /* 
+ ** add_neon_i16_from_i8_low_sve_bridged:
+ ** 	saddl	v0.8h, v0.8b, v1.8b
+ ** 	ret
+ */
+ svint16_t add_neon_i16_from_i8_low_sve_bridged(svint8_t a, svint8_t b) {
+     int16x8_t ar = vmovl_s8(vget_low_s8(svget_neonq(a)));
+     int16x8_t br = vmovl_s8(vget_low_s8(svget_neonq(b)));
+     return svset_neonq_s16(svundef_s16(), vaddq_s16(ar, br));
+ }
+ 
+ /*
+ ** add_neon_i16_from_i8_high_sve_bridged:
+ ** 	saddl2	v0.8h, v0.16b, v1.16b
+ ** 	ret
+ */
+ svint16_t add_neon_i16_from_i8_high_sve_bridged(svint8_t a, svint8_t b) {
+     int16x8_t ar = vmovl_s8(vget_high_s8(svget_neonq(a)));
+     int16x8_t br = vmovl_s8(vget_high_s8(svget_neonq(b)));
+     return svset_neonq_s16(svundef_s16(), vaddq_s16(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_i16_from_i8_low_sve_bridged:
+ ** 	ssubl	v0.8h, v0.8b, v1.8b
+ ** 	ret
+ */
+ svint16_t sub_neon_i16_from_i8_low_sve_bridged(svint8_t a, svint8_t b) {
+     int16x8_t ar = vmovl_s8(vget_low_s8(svget_neonq(a)));
+     int16x8_t br = vmovl_s8(vget_low_s8(svget_neonq(b)));
+     return svset_neonq_s16(svundef_s16(), vsubq_s16(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_i16_from_i8_high_sve_bridged:
+ ** 	ssubl2	v0.8h, v0.16b, v1.16b
+ ** 	ret
+ */
+ svint16_t sub_neon_i16_from_i8_high_sve_bridged(svint8_t a, svint8_t b) {
+     int16x8_t ar = vmovl_s8(vget_high_s8(svget_neonq(a)));
+     int16x8_t br = vmovl_s8(vget_high_s8(svget_neonq(b)));
+     return svset_neonq_s16(svundef_s16(), vsubq_s16(ar, br));
+ }
+ 
+ // ============================================================================
+ // 8 -> 16 : UNSIGNED
+ // ============================================================================
+ 
+ /*
+ ** add_neon_u16_from_u8_low_sve_bridged:
+ ** 	uaddl	v0.8h, v0.8b, v1.8b
+ ** 	ret
+ */
+ svuint16_t add_neon_u16_from_u8_low_sve_bridged(svuint8_t a, svuint8_t b) {
+     uint16x8_t ar = vmovl_u8(vget_low_u8(svget_neonq(a)));
+     uint16x8_t br = vmovl_u8(vget_low_u8(svget_neonq(b)));
+     return svset_neonq_u16(svundef_u16(), vaddq_u16(ar, br));
+ }
+ 
+ /*
+ ** add_neon_u16_from_u8_high_sve_bridged:
+ ** 	uaddl2	v0.8h, v0.16b, v1.16b
+ ** 	ret
+ */
+ svuint16_t add_neon_u16_from_u8_high_sve_bridged(svuint8_t a, svuint8_t b) {
+     uint16x8_t ar = vmovl_u8(vget_high_u8(svget_neonq(a)));
+     uint16x8_t br = vmovl_u8(vget_high_u8(svget_neonq(b)));
+     return svset_neonq_u16(svundef_u16(), vaddq_u16(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_u16_from_u8_low_sve_bridged:
+ ** 	usubl	v0.8h, v0.8b, v1.8b
+ ** 	ret
+ */
+ svuint16_t sub_neon_u16_from_u8_low_sve_bridged(svuint8_t a, svuint8_t b) {
+     uint16x8_t ar = vmovl_u8(vget_low_u8(svget_neonq(a)));
+     uint16x8_t br = vmovl_u8(vget_low_u8(svget_neonq(b)));
+     return svset_neonq_u16(svundef_u16(), vsubq_u16(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_u16_from_u8_high_sve_bridged:
+ ** 	usubl2	v0.8h, v0.16b, v1.16b
+ ** 	ret
+ */
+ svuint16_t sub_neon_u16_from_u8_high_sve_bridged(svuint8_t a, svuint8_t b) {
+     uint16x8_t ar = vmovl_u8(vget_high_u8(svget_neonq(a)));
+     uint16x8_t br = vmovl_u8(vget_high_u8(svget_neonq(b)));
+     return svset_neonq_u16(svundef_u16(), vsubq_u16(ar, br));
+ }
+ 
+ // ============================================================================
+ // 16 -> 32 : SIGNED
+ // ============================================================================
+ 
+ /*
+ ** add_neon_i32_from_i16_low_sve_bridged:
+ ** 	saddl	v0.4s, v0.4h, v1.4h
+ ** 	ret
+ */
+ svint32_t add_neon_i32_from_i16_low_sve_bridged(svint16_t a, svint16_t b) {
+     int32x4_t ar = vmovl_s16(vget_low_s16(svget_neonq(a)));
+     int32x4_t br = vmovl_s16(vget_low_s16(svget_neonq(b)));
+     return svset_neonq_s32(svundef_s32(), vaddq_s32(ar, br));
+ }
+ 
+ /*
+ ** add_neon_i32_from_i16_high_sve_bridged:
+ ** 	saddl2	v0.4s, v0.8h, v1.8h
+ ** 	ret
+ */
+ svint32_t add_neon_i32_from_i16_high_sve_bridged(svint16_t a, svint16_t b) {
+     int32x4_t ar = vmovl_s16(vget_high_s16(svget_neonq(a)));
+     int32x4_t br = vmovl_s16(vget_high_s16(svget_neonq(b)));
+     return svset_neonq_s32(svundef_s32(), vaddq_s32(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_i32_from_i16_low_sve_bridged:
+ ** 	ssubl	v0.4s, v0.4h, v1.4h
+ ** 	ret
+ */
+ svint32_t sub_neon_i32_from_i16_low_sve_bridged(svint16_t a, svint16_t b) {
+     int32x4_t ar = vmovl_s16(vget_low_s16(svget_neonq(a)));
+     int32x4_t br = vmovl_s16(vget_low_s16(svget_neonq(b)));
+     return svset_neonq_s32(svundef_s32(), vsubq_s32(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_i32_from_i16_high_sve_bridged:
+ ** 	ssubl2	v0.4s, v0.8h, v1.8h
+ ** 	ret
+ */
+ svint32_t sub_neon_i32_from_i16_high_sve_bridged(svint16_t a, svint16_t b) {
+     int32x4_t ar = vmovl_s16(vget_high_s16(svget_neonq(a)));
+     int32x4_t br = vmovl_s16(vget_high_s16(svget_neonq(b)));
+     return svset_neonq_s32(svundef_s32(), vsubq_s32(ar, br));
+ }
+ 
+ // ============================================================================
+ // 16 -> 32 : UNSIGNED
+ // ============================================================================
+ 
+ /*
+ ** add_neon_u32_from_u16_low_sve_bridged:
+ ** 	uaddl	v0.4s, v0.4h, v1.4h
+ ** 	ret
+ */
+ svuint32_t add_neon_u32_from_u16_low_sve_bridged(svuint16_t a, svuint16_t b) {
+     uint32x4_t ar = vmovl_u16(vget_low_u16(svget_neonq(a)));
+     uint32x4_t br = vmovl_u16(vget_low_u16(svget_neonq(b)));
+     return svset_neonq_u32(svundef_u32(), vaddq_u32(ar, br));
+ }
+ 
+ /*
+ ** add_neon_u32_from_u16_high_sve_bridged:
+ ** 	uaddl2	v0.4s, v0.8h, v1.8h
+ ** 	ret
+ */
+ svuint32_t add_neon_u32_from_u16_high_sve_bridged(svuint16_t a, svuint16_t b) {
+     uint32x4_t ar = vmovl_u16(vget_high_u16(svget_neonq(a)));
+     uint32x4_t br = vmovl_u16(vget_high_u16(svget_neonq(b)));
+     return svset_neonq_u32(svundef_u32(), vaddq_u32(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_u32_from_u16_low_sve_bridged:
+ ** 	usubl	v0.4s, v0.4h, v1.4h
+ ** 	ret
+ */
+ svuint32_t sub_neon_u32_from_u16_low_sve_bridged(svuint16_t a, svuint16_t b) {
+     uint32x4_t ar = vmovl_u16(vget_low_u16(svget_neonq(a)));
+     uint32x4_t br = vmovl_u16(vget_low_u16(svget_neonq(b)));
+     return svset_neonq_u32(svundef_u32(), vsubq_u32(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_u32_from_u16_high_sve_bridged:
+ ** 	usubl2	v0.4s, v0.8h, v1.8h
+ ** 	ret
+ */
+ svuint32_t sub_neon_u32_from_u16_high_sve_bridged(svuint16_t a, svuint16_t b) {
+     uint32x4_t ar = vmovl_u16(vget_high_u16(svget_neonq(a)));
+     uint32x4_t br = vmovl_u16(vget_high_u16(svget_neonq(b)));
+     return svset_neonq_u32(svundef_u32(), vsubq_u32(ar, br));
+ }
+ 
+ // ============================================================================
+ // 32 -> 64 : SIGNED
+ // ============================================================================
+ 
+ /*
+ ** add_neon_i64_from_i32_low_sve_bridged:
+ ** 	saddl	v0.2d, v0.2s, v1.2s
+ ** 	ret
+ */
+ svint64_t add_neon_i64_from_i32_low_sve_bridged(svint32_t a, svint32_t b) {
+     int64x2_t ar = vmovl_s32(vget_low_s32(svget_neonq(a)));
+     int64x2_t br = vmovl_s32(vget_low_s32(svget_neonq(b)));
+     return svset_neonq_s64(svundef_s64(), vaddq_s64(ar, br));
+ }
+ 
+ /*
+ ** add_neon_i64_from_i32_high_sve_bridged:
+ ** 	saddl2	v0.2d, v0.4s, v1.4s
+ ** 	ret
+ */
+ svint64_t add_neon_i64_from_i32_high_sve_bridged(svint32_t a, svint32_t b) {
+     int64x2_t ar = vmovl_s32(vget_high_s32(svget_neonq(a)));
+     int64x2_t br = vmovl_s32(vget_high_s32(svget_neonq(b)));
+     return svset_neonq_s64(svundef_s64(), vaddq_s64(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_i64_from_i32_low_sve_bridged:
+ ** 	ssubl	v0.2d, v0.2s, v1.2s
+ ** 	ret
+ */
+ svint64_t sub_neon_i64_from_i32_low_sve_bridged(svint32_t a, svint32_t b) {
+     int64x2_t ar = vmovl_s32(vget_low_s32(svget_neonq(a)));
+     int64x2_t br = vmovl_s32(vget_low_s32(svget_neonq(b)));
+     return svset_neonq_s64(svundef_s64(), vsubq_s64(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_i64_from_i32_high_sve_bridged:
+ ** 	ssubl2	v0.2d, v0.4s, v1.4s
+ ** 	ret
+ */
+ svint64_t sub_neon_i64_from_i32_high_sve_bridged(svint32_t a, svint32_t b) {
+     int64x2_t ar = vmovl_s32(vget_high_s32(svget_neonq(a)));
+     int64x2_t br = vmovl_s32(vget_high_s32(svget_neonq(b)));
+     return svset_neonq_s64(svundef_s64(), vsubq_s64(ar, br));
+ }
+ 
+ // ============================================================================
+ // 32 -> 64 : UNSIGNED
+ // ============================================================================
+ 
+ /*
+ ** add_neon_u64_from_u32_low_sve_bridged:
+ ** 	uaddl	v0.2d, v0.2s, v1.2s
+ ** 	ret
+ */
+ svuint64_t add_neon_u64_from_u32_low_sve_bridged(svuint32_t a, svuint32_t b) {
+     uint64x2_t ar = vmovl_u32(vget_low_u32(svget_neonq(a)));
+     uint64x2_t br = vmovl_u32(vget_low_u32(svget_neonq(b)));
+     return svset_neonq_u64(svundef_u64(), vaddq_u64(ar, br));
+ }
+ 
+ /*
+ ** add_neon_u64_from_u32_high_sve_bridged:
+ ** 	uaddl2	v0.2d, v0.4s, v1.4s
+ ** 	ret
+ */
+ svuint64_t add_neon_u64_from_u32_high_sve_bridged(svuint32_t a, svuint32_t b) {
+     uint64x2_t ar = vmovl_u32(vget_high_u32(svget_neonq(a)));
+     uint64x2_t br = vmovl_u32(vget_high_u32(svget_neonq(b)));
+     return svset_neonq_u64(svundef_u64(), vaddq_u64(ar, br));
+ }
+ 
+ /*
+ ** sub_neon_u64_from_u32_low_sve_bridged:
+ ** 	usubl	v0.2d, v0.2s, v1.2s
+ ** 	ret
+ */
+ svuint64_t sub_neon_u64_from_u32_low_sve_bridged(svuint32_t a, svuint32_t b) {
+     uint64x2_t ar = vmovl_u32(vget_low_u32(svget_neonq(a)));
+     uint64x2_t br = vmovl_u32(vget_low_u32(svget_neonq(b)));
+     return svset_neonq_u64(svundef_u64(), vsubq_u64(ar, br));
+ }
+ 
+ /* 
+ ** sub_neon_u64_from_u32_high_sve_bridged:
+ ** 	usubl2	v0.2d, v0.4s, v1.4s
+ ** 	ret
+ */
+ svuint64_t sub_neon_u64_from_u32_high_sve_bridged(svuint32_t a, svuint32_t b) {
+     uint64x2_t ar = vmovl_u32(vget_high_u32(svget_neonq(a)));
+     uint64x2_t br = vmovl_u32(vget_high_u32(svget_neonq(b)));
+     return svset_neonq_u64(svundef_u64(), vsubq_u64(ar, br));
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arc/extvsi-3.c gcc-16-20251123/gcc/testsuite/gcc.target/arc/extvsi-3.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arc/extvsi-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arc/extvsi-3.c	Sun Nov 23 22:32:20 2025
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-skip-if "avoid conflicts with -mcpu options" { *-*-* } { "-mcpu=*" } { "-mcpu=em" } } */
+ /* { dg-options "-O2 -mcpu=em" } */
+ struct S { int a : 5; };
+ 
+ /* An extra parameter is added to ensure a different register is used for input and output. */
+ int foo (int unused, struct S p)
+ {
+   return p.a;
+ }
+ 
+ /* { dg-final { scan-assembler "and\\s+r0,r1,31" } } */
+ /* { dg-final { scan-assembler "xor\\s+r0,r0,16" } } */
+ /* { dg-final { scan-assembler "sub\\s+r0,r0,16" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arc/no-barrel-shifter.c gcc-16-20251123/gcc/testsuite/gcc.target/arc/no-barrel-shifter.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arc/no-barrel-shifter.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arc/no-barrel-shifter.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-skip-if "" { { barrelshifter } } } */
+ int fromfloat(float fx);
+ 
+ float foo(float fx)
+ {
+   int x = fromfloat(fx);
+   int sign = (x >> 31) & 1;
+   unsigned int mag = x & 0x7fffffff;
+ 
+   if (mag > 0x7f800000)
+     return fx;
+   if (mag == 0x7f800000)
+     return (sign == 0);
+   return fx * (27 + sign);
+ }
+ 
+ /* { dg-final { scan-assembler-not "add.f\\s\+\[0-9\]\+,r\[0-9\]\+,r\[0-9\]\+\\n\\s\+beq.d" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/fp16-compile-none-1.c	Thu Jan  1 00:00:00 1970
***************
*** 1,7 ****
- /* { dg-do compile } */
- /* { dg-require-effective-target arm_fp16_none_ok } */
- /* { dg-options "-mfp16-format=none" } */
- 
- /* __fp16 type name is not recognized unless you explicitly enable it
-    by selecting -mfp16-format=ieee or -mfp16-format=alternative.  */
- __fp16 xx = 0.0;  /* { dg-error "unknown type name" } */
--- 0 ----
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f16.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f16.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,30 ----
+ /* Check that we can compile if the target does not support floating-point, but
+    we use a pragma to enable FP support locally.  */
+ 
+ /* { dg-require-effective-target arm_v8_1m_mve_nofp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_nofp } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ #pragma GCC target ("arch=armv8.1-m.main+mve.fp")
+ 
+ /*
+ **foo:
+ **	...
+ **	vldrh.16	q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?:	@.*|) 
+ **	...
+ */
+ float16x8_t
+ foo (float16_t const *base)
+ {
+   return vld1q_f16 (base);
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f32.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-2-f32.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,30 ----
+ /* Check that we can compile if the target does not support floating-point, but
+    we use a pragma to enable FP support locally.  */
+ 
+ /* { dg-require-effective-target arm_v8_1m_mve_nofp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_nofp } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ #pragma GCC target ("arch=armv8.1-m.main+mve.fp")
+ 
+ /*
+ **foo:
+ **	...
+ **	vldrw.32	q[0-9]+, \[(?:ip|fp|r[0-9]+)\](?:	@.*|)
+ **	...
+ */
+ float32x4_t
+ foo (float32_t const *base)
+ {
+   return vld1q_f32 (base);
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f16.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f16.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,21 ----
+ /* Check that we can compile if the target supports floating-point.  */
+ 
+ /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_fp } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ float16x8_t
+ foo (float16_t const *base)
+ {
+   return vld1q_f16 (base);
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f32.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-3-f32.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,21 ----
+ /* Check that we can compile if the target supports floating-point.  */
+ 
+ /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_fp } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ float32x4_t
+ foo (float32_t const *base)
+ {
+   return vld1q_f32 (base);
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-4-f16.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-4-f16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-4-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-4-f16.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,23 ----
+ /* Check that -mfp16-format=none works.  */
+ 
+ /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_fp } */
+ /* { dg-additional-options "-O2 -mfp16-format=none" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ float16x8_t
+ foo (float16_t const *base)
+ {
+   return vld1q_f16 (base);
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
+ 
+ /* { dg-final { scan-assembler-not {eabi_attribute 38,} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f16.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f16.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,22 ----
+ /* Check that we get an error if the target does not support floating-point: we
+    force +mve to cancel a possible implicit +mve.fp.  */
+ 
+ /* { dg-require-effective-target arm_v8_1m_mve_nofp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_nofp } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ float16x8_t
+ foo (float16_t const *base)
+ {
+   return vld1q_f16 (base);  /* { dg-error {ACLE function '.*vld1q_f16.*' requires ISA extension 'mve.fp'} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f32.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr117814-f32.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,22 ----
+ /* Check that we get an error if the target does not support floating-point: we
+    force +mve to cancel a possible implicit +mve.fp.  */
+ 
+ /* { dg-require-effective-target arm_v8_1m_mve_nofp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_nofp } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ float32x4_t
+ foo (float32_t const *base)
+ {
+   return vld1q_f32 (base);  /* { dg-error {ACLE function '.*vld1q_f32.*' requires ISA extension 'mve.fp'} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c	Sun Nov 23 22:32:21 2025
***************
*** 1,4 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
  /* { dg-add-options arm_v8_1m_mve_fp } */
  /* { dg-additional-options "-O2" } */
--- 1,3 ----
***************
*** 6,11 ****
--- 5,14 ----
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  float16_t
  foo (float16x8_t a)
  {
*************** foo1 (float16x8_t a)
*** 45,47 ****
--- 48,54 ----
  ** )
  **	bx\tlr
  */
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c	Sun Nov 23 22:32:21 2025
***************
*** 1,4 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
  /* { dg-add-options arm_v8_1m_mve_fp } */
  /* { dg-additional-options "-O2" } */
--- 1,3 ----
***************
*** 6,11 ****
--- 5,14 ----
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  float32_t
  foo (float32x4_t a)
  {
*************** foo1 (float32x4_t a)
*** 45,47 ****
--- 48,54 ----
  ** )
  **	bx\tlr
  */
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c	Sun Nov 23 22:32:21 2025
***************
*** 1,4 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
--- 1,3 ----
***************
*** 6,11 ****
--- 5,14 ----
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  int16_t
  foo (int16x8_t a)
  {
*************** foo1 (int16x8_t a)
*** 43,45 ****
--- 46,52 ----
  ** )
  **	bx\tlr
  */
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c	Sun Nov 23 22:32:21 2025
***************
*** 1,4 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
--- 1,3 ----
***************
*** 6,11 ****
--- 5,14 ----
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  int32_t
  foo (int32x4_t a)
  {
*************** foo1 (int32x4_t a)
*** 43,45 ****
--- 46,52 ----
  ** )
  **	bx\tlr
  */
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c	Sun Nov 23 22:32:21 2025
***************
*** 1,23 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
- /* { dg-require-effective-target arm_hard_ok } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
! /* { dg-additional-options "-mfloat-abi=hard -O2" } */
  
  #include "arm_mve.h"
  
  int64_t
  foo (int64x2_t a)
  {
    return vgetq_lane_s64 (a, 0);
  }
! 
! /* { dg-final { scan-assembler {vmov\tr0, r1, d0}  }  } */
  
  int64_t
  foo1 (int64x2_t a)
  {
    return vgetq_lane (a, 0);
  }
  
! /* { dg-final { scan-assembler {vmov\tr0, r1, d0}  }  } */
--- 1,48 ----
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
! /* { dg-additional-options "-O2" } */
! /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  int64_t
  foo (int64x2_t a)
  {
    return vgetq_lane_s64 (a, 0);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! 	no operation needed
! ** |
! 	-mfloat-abi=hard
! **	vmov\tr0, r1, d0\t@ int
! ** )
! **	bx\tlr
! */
  
  int64_t
  foo1 (int64x2_t a)
  {
    return vgetq_lane (a, 0);
  }
+ /*
+ ** foo1:
+ ** (
+ 	-mfloat-abi=softfp
+ 	no operation needed
+ ** |
+ 	-mfloat-abi=hard
+ **	vmov\tr0, r1, d0\t@ int
+ ** )
+ **	bx\tlr
+ */
  
! #ifdef __cplusplus
! }
! #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c	Sun Nov 23 22:32:21 2025
***************
*** 1,4 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
--- 1,3 ----
***************
*** 6,11 ****
--- 5,14 ----
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  int8_t
  foo (int8x16_t a)
  {
*************** foo1 (int8x16_t a)
*** 43,45 ****
--- 46,52 ----
  ** )
  **	bx\tlr
  */
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c	Sun Nov 23 22:32:21 2025
***************
*** 1,4 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
--- 1,3 ----
***************
*** 6,11 ****
--- 5,14 ----
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  uint16_t
  foo (uint16x8_t a)
  {
*************** foo1 (uint16x8_t a)
*** 43,45 ****
--- 46,52 ----
  ** )
  **	bx\tlr
  */
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c	Sun Nov 23 22:32:21 2025
***************
*** 1,4 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
--- 1,3 ----
***************
*** 6,11 ****
--- 5,14 ----
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  uint32_t
  foo (uint32x4_t a)
  {
*************** foo1 (uint32x4_t a)
*** 43,45 ****
--- 46,52 ----
  ** )
  **	bx\tlr
  */
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c	Sun Nov 23 22:32:21 2025
***************
*** 1,23 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
- /* { dg-require-effective-target arm_hard_ok } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
! /* { dg-additional-options "-mfloat-abi=hard -O2" } */
  
  #include "arm_mve.h"
  
  uint64_t
  foo (uint64x2_t a)
  {
    return vgetq_lane_u64 (a, 0);
  }
! 
! /* { dg-final { scan-assembler {vmov\tr0, r1, d0}  }  } */
  
  uint64_t
  foo1 (uint64x2_t a)
  {
    return vgetq_lane (a, 0);
  }
  
! /* { dg-final { scan-assembler {vmov\tr0, r1, d0}  }  } */
--- 1,48 ----
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
! /* { dg-additional-options "-O2" } */
! /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  uint64_t
  foo (uint64x2_t a)
  {
    return vgetq_lane_u64 (a, 0);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! 	no operation needed
! ** |
! 	-mfloat-abi=hard
! **	vmov\tr0, r1, d0\t@ int
! ** )
! **	bx\tlr
! */
  
  uint64_t
  foo1 (uint64x2_t a)
  {
    return vgetq_lane (a, 0);
  }
+ /*
+ ** foo1:
+ ** (
+ 	-mfloat-abi=softfp
+ 	no operation needed
+ ** |
+ 	-mfloat-abi=hard
+ **	vmov\tr0, r1, d0\t@ int
+ ** )
+ **	bx\tlr
+ */
  
! #ifdef __cplusplus
! }
! #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c	Sun Nov 16 22:34:07 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c	Sun Nov 23 22:32:21 2025
***************
*** 1,4 ****
- /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=soft" } {""} } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
--- 1,3 ----
***************
*** 6,11 ****
--- 5,14 ----
  
  #include "arm_mve.h"
  
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
  uint8_t
  foo (uint8x16_t a)
  {
*************** foo1 (uint8x16_t a)
*** 43,45 ****
--- 46,52 ----
  ** )
  **	bx\tlr
  */
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_fp } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ float16x8_t
+ foo (float16_t a, float16x8_t b)
+ {
+   return vsetq_lane_f16 (a, b, 9); /* { dg-error {passing 9 to argument 3 of 'vsetq_lane_f16', which expects a value in the range \[0, 7\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_fp } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ float32x4_t
+ foo (float32_t a, float32x4_t b)
+ {
+   return vsetq_lane_f32 (a, b, 4); /* { dg-error {passing 4 to argument 3 of 'vsetq_lane_f32', which expects a value in the range \[0, 3\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ int16x8_t
+ foo (int16_t a, int16x8_t b)
+ {
+   return vsetq_lane_s16 (a, b, 9); /* { dg-error {passing 9 to argument 3 of 'vsetq_lane_s16', which expects a value in the range \[0, 7\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ int32x4_t
+ foo (int32_t a, int32x4_t b)
+ {
+   return vsetq_lane_s32 (a, b, 4); /* { dg-error {passing 4 to argument 3 of 'vsetq_lane_s32', which expects a value in the range \[0, 3\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ int64x2_t
+ foo (int64_t a, int64x2_t b)
+ {
+   return vsetq_lane_s64 (a, b, 2); /* { dg-error {passing 2 to argument 3 of 'vsetq_lane_s64', which expects a value in the range \[0, 1\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ int8x16_t
+ foo (int8_t a, int8x16_t b)
+ {
+   return vsetq_lane_s8 (a, b, 17); /* { dg-error {passing 17 to argument 3 of 'vsetq_lane_s8', which expects a value in the range \[0, 15\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ uint16x8_t
+ foo (uint16_t a, uint16x8_t b)
+ {
+   return vsetq_lane_u16 (a, b, 8); /* { dg-error {passing 8 to argument 3 of 'vsetq_lane_u16', which expects a value in the range \[0, 7\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ uint32x4_t
+ foo (uint32_t a, uint32x4_t b)
+ {
+   return vsetq_lane_u32 (a, b, 4); /* { dg-error {passing 4 to argument 3 of 'vsetq_lane_u32', which expects a value in the range \[0, 3\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ uint64x2_t
+ foo (uint64_t a, uint64x2_t b)
+ {
+   return vsetq_lane_u64 (a, b, 2); /* { dg-error {passing 2 to argument 3 of 'vsetq_lane_u64', which expects a value in the range \[0, 1\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8_bounds.c gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8_bounds.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8_bounds.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8_bounds.c	Sun Nov 23 22:32:21 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ /* { dg-additional-options "-O2" } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ uint8x16_t
+ foo (uint8_t a, uint8x16_t b)
+ {
+   return vsetq_lane_u8 (a, b, 17); /* { dg-error {passing 17 to argument 3 of 'vsetq_lane_u8', which expects a value in the range \[0, 15\]} } */
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/i386/avx512vl-pr103750-2.c gcc-16-20251123/gcc/testsuite/gcc.target/i386/avx512vl-pr103750-2.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/i386/avx512vl-pr103750-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/i386/avx512vl-pr103750-2.c	Sun Nov 23 22:32:22 2025
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=x86-64-v4 -mprefer-vector-width=128 -O3" } */
+ /* { dg-final { scan-assembler "kortest" } } */
+ /* { dg-final { scan-assembler-not "kmov" } } */
+ 
+ int
+ foo (int *__restrict a)
+ {
+   for (int i = 0; i != 100; i++)
+     if (a[i] == 0)
+       return 1;
+   return 0;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/i386/pr122598.c gcc-16-20251123/gcc/testsuite/gcc.target/i386/pr122598.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/i386/pr122598.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/i386/pr122598.c	Sun Nov 23 22:32:23 2025
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/122598 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mavx512f -mgfni" } */
+ 
+ typedef char V __attribute__ ((vector_size (64)));
+ 
+ V
+ foo (V v)
+ {
+   v >>= (V) {5};
+   v -= ~0;
+   v += (V) {} < v;
+   return v;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-10.c gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-10.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-10.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-10.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx512f -mprefer-vector-width=512 --param vect-partial-vector-usage=1 -fdump-tree-vect-optimized" } */
+ 
+ double foo (double *a, long long *mask, int n)
+ {
+   double sum = 0.0;
+   for (int i = 0; i < n; ++i)
+     {
+       double val;
+       if (mask[i])
+         val = a[i];
+       else
+         val = -0.0;
+       sum = sum + val;
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using masked 64 byte vectors" "vect" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-6.c gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-6.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-6.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx512vl -mavx512bw -mprefer-vector-width=512 --param vect-partial-vector-usage=0 -fdump-tree-vect-optimized" } */
+ 
+ double
+ foo (double *a, char *mask, int n)
+ {
+   double sum = 0.0;
+   for (int i = 0; i < n; ++i)
+     {
+       double val;
+       if (mask[i])
+         val = a[i];
+       else
+         val = -0.0;
+       sum = sum + val;
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using 32 byte vectors" "vect" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-7.c gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-7.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-7.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mavx512vl -mavx512bw -mprefer-vector-width=512 --param vect-partial-vector-usage=1 -fdump-tree-vect-optimized" } */
+ 
+ double
+ foo (double *a, char *mask, int n)
+ {
+   double sum = 0.0;
+   for (int i = 0; i < n; ++i)
+     {
+       double val;
+       if (mask[i])
+         val = a[i];
+       else
+         val = -0.0;
+       sum = sum + val;
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using masked 64 byte vectors" "vect" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-8.c gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-8.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast -mavx512vl -mavx512bw -mprefer-vector-width=512 --param vect-partial-vector-usage=0 -fdump-tree-vect-optimized" } */
+ 
+ double
+ foo (double *a, char *mask, int n)
+ {
+   double sum = 0.0;
+   for (int i = 0; i < n; ++i)
+     {
+       double val;
+       if (mask[i])
+         val = a[i];
+       else
+         val = -0.0;
+       sum = sum + val;
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using 32 byte vectors" "vect" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-9.c gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-9.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-epilogues-9.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-epilogues-9.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast -mavx512vl -mavx512bw -mprefer-vector-width=512 --param vect-partial-vector-usage=1 -fdump-tree-vect-optimized" } */
+ 
+ double
+ foo (double *a, char *mask, int n)
+ {
+   double sum = 0.0;
+   for (int i = 0; i < n; ++i)
+     {
+       double val;
+       if (mask[i])
+         val = a[i];
+       else
+         val = -0.0;
+       sum = sum + val;
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump "optimized: loop vectorized using 64 byte vectors" "vect" } } */
+ /* { dg-final { scan-tree-dump "optimized: epilogue loop vectorized using masked 64 byte vectors" "vect" } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-pr122736.c gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-pr122736.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/i386/vect-pr122736.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/i386/vect-pr122736.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fopenmp-simd -mavx512vl" } */
+ 
+ #pragma omp declare simd
+ double __attribute__((noinline))
+ baz (double x)
+ {
+   return x;
+ }
+ 
+ #pragma omp declare simd
+ double
+ foo (double d)
+ {
+   return baz (d);
+ }
+ 
+ double __attribute__((noipa))
+ fn (double x)
+ {
+   return foo (x);
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/bstrins-5.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/bstrins-5.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/bstrins-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/bstrins-5.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */
+ /* { dg-final { scan-assembler "foo:.*\tbstrins\\.w\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,31,1.*foo" } } */
+ /* { dg-final { scan-assembler "bar:.*\tbstrins\\.w\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,31,31.*bar" } } */
+ 
+ int foo (int a, int b)
+ {
+   return (a << 1) | (b & 1);
+ }
+ 
+ int bar (int a, int b)
+ {
+   return (a << 31) | (b & 0x7fffffff);
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/bstrins-6.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/bstrins-6.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/bstrins-6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/bstrins-6.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=loongarch64 -mabi=lp64d" } */
+ /* { dg-final { scan-assembler "foo:.*\tbstrins\\.d\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,63,1.*foo" } } */
+ /* { dg-final { scan-assembler "bar:.*\tbstrins\\.d\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,63,15.*bar" } } */
+ 
+ long foo (long a, long b)
+ {
+   return (a << 1) | (b & 1);
+ }
+ 
+ short bar (short a, short b)
+ {
+   return (a << 15) | (b & 0x7fff);
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/pr122695-1.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/pr122695-1.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/pr122695-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/pr122695-1.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -mlasx" } */
+ /* { dg-require-effective-target loongarch_asx_hw } */
+ 
+ [[gnu::vector_size (32)]] char a, b, c;
+ 
+ [[gnu::noipa]] void
+ test (void)
+ {
+   a = __builtin_shuffle (a, b, c);
+ }
+ 
+ int
+ main (void)
+ {
+   a = (typeof (a)){} + 5;
+   b = (typeof (a)){} + 6;
+   c = (typeof (a)){} + 64;
+   test ();
+   if (a[0] != 5)
+     __builtin_trap ();
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/pr122695-2.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/pr122695-2.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/pr122695-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/pr122695-2.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -mlasx" } */
+ /* { dg-require-effective-target loongarch_asx_hw } */
+ 
+ [[gnu::vector_size(32)]] short a, b, c;
+ 
+ [[gnu::noipa]] void
+ test (void)
+ {
+   a = __builtin_shuffle(a, b, c) + c;
+ }
+ 
+ int
+ main (void)
+ {
+   a = (typeof (a)){} + 1;
+   b = (typeof (b)){} + 2;
+   c = (typeof (c)){} + 128;
+   test ();
+   if (a[0] != 129)
+     __builtin_trap ();
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-builtin.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-builtin.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-builtin.c	Sun Nov 16 22:34:09 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-builtin.c	Sun Nov 23 22:32:24 2025
***************
*** 733,742 ****
  /* { dg-final { scan-assembler-times "lasx_xvfcmp_sun_s:.*xvfcmp\\.sun\\.s.*lasx_xvfcmp_sun_s" 1 } } */
  /* { dg-final { scan-assembler-times "lasx_xvpickve_d_f:.*xvpickve\\.d.*lasx_xvpickve_d_f" 1 } } */
  /* { dg-final { scan-assembler-times "lasx_xvpickve_w_f:.*xvpickve\\.w.*lasx_xvpickve_w_f" 1 } } */
! /* { dg-final { scan-assembler-times "lasx_xvrepli_b:.*xvrepli\\.b.*lasx_xvrepli_b" 1 } } */
! /* { dg-final { scan-assembler-times "lasx_xvrepli_d:.*xvrepli\\.d.*lasx_xvrepli_d" 1 } } */
! /* { dg-final { scan-assembler-times "lasx_xvrepli_h:.*xvrepli\\.h.*lasx_xvrepli_h" 1 } } */
! /* { dg-final { scan-assembler-times "lasx_xvrepli_w:.*xvrepli\\.w.*lasx_xvrepli_w" 1 } } */
  
  typedef signed char v32i8 __attribute__ ((vector_size (32), aligned (32)));
  typedef signed char v32i8_b __attribute__ ((vector_size (32), aligned (1)));
--- 733,742 ----
  /* { dg-final { scan-assembler-times "lasx_xvfcmp_sun_s:.*xvfcmp\\.sun\\.s.*lasx_xvfcmp_sun_s" 1 } } */
  /* { dg-final { scan-assembler-times "lasx_xvpickve_d_f:.*xvpickve\\.d.*lasx_xvpickve_d_f" 1 } } */
  /* { dg-final { scan-assembler-times "lasx_xvpickve_w_f:.*xvpickve\\.w.*lasx_xvpickve_w_f" 1 } } */
! /* { dg-final { scan-assembler-times "lasx_xvrepli_b:.*xvldi.*lasx_xvrepli_b" 1 } } */
! /* { dg-final { scan-assembler-times "lasx_xvrepli_d:.*xvldi.*lasx_xvrepli_d" 1 } } */
! /* { dg-final { scan-assembler-times "lasx_xvrepli_h:.*xvldi.*lasx_xvrepli_h" 1 } } */
! /* { dg-final { scan-assembler-times "lasx_xvrepli_w:.*xvldi.*lasx_xvrepli_w" 1 } } */
  
  typedef signed char v32i8 __attribute__ ((vector_size (32), aligned (32)));
  typedef signed char v32i8_b __attribute__ ((vector_size (32), aligned (1)));
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-struct-move.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-struct-move.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-struct-move.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-struct-move.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -lasx" } */
+ 
+ struct vec
+ {
+   int vec_a[32];
+   double vec_b[5];
+   char vec_c[32];
+ };
+ 
+ void
+ foo (struct vec *dest, struct vec *src, int index)
+ {
+   dest[index] = *src;
+ }
+ 
+ /* { dg-final { scan-assembler-times "alsl\.d" 3} } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c	Sun Nov 16 22:34:09 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-vec-init-2.c	Sun Nov 23 22:32:24 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O3 -fno-vect-cost-model -mlasx" } */
! /* { dg-final { scan-assembler-times "vld" 12 } } */
  
  
  typedef char v16qi __attribute__ ((vector_size (16)));
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -fno-vect-cost-model -mlasx" } */
! /* { dg-final { scan-assembler-times "vld\t" 12 } } */
  
  
  typedef char v16qi __attribute__ ((vector_size (16)));
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvldi-2.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvldi-2.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvldi-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lasx/lasx-xvldi-2.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,97 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlasx" } */
+ 
+ #include <lasxintrin.h>
+ 
+ #define TEST_V16I16(imm)		  \
+ void					  \
+ test_v16i16_##imm (v16i16 *vec)		  \
+   {					  \
+     v16i16 temp = {imm, imm, imm, imm,	  \
+ 	imm, imm, imm, imm,		  \
+ 	imm, imm, imm, imm,		  \
+ 	imm, imm, imm, imm};		  \
+     *vec = temp;			  \
+   }
+ 
+ #define TEST_V8I32(imm)			  \
+ void					  \
+ test_v8i32_##imm (v8i32 *vec)		  \
+   {					  \
+     v8i32 temp = {imm, imm, imm, imm,	  \
+ 		  imm, imm, imm, imm};	  \
+     *vec = temp;			  \
+   }
+ 
+ #define TEST_V8I32_2(imm1, imm2)	  \
+ void					  \
+ test_v8i32_2_##imm1 (v8i32 *vec)	  \
+   {					  \
+     v8i32 temp = {imm1, imm2, imm1, imm2, \
+ 		  imm1, imm2, imm1, imm2};\
+     *vec = temp;			  \
+   }
+ 
+ #define TEST_V4I64(imm)			  \
+ void					  \
+ test_V4I64_##imm (v4i64 *vec)		  \
+   {					  \
+     v4i64 temp = {imm, imm, imm, imm};	  \
+     *vec = temp;			  \
+   }
+ 
+ /* 4'b0001:data={2{16'b0,x[7:0],8'b0}}.  */
+ TEST_V8I32 (0x3a00)
+ /* { dg-final { scan-assembler-times "test_v8i32_0x3a00:.*\txvldi\t\\\$xr\[0-9\]+,-3782.*-test_v8i32_0x3a00" 1 } } */
+ 
+ /* 4'b0010:data={2{8'b0,x[7:0],16'b0}}.  */
+ TEST_V8I32 (0x3a0000)
+ /* { dg-final { scan-assembler-times "test_v8i32_0x3a0000:.*\txvldi\t\\\$xr\[0-9\]+,-3526.*-test_v8i32_0x3a0000" 1 } } */
+ 
+ /* 4'b0011:data={2{x[7:0],24'b0}}.  */
+ TEST_V8I32 (0x3a000000)
+ /* { dg-final { scan-assembler-times "test_v8i32_0x3a000000:.*\txvldi\t\\\$xr\[0-9\]+,-3270.*-test_v8i32_0x3a000000" 1 } } */
+ 
+ /* 4'b0101:data={4{x[7:0],8'b0}}.  */
+ TEST_V16I16 (0x3a00)
+ /* { dg-final { scan-assembler-times "test_v16i16_0x3a00:.*\txvldi\t\\\$xr\[0-9\]+,-2758.*-test_v16i16_0x3a00" 1 } } */
+ 
+ /* 4'b0110:data={2{16'b0,x[7:0],8'hFF}}.  */
+ TEST_V8I32 (0x3aff)
+ /* { dg-final { scan-assembler-times "test_v8i32_0x3aff:.*\txvldi\t\\\$xr\[0-9\]+,-2502.*-test_v8i32_0x3aff" 1 } } */
+ 
+ /* 4'b0111:data={2{8'b0,x[7:0],16'hFFFF}}. */
+ TEST_V8I32 (0x3affff)
+ /* { dg-final { scan-assembler-times "test_v8i32_0x3affff:.*\txvldi\t\\\$xr\[0-9\]+,-2246.*-test_v8i32_0x3affff" 1 } } */
+ 
+ /* 4'b1001:data={{8{x[7]}},{8{x[6]}},{8{x[5]}},{8{x[4]}},{8{x[3]}},{8{x[2]}},
+  * {8{x[1]}},{8{x[0]}}}.  */
+ TEST_V4I64 (0xffffff0000ffff00)
+ /* { dg-final { scan-assembler-times "test_V4I64_0xffffff0000ffff00:.*\txvldi\t\\\$xr\[0-9\]+,-1562.*-test_V4I64_0xffffff0000ffff00" 1 } } */
+ 
+ TEST_V4I64 (0xffff0000ff)
+ /* { dg-final { scan-assembler-times "test_V4I64_0xffff0000ff:.*\txvldi\t\\\$xr\[0-9\]+,-1767.*-test_V4I64_0xffff0000ff" 1 } } */
+ 
+ TEST_V8I32_2 (0xffffff00, 0);
+ /* { dg-final { scan-assembler-times "test_v8i32_2_0xffffff00:.*\txvldi\t\\\$xr\[0-9\]+,-1778.*-test_v8i32_2_0xffffff00" 1 } } */
+ 
+ /* 4'b1010:data={2{x[7],~x[6],{5{x[6]}},x[5:0],19'b0}}. */
+ TEST_V8I32 (0xbf180000)
+ /* { dg-final { scan-assembler-times "test_v8i32_0xbf180000:.*\txvldi\t\\\$xr\[0-9\]+,-1309.*-test_v8i32_0xbf180000" 1 } } */
+ 
+ TEST_V8I32 (0x41e00000)
+ /* { dg-final { scan-assembler-times "test_v8i32_0x41e00000:.*\txvldi\t\\\$xr\[0-9\]+,-1476.*-test_v8i32_0x41e00000" 1 } } */
+ 
+ /* 4'b1011:data={32'b0,x[7],~x[6],{5{x[6]}},x[5:0],19'b0}.  */
+ TEST_V4I64 (0xbe180000)
+ /* { dg-final { scan-assembler-times "test_V4I64_0xbe180000:.*\txvldi\t\\\$xr\[0-9\]+,-1085.*-test_V4I64_0xbe180000" 1 } } */
+ 
+ TEST_V4I64 (0x41e00000)
+ /* { dg-final { scan-assembler-times "test_V4I64_0x41e00000:.*\txvldi\t\\\$xr\[0-9\]+,-1220.*-test_V4I64_0x41e00000" 1 } } */
+ 
+ /* 4'b1100:data={x[7],~x[6],{8{x[6]}},x[5:0],48'b0}.  */
+ TEST_V4I64 (0xbfd5000000000000)
+ /* { dg-final { scan-assembler-times "test_V4I64_0xbfd5000000000000:.*\txvldi\t\\\$xr\[0-9\]+,-811.*-test_V4I64_0xbfd5000000000000" 1 } } */
+ 
+ TEST_V4I64 (0x4026000000000000)
+ /* { dg-final { scan-assembler-times "test_V4I64_0x4026000000000000:.*\txvldi\t\\\$xr\[0-9\]+,-986.*-test_V4I64_0x4026000000000000" 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-builtin.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-builtin.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-builtin.c	Sun Nov 16 22:34:09 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-builtin.c	Sun Nov 23 22:32:24 2025
***************
*** 713,722 ****
  /* { dg-final { scan-assembler-times "lsx_vfcmp_sune_d:.*vfcmp\\.sune\\.d.*lsx_vfcmp_sune_d" 1 } } */
  /* { dg-final { scan-assembler-times "lsx_vfcmp_sune_s:.*vfcmp\\.sune\\.s.*lsx_vfcmp_sune_s" 1 } } */
  /* { dg-final { scan-assembler-times "lsx_vfcmp_sun_s:.*vfcmp\\.sun\\.s.*lsx_vfcmp_sun_s" 1 } } */
! /* { dg-final { scan-assembler-times "lsx_vrepli_b:.*vrepli\\.b.*lsx_vrepli_b" 1 } } */
! /* { dg-final { scan-assembler-times "lsx_vrepli_d:.*vrepli\\.d.*lsx_vrepli_d" 1 } } */
! /* { dg-final { scan-assembler-times "lsx_vrepli_h:.*vrepli\\.h.*lsx_vrepli_h" 1 } } */
! /* { dg-final { scan-assembler-times "lsx_vrepli_w:.*vrepli\\.w.*lsx_vrepli_w" 1 } } */
  
  typedef signed char v16i8 __attribute__ ((vector_size (16), aligned (16)));
  typedef signed char v16i8_b __attribute__ ((vector_size (16), aligned (1)));
--- 713,722 ----
  /* { dg-final { scan-assembler-times "lsx_vfcmp_sune_d:.*vfcmp\\.sune\\.d.*lsx_vfcmp_sune_d" 1 } } */
  /* { dg-final { scan-assembler-times "lsx_vfcmp_sune_s:.*vfcmp\\.sune\\.s.*lsx_vfcmp_sune_s" 1 } } */
  /* { dg-final { scan-assembler-times "lsx_vfcmp_sun_s:.*vfcmp\\.sun\\.s.*lsx_vfcmp_sun_s" 1 } } */
! /* { dg-final { scan-assembler-times "lsx_vrepli_b:.*vldi.*lsx_vrepli_b" 1 } } */
! /* { dg-final { scan-assembler-times "lsx_vrepli_d:.*vldi.*lsx_vrepli_d" 1 } } */
! /* { dg-final { scan-assembler-times "lsx_vrepli_h:.*vldi.*lsx_vrepli_h" 1 } } */
! /* { dg-final { scan-assembler-times "lsx_vrepli_w:.*vldi.*lsx_vrepli_w" 1 } } */
  
  typedef signed char v16i8 __attribute__ ((vector_size (16), aligned (16)));
  typedef signed char v16i8_b __attribute__ ((vector_size (16), aligned (1)));
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vec-construct-opt.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vec-construct-opt.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vec-construct-opt.c	Sun Nov 16 22:34:09 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vec-construct-opt.c	Sun Nov 23 22:32:24 2025
*************** vec_construct_v2i64 ()
*** 20,28 ****
    return res;
  }
  
! /* Only load the lowest 2 elements and directly copy them to high half-part,
!    reducing more vinsgr2vr.w.  */
! /* { dg-final { scan-assembler-times "v4i32:.*\tvreplvei\\.d.*v4i32" 1 } } */
  v4i32
  vec_construct_v4i32 ()
  {
--- 20,28 ----
    return res;
  }
  
! /* Load the lowest 2 elements and directly copy them to high half-part
!    by vldrepl.d.  */
! /* { dg-final { scan-assembler-times "v4i32:.*\tvldrepl\\.d.*v4i32" 1 } } */
  v4i32
  vec_construct_v4i32 ()
  {
*************** vec_construct_v4i32 ()
*** 31,36 ****
--- 31,51 ----
    ;
    return res;
  }
+ 
+ /* Load 2 elements of a vector simultaneously by vldrepl.d and shuffle by the
+    vshuf4i.w to avoid use vinsgr2vr.  */
+ /* { dg-final { scan-assembler-times "v4i32_1:.*\tvldrepl\\.d.*v4i32_1" 1 } }
+  */
+ /* { dg-final { scan-assembler-times "v4i32_1:.*\tvshuf4i\\.w.*v4i32_1" 1 } }
+  */
+ v4i32
+ vec_construct_v4i32_1 ()
+ {
+   v4i32 res =
+   { x_si[0], x_si[1], x_si[0], x_si[0] }
+   ;
+   return res;
+ }
  
  /* Only load the lowest 4 elements and directly copy them to high half-part,
     reducing more vinsgr2vr.h.  */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vldi-2.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vldi-2.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vldi-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vector/lsx/lsx-vldi-2.c	Sun Nov 23 22:32:24 2025
***************
*** 0 ****
--- 1,93 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlasx" } */
+ 
+ #include <lsxintrin.h>
+ 
+ #define TEST_V8I16(imm)			  \
+ void					  \
+ test_v8i16_##imm (v8i16 *vec)		  \
+   {					  \
+     v8i16 temp = {imm, imm, imm, imm,	  \
+ 	    imm, imm, imm, imm};	  \
+     *vec = temp;			  \
+   }
+ 
+ #define TEST_V4I32(imm)			  \
+ void					  \
+ test_v4i32_##imm (v4i32 *vec)		  \
+   {					  \
+     v4i32 temp = {imm, imm, imm, imm};	  \
+     *vec = temp;			  \
+   }
+ 
+ #define TEST_V4I32_2(imm1, imm2)	  \
+ void					  \
+ test_v4i32_2_##imm1 (v4i32 *vec)	  \
+   {					  \
+     v4i32 temp = {imm1, imm2, imm1, imm2};\
+     *vec = temp;			  \
+   }
+ 
+ #define TEST_V2I64(imm)			  \
+ void					  \
+ test_v2i64_##imm (v2i64 *vec)		  \
+   {					  \
+     v2i64 temp = {imm, imm};		  \
+     *vec = temp;			  \
+   }
+ 
+ /* 4'b0001:data={2{16'b0,x[7:0],8'b0}}.  */
+ TEST_V4I32 (0x3a00)
+ /* { dg-final { scan-assembler-times "test_v4i32_0x3a00:.*\tvldi\t\\\$vr\[0-9\]+,-3782.*-test_v4i32_0x3a00" 1 } } */
+ 
+ /* 4'b0010:data={2{8'b0,x[7:0],16'b0}}.  */
+ TEST_V4I32 (0x3a0000)
+ /* { dg-final { scan-assembler-times "test_v4i32_0x3a0000:.*\tvldi\t\\\$vr\[0-9\]+,-3526.*-test_v4i32_0x3a0000" 1 } } */
+ 
+ /* 4'b0011:data={2{x[7:0],24'b0}}.  */
+ TEST_V4I32 (0x3a000000)
+ /* { dg-final { scan-assembler-times "test_v4i32_0x3a000000:.*\tvldi\t\\\$vr\[0-9\]+,-3270.*-test_v4i32_0x3a000000" 1 } } */
+ 
+ /* 4'b0101:data={4{x[7:0],8'b0}}.  */
+ TEST_V8I16 (0x3a00)
+ /* { dg-final { scan-assembler-times "test_v8i16_0x3a00:.*\tvldi\t\\\$vr\[0-9\]+,-2758.*-test_v8i16_0x3a00" 1 } } */
+ 
+ /* 4'b0110:data={2{16'b0,x[7:0],8'hFF}}.  */
+ TEST_V4I32 (0x3aff)
+ /* { dg-final { scan-assembler-times "test_v4i32_0x3aff:.*\tvldi\t\\\$vr\[0-9\]+,-2502.*-test_v4i32_0x3aff" 1 } } */
+ 
+ /* 4'b0111:data={2{8'b0,x[7:0],16'hFFFF}}. */
+ TEST_V4I32 (0x3affff)
+ /* { dg-final { scan-assembler-times "test_v4i32_0x3affff:.*\tvldi\t\\\$vr\[0-9\]+,-2246.*-test_v4i32_0x3affff" 1 } } */
+ 
+ /* 4'b1001:data={{8{x[7]}},{8{x[6]}},{8{x[5]}},{8{x[4]}},{8{x[3]}},{8{x[2]}},
+  * {8{x[1]}},{8{x[0]}}}.  */
+ TEST_V2I64 (0xffffff0000ffff00)
+ /* { dg-final { scan-assembler-times "test_v2i64_0xffffff0000ffff00:.*\tvldi\t\\\$vr\[0-9\]+,-1562.*-test_v2i64_0xffffff0000ffff00" 1 } } */
+ 
+ TEST_V2I64 (0xffff0000ff)
+ /* { dg-final { scan-assembler-times "test_v2i64_0xffff0000ff:.*\tvldi\t\\\$vr\[0-9\]+,-1767.*-test_v2i64_0xffff0000ff" 1 } } */
+ 
+ TEST_V4I32_2 (0xffffff00, 0);
+ /* { dg-final { scan-assembler-times "test_v4i32_2_0xffffff00:.*\tvldi\t\\\$vr\[0-9\]+,-1778.*-test_v4i32_2_0xffffff00" 1 } } */
+ 
+ /* 4'b1010:data={2{x[7],~x[6],{5{x[6]}},x[5:0],19'b0}}. */
+ TEST_V4I32 (0xbf180000)
+ /* { dg-final { scan-assembler-times "test_v4i32_0xbf180000:.*\tvldi\t\\\$vr\[0-9\]+,-1309.*-test_v4i32_0xbf180000" 1 } } */
+ 
+ TEST_V4I32 (0x41e00000)
+ /* { dg-final { scan-assembler-times "test_v4i32_0x41e00000:.*\tvldi\t\\\$vr\[0-9\]+,-1476.*-test_v4i32_0x41e00000" 1 } } */
+ 
+ /* 4'b1011:data={32'b0,x[7],~x[6],{5{x[6]}},x[5:0],19'b0}.  */
+ TEST_V2I64 (0xbe180000)
+ /* { dg-final { scan-assembler-times "test_v2i64_0xbe180000:.*\tvldi\t\\\$vr\[0-9\]+,-1085.*-test_v2i64_0xbe180000" 1 } } */
+ 
+ TEST_V2I64 (0x41e00000)
+ /* { dg-final { scan-assembler-times "test_v2i64_0x41e00000:.*\tvldi\t\\\$vr\[0-9\]+,-1220.*-test_v2i64_0x41e00000" 1 } } */
+ 
+ /* 4'b1100:data={x[7],~x[6],{8{x[6]}},x[5:0],48'b0}.  */
+ TEST_V2I64 (0xbfd5000000000000)
+ /* { dg-final { scan-assembler-times "test_v2i64_0xbfd5000000000000:.*\tvldi\t\\\$vr\[0-9\]+,-811.*-test_v2i64_0xbfd5000000000000" 1 } } */
+ 
+ TEST_V2I64 (0x4026000000000000)
+ /* { dg-final { scan-assembler-times "test_v2i64_0x4026000000000000:.*\tvldi\t\\\$vr\[0-9\]+,-986.*-test_v2i64_0x4026000000000000" 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vrepli.c gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vrepli.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/loongarch/vrepli.c	Sun Nov 16 22:34:09 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/loongarch/vrepli.c	Sun Nov 23 22:32:24 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-options "-O2 -mlasx" } */
! /* { dg-final { scan-assembler "\tvrepli\\.b\t\\\$vr\[0-9\]+,-35" } } */
! /* { dg-final { scan-assembler "\txvrepli\\.b\t\\\$xr\[0-9\]+,-35" } } */
  
  int f __attribute__((vector_size (16)));
  int g __attribute__((vector_size (32)));
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mlasx" } */
! /* { dg-final { scan-assembler "\tvldi\t\\\$vr\[0-9\]+,221" } } */
! /* { dg-final { scan-assembler "\txvldi\t\\\$xr\[0-9\]+,221" } } */
  
  int f __attribute__((vector_size (16)));
  int g __attribute__((vector_size (32)));
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c gcc-16-20251123/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c	Sun Nov 16 22:34:14 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/powerpc/builtins-1-p9-runnable.c	Sun Nov 23 22:32:24 2025
*************** int main() {
*** 16,28 ****
    vfb = (vector float){10.0, -2.0, 70.0, 999.0 };
  
    /* Expected results.  */
- #ifdef __BIG_ENDIAN__
-   vexpected = (vector unsigned short) { 0x4900, 0xc000, 0x5460, 0x63ce,
- 					0x3666, 0x3e66, 0x4d00, 0x563e };
- #else
    vexpected = (vector unsigned short) { 0x3666, 0x3e66, 0x4d00, 0x563e,
  					0x4900, 0xc000, 0x5460, 0x63ce };
- #endif
  
  /*
       vresult = vec_pack_to_short_fp32 (vfa, vfb);
--- 16,23 ----
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/pr113715.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/pr113715.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/pr113715.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/pr113715.c	Sun Nov 23 22:32:25 2025
***************
*** 0 ****
--- 1,98 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32ima_zca_zcmp -mabi=ilp32 -mcmodel=medlow -fno-pic" }*/
+ /* { dg-skip-if "" { *-*-* } {"-O0" "-O1" "-O2" "-Og" "-O3" "-flto"} } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ void test_1(int);
+ 
+ /*
+ **test_err:
+ ** ...
+ **	li	a0,1
+ **	call	test_1
+ **	cm.popretz	{ra}, 16
+ ** ...
+ */
+ int test_err(int mode)
+ {
+     if (mode == 2) {
+         test_1(1);
+     }
+ 
+     return 0;
+ }
+ 
+ /*
+ **test_err2:
+ ** ...
+ **	li	a0,1
+ **	call	test_1
+ **	li	a1,0
+ **	cm.popretz	{ra}, 16
+ ** ...
+ */
+ long long test_err2(int mode)
+ {
+     if (mode == 2) {
+         test_1(1);
+     }
+ 
+     return 0;
+ }
+ 
+ 
+ /*
+ **test_err3:
+ ** ...
+ **	li	a0,1
+ **	call	test_1
+ **	li	a1,1
+ **	cm.popretz	{ra}, 16
+ ** ...
+ */
+ long long test_err3(int mode)
+ {
+     if (mode == 2) {
+         test_1(1);
+ 	return 0x100000000ll;
+     }
+ 
+     return 0;
+ }
+ 
+ /*
+ **test_err4:
+ ** ...
+ **	li	a0,1
+ **	call	test_1
+ **	cm.popretz	{ra}, 16
+ ** ...
+ */
+ float test_err4(int mode)
+ {
+     if (mode == 2) {
+         test_1(1);
+ 	return 0.0f;
+     }
+ 
+     return 1.0f;
+ }
+ 
+ /*
+ **test_err5:
+ ** ...
+ **	li	a0,1
+ **	call	test_1
+ **	li	a1,0
+ **	cm.popretz	{ra}, 16
+ ** ...
+ */
+ double test_err5(int mode)
+ {
+     if (mode == 2) {
+         test_1(1);
+ 	return 0.0;
+     }
+ 
+     return 1.0;
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rv32e_zcmp.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rv32e_zcmp.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rv32e_zcmp.c	Sun Nov 16 22:34:14 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rv32e_zcmp.c	Sun Nov 23 22:32:25 2025
*************** foo (void)
*** 259,266 ****
  **test_popretz:
  **	cm.push	{ra}, -16
  **	call	f1(?:@plt)?
! **	li	a0,0
! **	cm.popret	{ra}, 16
  */
  long
  test_popretz ()
--- 259,265 ----
  **test_popretz:
  **	cm.push	{ra}, -16
  **	call	f1(?:@plt)?
! **	cm.popretz	{ra}, 16
  */
  long
  test_popretz ()
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rv32i_zcmp.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rv32i_zcmp.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rv32i_zcmp.c	Sun Nov 16 22:34:14 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rv32i_zcmp.c	Sun Nov 23 22:32:25 2025
*************** foo (void)
*** 259,266 ****
  **test_popretz:
  **	cm.push	{ra}, -16
  **	call	f1(?:@plt)?
! **	li	a0,0
! **	cm.popret	{ra}, 16
  */
  long
  test_popretz ()
--- 259,265 ----
  **test_popretz:
  **	cm.push	{ra}, -16
  **	call	f1(?:@plt)?
! **	cm.popretz	{ra}, 16
  */
  long
  test_popretz ()
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 31,33 ****
--- 31,34 ----
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Nov 23 22:32:26 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 37,39 ****
--- 37,40 ----
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Nov 23 22:32:26 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 37,39 ****
--- 37,40 ----
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Nov 23 22:32:26 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 40,42 ****
--- 40,43 ----
  /* { dg-final { scan-assembler-times {vwsubu.wx} 1 } } */
  /* { dg-final { scan-assembler-times {vwmaccu.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_UNSIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-times {vmadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vnmsub.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmseq.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmsne.vx} 1 } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Nov 23 22:32:26 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 37,39 ****
--- 37,40 ----
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Nov 23 22:32:26 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 37,39 ****
--- 37,40 ----
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Nov 23 22:32:26 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 37,39 ****
--- 37,40 ----
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_UNSIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_SIGNED_0(T)
*** 28,30 ****
--- 28,31 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Nov 23 22:32:26 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 37,39 ****
--- 37,40 ----
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Nov 23 22:32:26 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 37,39 ****
--- 37,40 ----
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Nov 23 22:32:26 2025
*************** TEST_WIDEN_TERNARY_VX_UNSIGNED(T, NT)
*** 37,39 ****
--- 37,40 ----
  /* { dg-final { scan-assembler-not {vwsubu.wx} } } */
  /* { dg-final { scan-assembler-not {vwmaccu.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Nov 16 22:34:15 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Nov 23 22:32:26 2025
*************** TEST_TERNARY_VX_UNSIGNED_0(T)
*** 27,29 ****
--- 27,30 ----
  /* { dg-final { scan-assembler-not {vmadd.vx} } } */
  /* { dg-final { scan-assembler-not {vnmsub.vx} } } */
  /* { dg-final { scan-assembler-not {vmseq.vx} } } */
+ /* { dg-final { scan-assembler-not {vmsne.vx} } } */
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun Nov 16 22:34:16 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun Nov 23 22:32:26 2025
*************** DEF_AVG_CEIL(int32_t, int64_t)
*** 403,408 ****
--- 403,409 ----
    DEF_VX_BINARY_CASE_0_WRAP(T, /, div)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, ==, eq)                            \
+   DEF_VX_BINARY_CASE_0_WRAP(T, !=, ne)                            \
    DEF_VX_BINARY_CASE_2_WRAP(T, MAX_FUNC_0_WARP(T), max)           \
    DEF_VX_BINARY_CASE_2_WRAP(T, MAX_FUNC_1_WARP(T), max)           \
    DEF_VX_BINARY_CASE_2_WRAP(T, MIN_FUNC_0_WARP(T), min)           \
*************** DEF_AVG_CEIL(int32_t, int64_t)
*** 422,427 ****
--- 423,429 ----
    DEF_VX_BINARY_CASE_0_WRAP(T, /, div)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)                            \
    DEF_VX_BINARY_CASE_0_WRAP(T, ==, eq)                            \
+   DEF_VX_BINARY_CASE_0_WRAP(T, !=, ne)                            \
    DEF_VX_BINARY_CASE_2_WRAP(T, MAX_FUNC_0_WARP(T), max)           \
    DEF_VX_BINARY_CASE_2_WRAP(T, MAX_FUNC_1_WARP(T), max)           \
    DEF_VX_BINARY_CASE_2_WRAP(T, MIN_FUNC_0_WARP(T), min)           \
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun Nov 16 22:34:16 2025
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun Nov 23 22:32:26 2025
*************** int64_t TEST_BINARY_DATA(int64_t, eq)[][
*** 3474,3479 ****
--- 3474,3615 ----
    },
  };
  
+ int8_t TEST_BINARY_DATA(int8_t, ne)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { 127 },
+     {
+          0,    0,    0,    0,
+        127,  127,  127,  127,
+       -128, -128, -128, -128,
+         -2,   -2,   -2,   -2,
+     },
+     {
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+     },
+   },
+ };
+ 
+ int16_t TEST_BINARY_DATA(int16_t, ne)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { -32768 },
+     {
+            0,      0,      0,      0,
+           -1,     -1,     -1,     -1,
+       -32768, -32768, -32768, -32768,
+           -2,     -2,     -2,     -2,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+     },
+   },
+ };
+ 
+ int32_t TEST_BINARY_DATA(int32_t, ne)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { -2147483648 },
+     {
+                 0,           0,           0,           0,
+                -1,          -1,          -1,          -1,
+       -2147483648, -2147483648, -2147483648, -2147483648,
+                -2,          -2,          -2,          -2,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+     },
+   },
+ };
+ 
+ int64_t TEST_BINARY_DATA(int64_t, ne)[][3][N] =
+ {
+   {
+     { 1 },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { -9223372036854775808ull },
+     {
+                             0,                       0,                       0,                       0,
+                            -1,                      -1,                      -1,                      -1,
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+                            -2,                      -2,                      -2,                      -2,
+     },
+     {
+        1,  1,  1,  1,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+     },
+   },
+ };
+ 
  int8_t TEST_BINARY_DATA(int8_t, max)[][3][N] =
  {
    {
*************** uint64_t TEST_BINARY_DATA(uint64_t, eq)[
*** 6157,6161 ****
--- 6293,6433 ----
      },
    },
  };
+ 
+ uint8_t TEST_BINARY_DATA(uint8_t, ne)[][3][N] =
+ {
+   {
+     { 127 },
+     {
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+       127, 127, 127, 127,
+       128, 128, 128, 128,
+     },
+     {
+         1,   1,   1,   1,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+     },
+   },
+   {
+     { 255 },
+     {
+          0,   0,   0,   0,
+          1,   1,   1,   1,
+          2,   2,   2,   2,
+        255, 255, 255, 255,
+     },
+     {
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          0,   0,   0,   0,
+     },
+   },
+ };
+ 
+ uint16_t TEST_BINARY_DATA(uint16_t, ne)[][3][N] =
+ {
+   {
+     { 32767 },
+     {
+           0,     0,     0,     0,
+           1,     1,     1,     1,
+       32767, 32767, 32767, 32767,
+       32768, 32768, 32768, 32768,
+     },
+     {
+         1,   1,   1,   1,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+     },
+   },
+   {
+     { 65535 },
+     {
+            0,     0,     0,     0,
+            1,     1,     1,     1,
+            2,     2,     2,     2,
+        65535, 65535, 65535, 65535,
+     },
+     {
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          0,   0,   0,   0,
+     },
+   },
+ };
+ 
+ uint32_t TEST_BINARY_DATA(uint32_t, ne)[][3][N] =
+ {
+   {
+     { 2147483647 },
+     {
+                0,          0,          0,          0,
+                1,          1,          1,          1,
+       2147483647, 2147483647, 2147483647, 2147483647,
+       2147483648, 2147483648, 2147483648, 2147483648,
+     },
+     {
+         1,   1,   1,   1,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+     },
+   },
+   {
+     { 4294967295 },
+     {
+                 0,          0,          0,          0,
+                 1,          1,          1,          1,
+                 2,          2,          2,          2,
+        4294967295, 4294967295, 4294967295, 4294967295,
+     },
+     {
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          0,   0,   0,   0,
+     },
+   },
+ };
+ 
+ uint64_t TEST_BINARY_DATA(uint64_t, ne)[][3][N] =
+ {
+   {
+     { 9223372036854775807ull },
+     {
+                            0,                      0,                      0,                      0,
+                            1,                      1,                      1,                      1,
+       9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull, 9223372036854775807ull,
+       9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull, 9223372036854775808ull,
+     },
+     {
+         1,   1,   1,   1,
+         1,   1,   1,   1,
+         0,   0,   0,   0,
+         1,   1,   1,   1,
+     },
+   },
+   {
+     { 18446744073709551615ull },
+     {
+                              0,                       0,                       0,                       0,
+                              1,                       1,                       1,                       1,
+                              2,                       2,                       2,                       2,
+        18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+     },
+     {
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          1,   1,   1,   1,
+          0,   0,   0,   0,
+     },
+   },
+ };
  
  #endif
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i16.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i16.c	Sun Nov 23 22:32:26 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int16_t
+ #define NAME ne
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, !=, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i32.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i32.c	Sun Nov 23 22:32:26 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int32_t
+ #define NAME ne
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, !=, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i64.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i64.c	Sun Nov 23 22:32:26 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int64_t
+ #define NAME ne
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, !=, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i8.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-i8.c	Sun Nov 23 22:32:26 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    int8_t
+ #define NAME ne
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, !=, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u16.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u16.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u16.c	Sun Nov 23 22:32:26 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint16_t
+ #define NAME ne
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, !=, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u32.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u32.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u32.c	Sun Nov 23 22:32:26 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint32_t
+ #define NAME ne
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, !=, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u64.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u64.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u64.c	Sun Nov 23 22:32:26 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint64_t
+ #define NAME ne
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, !=, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u8.c gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u8.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsne-run-1-u8.c	Sun Nov 23 22:32:26 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "-std=c99 --param=gpr2vr-cost=0" } */
+ 
+ #include "vx_binary.h"
+ #include "vx_binary_data.h"
+ 
+ #define T    uint8_t
+ #define NAME ne
+ 
+ DEF_VX_BINARY_CASE_0_WRAP(T, !=, NAME)
+ 
+ #define TEST_DATA                        TEST_BINARY_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VX_BINARY_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gcc.target/xstormy16/pr118358.c gcc-16-20251123/gcc/testsuite/gcc.target/xstormy16/pr118358.c
*** gcc-16-20251116/gcc/testsuite/gcc.target/xstormy16/pr118358.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gcc.target/xstormy16/pr118358.c	Sun Nov 23 22:32:29 2025
***************
*** 0 ****
--- 1,90 ----
+ /* PR target/118358.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ extern void exit (int);
+ 
+ typedef struct
+ {
+   union
+   {
+     struct
+     {
+       unsigned char a3;
+       unsigned char a4;
+     } a2;
+     unsigned int a5;
+   } a0;
+   unsigned int a1;
+ } A;
+ 
+ static int
+ foo (unsigned int *b, unsigned int n, unsigned int s, const unsigned int *d,
+      const unsigned int *e, A **t, unsigned int *m, A *hp, unsigned int *hn,
+      unsigned int *v)
+ {
+   unsigned int a, c[15 + 1], f;
+   int g, h;
+   unsigned int i, j, k;
+   int l;
+   unsigned int ee;
+   unsigned int *p;
+   A *q, r, *u[15];
+   int w;
+   unsigned int x[15 + 1], *xx;
+   int y;
+   unsigned int z;
+   for (j = 1; j <= 15; j++)
+     if (c[j])
+       break;
+   if ((unsigned int) l < j)
+     l = j;
+   for (i = 15; i; i--)
+     if (c[i])
+       break;
+   g = i;
+   for (y = 1 << j; j < i; j++, y <<= 1)
+     if ((y -= c[j]) < 0)
+       return -3;
+   h = -1;
+   z = 0;
+   for (; k <= g; k++)
+     {
+           while (k > w + l)
+             {
+               h++;
+               w += l;
+               if ((f = 1 << (j = k - w)) > a + 1)
+                 ;
+               z = 1 << j;
+               if (*hn + z > 1440)
+                 return -3;
+               u[h] = q = hp + *hn;
+                   r.a0.a2.a4 = (unsigned char) l;
+                   r.a1 = (unsigned int) (q - u[h - 1] - j);
+             }
+           for (j = i >> w; j < z; j += f)
+             q[j] = r;
+           for (j = 1 << (k - 1); i & j; j >>= 1)
+             i ^= j;
+           while ((i & ee) != x[h])
+             {
+               h--;
+               w -= l;
+             }
+     }
+   return y != 0 && g != 1 ? (-5) : 0;
+ }
+ 
+ unsigned int a[19] = { 3, 4, 0, 2, 2, [17] = 3, 3 };
+ unsigned int d[19];
+ A h[1440];
+ 
+ int
+ main (void)
+ {
+   unsigned int b = 0, c = 0;
+   A *e = 0;
+   foo (a, 19, 19, 0, 0, &e, &b, h, &c, d);
+   exit (0);
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/common_22.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/common_22.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/common_22.f90	Sun Nov 16 22:34:24 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/common_22.f90	Sun Nov 23 22:32:31 2025
***************
*** 7,24 ****
  ! Contributed by Bud Davis  <jmdavis@link.com>
  
        CALL RCCFL (NVE,IR,NU3,VE (1,1,1,I))
!       COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" }
!       COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" }
  !  the PR only contained the two above.
  !  success is no segfaults or infinite loops.
  !  let's check some combinations
       CALL ABC (INTG)
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" }
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" }
       CALL DEF (NT1)
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" }
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" }
       CALL GHI (NRESL)
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" }
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "Unexpected COMMON" }
       END
--- 7,24 ----
  ! Contributed by Bud Davis  <jmdavis@link.com>
  
        CALL RCCFL (NVE,IR,NU3,VE (1,1,1,I))
!       COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
!       COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
  !  the PR only contained the two above.
  !  success is no segfaults or infinite loops.
  !  let's check some combinations
       CALL ABC (INTG)
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
       CALL DEF (NT1)
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
       CALL GHI (NRESL)
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
!      COMMON /CCFILE/ INTG,NT1,NT2,NT3,NVM,NVE,NFRLE,NRESF,NRESL !{ dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
       END
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/common_24.f gcc-16-20251123/gcc/testsuite/gfortran.dg/common_24.f
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/common_24.f	Sun Nov 16 22:34:24 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/common_24.f	Sun Nov 23 22:32:31 2025
*************** c Contributed by Ilya Enkovich <ienkovic
*** 7,11 ****
  
        COMMON /FMCOM / X(80 000 000)
        CALL T(XX(A))
!       COMMON /FMCOM / XX(80 000 000) ! { dg-error "Unexpected COMMON" }
        END
--- 7,11 ----
  
        COMMON /FMCOM / X(80 000 000)
        CALL T(XX(A))
!       COMMON /FMCOM / XX(80 000 000) ! { dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
        END
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/goacc/routine-1.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/goacc/routine-1.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/goacc/routine-1.f90	Sun Nov 16 22:34:25 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/goacc/routine-1.f90	Sun Nov 23 22:32:31 2025
***************
*** 4,10 ****
    integer :: a(n), i
    integer, external :: fact
    i = 1
!   !$acc routine (fact)  ! { dg-error "Unexpected \\\!\\\$ACC ROUTINE" }
    !$acc routine ()  ! { dg-error "Syntax error in \\\!\\\$ACC ROUTINE \\\( NAME \\\)" }
    !$acc parallel
    !$acc loop
--- 4,10 ----
    integer :: a(n), i
    integer, external :: fact
    i = 1
!   !$acc routine (fact)  ! { dg-error "\\!\\\$ACC ROUTINE statement at \\(1\\) cannot appear after executable statements" }
    !$acc routine ()  ! { dg-error "Syntax error in \\\!\\\$ACC ROUTINE \\\( NAME \\\)" }
    !$acc parallel
    !$acc loop
*************** recursive function fact (x) result (res)
*** 21,27 ****
    integer, intent(in) :: x
    integer :: res
    res = 1
!   !$acc routine  ! { dg-error "Unexpected \\\!\\\$ACC ROUTINE" }
    if (x < 1) then
       res = 1
    else
--- 21,27 ----
    integer, intent(in) :: x
    integer :: res
    res = 1
!   !$acc routine  ! { dg-error "\\!\\\$ACC ROUTINE statement at \\(1\\) cannot appear after executable statements" }
    if (x < 1) then
       res = 1
    else
*************** subroutine incr (x)
*** 32,37 ****
    integer, intent(inout) :: x
    integer i
    i = 0
!   !$acc routine  ! { dg-error "Unexpected \\\!\\\$ACC ROUTINE" }
    x = x + 1
  end subroutine incr
--- 32,37 ----
    integer, intent(inout) :: x
    integer i
    i = 0
!   !$acc routine  ! { dg-error "\\!\\\$ACC ROUTINE statement at \\(1\\) cannot appear after executable statements" }
    x = x + 1
  end subroutine incr
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/goacc/routine-2.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/goacc/routine-2.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/goacc/routine-2.f90	Sun Nov 16 22:34:25 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/goacc/routine-2.f90	Sun Nov 23 22:32:31 2025
***************
*** 7,13 ****
        integer :: res
        integer i
        i = 0
!       !$acc routine  ! { dg-error "Unexpected \\\!\\\$ACC ROUTINE" }
        if (x < 1) then
           res = 1
        else
--- 7,13 ----
        integer :: res
        integer i
        i = 0
!       !$acc routine  ! { dg-error "\\!\\\$ACC ROUTINE statement at \\(1\\) cannot appear after executable statements" }
        if (x < 1) then
           res = 1
        else
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/declare-variant-17.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/declare-variant-17.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/declare-variant-17.f90	Sun Nov 16 22:34:25 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/declare-variant-17.f90	Sun Nov 23 22:32:32 2025
*************** program main
*** 7,17 ****
  
    continue
  
!   !$omp declare variant (base: variant) match (construct={parallel})  ! { dg-error "Unexpected \\\!\\\$OMP DECLARE VARIANT statement at .1." }
  contains
    subroutine base ()
      continue
  
!     !$omp declare variant (variant) match (construct={parallel})  ! { dg-error "Unexpected \\\!\\\$OMP DECLARE VARIANT statement at .1." }
    end subroutine
  end program
--- 7,17 ----
  
    continue
  
!   !$omp declare variant (base: variant) match (construct={parallel})  ! { dg-error "\\!\\\$OMP DECLARE VARIANT statement at \\(1\\) cannot appear after executable statements" }
  contains
    subroutine base ()
      continue
  
!     !$omp declare variant (variant) match (construct={parallel})  ! { dg-error "\\!\\\$OMP DECLARE VARIANT statement at \\(1\\) cannot appear after executable statements" }
    end subroutine
  end program
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/interop-1.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/interop-1.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/interop-1.f90	Sun Nov 16 22:34:25 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/interop-1.f90	Sun Nov 23 22:32:32 2025
*************** end module m
*** 19,25 ****
  
  subroutine sub1  ! { dg-error "Program unit at .1. has OpenMP device constructs/routines but does not set !.OMP REQUIRES REVERSE_OFFLOAD but other program units do" }
    !$omp interop
!   integer :: y ! { dg-error "Unexpected data declaration statement" }
  end subroutine sub1
  
  program main
--- 19,25 ----
  
  subroutine sub1  ! { dg-error "Program unit at .1. has OpenMP device constructs/routines but does not set !.OMP REQUIRES REVERSE_OFFLOAD but other program units do" }
    !$omp interop
!   integer :: y ! { dg-error "data declaration statement at \\(1\\) cannot appear after executable statements" }
  end subroutine sub1
  
  program main
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/order-2.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/order-2.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/order-2.f90	Sun Nov 16 22:34:25 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/order-2.f90	Sun Nov 23 22:32:32 2025
*************** contains
*** 11,24 ****
      implicit none
      integer, save :: t
      t = 1
!     !$omp threadprivate (t1)	! { dg-error "Unexpected" }
    end subroutine f2
    subroutine f3
      use m
      implicit none
      integer :: j
      j = 1
!     !$omp declare reduction (foo:real:omp_out = omp_out + omp_in)	! { dg-error "Unexpected" }
    end subroutine f3
    subroutine f4
      use m
--- 11,24 ----
      implicit none
      integer, save :: t
      t = 1
!     !$omp threadprivate (t1)	! { dg-error "\\!\\\$OMP THREADPRIVATE statement at \\(1\\) cannot appear after executable statements" }
    end subroutine f2
    subroutine f3
      use m
      implicit none
      integer :: j
      j = 1
!     !$omp declare reduction (foo:real:omp_out = omp_out + omp_in)	! { dg-error "\\!\\\$OMP DECLARE REDUCTION statement at \\(1\\) cannot appear after executable statements" }
    end subroutine f3
    subroutine f4
      use m
*************** contains
*** 26,37 ****
      !$omp declare target
      integer, save :: f4_1
      f4_1 = 1
!     !$omp declare target (f4_1)	! { dg-error "Unexpected" }
!     !$omp declare target	! { dg-error "Unexpected" }
    end subroutine f4
    integer function f5 (a, b)
      integer :: a, b
      a = 1; b = 2
!     !$omp declare simd (f5) notinbranch	! { dg-error "Unexpected" }
    end function f5
  end subroutine f1
--- 26,37 ----
      !$omp declare target
      integer, save :: f4_1
      f4_1 = 1
!     !$omp declare target (f4_1)	! { dg-error "\\!\\\$OMP DECLARE TARGET statement at \\(1\\) cannot appear after executable statements" }
!     !$omp declare target	! { dg-error "\\!\\\$OMP DECLARE TARGET statement at \\(1\\) cannot appear after executable statements" }
    end subroutine f4
    integer function f5 (a, b)
      integer :: a, b
      a = 1; b = 2
!     !$omp declare simd (f5) notinbranch	! { dg-error "\\!\\\$OMP DECLARE SIMD statement at \\(1\\) cannot appear after executable statements" }
    end function f5
  end subroutine f1
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/pr78026.f03 gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/pr78026.f03
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/pr78026.f03	Sun Nov 16 22:34:25 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/pr78026.f03	Sun Nov 23 22:32:32 2025
***************
*** 1,5 ****
  ! PR fortran/78026
  select type (a)		! { dg-error "Selector shall be polymorphic in SELECT TYPE statement" }
  end select
! !$omp declare simd(b)	! { dg-error "Unexpected !.OMP DECLARE SIMD statement" }
  end			! { dg-error "should refer to containing procedure" "" { target *-*-* } .-1 }
--- 1,5 ----
  ! PR fortran/78026
  select type (a)		! { dg-error "Selector shall be polymorphic in SELECT TYPE statement" }
  end select
! !$omp declare simd(b)	! { dg-error "\\!\\\$OMP DECLARE SIMD statement at \\(1\\) cannot appear after executable statements" }
  end			! { dg-error "should refer to containing procedure" "" { target *-*-* } .-1 }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/requires-4.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/requires-4.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/requires-4.f90	Sun Nov 16 22:34:25 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/requires-4.f90	Sun Nov 23 22:32:32 2025
*************** end
*** 16,22 ****
  
  subroutine foobar
  i = 5  ! < execution statement
! !$omp requires atomic_default_mem_order(seq_cst) ! { dg-error "Unexpected ..OMP REQUIRES statement" }
  end
  
  program main
--- 16,22 ----
  
  subroutine foobar
  i = 5  ! < execution statement
! !$omp requires atomic_default_mem_order(seq_cst) ! { dg-error "\\!\\\$OMP REQUIRES statement at \\(1\\) cannot appear after executable statements" }
  end
  
  program main
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/requires-6.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/requires-6.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/gomp/requires-6.f90	Sun Nov 16 22:34:25 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/gomp/requires-6.f90	Sun Nov 23 22:32:32 2025
*************** end
*** 10,14 ****
  subroutine foobar
  !$omp atomic
   i = i + 5
! !$omp requires atomic_default_mem_order(acq_rel) ! { dg-error "Unexpected !.OMP REQUIRES statement" }
  end
--- 10,14 ----
  subroutine foobar
  !$omp atomic
   i = i + 5
! !$omp requires atomic_default_mem_order(acq_rel) ! { dg-error "\\!\\\$OMP REQUIRES statement at \\(1\\) cannot appear after executable statements" }
  end
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/pr104466.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/pr104466.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/pr104466.f90	Sun Nov 16 22:34:26 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/pr104466.f90	Sun Nov 23 22:32:32 2025
***************
*** 113,116 ****
        END 
  
  ! { dg-final { scan-tree-dump-not ": dependent" "lim2" } }
! ! { dg-final { scan-tree-dump "Moving statement\[\n\r\]_\[0-9\]+ = n" "lim2" } }
--- 113,116 ----
        END 
  
  ! { dg-final { scan-tree-dump-not ": dependent" "lim2" } }
! ! { dg-final { scan-tree-dump "Moving statement _\[0-9\]+ = n" "lim2" } }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/pr61669.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/pr61669.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/pr61669.f90	Sun Nov 16 22:34:26 2025
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/pr61669.f90	Sun Nov 23 22:32:32 2025
***************
*** 1,7 ****
  ! { dg-do compile }
        write (*,"(a)") char(12)
!       CHARACTER*80 A /"A"/      ! { dg-error "Unexpected data declaration statement" }
!       REAL*4 B                  ! { dg-error "Unexpected data declaration statement" }
        write (*,"(a)") char(12)
        DATA B / 0.02 /           ! { dg-warning "Obsolescent feature: DATA statement" }
        END
--- 1,7 ----
  ! { dg-do compile }
        write (*,"(a)") char(12)
!       CHARACTER*80 A /"A"/      ! { dg-error "data declaration statement at \\(1\\) cannot appear after executable statements" }
!       REAL*4 B                  ! { dg-error "data declaration statement at \\(1\\) cannot appear after executable statements" }
        write (*,"(a)") char(12)
        DATA B / 0.02 /           ! { dg-warning "Obsolescent feature: DATA statement" }
        END
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/select_contiguous.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/select_contiguous.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/select_contiguous.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/select_contiguous.f90	Sun Nov 23 22:32:32 2025
***************
*** 0 ****
--- 1,51 ----
+ ! { dg-do compile }
+ ! { dg-options "-O2 -Wextra -fdump-tree-optimized" }
+ !
+ ! PR fortran/122709 - bogus warning for contiguous pointer assignment
+ !                     to select type target
+ !
+ ! Contributed by <mscfd at gmx dot net>
+ 
+ module sc_mod
+   implicit none
+   public
+ 
+   type :: t
+      integer :: i = 0
+   end type t
+ 
+   type :: s
+      class(t), dimension(:), contiguous, pointer :: p => null()
+   end type s
+ 
+ contains
+ 
+   subroutine foo(x)
+     class(s), intent(in) :: x
+     type(t), dimension(:), contiguous, pointer :: q
+     select type (p_ => x%p)
+     type is (t)
+        q => p_
+        if (.not. is_contiguous(x%p)) stop 1
+        if (.not. is_contiguous(p_))  stop 2     ! Should get optimized out
+        if (.not. is_contiguous(q))   stop 3
+        write(*,*) 'is contiguous: ', is_contiguous(x%p), &
+             is_contiguous(p_), is_contiguous(q)
+     end select
+   end subroutine foo
+ 
+ end module sc_mod
+ 
+ program select_contiguous
+   use sc_mod
+   implicit none
+ 
+   type(s) :: x
+ 
+   allocate(t :: x%p(1:10))
+   call foo(x)
+   deallocate(x%p)
+ 
+ end program select_contiguous
+ 
+ ! { dg-final { scan-tree-dump-not "_gfortran_stop_numeric" "optimized" } }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/gfortran.dg/spec_statement_in_exec.f90 gcc-16-20251123/gcc/testsuite/gfortran.dg/spec_statement_in_exec.f90
*** gcc-16-20251116/gcc/testsuite/gfortran.dg/spec_statement_in_exec.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/gfortran.dg/spec_statement_in_exec.f90	Sun Nov 23 22:32:32 2025
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do compile }
+ ! { dg-options "-fopenmp" }
+ ! Test improved error messages for specification statements in executable section
+ ! PR fortran/32365 - Better error message for specification statement in executable section
+ 
+ subroutine test_spec_in_exec
+   implicit none
+   integer :: i
+ 
+   ! First executable statement
+   i = 1
+ 
+   ! Test key specification statement types
+   integer :: j                     ! { dg-error "data declaration statement at \\(1\\) cannot appear after executable statements" }
+   real :: x                       ! { dg-error "data declaration statement at \\(1\\) cannot appear after executable statements" }
+   complex :: z                    ! { dg-error "data declaration statement at \\(1\\) cannot appear after executable statements" }
+   logical :: flag                  ! { dg-error "data declaration statement at \\(1\\) cannot appear after executable statements" }
+   character(len=20) :: name       ! { dg-error "data declaration statement at \\(1\\) cannot appear after executable statements" }
+   double precision :: d           ! { dg-error "data declaration statement at \\(1\\) cannot appear after executable statements" }
+   common /myblock/ i              ! { dg-error "COMMON statement at \\(1\\) cannot appear after executable statements" }
+   equivalence (i, i)              ! { dg-error "EQUIVALENCE statement at \\(1\\) cannot appear after executable statements" }
+   namelist /nml/ i                ! { dg-error "NAMELIST statement at \\(1\\) cannot appear after executable statements" }
+ !$omp threadprivate(i)             ! { dg-error "THREADPRIVATE statement at \\(1\\) cannot appear after executable statements" }
+ !$omp declare target (i)           ! { dg-error "DECLARE TARGET statement at \\(1\\) cannot appear after executable statements" }
+ 
+ end subroutine test_spec_in_exec
diff -Nrcpad gcc-16-20251116/gcc/testsuite/lib/target-supports.exp gcc-16-20251123/gcc/testsuite/lib/target-supports.exp
*** gcc-16-20251116/gcc/testsuite/lib/target-supports.exp	Sun Nov 16 22:34:43 2025
--- gcc-16-20251123/gcc/testsuite/lib/target-supports.exp	Sun Nov 23 22:32:35 2025
*************** proc add_options_for_arm_v8_1m_mve { fla
*** 6963,6968 ****
--- 6963,7022 ----
      return "$flags $et_arm_v8_1m_mve_flags"
  }
  
+ # Return 1 if the target supports ARMv8.1-M MVE without floating point
+ # instructions, 0 otherwise.  The test is valid for ARM.
+ # Record the command line options needed.
+ 
+ proc check_effective_target_arm_v8_1m_mve_nofp_ok_nocache { } {
+     global et_arm_v8_1m_mve_nofp_flags
+     set et_arm_v8_1m_mve_nofp_flags ""
+ 
+     if { ![istarget arm*-*-*] } {
+ 	return 0;
+     }
+ 
+     # Iterate through sets of options to find the compiler flags that
+     # need to be added to the -march option.
+     foreach flags {
+ 	""
+ 	"-mfloat-abi=softfp"
+ 	"-mfpu=auto -mcpu=unset -march=armv8.1-m.main+mve"
+ 	"-mfpu=auto -mcpu=unset -march=armv8.1-m.main+mve -mfloat-abi=softfp"
+     } {
+ 	if { [check_no_compiler_messages_nocache \
+ 		  arm_v8_1m_mve_ok object {
+ 	    #if !defined (__ARM_FEATURE_MVE)
+ 	    #error "__ARM_FEATURE_MVE not defined"
+ 	    #endif
+ 	    #if (__ARM_FEATURE_MVE & 2)
+ 	    #error "__ARM_FEATURE_MVE for floating point defined"
+ 	    #endif
+ 	    #if __ARM_BIG_ENDIAN
+ 	    #error "MVE intrinsics are not supported in Big-Endian mode."
+ 	    #endif
+ 	    #include <arm_mve.h>
+ 	} "$flags -mthumb"] } {
+ 	    set et_arm_v8_1m_mve_nofp_flags "$flags -mthumb --save-temps"
+ 	    return 1
+ 	}
+     }
+ 
+     return 0;
+ }
+ 
+ proc check_effective_target_arm_v8_1m_mve_nofp_ok { } {
+     return [check_cached_effective_target arm_v8_1m_mve_nofp_ok \
+ 		check_effective_target_arm_v8_1m_mve_nofp_ok_nocache]
+ }
+ 
+ proc add_options_for_arm_v8_1m_mve_nofp { flags } {
+     if { ! [check_effective_target_arm_v8_1m_mve_nofp_ok] } {
+ 	return "$flags"
+     }
+     global et_arm_v8_1m_mve_nofp_flags
+     return "$flags $et_arm_v8_1m_mve_nofp_flags"
+ }
+ 
  proc check_effective_target_arm_v8_2a_dotprod_neon_ok { } {
      return [check_cached_effective_target arm_v8_2a_dotprod_neon_ok \
  		check_effective_target_arm_v8_2a_dotprod_neon_ok_nocache]
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/const_generics_17.rs gcc-16-20251123/gcc/testsuite/rust/compile/const_generics_17.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/const_generics_17.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/const_generics_17.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,3 ----
+ struct Foo<const N: u32 = 1, const O: bool>; // { dg-error "invalid order for generic parameters: generic parameters with a default must be trailing" }
+ 
+ impl<const N: u32> Foo<N> {}
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/const_generics_18.rs gcc-16-20251123/gcc/testsuite/rust/compile/const_generics_18.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/const_generics_18.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/const_generics_18.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,10 ----
+ #[lang = "sized"]
+ trait Sized {}
+ 
+ struct Foo<const N: usize>;
+ type Alias = Foo<4>;
+ 
+ fn main() -> i32 {
+     let _x: Alias = Foo::<4> {};
+     0
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/const_generics_19.rs gcc-16-20251123/gcc/testsuite/rust/compile/const_generics_19.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/const_generics_19.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/const_generics_19.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,10 ----
+ #[lang = "sized"]
+ trait Sized {}
+ 
+ struct Foo<const N: usize>;
+ struct Wrapper<T>(T);
+ 
+ fn main() -> i32 {
+     let _: Wrapper<Foo<3>> = Wrapper(Foo::<3> {});
+     0
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/generics14.rs gcc-16-20251123/gcc/testsuite/rust/compile/generics14.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/generics14.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/generics14.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1 ----
+ struct Foo<const N: i32, 'a>; // { dg-error "invalid order for generic parameters: lifetime parameters must be declared prior to type and const parameters" }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-3617.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-3617.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-3617.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-3617.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,14 ----
+ macro_rules! quote_tokens {
+     () => {
+         #[macro_export]
+         macro_rules! inner {
+                     () => {
+                         $crate::
+                     }
+                 }
+     };
+ }
+ 
+ pub fn main() {
+     quote_tokens!();
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-3659.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-3659.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-3659.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-3659.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,10 ----
+ #![feature(exclusive_range_pattern)]
+ 
+ fn main() {
+     let x = 3;
+ 
+     match x {
+         0..-1 => 2, // { dg-error "lower range bound must be less than upper .E0579." }
+         _ => 3,
+     };
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-4162.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-4162.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-4162.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-4162.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ pub fn main() {
+     while let  = 5
+     // { dg-error "should be at least 1 pattern" "" { target *-*-* } .-1 }
+     // { dg-error "failed to parse statement or expression in block expression" "" { target *-*-* } .-2 }
+     // { dg-error "unrecognised token .=. for start of item" "" { target *-*-* } .-3 }
+     // { dg-error "failed to parse item in crate" "" { target *-*-* } .-4 }
+     {}
+ }
+ 
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-4188.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-4188.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-4188.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-4188.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,13 ----
+ trait MemoryUnit {
+     extern "C" fn read_dword(&'s self) -> u16 {}
+     // { dg-error {failed to resolve lifetime} "" { target *-*-* } .-1 }
+     // { dg-error {mismatched types} "" { target *-*-* } .-2 }
+ }
+ 
+ impl MemoryUnit for MemoryUnit {
+     extern "C" fn read_dword(&'s self) -> u16 {
+         let b16 = self.read_word() as u16;
+ 
+         b16 << 8
+     }
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-4212.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-4212.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-4212.rs	Sun Nov 16 22:34:44 2025
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-4212.rs	Sun Nov 23 22:32:35 2025
***************
*** 1,5 ****
  #![derive(PartialOrd, PartialEq)]
! // { dg-error "derive attribute cannot be used at crate level" "" { target *-*-* } .-1 }
  pub fn check_ge(a: i32, b: i32) -> bool {
      a >= b
  }
--- 1,5 ----
  #![derive(PartialOrd, PartialEq)]
! // { dg-error "attribute cannot be used at crate level" "" { target *-*-* } .-1 }
  pub fn check_ge(a: i32, b: i32) -> bool {
      a >= b
  }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-4219.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-4219.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-4219.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-4219.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,5 ----
+ #![inline]
+ // { dg-error "attribute cannot be used at crate level" "" { target *-*-* } .-1 }
+ pub fn check_ge(a: i32, b: i32) -> bool {
+     a >= b
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-4222.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-4222.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-4222.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-4222.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,3 ----
+ #![cfg(false)]
+ // { dg-error ".false. predicate key cannot be a literal" "" { target *-*-* } .-1 }
+ fn a() {}
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-4242.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-4242.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-4242.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-4242.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,10 ----
+ #![feature(exclusive_range_pattern)]
+ 
+ fn main() {
+     let x = 1;
+ 
+     match x {
+         -55..0 => 2,
+         -99..-55 => 3,
+     };
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-4261.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-4261.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-4261.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-4261.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,3 ----
+ #[cfg()]
+ // { dg-error "malformed .cfg. attribute input" "" { target *-*-* } .-1 }
+ fn a() {}
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/compile/issue-4267.rs gcc-16-20251123/gcc/testsuite/rust/compile/issue-4267.rs
*** gcc-16-20251116/gcc/testsuite/rust/compile/issue-4267.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/compile/issue-4267.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,3 ----
+ #[cfg(a,a)]
+ // { dg-error "multiple .cfg. predicates are specified" "" { target *-*-* } .-1 }
+ fn a(){}
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-2.rs gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-2.rs
*** gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-2.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-2.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,20 ----
+ #[lang = "sized"]
+ trait Sized {}
+ 
+ trait Magic {
+     fn magic(&self) -> usize;
+ }
+ 
+ struct Foo<const N: usize>;
+ 
+ impl<const N: usize> Magic for Foo<N> {
+     fn magic(&self) -> usize {
+         N
+     }
+ }
+ 
+ fn main() -> i32 {
+     let f = Foo::<7> {};
+     let n = f.magic();
+     n as i32 - 7
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-3.rs gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-3.rs
*** gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-3.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-3.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,13 ----
+ #[lang = "sized"]
+ pub trait Sized {}
+ 
+ fn simd_shuffle<const N: usize>(idx: [u32; N]) -> [u32; N] {
+     idx
+ }
+ 
+ fn main() -> i32 {
+     let a = [1u32, 2, 3, 4];
+     let out = simd_shuffle(a);
+     let _check: [u32; 4] = out;
+     0
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-4.rs gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-4.rs
*** gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-4.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-4.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,43 ----
+ #[lang = "sized"]
+ trait Sized {}
+ 
+ #[allow(unused)]
+ macro_rules! simd_shuffle {
+     ($x:expr, $y:expr, $idx:expr $(,)?) => {{
+         simd_shuffle(
+             $x,
+             $y,
+             const {
+                 let v: [u32; _] = $idx;
+                 v
+             },
+         )
+     }};
+ }
+ 
+ const fn simd_shuffle(_a: [u32; 4], _b: [u32; 4], idx: [u32; 4]) -> [u32; 4] {
+     idx
+ }
+ 
+ fn main() -> i32 {
+     let a = [1, 2, 3, 4];
+     let b = [5, 6, 7, 8];
+     let indices = [3, 2, 1, 0];
+ 
+     let result: [u32; 4] = simd_shuffle!(a, b, indices);
+ 
+     if result[0] != 3 {
+         return 1;
+     }
+     if result[1] != 2 {
+         return 2;
+     }
+     if result[2] != 1 {
+         return 3;
+     }
+     if result[3] != 0 {
+         return 4;
+     }
+ 
+     0
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-5.rs gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-5.rs
*** gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-5.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-5.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,13 ----
+ #[lang = "sized"]
+ trait Sized {}
+ 
+ struct Foo<const N: usize>;
+ 
+ impl<const N: usize> Foo<N> {
+     const VALUE: usize = N;
+ }
+ 
+ fn main() -> i32 {
+     let val = Foo::<7>::VALUE;
+     val as i32 - 7
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-6.rs gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-6.rs
*** gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-6.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-6.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,15 ----
+ #[lang = "sized"]
+ trait Sized {}
+ 
+ struct Foo<const N: usize>;
+ 
+ impl<const N: usize> Foo<N> {
+     const VALUE: usize = N;
+     const SQUARE: usize = N * N;
+ }
+ 
+ fn main() -> i32 {
+     let a = Foo::<5>::VALUE; // 5
+     let b = Foo::<5>::SQUARE; // 25
+     (a + b) as i32 - 30
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-7.rs gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-7.rs
*** gcc-16-20251116/gcc/testsuite/rust/execute/torture/const-generics-7.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/execute/torture/const-generics-7.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,22 ----
+ #![feature(intrinsics)]
+ 
+ #[lang = "sized"]
+ pub trait Sized {}
+ 
+ mod mem {
+     extern "rust-intrinsic" {
+         #[rustc_const_stable(feature = "const_size_of", since = "1.40.0")]
+         pub fn size_of<T>() -> usize;
+     }
+ }
+ 
+ struct Foo<T>;
+ 
+ impl<T> Foo<T> {
+     const MAGIC: usize = mem::size_of::<T>();
+ }
+ 
+ fn main() -> i32 {
+     let sz = Foo::<u16>::MAGIC;
+     sz as i32 - 2
+ }
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/execute/torture/issue-4242.rs gcc-16-20251123/gcc/testsuite/rust/execute/torture/issue-4242.rs
*** gcc-16-20251116/gcc/testsuite/rust/execute/torture/issue-4242.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/execute/torture/issue-4242.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,11 ----
+ #![feature(exclusive_range_pattern)]
+ 
+ fn main() -> i32 {
+     let x = -77;
+ 
+     match x {
+         -55..99 => 1,
+         -99..-55 => 0, // the correct case
+         _ => 1,
+     }
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/gcc/testsuite/rust/execute/torture/literalpattern_neg.rs gcc-16-20251123/gcc/testsuite/rust/execute/torture/literalpattern_neg.rs
*** gcc-16-20251116/gcc/testsuite/rust/execute/torture/literalpattern_neg.rs	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/gcc/testsuite/rust/execute/torture/literalpattern_neg.rs	Sun Nov 23 22:32:35 2025
***************
*** 0 ****
--- 1,9 ----
+ fn main() -> i32 {
+     let x = -55;
+ 
+     match x {
+         55 => 1,
+         -55 => 0, // correct case
+         _ => 1
+     }
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/gcc/tree-cfgcleanup.cc gcc-16-20251123/gcc/tree-cfgcleanup.cc
*** gcc-16-20251116/gcc/tree-cfgcleanup.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-cfgcleanup.cc	Sun Nov 23 22:32:35 2025
*************** cleanup_control_flow_bb (basic_block bb)
*** 378,392 ****
    return retval;
  }
  
  /* Return true if basic block BB does nothing except pass control
     flow to another block and that we can safely insert a label at
!    the start of the successor block.
  
     As a precondition, we require that BB be not equal to
!    the entry block.  */
  
  static bool
! tree_forwarder_block_p (basic_block bb)
  {
    gimple_stmt_iterator gsi;
    location_t locus;
--- 378,479 ----
    return retval;
  }
  
+ /* If all the PHI nodes in DEST have alternatives for E1 and E2 and
+    those alternatives are equal in each of the PHI nodes, then return
+    true, else return false.  */
+ 
+ bool
+ phi_alternatives_equal (basic_block dest, edge e1, edge e2)
+ {
+   int n1 = e1->dest_idx;
+   int n2 = e2->dest_idx;
+   gphi_iterator gsi;
+ 
+   for (gsi = gsi_start_phis (dest); !gsi_end_p (gsi); gsi_next (&gsi))
+     {
+       gphi *phi = gsi.phi ();
+       tree val1 = gimple_phi_arg_def (phi, n1);
+       tree val2 = gimple_phi_arg_def (phi, n2);
+ 
+       gcc_assert (val1 != NULL_TREE);
+       gcc_assert (val2 != NULL_TREE);
+ 
+       if (!operand_equal_for_phi_arg_p (val1, val2))
+ 	return false;
+     }
+ 
+   return true;
+ }
+ 
+ /* Move debug stmts from the forwarder block SRC to DEST or PRED.  */
+ 
+ static void
+ move_debug_stmts_from_forwarder (basic_block src,
+ 				 basic_block dest, bool dest_single_pred_p,
+ 				 basic_block pred, bool pred_single_succ_p)
+ {
+   if (!MAY_HAVE_DEBUG_STMTS)
+     return;
+ 
+   /* If we cannot move to the destination but to the predecessor do that.  */
+   if (!dest_single_pred_p && pred_single_succ_p)
+     {
+       gimple_stmt_iterator gsi_to = gsi_last_bb (pred);
+       if (gsi_end_p (gsi_to) || !stmt_ends_bb_p (gsi_stmt (gsi_to)))
+ 	{
+ 	  for (gimple_stmt_iterator gsi = gsi_after_labels (src);
+ 	       !gsi_end_p (gsi);)
+ 	    {
+ 	      gimple *debug = gsi_stmt (gsi);
+ 	      gcc_assert (is_gimple_debug (debug));
+ 	      gsi_move_after (&gsi, &gsi_to);
+ 	    }
+ 	  return;
+ 	}
+     }
+ 
+   /* Else move to DEST or drop/reset them.  */
+   gimple_stmt_iterator gsi_to = gsi_after_labels (dest);
+   for (gimple_stmt_iterator gsi = gsi_after_labels (src); !gsi_end_p (gsi);)
+     {
+       gimple *debug = gsi_stmt (gsi);
+       gcc_assert (is_gimple_debug (debug));
+       /* Move debug binds anyway, but not anything else like begin-stmt
+ 	 markers unless they are always valid at the destination.  */
+       if (dest_single_pred_p
+ 	  || gimple_debug_bind_p (debug))
+ 	{
+ 	  gsi_move_before (&gsi, &gsi_to);
+ 	  /* Reset debug-binds that are not always valid at the destination.
+ 	     Simply dropping them can cause earlier values to become live,
+ 	     generating wrong debug information.
+ 	     ???  There are several things we could improve here.  For
+ 	     one we might be able to move stmts to the predecessor.
+ 	     For anther, if the debug stmt is immediately followed by a
+ 	     (debug) definition in the destination (on a post-dominated path?)
+ 	     we can elide it without any bad effects.  */
+ 	  if (!dest_single_pred_p)
+ 	    {
+ 	      gimple_debug_bind_reset_value (debug);
+ 	      update_stmt (debug);
+ 	    }
+ 	}
+       else
+ 	gsi_next (&gsi);
+     }
+ }
+ 
  /* Return true if basic block BB does nothing except pass control
     flow to another block and that we can safely insert a label at
!    the start of the successor block and was removed.
  
     As a precondition, we require that BB be not equal to
!    the entry block.
!    If CAN_SPLIT is true, we can split the edge to have
!    another bb with with the phi.  */
  
  static bool
! maybe_remove_forwarder_block (basic_block bb, bool can_split = false)
  {
    gimple_stmt_iterator gsi;
    location_t locus;
*************** tree_forwarder_block_p (basic_block bb)
*** 429,436 ****
--- 516,547 ----
        && single_succ_p (single_pred_edge (bb)->src))
      return false;
  
+   bool has_phi = !gimple_seq_empty_p (phi_nodes (bb));
    basic_block dest = single_succ_edge (bb)->dest;
  
+   /* If there is an abnormal edge to basic block BB, but not into
+      dest, problems might occur during removal of the phi node at out
+      of ssa due to overlapping live ranges of registers.
+ 
+      If there is an abnormal edge in DEST, the problems would occur
+      anyway since cleanup_dead_labels would then merge the labels for
+      two different eh regions, and rest of exception handling code
+      does not like it.
+ 
+      So if there is an abnormal edge to BB, proceed only if there is
+      no abnormal edge to DEST and there are no phi nodes in DEST.
+      If the BB has phi, we don't want to deal with abnormal edges either. */
+   if (bb_has_abnormal_pred (bb)
+       && (bb_has_abnormal_pred (dest)
+ 	  || !gimple_seq_empty_p (phi_nodes (dest))
+ 	  || has_phi))
+     return false;
+ 
+   /* When we have a phi, we have to feed into another
+      basic block with PHI nodes.  */
+   if (has_phi && gimple_seq_empty_p (phi_nodes (dest)))
+     return false;
+ 
    /* Now walk through the statements backward.  We can ignore labels,
       anything else means this is not a forwarder block.  */
    for (gsi = gsi_last_bb (bb); !gsi_end_p (gsi); gsi_prev (&gsi))
*************** tree_forwarder_block_p (basic_block bb)
*** 459,470 ****
  	  return false;
  	}
      }
- 
    /* If BB has PHIs and does not dominate DEST,
       then the PHI nodes at DEST must be the only
       users of the results of the PHI nodes at BB.
       So only check when BB dominates dest.  */
!   if (!gimple_seq_empty_p (phi_nodes (bb))
        && dominated_by_p (CDI_DOMINATORS, dest, bb))
      {
        gphi_iterator gsi;
--- 570,580 ----
  	  return false;
  	}
      }
    /* If BB has PHIs and does not dominate DEST,
       then the PHI nodes at DEST must be the only
       users of the results of the PHI nodes at BB.
       So only check when BB dominates dest.  */
!   if (has_phi
        && dominated_by_p (CDI_DOMINATORS, dest, bb))
      {
        gphi_iterator gsi;
*************** tree_forwarder_block_p (basic_block bb)
*** 513,526 ****
  	      /* If bb doesn't have a single predecessor we'd make this
  		 loop have multiple latches.  Don't do that if that
  		 would in turn require disambiguating them.  */
! 	      return (single_pred_p (bb)
! 		      || loops_state_satisfies_p
! 		      	   (LOOPS_MAY_HAVE_MULTIPLE_LATCHES));
  	    }
  	  /* cleanup_tree_cfg_noloop just created the loop preheader, don't
  	     remove it if it has phis.  */
  	  else if (bb->loop_father == loop_outer (dest->loop_father)
! 		   && gimple_seq_empty_p (phi_nodes (bb))
  		   && !loops_state_satisfies_p (LOOPS_HAVE_PREHEADERS))
  	    ;
  	  else
--- 623,637 ----
  	      /* If bb doesn't have a single predecessor we'd make this
  		 loop have multiple latches.  Don't do that if that
  		 would in turn require disambiguating them.  */
! 	      if (!single_pred_p (bb)
! 		      && !loops_state_satisfies_p
! 			   (LOOPS_MAY_HAVE_MULTIPLE_LATCHES))
! 		return false;
  	    }
  	  /* cleanup_tree_cfg_noloop just created the loop preheader, don't
  	     remove it if it has phis.  */
  	  else if (bb->loop_father == loop_outer (dest->loop_father)
! 		   && !has_phi
  		   && !loops_state_satisfies_p (LOOPS_HAVE_PREHEADERS))
  	    ;
  	  else
*************** tree_forwarder_block_p (basic_block bb)
*** 530,656 ****
  	}
      }
  
-   return true;
- }
- 
- /* If all the PHI nodes in DEST have alternatives for E1 and E2 and
-    those alternatives are equal in each of the PHI nodes, then return
-    true, else return false.  */
- 
- bool
- phi_alternatives_equal (basic_block dest, edge e1, edge e2)
- {
-   int n1 = e1->dest_idx;
-   int n2 = e2->dest_idx;
-   gphi_iterator gsi;
- 
-   for (gsi = gsi_start_phis (dest); !gsi_end_p (gsi); gsi_next (&gsi))
-     {
-       gphi *phi = gsi.phi ();
-       tree val1 = gimple_phi_arg_def (phi, n1);
-       tree val2 = gimple_phi_arg_def (phi, n2);
- 
-       gcc_assert (val1 != NULL_TREE);
-       gcc_assert (val2 != NULL_TREE);
- 
-       if (!operand_equal_for_phi_arg_p (val1, val2))
- 	return false;
-     }
- 
-   return true;
- }
- 
- /* Move debug stmts from the forwarder block SRC to DEST or PRED.  */
- 
- static void
- move_debug_stmts_from_forwarder (basic_block src,
- 				 basic_block dest, bool dest_single_pred_p,
- 				 basic_block pred, bool pred_single_succ_p)
- {
-   if (!MAY_HAVE_DEBUG_STMTS)
-     return;
- 
-   /* If we cannot move to the destination but to the predecessor do that.  */
-   if (!dest_single_pred_p && pred_single_succ_p)
-     {
-       gimple_stmt_iterator gsi_to = gsi_last_bb (pred);
-       if (gsi_end_p (gsi_to) || !stmt_ends_bb_p (gsi_stmt (gsi_to)))
- 	{
- 	  for (gimple_stmt_iterator gsi = gsi_after_labels (src);
- 	       !gsi_end_p (gsi);)
- 	    {
- 	      gimple *debug = gsi_stmt (gsi);
- 	      gcc_assert (is_gimple_debug (debug));
- 	      gsi_move_after (&gsi, &gsi_to);
- 	    }
- 	  return;
- 	}
-     }
- 
-   /* Else move to DEST or drop/reset them.  */
-   gimple_stmt_iterator gsi_to = gsi_after_labels (dest);
-   for (gimple_stmt_iterator gsi = gsi_after_labels (src); !gsi_end_p (gsi);)
-     {
-       gimple *debug = gsi_stmt (gsi);
-       gcc_assert (is_gimple_debug (debug));
-       /* Move debug binds anyway, but not anything else like begin-stmt
- 	 markers unless they are always valid at the destination.  */
-       if (dest_single_pred_p
- 	  || gimple_debug_bind_p (debug))
- 	{
- 	  gsi_move_before (&gsi, &gsi_to);
- 	  /* Reset debug-binds that are not always valid at the destination.
- 	     Simply dropping them can cause earlier values to become live,
- 	     generating wrong debug information.
- 	     ???  There are several things we could improve here.  For
- 	     one we might be able to move stmts to the predecessor.
- 	     For anther, if the debug stmt is immediately followed by a
- 	     (debug) definition in the destination (on a post-dominated path?)
- 	     we can elide it without any bad effects.  */
- 	  if (!dest_single_pred_p)
- 	    {
- 	      gimple_debug_bind_reset_value (debug);
- 	      update_stmt (debug);
- 	    }
- 	}
-       else
- 	gsi_next (&gsi);
-     }
- }
- 
- /* Removes forwarder block BB.  Returns false if this failed.  */
- 
- static bool
- remove_forwarder_block (basic_block bb, bool can_split = false)
- {
    edge succ = single_succ_edge (bb), e, s;
-   basic_block dest = succ->dest;
    gimple *stmt;
!   gimple_stmt_iterator gsi, gsi_to;
!   bool has_phi = !gimple_seq_empty_p (phi_nodes (bb));
! 
!   /* If there is an abnormal edge to basic block BB, but not into
!      dest, problems might occur during removal of the phi node at out
!      of ssa due to overlapping live ranges of registers.
! 
!      If there is an abnormal edge in DEST, the problems would occur
!      anyway since cleanup_dead_labels would then merge the labels for
!      two different eh regions, and rest of exception handling code
!      does not like it.
! 
!      So if there is an abnormal edge to BB, proceed only if there is
!      no abnormal edge to DEST and there are no phi nodes in DEST.
!      If the BB has phi, we don't want to deal with abnormal edges either. */
!   if (bb_has_abnormal_pred (bb)
!       && (bb_has_abnormal_pred (dest)
! 	  || !gimple_seq_empty_p (phi_nodes (dest))
! 	  || has_phi))
!     return false;
! 
!   /* When we have a phi, we have to feed into another
!      basic block with PHI nodes.  */
!   if (has_phi && gimple_seq_empty_p (phi_nodes (dest)))
!     return false;
  
    /* If there are phi nodes in DEST, and some of the blocks that are
       predecessors of BB are also predecessors of DEST, check that the
--- 641,649 ----
  	}
      }
  
    edge succ = single_succ_edge (bb), e, s;
    gimple *stmt;
!   gimple_stmt_iterator gsi_to;
  
    /* If there are phi nodes in DEST, and some of the blocks that are
       predecessors of BB are also predecessors of DEST, check that the
*************** want_merge_blocks_p (basic_block bb1, ba
*** 872,879 ****
  static bool
  cleanup_tree_cfg_bb (basic_block bb)
  {
!   if (tree_forwarder_block_p (bb)
!       && remove_forwarder_block (bb))
      return true;
  
    /* If there is a merge opportunity with the predecessor
--- 865,871 ----
  static bool
  cleanup_tree_cfg_bb (basic_block bb)
  {
!   if (maybe_remove_forwarder_block (bb))
      return true;
  
    /* If there is a merge opportunity with the predecessor
*************** public:
*** 1372,1381 ****
  unsigned int
  pass_merge_phi::execute (function *fun)
  {
    calculate_dominance_info (CDI_DOMINATORS);
  
    /* Find all PHI nodes that we may be able to merge.  */
-   bool changed = false;
    unsigned n = last_basic_block_for_fn (fun);
    for (unsigned i = NUM_FIXED_BLOCKS; i < n; i++)
      {
--- 1364,1373 ----
  unsigned int
  pass_merge_phi::execute (function *fun)
  {
+   int forwarder_removed = 0;
    calculate_dominance_info (CDI_DOMINATORS);
  
    /* Find all PHI nodes that we may be able to merge.  */
    unsigned n = last_basic_block_for_fn (fun);
    for (unsigned i = NUM_FIXED_BLOCKS; i < n; i++)
      {
*************** pass_merge_phi::execute (function *fun)
*** 1384,1400 ****
  	continue;
  
        /* Look for a forwarder block with PHI nodes.  */
!       if (tree_forwarder_block_p (bb)
! 	  && remove_forwarder_block (bb, true))
! 	changed = true;
      }
  
    /* Removing forwarder blocks can cause formerly irreducible loops
       to become reducible if we merged two entry blocks.  */
!   if (changed
        && current_loops)
      loops_state_set (LOOPS_NEED_FIXUP);
  
    return 0;
  }
  
--- 1376,1393 ----
  	continue;
  
        /* Look for a forwarder block with PHI nodes.  */
!       if (maybe_remove_forwarder_block (bb, true))
! 	forwarder_removed++;
      }
  
    /* Removing forwarder blocks can cause formerly irreducible loops
       to become reducible if we merged two entry blocks.  */
!   if (forwarder_removed != 0
        && current_loops)
      loops_state_set (LOOPS_NEED_FIXUP);
  
+   statistics_counter_event (fun, "Forwarder blocks removed",
+ 			    forwarder_removed);
    return 0;
  }
  
diff -Nrcpad gcc-16-20251116/gcc/tree-complex.cc gcc-16-20251123/gcc/tree-complex.cc
*** gcc-16-20251116/gcc/tree-complex.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-complex.cc	Sun Nov 23 22:32:35 2025
*************** expand_complex_libcall (gimple_stmt_iter
*** 1042,1051 ****
  
    if (code == MULT_EXPR)
      bcode = ((enum built_in_function)
! 	     (BUILT_IN_COMPLEX_MUL_MIN + mode - MIN_MODE_COMPLEX_FLOAT));
    else if (code == RDIV_EXPR)
      bcode = ((enum built_in_function)
! 	     (BUILT_IN_COMPLEX_DIV_MIN + mode - MIN_MODE_COMPLEX_FLOAT));
    else
      gcc_unreachable ();
    fn = builtin_decl_explicit (bcode);
--- 1042,1051 ----
  
    if (code == MULT_EXPR)
      bcode = ((enum built_in_function)
! 	     (BUILT_IN_COMPLEX_MUL_MIN + (mode - MIN_MODE_COMPLEX_FLOAT)));
    else if (code == RDIV_EXPR)
      bcode = ((enum built_in_function)
! 	     (BUILT_IN_COMPLEX_DIV_MIN + (mode - MIN_MODE_COMPLEX_FLOAT)));
    else
      gcc_unreachable ();
    fn = builtin_decl_explicit (bcode);
diff -Nrcpad gcc-16-20251116/gcc/tree-core.h gcc-16-20251123/gcc/tree-core.h
*** gcc-16-20251116/gcc/tree-core.h	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-core.h	Sun Nov 23 22:32:35 2025
*************** enum built_in_function {
*** 190,203 ****
    BUILT_IN_COMPLEX_MUL_MIN,
    BUILT_IN_COMPLEX_MUL_MAX
      = BUILT_IN_COMPLEX_MUL_MIN
!       + MAX_MODE_COMPLEX_FLOAT
!       - MIN_MODE_COMPLEX_FLOAT,
  
    BUILT_IN_COMPLEX_DIV_MIN,
    BUILT_IN_COMPLEX_DIV_MAX
      = BUILT_IN_COMPLEX_DIV_MIN
!       + MAX_MODE_COMPLEX_FLOAT
!       - MIN_MODE_COMPLEX_FLOAT,
  
    /* Upper bound on non-language-specific builtins.  */
    END_BUILTINS
--- 190,201 ----
    BUILT_IN_COMPLEX_MUL_MIN,
    BUILT_IN_COMPLEX_MUL_MAX
      = BUILT_IN_COMPLEX_MUL_MIN
!       + (MAX_MODE_COMPLEX_FLOAT - MIN_MODE_COMPLEX_FLOAT),
  
    BUILT_IN_COMPLEX_DIV_MIN,
    BUILT_IN_COMPLEX_DIV_MAX
      = BUILT_IN_COMPLEX_DIV_MIN
!       + (MAX_MODE_COMPLEX_FLOAT - MIN_MODE_COMPLEX_FLOAT),
  
    /* Upper bound on non-language-specific builtins.  */
    END_BUILTINS
diff -Nrcpad gcc-16-20251116/gcc/tree-logical-location.cc gcc-16-20251123/gcc/tree-logical-location.cc
*** gcc-16-20251116/gcc/tree-logical-location.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-logical-location.cc	Sun Nov 23 22:32:35 2025
*************** tree_logical_location_manager::get_paren
*** 152,157 ****
--- 152,159 ----
      {
        if (!TYPE_CONTEXT (node))
  	return key ();
+       if (TREE_CODE (TYPE_CONTEXT (node)) == TRANSLATION_UNIT_DECL)
+ 	return key ();
        return key_from_tree (TYPE_CONTEXT (node));
      }
    return key ();
diff -Nrcpad gcc-16-20251116/gcc/tree-ssa-dce.cc gcc-16-20251123/gcc/tree-ssa-dce.cc
*** gcc-16-20251116/gcc/tree-ssa-dce.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-ssa-dce.cc	Sun Nov 23 22:32:35 2025
*************** simple_dce_from_worklist (bitmap worklis
*** 2378,2389 ****
  	  if (gimple_code (def_stmt) != GIMPLE_PHI)
  	    continue;
  
- 	  gimple *use_stmt;
  	  imm_use_iterator use_iter;
  	  bool canremove = true;
  
! 	  FOR_EACH_IMM_USE_STMT (use_stmt, use_iter, def)
  	    {
  	      /* Ignore debug statements. */
  	      if (is_gimple_debug (use_stmt))
  		continue;
--- 2378,2390 ----
  	  if (gimple_code (def_stmt) != GIMPLE_PHI)
  	    continue;
  
  	  imm_use_iterator use_iter;
+ 	  use_operand_p use_p;
  	  bool canremove = true;
  
! 	  FOR_EACH_IMM_USE_FAST (use_p, use_iter, def)
  	    {
+ 	      gimple *use_stmt = USE_STMT (use_p);
  	      /* Ignore debug statements. */
  	      if (is_gimple_debug (use_stmt))
  		continue;
diff -Nrcpad gcc-16-20251116/gcc/tree-ssa-forwprop.cc gcc-16-20251123/gcc/tree-ssa-forwprop.cc
*** gcc-16-20251116/gcc/tree-ssa-forwprop.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-ssa-forwprop.cc	Sun Nov 23 22:32:35 2025
*************** optimize_vector_load (gimple_stmt_iterat
*** 4245,4250 ****
--- 4245,4252 ----
    use_operand_p use_p;
    imm_use_iterator iter;
    bool rewrite = true;
+   bool scalar_use = false;
+   bool unpack_use = false;
    auto_vec<gimple *, 8> bf_stmts;
    auto_vec<tree, 8> worklist;
    worklist.quick_push (lhs);
*************** optimize_vector_load (gimple_stmt_iterat
*** 4278,4283 ****
--- 4280,4287 ----
  			 ???  Support VEC_UNPACK_FLOAT_{HI,LO}_EXPR.  */
  		      && INTEGRAL_TYPE_P (TREE_TYPE (use_rhs)))))
  	    {
+ 	      if (!VECTOR_TYPE_P (TREE_TYPE (gimple_assign_lhs (use_stmt))))
+ 		scalar_use = true;
  	      bf_stmts.safe_push (use_stmt);
  	      continue;
  	    }
*************** optimize_vector_load (gimple_stmt_iterat
*** 4287,4292 ****
--- 4291,4297 ----
  		  || use_code == VEC_UNPACK_LO_EXPR)
  	      && use_rhs == lhs)
  	    {
+ 	      unpack_use = true;
  	      worklist.safe_push (gimple_assign_lhs (use_stmt));
  	      continue;
  	    }
*************** optimize_vector_load (gimple_stmt_iterat
*** 4298,4303 ****
--- 4303,4312 ----
      }
    while (!worklist.is_empty ());
  
+   rewrite = rewrite && (scalar_use
+ 			|| unpack_use
+ 			|| !can_implement_p (mov_optab,
+ 					     TYPE_MODE (TREE_TYPE (lhs))));
    if (!rewrite)
      {
        gsi_next (gsi);
diff -Nrcpad gcc-16-20251116/gcc/tree-ssa-live.cc gcc-16-20251123/gcc/tree-ssa-live.cc
*** gcc-16-20251116/gcc/tree-ssa-live.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-ssa-live.cc	Sun Nov 23 22:32:35 2025
*************** remove_unused_locals (void)
*** 926,932 ****
  	      {
  		tree lhs = gimple_call_lhs (stmt);
  		tree base = get_base_address (lhs);
! 		if (DECL_P (base) && !is_used_p (base))
  		  {
  		    unlink_stmt_vdef (stmt);
  		    gsi_remove (&gsi, true);
--- 926,937 ----
  	      {
  		tree lhs = gimple_call_lhs (stmt);
  		tree base = get_base_address (lhs);
! 		if ((DECL_P (base) && !is_used_p (base))
! 		    || (TREE_CODE (lhs) == MEM_REF
! 			&& TREE_CODE (TREE_OPERAND (lhs, 0)) == SSA_NAME
! 			&& SSA_NAME_IS_DEFAULT_DEF (TREE_OPERAND (lhs, 0))
! 			&& (TREE_CODE (SSA_NAME_VAR (TREE_OPERAND (lhs, 0)))
! 			    != PARM_DECL)))
  		  {
  		    unlink_stmt_vdef (stmt);
  		    gsi_remove (&gsi, true);
diff -Nrcpad gcc-16-20251116/gcc/tree-ssa-loop-im.cc gcc-16-20251123/gcc/tree-ssa-loop-im.cc
*** gcc-16-20251116/gcc/tree-ssa-loop-im.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-ssa-loop-im.cc	Sun Nov 23 22:32:35 2025
*************** move_computations_worker (basic_block bb
*** 1383,1389 ****
  
        if (dump_file && (dump_flags & TDF_DETAILS))
  	{
! 	  fprintf (dump_file, "Moving statement\n");
  	  print_gimple_stmt (dump_file, stmt, 0);
  	  fprintf (dump_file, "(cost %u) out of loop %d.\n\n",
  		   cost, level->num);
--- 1383,1389 ----
  
        if (dump_file && (dump_flags & TDF_DETAILS))
  	{
! 	  fprintf (dump_file, "Moving statement ");
  	  print_gimple_stmt (dump_file, stmt, 0);
  	  fprintf (dump_file, "(cost %u) out of loop %d.\n\n",
  		   cost, level->num);
*************** ref_always_accessed_p (class loop *loop,
*** 3148,3153 ****
--- 3148,3182 ----
  			       ref_always_accessed (loop, stored_p));
  }
  
+ /* Returns true if LOAD_REF and STORE_REF form a "self write" pattern
+    where the stored value comes from the loaded value via SSA.
+    Example: a[i] = a[0] is safe to hoist a[0] even when i==0.  */
+ 
+ static bool
+ is_self_write (im_mem_ref *load_ref, im_mem_ref *store_ref)
+ {
+   /* Only handle the simple case with a single access per ref.
+      Bail out on multiple accesses to be conservative.  */
+   if (load_ref->accesses_in_loop.length () != 1
+       || store_ref->accesses_in_loop.length () != 1)
+     return false;
+ 
+   gimple *load_stmt = load_ref->accesses_in_loop[0].stmt;
+   gimple *store_stmt = store_ref->accesses_in_loop[0].stmt;
+ 
+   if (!is_gimple_assign (load_stmt) || !is_gimple_assign (store_stmt))
+     return false;
+ 
+   tree loaded_val = gimple_assign_lhs (load_stmt);
+   tree stored_val = gimple_assign_rhs1 (store_stmt);
+ 
+   if (TREE_CODE (loaded_val) != SSA_NAME || TREE_CODE (stored_val) != SSA_NAME)
+     return false;
+ 
+   /* Self write: stored value is the loaded value.  */
+   return stored_val == loaded_val;
+ }
+ 
  /* Returns true if REF1 and REF2 are independent.  */
  
  static bool
*************** ref_indep_loop_p (class loop *loop, im_m
*** 3235,3240 ****
--- 3264,3283 ----
  		      break;
  		    }
  		}
+ 	      /* For hoisting loads (lim_raw), allow "self write": the store
+ 		 writes back the loaded value.  Example: a[i] = a[0]
+ 		 is safe even when i==0 causes aliasing.  */
+ 	      else if (kind == lim_raw
+ 		       && ref->loaded && aref->stored
+ 		       && is_self_write (ref, aref))
+ 		{
+ 		  if (dump_file && (dump_flags & TDF_DETAILS))
+ 		    fprintf (dump_file,
+ 			     "Dependency of refs %u and %u: "
+ 			     "independent (self write).\n",
+ 			     ref->id, aref->id);
+ 		}
+ 
  	      else if (!refs_independent_p (ref, aref, kind != sm_waw))
  		{
  		  indep_p = false;
*************** fill_always_executed_in (void)
*** 3534,3539 ****
--- 3577,3588 ----
    bitmap_clear (contains_call);
    FOR_EACH_BB_FN (bb, cfun)
      {
+       if (loop_depth (bb->loop_father) == 0)
+ 	{
+ 	  /* Outside of loops we can skip scanning all stmts.  */
+ 	  bitmap_set_bit (contains_call, bb->index);
+ 	  continue;
+ 	}
        gimple_stmt_iterator gsi;
        for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
  	{
diff -Nrcpad gcc-16-20251116/gcc/tree-ssa-strlen.cc gcc-16-20251123/gcc/tree-ssa-strlen.cc
*** gcc-16-20251116/gcc/tree-ssa-strlen.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-ssa-strlen.cc	Sun Nov 23 22:32:35 2025
*************** maybe_set_strlen_range (tree lhs, tree s
*** 1997,2003 ****
  		  if (tree size = DECL_SIZE_UNIT (base))
  		    if (size
  			&& TREE_CODE (size) == INTEGER_CST
! 			&& TREE_CODE (TREE_TYPE (base)) != POINTER_TYPE)
  		      max = wi::to_wide (size);
  		}
  	    }
--- 1997,2003 ----
  		  if (tree size = DECL_SIZE_UNIT (base))
  		    if (size
  			&& TREE_CODE (size) == INTEGER_CST
! 			&& !POINTER_TYPE_P (TREE_TYPE (base)))
  		      max = wi::to_wide (size);
  		}
  	    }
*************** strlen_pass::handle_builtin_strncat (bui
*** 2792,2798 ****
  bool
  is_strlen_related_p (tree src, tree len)
  {
!   if (TREE_CODE (TREE_TYPE (len)) == POINTER_TYPE
        && operand_equal_p (src, len, 0))
      return true;
  
--- 2792,2798 ----
  bool
  is_strlen_related_p (tree src, tree len)
  {
!   if (POINTER_TYPE_P (TREE_TYPE (len))
        && operand_equal_p (src, len, 0))
      return true;
  
*************** is_strlen_related_p (tree src, tree len)
*** 2853,2859 ****
    tree rhs1 = gimple_assign_rhs1 (lendef);
    tree rhstype = TREE_TYPE (rhs1);
  
!   if ((TREE_CODE (rhstype) == POINTER_TYPE && code == POINTER_PLUS_EXPR)
        || (INTEGRAL_TYPE_P (rhstype)
  	  && (code == BIT_AND_EXPR
  	      || code == NOP_EXPR)))
--- 2853,2859 ----
    tree rhs1 = gimple_assign_rhs1 (lendef);
    tree rhstype = TREE_TYPE (rhs1);
  
!   if ((POINTER_TYPE_P (rhstype) && code == POINTER_PLUS_EXPR)
        || (INTEGRAL_TYPE_P (rhstype)
  	  && (code == BIT_AND_EXPR
  	      || code == NOP_EXPR)))
*************** strlen_pass::handle_assign (tree lhs, tr
*** 5746,5752 ****
  	{
  	  tree ref = TREE_OPERAND (lhs, i);
  	  type = TREE_TYPE (ref);
! 	  if (TREE_CODE (type) == POINTER_TYPE)
  	    type = TREE_TYPE (type);
  	  if (TREE_CODE (type) == ARRAY_TYPE)
  	    type = TREE_TYPE (type);
--- 5746,5752 ----
  	{
  	  tree ref = TREE_OPERAND (lhs, i);
  	  type = TREE_TYPE (ref);
! 	  if (POINTER_TYPE_P (type))
  	    type = TREE_TYPE (type);
  	  if (TREE_CODE (type) == ARRAY_TYPE)
  	    type = TREE_TYPE (type);
diff -Nrcpad gcc-16-20251116/gcc/tree-ssanames.cc gcc-16-20251123/gcc/tree-ssanames.cc
*** gcc-16-20251116/gcc/tree-ssanames.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-ssanames.cc	Sun Nov 23 22:32:35 2025
*************** get_known_nonzero_bits_1 (const_tree nam
*** 594,600 ****
  }
  
  /* Return a wide_int with known non-zero bits in SSA_NAME
!    NAME, the constant for INTEGER_CST, or -1 if unknown.
     In addition to what get_known_nonzero_bits_1 handles, this handles one
     level of BIT_IOR_EXPR, either as a def_stmt or tree directly.  */
  
--- 594,600 ----
  }
  
  /* Return a wide_int with known non-zero bits in SSA_NAME
!    NAME, the constant for INTEGER_CST, or 0 if unknown.
     In addition to what get_known_nonzero_bits_1 handles, this handles one
     level of BIT_IOR_EXPR, either as a def_stmt or tree directly.  */
  
diff -Nrcpad gcc-16-20251116/gcc/tree-vect-loop.cc gcc-16-20251123/gcc/tree-vect-loop.cc
*** gcc-16-20251116/gcc/tree-vect-loop.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-vect-loop.cc	Sun Nov 23 22:32:35 2025
*************** vect_reduction_update_partial_vector_usa
*** 6647,6653 ****
  {
    enum vect_reduction_type reduc_type = VECT_REDUC_INFO_TYPE (reduc_info);
    internal_fn reduc_fn = VECT_REDUC_INFO_FN (reduc_info);
!   internal_fn cond_fn = get_conditional_internal_fn (code, type);
  
    if (reduc_type != FOLD_LEFT_REDUCTION
        && !use_mask_by_cond_expr_p (code, cond_fn, vectype_in)
--- 6647,6656 ----
  {
    enum vect_reduction_type reduc_type = VECT_REDUC_INFO_TYPE (reduc_info);
    internal_fn reduc_fn = VECT_REDUC_INFO_FN (reduc_info);
!   internal_fn cond_fn
!     = ((code.is_internal_fn ()
! 	&& internal_fn_mask_index ((internal_fn)code) != -1)
!        ? (internal_fn)code : get_conditional_internal_fn (code, type));
  
    if (reduc_type != FOLD_LEFT_REDUCTION
        && !use_mask_by_cond_expr_p (code, cond_fn, vectype_in)
*************** vect_transform_reduction (loop_vec_info
*** 7871,7877 ****
    vec_num = vect_get_num_copies (loop_vinfo, SLP_TREE_CHILDREN (slp_node)[0]);
  
    code_helper code = canonicalize_code (op.code, op.type);
!   internal_fn cond_fn = get_conditional_internal_fn (code, op.type);
  
    vec_loop_masks *masks = &LOOP_VINFO_MASKS (loop_vinfo);
    vec_loop_lens *lens = &LOOP_VINFO_LENS (loop_vinfo);
--- 7874,7883 ----
    vec_num = vect_get_num_copies (loop_vinfo, SLP_TREE_CHILDREN (slp_node)[0]);
  
    code_helper code = canonicalize_code (op.code, op.type);
!   internal_fn cond_fn
!     = ((code.is_internal_fn ()
! 	&& internal_fn_mask_index ((internal_fn)code) != -1)
!        ? (internal_fn)code : get_conditional_internal_fn (code, op.type));
  
    vec_loop_masks *masks = &LOOP_VINFO_MASKS (loop_vinfo);
    vec_loop_lens *lens = &LOOP_VINFO_LENS (loop_vinfo);
*************** vect_transform_reduction (loop_vec_info
*** 8119,8135 ****
  	     yet.  */
  	  gcc_assert (!lane_reducing);
  
- 	  /* Make sure that the reduction accumulator is vop[0].  */
- 	  if (reduc_index == 1)
- 	    {
- 	      gcc_assert (commutative_binary_op_p (code, op.type));
- 	      std::swap (vop[0], vop[1]);
- 	    }
  	  tree mask = vect_get_loop_mask (loop_vinfo, gsi, masks,
  					  vec_num, vectype_in,
  					  mask_index++);
! 	  gcall *call = gimple_build_call_internal (cond_fn, 4, mask,
! 						    vop[0], vop[1], vop[0]);
  	  new_temp = make_ssa_name (vec_dest, call);
  	  gimple_call_set_lhs (call, new_temp);
  	  gimple_call_set_nothrow (call, true);
--- 8125,8150 ----
  	     yet.  */
  	  gcc_assert (!lane_reducing);
  
  	  tree mask = vect_get_loop_mask (loop_vinfo, gsi, masks,
  					  vec_num, vectype_in,
  					  mask_index++);
! 	  gcall *call;
! 	  if (code.is_internal_fn () && cond_fn_p)
! 	    {
! 	      gcc_assert (op.num_ops >= 3
! 			  && internal_fn_mask_index (internal_fn (code)) == 0);
! 	      vop[2] = vec_oprnds[2][i];
! 	      mask = prepare_vec_mask (loop_vinfo, TREE_TYPE (mask),
! 				       mask, vop[0], gsi);
! 	      call = gimple_build_call_internal (cond_fn, 4, mask, vop[1],
! 						 vop[2], vop[reduc_index]);
! 	    }
! 	  else
! 	    {
! 	      gcc_assert (code.is_tree_code ());
! 	      call = gimple_build_call_internal (cond_fn, 4, mask, vop[0],
! 						 vop[1], vop[reduc_index]);
! 	    }
  	  new_temp = make_ssa_name (vec_dest, call);
  	  gimple_call_set_lhs (call, new_temp);
  	  gimple_call_set_nothrow (call, true);
diff -Nrcpad gcc-16-20251116/gcc/tree-vect-slp.cc gcc-16-20251123/gcc/tree-vect-slp.cc
*** gcc-16-20251116/gcc/tree-vect-slp.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-vect-slp.cc	Sun Nov 23 22:32:35 2025
*************** vect_analyze_slp_reduction (loop_vec_inf
*** 4723,4728 ****
--- 4723,4911 ----
    return false;
  }
  
+ /* Analyze a single SLP reduction group.  If successful add a SLP instance
+    for it and return true, otherwise return false and have *MATCHES
+    populated.  */
+ 
+ static bool
+ vect_analyze_slp_reduction_group (loop_vec_info loop_vinfo,
+ 				  vec<stmt_vec_info> scalar_stmts,
+ 				  scalar_stmts_to_slp_tree_map_t *bst_map,
+ 				  unsigned max_tree_size, unsigned *limit,
+ 				  bool *matches)
+ {
+   /* Try to form a reduction group.  */
+   unsigned int group_size = scalar_stmts.length ();
+   if (!matches)
+     matches = XALLOCAVEC (bool, group_size);
+   poly_uint64 max_nunits = 1;
+   unsigned tree_size = 0;
+   slp_tree node = vect_build_slp_tree (loop_vinfo, scalar_stmts,
+ 				       group_size,
+ 				       &max_nunits, matches, limit,
+ 				       &tree_size, bst_map);
+   if (!node)
+     return false;
+ 
+   /* Create a new SLP instance.  */
+   slp_instance new_instance = XNEW (class _slp_instance);
+   SLP_INSTANCE_TREE (new_instance) = node;
+   SLP_INSTANCE_LOADS (new_instance) = vNULL;
+   SLP_INSTANCE_ROOT_STMTS (new_instance) = vNULL;
+   SLP_INSTANCE_REMAIN_DEFS (new_instance) = vNULL;
+   SLP_INSTANCE_KIND (new_instance) = slp_inst_kind_reduc_group;
+   new_instance->reduc_phis = NULL;
+   new_instance->cost_vec = vNULL;
+   new_instance->subgraph_entries = vNULL;
+ 
+   if (dump_enabled_p ())
+     dump_printf_loc (MSG_NOTE, vect_location,
+ 		     "SLP size %u vs. limit %u.\n",
+ 		     tree_size, max_tree_size);
+ 
+   loop_vinfo->slp_instances.safe_push (new_instance);
+ 
+   /* ???  We've replaced the old SLP_INSTANCE_GROUP_SIZE with
+      the number of scalar stmts in the root in a few places.
+      Verify that assumption holds.  */
+   gcc_assert (SLP_TREE_SCALAR_STMTS (SLP_INSTANCE_TREE (new_instance))
+ 	      .length () == group_size);
+ 
+   if (dump_enabled_p ())
+     {
+       dump_printf_loc (MSG_NOTE, vect_location,
+ 		       "SLP discovery of size %d reduction group "
+ 		       "succeeded\n", group_size);
+       dump_printf_loc (MSG_NOTE, vect_location,
+ 		       "Final SLP tree for instance %p:\n",
+ 		       (void *) new_instance);
+       vect_print_slp_graph (MSG_NOTE, vect_location,
+ 			    SLP_INSTANCE_TREE (new_instance));
+     }
+ 
+   return true;
+ }
+ 
+ /* Analyze reductions in LOOP_VINFO and populate SLP instances
+    accordingly.  Returns false if something fails.  */
+ 
+ static bool
+ vect_analyze_slp_reductions (loop_vec_info loop_vinfo,
+ 			     unsigned max_tree_size, unsigned *limit,
+ 			     scalar_stmts_to_slp_tree_map_t *bst_map,
+ 			     bool force_single_lane)
+ {
+   if (loop_vinfo->reductions.is_empty ())
+     return true;
+ 
+   /* Collect reduction statements we can combine into
+      a SLP reduction.  */
+   vec<stmt_vec_info> scalar_stmts;
+   scalar_stmts.create (loop_vinfo->reductions.length ());
+   for (auto next_info : loop_vinfo->reductions)
+     {
+       next_info = vect_stmt_to_vectorize (next_info);
+       if ((STMT_VINFO_RELEVANT_P (next_info)
+ 	   || STMT_VINFO_LIVE_P (next_info))
+ 	  /* ???  Make sure we didn't skip a conversion around a
+ 	     reduction path.  In that case we'd have to reverse
+ 	     engineer that conversion stmt following the chain using
+ 	     reduc_idx and from the PHI using reduc_def.  */
+ 	  && (STMT_VINFO_DEF_TYPE (next_info) == vect_reduction_def
+ 	      || (STMT_VINFO_DEF_TYPE (next_info)
+ 		  == vect_double_reduction_def)))
+ 	{
+ 	  /* Do not discover SLP reductions combining lane-reducing
+ 	     ops, that will fail later.  */
+ 	  if (!force_single_lane
+ 	      && !lane_reducing_stmt_p (STMT_VINFO_STMT (next_info)))
+ 	    scalar_stmts.quick_push (next_info);
+ 	  /* Do SLP discovery for single-lane reductions.  */
+ 	  else if (! vect_analyze_slp_reduction (loop_vinfo, next_info,
+ 						 max_tree_size, limit,
+ 						 bst_map,
+ 						 force_single_lane))
+ 	    {
+ 	      scalar_stmts.release ();
+ 	      return false;
+ 	    }
+ 	}
+     }
+ 
+   if (scalar_stmts.length () > 1)
+     {
+       /* Try to form a reduction group.  */
+       unsigned int group_size = scalar_stmts.length ();
+       bool *matches = XALLOCAVEC (bool, group_size);
+       if (vect_analyze_slp_reduction_group (loop_vinfo, scalar_stmts, bst_map,
+ 					    max_tree_size, limit, matches))
+ 	return true;
+ 
+       /* When analysis as a single SLP reduction group failed try to
+ 	 form sub-groups by collecting matching lanes.  Do not recurse
+ 	 that on failure (to limit compile-time costs), but recurse
+ 	 for the initial non-matching parts.  Everything not covered
+ 	 by a sub-group gets single-reduction treatment.  */
+       vec<stmt_vec_info> cands = vNULL;
+       while (matches[0])
+ 	{
+ 	  cands.truncate (0);
+ 	  cands.reserve (group_size, true);
+ 	  for (unsigned i = 0; i < group_size; ++i)
+ 	    if (matches[i])
+ 	      cands.quick_push (scalar_stmts[i]);
+ 
+ 	  /* Try to form a reduction group.  */
+ 	  if (vect_analyze_slp_reduction_group (loop_vinfo, cands, bst_map,
+ 						max_tree_size, limit, NULL))
+ 	    cands = vNULL;
+ 	  else
+ 	    {
+ 	      /* Do SLP discovery for single-lane reductions.  */
+ 	      for (auto stmt_info : cands)
+ 		if (! vect_analyze_slp_reduction (loop_vinfo,
+ 						  vect_stmt_to_vectorize
+ 						    (stmt_info),
+ 						  max_tree_size, limit,
+ 						  bst_map, force_single_lane))
+ 		  {
+ 		    scalar_stmts.release ();
+ 		    cands.release ();
+ 		    return false;
+ 		  }
+ 	    }
+ 	  /* Remove the handled stmts from scalar_stmts and try again,
+ 	     possibly repeating the above with updated matches[].  */
+ 	  unsigned j = 0;
+ 	  for (unsigned i = 0; i < group_size; ++i)
+ 	    if (!matches[i])
+ 	      {
+ 		scalar_stmts[j] = scalar_stmts[i];
+ 		++j;
+ 	      }
+ 	  scalar_stmts.truncate (j);
+ 	  group_size = scalar_stmts.length ();
+ 	  if (vect_analyze_slp_reduction_group (loop_vinfo, scalar_stmts,
+ 						bst_map, max_tree_size, limit,
+ 						matches))
+ 	    return true;
+ 	}
+     }
+   /* Do SLP discovery for single-lane reductions.  */
+   for (auto stmt_info : scalar_stmts)
+     if (! vect_analyze_slp_reduction (loop_vinfo,
+ 				      vect_stmt_to_vectorize (stmt_info),
+ 				      max_tree_size, limit,
+ 				      bst_map, force_single_lane))
+       {
+ 	scalar_stmts.release ();
+ 	return false;
+       }
+ 
+   scalar_stmts.release ();
+   return true;
+ }
+ 
  /* Analyze an SLP instance starting from a group of grouped stores.  Call
     vect_build_slp_tree to build a tree of packed stmts if possible.
     Return FALSE if it's impossible to SLP any stmt in the group.  */
*************** vect_analyze_slp (vec_info *vinfo, unsig
*** 5617,5680 ****
    if (loop_vec_info loop_vinfo = dyn_cast <loop_vec_info> (vinfo))
      {
        /* Find SLP sequences starting from groups of reductions.  */
!       if (loop_vinfo->reductions.length () > 0)
! 	{
! 	  /* Collect reduction statements we can combine into
! 	     a SLP reduction.  */
! 	  vec<stmt_vec_info> scalar_stmts;
! 	  scalar_stmts.create (loop_vinfo->reductions.length ());
! 	  for (auto next_info : loop_vinfo->reductions)
! 	    {
! 	      next_info = vect_stmt_to_vectorize (next_info);
! 	      if ((STMT_VINFO_RELEVANT_P (next_info)
! 		   || STMT_VINFO_LIVE_P (next_info))
! 		  /* ???  Make sure we didn't skip a conversion around a
! 		     reduction path.  In that case we'd have to reverse
! 		     engineer that conversion stmt following the chain using
! 		     reduc_idx and from the PHI using reduc_def.  */
! 		  && (STMT_VINFO_DEF_TYPE (next_info) == vect_reduction_def
! 		      || (STMT_VINFO_DEF_TYPE (next_info)
! 			  == vect_double_reduction_def)))
! 		{
! 		  /* Do not discover SLP reductions combining lane-reducing
! 		     ops, that will fail later.  */
! 		  if (!force_single_lane
! 		      && !lane_reducing_stmt_p (STMT_VINFO_STMT (next_info)))
! 		    scalar_stmts.quick_push (next_info);
! 		  /* Do SLP discovery for single-lane reductions.  */
! 		  else if (! vect_analyze_slp_reduction (loop_vinfo, next_info,
! 							 max_tree_size, &limit,
! 							 bst_map,
! 							 force_single_lane))
! 		    return opt_result::failure_at (vect_location,
! 						   "SLP build failed.\n");
! 		}
! 	    }
! 	  /* Save for re-processing on failure.  */
! 	  vec<stmt_vec_info> saved_stmts = scalar_stmts.copy ();
! 	  vec<stmt_vec_info> roots = vNULL;
! 	  vec<tree> remain = vNULL;
! 	  if (scalar_stmts.length () <= 1
! 	      || !vect_build_slp_instance (loop_vinfo,
! 					   slp_inst_kind_reduc_group,
! 					   scalar_stmts, roots, remain,
! 					   max_tree_size, &limit, bst_map,
! 					   force_single_lane))
! 	    {
! 	      if (scalar_stmts.length () <= 1)
! 		scalar_stmts.release ();
! 	      /* Do SLP discovery for single-lane reductions.  */
! 	      for (auto stmt_info : saved_stmts)
! 		if (! vect_analyze_slp_reduction (loop_vinfo,
! 						  vect_stmt_to_vectorize
! 						    (stmt_info),
! 						  max_tree_size, &limit,
! 						  bst_map, force_single_lane))
! 		  return opt_result::failure_at (vect_location,
! 						 "SLP build failed.\n");
! 	    }
! 	  saved_stmts.release ();
! 	}
  
        /* Make sure to vectorize only-live stmts, usually inductions.  */
        for (edge e : get_loop_exit_edges (LOOP_VINFO_LOOP (loop_vinfo)))
--- 5800,5808 ----
    if (loop_vec_info loop_vinfo = dyn_cast <loop_vec_info> (vinfo))
      {
        /* Find SLP sequences starting from groups of reductions.  */
!       if (!vect_analyze_slp_reductions (loop_vinfo, max_tree_size, &limit,
! 					bst_map, force_single_lane))
! 	return opt_result::failure_at (vect_location, "SLP build failed.\n");
  
        /* Make sure to vectorize only-live stmts, usually inductions.  */
        for (edge e : get_loop_exit_edges (LOOP_VINFO_LOOP (loop_vinfo)))
diff -Nrcpad gcc-16-20251116/gcc/tree-vect-stmts.cc gcc-16-20251123/gcc/tree-vect-stmts.cc
*** gcc-16-20251116/gcc/tree-vect-stmts.cc	Sun Nov 16 22:34:45 2025
--- gcc-16-20251123/gcc/tree-vect-stmts.cc	Sun Nov 23 22:32:35 2025
*************** vectorizable_call (vec_info *vinfo,
*** 3688,3694 ****
      }
  
    int reduc_idx = SLP_TREE_REDUC_IDX (slp_node);
!   internal_fn cond_fn = get_conditional_internal_fn (ifn);
    internal_fn cond_len_fn = get_len_internal_fn (ifn);
    int len_opno = internal_fn_len_index (cond_len_fn);
    vec_loop_masks *masks = (loop_vinfo ? &LOOP_VINFO_MASKS (loop_vinfo) : NULL);
--- 3688,3695 ----
      }
  
    int reduc_idx = SLP_TREE_REDUC_IDX (slp_node);
!   internal_fn cond_fn = (internal_fn_mask_index (ifn) != -1
! 			 ? ifn : get_conditional_internal_fn (ifn));
    internal_fn cond_len_fn = get_len_internal_fn (ifn);
    int len_opno = internal_fn_len_index (cond_len_fn);
    vec_loop_masks *masks = (loop_vinfo ? &LOOP_VINFO_MASKS (loop_vinfo) : NULL);
*************** vectorizable_call (vec_info *vinfo,
*** 3769,3775 ****
        else if (reduc_idx >= 0)
  	gcc_unreachable ();
      }
!   else if (masked_loop_p && reduc_idx >= 0)
      {
        ifn = cond_fn;
        vect_nargs += 2;
--- 3770,3776 ----
        else if (reduc_idx >= 0)
  	gcc_unreachable ();
      }
!   else if (masked_loop_p && mask_opno == -1 && reduc_idx >= 0)
      {
        ifn = cond_fn;
        vect_nargs += 2;
*************** vectorizable_call (vec_info *vinfo,
*** 3812,3819 ****
  	  FOR_EACH_VEC_ELT (vec_oprnds0, i, vec_oprnd0)
  	    {
  	      int varg = 0;
! 	      if (masked_loop_p && reduc_idx >= 0)
  		{
  		  unsigned int vec_num = vec_oprnds0.length ();
  		  vargs[varg++] = vect_get_loop_mask (loop_vinfo, gsi, masks,
  						      vec_num, vectype_out, i);
--- 3813,3822 ----
  	  FOR_EACH_VEC_ELT (vec_oprnds0, i, vec_oprnd0)
  	    {
  	      int varg = 0;
! 	      /* Add the mask if necessary.  */
! 	      if (masked_loop_p && mask_opno == -1 && reduc_idx >= 0)
  		{
+ 		  gcc_assert (internal_fn_mask_index (ifn) == varg);
  		  unsigned int vec_num = vec_oprnds0.length ();
  		  vargs[varg++] = vect_get_loop_mask (loop_vinfo, gsi, masks,
  						      vec_num, vectype_out, i);
*************** vectorizable_call (vec_info *vinfo,
*** 3824,3831 ****
  		  vec<tree> vec_oprndsk = vec_defs[k];
  		  vargs[varg++] = vec_oprndsk[i];
  		}
! 	      if (masked_loop_p && reduc_idx >= 0)
! 		vargs[varg++] = vargs[reduc_idx + 1];
  	      if (clz_ctz_arg1)
  		vargs[varg++] = clz_ctz_arg1;
  
--- 3827,3838 ----
  		  vec<tree> vec_oprndsk = vec_defs[k];
  		  vargs[varg++] = vec_oprndsk[i];
  		}
! 	      /* Add the else value if necessary.  */
! 	      if (masked_loop_p && mask_opno == -1 && reduc_idx >= 0)
! 		{
! 		  gcc_assert (internal_fn_else_index (ifn) == varg);
! 		  vargs[varg++] = vargs[reduc_idx + 1];
! 		}
  	      if (clz_ctz_arg1)
  		vargs[varg++] = clz_ctz_arg1;
  
*************** vectorizable_simd_clone_call (vec_info *
*** 4048,4054 ****
    bb_vec_info bb_vinfo = dyn_cast <bb_vec_info> (vinfo);
    class loop *loop = loop_vinfo ? LOOP_VINFO_LOOP (loop_vinfo) : NULL;
    tree fndecl, new_temp;
!   int ncopies, j;
    auto_vec<simd_call_arg_info> arginfo;
    vec<tree> vargs = vNULL;
    size_t i, nargs;
--- 4055,4061 ----
    bb_vec_info bb_vinfo = dyn_cast <bb_vec_info> (vinfo);
    class loop *loop = loop_vinfo ? LOOP_VINFO_LOOP (loop_vinfo) : NULL;
    tree fndecl, new_temp;
!   int j;
    auto_vec<simd_call_arg_info> arginfo;
    vec<tree> vargs = vNULL;
    size_t i, nargs;
*************** vectorizable_simd_clone_call (vec_info *
*** 4204,4209 ****
--- 4211,4218 ----
  	  && TREE_CODE (op) == SSA_NAME)
  	vect_simd_lane_linear (op, loop, &thisarginfo);
  
+       if (!vectype)
+ 	vectype = thisarginfo.vectype;
        arginfo.quick_push (thisarginfo);
      }
  
*************** vectorizable_simd_clone_call (vec_info *
*** 4332,4343 ****
    if (bestn == NULL)
      return false;
  
-   unsigned int num_mask_args = 0;
-   if (SCALAR_INT_MODE_P (bestn->simdclone->mask_mode))
-     for (i = 0; i < nargs; i++)
-       if (bestn->simdclone->args[i].arg_type == SIMD_CLONE_ARG_TYPE_MASK)
- 	num_mask_args++;
- 
    for (i = 0; i < nargs; i++)
      {
        if ((arginfo[i].dt == vect_constant_def
--- 4341,4346 ----
*************** vectorizable_simd_clone_call (vec_info *
*** 4395,4401 ****
  	    {
  	      if (!SCALAR_INT_MODE_P (TYPE_MODE (arginfo[i].vectype))
  		  || maybe_ne (exact_div (bestn->simdclone->simdlen,
! 					  num_mask_args),
  			       TYPE_VECTOR_SUBPARTS (arginfo[i].vectype)))
  		{
  		  /* FORNOW we only have partial support for integer-type masks
--- 4398,4404 ----
  	    {
  	      if (!SCALAR_INT_MODE_P (TYPE_MODE (arginfo[i].vectype))
  		  || maybe_ne (exact_div (bestn->simdclone->simdlen,
! 					  bestn->simdclone->args[i].linear_step),
  			       TYPE_VECTOR_SUBPARTS (arginfo[i].vectype)))
  		{
  		  /* FORNOW we only have partial support for integer-type masks
*************** vectorizable_simd_clone_call (vec_info *
*** 4423,4429 ****
  
    fndecl = bestn->decl;
    nunits = bestn->simdclone->simdlen;
!   ncopies = vector_unroll_factor (vf * group_size, nunits);
  
    /* If the function isn't const, only allow it in simd loops where user
       has asserted that at least nunits consecutive iterations can be
--- 4426,4432 ----
  
    fndecl = bestn->decl;
    nunits = bestn->simdclone->simdlen;
!   int ncopies = vector_unroll_factor (vf * group_size, nunits);
  
    /* If the function isn't const, only allow it in simd loops where user
       has asserted that at least nunits consecutive iterations can be
*************** vectorizable_simd_clone_call (vec_info *
*** 4432,4437 ****
--- 4435,4445 ----
        && gimple_vuse (stmt))
      return false;
  
+   /* ncopies is the number of SIMD clone calls we create, since simdlen
+      is not necessarily matching nunits of the vector types used, track
+      that in ncopies_in.  */
+   int ncopies_in = vect_get_num_vectors (vf * group_size, vectype);
+ 
    /* Sanity check: make sure that at least one copy of the vectorized stmt
       needs to be generated.  */
    gcc_assert (ncopies >= 1);
*************** vectorizable_simd_clone_call (vec_info *
*** 4485,4492 ****
  		  && LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo))
  		vect_record_loop_mask (loop_vinfo,
  				       &LOOP_VINFO_MASKS (loop_vinfo),
! 				       ncopies, vectype, op);
! 
  	      break;
  	    }
  	}
--- 4493,4499 ----
  		  && LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo))
  		vect_record_loop_mask (loop_vinfo,
  				       &LOOP_VINFO_MASKS (loop_vinfo),
! 				       ncopies_in, vectype, op);
  	      break;
  	    }
  	}
*************** vectorizable_simd_clone_call (vec_info *
*** 4676,4682 ****
  				= &LOOP_VINFO_MASKS (loop_vinfo);
  			      tree loop_mask
  				= vect_get_loop_mask (loop_vinfo, gsi,
! 						      loop_masks, ncopies,
  						      vectype, j);
  			      vec_oprnd0
  				= prepare_vec_mask (loop_vinfo,
--- 4683,4689 ----
  				= &LOOP_VINFO_MASKS (loop_vinfo);
  			      tree loop_mask
  				= vect_get_loop_mask (loop_vinfo, gsi,
! 						      loop_masks, ncopies_in,
  						      vectype, j);
  			      vec_oprnd0
  				= prepare_vec_mask (loop_vinfo,
*************** vectorizable_simd_clone_call (vec_info *
*** 4710,4720 ****
  	      else if (SCALAR_INT_MODE_P (bestn->simdclone->mask_mode))
  		{
  		  atype = bestn->simdclone->args[i].vector_type;
- 		  /* Guess the number of lanes represented by atype.  */
  		  poly_uint64 atype_subparts
  		    = exact_div (bestn->simdclone->simdlen,
! 				 num_mask_args);
! 		  o = vector_unroll_factor (nunits, atype_subparts);
  		  for (m = j * o; m < (j + 1) * o; m++)
  		    {
  		      if (m == 0)
--- 4717,4726 ----
  	      else if (SCALAR_INT_MODE_P (bestn->simdclone->mask_mode))
  		{
  		  atype = bestn->simdclone->args[i].vector_type;
  		  poly_uint64 atype_subparts
  		    = exact_div (bestn->simdclone->simdlen,
! 				 bestn->simdclone->args[i].linear_step);
! 		  o = bestn->simdclone->args[i].linear_step;
  		  for (m = j * o; m < (j + 1) * o; m++)
  		    {
  		      if (m == 0)
*************** vectorizable_simd_clone_call (vec_info *
*** 4730,4739 ****
  		      else if (known_eq (atype_subparts,
  					 TYPE_VECTOR_SUBPARTS (arginfo[i].vectype)))
  			{
  			  /* The vector mask argument matches the input
  			     in the number of lanes, but not necessarily
  			     in the mode.  */
- 			  vec_oprnd0 = vec_oprnds[i][vec_oprnds_i[i]++];
  			  tree st = lang_hooks.types.type_for_mode
  				      (TYPE_MODE (TREE_TYPE (vec_oprnd0)), 1);
  			  vec_oprnd0 = build1 (VIEW_CONVERT_EXPR, st,
--- 4736,4760 ----
  		      else if (known_eq (atype_subparts,
  					 TYPE_VECTOR_SUBPARTS (arginfo[i].vectype)))
  			{
+ 			  vec_oprnd0 = vec_oprnds[i][vec_oprnds_i[i]++];
+ 			  if (loop_vinfo
+ 			      && LOOP_VINFO_FULLY_MASKED_P (loop_vinfo))
+ 			    {
+ 			      vec_loop_masks *loop_masks
+ 				= &LOOP_VINFO_MASKS (loop_vinfo);
+ 			      tree loop_mask
+ 				= vect_get_loop_mask (loop_vinfo, gsi,
+ 						      loop_masks, ncopies_in,
+ 						      vectype, j);
+ 			      vec_oprnd0
+ 				= prepare_vec_mask (loop_vinfo,
+ 						    TREE_TYPE (loop_mask),
+ 						    loop_mask, vec_oprnd0,
+ 						    gsi);
+ 			    }
  			  /* The vector mask argument matches the input
  			     in the number of lanes, but not necessarily
  			     in the mode.  */
  			  tree st = lang_hooks.types.type_for_mode
  				      (TYPE_MODE (TREE_TYPE (vec_oprnd0)), 1);
  			  vec_oprnd0 = build1 (VIEW_CONVERT_EXPR, st,
*************** vectorizable_load (vec_info *vinfo,
*** 9614,9620 ****
    tree msq = NULL_TREE, lsq;
    tree realignment_token = NULL_TREE;
    gphi *phi = NULL;
-   vec<tree> dr_chain = vNULL;
    bool grouped_load = false;
    stmt_vec_info first_stmt_info;
    stmt_vec_info first_stmt_info_for_drptr = NULL;
--- 9635,9640 ----
*************** vectorizable_load (vec_info *vinfo,
*** 10410,10416 ****
  	{
  	  group_gap_adj = group_size - scalar_lanes;
  	}
-       dr_chain.create (vec_num);
  
        ref_type = get_group_alias_ptr_type (first_stmt_info);
      }
--- 10430,10435 ----
*************** vectorizable_load (vec_info *vinfo,
*** 10746,10751 ****
--- 10765,10772 ----
      {
        gcc_assert ((!grouped_load && !ls.slp_perm) || ls.ls_type);
  
+       auto_vec<tree> dr_chain (vec_num);
+ 
        /* If we pun the original vectype the loads as well as costing, length,
  	 etc. is performed with the new type.  After loading we VIEW_CONVERT
  	 the data to the original vectype.  */
*************** vectorizable_load (vec_info *vinfo,
*** 11243,11248 ****
--- 11264,11270 ----
  				       stmt_info, bump);
      }
  
+   auto_vec<tree> dr_chain;
    if (grouped_load || ls.slp_perm)
      dr_chain.create (vec_num);
  
*************** vectorizable_load (vec_info *vinfo,
*** 11802,11808 ****
  						  nullptr, true);
  	  gcc_assert (ok && ls.n_perms == n_perms2);
  	}
-       dr_chain.release ();
      }
  
    if (costing_p)
--- 11824,11829 ----
*************** supportable_widening_operation (vec_info
*** 14047,14055 ****
  					    TYPE_UNSIGNED (prev_type));
  
        if (VECTOR_BOOLEAN_TYPE_P (intermediate_type)
! 	  && VECTOR_BOOLEAN_TYPE_P (prev_type)
! 	  && intermediate_mode == prev_mode
! 	  && SCALAR_INT_MODE_P (prev_mode))
  	{
  	  /* If the input and result modes are the same, a different optab
  	     is needed where we pass in the number of units in vectype.  */
--- 14068,14076 ----
  					    TYPE_UNSIGNED (prev_type));
  
        if (VECTOR_BOOLEAN_TYPE_P (intermediate_type)
! 	  && VECTOR_BOOLEAN_TYPE_P (wide_vectype)
! 	  && intermediate_mode == TYPE_MODE (wide_vectype)
! 	  && SCALAR_INT_MODE_P (intermediate_mode))
  	{
  	  /* If the input and result modes are the same, a different optab
  	     is needed where we pass in the number of units in vectype.  */
diff -Nrcpad gcc-16-20251116/libatomic/ChangeLog gcc-16-20251123/libatomic/ChangeLog
*** gcc-16-20251116/libatomic/ChangeLog	Sun Nov 16 22:34:48 2025
--- gcc-16-20251123/libatomic/ChangeLog	Sun Nov 23 22:32:35 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-11-19  Martin Liska  <martin.liska@hey.com>
+ 
+ 	* acinclude.m4: Add detection for wild linker.
+ 	* configure: Regenerate.
+ 
  2025-11-13  Xi Ruoyao  <xry111@xry111.site>
  
  	* configure.ac (ARCH_LOONGARCH): New AM_CONDITIONAL.
diff -Nrcpad gcc-16-20251116/libatomic/acinclude.m4 gcc-16-20251123/libatomic/acinclude.m4
*** gcc-16-20251116/libatomic/acinclude.m4	Sun Nov 16 22:34:48 2025
--- gcc-16-20251123/libatomic/acinclude.m4	Sun Nov 23 22:32:35 2025
*************** dnl Sets:
*** 300,305 ****
--- 300,306 ----
  dnl  with_gnu_ld
  dnl  libat_ld_is_gold (possibly)
  dnl  libat_ld_is_mold (possibly)
+ dnl  libat_ld_is_wild (possibly)
  dnl  libat_gnu_ld_version (possibly)
  dnl
  dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
*************** AC_DEFUN([LIBAT_CHECK_LINKER_FEATURES],
*** 333,342 ****
--- 334,346 ----
    # does some of this, but throws away the result.
    libat_ld_is_gold=no
    libat_ld_is_mold=no
+   libat_ld_is_wild=no
    if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
      libat_ld_is_gold=yes
    elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
      libat_ld_is_mold=yes
+   elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+     libat_ld_is_wild=yes
    fi
    changequote(,)
    ldver=`$LD --version 2>/dev/null |
*************** if test $enable_symvers != no && test $l
*** 494,499 ****
--- 498,505 ----
        enable_symvers=gnu
      elif test $libat_ld_is_mold = yes ; then
        enable_symvers=gnu
+     elif test $libat_ld_is_wild = yes ; then
+       enable_symvers=gnu
      else
        # The right tools, the right setup, but too old.  Fallbacks?
        AC_MSG_WARN(=== Linker version $libat_gnu_ld_version is too old for)
diff -Nrcpad gcc-16-20251116/libatomic/configure gcc-16-20251123/libatomic/configure
*** gcc-16-20251116/libatomic/configure	Sun Nov 16 22:35:54 2025
--- gcc-16-20251123/libatomic/configure	Sun Nov 23 22:33:00 2025
*************** with_gnu_ld=$lt_cv_prog_gnu_ld
*** 15688,15697 ****
--- 15688,15700 ----
    # does some of this, but throws away the result.
    libat_ld_is_gold=no
    libat_ld_is_mold=no
+   libat_ld_is_wild=no
    if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
      libat_ld_is_gold=yes
    elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
      libat_ld_is_mold=yes
+   elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+     libat_ld_is_wild=yes
    fi
  
    ldver=`$LD --version 2>/dev/null |
*************** if test $enable_symvers != no && test $l
*** 15896,15901 ****
--- 15899,15906 ----
        enable_symvers=gnu
      elif test $libat_ld_is_mold = yes ; then
        enable_symvers=gnu
+     elif test $libat_ld_is_wild = yes ; then
+       enable_symvers=gnu
      else
        # The right tools, the right setup, but too old.  Fallbacks?
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version $libat_gnu_ld_version is too old for" >&5
diff -Nrcpad gcc-16-20251116/libcody/ChangeLog gcc-16-20251123/libcody/ChangeLog
*** gcc-16-20251116/libcody/ChangeLog	Sun Nov 16 22:34:48 2025
--- gcc-16-20251123/libcody/ChangeLog	Sun Nov 23 22:32:35 2025
***************
*** 1,3 ****
--- 1,22 ----
+ 2025-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* cody.hh (S2C): For __cpp_char8_t >= 201811 use char8_t instead of
+ 	char in argument type.
+ 	(MessageBuffer::Space): Revert 2025-11-15 change.
+ 	(MessageBuffer::Append): For __cpp_char8_t >= 201811 add overload
+ 	with char8_t const * type of first argument.
+ 	(Packet::Packet): Similarly for first argument.
+ 	* client.cc (CommunicationError, Client::ProcessResponse,
+ 	Client::Connect, ConnectResponse, PathnameResponse, OKResponse,
+ 	IncludeTranslateResponse): Cast u8 string literals to (const char *)
+ 	where needed.
+ 	* server.cc (Server::ProcessRequests, ConnectRequest): Likewise.
+ 
+ 2025-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* cody.hh (MessageBuffer::Space): For C++14 or newer use
+ 	(char) u8' ' instead of Detail::S2C(u8" ").
+ 
  2023-06-15  Marek Polacek  <polacek@redhat.com>
  
  	* Makefile.in: Pass LD_PICFLAG to LDFLAGS.
diff -Nrcpad gcc-16-20251116/libcody/client.cc gcc-16-20251123/libcody/client.cc
*** gcc-16-20251116/libcody/client.cc	Sun Nov 16 22:34:48 2025
--- gcc-16-20251123/libcody/client.cc	Sun Nov 23 22:32:35 2025
*************** int Client::CommunicateWithServer ()
*** 97,103 ****
  
  static Packet CommunicationError (int err)
  {
!   std::string e {u8"communication error:"};
    e.append (strerror (err));
  
    return Packet (Client::PC_ERROR, std::move (e));
--- 97,103 ----
  
  static Packet CommunicationError (int err)
  {
!   std::string e {(const char *) u8"communication error:"};
    e.append (strerror (err));
  
    return Packet (Client::PC_ERROR, std::move (e));
*************** Packet Client::ProcessResponse (std::vec
*** 110,142 ****
      {
        if (e == EINVAL)
  	{
! 	  std::string msg (u8"malformed string '");
  	  msg.append (words[0]);
! 	  msg.append (u8"'");
  	  return Packet (Client::PC_ERROR, std::move (msg));
  	}
        else
! 	return Packet (Client::PC_ERROR, u8"missing response");
      }
  
    Assert (!words.empty ());
!   if (words[0] == u8"ERROR")
      return Packet (Client::PC_ERROR,
! 		   words.size () == 2 ? words[1]: u8"malformed error response");
  
    if (isLast && !read.IsAtEnd ())
      return Packet (Client::PC_ERROR,
! 		   std::string (u8"unexpected extra response"));
  
    Assert (code < Detail::RC_HWM);
    Packet result (responseTable[code] (words));
    result.SetRequest (code);
    if (result.GetCode () == Client::PC_ERROR && result.GetString ().empty ())
      {
!       std::string msg {u8"malformed response '"};
  
        read.LexedLine (msg);
!       msg.append (u8"'");
        result.GetString () = std::move (msg);
      }
    else if (result.GetCode () == Client::PC_CONNECT)
--- 110,143 ----
      {
        if (e == EINVAL)
  	{
! 	  std::string msg ((const char *) u8"malformed string '");
  	  msg.append (words[0]);
! 	  msg.append ((const char *) u8"'");
  	  return Packet (Client::PC_ERROR, std::move (msg));
  	}
        else
! 	return Packet (Client::PC_ERROR, (const char *) u8"missing response");
      }
  
    Assert (!words.empty ());
!   if (words[0] == (const char *) u8"ERROR")
      return Packet (Client::PC_ERROR,
! 		   words.size () == 2 ? words[1]
! 		   : (const char *) u8"malformed error response");
  
    if (isLast && !read.IsAtEnd ())
      return Packet (Client::PC_ERROR,
! 		   std::string ((const char *) u8"unexpected extra response"));
  
    Assert (code < Detail::RC_HWM);
    Packet result (responseTable[code] (words));
    result.SetRequest (code);
    if (result.GetCode () == Client::PC_ERROR && result.GetString ().empty ())
      {
!       std::string msg {(const char *) u8"malformed response '"};
  
        read.LexedLine (msg);
!       msg.append ((const char *) u8"'");
        result.GetString () = std::move (msg);
      }
    else if (result.GetCode () == Client::PC_CONNECT)
*************** Packet Client::Connect (char const *agen
*** 199,205 ****
  			  size_t alen, size_t ilen)
  {
    write.BeginLine ();
!   write.AppendWord (u8"HELLO");
    write.AppendInteger (Version);
    write.AppendWord (agent, true, alen);
    write.AppendWord (ident, true, ilen);
--- 200,206 ----
  			  size_t alen, size_t ilen)
  {
    write.BeginLine ();
!   write.AppendWord ((const char *) u8"HELLO");
    write.AppendInteger (Version);
    write.AppendWord (agent, true, alen);
    write.AppendWord (ident, true, ilen);
*************** Packet Client::Connect (char const *agen
*** 211,217 ****
  // HELLO $version $agent [$flags]
  Packet ConnectResponse (std::vector<std::string> &words)
  {
!   if (words[0] == u8"HELLO" && (words.size () == 3 || words.size () == 4))
      {
        char *eptr;
        unsigned long val = strtoul (words[1].c_str (), &eptr, 10);
--- 212,219 ----
  // HELLO $version $agent [$flags]
  Packet ConnectResponse (std::vector<std::string> &words)
  {
!   if (words[0] == (const char *) u8"HELLO"
!       && (words.size () == 3 || words.size () == 4))
      {
        char *eptr;
        unsigned long val = strtoul (words[1].c_str (), &eptr, 10);
*************** Packet Client::ModuleRepo ()
*** 247,253 ****
  // PATHNAME $dir | ERROR
  Packet PathnameResponse (std::vector<std::string> &words)
  {
!   if (words[0] == u8"PATHNAME" && words.size () == 2)
      return Packet (Client::PC_PATHNAME, std::move (words[1]));
  
    return Packet (Client::PC_ERROR, u8"");
--- 249,255 ----
  // PATHNAME $dir | ERROR
  Packet PathnameResponse (std::vector<std::string> &words)
  {
!   if (words[0] == (const char *) u8"PATHNAME" && words.size () == 2)
      return Packet (Client::PC_PATHNAME, std::move (words[1]));
  
    return Packet (Client::PC_ERROR, u8"");
*************** Packet PathnameResponse (std::vector<std
*** 256,262 ****
  // OK or ERROR
  Packet OKResponse (std::vector<std::string> &words)
  {
!   if (words[0] == u8"OK")
      return Packet (Client::PC_OK);
    else
      return Packet (Client::PC_ERROR,
--- 258,264 ----
  // OK or ERROR
  Packet OKResponse (std::vector<std::string> &words)
  {
!   if (words[0] == (const char *) u8"OK")
      return Packet (Client::PC_OK);
    else
      return Packet (Client::PC_ERROR,
*************** Packet Client::IncludeTranslate (char co
*** 319,329 ****
  // PATHNAME $cmifile
  Packet IncludeTranslateResponse (std::vector<std::string> &words)
  {
!   if (words[0] == u8"BOOL" && words.size () == 2)
      {
!       if (words[1] == u8"FALSE")
! 	return Packet (Client::PC_BOOL, 0);
!       else if (words[1] == u8"TRUE")
  	return Packet (Client::PC_BOOL, 1);
        else
  	return Packet (Client::PC_ERROR, u8"");
--- 321,331 ----
  // PATHNAME $cmifile
  Packet IncludeTranslateResponse (std::vector<std::string> &words)
  {
!   if (words[0] == (const char *) u8"BOOL" && words.size () == 2)
      {
!       if (words[1] == (const char *) u8"FALSE")
! 	return Packet (Client::PC_BOOL);
!       else if (words[1] == (const char *) u8"TRUE")
  	return Packet (Client::PC_BOOL, 1);
        else
  	return Packet (Client::PC_ERROR, u8"");
diff -Nrcpad gcc-16-20251116/libcody/cody.hh gcc-16-20251123/libcody/cody.hh
*** gcc-16-20251116/libcody/cody.hh	Sun Nov 16 22:34:48 2025
--- gcc-16-20251123/libcody/cody.hh	Sun Nov 23 22:32:35 2025
*************** namespace Detail  {
*** 47,58 ****
--- 47,67 ----
  
  // C++11 doesn't have utf8 character literals :(
  
+ #if __cpp_char8_t >= 201811
+ template<unsigned I>
+ constexpr char S2C (char8_t const (&s)[I])
+ {
+   static_assert (I == 2, "only single octet strings may be converted");
+   return s[0];
+ }
+ #else
  template<unsigned I>
  constexpr char S2C (char const (&s)[I])
  {
    static_assert (I == 2, "only single octet strings may be converted");
    return s[0];
  }
+ #endif
  
  /// Internal buffering class.  Used to concatenate outgoing messages
  /// and Lex incoming ones.
*************** public:
*** 123,128 ****
--- 132,144 ----
        Space ();
      Append (str, maybe_quote, len);
    }
+ #if __cpp_char8_t >= 201811
+   void AppendWord (char8_t const *str, bool maybe_quote = false,
+ 		   size_t len = ~size_t (0))
+   {
+     AppendWord ((const char *) str, maybe_quote, len);
+   }
+ #endif
    /// Add a word as with AppendWord
    /// @param str the string to append
    /// @param maybe_quote string might need quoting, as for Append
*************** public:
*** 264,269 ****
--- 280,291 ----
      : string (s), cat (STRING), code (c)
    {
    }
+ #if __cpp_char8_t >= 201811
+   Packet (unsigned c, const char8_t *s)
+     : string ((const char *) s), cat (STRING), code (c)
+   {
+   }
+ #endif
    Packet (unsigned c, std::vector<std::string> &&v)
      : vector (std::move (v)), cat (VECTOR), code (c)
    {
diff -Nrcpad gcc-16-20251116/libcody/server.cc gcc-16-20251123/libcody/server.cc
*** gcc-16-20251116/libcody/server.cc	Sun Nov 16 22:34:48 2025
--- gcc-16-20251123/libcody/server.cc	Sun Nov 23 22:32:35 2025
*************** static RequestPair
*** 36,47 ****
    const requestTable[Detail::RC_HWM] =
    {
      // Same order as enum RequestCode
!     RequestPair {u8"HELLO", nullptr},
!     RequestPair {u8"MODULE-REPO", ModuleRepoRequest},
!     RequestPair {u8"MODULE-EXPORT", ModuleExportRequest},
!     RequestPair {u8"MODULE-IMPORT", ModuleImportRequest},
!     RequestPair {u8"MODULE-COMPILED", ModuleCompiledRequest},
!     RequestPair {u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
    };
  }
  
--- 36,47 ----
    const requestTable[Detail::RC_HWM] =
    {
      // Same order as enum RequestCode
!     RequestPair {(const char *) u8"HELLO", nullptr},
!     RequestPair {(const char *) u8"MODULE-REPO", ModuleRepoRequest},
!     RequestPair {(const char *) u8"MODULE-EXPORT", ModuleExportRequest},
!     RequestPair {(const char *) u8"MODULE-IMPORT", ModuleImportRequest},
!     RequestPair {(const char *) u8"MODULE-COMPILED", ModuleCompiledRequest},
!     RequestPair {(const char *) u8"INCLUDE-TRANSLATE", IncludeTranslateRequest},
    };
  }
  
*************** void Server::ProcessRequests (void)
*** 135,155 ****
  	  std::string msg;
  
  	  if (err > 0)
! 	    msg = u8"error processing '";
  	  else if (ix >= Detail::RC_HWM)
! 	    msg = u8"unrecognized '";
  	  else if (IsConnected () && ix == Detail::RC_CONNECT)
! 	    msg = u8"already connected '";
  	  else if (!IsConnected () && ix != Detail::RC_CONNECT)
! 	    msg = u8"not connected '";
  	  else
! 	    msg = u8"malformed '";
  
  	  read.LexedLine (msg);
! 	  msg.append (u8"'");
  	  if (err > 0)
  	    {
! 	      msg.append (u8" ");
  	      msg.append (strerror (err));
  	    }
  	  resolver->ErrorResponse (this, std::move (msg));
--- 135,155 ----
  	  std::string msg;
  
  	  if (err > 0)
! 	    msg = (const char *) u8"error processing '";
  	  else if (ix >= Detail::RC_HWM)
! 	    msg = (const char *) u8"unrecognized '";
  	  else if (IsConnected () && ix == Detail::RC_CONNECT)
! 	    msg = (const char *) u8"already connected '";
  	  else if (!IsConnected () && ix != Detail::RC_CONNECT)
! 	    msg = (const char *) u8"not connected '";
  	  else
! 	    msg = (const char *) u8"malformed '";
  
  	  read.LexedLine (msg);
! 	  msg.append ((const char *) u8"'");
  	  if (err > 0)
  	    {
! 	      msg.append ((const char *) u8" ");
  	      msg.append (strerror (err));
  	    }
  	  resolver->ErrorResponse (this, std::move (msg));
*************** Resolver *ConnectRequest (Server *s, Res
*** 176,182 ****
      return nullptr;
  
    if (words.size () == 3)
!     words.emplace_back (u8"");
    unsigned version = ParseUnsigned (words[1]);
    if (version == ~0u)
      return nullptr;
--- 176,182 ----
      return nullptr;
  
    if (words.size () == 3)
!     words.emplace_back ((const char *) u8"");
    unsigned version = ParseUnsigned (words[1]);
    if (version == ~0u)
      return nullptr;
diff -Nrcpad gcc-16-20251116/libgcc/ChangeLog gcc-16-20251123/libgcc/ChangeLog
*** gcc-16-20251116/libgcc/ChangeLog	Sun Nov 16 22:34:48 2025
--- gcc-16-20251123/libgcc/ChangeLog	Sun Nov 23 22:32:36 2025
***************
*** 1,3 ****
--- 1,11 ----
+ 2025-11-21  LIU Hao  <lh_mouse@126.com>
+ 
+ 	PR target/122275
+ 	* config/i386/32/dfp-machine.h (DFP_GET_ROUNDMODE): Change `_frnd_orig` to
+ 	`unsigned short` for x87 control word.
+ 	(DFP_SET_ROUNDMODE): Manipulate the x87 control word as `unsigned short`,
+ 	and manipulate the MXCSR as `unsigned int`.
+ 
  2025-11-11  Lulu Cheng  <chenglulu@loongson.cn>
  
  	* config/loongarch/t-loongarch64: Add cpuinfo.c to LIB2ADD.
diff -Nrcpad gcc-16-20251116/libgcc/config/i386/32/dfp-machine.h gcc-16-20251123/libgcc/config/i386/32/dfp-machine.h
*** gcc-16-20251116/libgcc/config/i386/32/dfp-machine.h	Sun Nov 16 22:34:48 2025
--- gcc-16-20251123/libgcc/config/i386/32/dfp-machine.h	Sun Nov 23 22:32:36 2025
***************
*** 1,7 ****
  #ifndef _SOFT_FLOAT
  /* Get the rounding mode.  */
  #define DFP_GET_ROUNDMODE						\
!   unsigned int _frnd_orig;						\
    do									\
      {									\
        __asm__ __volatile__ ("fnstcw\t%0" : "=m" (_frnd_orig));		\
--- 1,7 ----
  #ifndef _SOFT_FLOAT
  /* Get the rounding mode.  */
  #define DFP_GET_ROUNDMODE						\
!   unsigned short _frnd_orig;						\
    do									\
      {									\
        __asm__ __volatile__ ("fnstcw\t%0" : "=m" (_frnd_orig));		\
***************
*** 13,29 ****
  #define DFP_SET_ROUNDMODE(round)					\
    do									\
      {									\
!       unsigned int _cw;							\
!       __asm__ __volatile__ ("fnstcw\t%0" : "=m" (_cw));			\
!       _cw &= ~FP_RND_MASK;						\
!       _cw |= round;							\
!       __asm__ __volatile__ ("fldcw\t%0" :: "m" (_cw));			\
        if (__builtin_cpu_supports ("sse"))				\
  	{								\
! 	  __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (_cw));		\
! 	  _cw &= ~0x6000;						\
! 	  _cw |= round << 3;						\
! 	  __asm__ __volatile__ ("%vldmxcsr\t%0" :: "m" (_cw));		\
  	}								\
      }									\
    while (0);
--- 13,30 ----
  #define DFP_SET_ROUNDMODE(round)					\
    do									\
      {									\
!       unsigned short _fcw;						\
!       __asm__ __volatile__ ("fnstcw\t%0" : "=m" (_fcw));		\
!       _fcw &= ~FP_RND_MASK;						\
!       _fcw |= round;							\
!       __asm__ __volatile__ ("fldcw\t%0" :: "m" (_fcw));			\
        if (__builtin_cpu_supports ("sse"))				\
  	{								\
! 	  unsigned int _xcw;						\
! 	  __asm__ __volatile__ ("%vstmxcsr\t%0" : "=m" (_xcw));		\
! 	  _xcw &= ~0x6000;						\
! 	  _xcw |= round << 3;						\
! 	  __asm__ __volatile__ ("%vldmxcsr\t%0" :: "m" (_xcw));		\
  	}								\
      }									\
    while (0);
diff -Nrcpad gcc-16-20251116/libgcobol/ChangeLog gcc-16-20251123/libgcobol/ChangeLog
*** gcc-16-20251116/libgcobol/ChangeLog	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/ChangeLog	Sun Nov 23 22:32:36 2025
***************
*** 1,3 ****
--- 1,32 ----
+ 2025-11-18  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/122702
+ 	* Makefile.am: Include posix/udf/posix-open.cbl.
+ 
+ 2025-11-17  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	PR cobol/122702
+ 	* Makefile.am: Set libdir and libsubdir per libada example.
+ 	* Makefile.in: Regenerate.
+ 	* compat/README.md: Revise per new directory structure.
+ 	* compat/gnu/lib/CBL_ALLOC_MEM.cbl: Moved from compat/lib/gnu.
+ 	* compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl: Moved from compat/lib/gnu.
+ 	* compat/gnu/lib/CBL_DELETE_FILE.cbl: Moved from compat/lib/gnu.
+ 	* compat/gnu/lib/CBL_FREE_MEM.cbl: Moved from compat/lib/gnu.
+ 	* compat/gnu/udf/stored-char-length.cbl: New file.
+ 	* compat/lib/gnu/CBL_ALLOC_MEM.cbl: Moved to compat/gnu/lib.
+ 	* compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl: Moved to compat/gnu/lib.
+ 	* compat/lib/gnu/CBL_DELETE_FILE.cbl: Moved to compat/gnu/lib.
+ 	* compat/lib/gnu/CBL_FREE_MEM.cbl: Moved to compat/gnu/lib.
+ 	* posix/cpy/psx-open.cpy: New file.
+ 	* posix/shim/open.cc: New file.
+ 	* posix/shim/stat.h: Add mode & flag bits for open.cc
+ 	* posix/udf/posix-lseek.cbl: New file.
+ 	* posix/udf/posix-open.cbl: New file.
+ 	* posix/udf/posix-read.cbl: New file.
+ 	* posix/udf/posix-write.cbl: New file.
+ 	* xmlparse.cc: Quell context_t initialization-order warning.
+ 
  2025-11-13  James K. Lowden  <jklowden@cobolworx.com>
  
  	* Makefile.am: Move UDF-support to posix/shim, add install targets
diff -Nrcpad gcc-16-20251116/libgcobol/Makefile.am gcc-16-20251123/libgcobol/Makefile.am
*** gcc-16-20251116/libgcobol/Makefile.am	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/Makefile.am	Sun Nov 23 22:32:36 2025
***************
*** 19,24 ****
--- 19,35 ----
  
  # Written de novo for libgcobol.
  
+ # Standard autoconf-set variables.
+ SHELL = @SHELL@
+ srcdir = @srcdir@
+ libdir = @libdir@
+ build = @build@
+ target = @target@
+ prefix = @prefix@
+ 
+ target_noncanonical = @target_noncanonical@
+ version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER)
+ 
  AUTOMAKE_OPTIONS = 1.8 foreign subdir-objects
  ACLOCAL_AMFLAGS = -I .. -I ../config
  
*************** if BUILD_LIBGCOBOL
*** 30,36 ****
  toolexeclib_LTLIBRARIES  = libgcobol.la
  toolexeclib_DATA = libgcobol.spec
  
! libsubincludedir = $(libdir)/gcc/cobol/$(target_noncanonical)/$(gcc_version)
  
  ##
  ## 2.2.12 Automatic Dependency Tracking
--- 41,48 ----
  toolexeclib_LTLIBRARIES  = libgcobol.la
  toolexeclib_DATA = libgcobol.spec
  
! libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)/cobol
! libsubincludedir = $(libsubdir)
  
  ##
  ## 2.2.12 Automatic Dependency Tracking
*************** libgcobol_la_SOURCES =				\
*** 47,52 ****
--- 59,65 ----
  	libgcobol.cc				\
  	posix/shim/errno.cc			\
  	posix/shim/localtime.cc			\
+ 	posix/shim/open.cc			\
  	posix/shim/stat.cc			\
  	stringbin.cc				\
  	valconv.cc				\
*************** libgcobol_la_SOURCES =				\
*** 54,71 ****
  
  libgcobol_la_LIBADD = -lxml2
  
! nobase_libsubinclude_HEADERS = 			\
  	posix/cpy/posix-errno.cbl		\
  	posix/cpy/statbuf.cpy			\
  	posix/udf/posix-exit.cbl		\
  	posix/udf/posix-localtime.cbl		\
  	posix/udf/posix-mkdir.cbl		\
  	posix/udf/posix-stat.cbl		\
  	posix/udf/posix-unlink.cbl		\
! 	compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl	\
! 	compat/lib/gnu/CBL_ALLOC_MEM.cbl	\
! 	compat/lib/gnu/CBL_DELETE_FILE.cbl	\
! 	compat/lib/gnu/CBL_FREE_MEM.cbl
  
  WARN_CFLAGS = -W -Wall -Wwrite-strings
  
--- 67,86 ----
  
  libgcobol_la_LIBADD = -lxml2
  
! nobase_libsubinclude_HEADERS =			\
  	posix/cpy/posix-errno.cbl		\
  	posix/cpy/statbuf.cpy			\
  	posix/udf/posix-exit.cbl		\
  	posix/udf/posix-localtime.cbl		\
  	posix/udf/posix-mkdir.cbl		\
+ 	posix/udf/posix-open.cbl		\
  	posix/udf/posix-stat.cbl		\
  	posix/udf/posix-unlink.cbl		\
! 	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	\
! 	compat/gnu/lib/CBL_ALLOC_MEM.cbl	\
! 	compat/gnu/lib/CBL_DELETE_FILE.cbl	\
! 	compat/gnu/lib/CBL_FREE_MEM.cbl		\
! 	compat/gnu/udf/stored-char-length.cbl
  
  WARN_CFLAGS = -W -Wall -Wwrite-strings
  
diff -Nrcpad gcc-16-20251116/libgcobol/Makefile.in gcc-16-20251123/libgcobol/Makefile.in
*** gcc-16-20251116/libgcobol/Makefile.in	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/Makefile.in	Sun Nov 23 22:32:36 2025
*************** am__dirstamp = $(am__leading_dot)dirstam
*** 184,191 ****
  @BUILD_LIBGCOBOL_TRUE@	intrinsic.lo io.lo libgcobol.lo \
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/errno.lo \
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/localtime.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/stat.lo stringbin.lo \
! @BUILD_LIBGCOBOL_TRUE@	valconv.lo xmlparse.lo
  libgcobol_la_OBJECTS = $(am_libgcobol_la_OBJECTS)
  @BUILD_LIBGCOBOL_TRUE@am_libgcobol_la_rpath = -rpath $(toolexeclibdir)
  AM_V_P = $(am__v_P_@AM_V@)
--- 184,191 ----
  @BUILD_LIBGCOBOL_TRUE@	intrinsic.lo io.lo libgcobol.lo \
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/errno.lo \
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/localtime.lo \
! @BUILD_LIBGCOBOL_TRUE@	posix/shim/open.lo posix/shim/stat.lo \
! @BUILD_LIBGCOBOL_TRUE@	stringbin.lo valconv.lo xmlparse.lo
  libgcobol_la_OBJECTS = $(am_libgcobol_la_OBJECTS)
  @BUILD_LIBGCOBOL_TRUE@am_libgcobol_la_rpath = -rpath $(toolexeclibdir)
  AM_V_P = $(am__v_P_@AM_V@)
*************** DATA = $(toolexeclib_DATA)
*** 236,246 ****
  am__nobase_libsubinclude_HEADERS_DIST = posix/cpy/posix-errno.cbl \
  	posix/cpy/statbuf.cpy posix/udf/posix-exit.cbl \
  	posix/udf/posix-localtime.cbl posix/udf/posix-mkdir.cbl \
! 	posix/udf/posix-stat.cbl posix/udf/posix-unlink.cbl \
! 	compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl \
! 	compat/lib/gnu/CBL_ALLOC_MEM.cbl \
! 	compat/lib/gnu/CBL_DELETE_FILE.cbl \
! 	compat/lib/gnu/CBL_FREE_MEM.cbl
  HEADERS = $(nobase_libsubinclude_HEADERS)
  am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
  	$(LISP)config.h.in
--- 236,248 ----
  am__nobase_libsubinclude_HEADERS_DIST = posix/cpy/posix-errno.cbl \
  	posix/cpy/statbuf.cpy posix/udf/posix-exit.cbl \
  	posix/udf/posix-localtime.cbl posix/udf/posix-mkdir.cbl \
! 	posix/udf/posix-open.cbl posix/udf/posix-stat.cbl \
! 	posix/udf/posix-unlink.cbl \
! 	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl \
! 	compat/gnu/lib/CBL_ALLOC_MEM.cbl \
! 	compat/gnu/lib/CBL_DELETE_FILE.cbl \
! 	compat/gnu/lib/CBL_FREE_MEM.cbl \
! 	compat/gnu/udf/stored-char-length.cbl
  HEADERS = $(nobase_libsubinclude_HEADERS)
  am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
  	$(LISP)config.h.in
*************** PATH_SEPARATOR = @PATH_SEPARATOR@
*** 335,340 ****
--- 337,344 ----
  RANLIB = @RANLIB@
  SED = @SED@
  SET_MAKE = @SET_MAKE@
+ 
+ # Standard autoconf-set variables.
  SHELL = @SHELL@
  SPEC_LIBGCOBOL_DEPS = @SPEC_LIBGCOBOL_DEPS@
  STRIP = @STRIP@
*************** toolexeclibdir = @toolexeclibdir@
*** 404,409 ****
--- 408,414 ----
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
+ version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER)
  AUTOMAKE_OPTIONS = 1.8 foreign subdir-objects
  ACLOCAL_AMFLAGS = -I .. -I ../config
  
*************** gcc_version := $(shell @get_gcc_base_ver
*** 413,419 ****
  # Skip the whole process if we are not building libgcobol.
  @BUILD_LIBGCOBOL_TRUE@toolexeclib_LTLIBRARIES = libgcobol.la
  @BUILD_LIBGCOBOL_TRUE@toolexeclib_DATA = libgcobol.spec
! @BUILD_LIBGCOBOL_TRUE@libsubincludedir = $(libdir)/gcc/cobol/$(target_noncanonical)/$(gcc_version)
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_SOURCES = \
  @BUILD_LIBGCOBOL_TRUE@	charmaps.cc				\
  @BUILD_LIBGCOBOL_TRUE@	constants.cc				\
--- 418,425 ----
  # Skip the whole process if we are not building libgcobol.
  @BUILD_LIBGCOBOL_TRUE@toolexeclib_LTLIBRARIES = libgcobol.la
  @BUILD_LIBGCOBOL_TRUE@toolexeclib_DATA = libgcobol.spec
! @BUILD_LIBGCOBOL_TRUE@libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)/cobol
! @BUILD_LIBGCOBOL_TRUE@libsubincludedir = $(libsubdir)
  @BUILD_LIBGCOBOL_TRUE@libgcobol_la_SOURCES = \
  @BUILD_LIBGCOBOL_TRUE@	charmaps.cc				\
  @BUILD_LIBGCOBOL_TRUE@	constants.cc				\
*************** gcc_version := $(shell @get_gcc_base_ver
*** 424,429 ****
--- 430,436 ----
  @BUILD_LIBGCOBOL_TRUE@	libgcobol.cc				\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/errno.cc			\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/localtime.cc			\
+ @BUILD_LIBGCOBOL_TRUE@	posix/shim/open.cc			\
  @BUILD_LIBGCOBOL_TRUE@	posix/shim/stat.cc			\
  @BUILD_LIBGCOBOL_TRUE@	stringbin.cc				\
  @BUILD_LIBGCOBOL_TRUE@	valconv.cc				\
*************** gcc_version := $(shell @get_gcc_base_ver
*** 436,447 ****
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-exit.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-localtime.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-mkdir.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-stat.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-unlink.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/lib/gnu/CBL_ALLOC_MEM.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/lib/gnu/CBL_DELETE_FILE.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/lib/gnu/CBL_FREE_MEM.cbl
  
  @BUILD_LIBGCOBOL_TRUE@WARN_CFLAGS = -W -Wall -Wwrite-strings
  @BUILD_LIBGCOBOL_TRUE@AM_CPPFLAGS = -I. -I posix/shim \
--- 443,456 ----
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-exit.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-localtime.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-mkdir.cbl		\
+ @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-open.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-stat.cbl		\
  @BUILD_LIBGCOBOL_TRUE@	posix/udf/posix-unlink.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_ALLOC_MEM.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_DELETE_FILE.cbl	\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/lib/CBL_FREE_MEM.cbl		\
! @BUILD_LIBGCOBOL_TRUE@	compat/gnu/udf/stored-char-length.cbl
  
  @BUILD_LIBGCOBOL_TRUE@WARN_CFLAGS = -W -Wall -Wwrite-strings
  @BUILD_LIBGCOBOL_TRUE@AM_CPPFLAGS = -I. -I posix/shim \
*************** posix/shim/errno.lo: posix/shim/$(am__di
*** 558,563 ****
--- 567,574 ----
  	posix/shim/$(DEPDIR)/$(am__dirstamp)
  posix/shim/localtime.lo: posix/shim/$(am__dirstamp) \
  	posix/shim/$(DEPDIR)/$(am__dirstamp)
+ posix/shim/open.lo: posix/shim/$(am__dirstamp) \
+ 	posix/shim/$(DEPDIR)/$(am__dirstamp)
  posix/shim/stat.lo: posix/shim/$(am__dirstamp) \
  	posix/shim/$(DEPDIR)/$(am__dirstamp)
  
*************** distclean-compile:
*** 584,589 ****
--- 595,601 ----
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlparse.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/errno.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/localtime.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/open.Plo@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@posix/shim/$(DEPDIR)/stat.Plo@am__quote@
  
  .cc.o:
diff -Nrcpad gcc-16-20251116/libgcobol/compat/README.md gcc-16-20251123/libgcobol/compat/README.md
*** gcc-16-20251116/libgcobol/compat/README.md	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/compat/README.md	Sun Nov 23 22:32:36 2025
*************** Some of the functions defined here requi
*** 15,21 ****
  At the time of this writing, the functions of greatest concern are
  those that are defined by Rocket Software (formerly MicroFocus) and
  emulated by GnuCOBOL. Those are implemented in
! `gcc/cobol/compat/lib/gnu`.  Any calls they would otherwise make to
  the C library are effected through COBOL POSIX bindings supplied by
  `gcc/cobol/posix/udf`.
  
--- 15,21 ----
  At the time of this writing, the functions of greatest concern are
  those that are defined by Rocket Software (formerly MicroFocus) and
  emulated by GnuCOBOL. Those are implemented in
! `gcc/cobol/compat/gnu/lib`.  Any calls they would otherwise make to
  the C library are effected through COBOL POSIX bindings supplied by
  `gcc/cobol/posix/udf`.
  
diff -Nrcpad gcc-16-20251116/libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl gcc-16-20251123/libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl
*** gcc-16-20251116/libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/compat/gnu/lib/CBL_ALLOC_MEM.cbl	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,41 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden
+       * 
+       * CALL "CBL_ALLOC_MEM" using     mem-pointer
+       *                      by value  mem-size
+       *                      by value  flags
+       *                      returning status-code
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_ALLOC_MEM. 
+ 
+        DATA DIVISION.
+ 
+        LINKAGE SECTION.
+        01  MEMORY-REQUESTED		PIC X(8) COMP-5.
+        01  MEMORY-ALLOCATED		USAGE IS POINTER.
+        01  FLAGS                	PIC X(8) COMP-5.
+        77  STATUS-CODE                  BINARY-LONG SIGNED VALUE 0.
+ 
+        PROCEDURE DIVISION USING     MEMORY-ALLOCATED,
+                           BY VALUE  MEMORY-REQUESTED, 
+                           BY VALUE  FLAGS
+                           RETURNING STATUS-CODE.
+ 
+       D     Display 'MEMORY-REQUESTED: ' MEMORY-REQUESTED
+       D            ' CHARACTERS INITIALIZED'
+ 
+            ALLOCATE MEMORY-REQUESTED CHARACTERS INITIALIZED,
+                     RETURNING MEMORY-ALLOCATED.
+ 
+       D    IF MEMORY-ALLOCATED = NULLS THEN MOVE 1 TO STATUS-CODE.
+ 
+            END PROGRAM CBL_ALLOC_MEM.
+ 
+         >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl gcc-16-20251123/libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl
*** gcc-16-20251116/libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/compat/gnu/lib/CBL_CHECK_FILE_EXIST.cbl	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,47 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+       * Include the posix-stat function
+         COPY posix-stat.
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in August 2024
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_CHECK_FILE_EXIST.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+        77  FUNC-RETURN-VALUE		PIC 9(8) COMP-5.
+        01  STAT-BUFFER.
+            COPY statbuf.
+        LINKAGE SECTION.
+        77  RETURN-CODE			PIC 9(8) COMP-5.
+        01  FILE-PATH 			PIC X ANY LENGTH.
+        01  FI-FILE-INFO.
+            05  FI-FILE-SIZE-IN-BYTES	PIC 9(8) COMP-4.
+            05  FI-FILE-MOD-DATE-TIME.
+                10  FI-FILE-DATE		PIC 9(8) COMP-4.
+                10  FI-FILE-TIME		PIC 9(8) COMP-4.
+ 
+        PROCEDURE DIVISION USING FILE-PATH, FI-FILE-INFO,
+                           RETURNING RETURN-CODE.
+            MOVE FUNCTION posix-stat(FILE-PATH, STAT-BUFFER)
+              TO FUNC-RETURN-VALUE.
+              
+            IF FUNC-RETURN-VALUE = ZERO
+            THEN
+                MOVE ZERO TO RETURN-CODE
+                MOVE st_size  TO FI-FILE-SIZE-IN-BYTES
+                MOVE st_mtime TO FI-FILE-MOD-DATE-TIME
+            ELSE
+                MOVE 1 TO RETURN-CODE
+                MOVE ZERO TO FI-FILE-SIZE-IN-BYTES
+                MOVE ZERO TO FI-FILE-DATE
+                MOVE ZERO TO FI-FILE-TIME.
+ 
+            END PROGRAM CBL_CHECK_FILE_EXIST.
+ 
+         >> POP SOURCE FORMAT
+ `
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl gcc-16-20251123/libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl
*** gcc-16-20251116/libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/compat/gnu/lib/CBL_DELETE_FILE.cbl	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,30 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+       * Include the posix-unlink function
+         COPY posix-unlink.
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
+       *  This function is in the public domain.
+       *  Contributed by 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_DELETE_FILE.
+        DATA DIVISION.
+        WORKING-STORAGE SECTION.
+           77 BUFSIZE USAGE BINARY-LONG.
+        LINKAGE SECTION.
+        77  RETURN-CODE			PIC 9(8) COMP-5.
+        01  FILE-PATH			PIC X ANY LENGTH.
+ 
+        PROCEDURE DIVISION USING FILE-PATH, RETURNING RETURN-CODE.
+ 
+            INSPECT FILE-PATH 
+                    REPLACING TRAILING SPACE BY LOW-VALUE
+ 
+            MOVE FUNCTION posix-unlink(FILE-PATH) TO RETURN-CODE.
+ 
+            END PROGRAM CBL_DELETE_FILE.
+ 
+         >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl gcc-16-20251123/libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl
*** gcc-16-20251116/libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/compat/gnu/lib/CBL_FREE_MEM.cbl	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,26 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
+       *  This function is in the public domain.
+       *  Contributed by 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+ 
+        IDENTIFICATION DIVISION.
+        PROGRAM-ID. CBL_FREE_MEM.
+ 
+        DATA DIVISION.
+        LINKAGE SECTION.
+        77  RETURN-CODE			PIC 9(8) COMP.
+        01  MEMORY-ADDRESS		USAGE IS POINTER.
+ 
+        PROCEDURE DIVISION USING MEMORY-ADDRESS, 
+                       RETURNING RETURN-CODE.
+ 
+            FREE MEMORY-ADDRESS.
+            MOVE ZERO TO RETURN-CODE.
+ 
+            END PROGRAM CBL_FREE_MEM.
+ 
+         >> POP SOURCE FORMAT
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/libgcobol/compat/gnu/udf/stored-char-length.cbl gcc-16-20251123/libgcobol/compat/gnu/udf/stored-char-length.cbl
*** gcc-16-20251116/libgcobol/compat/gnu/udf/stored-char-length.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/compat/gnu/udf/stored-char-length.cbl	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,21 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in August 2024
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ 
+         Identification Division.
+         Function-ID. STORED-CHAR-LENGTH.
+         Data Division.
+         Linkage Section.
+         01 Candidate PIC X Any Length.
+         77 Output-Value    PIC 9(8) COMP-5.
+         
+         Procedure Division using Candidate RETURNING Output-Value.
+           Move Function Length( Function Trim(Candidate) )
+             to Output-Value. 
+         End Function STORED-CHAR-LENGTH.
+ 
+         >> POP source format
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl gcc-16-20251123/libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl
*** gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/compat/lib/gnu/CBL_ALLOC_MEM.cbl	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
-        >>PUSH SOURCE FORMAT
-        >>SOURCE FIXED
- 
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
-       *  This function is in the public domain.
-       *  Contributed by James K. Lowden
-       * 
-       * CALL "CBL_ALLOC_MEM" using     mem-pointer
-       *                      by value  mem-size
-       *                      by value  flags
-       *                      returning status-code
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
- 
-        IDENTIFICATION DIVISION.
-        PROGRAM-ID. CBL_ALLOC_MEM. 
- 
-        DATA DIVISION.
- 
-        LINKAGE SECTION.
-        01  MEMORY-REQUESTED		PIC X(8) COMP-5.
-        01  MEMORY-ALLOCATED		USAGE IS POINTER.
-        01  FLAGS                	PIC X(8) COMP-5.
-        77  STATUS-CODE                  BINARY-LONG SIGNED VALUE 0.
- 
-        PROCEDURE DIVISION USING     MEMORY-ALLOCATED,
-                           BY VALUE  MEMORY-REQUESTED, 
-                           BY VALUE  FLAGS
-                           RETURNING STATUS-CODE.
- 
-       D     Display 'MEMORY-REQUESTED: ' MEMORY-REQUESTED
-       D            ' CHARACTERS INITIALIZED'
- 
-            ALLOCATE MEMORY-REQUESTED CHARACTERS INITIALIZED,
-                     RETURNING MEMORY-ALLOCATED.
- 
-       D    IF MEMORY-ALLOCATED = NULLS THEN MOVE 1 TO STATUS-CODE.
- 
-            END PROGRAM CBL_ALLOC_MEM.
- 
-         >> POP SOURCE FORMAT
\ No newline at end of file
--- 0 ----
diff -Nrcpad gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl gcc-16-20251123/libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl
*** gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/compat/lib/gnu/CBL_CHECK_FILE_EXIST.cbl	Thu Jan  1 00:00:00 1970
***************
*** 1,47 ****
-        >>PUSH SOURCE FORMAT
-        >>SOURCE FIXED
-       * Include the posix-stat function
-         COPY posix-stat.
- 
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
-       *  This function is in the public domain.
-       *  Contributed by James K. Lowden of Cobolworx in August 2024
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
- 
-        IDENTIFICATION DIVISION.
-        PROGRAM-ID. CBL_CHECK_FILE_EXIST.
-        DATA DIVISION.
-        WORKING-STORAGE SECTION.
-        77  FUNC-RETURN-VALUE		PIC 9(8) COMP-5.
-        01  STAT-BUFFER.
-            COPY statbuf.
-        LINKAGE SECTION.
-        77  RETURN-CODE			PIC 9(8) COMP-5.
-        01  FILE-PATH 			PIC X ANY LENGTH.
-        01  FI-FILE-INFO.
-            05  FI-FILE-SIZE-IN-BYTES	PIC 9(8) COMP-4.
-            05  FI-FILE-MOD-DATE-TIME.
-                10  FI-FILE-DATE		PIC 9(8) COMP-4.
-                10  FI-FILE-TIME		PIC 9(8) COMP-4.
- 
-        PROCEDURE DIVISION USING FILE-PATH, FI-FILE-INFO,
-                           RETURNING RETURN-CODE.
-            MOVE FUNCTION posix-stat(FILE-PATH, STAT-BUFFER)
-              TO FUNC-RETURN-VALUE.
-              
-            IF FUNC-RETURN-VALUE = ZERO
-            THEN
-                MOVE ZERO TO RETURN-CODE
-                MOVE st_size  TO FI-FILE-SIZE-IN-BYTES
-                MOVE st_mtime TO FI-FILE-MOD-DATE-TIME
-            ELSE
-                MOVE 1 TO RETURN-CODE
-                MOVE ZERO TO FI-FILE-SIZE-IN-BYTES
-                MOVE ZERO TO FI-FILE-DATE
-                MOVE ZERO TO FI-FILE-TIME.
- 
-            END PROGRAM CBL_CHECK_FILE_EXIST.
- 
-         >> POP SOURCE FORMAT
- `
\ No newline at end of file
--- 0 ----
diff -Nrcpad gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl gcc-16-20251123/libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl
*** gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/compat/lib/gnu/CBL_DELETE_FILE.cbl	Thu Jan  1 00:00:00 1970
***************
*** 1,30 ****
-        >>PUSH SOURCE FORMAT
-        >>SOURCE FIXED
-       * Include the posix-unlink function
-         COPY posix-unlink.
- 
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
-       *  This function is in the public domain.
-       *  Contributed by 
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
- 
-        IDENTIFICATION DIVISION.
-        PROGRAM-ID. CBL_DELETE_FILE.
-        DATA DIVISION.
-        WORKING-STORAGE SECTION.
-           77 BUFSIZE USAGE BINARY-LONG.
-        LINKAGE SECTION.
-        77  RETURN-CODE			PIC 9(8) COMP-5.
-        01  FILE-PATH			PIC X ANY LENGTH.
- 
-        PROCEDURE DIVISION USING FILE-PATH, RETURNING RETURN-CODE.
- 
-            INSPECT FILE-PATH 
-                    REPLACING TRAILING SPACE BY LOW-VALUE
- 
-            MOVE FUNCTION posix-unlink(FILE-PATH) TO RETURN-CODE.
- 
-            END PROGRAM CBL_DELETE_FILE.
- 
-         >> POP SOURCE FORMAT
\ No newline at end of file
--- 0 ----
diff -Nrcpad gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl gcc-16-20251123/libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl
*** gcc-16-20251116/libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/compat/lib/gnu/CBL_FREE_MEM.cbl	Thu Jan  1 00:00:00 1970
***************
*** 1,26 ****
-        >>PUSH SOURCE FORMAT
-        >>SOURCE FIXED
- 
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-       * MODIFY AFTER SUCCESSFUL TESTING / IMPLEMENTATION (VPH)
-       *  This function is in the public domain.
-       *  Contributed by 
-       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
- 
-        IDENTIFICATION DIVISION.
-        PROGRAM-ID. CBL_FREE_MEM.
- 
-        DATA DIVISION.
-        LINKAGE SECTION.
-        77  RETURN-CODE			PIC 9(8) COMP.
-        01  MEMORY-ADDRESS		USAGE IS POINTER.
- 
-        PROCEDURE DIVISION USING MEMORY-ADDRESS, 
-                       RETURNING RETURN-CODE.
- 
-            FREE MEMORY-ADDRESS.
-            MOVE ZERO TO RETURN-CODE.
- 
-            END PROGRAM CBL_FREE_MEM.
- 
-         >> POP SOURCE FORMAT
\ No newline at end of file
--- 0 ----
diff -Nrcpad gcc-16-20251116/libgcobol/posix/cpy/psx-open.cpy gcc-16-20251123/libgcobol/posix/cpy/psx-open.cpy
*** gcc-16-20251116/libgcobol/posix/cpy/psx-open.cpy	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/posix/cpy/psx-open.cpy	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,59 ----
+         >> PUSH source format
+         >>SOURCE format is fixed
+ 
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This file is in the public domain.
+       *  Contributed by James K. Lowden of Cobolworx in November 2025.
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ 
+       * >>DEFINE O_ACCMODE AS 3
+ 
+         >>DEFINE O_APPEND      AS     1024
+       * >>DEFINE O_ASYNC                   not used by open(2)
+         >>DEFINE O_CLOEXEC     AS   524288
+         >>DEFINE O_CREAT       AS       64
+         >>DEFINE O_DIRECT      AS    16384 
+         >>DEFINE O_DIRECTORY   AS    65536
+         >>DEFINE O_DSYNC       AS     4096
+         >>DEFINE O_EXCL        AS      128
+         >>DEFINE O_LARGEFILE   AS    32768
+         >>DEFINE O_NOATIME     AS   262144
+         >>DEFINE O_NOCTTY      AS      256
+         >>DEFINE O_NOFOLLOW    AS   131072
+         >>DEFINE O_NONBLOCK    AS     2048
+         >>DEFINE O_PATH        AS  2097152
+         >>DEFINE O_RDONLY      AS        0
+         >>DEFINE O_RDWR        AS        2
+         >>DEFINE O_SYNC        AS  1052672
+         >>DEFINE O_TMPFILE     AS  4194304 + O_DIRECTORY
+         >>DEFINE O_TRUNC       AS      512
+         >>DEFINE O_WRONLY      AS        1
+ 
+ 
+       * >>DEFINE S_IFBLK  AS 24576
+       * >>DEFINE S_IFCHR  AS  8192
+       * >>DEFINE S_IFDIR  AS 16384
+       * >>DEFINE S_IFIFO  AS  4096
+       * >>DEFINE S_IFLNK  AS 40960
+       * >>DEFINE S_IFMT   AS 61440
+       * >>DEFINE S_IFREG  AS 32768
+       * >>DEFINE S_IFSOCK AS 49152
+         
+         >>DEFINE S_IRGRP  AS    32
+         >>DEFINE S_IROTH  AS     4
+         >>DEFINE S_IRUSR  AS   256
+         >>DEFINE S_IRWXG  AS    56
+         >>DEFINE S_IRWXO  AS     7
+         >>DEFINE S_IRWXU  AS   448
+         >>DEFINE S_ISGID  AS  1024
+         >>DEFINE S_ISUID  AS  2048
+         >>DEFINE S_ISVTX  AS   512
+         >>DEFINE S_IWGRP  AS    16
+         >>DEFINE S_IWOTH  AS     2
+         >>DEFINE S_IWUSR  AS   128
+         >>DEFINE S_IXGRP  AS     8
+         >>DEFINE S_IXOTH  AS     1
+         >>DEFINE S_IXUSR  AS    64
+ 
+         >> POP source format
+ 
diff -Nrcpad gcc-16-20251116/libgcobol/posix/shim/open.cc gcc-16-20251123/libgcobol/posix/shim/open.cc
*** gcc-16-20251116/libgcobol/posix/shim/open.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/posix/shim/open.cc	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,87 ----
+ #include <assert.h>
+ #include <fcntl.h>
+ #include <stddef.h>
+ #include <stdio.h>
+ #include <unistd.h>
+ 
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ 
+ #include <map>
+ 
+ #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)
+ 
+ extern "C" {
+ 
+ #include "stat.h"
+ 
+ int
+ posix_opent(const char *pathname, int cbl_flags, int cbl_mode) {
+ 
+   static const std::map<int, int> flag_bits {
+     { cbl::PSX_O_RDONLY, O_RDONLY },
+     { cbl::PSX_O_WRONLY, O_WRONLY },
+     { cbl::PSX_O_RDWR, O_RDWR }, 
+     { cbl::PSX_O_CREAT, O_CREAT },
+     { cbl::PSX_O_EXCL, O_EXCL }, 
+     { cbl::PSX_O_NOCTTY, O_NOCTTY }, 
+     { cbl::PSX_O_TRUNC, O_TRUNC },
+     { cbl::PSX_O_APPEND, O_APPEND }, 
+     { cbl::PSX_O_NONBLOCK, O_NONBLOCK },
+     { cbl::PSX_O_DSYNC, O_DSYNC },
+     { cbl::PSX_O_DIRECT, O_DIRECT }, 
+     { cbl::PSX_O_LARGEFILE, O_LARGEFILE }, 
+     { cbl::PSX_O_DIRECTORY, O_DIRECTORY }, 
+     { cbl::PSX_O_NOFOLLOW, O_NOFOLLOW }, 
+     { cbl::PSX_O_NOATIME, O_NOATIME }, 
+     { cbl::PSX_O_CLOEXEC, O_CLOEXEC }, 
+     { cbl::PSX_O_SYNC, O_SYNC }, 
+     { cbl::PSX_O_PATH, O_PATH }, 
+     { cbl::PSX_O_TMPFILE, O_TMPFILE }, 
+   };    
+ 
+   static const std::map<int, int> mode_bits {
+     { cbl::PSX_S_IXOTH, S_IXOTH }, 
+     { cbl::PSX_S_IWOTH, S_IWOTH }, 
+     { cbl::PSX_S_IROTH, S_IROTH }, 
+     { cbl::PSX_S_IRWXO, S_IRWXO }, 
+     { cbl::PSX_S_IXGRP, S_IXGRP }, 
+     { cbl::PSX_S_IWGRP, S_IWGRP }, 
+     { cbl::PSX_S_IRGRP, S_IRGRP }, 
+     { cbl::PSX_S_IRWXG, S_IRWXG }, 
+     { cbl::PSX_S_IXUSR, S_IXUSR }, 
+     { cbl::PSX_S_IWUSR, S_IWUSR }, 
+     { cbl::PSX_S_IRUSR, S_IRUSR }, 
+     { cbl::PSX_S_IRWXU, S_IRWXU }, 
+     { cbl::PSX_S_ISVTX, S_ISVTX }, 
+     { cbl::PSX_S_ISGID, S_ISGID }, 
+     { cbl::PSX_S_ISUID, S_ISUID }, 
+   };
+   
+   int flags = 0;
+   mode_t mode = 0;
+   
+   for( auto elem : flag_bits ) {
+     int cbl_bit = elem.first;
+     int std_bit = elem.second;
+     
+     if( cbl_bit == (cbl_bit & cbl_flags) ) {
+       flags |= std_bit;
+     }
+   }
+ 
+   for( auto elem : mode_bits ) {
+     int cbl_bit = elem.first;
+     int std_bit = elem.second;
+     
+     if( cbl_bit == (cbl_bit & cbl_mode) ) {
+       mode |= std_bit;
+     }
+   }
+ 
+   int erc = open(pathname, flags, mode);
+ 
+   return erc;
+ }
+ 
+ } // extern "C"
diff -Nrcpad gcc-16-20251116/libgcobol/posix/shim/stat.h gcc-16-20251123/libgcobol/posix/shim/stat.h
*** gcc-16-20251116/libgcobol/posix/shim/stat.h	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/posix/shim/stat.h	Sun Nov 23 22:32:36 2025
*************** struct posix_stat_t {
*** 40,42 ****
--- 40,86 ----
    cbl::time_t    psx_mtime;      /* Time of last modification */
    cbl::time_t    psx_ctime;      /* Time of last status change */
  };
+ 
+ namespace cbl {
+ 
+   enum flags_t {
+     PSX_O_RDONLY    =        0,
+     PSX_O_WRONLY    =        1,
+     PSX_O_RDWR      =        2,
+     PSX_O_CREAT     =       64,
+     PSX_O_EXCL      =      128,
+     PSX_O_NOCTTY    =      256,
+     PSX_O_TRUNC     =      512,
+     PSX_O_APPEND    =     1024,
+     PSX_O_NONBLOCK  =     2048,
+     PSX_O_DSYNC     =     4096,
+     PSX_O_DIRECT    =    16384 ,
+     PSX_O_LARGEFILE =    32768,
+     PSX_O_DIRECTORY =    65536,
+     PSX_O_NOFOLLOW  =   131072,
+     PSX_O_NOATIME   =   262144,
+     PSX_O_CLOEXEC   =   524288,
+     PSX_O_SYNC      =  1052672,
+     PSX_O_PATH      =  2097152,
+     PSX_O_TMPFILE   =  4194304 + PSX_O_DIRECTORY,
+   };
+ 
+   enum open_mode_t {
+     PSX_S_IXOTH =    1,
+     PSX_S_IWOTH =    2,
+     PSX_S_IROTH =    4,
+     PSX_S_IRWXO =    7,
+     PSX_S_IXGRP =    8,
+     PSX_S_IWGRP =   16,
+     PSX_S_IRGRP =   32,
+     PSX_S_IRWXG =   56,
+     PSX_S_IXUSR =   64,
+     PSX_S_IWUSR =  128,
+     PSX_S_IRUSR =  256,
+     PSX_S_IRWXU =  448,
+     PSX_S_ISVTX =  512,
+     PSX_S_ISGID = 1024,
+     PSX_S_ISUID = 2048,
+   };
+ 
+ };
diff -Nrcpad gcc-16-20251116/libgcobol/posix/udf/posix-lseek.cbl gcc-16-20251123/libgcobol/posix/udf/posix-lseek.cbl
*** gcc-16-20251116/libgcobol/posix/udf/posix-lseek.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/posix/udf/posix-lseek.cbl	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,25 ----
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden of COBOLworx November 2025.
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+       *  unsigned long  lseek( int  fd,  unsigned long  offset,  int  whence)
+         Identification Division.
+         Function-ID. posix-lseek.
+         Data Division.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-fd PIC 9(8) Usage COMP.
+           01 Lk-offset Binary-Long.
+           01 Lk-whence Binary-Long.
+         Procedure Division using
+              By Value Lk-fd,
+              By Value Lk-offset,
+              By Value Lk-whence
+              Returning Return-Value.
+           Call "lseek" using
+              By Value Lk-fd,
+              By Value Lk-offset,
+              By Value Lk-whence
+              Returning Return-Value.
+           Goback.
+         End Function posix-lseek.
diff -Nrcpad gcc-16-20251116/libgcobol/posix/udf/posix-open.cbl gcc-16-20251123/libgcobol/posix/udf/posix-open.cbl
*** gcc-16-20251116/libgcobol/posix/udf/posix-open.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/posix/udf/posix-open.cbl	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,53 ----
+        >>PUSH SOURCE FORMAT
+        >>SOURCE FIXED
+       * int open(const char *pathname, int flags);
+         Identification Division.
+         Function-ID. posix-open.
+ 
+         Environment Division.
+         Configuration Section.
+           Source-Computer. Sesame-Cookie
+         >>IF DEBUGGING-MODE is Defined
+           With Debugging Mode
+         >>END-IF
+           .
+         
+         Data Division.
+         Working-Storage Section.
+           77 Ws-pathname PIC X(8192).
+           77 Ws-mode-ptr Pointer.
+           77 Ws-mode     PIC 9(8) Value 0.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-pathname PIC X ANY LENGTH.
+           01 Lk-flags    PIC 9(8).
+           01 Lk-mode     PIC 9(8).
+ 
+         Procedure Division using
+              By Reference Lk-pathname,
+              By Reference Lk-flags,
+              By Reference Optional Lk-mode 
+              Returning Return-Value.
+ 
+           Move Lk-pathname To Ws-pathname.
+           Inspect Ws-pathname 
+                   Replacing Trailing Space By Low-Value
+ 
+       D   Display 'posix-open: Ws-pathname ', Ws-pathname.
+       D   Perform Show-Flags.
+ 
+           Set ws-mode-ptr to Address Of Lk-mode.
+ 
+           If ws-mode-ptr > 0 Then *> O_CREAT requires mode
+             Move Lk-mode to Ws-mode.
+             
+           Call "posix_open" using Ws-pathname, Lk-flags, Ws-mode, 
+                               Returning Return-Value.
+           Goback.
+ 
+           Show-Flags Section.
+ 
+             Display 'Flags: ', Function Hex-Of(Lk-flags).
+ 
+         End Function posix-open.
+         >> POP SOURCE FORMAT
diff -Nrcpad gcc-16-20251116/libgcobol/posix/udf/posix-read.cbl gcc-16-20251123/libgcobol/posix/udf/posix-read.cbl
*** gcc-16-20251116/libgcobol/posix/udf/posix-read.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/posix/udf/posix-read.cbl	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,26 ----
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden of COBOLworx November 2025.
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+       *  long  read( int  fd,  void *  buf,  unsigned long  count)
+         Identification Division.
+         Function-ID. posix-read.
+         Data Division.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-fd PIC 9(8) Usage COMP.
+           01 Lk-buf PIC X ANY LENGTH.
+           01 Lk-count PIC 9(8) Usage COMP.
+         Procedure Division using
+              By Value Lk-fd,
+              By Reference Lk-buf,
+              By Value Lk-count
+              Returning Return-Value.
+ 
+           Call "read" using
+              By Value Lk-fd,
+              By Reference Lk-buf,
+              By Value Lk-count
+              Returning Return-Value.
+           Goback.
+         End Function posix-read.
diff -Nrcpad gcc-16-20251116/libgcobol/posix/udf/posix-write.cbl gcc-16-20251123/libgcobol/posix/udf/posix-write.cbl
*** gcc-16-20251116/libgcobol/posix/udf/posix-write.cbl	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgcobol/posix/udf/posix-write.cbl	Sun Nov 23 22:32:36 2025
***************
*** 0 ****
--- 1,26 ----
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       *  This function is in the public domain.
+       *  Contributed by James K. Lowden of COBOLworx November 2025.
+       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *   
+       *  long  write( int  fd, const void *  buf,  unsigned long  count)
+         Identification Division.
+         Function-ID. posix-write.
+         Data Division.
+         Linkage Section.
+           77 Return-Value Binary-Long.
+           01 Lk-fd PIC 9(8) Usage COMP.
+           01 Lk-buf PIC X ANY LENGTH.
+           01 Lk-count PIC 9(8) Usage COMP.
+         Procedure Division using
+              By Value Lk-fd,
+              By Reference Lk-buf,
+              By Value Lk-count
+              Returning Return-Value.
+ 
+           Call "write" using
+              By Value Lk-fd,
+              By Reference Lk-buf,
+              By Value Lk-count
+              Returning Return-Value.
+           Goback.
+         End Function posix-write.
diff -Nrcpad gcc-16-20251116/libgcobol/xmlparse.cc gcc-16-20251123/libgcobol/xmlparse.cc
*** gcc-16-20251116/libgcobol/xmlparse.cc	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgcobol/xmlparse.cc	Sun Nov 23 22:32:36 2025
*************** static class context_t {
*** 663,669 ****
    const int priority;
   public:
    xmlParserCtxt * ctxt;
!   context_t() : ctxt(nullptr), priority(LOG_INFO) {
      const int option = LOG_PERROR, facility = LOG_USER;
  #if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
      /* Declared in errno.h, when available.  */
--- 663,669 ----
    const int priority;
   public:
    xmlParserCtxt * ctxt;
!   context_t() : priority(LOG_INFO), ctxt(nullptr) {
      const int option = LOG_PERROR, facility = LOG_USER;
  #if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME
      /* Declared in errno.h, when available.  */
diff -Nrcpad gcc-16-20251116/libgm2/configure gcc-16-20251123/libgm2/configure
*** gcc-16-20251116/libgm2/configure	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgm2/configure	Sun Nov 23 22:32:36 2025
*************** ac_compiler_gnu=$ac_cv_c_compiler_gnu
*** 2733,2739 ****
  ac_config_headers="$ac_config_headers config.h"
  
  
! libtool_VERSION=20:0:0
  
  
  # Default to --enable-multilib
--- 2733,2739 ----
  ac_config_headers="$ac_config_headers config.h"
  
  
! libtool_VERSION=21:0:0
  
  
  # Default to --enable-multilib
diff -Nrcpad gcc-16-20251116/libgm2/configure.ac gcc-16-20251123/libgm2/configure.ac
*** gcc-16-20251116/libgm2/configure.ac	Sun Nov 16 22:34:49 2025
--- gcc-16-20251123/libgm2/configure.ac	Sun Nov 23 22:32:36 2025
*************** AC_CONFIG_SRCDIR(Makefile.am)
*** 27,33 ****
  # AC_CONFIG_MACRO_DIR([config])
  AC_CONFIG_HEADER(config.h)
  
! libtool_VERSION=20:0:0
  AC_SUBST(libtool_VERSION)
  
  AM_ENABLE_MULTILIB(, ..)
--- 27,33 ----
  # AC_CONFIG_MACRO_DIR([config])
  AC_CONFIG_HEADER(config.h)
  
! libtool_VERSION=21:0:0
  AC_SUBST(libtool_VERSION)
  
  AM_ENABLE_MULTILIB(, ..)
diff -Nrcpad gcc-16-20251116/libgomp/ChangeLog gcc-16-20251123/libgomp/ChangeLog
*** gcc-16-20251116/libgomp/ChangeLog	Sun Nov 16 22:34:53 2025
--- gcc-16-20251123/libgomp/ChangeLog	Sun Nov 23 22:32:40 2025
***************
*** 1,3 ****
--- 1,185 ----
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 
+ 	* libgomp.texi (OpenMP 5.1): Update "begin declare variant" status.
+ 
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 	    Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* testsuite/libgomp.c-c++-common/delim-declare-variant-1.c: New.
+ 	* testsuite/libgomp.c-c++-common/delim-declare-variant-2.c: New.
+ 
+ 2025-11-22  Sandra Loosemore  <sloosemore@baylibre.com>
+ 	    Julian Brown  <julian@codesourcery.com>
+ 	    waffl3x  <waffl3x@baylibre.com>
+ 
+ 	* testsuite/libgomp.c++/bdv_module1.C: New.
+ 	* testsuite/libgomp.c++/bdv_module1_main.C: New.
+ 	* testsuite/libgomp.c++/bdv_module2.C: New.
+ 	* testsuite/libgomp.c++/bdv_module2_impl.C: New.
+ 	* testsuite/libgomp.c++/bdv_module2_main.C: New.
+ 	* testsuite/libgomp.c++/bdv_module3.C: New.
+ 	* testsuite/libgomp.c++/bdv_module3_impl.C: New.
+ 	* testsuite/libgomp.c++/bdv_module3_main.C: New.
+ 	* testsuite/libgomp.c++/delim-declare-variant-1.C: New.
+ 	* testsuite/libgomp.c++/delim-declare-variant-2.C: New.
+ 	* testsuite/libgomp.c++/delim-declare-variant-7.C: New.
+ 
+ 2025-11-21  Arsen Arsenović  <aarsenovic@baylibre.com>
+ 
+ 	* testsuite/libgomp.oacc-c-c++-common/data-2-lib.c (explanatory
+ 	header): Fix typo.
+ 	(main): Insert waits on kernels reading 'a' into queue 10 before
+ 	exiting 'a', and waits on kernels reading 'N' into queue 15
+ 	before exiting 'N'.
+ 	* testsuite/libgomp.oacc-c-c++-common/data-2.c: Ditto.
+ 
+ 2025-11-21  Josef Melcr  <josef.melcr@suse.com>
+ 
+ 	* testsuite/libgomp.c/ipcp-cb-spec1.c: Remove LTO requirement.
+ 	* testsuite/libgomp.c/ipcp-cb-spec2.c: Likewise.
+ 	* testsuite/libgomp.c/ipcp-cb1.c: Likewise.
+ 
+ 2025-11-19  Martin Liska  <martin.liska@hey.com>
+ 
+ 	* acinclude.m4:: Add detection for wild linker.
+ 	* configure: Regenerate.
+ 
+ 2025-11-18  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* libgomp.texi (The libgomp ABI): Update MASTER section by
+ 	also covering MASKED.
+ 
+ 2025-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* testsuite/libgomp.c++/allocate-1.C: Replace [: in OpenMP or OpenACC
+ 	pragmas or attributes with [ : and :] with : ].
+ 	* testsuite/libgomp.c++/baseptrs-3.C: Likewise.
+ 	* testsuite/libgomp.c++/baseptrs-5.C: Likewise.
+ 	* testsuite/libgomp.c++/class-array-1.C: Likewise.
+ 	* testsuite/libgomp.c++/examples-4/target_data-5.C: Likewise.
+ 	* testsuite/libgomp.c++/lvalue-tofrom-2.C: Likewise.
+ 	* testsuite/libgomp.c++/pr101544-1.C: Likewise.
+ 	* testsuite/libgomp.c++/pr108286.C: Likewise.
+ 	* testsuite/libgomp.c++/reduction-10.C: Likewise.
+ 	* testsuite/libgomp.c++/reduction-11.C: Likewise.
+ 	* testsuite/libgomp.c++/reduction-12.C: Likewise.
+ 	* testsuite/libgomp.c++/reduction-5.C: Likewise.
+ 	* testsuite/libgomp.c++/reduction-6.C: Likewise.
+ 	* testsuite/libgomp.c++/reduction-7.C: Likewise.
+ 	* testsuite/libgomp.c++/reduction-8.C: Likewise.
+ 	* testsuite/libgomp.c++/reduction-9.C: Likewise.
+ 	* testsuite/libgomp.c++/target-18.C: Likewise.
+ 	* testsuite/libgomp.c++/target-19.C: Likewise.
+ 	* testsuite/libgomp.c++/target-2.C: Likewise.
+ 	* testsuite/libgomp.c++/target-22.C: Likewise.
+ 	* testsuite/libgomp.c++/target-23.C: Likewise.
+ 	* testsuite/libgomp.c++/target-9.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-100.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-101.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-12.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-2003.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-30.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-300.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-32.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-33.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-41.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-60.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-61.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-62.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-80.C: Likewise.
+ 	* testsuite/libgomp.c++/target-flex-81.C: Likewise.
+ 	* testsuite/libgomp.c++/target-has-device-addr-7.C: Likewise.
+ 	* testsuite/libgomp.c++/target-in-reduction-1.C: Likewise.
+ 	* testsuite/libgomp.c++/target-in-reduction-2.C: Likewise.
+ 	* testsuite/libgomp.c++/target-lambda-1.C: Likewise.
+ 	* testsuite/libgomp.c++/target-lambda-3.C: Likewise.
+ 	* testsuite/libgomp.c++/target-map-class-1.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__array-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__bitset-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__deque-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__flat_map-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C:
+ 	Likewise.
+ 	* testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C:
+ 	Likewise.
+ 	* testsuite/libgomp.c++/target-std__flat_set-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__forward_list-concurrent.C:
+ 	Likewise.
+ 	* testsuite/libgomp.c++/target-std__list-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__map-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__multimap-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__multiset-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__set-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__span-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__unordered_map-concurrent.C:
+ 	Likewise.
+ 	* testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C:
+ 	Likewise.
+ 	* testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C:
+ 	Likewise.
+ 	* testsuite/libgomp.c++/target-std__unordered_set-concurrent.C:
+ 	Likewise.
+ 	* testsuite/libgomp.c++/target-std__valarray-1.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__valarray-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-std__vector-concurrent.C: Likewise.
+ 	* testsuite/libgomp.c++/target-this-3.C: Likewise.
+ 	* testsuite/libgomp.c++/target-this-4.C: Likewise.
+ 	* testsuite/libgomp.c++/target-virtual-1.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-11.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-12.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-13.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-17.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-18.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-19.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-4.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-5.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-6.C: Likewise.
+ 	* testsuite/libgomp.c++/task-reduction-7.C: Likewise.
+ 	* testsuite/libgomp.c++/taskloop-reduction-2.C: Likewise.
+ 	* testsuite/libgomp.c++/taskloop-reduction-3.C: Likewise.
+ 	* testsuite/libgomp.c++/taskloop-reduction-4.C: Likewise.
+ 	* testsuite/libgomp.c-c++-common/allocate-1.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/allocate-3.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/baseptrs-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/dispatch-1.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/dispatch-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/interop-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/matrix-omp-target-teams-distribute-parallel-for-1.c:
+ 	Likewise.
+ 	* testsuite/libgomp.c-c++-common/ptr-attach-1.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/ptr-attach-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/refcount-1.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/struct-elem-4.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-has-device-addr-1.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-implicit-map-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-implicit-map-5.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-in-reduction-1.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-in-reduction-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-map-iterators-1.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-map-iterators-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-map-iterators-3.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-map-zlas-1.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-update-iterators-1.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-update-iterators-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/target-update-iterators-3.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/task-reduction-11.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/task-reduction-12.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/task-reduction-16.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/task-reduction-3.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/task-reduction-7.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/task-reduction-9.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/taskloop-reduction-2.c: Likewise.
+ 	* testsuite/libgomp.c-c++-common/teams-nteams-icv-1.c: Likewise.
+ 	* testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c: Likewise.
+ 	* testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c: Likewise.
+ 	* testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c: Likewise.
+ 	* testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c: Likewise.
+ 	* testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c: Likewise.
+ 	* testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c: Likewise.
+ 	* testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c: Likewise.
+ 	* testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c: Likewise.
+ 
  2025-11-13  Andrew Stubbs  <ams@codesourcery.com>
  	    Kwok Cheung Yeung  <kcyeung@baylibre.com>
  	    Thomas Schwinge  <tschwinge@baylibre.com>
diff -Nrcpad gcc-16-20251116/libgomp/acinclude.m4 gcc-16-20251123/libgomp/acinclude.m4
*** gcc-16-20251116/libgomp/acinclude.m4	Sun Nov 16 22:34:53 2025
--- gcc-16-20251123/libgomp/acinclude.m4	Sun Nov 23 22:32:40 2025
*************** dnl Sets:
*** 118,123 ****
--- 118,124 ----
  dnl  with_gnu_ld
  dnl  libgomp_ld_is_gold (possibly)
  dnl  libgomp_ld_is_mold (possibly)
+ dnl  libgomp_ld_is_wild (possibly)
  dnl  libgomp_gnu_ld_version (possibly)
  dnl
  dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
*************** AC_DEFUN([LIBGOMP_CHECK_LINKER_FEATURES]
*** 151,160 ****
--- 152,164 ----
    # does some of this, but throws away the result.
    libgomp_ld_is_gold=no
    libgomp_ld_is_mold=no
+   libgomp_ld_is_wild=no
    if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
      libgomp_ld_is_gold=yes
    elif $LD --version 2>/dev/null | grep 'mold'> /dev/null 2>&1; then
      libgomp_ld_is_mold=yes
+   elif $LD --version 2>/dev/null | grep 'Wild'> /dev/null 2>&1; then
+     libgomp_ld_is_wild=yes
    fi
    changequote(,)
    ldver=`$LD --version 2>/dev/null |
*************** if test $enable_symvers != no && test $l
*** 312,317 ****
--- 316,323 ----
        enable_symvers=gnu
      elif test $libgomp_ld_is_mold = yes ; then
        enable_symvers=gnu
+     elif test $libgomp_ld_is_wild = yes ; then
+       enable_symvers=gnu
      else
        # The right tools, the right setup, but too old.  Fallbacks?
        AC_MSG_WARN(=== Linker version $libgomp_gnu_ld_version is too old for)
diff -Nrcpad gcc-16-20251116/libgomp/configure gcc-16-20251123/libgomp/configure
*** gcc-16-20251116/libgomp/configure	Sun Nov 16 22:35:54 2025
--- gcc-16-20251123/libgomp/configure	Sun Nov 23 22:33:00 2025
*************** with_gnu_ld=$lt_cv_prog_gnu_ld
*** 16544,16553 ****
--- 16544,16556 ----
    # does some of this, but throws away the result.
    libgomp_ld_is_gold=no
    libgomp_ld_is_mold=no
+   libgomp_ld_is_wild=no
    if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
      libgomp_ld_is_gold=yes
    elif $LD --version 2>/dev/null | grep 'mold'> /dev/null 2>&1; then
      libgomp_ld_is_mold=yes
+   elif $LD --version 2>/dev/null | grep 'Wild'> /dev/null 2>&1; then
+     libgomp_ld_is_wild=yes
    fi
  
    ldver=`$LD --version 2>/dev/null |
*************** if test $enable_symvers != no && test $l
*** 16752,16757 ****
--- 16755,16762 ----
        enable_symvers=gnu
      elif test $libgomp_ld_is_mold = yes ; then
        enable_symvers=gnu
+     elif test $libgomp_ld_is_wild = yes ; then
+       enable_symvers=gnu
      else
        # The right tools, the right setup, but too old.  Fallbacks?
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version $libgomp_gnu_ld_version is too old for" >&5
diff -Nrcpad gcc-16-20251116/libgomp/libgomp.texi gcc-16-20251123/libgomp/libgomp.texi
*** gcc-16-20251116/libgomp/libgomp.texi	Sun Nov 16 22:34:53 2025
--- gcc-16-20251123/libgomp/libgomp.texi	Sun Nov 23 22:32:41 2025
*************** The OpenMP 4.5 specification is fully su
*** 291,298 ****
  @item @code{omp_all_memory} reserved locator @tab Y @tab
  @item @emph{target_device trait} in OpenMP Context @tab Y
  @item @code{target_device} selector set in context selectors @tab Y @tab
! @item C/C++'s @code{declare variant} directive: elision support of
!       preprocessed code @tab N @tab
  @item @code{declare variant}: new clauses @code{adjust_args} and
        @code{append_args} @tab Y @tab
  @item @code{dispatch} construct @tab Y @tab
--- 291,299 ----
  @item @code{omp_all_memory} reserved locator @tab Y @tab
  @item @emph{target_device trait} in OpenMP Context @tab Y
  @item @code{target_device} selector set in context selectors @tab Y @tab
! @item C/C++'s delimited @code{declare variant} directive: support elision of
!       preprocessed code and interpret enclosed function definitions
!       as variant functions  @tab Y @tab
  @item @code{declare variant}: new clauses @code{adjust_args} and
        @code{append_args} @tab Y @tab
  @item @code{dispatch} construct @tab Y @tab
*************** The following sections present notes on
*** 7473,7479 ****
  presented by libgomp.  Only maintainers should need them.
  
  @menu
! * Implementing MASTER construct::
  * Implementing CRITICAL construct::
  * Implementing ATOMIC construct::
  * Implementing FLUSH construct::
--- 7474,7480 ----
  presented by libgomp.  Only maintainers should need them.
  
  @menu
! * Implementing MASKED and MASTER construct::
  * Implementing CRITICAL construct::
  * Implementing ATOMIC construct::
  * Implementing FLUSH construct::
*************** presented by libgomp.  Only maintainers
*** 7491,7506 ****
  @end menu
  
  
! @node Implementing MASTER construct
! @section Implementing MASTER construct
  
  @smallexample
! if (omp_get_thread_num () == 0)
    block
  @end smallexample
  
  Alternately, we generate two copies of the parallel subfunction
! and only include this in the version run by the primary thread.
  Surely this is not worthwhile though...
  
  
--- 7492,7510 ----
  @end menu
  
  
! @node Implementing MASKED and MASTER construct
! @section Implementing MASKED and MASTER construct
  
  @smallexample
! if (omp_get_thread_num () == thread_num)
    block
  @end smallexample
  
+ Hereby, @var{thread_num} has the value of the argument to the @code{filter}
+ clause or zero if not specified.
+ 
  Alternately, we generate two copies of the parallel subfunction
! and only include this in the version run by the @var{thread_num} thread.
  Surely this is not worthwhile though...
  
  
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c/ipcp-cb-spec1.c gcc-16-20251123/libgomp/testsuite/libgomp.c/ipcp-cb-spec1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c/ipcp-cb-spec1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c/ipcp-cb-spec1.c	Sun Nov 23 22:32:41 2025
***************
*** 1,9 ****
  /* Test that GOMP_task is special cased when cpyfn is NULL.  */
  
  /* { dg-do run } */
! /* { dg-options "-O3 -fopenmp -flto -std=gnu99 -fdump-ipa-cp-details" } */
  /* { dg-require-effective-target fopenmp } */
- /* { dg-require-effective-target lto } */
  
  void test(int c) {
    for (int i = 0; i < c; i++)
--- 1,8 ----
  /* Test that GOMP_task is special cased when cpyfn is NULL.  */
  
  /* { dg-do run } */
! /* { dg-options "-O3 -fopenmp -std=gnu99 -fdump-ipa-cp-details" } */
  /* { dg-require-effective-target fopenmp } */
  
  void test(int c) {
    for (int i = 0; i < c; i++)
*************** int main() {
*** 16,19 ****
    return 0;
  }
  
! /* { dg-final { scan-wpa-ipa-dump "Creating a specialized node of main._omp_fn" "cp" } } */
--- 15,18 ----
    return 0;
  }
  
! /* { dg-final { scan-ipa-dump "Creating a specialized node of main._omp_fn" "cp" } } */
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c/ipcp-cb-spec2.c gcc-16-20251123/libgomp/testsuite/libgomp.c/ipcp-cb-spec2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c/ipcp-cb-spec2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c/ipcp-cb-spec2.c	Sun Nov 23 22:32:41 2025
***************
*** 2,10 ****
     NULL.  */
  
  /* { dg-do run } */
! /* { dg-options "-O3 -fopenmp -flto -std=gnu99 -fdump-ipa-cp-details" } */
  /* { dg-require-effective-target fopenmp } */
- /* { dg-require-effective-target lto } */
  
  void test(int *a) {
    for (int i = 0; i < 100; i++) {
--- 2,9 ----
     NULL.  */
  
  /* { dg-do run } */
! /* { dg-options "-O3 -fopenmp -std=gnu99 -fdump-ipa-cp-details" } */
  /* { dg-require-effective-target fopenmp } */
  
  void test(int *a) {
    for (int i = 0; i < 100; i++) {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c/ipcp-cb1.c gcc-16-20251123/libgomp/testsuite/libgomp.c/ipcp-cb1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c/ipcp-cb1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c/ipcp-cb1.c	Sun Nov 23 22:32:41 2025
***************
*** 2,10 ****
     This tests the underlying callback attribute and its related edges.  */
  
  /* { dg-do run } */
! /* { dg-options "-O3 -fopenmp -flto -std=gnu99 -fdump-ipa-cp-details" } */
  /* { dg-require-effective-target fopenmp } */
- /* { dg-require-effective-target lto } */
  
  int a[100];
  void test(int c) {
--- 2,9 ----
     This tests the underlying callback attribute and its related edges.  */
  
  /* { dg-do run } */
! /* { dg-options "-O3 -fopenmp -std=gnu99 -fdump-ipa-cp-details" } */
  /* { dg-require-effective-target fopenmp } */
  
  int a[100];
  void test(int c) {
*************** int main() {
*** 21,25 ****
    return a[5] - 5;
  }
  
! /* { dg-final { scan-wpa-ipa-dump "Creating a specialized node of test._omp_fn" "cp" } } */
! /* { dg-final { scan-wpa-ipa-dump "Aggregate replacements: 0\\\[0]=100\\(by_ref\\)" "cp" } } */
--- 20,24 ----
    return a[5] - 5;
  }
  
! /* { dg-final { scan-ipa-dump "Creating a specialized node of test._omp_fn" "cp" } } */
! /* { dg-final { scan-ipa-dump "Aggregate replacements: 0\\\[0]=100\\(by_ref\\)" "cp" } } */
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/allocate-1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/allocate-1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/allocate-1.C	Sun Nov 16 22:34:53 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/allocate-1.C	Sun Nov 23 22:32:41 2025
*************** foo (int &x, int &y, int &r, int &l, int
*** 90,96 ****
  	if ((fl & 1) && (((uintptr_t) &l2[0] | (uintptr_t) &l3) & 63) != 0)
  	  abort ();
        }
!     #pragma omp for reduction(+:p[2:px], q[:3], r2) allocate(h: p, q, r2)
      for (i = 0; i < 32; i++)
        {
  	p[2] += i;
--- 90,96 ----
  	if ((fl & 1) && (((uintptr_t) &l2[0] | (uintptr_t) &l3) & 63) != 0)
  	  abort ();
        }
!     #pragma omp for reduction(+:p[2:px], q[ :3], r2) allocate(h: p, q, r2)
      for (i = 0; i < 32; i++)
        {
  	p[2] += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/baseptrs-3.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/baseptrs-3.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/baseptrs-3.C	Sun Nov 16 22:34:53 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/baseptrs-3.C	Sun Nov 23 22:32:41 2025
*************** foo0 ()
*** 30,36 ****
  
    memset (my_c.a.ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c.a.ptr, my_c.a.ptr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_c.a.ptr[i] = i;
--- 30,36 ----
  
    memset (my_c.a.ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c.a.ptr, my_c.a.ptr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_c.a.ptr[i] = i;
*************** foo0 ()
*** 41,47 ****
  
    memset (my_c.b.arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c.b.arr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_c.b.arr[i] = i;
--- 41,47 ----
  
    memset (my_c.b.arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c.b.arr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_c.b.arr[i] = i;
*************** foo ()
*** 81,87 ****
  
    memset (my_c.a.ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c.a.ptr, my_c.a.ptr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_c.a.ptr[i] = i;
--- 81,87 ----
  
    memset (my_c.a.ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c.a.ptr, my_c.a.ptr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_c.a.ptr[i] = i;
*************** foo ()
*** 92,98 ****
  
    memset (my_c.b.arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c.b.arr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_c.b.arr[i] = i;
--- 92,98 ----
  
    memset (my_c.b.arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c.b.arr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_c.b.arr[i] = i;
*************** bar ()
*** 116,122 ****
  
    memset (my_cref.a.ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_cref.a.ptr, my_cref.a.ptr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_cref.a.ptr[i] = i;
--- 116,122 ----
  
    memset (my_cref.a.ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_cref.a.ptr, my_cref.a.ptr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_cref.a.ptr[i] = i;
*************** bar ()
*** 127,133 ****
  
    memset (my_cref.b.arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_cref.b.arr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_cref.b.arr[i] = i;
--- 127,133 ----
  
    memset (my_cref.b.arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_cref.b.arr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_cref.b.arr[i] = i;
*************** foop0 ()
*** 157,163 ****
  
    memset (my_c->a->ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c->a, my_c->a[:1], my_c->a->ptr, my_c->a->ptr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_c->a->ptr[i] = i;
--- 157,163 ----
  
    memset (my_c->a->ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c->a, my_c->a[ :1], my_c->a->ptr, my_c->a->ptr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_c->a->ptr[i] = i;
*************** foop0 ()
*** 168,174 ****
  
    memset (my_c->b->arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c->b, my_c->b[:1], my_c->b->arr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_c->b->arr[i] = i;
--- 168,174 ----
  
    memset (my_c->b->arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c->b, my_c->b[ :1], my_c->b->arr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_c->b->arr[i] = i;
*************** foop ()
*** 200,206 ****
  
    memset (my_c->a->ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c->a, my_c->a[:1], my_c->a->ptr, my_c->a->ptr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_c->a->ptr[i] = i;
--- 200,206 ----
  
    memset (my_c->a->ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c->a, my_c->a[ :1], my_c->a->ptr, my_c->a->ptr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_c->a->ptr[i] = i;
*************** foop ()
*** 211,217 ****
  
    memset (my_c->b->arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c->b, my_c->b[:1], my_c->b->arr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_c->b->arr[i] = i;
--- 211,217 ----
  
    memset (my_c->b->arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_c->b, my_c->b[ :1], my_c->b->arr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_c->b->arr[i] = i;
*************** barp ()
*** 237,244 ****
  
    memset (my_cref->a->ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_cref->a, my_cref->a[:1], my_cref->a->ptr, \
! 			  my_cref->a->ptr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_cref->a->ptr[i] = i;
--- 237,244 ----
  
    memset (my_cref->a->ptr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_cref->a, my_cref->a[ :1], my_cref->a->ptr, \
! 			  my_cref->a->ptr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_cref->a->ptr[i] = i;
*************** barp ()
*** 249,255 ****
  
    memset (my_cref->b->arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_cref->b, my_cref->b[:1], my_cref->b->arr[:10])
    {
      for (int i = 0; i < 10; i++)
        my_cref->b->arr[i] = i;
--- 249,255 ----
  
    memset (my_cref->b->arr, 0, sizeof (int) * 10);
  
!   #pragma omp target map (my_cref->b, my_cref->b[ :1], my_cref->b->arr[ :10])
    {
      for (int i = 0; i < 10; i++)
        my_cref->b->arr[i] = i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/baseptrs-5.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/baseptrs-5.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/baseptrs-5.C	Sun Nov 16 22:34:53 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/baseptrs-5.C	Sun Nov 23 22:32:41 2025
*************** main ()
*** 35,42 ****
    memset (my_c->a->ptr2, 0, sizeof (int) * 10);
  
    #pragma omp target map (my_c->a, \
! 			  my_c->a->ptr, my_c->a->ptr[:10], \
! 			  my_c->a->ptr2, my_c->a->ptr2[:10])
    {
      for (int i = 0; i < 10; i++)
        {
--- 35,42 ----
    memset (my_c->a->ptr2, 0, sizeof (int) * 10);
  
    #pragma omp target map (my_c->a, \
! 			  my_c->a->ptr, my_c->a->ptr[ :10], \
! 			  my_c->a->ptr2, my_c->a->ptr2[ :10])
    {
      for (int i = 0; i < 10; i++)
        {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module1.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,23 ----
+ // Test that "begin declare variant" in a module interface is
+ // visible to things that import the module.
+ 
+ // { dg-additional-sources "bdv_module1_main.C" }
+ // { dg-additional-options "-fmodules" }
+ 
+ export module bdv_module1;
+ 
+ export int
+ test ()
+ {
+   return 0;
+ }
+ 
+ #if _OPENMP
+ #pragma omp begin declare variant match(construct={parallel})
+ export int
+ test ()
+ {
+   return 1;
+ }
+ #pragma omp end declare variant
+ #endif
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module1_main.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module1_main.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module1_main.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module1_main.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-skip-if "" { *-*-* } }
+ // Built with bdv_module1.C
+ 
+ import bdv_module1;
+ 
+ int
+ main ()
+ {
+   if (test () != 0)
+     __builtin_abort ();
+   #pragma omp parallel if(0)
+   {
+     if (test () != 1)
+       __builtin_abort ();
+   }
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module2.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module2.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module2.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,15 ----
+ // Test that "begin declare variant" in a module implementation unit is
+ // visible only in that unit.
+ 
+ // { dg-additional-sources "bdv_module2_impl.C bdv_module2_main.C" }
+ // { dg-additional-options "-fmodules" }
+ 
+ export module bdv_module2;
+ 
+ export int
+ test ()
+ {
+   return 0;
+ }
+ 
+ export void doit ();
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module2_impl.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module2_impl.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module2_impl.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module2_impl.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,26 ----
+ // { dg-skip-if "" { *-*-* } }
+ // Built with bdv_module2.C
+ 
+ module bdv_module2;
+ 
+ #if _OPENMP
+ #pragma omp begin declare variant match(construct={teams})
+ int
+ test ()
+ {
+   return -1;
+ }
+ #pragma omp end declare variant
+ #endif
+ 
+ void
+ doit ()
+ {
+   if (test () != 0)
+     __builtin_abort ();
+   #pragma omp teams
+   {
+     if (test () != -1)
+       __builtin_abort ();
+   }
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module2_main.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module2_main.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module2_main.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module2_main.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,20 ----
+ // { dg-skip-if "" { *-*-* } }
+ // Built with bdv_module2.C
+ 
+ import bdv_module2;
+ 
+ int
+ main ()
+ {
+   // Calls to test from doit() should invoke the omp teams variant
+   // present in the TU where it is defined.
+   doit ();
+   // Calls to test from here shouldn't.
+   if (test () != 0)
+     __builtin_abort ();
+   #pragma omp teams
+   {
+     if (test () != 0)
+       __builtin_abort ();
+   }
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module3.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module3.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module3.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,27 ----
+ // Test that "begin declare variant" in a module interface is
+ // visible to things that import the module, and that it works in
+ // conjunction with additional "begin declare variant"s local
+ // to a module implementation TU.
+ 
+ // { dg-additional-sources "bdv_module3_impl.C bdv_module3_main.C" }
+ // { dg-additional-options "-fmodules" }
+ 
+ export module bdv_module3;
+ 
+ export int
+ test ()
+ {
+   return 0;
+ }
+ 
+ #if _OPENMP
+ #pragma omp begin declare variant match(construct={parallel})
+ export int
+ test ()
+ {
+   return 1;
+ }
+ #pragma omp end declare variant
+ #endif
+ 
+ export void doit ();
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module3_impl.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module3_impl.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module3_impl.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module3_impl.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,31 ----
+ // { dg-skip-if "" { *-*-* } }
+ // Built with bdv_module3.C
+ 
+ module bdv_module3;
+ 
+ #if _OPENMP
+ #pragma omp begin declare variant match(construct={teams})
+ int
+ test ()
+ {
+   return -1;
+ }
+ #pragma omp end declare variant
+ #endif
+ 
+ void
+ doit ()
+ {
+   if (test () != 0)
+     __builtin_abort ();
+   #pragma omp teams
+   {
+     if (test () != -1)
+       __builtin_abort ();
+   }
+   #pragma omp parallel if(0)
+   {
+     if (test () != 1)
+       __builtin_abort ();
+   }
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module3_main.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module3_main.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/bdv_module3_main.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/bdv_module3_main.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,25 ----
+ // { dg-skip-if "" { *-*-* } }
+ // Built with bdv_module3.C
+ 
+ import bdv_module3;
+ 
+ int
+ main ()
+ {
+   // Calls to test from doit() should invoke the omp teams variant
+   // present in the TU where it is defined.
+   doit ();
+   // Calls to test from here shouldn't.
+   if (test () != 0)
+     __builtin_abort ();
+   #pragma omp teams
+   {
+     if (test () != 0)
+       __builtin_abort ();
+   }
+   #pragma omp parallel if(0)
+   {
+     if (test () != 1)
+       __builtin_abort ();
+   }
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/class-array-1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/class-array-1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/class-array-1.C	Sun Nov 16 22:34:53 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/class-array-1.C	Sun Nov 23 22:32:41 2025
*************** public:
*** 16,29 ****
  
    void incr_with_this (int c)
    {
! #pragma omp target map(this->array[:N])
      for (int i = 0; i < N; i++)
        array[i] += c;
    }
  
    void incr_without_this (int c)
    {
! #pragma omp target map(array[:N])
      for (int i = 0; i < N; i++)
        array[i] += c;
    }
--- 16,29 ----
  
    void incr_with_this (int c)
    {
! #pragma omp target map(this->array[ :N])
      for (int i = 0; i < N; i++)
        array[i] += c;
    }
  
    void incr_without_this (int c)
    {
! #pragma omp target map(array[ :N])
      for (int i = 0; i < N; i++)
        array[i] += c;
    }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/delim-declare-variant-1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/delim-declare-variant-1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/delim-declare-variant-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/delim-declare-variant-1.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-additional-options "-foffload=disable" } */
+ 
+ /* Check that variants within a "begin declare variant" directive
+    are attached to the correct overloaded function.  */
+ 
+ int f (int x) { return x; }
+ 
+ #pragma omp begin declare variant match (implementation={vendor("gnu")})
+ int f (int x) { return -1; }
+ #pragma omp end declare variant
+ 
+ int f (int x, int y) { return x * y; }
+ 
+ #pragma omp begin declare variant match (construct={target})
+ int f (int x, int y) { return -2; }
+ #pragma omp end declare variant
+ 
+ int f (int x, int y, int z) { return x * y * z; }
+ 
+ #pragma omp begin declare variant match (device={kind("host")})
+ int f (int x, int y, int z) { return -3; }
+ #pragma omp end declare variant
+ 
+ int main (void)
+ {
+   if (f (10) != -1) __builtin_abort ();
+   if (f (10, 20) != 200) __builtin_abort ();   /* no match on this one */
+   if (f (10, 20, 30) != -3) __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/delim-declare-variant-2.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/delim-declare-variant-2.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/delim-declare-variant-2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/delim-declare-variant-2.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,37 ----
+ /* Check that "omp begin declare variant" works on methods in a
+    class declaration.  */
+ 
+ class test1 {
+ 
+  private:
+   int n;
+   static int m;
+ 
+  public:
+ 
+   void set_n (int x) { n = x; }
+   int get_n (void) { return n; }
+ 
+   static void set_m (int x) { m = x; }
+   static int get_m (void) { return m; }
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   int get_n (void) { return n * 2; }
+   static int get_m (void) { return m * 2; }
+   #pragma omp end declare variant
+ 
+   #pragma omp begin declare variant match (construct={target})
+   int get_n (void) { return this->n * 2; }
+   #pragma omp end declare variant
+ };
+ 
+ int test1::m;
+ 
+ int main (void)
+ {
+   test1 t1;
+   t1.set_n (10);
+   if (t1.get_n () != 20) __builtin_abort ();
+   test1::set_m (1);
+   if (test1::get_m () != 2) __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/delim-declare-variant-7.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/delim-declare-variant-7.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/delim-declare-variant-7.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/delim-declare-variant-7.C	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,39 ----
+ /* Check that "omp begin declare variant" works on methods in a template
+    class declaration.  */
+ 
+ template <typename T>
+ class test1 {
+ 
+  private:
+   T n;
+   static T m;
+ 
+  public:
+ 
+   void set_n (T x) { n = x; }
+   T get_n (void) { return n; }
+ 
+   static void set_m (T x) { m = x; }
+   static T get_m (void) { return m; }
+ 
+   #pragma omp begin declare variant match (implementation={vendor("gnu")})
+   T get_n (void) { return n * 2; }
+   static T get_m (void) { return m * 2; }
+   #pragma omp end declare variant
+ 
+   #pragma omp begin declare variant match (construct={target})
+   T get_n (void) { return this->n * 2; }
+   #pragma omp end declare variant
+ };
+ 
+ template <typename T>
+ T test1<T>::m;
+ 
+ int main (void)
+ {
+   test1<int> t1;
+   t1.set_n (10);
+   if (t1.get_n () != 20) __builtin_abort ();
+   test1<int>::set_m (1);
+   if (test1<int>::get_m () != 2) __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/examples-4/target_data-5.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/examples-4/target_data-5.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/examples-4/target_data-5.C	Sun Nov 16 22:34:53 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/examples-4/target_data-5.C	Sun Nov 23 22:32:41 2025
*************** void vec_mult_ref (float *&p, float *&v1
*** 33,39 ****
  
  void vec_mult (float *&p, float *&v1, float *&v2, int n)
  {
!   #pragma omp target map(to: v1[0:n], v2[:n]) map(from: p[0:n])
      #pragma omp parallel for
        for (int i = 0; i < n; i++)
  	p[i] = v1[i] * v2[i];
--- 33,39 ----
  
  void vec_mult (float *&p, float *&v1, float *&v2, int n)
  {
!   #pragma omp target map(to: v1[0:n], v2[ :n]) map(from: p[0:n])
      #pragma omp parallel for
        for (int i = 0; i < n; i++)
  	p[i] = v1[i] * v2[i];
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/lvalue-tofrom-2.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/lvalue-tofrom-2.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/lvalue-tofrom-2.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/lvalue-tofrom-2.C	Sun Nov 23 22:32:41 2025
*************** void foo()
*** 23,29 ****
    for (int i = 0; i < aw.length; i++)
      aw.data[i] = i;
  
! #pragma omp target update from(aw.data[:aw.length])
  
  #pragma omp target exit data map(delete: aw.data, aw.length, \
  				 aw.data[0:aw.length])
--- 23,29 ----
    for (int i = 0; i < aw.length; i++)
      aw.data[i] = i;
  
! #pragma omp target update from(aw.data[ :aw.length])
  
  #pragma omp target exit data map(delete: aw.data, aw.length, \
  				 aw.data[0:aw.length])
*************** main ()
*** 54,60 ****
    for (int i = 0; i < aw.length; i++)
      aw.data[i] = i;
  
! #pragma omp target update from(aw.data[:aw.length])
  
  #pragma omp target exit data map(delete: aw.data, aw.length, \
  				 aw.data[0:aw.length])
--- 54,60 ----
    for (int i = 0; i < aw.length; i++)
      aw.data[i] = i;
  
! #pragma omp target update from(aw.data[ :aw.length])
  
  #pragma omp target exit data map(delete: aw.data, aw.length, \
  				 aw.data[0:aw.length])
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/pr101544-1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/pr101544-1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/pr101544-1.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/pr101544-1.C	Sun Nov 23 22:32:41 2025
*************** int main() {
*** 64,71 ****
    double* inptr = in.data();
    double* outptr = out.data();
  
! #pragma omp target teams distribute parallel for map(inptr[:10], outptr[:10]) is_device_ptr(devPtr)
! #pragma acc parallel loop copy(inptr[:10], outptr[:10]) deviceptr(devPtr)
    for(int i = 0; i < 10; i++) {
      outptr[i] = devPtr->sag(inptr[i], inptr[i]);
    }
--- 64,71 ----
    double* inptr = in.data();
    double* outptr = out.data();
  
! #pragma omp target teams distribute parallel for map(inptr[ :10], outptr[ :10]) is_device_ptr(devPtr)
! #pragma acc parallel loop copy(inptr[ :10], outptr[ :10]) deviceptr(devPtr)
    for(int i = 0; i < 10; i++) {
      outptr[i] = devPtr->sag(inptr[i], inptr[i]);
    }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/pr108286.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/pr108286.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/pr108286.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/pr108286.C	Sun Nov 23 22:32:41 2025
*************** struct S {
*** 6,12 ****
    foo ()
    {
      int res = 0;
! #pragma omp target map(size, ptr[:size], res) nowait
      res = ptr[size - 1];
  #pragma omp taskwait
      return res;
--- 6,12 ----
    foo ()
    {
      int res = 0;
! #pragma omp target map(size, ptr[ :size], res) nowait
      res = ptr[size - 1];
  #pragma omp taskwait
      return res;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-10.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-10.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-10.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-10.C	Sun Nov 23 22:32:41 2025
*************** foo (A<int> (*&x)[3][N], M<int> *y, B<lo
*** 63,71 ****
    short (&b)[p7] = bb;
    for (int i = 0; i < p7; i++)
      bb[i] = -6;
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][:p2 + N - 2], z[:p3]) \
! 			   reduction(*:y[:p4]) reduction(|:a[:p5 - N + 2]) \
! 			   reduction(&:w[0:p6 - 3 + N][:p6]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
--- 63,71 ----
    short (&b)[p7] = bb;
    for (int i = 0; i < p7; i++)
      bb[i] = -6;
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][ :p2 + N - 2], z[ :p3]) \
! 			   reduction(*:y[ :p4]) reduction(|:a[ :p5 - N + 2]) \
! 			   reduction(&:w[0:p6 - 3 + N][ :p6]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
*************** template <int N>
*** 120,128 ****
  void
  S<N>::foo (int p1, long p2, long p3, int p4, int p5, long p6, short p7)
  {
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][:p2][0:N], z[:p3 + N - 2]) \
! 			   reduction(*:y[:p4]) reduction(|:a[:p5]) \
! 			   reduction(&:w[0:p6 - 3 + N][:p6]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
--- 120,128 ----
  void
  S<N>::foo (int p1, long p2, long p3, int p4, int p5, long p6, short p7)
  {
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][ :p2][0:N], z[ :p3 + N - 2]) \
! 			   reduction(*:y[ :p4]) reduction(|:a[ :p5]) \
! 			   reduction(&:w[0:p6 - 3 + N][ :p6]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-11.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-11.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-11.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-11.C	Sun Nov 23 22:32:41 2025
*************** foo (int (*&x)[3][2], int *y, long (&w)[
*** 7,15 ****
  {
    unsigned long long a[9] = {};
    short b[5] = {};
!   #pragma omp parallel for reduction(+:x[-1:2][:][0:2], z[t + 2:4]) \
  			   reduction(*:y[-s:3]) reduction(|:a[s + 3:4]) \
! 			   reduction(&:w[s + 1:][t:2]) reduction(max:b[2:])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64 - 1][i % 3][(i / 4) & 1] += i;
--- 7,15 ----
  {
    unsigned long long a[9] = {};
    short b[5] = {};
!   #pragma omp parallel for reduction(+:x[-1:2][ : ][0:2], z[t + 2:4]) \
  			   reduction(*:y[-s:3]) reduction(|:a[s + 3:4]) \
! 			   reduction(&:w[s + 1: ][t:2]) reduction(max:b[2: ])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64 - 1][i % 3][(i / 4) & 1] += i;
*************** struct S
*** 59,67 ****
  void
  S::foo (int s, int t)
  {
!   #pragma omp parallel for reduction(+:x[-1:2][:][0:2], z[t + 2:4]) \
  			   reduction(*:y[-s:3]) reduction(|:a[s + 3:4]) \
! 			   reduction(&:w[s + 1:][t:2]) reduction(max:b[2:])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64 - 1][i % 3][(i / 4) & 1] += i;
--- 59,67 ----
  void
  S::foo (int s, int t)
  {
!   #pragma omp parallel for reduction(+:x[-1:2][ : ][0:2], z[t + 2:4]) \
  			   reduction(*:y[-s:3]) reduction(|:a[s + 3:4]) \
! 			   reduction(&:w[s + 1: ][t:2]) reduction(max:b[2: ])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64 - 1][i % 3][(i / 4) & 1] += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-12.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-12.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-12.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-12.C	Sun Nov 23 22:32:41 2025
*************** foo (A<int> (*&x)[3][N], M<int> *y, B<lo
*** 65,73 ****
    short (&b)[p7] = bb;
    for (int i = 0; i < p7; i++)
      bb[i] = -6;
!   #pragma omp parallel for reduction(+:x[-1:p1 + 1][:p2 + N - 2], z[t + N:p3]) \
  			   reduction(*:y[-s:p4]) reduction(|:a[s + 3:p5 - N + 2]) \
! 			   reduction(&:w[s + 1:p6 - 3 + N][t:p6]) reduction(maxb:b[N:])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64 - 1][i % 3][(i / 4) & 1].t += i;
--- 65,73 ----
    short (&b)[p7] = bb;
    for (int i = 0; i < p7; i++)
      bb[i] = -6;
!   #pragma omp parallel for reduction(+:x[-1:p1 + 1][ :p2 + N - 2], z[t + N:p3]) \
  			   reduction(*:y[-s:p4]) reduction(|:a[s + 3:p5 - N + 2]) \
! 			   reduction(&:w[s + 1:p6 - 3 + N][t:p6]) reduction(maxb:b[N: ])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64 - 1][i % 3][(i / 4) & 1].t += i;
*************** template <int N>
*** 118,126 ****
  void
  S<N>::foo (int p1, long p2, long p3, int p4, int p5, long p6, short p7, int s, int t)
  {
!   #pragma omp parallel for reduction(+:x[-1:p1 + 1][:p2][0:N], z[t + N:p3 + N - 2]) \
  			   reduction(*:y[-s:p4]) reduction(|:a[s + 3:p5]) \
! 			   reduction(&:w[s + 1:p6 - 3 + N][t:p6]) reduction(maxb:b[N:])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64 - 1][i % 3][(i / 4) & 1].t += i;
--- 118,126 ----
  void
  S<N>::foo (int p1, long p2, long p3, int p4, int p5, long p6, short p7, int s, int t)
  {
!   #pragma omp parallel for reduction(+:x[-1:p1 + 1][ :p2][0:N], z[t + N:p3 + N - 2]) \
  			   reduction(*:y[-s:p4]) reduction(|:a[s + 3:p5]) \
! 			   reduction(&:w[s + 1:p6 - 3 + N][t:p6]) reduction(maxb:b[N: ])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64 - 1][i % 3][(i / 4) & 1].t += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-5.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-5.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-5.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-5.C	Sun Nov 23 22:32:41 2025
*************** foo (int (*&x)[3][2], int *y, long (&w)[
*** 5,13 ****
  {
    unsigned long long a[9] = {};
    short b[5] = {};
!   #pragma omp parallel for reduction(+:x[0:2][:][0:2], z[:4]) \
! 			   reduction(*:y[:3]) reduction(|:a[:4]) \
! 			   reduction(&:w[0:][:2]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
--- 5,13 ----
  {
    unsigned long long a[9] = {};
    short b[5] = {};
!   #pragma omp parallel for reduction(+:x[0:2][ : ][0:2], z[ :4]) \
! 			   reduction(*:y[ :3]) reduction(|:a[ :4]) \
! 			   reduction(&:w[0: ][ :2]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
*************** struct S
*** 61,69 ****
  void
  S::foo ()
  {
!   #pragma omp parallel for reduction(+:x[0:2][:][0:2], z[:4]) \
! 			   reduction(*:y[:3]) reduction(|:a[:4]) \
! 			   reduction(&:w[0:][:2]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
--- 61,69 ----
  void
  S::foo ()
  {
!   #pragma omp parallel for reduction(+:x[0:2][ : ][0:2], z[ :4]) \
! 			   reduction(*:y[ :3]) reduction(|:a[ :4]) \
! 			   reduction(&:w[0: ][ :2]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-6.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-6.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-6.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-6.C	Sun Nov 23 22:32:41 2025
*************** foo (A<int> (*&x)[3][2], M<int> *y, B<lo
*** 59,67 ****
    A<unsigned long long> a[9];
    short bb[5] = {};
    short (&b)[5] = bb;
!   #pragma omp parallel for reduction(+:x[0:2][:][0:2], z[:4]) \
! 			   reduction(*:y[:3]) reduction(|:a[:4]) \
! 			   reduction(&:w[0:][:2]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
--- 59,67 ----
    A<unsigned long long> a[9];
    short bb[5] = {};
    short (&b)[5] = bb;
!   #pragma omp parallel for reduction(+:x[0:2][ : ][0:2], z[ :4]) \
! 			   reduction(*:y[ :3]) reduction(|:a[ :4]) \
! 			   reduction(&:w[0: ][ :2]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
*************** struct S
*** 114,122 ****
  void
  S::foo ()
  {
!   #pragma omp parallel for reduction(+:x[0:2][:][0:2], z[:4]) \
! 			   reduction(*:y[:3]) reduction(|:a[:4]) \
! 			   reduction(&:w[0:][:2]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
--- 114,122 ----
  void
  S::foo ()
  {
!   #pragma omp parallel for reduction(+:x[0:2][ : ][0:2], z[ :4]) \
! 			   reduction(*:y[ :3]) reduction(|:a[ :4]) \
! 			   reduction(&:w[0: ][ :2]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-7.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-7.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-7.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-7.C	Sun Nov 23 22:32:41 2025
*************** foo (int (*&x)[3][2], int *y, long (&w)[
*** 12,20 ****
  	b[i] = -6;
        a[i] = 0;
      }
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][:p2], z[:p3]) \
! 			   reduction(*:y[:p4]) reduction(|:a[:p5]) \
! 			   reduction(&:w[0:p6 - 1][:p6]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
--- 12,20 ----
  	b[i] = -6;
        a[i] = 0;
      }
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][ :p2], z[ :p3]) \
! 			   reduction(*:y[ :p4]) reduction(|:a[ :p5]) \
! 			   reduction(&:w[0:p6 - 1][ :p6]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
*************** struct S
*** 68,76 ****
  void
  S::foo (int p1, long p2, long p3, int p4, int p5, long p6, short p7)
  {
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][:p2], z[:p3]) \
! 			   reduction(*:y[:p4]) reduction(|:a[:p5]) \
! 			   reduction(&:w[0:p6 - 1][:p6]) reduction(max:b[0:p7])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
--- 68,76 ----
  void
  S::foo (int p1, long p2, long p3, int p4, int p5, long p6, short p7)
  {
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][ :p2], z[ :p3]) \
! 			   reduction(*:y[ :p4]) reduction(|:a[ :p5]) \
! 			   reduction(&:w[0:p6 - 1][ :p6]) reduction(max:b[0:p7])
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-8.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-8.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-8.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-8.C	Sun Nov 23 22:32:41 2025
*************** foo (A<int> (*&x)[3][2], M<int> *y, B<lo
*** 62,70 ****
    short (&b)[p7] = bb;
    for (int i = 0; i < p7; i++)
      bb[i] = -6;
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][:p2], z[:p3]) \
! 			   reduction(*:y[:p4]) reduction(|:a[:p5]) \
! 			   reduction(&:w[0:p6 - 1][:p6]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
--- 62,70 ----
    short (&b)[p7] = bb;
    for (int i = 0; i < p7; i++)
      bb[i] = -6;
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][ :p2], z[ :p3]) \
! 			   reduction(*:y[ :p4]) reduction(|:a[ :p5]) \
! 			   reduction(&:w[0:p6 - 1][ :p6]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
*************** struct S
*** 117,125 ****
  void
  S::foo (int p1, long p2, long p3, int p4, int p5, long p6, short p7)
  {
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][:p2][0:2], z[:p3]) \
! 			   reduction(*:y[:p4]) reduction(|:a[:p5]) \
! 			   reduction(&:w[0:p6 - 1][:p6]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
--- 117,125 ----
  void
  S::foo (int p1, long p2, long p3, int p4, int p5, long p6, short p7)
  {
!   #pragma omp parallel for reduction(+:x[0:p1 + 1][ :p2][0:2], z[ :p3]) \
! 			   reduction(*:y[ :p4]) reduction(|:a[ :p5]) \
! 			   reduction(&:w[0:p6 - 1][ :p6]) reduction(maxb:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1].t += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-9.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-9.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/reduction-9.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/reduction-9.C	Sun Nov 23 22:32:41 2025
*************** foo (int (*&x)[3][N], int *y, long (&w)[
*** 6,14 ****
  {
    unsigned long long a[9] = {};
    short b[5] = {};
!   #pragma omp parallel for reduction(+:x[0:N][:][0:N], z[:4]) \
! 			   reduction(*:y[:3]) reduction(|:a[:4]) \
! 			   reduction(&:w[0:][:N]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
--- 6,14 ----
  {
    unsigned long long a[9] = {};
    short b[5] = {};
!   #pragma omp parallel for reduction(+:x[0:N][ : ][0:N], z[ :4]) \
! 			   reduction(*:y[ :3]) reduction(|:a[ :4]) \
! 			   reduction(&:w[0: ][ :N]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
*************** template <int N>
*** 64,72 ****
  void
  S<N>::foo ()
  {
!   #pragma omp parallel for reduction(+:x[0:N][:][0:N], z[:4]) \
! 			   reduction(*:y[:3]) reduction(|:a[:4]) \
! 			   reduction(&:w[0:][:N]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
--- 64,72 ----
  void
  S<N>::foo ()
  {
!   #pragma omp parallel for reduction(+:x[0:N][ : ][0:N], z[ :4]) \
! 			   reduction(*:y[ :3]) reduction(|:a[ :4]) \
! 			   reduction(&:w[0: ][ :N]) reduction(max:b)
    for (int i = 0; i < 128; i++)
      {
        x[i / 64][i % 3][(i / 4) & 1] += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-18.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-18.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-18.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-18.C	Sun Nov 23 22:32:41 2025
*************** foo (int *&p, int *&q, int *&r, int n, i
*** 12,18 ****
      /* For zero length array sections, p points to the start of
         already mapped range, q to the end of it (with nothing mapped
         after it), and r does not point to an mapped range.  */
!     #pragma omp target map(alloc:p[:0]) map(to:q[:0]) map(from:r[:0]) private(i) map(from:err) firstprivate (s)
      {
        err = 0;
        for (i = 0; i < 8; i++)
--- 12,18 ----
      /* For zero length array sections, p points to the start of
         already mapped range, q to the end of it (with nothing mapped
         after it), and r does not point to an mapped range.  */
!     #pragma omp target map(alloc:p[ :0]) map(to:q[ :0]) map(from:r[ :0]) private(i) map(from:err) firstprivate (s)
      {
        err = 0;
        for (i = 0; i < 8; i++)
*************** foo (int *&p, int *&q, int *&r, int n, i
*** 51,57 ****
        abort ();
      /* And zero-length array sections, though not known at compile
         time, behave the same.  */
!     #pragma omp target map(p[:n]) map(tofrom:q[:n]) map(alloc:r[:n]) private(i) map(from:err) firstprivate (s)
      {
        err = 0;
        for (i = 0; i < 8; i++)
--- 51,57 ----
        abort ();
      /* And zero-length array sections, though not known at compile
         time, behave the same.  */
!     #pragma omp target map(p[ :n]) map(tofrom:q[ :n]) map(alloc:r[ :n]) private(i) map(from:err) firstprivate (s)
      {
        err = 0;
        for (i = 0; i < 8; i++)
*************** foo (int *&p, int *&q, int *&r, int n, i
*** 71,77 ****
        abort ();
      /* Non-zero length array sections, though not known at compile,
         behave differently.  */
!     #pragma omp target map(p[:m]) map(tofrom:q[:m]) map(to:r[:m]) private(i) map(from:err)
      {
        err = 0;
        for (i = 0; i < 8; i++)
--- 71,77 ----
        abort ();
      /* Non-zero length array sections, though not known at compile,
         behave differently.  */
!     #pragma omp target map(p[ :m]) map(tofrom:q[ :m]) map(to:r[ :m]) private(i) map(from:err)
      {
        err = 0;
        for (i = 0; i < 8; i++)
*************** foo (int *&p, int *&q, int *&r, int n, i
*** 87,93 ****
        /* For zero length array sections, p points to the start of
  	 already mapped range, q points to the start of another one,
  	 and r to the end of the second one.  */
!       #pragma omp target map(to:p[:0]) map(from:q[:0]) map(tofrom:r[:0]) private(i) map(from:err)
        {
  	err = 0;
  	for (i = 0; i < 8; i++)
--- 87,93 ----
        /* For zero length array sections, p points to the start of
  	 already mapped range, q points to the start of another one,
  	 and r to the end of the second one.  */
!       #pragma omp target map(to:p[ :0]) map(from:q[ :0]) map(tofrom:r[ :0]) private(i) map(from:err)
        {
  	err = 0;
  	for (i = 0; i < 8; i++)
*************** foo (int *&p, int *&q, int *&r, int n, i
*** 128,134 ****
  	abort ();
        /* And zero-length array sections, though not known at compile
  	 time, behave the same.  */
!       #pragma omp target map(p[:n]) map(alloc:q[:n]) map(from:r[:n]) private(i) map(from:err)
        {
  	err = 0;
  	for (i = 0; i < 8; i++)
--- 128,134 ----
  	abort ();
        /* And zero-length array sections, though not known at compile
  	 time, behave the same.  */
!       #pragma omp target map(p[ :n]) map(alloc:q[ :n]) map(from:r[ :n]) private(i) map(from:err)
        {
  	err = 0;
  	for (i = 0; i < 8; i++)
*************** foo (int *&p, int *&q, int *&r, int n, i
*** 149,155 ****
  	abort ();
        /* Non-zero length array sections, though not known at compile,
  	 behave differently.  */
!       #pragma omp target map(p[:m]) map(alloc:q[:m]) map(tofrom:r[:m]) private(i) map(from:err)
        {
  	err = 0;
  	for (i = 0; i < 8; i++)
--- 149,155 ----
  	abort ();
        /* Non-zero length array sections, though not known at compile,
  	 behave differently.  */
!       #pragma omp target map(p[ :m]) map(alloc:q[ :m]) map(tofrom:r[ :m]) private(i) map(from:err)
        {
  	err = 0;
  	for (i = 0; i < 8; i++)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-19.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-19.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-19.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-19.C	Sun Nov 23 22:32:41 2025
*************** foo (S s, int (&t)[3], int z)
*** 21,27 ****
    }
    if (err) abort ();
    // But explicit zero length array section mapping does.
!   #pragma omp target map(from: err) map(tofrom: s.r[:0], t[:0])
    {
      if (sep)
        /* Since OpenMP 5.2, if no matching mapped list it has been found,
--- 21,27 ----
    }
    if (err) abort ();
    // But explicit zero length array section mapping does.
!   #pragma omp target map(from: err) map(tofrom: s.r[ :0], t[ :0])
    {
      if (sep)
        /* Since OpenMP 5.2, if no matching mapped list it has been found,
*************** foo (S s, int (&t)[3], int z)
*** 32,38 ****
    }
    if (err) abort ();
    // Similarly zero length array section, but unknown at compile time.
!   #pragma omp target map(from: err) map(tofrom: s.r[:z], t[:z])
    {
      if (sep)
        /* Since OpenMP 5.2, if no matching mapped list it has been found,
--- 32,38 ----
    }
    if (err) abort ();
    // Similarly zero length array section, but unknown at compile time.
!   #pragma omp target map(from: err) map(tofrom: s.r[ :z], t[ :z])
    {
      if (sep)
        /* Since OpenMP 5.2, if no matching mapped list it has been found,
*************** foo (S s, int (&t)[3], int z)
*** 44,56 ****
    if (err) abort ();
    #pragma omp target enter data map (to: s.r, t)
    // But when already mapped, it binds to existing mappings.
!   #pragma omp target map(from: err) map(tofrom: s.r[:0], t[:0])
    {
      err = t[0] != 1 || t[1] != 2 || t[2] != 3 || s.r[0] != 6 || s.r[1] != 7;
      sep = 0;
    }
    if (err) abort ();
!   #pragma omp target map(from: err) map(tofrom: s.r[:z], t[:z])
    {
      err = t[0] != 1 || t[1] != 2 || t[2] != 3 || s.r[0] != 6 || s.r[1] != 7;
      sep = 0;
--- 44,56 ----
    if (err) abort ();
    #pragma omp target enter data map (to: s.r, t)
    // But when already mapped, it binds to existing mappings.
!   #pragma omp target map(from: err) map(tofrom: s.r[ :0], t[ :0])
    {
      err = t[0] != 1 || t[1] != 2 || t[2] != 3 || s.r[0] != 6 || s.r[1] != 7;
      sep = 0;
    }
    if (err) abort ();
!   #pragma omp target map(from: err) map(tofrom: s.r[ :z], t[ :z])
    {
      err = t[0] != 1 || t[1] != 2 || t[2] != 3 || s.r[0] != 6 || s.r[1] != 7;
      sep = 0;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-2.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-2.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-2.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-2.C	Sun Nov 23 22:32:41 2025
*************** fn2 (int x, double (&dr) [1024], double
*** 32,38 ****
    double *&ir = i;
    int j;
    fn1 (hr + 2 * x, ir + 2 * x, x);
!   #pragma omp target map(to: br[:x], cr[0:x], dr[x:x], er[x:x]) \
  		     map(to: fr[0:x], gr[0:x], hr[2 * x:x], ir[2 * x:x]) \
  		     map(tofrom: s)
      #pragma omp parallel for reduction(+:s)
--- 32,38 ----
    double *&ir = i;
    int j;
    fn1 (hr + 2 * x, ir + 2 * x, x);
!   #pragma omp target map(to: br[ :x], cr[0:x], dr[x:x], er[x:x]) \
  		     map(to: fr[0:x], gr[0:x], hr[2 * x:x], ir[2 * x:x]) \
  		     map(tofrom: s)
      #pragma omp parallel for reduction(+:s)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-22.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-22.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-22.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-22.C	Sun Nov 23 22:32:41 2025
*************** foo (int *&p, int (&s)[5], int &t, S &u,
*** 20,26 ****
    }
    if (err)
      abort ();
!   #pragma omp target data use_device_ptr(p) map(from:err) map(to:q[:4])
    #pragma omp target is_device_ptr(p) private(i) map(from:err)
    {
      err = 0;
--- 20,26 ----
    }
    if (err)
      abort ();
!   #pragma omp target data use_device_ptr(p) map(from:err) map(to:q[ :4])
    #pragma omp target is_device_ptr(p) private(i) map(from:err)
    {
      err = 0;
*************** foo (int *&p, int (&s)[5], int &t, S &u,
*** 50,56 ****
    }
    if (err)
      abort ();
!   #pragma omp target data map(to:s[:5]) use_device_addr(s) map(from:err)
    #pragma omp target is_device_ptr(s) private(i) map(from:err)
    {
      err = 0;
--- 50,56 ----
    }
    if (err)
      abort ();
!   #pragma omp target data map(to:s[ :5]) use_device_addr(s) map(from:err)
    #pragma omp target is_device_ptr(s) private(i) map(from:err)
    {
      err = 0;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-23.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-23.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-23.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-23.C	Sun Nov 23 22:32:41 2025
*************** main (void)
*** 16,28 ****
      s->data[i] = 0;
  
    #pragma omp target enter data map(to: s)
!   #pragma omp target enter data map(to: s->data, s->data[:SZ])
    #pragma omp target
    {
      for (int i = 0; i < SZ; i++)
        s->data[i] = i;
    }
!   #pragma omp target exit data map(from: s->data, s->data[:SZ])
    #pragma omp target exit data map(from: s)
  
    for (int i = 0; i < SZ; i++)
--- 16,28 ----
      s->data[i] = 0;
  
    #pragma omp target enter data map(to: s)
!   #pragma omp target enter data map(to: s->data, s->data[ :SZ])
    #pragma omp target
    {
      for (int i = 0; i < SZ; i++)
        s->data[i] = i;
    }
!   #pragma omp target exit data map(from: s->data, s->data[ :SZ])
    #pragma omp target exit data map(from: s)
  
    for (int i = 0; i < SZ; i++)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-9.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-9.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-9.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-9.C	Sun Nov 23 22:32:41 2025
*************** foo (int *&p, int (&s)[5], int &t, S &u,
*** 21,27 ****
    }
    if (err)
      abort ();
!   #pragma omp target data map(to:q[:4])
    #pragma omp target data use_device_ptr(p) map(from:err)
    #pragma omp target is_device_ptr(p) private(i) map(from:err)
    {
--- 21,27 ----
    }
    if (err)
      abort ();
!   #pragma omp target data map(to:q[ :4])
    #pragma omp target data use_device_ptr(p) map(from:err)
    #pragma omp target is_device_ptr(p) private(i) map(from:err)
    {
*************** foo (int *&p, int (&s)[5], int &t, S &u,
*** 54,60 ****
    }
    if (err)
      abort ();
!   #pragma omp target data map(to:s[:5])
    #pragma omp target data use_device_addr(s) map(from:err)
    #pragma omp target is_device_ptr(s) private(i) map(from:err)
    {
--- 54,60 ----
    }
    if (err)
      abort ();
!   #pragma omp target data map(to:s[ :5])
    #pragma omp target data use_device_addr(s) map(from:err)
    #pragma omp target is_device_ptr(s) private(i) map(from:err)
    {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-100.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-100.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-100.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-100.C	Sun Nov 23 22:32:41 2025
*************** template<typename T, std::size_t Size>
*** 15,21 ****
  bool test_stack(T (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[:Size])
      {
        bool inner_ok = true;
        const std::size_t half_size = Size / 2;
--- 15,21 ----
  bool test_stack(T (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[ :Size])
      {
        bool inner_ok = true;
        const std::size_t half_size = Size / 2;
*************** template<typename T, std::size_t Size>
*** 79,85 ****
  bool test_queue(T (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[:Size])
      {
        bool inner_ok = true;
        const std::size_t half_size = Size / 2;
--- 79,85 ----
  bool test_queue(T (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[ :Size])
      {
        bool inner_ok = true;
        const std::size_t half_size = Size / 2;
*************** template<typename T, std::size_t Size>
*** 156,162 ****
  bool test_priority_queue(T (&arr)[Size], const T min_value, const T max_value)
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[:Size])
      {
        bool inner_ok = true;
        typedef std::priority_queue<T, std::vector<T> > priority_queue_type;
--- 156,162 ----
  bool test_priority_queue(T (&arr)[Size], const T min_value, const T max_value)
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[ :Size])
      {
        bool inner_ok = true;
        typedef std::priority_queue<T, std::vector<T> > priority_queue_type;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-101.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-101.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-101.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-101.C	Sun Nov 23 22:32:41 2025
*************** template<typename K, typename V, typenam
*** 31,37 ****
  bool test_flat_map(std::pair<K, V> (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 31,37 ----
  bool test_flat_map(std::pair<K, V> (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** template<typename K, typename V, typenam
*** 52,58 ****
  bool test_flat_multimap(std::pair<K, V> (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 52,58 ----
  bool test_flat_multimap(std::pair<K, V> (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** template<typename T, typename std::size_
*** 81,87 ****
  bool test_flat_set(T (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 81,87 ----
  bool test_flat_set(T (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** template<typename T, typename std::size_
*** 102,108 ****
  bool test_flat_multiset(T (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 102,108 ----
  bool test_flat_multiset(T (&arr)[Size])
  {
    bool ok;
!   #pragma omp target map(from: ok) map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-12.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-12.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-12.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-12.C	Sun Nov 23 22:32:41 2025
*************** bool vector_test(const T (&arr)[Size])
*** 89,96 ****
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 89,96 ----
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[ :Size], out_mut_arr[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool deque_test(const T (&arr)[Size])
*** 121,128 ****
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 121,128 ----
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[ :Size], out_mut_arr[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool list_test(const T (&arr)[Size])
*** 153,160 ****
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 153,160 ----
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[ :Size], out_mut_arr[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool map_test(const std::pair<K, V> (&ar
*** 254,262 ****
    std::size_t out_size;
    std::pair<K, V> out_pairs_mut[Size];
    std::size_t out_size_mut;
!   #pragma omp target map(from: ok, out_pairs[:Size], out_size, \
! 			       out_pairs_mut[:Size], out_size_mut) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 254,262 ----
    std::size_t out_size;
    std::pair<K, V> out_pairs_mut[Size];
    std::size_t out_size_mut;
!   #pragma omp target map(from: ok, out_pairs[ :Size], out_size, \
! 			       out_pairs_mut[ :Size], out_size_mut) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool set_test(const T (&arr)[Size])
*** 296,303 ****
    /* Both sizes should be the same.  */
    T out_arr[Size];
    std::size_t out_size;
!   #pragma omp target map(from: ok, out_arr[:Size], out_size) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 296,303 ----
    /* Both sizes should be the same.  */
    T out_arr[Size];
    std::size_t out_size;
!   #pragma omp target map(from: ok, out_arr[ :Size], out_size) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool multimap_test(const std::pair<K, V>
*** 382,389 ****
    bool ok;
    std::pair<K, V> out_pairs[Size];
    std::pair<K, V> out_pairs_mut[Size];
!   #pragma omp target map(from: ok, out_pairs[:Size], out_pairs_mut[:Size]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 382,389 ----
    bool ok;
    std::pair<K, V> out_pairs[Size];
    std::pair<K, V> out_pairs_mut[Size];
!   #pragma omp target map(from: ok, out_pairs[ :Size], out_pairs_mut[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool multiset_test(const T (&arr)[Size])
*** 413,420 ****
    std::multiset<T> reference_multiset(arr, arr + Size);
    bool ok;
    T out_arr[Size];
!   #pragma omp target map(from: ok, out_arr[:Size]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 413,420 ----
    std::multiset<T> reference_multiset(arr, arr + Size);
    bool ok;
    T out_arr[Size];
!   #pragma omp target map(from: ok, out_arr[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool array_test(const T (&arr)[Size])
*** 442,449 ****
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 442,449 ----
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[ :Size], out_mut_arr[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool forward_list_test(const T (&arr)[Si
*** 482,489 ****
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[:Size], out_mut_arr[:Size]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 482,489 ----
    bool ok;
    T out_arr[Size];
    T out_mut_arr[Size];
!   #pragma omp target map(from: ok, out_arr[ :Size], out_mut_arr[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool unordered_map_test(const std::pair<
*** 518,526 ****
    std::size_t out_size;
    std::pair<K, V> out_pairs_mut[Size];
    std::size_t out_size_mut;
!   #pragma omp target map(from: ok, out_pairs[:Size], out_size, \
! 			       out_pairs_mut[:Size], out_size_mut) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 518,526 ----
    std::size_t out_size;
    std::pair<K, V> out_pairs_mut[Size];
    std::size_t out_size_mut;
!   #pragma omp target map(from: ok, out_pairs[ :Size], out_size, \
! 			       out_pairs_mut[ :Size], out_size_mut) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool unordered_set_test(const T (&arr)[S
*** 560,567 ****
    /* Both sizes should be the same.  */
    T out_arr[Size];
    std::size_t out_size;
!   #pragma omp target map(from: ok, out_arr[:Size], out_size) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 560,567 ----
    /* Both sizes should be the same.  */
    T out_arr[Size];
    std::size_t out_size;
!   #pragma omp target map(from: ok, out_arr[ :Size], out_size) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool unordered_multimap_test(const std::
*** 593,600 ****
    bool ok;
    std::pair<K, V> out_pairs[Size];
    std::pair<K, V> out_pairs_mut[Size];
!   #pragma omp target map(from: ok, out_pairs[:Size], out_pairs_mut[:Size]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 593,600 ----
    bool ok;
    std::pair<K, V> out_pairs[Size];
    std::pair<K, V> out_pairs_mut[Size];
!   #pragma omp target map(from: ok, out_pairs[ :Size], out_pairs_mut[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
*************** bool unordered_multiset_test(const T (&a
*** 624,631 ****
    std::unordered_multiset<T> reference_multiset(arr, arr + Size);
    bool ok;
    T out_arr[Size];
!   #pragma omp target map(from: ok, out_arr[:Size]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 624,631 ----
    std::unordered_multiset<T> reference_multiset(arr, arr + Size);
    bool ok;
    T out_arr[Size];
!   #pragma omp target map(from: ok, out_arr[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-2003.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-2003.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-2003.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-2003.C	Sun Nov 23 22:32:41 2025
*************** bool test_memcpy(int arg, const int *num
*** 101,107 ****
  {
    bool ok;
    Extendable2 e2_out;
!   #pragma omp target map(from: ok, e2_out) map(to: arg, nums[:nums_size], nums_size)
      {
        bool inner_ok = true;
        {
--- 101,107 ----
  {
    bool ok;
    Extendable2 e2_out;
!   #pragma omp target map(from: ok, e2_out) map(to: arg, nums[ :nums_size], nums_size)
      {
        bool inner_ok = true;
        {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-30.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-30.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-30.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-30.C	Sun Nov 23 22:32:41 2025
*************** bool test_initializer_list(int arg)
*** 10,16 ****
    static constexpr std::size_t out_arr_size = 7;
    int out_arr[out_arr_size];
    bool ok;
!   #pragma omp target map(from: ok, out_arr[:out_arr_size]) map(to: arg)
      {
        bool inner_ok = true;
        {
--- 10,16 ----
    static constexpr std::size_t out_arr_size = 7;
    int out_arr[out_arr_size];
    bool ok;
!   #pragma omp target map(from: ok, out_arr[ :out_arr_size]) map(to: arg)
      {
        bool inner_ok = true;
        {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-300.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-300.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-300.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-300.C	Sun Nov 23 22:32:41 2025
*************** bool test(std::size_t arg)
*** 22,28 ****
    std::vector<int> vec(arg);
    int *data = vec.data();
    std::size_t size = vec.size();
!   #pragma omp target defaultmap(none) map(from: ok, midpoint_out) map(tofrom: data[:size]) map(to: arg, size)
      {
        std::span span = {data, size};
        bool inner_ok = true;
--- 22,28 ----
    std::vector<int> vec(arg);
    int *data = vec.data();
    std::size_t size = vec.size();
!   #pragma omp target defaultmap(none) map(from: ok, midpoint_out) map(tofrom: data[ :size]) map(to: arg, size)
      {
        std::span span = {data, size};
        bool inner_ok = true;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-32.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-32.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-32.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-32.C	Sun Nov 23 22:32:41 2025
*************** bool test_initializer_list(int arg)
*** 10,16 ****
    static constexpr std::size_t out_arr_size = 7;
    int out_arr[out_arr_size];
    bool ok;
!   #pragma omp target map(from: ok, out_arr[:out_arr_size]) map(to: arg)
      {
        bool inner_ok = true;
        {
--- 10,16 ----
    static constexpr std::size_t out_arr_size = 7;
    int out_arr[out_arr_size];
    bool ok;
!   #pragma omp target map(from: ok, out_arr[ :out_arr_size]) map(to: arg)
      {
        bool inner_ok = true;
        {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-33.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-33.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-33.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-33.C	Sun Nov 23 22:32:41 2025
*************** bool test_initializer_list(int arg)
*** 12,18 ****
    static constexpr std::size_t out_arr_size = 7;
    int out_arr[out_arr_size];
    bool ok;
!   #pragma omp target map(from: ok, out_arr[:out_arr_size]) map(to: arg)
      {
        bool inner_ok = true;
        {
--- 12,18 ----
    static constexpr std::size_t out_arr_size = 7;
    int out_arr[out_arr_size];
    bool ok;
!   #pragma omp target map(from: ok, out_arr[ :out_arr_size]) map(to: arg)
      {
        bool inner_ok = true;
        {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-41.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-41.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-41.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-41.C	Sun Nov 23 22:32:41 2025
*************** bool test(const T (&arr)[Size])
*** 42,50 ****
    T out_fwd_arr[Size];
    T out_first_half_arr[Size / 2];
    #pragma omp target defaultmap(none) \
! 		     map(from: ok, out_rev_arr[:Size], out_fwd_arr[:Size], \
! 			       out_first_half_arr[:Size / 2]) \
! 		     map(to: arr[:Size])
      {
        bool inner_ok = true;
        {
--- 42,50 ----
    T out_fwd_arr[Size];
    T out_first_half_arr[Size / 2];
    #pragma omp target defaultmap(none) \
! 		     map(from: ok, out_rev_arr[ :Size], out_fwd_arr[ :Size], \
! 			       out_first_half_arr[ :Size / 2]) \
! 		     map(to: arr[ :Size])
      {
        bool inner_ok = true;
        {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-60.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-60.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-60.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-60.C	Sun Nov 23 22:32:41 2025
*************** bool test(const T (&arr)[Size])
*** 11,18 ****
    bool ok;
    T out_2x_arr[Size];
    T out_shifted_arr[Size];
!   #pragma omp target map(from: ok, out_2x_arr[:Size], out_shifted_arr[:Size]) \
! 		     map(to: arr[:Size])
      {
        std::vector<T> vec(Size);
        std::vector<T> mutated(Size);
--- 11,18 ----
    bool ok;
    T out_2x_arr[Size];
    T out_shifted_arr[Size];
!   #pragma omp target map(from: ok, out_2x_arr[ :Size], out_shifted_arr[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        std::vector<T> vec(Size);
        std::vector<T> mutated(Size);
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-61.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-61.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-61.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-61.C	Sun Nov 23 22:32:41 2025
*************** bool test(const T (&arr)[Size])
*** 20,27 ****
    T out_2x_arr[Size];
    T out_shifted_arr[Size];
    #pragma omp target defaultmap(none) \
! 		     map(from: ok, out_2x_arr[:Size], out_shifted_arr[:Size]) \
! 		     map(to: arr[:Size])
      {
        std::vector<T> vec(Size);
        std::vector<T> mutated(Size);
--- 20,27 ----
    T out_2x_arr[Size];
    T out_shifted_arr[Size];
    #pragma omp target defaultmap(none) \
! 		     map(from: ok, out_2x_arr[ :Size], out_shifted_arr[ :Size]) \
! 		     map(to: arr[ :Size])
      {
        std::vector<T> vec(Size);
        std::vector<T> mutated(Size);
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-62.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-62.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-62.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-62.C	Sun Nov 23 22:32:41 2025
*************** bool f()
*** 20,26 ****
    const int arr_rev[8] = {7, 6, 5, 4, 3, 2, 1, 0};
  
    bool ok;
!   #pragma omp target defaultmap(none) map(from: ok) map(to: arr_fwd[:8], arr_rev[:8])
      {
        std::span<const int> fwd = {arr_fwd, 8};
        std::span<const int> rev = {arr_rev, 8};
--- 20,26 ----
    const int arr_rev[8] = {7, 6, 5, 4, 3, 2, 1, 0};
  
    bool ok;
!   #pragma omp target defaultmap(none) map(from: ok) map(to: arr_fwd[ :8], arr_rev[ :8])
      {
        std::span<const int> fwd = {arr_fwd, 8};
        std::span<const int> rev = {arr_rev, 8};
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-80.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-80.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-80.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-80.C	Sun Nov 23 22:32:41 2025
*************** bool test(const T (&arr)[Size])
*** 21,27 ****
  {
    bool ok;
    T out_arr[Size];
!   #pragma omp target map(from: ok) map(to: arr[:Size])
      {
        std::span span = {arr, Size};
        bool inner_ok = true;
--- 21,27 ----
  {
    bool ok;
    T out_arr[Size];
!   #pragma omp target map(from: ok) map(to: arr[ :Size])
      {
        std::span span = {arr, Size};
        bool inner_ok = true;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-81.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-81.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-flex-81.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-flex-81.C	Sun Nov 23 22:32:41 2025
*************** bool test(Rn&& range)
*** 34,40 ****
    value_type *data = vec.data();
    std::size_t size = vec.size();
    bool ok;
!   #pragma omp target map(from: ok) map(tofrom: data[:size]) map(to: size)
      {
        std::vector<value_type> orig = {data, data + size};
        std::span<value_type> span = {data, size};
--- 34,40 ----
    value_type *data = vec.data();
    std::size_t size = vec.size();
    bool ok;
!   #pragma omp target map(from: ok) map(tofrom: data[ :size]) map(to: size)
      {
        std::vector<value_type> orig = {data, data + size};
        std::span<value_type> span = {data, size};
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-has-device-addr-7.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-has-device-addr-7.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-has-device-addr-7.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-has-device-addr-7.C	Sun Nov 23 22:32:41 2025
*************** void
*** 18,25 ****
  bar (T (&x)[])
  {
    x[0] = 24;
!   #pragma omp target data map(x[:2]) use_device_addr(x)
!     #pragma omp target has_device_addr(x[:2])
        x[0] = 42;
  
    if (x[0] != 42)
--- 18,25 ----
  bar (T (&x)[])
  {
    x[0] = 24;
!   #pragma omp target data map(x[ :2]) use_device_addr(x)
!     #pragma omp target has_device_addr(x[ :2])
        x[0] = 42;
  
    if (x[0] != 42)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-in-reduction-1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-in-reduction-1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-in-reduction-1.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-in-reduction-1.C	Sun Nov 23 22:32:41 2025
*************** foo (int &x, int *&y, int n, int v)
*** 8,16 ****
    int (&w)[n] = wu;
    for (i = 0; i < n; i++)
      w[i] = u[i] = n + i;
!   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x++;
        y[0] += 2;
--- 8,16 ----
    int (&w)[n] = wu;
    for (i = 0; i < n; i++)
      w[i] = u[i] = n + i;
!   #pragma omp taskgroup task_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x++;
        y[0] += 2;
*************** foo (int &x, int *&y, int n, int v)
*** 19,25 ****
        u[0] += 5;
        w[1] += 6;
      }
!     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x += 4;
        y[0] += 5;
--- 19,25 ----
        u[0] += 5;
        w[1] += 6;
      }
!     #pragma omp target in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x += 4;
        y[0] += 5;
*************** foo (int &x, int *&y, int n, int v)
*** 28,34 ****
        u[1] += 8;
        w[2] += 7;
      }
!     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
      {
        x += 9;
        y[0] += 10;
--- 28,34 ----
        u[1] += 8;
        w[2] += 7;
      }
!     #pragma omp target in_reduction (+: x, y[ :v], z[1:v], u, w[1:2])
      {
        x += 9;
        y[0] += 10;
*************** bar (int &x, int *&y, int n, int v)
*** 59,67 ****
    for (i = 0; i < n; i++)
      w[i] = u[i] = n + i;
    #pragma omp parallel master
!   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x++;
        y[0] += 2;
--- 59,67 ----
    for (i = 0; i < n; i++)
      w[i] = u[i] = n + i;
    #pragma omp parallel master
!   #pragma omp taskgroup task_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x++;
        y[0] += 2;
*************** bar (int &x, int *&y, int n, int v)
*** 70,76 ****
        u[0] += 5;
        w[1] += 6;
      }
!     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x += 4;
        y[0] += 5;
--- 70,76 ----
        u[0] += 5;
        w[1] += 6;
      }
!     #pragma omp target in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x += 4;
        y[0] += 5;
*************** bar (int &x, int *&y, int n, int v)
*** 79,85 ****
        u[1] += 8;
        w[2] += 7;
      }
!     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
      {
        x += 9;
        y[0] += 10;
--- 79,85 ----
        u[1] += 8;
        w[2] += 7;
      }
!     #pragma omp target in_reduction (+: x, y[ :v], z[1:v], u, w[1:2])
      {
        x += 9;
        y[0] += 10;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-in-reduction-2.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-in-reduction-2.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-in-reduction-2.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-in-reduction-2.C	Sun Nov 23 22:32:41 2025
*************** foo (S &x, S *&y, int n, int v)
*** 18,26 ****
        w[i].c[0] = u[i].c[0] = 0;
        w[i].c[1] = u[i].c[1] = 0;
      }
!   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x.a++;
        x.b++;
--- 18,26 ----
        w[i].c[0] = u[i].c[0] = 0;
        w[i].c[1] = u[i].c[1] = 0;
      }
!   #pragma omp taskgroup task_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x.a++;
        x.b++;
*************** foo (S &x, S *&y, int n, int v)
*** 35,41 ****
        w[1].a += 6;
        w[1].b += 16;
      }
!     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x.a += 4;
        x.b += 14;
--- 35,41 ----
        w[1].a += 6;
        w[1].b += 16;
      }
!     #pragma omp target in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x.a += 4;
        x.b += 14;
*************** foo (S &x, S *&y, int n, int v)
*** 50,56 ****
        w[2].a += 7;
        w[2].b += 17;
      }
!     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
      {
        x.a += 9;
        x.b += 19;
--- 50,56 ----
        w[2].a += 7;
        w[2].b += 17;
      }
!     #pragma omp target in_reduction (+: x, y[ :v], z[1:v], u, w[1:2])
      {
        x.a += 9;
        x.b += 19;
*************** bar (S &x, S *&y, int n, int v)
*** 101,109 ****
        w[i].c[1] = u[i].c[1] = 0;
      }
    #pragma omp parallel master
!   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x.a++;
        x.b++;
--- 101,109 ----
        w[i].c[1] = u[i].c[1] = 0;
      }
    #pragma omp parallel master
!   #pragma omp taskgroup task_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x.a++;
        x.b++;
*************** bar (S &x, S *&y, int n, int v)
*** 118,124 ****
        w[1].a += 6;
        w[1].b += 16;
      }
!     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x.a += 4;
        x.b += 14;
--- 118,124 ----
        w[1].a += 6;
        w[1].b += 16;
      }
!     #pragma omp target in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x.a += 4;
        x.b += 14;
*************** bar (S &x, S *&y, int n, int v)
*** 133,139 ****
        w[2].a += 7;
        w[2].b += 17;
      }
!     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
      {
        x.a += 9;
        x.b += 19;
--- 133,139 ----
        w[2].a += 7;
        w[2].b += 17;
      }
!     #pragma omp target in_reduction (+: x, y[ :v], z[1:v], u, w[1:2])
      {
        x.a += 9;
        x.b += 19;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-lambda-1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-lambda-1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-lambda-1.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-lambda-1.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 56,67 ****
  
    int val = 1;
    int &valref = val;
!   #pragma omp target enter data map(alloc: data1[:N], data2[:N])
  
    omp_target_loop (0, N, [=](int i) { data1[i] = val; });
    omp_target_loop (0, N, [=](int i) { data2[i] = valref + 1; });
  
!   #pragma omp target update from(data1[:N], data2[:N])
  
    for (int i = 0; i < N; i++)
      {
--- 56,67 ----
  
    int val = 1;
    int &valref = val;
!   #pragma omp target enter data map(alloc: data1[ :N], data2[ :N])
  
    omp_target_loop (0, N, [=](int i) { data1[i] = val; });
    omp_target_loop (0, N, [=](int i) { data2[i] = valref + 1; });
  
!   #pragma omp target update from(data1[ :N], data2[ :N])
  
    for (int i = 0; i < N; i++)
      {
*************** int main (void)
*** 69,75 ****
        if (data2[i] != 2) abort ();
      }
  
!   #pragma omp target exit data map(delete: data1[:N], data2[:N])
  
    int b = 8;
    S s = { 4, N, data1 };
--- 69,75 ----
        if (data2[i] != 2) abort ();
      }
  
!   #pragma omp target exit data map(delete: data1[ :N], data2[ :N])
  
    int b = 8;
    S s = { 4, N, data1 };
*************** int main (void)
*** 77,89 ****
  
    if (f ()) abort ();
  
!   #pragma omp target enter data map(to: data1[:N])
    if (f ()) abort ();
  
!   #pragma omp target enter data map(to: data2[:N])
    if (!f () && !shared_mem) abort ();
  
!   #pragma omp target exit data map(from: data1[:N], data2[:N])
  
    if (!shared_mem)
    for (int i = 0; i < N; i++)
--- 77,89 ----
  
    if (f ()) abort ();
  
!   #pragma omp target enter data map(to: data1[ :N])
    if (f ()) abort ();
  
!   #pragma omp target enter data map(to: data2[ :N])
    if (!f () && !shared_mem) abort ();
  
!   #pragma omp target exit data map(from: data1[ :N], data2[ :N])
  
    if (!shared_mem)
    for (int i = 0; i < N; i++)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-lambda-3.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-lambda-3.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-lambda-3.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-lambda-3.C	Sun Nov 23 22:32:41 2025
*************** void run (int dev)
*** 52,63 ****
  		     && omp_target_is_present (data2, dev));
    int val = 1;
    int &valref = val;
!   #pragma omp target enter data map(alloc: data1[:N], data2[:N]) device(dev)
  
    omp_target_loop (0, N, [=](int i) { data1[i] = val; }, dev);
    omp_target_loop (0, N, [=](int i) { data2[i] = valref + 1; }, dev);
  
!   #pragma omp target update from(data1[:N], data2[:N]) device(dev)
  
    for (int i = 0; i < N; i++)
      {
--- 52,63 ----
  		     && omp_target_is_present (data2, dev));
    int val = 1;
    int &valref = val;
!   #pragma omp target enter data map(alloc: data1[ :N], data2[ :N]) device(dev)
  
    omp_target_loop (0, N, [=](int i) { data1[i] = val; }, dev);
    omp_target_loop (0, N, [=](int i) { data2[i] = valref + 1; }, dev);
  
!   #pragma omp target update from(data1[ :N], data2[ :N]) device(dev)
  
    for (int i = 0; i < N; i++)
      {
*************** void run (int dev)
*** 65,84 ****
        if (data2[i] != 2) abort ();
      }
  
!   #pragma omp target exit data map(delete: data1[:N], data2[:N]) device(dev)
  
    int b = 8;
    S s = { 4, N, data1 };
    auto f = s.merge_data_func (data2, b, dev);
    if (f () ^ shared_mem) abort ();
  
!   #pragma omp target enter data map(to: data1[:N]) device(dev)
    if (f () ^ shared_mem) abort ();
  
!   #pragma omp target enter data map(to: data2[:N]) device(dev)
    if (!f ()) abort ();
  
!   #pragma omp target exit data map(from: data1[:N], data2[:N]) device(dev)
  
    for (int i = 0; i < N; i++)
      {
--- 65,84 ----
        if (data2[i] != 2) abort ();
      }
  
!   #pragma omp target exit data map(delete: data1[ :N], data2[ :N]) device(dev)
  
    int b = 8;
    S s = { 4, N, data1 };
    auto f = s.merge_data_func (data2, b, dev);
    if (f () ^ shared_mem) abort ();
  
!   #pragma omp target enter data map(to: data1[ :N]) device(dev)
    if (f () ^ shared_mem) abort ();
  
!   #pragma omp target enter data map(to: data2[ :N]) device(dev)
    if (!f ()) abort ();
  
!   #pragma omp target exit data map(from: data1[ :N], data2[ :N]) device(dev)
  
    for (int i = 0; i < N; i++)
      {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-map-class-1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-map-class-1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-map-class-1.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-map-class-1.C	Sun Nov 23 22:32:41 2025
*************** test_map_tofrom_class_heap ()
*** 30,36 ****
    int *array = new int[N];
    A *obj = new A (array, N);
  
!   #pragma omp target map(from: array[:N]) map(tofrom: obj[:1])
      {
        int *tmp_h_array = obj->h_array;
        obj->h_array = array;
--- 30,36 ----
    int *array = new int[N];
    A *obj = new A (array, N);
  
!   #pragma omp target map(from: array[ :N]) map(tofrom: obj[ :1])
      {
        int *tmp_h_array = obj->h_array;
        obj->h_array = array;
*************** test_map_tofrom_class_stack ()
*** 64,70 ****
    int array[N];
    A obj(array, N);
  
!   #pragma omp target map(from: array[:N]) map(tofrom: obj)
      {
        int *tmp_h_array = obj.h_array;
        obj.h_array = array;
--- 64,70 ----
    int array[N];
    A obj(array, N);
  
!   #pragma omp target map(from: array[ :N]) map(tofrom: obj)
      {
        int *tmp_h_array = obj.h_array;
        obj.h_array = array;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__array-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 34,40 ****
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[:N]) map (alloc: arr)
  #endif
      {
        #pragma omp target
--- 34,40 ----
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[ :N]) map (alloc: arr)
  #endif
      {
        #pragma omp target
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__bitset-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 41,47 ****
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[:N]) map (alloc: _set)
  #endif
      {
        #pragma omp target
--- 41,47 ----
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[ :N]) map (alloc: _set)
  #endif
      {
        #pragma omp target
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__deque-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 39,45 ****
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[:N]) map (alloc: _deque)
  #endif
      {
  #ifndef MEM_SHARED
--- 39,45 ----
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[ :N]) map (alloc: _deque)
  #endif
      {
  #ifndef MEM_SHARED
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__flat_map-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 39,45 ****
    init (keys, true);
    init (data, false);
  
!   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
  
    #pragma omp target
      {
--- 39,45 ----
    init (keys, true);
    init (data, false);
  
!   #pragma omp target enter data map (to: keys[ :N], data[ :N]) map (alloc: _map)
  
    #pragma omp target
      {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__flat_multimap-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 33,39 ****
    init (keys, KEY_MAX);
    init (data, RAND_MAX);
  
!   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
  
    #pragma omp target
      {
--- 33,39 ----
    init (keys, KEY_MAX);
    init (data, RAND_MAX);
  
!   #pragma omp target enter data map (to: keys[ :N], data[ :N]) map (alloc: _map)
  
    #pragma omp target
      {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__flat_multiset-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 34,40 ****
    srand (time (NULL));
    init (data);
  
!   #pragma omp target data map (to: data[:N]) map (alloc: set)
      {
        #pragma omp target
  	{
--- 34,40 ----
    srand (time (NULL));
    init (data);
  
!   #pragma omp target data map (to: data[ :N]) map (alloc: set)
      {
        #pragma omp target
  	{
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__flat_set-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 40,46 ****
    srand (time (NULL));
    init (data);
  
!   #pragma omp target data map (to: data[:N]) map (alloc: _set)
      {
        #pragma omp target
  	{
--- 40,46 ----
    srand (time (NULL));
    init (data);
  
!   #pragma omp target data map (to: data[ :N]) map (alloc: _set)
      {
        #pragma omp target
  	{
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__forward_list-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 44,50 ****
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[:N]) map (alloc: list)
  #endif
      {
  #ifndef MEM_SHARED
--- 44,50 ----
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[ :N]) map (alloc: list)
  #endif
      {
  #ifndef MEM_SHARED
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__list-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 44,50 ****
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[:N]) map (alloc: _list)
  #endif
      {
  #ifndef MEM_SHARED
--- 44,50 ----
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[ :N]) map (alloc: _list)
  #endif
      {
  #ifndef MEM_SHARED
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__map-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 39,45 ****
    init (data, false);
  
  #ifndef MEM_SHARED
!   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
  #endif
  
    #pragma omp target
--- 39,45 ----
    init (data, false);
  
  #ifndef MEM_SHARED
!   #pragma omp target enter data map (to: keys[ :N], data[ :N]) map (alloc: _map)
  #endif
  
    #pragma omp target
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__multimap-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 34,40 ****
    init (data, RAND_MAX);
  
  #ifndef MEM_SHARED
!   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
  #endif
  
    #pragma omp target
--- 34,40 ----
    init (data, RAND_MAX);
  
  #ifndef MEM_SHARED
!   #pragma omp target enter data map (to: keys[ :N], data[ :N]) map (alloc: _map)
  #endif
  
    #pragma omp target
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__multiset-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 35,41 ****
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[:N]) map (alloc: set)
  #endif
      {
        #pragma omp target
--- 35,41 ----
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[ :N]) map (alloc: set)
  #endif
      {
        #pragma omp target
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__set-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 40,46 ****
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[:N]) map (alloc: _set)
  #endif
      {
        #pragma omp target
--- 40,46 ----
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[ :N]) map (alloc: _set)
  #endif
      {
        #pragma omp target
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__span-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 35,41 ****
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target enter data map (to: data[:N]) map (alloc: elements, span)
  #endif
  
    #pragma omp target
--- 35,41 ----
    init (data);
  
  #ifndef MEM_SHARED
!   #pragma omp target enter data map (to: data[ :N]) map (alloc: elements, span)
  #endif
  
    #pragma omp target
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__unordered_map-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 38,44 ****
    init (keys, true);
    init (data, false);
  
!   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
  
    #pragma omp target
      {
--- 38,44 ----
    init (keys, true);
    init (data, false);
  
!   #pragma omp target enter data map (to: keys[ :N], data[ :N]) map (alloc: _map)
  
    #pragma omp target
      {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__unordered_multimap-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 32,38 ****
    init (keys, KEY_MAX);
    init (data, RAND_MAX);
  
!   #pragma omp target enter data map (to: keys[:N], data[:N]) map (alloc: _map)
  
    #pragma omp target
      {
--- 32,38 ----
    init (keys, KEY_MAX);
    init (data, RAND_MAX);
  
!   #pragma omp target enter data map (to: keys[ :N], data[ :N]) map (alloc: _map)
  
    #pragma omp target
      {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__unordered_multiset-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 33,39 ****
    srand (time (NULL));
    init (data);
  
!   #pragma omp target data map (to: data[:N]) map (alloc: set)
      {
        #pragma omp target
  	{
--- 33,39 ----
    srand (time (NULL));
    init (data);
  
!   #pragma omp target data map (to: data[ :N]) map (alloc: set)
      {
        #pragma omp target
  	{
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__unordered_set-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 39,45 ****
    srand (time (NULL));
    init (data);
  
!   #pragma omp target data map (to: data[:N]) map (alloc: _set)
      {
        #pragma omp target
  	{
--- 39,45 ----
    srand (time (NULL));
    init (data);
  
!   #pragma omp target data map (to: data[ :N]) map (alloc: _set)
      {
        #pragma omp target
  	{
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__valarray-1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__valarray-1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__valarray-1.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__valarray-1.C	Sun Nov 23 22:32:41 2025
*************** int main()
*** 56,64 ****
    size_t shiftData_i_size = shiftData_i.size();
  #pragma omp target \
    defaultmap(none) \
!   map(to: v1_i_data[:v1_i_size], v1_i_size, \
!           v2_i_data[:v2_i_size], v2_i_size, \
!           shiftData_i_data[:shiftData_i_size], shiftData_i_size)
    {
      /* Manually set up a buffer we can stream into, similar to 'cout << [...]', and print it at the end of region.  */
      std::stringbuf out_b;
--- 56,64 ----
    size_t shiftData_i_size = shiftData_i.size();
  #pragma omp target \
    defaultmap(none) \
!   map(to: v1_i_data[ :v1_i_size], v1_i_size, \
!           v2_i_data[ :v2_i_size], v2_i_size, \
!           shiftData_i_data[ :shiftData_i_size], shiftData_i_size)
    {
      /* Manually set up a buffer we can stream into, similar to 'cout << [...]', and print it at the end of region.  */
      std::stringbuf out_b;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__valarray-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 38,44 ****
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[:N]) map (alloc: arr)
  #endif
      {
        #pragma omp target
--- 38,44 ----
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[ :N]) map (alloc: arr)
  #endif
      {
        #pragma omp target
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-std__vector-concurrent.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 38,44 ****
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[:N]) map (alloc: vec)
  #endif
      {
  #ifndef MEM_SHARED
--- 38,44 ----
  #endif
  
  #ifndef MEM_SHARED
!   #pragma omp target data map (to: data[ :N]) map (alloc: vec)
  #endif
      {
  #ifndef MEM_SHARED
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-this-3.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-this-3.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-this-3.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-this-3.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 74,80 ****
      if (ptr2[i] != 0)
        abort ();
  
!   #pragma omp target data map(ptr1[:N])
    mapped = s.set_ptr (val);
  
    if (!mapped)
--- 74,80 ----
      if (ptr2[i] != 0)
        abort ();
  
!   #pragma omp target data map(ptr1[ :N])
    mapped = s.set_ptr (val);
  
    if (!mapped)
*************** int main (void)
*** 87,93 ****
      if (ptr1[i] != val)
        abort ();
  
!   #pragma omp target data map(ptr2[:N])
    mapped = s.set_refptr (val);
  
    if (!mapped)
--- 87,93 ----
      if (ptr1[i] != val)
        abort ();
  
!   #pragma omp target data map(ptr2[ :N])
    mapped = s.set_refptr (val);
  
    if (!mapped)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-this-4.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-this-4.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-this-4.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-this-4.C	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 83,89 ****
      if (ptr2[i] != 0)
        abort ();
  
!   #pragma omp target data map(ptr1[:N], ptr2[:N])
    {
      if (!p1 ())
        abort ();
--- 83,89 ----
      if (ptr2[i] != 0)
        abort ();
  
!   #pragma omp target data map(ptr1[ :N], ptr2[ :N])
    {
      if (!p1 ())
        abort ();
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-virtual-1.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-virtual-1.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/target-virtual-1.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/target-virtual-1.C	Sun Nov 23 22:32:41 2025
*************** struct derived : public base {
*** 15,21 ****
      void do_work ()
      {
        int error = 0;
!       #pragma omp target map (tofrom: this[:1], error)
        {
  	if (scalar != 42 || this->array[0] != 123 || array[4] != 555)
  	  error = 1;
--- 15,21 ----
      void do_work ()
      {
        int error = 0;
!       #pragma omp target map (tofrom: this[ :1], error)
        {
  	if (scalar != 42 || this->array[0] != 123 || array[4] != 555)
  	  error = 1;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-11.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-11.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-11.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-11.C	Sun Nov 23 22:32:41 2025
*************** foo (T &n, T *&c, long long int *&d, T (
*** 25,34 ****
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0] += 7;
        a[1] += 17;
--- 25,34 ----
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0] += 7;
        a[1] += 17;
*************** test (T &n)
*** 84,98 ****
      T (&o)[4] = os;
      #pragma omp parallel reduction (task,+: a, c) reduction (task,*: b[2 * n:3 * n], d) \
  			 reduction (task,+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (task,+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			 reduction (task,*: t[2:2][:], s[1:n + 1])
      {
        #pragma omp for
        for (int i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  T j;
  	  a[0] += 2;
--- 84,98 ----
      T (&o)[4] = os;
      #pragma omp parallel reduction (task,+: a, c) reduction (task,*: b[2 * n:3 * n], d) \
  			 reduction (task,+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (task,+: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			 reduction (task,*: t[2:2][ : ], s[1:n + 1])
      {
        #pragma omp for
        for (int i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  T j;
  	  a[0] += 2;
*************** test (T &n)
*** 110,120 ****
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
--- 110,120 ----
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-12.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-12.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-12.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-12.C	Sun Nov 23 22:32:41 2025
*************** foo (int n, S *c, S *d, S m[3], S *r, S
*** 62,71 ****
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0].s += 7;
        a[1].s += 17;
--- 62,71 ----
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0].s += 7;
        a[1].s += 17;
*************** test (int n)
*** 129,143 ****
      S o[4] = { { 1, 7 }, { 0, 7 }, { 0, 7 }, { 2, 7 } };
      #pragma omp parallel reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  			 reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (task, +: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			 reduction (task, *: t[2:2][:], s[1:n + 1])
      {
        #pragma omp for
        for (int i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  int j;
  	  a[0].s += 2;
--- 129,143 ----
      S o[4] = { { 1, 7 }, { 0, 7 }, { 0, 7 }, { 2, 7 } };
      #pragma omp parallel reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  			 reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (task, +: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			 reduction (task, *: t[2:2][ : ], s[1:n + 1])
      {
        #pragma omp for
        for (int i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  int j;
  	  a[0].s += 2;
*************** test (int n)
*** 170,180 ****
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
--- 170,180 ----
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-13.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-13.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-13.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-13.C	Sun Nov 23 22:32:41 2025
*************** foo (T &n, S *&c, S *&d, S (&m)[3], S *&
*** 71,80 ****
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0].s += 7;
        a[1].s += 17;
--- 71,80 ----
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0].s += 7;
        a[1].s += 17;
*************** test (T &n)
*** 145,159 ****
      S (&o)[4] = os;
      #pragma omp parallel reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  			 reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (task, +: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			 reduction (task, *: t[2:2][:], s[1:n + 1])
      {
        #pragma omp for
        for (T i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  T j;
  	  a[0].s += 2;
--- 145,159 ----
      S (&o)[4] = os;
      #pragma omp parallel reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  			 reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (task, +: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			 reduction (task, *: t[2:2][ : ], s[1:n + 1])
      {
        #pragma omp for
        for (T i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  T j;
  	  a[0].s += 2;
*************** test (T &n)
*** 186,196 ****
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
--- 186,196 ----
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-17.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-17.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-17.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-17.C	Sun Nov 23 22:32:41 2025
*************** foo (T &n, T *&c, long long int *&d, T (
*** 25,34 ****
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0] += 7;
        a[1] += 17;
--- 25,34 ----
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0] += 7;
        a[1] += 17;
*************** test (T &n, I x, I y)
*** 86,98 ****
      {
        #pragma omp for reduction (task,+: a, c) reduction (task,*: b[2 * n:3 * n], d) \
  		      reduction (task,+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		      reduction (task,+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 		      reduction (task,*: t[2:2][:], s[1:n + 1]) schedule (dynamic)
        for (I i = x; i != y; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  T j;
  	  a[0] += 2;
--- 86,98 ----
      {
        #pragma omp for reduction (task,+: a, c) reduction (task,*: b[2 * n:3 * n], d) \
  		      reduction (task,+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		      reduction (task,+: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 		      reduction (task,*: t[2:2][ : ], s[1:n + 1]) schedule (dynamic)
        for (I i = x; i != y; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  T j;
  	  a[0] += 2;
*************** test (T &n, I x, I y)
*** 110,120 ****
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
--- 110,120 ----
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-18.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-18.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-18.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-18.C	Sun Nov 23 22:32:41 2025
*************** foo (int n, S *c, S *d, S m[3], S *r, S
*** 62,71 ****
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0].s += 7;
        a[1].s += 17;
--- 62,71 ----
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0].s += 7;
        a[1].s += 17;
*************** test (int n)
*** 134,147 ****
      {
        #pragma omp for reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  		      reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		      reduction (task, +: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 		      reduction (task, *: t[2:2][:], s[1:n + 1]) \
  		      schedule (nonmonotonic: guided, 1)
        for (unsigned long long i = x; i < y; i += z)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  int j;
  	  a[0].s += 2;
--- 134,147 ----
      {
        #pragma omp for reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  		      reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		      reduction (task, +: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 		      reduction (task, *: t[2:2][ : ], s[1:n + 1]) \
  		      schedule (nonmonotonic: guided, 1)
        for (unsigned long long i = x; i < y; i += z)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  int j;
  	  a[0].s += 2;
*************** test (int n)
*** 174,184 ****
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
--- 174,184 ----
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-19.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-19.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-19.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-19.C	Sun Nov 23 22:32:41 2025
*************** foo (T &n, S *&c, S *&d, S (&m)[3], S *&
*** 71,80 ****
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0].s += 7;
        a[1].s += 17;
--- 71,80 ----
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0].s += 7;
        a[1].s += 17;
*************** test (T &n)
*** 147,160 ****
      {
        #pragma omp for reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  		      reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		      reduction (task, +: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 		      reduction (task, *: t[2:2][:], s[1:n + 1]) \
  		      schedule (monotonic: runtime)
        for (T i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  T j;
  	  a[0].s += 2;
--- 147,160 ----
      {
        #pragma omp for reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  		      reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		      reduction (task, +: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 		      reduction (task, *: t[2:2][ : ], s[1:n + 1]) \
  		      schedule (monotonic: runtime)
        for (T i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  T j;
  	  a[0].s += 2;
*************** test (T &n)
*** 187,197 ****
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
--- 187,197 ----
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-4.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-4.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-4.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-4.C	Sun Nov 23 22:32:41 2025
*************** foo (T &n, T *&c, long long int *&d, T (
*** 25,34 ****
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0] += 7;
        a[1] += 17;
--- 25,34 ----
  {
    T i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0] += 7;
        a[1] += 17;
*************** test (T &n)
*** 85,99 ****
      T (&o)[4] = os;
      #pragma omp taskgroup task_reduction (+: a, c) task_reduction (*: b[2 * n:3 * n], d) \
  			  task_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			  task_reduction (+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			  task_reduction (*: t[2:2][:], s[1:n + 1])
      {
        T i;
        for (i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  T j;
  	  a[0] += 2;
--- 85,99 ----
      T (&o)[4] = os;
      #pragma omp taskgroup task_reduction (+: a, c) task_reduction (*: b[2 * n:3 * n], d) \
  			  task_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			  task_reduction (+: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			  task_reduction (*: t[2:2][ : ], s[1:n + 1])
      {
        T i;
        for (i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  T j;
  	  a[0] += 2;
*************** test (T &n)
*** 111,121 ****
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
--- 111,121 ----
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-5.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-5.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-5.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-5.C	Sun Nov 23 22:32:41 2025
*************** foo (int n, S *c, S *d, S m[3], S *r, S
*** 61,70 ****
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0].s += 7;
        a[1].s += 17;
--- 61,70 ----
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0].s += 7;
        a[1].s += 17;
*************** test (int n)
*** 128,142 ****
      S o[4] = { { 1, 7 }, { 0, 7 }, { 0, 7 }, { 2, 7 } };
      #pragma omp taskgroup task_reduction (+: a, c) task_reduction (*: b[2 * n:3 * n], d) \
  			  task_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			  task_reduction (+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			  task_reduction (*: t[2:2][:], s[1:n + 1])
      {
        int i;
        for (i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  int j;
  	  a[0].s += 2;
--- 128,142 ----
      S o[4] = { { 1, 7 }, { 0, 7 }, { 0, 7 }, { 2, 7 } };
      #pragma omp taskgroup task_reduction (+: a, c) task_reduction (*: b[2 * n:3 * n], d) \
  			  task_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			  task_reduction (+: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			  task_reduction (*: t[2:2][ : ], s[1:n + 1])
      {
        int i;
        for (i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  int j;
  	  a[0].s += 2;
*************** test (int n)
*** 169,179 ****
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
--- 169,179 ----
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-6.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-6.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-6.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-6.C	Sun Nov 23 22:32:41 2025
*************** foo (int &n, S *&c, S *&d, S (&m)[3], S
*** 70,79 ****
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0].s += 7;
        a[1].s += 17;
--- 70,79 ----
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0].s += 7;
        a[1].s += 17;
*************** test (int &n)
*** 144,158 ****
      S (&o)[4] = os;
      #pragma omp taskgroup task_reduction (+: a, c) task_reduction (*: b[2 * n:3 * n], d) \
  			  task_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			  task_reduction (+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			  task_reduction (*: t[2:2][:], s[1:n + 1])
      {
        int i;
        for (i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  int j;
  	  a[0].s += 2;
--- 144,158 ----
      S (&o)[4] = os;
      #pragma omp taskgroup task_reduction (+: a, c) task_reduction (*: b[2 * n:3 * n], d) \
  			  task_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			  task_reduction (+: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			  task_reduction (*: t[2:2][ : ], s[1:n + 1])
      {
        int i;
        for (i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  int j;
  	  a[0].s += 2;
*************** test (int &n)
*** 185,195 ****
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
--- 185,195 ----
  	    if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	      abort ();
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1].s += 6;
  	      r[2].s += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-7.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-7.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/task-reduction-7.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/task-reduction-7.C	Sun Nov 23 22:32:41 2025
*************** extern "C" void abort ();
*** 4,10 ****
  void
  bar (int *a, int *b, int *c, int (*d)[2], int (*e)[4], int *f, int *g, size_t n)
  {
!   #pragma omp task in_reduction (*: a[:n], b[3:n], c[n:n], d[0][:n], e[0][1:n], f[:n], g[1:n])
    {
      a[0] *= 12;
      a[1] *= 13;
--- 4,10 ----
  void
  bar (int *a, int *b, int *c, int (*d)[2], int (*e)[4], int *f, int *g, size_t n)
  {
!   #pragma omp task in_reduction (*: a[ :n], b[3:n], c[n:n], d[0][ :n], e[0][1:n], f[ :n], g[1:n])
    {
      a[0] *= 12;
      a[1] *= 13;
*************** foo (size_t n, void *x, void *y)
*** 43,52 ****
        f[i] = 1;
        g[i + 1] = 1;
      }
!   #pragma omp taskgroup task_reduction (*: a, b[3:n], c[n:n], d[0][:n], e[0][1:n], f, g[1:n])
    {
      bar (a, b, c, (int (*)[2]) d, (int (*)[4]) e, &f[0], &g[0], n);
!     #pragma omp task in_reduction (*: a, b[3:n], c[n:n], d[0][:n], e[0][1:n], f, g[1:n])
      {
        a[0] *= 2;
        a[1] *= 3;
--- 43,52 ----
        f[i] = 1;
        g[i + 1] = 1;
      }
!   #pragma omp taskgroup task_reduction (*: a, b[3:n], c[n:n], d[0][ :n], e[0][1:n], f, g[1:n])
    {
      bar (a, b, c, (int (*)[2]) d, (int (*)[4]) e, &f[0], &g[0], n);
!     #pragma omp task in_reduction (*: a, b[3:n], c[n:n], d[0][ :n], e[0][1:n], f, g[1:n])
      {
        a[0] *= 2;
        a[1] *= 3;
*************** baz (size_t n, void *x, void *y)
*** 98,107 ****
    {
      int (&f)[n] = fb;
      int (&g)[n * 2] = gb;
!     #pragma omp taskgroup task_reduction (*: a, b[3:n], c[n:n], d[0][:n], e[0][1:n], f, g[1:n])
      {
        bar (a, b, c, (int (*)[2]) d, (int (*)[4]) e, &f[0], &g[0], n);
!       #pragma omp task in_reduction (*: a, b[3:n], c[n:n], d[0][:n], e[0][1:n], f, g[1:n])
        {
  	a[0] *= 2;
  	a[1] *= 3;
--- 98,107 ----
    {
      int (&f)[n] = fb;
      int (&g)[n * 2] = gb;
!     #pragma omp taskgroup task_reduction (*: a, b[3:n], c[n:n], d[0][ :n], e[0][1:n], f, g[1:n])
      {
        bar (a, b, c, (int (*)[2]) d, (int (*)[4]) e, &f[0], &g[0], n);
!       #pragma omp task in_reduction (*: a, b[3:n], c[n:n], d[0][ :n], e[0][1:n], f, g[1:n])
        {
  	a[0] *= 2;
  	a[1] *= 3;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/taskloop-reduction-2.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/taskloop-reduction-2.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/taskloop-reduction-2.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/taskloop-reduction-2.C	Sun Nov 23 22:32:41 2025
*************** foo (int &n, int *&c, long long int *&d,
*** 38,47 ****
    int i;
    U u;
    u.u[2] = 8;
!   #pragma omp taskloop in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		       in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		       in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		       in_reduction (*: s[1:2], t[2:2][:]) firstprivate (u) nogroup
    for (i = 0; i < 2; i++)
      {
        a[0] += 7;
--- 38,47 ----
    int i;
    U u;
    u.u[2] = 8;
!   #pragma omp taskloop in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		       in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		       in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		       in_reduction (*: s[1:2], t[2:2][ : ]) firstprivate (u) nogroup
    for (i = 0; i < 2; i++)
      {
        a[0] += 7;
*************** test (int &n)
*** 103,110 ****
      int i;
      #pragma omp taskloop reduction (+: a, c) reduction (*: b[2 * n:3 * n], d) \
  			 reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			 reduction (*: t[2:2][:], s[1:n + 1]) firstprivate (u)
      for (i = 0; i < 4; i++)
        {
  	int j;
--- 103,110 ----
      int i;
      #pragma omp taskloop reduction (+: a, c) reduction (*: b[2 * n:3 * n], d) \
  			 reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (+: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			 reduction (*: t[2:2][ : ], s[1:n + 1]) firstprivate (u)
      for (i = 0; i < 4; i++)
        {
  	int j;
*************** test (int &n)
*** 125,135 ****
  	if (u.u[2] != 10)
  	  abort ();
  	for (j = 0; j < 2; j++)
! 	  #pragma omp task in_reduction (+: a, c[:2]) \
  			   in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			   in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			   in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			   in_reduction (*: s[n:2], t[2:2][:]) firstprivate (u)
  	  {
  	    m[1] += 6;
  	    r[2] += 7;
--- 125,135 ----
  	if (u.u[2] != 10)
  	  abort ();
  	for (j = 0; j < 2; j++)
! 	  #pragma omp task in_reduction (+: a, c[ :2]) \
  			   in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			   in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			   in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			   in_reduction (*: s[n:2], t[2:2][ : ]) firstprivate (u)
  	  {
  	    m[1] += 6;
  	    r[2] += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/taskloop-reduction-3.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/taskloop-reduction-3.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/taskloop-reduction-3.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/taskloop-reduction-3.C	Sun Nov 23 22:32:41 2025
*************** void
*** 60,69 ****
  foo (int n, S *c, S *d, S m[3], S *r, S o[4], S *p, S q[4][2])
  {
    int i;
!   #pragma omp taskloop in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		       in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		       in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		       in_reduction (*: s[1:2], t[2:2][:]) nogroup
    for (i = 0; i < 2; i++)
      {
        a[0].s += 7;
--- 60,69 ----
  foo (int n, S *c, S *d, S m[3], S *r, S o[4], S *p, S q[4][2])
  {
    int i;
!   #pragma omp taskloop in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		       in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		       in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		       in_reduction (*: s[1:2], t[2:2][ : ]) nogroup
    for (i = 0; i < 2; i++)
      {
        a[0].s += 7;
*************** test (int n)
*** 129,136 ****
      int i;
      #pragma omp taskloop reduction (+: a, c) reduction (*: b[2 * n:3 * n], d) \
  			 reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			 reduction (*: t[2:2][:], s[1:n + 1])
      for (i = 0; i < 4; i++)
        {
  	int j;
--- 129,136 ----
      int i;
      #pragma omp taskloop reduction (+: a, c) reduction (*: b[2 * n:3 * n], d) \
  			 reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (+: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			 reduction (*: t[2:2][ : ], s[1:n + 1])
      for (i = 0; i < 4; i++)
        {
  	int j;
*************** test (int n)
*** 163,173 ****
  	for (int z = 0; z < 3; z++)
  	  if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	    abort ();
! 	#pragma omp taskloop in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:]) nogroup
  	for (j = 0; j < 2; j++)
  	  {
  	    m[1].s += 6;
--- 163,173 ----
  	for (int z = 0; z < 3; z++)
  	  if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	    abort ();
! 	#pragma omp taskloop in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ]) nogroup
  	for (j = 0; j < 2; j++)
  	  {
  	    m[1].s += 6;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c++/taskloop-reduction-4.C gcc-16-20251123/libgomp/testsuite/libgomp.c++/taskloop-reduction-4.C
*** gcc-16-20251116/libgomp/testsuite/libgomp.c++/taskloop-reduction-4.C	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c++/taskloop-reduction-4.C	Sun Nov 23 22:32:41 2025
*************** void
*** 61,70 ****
  foo (int n, S *c, S *d, S m[3], S *r, S o[4], S *p, S q[4][2])
  {
    int i;
!   #pragma omp taskloop in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		       reduction (default, +: o[n:n*2], m[1], p[0]) in_reduction (+: k[1:2][:], f[2:2]) \
! 		       reduction (+: q[1:2][:], r[2:2]) in_reduction (+: g[n:n*2], e[1], h[0]) \
! 		       in_reduction (*: s[1:2], t[2:2][:])
    for (i = 0; i < 2; i++)
      {
        a[0].s += 7;
--- 61,70 ----
  foo (int n, S *c, S *d, S m[3], S *r, S o[4], S *p, S q[4][2])
  {
    int i;
!   #pragma omp taskloop in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		       reduction (default, +: o[n:n*2], m[1], p[0]) in_reduction (+: k[1:2][ : ], f[2:2]) \
! 		       reduction (+: q[1:2][ : ], r[2:2]) in_reduction (+: g[n:n*2], e[1], h[0]) \
! 		       in_reduction (*: s[1:2], t[2:2][ : ])
    for (i = 0; i < 2; i++)
      {
        a[0].s += 7;
*************** test (int n)
*** 131,138 ****
      int i;
      #pragma omp taskloop reduction (+: a, c) reduction (default, *: b[2 * n:3 * n], d) \
  			 reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			 reduction (*: t[2:2][:], s[1:n + 1])
      for (i = 0; i < 4; i++)
        {
  	int j;
--- 131,138 ----
      int i;
      #pragma omp taskloop reduction (+: a, c) reduction (default, *: b[2 * n:3 * n], d) \
  			 reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (+: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			 reduction (*: t[2:2][ : ], s[1:n + 1])
      for (i = 0; i < 4; i++)
        {
  	int j;
*************** test (int n)
*** 165,175 ****
  	for (int z = 0; z < 3; z++)
  	  if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	    abort ();
! 	#pragma omp taskloop in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:]) nogroup
  	for (j = 0; j < 2; j++)
  	  {
  	    m[1].s += 6;
--- 165,175 ----
  	for (int z = 0; z < 3; z++)
  	  if (b[z + 2].t != 5 && b[z + 2].t != 9)
  	    abort ();
! 	#pragma omp taskloop in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ]) nogroup
  	for (j = 0; j < 2; j++)
  	  {
  	    m[1].s += 6;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/allocate-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/allocate-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/allocate-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/allocate-1.c	Sun Nov 23 22:32:41 2025
*************** foo (int x, int *p, int *q, int px, omp_
*** 126,132 ****
  	if ((fl & 2) && (((uintptr_t) &i5) & 63) != 0)
  	  abort ();
        }
!     #pragma omp for reduction(+:p[2:px], q[:3], r2) allocate(h: p, q, r2)
      for (i = 0; i < 32; i++)
        {
  	p[2] += i;
--- 126,132 ----
  	if ((fl & 2) && (((uintptr_t) &i5) & 63) != 0)
  	  abort ();
        }
!     #pragma omp for reduction(+:p[2:px], q[ :3], r2) allocate(h: p, q, r2)
      for (i = 0; i < 32; i++)
        {
  	p[2] += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/allocate-3.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/allocate-3.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/allocate-3.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/allocate-3.c	Sun Nov 23 22:32:41 2025
*************** foo (int x, int *p, int *q, int px, omp_
*** 148,154 ****
  	if ((((uintptr_t) &i5) & 31) != 0)
  	  abort ();
        }
!     #pragma omp for reduction(+:p[2:px], q[:3], r2) allocate(align (16), allocator (h): p, q, r2)
      for (i = 0; i < 32; i++)
        {
  	p[2] += i;
--- 148,154 ----
  	if ((((uintptr_t) &i5) & 31) != 0)
  	  abort ();
        }
!     #pragma omp for reduction(+:p[2:px], q[ :3], r2) allocate(align (16), allocator (h): p, q, r2)
      for (i = 0; i < 32; i++)
        {
  	p[2] += i;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/baseptrs-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/baseptrs-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/baseptrs-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/baseptrs-2.c	Sun Nov 23 22:32:41 2025
*************** int main (int argc, char *argv[])
*** 39,45 ****
  
  #pragma omp target map(to: p->b, p->b[0], p->c, p->c[0], p->b->c, p->b->c[0]) \
  		   map(to: p->b->c->ptr, p->c->ptr) \
! 		   map(tofrom: p->b->c->ptr[:N], p->c->ptr[:N])
    {
      for (int i = 0; i < N; i++)
        {
--- 39,45 ----
  
  #pragma omp target map(to: p->b, p->b[0], p->c, p->c[0], p->b->c, p->b->c[0]) \
  		   map(to: p->b->c->ptr, p->c->ptr) \
! 		   map(tofrom: p->b->c->ptr[ :N], p->c->ptr[ :N])
    {
      for (int i = 0; i < N; i++)
        {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-1.c	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,45 ----
+ /* Check basic functionality for the delimited form of "declare variant"
+    - no error re duplicate definitions
+    - variants are registered and correctly resolved at call site.  */
+ 
+ int foo (int a)
+ {
+   return a;
+ }
+ 
+ int bar (int x)
+ {
+   return x;
+ }
+ 
+ #pragma omp begin declare variant match (construct={target})
+ int foo (int a)
+ {
+   return a + 1;
+ }
+ 
+ int bar (int x)
+ {
+   return x * 2;
+ }
+ #pragma omp end declare variant
+ 
+ /* Because of the high score value, this variant for "bar" should always be
+    selected even when the one above also matches.  */
+ #pragma omp begin declare variant match (implementation={vendor(score(10000):"gnu")})
+ int bar (int x)
+ {
+   return x * 4;
+ }
+ #pragma omp end declare variant
+ 
+ int main (void)
+ {
+   if (foo (42) != 42) __builtin_abort ();
+   if (bar (3) != 12) __builtin_abort ();
+ #pragma omp target
+   {
+     if (foo (42) != 43) __builtin_abort ();
+     if (bar (3) != 12) __builtin_abort ();
+   }
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/delim-declare-variant-2.c	Sun Nov 23 22:32:41 2025
***************
*** 0 ****
--- 1,47 ----
+ /* Check that the correct function is used;
+    assumes that vendor(gnu) is always true.  */
+ 
+ int inner() { return 1; }
+ 
+ int outer(int is_novar) {
+   int k;
+   if (!is_novar) __builtin_abort();
+ 
+   k = inner();
+   if (k != 22) __builtin_abort();
+ 
+   #pragma omp dispatch novariants(1)
+     k = inner();
+   if (k != 1) __builtin_abort();
+   return 3;
+ }
+ 
+ #pragma omp begin declare variant match(implementation={vendor(gnu)})
+ int outer(int is_novar) {
+   int k;
+   if (is_novar) __builtin_abort();
+ 
+   k = inner();
+   if (k != 22) __builtin_abort();
+ 
+   #pragma omp dispatch novariants(1)
+     k = inner();
+   if (k != 1) __builtin_abort();
+   return 44;
+ }
+ 
+ int inner() { return 22; }
+ #pragma omp end declare variant
+ 
+ int
+ main()
+ {
+   int j;
+   j = outer(0);
+   if (j != 44) __builtin_abort();
+ 
+   #pragma omp dispatch novariants(1)
+     j = outer(1);
+   if (j != 3) __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/dispatch-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/dispatch-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/dispatch-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/dispatch-1.c	Sun Nov 23 22:32:41 2025
*************** int test (int n)
*** 45,51 ****
      }
  
    int f, last_dev = omp_get_num_devices () - 1;
! #pragma omp target data map(to: av[:n]) map(from: d_bv[:n]) device(last_dev) if (n == 1024)
    {
      #pragma omp dispatch nocontext(n > 1024) novariants(n < 1024) device(last_dev)
      f = foo (d_bv, av, n);
--- 45,51 ----
      }
  
    int f, last_dev = omp_get_num_devices () - 1;
! #pragma omp target data map(to: av[ :n]) map(from: d_bv[ :n]) device(last_dev) if (n == 1024)
    {
      #pragma omp dispatch nocontext(n > 1024) novariants(n < 1024) device(last_dev)
      f = foo (d_bv, av, n);
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/dispatch-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/dispatch-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/dispatch-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/dispatch-2.c	Sun Nov 23 22:32:41 2025
*************** int test (int n)
*** 53,59 ****
      }
  
    int f, last_dev = omp_get_num_devices () - 1;
! #pragma omp target data map(to: av[:n]) map(from: d_bv[:n]) device(last_dev) if (n == 1024)
    {
      #pragma omp dispatch nocontext(n > 1024) novariants(n < 1024) device(last_dev)
      f = foo (d_bv, av, n);
--- 53,59 ----
      }
  
    int f, last_dev = omp_get_num_devices () - 1;
! #pragma omp target data map(to: av[ :n]) map(from: d_bv[ :n]) device(last_dev) if (n == 1024)
    {
      #pragma omp dispatch nocontext(n > 1024) novariants(n < 1024) device(last_dev)
      f = foo (d_bv, av, n);
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/interop-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/interop-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/interop-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/interop-2.c	Sun Nov 23 22:32:41 2025
*************** test_async (const int dev)
*** 58,64 ****
       As OpenMP_VV's Issue #863 shows, the overhead is high enough to
       fail even when only doing an atomic integer increment.  */
  
!   #pragma omp target device(dev) map(A) depend(out: A[:N]) nowait
    for (int i = 0; i < N; i++)
      #pragma omp atomic update
      A[i] += __builtin_sin (2*i*M_PI/N);
--- 58,64 ----
       As OpenMP_VV's Issue #863 shows, the overhead is high enough to
       fail even when only doing an atomic integer increment.  */
  
!   #pragma omp target device(dev) map(A) depend(out: A[ :N]) nowait
    for (int i = 0; i < N; i++)
      #pragma omp atomic update
      A[i] += __builtin_sin (2*i*M_PI/N);
*************** test_async (const int dev)
*** 68,78 ****
    if (obj1 == omp_interop_none)
      {
        // Same as below as 'nowait' is ignored.
!       #pragma omp interop destroy(obj1) depend(in: A[:N]) nowait
      }
    else
      {
!       #pragma omp interop destroy(obj1) depend(in: A[:N])
      }
  
    /* ... this code is only executed once the dependency as been fulfilled.  */
--- 68,78 ----
    if (obj1 == omp_interop_none)
      {
        // Same as below as 'nowait' is ignored.
!       #pragma omp interop destroy(obj1) depend(in: A[ :N]) nowait
      }
    else
      {
!       #pragma omp interop destroy(obj1) depend(in: A[ :N])
      }
  
    /* ... this code is only executed once the dependency as been fulfilled.  */
*************** test_async (const int dev)
*** 93,99 ****
  
    /* Integer */
  
!   #pragma omp target device(dev) map(B) depend(out: B[:N]) nowait
    for (int i = 0; i < N; i++)
      #pragma omp atomic update
      B[i] += 42;
--- 93,99 ----
  
    /* Integer */
  
!   #pragma omp target device(dev) map(B) depend(out: B[ :N]) nowait
    for (int i = 0; i < N; i++)
      #pragma omp atomic update
      B[i] += 42;
*************** test_async (const int dev)
*** 102,112 ****
    if (obj2 == omp_interop_none)
      {
        // Same as below as 'nowait' is ignored.
!       #pragma omp interop use(obj2) depend(in: B[:N]) nowait
      }
    else
      {
!       #pragma omp interop use(obj2) depend(in: B[:N])
      }
  
    for (int i = 0; i < N; i++)
--- 102,112 ----
    if (obj2 == omp_interop_none)
      {
        // Same as below as 'nowait' is ignored.
!       #pragma omp interop use(obj2) depend(in: B[ :N]) nowait
      }
    else
      {
!       #pragma omp interop use(obj2) depend(in: B[ :N])
      }
  
    for (int i = 0; i < N; i++)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/matrix-omp-target-teams-distribute-parallel-for-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/matrix-omp-target-teams-distribute-parallel-for-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/matrix-omp-target-teams-distribute-parallel-for-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/matrix-omp-target-teams-distribute-parallel-for-1.c	Sun Nov 23 22:32:41 2025
***************
*** 2,8 ****
  /* { dg-do run { target { offload_device } } } */
  /* { dg-additional-options "-Wall -Wno-unknown-pragmas" } */
  
! #define COMMON_DIRECTIVE omp target teams distribute parallel for map(tofrom:result[:dim0 * dim1]) map(to:matrix1[0:dim0 * dim1], matrix2[0:dim0 * dim1])
  #define COLLAPSE_1 collapse(1)
  #define COLLAPSE_2 collapse(2)
  #define COLLAPSE_3
--- 2,8 ----
  /* { dg-do run { target { offload_device } } } */
  /* { dg-additional-options "-Wall -Wno-unknown-pragmas" } */
  
! #define COMMON_DIRECTIVE omp target teams distribute parallel for map(tofrom:result[ :dim0 * dim1]) map(to:matrix1[0:dim0 * dim1], matrix2[0:dim0 * dim1])
  #define COLLAPSE_1 collapse(1)
  #define COLLAPSE_2 collapse(2)
  #define COLLAPSE_3
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/ptr-attach-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/ptr-attach-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/ptr-attach-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/ptr-attach-1.c	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 21,27 ****
    int *ptr = (int *) malloc (sizeof (int) * N);
    int *orig_ptr = ptr;
  
!   #pragma omp target map (ptr, ptr[:N])
    {
      for (int i = 0; i < N; i++)
        ptr[i] = N - i;
--- 21,27 ----
    int *ptr = (int *) malloc (sizeof (int) * N);
    int *orig_ptr = ptr;
  
!   #pragma omp target map (ptr, ptr[ :N])
    {
      for (int i = 0; i < N; i++)
        ptr[i] = N - i;
*************** int main (void)
*** 36,42 ****
  
    S s = { 0 };
    s.ptr = ptr;
!   #pragma omp target map (s, s.ptr[:N])
    {
      for (int i = 0; i < N; i++)
        s.ptr[i] = i;
--- 36,42 ----
  
    S s = { 0 };
    s.ptr = ptr;
!   #pragma omp target map (s, s.ptr[ :N])
    {
      for (int i = 0; i < N; i++)
        s.ptr[i] = i;
*************** int main (void)
*** 61,67 ****
    for (int i = 0; i < N; i++)
      gp[i] = i - 1;
  
!   #pragma omp target map (gp[:N])
    {
      for (int i = 0; i < N; i++)
        gp[i] += 1;
--- 61,67 ----
    for (int i = 0; i < N; i++)
      gp[i] = i - 1;
  
!   #pragma omp target map (gp[ :N])
    {
      for (int i = 0; i < N; i++)
        gp[i] += 1;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/ptr-attach-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/ptr-attach-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/ptr-attach-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/ptr-attach-2.c	Sun Nov 23 22:32:41 2025
*************** void foo (struct L *l)
*** 18,27 ****
        l->m.num_blocks[i] = N;
      }
  
!   #pragma omp target enter data map(to:l[:1])
    for (int i = 0; i < N; i++)
      {
!       #pragma omp target enter data map(to:l->m.blocks[i][:l->m.num_blocks[i]])
      }
  
    #pragma omp target
--- 18,27 ----
        l->m.num_blocks[i] = N;
      }
  
!   #pragma omp target enter data map(to:l[ :1])
    for (int i = 0; i < N; i++)
      {
!       #pragma omp target enter data map(to:l->m.blocks[i][ :l->m.num_blocks[i]])
      }
  
    #pragma omp target
*************** void foo (struct L *l)
*** 36,44 ****
  
    for (int i = 0; i < N; i++)
      {
!       #pragma omp target exit data map(from:l->m.blocks[i][:l->m.num_blocks[i]])
      }
!   #pragma omp target exit data map(from:l[:1])
  
  
    for (int i = 0; i < N; i++)
--- 36,44 ----
  
    for (int i = 0; i < N; i++)
      {
!       #pragma omp target exit data map(from:l->m.blocks[i][ :l->m.num_blocks[i]])
      }
!   #pragma omp target exit data map(from:l[ :1])
  
  
    for (int i = 0; i < N; i++)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/refcount-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/refcount-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/refcount-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/refcount-1.c	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 16,22 ****
    unsigned char *p = (unsigned char *) &a;
    unsigned char *q = p + 2;
  
!   #pragma omp target enter data map (alloc:p[:1], q[:1])
  
    if (d != id)
      {
--- 16,22 ----
    unsigned char *p = (unsigned char *) &a;
    unsigned char *q = p + 2;
  
!   #pragma omp target enter data map (alloc:p[ :1], q[ :1])
  
    if (d != id)
      {
*************** int main (void)
*** 40,46 ****
  	abort ();
      }
  
!   #pragma omp target exit data map (from:q[:1])
  
    if (d != id)
      {
--- 40,46 ----
  	abort ();
      }
  
!   #pragma omp target exit data map (from:q[ :1])
  
    if (d != id)
      {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/struct-elem-4.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/struct-elem-4.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/struct-elem-4.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/struct-elem-4.c	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 20,26 ****
  
    int *p = &s.b;
    int *q = &s.d;
!   #pragma omp target enter data map (alloc: p[:1], q[:1])
  
    s.b = 88;
    s.d = 99;
--- 20,26 ----
  
    int *p = &s.b;
    int *q = &s.d;
!   #pragma omp target enter data map (alloc: p[ :1], q[ :1])
  
    s.b = 88;
    s.d = 99;
*************** int main (void)
*** 36,42 ****
  	abort ();
      }
  
!   #pragma omp target exit data map (from: q[:1])
    if (d != id)
      {
        if (omp_target_is_present (&s, d))
--- 36,42 ----
  	abort ();
      }
  
!   #pragma omp target exit data map (from: q[ :1])
    if (d != id)
      {
        if (omp_target_is_present (&s, d))
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-2.c	Sun Nov 23 22:32:41 2025
*************** fn2 (int x)
*** 23,29 ****
    int i;
    fn1 (b, c, x);
    fn1 (e, d + x, x);
!   #pragma omp target map(to: b, c[:x], d[x:x], e) map(tofrom: s)
      #pragma omp parallel for reduction(+:s)
        for (i = 0; i < x; i++)
  	s += b[i] * c[i] + d[x + i] + sizeof (b) - sizeof (c);
--- 23,29 ----
    int i;
    fn1 (b, c, x);
    fn1 (e, d + x, x);
!   #pragma omp target map(to: b, c[ :x], d[x:x], e) map(tofrom: s)
      #pragma omp parallel for reduction(+:s)
        for (i = 0; i < x; i++)
  	s += b[i] * c[i] + d[x + i] + sizeof (b) - sizeof (c);
*************** fn4 (int x)
*** 53,62 ****
    int i;
    fn1 (b, c, x);
    fn1 (e, d + x, x);
!   #pragma omp target data map(from: b, c[:x], d[x:x], e)
      {
!       #pragma omp target update to(b, c[:x], d[x:x], e)
!       #pragma omp target map(c[:x], d[x:x], s)
  	#pragma omp parallel for reduction(+:s)
  	  for (i = 0; i < x; i++)
  	    {
--- 53,62 ----
    int i;
    fn1 (b, c, x);
    fn1 (e, d + x, x);
!   #pragma omp target data map(from: b, c[ :x], d[x:x], e)
      {
!       #pragma omp target update to(b, c[ :x], d[x:x], e)
!       #pragma omp target map(c[ :x], d[x:x], s)
  	#pragma omp parallel for reduction(+:s)
  	  for (i = 0; i < x; i++)
  	    {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-has-device-addr-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-has-device-addr-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-has-device-addr-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-has-device-addr-1.c	Sun Nov 23 22:32:41 2025
*************** main ()
*** 26,54 ****
      if (y[i] != i)
        __builtin_abort ();
  
!   #pragma omp target data map(y[:N]) use_device_addr(y)
!     #pragma omp target has_device_addr(y[:N])
        for (int i = 0; i < N; i++)
  	y[i] = i + 2;
    for (int i = 0; i < N; i++)
      if (y[i] != i + 2)
        __builtin_abort ();
  
!   #pragma omp target data map(y[:N]) use_device_addr(y)
      #pragma omp target has_device_addr(y[24])
  	y[24] = 42;
    if (y[24] != 42)
      __builtin_abort ();
  
!   #pragma omp target data map(y[:N]) use_device_addr(y)
!     #pragma omp target has_device_addr(y[24:])
        for (int i = 24; i < N; i++)
  	y[i] = i + 3;
    for (int i = 24; i < N; i++)
      if (y[i] != i + 3)
        __builtin_abort ();
  
!   #pragma omp target data map(y[:N]) use_device_addr(y)
      #pragma omp target has_device_addr(y[12:24])
        for (int i = 12; i < 24; i++)
  	y[i] = i + 4;
--- 26,54 ----
      if (y[i] != i)
        __builtin_abort ();
  
!   #pragma omp target data map(y[ :N]) use_device_addr(y)
!     #pragma omp target has_device_addr(y[ :N])
        for (int i = 0; i < N; i++)
  	y[i] = i + 2;
    for (int i = 0; i < N; i++)
      if (y[i] != i + 2)
        __builtin_abort ();
  
!   #pragma omp target data map(y[ :N]) use_device_addr(y)
      #pragma omp target has_device_addr(y[24])
  	y[24] = 42;
    if (y[24] != 42)
      __builtin_abort ();
  
!   #pragma omp target data map(y[ :N]) use_device_addr(y)
!     #pragma omp target has_device_addr(y[24: ])
        for (int i = 24; i < N; i++)
  	y[i] = i + 3;
    for (int i = 24; i < N; i++)
      if (y[i] != i + 3)
        __builtin_abort ();
  
!   #pragma omp target data map(y[ :N]) use_device_addr(y)
      #pragma omp target has_device_addr(y[12:24])
        for (int i = 12; i < 24; i++)
  	y[i] = i + 4;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-2.c	Sun Nov 23 22:32:41 2025
*************** main (void)
*** 18,46 ****
    for (int i = 0; i < N; i++)
      a.ptr[i] = 0;
  
!   #pragma omp target enter data map(to: a.ptr, a.ptr[:N])
  
    #pragma omp target
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[:N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 1)
        abort ();
  
!   #pragma omp target map(a.ptr[:N])
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[:N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 2)
        abort ();
  
!   #pragma omp target exit data map(from:a.ptr, a.ptr[:N])
  
    free (a.ptr);
  
--- 18,46 ----
    for (int i = 0; i < N; i++)
      a.ptr[i] = 0;
  
!   #pragma omp target enter data map(to: a.ptr, a.ptr[ :N])
  
    #pragma omp target
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[ :N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 1)
        abort ();
  
!   #pragma omp target map(a.ptr[ :N])
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[ :N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 2)
        abort ();
  
!   #pragma omp target exit data map(from:a.ptr, a.ptr[ :N])
  
    free (a.ptr);
  
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-5.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-5.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-5.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-5.c	Sun Nov 23 22:32:41 2025
*************** main (void)
*** 19,47 ****
      a.ptr[i] = 0;
  
    #pragma omp target enter data map(to: a.ptr)
!   #pragma omp target enter data map(to: a.ptr[:N])
  
    #pragma omp target
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[:N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 1)
        abort ();
  
!   #pragma omp target map(a.ptr[:N])
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[:N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 2)
        abort ();
  
!   #pragma omp target exit data map(release: a.ptr[:N])
    #pragma omp target exit data map(release: a.ptr)
  
    free (a.ptr);
--- 19,47 ----
      a.ptr[i] = 0;
  
    #pragma omp target enter data map(to: a.ptr)
!   #pragma omp target enter data map(to: a.ptr[ :N])
  
    #pragma omp target
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[ :N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 1)
        abort ();
  
!   #pragma omp target map(a.ptr[ :N])
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target update from(a.ptr[ :N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 2)
        abort ();
  
!   #pragma omp target exit data map(release: a.ptr[ :N])
    #pragma omp target exit data map(release: a.ptr)
  
    free (a.ptr);
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c	Sun Nov 23 22:32:41 2025
*************** foo (int x, int *y, int n, int v)
*** 5,13 ****
    int u[n], w[n], i;
    for (i = 0; i < n; i++)
      w[i] = u[i] = n + i;
!   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x++;
        y[0] += 2;
--- 5,13 ----
    int u[n], w[n], i;
    for (i = 0; i < n; i++)
      w[i] = u[i] = n + i;
!   #pragma omp taskgroup task_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x++;
        y[0] += 2;
*************** foo (int x, int *y, int n, int v)
*** 16,22 ****
        u[0] += 5;
        w[1] += 6;
      }
!     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x += 4;
        y[0] += 5;
--- 16,22 ----
        u[0] += 5;
        w[1] += 6;
      }
!     #pragma omp target in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x += 4;
        y[0] += 5;
*************** foo (int x, int *y, int n, int v)
*** 25,31 ****
        u[1] += 8;
        w[2] += 7;
      }
!     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
      {
        x += 9;
        y[0] += 10;
--- 25,31 ----
        u[1] += 8;
        w[2] += 7;
      }
!     #pragma omp target in_reduction (+: x, y[ :v], z[1:v], u, w[1:2])
      {
        x += 9;
        y[0] += 10;
*************** bar (int x, int *y, int n, int v)
*** 53,61 ****
    for (i = 0; i < n; i++)
      w[i] = u[i] = n + i;
    #pragma omp parallel master
!   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x++;
        y[0] += 2;
--- 53,61 ----
    for (i = 0; i < n; i++)
      w[i] = u[i] = n + i;
    #pragma omp parallel master
!   #pragma omp taskgroup task_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x++;
        y[0] += 2;
*************** bar (int x, int *y, int n, int v)
*** 64,70 ****
        u[0] += 5;
        w[1] += 6;
      }
!     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x += 4;
        y[0] += 5;
--- 64,70 ----
        u[0] += 5;
        w[1] += 6;
      }
!     #pragma omp target in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x += 4;
        y[0] += 5;
*************** bar (int x, int *y, int n, int v)
*** 73,79 ****
        u[1] += 8;
        w[2] += 7;
      }
!     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
      {
        x += 9;
        y[0] += 10;
--- 73,79 ----
        u[1] += 8;
        w[2] += 7;
      }
!     #pragma omp target in_reduction (+: x, y[ :v], z[1:v], u, w[1:2])
      {
        x += 9;
        y[0] += 10;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c	Sun Nov 23 22:32:41 2025
*************** foo (struct S x, struct S *y, int n, int
*** 15,23 ****
        w[i].c[0] = u[i].c[0] = 0;
        w[i].c[1] = u[i].c[1] = 0;
      }
!   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x.a++;
        x.b++;
--- 15,23 ----
        w[i].c[0] = u[i].c[0] = 0;
        w[i].c[1] = u[i].c[1] = 0;
      }
!   #pragma omp taskgroup task_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x.a++;
        x.b++;
*************** foo (struct S x, struct S *y, int n, int
*** 32,38 ****
        w[1].a += 6;
        w[1].b += 16;
      }
!     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v]) map(tofrom: x.a, x.b, x.c[:2])
      {
        x.a += 4;
        x.b += 14;
--- 32,38 ----
        w[1].a += 6;
        w[1].b += 16;
      }
!     #pragma omp target in_reduction (+: x, y[ :2], z[1:2], u, w[1:v]) map(tofrom: x.a, x.b, x.c[ :2])
      {
        x.a += 4;
        x.b += 14;
*************** foo (struct S x, struct S *y, int n, int
*** 47,53 ****
        w[2].a += 7;
        w[2].b += 17;
      }
!     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
      {
        x.a += 9;
        x.b += 19;
--- 47,53 ----
        w[2].a += 7;
        w[2].b += 17;
      }
!     #pragma omp target in_reduction (+: x, y[ :v], z[1:v], u, w[1:2])
      {
        x.a += 9;
        x.b += 19;
*************** bar (struct S x, struct S *y, int n, int
*** 95,103 ****
        w[i].c[1] = u[i].c[1] = 0;
      }
    #pragma omp parallel master
!   #pragma omp taskgroup task_reduction (+: x, y[:2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[:2], z[1:2], u, w[1:v])
      {
        x.a++;
        x.b++;
--- 95,103 ----
        w[i].c[1] = u[i].c[1] = 0;
      }
    #pragma omp parallel master
!   #pragma omp taskgroup task_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
    {
!     #pragma omp task in_reduction (+: x, y[ :2], z[1:2], u, w[1:v])
      {
        x.a++;
        x.b++;
*************** bar (struct S x, struct S *y, int n, int
*** 112,118 ****
        w[1].a += 6;
        w[1].b += 16;
      }
!     #pragma omp target in_reduction (+: x, y[:2], z[1:2], u, w[1:v]) map(tofrom: x.a, x.b, x.c[:2])
      {
        x.a += 4;
        x.b += 14;
--- 112,118 ----
        w[1].a += 6;
        w[1].b += 16;
      }
!     #pragma omp target in_reduction (+: x, y[ :2], z[1:2], u, w[1:v]) map(tofrom: x.a, x.b, x.c[ :2])
      {
        x.a += 4;
        x.b += 14;
*************** bar (struct S x, struct S *y, int n, int
*** 127,133 ****
        w[2].a += 7;
        w[2].b += 17;
      }
!     #pragma omp target in_reduction (+: x, y[:v], z[1:v], u, w[1:2])
      {
        x.a += 9;
        x.b += 19;
--- 127,133 ----
        w[2].a += 7;
        w[2].b += 17;
      }
!     #pragma omp target in_reduction (+: x, y[ :v], z[1:v], u, w[1:2])
      {
        x.a += 9;
        x.b += 19;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-1.c	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 34,40 ****
    int expected = mkarray (x);
  
    #pragma omp target enter data map(to: x)
!   #pragma omp target map(iterator(i=0:DIM1), to: x[i][:DIM2]) \
  		     map(from: y)
      {
        y = 0;
--- 34,40 ----
    int expected = mkarray (x);
  
    #pragma omp target enter data map(to: x)
!   #pragma omp target map(iterator(i=0:DIM1), to: x[i][ :DIM2]) \
  		     map(from: y)
      {
        y = 0;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-2.c	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 23,29 ****
    mkarray (x);
  
    #pragma omp target enter data map(alloc: x)
!   #pragma omp target map(iterator(i=0:DIM1), from: x[i][:DIM2]) \
  		     map(from: expected)
      {
        expected = 0;
--- 23,29 ----
    mkarray (x);
  
    #pragma omp target enter data map(alloc: x)
!   #pragma omp target map(iterator(i=0:DIM1), from: x[i][ :DIM2]) \
  		     map(from: expected)
      {
        expected = 0;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-3.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-3.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-3.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-map-iterators-3.c	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 42,49 ****
    int expected = mkarrays (x, y);
  
    #pragma omp target enter data map(to: x, y)
!   #pragma omp target map(iterator(i=0:DIM1/4, j=0:4), to: x[f(i, j)][:DIM2]) \
! 		     map(iterator(i=0:DIM1), to: y[i][:1]) \
  		     map(from: sum)
      {
        sum = 0;
--- 42,49 ----
    int expected = mkarrays (x, y);
  
    #pragma omp target enter data map(to: x, y)
!   #pragma omp target map(iterator(i=0:DIM1/4, j=0:4), to: x[f(i, j)][ :DIM2]) \
! 		     map(iterator(i=0:DIM1), to: y[i][ :1]) \
  		     map(from: sum)
      {
        sum = 0;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-map-zlas-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-map-zlas-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-map-zlas-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-map-zlas-1.c	Sun Nov 23 22:32:41 2025
*************** main (void)
*** 18,30 ****
    for (int i = 0; i < N; i++)
      a.ptr[i] = 0;
  
!   #pragma omp target enter data map(to: a.ptr[:N])
  
!   #pragma omp target map(a, a.ptr[:0])
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target exit data map(from: a.ptr[:N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 1)
--- 18,30 ----
    for (int i = 0; i < N; i++)
      a.ptr[i] = 0;
  
!   #pragma omp target enter data map(to: a.ptr[ :N])
  
!   #pragma omp target map(a, a.ptr[ :0])
    for (int i = 0; i < N; i++)
      a.ptr[i] += 1;
  
!   #pragma omp target exit data map(from: a.ptr[ :N])
  
    for (int i = 0; i < N; i++)
      if (a.ptr[i] != 1)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-1.c	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 30,37 ****
    int sum;
    int expected = mkarray (x);
  
!   #pragma omp target enter data map(to: x[:DIM1])
!   #pragma omp target enter data map(iterator(i=0:DIM1), to: x[i][:DIM2])
    #pragma omp target map(from: sum)
      {
        sum = 0;
--- 30,37 ----
    int sum;
    int expected = mkarray (x);
  
!   #pragma omp target enter data map(to: x[ :DIM1])
!   #pragma omp target enter data map(iterator(i=0:DIM1), to: x[i][ :DIM2])
    #pragma omp target map(from: sum)
      {
        sum = 0;
*************** int main (void)
*** 51,57 ****
  	expected += x[i][j];
        }
  
!   #pragma omp target update to(iterator(i=0:DIM1): x[i][:DIM2])
  
    #pragma omp target map(from: sum)
      {
--- 51,57 ----
  	expected += x[i][j];
        }
  
!   #pragma omp target update to(iterator(i=0:DIM1): x[i][ :DIM2])
  
    #pragma omp target map(from: sum)
      {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-2.c	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 26,33 ****
  
    mkarray (x);
  
!   #pragma omp target enter data map(alloc: x[:DIM1])
!   #pragma omp target enter data map(iterator(i=0:DIM1), to: x[i][:DIM2])
    #pragma omp target map(from: expected)
      {
        expected = 0;
--- 26,33 ----
  
    mkarray (x);
  
!   #pragma omp target enter data map(alloc: x[ :DIM1])
!   #pragma omp target enter data map(iterator(i=0:DIM1), to: x[i][ :DIM2])
    #pragma omp target map(from: expected)
      {
        expected = 0;
*************** int main (void)
*** 47,53 ****
    if (sum != 0)
      return 1;
  
!   #pragma omp target update from(iterator(i=0:DIM1): x[i][:DIM2])
  
    /* Host copy should now be updated.  */
    sum = 0;
--- 47,53 ----
    if (sum != 0)
      return 1;
  
!   #pragma omp target update from(iterator(i=0:DIM1): x[i][ :DIM2])
  
    /* Host copy should now be updated.  */
    sum = 0;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-3.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-3.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-3.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/target-update-iterators-3.c	Sun Nov 23 22:32:41 2025
*************** int main (void)
*** 31,38 ****
  
    mkarray (x);
  
!   #pragma omp target enter data map(alloc: x[:DIM1])
!   #pragma omp target enter data map(iterator(i=0:DIM1), to: x[i][:DIM2])
  
    /* Update x on host.  */
    for (int i = 0; i < DIM1; i++)
--- 31,38 ----
  
    mkarray (x);
  
!   #pragma omp target enter data map(alloc: x[ :DIM1])
!   #pragma omp target enter data map(iterator(i=0:DIM1), to: x[i][ :DIM2])
  
    /* Update x on host.  */
    for (int i = 0; i < DIM1; i++)
*************** int main (void)
*** 43,49 ****
        }
  
    /* Update a subset of x on target.  */
!   #pragma omp target update to(iterator(i=0:DIM1/2): x[f (i)][:DIM2])
  
    #pragma omp target map(from: sum)
      {
--- 43,49 ----
        }
  
    /* Update a subset of x on target.  */
!   #pragma omp target update to(iterator(i=0:DIM1/2): x[f (i)][ :DIM2])
  
    #pragma omp target map(from: sum)
      {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-11.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-11.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-11.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-11.c	Sun Nov 23 22:32:41 2025
*************** unsigned long int c[2] = { ~0UL, ~0UL };
*** 9,15 ****
  void
  bar (int i)
  {
!   #pragma omp task in_reduction (*: b[:3]) in_reduction (&: c[1:]) \
  	      in_reduction (+: a)
    {
      a += 4;
--- 9,15 ----
  void
  bar (int i)
  {
!   #pragma omp task in_reduction (*: b[ :3]) in_reduction (&: c[1: ]) \
  	      in_reduction (+: a)
    {
      a += 4;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-12.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-12.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-12.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-12.c	Sun Nov 23 22:32:41 2025
*************** unsigned long int c[2] = { ~0UL, ~0UL };
*** 9,15 ****
  void
  bar (int i)
  {
!   #pragma omp task in_reduction (*: b[:3]) in_reduction (&: c[1:]) \
  	      in_reduction (+: a)
    {
      a += 4;
--- 9,15 ----
  void
  bar (int i)
  {
!   #pragma omp task in_reduction (*: b[ :3]) in_reduction (&: c[1: ]) \
  	      in_reduction (+: a)
    {
      a += 4;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-16.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-16.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-16.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-16.c	Sun Nov 23 22:32:41 2025
*************** unsigned long int c[2] = { ~0UL, ~0UL };
*** 9,15 ****
  void
  bar (int i)
  {
!   #pragma omp task in_reduction (*: b[:3]) in_reduction (&: c[1:]) \
  	      in_reduction (+: a)
    {
      a += 4;
--- 9,15 ----
  void
  bar (int i)
  {
!   #pragma omp task in_reduction (*: b[ :3]) in_reduction (&: c[1: ]) \
  	      in_reduction (+: a)
    {
      a += 4;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-3.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-3.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-3.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-3.c	Sun Nov 23 22:32:41 2025
*************** foo (int n, int *c, long long int *d, in
*** 18,27 ****
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0] += 7;
        a[1] += 17;
--- 18,27 ----
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0] += 7;
        a[1] += 17;
*************** test (int n)
*** 70,84 ****
      int o[4] = { 1, 0, 0, 2 };
      #pragma omp taskgroup task_reduction (+: a, c) task_reduction (*: b[2 * n:3 * n], d) \
  			  task_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			  task_reduction (+: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			  task_reduction (*: t[2:2][:], s[1:n + 1])
      {
        int i;
        for (i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  int j;
  	  a[0] += 2;
--- 70,84 ----
      int o[4] = { 1, 0, 0, 2 };
      #pragma omp taskgroup task_reduction (+: a, c) task_reduction (*: b[2 * n:3 * n], d) \
  			  task_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			  task_reduction (+: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			  task_reduction (*: t[2:2][ : ], s[1:n + 1])
      {
        int i;
        for (i = 0; i < 4; i++)
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  int j;
  	  a[0] += 2;
*************** test (int n)
*** 96,106 ****
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
--- 96,106 ----
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-7.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-7.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-7.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-7.c	Sun Nov 23 22:32:41 2025
*************** foo (int n, int *c, long long int *d, in
*** 18,27 ****
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0] += 7;
        a[1] += 17;
--- 18,27 ----
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0] += 7;
        a[1] += 17;
*************** test (int n)
*** 67,83 ****
    t = tt;
    #pragma omp parallel reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  		       reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		       reduction (task, +: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 		       reduction (task, *: t[2:2][:], s[1:n + 1]) num_threads(4)
    {
      int i;
      #pragma omp for
      for (i = 0; i < 4; i++)
        {
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  int j;
  	  a[0] += 2;
--- 67,83 ----
    t = tt;
    #pragma omp parallel reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  		       reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		       reduction (task, +: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 		       reduction (task, *: t[2:2][ : ], s[1:n + 1]) num_threads(4)
    {
      int i;
      #pragma omp for
      for (i = 0; i < 4; i++)
        {
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  int j;
  	  a[0] += 2;
*************** test (int n)
*** 95,105 ****
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
--- 95,105 ----
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-9.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-9.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/task-reduction-9.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/task-reduction-9.c	Sun Nov 23 22:32:41 2025
*************** foo (int n, int *c, long long int *d, in
*** 18,27 ****
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][:])
      {
        a[0] += 7;
        a[1] += 17;
--- 18,27 ----
  {
    int i;
    for (i = 0; i < 2; i++)
!     #pragma omp task in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		     in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		     in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		     in_reduction (*: s[1:2], t[2:2][ : ])
      {
        a[0] += 7;
        a[1] += 17;
*************** test (int n)
*** 70,84 ****
      int i;
      #pragma omp for reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  		    reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		    reduction (task, +: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 		    reduction (task, *: t[2:2][:], s[1:n + 1]) \
  		    schedule(nonmonotonic: runtime)
      for (i = 0; i < 4; i++)
        {
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][:], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][:], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][:])
  	{
  	  int j;
  	  a[0] += 2;
--- 70,84 ----
      int i;
      #pragma omp for reduction (task, +: a, c) reduction (task, *: b[2 * n:3 * n], d) \
  		    reduction (task, +: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 		    reduction (task, +: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 		    reduction (task, *: t[2:2][ : ], s[1:n + 1]) \
  		    schedule(nonmonotonic: runtime)
      for (i = 0; i < 4; i++)
        {
  	#pragma omp task in_reduction (+: a, c) in_reduction (*: b[2 * n:3 * n], d) \
! 			 in_reduction (+: o[n:n*2], q[1:2][ : ], p[0], m[1], r[2:2]) \
! 			 in_reduction (+: g[n:n * 2], e[1], k[1:2][ : ], h[0], f[2:2]) \
! 			 in_reduction (*: s[1:2], t[2:2][ : ])
  	{
  	  int j;
  	  a[0] += 2;
*************** test (int n)
*** 96,106 ****
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
--- 96,106 ----
  	  t[2][1] *= 2;
  	  t[3][1] *= 2;
  	  for (j = 0; j < 2; j++)
! 	    #pragma omp task in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ])
  	    {
  	      m[1] += 6;
  	      r[2] += 7;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-2.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-2.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-2.c	Sun Nov 23 22:32:41 2025
*************** void
*** 17,26 ****
  foo (int n, int *c, long long int *d, int m[3], int *r, int o[4], int *p, int q[4][2])
  {
    int i;
!   #pragma omp taskloop in_reduction (+: a, c[:2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		       in_reduction (+: o[n:n*2], m[1], k[1:2][:], p[0], f[2:2]) \
! 		       in_reduction (+: q[1:2][:], g[n:n*2], e[1], h[0], r[2:2]) \
! 		       in_reduction (*: s[1:2], t[2:2][:]) nogroup
    for (i = 0; i < 2; i++)
      {
        a[0] += 7;
--- 17,26 ----
  foo (int n, int *c, long long int *d, int m[3], int *r, int o[4], int *p, int q[4][2])
  {
    int i;
!   #pragma omp taskloop in_reduction (+: a, c[ :2]) in_reduction (*: b[2 * n:3 * n], d[0:2]) \
! 		       in_reduction (+: o[n:n*2], m[1], k[1:2][ : ], p[0], f[2:2]) \
! 		       in_reduction (+: q[1:2][ : ], g[n:n*2], e[1], h[0], r[2:2]) \
! 		       in_reduction (*: s[1:2], t[2:2][ : ]) nogroup
    for (i = 0; i < 2; i++)
      {
        a[0] += 7;
*************** test (int n)
*** 71,78 ****
      int i;
      #pragma omp taskloop reduction (+: a, c) reduction (default, *: b[2 * n:3 * n], d) \
  			 reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (default, +: o[n:n*2], m[1], q[1:2][:], p[0], r[2:2]) \
! 			 reduction (*: t[2:2][:], s[1:n + 1])
      for (i = 0; i < 4; i++)
        {
  	int j;
--- 71,78 ----
      int i;
      #pragma omp taskloop reduction (+: a, c) reduction (default, *: b[2 * n:3 * n], d) \
  			 reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][0:2]) \
! 			 reduction (default, +: o[n:n*2], m[1], q[1:2][ : ], p[0], r[2:2]) \
! 			 reduction (*: t[2:2][ : ], s[1:n + 1])
      for (i = 0; i < 4; i++)
        {
  	int j;
*************** test (int n)
*** 90,100 ****
  	s[1] *= 2;
  	t[2][1] *= 2;
  	t[3][1] *= 2;
! 	#pragma omp taskloop in_reduction (+: a, c[:2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][:2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][:2]) \
! 			     in_reduction (*: s[n:2], t[2:2][:]) nogroup
  	for (j = 0; j < 2; j++)
  	  {
  	    m[1] += 6;
--- 90,100 ----
  	s[1] *= 2;
  	t[2][1] *= 2;
  	t[3][1] *= 2;
! 	#pragma omp taskloop in_reduction (+: a, c[ :2]) \
  			     in_reduction (*: b[2 * n:3 * n], d[n - 1:n + 1]) \
! 			     in_reduction (+: e[1], f[2:2], g[n:n*2], h[0], k[1:2][ :2]) \
! 			     in_reduction (+: m[1], r[2:2], o[n:n*2], p[0], q[1:2][ :2]) \
! 			     in_reduction (*: s[n:2], t[2:2][ : ]) nogroup
  	for (j = 0; j < 2; j++)
  	  {
  	    m[1] += 6;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-1.c gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-1.c	Sun Nov 16 22:34:54 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.c-c++-common/teams-nteams-icv-1.c	Sun Nov 23 22:32:41 2025
***************
*** 19,25 ****
     - OMP_NUM_TEAMS(_DEV(_<dev-num>)) overrides it
       OMP_NUM_TEAMS_ALL overrides it
     - Number of teams is:
!      -> the value specific by num_teams([lower:]upper)
  	with lower := upper if unspecified
       -> Otherwise, if nteams-var ICV > 0, #teams <= nteams-var ICV
       -> Otherwise, if nteams-var ICV <= 0, #teams > 1
--- 19,25 ----
     - OMP_NUM_TEAMS(_DEV(_<dev-num>)) overrides it
       OMP_NUM_TEAMS_ALL overrides it
     - Number of teams is:
!      -> the value specific by num_teams([lower: ]upper)
  	with lower := upper if unspecified
       -> Otherwise, if nteams-var ICV > 0, #teams <= nteams-var ICV
       -> Otherwise, if nteams-var ICV <= 0, #teams > 1
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c	Sun Nov 23 22:32:41 2025
***************
*** 1,4 ****
! /* Test asynchronous, unstructed data regions, runtime library variant.  */
  /* See also data-2.c.  */
  
  #include <stdlib.h>
--- 1,4 ----
! /* Test asynchronous, unstructured data regions, runtime library variant.  */
  /* See also data-2.c.  */
  
  #include <stdlib.h>
*************** main (int argc, char **argv)
*** 155,165 ****
--- 155,177 ----
    for (int ii = 0; ii < N; ii++)
      e[ii] = a[ii] + b[ii] + c[ii] + d[ii];
  
+   /* The kernels above use `a', so wait for them to finish with it before
+      exiting that array.  */
+   acc_wait_async (11, 10);
+   acc_wait_async (12, 10);
+   acc_wait_async (13, 10);
+   acc_wait_async (14, 10);
    acc_copyout_async (a, nbytes, 10);
    acc_copyout_async (b, nbytes, 11);
    acc_copyout_async (c, nbytes, 12);
    acc_copyout_async (d, nbytes, 13);
    acc_copyout_async (e, nbytes, 14);
+ 
+   /* As for `a', same goes for `N'.  */
+   acc_wait_async (11, 15);
+   acc_wait_async (12, 15);
+   acc_wait_async (13, 15);
+   acc_wait_async (14, 15);
    acc_delete_async (&N, sizeof (int), 15);
    acc_wait_all ();
  
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c	Sun Nov 23 22:32:41 2025
***************
*** 1,4 ****
! /* Test asynchronous, unstructed data regions, directives variant.  */
  /* See also data-2-lib.c.  */
  
  #include <stdlib.h>
--- 1,4 ----
! /* Test asynchronous, unstructured data regions, directives variant.  */
  /* See also data-2-lib.c.  */
  
  #include <stdlib.h>
*************** main (int argc, char **argv)
*** 149,160 ****
    for (int ii = 0; ii < N; ii++)
      e[ii] = a[ii] + b[ii] + c[ii] + d[ii];
  
! #pragma acc exit data copyout (a[0:N]) async (10)
  #pragma acc exit data copyout (b[0:N]) async (11)
  #pragma acc exit data copyout (c[0:N]) async (12)
  #pragma acc exit data copyout (d[0:N]) async (13)
  #pragma acc exit data copyout (e[0:N]) async (14)
! #pragma acc exit data delete (N) async (15)
  #pragma acc wait
  
    for (i = 0; i < N; i++)
--- 149,163 ----
    for (int ii = 0; ii < N; ii++)
      e[ii] = a[ii] + b[ii] + c[ii] + d[ii];
  
!   /* The kernels above use `a', so wait for them to finish with it before
!      exiting that array.  */
! #pragma acc exit data copyout (a[0:N]) async (10) wait (11) wait (12) wait (13) wait (14)
  #pragma acc exit data copyout (b[0:N]) async (11)
  #pragma acc exit data copyout (c[0:N]) async (12)
  #pragma acc exit data copyout (d[0:N]) async (13)
  #pragma acc exit data copyout (e[0:N]) async (14)
!   /* As for `a`, same goes for `N'.  */
! #pragma acc exit data delete (N) async (15)  wait (11) wait (12) wait (13) wait (14)
  #pragma acc wait
  
    for (i = 0; i < N; i++)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-1.c	Sun Nov 23 22:32:41 2025
*************** main ()
*** 13,19 ****
    int n = 100, i;
    struct dc v = { .a = 3, .b = (int *) malloc (sizeof (int) * n) };
  
! #pragma acc parallel loop copy(v.a, v.b[:n])
    for (i = 0; i < n; i++)
      v.b[i] = v.a;
  
--- 13,19 ----
    int n = 100, i;
    struct dc v = { .a = 3, .b = (int *) malloc (sizeof (int) * n) };
  
! #pragma acc parallel loop copy(v.a, v.b[ :n])
    for (i = 0; i < n; i++)
      v.b[i] = v.a;
  
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c	Sun Nov 23 22:32:41 2025
*************** int main (int argc, char* argv[])
*** 65,75 ****
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(p.m.s2[:1])
! #pragma acc parallel loop copy(p.m.s2->e[:N])
        for (int j = 0; j < N; j++)
  	p.m.s2->e[j]++;
! #pragma acc exit data delete(p.m.s2[:1])
      }
  
    for (i = 0; i < N; i++)
--- 65,75 ----
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(p.m.s2[ :1])
! #pragma acc parallel loop copy(p.m.s2->e[ :N])
        for (int j = 0; j < N; j++)
  	p.m.s2->e[j]++;
! #pragma acc exit data delete(p.m.s2[ :1])
      }
  
    for (i = 0; i < N; i++)
*************** int main (int argc, char* argv[])
*** 80,95 ****
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(p.m.s2[:1])
! #pragma acc enter data copyin(p.m.s2->f[:1])
! #pragma acc parallel loop copy(p.m.s2->f->a[:N]) copy(p.m.s2->f->c[:N])
  	for (int j = 0; j < N; j++)
  	  {
  	    p.m.s2->f->a[j]++;
  	    p.m.s2->f->c[j]++;
  	  }
! #pragma acc exit data delete(p.m.s2->f[:1])
! #pragma acc exit data delete(p.m.s2[:1])
      }
  
    for (i = 0; i < N; i++)
--- 80,95 ----
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(p.m.s2[ :1])
! #pragma acc enter data copyin(p.m.s2->f[ :1])
! #pragma acc parallel loop copy(p.m.s2->f->a[ :N]) copy(p.m.s2->f->c[ :N])
  	for (int j = 0; j < N; j++)
  	  {
  	    p.m.s2->f->a[j]++;
  	    p.m.s2->f->c[j]++;
  	  }
! #pragma acc exit data delete(p.m.s2->f[ :1])
! #pragma acc exit data delete(p.m.s2[ :1])
      }
  
    for (i = 0; i < N; i++)
*************** int main (int argc, char* argv[])
*** 100,109 ****
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(p.m.s2[:1]) copyin(p.n.s2[:1])
! #pragma acc enter data copyin(p.m.s2->f[:1]) copyin(p.n.s2->f[:1])
! #pragma acc parallel loop copy(p.m.s2->f->a[:N]) copy(p.m.s2->f->c[:N]) \
! 			  copy(p.n.s2->f->a[:N]) copy(p.n.s2->f->c[:N])
  	for (int j = 0; j < N; j++)
  	  {
  	    p.m.s2->f->a[j]++;
--- 100,109 ----
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(p.m.s2[ :1]) copyin(p.n.s2[ :1])
! #pragma acc enter data copyin(p.m.s2->f[ :1]) copyin(p.n.s2->f[ :1])
! #pragma acc parallel loop copy(p.m.s2->f->a[ :N]) copy(p.m.s2->f->c[ :N]) \
! 			  copy(p.n.s2->f->a[ :N]) copy(p.n.s2->f->c[ :N])
  	for (int j = 0; j < N; j++)
  	  {
  	    p.m.s2->f->a[j]++;
*************** int main (int argc, char* argv[])
*** 111,118 ****
  	    p.n.s2->f->a[j]++;
  	    p.n.s2->f->c[j]++;
  	  }
! #pragma acc exit data delete(p.m.s2->f[:1]) delete(p.n.s2->f[:1])
! #pragma acc exit data delete(p.m.s2[:1]) delete(p.n.s2[:1])
      }
  
    for (i = 0; i < N; i++)
--- 111,118 ----
  	    p.n.s2->f->a[j]++;
  	    p.n.s2->f->c[j]++;
  	  }
! #pragma acc exit data delete(p.m.s2->f[ :1]) delete(p.n.s2->f[ :1])
! #pragma acc exit data delete(p.m.s2[ :1]) delete(p.n.s2[ :1])
      }
  
    for (i = 0; i < N; i++)
*************** int main (int argc, char* argv[])
*** 124,142 ****
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(p.m.s2[:1]) copyin(p.n.s2[:1])
! #pragma acc enter data copyin(p.n.s2->e[:N]) copyin(p.n.s2->f[:1]) \
! 		       copyin(p.m.s2->f[:1])
! #pragma acc parallel loop copy(p.m.s2->f->a[:N]) copy(p.n.s2->f->a[:N])
  	for (int j = 0; j < N; j++)
  	  {
  	    p.m.s2->f->a[j]++;
  	    p.n.s2->f->a[j]++;
  	    p.n.s2->e[j]++;
  	  }
! #pragma acc exit data delete(p.m.s2->f[:1]) delete(p.n.s2->f[:1]) \
! 		      copyout(p.n.s2->e[:N])
! #pragma acc exit data delete(p.m.s2[:1]) delete(p.n.s2[:1])
      }
  
    for (i = 0; i < N; i++)
--- 124,142 ----
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(p.m.s2[ :1]) copyin(p.n.s2[ :1])
! #pragma acc enter data copyin(p.n.s2->e[ :N]) copyin(p.n.s2->f[ :1]) \
! 		       copyin(p.m.s2->f[ :1])
! #pragma acc parallel loop copy(p.m.s2->f->a[ :N]) copy(p.n.s2->f->a[ :N])
  	for (int j = 0; j < N; j++)
  	  {
  	    p.m.s2->f->a[j]++;
  	    p.n.s2->f->a[j]++;
  	    p.n.s2->e[j]++;
  	  }
! #pragma acc exit data delete(p.m.s2->f[ :1]) delete(p.n.s2->f[ :1]) \
! 		      copyout(p.n.s2->e[ :N])
! #pragma acc exit data delete(p.m.s2[ :1]) delete(p.n.s2[ :1])
      }
  
    for (i = 0; i < N; i++)
*************** int main (int argc, char* argv[])
*** 148,158 ****
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(q->m.s2[:1])
! #pragma acc parallel loop copy(q->m.s2->e[:N])
        for (int j = 0; j < N; j++)
  	q->m.s2->e[j]++;
! #pragma acc exit data delete(q->m.s2[:1])
      }
  
    for (i = 0; i < N; i++)
--- 148,158 ----
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(q->m.s2[ :1])
! #pragma acc parallel loop copy(q->m.s2->e[ :N])
        for (int j = 0; j < N; j++)
  	q->m.s2->e[j]++;
! #pragma acc exit data delete(q->m.s2[ :1])
      }
  
    for (i = 0; i < N; i++)
*************** int main (int argc, char* argv[])
*** 163,178 ****
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(q->m.s2[:1])
! #pragma acc enter data copyin(q->m.s2->f[:1])
! #pragma acc parallel loop copy(q->m.s2->f->a[:N]) copy(q->m.s2->f->c[:N])
  	for (int j = 0; j < N; j++)
  	  {
  	    q->m.s2->f->a[j]++;
  	    q->m.s2->f->c[j]++;
  	  }
! #pragma acc exit data delete(q->m.s2->f[:1])
! #pragma acc exit data delete(q->m.s2[:1])
      }
  
    for (i = 0; i < N; i++)
--- 163,178 ----
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(q->m.s2[ :1])
! #pragma acc enter data copyin(q->m.s2->f[ :1])
! #pragma acc parallel loop copy(q->m.s2->f->a[ :N]) copy(q->m.s2->f->c[ :N])
  	for (int j = 0; j < N; j++)
  	  {
  	    q->m.s2->f->a[j]++;
  	    q->m.s2->f->c[j]++;
  	  }
! #pragma acc exit data delete(q->m.s2->f[ :1])
! #pragma acc exit data delete(q->m.s2[ :1])
      }
  
    for (i = 0; i < N; i++)
*************** int main (int argc, char* argv[])
*** 183,192 ****
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(q->m.s2[:1]) copyin(q->n.s2[:1])
! #pragma acc enter data copyin(q->m.s2->f[:1]) copyin(q->n.s2->f[:1])
! #pragma acc parallel loop copy(q->m.s2->f->a[:N]) copy(q->m.s2->f->c[:N]) \
! 			  copy(q->n.s2->f->a[:N]) copy(q->n.s2->f->c[:N])
  	for (int j = 0; j < N; j++)
  	  {
  	    q->m.s2->f->a[j]++;
--- 183,192 ----
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(q->m.s2[ :1]) copyin(q->n.s2[ :1])
! #pragma acc enter data copyin(q->m.s2->f[ :1]) copyin(q->n.s2->f[ :1])
! #pragma acc parallel loop copy(q->m.s2->f->a[ :N]) copy(q->m.s2->f->c[ :N]) \
! 			  copy(q->n.s2->f->a[ :N]) copy(q->n.s2->f->c[ :N])
  	for (int j = 0; j < N; j++)
  	  {
  	    q->m.s2->f->a[j]++;
*************** int main (int argc, char* argv[])
*** 194,201 ****
  	    q->n.s2->f->a[j]++;
  	    q->n.s2->f->c[j]++;
  	  }
! #pragma acc exit data delete(q->m.s2->f[:1]) delete(q->n.s2->f[:1])
! #pragma acc exit data delete(q->m.s2[:1]) delete(q->n.s2[:1])
      }
  
    for (i = 0; i < N; i++)
--- 194,201 ----
  	    q->n.s2->f->a[j]++;
  	    q->n.s2->f->c[j]++;
  	  }
! #pragma acc exit data delete(q->m.s2->f[ :1]) delete(q->n.s2->f[ :1])
! #pragma acc exit data delete(q->m.s2[ :1]) delete(q->n.s2[ :1])
      }
  
    for (i = 0; i < N; i++)
*************** int main (int argc, char* argv[])
*** 207,225 ****
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(q->m.s2[:1]) copyin(q->n.s2[:1])
! #pragma acc enter data copyin(q->n.s2->e[:N]) copyin(q->m.s2->f[:1]) \
! 		       copyin(q->n.s2->f[:1])
! #pragma acc parallel loop copy(q->m.s2->f->a[:N]) copy(q->n.s2->f->a[:N])
  	for (int j = 0; j < N; j++)
  	  {
  	    q->m.s2->f->a[j]++;
  	    q->n.s2->f->a[j]++;
  	    q->n.s2->e[j]++;
  	  }
! #pragma acc exit data delete(q->m.s2->f[:1]) delete(q->n.s2->f[:1]) \
! 		      copyout(q->n.s2->e[:N])
! #pragma acc exit data delete(q->m.s2[:1]) delete(q->n.s2[:1])
      }
  
    for (i = 0; i < N; i++)
--- 207,225 ----
  
    for (int i = 0; i < 99; i++)
      {
! #pragma acc enter data copyin(q->m.s2[ :1]) copyin(q->n.s2[ :1])
! #pragma acc enter data copyin(q->n.s2->e[ :N]) copyin(q->m.s2->f[ :1]) \
! 		       copyin(q->n.s2->f[ :1])
! #pragma acc parallel loop copy(q->m.s2->f->a[ :N]) copy(q->n.s2->f->a[ :N])
  	for (int j = 0; j < N; j++)
  	  {
  	    q->m.s2->f->a[j]++;
  	    q->n.s2->f->a[j]++;
  	    q->n.s2->e[j]++;
  	  }
! #pragma acc exit data delete(q->m.s2->f[ :1]) delete(q->n.s2->f[ :1]) \
! 		      copyout(q->n.s2->e[ :N])
! #pragma acc exit data delete(q->m.s2[ :1]) delete(q->n.s2[ :1])
      }
  
    for (i = 0; i < N; i++)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c	Sun Nov 23 22:32:41 2025
*************** main ()
*** 12,29 ****
    for (i = 0; i < n; i++)
      a[i] = i+1;
  
! #pragma acc enter data copyin(a[:n]) create(b)
  
    b = a;
    acc_attach ((void **)&b);
  
! #pragma acc parallel loop present (b[:n])
    for (i = 0; i < n; i++)
      b[i] = i+1;
  
    acc_detach ((void **)&b);
  
! #pragma acc exit data copyout(a[:n], b)
  
    for (i = 0; i < 10; i++)
      assert (a[i] == b[i]);
--- 12,29 ----
    for (i = 0; i < n; i++)
      a[i] = i+1;
  
! #pragma acc enter data copyin(a[ :n]) create(b)
  
    b = a;
    acc_attach ((void **)&b);
  
! #pragma acc parallel loop present (b[ :n])
    for (i = 0; i < n; i++)
      b[i] = i+1;
  
    acc_detach ((void **)&b);
  
! #pragma acc exit data copyout(a[ :n], b)
  
    for (i = 0; i < 10; i++)
      assert (a[i] == b[i]);
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c	Sun Nov 23 22:32:41 2025
*************** sum_nodes (struct node *head)
*** 14,20 ****
  {
    int i = 0, sum = 0;
  
! #pragma acc parallel reduction(+:sum) present(head[:1])
    {
      for (; head != NULL; head = head->next)
        sum += head->val;
--- 14,20 ----
  {
    int i = 0, sum = 0;
  
! #pragma acc parallel reduction(+:sum) present(head[ :1])
    {
      for (; head != NULL; head = head->next)
        sum += head->val;
*************** insert (struct node *head, int val)
*** 37,43 ****
    n->next = head->next;
    head->next = n;
  
! #pragma acc enter data copyin(n[:1])
  #pragma acc enter data attach(head->next)
    if (n->next)
      {
--- 37,43 ----
    n->next = head->next;
    head->next = n;
  
! #pragma acc enter data copyin(n[ :1])
  #pragma acc enter data attach(head->next)
    if (n->next)
      {
*************** destroy (struct node *head)
*** 57,63 ****
  	{
  #pragma acc exit data detach(n->next)
  	}
! #pragma acc exit data delete (n[:1])
        if (head->next)
  	{
  #pragma acc enter data attach(head->next)
--- 57,63 ----
  	{
  #pragma acc exit data detach(n->next)
  	}
! #pragma acc exit data delete (n[ :1])
        if (head->next)
  	{
  #pragma acc enter data attach(head->next)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-5.c	Sun Nov 23 22:32:41 2025
*************** sum_nodes (struct node *head)
*** 13,19 ****
  {
    int i = 0, sum = 0;
  
! #pragma acc parallel reduction(+:sum) present(head[:1])
    {
      for (; head != NULL; head = head->next)
        sum += head->val;
--- 13,19 ----
  {
    int i = 0, sum = 0;
  
! #pragma acc parallel reduction(+:sum) present(head[ :1])
    {
      for (; head != NULL; head = head->next)
        sum += head->val;
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-6.c	Sun Nov 23 22:32:41 2025
*************** main ()
*** 24,30 ****
      {
  #pragma acc data copy(v)
        {
! #pragma acc data copy(v.b[:n])
  	{
  	  for (i = 0; i < n; i++)
  	    {
--- 24,30 ----
      {
  #pragma acc data copy(v)
        {
! #pragma acc data copy(v.b[ :n])
  	{
  	  for (i = 0; i < n; i++)
  	    {
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c	Sun Nov 23 22:32:41 2025
*************** main ()
*** 31,37 ****
        for (i = 0; i < n; i++)
  	v.b[i] = v.a + i;
  
! #pragma acc exit data copyout(v.b[:n]) finalize
  #pragma acc exit data delete(v.a)
  
        for (i = 0; i < n; i++)
--- 31,37 ----
        for (i = 0; i < n; i++)
  	v.b[i] = v.a + i;
  
! #pragma acc exit data copyout(v.b[ :n]) finalize
  #pragma acc exit data delete(v.a)
  
        for (i = 0; i < n; i++)
diff -Nrcpad gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c
*** gcc-16-20251116/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c	Sun Nov 16 22:34:55 2025
--- gcc-16-20251123/libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c	Sun Nov 23 22:32:41 2025
*************** test (unsigned variant)
*** 35,49 ****
  
    for (k = 0; k < 16; k++)
      {
! #pragma acc enter data copyin(v.a, v.b[:n], v.c[:n], v.d[:n])
  
  #pragma acc parallel loop
        for (i = 0; i < n; i++)
  	v.b[i] = v.a + i;
  
! #pragma acc exit data copyout(v.b[:n])
! #pragma acc exit data copyout(v.c[:n])
! #pragma acc exit data copyout(v.d[:n])
  #pragma acc exit data copyout(v.a)
  
        for (i = 0; i < n; i++)
--- 35,49 ----
  
    for (k = 0; k < 16; k++)
      {
! #pragma acc enter data copyin(v.a, v.b[ :n], v.c[ :n], v.d[ :n])
  
  #pragma acc parallel loop
        for (i = 0; i < n; i++)
  	v.b[i] = v.a + i;
  
! #pragma acc exit data copyout(v.b[ :n])
! #pragma acc exit data copyout(v.c[ :n])
! #pragma acc exit data copyout(v.d[ :n])
  #pragma acc exit data copyout(v.a)
  
        for (i = 0; i < n; i++)
diff -Nrcpad gcc-16-20251116/libitm/ChangeLog gcc-16-20251123/libitm/ChangeLog
*** gcc-16-20251116/libitm/ChangeLog	Sun Nov 16 22:34:56 2025
--- gcc-16-20251123/libitm/ChangeLog	Sun Nov 23 22:32:42 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-11-19  Martin Liska  <martin.liska@hey.com>
+ 
+ 	* acinclude.m4:: Add detection for wild linker.
+ 	* configure: Regenerate.
+ 
  2025-11-03  Sam James  <sam@gentoo.org>
  
  	* configure: Regenerate.
diff -Nrcpad gcc-16-20251116/libitm/acinclude.m4 gcc-16-20251123/libitm/acinclude.m4
*** gcc-16-20251116/libitm/acinclude.m4	Sun Nov 16 22:34:56 2025
--- gcc-16-20251123/libitm/acinclude.m4	Sun Nov 23 22:32:42 2025
*************** dnl Sets:
*** 211,216 ****
--- 211,217 ----
  dnl  with_gnu_ld
  dnl  libitm_ld_is_gold (possibly)
  dnl  libitm_ld_is_mold (possibly)
+ dnl  libitm_ld_is_wild (possibly)
  dnl  libitm_gnu_ld_version (possibly)
  dnl
  dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
*************** AC_DEFUN([LIBITM_CHECK_LINKER_FEATURES],
*** 244,253 ****
--- 245,257 ----
    # does some of this, but throws away the result.
    libitm_ld_is_gold=no
    libitm_ld_is_mold=no
+   libitm_ld_is_wild=no
    if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
      libitm_ld_is_gold=yes
    elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
      libitm_ld_is_mold=yes
+   elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+     libitm_ld_is_wild=yes
    fi
    changequote(,)
    ldver=`$LD --version 2>/dev/null |
*************** if test $enable_symvers != no && test $l
*** 405,410 ****
--- 409,416 ----
        enable_symvers=gnu
      elif test $libitm_ld_is_mold = yes ; then
        enable_symvers=gnu
+     elif test $libitm_ld_is_wild = yes ; then
+       enable_symvers=gnu
      else
        # The right tools, the right setup, but too old.  Fallbacks?
        AC_MSG_WARN(=== Linker version $libitm_gnu_ld_version is too old for)
diff -Nrcpad gcc-16-20251116/libitm/configure gcc-16-20251123/libitm/configure
*** gcc-16-20251116/libitm/configure	Sun Nov 16 22:35:54 2025
--- gcc-16-20251123/libitm/configure	Sun Nov 23 22:33:00 2025
*************** fi
*** 17604,17613 ****
--- 17604,17616 ----
    # does some of this, but throws away the result.
    libitm_ld_is_gold=no
    libitm_ld_is_mold=no
+   libitm_ld_is_wild=no
    if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
      libitm_ld_is_gold=yes
    elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
      libitm_ld_is_mold=yes
+   elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+     libitm_ld_is_wild=yes
    fi
  
    ldver=`$LD --version 2>/dev/null |
*************** if test $enable_symvers != no && test $l
*** 17812,17817 ****
--- 17815,17822 ----
        enable_symvers=gnu
      elif test $libitm_ld_is_mold = yes ; then
        enable_symvers=gnu
+     elif test $libitm_ld_is_wild = yes ; then
+       enable_symvers=gnu
      else
        # The right tools, the right setup, but too old.  Fallbacks?
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version $libitm_gnu_ld_version is too old for" >&5
diff -Nrcpad gcc-16-20251116/libstdc++-v3/ChangeLog gcc-16-20251123/libstdc++-v3/ChangeLog
*** gcc-16-20251116/libstdc++-v3/ChangeLog	Sun Nov 16 22:35:01 2025
--- gcc-16-20251123/libstdc++-v3/ChangeLog	Sun Nov 23 22:32:43 2025
***************
*** 1,3 ****
--- 1,193 ----
+ 2025-11-21  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* doc/html/manual/using_exceptions.html: Replace dead link.
+ 	* doc/xml/manual/using_exceptions.xml: Likewise.
+ 
+ 2025-11-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/expected (expected::value_or): Use remove_cv_t for
+ 	the return type. Do not use static_cast for return statement.
+ 	Adjust static_assert conditions to match return statements.
+ 	* include/std/optional (optional::value_or): Likewise.
+ 	(optional<T&>::value_or): Likewise.
+ 
+ 2025-11-21  Yuao Ma  <c8ef@outlook.com>
+ 	    Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/istream (ignore): Add an overload for char.
+ 	* testsuite/27_io/basic_istream/ignore/char/93672.cc: Adjust
+ 	expected behaviour for C++26 mode.
+ 	* testsuite/27_io/basic_istream/ignore/char/4.cc: New test.
+ 
+ 2025-11-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/faq.xml: Refresh information on _GNU_SOURCE and
+ 	_XOPEN_SOURCE being predefined.
+ 	* doc/xml/manual/internals.xml: Remove outdated paragraph about
+ 	_POSIX_SOURCE in libstdc++ source files.
+ 	* doc/html/*: Regenerate.
+ 
+ 2025-11-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/regex_automaton.tcc [_GLIBCXX_DEBUG]: Include
+ 	<ostream> so that _State_base::_M_print etc. can use it.
+ 
+ 2025-11-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/23_containers/vector/debug/erase.cc: Remove no_pch
+ 	option.
+ 	* testsuite/23_containers/vector/debug/invalidation/erase.cc:
+ 	Likewise.
+ 
+ 2025-11-20  François Dumont  <frs.dumont@gmail.com>
+ 
+ 	* include/debug/vector (std::erase_if, std::erase): New overloads for
+ 	std::__debug::vector instances.
+ 	* include/std/vector (std::erase_if, std::erase): Make overloads specific
+ 	to normal std::vector implementation.
+ 	* testsuite/23_containers/vector/debug/erase.cc: New test case.
+ 	* testsuite/23_containers/vector/debug/invalidation/erase.cc: New test case.
+ 
+ 2025-11-20  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan: Improve formatting and placement.
+ 	* testsuite/23_containers/mdspan/int_like.h: Optionally,
+ 	add move- and copy-ctors.
+ 	* testsuite/23_containers/mdspan/layouts/padded_traits.h: Move to...
+ 	* testsuite/23_containers/mdspan/layout_traits.h: ...here.
+ 	* testsuite/23_containers/mdspan/layouts/ctors.cc: Fix include.
+ 	* testsuite/23_containers/mdspan/layouts/mapping.cc: Ditto.
+ 	* testsuite/23_containers/mdspan/layouts/padded.cc: Ditto.
+ 	* testsuite/23_containers/mdspan/layouts/padded_neg.cc: Ditto.
+ 
+ 2025-11-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/18_support/headers/new/synopsis.cc: Add constexpr to
+ 	placement delete for C++26 and up.
+ 
+ 2025-11-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/abi.xml: Add versions for GCC 16.
+ 	* doc/html/manual/abi.html: Regenerate.
+ 
+ 2025-11-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122743
+ 	* doc/xml/manual/abi.xml: Add versions for GCC 15.
+ 	* doc/html/manual/abi.html: Regenerate.
+ 
+ 2025-11-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/faq.xml: Remove unwanted whitespace inside
+ 	programlisting elements.
+ 	* doc/xml/manual/allocator.xml: Likewise.
+ 	* doc/xml/manual/auto_ptr.xml: Likewise.
+ 	* doc/xml/manual/backwards_compatibility.xml: Likewise.
+ 	* doc/xml/manual/build_hacking.xml: Likewise.
+ 	* doc/xml/manual/containers.xml: Likewise.
+ 	* doc/xml/manual/diagnostics.xml: Likewise.
+ 	* doc/xml/manual/extensions.xml: Likewise.
+ 	* doc/xml/manual/intro.xml: Likewise.
+ 	* doc/xml/manual/io.xml: Likewise.
+ 	* doc/xml/manual/iterators.xml: Likewise.
+ 	* doc/xml/manual/numerics.xml: Likewise.
+ 	* doc/xml/manual/policy_data_structures.xml: Likewise.
+ 	* doc/xml/manual/strings.xml: Likewise.
+ 	* doc/xml/manual/support.xml: Likewise.
+ 	* doc/xml/manual/test.xml: Likewise.
+ 	* doc/xml/manual/using.xml: Likewise.
+ 	* doc/xml/manual/utilities.xml: Likewise.
+ 	* doc/html/*: Regenerate.
+ 
+ 2025-11-19  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* include/bits/basic_string.h (basic_string::M_set_length): Swap
+ 	around the order of traits_type::assign and _M_length so that
+ 	_M_length is at the end.
+ 
+ 2025-11-19  Martin Liska  <martin.liska@hey.com>
+ 
+ 	* configure: Regenerate.
+ 
+ 2025-11-19  Martin Liska  <martin.liska@hey.com>
+ 
+ 	* acinclude.m4:: Add detection for wild linker.
+ 	* configure: Regenerate.
+ 
+ 2025-11-19  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan (extents::_Storage): Move type alias before
+ 	its first use.
+ 	(__mdspan::__static_extents): Add missing noexcept and constexpr
+ 	to friend declaration in extents.
+ 	(__mdspan::__dynamic_extents): Ditto.
+ 
+ 2025-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* include/std/type_traits (constant_wrapper conversion operator):
+ 	Use decltype(value) instead of decltype(auto).  Resolves LWG4468.
+ 
+ 2025-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/122671
+ 	* libsupc++/new (::operator delete, ::operator delete[]): Implement
+ 	proposed LWG4477 resolution.  Use _GLIBCXX_PLACEMENT_CONSTEXPR for
+ 	placement operator deletes.
+ 
+ 2025-11-18  Mike Crowe  <mac@mcrowe.com>
+ 
+ 	* include/std/shared_mutex (try_lock, try_lock_until)
+ 	(try_lock_shared_until): Respond consistently to errors and
+ 	deadlocks.
+ 	* testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc:
+ 	Test deadlock behaviour if possible.
+ 
+ 2025-11-18  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/121858
+ 	* include/bits/funcref_impl.h
+ 	(function_ref::function_ref(nontype<__fn>, _Up&&)): Handle.
+ 	reference_wrapper.
+ 	* testsuite/20_util/function_ref/call.cc: Call and update
+ 	test05(). Add new test06() for reference_wrapper.
+ 
+ 2025-11-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122726
+ 	* src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
+ 	(rename): Use __last_system_error to set errno accurately.
+ 	* testsuite/27_io/filesystem/operations/rename.cc: Test
+ 	error_code matches errc::no_such_file_or_directory.
+ 
+ 2025-11-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/c++23/std.cc.in [!__cpp_lib_syncbuf]: Disable exports for
+ 	<syncstream> contents when not defined.
+ 	[!_GLIBCXX_USE_CXX11_ABI]: Disable exports for pmr aliases in
+ 	<string> when not defined.
+ 
+ 2025-11-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	* testsuite/util/testsuite_allocator.h: Move importable headers up.
+ 	* testsuite/util/testsuite_common_types.h: Likewise.
+ 	* testsuite/util/testsuite_containers.h: Likewise.
+ 	* testsuite/util/testsuite_error.h: Move includes inside
+ 	include guard.
+ 	* testsuite/util/testsuite_greedy_ops.h: #include <cstddef>.
+ 	* testsuite/util/testsuite_iterators.h: #include <utility>.
+ 	* testsuite/util/testsuite_new_operators.h: #include <cstdlib>.
+ 	* testsuite/util/testsuite_random.h: #include <random>.
+ 
+ 2025-11-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122698
+ 	* src/c++20/syncbuf.cc (__syncbuf_get_mutex): Include <mutex>.
+ 	Fix indentation of function body.
+ 
+ 2025-11-16  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* scripts/extract_symvers.pl: Remove ccs from elfdump path.
+ 
  2025-11-15  Jonathan Wakely  <jwakely@redhat.com>
  
  	* include/bits/atomic_base.h: Tweak grammar of static assert
diff -Nrcpad gcc-16-20251116/libstdc++-v3/acinclude.m4 gcc-16-20251123/libstdc++-v3/acinclude.m4
*** gcc-16-20251116/libstdc++-v3/acinclude.m4	Sun Nov 16 22:35:01 2025
--- gcc-16-20251123/libstdc++-v3/acinclude.m4	Sun Nov 23 22:32:43 2025
*************** dnl Sets:
*** 173,178 ****
--- 173,179 ----
  dnl  with_gnu_ld
  dnl  glibcxx_ld_is_gold (set to "no" or "yes")
  dnl  glibcxx_ld_is_mold (set to "no" or "yes")
+ dnl  glibcxx_ld_is_wild (set to "no" or "yes")
  dnl  glibcxx_gnu_ld_version (possibly)
  dnl
  dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
*************** AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES]
*** 206,211 ****
--- 207,213 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      AC_MSG_CHECKING([for ld version])
      changequote(,)
*************** AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES]
*** 213,218 ****
--- 215,222 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES]
*** 224,230 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 228,234 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** changequote([,])dnl
*** 4063,4068 ****
--- 4067,4074 ----
      : All versions of gold support symbol versioning.
    elif test $glibcxx_ld_is_mold = yes ; then
      : All versions of mold support symbol versioning.
+   elif test $glibcxx_ld_is_wild = yes ; then
+     : All versions of Wild support symbol versioning.
    elif test $glibcxx_gnu_ld_version -lt $glibcxx_min_gnu_ld_version ; then
      # The right tools, the right setup, but too old.  Fallbacks?
      AC_MSG_WARN(=== Linker version $glibcxx_gnu_ld_version is too old for)
diff -Nrcpad gcc-16-20251116/libstdc++-v3/configure gcc-16-20251123/libstdc++-v3/configure
*** gcc-16-20251116/libstdc++-v3/configure	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/configure	Sun Nov 23 22:32:44 2025
*************** with_gnu_ld=$lt_cv_prog_gnu_ld
*** 23068,23073 ****
--- 23068,23074 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
  $as_echo_n "checking for ld version... " >&6; }
*************** $as_echo_n "checking for ld version... "
*** 23076,23081 ****
--- 23077,23084 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** $as_echo "$glibcxx_gnu_ld_version" >&6;
*** 23088,23094 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 23091,23097 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** ac_compiler_gnu=$ac_cv_c_compiler_gnu
*** 28936,28941 ****
--- 28939,28945 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
  $as_echo_n "checking for ld version... " >&6; }
*************** $as_echo_n "checking for ld version... "
*** 28944,28949 ****
--- 28948,28955 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** $as_echo "$glibcxx_gnu_ld_version" >&6;
*** 28956,28962 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 28962,28968 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** done
*** 32115,32120 ****
--- 32121,32127 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
  $as_echo_n "checking for ld version... " >&6; }
*************** $as_echo_n "checking for ld version... "
*** 32123,32128 ****
--- 32130,32137 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** $as_echo "$glibcxx_gnu_ld_version" >&6;
*** 32135,32141 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 32144,32150 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** done
*** 38333,38338 ****
--- 38342,38348 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
  $as_echo_n "checking for ld version... " >&6; }
*************** $as_echo_n "checking for ld version... "
*** 38341,38346 ****
--- 38351,38358 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** $as_echo "$glibcxx_gnu_ld_version" >&6;
*** 38353,38359 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 38365,38371 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** done
*** 38621,38626 ****
--- 38633,38639 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
  $as_echo_n "checking for ld version... " >&6; }
*************** $as_echo_n "checking for ld version... "
*** 38629,38634 ****
--- 38642,38649 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** $as_echo "$glibcxx_gnu_ld_version" >&6;
*** 38641,38647 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 38656,38662 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** ac_compiler_gnu=$ac_cv_c_compiler_gnu
*** 39086,39091 ****
--- 39101,39107 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
  $as_echo_n "checking for ld version... " >&6; }
*************** $as_echo_n "checking for ld version... "
*** 39094,39099 ****
--- 39110,39117 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** $as_echo "$glibcxx_gnu_ld_version" >&6;
*** 39106,39112 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 39124,39130 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** done
*** 42528,42533 ****
--- 42546,42552 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
  $as_echo_n "checking for ld version... " >&6; }
*************** $as_echo_n "checking for ld version... "
*** 42536,42541 ****
--- 42555,42562 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** $as_echo "$glibcxx_gnu_ld_version" >&6;
*** 42548,42554 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 42569,42575 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** $as_echo "#define HAVE_TLS 1" >>confdefs
*** 45923,45928 ****
--- 45944,45950 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
  $as_echo_n "checking for ld version... " >&6; }
*************** $as_echo_n "checking for ld version... "
*** 45931,45936 ****
--- 45953,45960 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** $as_echo "$glibcxx_gnu_ld_version" >&6;
*** 45943,45949 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 45967,45973 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** done
*** 46136,46141 ****
--- 46160,46166 ----
    # does some of this, but throws away the result.
    glibcxx_ld_is_gold=no
    glibcxx_ld_is_mold=no
+   glibcxx_ld_is_wild=no
    if test x"$with_gnu_ld" = x"yes"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
  $as_echo_n "checking for ld version... " >&6; }
*************** $as_echo_n "checking for ld version... "
*** 46144,46149 ****
--- 46169,46176 ----
        glibcxx_ld_is_gold=yes
      elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
        glibcxx_ld_is_mold=yes
+     elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+       glibcxx_ld_is_wild=yes
      fi
      ldver=`$LD --version 2>/dev/null |
  	   sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
*************** $as_echo "$glibcxx_gnu_ld_version" >&6;
*** 46156,46162 ****
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
--- 46183,46189 ----
  
    # Set --gc-sections.
    glibcxx_have_gc_sections=no
!   if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" || test "$glibcxx_ld_is_wild" = "yes" ; then
      if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
        glibcxx_have_gc_sections=yes
      fi
*************** $as_echo "$as_me: WARNING: === Symbol ve
*** 51196,51201 ****
--- 51223,51230 ----
      : All versions of gold support symbol versioning.
    elif test $glibcxx_ld_is_mold = yes ; then
      : All versions of mold support symbol versioning.
+   elif test $glibcxx_ld_is_wild = yes ; then
+     : All versions of Wild support symbol versioning.
    elif test $glibcxx_gnu_ld_version -lt $glibcxx_min_gnu_ld_version ; then
      # The right tools, the right setup, but too old.  Fallbacks?
      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version $glibcxx_gnu_ld_version is too old for" >&5
*************** $as_echo "$glibcxx_cv_libbacktrace_atomi
*** 53940,53946 ****
      CXXFLAGS='-O0 -S'
  
      cat > conftest.$ac_ext << EOF
! #line 53943 "configure"
  #include <stddef.h>
  int main()
  {
--- 53969,53975 ----
      CXXFLAGS='-O0 -S'
  
      cat > conftest.$ac_ext << EOF
! #line 53972 "configure"
  #include <stddef.h>
  int main()
  {
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/faq.html gcc-16-20251123/libstdc++-v3/doc/html/faq.html
*** gcc-16-20251116/libstdc++-v3/doc/html/faq.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/faq.html	Sun Nov 23 22:32:44 2025
***************
*** 432,457 ****
      This has been fixed for libstdc++ releases greater than 3.0.3.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.predefined"></a><a id="q-predefined"></a><p><strong>4.3.</strong></p></td><td align="left" valign="top"><p>
        <code class="constant">_XOPEN_SOURCE</code> and <code class="constant">_GNU_SOURCE</code> are always defined?
!     </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-predefined"></a></td><td align="left" valign="top"><p>On Solaris, <span class="command"><strong>g++</strong></span> (but not <span class="command"><strong>gcc</strong></span>)
           always defines the preprocessor macro
! 	 <code class="constant">_XOPEN_SOURCE</code>.  On GNU/Linux, the same happens
!          with <code class="constant">_GNU_SOURCE</code>.  (This is not an exhaustive list;
           other macros and other platforms are also affected.)
        </p><p>These macros are typically used in C library headers, guarding new
!          versions of functions from their older versions.  The C++98 standard
!          library includes the C standard library, but it requires the C90
!          version, which for backwards-compatibility reasons is often not the
!          default for many vendors.
!       </p><p>More to the point, the C++ standard requires behavior which is only
!          available on certain platforms after certain symbols are defined.
           Usually the issue involves I/O-related typedefs.  In order to
!          ensure correctness, the compiler simply predefines those symbols.
!       </p><p>Note that it's not enough to <code class="literal">#define</code> them only when the library is
!          being built (during installation).  Since we don't have an 'export'
!          keyword, much of the library exists as headers, which means that
!          the symbols must also be defined as your programs are parsed and
           compiled.
!       </p><p>To see which symbols are defined, look for
           <code class="varname">CPLUSPLUS_CPP_SPEC</code> in
           the gcc config headers for your target (and try changing them to
           see what happens when building complicated code).  You can also run
--- 432,459 ----
      This has been fixed for libstdc++ releases greater than 3.0.3.
      </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.predefined"></a><a id="q-predefined"></a><p><strong>4.3.</strong></p></td><td align="left" valign="top"><p>
        <code class="constant">_XOPEN_SOURCE</code> and <code class="constant">_GNU_SOURCE</code> are always defined?
!     </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-predefined"></a></td><td align="left" valign="top"><p>On GNU/Linux, <span class="command"><strong>g++</strong></span> (but not <span class="command"><strong>gcc</strong></span>)
           always defines the preprocessor macro
! 	 <code class="constant">_GNU_SOURCE</code>.  On Solaris, the same happens
!          with <code class="constant">_XOPEN_SOURCE</code>.  (This is not an exhaustive list;
           other macros and other platforms are also affected.)
        </p><p>These macros are typically used in C library headers, guarding new
!          versions of functions from their older versions.  Historically,
! 	 libstdc++ needed these macros to ensure that the headers provided by
! 	 the C library declared all the functions that libstdc++ relies on.
! 	 For example, functions for working with <code class="code">long long</code>,
! 	 such as <code class="function">strtoll</code>, are needed by libstdc++ but
! 	 were not part of the C90 standard.
!       </p><p>Additionally the C++ standard requires behavior which is only
!          available on certain platforms after certain macros are defined.
           Usually the issue involves I/O-related typedefs.  In order to
!          ensure correctness, the compiler simply predefines those macros.
!       </p><p>Note that it's not enough to <code class="literal">#define</code> them
! 	 only when the library is being built (during installation).
!          Much of the library exists as headers, which means that
!          the macros must also be defined as your programs are parsed and
           compiled.
!       </p><p>To see which macros are defined, look for
           <code class="varname">CPLUSPLUS_CPP_SPEC</code> in
           the gcc config headers for your target (and try changing them to
           see what happens when building complicated code).  You can also run
***************
*** 597,603 ****
      // .
      fs.close();
      fs.open("a_new_file");
!     </pre><p>
      All operations on the re-opened <code class="varname">fs</code> would fail, or at
      least act very strangely, especially if <code class="varname">fs</code> reached the
      EOF state on the previous file.
--- 599,605 ----
      // .
      fs.close();
      fs.open("a_new_file");
! </pre><p>
      All operations on the re-opened <code class="varname">fs</code> would fail, or at
      least act very strangely, especially if <code class="varname">fs</code> reached the
      EOF state on the previous file.
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/abi.html gcc-16-20251123/libstdc++-v3/doc/html/manual/abi.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/abi.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/abi.html	Sun Nov 23 22:32:44 2025
*************** compatible.
*** 110,116 ****
  	has the same filename and <code class="constant">DT_SONAME</code> as the
  	preceding release.
        </p><p>It is versioned as follows:
!     </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: libstdc++.so.3.0.0</p></li><li class="listitem"><p>GCC 3.0.1: libstdc++.so.3.0.1</p></li><li class="listitem"><p>GCC 3.0.2: libstdc++.so.3.0.2</p></li><li class="listitem"><p>GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)</p></li><li class="listitem"><p>GCC 3.0.4: libstdc++.so.3.0.4</p></li><li class="listitem"><p>GCC 3.1.0: libstdc++.so.4.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.1.1: libstdc++.so.4.0.1</p></li><li class="listitem"><p>GCC 3.2.0: libstdc++.so.5.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.2.1: libstdc++.so.5.0.1</p></li><li class="listitem"><p>GCC 3.2.2: libstdc++.so.5.0.2</p></li><li class="listitem"><p>GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)</p></li><li class="listitem"><p>GCC 3.3.0: libstdc++.so.5.0.4</p></li><li class="listitem"><p>GCC 3.3.1: libstdc++.so.5.0.5</p></li><li class="listitem"><p>GCC 3.4.0: libstdc++.so.6.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.4.1: libstdc++.so.6.0.1</p></li><li class="listitem"><p>GCC 3.4.2: libstdc++.so.6.0.2</p></li><li class="listitem"><p>GCC 3.4.3: libstdc++.so.6.0.3</p></li><li class="listitem"><p>GCC 4.0.0: libstdc++.so.6.0.4</p></li><li class="listitem"><p>GCC 4.0.1: libstdc++.so.6.0.5</p></li><li class="listitem"><p>GCC 4.0.2: libstdc++.so.6.0.6</p></li><li class="listitem"><p>GCC 4.0.3: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.0: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.1: libstdc++.so.6.0.8</p></li><li class="listitem"><p>GCC 4.2.0: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)</p></li><li class="listitem"><p>GCC 4.2.2: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.3.0: libstdc++.so.6.0.10</p></li><li class="listitem"><p>GCC 4.4.0: libstdc++.so.6.0.11</p></li><li class="listitem"><p>GCC 4.4.1: libstdc++.so.6.0.12</p></li><li class="listitem"><p>GCC 4.4.2: libstdc++.so.6.0.13</p></li><li class="listitem"><p>GCC 4.5.0: libstdc++.so.6.0.14</p></li><li class="listitem"><p>GCC 4.6.0: libstdc++.so.6.0.15</p></li><li class="listitem"><p>GCC 4.6.1: libstdc++.so.6.0.16</p></li><li class="listitem"><p>GCC 4.7.0: libstdc++.so.6.0.17</p></li><li class="listitem"><p>GCC 4.8.0: libstdc++.so.6.0.18</p></li><li class="listitem"><p>GCC 4.8.3: libstdc++.so.6.0.19</p></li><li class="listitem"><p>GCC 4.9.0: libstdc++.so.6.0.20</p></li><li class="listitem"><p>GCC 5.1.0: libstdc++.so.6.0.21</p></li><li class="listitem"><p>GCC 6.1.0: libstdc++.so.6.0.22</p></li><li class="listitem"><p>GCC 7.1.0: libstdc++.so.6.0.23</p></li><li class="listitem"><p>GCC 7.2.0: libstdc++.so.6.0.24</p></li><li class="listitem"><p>GCC 8.1.0: libstdc++.so.6.0.25</p></li><li class="listitem"><p>GCC 9.1.0: libstdc++.so.6.0.26</p></li><li class="listitem"><p>GCC 9.2.0: libstdc++.so.6.0.27</p></li><li class="listitem"><p>GCC 9.3.0: libstdc++.so.6.0.28</p></li><li class="listitem"><p>GCC 10.1.0: libstdc++.so.6.0.28</p></li><li class="listitem"><p>GCC 11.1.0: libstdc++.so.6.0.29</p></li><li class="listitem"><p>GCC 12.1.0: libstdc++.so.6.0.30</p></li><li class="listitem"><p>GCC 13.1.0: libstdc++.so.6.0.31</p></li><li class="listitem"><p>GCC 13.2.0: libstdc++.so.6.0.32</p></li><li class="listitem"><p>GCC 14.1.0: libstdc++.so.6.0.33</p></li></ul></div><p>
        Note 1: Error should be libstdc++.so.3.0.3.
      </p><p>
        Note 2: Not strictly required.
--- 110,116 ----
  	has the same filename and <code class="constant">DT_SONAME</code> as the
  	preceding release.
        </p><p>It is versioned as follows:
!     </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: libstdc++.so.3.0.0</p></li><li class="listitem"><p>GCC 3.0.1: libstdc++.so.3.0.1</p></li><li class="listitem"><p>GCC 3.0.2: libstdc++.so.3.0.2</p></li><li class="listitem"><p>GCC 3.0.3: libstdc++.so.3.0.2 (See Note 1)</p></li><li class="listitem"><p>GCC 3.0.4: libstdc++.so.3.0.4</p></li><li class="listitem"><p>GCC 3.1.0: libstdc++.so.4.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.1.1: libstdc++.so.4.0.1</p></li><li class="listitem"><p>GCC 3.2.0: libstdc++.so.5.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.2.1: libstdc++.so.5.0.1</p></li><li class="listitem"><p>GCC 3.2.2: libstdc++.so.5.0.2</p></li><li class="listitem"><p>GCC 3.2.3: libstdc++.so.5.0.3 (See Note 2)</p></li><li class="listitem"><p>GCC 3.3.0: libstdc++.so.5.0.4</p></li><li class="listitem"><p>GCC 3.3.1: libstdc++.so.5.0.5</p></li><li class="listitem"><p>GCC 3.4.0: libstdc++.so.6.0.0 <span class="emphasis"><em>(Incompatible with previous)</em></span></p></li><li class="listitem"><p>GCC 3.4.1: libstdc++.so.6.0.1</p></li><li class="listitem"><p>GCC 3.4.2: libstdc++.so.6.0.2</p></li><li class="listitem"><p>GCC 3.4.3: libstdc++.so.6.0.3</p></li><li class="listitem"><p>GCC 4.0.0: libstdc++.so.6.0.4</p></li><li class="listitem"><p>GCC 4.0.1: libstdc++.so.6.0.5</p></li><li class="listitem"><p>GCC 4.0.2: libstdc++.so.6.0.6</p></li><li class="listitem"><p>GCC 4.0.3: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.0: libstdc++.so.6.0.7</p></li><li class="listitem"><p>GCC 4.1.1: libstdc++.so.6.0.8</p></li><li class="listitem"><p>GCC 4.2.0: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.2.1: libstdc++.so.6.0.9 (See Note 3)</p></li><li class="listitem"><p>GCC 4.2.2: libstdc++.so.6.0.9</p></li><li class="listitem"><p>GCC 4.3.0: libstdc++.so.6.0.10</p></li><li class="listitem"><p>GCC 4.4.0: libstdc++.so.6.0.11</p></li><li class="listitem"><p>GCC 4.4.1: libstdc++.so.6.0.12</p></li><li class="listitem"><p>GCC 4.4.2: libstdc++.so.6.0.13</p></li><li class="listitem"><p>GCC 4.5.0: libstdc++.so.6.0.14</p></li><li class="listitem"><p>GCC 4.6.0: libstdc++.so.6.0.15</p></li><li class="listitem"><p>GCC 4.6.1: libstdc++.so.6.0.16</p></li><li class="listitem"><p>GCC 4.7.0: libstdc++.so.6.0.17</p></li><li class="listitem"><p>GCC 4.8.0: libstdc++.so.6.0.18</p></li><li class="listitem"><p>GCC 4.8.3: libstdc++.so.6.0.19</p></li><li class="listitem"><p>GCC 4.9.0: libstdc++.so.6.0.20</p></li><li class="listitem"><p>GCC 5.1.0: libstdc++.so.6.0.21</p></li><li class="listitem"><p>GCC 6.1.0: libstdc++.so.6.0.22</p></li><li class="listitem"><p>GCC 7.1.0: libstdc++.so.6.0.23</p></li><li class="listitem"><p>GCC 7.2.0: libstdc++.so.6.0.24</p></li><li class="listitem"><p>GCC 8.1.0: libstdc++.so.6.0.25</p></li><li class="listitem"><p>GCC 9.1.0: libstdc++.so.6.0.26</p></li><li class="listitem"><p>GCC 9.2.0: libstdc++.so.6.0.27</p></li><li class="listitem"><p>GCC 9.3.0: libstdc++.so.6.0.28</p></li><li class="listitem"><p>GCC 10.1.0: libstdc++.so.6.0.28</p></li><li class="listitem"><p>GCC 11.1.0: libstdc++.so.6.0.29</p></li><li class="listitem"><p>GCC 12.1.0: libstdc++.so.6.0.30</p></li><li class="listitem"><p>GCC 13.1.0: libstdc++.so.6.0.31</p></li><li class="listitem"><p>GCC 13.2.0: libstdc++.so.6.0.32</p></li><li class="listitem"><p>GCC 14.1.0: libstdc++.so.6.0.33</p></li><li class="listitem"><p>GCC 15.1.0: libstdc++.so.6.0.34</p></li><li class="listitem"><p>GCC 16.1.0: libstdc++.so.6.0.34</p></li></ul></div><p>
        Note 1: Error should be libstdc++.so.3.0.3.
      </p><p>
        Note 2: Not strictly required.
*************** compatible.
*** 128,134 ****
     GLIBCPP_3.2 for symbols that were introduced in the GCC 3.2.0
     release.) If a particular release is not listed, it has the same
     version labels as the preceding release.
!    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.1: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.2: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.3: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.4: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.1.0: GLIBCPP_3.1, CXXABI_1</p></li><li class="listitem"><p>GCC 3.1.1: GLIBCPP_3.1, CXXABI_1</p></li><li class="listitem"><p>GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3</p></li><li class="listitem"><p>GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3</p></li><li class="listitem"><p>GCC 3.4.2: GLIBCXX_3.4.2</p></li><li class="listitem"><p>GCC 3.4.3: GLIBCXX_3.4.3</p></li><li class="listitem"><p>GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1</p></li><li class="listitem"><p>GCC 4.0.1: GLIBCXX_3.4.5</p></li><li class="listitem"><p>GCC 4.0.2: GLIBCXX_3.4.6</p></li><li class="listitem"><p>GCC 4.0.3: GLIBCXX_3.4.7</p></li><li class="listitem"><p>GCC 4.1.1: GLIBCXX_3.4.8</p></li><li class="listitem"><p>GCC 4.2.0: GLIBCXX_3.4.9</p></li><li class="listitem"><p>GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2</p></li><li class="listitem"><p>GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4</p></li><li class="listitem"><p>GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5</p></li><li class="listitem"><p>GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5</p></li><li class="listitem"><p>GCC 4.7.0: GLIBCXX_3.4.17, CXXABI_1.3.6</p></li><li class="listitem"><p>GCC 4.8.0: GLIBCXX_3.4.18, CXXABI_1.3.7</p></li><li class="listitem"><p>GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7</p></li><li class="listitem"><p>GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8</p></li><li class="listitem"><p>GCC 5.1.0: GLIBCXX_3.4.21, CXXABI_1.3.9</p></li><li class="listitem"><p>GCC 6.1.0: GLIBCXX_3.4.22, CXXABI_1.3.10</p></li><li class="listitem"><p>GCC 7.1.0: GLIBCXX_3.4.23, CXXABI_1.3.11</p></li><li class="listitem"><p>GCC 7.2.0: GLIBCXX_3.4.24, CXXABI_1.3.11</p></li><li class="listitem"><p>GCC 8.1.0: GLIBCXX_3.4.25, CXXABI_1.3.11</p></li><li class="listitem"><p>GCC 9.1.0: GLIBCXX_3.4.26, CXXABI_1.3.12</p></li><li class="listitem"><p>GCC 9.2.0: GLIBCXX_3.4.27, CXXABI_1.3.12</p></li><li class="listitem"><p>GCC 9.3.0: GLIBCXX_3.4.28, CXXABI_1.3.12</p></li><li class="listitem"><p>GCC 10.1.0: GLIBCXX_3.4.28, CXXABI_1.3.12</p></li><li class="listitem"><p>GCC 11.1.0: GLIBCXX_3.4.29, CXXABI_1.3.13</p></li><li class="listitem"><p>GCC 12.1.0: GLIBCXX_3.4.30, CXXABI_1.3.13</p></li><li class="listitem"><p>GCC 13.1.0: GLIBCXX_3.4.31, CXXABI_1.3.14</p></li><li class="listitem"><p>GCC 13.2.0: GLIBCXX_3.4.32, CXXABI_1.3.14</p></li><li class="listitem"><p>GCC 14.1.0: GLIBCXX_3.4.33, CXXABI_1.3.15</p></li></ul></div></li><li class="listitem"><p>Incremental bumping of a compiler pre-defined macro,
      __GXX_ABI_VERSION. This macro is defined as the version of the
      compiler v3 ABI, with g++ 3.0 being version 100. This macro will
      be automatically defined whenever g++ is used (the curious can
--- 128,134 ----
     GLIBCPP_3.2 for symbols that were introduced in the GCC 3.2.0
     release.) If a particular release is not listed, it has the same
     version labels as the preceding release.
!    </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>GCC 3.0.0: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.1: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.2: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.3: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.0.4: (Error, not versioned)</p></li><li class="listitem"><p>GCC 3.1.0: GLIBCPP_3.1, CXXABI_1</p></li><li class="listitem"><p>GCC 3.1.1: GLIBCPP_3.1, CXXABI_1</p></li><li class="listitem"><p>GCC 3.2.0: GLIBCPP_3.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.1: GLIBCPP_3.2.1, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.2: GLIBCPP_3.2.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.2.3: GLIBCPP_3.2.2, CXXABI_1.2</p></li><li class="listitem"><p>GCC 3.3.0: GLIBCPP_3.2.2, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.1: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.2: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.3.3: GLIBCPP_3.2.3, CXXABI_1.2.1</p></li><li class="listitem"><p>GCC 3.4.0: GLIBCXX_3.4, CXXABI_1.3</p></li><li class="listitem"><p>GCC 3.4.1: GLIBCXX_3.4.1, CXXABI_1.3</p></li><li class="listitem"><p>GCC 3.4.2: GLIBCXX_3.4.2</p></li><li class="listitem"><p>GCC 3.4.3: GLIBCXX_3.4.3</p></li><li class="listitem"><p>GCC 4.0.0: GLIBCXX_3.4.4, CXXABI_1.3.1</p></li><li class="listitem"><p>GCC 4.0.1: GLIBCXX_3.4.5</p></li><li class="listitem"><p>GCC 4.0.2: GLIBCXX_3.4.6</p></li><li class="listitem"><p>GCC 4.0.3: GLIBCXX_3.4.7</p></li><li class="listitem"><p>GCC 4.1.1: GLIBCXX_3.4.8</p></li><li class="listitem"><p>GCC 4.2.0: GLIBCXX_3.4.9</p></li><li class="listitem"><p>GCC 4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2</p></li><li class="listitem"><p>GCC 4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.4.1: GLIBCXX_3.4.12, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.4.2: GLIBCXX_3.4.13, CXXABI_1.3.3</p></li><li class="listitem"><p>GCC 4.5.0: GLIBCXX_3.4.14, CXXABI_1.3.4</p></li><li class="listitem"><p>GCC 4.6.0: GLIBCXX_3.4.15, CXXABI_1.3.5</p></li><li class="listitem"><p>GCC 4.6.1: GLIBCXX_3.4.16, CXXABI_1.3.5</p></li><li class="listitem"><p>GCC 4.7.0: GLIBCXX_3.4.17, CXXABI_1.3.6</p></li><li class="listitem"><p>GCC 4.8.0: GLIBCXX_3.4.18, CXXABI_1.3.7</p></li><li class="listitem"><p>GCC 4.8.3: GLIBCXX_3.4.19, CXXABI_1.3.7</p></li><li class="listitem"><p>GCC 4.9.0: GLIBCXX_3.4.20, CXXABI_1.3.8</p></li><li class="listitem"><p>GCC 5.1.0: GLIBCXX_3.4.21, CXXABI_1.3.9</p></li><li class="listitem"><p>GCC 6.1.0: GLIBCXX_3.4.22, CXXABI_1.3.10</p></li><li class="listitem"><p>GCC 7.1.0: GLIBCXX_3.4.23, CXXABI_1.3.11</p></li><li class="listitem"><p>GCC 7.2.0: GLIBCXX_3.4.24, CXXABI_1.3.11</p></li><li class="listitem"><p>GCC 8.1.0: GLIBCXX_3.4.25, CXXABI_1.3.11</p></li><li class="listitem"><p>GCC 9.1.0: GLIBCXX_3.4.26, CXXABI_1.3.12</p></li><li class="listitem"><p>GCC 9.2.0: GLIBCXX_3.4.27, CXXABI_1.3.12</p></li><li class="listitem"><p>GCC 9.3.0: GLIBCXX_3.4.28, CXXABI_1.3.12</p></li><li class="listitem"><p>GCC 10.1.0: GLIBCXX_3.4.28, CXXABI_1.3.12</p></li><li class="listitem"><p>GCC 11.1.0: GLIBCXX_3.4.29, CXXABI_1.3.13</p></li><li class="listitem"><p>GCC 12.1.0: GLIBCXX_3.4.30, CXXABI_1.3.13</p></li><li class="listitem"><p>GCC 13.1.0: GLIBCXX_3.4.31, CXXABI_1.3.14</p></li><li class="listitem"><p>GCC 13.2.0: GLIBCXX_3.4.32, CXXABI_1.3.14</p></li><li class="listitem"><p>GCC 14.1.0: GLIBCXX_3.4.33, CXXABI_1.3.15</p></li><li class="listitem"><p>GCC 15.1.0: GLIBCXX_3.4.34, CXXABI_1.3.15 (CXXABI_1.3.16 for RISC-V only)</p></li><li class="listitem"><p>GCC 16.1.0: GLIBCXX_3.4.34, CXXABI_1.3.17</p></li></ul></div></li><li class="listitem"><p>Incremental bumping of a compiler pre-defined macro,
      __GXX_ABI_VERSION. This macro is defined as the version of the
      compiler v3 ABI, with g++ 3.0 being version 100. This macro will
      be automatically defined whenever g++ is used (the curious can
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/appendix_porting.html gcc-16-20251123/libstdc++-v3/doc/html/manual/appendix_porting.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/appendix_porting.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/appendix_porting.html	Sun Nov 23 22:32:44 2025
*************** in the build directory starts the build
*** 113,125 ****
      GLIBCXX_CHECK_HOST
      GLIBCXX_TOPREL_CONFIGURE
      GLIBCXX_CONFIGURE
!   </pre><p>
      All the major variable "discovery" is done here.
      <code class="varname">CXX</code>, multilibs,
      etc.
    </p><pre class="programlisting">
      fragments included from elsewhere
!   </pre><p>
      Right now, "fragments" == "the math/linkage bits".
    </p><pre class="programlisting">
      GLIBCXX_CHECK_COMPILER_FEATURES
--- 113,125 ----
      GLIBCXX_CHECK_HOST
      GLIBCXX_TOPREL_CONFIGURE
      GLIBCXX_CONFIGURE
! </pre><p>
      All the major variable "discovery" is done here.
      <code class="varname">CXX</code>, multilibs,
      etc.
    </p><pre class="programlisting">
      fragments included from elsewhere
! </pre><p>
      Right now, "fragments" == "the math/linkage bits".
    </p><pre class="programlisting">
      GLIBCXX_CHECK_COMPILER_FEATURES
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/associative.html gcc-16-20251123/libstdc++-v3/doc/html/manual/associative.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/associative.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/associative.html	Sun Nov 23 22:32:44 2025
***************
*** 7,13 ****
       function for all of the associative containers (map, set, etc):
     </p><pre class="programlisting">
        a.insert(p,t);
!    </pre><p>
       where 'p' is an iterator into the container 'a', and 't' is the
       item to insert.  The standard says that <span class="quote">“<span class="quote"><code class="code">t</code> is
       inserted as close as possible to the position just prior to
--- 7,13 ----
       function for all of the associative containers (map, set, etc):
     </p><pre class="programlisting">
        a.insert(p,t);
! </pre><p>
       where 'p' is an iterator into the container 'a', and 't' is the
       item to insert.  The standard says that <span class="quote">“<span class="quote"><code class="code">t</code> is
       inserted as close as possible to the position just prior to
***************
*** 93,99 ****
  	  std::bitset&lt;n&gt;   bits;
  	  ....
        }
!    </pre><p>
       because <code class="code">n</code> must be known at compile time.  Your
       compiler is correct; it is not a bug.  That's the way templates
       work.  (Yes, it <span class="emphasis"><em>is</em></span> a feature.)
--- 93,99 ----
  	  std::bitset&lt;n&gt;   bits;
  	  ....
        }
! </pre><p>
       because <code class="code">n</code> must be known at compile time.  Your
       compiler is correct; it is not a bug.  That's the way templates
       work.  (Yes, it <span class="emphasis"><em>is</em></span> a feature.)
***************
*** 181,191 ****
       constructor expression:
     </p><pre class="programlisting">
        std::bitset&lt;5&gt; b ( std::string("10110") );
!    </pre><p>
       instead of
     </p><pre class="programlisting">
        std::bitset&lt;5&gt; b ( "10110" );    // invalid
!     </pre></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="unordered_associative.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9. 
    Containers
    
   </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Unordered Associative</td></tr></table></div></body></html>
\ No newline at end of file
--- 181,191 ----
       constructor expression:
     </p><pre class="programlisting">
        std::bitset&lt;5&gt; b ( std::string("10110") );
! </pre><p>
       instead of
     </p><pre class="programlisting">
        std::bitset&lt;5&gt; b ( "10110" );    // invalid
! </pre></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="unordered_associative.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9. 
    Containers
    
   </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Unordered Associative</td></tr></table></div></body></html>
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/backwards.html gcc-16-20251123/libstdc++-v3/doc/html/manual/backwards.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/backwards.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/backwards.html	Sun Nov 23 22:32:44 2025
*************** and  <code class="filename">&lt;unordere
*** 85,91 ****
        #endif
  
        extension::hash_map&lt;int,int&gt; my_map;
!       </pre><p>This is a bit cleaner than defining typedefs for all the
  	 instantiations you might need.
        </p><p>The following autoconf tests check for working HP/SGI hash containers.
  </p><pre class="programlisting">
--- 85,91 ----
        #endif
  
        extension::hash_map&lt;int,int&gt; my_map;
! </pre><p>This is a bit cleaner than defining typedefs for all the
  	 instantiations you might need.
        </p><p>The following autoconf tests check for working HP/SGI hash containers.
  </p><pre class="programlisting">
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/containers_and_c.html gcc-16-20251123/libstdc++-v3/doc/html/manual/containers_and_c.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/containers_and_c.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/containers_and_c.html	Sun Nov 23 22:32:44 2025
***************
*** 35,41 ****
       The result is that if all your algorithm calls look like
     </p><pre class="programlisting">
     std::transform(beginof(foo), endof(foo), beginof(foo), SomeFunction);
!    </pre><p>
       then the type of foo can change from an array of ints to a vector
       of ints to a deque of ints and back again, without ever changing
       any client code.
--- 35,41 ----
       The result is that if all your algorithm calls look like
     </p><pre class="programlisting">
     std::transform(beginof(foo), endof(foo), beginof(foo), SomeFunction);
! </pre><p>
       then the type of foo can change from an array of ints to a vector
       of ints to a deque of ints and back again, without ever changing
       any client code.
*************** template&lt;typename T, unsigned int sz&
*** 81,87 ****
       Second, the line
     </p><pre class="programlisting">
      inline unsigned int lengthof (T (&amp;)[sz]) { return sz; }
!    </pre><p>
       looks just weird!  Hint:  unused parameters can be left nameless.
     </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="unordered_associative.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Unordered Associative </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. 
    Iterators
--- 81,87 ----
       Second, the line
     </p><pre class="programlisting">
      inline unsigned int lengthof (T (&amp;)[sz]) { return sz; }
! </pre><p>
       looks just weird!  Hint:  unused parameters can be left nameless.
     </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="unordered_associative.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Unordered Associative </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. 
    Iterators
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/diagnostics.html gcc-16-20251123/libstdc++-v3/doc/html/manual/diagnostics.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/diagnostics.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/diagnostics.html	Sun Nov 23 22:32:44 2025
***************
*** 51,54 ****
         int    e;
         DBID   id;     // some user-defined type
     };
!    </pre></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="termination.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="std_contents.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="errno.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Termination </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Use of errno by the library</td></tr></table></div></body></html>
\ No newline at end of file
--- 51,54 ----
         int    e;
         DBID   id;     // some user-defined type
     };
! </pre></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="termination.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="std_contents.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="errno.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Termination </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Use of errno by the library</td></tr></table></div></body></html>
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/dynamic_memory.html gcc-16-20251123/libstdc++-v3/doc/html/manual/dynamic_memory.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/dynamic_memory.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/dynamic_memory.html	Sun Nov 23 22:32:44 2025
***************
*** 111,117 ****
        else
          throw bad_alloc{};
      }
!    </pre><p>
       This means you can influence what happens on allocation failure by
       writing your own new-handler and then registering it with
       <code class="function">std::set_new_handler</code>:
--- 111,117 ----
        else
          throw bad_alloc{};
      }
! </pre><p>
       This means you can influence what happens on allocation failure by
       writing your own new-handler and then registering it with
       <code class="function">std::set_new_handler</code>:
***************
*** 138,144 ****
         old_handler = set_new_handler (&amp;my_new_handler);
         ...
     }
!    </pre><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.support.memory.notes"></a>Additional Notes</h3></div></div></div><p>
       Remember that it is perfectly okay to <code class="function">delete</code> a
       null pointer!  Nothing happens, by definition.  That is not the
       same thing as deleting a pointer twice.
--- 138,144 ----
         old_handler = set_new_handler (&amp;my_new_handler);
         ...
     }
! </pre><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.support.memory.notes"></a>Additional Notes</h3></div></div></div><p>
       Remember that it is perfectly okay to <code class="function">delete</code> a
       null pointer!  Nothing happens, by definition.  That is not the
       same thing as deleting a pointer twice.
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/ext_containers.html gcc-16-20251123/libstdc++-v3/doc/html/manual/ext_containers.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/ext_containers.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/ext_containers.html	Sun Nov 23 22:32:44 2025
***************
*** 25,31 ****
     bitset&lt;N&gt;&amp;   _Unchecked_reset (size_t pos);
     bitset&lt;N&gt;&amp;   _Unchecked_flip  (size_t pos);
     bool         _Unchecked_test  (size_t pos);
!    </pre><p>Note that these may in fact be removed in the future, although we have
     no present plans to do so (and there doesn't seem to be any immediate
     reason to).
  </p><p>The member function <code class="code">operator[]</code> on a const bitset returns
--- 25,31 ----
     bitset&lt;N&gt;&amp;   _Unchecked_reset (size_t pos);
     bitset&lt;N&gt;&amp;   _Unchecked_flip  (size_t pos);
     bool         _Unchecked_test  (size_t pos);
! </pre><p>Note that these may in fact be removed in the future, although we have
     no present plans to do so (and there doesn't seem to be any immediate
     reason to).
  </p><p>The member function <code class="code">operator[]</code> on a const bitset returns
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/ext_demangling.html gcc-16-20251123/libstdc++-v3/doc/html/manual/ext_demangling.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/ext_demangling.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/ext_demangling.html	Sun Nov 23 22:32:44 2025
*************** int main()
*** 45,51 ****
    std::cout &lt;&lt; ti.name() &lt;&lt; "\t=&gt; " &lt;&lt; realname &lt;&lt; "\t: " &lt;&lt; status &lt;&lt; '\n';
    std::free(realname);
  }
!    </pre><p>
       This prints
     </p><pre class="screen">
     <code class="computeroutput">
--- 45,51 ----
    std::cout &lt;&lt; ti.name() &lt;&lt; "\t=&gt; " &lt;&lt; realname &lt;&lt; "\t: " &lt;&lt; status &lt;&lt; '\n';
    std::free(realname);
  }
! </pre><p>
       This prints
     </p><pre class="screen">
     <code class="computeroutput">
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/ext_sgi.html gcc-16-20251123/libstdc++-v3/doc/html/manual/ext_sgi.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/ext_sgi.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/ext_sgi.html	Sun Nov 23 22:32:44 2025
***************
*** 11,17 ****
       &lt;rope&gt;
       &lt;slist&gt;
       &lt;rb_tree&gt;
!    </pre><p>are all here;
        <code class="filename">&lt;backwards/hash_map&gt;</code> and
        <code class="filename">&lt;backwards/hash_set&gt;</code>
        are deprecated but available as backwards-compatible extensions,
--- 11,17 ----
       &lt;rope&gt;
       &lt;slist&gt;
       &lt;rb_tree&gt;
! </pre><p>are all here;
        <code class="filename">&lt;backwards/hash_map&gt;</code> and
        <code class="filename">&lt;backwards/hash_set&gt;</code>
        are deprecated but available as backwards-compatible extensions,
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html gcc-16-20251123/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html	Sun Nov 23 22:32:44 2025
***************
*** 18,24 ****
     int  sum       = std::accumulate(ar,ar+50,0);
     int  sum_stuff = std::accumulate(ar,ar+50,someval);
     int  product   = std::accumulate(ar,ar+50,1,std::multiplies&lt;int&gt;());
!    </pre><p>The first call adds all the members of the array, using zero as an
        initial value for <code class="code">sum</code>.  The second does the same, but uses
        <code class="code">someval</code> as the starting value (thus, <code class="code">sum_stuff == sum +
        someval</code>).  The final call uses the second of the two signatures,
--- 18,24 ----
     int  sum       = std::accumulate(ar,ar+50,0);
     int  sum_stuff = std::accumulate(ar,ar+50,someval);
     int  product   = std::accumulate(ar,ar+50,1,std::multiplies&lt;int&gt;());
! </pre><p>The first call adds all the members of the array, using zero as an
        initial value for <code class="code">sum</code>.  The second does the same, but uses
        <code class="code">someval</code> as the starting value (thus, <code class="code">sum_stuff == sum +
        someval</code>).  The final call uses the second of the two signatures,
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/internals.html gcc-16-20251123/libstdc++-v3/doc/html/manual/internals.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/internals.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/internals.html	Sun Nov 23 22:32:44 2025
*************** OS portion of the triplet (the default),
*** 41,60 ****
     </p><p>The first file to create in this directory, should be called
  <code class="code">os_defines.h</code>.  This file contains basic macro definitions
  that are required to allow the C++ library to work with your C library.
-    </p><p>Several libstdc++ source files unconditionally define the macro
- <code class="code">_POSIX_SOURCE</code>.  On many systems, defining this macro causes
- large portions of the C library header files to be eliminated
- at preprocessing time.  Therefore, you may have to <code class="code">#undef</code> this
- macro, or define other macros (like <code class="code">_LARGEFILE_SOURCE</code> or
- <code class="code">__EXTENSIONS__</code>).  You won't know what macros to define or
- undefine at this point; you'll have to try compiling the library and
- seeing what goes wrong.  If you see errors about calling functions
- that have not been declared, look in your C library headers to see if
- the functions are declared there, and then figure out what macros you
- need to define.  You will need to add them to the
- <code class="code">CPLUSPLUS_CPP_SPEC</code> macro in the GCC configuration file for your
- target.  It will not work to simply define these macros in
- <code class="code">os_defines.h</code>.
     </p><p>At this time, there are a few libstdc++-specific macros which may be
  defined:
     </p><p><code class="code">_GLIBCXX_USE_C99_CHECK</code> may be defined to 1 to check C99
--- 41,46 ----
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/io.html gcc-16-20251123/libstdc++-v3/doc/html/manual/io.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/io.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/io.html	Sun Nov 23 22:32:44 2025
***************
*** 33,39 ****
      };
  
      extern std::ostream&amp; operator&lt;&lt; (std::ostream&amp;, MyClass&amp;);
!    </pre><p><span class="emphasis"><em><code class="filename">&lt;ios&gt;</code></em></span>
        declares the base classes for the entire I/O stream hierarchy,
        <code class="classname">std::ios_base</code> and <code class="classname">std::basic_ios&lt;charT&gt;</code>,
        the counting types <span class="type">std::streamoff</span> and <span class="type">std::streamsize</span>,
--- 33,39 ----
      };
  
      extern std::ostream&amp; operator&lt;&lt; (std::ostream&amp;, MyClass&amp;);
! </pre><p><span class="emphasis"><em><code class="filename">&lt;ios&gt;</code></em></span>
        declares the base classes for the entire I/O stream hierarchy,
        <code class="classname">std::ios_base</code> and <code class="classname">std::basic_ios&lt;charT&gt;</code>,
        the counting types <span class="type">std::streamoff</span> and <span class="type">std::streamsize</span>,
***************
*** 74,80 ****
      {
         return os &lt;&lt; c.data1() &lt;&lt; c.data2();
      }
!    </pre><p>The <span class="type">std::istream</span> and <span class="type">std::ostream</span> classes
        are the abstract parents of
        the various concrete implementations.  If you are only using the
        interfaces, then you only need to use the appropriate interface header.
--- 74,80 ----
      {
         return os &lt;&lt; c.data1() &lt;&lt; c.data2();
      }
! </pre><p>The <span class="type">std::istream</span> and <span class="type">std::ostream</span> classes
        are the abstract parents of
        the various concrete implementations.  If you are only using the
        interfaces, then you only need to use the appropriate interface header.
***************
*** 111,117 ****
  	// this is explained below
  	<span class="emphasis"><em>static ios_base::Init __foo;</em></span>    // not its real name
      }
!    </pre><p>Now, the runtime penalty mentioned previously:  the global objects
        must be initialized before any of your own code uses them; this is
        guaranteed by the standard.  Like any other global object, they must
        be initialized once and only once.  This is typically done with a
--- 111,117 ----
  	// this is explained below
  	<span class="emphasis"><em>static ios_base::Init __foo;</em></span>    // not its real name
      }
! </pre><p>Now, the runtime penalty mentioned previously:  the global objects
        must be initialized before any of your own code uses them; this is
        guaranteed by the standard.  Like any other global object, they must
        be initialized once and only once.  This is typically done with a
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/io_and_c.html gcc-16-20251123/libstdc++-v3/doc/html/manual/io_and_c.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/io_and_c.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/io_and_c.html	Sun Nov 23 22:32:44 2025
***************
*** 20,26 ****
       std::cout &lt;&lt; "Hel";
       std::printf ("lo, worl");
       std::cout &lt;&lt; "d!\n";
!    </pre><p>This must do what you think it does.
     </p><p>Alert members of the audience will immediately notice that buffering
        is going to make a hash of the output unless special steps are taken.
     </p><p>The special steps taken by libstdc++, at least for version 3.0,
--- 20,26 ----
       std::cout &lt;&lt; "Hel";
       std::printf ("lo, worl");
       std::cout &lt;&lt; "d!\n";
! </pre><p>This must do what you think it does.
     </p><p>Alert members of the audience will immediately notice that buffering
        is going to make a hash of the output unless special steps are taken.
     </p><p>The special steps taken by libstdc++, at least for version 3.0,
***************
*** 40,46 ****
       #include <span class="emphasis"><em>any of the I/O headers such as ios, iostream, etc</em></span>
  
       std::ios::sync_with_stdio(false);
!    </pre><p>You must do this before performing any I/O via the C++ stream objects.
        Once you call this, the C++ streams will operate independently of the
        (unused) C streams.  For GCC 3.x, this means that <code class="code">cout</code> and
        company will become fully buffered on their own.
--- 40,46 ----
       #include <span class="emphasis"><em>any of the I/O headers such as ios, iostream, etc</em></span>
  
       std::ios::sync_with_stdio(false);
! </pre><p>You must do this before performing any I/O via the C++ stream objects.
        Once you call this, the C++ streams will operate independently of the
        (unused) C streams.  For GCC 3.x, this means that <code class="code">cout</code> and
        company will become fully buffered on their own.
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/iterators.html gcc-16-20251123/libstdc++-v3/doc/html/manual/iterators.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/iterators.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/iterators.html	Sun Nov 23 22:32:44 2025
*************** classes.
*** 90,96 ****
       |                       |           dereference 'end'.
     beginning                end
  
!    </pre><p>See?  Everything between the boundary markers is chapter of the array.
        Simple.
     </p><p>Now think back to your junior-high school algebra course, when you
        were learning how to draw graphs.  Remember that a graph terminating
--- 90,96 ----
       |                       |           dereference 'end'.
     beginning                end
  
! </pre><p>See?  Everything between the boundary markers is chapter of the array.
        Simple.
     </p><p>Now think back to your junior-high school algebra course, when you
        were learning how to draw graphs.  Remember that a graph terminating
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/memory.html gcc-16-20251123/libstdc++-v3/doc/html/manual/memory.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/memory.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/memory.html	Sun Nov 23 22:32:44 2025
***************
*** 37,43 ****
         </p><pre class="programlisting">
  	 T*    allocate   (size_type n, const void* hint = 0);
  	 void  deallocate (T* p, size_type n);
!        </pre><p>
  	 The <code class="varname">n</code> arguments in both those
  	 functions is a <span class="emphasis"><em>count</em></span> of the number of
  	 <span class="type">T</span>'s to allocate space for, <span class="emphasis"><em>not their
--- 37,43 ----
         </p><pre class="programlisting">
  	 T*    allocate   (size_type n, const void* hint = 0);
  	 void  deallocate (T* p, size_type n);
! </pre><p>
  	 The <code class="varname">n</code> arguments in both those
  	 functions is a <span class="emphasis"><em>count</em></span> of the number of
  	 <span class="type">T</span>'s to allocate space for, <span class="emphasis"><em>not their
***************
*** 192,198 ****
        Likewise, a debugging form of whichever allocator is currently in use:
      </p><pre class="programlisting">
      std::deque &lt;int, __gnu_cxx::debug_allocator&lt;std::allocator&lt;int&gt; &gt; &gt;  debug_deque;
!       </pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.custom"></a>Custom Allocators</h4></div></div></div><p>
      Writing a portable C++ allocator would dictate that the interface
      would look much like the one specified for
      <code class="classname">allocator</code>. Additional member functions, but
--- 192,198 ----
        Likewise, a debugging form of whichever allocator is currently in use:
      </p><pre class="programlisting">
      std::deque &lt;int, __gnu_cxx::debug_allocator&lt;std::allocator&lt;int&gt; &gt; &gt;  debug_deque;
! </pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.custom"></a>Custom Allocators</h4></div></div></div><p>
      Writing a portable C++ allocator would dictate that the interface
      would look much like the one specified for
      <code class="classname">allocator</code>. Additional member functions, but
***************
*** 336,354 ****
  
  	function_taking_MyClass_pointer (ap.get());
      }
!    </pre><p>When an exception gets thrown, the instance of MyClass that's
        been created on the heap will be <code class="function">delete</code>'d as the stack is
        unwound past <code class="function">func()</code>.
     </p><p>Changing that code as follows is not <acronym class="acronym">AP</acronym>-friendly:
     </p><pre class="programlisting">
  	APMC  ap (new MyClass[22]);
!    </pre><p>You will get the same problems as you would without the use
        of <acronym class="acronym">AP</acronym>:
     </p><pre class="programlisting">
  	char*  array = new char[10];       // array new...
  	...
  	delete array;                      // ...but single-object delete
!    </pre><p>
       AP cannot tell whether the pointer you've passed at creation points
        to one or many things.  If it points to many things, you are about
        to die.  AP is trivial to write, however, so you could write your
--- 336,354 ----
  
  	function_taking_MyClass_pointer (ap.get());
      }
! </pre><p>When an exception gets thrown, the instance of MyClass that's
        been created on the heap will be <code class="function">delete</code>'d as the stack is
        unwound past <code class="function">func()</code>.
     </p><p>Changing that code as follows is not <acronym class="acronym">AP</acronym>-friendly:
     </p><pre class="programlisting">
  	APMC  ap (new MyClass[22]);
! </pre><p>You will get the same problems as you would without the use
        of <acronym class="acronym">AP</acronym>:
     </p><pre class="programlisting">
  	char*  array = new char[10];       // array new...
  	...
  	delete array;                      // ...but single-object delete
! </pre><p>
       AP cannot tell whether the pointer you've passed at creation points
        to one or many things.  If it points to many things, you are about
        to die.  AP is trivial to write, however, so you could write your
***************
*** 363,369 ****
      {
  	My_Type (My_Type const&amp;);
      };
!    </pre><p>
       Note the const keyword; the object being copied shouldn't change.
       The template class <code class="code">auto_ptr</code> (called AP here) does not
       meet this requirement.  Creating a new AP by copying an existing
--- 363,369 ----
      {
  	My_Type (My_Type const&amp;);
      };
! </pre><p>
       Note the const keyword; the object being copied shouldn't change.
       The template class <code class="code">auto_ptr</code> (called AP here) does not
       meet this requirement.  Creating a new AP by copying an existing
***************
*** 388,394 ****
      {
  	std::vector&lt; std::auto_ptr&lt;int&gt; &gt;   vec_ap_int;
      }
!    </pre><p>
  Should you try this with the checks enabled, you will see an error.
     </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.shared_ptr"></a>shared_ptr</h3></div></div></div><p>
  The shared_ptr class template stores a pointer, usually obtained via new,
--- 388,394 ----
      {
  	std::vector&lt; std::auto_ptr&lt;int&gt; &gt;   vec_ap_int;
      }
! </pre><p>
  Should you try this with the checks enabled, you will see an error.
     </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.shared_ptr"></a>shared_ptr</h3></div></div></div><p>
  The shared_ptr class template stores a pointer, usually obtained via new,
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/pairs.html gcc-16-20251123/libstdc++-v3/doc/html/manual/pairs.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/pairs.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/pairs.html	Sun Nov 23 22:32:44 2025
***************
*** 11,22 ****
        with its respective default ctor.  The other simple ctor,
     </p><pre class="programlisting">
      pair (const T1&amp; x, const T2&amp; y);
!    </pre><p>does what you think it does, <code class="code">first</code> getting <code class="code">x</code>
        and <code class="code">second</code> getting <code class="code">y</code>.
     </p><p>There is a constructor template for copying pairs of other types:
     </p><pre class="programlisting">
      template &lt;class U, class V&gt; pair (const pair&lt;U,V&gt;&amp; p);
!    </pre><p>The compiler will convert as necessary from U to T1 and from
        V to T2 in order to perform the respective initializations.
     </p><p>The comparison operators are done for you.  Equality
        of two <code class="code">pair&lt;T1,T2&gt;</code>s is defined as both <code class="code">first</code>
--- 11,22 ----
        with its respective default ctor.  The other simple ctor,
     </p><pre class="programlisting">
      pair (const T1&amp; x, const T2&amp; y);
! </pre><p>does what you think it does, <code class="code">first</code> getting <code class="code">x</code>
        and <code class="code">second</code> getting <code class="code">y</code>.
     </p><p>There is a constructor template for copying pairs of other types:
     </p><pre class="programlisting">
      template &lt;class U, class V&gt; pair (const pair&lt;U,V&gt;&amp; p);
! </pre><p>The compiler will convert as necessary from U to T1 and from
        V to T2 in order to perform the respective initializations.
     </p><p>The comparison operators are done for you.  Equality
        of two <code class="code">pair&lt;T1,T2&gt;</code>s is defined as both <code class="code">first</code>
***************
*** 30,43 ****
     </p><pre class="programlisting">
      x.first  &lt;  y.first  ||
  	( !(y.first  &lt;  x.first)  &amp;&amp;  x.second  &lt;  y.second )
!    </pre><p>The other operators are not defined using the <code class="code">rel_ops</code>
        functions above, but their semantics are the same.
     </p><p>Finally, there is a template function called <code class="function">make_pair</code>
        that takes two references-to-const objects and returns an
        instance of a pair instantiated on their respective types:
     </p><pre class="programlisting">
      pair&lt;int,MyClass&gt; p = make_pair(4,myobject);
!    </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 6. 
    Utilities
    
   </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Memory</td></tr></table></div></body></html>
\ No newline at end of file
--- 30,43 ----
     </p><pre class="programlisting">
      x.first  &lt;  y.first  ||
  	( !(y.first  &lt;  x.first)  &amp;&amp;  x.second  &lt;  y.second )
! </pre><p>The other operators are not defined using the <code class="code">rel_ops</code>
        functions above, but their semantics are the same.
     </p><p>Finally, there is a template function called <code class="function">make_pair</code>
        that takes two references-to-const objects and returns an
        instance of a pair instantiated on their respective types:
     </p><pre class="programlisting">
      pair&lt;int,MyClass&gt; p = make_pair(4,myobject);
! </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 6. 
    Utilities
    
   </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Memory</td></tr></table></div></body></html>
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/policy_data_structures_design.html gcc-16-20251123/libstdc++-v3/doc/html/manual/policy_data_structures_design.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/policy_data_structures_design.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/policy_data_structures_design.html	Sun Nov 23 22:32:44 2025
***************
*** 387,393 ****
  	{
  	...
  	}
!       </pre><p>
  	then one needs to address the following questions in the body
  	of <code class="function">some_op_sequence</code>:
        </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
--- 387,393 ----
  	{
  	...
  	}
! </pre><p>
  	then one needs to address the following questions in the body
  	of <code class="function">some_op_sequence</code>:
        </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/setup.html gcc-16-20251123/libstdc++-v3/doc/html/manual/setup.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/setup.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/setup.html	Sun Nov 23 22:32:44 2025
***************
*** 16,22 ****
     make
     make check
     make install
!    </pre><p>
       Each step is described in more detail in the following sections.
     </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.prereq"></a>Prerequisites</h2></div></div></div><p>
    Because libstdc++ is part of GCC, the primary source for
--- 16,22 ----
     make
     make check
     make install
! </pre><p>
       Each step is described in more detail in the following sections.
     </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.setup.prereq"></a>Prerequisites</h2></div></div></div><p>
    Because libstdc++ is part of GCC, the primary source for
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/streambufs.html gcc-16-20251123/libstdc++-v3/doc/html/manual/streambufs.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/streambufs.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/streambufs.html	Sun Nov 23 22:32:44 2025
***************
*** 52,58 ****
  	    &lt;&lt; std::hex &lt;&lt; 31 &lt;&lt; std::endl;
  	return 0;
      }
!    </pre><p>Try it yourself!  More examples can be found in 3.1.x code, in
        <code class="filename">include/ext/*_filebuf.h</code>, and in the article
        <a class="link" href="http://gabisoft.free.fr/articles/fltrsbf1.html" target="_top">Filtering
        Streambufs</a>
--- 52,58 ----
  	    &lt;&lt; std::hex &lt;&lt; 31 &lt;&lt; std::endl;
  	return 0;
      }
! </pre><p>Try it yourself!  More examples can be found in 3.1.x code, in
        <code class="filename">include/ext/*_filebuf.h</code>, and in the article
        <a class="link" href="http://gabisoft.free.fr/articles/fltrsbf1.html" target="_top">Filtering
        Streambufs</a>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/strings.html gcc-16-20251123/libstdc++-v3/doc/html/manual/strings.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/strings.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/strings.html	Sun Nov 23 22:32:44 2025
***************
*** 47,53 ****
       capital_s.resize(s.size());
       std::transform (s.begin(), s.end(), capital_s.begin(), ToUpper());
     }
!    </pre><p>
       <span class="emphasis"><em>Note</em></span> that these calls all
        involve the global C locale through the use of the C functions
        <code class="code">toupper</code>/<code class="code">tolower</code>.
--- 47,53 ----
       capital_s.resize(s.size());
       std::transform (s.begin(), s.end(), capital_s.begin(), ToUpper());
     }
! </pre><p>
       <span class="emphasis"><em>Note</em></span> that these calls all
        involve the global C locale through the use of the C functions
        <code class="code">toupper</code>/<code class="code">tolower</code>.
***************
*** 82,88 ****
     </p><pre class="programlisting">
       std::transform (s.begin(), s.end(), capital_s.begin(),
                       [](unsigned char c) { return std::tolower(c); });
!    </pre><p>Another common operation is trimming off excess whitespace.  Much
        like transformations, this task is trivial with the use of string's
        <code class="code">find</code> family.  These examples are broken into multiple
        statements for readability:
--- 82,88 ----
     </p><pre class="programlisting">
       std::transform (s.begin(), s.end(), capital_s.begin(),
                       [](unsigned char c) { return std::tolower(c); });
! </pre><p>Another common operation is trimming off excess whitespace.  Much
        like transformations, this task is trivial with the use of string's
        <code class="code">find</code> family.  These examples are broken into multiple
        statements for readability:
*************** stringtok(Container &amp;container, stri
*** 273,279 ****
        to GCC 3.4 the following alternative can be used instead
     </p><pre class="programlisting">
        std::string(str.data(), str.size()).swap(str);
!    </pre><p>This is similar to the idiom for reducing
        a <code class="code">vector</code>'s memory usage
        (see <a class="link" href="../faq.html#faq.size_equals_capacity" title="7.8.">this FAQ
        entry</a>) but the regular copy constructor cannot be used
--- 273,279 ----
        to GCC 3.4 the following alternative can be used instead
     </p><pre class="programlisting">
        std::string(str.data(), str.size()).swap(str);
! </pre><p>This is similar to the idiom for reducing
        a <code class="code">vector</code>'s memory usage
        (see <a class="link" href="../faq.html#faq.size_equals_capacity" title="7.8.">this FAQ
        entry</a>) but the regular copy constructor cannot be used
*************** stringtok(Container &amp;container, stri
*** 347,353 ****
  
     If you replace CString with string in the above function, the
     performance is O(n).
!    </pre><p>Joe Buck also pointed out some other things to keep in mind when
        comparing CString and the Standard string class:
     </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>CString permits access to its internal representation; coders
  	     who exploited that may have problems moving to <code class="code">string</code>.
--- 347,353 ----
  
     If you replace CString with string in the above function, the
     performance is O(n).
! </pre><p>Joe Buck also pointed out some other things to keep in mind when
        comparing CString and the Standard string class:
     </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>CString permits access to its internal representation; coders
  	     who exploited that may have problems moving to <code class="code">string</code>.
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/support.html gcc-16-20251123/libstdc++-v3/doc/html/manual/support.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/support.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/support.html	Sun Nov 23 22:32:44 2025
***************
*** 98,104 ****
         static const bool tinyness_before;
         static const float_round_style round_style;
       };
!    </pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.support.types.null"></a>NULL</h3></div></div></div><p>
       The only change that might affect people is the type of
       <code class="constant">NULL</code>: while it is required to be a macro,
       the definition of that macro is <span class="emphasis"><em>not</em></span> allowed
--- 98,104 ----
         static const bool tinyness_before;
         static const float_round_style round_style;
       };
! </pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="std.support.types.null"></a>NULL</h3></div></div></div><p>
       The only change that might affect people is the type of
       <code class="constant">NULL</code>: while it is required to be a macro,
       the definition of that macro is <span class="emphasis"><em>not</em></span> allowed
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/termination.html gcc-16-20251123/libstdc++-v3/doc/html/manual/termination.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/termination.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/termination.html	Sun Nov 23 22:32:44 2025
*************** int main(int argc)
*** 121,127 ****
       <code class="filename">&lt;cstdlib&gt;</code>, and call
     </p><pre class="programlisting">
       std::set_terminate(std::abort);
!    </pre><p>
       After this, all calls to <code class="function">terminate</code> will use
       <code class="function">abort</code> as the terminate handler.
     </p><p>
--- 121,127 ----
       <code class="filename">&lt;cstdlib&gt;</code>, and call
     </p><pre class="programlisting">
       std::set_terminate(std::abort);
! </pre><p>
       After this, all calls to <code class="function">terminate</code> will use
       <code class="function">abort</code> as the terminate handler.
     </p><p>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/test.html gcc-16-20251123/libstdc++-v3/doc/html/manual/test.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/test.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/test.html	Sun Nov 23 22:32:44 2025
*************** regressions, ABI, and performance.
*** 17,23 ****
    of the C++ standard (ISO 14882) are files within the following
    directories:
  
!    </p><pre class="programlisting">
      17_intro
      18_support
      19_diagnostics
--- 17,23 ----
    of the C++ standard (ISO 14882) are files within the following
    directories:
  
! </p><pre class="programlisting">
      17_intro
      18_support
      19_diagnostics
*************** regressions, ABI, and performance.
*** 32,38 ****
      28_regex
      29_atomics
      30_threads
!    </pre><p>
  </p><p>
        In addition, the following directories include test files:
  
--- 32,38 ----
      28_regex
      29_atomics
      30_threads
! </pre><p>
  </p><p>
        In addition, the following directories include test files:
  
*************** regressions, ABI, and performance.
*** 83,89 ****
        This test case expects some kind of interactive input in order
        to finish or pass. At the moment, the interactive tests are not
        run by default. Instead, they are run by hand, like:
!       <pre class="programlisting">
  g++ 27_io/objects/char/3_xin.cc
  cat 27_io/objects/char/3_xin.in | a.out</pre></dd><dt><span class="term"><code class="filename">.in</code></span></dt><dd>
        This file contains the expected input for the corresponding <span class="emphasis"><em>
--- 83,89 ----
        This test case expects some kind of interactive input in order
        to finish or pass. At the moment, the interactive tests are not
        run by default. Instead, they are run by hand, like:
! <pre class="programlisting">
  g++ 27_io/objects/char/3_xin.cc
  cat 27_io/objects/char/3_xin.in | a.out</pre></dd><dt><span class="term"><code class="filename">.in</code></span></dt><dd>
        This file contains the expected input for the corresponding <span class="emphasis"><em>
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 198,204 ****
        Also, here is an example of how to run the libstdc++ testsuite
        for a multilibed build directory with different ABI settings:
  
!  </p><pre class="programlisting">
      make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board \"unix{-mabi=32,,-mabi=64}\"'
  </pre><p>
      </p><p>
--- 198,204 ----
        Also, here is an example of how to run the libstdc++ testsuite
        for a multilibed build directory with different ABI settings:
  
! </p><pre class="programlisting">
      make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board \"unix{-mabi=32,,-mabi=64}\"'
  </pre><p>
      </p><p>
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 210,218 ****
        run programs on, e.g. <code class="code">x86_64-pc-linux-gnu</code>, as a few tests
        still execute the code they build.  Here's an example of how to run the
        testsuite with libstdc++ in freestanding mode:
!       </p><pre class="programlisting">
      make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board=unix/-ffreestanding'
!       </pre><p>
      </p><p>
        You can run the tests with a compiler and library that have
        already been installed.  Make sure that the compiler (e.g.,
--- 210,218 ----
        run programs on, e.g. <code class="code">x86_64-pc-linux-gnu</code>, as a few tests
        still execute the code they build.  Here's an example of how to run the
        testsuite with libstdc++ in freestanding mode:
! </p><pre class="programlisting">
      make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board=unix/-ffreestanding'
! </pre><p>
      </p><p>
        You can run the tests with a compiler and library that have
        already been installed.  Make sure that the compiler (e.g.,
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/unordered_associative.html gcc-16-20251123/libstdc++-v3/doc/html/manual/unordered_associative.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/unordered_associative.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/unordered_associative.html	Sun Nov 23 22:32:44 2025
***************
*** 90,93 ****
            struct __is_fast_hash&lt;hasher&gt; : std::false_type
            { };
        }
!     </pre></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Associative </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Interacting with C</td></tr></table></div></body></html>
\ No newline at end of file
--- 90,93 ----
            struct __is_fast_hash&lt;hasher&gt; : std::false_type
            { };
        }
! </pre></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Associative </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Interacting with C</td></tr></table></div></body></html>
\ No newline at end of file
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/using_concurrency.html gcc-16-20251123/libstdc++-v3/doc/html/manual/using_concurrency.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/using_concurrency.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/using_concurrency.html	Sun Nov 23 22:32:44 2025
*************** gcc version 4.1.2 20070925 (Red Hat 4.1.
*** 166,172 ****
        t1.join();
        t2.join();
      }
!       </pre><p>For further details of the C++11 memory model see Hans-J. Boehm's
        <a class="link" href="https://www.hboehm.info/c++mm/" target="_top">Threads
        and memory model for C++</a> pages, particularly the <a class="link" href="https://www.hboehm.info/c++mm/threadsintro.html" target="_top">introduction</a>
        and <a class="link" href="https://www.hboehm.info/c++mm/user-faq.html" target="_top">FAQ</a>.
--- 166,172 ----
        t1.join();
        t2.join();
      }
! </pre><p>For further details of the C++11 memory model see Hans-J. Boehm's
        <a class="link" href="https://www.hboehm.info/c++mm/" target="_top">Threads
        and memory model for C++</a> pages, particularly the <a class="link" href="https://www.hboehm.info/c++mm/threadsintro.html" target="_top">introduction</a>
        and <a class="link" href="https://www.hboehm.info/c++mm/user-faq.html" target="_top">FAQ</a>.
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/html/manual/using_exceptions.html gcc-16-20251123/libstdc++-v3/doc/html/manual/using_exceptions.html
*** gcc-16-20251116/libstdc++-v3/doc/html/manual/using_exceptions.html	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/html/manual/using_exceptions.html	Sun Nov 23 22:32:44 2025
*************** is called.
*** 330,336 ****
  	The Open Group/The Institute of Electrical and Electronics
  	Engineers, Inc.
        . </span></p></div><div class="biblioentry"><a id="id-1.3.3.4.9.10.3"></a><p><span class="title"><em>
! 	<a class="link" href="https://www.boost.org/community/error_handling.html" target="_top">
  	Error and Exception Handling
  	</a>
        </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername">
--- 330,336 ----
  	The Open Group/The Institute of Electrical and Electronics
  	Engineers, Inc.
        . </span></p></div><div class="biblioentry"><a id="id-1.3.3.4.9.10.3"></a><p><span class="title"><em>
! 	<a class="link" href="https://www.boost.org/doc/libs/1_34_1/more/error_handling.html" target="_top">
  	Error and Exception Handling
  	</a>
        </em>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername">
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/faq.xml gcc-16-20251123/libstdc++-v3/doc/xml/faq.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/faq.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/faq.xml	Sun Nov 23 22:32:44 2025
***************
*** 551,581 ****
        <constant>_XOPEN_SOURCE</constant> and <constant>_GNU_SOURCE</constant> are always defined?
      </para>
    </question>
    <answer xml:id="a-predefined">
!       <para>On Solaris, <command>g++</command> (but not <command>gcc</command>)
           always defines the preprocessor macro
! 	 <constant>_XOPEN_SOURCE</constant>.  On GNU/Linux, the same happens
!          with <constant>_GNU_SOURCE</constant>.  (This is not an exhaustive list;
           other macros and other platforms are also affected.)
        </para>
        <para>These macros are typically used in C library headers, guarding new
!          versions of functions from their older versions.  The C++98 standard
!          library includes the C standard library, but it requires the C90
!          version, which for backwards-compatibility reasons is often not the
!          default for many vendors.
        </para>
!       <para>More to the point, the C++ standard requires behavior which is only
!          available on certain platforms after certain symbols are defined.
           Usually the issue involves I/O-related typedefs.  In order to
!          ensure correctness, the compiler simply predefines those symbols.
        </para>
!       <para>Note that it's not enough to <literal>#define</literal> them only when the library is
!          being built (during installation).  Since we don't have an 'export'
!          keyword, much of the library exists as headers, which means that
!          the symbols must also be defined as your programs are parsed and
           compiled.
        </para>
!       <para>To see which symbols are defined, look for
           <varname>CPLUSPLUS_CPP_SPEC</varname> in
           the gcc config headers for your target (and try changing them to
           see what happens when building complicated code).  You can also run
--- 551,584 ----
        <constant>_XOPEN_SOURCE</constant> and <constant>_GNU_SOURCE</constant> are always defined?
      </para>
    </question>
+ 
    <answer xml:id="a-predefined">
!       <para>On GNU/Linux, <command>g++</command> (but not <command>gcc</command>)
           always defines the preprocessor macro
! 	 <constant>_GNU_SOURCE</constant>.  On Solaris, the same happens
!          with <constant>_XOPEN_SOURCE</constant>.  (This is not an exhaustive list;
           other macros and other platforms are also affected.)
        </para>
        <para>These macros are typically used in C library headers, guarding new
!          versions of functions from their older versions.  Historically,
! 	 libstdc++ needed these macros to ensure that the headers provided by
! 	 the C library declared all the functions that libstdc++ relies on.
! 	 For example, functions for working with <code>long long</code>,
! 	 such as <function>strtoll</function>, are needed by libstdc++ but
! 	 were not part of the C90 standard.
        </para>
!       <para>Additionally the C++ standard requires behavior which is only
!          available on certain platforms after certain macros are defined.
           Usually the issue involves I/O-related typedefs.  In order to
!          ensure correctness, the compiler simply predefines those macros.
        </para>
!       <para>Note that it's not enough to <literal>#define</literal> them
! 	 only when the library is being built (during installation).
!          Much of the library exists as headers, which means that
!          the macros must also be defined as your programs are parsed and
           compiled.
        </para>
!       <para>To see which macros are defined, look for
           <varname>CPLUSPLUS_CPP_SPEC</varname> in
           the gcc config headers for your target (and try changing them to
           see what happens when building complicated code).  You can also run
***************
*** 813,819 ****
      Executing a sequence like this would fail:
      </para>
  
!     <programlisting>
      #include &lt;fstream&gt;
      ...
      std::fstream  fs("a_file");
--- 816,822 ----
      Executing a sequence like this would fail:
      </para>
  
! <programlisting>
      #include &lt;fstream&gt;
      ...
      std::fstream  fs("a_file");
***************
*** 822,828 ****
      // .
      fs.close();
      fs.open("a_new_file");
!     </programlisting>
  
      <para>
      All operations on the re-opened <varname>fs</varname> would fail, or at
--- 825,831 ----
      // .
      fs.close();
      fs.open("a_new_file");
! </programlisting>
  
      <para>
      All operations on the re-opened <varname>fs</varname> would fail, or at
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/abi.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/abi.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/abi.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/abi.xml	Sun Nov 23 22:32:44 2025
*************** compatible.
*** 282,287 ****
--- 282,289 ----
      <listitem><para>GCC 13.1.0: libstdc++.so.6.0.31</para></listitem>
      <listitem><para>GCC 13.2.0: libstdc++.so.6.0.32</para></listitem>
      <listitem><para>GCC 14.1.0: libstdc++.so.6.0.33</para></listitem>
+     <listitem><para>GCC 15.1.0: libstdc++.so.6.0.34</para></listitem>
+     <listitem><para>GCC 16.1.0: libstdc++.so.6.0.34</para></listitem>
      </itemizedlist>
      <para>
        Note 1: Error should be libstdc++.so.3.0.3.
*************** compatible.
*** 361,366 ****
--- 363,370 ----
      <listitem><para>GCC 13.1.0: GLIBCXX_3.4.31, CXXABI_1.3.14</para></listitem>
      <listitem><para>GCC 13.2.0: GLIBCXX_3.4.32, CXXABI_1.3.14</para></listitem>
      <listitem><para>GCC 14.1.0: GLIBCXX_3.4.33, CXXABI_1.3.15</para></listitem>
+     <listitem><para>GCC 15.1.0: GLIBCXX_3.4.34, CXXABI_1.3.15 (CXXABI_1.3.16 for RISC-V only)</para></listitem>
+     <listitem><para>GCC 16.1.0: GLIBCXX_3.4.34, CXXABI_1.3.17</para></listitem>
  
      </itemizedlist>
      </listitem>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/allocator.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/allocator.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/allocator.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/allocator.xml	Sun Nov 23 22:32:44 2025
***************
*** 52,61 ****
  	 typedefs, member functions, etc), but the two which concern us most
  	 are:
         </para>
!        <programlisting>
  	 T*    allocate   (size_type n, const void* hint = 0);
  	 void  deallocate (T* p, size_type n);
!        </programlisting>
  
         <para>
  	 The <varname>n</varname> arguments in both those
--- 52,61 ----
  	 typedefs, member functions, etc), but the two which concern us most
  	 are:
         </para>
! <programlisting>
  	 T*    allocate   (size_type n, const void* hint = 0);
  	 void  deallocate (T* p, size_type n);
! </programlisting>
  
         <para>
  	 The <varname>n</varname> arguments in both those
***************
*** 291,304 ****
        (but non-portable) method of specifying that only <function>malloc</function> or <function>free</function>
        should be used instead of the default node allocator is:
     </para>
!    <programlisting>
      std::list &lt;int, __gnu_cxx::malloc_allocator&lt;int&gt; &gt;  malloc_list;</programlisting>
      <para>
        Likewise, a debugging form of whichever allocator is currently in use:
      </para>
!       <programlisting>
      std::deque &lt;int, __gnu_cxx::debug_allocator&lt;std::allocator&lt;int&gt; &gt; &gt;  debug_deque;
!       </programlisting>
  </section>
  
  <section xml:id="allocator.custom"><info><title>Custom Allocators</title></info>
--- 291,304 ----
        (but non-portable) method of specifying that only <function>malloc</function> or <function>free</function>
        should be used instead of the default node allocator is:
     </para>
! <programlisting>
      std::list &lt;int, __gnu_cxx::malloc_allocator&lt;int&gt; &gt;  malloc_list;</programlisting>
      <para>
        Likewise, a debugging form of whichever allocator is currently in use:
      </para>
! <programlisting>
      std::deque &lt;int, __gnu_cxx::debug_allocator&lt;std::allocator&lt;int&gt; &gt; &gt;  debug_deque;
! </programlisting>
  </section>
  
  <section xml:id="allocator.custom"><info><title>Custom Allocators</title></info>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/auto_ptr.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/auto_ptr.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/auto_ptr.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/auto_ptr.xml	Sun Nov 23 22:32:44 2025
***************
*** 36,42 ****
       presence of exceptions.  That's <emphasis>all</emphasis>.  This
       code is AP-friendly:
     </para>
!    <programlisting>
      // Not a recommend naming scheme, but good for web-based FAQs.
      typedef std::auto_ptr&lt;MyClass&gt;  APMC;
  
--- 36,42 ----
       presence of exceptions.  That's <emphasis>all</emphasis>.  This
       code is AP-friendly:
     </para>
! <programlisting>
      // Not a recommend naming scheme, but good for web-based FAQs.
      typedef std::auto_ptr&lt;MyClass&gt;  APMC;
  
***************
*** 51,74 ****
  
  	function_taking_MyClass_pointer (ap.get());
      }
!    </programlisting>
     <para>When an exception gets thrown, the instance of MyClass that's
        been created on the heap will be <function>delete</function>'d as the stack is
        unwound past <function>func()</function>.
     </para>
     <para>Changing that code as follows is not <acronym>AP</acronym>-friendly:
     </para>
!    <programlisting>
  	APMC  ap (new MyClass[22]);
!    </programlisting>
     <para>You will get the same problems as you would without the use
        of <acronym>AP</acronym>:
     </para>
!    <programlisting>
  	char*  array = new char[10];       // array new...
  	...
  	delete array;                      // ...but single-object delete
!    </programlisting>
     <para>
       AP cannot tell whether the pointer you've passed at creation points
        to one or many things.  If it points to many things, you are about
--- 51,74 ----
  
  	function_taking_MyClass_pointer (ap.get());
      }
! </programlisting>
     <para>When an exception gets thrown, the instance of MyClass that's
        been created on the heap will be <function>delete</function>'d as the stack is
        unwound past <function>func()</function>.
     </para>
     <para>Changing that code as follows is not <acronym>AP</acronym>-friendly:
     </para>
! <programlisting>
  	APMC  ap (new MyClass[22]);
! </programlisting>
     <para>You will get the same problems as you would without the use
        of <acronym>AP</acronym>:
     </para>
! <programlisting>
  	char*  array = new char[10];       // array new...
  	...
  	delete array;                      // ...but single-object delete
! </programlisting>
     <para>
       AP cannot tell whether the pointer you've passed at creation points
        to one or many things.  If it points to many things, you are about
***************
*** 87,98 ****
        described in the standard library require their contained types
        to have, among other things, a copy constructor like this:
    </para>
!    <programlisting>
      struct My_Type
      {
  	My_Type (My_Type const&amp;);
      };
!    </programlisting>
     <para>
       Note the const keyword; the object being copied shouldn't change.
       The template class <code>auto_ptr</code> (called AP here) does not
--- 87,98 ----
        described in the standard library require their contained types
        to have, among other things, a copy constructor like this:
    </para>
! <programlisting>
      struct My_Type
      {
  	My_Type (My_Type const&amp;);
      };
! </programlisting>
     <para>
       Note the const keyword; the object being copied shouldn't change.
       The template class <code>auto_ptr</code> (called AP here) does not
***************
*** 113,119 ****
        in to this implementation will issue an error if you try to
        compile code like this:
     </para>
!    <programlisting>
      #include &lt;vector&gt;
      #include &lt;memory&gt;
  
--- 113,119 ----
        in to this implementation will issue an error if you try to
        compile code like this:
     </para>
! <programlisting>
      #include &lt;vector&gt;
      #include &lt;memory&gt;
  
***************
*** 121,127 ****
      {
  	std::vector&lt; std::auto_ptr&lt;int&gt; &gt;   vec_ap_int;
      }
!    </programlisting>
     <para>
  Should you try this with the checks enabled, you will see an error.
     </para>
--- 121,127 ----
      {
  	std::vector&lt; std::auto_ptr&lt;int&gt; &gt;   vec_ap_int;
      }
! </programlisting>
     <para>
  Should you try this with the checks enabled, you will see an error.
     </para>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml	Sun Nov 23 22:32:44 2025
*************** and  <filename class="headerfile">&lt;un
*** 127,133 ****
  	 namespace. For maximum portability, consider defining a namespace
  	 alias to use to talk about extensions, e.g.:
        </para>
!       <programlisting>
        #ifdef __GNUC__
        #if __GNUC__ &lt; 3
  	#include &lt;hash_map.h&gt;
--- 127,133 ----
  	 namespace. For maximum portability, consider defining a namespace
  	 alias to use to talk about extensions, e.g.:
        </para>
! <programlisting>
        #ifdef __GNUC__
        #if __GNUC__ &lt; 3
  	#include &lt;hash_map.h&gt;
*************** and  <filename class="headerfile">&lt;un
*** 145,151 ****
        #endif
  
        extension::hash_map&lt;int,int&gt; my_map;
!       </programlisting>
        <para>This is a bit cleaner than defining typedefs for all the
  	 instantiations you might need.
        </para>
--- 145,151 ----
        #endif
  
        extension::hash_map&lt;int,int&gt; my_map;
! </programlisting>
        <para>This is a bit cleaner than defining typedefs for all the
  	 instantiations you might need.
        </para>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/build_hacking.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/build_hacking.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/build_hacking.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/build_hacking.xml	Sun Nov 23 22:32:44 2025
*************** in the build directory starts the build
*** 173,191 ****
      we can arrange the contents however we like.  As of this writing,
      <filename>acinclude.m4</filename> is arranged as follows:
    </para>
!   <programlisting>
      GLIBCXX_CHECK_HOST
      GLIBCXX_TOPREL_CONFIGURE
      GLIBCXX_CONFIGURE
!   </programlisting>
    <para>
      All the major variable "discovery" is done here.
      <varname>CXX</varname>, multilibs,
      etc.
    </para>
!   <programlisting>
      fragments included from elsewhere
!   </programlisting>
    <para>
      Right now, "fragments" == "the math/linkage bits".
    </para>
--- 173,191 ----
      we can arrange the contents however we like.  As of this writing,
      <filename>acinclude.m4</filename> is arranged as follows:
    </para>
! <programlisting>
      GLIBCXX_CHECK_HOST
      GLIBCXX_TOPREL_CONFIGURE
      GLIBCXX_CONFIGURE
! </programlisting>
    <para>
      All the major variable "discovery" is done here.
      <varname>CXX</varname>, multilibs,
      etc.
    </para>
! <programlisting>
      fragments included from elsewhere
! </programlisting>
    <para>
      Right now, "fragments" == "the math/linkage bits".
    </para>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/containers.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/containers.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/containers.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/containers.xml	Sun Nov 23 22:32:44 2025
***************
*** 86,94 ****
       Section [23.1.2], Table 69, of the C++ standard lists this
       function for all of the associative containers (map, set, etc):
     </para>
!    <programlisting>
        a.insert(p,t);
!    </programlisting>
     <para>
       where 'p' is an iterator into the container 'a', and 't' is the
       item to insert.  The standard says that <quote><code>t</code> is
--- 86,94 ----
       Section [23.1.2], Table 69, of the C++ standard lists this
       function for all of the associative containers (map, set, etc):
     </para>
! <programlisting>
        a.insert(p,t);
! </programlisting>
     <para>
       where 'p' is an iterator into the container 'a', and 't' is the
       item to insert.  The standard says that <quote><code>t</code> is
***************
*** 196,202 ****
  	No, you cannot write code of the form
        </para>
        <!-- Careful, the leading spaces in PRE show up directly. -->
!    <programlisting>
        #include &lt;bitset&gt;
  
        void foo (size_t n)
--- 196,202 ----
  	No, you cannot write code of the form
        </para>
        <!-- Careful, the leading spaces in PRE show up directly. -->
! <programlisting>
        #include &lt;bitset&gt;
  
        void foo (size_t n)
***************
*** 204,210 ****
  	  std::bitset&lt;n&gt;   bits;
  	  ....
        }
!    </programlisting>
     <para>
       because <code>n</code> must be known at compile time.  Your
       compiler is correct; it is not a bug.  That's the way templates
--- 204,210 ----
  	  std::bitset&lt;n&gt;   bits;
  	  ....
        }
! </programlisting>
     <para>
       because <code>n</code> must be known at compile time.  Your
       compiler is correct; it is not a bug.  That's the way templates
***************
*** 314,330 ****
       For now you can simply make a temporary string object using the
       constructor expression:
     </para>
!    <programlisting>
        std::bitset&lt;5&gt; b ( std::string("10110") );
!    </programlisting>
  
     <para>
       instead of
     </para>
  
!     <programlisting>
        std::bitset&lt;5&gt; b ( "10110" );    // invalid
!     </programlisting>
      </section>
    </section>
  
--- 314,330 ----
       For now you can simply make a temporary string object using the
       constructor expression:
     </para>
! <programlisting>
        std::bitset&lt;5&gt; b ( std::string("10110") );
! </programlisting>
  
     <para>
       instead of
     </para>
  
! <programlisting>
        std::bitset&lt;5&gt; b ( "10110" );    // invalid
! </programlisting>
      </section>
    </section>
  
***************
*** 425,431 ****
        cached.
        The trait can be specialized for user-defined hash functions like so:
      </para>
!     <programlisting>
        #include &lt;unordered_set&gt;
  
        struct hasher
--- 425,431 ----
        cached.
        The trait can be specialized for user-defined hash functions like so:
      </para>
! <programlisting>
        #include &lt;unordered_set&gt;
  
        struct hasher
***************
*** 443,449 ****
            struct __is_fast_hash&lt;hasher&gt; : std::false_type
            { };
        }
!     </programlisting>
    </section>
  </section>
  
--- 443,449 ----
            struct __is_fast_hash&lt;hasher&gt; : std::false_type
            { };
        }
! </programlisting>
    </section>
  </section>
  
***************
*** 492,500 ****
     <para>
       The result is that if all your algorithm calls look like
     </para>
!    <programlisting>
     std::transform(beginof(foo), endof(foo), beginof(foo), SomeFunction);
!    </programlisting>
     <para>
       then the type of foo can change from an array of ints to a vector
       of ints to a deque of ints and back again, without ever changing
--- 492,500 ----
     <para>
       The result is that if all your algorithm calls look like
     </para>
! <programlisting>
     std::transform(beginof(foo), endof(foo), beginof(foo), SomeFunction);
! </programlisting>
     <para>
       then the type of foo can change from an array of ints to a vector
       of ints to a deque of ints and back again, without ever changing
*************** template&lt;typename T, unsigned int sz&
*** 545,553 ****
     <para>
       Second, the line
     </para>
!    <programlisting>
      inline unsigned int lengthof (T (&amp;)[sz]) { return sz; }
!    </programlisting>
     <para>
       looks just weird!  Hint:  unused parameters can be left nameless.
     </para>
--- 545,553 ----
     <para>
       Second, the line
     </para>
! <programlisting>
      inline unsigned int lengthof (T (&amp;)[sz]) { return sz; }
! </programlisting>
     <para>
       looks just weird!  Hint:  unused parameters can be left nameless.
     </para>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/diagnostics.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/diagnostics.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/diagnostics.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/diagnostics.xml	Sun Nov 23 22:32:44 2025
***************
*** 64,70 ****
      place).  It's good to remember that you can add your own data to
      these exceptions when extending the hierarchy:
     </para>
!    <programlisting>
     struct My_Exception : public std::runtime_error
     {
       public:
--- 64,70 ----
      place).  It's good to remember that you can add your own data to
      these exceptions when extending the hierarchy:
     </para>
! <programlisting>
     struct My_Exception : public std::runtime_error
     {
       public:
***************
*** 76,82 ****
         int    e;
         DBID   id;     // some user-defined type
     };
!    </programlisting>
  
    </section>
  </section>
--- 76,82 ----
         int    e;
         DBID   id;     // some user-defined type
     };
! </programlisting>
  
    </section>
  </section>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/extensions.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/extensions.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/extensions.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/extensions.xml	Sun Nov 23 22:32:44 2025
*************** extensions, be aware of two things:
*** 161,173 ****
     do no range-checking.  If we call them member functions of an instantiation
     of <code>bitset&lt;N&gt;</code>, then their names and signatures are:
  </para>
!    <programlisting>
     bitset&lt;N&gt;&amp;   _Unchecked_set   (size_t pos);
     bitset&lt;N&gt;&amp;   _Unchecked_set   (size_t pos, int val);
     bitset&lt;N&gt;&amp;   _Unchecked_reset (size_t pos);
     bitset&lt;N&gt;&amp;   _Unchecked_flip  (size_t pos);
     bool         _Unchecked_test  (size_t pos);
!    </programlisting>
     <para>Note that these may in fact be removed in the future, although we have
     no present plans to do so (and there doesn't seem to be any immediate
     reason to).
--- 161,173 ----
     do no range-checking.  If we call them member functions of an instantiation
     of <code>bitset&lt;N&gt;</code>, then their names and signatures are:
  </para>
! <programlisting>
     bitset&lt;N&gt;&amp;   _Unchecked_set   (size_t pos);
     bitset&lt;N&gt;&amp;   _Unchecked_set   (size_t pos, int val);
     bitset&lt;N&gt;&amp;   _Unchecked_reset (size_t pos);
     bitset&lt;N&gt;&amp;   _Unchecked_flip  (size_t pos);
     bool         _Unchecked_test  (size_t pos);
! </programlisting>
     <para>Note that these may in fact be removed in the future, although we have
     no present plans to do so (and there doesn't seem to be any immediate
     reason to).
*************** extensions, be aware of two things:
*** 181,187 ****
     the index of the first "on" bit, and the index of the first
     "on" bit that is after <code>prev</code>, respectively:
  </para>
!    <programlisting>
     size_t _Find_first() const;
     size_t _Find_next (size_t prev) const;</programlisting>
  <para>The same caveat given for the _Unchecked_* functions applies here also.
--- 181,187 ----
     the index of the first "on" bit, and the index of the first
     "on" bit that is after <code>prev</code>, respectively:
  </para>
! <programlisting>
     size_t _Find_first() const;
     size_t _Find_next (size_t prev) const;</programlisting>
  <para>The same caveat given for the _Unchecked_* functions applies here also.
*************** extensions, be aware of two things:
*** 202,214 ****
     </para>
  
     <para>The SGI headers</para>
!    <programlisting>
       &lt;hash_map&gt;
       &lt;hash_set&gt;
       &lt;rope&gt;
       &lt;slist&gt;
       &lt;rb_tree&gt;
!    </programlisting>
     <para>are all here;
        <filename class="headerfile">&lt;backwards/hash_map&gt;</filename> and
        <filename class="headerfile">&lt;backwards/hash_set&gt;</filename>
--- 202,214 ----
     </para>
  
     <para>The SGI headers</para>
! <programlisting>
       &lt;hash_map&gt;
       &lt;hash_set&gt;
       &lt;rope&gt;
       &lt;slist&gt;
       &lt;rb_tree&gt;
! </programlisting>
     <para>are all here;
        <filename class="headerfile">&lt;backwards/hash_map&gt;</filename> and
        <filename class="headerfile">&lt;backwards/hash_set&gt;</filename>
*************** get_temporary_buffer(5, (int*)0);
*** 346,359 ****
     additional signatures return void, but take a final parameter by
     reference to which they assign their results, e.g.,
  </para>
!    <programlisting>
     void count (first, last, value, n);</programlisting>
  <para>25.2 (mutating algorithms) is extended with two families of signatures,
     random_sample and random_sample_n.
  </para>
  <para>25.2.1 (copy) is extended with
  </para>
!    <programlisting>
     copy_n (_InputIter first, _Size count, _OutputIter result);</programlisting>
  <para>which copies the first 'count' elements at 'first' into 'result'.
  </para>
--- 346,359 ----
     additional signatures return void, but take a final parameter by
     reference to which they assign their results, e.g.,
  </para>
! <programlisting>
     void count (first, last, value, n);</programlisting>
  <para>25.2 (mutating algorithms) is extended with two families of signatures,
     random_sample and random_sample_n.
  </para>
  <para>25.2.1 (copy) is extended with
  </para>
! <programlisting>
     copy_n (_InputIter first, _Size count, _OutputIter result);</programlisting>
  <para>which copies the first 'count' elements at 'first' into 'result'.
  </para>
*************** get_temporary_buffer(5, (int*)0);
*** 367,373 ****
     </itemizedlist>
  <para>25.3.8 (lexicographical_compare) is extended with
  </para>
!    <programlisting>
     lexicographical_compare_3way(_InputIter1 first1, _InputIter1 last1,
  				 _InputIter2 first2, _InputIter2 last2)</programlisting>
  <para>which does... what?
--- 367,373 ----
     </itemizedlist>
  <para>25.3.8 (lexicographical_compare) is extended with
  </para>
! <programlisting>
     lexicographical_compare_3way(_InputIter1 first1, _InputIter1 last1,
  				 _InputIter2 first2, _InputIter2 last2)</programlisting>
  <para>which does... what?
*************** get_temporary_buffer(5, (int*)0);
*** 382,388 ****
  <para>26.4, the generalized numeric operations such as <code>accumulate</code>,
     are extended with the following functions:
  </para>
!    <programlisting>
     power (x, n);
     power (x, n, monoid_operation);</programlisting>
  <para>Returns, in FORTRAN syntax, "<code>x ** n</code>" where
--- 382,388 ----
  <para>26.4, the generalized numeric operations such as <code>accumulate</code>,
     are extended with the following functions:
  </para>
! <programlisting>
     power (x, n);
     power (x, n, monoid_operation);</programlisting>
  <para>Returns, in FORTRAN syntax, "<code>x ** n</code>" where
*************** get_temporary_buffer(5, (int*)0);
*** 399,405 ****
     That is, it assigns <code>value</code> to <code>*first</code>,
     <code>value + 1</code> to<code> *(first + 1)</code> and so on."
  </para>
!    <programlisting>
     void iota(_ForwardIter first, _ForwardIter last, _Tp value);</programlisting>
  <para>The <code>iota</code> function is included in the ISO C++ 2011 standard.
  </para>
--- 399,405 ----
     That is, it assigns <code>value</code> to <code>*first</code>,
     <code>value + 1</code> to<code> *(first + 1)</code> and so on."
  </para>
! <programlisting>
     void iota(_ForwardIter first, _ForwardIter last, _Tp value);</programlisting>
  <para>The <code>iota</code> function is included in the ISO C++ 2011 standard.
  </para>
*************** get_temporary_buffer(5, (int*)0);
*** 523,529 ****
      Probably the only time you'll be interested in demangling at runtime
      is when you're seeing <code>typeid</code> strings in RTTI.  For example:
    </para>
!    <programlisting>
  #include &lt;iostream&gt;
  #include &lt;cstdlib&gt;
  #include &lt;cxxabi.h&gt;
--- 523,529 ----
      Probably the only time you'll be interested in demangling at runtime
      is when you're seeing <code>typeid</code> strings in RTTI.  For example:
    </para>
! <programlisting>
  #include &lt;iostream&gt;
  #include &lt;cstdlib&gt;
  #include &lt;cxxabi.h&gt;
*************** int main()
*** 546,552 ****
    std::cout &lt;&lt; ti.name() &lt;&lt; "\t=&gt; " &lt;&lt; realname &lt;&lt; "\t: " &lt;&lt; status &lt;&lt; '\n';
    std::free(realname);
  }
!    </programlisting>
     <para>
       This prints
     </para>
--- 546,552 ----
    std::cout &lt;&lt; ti.name() &lt;&lt; "\t=&gt; " &lt;&lt; realname &lt;&lt; "\t: " &lt;&lt; status &lt;&lt; '\n';
    std::free(realname);
  }
! </programlisting>
     <para>
       This prints
     </para>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/internals.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/internals.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/internals.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/internals.xml	Sun Nov 23 22:32:44 2025
*************** OS portion of the triplet (the default),
*** 73,94 ****
  that are required to allow the C++ library to work with your C library.
     </para>
  
-    <para>Several libstdc++ source files unconditionally define the macro
- <code>_POSIX_SOURCE</code>.  On many systems, defining this macro causes
- large portions of the C library header files to be eliminated
- at preprocessing time.  Therefore, you may have to <code>#undef</code> this
- macro, or define other macros (like <code>_LARGEFILE_SOURCE</code> or
- <code>__EXTENSIONS__</code>).  You won't know what macros to define or
- undefine at this point; you'll have to try compiling the library and
- seeing what goes wrong.  If you see errors about calling functions
- that have not been declared, look in your C library headers to see if
- the functions are declared there, and then figure out what macros you
- need to define.  You will need to add them to the
- <code>CPLUSPLUS_CPP_SPEC</code> macro in the GCC configuration file for your
- target.  It will not work to simply define these macros in
- <code>os_defines.h</code>.
-    </para>
- 
     <para>At this time, there are a few libstdc++-specific macros which may be
  defined:
     </para>
--- 73,78 ----
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/intro.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/intro.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/intro.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/intro.xml	Sun Nov 23 22:32:44 2025
*************** requirements of the license of GCC.
*** 1336,1342 ****
     <para>The general outline of commands to build GCC is something like:
     </para>
  
!    <programlisting>
     <replaceable>get gcc sources</replaceable>
     <replaceable>extract into gccsrcdir</replaceable>
     mkdir <replaceable>gccbuilddir</replaceable>
--- 1336,1342 ----
     <para>The general outline of commands to build GCC is something like:
     </para>
  
! <programlisting>
     <replaceable>get gcc sources</replaceable>
     <replaceable>extract into gccsrcdir</replaceable>
     mkdir <replaceable>gccbuilddir</replaceable>
*************** requirements of the license of GCC.
*** 1345,1351 ****
     make
     make check
     make install
!    </programlisting>
  
     <para>
       Each step is described in more detail in the following sections.
--- 1345,1351 ----
     make
     make check
     make install
! </programlisting>
  
     <para>
       Each step is described in more detail in the following sections.
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/io.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/io.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/io.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/io.xml	Sun Nov 23 22:32:44 2025
***************
*** 37,43 ****
        Look in the <filename class="headerfile">&lt;iosfwd&gt;</filename> header
        if you'd like to know why.)  For example,
     </para>
!    <programlisting>
      #include &lt;iosfwd&gt;
  
      class MyClass
--- 37,43 ----
        Look in the <filename class="headerfile">&lt;iosfwd&gt;</filename> header
        if you'd like to know why.)  For example,
     </para>
! <programlisting>
      #include &lt;iosfwd&gt;
  
      class MyClass
***************
*** 47,53 ****
      };
  
      extern std::ostream&amp; operator&lt;&lt; (std::ostream&amp;, MyClass&amp;);
!    </programlisting>
     <para><emphasis><filename class="headerfile">&lt;ios&gt;</filename></emphasis>
        declares the base classes for the entire I/O stream hierarchy,
        <classname>std::ios_base</classname> and <classname>std::basic_ios&lt;charT&gt;</classname>,
--- 47,53 ----
      };
  
      extern std::ostream&amp; operator&lt;&lt; (std::ostream&amp;, MyClass&amp;);
! </programlisting>
     <para><emphasis><filename class="headerfile">&lt;ios&gt;</filename></emphasis>
        declares the base classes for the entire I/O stream hierarchy,
        <classname>std::ios_base</classname> and <classname>std::basic_ios&lt;charT&gt;</classname>,
***************
*** 87,100 ****
        or any of the other abstract stream formatting functions.
        For example,
     </para>
!    <programlisting>
      #include &lt;istream&gt;
  
      std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, MyClass&amp; c)
      {
         return os &lt;&lt; c.data1() &lt;&lt; c.data2();
      }
!    </programlisting>
     <para>The <type>std::istream</type> and <type>std::ostream</type> classes
        are the abstract parents of
        the various concrete implementations.  If you are only using the
--- 87,100 ----
        or any of the other abstract stream formatting functions.
        For example,
     </para>
! <programlisting>
      #include &lt;istream&gt;
  
      std::ostream&amp; operator&lt;&lt; (std::ostream&amp; os, MyClass&amp; c)
      {
         return os &lt;&lt; c.data1() &lt;&lt; c.data2();
      }
! </programlisting>
     <para>The <type>std::istream</type> and <type>std::ostream</type> classes
        are the abstract parents of
        the various concrete implementations.  If you are only using the
***************
*** 123,129 ****
        <filename class="headerfile">&lt;ostream&gt;</filename>
        headers, but nothing else.  The contents of this header look like:
     </para>
!    <programlisting>
      #include &lt;ostream&gt;
      #include &lt;istream&gt;
  
--- 123,129 ----
        <filename class="headerfile">&lt;ostream&gt;</filename>
        headers, but nothing else.  The contents of this header look like:
     </para>
! <programlisting>
      #include &lt;ostream&gt;
      #include &lt;istream&gt;
  
***************
*** 136,142 ****
  	// this is explained below
  	<emphasis>static ios_base::Init __foo;</emphasis>    // not its real name
      }
!    </programlisting>
     <para>Now, the runtime penalty mentioned previously:  the global objects
        must be initialized before any of your own code uses them; this is
        guaranteed by the standard.  Like any other global object, they must
--- 136,142 ----
  	// this is explained below
  	<emphasis>static ios_base::Init __foo;</emphasis>    // not its real name
      }
! </programlisting>
     <para>Now, the runtime penalty mentioned previously:  the global objects
        must be initialized before any of your own code uses them; this is
        guaranteed by the standard.  Like any other global object, they must
***************
*** 201,207 ****
        assumes many things about the nature of the character type being
        used (for more information, read the books or the newsgroups):
     </para>
!    <programlisting>
      #include &lt;iostream&gt;
      #include &lt;streambuf&gt;
      #include &lt;locale&gt;
--- 201,207 ----
        assumes many things about the nature of the character type being
        used (for more information, read the books or the newsgroups):
     </para>
! <programlisting>
      #include &lt;iostream&gt;
      #include &lt;streambuf&gt;
      #include &lt;locale&gt;
***************
*** 238,244 ****
  	    &lt;&lt; std::hex &lt;&lt; 31 &lt;&lt; std::endl;
  	return 0;
      }
!    </programlisting>
     <para>Try it yourself!  More examples can be found in 3.1.x code, in
        <filename>include/ext/*_filebuf.h</filename>, and in the article
        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gabisoft.free.fr/articles/fltrsbf1.html">Filtering
--- 238,244 ----
  	    &lt;&lt; std::hex &lt;&lt; 31 &lt;&lt; std::endl;
  	return 0;
      }
! </programlisting>
     <para>Try it yourself!  More examples can be found in 3.1.x code, in
        <filename>include/ext/*_filebuf.h</filename>, and in the article
        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gabisoft.free.fr/articles/fltrsbf1.html">Filtering
***************
*** 270,276 ****
        out as soon as possible, etc -- but the buffering is largely
        wasted when doing this to a file:
     </para>
!    <programlisting>
     output &lt;&lt; "a line of text" &lt;&lt; endl;
     output &lt;&lt; some_data_variable &lt;&lt; endl;
     output &lt;&lt; "another line of text" &lt;&lt; endl; </programlisting>
--- 270,276 ----
        out as soon as possible, etc -- but the buffering is largely
        wasted when doing this to a file:
     </para>
! <programlisting>
     output &lt;&lt; "a line of text" &lt;&lt; endl;
     output &lt;&lt; some_data_variable &lt;&lt; endl;
     output &lt;&lt; "another line of text" &lt;&lt; endl; </programlisting>
***************
*** 278,284 ****
        and let the libraries and the system worry about the buffering.
        If you need a newline, just write a newline:
     </para>
!    <programlisting>
     output &lt;&lt; "a line of text\n"
  	  &lt;&lt; some_data_variable &lt;&lt; '\n'
  	  &lt;&lt; "another line of text\n"; </programlisting>
--- 278,284 ----
        and let the libraries and the system worry about the buffering.
        If you need a newline, just write a newline:
     </para>
! <programlisting>
     output &lt;&lt; "a line of text\n"
  	  &lt;&lt; some_data_variable &lt;&lt; '\n'
  	  &lt;&lt; "another line of text\n"; </programlisting>
***************
*** 290,296 ****
        <code>endl</code> if you also need a newline, or just flush the buffer
        yourself:
     </para>
!    <programlisting>
     output &lt;&lt; ...... &lt;&lt; flush;    // can use std::flush manipulator
     output.flush();               // or call a member fn </programlisting>
     <para>On the other hand, there are times when writing to a file should
--- 290,296 ----
        <code>endl</code> if you also need a newline, or just flush the buffer
        yourself:
     </para>
! <programlisting>
     output &lt;&lt; ...... &lt;&lt; flush;    // can use std::flush manipulator
     output.flush();               // or call a member fn </programlisting>
     <para>On the other hand, there are times when writing to a file should
***************
*** 300,306 ****
        just to turn off the buffering <emphasis>before any I/O operations at
        all</emphasis> have been done (note that opening counts as an I/O operation):
     </para>
!    <programlisting>
     std::ofstream    os;
     std::ifstream    is;
     int   i;
--- 300,306 ----
        just to turn off the buffering <emphasis>before any I/O operations at
        all</emphasis> have been done (note that opening counts as an I/O operation):
     </para>
! <programlisting>
     std::ofstream    os;
     std::ifstream    is;
     int   i;
***************
*** 403,423 ****
        completely portably.  And since this is C++, you have an open
        ifstream (call it IN) and an open ofstream (call it OUT):
     </para>
!    <programlisting>
     #include &lt;fstream&gt;
  
     std::ifstream  IN ("input_file");
     std::ofstream  OUT ("output_file"); </programlisting>
     <para>Here's the easiest way to get it completely wrong:
     </para>
!    <programlisting>
     OUT &lt;&lt; IN;</programlisting>
     <para>For those of you who don't already know why this doesn't work
        (probably from having done it before), I invite you to quickly
        create a simple text file called "input_file" containing
        the sentence
     </para>
!       <programlisting>
        The quick brown fox jumped over the lazy dog.</programlisting>
     <para>surrounded by blank lines.  Code it up and try it.  The contents
        of "output_file" may surprise you.
--- 403,423 ----
        completely portably.  And since this is C++, you have an open
        ifstream (call it IN) and an open ofstream (call it OUT):
     </para>
! <programlisting>
     #include &lt;fstream&gt;
  
     std::ifstream  IN ("input_file");
     std::ofstream  OUT ("output_file"); </programlisting>
     <para>Here's the easiest way to get it completely wrong:
     </para>
! <programlisting>
     OUT &lt;&lt; IN;</programlisting>
     <para>For those of you who don't already know why this doesn't work
        (probably from having done it before), I invite you to quickly
        create a simple text file called "input_file" containing
        the sentence
     </para>
! <programlisting>
        The quick brown fox jumped over the lazy dog.</programlisting>
     <para>surrounded by blank lines.  Code it up and try it.  The contents
        of "output_file" may surprise you.
***************
*** 440,446 ****
        using the <code>rdbuf()</code> member function.  Therefore, the easiest
        way to copy the file is:
     </para>
!    <programlisting>
     OUT &lt;&lt; IN.rdbuf();</programlisting>
     <para>So what <emphasis>was</emphasis> happening with OUT&lt;&lt;IN?  Undefined
        behavior, since that particular &lt;&lt; isn't defined by the Standard.
--- 440,446 ----
        using the <code>rdbuf()</code> member function.  Therefore, the easiest
        way to copy the file is:
     </para>
! <programlisting>
     OUT &lt;&lt; IN.rdbuf();</programlisting>
     <para>So what <emphasis>was</emphasis> happening with OUT&lt;&lt;IN?  Undefined
        behavior, since that particular &lt;&lt; isn't defined by the Standard.
***************
*** 619,632 ****
     <para>Because the C++ library includes the C library, both C-style and
        C++-style I/O have to work at the same time.  For example:
     </para>
!    <programlisting>
       #include &lt;iostream&gt;
       #include &lt;cstdio&gt;
  
       std::cout &lt;&lt; "Hel";
       std::printf ("lo, worl");
       std::cout &lt;&lt; "d!\n";
!    </programlisting>
     <para>This must do what you think it does.
     </para>
     <para>Alert members of the audience will immediately notice that buffering
--- 619,632 ----
     <para>Because the C++ library includes the C library, both C-style and
        C++-style I/O have to work at the same time.  For example:
     </para>
! <programlisting>
       #include &lt;iostream&gt;
       #include &lt;cstdio&gt;
  
       std::cout &lt;&lt; "Hel";
       std::printf ("lo, worl");
       std::cout &lt;&lt; "d!\n";
! </programlisting>
     <para>This must do what you think it does.
     </para>
     <para>Alert members of the audience will immediately notice that buffering
***************
*** 647,657 ****
        C++ I/O, then there's no need to sync with the C streams.  The right
        thing to do in this case is to call
     </para>
!    <programlisting>
       #include <emphasis>any of the I/O headers such as ios, iostream, etc</emphasis>
  
       std::ios::sync_with_stdio(false);
!    </programlisting>
     <para>You must do this before performing any I/O via the C++ stream objects.
        Once you call this, the C++ streams will operate independently of the
        (unused) C streams.  For GCC 3.x, this means that <code>cout</code> and
--- 647,657 ----
        C++ I/O, then there's no need to sync with the C streams.  The right
        thing to do in this case is to call
     </para>
! <programlisting>
       #include <emphasis>any of the I/O headers such as ios, iostream, etc</emphasis>
  
       std::ios::sync_with_stdio(false);
! </programlisting>
     <para>You must do this before performing any I/O via the C++ stream objects.
        Once you call this, the C++ streams will operate independently of the
        (unused) C streams.  For GCC 3.x, this means that <code>cout</code> and
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/iterators.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/iterators.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/iterators.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/iterators.xml	Sun Nov 23 22:32:44 2025
*************** classes.
*** 111,117 ****
        of them as indexing 0 through n-1.  Think of them as <emphasis>boundary
        markers</emphasis>:
     </para>
!    <programlisting>
  
     beginning            end
       |                   |
--- 111,117 ----
        of them as indexing 0 through n-1.  Think of them as <emphasis>boundary
        markers</emphasis>:
     </para>
! <programlisting>
  
     beginning            end
       |                   |
*************** classes.
*** 131,137 ****
       |                       |           dereference 'end'.
     beginning                end
  
!    </programlisting>
     <para>See?  Everything between the boundary markers is chapter of the array.
        Simple.
     </para>
--- 131,137 ----
       |                       |           dereference 'end'.
     beginning                end
  
! </programlisting>
     <para>See?  Everything between the boundary markers is chapter of the array.
        Simple.
     </para>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/numerics.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/numerics.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/numerics.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/numerics.xml	Sun Nov 23 22:32:44 2025
***************
*** 70,76 ****
     </itemizedlist>
     <para>Here is a simple example of the two forms of <code>accumulate</code>.
     </para>
!    <programlisting>
     int   ar[50];
     int   someval = somefunction();
  
--- 70,76 ----
     </itemizedlist>
     <para>Here is a simple example of the two forms of <code>accumulate</code>.
     </para>
! <programlisting>
     int   ar[50];
     int   someval = somefunction();
  
***************
*** 79,85 ****
     int  sum       = std::accumulate(ar,ar+50,0);
     int  sum_stuff = std::accumulate(ar,ar+50,someval);
     int  product   = std::accumulate(ar,ar+50,1,std::multiplies&lt;int&gt;());
!    </programlisting>
     <para>The first call adds all the members of the array, using zero as an
        initial value for <code>sum</code>.  The second does the same, but uses
        <code>someval</code> as the starting value (thus, <code>sum_stuff == sum +
--- 79,85 ----
     int  sum       = std::accumulate(ar,ar+50,0);
     int  sum_stuff = std::accumulate(ar,ar+50,someval);
     int  product   = std::accumulate(ar,ar+50,1,std::multiplies&lt;int&gt;());
! </programlisting>
     <para>The first call adds all the members of the array, using zero as an
        initial value for <code>sum</code>.  The second does the same, but uses
        <code>someval</code> as the starting value (thus, <code>sum_stuff == sum +
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/policy_data_structures.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/policy_data_structures.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/policy_data_structures.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/policy_data_structures.xml	Sun Nov 23 22:32:44 2025
***************
*** 2735,2748 ****
  	a generic container object, what is the behavior of the object?
  	Suppose one writes
        </para>
!       <programlisting>
  	template&lt;typename Cntnr&gt;
  	void
  	some_op_sequence(Cntnr &amp;r_container)
  	{
  	...
  	}
!       </programlisting>
  
        <para>
  	then one needs to address the following questions in the body
--- 2735,2748 ----
  	a generic container object, what is the behavior of the object?
  	Suppose one writes
        </para>
! <programlisting>
  	template&lt;typename Cntnr&gt;
  	void
  	some_op_sequence(Cntnr &amp;r_container)
  	{
  	...
  	}
! </programlisting>
  
        <para>
  	then one needs to address the following questions in the body
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/strings.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/strings.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/strings.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/strings.xml	Sun Nov 23 22:32:44 2025
***************
*** 31,37 ****
       This code will go through some iterations.  Here's a simple
       version:
     </para>
!    <programlisting>
     #include &lt;string&gt;
     #include &lt;algorithm&gt;
     #include &lt;cctype&gt;      // old &lt;ctype.h&gt;
--- 31,37 ----
       This code will go through some iterations.  Here's a simple
       version:
     </para>
! <programlisting>
     #include &lt;string&gt;
     #include &lt;algorithm&gt;
     #include &lt;cctype&gt;      // old &lt;ctype.h&gt;
***************
*** 62,68 ****
       capital_s.resize(s.size());
       std::transform (s.begin(), s.end(), capital_s.begin(), ToUpper());
     }
!    </programlisting>
     <para>
       <emphasis>Note</emphasis> that these calls all
        involve the global C locale through the use of the C functions
--- 62,68 ----
       capital_s.resize(s.size());
       std::transform (s.begin(), s.end(), capital_s.begin(), ToUpper());
     }
! </programlisting>
     <para>
       <emphasis>Note</emphasis> that these calls all
        involve the global C locale through the use of the C functions
***************
*** 87,93 ****
        <!-- section 14.8.2.4 clause 16 in ISO 14882:1998  -->
        At minimum, you can write short wrappers like
     </para>
!    <programlisting>
     char toLower (char c)
     {
        // std::tolower(c) is undefined if c &lt; 0 so cast to unsigned char.
--- 87,93 ----
        <!-- section 14.8.2.4 clause 16 in ISO 14882:1998  -->
        At minimum, you can write short wrappers like
     </para>
! <programlisting>
     char toLower (char c)
     {
        // std::tolower(c) is undefined if c &lt; 0 so cast to unsigned char.
***************
*** 100,115 ****
       which can perform the conversion to <code>unsigned char</code> and
       also ensure the single-argument form of <code>std::lower</code> is used:
     </para>
!    <programlisting>
       std::transform (s.begin(), s.end(), capital_s.begin(),
                       [](unsigned char c) { return std::tolower(c); });
!    </programlisting>
     <para>Another common operation is trimming off excess whitespace.  Much
        like transformations, this task is trivial with the use of string's
        <code>find</code> family.  These examples are broken into multiple
        statements for readability:
     </para>
!    <programlisting>
     std::string  str (" \t blah blah blah    \n ");
  
     // trim leading whitespace
--- 100,115 ----
       which can perform the conversion to <code>unsigned char</code> and
       also ensure the single-argument form of <code>std::lower</code> is used:
     </para>
! <programlisting>
       std::transform (s.begin(), s.end(), capital_s.begin(),
                       [](unsigned char c) { return std::tolower(c); });
! </programlisting>
     <para>Another common operation is trimming off excess whitespace.  Much
        like transformations, this task is trivial with the use of string's
        <code>find</code> family.  These examples are broken into multiple
        statements for readability:
     </para>
! <programlisting>
     std::string  str (" \t blah blah blah    \n ");
  
     // trim leading whitespace
***************
*** 138,144 ****
        case-insensitive in the same way as the (common but nonstandard)
        C function stricmp()</quote>.
     </para>
!    <programlisting>
     ci_string s( "AbCdE" );
  
     // case insensitive
--- 138,144 ----
        case-insensitive in the same way as the (common but nonstandard)
        C function stricmp()</quote>.
     </para>
! <programlisting>
     ci_string s( "AbCdE" );
  
     // case insensitive
***************
*** 192,198 ****
        type parameters, which take default arguments based on the character
        type (called <code>CharT</code> here):
     </para>
!    <programlisting>
        template &lt;typename CharT,
  		typename Traits = char_traits&lt;CharT&gt;,
  		typename Alloc = allocator&lt;CharT&gt; &gt;
--- 192,198 ----
        type parameters, which take default arguments based on the character
        type (called <code>CharT</code> here):
     </para>
! <programlisting>
        template &lt;typename CharT,
  		typename Traits = char_traits&lt;CharT&gt;,
  		typename Alloc = allocator&lt;CharT&gt; &gt;
***************
*** 205,211 ****
        template is <emphasis>declared</emphasis> but not <emphasis>defined</emphasis>.
        That means there is only
     </para>
!    <programlisting>
        template &lt;typename CharT&gt;
  	struct char_traits
  	{
--- 205,211 ----
        template is <emphasis>declared</emphasis> but not <emphasis>defined</emphasis>.
        That means there is only
     </para>
! <programlisting>
        template &lt;typename CharT&gt;
  	struct char_traits
  	{
*************** stringtok(Container &amp;container, stri
*** 314,320 ****
     </para>
  
  
!    <programlisting>
     std::list&lt;string&gt;  ls;
     stringtok (ls, " this  \t is\t\n  a test  ");
     for (std::list&lt;string&gt;const_iterator i = ls.begin();
--- 314,320 ----
     </para>
  
  
! <programlisting>
     std::list&lt;string&gt;  ls;
     stringtok (ls, " this  \t is\t\n  a test  ");
     for (std::list&lt;string&gt;const_iterator i = ls.begin();
*************** stringtok(Container &amp;container, stri
*** 324,330 ****
     } </programlisting>
     <para>You would see this as output:
     </para>
!    <programlisting>
     :this:
     :is:
     :a:
--- 324,330 ----
     } </programlisting>
     <para>You would see this as output:
     </para>
! <programlisting>
     :this:
     :is:
     :a:
*************** stringtok(Container &amp;container, stri
*** 358,366 ****
     <para>This behaviour is suggested, but not required by the standard. Prior
        to GCC 3.4 the following alternative can be used instead
     </para>
!    <programlisting>
        std::string(str.data(), str.size()).swap(str);
!    </programlisting>
     <para>This is similar to the idiom for reducing
        a <code>vector</code>'s memory usage
        (see <link linkend="faq.size_equals_capacity">this FAQ
--- 358,366 ----
     <para>This behaviour is suggested, but not required by the standard. Prior
        to GCC 3.4 the following alternative can be used instead
     </para>
! <programlisting>
        std::string(str.data(), str.size()).swap(str);
! </programlisting>
     <para>This is similar to the idiom for reducing
        a <code>vector</code>'s memory usage
        (see <link linkend="faq.size_equals_capacity">this FAQ
*************** stringtok(Container &amp;container, stri
*** 411,417 ****
        streams seamlessly because they inherit from the iostream
        hierarchy.  An quick example:
     </para>
!    <programlisting>
     #include &lt;iostream&gt;
     #include &lt;string&gt;
     #include &lt;sstream&gt;
--- 411,417 ----
        streams seamlessly because they inherit from the iostream
        hierarchy.  An quick example:
     </para>
! <programlisting>
     #include &lt;iostream&gt;
     #include &lt;string&gt;
     #include &lt;sstream&gt;
*************** stringtok(Container &amp;container, stri
*** 434,440 ****
     <para>A serious problem with CString is a design bug in its memory
        allocation.  Specifically, quoting from that same message:
     </para>
!    <programlisting>
     CString suffers from a common programming error that results in
     poor performance.  Consider the following code:
  
--- 434,440 ----
     <para>A serious problem with CString is a design bug in its memory
        allocation.  Specifically, quoting from that same message:
     </para>
! <programlisting>
     CString suffers from a common programming error that results in
     poor performance.  Consider the following code:
  
*************** stringtok(Container &amp;container, stri
*** 455,461 ****
  
     If you replace CString with string in the above function, the
     performance is O(n).
!    </programlisting>
     <para>Joe Buck also pointed out some other things to keep in mind when
        comparing CString and the Standard string class:
     </para>
--- 455,461 ----
  
     If you replace CString with string in the above function, the
     performance is O(n).
! </programlisting>
     <para>Joe Buck also pointed out some other things to keep in mind when
        comparing CString and the Standard string class:
     </para>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/support.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/support.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/support.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/support.xml	Sun Nov 23 22:32:44 2025
***************
*** 100,106 ****
      and defined as follows:
      </para>
  
!    <programlisting>
     template&lt;typename T&gt;
       struct class
       {
--- 100,106 ----
      and defined as follows:
      </para>
  
! <programlisting>
     template&lt;typename T&gt;
       struct class
       {
***************
*** 139,145 ****
         static const bool tinyness_before;
         static const float_round_style round_style;
       };
!    </programlisting>
    </section>
  
    <section xml:id="std.support.types.null" xreflabel="NULL"><info><title>NULL</title></info>
--- 139,145 ----
         static const bool tinyness_before;
         static const float_round_style round_style;
       };
! </programlisting>
    </section>
  
    <section xml:id="std.support.types.null" xreflabel="NULL"><info><title>NULL</title></info>
***************
*** 327,333 ****
       by registering a <quote>new-handler</quote>, because what
       <function>operator new</function> actually does is something like:
     </para>
!    <programlisting>
      while (true)
      {
        if (void* p = /* try to allocate memory */)
--- 327,333 ----
       by registering a <quote>new-handler</quote>, because what
       <function>operator new</function> actually does is something like:
     </para>
! <programlisting>
      while (true)
      {
        if (void* p = /* try to allocate memory */)
***************
*** 337,349 ****
        else
          throw bad_alloc{};
      }
!    </programlisting>
     <para>
       This means you can influence what happens on allocation failure by
       writing your own new-handler and then registering it with
       <function>std::set_new_handler</function>:
     </para>
!    <programlisting>
     typedef void (*PFV)();
  
     static char*  safety;
--- 337,349 ----
        else
          throw bad_alloc{};
      }
! </programlisting>
     <para>
       This means you can influence what happens on allocation failure by
       writing your own new-handler and then registering it with
       <function>std::set_new_handler</function>:
     </para>
! <programlisting>
     typedef void (*PFV)();
  
     static char*  safety;
***************
*** 366,372 ****
         old_handler = set_new_handler (&amp;my_new_handler);
         ...
     }
!    </programlisting>
  
     <section xml:id="std.support.memory.notes" xreflabel="Dynamic Memory Notes"><info><title>Additional Notes</title></info>
  
--- 366,372 ----
         old_handler = set_new_handler (&amp;my_new_handler);
         ...
     }
! </programlisting>
  
     <section xml:id="std.support.memory.notes" xreflabel="Dynamic Memory Notes"><info><title>Additional Notes</title></info>
  
*************** int main(int argc)
*** 549,557 ****
       <filename class="headerfile">&lt;cstdlib&gt;</filename>, and call
     </para>
  
!    <programlisting>
       std::set_terminate(std::abort);
!    </programlisting>
  
     <para>
       After this, all calls to <function>terminate</function> will use
--- 549,557 ----
       <filename class="headerfile">&lt;cstdlib&gt;</filename>, and call
     </para>
  
! <programlisting>
       std::set_terminate(std::abort);
! </programlisting>
  
     <para>
       After this, all calls to <function>terminate</function> will use
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/test.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/test.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/test.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/test.xml	Sun Nov 23 22:32:44 2025
*************** regressions, ABI, and performance.
*** 39,45 ****
    of the C++ standard (ISO 14882) are files within the following
    directories:
  
!    <programlisting>
      17_intro
      18_support
      19_diagnostics
--- 39,45 ----
    of the C++ standard (ISO 14882) are files within the following
    directories:
  
! <programlisting>
      17_intro
      18_support
      19_diagnostics
*************** regressions, ABI, and performance.
*** 54,60 ****
      28_regex
      29_atomics
      30_threads
!    </programlisting>
  </para>
  
     <para>
--- 54,60 ----
      28_regex
      29_atomics
      30_threads
! </programlisting>
  </para>
  
     <para>
*************** regressions, ABI, and performance.
*** 167,173 ****
        This test case expects some kind of interactive input in order
        to finish or pass. At the moment, the interactive tests are not
        run by default. Instead, they are run by hand, like:
!       <programlisting>
  g++ 27_io/objects/char/3_xin.cc
  cat 27_io/objects/char/3_xin.in | a.out</programlisting>
    </listitem>
--- 167,173 ----
        This test case expects some kind of interactive input in order
        to finish or pass. At the moment, the interactive tests are not
        run by default. Instead, they are run by hand, like:
! <programlisting>
  g++ 27_io/objects/char/3_xin.cc
  cat 27_io/objects/char/3_xin.in | a.out</programlisting>
    </listitem>
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 343,349 ****
        Also, here is an example of how to run the libstdc++ testsuite
        for a multilibed build directory with different ABI settings:
  
!  <programlisting>
      make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board \"unix{-mabi=32,,-mabi=64}\"'
  </programlisting>
      </para>
--- 343,349 ----
        Also, here is an example of how to run the libstdc++ testsuite
        for a multilibed build directory with different ABI settings:
  
! <programlisting>
      make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board \"unix{-mabi=32,,-mabi=64}\"'
  </programlisting>
      </para>
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 357,365 ****
        run programs on, e.g. <code>x86_64-pc-linux-gnu</code>, as a few tests
        still execute the code they build.  Here's an example of how to run the
        testsuite with libstdc++ in freestanding mode:
!       <programlisting>
      make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board=unix/-ffreestanding'
!       </programlisting>
      </para>
  
      <para>
--- 357,365 ----
        run programs on, e.g. <code>x86_64-pc-linux-gnu</code>, as a few tests
        still execute the code they build.  Here's an example of how to run the
        testsuite with libstdc++ in freestanding mode:
! <programlisting>
      make check-target-libstdc++-v3 RUNTESTFLAGS='--target_board=unix/-ffreestanding'
! </programlisting>
      </para>
  
      <para>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/using.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/using.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/using.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/using.xml	Sun Nov 23 22:32:44 2025
*************** gcc version 4.1.2 20070925 (Red Hat 4.1.
*** 2018,2024 ****
  	 into great detail, here is an example which requires user-level
  	 locks:
        </para>
!       <programlisting>
       library_class_a shared_object_a;
  
       void thread_main () {
--- 2018,2024 ----
  	 into great detail, here is an example which requires user-level
  	 locks:
        </para>
! <programlisting>
       library_class_a shared_object_a;
  
       void thread_main () {
*************** gcc version 4.1.2 20070925 (Red Hat 4.1.
*** 2032,2038 ****
  	 another thread, here is an example that does not require any
  	 user-level locks:
        </para>
!       <programlisting>
       void thread_main () {
         library_class_a object_a;
         library_class_b *object_b = new library_class_b;
--- 2032,2038 ----
  	 another thread, here is an example that does not require any
  	 user-level locks:
        </para>
! <programlisting>
       void thread_main () {
         library_class_a object_a;
         library_class_b *object_b = new library_class_b;
*************** gcc version 4.1.2 20070925 (Red Hat 4.1.
*** 2089,2095 ****
           globally-visible object, the library ensures that the reference
           count updates are atomic and do not introduce data races:
        </para>
!       <programlisting>
      std::shared_ptr&lt;int&gt; global_sp;
  
      void thread_main() {
--- 2089,2095 ----
           globally-visible object, the library ensures that the reference
           count updates are atomic and do not introduce data races:
        </para>
! <programlisting>
      std::shared_ptr&lt;int&gt; global_sp;
  
      void thread_main() {
*************** gcc version 4.1.2 20070925 (Red Hat 4.1.
*** 2112,2118 ****
        t1.join();
        t2.join();
      }
!       </programlisting>
  
        <para>For further details of the C++11 memory model see Hans-J. Boehm's
        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.hboehm.info/c++mm/">Threads
--- 2112,2118 ----
        t1.join();
        t2.join();
      }
! </programlisting>
  
        <para>For further details of the C++11 memory model see Hans-J. Boehm's
        <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://www.hboehm.info/c++mm/">Threads
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/using_exceptions.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/using_exceptions.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/using_exceptions.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/using_exceptions.xml	Sun Nov 23 22:32:44 2025
*************** is called.
*** 528,534 ****
    <biblioentry>
        <title>
  	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	      xlink:href="https://www.boost.org/community/error_handling.html">
  	Error and Exception Handling
  	</link>
        </title>
--- 528,534 ----
    <biblioentry>
        <title>
  	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	      xlink:href="https://www.boost.org/doc/libs/1_34_1/more/error_handling.html">
  	Error and Exception Handling
  	</link>
        </title>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/doc/xml/manual/utilities.xml gcc-16-20251123/libstdc++-v3/doc/xml/manual/utilities.xml
*** gcc-16-20251116/libstdc++-v3/doc/xml/manual/utilities.xml	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/doc/xml/manual/utilities.xml	Sun Nov 23 22:32:44 2025
***************
*** 40,56 ****
     <para>Construction is simple.  The default ctor initializes each member
        with its respective default ctor.  The other simple ctor,
     </para>
!    <programlisting>
      pair (const T1&amp; x, const T2&amp; y);
!    </programlisting>
     <para>does what you think it does, <code>first</code> getting <code>x</code>
        and <code>second</code> getting <code>y</code>.
     </para>
     <para>There is a constructor template for copying pairs of other types:
     </para>
!    <programlisting>
      template &lt;class U, class V&gt; pair (const pair&lt;U,V&gt;&amp; p);
!    </programlisting>
     <para>The compiler will convert as necessary from U to T1 and from
        V to T2 in order to perform the respective initializations.
     </para>
--- 40,56 ----
     <para>Construction is simple.  The default ctor initializes each member
        with its respective default ctor.  The other simple ctor,
     </para>
! <programlisting>
      pair (const T1&amp; x, const T2&amp; y);
! </programlisting>
     <para>does what you think it does, <code>first</code> getting <code>x</code>
        and <code>second</code> getting <code>y</code>.
     </para>
     <para>There is a constructor template for copying pairs of other types:
     </para>
! <programlisting>
      template &lt;class U, class V&gt; pair (const pair&lt;U,V&gt;&amp; p);
! </programlisting>
     <para>The compiler will convert as necessary from U to T1 and from
        V to T2 in order to perform the respective initializations.
     </para>
***************
*** 65,74 ****
        The less-than operator is a bit odd the first time you see it.  It
        is defined as evaluating to:
     </para>
!    <programlisting>
      x.first  &lt;  y.first  ||
  	( !(y.first  &lt;  x.first)  &amp;&amp;  x.second  &lt;  y.second )
!    </programlisting>
     <para>The other operators are not defined using the <code>rel_ops</code>
        functions above, but their semantics are the same.
     </para>
--- 65,74 ----
        The less-than operator is a bit odd the first time you see it.  It
        is defined as evaluating to:
     </para>
! <programlisting>
      x.first  &lt;  y.first  ||
  	( !(y.first  &lt;  x.first)  &amp;&amp;  x.second  &lt;  y.second )
! </programlisting>
     <para>The other operators are not defined using the <code>rel_ops</code>
        functions above, but their semantics are the same.
     </para>
***************
*** 76,84 ****
        that takes two references-to-const objects and returns an
        instance of a pair instantiated on their respective types:
     </para>
!    <programlisting>
      pair&lt;int,MyClass&gt; p = make_pair(4,myobject);
!    </programlisting>
  
  </section>
  
--- 76,84 ----
        that takes two references-to-const objects and returns an
        instance of a pair instantiated on their respective types:
     </para>
! <programlisting>
      pair&lt;int,MyClass&gt; p = make_pair(4,myobject);
! </programlisting>
  
  </section>
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/bits/basic_string.h gcc-16-20251123/libstdc++-v3/include/bits/basic_string.h
*** gcc-16-20251116/libstdc++-v3/include/bits/basic_string.h	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/include/bits/basic_string.h	Sun Nov 23 22:32:44 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 269,276 ****
        void
        _M_set_length(size_type __n)
        {
- 	_M_length(__n);
  	traits_type::assign(_M_data()[__n], _CharT());
        }
  
        _GLIBCXX20_CONSTEXPR
--- 269,276 ----
        void
        _M_set_length(size_type __n)
        {
  	traits_type::assign(_M_data()[__n], _CharT());
+ 	_M_length(__n);
        }
  
        _GLIBCXX20_CONSTEXPR
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/bits/funcref_impl.h gcc-16-20251123/libstdc++-v3/include/bits/funcref_impl.h
*** gcc-16-20251116/libstdc++-v3/include/bits/funcref_impl.h	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/include/bits/funcref_impl.h	Sun Nov 23 22:32:44 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 138,150 ****
  	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	    static_assert(__fn != nullptr);
  
! 	  using _Tr = _Td _GLIBCXX_MOF_CV&;
! 	  if constexpr (is_member_pointer_v<_Fn> && is_lvalue_reference_v<_Tr>)
  	    // N.B. invoking member pointer on lvalue produces the same effects,
  	    // as invoking it on pointer to that lvalue.
  	    _M_invoke = &_Invoker::template _S_bind_ptr<__fn, _Td _GLIBCXX_MOF_CV>;
  	  else
! 	    _M_invoke = &_Invoker::template _S_bind_ref<__fn, _Tr>;
  	  _M_init(std::addressof(__ref));
  	}
  
--- 138,150 ----
  	  if constexpr (is_pointer_v<_Fn> || is_member_pointer_v<_Fn>)
  	    static_assert(__fn != nullptr);
  
! 	  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,
  	    // as invoking it on pointer to that lvalue.
  	    _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));
  	}
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/bits/regex_automaton.tcc gcc-16-20251123/libstdc++-v3/include/bits/regex_automaton.tcc
*** gcc-16-20251116/libstdc++-v3/include/bits/regex_automaton.tcc	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/include/bits/regex_automaton.tcc	Sun Nov 23 22:32:44 2025
***************
*** 28,33 ****
--- 28,37 ----
   *  Do not attempt to use it directly. @headername{regex}
   */
  
+ #ifdef _GLIBCXX_DEBUG
+ # include <ostream>
+ #endif
+ 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/debug/vector gcc-16-20251123/libstdc++-v3/include/debug/vector
*** gcc-16-20251116/libstdc++-v3/include/debug/vector	Sun Nov 16 22:35:07 2025
--- gcc-16-20251123/libstdc++-v3/include/debug/vector	Sun Nov 23 22:32:44 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1038,1043 ****
--- 1038,1069 ----
    }  // namespace __detail::__variant
  #endif // C++17
  
+ #ifdef __glibcxx_erase_if // C++ >= 20 && HOSTED
+   template<typename _Tp, typename _Alloc, typename _Predicate>
+     constexpr typename __debug::vector<_Tp, _Alloc>::size_type
+     erase_if(__debug::vector<_Tp, _Alloc>& __cont, _Predicate __pred)
+     {
+       _GLIBCXX_STD_C::vector<_Tp, _Alloc>& __unsafe_cont = __cont;
+       const auto __osz = __cont.size();
+       const auto __end = __unsafe_cont.end();
+       auto __removed = std::__remove_if(__unsafe_cont.begin(), __end,
+ 					std::move(__pred));
+       if (__removed != __end)
+ 	{
+ 	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
+ 		       __cont.end());
+ 	  return __osz - __cont.size();
+ 	}
+ 
+       return 0;
+     }
+ 
+   template<typename _Tp, typename _Alloc, typename _Up = _Tp>
+     constexpr typename __debug::vector<_Tp, _Alloc>::size_type
+     erase(__debug::vector<_Tp, _Alloc>& __cont, const _Up& __value)
+     { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
+ #endif // __glibcxx_erase_if
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/std/expected gcc-16-20251123/libstdc++-v3/include/std/expected
*** gcc-16-20251116/libstdc++-v3/include/std/expected	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/include/std/expected	Sun Nov 23 22:32:45 2025
*************** namespace __expected
*** 822,853 ****
  	return std::move(_M_unex);
        }
  
        template<typename _Up = remove_cv_t<_Tp>>
! 	constexpr _Tp
  	value_or(_Up&& __v) const &
  	noexcept(__and_v<is_nothrow_copy_constructible<_Tp>,
  			 is_nothrow_convertible<_Up, _Tp>>)
  	{
! 	  static_assert( is_copy_constructible_v<_Tp> );
  	  static_assert( is_convertible_v<_Up, _Tp> );
  
  	  if (_M_has_value)
  	    return _M_val;
! 	  return static_cast<_Tp>(std::forward<_Up>(__v));
  	}
  
        template<typename _Up = remove_cv_t<_Tp>>
! 	constexpr _Tp
  	value_or(_Up&& __v) &&
  	noexcept(__and_v<is_nothrow_move_constructible<_Tp>,
  			 is_nothrow_convertible<_Up, _Tp>>)
  	{
! 	  static_assert( is_move_constructible_v<_Tp> );
! 	  static_assert( is_convertible_v<_Up, _Tp> );
  
  	  if (_M_has_value)
  	    return std::move(_M_val);
! 	  return static_cast<_Tp>(std::forward<_Up>(__v));
  	}
  
        template<typename _Gr = _Er>
--- 822,857 ----
  	return std::move(_M_unex);
        }
  
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // 4406. value_or return statement is inconsistent with Mandates
        template<typename _Up = remove_cv_t<_Tp>>
! 	constexpr remove_cv_t<_Tp>
  	value_or(_Up&& __v) const &
  	noexcept(__and_v<is_nothrow_copy_constructible<_Tp>,
  			 is_nothrow_convertible<_Up, _Tp>>)
  	{
! 	  using _Xp = remove_cv_t<_Tp>;
! 	  static_assert( is_convertible_v<const _Tp&, _Xp> );
  	  static_assert( is_convertible_v<_Up, _Tp> );
  
  	  if (_M_has_value)
  	    return _M_val;
! 	  return std::forward<_Up>(__v);
  	}
  
        template<typename _Up = remove_cv_t<_Tp>>
! 	constexpr remove_cv_t<_Tp>
  	value_or(_Up&& __v) &&
  	noexcept(__and_v<is_nothrow_move_constructible<_Tp>,
  			 is_nothrow_convertible<_Up, _Tp>>)
  	{
! 	  using _Xp = remove_cv_t<_Tp>;
! 	  static_assert( is_convertible_v<_Tp, _Xp> );
! 	  static_assert( is_convertible_v<_Up, _Xp> );
  
  	  if (_M_has_value)
  	    return std::move(_M_val);
! 	  return std::forward<_Up>(__v);
  	}
  
        template<typename _Gr = _Er>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/std/istream gcc-16-20251123/libstdc++-v3/include/std/istream
*** gcc-16-20251116/libstdc++-v3/include/std/istream	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/include/std/istream	Sun Nov 23 22:32:45 2025
***************
*** 42,47 ****
--- 42,51 ----
  #include <ios>
  #include <ostream>
  
+ #if __cplusplus > 202302L
+ #include <concepts>
+ #endif
+ 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 537,543 ****
         *    is extracted); note that this condition will never occur if
         *    @a __delim equals @c traits::eof().
         *
!        *  NB: Provide three overloads, instead of the single function
         *  (with defaults) mandated by the Standard: this leads to a
         *  better performing implementation, while still conforming to
         *  the Standard.
--- 541,547 ----
         *    is extracted); note that this condition will never occur if
         *    @a __delim equals @c traits::eof().
         *
!        *  NB: Provide four overloads, instead of the single function
         *  (with defaults) mandated by the Standard: this leads to a
         *  better performing implementation, while still conforming to
         *  the Standard.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 551,556 ****
--- 555,566 ----
        __istream_type&
        ignore();
  
+ #if __cplusplus > 202302L
+       __istream_type&
+       ignore(streamsize __n, char __delim) requires same_as<_CharT, char>
+       { return ignore(__n, traits_type::to_int_type(__delim)); }
+ #endif
+ 
        /**
         *  @brief  Looking ahead in the stream
         *  @return  The next character, or eof().
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/std/mdspan gcc-16-20251123/libstdc++-v3/include/std/mdspan
*** gcc-16-20251116/libstdc++-v3/include/std/mdspan	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/include/std/mdspan	Sun Nov 23 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 345,351 ****
    inline constexpr full_extent_t full_extent{};
  
    template<typename _OffsetType, typename _ExtentType, typename _StrideType>
!     struct strided_slice {
        static_assert(__is_standard_integer<_OffsetType>::value
  	|| __detail::__integral_constant_like<_OffsetType>);
        static_assert(__is_standard_integer<_ExtentType>::value
--- 345,352 ----
    inline constexpr full_extent_t full_extent{};
  
    template<typename _OffsetType, typename _ExtentType, typename _StrideType>
!     struct strided_slice
!     {
        static_assert(__is_standard_integer<_OffsetType>::value
  	|| __detail::__integral_constant_like<_OffsetType>);
        static_assert(__is_standard_integer<_ExtentType>::value
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 368,374 ****
        [[no_unique_address]] _Mapping mapping = _Mapping();
        size_t offset{};
      };
! #endif
  
    template<typename _IndexType, size_t... _Extents>
      class extents
--- 369,375 ----
        [[no_unique_address]] _Mapping mapping = _Mapping();
        size_t offset{};
      };
! #endif // __glibcxx_submdspan
  
    template<typename _IndexType, size_t... _Extents>
      class extents
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 378,383 ****
--- 379,389 ----
        static_assert(
  	  (__mdspan::__valid_static_extent<_Extents, _IndexType> && ...),
  	  "Extents must either be dynamic or representable as IndexType");
+ 
+       using _Storage = __mdspan::_ExtentsStorage<
+ 	_IndexType, array<size_t, sizeof...(_Extents)>{_Extents...}>;
+       [[no_unique_address]] _Storage _M_exts;
+ 
      public:
        using index_type = _IndexType;
        using size_type = make_unsigned_t<index_type>;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 487,501 ****
  	}
  
      private:
!       friend const array<size_t, rank()>&
!       __mdspan::__static_extents<extents>();
! 
!       friend span<const index_type>
!       __mdspan::__dynamic_extents<extents>(const extents&, size_t, size_t);
  
!       using _Storage = __mdspan::_ExtentsStorage<
! 	_IndexType, array<size_t, sizeof...(_Extents)>{_Extents...}>;
!       [[no_unique_address]] _Storage _M_exts;
  
        template<typename _OIndexType, size_t... _OExtents>
  	friend class extents;
--- 493,504 ----
  	}
  
      private:
!       friend constexpr const array<size_t, rank()>&
!       __mdspan::__static_extents<extents>() noexcept;
  
!       friend constexpr span<const index_type>
!       __mdspan::__dynamic_extents<extents>(const extents&, size_t, size_t)
!       noexcept;
  
        template<typename _OIndexType, size_t... _OExtents>
  	friend class extents;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 551,557 ****
        __fwd_prod(const _Extents& __exts, size_t __begin, size_t __end) noexcept
        {
  	size_t __sta_prod = [__begin, __end] {
! 	  span<const size_t> __sta_exts = __static_extents<_Extents>(__begin, __end);
  	  size_t __ret = 1;
  	  for(auto __ext : __sta_exts)
  	    if (__ext != dynamic_extent)
--- 554,561 ----
        __fwd_prod(const _Extents& __exts, size_t __begin, size_t __end) noexcept
        {
  	size_t __sta_prod = [__begin, __end] {
! 	  span<const size_t> __sta_exts
! 	    = __static_extents<_Extents>(__begin, __end);
  	  size_t __ret = 1;
  	  for(auto __ext : __sta_exts)
  	    if (__ext != dynamic_extent)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 767,773 ****
  
      template<typename _Layout, typename _Mapping>
        concept __mapping_of =
! 	is_same_v<typename _Layout::template mapping<typename _Mapping::extents_type>,
  		  _Mapping>;
  
      template<template<size_t> typename _Layout, typename _Mapping>
--- 771,778 ----
  
      template<typename _Layout, typename _Mapping>
        concept __mapping_of =
! 	is_same_v<typename _Layout::template mapping<
! 		    typename _Mapping::extents_type>,
  		  _Mapping>;
  
      template<template<size_t> typename _Layout, typename _Mapping>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 802,807 ****
--- 807,831 ----
      // A tag type to create internal ctors.
      class __internal_ctor
      { };
+ 
+     template<typename _Mapping>
+       constexpr typename _Mapping::index_type
+       __offset(const _Mapping& __m) noexcept
+       {
+ 	using _IndexType = typename _Mapping::index_type;
+ 	constexpr auto __rank = _Mapping::extents_type::rank();
+ 
+ 	if constexpr (__standardized_mapping<_Mapping>)
+ 	  return 0;
+ 	else if (__empty(__m.extents()))
+ 	  return 0;
+ 	else
+ 	  {
+ 	    auto __impl = [&__m]<size_t... _Counts>(index_sequence<_Counts...>)
+ 	      { return __m(((void) _Counts, _IndexType(0))...); };
+ 	    return __impl(make_index_sequence<__rank>());
+ 	  }
+       }
    }
  
    template<typename _Extents>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1134,1158 ****
  	bool_constant<_Mp::is_always_unique()>::value;
        };
  
-     template<typename _Mapping>
-       constexpr typename _Mapping::index_type
-       __offset(const _Mapping& __m) noexcept
-       {
- 	using _IndexType = typename _Mapping::index_type;
- 	constexpr auto __rank = _Mapping::extents_type::rank();
- 
- 	if constexpr (__standardized_mapping<_Mapping>)
- 	  return 0;
- 	else if (__empty(__m.extents()))
- 	  return 0;
- 	else
- 	  {
- 	    auto __impl = [&__m]<size_t... _Counts>(index_sequence<_Counts...>)
- 	      { return __m(((void) _Counts, _IndexType(0))...); };
- 	    return __impl(make_index_sequence<__rank>());
- 	  }
-       }
- 
      template<typename _Mapping, typename... _Indices>
        constexpr typename _Mapping::index_type
        __linear_index_strides(const _Mapping& __m, _Indices... __indices)
--- 1158,1163 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1637,1644 ****
  
  	template<typename _OExtents>
  	  constexpr explicit
! 	  _PaddedStorage(const typename _LayoutSame::mapping<_OExtents>&
! 			 __other)
  	  : _PaddedStorage(_Extents(__other.extents()))
  	  {
  	    constexpr size_t __stride_idx = _LayoutTraits::_S_stride_idx;
--- 1642,1649 ----
  
  	template<typename _OExtents>
  	  constexpr explicit
! 	  _PaddedStorage(
! 	      const typename _LayoutSame::template mapping<_OExtents>& __other)
  	  : _PaddedStorage(_Extents(__other.extents()))
  	  {
  	    constexpr size_t __stride_idx = _LayoutTraits::_S_stride_idx;
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/std/optional gcc-16-20251123/libstdc++-v3/include/std/optional
*** gcc-16-20251116/libstdc++-v3/include/std/optional	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/include/std/optional	Sun Nov 23 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1285,1314 ****
  	__throw_bad_optional_access();
        }
  
        template<typename _Up = remove_cv_t<_Tp>>
! 	constexpr _Tp
  	value_or(_Up&& __u) const&
  	{
! 	  static_assert(is_copy_constructible_v<_Tp>);
! 	  static_assert(is_convertible_v<_Up&&, _Tp>);
  
  	  if (this->_M_is_engaged())
  	    return this->_M_get();
! 	  else
! 	    return static_cast<_Tp>(std::forward<_Up>(__u));
  	}
  
        template<typename _Up = remove_cv_t<_Tp>>
! 	constexpr _Tp
  	value_or(_Up&& __u) &&
  	{
! 	  static_assert(is_move_constructible_v<_Tp>);
! 	  static_assert(is_convertible_v<_Up&&, _Tp>);
  
  	  if (this->_M_is_engaged())
  	    return std::move(this->_M_get());
! 	  else
! 	    return static_cast<_Tp>(std::forward<_Up>(__u));
  	}
  
  #if __cpp_lib_optional >= 202110L // C++23
--- 1285,1316 ----
  	__throw_bad_optional_access();
        }
  
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // 4406. value_or return statement is inconsistent with Mandates
        template<typename _Up = remove_cv_t<_Tp>>
! 	constexpr remove_cv_t<_Tp>
  	value_or(_Up&& __u) const&
  	{
! 	  using _Xp = remove_cv_t<_Tp>;
! 	  static_assert(is_convertible_v<const _Tp&, _Xp>);
! 	  static_assert(is_convertible_v<_Up, _Xp>);
  
  	  if (this->_M_is_engaged())
  	    return this->_M_get();
! 	  return std::forward<_Up>(__u);
  	}
  
        template<typename _Up = remove_cv_t<_Tp>>
! 	constexpr remove_cv_t<_Tp>
  	value_or(_Up&& __u) &&
  	{
! 	  using _Xp = remove_cv_t<_Tp>;
! 	  static_assert(is_convertible_v<_Tp, _Xp>);
! 	  static_assert(is_convertible_v<_Up, _Xp>);
  
  	  if (this->_M_is_engaged())
  	    return std::move(this->_M_get());
! 	  return std::forward<_Up>(__u);
  	}
  
  #if __cpp_lib_optional >= 202110L // C++23
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1726,1734 ****
  	value_or(_Up&& __u) const
  	{
  	  using _Xp = remove_cv_t<_Tp>;
! 	  static_assert(is_constructible_v<_Xp, _Tp&>);
  	  static_assert(is_convertible_v<_Up, _Xp>);
! 	  return _M_val ? *_M_val : static_cast<_Xp>(std::forward<_Up>(__u));
  	}
  
        // Monadic operations.
--- 1728,1738 ----
  	value_or(_Up&& __u) const
  	{
  	  using _Xp = remove_cv_t<_Tp>;
! 	  static_assert(is_convertible_v<_Tp&, _Xp>);
  	  static_assert(is_convertible_v<_Up, _Xp>);
! 	  if (_M_val)
! 	    return *_M_val;
! 	  return std::forward<_Up>(__u);
  	}
  
        // Monadic operations.
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/std/shared_mutex gcc-16-20251123/libstdc++-v3/include/std/shared_mutex
*** gcc-16-20251116/libstdc++-v3/include/std/shared_mutex	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/include/std/shared_mutex	Sun Nov 23 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 208,217 ****
      try_lock()
      {
        int __ret = __glibcxx_rwlock_trywrlock(&_M_rwlock);
!       if (__ret == EBUSY) return false;
!       // Errors not handled: EINVAL
        __glibcxx_assert(__ret == 0);
!       return true;
      }
  
      void
--- 208,221 ----
      try_lock()
      {
        int __ret = __glibcxx_rwlock_trywrlock(&_M_rwlock);
!       if (__ret == 0)
! 	return true;
!       if (__ret == EBUSY)
! 	return false;
!       // Errors not handled: EINVAL, EDEADLK
        __glibcxx_assert(__ret == 0);
!       // try_lock() is not permitted to throw
!       return false;
      }
  
      void
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 522,534 ****
        {
  	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  	int __ret = __glibcxx_rwlock_timedwrlock(&_M_rwlock, &__ts);
! 	// On self-deadlock, we just fail to acquire the lock.  Technically,
! 	// the program violated the precondition.
! 	if (__ret == ETIMEDOUT || __ret == EDEADLK)
  	  return false;
! 	// Errors not handled: EINVAL
  	__glibcxx_assert(__ret == 0);
! 	return true;
        }
  
  #ifdef _GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK
--- 526,538 ----
        {
  	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  	int __ret = __glibcxx_rwlock_timedwrlock(&_M_rwlock, &__ts);
! 	if (__ret == 0)
! 	  return true;
! 	if (__ret == ETIMEDOUT)
  	  return false;
! 	// Errors not handled: EINVAL, EDEADLK
  	__glibcxx_assert(__ret == 0);
! 	return false;
        }
  
  #ifdef _GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 541,553 ****
  	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  	int __ret = pthread_rwlock_clockwrlock(&_M_rwlock, CLOCK_MONOTONIC,
  					       &__ts);
! 	// On self-deadlock, we just fail to acquire the lock.  Technically,
! 	// the program violated the precondition.
! 	if (__ret == ETIMEDOUT || __ret == EDEADLK)
  	  return false;
! 	// Errors not handled: EINVAL
  	__glibcxx_assert(__ret == 0);
! 	return true;
        }
  #endif
  
--- 545,557 ----
  	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  	int __ret = pthread_rwlock_clockwrlock(&_M_rwlock, CLOCK_MONOTONIC,
  					       &__ts);
! 	if (__ret == 0)
! 	  return true;
! 	if (__ret == ETIMEDOUT)
  	  return false;
! 	// Errors not handled: EINVAL, EDEADLK
  	__glibcxx_assert(__ret == 0);
! 	return false;
        }
  #endif
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 592,609 ****
  	// acquire the lock even if it would be logically free; however, this
  	// is allowed by the standard, and we made a "strong effort"
  	// (see C++14 30.4.1.4p26).
- 	// For cases where the implementation detects a deadlock we
- 	// intentionally block and timeout so that an early return isn't
- 	// mistaken for a spurious failure, which might help users realise
- 	// there is a deadlock.
  	do
  	  __ret = __glibcxx_rwlock_timedrdlock(&_M_rwlock, &__ts);
! 	while (__ret == EAGAIN || __ret == EDEADLK);
  	if (__ret == ETIMEDOUT)
  	  return false;
! 	// Errors not handled: EINVAL
  	__glibcxx_assert(__ret == 0);
! 	return true;
        }
  
  #ifdef _GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK
--- 596,611 ----
  	// acquire the lock even if it would be logically free; however, this
  	// is allowed by the standard, and we made a "strong effort"
  	// (see C++14 30.4.1.4p26).
  	do
  	  __ret = __glibcxx_rwlock_timedrdlock(&_M_rwlock, &__ts);
! 	while (__ret == EAGAIN);
! 	if (__ret == 0)
! 	  return true;
  	if (__ret == ETIMEDOUT)
  	  return false;
! 	// Errors not handled: EINVAL, EDEADLK
  	__glibcxx_assert(__ret == 0);
! 	return false;
        }
  
  #ifdef _GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 616,628 ****
  	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  	int __ret = pthread_rwlock_clockrdlock(&_M_rwlock, CLOCK_MONOTONIC,
  					       &__ts);
! 	// On self-deadlock, we just fail to acquire the lock.  Technically,
! 	// the program violated the precondition.
! 	if (__ret == ETIMEDOUT || __ret == EDEADLK)
  	  return false;
! 	// Errors not handled: EINVAL
  	__glibcxx_assert(__ret == 0);
! 	return true;
        }
  #endif
  
--- 618,633 ----
  	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  	int __ret = pthread_rwlock_clockrdlock(&_M_rwlock, CLOCK_MONOTONIC,
  					       &__ts);
! 	// On self-deadlock, if _GLIBCXX_ASSERTIONS is not defined, we just
! 	// fail to acquire the lock.  Technically, the program violated the
! 	// precondition.
! 	if (__ret == 0)
! 	  return true;
! 	if (__ret == ETIMEDOUT)
  	  return false;
! 	// Errors not handled: EINVAL, EDEADLK
  	__glibcxx_assert(__ret == 0);
! 	return false;
        }
  #endif
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/std/type_traits gcc-16-20251123/libstdc++-v3/include/std/type_traits
*** gcc-16-20251116/libstdc++-v3/include/std/type_traits	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/include/std/type_traits	Sun Nov 23 22:32:45 2025
*************** template<typename _Ret, typename _Fn, ty
*** 4682,4688 ****
        }
  
      constexpr
!     operator decltype(auto)() const noexcept
      { return value; }
    };
  
--- 4682,4688 ----
        }
  
      constexpr
!     operator decltype(value)() const noexcept
      { return value; }
    };
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/include/std/vector gcc-16-20251123/libstdc++-v3/include/std/vector
*** gcc-16-20251116/libstdc++-v3/include/std/vector	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/include/std/vector	Sun Nov 23 22:32:45 2025
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 112,130 ****
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    template<typename _Tp, typename _Alloc, typename _Predicate>
!     constexpr typename vector<_Tp, _Alloc>::size_type
!     erase_if(vector<_Tp, _Alloc>& __cont, _Predicate __pred)
      {
-       using namespace __gnu_cxx;
-       _GLIBCXX_STD_C::vector<_Tp, _Alloc>& __ucont = __cont;
        const auto __osz = __cont.size();
!       const auto __end = __ucont.end();
!       auto __removed = std::__remove_if(__ucont.begin(), __end,
  					std::move(__pred));
        if (__removed != __end)
  	{
! 	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
! 		       __cont.end());
  	  return __osz - __cont.size();
  	}
  
--- 112,127 ----
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    template<typename _Tp, typename _Alloc, typename _Predicate>
!     constexpr typename _GLIBCXX_STD_C::vector<_Tp, _Alloc>::size_type
!     erase_if(_GLIBCXX_STD_C::vector<_Tp, _Alloc>& __cont, _Predicate __pred)
      {
        const auto __osz = __cont.size();
!       const auto __end = __cont.end();
!       auto __removed = std::__remove_if(__cont.begin(), __end,
  					std::move(__pred));
        if (__removed != __end)
  	{
! 	  __cont.erase(__removed, __end);
  	  return __osz - __cont.size();
  	}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 133,140 ****
  
    template<typename _Tp, typename _Alloc,
  	   typename _Up _GLIBCXX26_DEF_VAL_T(_Tp)>
!     constexpr typename vector<_Tp, _Alloc>::size_type
!     erase(vector<_Tp, _Alloc>& __cont, const _Up& __value)
      { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  
  _GLIBCXX_END_NAMESPACE_VERSION
--- 130,137 ----
  
    template<typename _Tp, typename _Alloc,
  	   typename _Up _GLIBCXX26_DEF_VAL_T(_Tp)>
!     constexpr typename _GLIBCXX_STD_C::vector<_Tp, _Alloc>::size_type
!     erase(_GLIBCXX_STD_C::vector<_Tp, _Alloc>& __cont, const _Up& __value)
      { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-16-20251116/libstdc++-v3/libsupc++/new gcc-16-20251123/libstdc++-v3/libsupc++/new
*** gcc-16-20251116/libstdc++-v3/libsupc++/new	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/libsupc++/new	Sun Nov 23 22:32:45 2025
*************** void* operator new[](std::size_t, void*
*** 229,243 ****
    _GLIBCXX_TXN_SAFE _GLIBCXX_USE_NOEXCEPT
  { return __p; }
  
- #undef _GLIBCXX_PLACEMENT_CONSTEXPR
- 
  // Default placement versions of operator delete.
! inline void operator delete  (void*, void*)
    _GLIBCXX_TXN_SAFE _GLIBCXX_USE_NOEXCEPT
  { }
! inline void operator delete[](void*, void*)
    _GLIBCXX_TXN_SAFE _GLIBCXX_USE_NOEXCEPT
  { }
  //@}
  } // extern "C++"
  
--- 229,244 ----
    _GLIBCXX_TXN_SAFE _GLIBCXX_USE_NOEXCEPT
  { return __p; }
  
  // Default placement versions of operator delete.
! _GLIBCXX_PLACEMENT_CONSTEXPR void operator delete  (void*, void*)
    _GLIBCXX_TXN_SAFE _GLIBCXX_USE_NOEXCEPT
  { }
! _GLIBCXX_PLACEMENT_CONSTEXPR void operator delete[](void*, void*)
    _GLIBCXX_TXN_SAFE _GLIBCXX_USE_NOEXCEPT
  { }
+ 
+ #undef _GLIBCXX_PLACEMENT_CONSTEXPR
+ 
  //@}
  } // extern "C++"
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/src/c++23/std.cc.in gcc-16-20251123/libstdc++-v3/src/c++23/std.cc.in
*** gcc-16-20251116/libstdc++-v3/src/c++23/std.cc.in	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/src/c++23/std.cc.in	Sun Nov 23 22:32:45 2025
*************** export namespace std
*** 1598,1612 ****
    using std::u32streampos;
    using std::u8streampos;
    using std::wstreampos;
-   using std::basic_osyncstream;
-   using std::basic_syncbuf;
    using std::istreambuf_iterator;
    using std::ostreambuf_iterator;
    using std::osyncstream;
    using std::syncbuf;
    using std::wosyncstream;
    using std::wsyncbuf;
!   using std::fpos;
  }
  
  // <iostream>
--- 1598,1614 ----
    using std::u32streampos;
    using std::u8streampos;
    using std::wstreampos;
    using std::istreambuf_iterator;
    using std::ostreambuf_iterator;
+   using std::fpos;
+ #ifdef __cpp_lib_syncbuf
+   using std::basic_osyncstream;
+   using std::basic_syncbuf;
    using std::osyncstream;
    using std::syncbuf;
    using std::wosyncstream;
    using std::wsyncbuf;
! #endif
  }
  
  // <iostream>
*************** export namespace std
*** 2176,2184 ****
--- 2178,2188 ----
    using std::ostream;
    using std::wostream;
    using std::operator<<;
+ #ifdef __cpp_lib_syncbuf
    using std::emit_on_flush;
    using std::noemit_on_flush;
    using std::flush_emit;
+ #endif
  }
  
  // <print>
*************** export namespace std
*** 2619,2629 ****
--- 2623,2635 ----
    using std::wsregex_token_iterator;
    namespace pmr
    {
+ #if _GLIBCXX_USE_CXX11_ABI
      using std::pmr::cmatch;
      using std::pmr::match_results;
      using std::pmr::smatch;
      using std::pmr::wcmatch;
      using std::pmr::wsmatch;
+ #endif
    }
  }
  
*************** export namespace std
*** 2849,2860 ****
--- 2855,2868 ----
    using std::wstring;
    namespace pmr
    {
+ #if _GLIBCXX_USE_CXX11_ABI
      using std::pmr::basic_string;
      using std::pmr::string;
      using std::pmr::u16string;
      using std::pmr::u32string;
      using std::pmr::u8string;
      using std::pmr::wstring;
+ #endif
    }
    using std::hash;
  }
*************** export namespace std
*** 2899,2904 ****
--- 2907,2913 ----
  // <syncstream>
  export namespace std
  {
+ #ifdef __cpp_lib_syncbuf
    using std::basic_syncbuf;
    using std::swap;
    using std::basic_osyncstream;
*************** export namespace std
*** 2906,2911 ****
--- 2915,2921 ----
    using std::syncbuf;
    using std::wosyncstream;
    using std::wsyncbuf;
+ #endif
  }
  
  // 19.5 <system_error>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/src/filesystem/ops-common.h gcc-16-20251123/libstdc++-v3/src/filesystem/ops-common.h
*** gcc-16-20251116/libstdc++-v3/src/filesystem/ops-common.h	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/src/filesystem/ops-common.h	Sun Nov 23 22:32:45 2025
*************** namespace __gnu_posix
*** 159,168 ****
      if (MoveFileExW(oldname, newname,
  		    MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED))
        return 0;
!     if (GetLastError() == ERROR_ACCESS_DENIED)
!       errno = EACCES;
!     else
!       errno = EIO;
      return -1;
    }
  
--- 159,165 ----
      if (MoveFileExW(oldname, newname,
  		    MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED))
        return 0;
!     errno = std::__last_system_error().default_error_condition().value();
      return -1;
    }
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc gcc-16-20251123/libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc	Sun Nov 16 22:35:08 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc	Sun Nov 23 22:32:45 2025
*************** void  operator delete[](void* ptr, const
*** 53,60 ****
  #endif
  CXX26_CONSTEXPR void* operator new  (std::size_t size, void* ptr) throw();
  CXX26_CONSTEXPR void* operator new[](std::size_t size, void* ptr) throw();
! void  operator delete  (void* ptr, void*) throw();
! void  operator delete[](void* ptr, void*) throw();
  
  #if __cplusplus >= 201402L
  // C++14 sized deallocation functions
--- 53,60 ----
  #endif
  CXX26_CONSTEXPR void* operator new  (std::size_t size, void* ptr) throw();
  CXX26_CONSTEXPR void* operator new[](std::size_t size, void* ptr) throw();
! CXX26_CONSTEXPR void  operator delete  (void* ptr, void*) throw();
! CXX26_CONSTEXPR void  operator delete[](void* ptr, void*) throw();
  
  #if __cplusplus >= 201402L
  // C++14 sized deallocation functions
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/20_util/function_ref/call.cc gcc-16-20251123/libstdc++-v3/testsuite/20_util/function_ref/call.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/20_util/function_ref/call.cc	Sun Nov 16 22:35:09 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/20_util/function_ref/call.cc	Sun Nov 23 22:32:45 2025
*************** int callback_ref(ftype& f, int x) { retu
*** 130,136 ****
  void
  test05()
  {
- 
    function_ref<int(int)> r1(nontype<&callback_ptr>, &twice);
    VERIFY( r1(2) == 4 );
    function_ref<int(int)> r2(nontype<&callback_ptr>, cube);
--- 130,135 ----
*************** test05()
*** 140,166 ****
    VERIFY( r3(3) == 6 );
    function_ref<int(int)> r4(nontype<&callback_ref>, cube);
    VERIFY( r4(3) == 27 );
  
!   // Checks if distinction between reference and pointer
!   // is preserved.
!   struct F
!   {
!     static
!     int operator()(ftype* f, int x)
!     { return f(x) + 1000; }
  
!     static
!     int operator()(ftype& f, int x)
!     { return f(x) + 2000; }
    };
!   function_ref<int(int)> r5(nontype<F{}>, &twice);
!   VERIFY( r5(2) == 1004 );
!   function_ref<int(int)> r6(nontype<F{}>, twice);
!   VERIFY( r6(2) == 2008 );
!   function_ref<int(int)> r7(nontype<F{}>, &cube);
!   VERIFY( r7(3) == 1006 );
!   function_ref<int(int)> r8(nontype<F{}>, cube);
!   VERIFY( r8(3) == 2027 );
  }
  
  struct Incomplete;
--- 139,241 ----
    VERIFY( r3(3) == 6 );
    function_ref<int(int)> r4(nontype<&callback_ref>, cube);
    VERIFY( r4(3) == 27 );
+ }
  
! void
! test06()
! {
!   struct S { 
!    int v;
!    int& m() { return v; }
!    const int& c() const { return v; }
  
!    int& operator()(int) { return v; }
!    int const& operator()(int, int) const { return v; }
    };
!   S s{10};
!   std::reference_wrapper<S> sr(s);
!   std::reference_wrapper<const S> csr(s);
! 
!   std::function_ref<int&(int)> e1(sr);
!   VERIFY( &e1(0) == &s.v );
!   std::function_ref<int&(int) const> e2(sr);
!   VERIFY( &e2(0) == &s.v );
!   std::function_ref<int&(int) const> e3(std::as_const(sr));
!   VERIFY( &e3(0) == &s.v );
! 
!   std::function_ref<const int&(int, int)> e4(sr);
!   VERIFY( &e4(0, 0) == &s.v );
!   std::function_ref<const int&(int, int) const> e5(sr);
!   VERIFY( &e5(0, 0) == &s.v );
!   std::function_ref<const int&(int, int)> e6(csr);
!   VERIFY( &e6(0, 0) == &s.v );
!   std::function_ref<const int&(int, int) const> e7(csr);
!   VERIFY( &e7(0, 0) == &s.v );
!   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);
!   VERIFY( &f1() == &s.v );
!   std::function_ref<const int&()> f2(std::nontype<&S::v>, sr);
!   VERIFY( &f2() == &s.v );
!   std::function_ref<int&()> f3(std::nontype<&S::m>, sr);
!   VERIFY( &f3() == &s.v );
!   std::function_ref<const int&()> f4(std::nontype<&S::c>, sr);
!   VERIFY( &f4() == &s.v );
! 
!   std::function_ref<const int&()> f5(std::nontype<&S::v>, csr);
!   VERIFY( &f5() == &s.v );
!   std::function_ref<const int&()> f6(std::nontype<&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::function_ref<int&()> f7(std::nontype<&S::v>, std::as_const(sr));
!   VERIFY( &f7() == &s.v );
!   std::function_ref<const int&()> f8(std::nontype<&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>>
!   );
!   static_assert( !std::is_constructible_v<
!     std::function_ref<int&()>,
!     std::nontype_t<&S::v>, std::reference_wrapper<const S>>
!   );
! 
!   // reference to reference_wrapper are bound, so mutation are visible
!   S s2{20};
!   sr = s2;
!   csr = s2;
!   VERIFY( &e1(0) == &s2.v );
!   VERIFY( &e2(0) == &s2.v );
!   VERIFY( &e3(0) == &s2.v );
!   VERIFY( &e4(0, 0) == &s2.v );
!   VERIFY( &e5(0, 0) == &s2.v );
!   VERIFY( &e6(0, 0) == &s2.v );
!   VERIFY( &e7(0, 0) == &s2.v );
!   VERIFY( &e8(0, 0) == &s2.v );
!   VERIFY( &f1() == &s2.v );
!   VERIFY( &f2() == &s2.v );
!   VERIFY( &f3() == &s2.v );
!   VERIFY( &f4() == &s2.v );
!   VERIFY( &f5() == &s2.v );
!   VERIFY( &f6() == &s2.v );
!   VERIFY( &f7() == &s2.v );
!   VERIFY( &f8() == &s2.v );
! 
!   constexpr auto id = []<typename T>(const std::reference_wrapper<T>& x)
!   { return &x; };
! 
!   // identity of reference_wrapper is preserved
!   std::function_ref<const std::reference_wrapper<S>*()> g1(std::nontype<id>, sr);
!   VERIFY( g1() == &sr );
!   std::function_ref<const std::reference_wrapper<const S>*()> g2(std::nontype<id>, csr);
!   VERIFY( g2() == &csr );
  }
  
  struct Incomplete;
*************** int main()
*** 182,186 ****
--- 257,263 ----
    test02();
    test03();
    test04();
+   test05();
+   test06();
    test_params();
  }
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/int_like.h gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/int_like.h
*** gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/int_like.h	Sun Nov 16 22:35:18 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/int_like.h	Sun Nov 23 22:32:47 2025
*************** enum class CustomIndexKind
*** 9,15 ****
    RValue,
  };
  
! template<CustomIndexKind Kind>
    class CustomIndexType
    {
    public:
--- 9,15 ----
    RValue,
  };
  
! template<CustomIndexKind Kind, bool Copyable = false>
    class CustomIndexType
    {
    public:
*************** template<CustomIndexKind Kind>
*** 18,32 ****
      : value(i)
      { }
  
!     CustomIndexType() = delete;
!     CustomIndexType(const CustomIndexType&) = delete;
!     CustomIndexType(CustomIndexType&&) = delete;
  
!     const CustomIndexType&
!     operator=(const CustomIndexType&) = delete;
  
!     const CustomIndexType&
!     operator=(CustomIndexType&&) = delete;
  
      constexpr
      operator int() const noexcept
--- 18,41 ----
      : value(i)
      { }
  
!     CustomIndexType() requires(Copyable) = default;
!     CustomIndexType() requires(!Copyable) = delete;
  
!     CustomIndexType(const CustomIndexType&) requires(Copyable) = default;
!     CustomIndexType(const CustomIndexType&) requires(!Copyable) = delete;
  
!     CustomIndexType(CustomIndexType&&) requires(Copyable) = default;
!     CustomIndexType(CustomIndexType&&) requires(!Copyable) = delete;
! 
!     CustomIndexType&
!     operator=(const CustomIndexType&) requires(Copyable) = default;
!     CustomIndexType&
!     operator=(const CustomIndexType&) requires(!Copyable) = delete;
! 
!     CustomIndexType&
!     operator=(CustomIndexType&&) requires(Copyable) = default;
!     CustomIndexType&
!     operator=(CustomIndexType&&) requires(!Copyable) = delete;
  
      constexpr
      operator int() const noexcept
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layout_traits.h gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layout_traits.h
*** gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layout_traits.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layout_traits.h	Sun Nov 23 22:32:47 2025
***************
*** 0 ****
--- 1,192 ----
+ #ifndef TEST_MDSPAN_LAYOUT_TRAITS_H
+ #define TEST_MDSPAN_LAYOUT_TRAITS_H
+ 
+ #include <algorithm>
+ 
+ enum class PaddingSide
+ {
+   Left,
+   Right
+ };
+ 
+ template<typename Layout>
+   constexpr static bool is_left_padded = false;
+ 
+ #if __cplusplus > 202302L
+ template<size_t PaddingValue>
+   constexpr static bool is_left_padded<std::layout_left_padded<PaddingValue>>
+     = true;
+ #endif
+ 
+ template<typename Layout>
+   constexpr static bool is_right_padded = false;
+ 
+ #if __cplusplus > 202302L
+ template<size_t PaddingValue>
+   constexpr static bool is_right_padded<std::layout_right_padded<PaddingValue>>
+     = true;
+ #endif
+ 
+ template<typename Layout>
+   constexpr bool
+   is_padded_layout = is_left_padded<Layout> || is_right_padded<Layout>;
+ 
+ #if __cplusplus > 202302L
+ template<PaddingSide Side, typename Layout>
+   constexpr bool
+   is_same_padded;
+ 
+ template<typename Layout>
+   constexpr bool
+   is_same_padded<PaddingSide::Left, Layout> = is_left_padded<Layout>;
+ 
+ template<typename Layout>
+   constexpr bool
+   is_same_padded<PaddingSide::Right, Layout> = is_right_padded<Layout>;
+ 
+ template<typename Extents>
+   constexpr auto
+   dynamic_extents_array(const Extents& exts)
+   {
+     std::array<typename Extents::index_type, Extents::rank()> ret;
+     for(size_t i = 0; i < Extents::rank(); ++i)
+       ret[i] = exts.extent(i);
+     return ret;
+   }
+ 
+ struct DeducePaddingSide
+ {
+   template<template<size_t> typename Layout>
+     constexpr static PaddingSide
+     from_template()
+     {
+       if constexpr (std::same_as<Layout<0>, std::layout_left_padded<0>>)
+ 	return PaddingSide::Left;
+       else
+ 	return PaddingSide::Right;
+     }
+ 
+   template<typename Layout>
+     constexpr static PaddingSide
+     from_typename()
+     {
+       if constexpr (std::same_as<Layout, std::layout_left>)
+ 	return PaddingSide::Left;
+       else if constexpr (is_left_padded<Layout>)
+ 	return PaddingSide::Left;
+       else
+ 	return PaddingSide::Right;
+     }
+ };
+ 
+ template<PaddingSide Side>
+   struct LayoutTraits;
+ 
+ template<>
+   struct LayoutTraits<PaddingSide::Left>
+   {
+     using layout_same = std::layout_left;
+     using layout_other = std::layout_right;
+ 
+     template<typename Extents>
+       using extents_type = Extents;
+ 
+     template<typename Extents>
+       constexpr static extents_type<Extents>
+       make_extents(const Extents& exts)
+       { return exts; }
+ 
+     template<typename T, size_t N>
+       constexpr static std::array<T, N>
+       make_array(const std::array<T, N>& a)
+       { return a; }
+ 
+     template<typename... Indices>
+       constexpr static auto
+       make_indices(Indices... indices)
+       { return std::array{indices...}; }
+ 
+     template<typename... Ts>
+       constexpr static std::tuple<Ts...>
+       make_tuple(const std::tuple<Ts...>& tup)
+       { return tup; }
+ 
+     template<typename Mapping>
+       constexpr static auto
+       padded_stride(const Mapping& m)
+       { return m.stride(1); }
+ 
+     template<typename Extents>
+       constexpr static auto
+       padded_extent(const Extents& exts)
+       { return exts.extent(0); }
+   };
+ 
+ template<>
+   struct LayoutTraits<PaddingSide::Right>
+   {
+     using layout_same = std::layout_right;
+     using layout_other = std::layout_left;
+ 
+     template<typename IndexType, size_t... Extents>
+       constexpr static auto
+       make_extents(const std::extents<IndexType, Extents...>& exts)
+       {
+ 	constexpr size_t rank = sizeof...(Extents);
+ 	auto impl = [&]<size_t... I>(std::index_sequence<I...>)
+ 	{
+ 	  auto dyn_exts = make_array(dynamic_extents_array(exts));
+ 	  return std::extents<IndexType, Extents...[rank - 1 - I]...>(dyn_exts);
+ 	};
+ 	return impl(std::make_index_sequence<rank>());
+       }
+ 
+     template<typename Extents>
+       using extents_type = decltype(make_extents(std::declval<Extents>()));
+ 
+     template<typename T, size_t N>
+       constexpr static std::array<T, N>
+       make_array(std::array<T, N> a)
+       {
+ 	std::ranges::reverse(a);
+ 	return a;
+       }
+ 
+     template<typename... Indices>
+       constexpr static auto
+       make_indices(Indices... indices)
+       { return make_array(std::array{indices...}); }
+ 
+     template<typename... Ts>
+       constexpr static auto
+       make_tuple(const std::tuple<Ts...>& tup)
+       {
+ 	constexpr size_t rank = sizeof...(Ts);
+ 	auto impl = [&]<size_t... I>(std::index_sequence<I...>)
+ 	{
+ 	  auto idx = [rank](size_t i) consteval
+ 	  { return rank - 1 - i; };
+ 	  return std::tuple<Ts...[idx(I)]...>{get<idx(I)>(tup)...};
+ 	};
+ 	return impl(std::make_index_sequence<rank>());
+       }
+ 
+     template<typename Mapping>
+       constexpr static auto
+       padded_stride(const Mapping& m)
+       {
+ 	auto rank = Mapping::extents_type::rank();
+ 	return m.stride(rank - 2);
+       }
+ 
+     template<typename Extents>
+       constexpr static auto
+       padded_extent(const Extents& exts)
+       {
+ 	auto rank = Extents::rank();
+ 	return exts.extent(rank - 1);
+       }
+   };
+ 
+ #endif
+ #endif
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc	Sun Nov 16 22:35:18 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc	Sun Nov 23 22:32:47 2025
***************
*** 1,7 ****
  // { dg-do run { target c++23 } }
  #include <mdspan>
  
! #include "padded_traits.h"
  #include <cstdint>
  #include <testsuite_hooks.h>
  
--- 1,7 ----
  // { dg-do run { target c++23 } }
  #include <mdspan>
  
! #include "../layout_traits.h"
  #include <cstdint>
  #include <testsuite_hooks.h>
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc	Sun Nov 16 22:35:18 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc	Sun Nov 23 22:32:47 2025
***************
*** 2,8 ****
  #include <mdspan>
  
  #include "../int_like.h"
! #include "padded_traits.h"
  #include <cstdint>
  #include <testsuite_hooks.h>
  
--- 2,8 ----
  #include <mdspan>
  
  #include "../int_like.h"
! #include "../layout_traits.h"
  #include <cstdint>
  #include <testsuite_hooks.h>
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc	Sun Nov 16 22:35:18 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc	Sun Nov 23 22:32:47 2025
***************
*** 3,9 ****
  
  #include <cstdint>
  #include "../int_like.h"
! #include "padded_traits.h"
  #include <testsuite_hooks.h>
  
  constexpr size_t dyn = std::dynamic_extent;
--- 3,9 ----
  
  #include <cstdint>
  #include "../int_like.h"
! #include "../layout_traits.h"
  #include <testsuite_hooks.h>
  
  constexpr size_t dyn = std::dynamic_extent;
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc	Sun Nov 16 22:35:18 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc	Sun Nov 23 22:32:47 2025
***************
*** 1,7 ****
  // { dg-do compile { target c++26 } }
  #include <mdspan>
  
! #include "padded_traits.h"
  #include <cstdint>
  
  constexpr size_t dyn = std::dynamic_extent;
--- 1,7 ----
  // { dg-do compile { target c++26 } }
  #include <mdspan>
  
! #include "../layout_traits.h"
  #include <cstdint>
  
  constexpr size_t dyn = std::dynamic_extent;
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_traits.h gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_traits.h
*** gcc-16-20251116/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_traits.h	Sun Nov 16 22:35:18 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_traits.h	Thu Jan  1 00:00:00 1970
***************
*** 1,149 ****
- #ifndef TEST_MDSPAN_PADDED_TRAITS_H
- #define TEST_MDSPAN_PADDED_TRAITS_H
- 
- #include <algorithm>
- 
- template<typename Layout>
-   constexpr static bool is_left_padded = false;
- 
- #if __cplusplus > 202302L
- template<size_t PaddingValue>
-   constexpr static bool is_left_padded<std::layout_left_padded<PaddingValue>>
-     = true;
- #endif
- 
- template<typename Layout>
-   constexpr static bool is_right_padded = false;
- 
- #if __cplusplus > 202302L
- template<size_t PaddingValue>
-   constexpr static bool is_right_padded<std::layout_right_padded<PaddingValue>>
-     = true;
- #endif
- 
- template<typename Layout>
-   constexpr bool
-   is_padded_layout = is_left_padded<Layout> || is_right_padded<Layout>;
- 
- #if __cplusplus > 202302L
- template<typename Extents>
-   constexpr auto
-   dynamic_extents_array(const Extents& exts)
-   {
-     std::array<typename Extents::index_type, Extents::rank()> ret;
-     for(size_t i = 0; i < Extents::rank(); ++i)
-       ret[i] = exts.extent(i);
-     return ret;
-   }
- 
- enum class PaddingSide
- {
-   Left,
-   Right
- };
- 
- struct DeducePaddingSide
- {
-   template<template<size_t> typename Layout>
-     constexpr static PaddingSide
-     from_template()
-     {
-       if constexpr (std::same_as<Layout<0>, std::layout_left_padded<0>>)
- 	return PaddingSide::Left;
-       else
- 	return PaddingSide::Right;
-     }
- 
-   template<typename Layout>
-     constexpr static PaddingSide
-     from_typename()
-     {
-       if constexpr (is_left_padded<Layout>)
- 	return PaddingSide::Left;
-       else
- 	return PaddingSide::Right;
-     }
- };
- 
- template<PaddingSide Side>
-   struct LayoutTraits;
- 
- template<>
-   struct LayoutTraits<PaddingSide::Left>
-   {
-     using layout_same = std::layout_left;
-     using layout_other = std::layout_right;
- 
-     template<typename Extents>
-       using extents_type = Extents;
- 
-     template<typename Extents>
-       constexpr static extents_type<Extents>
-       make_extents(const Extents& exts)
-       { return exts; }
- 
-     template<typename T, size_t N>
-       constexpr static std::array<T, N>
-       make_array(const std::array<T, N>& expected)
-       { return expected; }
- 
-     template<typename Mapping>
-       constexpr static auto
-       padded_stride(const Mapping& m)
-       { return m.stride(1); }
- 
-     template<typename Extents>
-       constexpr static auto
-       padded_extent(const Extents& exts)
-       { return exts.extent(0); }
-   };
- 
- template<>
-   struct LayoutTraits<PaddingSide::Right>
-   {
-     using layout_same = std::layout_right;
-     using layout_other = std::layout_left;
- 
-     template<typename IndexType, size_t... Extents>
-       constexpr static auto
-       make_extents(const std::extents<IndexType, Extents...>& exts)
-       {
- 	constexpr size_t rank = sizeof...(Extents);
- 	auto impl = [&]<size_t... I>(std::index_sequence<I...>)
- 	{
- 	  auto dyn_exts = make_array(dynamic_extents_array(exts));
- 	  return std::extents<IndexType, Extents...[rank - 1 - I]...>(dyn_exts);
- 	};
- 	return impl(std::make_index_sequence<rank>());
-       }
- 
-     template<typename Extents>
-       using extents_type = decltype(make_extents(std::declval<Extents>()));
- 
-     template<typename T, size_t N>
-       constexpr static std::array<T, N>
-       make_array(std::array<T, N> a)
-       {
- 	std::ranges::reverse(a);
- 	return a;
-       }
- 
-     template<typename Mapping>
-       constexpr static auto
-       padded_stride(const Mapping& m)
-       {
- 	auto rank = Mapping::extents_type::rank();
- 	return m.stride(rank - 2);
-       }
- 
-     template<typename Extents>
-       constexpr static auto
-       padded_extent(const Extents& exts)
-       {
- 	auto rank = Extents::rank();
- 	return exts.extent(rank - 1);
-       }
-   };
- 
- #endif
- #endif
--- 0 ----
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/23_containers/vector/debug/erase.cc gcc-16-20251123/libstdc++-v3/testsuite/23_containers/vector/debug/erase.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/23_containers/vector/debug/erase.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libstdc++-v3/testsuite/23_containers/vector/debug/erase.cc	Sun Nov 23 22:32:47 2025
***************
*** 0 ****
--- 1,27 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-debug-mode "" }
+ 
+ #include <vector>
+ #include <testsuite_hooks.h>
+ 
+ void test01()
+ {
+   std::vector<int> v;
+ 
+   for (int i = 0; i != 10; ++i)
+     v.push_back(i);
+ 
+   auto before = v.begin() + 4;
+   auto last = v.end() - 1;
+ 
+   VERIFY( std::erase(v, 6) == 1 );
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/erase.cc gcc-16-20251123/libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/erase.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/erase.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/erase.cc	Sun Nov 23 22:32:47 2025
***************
*** 0 ****
--- 1,28 ----
+ // { dg-do run { target c++20 } }
+ 
+ #include <debug/vector>
+ #include <testsuite_hooks.h>
+ 
+ using __gnu_debug::vector;
+ 
+ void test01()
+ {
+   vector<int> v;
+ 
+   for (int i = 0; i != 10; ++i)
+     v.push_back(i);
+ 
+   auto before = v.begin() + 4;
+   auto last = v.end() -1;
+ 
+   VERIFY( std::erase(v, 6) == 1 );
+ 
+   VERIFY(before._M_dereferenceable());
+   VERIFY(last._M_singular());
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/4.cc gcc-16-20251123/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/4.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/4.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251123/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/4.cc	Sun Nov 23 22:32:48 2025
***************
*** 0 ****
--- 1,22 ----
+ // { dg-do run { target c++26 } }
+ 
+ #include <istream>
+ #include <sstream>
+ #include <string>
+ #include <testsuite_hooks.h>
+ 
+ void test01() {
+   std::istringstream in("\xF0\x9F\xA4\xA1 Clown Face");
+   in.ignore(100, '\xA1');
+   VERIFY(in.gcount() == 4);
+   VERIFY(in.peek() == ' ');
+ 
+   std::string str;
+   in >> str;
+   VERIFY(str == "Clown");
+ }
+ 
+ int main() {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/93672.cc gcc-16-20251123/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/93672.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/93672.cc	Sun Nov 16 22:35:20 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/93672.cc	Sun Nov 23 22:32:48 2025
*************** test_pr93672() // std::basic_istream::ig
*** 20,28 ****
    VERIFY( in.gcount() == 3 );
    VERIFY( ! in.eof() );
  
!   // This only works if char is unsigned.
    in.ignore(100, '\xfe');
!   if (std::numeric_limits<char>::is_signed)
    {
      // When char is signed, '\xfe' != traits_type::to_int_type('\xfe')
      // so the delimiter does not match the character in the input sequence,
--- 20,28 ----
    VERIFY( in.gcount() == 3 );
    VERIFY( ! in.eof() );
  
!   // Prior to C++26 (P3223R2), this only works if char is unsigned.
    in.ignore(100, '\xfe');
!   if (std::numeric_limits<char>::is_signed && __cplusplus <= 202302L)
    {
      // When char is signed, '\xfe' != traits_type::to_int_type('\xfe')
      // so the delimiter does not match the character in the input sequence,
*************** test_primary_template()
*** 69,77 ****
    VERIFY( in.gcount() == 3 );
    VERIFY( ! in.eof() );
  
!   // This only works if char is unsigned.
    in.ignore(100, '\xfe');
!   if (std::numeric_limits<char>::is_signed)
    {
      // When char is signed, '\xfe' != traits_type::to_int_type('\xfe')
      // so the delimiter does not match the character in the input sequence,
--- 69,77 ----
    VERIFY( in.gcount() == 3 );
    VERIFY( ! in.eof() );
  
!   // Prior to C++26 (P3223R2), this only works if char is unsigned.
    in.ignore(100, '\xfe');
!   if (std::numeric_limits<char>::is_signed && __cplusplus <= 202302L)
    {
      // When char is signed, '\xfe' != traits_type::to_int_type('\xfe')
      // so the delimiter does not match the character in the input sequence,
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc gcc-16-20251123/libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc	Sun Nov 16 22:35:21 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc	Sun Nov 23 22:32:48 2025
*************** test_directories()
*** 170,179 ****
--- 170,189 ----
    fs::remove_all(dir, ec);
  }
  
+ void
+ test_pr122726()
+ {
+   std::error_code ec;
+   const auto nonesuch = __gnu_test::nonexistent_path();
+   fs::rename(nonesuch, "new-name", ec);
+   VERIFY( ec == std::make_error_code(std::errc::no_such_file_or_directory) );
+ }
+ 
  int
  main()
  {
    test01();
    test_symlinks();
    test_directories();
+   test_pr122726();
  }
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc gcc-16-20251123/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc
*** gcc-16-20251116/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc	Sun Nov 16 22:35:21 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc	Sun Nov 23 22:32:49 2025
*************** namespace chrono = std::chrono;
*** 23,28 ****
--- 23,44 ----
  #define VERIFY_IN_NEW_THREAD(X) \
    (void) std::async(std::launch::async, [&] { VERIFY(X); })
  
+ // Unfortunately POSIX says that pthread_rwlock_clockwrlock,
+ // pthread_rwlock_clockrdlock, pthread_rwlock_timedwrlock and
+ // pthread_rwlock_timedrdlock are allowed to deadlock rather than return
+ // EDEADLK or just time out if the thread already has the associated lock. This
+ // means that we can't enable the deadlock tests by default. The glibc
+ // implementation does return EDEADLK and __shared_mutex_cv times out so we can
+ // test both of them.
+ #if (defined(__GLIBC__) || ! (_GLIBCXX_USE_PTHREAD_RWLOCK_T && _GTHREAD_USE_MUTEX_TIMEDLOCK)) \
+   && ! defined(_GLIBCXX_ASSERTIONS)
+ #define DEADLOCK_VERIFY(X) \
+   VERIFY(X)
+ #else
+ #define DEADLOCK_VERIFY(X) \
+   do {} while(0)
+ #endif
+ 
  template <typename Clock>
  void
  test_exclusive_absolute(chrono::nanoseconds offset)
*************** test_exclusive_absolute(chrono::nanoseco
*** 30,35 ****
--- 46,57 ----
    std::shared_timed_mutex stm;
    chrono::time_point<Clock> tp(offset);
    VERIFY(stm.try_lock_until(tp));
+ 
+   // Trying to acquire the same long on the same thread
+   DEADLOCK_VERIFY(!stm.try_lock_until(tp));
+ 
+   // Check that false is returned on timeouts even if the implementation
+   // returned EDEADLK above by trying to lock on a different thread.
    VERIFY_IN_NEW_THREAD(!stm.try_lock_until(tp));
  }
  
*************** test_shared_absolute(chrono::nanoseconds
*** 43,48 ****
--- 65,71 ----
    stm.unlock_shared();
  
    VERIFY(stm.try_lock_for(chrono::seconds{10}));
+   DEADLOCK_VERIFY(!stm.try_lock_shared_until(tp));
    VERIFY_IN_NEW_THREAD(!stm.try_lock_shared_until(tp));
  }
  
*************** test_exclusive_relative(chrono::nanoseco
*** 56,61 ****
--- 79,85 ----
    std::shared_timed_mutex stm;
    const auto d = -Clock::now().time_since_epoch() + offset;
    VERIFY(stm.try_lock_for(d));
+   DEADLOCK_VERIFY(!stm.try_lock_for(d));
    VERIFY_IN_NEW_THREAD(!stm.try_lock_for(d));
  }
  
*************** test_shared_relative(chrono::nanoseconds
*** 69,74 ****
--- 93,99 ----
    stm.unlock_shared();
    // Should complete immediately
    VERIFY(stm.try_lock_for(chrono::seconds{10}));
+   DEADLOCK_VERIFY(!stm.try_lock_shared_for(d));
    VERIFY_IN_NEW_THREAD(!stm.try_lock_shared_for(d));
  }
  
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_allocator.h gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_allocator.h
*** gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_allocator.h	Sun Nov 16 22:35:22 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_allocator.h	Sun Nov 23 22:32:50 2025
***************
*** 26,39 ****
  #ifndef _GLIBCXX_TESTSUITE_ALLOCATOR_H
  #define _GLIBCXX_TESTSUITE_ALLOCATOR_H
  
- #include <bits/move.h>
- #include <ext/pointer.h>
- #include <ext/alloc_traits.h>
- #include <testsuite_hooks.h>
  #if __cplusplus >= 201703L
  # include <memory_resource>
  # include <new>
  #endif
  
  #if __cplusplus >= 201103L
  # include <unordered_map>
--- 26,39 ----
  #ifndef _GLIBCXX_TESTSUITE_ALLOCATOR_H
  #define _GLIBCXX_TESTSUITE_ALLOCATOR_H
  
  #if __cplusplus >= 201703L
  # include <memory_resource>
  # include <new>
  #endif
+ #include <bits/move.h>
+ #include <ext/pointer.h>
+ #include <ext/alloc_traits.h>
+ #include <testsuite_hooks.h>
  
  #if __cplusplus >= 201103L
  # include <unordered_map>
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_common_types.h gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_common_types.h
*** gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_common_types.h	Sun Nov 16 22:35:22 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_common_types.h	Sun Nov 23 22:32:50 2025
***************
*** 22,35 ****
  #ifndef _TESTSUITE_COMMON_TYPES_H
  #define _TESTSUITE_COMMON_TYPES_H 1
  
- #include <ext/typelist.h>
- 
- #include <ext/new_allocator.h>
- #include <ext/malloc_allocator.h>
- #include <ext/mt_allocator.h>
- #include <ext/bitmap_allocator.h>
- #include <ext/pool_allocator.h>
- 
  #include <algorithm>
  
  #include <vector>
--- 22,27 ----
*************** namespace unord = std;
*** 53,58 ****
--- 45,58 ----
  namespace unord = std::tr1;
  #endif
  
+ #include <ext/typelist.h>
+ 
+ #include <ext/new_allocator.h>
+ #include <ext/malloc_allocator.h>
+ #include <ext/mt_allocator.h>
+ #include <ext/bitmap_allocator.h>
+ #include <ext/pool_allocator.h>
+ 
  namespace __gnu_test
  {
    using __gnu_cxx::typelist::null_type;
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_containers.h gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_containers.h
*** gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_containers.h	Sun Nov 16 22:35:22 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_containers.h	Sun Nov 23 22:32:50 2025
***************
*** 20,29 ****
  #ifndef _GLIBCXX_TESTSUITE_CONTAINERS_H
  #define _GLIBCXX_TESTSUITE_CONTAINERS_H
  
- #include <bits/boost_concept_check.h>
  #include <cassert>
- #include <testsuite_container_traits.h>
  #include <utility> // for rel_ops.
  
  // Container requirement testing.
  namespace __gnu_test
--- 20,29 ----
  #ifndef _GLIBCXX_TESTSUITE_CONTAINERS_H
  #define _GLIBCXX_TESTSUITE_CONTAINERS_H
  
  #include <cassert>
  #include <utility> // for rel_ops.
+ #include <bits/boost_concept_check.h>
+ #include <testsuite_container_traits.h>
  
  // Container requirement testing.
  namespace __gnu_test
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_error.h gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_error.h
*** gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_error.h	Sun Nov 16 22:35:22 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_error.h	Sun Nov 23 22:32:50 2025
***************
*** 19,30 ****
  // <http://www.gnu.org/licenses/>.
  //
  
- #include <string>
- #include <testsuite_hooks.h>
- 
  #ifndef _TESTSUITE_ERROR_H
  #define _TESTSUITE_ERROR_H 1
  
  namespace __gnu_test
  {
    struct test_category : public std::error_category
--- 19,31 ----
  // <http://www.gnu.org/licenses/>.
  //
  
  #ifndef _TESTSUITE_ERROR_H
  #define _TESTSUITE_ERROR_H 1
  
+ #include <string>
+ #include <system_error>
+ #include <testsuite_hooks.h>
+ 
  namespace __gnu_test
  {
    struct test_category : public std::error_category
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_greedy_ops.h gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
*** gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_greedy_ops.h	Sun Nov 16 22:35:22 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_greedy_ops.h	Sun Nov 23 22:32:50 2025
***************
*** 15,20 ****
--- 15,22 ----
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
+ #include <cstddef>
+ 
  namespace greedy_ops
  {
    struct X
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_iterators.h gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_iterators.h
*** gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_iterators.h	Sun Nov 16 22:35:22 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_iterators.h	Sun Nov 23 22:32:50 2025
***************
*** 31,37 ****
  #include <bits/stl_iterator_base_types.h>
  
  #if __cplusplus >= 201103L
! #include <bits/move.h>
  #endif
  
  #if __cplusplus > 201703L
--- 31,37 ----
  #include <bits/stl_iterator_base_types.h>
  
  #if __cplusplus >= 201103L
! #include <utility>
  #endif
  
  #if __cplusplus > 201703L
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_new_operators.h gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_new_operators.h
*** gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_new_operators.h	Sun Nov 16 22:35:22 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_new_operators.h	Sun Nov 23 22:32:50 2025
***************
*** 23,28 ****
--- 23,29 ----
  #define _GLIBCXX_TESTSUITE_NEW_OPERATORS_H
  
  #include <new>
+ #include <cstdlib>
  #include <testsuite_hooks.h>
  
  namespace __gnu_test
diff -Nrcpad gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_random.h gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_random.h
*** gcc-16-20251116/libstdc++-v3/testsuite/util/testsuite_random.h	Sun Nov 16 22:35:22 2025
--- gcc-16-20251123/libstdc++-v3/testsuite/util/testsuite_random.h	Sun Nov 23 22:32:50 2025
***************
*** 27,32 ****
--- 27,33 ----
  #include <cmath>
  #include <initializer_list>
  #include <system_error>
+ #include <random>
  #include <testsuite_hooks.h>
  
  namespace __gnu_test
