diff -Nrcpad gcc-16-20250608/ChangeLog gcc-16-20250615/ChangeLog
*** gcc-16-20250608/ChangeLog	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/ChangeLog	Sun Jun 15 22:32:22 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-06-09  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* configure.ac: Special case cpu_type for x86_64.
+ 	* configure: Regenerate.
+ 
+ 2025-06-09  Peter Bergner  <bergner@tenstorrent.com>
+ 
+ 	* MAINTAINERS: Update my email address and add myself to DCO.
+ 
  2025-05-28  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
  
  	* Makefile.def: Fix typo in cpu_type
diff -Nrcpad gcc-16-20250608/LAST_UPDATED gcc-16-20250615/LAST_UPDATED
*** gcc-16-20250608/LAST_UPDATED	Sun Jun  8 22:33:06 2025
--- gcc-16-20250615/LAST_UPDATED	Sun Jun 15 22:34:33 2025
***************
*** 1 ****
! Obtained from git: master revision fd042192094c456e275c53dfe92383bec1e9fca3
--- 1 ----
! Obtained from git: master revision afe3401f2e73e21d0e54ea8529642e37ae4a23d5
diff -Nrcpad gcc-16-20250608/MAINTAINERS gcc-16-20250615/MAINTAINERS
*** gcc-16-20250608/MAINTAINERS	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/MAINTAINERS	Sun Jun 15 22:32:22 2025
*************** loop optimizer          Zdenek Dvorak
*** 308,314 ****
  LTO                     Richard Biener          <rguenther@suse.de>
  LTO plugin              Cary Coutant            <ccoutant@gmail.com>
  Plugin                  Le-Chun Wu              <lcwu@google.com>
! register allocation     Peter Bergner           <bergner@linux.ibm.com>
  register allocation     Kenneth Zadeck          <zadeck@naturalbridge.com>
  register allocation     Seongbae Park           <seongbae.park@gmail.com>
  riscv port              Robin Dapp              <rdapp.gcc@gmail.com>
--- 308,314 ----
  LTO                     Richard Biener          <rguenther@suse.de>
  LTO plugin              Cary Coutant            <ccoutant@gmail.com>
  Plugin                  Le-Chun Wu              <lcwu@google.com>
! register allocation     Peter Bergner           <bergner@tenstorrent.com>
  register allocation     Kenneth Zadeck          <zadeck@naturalbridge.com>
  register allocation     Seongbae Park           <seongbae.park@gmail.com>
  riscv port              Robin Dapp              <rdapp.gcc@gmail.com>
*************** Serge Belyshev                  -
*** 358,364 ****
  Jon Beniston                    jbeniston       <jon@beniston.com>
  Andrew Bennett                  -               <andrew.bennett@imgtec.com>
  Andrew Benson                   abensonca       <abensonca@gmail.com>
! Peter Bergner                   bergner         <bergner@linux.ibm.com>
  Daniel Berlin                   dberlin         <dberlin@dberlin.org>
  Pat Bernardi                    -               <bernardi@adacore.com>
  Jan Beulich                     -               <jbeulich@suse.com>
--- 358,364 ----
  Jon Beniston                    jbeniston       <jon@beniston.com>
  Andrew Bennett                  -               <andrew.bennett@imgtec.com>
  Andrew Benson                   abensonca       <abensonca@gmail.com>
! Peter Bergner                   bergner         <bergner@tenstorrent.com>
  Daniel Berlin                   dberlin         <dberlin@dberlin.org>
  Pat Bernardi                    -               <bernardi@adacore.com>
  Jan Beulich                     -               <jbeulich@suse.com>
*************** information.
*** 934,939 ****
--- 934,940 ----
  
  
  Soumya AR                                       <soumyaa@nvidia.com>
+ Peter Bergner                                   <bergner@tenstorrent.com>
  Dhruv Chawla                                    <dhruvc@nvidia.com>
  Juergen Christ                                  <jchrist@linux.ibm.com>
  Giuseppe D'Angelo                               <giuseppe.dangelo@kdab.com>
diff -Nrcpad gcc-16-20250608/MD5SUMS gcc-16-20250615/MD5SUMS
*** gcc-16-20250608/MD5SUMS	Sun Jun  8 22:33:11 2025
--- gcc-16-20250615/MD5SUMS	Sun Jun 15 22:34:46 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20250608.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-20250615.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
*************** b8acb527560fc760209d200fcfab8ff4  .githu
*** 21,32 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! afe3eaf79848eca6a6d105020da15682  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! c999c3e0f02d4dd064244f894c042eed  LAST_UPDATED
! 1fae9b30243be44edfe4dbd7ea871d5f  MAINTAINERS
  95166ed050922b15d201d1fa647b5872  Makefile.def
  20b3d34e305ceb74fbf9ce3f1e57817f  Makefile.in
  3893d3761aa0864c071907a44196451c  Makefile.tpl
--- 21,32 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 2b29272c42f59a7ae9462445dd333847  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 5eecfcc93e1096e84e337d00e2a2c177  LAST_UPDATED
! 0243224447499a1a62c0125937291a7c  MAINTAINERS
  95166ed050922b15d201d1fa647b5872  Makefile.def
  20b3d34e305ceb74fbf9ce3f1e57817f  Makefile.in
  3893d3761aa0864c071907a44196451c  Makefile.tpl
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 152,159 ****
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
! 590e146a5e50931917f0605919922c2e  configure
! 065787892aa35b33dbf17a4247974de1  configure.ac
  ee0613335cef93cc6f0f9375ce947171  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
--- 152,159 ----
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
! 399886ce72246f57551e00eee98a3e61  configure
! 548ae1da0b97f26d2041de7ce6ae9ef1  configure.ac
  ee0613335cef93cc6f0f9375ce947171  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 516,522 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 170d6999c098000505b1b4df07e81d40  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 516,522 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 3873264dd1afb6d446a7e6a7df3c48f2  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 553,559 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! cbc2c5b04839d60fddb7d974bf3dcbfc  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 553,559 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 6c26a70fb6984b95bb58ad99775542fc  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 565,571 ****
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! bfe18d536e7a7349f47ade1bb4cabea9  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 565,571 ----
  cd96bf34cb76c97f86704a59b9ddb18a  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! e50df584b55e226265f40d5821021286  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** eea9961506181531b5f7f1a7f62fe428  gcc/ad
*** 594,600 ****
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  597f68d7246e635c0cd3df7099ec272c  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 06318e40670cb23770edfb3c41c57db7  gcc/ada/Makefile.rtl
  db7e461b5b214c390e35d18397979f74  gcc/ada/accessibility.adb
  fbd3226b85f1e1cc6eb250fa51de4be1  gcc/ada/accessibility.ads
  80867b66cbed2dba054564ea216b3c66  gcc/ada/ada_get_targ.adb
--- 594,600 ----
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  597f68d7246e635c0cd3df7099ec272c  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! f9a43fc9d1cd806374fd057b920c4688  gcc/ada/Makefile.rtl
  db7e461b5b214c390e35d18397979f74  gcc/ada/accessibility.adb
  fbd3226b85f1e1cc6eb250fa51de4be1  gcc/ada/accessibility.ads
  80867b66cbed2dba054564ea216b3c66  gcc/ada/ada_get_targ.adb
*************** f8207765beac36c54d43698a11140afa  gcc/ad
*** 614,621 ****
  5470386a6301c0323b6ee66cf06c1e42  gcc/ada/argv.c
  f2493dd09ce42a8a76ba82606b9e20e3  gcc/ada/aspects.adb
  500f0e117b0f8111522576a7ee43f9ba  gcc/ada/aspects.ads
! 71af88eaac340e2660d84b235840a7e7  gcc/ada/atree.adb
! db711c218cedf511b576abcdcf0a8023  gcc/ada/atree.ads
  1a5f952bcb9d3c3529147729f3c4ef61  gcc/ada/atree.h
  557d2d802d51833ba752f2b05e30c591  gcc/ada/aux-io.c
  3ebdc86e765e129f74ed1b9a39f9e4b9  gcc/ada/back_end.adb
--- 614,621 ----
  5470386a6301c0323b6ee66cf06c1e42  gcc/ada/argv.c
  f2493dd09ce42a8a76ba82606b9e20e3  gcc/ada/aspects.adb
  500f0e117b0f8111522576a7ee43f9ba  gcc/ada/aspects.ads
! de33fbd78c165b8c499863445926b90c  gcc/ada/atree.adb
! 22eb9e0e7ad34e07a5de2091f598ad71  gcc/ada/atree.ads
  1a5f952bcb9d3c3529147729f3c4ef61  gcc/ada/atree.h
  557d2d802d51833ba752f2b05e30c591  gcc/ada/aux-io.c
  3ebdc86e765e129f74ed1b9a39f9e4b9  gcc/ada/back_end.adb
*************** f963647952269416533799c6a5117ea3  gcc/ad
*** 660,669 ****
  4c0942bba88f786dffff9a3575759026  gcc/ada/cio.c
  10b93c3ec680bbe04e70ea0e2fb09ac7  gcc/ada/clean.adb
  90ca544c6bc4527aa56ac34e3e2ee7bc  gcc/ada/clean.ads
! 78db9cfd345ee93d918787a8dcf8a3db  gcc/ada/comperr.adb
  b819ca6fd93695993d2656d2edc4cc8c  gcc/ada/comperr.ads
  7f9ac0dab1302fd2696f52755a30ca56  gcc/ada/config-lang.in
! 85a4bf4830efad1a454b880ee6992af4  gcc/ada/contracts.adb
  08509704a245c7fb15ecf43481261825  gcc/ada/contracts.ads
  09a5213fb46479fc00bc1e507f07c02d  gcc/ada/csets.adb
  c8fc2a7d00b9bdf2dfb05cf0fc1c945f  gcc/ada/csets.ads
--- 660,669 ----
  4c0942bba88f786dffff9a3575759026  gcc/ada/cio.c
  10b93c3ec680bbe04e70ea0e2fb09ac7  gcc/ada/clean.adb
  90ca544c6bc4527aa56ac34e3e2ee7bc  gcc/ada/clean.ads
! ddaad54eb95ed435f61f53c447d79c9a  gcc/ada/comperr.adb
  b819ca6fd93695993d2656d2edc4cc8c  gcc/ada/comperr.ads
  7f9ac0dab1302fd2696f52755a30ca56  gcc/ada/config-lang.in
! be457e4923d2083550c66061c7e4d1e9  gcc/ada/contracts.adb
  08509704a245c7fb15ecf43481261825  gcc/ada/contracts.ads
  09a5213fb46479fc00bc1e507f07c02d  gcc/ada/csets.adb
  c8fc2a7d00b9bdf2dfb05cf0fc1c945f  gcc/ada/csets.ads
*************** c8fc2a7d00b9bdf2dfb05cf0fc1c945f  gcc/ad
*** 671,691 ****
  d5cdeee41f4cce7791ad47380e922eac  gcc/ada/cstand.ads
  1812c1cc859b55d34f8be50223970490  gcc/ada/cstreams.c
  453f1af3f48533612fca76f44afc9122  gcc/ada/ctrl_c.c
! 2eb3a5cf504a1385e2a605640e078654  gcc/ada/debug.adb
  c13504ec17d3c6cecfc69808385f8273  gcc/ada/debug.ads
! 3398a4e389029b7fd2bf6a8164342c1b  gcc/ada/debug_a.adb
  af445affacf9cfc99e3eb8ee82b8b7f0  gcc/ada/debug_a.ads
  e985c86f5eb27a1af5221f7338ac92cb  gcc/ada/doc/Makefile
  a012e0cb5df366014b5a4988036a509a  gcc/ada/doc/gnat-style.rst
  a279ed6487990a204e636674f9c44623  gcc/ada/doc/gnat_rm.rst
  c4f5f27a027adfe3db5b39193542c956  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 03a7202c57cef976220b7181c2d40fe1  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  c2ce843af1cfd3f0c588b2a488ad8d45  gcc/ada/doc/gnat_rm/implementation_advice.rst
  816ee84af198e8336bad5e72516ebfb6  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
  bb7b0bdc9f2695b217d3f45b46312a67  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! 35142133e742fa186bfd55cb5410b013  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
  0b2c04c089a7da32cee28133b96b2979  gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
--- 671,691 ----
  d5cdeee41f4cce7791ad47380e922eac  gcc/ada/cstand.ads
  1812c1cc859b55d34f8be50223970490  gcc/ada/cstreams.c
  453f1af3f48533612fca76f44afc9122  gcc/ada/ctrl_c.c
! 1090d46bce1c661463543c18005d13eb  gcc/ada/debug.adb
  c13504ec17d3c6cecfc69808385f8273  gcc/ada/debug.ads
! d5598c70c14c05fdc521df6eaab25b4c  gcc/ada/debug_a.adb
  af445affacf9cfc99e3eb8ee82b8b7f0  gcc/ada/debug_a.ads
  e985c86f5eb27a1af5221f7338ac92cb  gcc/ada/doc/Makefile
  a012e0cb5df366014b5a4988036a509a  gcc/ada/doc/gnat-style.rst
  a279ed6487990a204e636674f9c44623  gcc/ada/doc/gnat_rm.rst
  c4f5f27a027adfe3db5b39193542c956  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 684a8ce6811bef53086abed46b2ceb33  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  c2ce843af1cfd3f0c588b2a488ad8d45  gcc/ada/doc/gnat_rm/implementation_advice.rst
  816ee84af198e8336bad5e72516ebfb6  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
  bb7b0bdc9f2695b217d3f45b46312a67  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! 7cb87fd519689d7c4b9e78c3ccb4afb8  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
  0b2c04c089a7da32cee28133b96b2979  gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst
  1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  454fb365cfb751d8e03b8e972d3abef1  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
*************** a8608ebf71444d2564728c8a41283e03  gcc/ad
*** 700,715 ****
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  97271c06a675f62b05d2a744164c36e1  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 51fc68e006809f4713b28789602dfc35  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2bd1b4bce35f627e35f3316337a622f2  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  56a5718b224a18464cc8f770c1288a14  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  6f289cabdb2ee5e2e1818f135c23020e  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! 39521c37ba9c354cd3fd0a709dd191e4  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
  d05e426d95c24c54af666c18b1fb547c  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
  f7e7179ad111262b98d743c63002bc82  gcc/ada/doc/gnat_ugn/inline_assembler.rst
  fb97e551cf32ed76280cd4f8cd40825c  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! b22b25b6bbe956bdaade83d68f531b1a  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
  32b64eb2bfda56adcea7d1f563bee6bb  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
--- 700,715 ----
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  97271c06a675f62b05d2a744164c36e1  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 06b93e736451a55e7c56e9289ad1924c  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2bd1b4bce35f627e35f3316337a622f2  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  56a5718b224a18464cc8f770c1288a14  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  6f289cabdb2ee5e2e1818f135c23020e  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! f67a4cd7fabedae45b6da4cbdc834202  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
  d05e426d95c24c54af666c18b1fb547c  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
  f7e7179ad111262b98d743c63002bc82  gcc/ada/doc/gnat_ugn/inline_assembler.rst
  fb97e551cf32ed76280cd4f8cd40825c  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! dabdb39aa357ff33aa282a1d08e32586  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
  32b64eb2bfda56adcea7d1f563bee6bb  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
*************** c7da61a05156d50b4888cdfaae4241d0  gcc/ad
*** 717,726 ****
  0a025bfec2a94c0fcd11a19d18f6c0c5  gcc/ada/doc/share/gnu_free_documentation_license.rst
  f1c71b64e1c84e240c7b5aea7331a32a  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! 6a10f5a8d9b175eff673860ce98e771e  gcc/ada/einfo-utils.adb
  fdeb0b11ed378cc91d79b0c88e2d35a0  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! 5f9e5ecec27b8e454ad9abdceb3267f5  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
--- 717,726 ----
  0a025bfec2a94c0fcd11a19d18f6c0c5  gcc/ada/doc/share/gnu_free_documentation_license.rst
  f1c71b64e1c84e240c7b5aea7331a32a  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! 399b87c697ee167fa98ffc4817e53009  gcc/ada/einfo-utils.adb
  fdeb0b11ed378cc91d79b0c88e2d35a0  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! f92277f4bc7a9a116872ab44d1462fa2  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
*************** a80fb9a618c7fddbe7b6dc69f99ce507  gcc/ad
*** 745,755 ****
  b270d994d3afc78b194d5ab9ddd800c0  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! cde85a47971a24bf4266cad3029866c8  gcc/ada/exp_aggr.adb
  cc3a6ec62bea106872aef6143609f920  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! f7a3b70408009c68a87885bfcce0ee88  gcc/ada/exp_attr.adb
  16622dd90fd58bfbfa68224d0bfaf8b2  gcc/ada/exp_attr.ads
  4cb08de59df5f8d0a124038dcbb392f0  gcc/ada/exp_cg.adb
  b18d9873e8e43583acd0e69ba6635023  gcc/ada/exp_cg.ads
--- 745,755 ----
  b270d994d3afc78b194d5ab9ddd800c0  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! 316cd181d203c7271daf259a3e7f913b  gcc/ada/exp_aggr.adb
  cc3a6ec62bea106872aef6143609f920  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 56271997261e93236b61701f82c27c14  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
*** 762,774 ****
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
  d037443d1b61c02110e124f3c701b449  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! 9d7aadd5c8618bdb562f1d592a7f1802  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! 5166898bc18b924de378fcf6bf9acb01  gcc/ada/exp_ch4.adb
  689dbf89ad9d44a03b54f8ce05455a31  gcc/ada/exp_ch4.ads
  c642a1d7102316f2db8b308db52c324b  gcc/ada/exp_ch5.adb
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
! 3b455b92cb2aac43de03ec9bb9548c81  gcc/ada/exp_ch6.adb
  c22c79787fe7516adb5a4c55613fb6ab  gcc/ada/exp_ch6.ads
  2dc46f230b6e63c0bfff64ad173315b8  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
--- 762,774 ----
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
  d037443d1b61c02110e124f3c701b449  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! 430177829c6f568d66c2af86d41e9d8b  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! 4b4b353b43ef4e8cc2da3eb9d03e7cd1  gcc/ada/exp_ch4.adb
  689dbf89ad9d44a03b54f8ce05455a31  gcc/ada/exp_ch4.ads
  c642a1d7102316f2db8b308db52c324b  gcc/ada/exp_ch5.adb
  3564a044f1e9954ffdd8d3a48643fff9  gcc/ada/exp_ch5.ads
! 498f4216a108a6694a2ec6b1263e95e6  gcc/ada/exp_ch6.adb
  c22c79787fe7516adb5a4c55613fb6ab  gcc/ada/exp_ch6.ads
  2dc46f230b6e63c0bfff64ad173315b8  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
*************** f47ce79d25dbb4d2f5cc6c375ee8c103  gcc/ad
*** 780,786 ****
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
  c5f46927bfde5cfdba7070186c0a3890  gcc/ada/exp_dbug.adb
  7d55b512bc6b963b537cd44b692b8a54  gcc/ada/exp_dbug.ads
! ad6d5aa3f46cecc1cc7e6f14db186364  gcc/ada/exp_disp.adb
  00b2b98f2a8868fd7a89f79c72a645ac  gcc/ada/exp_disp.ads
  f8d7c73c2eb136405382e9f889d15683  gcc/ada/exp_dist.adb
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
--- 780,786 ----
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
  c5f46927bfde5cfdba7070186c0a3890  gcc/ada/exp_dbug.adb
  7d55b512bc6b963b537cd44b692b8a54  gcc/ada/exp_dbug.ads
! 4d1c737cea17039b99b988cf0cea6cd4  gcc/ada/exp_disp.adb
  00b2b98f2a8868fd7a89f79c72a645ac  gcc/ada/exp_disp.ads
  f8d7c73c2eb136405382e9f889d15683  gcc/ada/exp_dist.adb
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
*************** b042ff9582cb94caab7f476203ea6809  gcc/ad
*** 808,814 ****
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! 1e00656efd969a5f815c25222da3d359  gcc/ada/exp_util.adb
  8b222934ed10101bc9553a5d06edfabb  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
--- 808,814 ----
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  17c1e6db56a29cef37eb0acfa2e2176f  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! d75609807a4f81aac40088147e5d3873  gcc/ada/exp_util.adb
  8b222934ed10101bc9553a5d06edfabb  gcc/ada/exp_util.ads
  3bba6a658c16a14ec3297c802dcde881  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
*************** fdb9382a8288a3a5b805910a0a3615e8  gcc/ad
*** 823,831 ****
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 5913021b0e7be38bc774d1f62a438aaf  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
! 94e87c9cab4c338fd7a9cd7f89adbc90  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  7cb990da5787a02f58f48506632b9364  gcc/ada/gcc-interface/Make-lang.in
  d35232c0fa372b2e71ab7add32118b39  gcc/ada/gcc-interface/Makefile.in
--- 823,831 ----
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! aad2a318697514ee6e576768c075fc0e  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
! c6d8bff803673243e76f3e9aa705e974  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
  7cb990da5787a02f58f48506632b9364  gcc/ada/gcc-interface/Make-lang.in
  d35232c0fa372b2e71ab7add32118b39  gcc/ada/gcc-interface/Makefile.in
*************** b5542229d5cce6dd4fff7dc4ba8e789b  gcc/ad
*** 836,842 ****
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! 1410ead8845c3bdca36756999821990a  gcc/ada/gcc-interface/decl.cc
  fa1feb51010fc73b933487acbdcf85e8  gcc/ada/gcc-interface/gadaint.h
  846fe3bd3db6658b85769bf0216e74fb  gcc/ada/gcc-interface/gigi.h
  8c3391ec25d2f8a3e26b0553d537d3e2  gcc/ada/gcc-interface/lang-specs.h
--- 836,842 ----
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! bb15bd1c30b57164a06f30870cc17083  gcc/ada/gcc-interface/decl.cc
  fa1feb51010fc73b933487acbdcf85e8  gcc/ada/gcc-interface/gadaint.h
  846fe3bd3db6658b85769bf0216e74fb  gcc/ada/gcc-interface/gigi.h
  8c3391ec25d2f8a3e26b0553d537d3e2  gcc/ada/gcc-interface/lang-specs.h
*************** b350a6fd65cafe8bd47dc42192437310  gcc/ad
*** 849,855 ****
  90c13ab8fddf99cd6e0d1b118cd0ff54  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  002ae905acd15b48a8167d2a8f49837e  gcc/ada/gen_il-fields.ads
! c187319af37add821b1e8f4b4275aef2  gcc/ada/gen_il-gen-gen_entities.adb
  2c5fe8d6eefdc25c0d34c009f715ac95  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
--- 849,855 ----
  90c13ab8fddf99cd6e0d1b118cd0ff54  gcc/ada/gcc-interface/utils.cc
  7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
  002ae905acd15b48a8167d2a8f49837e  gcc/ada/gen_il-fields.ads
! fb142ddf14cbdab14a576d82e5a28ea9  gcc/ada/gen_il-gen-gen_entities.adb
  2c5fe8d6eefdc25c0d34c009f715ac95  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
*************** ceea56f2846e3f170ecd0707ee0cd771  gcc/ad
*** 872,884 ****
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! 5625aaf41f8676e40d5f04b3c5d1925d  gcc/ada/gnat_rm.texi
! 58602c9f8c3582c43d6bd3a3648d2456  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  aef32d71626b4170f80d299f2304d737  gcc/ada/gnatchop.adb
  e7512e43fd2370e49f1edc56ff00f814  gcc/ada/gnatclean.adb
! 89b18e049a1fd18c70b9d115163279a3  gcc/ada/gnatcmd.adb
  6afc1784ef0e925e97f76e206a607a43  gcc/ada/gnatcmd.ads
  3be98883e79ac8778761757067407253  gcc/ada/gnatdll.adb
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
--- 872,884 ----
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! ed0a2e0060ec653da871c39278e974f6  gcc/ada/gnat_rm.texi
! 4975e843b934671456d54fd5268bcf53  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  aef32d71626b4170f80d299f2304d737  gcc/ada/gnatchop.adb
  e7512e43fd2370e49f1edc56ff00f814  gcc/ada/gnatclean.adb
! e64260fbaff3aa9311d96a900d6fae59  gcc/ada/gnatcmd.adb
  6afc1784ef0e925e97f76e206a607a43  gcc/ada/gnatcmd.ads
  3be98883e79ac8778761757067407253  gcc/ada/gnatdll.adb
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
*************** ea767dec8fd43eff8cefde339b3a7d04  gcc/ad
*** 909,915 ****
  8c188167519fcde228e7406b86ad3c4f  gcc/ada/indepsw.ads
  d2ce4522ff8bfb72ff1063aca82c855d  gcc/ada/init.c
  c45e7a63e33e0bdb85ff3e50d0220aa4  gcc/ada/initialize.c
! d1947f2d5ce1c8689dab6210e1b74bcb  gcc/ada/inline.adb
  91cdabaa5b703885dad7b8dc5df17446  gcc/ada/inline.ads
  8d71a48789cbec10ceabfe68770803c1  gcc/ada/itypes.adb
  f62835b6268c11341ad683753a9d7acd  gcc/ada/itypes.ads
--- 909,915 ----
  8c188167519fcde228e7406b86ad3c4f  gcc/ada/indepsw.ads
  d2ce4522ff8bfb72ff1063aca82c855d  gcc/ada/init.c
  c45e7a63e33e0bdb85ff3e50d0220aa4  gcc/ada/initialize.c
! 776795c6db0b5f873e9232530439ef3e  gcc/ada/inline.adb
  91cdabaa5b703885dad7b8dc5df17446  gcc/ada/inline.ads
  8d71a48789cbec10ceabfe68770803c1  gcc/ada/itypes.adb
  f62835b6268c11341ad683753a9d7acd  gcc/ada/itypes.ads
*************** b6ab6aa41e1a35af588f7ac62bd68af4  gcc/ad
*** 930,937 ****
  2db0cbf7507c9f00553b185968d7acaa  gcc/ada/lib-xref-spark_specific.adb
  c46c7909c69914753823cfbfb23fa8a4  gcc/ada/lib-xref.adb
  2011d6e281dc4b4ce8a65a6fbc96b843  gcc/ada/lib-xref.ads
! fc5fc8c03612cddf005a40a6b30b8c26  gcc/ada/lib.adb
! bba49c8bfd5f579293bd160f074a57b1  gcc/ada/lib.ads
  2d8ce9872083b9f641e37150d0bb18f1  gcc/ada/libgnarl/a-astaco.adb
  c13d27ec688dfebb1965a8e9eaf55c2c  gcc/ada/libgnarl/a-astaco.ads
  66247d074eecb4270e7cf01d16e0cfce  gcc/ada/libgnarl/a-dinopr.ads
--- 930,937 ----
  2db0cbf7507c9f00553b185968d7acaa  gcc/ada/lib-xref-spark_specific.adb
  c46c7909c69914753823cfbfb23fa8a4  gcc/ada/lib-xref.adb
  2011d6e281dc4b4ce8a65a6fbc96b843  gcc/ada/lib-xref.ads
! ee63fdb3ca4df4a9cad69e92f237a483  gcc/ada/lib.adb
! 8eac5bd4baeed5186e713cfc7e942dda  gcc/ada/lib.ads
  2d8ce9872083b9f641e37150d0bb18f1  gcc/ada/libgnarl/a-astaco.adb
  c13d27ec688dfebb1965a8e9eaf55c2c  gcc/ada/libgnarl/a-astaco.ads
  66247d074eecb4270e7cf01d16e0cfce  gcc/ada/libgnarl/a-dinopr.ads
*************** d9322225886886bb45307ab213ae42e8  gcc/ad
*** 1072,1078 ****
  c490e53799847d22dca76f3aa82718e7  gcc/ada/libgnarl/s-qnx.ads
  814bcd91d4b539d7bd20024c8c507881  gcc/ada/libgnarl/s-solita.adb
  4d820958426efff634a0d493ff53d34a  gcc/ada/libgnarl/s-solita.ads
! 3fcc109ac10c373ba2e23de8fe4368a6  gcc/ada/libgnarl/s-stusta.adb
  b11059929f065d4d1e1b673b9277fa04  gcc/ada/libgnarl/s-stusta.ads
  c89a036a39ffacecc45eb509f8bb6772  gcc/ada/libgnarl/s-taasde.adb
  3927a6965bb4832625cd9b69d3e143b0  gcc/ada/libgnarl/s-taasde.ads
--- 1072,1078 ----
  c490e53799847d22dca76f3aa82718e7  gcc/ada/libgnarl/s-qnx.ads
  814bcd91d4b539d7bd20024c8c507881  gcc/ada/libgnarl/s-solita.adb
  4d820958426efff634a0d493ff53d34a  gcc/ada/libgnarl/s-solita.ads
! 1cdf5498ce5d53d47910c453b7520e08  gcc/ada/libgnarl/s-stusta.adb
  b11059929f065d4d1e1b673b9277fa04  gcc/ada/libgnarl/s-stusta.ads
  c89a036a39ffacecc45eb509f8bb6772  gcc/ada/libgnarl/s-taasde.adb
  3927a6965bb4832625cd9b69d3e143b0  gcc/ada/libgnarl/s-taasde.ads
*************** d9e67392d088be95d8027e3251a3ee89  gcc/ad
*** 1970,1977 ****
  4eec987c4098e35fb8ac13024eb48e2b  gcc/ada/libgnat/i-cexten.ads
  cff8dee2c592630c4764985fef999d4d  gcc/ada/libgnat/i-cexten__128.ads
  d2b5ac22236fcd922870df00cdbf5223  gcc/ada/libgnat/i-cheri-exceptions.ads
! 19d3d67cddfd92db2701acc000620f03  gcc/ada/libgnat/i-cheri.adb
! 3d0dea389d95b3ad906faea1de30e2ac  gcc/ada/libgnat/i-cheri.ads
  5e4322639a89e1c8d6ad573cc90c78d2  gcc/ada/libgnat/i-cobol.adb
  84003d299b51e75110957816395cead1  gcc/ada/libgnat/i-cobol.ads
  7a48f9d159f9a5e900433ec1de58c451  gcc/ada/libgnat/i-cpoint.adb
--- 1970,1977 ----
  4eec987c4098e35fb8ac13024eb48e2b  gcc/ada/libgnat/i-cexten.ads
  cff8dee2c592630c4764985fef999d4d  gcc/ada/libgnat/i-cexten__128.ads
  d2b5ac22236fcd922870df00cdbf5223  gcc/ada/libgnat/i-cheri-exceptions.ads
! 6c8c239b7162945998b3000bb5c44715  gcc/ada/libgnat/i-cheri.adb
! 715600e1ae852deba1c294df3f8ea069  gcc/ada/libgnat/i-cheri.ads
  5e4322639a89e1c8d6ad573cc90c78d2  gcc/ada/libgnat/i-cobol.adb
  84003d299b51e75110957816395cead1  gcc/ada/libgnat/i-cobol.ads
  7a48f9d159f9a5e900433ec1de58c451  gcc/ada/libgnat/i-cpoint.adb
*************** cc5297f972e4a3f07144e2b1bb3733a0  gcc/ad
*** 2102,2111 ****
  a81631c191854fe1926c005a464af396  gcc/ada/libgnat/s-dlmkio.ads
  96bff4e524a9236611b7411226602d35  gcc/ada/libgnat/s-dlmopr.ads
  876a98345bb63026812a2c8e4addb91a  gcc/ada/libgnat/s-dmotpr.ads
! e11206c9f0d02dcd3d94966937eebc40  gcc/ada/libgnat/s-dorepr.adb
! b01c3a0c2539d638203ea1b90e18d64e  gcc/ada/libgnat/s-dorepr__fma.adb
  4d528424421585e18b2d22bdde89cb4b  gcc/ada/libgnat/s-dorepr__freebsd.adb
! 7b6f51cb3a109dda2586b064edec48be  gcc/ada/libgnat/s-dourea.adb
  4763b5f304cf8156e3a866ce4ea1c455  gcc/ada/libgnat/s-dourea.ads
  2654f7f798aa6b6284b7f6771f4f6d8d  gcc/ada/libgnat/s-dsaser.ads
  3e781036600adf86098ec5566c389b4d  gcc/ada/libgnat/s-dwalin.adb
--- 2102,2111 ----
  a81631c191854fe1926c005a464af396  gcc/ada/libgnat/s-dlmkio.ads
  96bff4e524a9236611b7411226602d35  gcc/ada/libgnat/s-dlmopr.ads
  876a98345bb63026812a2c8e4addb91a  gcc/ada/libgnat/s-dmotpr.ads
! 73aa1ea17d87987fe902a124fe2a08de  gcc/ada/libgnat/s-dorepr.adb
! b0b674397e26b47a258b47ad3b083697  gcc/ada/libgnat/s-dorepr__fma.adb
  4d528424421585e18b2d22bdde89cb4b  gcc/ada/libgnat/s-dorepr__freebsd.adb
! 8930dc9ab66638afc307f0a959893637  gcc/ada/libgnat/s-dourea.adb
  4763b5f304cf8156e3a866ce4ea1c455  gcc/ada/libgnat/s-dourea.ads
  2654f7f798aa6b6284b7f6771f4f6d8d  gcc/ada/libgnat/s-dsaser.ads
  3e781036600adf86098ec5566c389b4d  gcc/ada/libgnat/s-dwalin.adb
*************** fb8ce448fc18100b7ab3696a970cefef  gcc/ad
*** 2579,2587 ****
  d7ef7e182a1e37222a10286b201abda7  gcc/ada/libgnat/s-scaval.ads
  8de14d068ceff95cf4226f50bcfe6a69  gcc/ada/libgnat/s-scaval__128.adb
  faf834df5906c5c44a11bf2e1714010c  gcc/ada/libgnat/s-scaval__128.ads
! 360a0e644022a2ea5c4c1a658e454b7c  gcc/ada/libgnat/s-secsta.adb
  c357811accaff09385431aded29b40aa  gcc/ada/libgnat/s-secsta.ads
! 677f7165ecde0a07422fe01be0e28a48  gcc/ada/libgnat/s-secsta__cheri.adb
  f3707f4d20aaf91eaf7ae4cbf0c0885c  gcc/ada/libgnat/s-sequio.adb
  63640562aa4ba92f5b0c26c9ab31bde5  gcc/ada/libgnat/s-sequio.ads
  26cec890209604c8977bd0d2e5a3dd93  gcc/ada/libgnat/s-shabig.ads
--- 2579,2587 ----
  d7ef7e182a1e37222a10286b201abda7  gcc/ada/libgnat/s-scaval.ads
  8de14d068ceff95cf4226f50bcfe6a69  gcc/ada/libgnat/s-scaval__128.adb
  faf834df5906c5c44a11bf2e1714010c  gcc/ada/libgnat/s-scaval__128.ads
! 876500b7bd5ae341d29edd03ede3e352  gcc/ada/libgnat/s-secsta.adb
  c357811accaff09385431aded29b40aa  gcc/ada/libgnat/s-secsta.ads
! 8923ca1cf291ad3db7e9cb9ec3ed49e4  gcc/ada/libgnat/s-secsta__cheri.adb
  f3707f4d20aaf91eaf7ae4cbf0c0885c  gcc/ada/libgnat/s-sequio.adb
  63640562aa4ba92f5b0c26c9ab31bde5  gcc/ada/libgnat/s-sequio.ads
  26cec890209604c8977bd0d2e5a3dd93  gcc/ada/libgnat/s-shabig.ads
*************** e8b447e367bf8205851754fb0d292c3b  gcc/ad
*** 2645,2653 ****
  75d45d82769474f83acd719876bcf588  gcc/ada/libgnat/s-vaen16.ads
  061f0c0a8ef4f685066dda97a512a9f0  gcc/ada/libgnat/s-vaen32.ads
  36c7ca618282c8b251797e302b8c5c7c  gcc/ada/libgnat/s-vaenu8.ads
! 4e4f501fde79b03325a9d25aa424ad30  gcc/ada/libgnat/s-vafi128.ads
! 33fa912b6e83aee9a3244edfd59cb9b2  gcc/ada/libgnat/s-vafi32.ads
! c6ce2a87517245b2b27cf41ac77b3192  gcc/ada/libgnat/s-vafi64.ads
  bd1e2f33b6e3175f145dbbbbdfe14a8b  gcc/ada/libgnat/s-valboo.adb
  09056f453fdbbc3e1840bc7f855887f1  gcc/ada/libgnat/s-valboo.ads
  865ed67e2f17553b1372b878d89e6011  gcc/ada/libgnat/s-valcha.adb
--- 2645,2653 ----
  75d45d82769474f83acd719876bcf588  gcc/ada/libgnat/s-vaen16.ads
  061f0c0a8ef4f685066dda97a512a9f0  gcc/ada/libgnat/s-vaen32.ads
  36c7ca618282c8b251797e302b8c5c7c  gcc/ada/libgnat/s-vaenu8.ads
! 0bcb9b58295bfaa68ca44d0bdc99f384  gcc/ada/libgnat/s-vafi128.ads
! 5929c4be6ac485342252a7acb69833f5  gcc/ada/libgnat/s-vafi32.ads
! c85f2633e8a8a149fcd02526d028ff62  gcc/ada/libgnat/s-vafi64.ads
  bd1e2f33b6e3175f145dbbbbdfe14a8b  gcc/ada/libgnat/s-valboo.adb
  09056f453fdbbc3e1840bc7f855887f1  gcc/ada/libgnat/s-valboo.ads
  865ed67e2f17553b1372b878d89e6011  gcc/ada/libgnat/s-valcha.adb
*************** ebc5cf7d12e00dad27cc95ef08f3f9ed  gcc/ad
*** 2665,2682 ****
  baff4dd34c4f5608ef7d05eb895f4d41  gcc/ada/libgnat/s-valllu.ads
  7ce9f4a2290eaae020364a5e782ac01f  gcc/ada/libgnat/s-valrea.adb
  fea79505753dcfddbdd4bb7e6c817f95  gcc/ada/libgnat/s-valrea.ads
! ea5e9da8ebce11c805cb17d0f233f416  gcc/ada/libgnat/s-valued.adb
  6878604d7169687d8b0559a0c882290b  gcc/ada/libgnat/s-valued.ads
! a8ff28e37c96c283d18cc665773d4f7d  gcc/ada/libgnat/s-valuef.adb
  f57876720eb8101aa21c0b11bb083f4d  gcc/ada/libgnat/s-valuef.ads
  bcb3e97ba193bfaf7461ab85f04edbf8  gcc/ada/libgnat/s-valuei.adb
  8832c4d9879450406361af7a50cddfea  gcc/ada/libgnat/s-valuei.ads
  45d076789f772670210823137d7e95c5  gcc/ada/libgnat/s-valuen.adb
  085c74c7ed0d273025dda1e9056c2660  gcc/ada/libgnat/s-valuen.ads
! e41e17197bed6190fc6f971c052c2023  gcc/ada/libgnat/s-valuer.adb
  23b00738ace44d22300c5217e54626db  gcc/ada/libgnat/s-valuer.ads
! 4b21a224eefd654da8aa5bc01f79fa3c  gcc/ada/libgnat/s-valueu.adb
! d6a76c3100b6447ab174f6f9af69360a  gcc/ada/libgnat/s-valueu.ads
  462e5a0207eadc68a181a16d2d3e355f  gcc/ada/libgnat/s-valuns.adb
  d84639603cc842a686b7bf0bd746a6ac  gcc/ada/libgnat/s-valuns.ads
  e2d7afeb57e030893c1ea16a3a2f1a47  gcc/ada/libgnat/s-valuti.adb
--- 2665,2682 ----
  baff4dd34c4f5608ef7d05eb895f4d41  gcc/ada/libgnat/s-valllu.ads
  7ce9f4a2290eaae020364a5e782ac01f  gcc/ada/libgnat/s-valrea.adb
  fea79505753dcfddbdd4bb7e6c817f95  gcc/ada/libgnat/s-valrea.ads
! 5ecd3b0aa5c8165e2e4087620bf19923  gcc/ada/libgnat/s-valued.adb
  6878604d7169687d8b0559a0c882290b  gcc/ada/libgnat/s-valued.ads
! 0ababf498f072f23acc7c6d8fd9d5fde  gcc/ada/libgnat/s-valuef.adb
  f57876720eb8101aa21c0b11bb083f4d  gcc/ada/libgnat/s-valuef.ads
  bcb3e97ba193bfaf7461ab85f04edbf8  gcc/ada/libgnat/s-valuei.adb
  8832c4d9879450406361af7a50cddfea  gcc/ada/libgnat/s-valuei.ads
  45d076789f772670210823137d7e95c5  gcc/ada/libgnat/s-valuen.adb
  085c74c7ed0d273025dda1e9056c2660  gcc/ada/libgnat/s-valuen.ads
! 33bf84c4c4d0a3bcd98299ecce7e1bb6  gcc/ada/libgnat/s-valuer.adb
  23b00738ace44d22300c5217e54626db  gcc/ada/libgnat/s-valuer.ads
! 07ee239b017de40c720d59c339f5cd91  gcc/ada/libgnat/s-valueu.adb
! 2948787a3a76d44aff2ff1c1e4ad5a24  gcc/ada/libgnat/s-valueu.ads
  462e5a0207eadc68a181a16d2d3e355f  gcc/ada/libgnat/s-valuns.adb
  d84639603cc842a686b7bf0bd746a6ac  gcc/ada/libgnat/s-valuns.ads
  e2d7afeb57e030893c1ea16a3a2f1a47  gcc/ada/libgnat/s-valuti.adb
*************** df5aa0dd04daf543efbc0f72adda7a9a  gcc/ad
*** 2799,2812 ****
  8b3ea8a8e93333d3199fe382c5a9bb29  gcc/ada/mutably_tagged.ads
  7f39a63ae2aca38a1e09b830d8298e42  gcc/ada/namet-sp.adb
  6bcaf8f1c19dc69c747c2d495b341d5f  gcc/ada/namet-sp.ads
! a2481c3bfe8c5089ac1f678f5143f367  gcc/ada/namet.adb
! f1fb5ee4bc7f8cd768266621e3fbf941  gcc/ada/namet.ads
  29e83737754a1fc58d053ff18161216c  gcc/ada/namet.h
  cd6c342cc127610beca7bb72cbcc907a  gcc/ada/nlists.adb
  aef70af2835279de8e33b52eb8375d45  gcc/ada/nlists.ads
  276eb125c0df313227d9ecfb3f38866d  gcc/ada/nlists.h
  e3945121c34a6169efa63d13c280b7e7  gcc/ada/opt.adb
! 81c7437cfdf356a69e28e5dc844cdfc0  gcc/ada/opt.ads
  fcbd079f712fd349c109f5ecd640096b  gcc/ada/osint-b.adb
  2604c4a51297a9867c69ce9985c3fb8b  gcc/ada/osint-b.ads
  4f31614f93bd69a85fe6c1f144e04b37  gcc/ada/osint-c.adb
--- 2799,2812 ----
  8b3ea8a8e93333d3199fe382c5a9bb29  gcc/ada/mutably_tagged.ads
  7f39a63ae2aca38a1e09b830d8298e42  gcc/ada/namet-sp.adb
  6bcaf8f1c19dc69c747c2d495b341d5f  gcc/ada/namet-sp.ads
! a4956470ecf7bd2e59eb59dae80d58c7  gcc/ada/namet.adb
! 7cba394c4c7b16e5c30f213574c52f7f  gcc/ada/namet.ads
  29e83737754a1fc58d053ff18161216c  gcc/ada/namet.h
  cd6c342cc127610beca7bb72cbcc907a  gcc/ada/nlists.adb
  aef70af2835279de8e33b52eb8375d45  gcc/ada/nlists.ads
  276eb125c0df313227d9ecfb3f38866d  gcc/ada/nlists.h
  e3945121c34a6169efa63d13c280b7e7  gcc/ada/opt.adb
! b5c786110682a76d01aad78a2c5e4d43  gcc/ada/opt.ads
  fcbd079f712fd349c109f5ecd640096b  gcc/ada/osint-b.adb
  2604c4a51297a9867c69ce9985c3fb8b  gcc/ada/osint-b.ads
  4f31614f93bd69a85fe6c1f144e04b37  gcc/ada/osint-c.adb
*************** b9fd1f536d8f1c867c911cbe2996ebeb  gcc/ad
*** 2822,2833 ****
  3f5b95b8fa96ad05275062ec5d9a000e  gcc/ada/par-ch10.adb
  90ae3c6fcf255101ea0bd2dfc118762f  gcc/ada/par-ch11.adb
  6af8e838ba0bf469b705a7db82601093  gcc/ada/par-ch12.adb
! a9ac2ac18fbb8924bfd3047c61aa9e87  gcc/ada/par-ch13.adb
! 367c520caf968244162abc3229e0b453  gcc/ada/par-ch2.adb
  a5b0bb97ff5d0883ff6ae65776076e78  gcc/ada/par-ch3.adb
! e5ab8810937968ed4a11dc225759b531  gcc/ada/par-ch4.adb
! dd8d7961fca087943b21edabff41f046  gcc/ada/par-ch5.adb
! 052036b5f26258a601d75e9decb70877  gcc/ada/par-ch6.adb
  2b201234474be782ce30a79ebe674e81  gcc/ada/par-ch7.adb
  349dda80fe39ecf9d2b818ec0e769d80  gcc/ada/par-ch8.adb
  3d5733e116665c179c26e9939a59395e  gcc/ada/par-ch9.adb
--- 2822,2833 ----
  3f5b95b8fa96ad05275062ec5d9a000e  gcc/ada/par-ch10.adb
  90ae3c6fcf255101ea0bd2dfc118762f  gcc/ada/par-ch11.adb
  6af8e838ba0bf469b705a7db82601093  gcc/ada/par-ch12.adb
! 726417eeba8f4e1ae6310601195b55e4  gcc/ada/par-ch13.adb
! ed9e0f33947385dfddd6c98bc7c51a92  gcc/ada/par-ch2.adb
  a5b0bb97ff5d0883ff6ae65776076e78  gcc/ada/par-ch3.adb
! bc9ca61ef7f5b2dd590c60a8e0bbec6b  gcc/ada/par-ch4.adb
! bbeaf8c4d52dd6e55beb0b96742ec416  gcc/ada/par-ch5.adb
! 9a6d14cbda19963ebbe77a942d8886c2  gcc/ada/par-ch6.adb
  2b201234474be782ce30a79ebe674e81  gcc/ada/par-ch7.adb
  349dda80fe39ecf9d2b818ec0e769d80  gcc/ada/par-ch8.adb
  3d5733e116665c179c26e9939a59395e  gcc/ada/par-ch9.adb
*************** f94c687806a26857ca4b2a93d99b31e1  gcc/ad
*** 2838,2844 ****
  ee1279472214ff7ca5b61685a2ada15f  gcc/ada/par-sync.adb
  62df590e3ddd37b092c26e4b8b1b684a  gcc/ada/par-tchk.adb
  4b301bf83a66a95a68b6556cd5b684d9  gcc/ada/par-util.adb
! 95e03c0a3b9e593ef00e6c61d97ae75d  gcc/ada/par.adb
  cc0b4ae85eb0edbcce886d13c925cbf3  gcc/ada/par.ads
  b0a53260cce47acbd0de8d046175c63f  gcc/ada/par_sco.adb
  2674a374e947c03703d34f6603994424  gcc/ada/par_sco.ads
--- 2838,2844 ----
  ee1279472214ff7ca5b61685a2ada15f  gcc/ada/par-sync.adb
  62df590e3ddd37b092c26e4b8b1b684a  gcc/ada/par-tchk.adb
  4b301bf83a66a95a68b6556cd5b684d9  gcc/ada/par-util.adb
! 5fce07cb20ef0ed82cdb209d07bca682  gcc/ada/par.adb
  cc0b4ae85eb0edbcce886d13c925cbf3  gcc/ada/par.ads
  b0a53260cce47acbd0de8d046175c63f  gcc/ada/par_sco.adb
  2674a374e947c03703d34f6603994424  gcc/ada/par_sco.ads
*************** fcfa33c29572e4f892bd68b226e0184d  gcc/ad
*** 2855,2861 ****
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
  2068823632327326518141ecef478b56  gcc/ada/repinfo-input.ads
! 7126ac03f73afc294125a90cee4722c9  gcc/ada/repinfo.adb
  2b7ee770fce987fa4a536a7ff6f66d28  gcc/ada/repinfo.ads
  9f01bfb3f02044d2af9dd8653ff046c7  gcc/ada/repinfo.h
  3d4a1dc93d967d84654b6489aaf51b1b  gcc/ada/restrict.adb
--- 2855,2861 ----
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
  2068823632327326518141ecef478b56  gcc/ada/repinfo-input.ads
! 36e0b6ed757a1c0f73f1072a9b0ec75c  gcc/ada/repinfo.adb
  2b7ee770fce987fa4a536a7ff6f66d28  gcc/ada/repinfo.ads
  9f01bfb3f02044d2af9dd8653ff046c7  gcc/ada/repinfo.h
  3d4a1dc93d967d84654b6489aaf51b1b  gcc/ada/restrict.adb
*************** c34ee64559a764f063b49301a7504e82  gcc/ad
*** 2881,2920 ****
  cbf1143b39dba16ccff2bad507662b80  gcc/ada/scos.ads
  1e9843bd9ac3288c126ec7d6727ea8e6  gcc/ada/sdefault.ads
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
! 162cc8e58f789b4cd25dc980dc46398a  gcc/ada/sem.adb
  852fbcc89a3ed10b6c00d4f9686d1405  gcc/ada/sem.ads
  a2f51950a7d3736df297fddd81cab2ae  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! 3a25cbce24f1bb6c8578261a8f7657b4  gcc/ada/sem_attr.adb
  825e191d7eee72ea4718b1fc2ba02824  gcc/ada/sem_attr.ads
  4a02c8331cea42852aa409345905ab04  gcc/ada/sem_aux.adb
  3f6d12eb2d9c7a6a829eaf2bda0535a5  gcc/ada/sem_aux.ads
! 95f5465ee6749d8d7209f2477eaa2b5c  gcc/ada/sem_case.adb
  88daa5c9b6e135316b52695cae25a496  gcc/ada/sem_case.ads
  84667b3de209c0b04f82a349c6125ab0  gcc/ada/sem_cat.adb
  e364f4e3ae92066699cc93a8f7b828c1  gcc/ada/sem_cat.ads
! e1d820208228bea25b763b4a905ee66b  gcc/ada/sem_ch10.adb
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 4decab17d328881ded544560dc4ff990  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! 19cb06f83ea2b247f7f928137eafdde0  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 260f72d231c4084c98d49fdf29046f93  gcc/ada/sem_ch3.adb
! 6d4dc1e40bcf57a8d4faa973cd54c1be  gcc/ada/sem_ch3.ads
! 05bc281a5e0c3e752a4d8c2e75ab5e53  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  3bb75edede811051a0265caaac30883f  gcc/ada/sem_ch5.adb
  cbfbd3e4737f56717fc2ffda6b38f125  gcc/ada/sem_ch5.ads
! df066e8c1a4f7027d9d17f3233e89c3b  gcc/ada/sem_ch6.adb
! 3adb4dc0d6d1183f0fe82a96638bac4c  gcc/ada/sem_ch6.ads
  3c7c6e6b95a9cddb1d6f1a42a5962379  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
! 7560bdea9c883b2ce9e314fc9b73f156  gcc/ada/sem_ch8.adb
! f3965d375e31f991fba42df0595a3470  gcc/ada/sem_ch8.ads
  7fdc25b17002200422b401c1df8f051c  gcc/ada/sem_ch9.adb
  7b283bd6453de444c7075a8c6f215dda  gcc/ada/sem_ch9.ads
  dea2a3321bde0d3ed6be665ade24a2c6  gcc/ada/sem_dim.adb
--- 2881,2920 ----
  cbf1143b39dba16ccff2bad507662b80  gcc/ada/scos.ads
  1e9843bd9ac3288c126ec7d6727ea8e6  gcc/ada/sdefault.ads
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
! a67c36c91c4dea7353be4635f19754d1  gcc/ada/sem.adb
  852fbcc89a3ed10b6c00d4f9686d1405  gcc/ada/sem.ads
  a2f51950a7d3736df297fddd81cab2ae  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! 89685570d809f05ecf279b006d5b53b7  gcc/ada/sem_attr.adb
  825e191d7eee72ea4718b1fc2ba02824  gcc/ada/sem_attr.ads
  4a02c8331cea42852aa409345905ab04  gcc/ada/sem_aux.adb
  3f6d12eb2d9c7a6a829eaf2bda0535a5  gcc/ada/sem_aux.ads
! 1b4e45ef8df3f33dae9b6710ce3bbf7a  gcc/ada/sem_case.adb
  88daa5c9b6e135316b52695cae25a496  gcc/ada/sem_case.ads
  84667b3de209c0b04f82a349c6125ab0  gcc/ada/sem_cat.adb
  e364f4e3ae92066699cc93a8f7b828c1  gcc/ada/sem_cat.ads
! 3b22f342b7dcccc44a20ea4f7e160b80  gcc/ada/sem_ch10.adb
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 820754794e8faf0b418d62c3395ebde3  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! 7505cc81b9a8a94e1771d86e246b2811  gcc/ada/sem_ch13.adb
  24bb91233702860aa2a308e59ba7cb6a  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! ba8825b4c74e3a6db73079c4c5bf62da  gcc/ada/sem_ch3.adb
! a9694f8bc09b47075cae226e570e02f0  gcc/ada/sem_ch3.ads
! 8dfb41205dbb5743f5e5a2f90b7ae11f  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
  3bb75edede811051a0265caaac30883f  gcc/ada/sem_ch5.adb
  cbfbd3e4737f56717fc2ffda6b38f125  gcc/ada/sem_ch5.ads
! 7f0e7caa25a2a7ac6057eb0cc3e6fa82  gcc/ada/sem_ch6.adb
! 0795b422cecef3e0f4bcebfb00a2096d  gcc/ada/sem_ch6.ads
  3c7c6e6b95a9cddb1d6f1a42a5962379  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
! 3d5be0b4ef68143c1e9d2bfb96181585  gcc/ada/sem_ch8.adb
! f0b4e317e5d5515a6ec337bc5acf5fe0  gcc/ada/sem_ch8.ads
  7fdc25b17002200422b401c1df8f051c  gcc/ada/sem_ch9.adb
  7b283bd6453de444c7075a8c6f215dda  gcc/ada/sem_ch9.ads
  dea2a3321bde0d3ed6be665ade24a2c6  gcc/ada/sem_dim.adb
*************** e8e79e2a818321d7816e27eed8d17404  gcc/ad
*** 2933,2939 ****
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! af21494fa64f9f3a79c48d041a477461  gcc/ada/sem_prag.adb
  77d07a6ae20be77457587ee20ba32423  gcc/ada/sem_prag.ads
  af57de4e138d709f95154297e17cb15d  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
--- 2933,2939 ----
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! 0476f84651eebef465b740788986951b  gcc/ada/sem_prag.adb
  77d07a6ae20be77457587ee20ba32423  gcc/ada/sem_prag.ads
  af57de4e138d709f95154297e17cb15d  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
*************** db6f5a37bd59fd83ff3286e71ab985fe  gcc/ad
*** 2943,2951 ****
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
  d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! 5e243b7749b59d293b50c9f56a0b17bb  gcc/ada/sem_util.adb
! ad9a4d7c27a8e26bb9757ef260924ebb  gcc/ada/sem_util.ads
! c4d6026d01f30a61cf884201cf7dc331  gcc/ada/sem_warn.adb
  e71db5efd6c6d9969e1e7887ebe4e6b5  gcc/ada/sem_warn.ads
  239ca67ac9aa430abfe5120a8d4302d9  gcc/ada/set_targ.adb
  b80f6a9d10e348b68d302b5cc4a1eb88  gcc/ada/set_targ.ads
--- 2943,2951 ----
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
  d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! b9daaddf4a513e90a11b486a60623027  gcc/ada/sem_util.adb
! 7ec54f10d36f265bb46733d6d41b14b8  gcc/ada/sem_util.ads
! 09716714503bb078951024d9081855f6  gcc/ada/sem_warn.adb
  e71db5efd6c6d9969e1e7887ebe4e6b5  gcc/ada/sem_warn.ads
  239ca67ac9aa430abfe5120a8d4302d9  gcc/ada/set_targ.adb
  b80f6a9d10e348b68d302b5cc4a1eb88  gcc/ada/set_targ.ads
*************** f32c4d3d5df9ad9663b4978f7f8a2573  gcc/ad
*** 2964,2970 ****
  d78423bdc8b85ab7cdc070996aa4d544  gcc/ada/sinfo-utils.adb
  a279552ee28f4ed267298848351ccbc6  gcc/ada/sinfo-utils.ads
  e6d5c3ccb5893bb3943fbdf529b298d6  gcc/ada/sinfo.adb
! 76293ac8f4b7d5fae9e57b9c36c42704  gcc/ada/sinfo.ads
  ebb37a07fb72782f86b0c141d3f6077c  gcc/ada/sinput-c.adb
  ec9033e4caebeb446063de16e18918f4  gcc/ada/sinput-c.ads
  2fec6a5fbe7c9e765ea70c82814b0fd3  gcc/ada/sinput-d.adb
--- 2964,2970 ----
  d78423bdc8b85ab7cdc070996aa4d544  gcc/ada/sinfo-utils.adb
  a279552ee28f4ed267298848351ccbc6  gcc/ada/sinfo-utils.ads
  e6d5c3ccb5893bb3943fbdf529b298d6  gcc/ada/sinfo.adb
! 0ba3fa3fa2369cd2f4898cbf11da05b3  gcc/ada/sinfo.ads
  ebb37a07fb72782f86b0c141d3f6077c  gcc/ada/sinput-c.adb
  ec9033e4caebeb446063de16e18918f4  gcc/ada/sinput-c.ads
  2fec6a5fbe7c9e765ea70c82814b0fd3  gcc/ada/sinput-d.adb
*************** ceaa52edf6355622601cd30f7c096b06  gcc/ad
*** 2996,3006 ****
  072e20e96999b6e3137326e76e71b03d  gcc/ada/stylesw.ads
  280b043e991285d0e2dd469546dc80b0  gcc/ada/switch-b.adb
  564abc18b3d01ff76cff00fcb90fa03f  gcc/ada/switch-b.ads
! 2ecef3b3fe36aa3671a962283f2d4e64  gcc/ada/switch-c.adb
  276c746b48c55f010cd06e04a2d1ccfb  gcc/ada/switch-c.ads
  7149d4feea0dd2cd75afe673ce2bb0b2  gcc/ada/switch-m.adb
  2ee5998b92d56bf9c5cc341e1f1ad78e  gcc/ada/switch-m.ads
! 47cb0867e38b3a29e29843f102979ad0  gcc/ada/switch.adb
  3ce7cd08e301dd2487e065308c9e9fe9  gcc/ada/switch.ads
  6726d67dd3bb2abdda020dd462bc80ee  gcc/ada/sysdep.c
  bef209f16c0106f0a9c5255fb6bf96bb  gcc/ada/table.adb
--- 2996,3006 ----
  072e20e96999b6e3137326e76e71b03d  gcc/ada/stylesw.ads
  280b043e991285d0e2dd469546dc80b0  gcc/ada/switch-b.adb
  564abc18b3d01ff76cff00fcb90fa03f  gcc/ada/switch-b.ads
! 36258c36e5f55fd214a0e6a377ea0e05  gcc/ada/switch-c.adb
  276c746b48c55f010cd06e04a2d1ccfb  gcc/ada/switch-c.ads
  7149d4feea0dd2cd75afe673ce2bb0b2  gcc/ada/switch-m.adb
  2ee5998b92d56bf9c5cc341e1f1ad78e  gcc/ada/switch-m.ads
! 7e7afcf1b2687d2270ec21617a7bb854  gcc/ada/switch.adb
  3ce7cd08e301dd2487e065308c9e9fe9  gcc/ada/switch.ads
  6726d67dd3bb2abdda020dd462bc80ee  gcc/ada/sysdep.c
  bef209f16c0106f0a9c5255fb6bf96bb  gcc/ada/table.adb
*************** d9d7a0f9b8ac29d8f1e477d6b53076c1  gcc/ad
*** 3014,3020 ****
  6f122fca818bdd0608fc8391dbb411ba  gcc/ada/tempdir.ads
  fb2dbb46dab058293bcd11b4ec94c26f  gcc/ada/terminals.c
  90388b2ce8b02dc01b5f589caaff07ec  gcc/ada/tracebak.c
! 63162b852775925e856feadfc83f420e  gcc/ada/treepr.adb
  557c71455af3d957f986d007de0f291a  gcc/ada/treepr.ads
  6f3fd20323108cb95757cc42a1514191  gcc/ada/ttypes.ads
  e02948c9347a91c37c4f24e7d4356a02  gcc/ada/types.adb
--- 3014,3020 ----
  6f122fca818bdd0608fc8391dbb411ba  gcc/ada/tempdir.ads
  fb2dbb46dab058293bcd11b4ec94c26f  gcc/ada/terminals.c
  90388b2ce8b02dc01b5f589caaff07ec  gcc/ada/tracebak.c
! 4bd44687c5e9a7af8a75e863f0206da1  gcc/ada/treepr.adb
  557c71455af3d957f986d007de0f291a  gcc/ada/treepr.ads
  6f3fd20323108cb95757cc42a1514191  gcc/ada/ttypes.ads
  e02948c9347a91c37c4f24e7d4356a02  gcc/ada/types.adb
*************** aa571047977f5d4eede1b3c590cfca1a  gcc/ad
*** 3028,3039 ****
  b04795771a6e485551c5422be454c896  gcc/ada/urealp.adb
  3efbeacc845581e3689901f319e061f0  gcc/ada/urealp.ads
  8da16dc7040064c1822811f3aa2b0741  gcc/ada/urealp.h
! 2207d552bf64c2646f0813e5f7493c77  gcc/ada/usage.adb
  39aa1ad0590789d255e892abebddfe14  gcc/ada/usage.ads
  711166db03aab3b4aa42d708e165cdcb  gcc/ada/validsw.adb
  0fff79e753ec9a011dbe7450d07825bf  gcc/ada/validsw.ads
! af6ae2c76c2d4b18876291284c5b7c1c  gcc/ada/vast.adb
! ba616116b5e9166ecb6f7858c19bb4c2  gcc/ada/vast.ads
  80a9d1726e421d58c661b761812b04b6  gcc/ada/version.c
  5eede02cafd21523f38416ab4cbaef34  gcc/ada/vx_stack_info.c
  230f0a2f69b8ad56cc0d730f9fe0964b  gcc/ada/vxworks-ppc-link.spec
--- 3028,3039 ----
  b04795771a6e485551c5422be454c896  gcc/ada/urealp.adb
  3efbeacc845581e3689901f319e061f0  gcc/ada/urealp.ads
  8da16dc7040064c1822811f3aa2b0741  gcc/ada/urealp.h
! e6ac139438e5cf4af1d7dc4b66d8dfe0  gcc/ada/usage.adb
  39aa1ad0590789d255e892abebddfe14  gcc/ada/usage.ads
  711166db03aab3b4aa42d708e165cdcb  gcc/ada/validsw.adb
  0fff79e753ec9a011dbe7450d07825bf  gcc/ada/validsw.ads
! ede78047f9113a6303f36f10e9f68646  gcc/ada/vast.adb
! 8dff627aaef28c72395f53a81efaa7c4  gcc/ada/vast.ads
  80a9d1726e421d58c661b761812b04b6  gcc/ada/version.c
  5eede02cafd21523f38416ab4cbaef34  gcc/ada/vx_stack_info.c
  230f0a2f69b8ad56cc0d730f9fe0964b  gcc/ada/vxworks-ppc-link.spec
*************** eeb42b412edc2884a4c60d6f38f7473b  gcc/ar
*** 3158,3167 ****
  3b696031376017661bf8d237ffc7c068  gcc/asan.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
! 05d6a8f61e165cf9438457af9042b98f  gcc/attribs.cc
  1bdf6723b4c88b5b1495f718e4dd00c7  gcc/attribs.h
  54fb3cb1cab63227c50a50819ea1a3c3  gcc/auto-inc-dec.cc
! 89b5d679ce1dac93bc60af4cdf818424  gcc/auto-profile.cc
  fe453e02b17197af9a9101edb6590b74  gcc/auto-profile.h
  b49502046f4647eae48740d67a1ad97e  gcc/avoid-store-forwarding.cc
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
--- 3158,3167 ----
  3b696031376017661bf8d237ffc7c068  gcc/asan.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
! 0e1b67f20b5d137d4e1d6915400e406b  gcc/attribs.cc
  1bdf6723b4c88b5b1495f718e4dd00c7  gcc/attribs.h
  54fb3cb1cab63227c50a50819ea1a3c3  gcc/auto-inc-dec.cc
! a88264865cd925d5ce50ebc9c8e0c137  gcc/auto-profile.cc
  fe453e02b17197af9a9101edb6590b74  gcc/auto-profile.h
  b49502046f4647eae48740d67a1ad97e  gcc/avoid-store-forwarding.cc
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
*************** fe292df4b7f3e3ef7c0b8305084b6844  gcc/bi
*** 3175,3184 ****
  7cd04e6f25d02f9f2cecc8ce50e73e76  gcc/btfout.cc
  f808dbcc1ad6add5a0867c4b3e03fc4d  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! d8ff60ecebd67b2be7141da80578a9ef  gcc/builtins.cc
  dd55b2c473c288bdc5752f7da8cc21e7  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 6680d312aa2ee61f8d89076fd88b7d9a  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
--- 3175,3184 ----
  7cd04e6f25d02f9f2cecc8ce50e73e76  gcc/btfout.cc
  f808dbcc1ad6add5a0867c4b3e03fc4d  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! bec6a30db0391a4a551e8bd86db93219  gcc/builtins.cc
  dd55b2c473c288bdc5752f7da8cc21e7  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! fbaaeded56347f16bc9355764bc59a8b  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  823fe168bb0f63a39de62d9f0251a1b5  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
*************** c880dc584a0fd4908e5df33dd81137b8  gcc/c-
*** 3199,3205 ****
  3a6dcb45673c45ce1464ac5794d8f636  gcc/c-family/c-opts.cc
  2f1a14531d3a436ca9f4aad2812c3898  gcc/c-family/c-pch.cc
  6e53d008a0c4738339154c353a50ff0a  gcc/c-family/c-ppoutput.cc
! c3373b06f8b0f699244a639f7e84c41e  gcc/c-family/c-pragma.cc
  10932d88b49c31cc0912970b8f153a0f  gcc/c-family/c-pragma.h
  6b06dfa990e7bab82095a54e9f6b9aee  gcc/c-family/c-pretty-print.cc
  65ddbb97d9d65906a812f9c61b9ca1d1  gcc/c-family/c-pretty-print.h
--- 3199,3205 ----
  3a6dcb45673c45ce1464ac5794d8f636  gcc/c-family/c-opts.cc
  2f1a14531d3a436ca9f4aad2812c3898  gcc/c-family/c-pch.cc
  6e53d008a0c4738339154c353a50ff0a  gcc/c-family/c-ppoutput.cc
! 9fc831d62cb02feeec158e948abc2b6b  gcc/c-family/c-pragma.cc
  10932d88b49c31cc0912970b8f153a0f  gcc/c-family/c-pragma.h
  6b06dfa990e7bab82095a54e9f6b9aee  gcc/c-family/c-pretty-print.cc
  65ddbb97d9d65906a812f9c61b9ca1d1  gcc/c-family/c-pretty-print.h
*************** aaf683e3b02704cfbfab0627d82edf85  gcc/c-
*** 3221,3242 ****
  ce9d2259a1edb5d4b1f728988bd9ef6a  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! fd25ec0eaf35213a4a57652ddef1c99a  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! c605976649e1be7e728227d3137c00cd  gcc/c/c-decl.cc
  3601ac6299bb2579fedc2dcf2aba7773  gcc/c/c-errors.cc
  d9b5dea1631cefab5fe5ca3602db30f0  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
! 5466f6371f54fce4ae89206f7792bd01  gcc/c/c-lang.h
  29c0a26baf73e55c081ac675fa7f87f8  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! 0fddfb5c8ff4a14e9bd76aae2e7670e7  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  9cef7f8aed78affc01930dfcb3d3185c  gcc/c/c-tree.h
! ec4d5dbddad8926f49e3f7be05167869  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  c169f2d94910060e76c333db12b960b9  gcc/c/gimple-parser.cc
--- 3221,3242 ----
  ce9d2259a1edb5d4b1f728988bd9ef6a  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 9387f9f9ea02c083e27f3088b779d578  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! e9ed7d6d2ab1cdc3e0abac9f182f026a  gcc/c/c-decl.cc
  3601ac6299bb2579fedc2dcf2aba7773  gcc/c/c-errors.cc
  d9b5dea1631cefab5fe5ca3602db30f0  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
! 4be9de2ca25340adb8f350478db6a3d8  gcc/c/c-lang.h
  29c0a26baf73e55c081ac675fa7f87f8  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
! 81a0a4ba972e1c94272c01b98813697f  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  9cef7f8aed78affc01930dfcb3d3185c  gcc/c/c-tree.h
! db4d82f55bb14ef73d0e87c29c1d7a0d  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  c169f2d94910060e76c333db12b960b9  gcc/c/gimple-parser.cc
*************** dce5f9aa135bb3752695f3103daa686a  gcc/cf
*** 3255,3262 ****
  0d52ee7360736bb3d0306e66c1f3a9ce  gcc/cfgbuild.h
  39bbd18fab17b2880094aa317111df50  gcc/cfgcleanup.cc
  0761d2fe0a8e51aa7ed662e27b66747a  gcc/cfgcleanup.h
! 7a824bb7ff780b0aaf4570d63c002338  gcc/cfgexpand.cc
! b0df45fc1562ee51ee67ed5f30feb96e  gcc/cfgexpand.h
  748c8fca5e6dfe774ff333205ea9f9be  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
  1103c84ad5690bda0bd6e0c71ea46b93  gcc/cfgloop.cc
--- 3255,3262 ----
  0d52ee7360736bb3d0306e66c1f3a9ce  gcc/cfgbuild.h
  39bbd18fab17b2880094aa317111df50  gcc/cfgcleanup.cc
  0761d2fe0a8e51aa7ed662e27b66747a  gcc/cfgcleanup.h
! 2f6e6c229dad2f2c253046053ec5f719  gcc/cfgexpand.cc
! 1ec4e9a88b7aff0e8dc3577ab103b559  gcc/cfgexpand.h
  748c8fca5e6dfe774ff333205ea9f9be  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
  1103c84ad5690bda0bd6e0c71ea46b93  gcc/cfgloop.cc
*************** bbad65845fcf9cdbc5137d96f92eacab  gcc/cf
*** 3264,3284 ****
  5064c16e8d6a47a0fc2a9a5c144bbc2d  gcc/cfgloopanal.cc
  0a36fc8e64fdd79bb47a57fa94df4e3f  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
! 20ff4e719c1fd355d84cd960d72aff7f  gcc/cfgrtl.cc
! 28d9dedd6044321fe1df02d3575f81e9  gcc/cfgrtl.h
! e848a125c3f6457fe4403eb3726651e6  gcc/cgraph.cc
! cc50b703ddacf4f5ef66bd38576c5e1f  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
  b87eab2b04054f0d3cd20768be99c655  gcc/cgraphclones.cc
  3be8ee84d005d8a1f5a65ed6a7fce76a  gcc/cgraphunit.cc
  70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
! 86634618b92d21d6546be497a24e451d  gcc/cobol/ChangeLog
! c12a7eb0f93f9bb94ac811e17d9fd3e5  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  9fe3e756e47ccf4ed80c11e535ec2de9  gcc/cobol/cbldiag.h
  20e6b8fb8b95db7ab38864b7931812ce  gcc/cobol/cdf-copy.cc
! feb6db22d92d2ba7510a24d8db96ba5a  gcc/cobol/cdf.y
! 89f7833668290e607850097ee8207cf0  gcc/cobol/cdfval.h
  77fc5e59eed5f55ff8b66d9138ca6c18  gcc/cobol/cobol-system.h
  8a1232cc40a34e1a92e07d4d85b2e2aa  gcc/cobol/cobol1.cc
  5985e1898b04e553a91bdc474c56311f  gcc/cobol/config-lang.in
--- 3264,3284 ----
  5064c16e8d6a47a0fc2a9a5c144bbc2d  gcc/cfgloopanal.cc
  0a36fc8e64fdd79bb47a57fa94df4e3f  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
! 86fd277253913430380bc5d51e4b395b  gcc/cfgrtl.cc
! 132f0eb682ec622dc563cfc697da1fb8  gcc/cfgrtl.h
! e17f666ccc839ffe367b81141bfaa508  gcc/cgraph.cc
! 6efd2066f705098914ba5a90b8214010  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
  b87eab2b04054f0d3cd20768be99c655  gcc/cgraphclones.cc
  3be8ee84d005d8a1f5a65ed6a7fce76a  gcc/cgraphunit.cc
  70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
! ddb1c446a640363023c4417dd21c51a5  gcc/cobol/ChangeLog
! 14224ad11813da21939481d8dd5eb218  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
  9fe3e756e47ccf4ed80c11e535ec2de9  gcc/cobol/cbldiag.h
  20e6b8fb8b95db7ab38864b7931812ce  gcc/cobol/cdf-copy.cc
! 6b6726b4757008e205b5f9096fe2e476  gcc/cobol/cdf.y
! f60907e04786ba43a52126e7cde0e49a  gcc/cobol/cdfval.h
  77fc5e59eed5f55ff8b66d9138ca6c18  gcc/cobol/cobol-system.h
  8a1232cc40a34e1a92e07d4d85b2e2aa  gcc/cobol/cobol1.cc
  5985e1898b04e553a91bdc474c56311f  gcc/cobol/config-lang.in
*************** d82104539470e81b006b5f9227229da7  gcc/co
*** 3288,3296 ****
  c229c0cae609de02bf65d6a9cc63b868  gcc/cobol/except.cc
  8208f264c49dfd56f856e8a4229545b9  gcc/cobol/exceptg.h
  24c537bb1367d796de8c91d7fb8ce910  gcc/cobol/gcobc
! 78da9811c8766f6fe50c4c0282cfd56b  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
! e9f9397b294013c218ab16870d43e8ef  gcc/cobol/gcobolspec.cc
  d336ef8c1a3331697786da7b17b016e2  gcc/cobol/genapi.cc
  9405cedcadb1d8d4dc1ec68fc2fb0c59  gcc/cobol/genapi.h
  033c74fe6abf78033a7be7135bc86e96  gcc/cobol/gengen.cc
--- 3288,3296 ----
  c229c0cae609de02bf65d6a9cc63b868  gcc/cobol/except.cc
  8208f264c49dfd56f856e8a4229545b9  gcc/cobol/exceptg.h
  24c537bb1367d796de8c91d7fb8ce910  gcc/cobol/gcobc
! 1276523bb287dcb395003b230b9462f8  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
! ee529adcf01d8ec47590b845d67064e2  gcc/cobol/gcobolspec.cc
  d336ef8c1a3331697786da7b17b016e2  gcc/cobol/genapi.cc
  9405cedcadb1d8d4dc1ec68fc2fb0c59  gcc/cobol/genapi.h
  033c74fe6abf78033a7be7135bc86e96  gcc/cobol/gengen.cc
*************** a756f44fff2c4f4136a54415eadd9a5e  gcc/co
*** 3307,3313 ****
  1d114db4c6ef51aab01cb878ad99b271  gcc/cobol/lexio.cc
  a674c18d797f48c8bc7ca31a09f2c642  gcc/cobol/lexio.h
  03a5ab34493d838287c4a118b5045f13  gcc/cobol/parse.y
! e44d4370366ebe1eb8d69b795d1de676  gcc/cobol/parse_ante.h
  4d55488629c09ff19bd872e7dd9d0fc7  gcc/cobol/parse_util.h
  9689989861d0489b87a4f018a5e55c8a  gcc/cobol/scan.l
  7634fadf4c5641a9f168a793bea88a2a  gcc/cobol/scan_ante.h
--- 3307,3313 ----
  1d114db4c6ef51aab01cb878ad99b271  gcc/cobol/lexio.cc
  a674c18d797f48c8bc7ca31a09f2c642  gcc/cobol/lexio.h
  03a5ab34493d838287c4a118b5045f13  gcc/cobol/parse.y
! 1353fa7097baee179e37e19de8c4de59  gcc/cobol/parse_ante.h
  4d55488629c09ff19bd872e7dd9d0fc7  gcc/cobol/parse_util.h
  9689989861d0489b87a4f018a5e55c8a  gcc/cobol/scan.l
  7634fadf4c5641a9f168a793bea88a2a  gcc/cobol/scan_ante.h
*************** b14ff14af09e35148ebaceacc90e59a7  gcc/co
*** 3431,3437 ****
  8f28d55d0c7fc64387352822e99a37ff  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
  9ea76d93e2634ee882d4a122c5bd8ee5  gcc/config/aarch64/aarch64-simd.md
! a6b5fef44720ac04efdf50efa092700a  gcc/config/aarch64/aarch64-sme.md
  fa6672290fdf9366d9919defcb7e41d7  gcc/config/aarch64/aarch64-speculation.cc
  9ab182bab4cc10bb9676b1309abb562f  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
--- 3431,3437 ----
  8f28d55d0c7fc64387352822e99a37ff  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
  9ea76d93e2634ee882d4a122c5bd8ee5  gcc/config/aarch64/aarch64-simd.md
! e3fe67e652934d5092addccac9c9f30a  gcc/config/aarch64/aarch64-sme.md
  fa6672290fdf9366d9919defcb7e41d7  gcc/config/aarch64/aarch64-speculation.cc
  9ab182bab4cc10bb9676b1309abb562f  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
*************** e2d80b89552da0c6b4cb6bede3b2e573  gcc/co
*** 3448,3462 ****
  354a32b5af602553358eb32a9ac919a5  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
  5ef25fd86c1c16a4a6fb3f74e12802b4  gcc/config/aarch64/aarch64-sve-builtins.h
! 9f3eb88ee9eb2b0790e38fde3982c230  gcc/config/aarch64/aarch64-sve.md
  5fadf27df621c41bae0181b584bb27f0  gcc/config/aarch64/aarch64-sve2.md
  805529fa07916adcabb727f19ebd8dd2  gcc/config/aarch64/aarch64-sys-regs.def
  065e0643d90a8831e9495b5ce2c12b0d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 02703f37fbb7954c3fc6c91f3e54e50a  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
! 71f148c60e64686f63307ac425ac331d  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
--- 3448,3462 ----
  354a32b5af602553358eb32a9ac919a5  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
  5ef25fd86c1c16a4a6fb3f74e12802b4  gcc/config/aarch64/aarch64-sve-builtins.h
! 58dcac476d037bda0f1e7ac5c1a5d55e  gcc/config/aarch64/aarch64-sve.md
  5fadf27df621c41bae0181b584bb27f0  gcc/config/aarch64/aarch64-sve2.md
  805529fa07916adcabb727f19ebd8dd2  gcc/config/aarch64/aarch64-sys-regs.def
  065e0643d90a8831e9495b5ce2c12b0d  gcc/config/aarch64/aarch64-tune.md
  06480b67fa44a0b9fa7de2ed778a3df9  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 9b09e06ceb16f76951e4284dc5a9dc46  gcc/config/aarch64/aarch64.cc
  4c2226a017b612867a61db1f7929ad43  gcc/config/aarch64/aarch64.h
! b0c9504f794c9543f15ac542746c9931  gcc/config/aarch64/aarch64.md
  84c23cd68c90a9be4b986aa7009ba1c9  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
*************** d37f092206fc4c0379cee5e5fc01b654  gcc/co
*** 3745,3751 ****
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
  78caecca99df5a6a9281a59cbb1f4940  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
! 206ed5e2c2e66a228c6a44c9ddec9dff  gcc/config/avr/avr.md
  076d1efacbf67abfb55af3f4a6d35b43  gcc/config/avr/avr.opt
  f53384c1aec1ca9f9bbe9dd81baace9a  gcc/config/avr/avr.opt.urls
  e6d58e7505c28a23d3cd4e70e534521e  gcc/config/avr/avrlibc.h
--- 3745,3751 ----
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
  78caecca99df5a6a9281a59cbb1f4940  gcc/config/avr/avr.cc
  08a0b2010b152c01b9bb5883c3d62b7f  gcc/config/avr/avr.h
! 3d964ad6aff7842114bb72be953b8364  gcc/config/avr/avr.md
  076d1efacbf67abfb55af3f4a6d35b43  gcc/config/avr/avr.opt
  f53384c1aec1ca9f9bbe9dd81baace9a  gcc/config/avr/avr.opt.urls
  e6d58e7505c28a23d3cd4e70e534521e  gcc/config/avr/avrlibc.h
*************** e67c464c5291da429735ab3d29b461b6  gcc/co
*** 3955,3973 ****
  96050b4b2455697e8f797ff6286b6575  gcc/config/g.opt.urls
  9fd698fdcb393c697ca83182cde3834e  gcc/config/gcn/constraints.md
  e89c0c1a7b28f107b53b364765ee06a9  gcc/config/gcn/gcn-builtins.def
! b5a03e1dc768bd3a83c1fcb5fc88e685  gcc/config/gcn/gcn-devices.def
  ff3ae1701a0dc72a48dd18a907796d2e  gcc/config/gcn/gcn-hsa.h
  491ab7557adb9ed61fba81e4f5b96dc2  gcc/config/gcn/gcn-modes.def
! cb4da1b097a7dc73b9762ae68766cca6  gcc/config/gcn/gcn-opts.h
  b395ed990d9e6d7c2698fdd602685d3f  gcc/config/gcn/gcn-protos.h
  96a52bdb8005bdd8f36552a27a7234d2  gcc/config/gcn/gcn-run.cc
! dc9cd2299212581b55dc79c754b1f032  gcc/config/gcn/gcn-tables.opt
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
! 25e18c4eee940de72eb16aff9b3dba27  gcc/config/gcn/gcn-valu.md
! 06f8208861e6f3ef91e002b7e986016e  gcc/config/gcn/gcn.cc
! c588bbc37daa440397eb034026bd06f5  gcc/config/gcn/gcn.h
! 02941219664b5bf4a7b3308e467c4c65  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
  6c96a5ccd826ec5a9ddf7ffe7fda572d  gcc/config/gcn/gcn.opt.urls
  6d70e3b6694d21aaf0fc6f1764858c4e  gcc/config/gcn/gen-gcn-device-macros.awk
--- 3955,3973 ----
  96050b4b2455697e8f797ff6286b6575  gcc/config/g.opt.urls
  9fd698fdcb393c697ca83182cde3834e  gcc/config/gcn/constraints.md
  e89c0c1a7b28f107b53b364765ee06a9  gcc/config/gcn/gcn-builtins.def
! f562bceab670643f983022c708caa29c  gcc/config/gcn/gcn-devices.def
  ff3ae1701a0dc72a48dd18a907796d2e  gcc/config/gcn/gcn-hsa.h
  491ab7557adb9ed61fba81e4f5b96dc2  gcc/config/gcn/gcn-modes.def
! 2258d13b4a75d456f7f0d88dac6c6b8b  gcc/config/gcn/gcn-opts.h
  b395ed990d9e6d7c2698fdd602685d3f  gcc/config/gcn/gcn-protos.h
  96a52bdb8005bdd8f36552a27a7234d2  gcc/config/gcn/gcn-run.cc
! 1dbed4e12cf62ae67464d874f1e2e9e8  gcc/config/gcn/gcn-tables.opt
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
! 6a8bbbcc3aeaabb5764442677cc5e730  gcc/config/gcn/gcn-valu.md
! 58246ea2e9e5f1d90f38a3231f63790d  gcc/config/gcn/gcn.cc
! 686d66a24f66638a6a8dc76ddae3acb6  gcc/config/gcn/gcn.h
! ec56b3b46deea86778d1b3906f48197a  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
  6c96a5ccd826ec5a9ddf7ffe7fda572d  gcc/config/gcn/gcn.opt.urls
  6d70e3b6694d21aaf0fc6f1764858c4e  gcc/config/gcn/gen-gcn-device-macros.awk
*************** d3fb594d11281112ff8d8f304a000c4e  gcc/co
*** 4152,4160 ****
  a4a1a27264871bfba9de0f4fbdb4f3ac  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! 73a463154d75e1c82f31b27ca557f7fe  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! a2d9d361545bc99dfd0850cfdf4008c1  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
  66732512f01bad0bbb26cb3c09ec773e  gcc/config/i386/i386-isa.def
  795643c7d23acf02568d7fa7acad0138  gcc/config/i386/i386-modes.def
--- 4152,4160 ----
  a4a1a27264871bfba9de0f4fbdb4f3ac  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! 137bda4fe38eb4ba8d13725fa6e46a70  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! 97393080d15005c11dc8db98af1eb116  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
  66732512f01bad0bbb26cb3c09ec773e  gcc/config/i386/i386-isa.def
  795643c7d23acf02568d7fa7acad0138  gcc/config/i386/i386-modes.def
*************** ae55d83d5b332e663522f2352f5a3282  gcc/co
*** 4166,4174 ****
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 78d20fa951c51eb623997a6948444b3d  gcc/config/i386/i386.cc
  a6cfbe637ab786c041cc2872a71bc247  gcc/config/i386/i386.h
! d47a65cd85deaeb5a3bdf9e237285a2c  gcc/config/i386/i386.md
  23985b411cb15228b631691265bfefe9  gcc/config/i386/i386.opt
  59cb9adff8fe9d24eed1cfac0c5bf62c  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
--- 4166,4174 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! fef0eb0c49b7d25e22ac6e88e1cc637c  gcc/config/i386/i386.cc
  a6cfbe637ab786c041cc2872a71bc247  gcc/config/i386/i386.h
! c1795b39b9fb57f2710e2bc5d438f182  gcc/config/i386/i386.md
  23985b411cb15228b631691265bfefe9  gcc/config/i386/i386.opt
  59cb9adff8fe9d24eed1cfac0c5bf62c  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
*************** de4e89bc042c6bc7eb093bda5d33a266  gcc/co
*** 4231,4237 ****
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! dc6ee6883c59cfabc1e0dd99e521654d  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
--- 4231,4237 ----
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! ad9d3825ae1f7a675566526403b101cf  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
*************** b4bf5ad9f215cd28c4f2443dcadaf245  gcc/co
*** 4283,4289 ****
  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
! 9054e39f9f68ade31cfdeb33e9c905ce  gcc/config/i386/x86-tune-sched.cc
  923a6304c99ebb6bc9509acbe1afd4fd  gcc/config/i386/x86-tune.def
  95b91fd21504348ecd2f8510ebab204c  gcc/config/i386/x86gprintrin.h
  1ef1746c703bfdb9c245f7b7276b7d56  gcc/config/i386/x86intrin.h
--- 4283,4289 ----
  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
! e21f7dac76df120789e69fef8e465413  gcc/config/i386/x86-tune-sched.cc
  923a6304c99ebb6bc9509acbe1afd4fd  gcc/config/i386/x86-tune.def
  95b91fd21504348ecd2f8510ebab204c  gcc/config/i386/x86gprintrin.h
  1ef1746c703bfdb9c245f7b7276b7d56  gcc/config/i386/x86intrin.h
*************** ebd5336fc66436ca3c7fd92d56080390  gcc/co
*** 4497,4503 ****
  b292ff55e6961b62b0716f12e7a7019f  gcc/config/mcore/constraints.md
  d4cdd162c4adbc6358ec05beb7bfce7a  gcc/config/mcore/mcore-elf.h
  1d01a7813133d99e32b39ada28da6be7  gcc/config/mcore/mcore-protos.h
! 5db9863c4122b1532d8bfeacbc92f426  gcc/config/mcore/mcore.cc
  cfa45e2c04603eb898475f6372afa718  gcc/config/mcore/mcore.h
  65bd0d0e447aad09484d144ce3dc20f1  gcc/config/mcore/mcore.md
  a6757d8ca2c871b28c76dd89eb4a3b93  gcc/config/mcore/mcore.opt
--- 4497,4503 ----
  b292ff55e6961b62b0716f12e7a7019f  gcc/config/mcore/constraints.md
  d4cdd162c4adbc6358ec05beb7bfce7a  gcc/config/mcore/mcore-elf.h
  1d01a7813133d99e32b39ada28da6be7  gcc/config/mcore/mcore-protos.h
! b197d1a2cd7d9e6fa37f6e5670fcc7fa  gcc/config/mcore/mcore.cc
  cfa45e2c04603eb898475f6372afa718  gcc/config/mcore/mcore.h
  65bd0d0e447aad09484d144ce3dc20f1  gcc/config/mcore/mcore.md
  a6757d8ca2c871b28c76dd89eb4a3b93  gcc/config/mcore/mcore.opt
*************** f2528020fcdc72755829904c1e2bd9cd  gcc/co
*** 4784,4790 ****
  8975a99baca4214035d5805cff0cbf4c  gcc/config/or1k/linux.h
  8749d9b447ea37bc29800c0bf265c6e2  gcc/config/or1k/or1k-opts.h
  97baa752f8b46ebaabe66d92886e19a2  gcc/config/or1k/or1k-protos.h
! ba4527959028a093cad8694a308a8a98  gcc/config/or1k/or1k.cc
  fcbfb3ff3577f95c15cf20ae1c95b269  gcc/config/or1k/or1k.h
  f5e7694d32cf1092a0353e9cf60d09d4  gcc/config/or1k/or1k.md
  1ef170db4cf4943c3da6cf4ca8d5f674  gcc/config/or1k/or1k.opt
--- 4784,4790 ----
  8975a99baca4214035d5805cff0cbf4c  gcc/config/or1k/linux.h
  8749d9b447ea37bc29800c0bf265c6e2  gcc/config/or1k/or1k-opts.h
  97baa752f8b46ebaabe66d92886e19a2  gcc/config/or1k/or1k-protos.h
! 4cc703e62ab787471aceefa426fa00d4  gcc/config/or1k/or1k.cc
  fcbfb3ff3577f95c15cf20ae1c95b269  gcc/config/or1k/or1k.h
  f5e7694d32cf1092a0353e9cf60d09d4  gcc/config/or1k/or1k.md
  1ef170db4cf4943c3da6cf4ca8d5f674  gcc/config/or1k/or1k.opt
*************** d6da8f84e5835bd14f146fc765bcb39d  gcc/co
*** 4863,4869 ****
  cd13b51383c99c08d86250b61fed3805  gcc/config/pru/pru.opt.urls
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a5e691ce14017f2a89283ed510bb78fd  gcc/config/riscv/arch-canonicalize
! 1d5a6e01941bdc7405c8c5403d36eb79  gcc/config/riscv/autovec-opt.md
  829cbcecbc17da1539fb79b7512d1523  gcc/config/riscv/autovec.md
  40e0e0684e3c3a934587129211c4674c  gcc/config/riscv/bitmanip.md
  c21886991e632848d5622ed5a3188f75  gcc/config/riscv/constraints.md
--- 4863,4869 ----
  cd13b51383c99c08d86250b61fed3805  gcc/config/pru/pru.opt.urls
  540013c309ceb3efb2b16d728b1fc726  gcc/config/pru/t-pru
  a5e691ce14017f2a89283ed510bb78fd  gcc/config/riscv/arch-canonicalize
! 05b752662704585fc33b14aaee77a880  gcc/config/riscv/autovec-opt.md
  829cbcecbc17da1539fb79b7512d1523  gcc/config/riscv/autovec.md
  40e0e0684e3c3a934587129211c4674c  gcc/config/riscv/bitmanip.md
  c21886991e632848d5622ed5a3188f75  gcc/config/riscv/constraints.md
*************** da4e034d23a8f2754b1dfce0122f286e  gcc/co
*** 4913,4919 ****
  5934e743da72bdc74e1d53f049b127fc  gcc/config/riscv/riscv-string.cc
  b0db0a336461a6390b254a883b8b491a  gcc/config/riscv/riscv-subset.h
  be3e0da2403121c429e21501de9c9b5f  gcc/config/riscv/riscv-target-attr.cc
! cf1ba66caa71129bc704d7325a4fb2d1  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
  8bb68ed754e01cc6cbd31b250968d7f6  gcc/config/riscv/riscv-vector-builtins-bases.cc
--- 4913,4919 ----
  5934e743da72bdc74e1d53f049b127fc  gcc/config/riscv/riscv-string.cc
  b0db0a336461a6390b254a883b8b491a  gcc/config/riscv/riscv-subset.h
  be3e0da2403121c429e21501de9c9b5f  gcc/config/riscv/riscv-target-attr.cc
! b53ebbdbc714a755089dd8beed7fe44f  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
  8bb68ed754e01cc6cbd31b250968d7f6  gcc/config/riscv/riscv-vector-builtins-bases.cc
*************** f51037a9e437f8e9ce7215b2da5ad4e2  gcc/co
*** 4931,4939 ****
  3c65f952c8116cc22f135cab9b639d28  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 52b4f9fa3943ab03915a82b188455aee  gcc/config/riscv/riscv.cc
  1153302a8d65cedebba8e1a3f67931b2  gcc/config/riscv/riscv.h
! 84527b76070758ffa5fed1c03a07a9b0  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
--- 4931,4939 ----
  3c65f952c8116cc22f135cab9b639d28  gcc/config/riscv/riscv-vsetvl.cc
  16b7359c0b12895c0d7452fc89879a1a  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! ff94fb342535ff083459d6d5ef84e9b5  gcc/config/riscv/riscv.cc
  1153302a8d65cedebba8e1a3f67931b2  gcc/config/riscv/riscv.h
! 00858c51cf358cbd4bf7e8ff69288203  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
*************** bcf728ad2379630774fd5bb529d4ee86  gcc/co
*** 4967,4973 ****
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
! 386659da4c2647c59f1ef51de8dc56d4  gcc/config/riscv/vector-iterators.md
  2aac5fc6721c093a0f679d0e14d196e1  gcc/config/riscv/vector.md
  4ffde0be9b9a0efe78c98b4407d00397  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
--- 4967,4973 ----
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
! 355b19a68e255b92c8088807630c3bc9  gcc/config/riscv/vector-iterators.md
  2aac5fc6721c093a0f679d0e14d196e1  gcc/config/riscv/vector.md
  4ffde0be9b9a0efe78c98b4407d00397  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
*************** dce39de8bb20b88ffeb8b2073101dcfe  gcc/co
*** 5097,5103 ****
  5621b2aa0be1c71c3955c4e3bad6cf49  gcc/config/rs6000/rs6000-string.cc
  062e9e612338d86d0d47a3e1131384fa  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! d822a29ff1ceb988b9b2d78d265bd752  gcc/config/rs6000/rs6000.cc
  1d91827dae3ab7a332473805ac3cf40c  gcc/config/rs6000/rs6000.h
  ad1b62754d030b34f5ff67d2991b43b1  gcc/config/rs6000/rs6000.md
  77c1c38e6705e421b8838bf19f938cef  gcc/config/rs6000/rs6000.opt
--- 5097,5103 ----
  5621b2aa0be1c71c3955c4e3bad6cf49  gcc/config/rs6000/rs6000-string.cc
  062e9e612338d86d0d47a3e1131384fa  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! 0c97c99093f9384ba11100fdc1973754  gcc/config/rs6000/rs6000.cc
  1d91827dae3ab7a332473805ac3cf40c  gcc/config/rs6000/rs6000.h
  ad1b62754d030b34f5ff67d2991b43b1  gcc/config/rs6000/rs6000.md
  77c1c38e6705e421b8838bf19f938cef  gcc/config/rs6000/rs6000.opt
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5476,5482 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  3a1ca7b4fe869dd9b031c27c8ad034e5  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 3aa2e36550242e2d04e8d5dbb2aea9ab  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5476,5482 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  3a1ca7b4fe869dd9b031c27c8ad034e5  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 24ad750a444c4e52356195a8ea99555c  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** ee3fb2cc9b9557d3895f527353160bd4  gcc/cp
*** 5521,5528 ****
  3974710745a4b09b4184ea22766bf2d3  gcc/cp/constraint.cc
  613233facbf4b0f1cff770ed6c49c666  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
! fe02f5e03cd94966464f0dabaf424ae8  gcc/cp/coroutines.cc
! 349a4225e331d42cddd10a590ad5c5e2  gcc/cp/coroutines.h
  b001cf8db89c6befecfd660d313a1002  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
--- 5521,5528 ----
  3974710745a4b09b4184ea22766bf2d3  gcc/cp/constraint.cc
  613233facbf4b0f1cff770ed6c49c666  gcc/cp/contracts.cc
  1f1cd3a021a2cd25741e252145ee8282  gcc/cp/contracts.h
! acfeed39550eb3025efa8a24f7b36f18  gcc/cp/coroutines.cc
! be1619275f92c0a0eb6eb83c1e3c7f6b  gcc/cp/coroutines.h
  b001cf8db89c6befecfd660d313a1002  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
*************** b001cf8db89c6befecfd660d313a1002  gcc/cp
*** 5530,5542 ****
  acb30767d403ad5a0d7ae97437159ebe  gcc/cp/cp-objcp-common.h
  144049f5deb1aa6987eb55e86f53cb45  gcc/cp/cp-trait.def
  ce9f2ccac9e2657417018bc8f8064421  gcc/cp/cp-tree.def
! e106a628099103833a7466ef572668bd  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
  64450079a2dd9e5a8767bb5e4bf3d904  gcc/cp/cvt.cc
  28a2733b7abed60b2b102105bb7cebaf  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! f267a13ff333261477fb6444ea11a684  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
  a8747e45489cb64f2f4528a1973fcacf  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
--- 5530,5542 ----
  acb30767d403ad5a0d7ae97437159ebe  gcc/cp/cp-objcp-common.h
  144049f5deb1aa6987eb55e86f53cb45  gcc/cp/cp-trait.def
  ce9f2ccac9e2657417018bc8f8064421  gcc/cp/cp-tree.def
! a04ad43f75f38ae95c00784f77661ac8  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
  64450079a2dd9e5a8767bb5e4bf3d904  gcc/cp/cvt.cc
  28a2733b7abed60b2b102105bb7cebaf  gcc/cp/cxx-pretty-print.cc
  955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! eb43f99a12121041f275f974cd5fd1b3  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
  a8747e45489cb64f2f4528a1973fcacf  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
*************** f1581b369c1962c764264b1b2af61ca2  gcc/cp
*** 5549,5555 ****
  bcd77de9155d0bae5293da112f650e43  gcc/cp/init.cc
  b802e8f4d91963d26f15f2d39ed1f219  gcc/cp/lambda.cc
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
! 3f94e0ee121cb5771179a202f19104bb  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
  422826d547b58d3ba757dfd5a0276ccb  gcc/cp/mangle.cc
  936bd061907a7a899c3285cf17b17674  gcc/cp/mapper-client.cc
--- 5549,5555 ----
  bcd77de9155d0bae5293da112f650e43  gcc/cp/init.cc
  b802e8f4d91963d26f15f2d39ed1f219  gcc/cp/lambda.cc
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
! 1352d53c83446655a7fcab07fcdeddc1  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
  422826d547b58d3ba757dfd5a0276ccb  gcc/cp/mangle.cc
  936bd061907a7a899c3285cf17b17674  gcc/cp/mapper-client.cc
*************** e7fe06956aada61bcaae5168ad47a9c1  gcc/cp
*** 5563,5569 ****
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  5aea05ba09eca18a85bcc111ddcee9ae  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! ab13be676923d37d6280320c3d354168  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
--- 5563,5569 ----
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  5aea05ba09eca18a85bcc111ddcee9ae  gcc/cp/parser.cc
  e8a3a03873c6294ff25a783941b8d8af  gcc/cp/parser.h
! 7dc15c0bd67345e2f2150fe02ebd0791  gcc/cp/pt.cc
  a121c0a45933b618832614be1fbfd5c7  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  a4930c49ed8f9e6b019399bd1faf86d0  gcc/cp/search.cc
*************** e0a7cab8692eb3cbd4b00c4494e48d70  gcc/di
*** 5864,5877 ****
  b14c12c33aee36a4d29601627a1a67da  gcc/diagnostic-core.h
  be405b20597be971120eee5709db8c4a  gcc/diagnostic-diagram.h
  a24233a009f0c9d29e034e6ba63082de  gcc/diagnostic-event-id.h
! 0d67ad4aeb249058c78f635a9c3606f8  gcc/diagnostic-format-html.cc
  9dd0efe581c7fbd4e35dc41591b0893f  gcc/diagnostic-format-html.h
! d306b1c2d243e470e6dace9e9b9feb76  gcc/diagnostic-format-json.cc
! 61f95df5bdbef545f0ad3dd04e2d5ac3  gcc/diagnostic-format-sarif.cc
! 1b19f73dad314e0e6051d3657540cf0c  gcc/diagnostic-format-sarif.h
  0be3d31017b5c71132af3b72e12f5de2  gcc/diagnostic-format-text.cc
  66be909d880de2f75a896a45bf395ab6  gcc/diagnostic-format-text.h
! b5c51195e6a718f41eac587ecac1bc2f  gcc/diagnostic-format.h
  c57536f66ae2965d5f7308e1fe115f1e  gcc/diagnostic-global-context.cc
  ddb5e19e6f3ff8224aedd1a60eaad23e  gcc/diagnostic-highlight-colors.h
  dd85098d241db456b95090aed8ac8026  gcc/diagnostic-label-effects.h
--- 5864,5877 ----
  b14c12c33aee36a4d29601627a1a67da  gcc/diagnostic-core.h
  be405b20597be971120eee5709db8c4a  gcc/diagnostic-diagram.h
  a24233a009f0c9d29e034e6ba63082de  gcc/diagnostic-event-id.h
! 4d0c02c409f73caed9ed53cfbb5b9346  gcc/diagnostic-format-html.cc
  9dd0efe581c7fbd4e35dc41591b0893f  gcc/diagnostic-format-html.h
! 1093108f43fadce869c3564274772c1b  gcc/diagnostic-format-json.cc
! 345c346afb911b8ee2b2acf7af1f1ff2  gcc/diagnostic-format-sarif.cc
! 0c072eafb3b7693492d8dfa4feecad05  gcc/diagnostic-format-sarif.h
  0be3d31017b5c71132af3b72e12f5de2  gcc/diagnostic-format-text.cc
  66be909d880de2f75a896a45bf395ab6  gcc/diagnostic-format-text.h
! 15f344af3b22d6354665985c4e102b1f  gcc/diagnostic-format.h
  c57536f66ae2965d5f7308e1fe115f1e  gcc/diagnostic-global-context.cc
  ddb5e19e6f3ff8224aedd1a60eaad23e  gcc/diagnostic-highlight-colors.h
  dd85098d241db456b95090aed8ac8026  gcc/diagnostic-label-effects.h
*************** e472f6066cc64e9f1cee0136404f0751  gcc/di
*** 5879,5892 ****
  124a9446918f0c1e7a8586ac4aea6729  gcc/diagnostic-macro-unwinding.h
  065e0c81be159417eacd100742107ecc  gcc/diagnostic-metadata.h
  e32f47c03714e4be891aef1903c8a04f  gcc/diagnostic-output-file.h
! 9091b416f97aec3d64d98ec2fa0d1cbf  gcc/diagnostic-path-output.cc
  312dae6bb0d15d051e44b2f61ac34fe1  gcc/diagnostic-path.cc
  c8cf51c44328a35a27753d130a351bd5  gcc/diagnostic-path.h
! b5c205f61575ea34203b1b3c8ff2bc26  gcc/diagnostic-show-locus.cc
  81a24429bc8eb52cbe24d574c6ec7e53  gcc/diagnostic-spec.cc
  375a39d1eff397ae7fcdce6e05c76d50  gcc/diagnostic-spec.h
  dabd477d68c54372f8519e7c917d4a11  gcc/diagnostic-url.h
! 0ccc10923de273560789625083e33b20  gcc/diagnostic.cc
  03b04b0fb78353ca76570e5ef92cf756  gcc/diagnostic.def
  1d51aeacb86eb0d9f17d56d33fbc71fe  gcc/diagnostic.h
  bec68218d528467fd119bf2cd02bc358  gcc/digraph.cc
--- 5879,5892 ----
  124a9446918f0c1e7a8586ac4aea6729  gcc/diagnostic-macro-unwinding.h
  065e0c81be159417eacd100742107ecc  gcc/diagnostic-metadata.h
  e32f47c03714e4be891aef1903c8a04f  gcc/diagnostic-output-file.h
! 3eaf6892d1bb452e9c092534631fb338  gcc/diagnostic-path-output.cc
  312dae6bb0d15d051e44b2f61ac34fe1  gcc/diagnostic-path.cc
  c8cf51c44328a35a27753d130a351bd5  gcc/diagnostic-path.h
! 57bb21a62fc9a6635baf141982b806b9  gcc/diagnostic-show-locus.cc
  81a24429bc8eb52cbe24d574c6ec7e53  gcc/diagnostic-spec.cc
  375a39d1eff397ae7fcdce6e05c76d50  gcc/diagnostic-spec.h
  dabd477d68c54372f8519e7c917d4a11  gcc/diagnostic-url.h
! 30426474001fe0a6629783aad6e8a163  gcc/diagnostic.cc
  03b04b0fb78353ca76570e5ef92cf756  gcc/diagnostic.def
  1d51aeacb86eb0d9f17d56d33fbc71fe  gcc/diagnostic.h
  bec68218d528467fd119bf2cd02bc358  gcc/digraph.cc
*************** acdfc663791e4321372e79932070d05d  gcc/do
*** 5907,5913 ****
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 6da254e3af174f284fbb00d764e4d1ac  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
--- 5907,5913 ----
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 9647269312fe86103e4018786240edbf  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 5929,5937 ****
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! b84226d727996f5d2d47a7da7364c695  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 17067ebb468c3620baa7c44a6ebecd0b  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 5929,5937 ----
  9512a9fe27682edff7dd2ed171bbb853  gcc/doc/include/gcc-common.texi
  95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 06dd852aca896064e0cb6880890cc9c3  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! aafa6ea957f89d7ca135063a7a59a5f0  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** c9c36fbefa306c5ed545b38beb9d0a47  gcc/do
*** 5974,5980 ****
  2cd0efa7c8a7f870d4a0c0b2eed69798  gcc/doc/plugins.texi
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
! f0059adcfa95e3a6335ba83e623c713c  gcc/doc/riscv-ext.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
  583af35d0673981e3feb3b5e05c64ce8  gcc/doc/sourcebuild.texi
--- 5974,5980 ----
  2cd0efa7c8a7f870d4a0c0b2eed69798  gcc/doc/plugins.texi
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
  ee33d902cd60afae792843ff15ad6706  gcc/doc/portability.texi
! 1a9eb871f5f2f24159e18390feeb3c11  gcc/doc/riscv-ext.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
  583af35d0673981e3feb3b5e05c64ce8  gcc/doc/sourcebuild.texi
*************** e67bf1a2587fc7f7361e841145ff4cfb  gcc/es
*** 6022,6028 ****
  b5fa845ff578d70e8ceae655d6affc51  gcc/explow.h
  a4ee0bae47797ce73f05daef7a07edd4  gcc/expmed.cc
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
! 93d26b0b77b2a69a4f7eddd558209360  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
  6023e86ee70f68a65ad9ecb5735697ae  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
--- 6022,6028 ----
  b5fa845ff578d70e8ceae655d6affc51  gcc/explow.h
  a4ee0bae47797ce73f05daef7a07edd4  gcc/expmed.cc
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
! de0db91482e3d0889769a83bc7e854dc  gcc/expr.cc
  5480b0f834e382e22c92192d7f5a4744  gcc/expr.h
  6023e86ee70f68a65ad9ecb5735697ae  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
*************** a798cdca802a57ffa3473ab610b37c86  gcc/fo
*** 6041,6047 ****
  62673b998414c05d123a9e3cc51be1d9  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 32b395357da2e0f378fecd70f1849a95  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6041,6047 ----
  62673b998414c05d123a9e3cc51be1d9  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! c4ce51eec5965561a71065e614ae0b61  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** af66ab40a5434219772b76ad10035e45  gcc/fo
*** 6098,6104 ****
  aea31b73f1b7395d6302c57cbbf4bacf  gcc/fortran/interface.cc
  18ca0ff7b9d543b25078031bfadf0d2f  gcc/fortran/intrinsic.cc
  751fb9c42a3297fe53e0e7de9564bb27  gcc/fortran/intrinsic.h
! 9d797fdefac716538b6bc5b3fe81dfa1  gcc/fortran/intrinsic.texi
  4a7f5923c18268b245556ded8e9ba554  gcc/fortran/invoke.texi
  40352b9b20b1301c44326264b3f12cd1  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
--- 6098,6104 ----
  aea31b73f1b7395d6302c57cbbf4bacf  gcc/fortran/interface.cc
  18ca0ff7b9d543b25078031bfadf0d2f  gcc/fortran/intrinsic.cc
  751fb9c42a3297fe53e0e7de9564bb27  gcc/fortran/intrinsic.h
! b60821013312d0f84ade44881788b884  gcc/fortran/intrinsic.texi
  4a7f5923c18268b245556ded8e9ba554  gcc/fortran/invoke.texi
  40352b9b20b1301c44326264b3f12cd1  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
*************** d34323b4d6fe1da82a9a4c157463d875  gcc/gc
*** 6163,6169 ****
  74b8852724cd126309c2e814288bcaa4  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  7e2f3c81fe7c2381b433886ab2914fa7  gcc/gcc-urlifier.h
! db65d533f5b7156e8621f8ee7cfb6de9  gcc/gcc.cc
  265ae8f124014a92ca7dee798d9c2b46  gcc/gcc.h
  d66e80f2ea9c1b6754479c999040b857  gcc/gcov-counter.def
  c4e07547b91be991d1bed6c22015cec2  gcc/gcov-dump.cc
--- 6163,6169 ----
  74b8852724cd126309c2e814288bcaa4  gcc/gcc-urlifier.cc
  3ba51d67080efcd8791ea2eaf4103d72  gcc/gcc-urlifier.def
  7e2f3c81fe7c2381b433886ab2914fa7  gcc/gcc-urlifier.h
! f4276d234689e2787662f11ea4bcaffc  gcc/gcc.cc
  265ae8f124014a92ca7dee798d9c2b46  gcc/gcc.h
  d66e80f2ea9c1b6754479c999040b857  gcc/gcov-counter.def
  c4e07547b91be991d1bed6c22015cec2  gcc/gcov-dump.cc
*************** eceaf6fecb6df7f838b427bf4f70eade  gcc/gi
*** 6256,6264 ****
  1d0e0766111d9af10f6785e9ad0b3675  gcc/gimple-pretty-print.h
  446371913731af0105484445053116d7  gcc/gimple-range-cache.cc
  8c426458ee77fbac2c6b8f813f84b230  gcc/gimple-range-cache.h
! d0e39d30292d3cb008ec7fb9517c3032  gcc/gimple-range-edge.cc
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
! 7a72a36a4dc3a5803447f0e499d1784f  gcc/gimple-range-fold.cc
  6077f71d4f6a79ed60d0e24f247133a3  gcc/gimple-range-fold.h
  2ab6e680fbd55d50bfc4690e2ecf8a4f  gcc/gimple-range-gori.cc
  db61cb44af184c491426f70b14b72f64  gcc/gimple-range-gori.h
--- 6256,6264 ----
  1d0e0766111d9af10f6785e9ad0b3675  gcc/gimple-pretty-print.h
  446371913731af0105484445053116d7  gcc/gimple-range-cache.cc
  8c426458ee77fbac2c6b8f813f84b230  gcc/gimple-range-cache.h
! 3e4f3306c9eafee14102507900b96dad  gcc/gimple-range-edge.cc
  c8dd21ff63045c1a13e516534e9f26c8  gcc/gimple-range-edge.h
! 7391f48e70908e40192a48084f42e8b1  gcc/gimple-range-fold.cc
  6077f71d4f6a79ed60d0e24f247133a3  gcc/gimple-range-fold.h
  2ab6e680fbd55d50bfc4690e2ecf8a4f  gcc/gimple-range-gori.cc
  db61cb44af184c491426f70b14b72f64  gcc/gimple-range-gori.h
*************** eb7c233acdcae81b02395e856a9cfa3b  gcc/gi
*** 6273,6279 ****
  8a80a7176e272213da512b76afcab3d7  gcc/gimple-range-tests.cc
  74bf54ac2be468226c893a76f7919cbf  gcc/gimple-range-trace.cc
  8c93856aa354b96d19587f0c9e4051a6  gcc/gimple-range-trace.h
! 8eec860f985bd594ff1fcce24b6241c3  gcc/gimple-range.cc
  a4e263e8871b92796b1fb32a725e3eaa  gcc/gimple-range.h
  0a74fcfb6f542e62384811b3713681ce  gcc/gimple-ssa-backprop.cc
  3cfaaa2decd6de2542a919cfb8bdb93d  gcc/gimple-ssa-isolate-paths.cc
--- 6273,6279 ----
  8a80a7176e272213da512b76afcab3d7  gcc/gimple-range-tests.cc
  74bf54ac2be468226c893a76f7919cbf  gcc/gimple-range-trace.cc
  8c93856aa354b96d19587f0c9e4051a6  gcc/gimple-range-trace.h
! 146ce8532311064e53fbcfd9f47c5f93  gcc/gimple-range.cc
  a4e263e8871b92796b1fb32a725e3eaa  gcc/gimple-range.h
  0a74fcfb6f542e62384811b3713681ce  gcc/gimple-ssa-backprop.cc
  3cfaaa2decd6de2542a919cfb8bdb93d  gcc/gimple-ssa-isolate-paths.cc
*************** b551cb1f1566bf3aa2bca3816f2b1c98  gcc/gi
*** 6283,6289 ****
  c7ec9ee38b6e99c1260bd3e794ead05f  gcc/gimple-ssa-sprintf.cc
  827b9a16d251acce8466dcb4fc8420da  gcc/gimple-ssa-store-merging.cc
  5081e3b07e7210c50573a328ecd9e1b9  gcc/gimple-ssa-strength-reduction.cc
! 7e1a423dea2ff7a1182e9c4fb5227344  gcc/gimple-ssa-warn-access.cc
  3ae7b597d9d5e0c5ba61dc7ee8a7f2c2  gcc/gimple-ssa-warn-access.h
  58ebb365eca5688d01bd602f9fb054e2  gcc/gimple-ssa-warn-alloca.cc
  beb3ca2546e044813326413ad5c07630  gcc/gimple-ssa-warn-restrict.cc
--- 6283,6289 ----
  c7ec9ee38b6e99c1260bd3e794ead05f  gcc/gimple-ssa-sprintf.cc
  827b9a16d251acce8466dcb4fc8420da  gcc/gimple-ssa-store-merging.cc
  5081e3b07e7210c50573a328ecd9e1b9  gcc/gimple-ssa-strength-reduction.cc
! 66204acf1955fed6a7d167d0683a9eb4  gcc/gimple-ssa-warn-access.cc
  3ae7b597d9d5e0c5ba61dc7ee8a7f2c2  gcc/gimple-ssa-warn-access.h
  58ebb365eca5688d01bd602f9fb054e2  gcc/gimple-ssa-warn-alloca.cc
  beb3ca2546e044813326413ad5c07630  gcc/gimple-ssa-warn-restrict.cc
*************** b3d2e0a4fdb1acc7d7c1d1222ec7077d  gcc/in
*** 6435,6447 ****
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
  769443add1b7187045688cd8b1129647  gcc/int-vector-builder.h
! 897902cdd9de6a150cc7b44cc31db9a9  gcc/internal-fn.cc
  0eb0c9844fd70032778f6dc9c246eafd  gcc/internal-fn.def
  329c266487376ce133d0e9e580fc7a58  gcc/internal-fn.h
  bcb802c64e78f80e8e46c799c7e449ad  gcc/intl.cc
  deb111e00b2b07aa631595045bce5003  gcc/intl.h
  47a65e558aff89879902e88b055c7b12  gcc/ipa-comdats.cc
! c525294d84f849571e9e7e936d6b8e4d  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  4b65c0ccf8c98e3a0e1526acb4ebd3a4  gcc/ipa-devirt.cc
  2956ae29acd688fd2229744edabdc027  gcc/ipa-fnsummary.cc
--- 6435,6447 ----
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
  769443add1b7187045688cd8b1129647  gcc/int-vector-builder.h
! 3093eb391e3d132a46bb3cb37f03ca91  gcc/internal-fn.cc
  0eb0c9844fd70032778f6dc9c246eafd  gcc/internal-fn.def
  329c266487376ce133d0e9e580fc7a58  gcc/internal-fn.h
  bcb802c64e78f80e8e46c799c7e449ad  gcc/intl.cc
  deb111e00b2b07aa631595045bce5003  gcc/intl.h
  47a65e558aff89879902e88b055c7b12  gcc/ipa-comdats.cc
! 3d9360ea74446677dbd69b8559883761  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  4b65c0ccf8c98e3a0e1526acb4ebd3a4  gcc/ipa-devirt.cc
  2956ae29acd688fd2229744edabdc027  gcc/ipa-fnsummary.cc
*************** fef6f27045737cc29ebf2dbbd22dda02  gcc/ip
*** 6452,6458 ****
  005f3683b94c9cf2ef95442dcaaa8771  gcc/ipa-icf.cc
  b2ecb607534e24bdc2bc2e02ba2199ca  gcc/ipa-icf.h
  afa2616e2d58a9137deaabc102d2d7c1  gcc/ipa-inline-analysis.cc
! 0e7e9a25bfff19db564e8c572dda4dc5  gcc/ipa-inline-transform.cc
  d09d1d21291bcbca56c1e293683b3f7f  gcc/ipa-inline.cc
  229bac80ef5400801cf4edfd97790ef8  gcc/ipa-inline.h
  19c0cbbd70e071bd63dbb0527d02423e  gcc/ipa-locality-cloning.cc
--- 6452,6458 ----
  005f3683b94c9cf2ef95442dcaaa8771  gcc/ipa-icf.cc
  b2ecb607534e24bdc2bc2e02ba2199ca  gcc/ipa-icf.h
  afa2616e2d58a9137deaabc102d2d7c1  gcc/ipa-inline-analysis.cc
! 8aeea7e05b0080b60353a926b88ee97d  gcc/ipa-inline-transform.cc
  d09d1d21291bcbca56c1e293683b3f7f  gcc/ipa-inline.cc
  229bac80ef5400801cf4edfd97790ef8  gcc/ipa-inline.h
  19c0cbbd70e071bd63dbb0527d02423e  gcc/ipa-locality-cloning.cc
*************** dc9c6fb11d3b3fffe354eff3daf0454c  gcc/la
*** 6596,6602 ****
  bdf8ae675ae5000d854fe2874116b2f8  gcc/lcm.h
  027270d0be504f25a7efb49e1e3179bb  gcc/libfuncs.h
  79fe569ebf6fe058b6ca4777d240fa68  gcc/libgdiagnostics++.h
! d6e135b167cb1f68e1851b553aa7cd51  gcc/libgdiagnostics.cc
  5709edc2c86b3b266f851e186a7492ef  gcc/libgdiagnostics.h
  84f2ddafd88e9e988ae44973bb81f33f  gcc/libgdiagnostics.map
  3fb132c63fb7252b1081f8d48b376e6d  gcc/libsarifreplay.cc
--- 6596,6602 ----
  bdf8ae675ae5000d854fe2874116b2f8  gcc/lcm.h
  027270d0be504f25a7efb49e1e3179bb  gcc/libfuncs.h
  79fe569ebf6fe058b6ca4777d240fa68  gcc/libgdiagnostics++.h
! 50a640f5b9b7333cd83a35cba1aa6af8  gcc/libgdiagnostics.cc
  5709edc2c86b3b266f851e186a7492ef  gcc/libgdiagnostics.h
  84f2ddafd88e9e988ae44973bb81f33f  gcc/libgdiagnostics.map
  3fb132c63fb7252b1081f8d48b376e6d  gcc/libsarifreplay.cc
*************** d6e135b167cb1f68e1851b553aa7cd51  gcc/li
*** 6607,6613 ****
  30b8e3e407f46ad2cb39260ec4bab9f6  gcc/lock-and-run.sh
  7bf480c85a74d6690a5657de1434aef1  gcc/lockfile.cc
  03fdf33413400a8644c324d657debba0  gcc/lockfile.h
! 803748f717a53dfe6c94971f937b0156  gcc/logical-location.h
  0816d05453d7e9ce04f5d1bd97b7872b  gcc/loop-doloop.cc
  154eba32ec80f6804e8861149e26652c  gcc/loop-init.cc
  6e39bd9aab94c794b8cc992d0cadd9ae  gcc/loop-invariant.cc
--- 6607,6613 ----
  30b8e3e407f46ad2cb39260ec4bab9f6  gcc/lock-and-run.sh
  7bf480c85a74d6690a5657de1434aef1  gcc/lockfile.cc
  03fdf33413400a8644c324d657debba0  gcc/lockfile.h
! a65e9a278dce075c0c22b4a9aa5c3a37  gcc/logical-location.h
  0816d05453d7e9ce04f5d1bd97b7872b  gcc/loop-doloop.cc
  154eba32ec80f6804e8861149e26652c  gcc/loop-init.cc
  6e39bd9aab94c794b8cc992d0cadd9ae  gcc/loop-invariant.cc
*************** e44c0bf9cc0411d7bd57c6585eb6d0e4  gcc/lt
*** 6664,6670 ****
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! b95d07d4c89efb77a345117f43d1f263  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6664,6670 ----
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! 49e81864a5c606da37b86ac271ebaef5  gcc/m2/ChangeLog
  33352ea845a8d2399793299f3e58a218  gcc/m2/Make-lang.in
  93fe99bf456561cd217f1c93d2ab7da7  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** ffffd6bd10c2f3d61aee939845cdb397  gcc/m2
*** 6745,6751 ****
  5aae879fe93711ac462b3871f94cfdfb  gcc/m2/gm2-compiler/M2Printf.def
  2984233cca97a1078980faba9ae9c1c5  gcc/m2/gm2-compiler/M2Printf.mod
  1f3929030e3dde0bd645746be5c341d3  gcc/m2/gm2-compiler/M2Quads.def
! 8b24c5d31b1e05fb7cbc0c192ca5aba8  gcc/m2/gm2-compiler/M2Quads.mod
  652e5da6749bca8b22b149208db30048  gcc/m2/gm2-compiler/M2Quiet.def
  fe82981e1fc213781973d90590cac13a  gcc/m2/gm2-compiler/M2Quiet.mod
  3a524bf1e1843ed3472cde4c27661681  gcc/m2/gm2-compiler/M2Range.def
--- 6745,6751 ----
  5aae879fe93711ac462b3871f94cfdfb  gcc/m2/gm2-compiler/M2Printf.def
  2984233cca97a1078980faba9ae9c1c5  gcc/m2/gm2-compiler/M2Printf.mod
  1f3929030e3dde0bd645746be5c341d3  gcc/m2/gm2-compiler/M2Quads.def
! f4818e2ea724bb28639ec9b6d2b964af  gcc/m2/gm2-compiler/M2Quads.mod
  652e5da6749bca8b22b149208db30048  gcc/m2/gm2-compiler/M2Quiet.def
  fe82981e1fc213781973d90590cac13a  gcc/m2/gm2-compiler/M2Quiet.mod
  3a524bf1e1843ed3472cde4c27661681  gcc/m2/gm2-compiler/M2Range.def
*************** bdf8e4e5301538b72767dc22581f3f7f  gcc/m2
*** 7138,7144 ****
  4a2d9a87b99d093e73909811facfba11  gcc/m2/gm2-libs-min/SYSTEM.mod
  6066eff2e23b028b779eab8f65a6cdb8  gcc/m2/gm2-libs-min/libc.c
  28dd7c1333503f47c1b34cbbedb9bd6c  gcc/m2/gm2-libs-min/libc.def
! 338ffd9f9156c6f74cb6272e415672e4  gcc/m2/gm2-libs/ARRAYOFCHAR.def
  ff9cd201ed5e5f197014f5ae68373fc0  gcc/m2/gm2-libs/ARRAYOFCHAR.mod
  0c0b70f740fb2aa15f3cd8ffa440bcad  gcc/m2/gm2-libs/ASCII.def
  8029a2f255a54f322fdd3b21c36b55f7  gcc/m2/gm2-libs/ASCII.mod
--- 7138,7144 ----
  4a2d9a87b99d093e73909811facfba11  gcc/m2/gm2-libs-min/SYSTEM.mod
  6066eff2e23b028b779eab8f65a6cdb8  gcc/m2/gm2-libs-min/libc.c
  28dd7c1333503f47c1b34cbbedb9bd6c  gcc/m2/gm2-libs-min/libc.def
! a536407a602f6237b202eb11c825a25e  gcc/m2/gm2-libs/ARRAYOFCHAR.def
  ff9cd201ed5e5f197014f5ae68373fc0  gcc/m2/gm2-libs/ARRAYOFCHAR.mod
  0c0b70f740fb2aa15f3cd8ffa440bcad  gcc/m2/gm2-libs/ASCII.def
  8029a2f255a54f322fdd3b21c36b55f7  gcc/m2/gm2-libs/ASCII.mod
*************** a7f71bd9b880673b18abd6ab022331c1  gcc/m2
*** 7598,7608 ****
  cfd0eda3744ba9d00f0c88d3762d7f06  gcc/m2/pge-boot/network.cc
  18840892def349c0982fbe40111d6a91  gcc/m2/plugin/README
  dd0625a7245e019bcefa8581aac88a27  gcc/m2/plugin/m2rte.cc
! b6e5f0da274b54528dae320c9d012d8b  gcc/m2/target-independent/m2/Builtins.texi
! ff2cddc8e82d26e626d51a518f97024d  gcc/m2/target-independent/m2/SYSTEM-iso.texi
! 803e2e2c4293fdba546b2340322ba0ce  gcc/m2/target-independent/m2/SYSTEM-pim.texi
  03eaafb97c5c63c6a17ffd76fa52f53c  gcc/m2/target-independent/m2/gm2-ebnf.texi
! 3cf6d843de6e7d2300339c7bf62741b5  gcc/m2/target-independent/m2/gm2-libs.texi
  3eed1eee3be7e4c14fa1d8f611ab2c90  gcc/m2/target-independent/m2/gpl_v3_without_node.texi
  90ef5843055db95072a5e0dcaad1e694  gcc/m2/target-independent/readme.txt
  7625da2d2347161386e94664ab2ceac9  gcc/m2/tools-src/README
--- 7598,7608 ----
  cfd0eda3744ba9d00f0c88d3762d7f06  gcc/m2/pge-boot/network.cc
  18840892def349c0982fbe40111d6a91  gcc/m2/plugin/README
  dd0625a7245e019bcefa8581aac88a27  gcc/m2/plugin/m2rte.cc
! 0660bb99723628b350ba665f6a743603  gcc/m2/target-independent/m2/Builtins.texi
! 8007d011990ec6a27344c59375b632b5  gcc/m2/target-independent/m2/SYSTEM-iso.texi
! af715e0938ee1e3521e0d6aeb1546db9  gcc/m2/target-independent/m2/SYSTEM-pim.texi
  03eaafb97c5c63c6a17ffd76fa52f53c  gcc/m2/target-independent/m2/gm2-ebnf.texi
! 1a552f609a016d52022a219337b97975  gcc/m2/target-independent/m2/gm2-libs.texi
  3eed1eee3be7e4c14fa1d8f611ab2c90  gcc/m2/target-independent/m2/gpl_v3_without_node.texi
  90ef5843055db95072a5e0dcaad1e694  gcc/m2/target-independent/readme.txt
  7625da2d2347161386e94664ab2ceac9  gcc/m2/tools-src/README
*************** a9772a5a6b37efbf620593d1ecb9a9a2  gcc/mo
*** 7631,7642 ****
  05dd9bcbee4ec681bdb25810f43cfb53  gcc/modulo-sched.cc
  9c6a28ae7944e5f796f3439aa2df1d22  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
! cda6bdd4710fae1648bc5df1091b155e  gcc/objc/ChangeLog
  8d082f55b0cdfd75ea3681dfa074f5b2  gcc/objc/Make-lang.in
  9afcb04ac4a886901dfab5e553774a8e  gcc/objc/config-lang.in
  42a524a0868e4113a592235af9fd222a  gcc/objc/lang-specs.h
  6baa79bd2ba6dc947f4fd01f5657fb85  gcc/objc/objc-act.cc
! 2621911d7ee6c7116fb7e99ba392cf46  gcc/objc/objc-act.h
  0979f2ea1b2debef9c73e4783d9f2dbd  gcc/objc/objc-encoding.cc
  fcedf976eab08e66a03bab8869eef6ed  gcc/objc/objc-encoding.h
  b37ee7fb7427c5393fbb90e710be4b5d  gcc/objc/objc-gnu-runtime-abi-01.cc
--- 7631,7642 ----
  05dd9bcbee4ec681bdb25810f43cfb53  gcc/modulo-sched.cc
  9c6a28ae7944e5f796f3439aa2df1d22  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
! def148be0dd316c1c852d83f7fe9f6c9  gcc/objc/ChangeLog
  8d082f55b0cdfd75ea3681dfa074f5b2  gcc/objc/Make-lang.in
  9afcb04ac4a886901dfab5e553774a8e  gcc/objc/config-lang.in
  42a524a0868e4113a592235af9fd222a  gcc/objc/lang-specs.h
  6baa79bd2ba6dc947f4fd01f5657fb85  gcc/objc/objc-act.cc
! ac71d217a177a12c17b78c3a9b1fee90  gcc/objc/objc-act.h
  0979f2ea1b2debef9c73e4783d9f2dbd  gcc/objc/objc-encoding.cc
  fcedf976eab08e66a03bab8869eef6ed  gcc/objc/objc-encoding.h
  b37ee7fb7427c5393fbb90e710be4b5d  gcc/objc/objc-gnu-runtime-abi-01.cc
*************** d014415973aeadfa317bbf58d7670cb3  gcc/ob
*** 7650,7661 ****
  698aa8c8e68ec8bd5aa475f9a380de0f  gcc/objc/objc-runtime-shared-support.cc
  5b47b9b3c7bb8072b197715dfe71a9a2  gcc/objc/objc-runtime-shared-support.h
  b648849750be8f504a100c2ba7c790e0  gcc/objc/objc-tree.def
! 2b6eb41cadf1f96e2ef0e212079b3550  gcc/objcp/ChangeLog
  150f27d7488f95ff898f3ff26d4d4973  gcc/objcp/Make-lang.in
  004fa5a83d6b4ad3094b9b495f104ac6  gcc/objcp/config-lang.in
  b6aaded8e85e2c15678b63196f1010b6  gcc/objcp/lang-specs.h
  63bf652b425124f1b55134997b32bcb3  gcc/objcp/objcp-decl.cc
! f70c3872b668ba9c99b8d73ab2f9cf79  gcc/objcp/objcp-decl.h
  127ff083af2dabd45a27016102f6b2ab  gcc/objcp/objcp-lang.cc
  8d1f0d9303077458b28a80a9546ff2ba  gcc/obstack-utils.h
  c2186582925518f8871bcb0f066553f0  gcc/omp-api.h
--- 7650,7661 ----
  698aa8c8e68ec8bd5aa475f9a380de0f  gcc/objc/objc-runtime-shared-support.cc
  5b47b9b3c7bb8072b197715dfe71a9a2  gcc/objc/objc-runtime-shared-support.h
  b648849750be8f504a100c2ba7c790e0  gcc/objc/objc-tree.def
! 745ade522ac0c690c3c30b08faa57af2  gcc/objcp/ChangeLog
  150f27d7488f95ff898f3ff26d4d4973  gcc/objcp/Make-lang.in
  004fa5a83d6b4ad3094b9b495f104ac6  gcc/objcp/config-lang.in
  b6aaded8e85e2c15678b63196f1010b6  gcc/objcp/lang-specs.h
  63bf652b425124f1b55134997b32bcb3  gcc/objcp/objcp-decl.cc
! 5b1654ec2d839b6da0fd67ab3c6b5e08  gcc/objcp/objcp-decl.h
  127ff083af2dabd45a27016102f6b2ab  gcc/objcp/objcp-lang.cc
  8d1f0d9303077458b28a80a9546ff2ba  gcc/obstack-utils.h
  c2186582925518f8871bcb0f066553f0  gcc/omp-api.h
*************** fcb5b7227342c442bcddbcc06eaddcdc  gcc/op
*** 7699,7705 ****
  58f02a8817c05c6681ba150251b166e8  gcc/optinfo.h
  1c30e8950551cbe97bda991d288b7bb7  gcc/options-urls-cc-gen.awk
  06a83d971fd3a11f54c904ab9260cc09  gcc/opts-common.cc
! 283d65838ceb0c8c1bff29483139efac  gcc/opts-diagnostic.cc
  bd138c731d5ef02ebe19e25375c465c8  gcc/opts-diagnostic.h
  dc49add7ae35ac8842b786b817fd79b3  gcc/opts-global.cc
  079a115ae417106f3e7f42b0272b866d  gcc/opts-jobserver.h
--- 7699,7705 ----
  58f02a8817c05c6681ba150251b166e8  gcc/optinfo.h
  1c30e8950551cbe97bda991d288b7bb7  gcc/options-urls-cc-gen.awk
  06a83d971fd3a11f54c904ab9260cc09  gcc/opts-common.cc
! 7665155906371f34e166fe02aec0b1b7  gcc/opts-diagnostic.cc
  bd138c731d5ef02ebe19e25375c465c8  gcc/opts-diagnostic.h
  dc49add7ae35ac8842b786b817fd79b3  gcc/opts-global.cc
  079a115ae417106f3e7f42b0272b866d  gcc/opts-jobserver.h
*************** fccd951e3de91d49d3824e482c12e070  gcc/or
*** 7710,7716 ****
  c77558a1c1f43463b3acae9243006ef9  gcc/output.h
  c9e6163e1eaa8f82c57f03f76e86da75  gcc/pair-fusion.cc
  b2f692287d25760afcef126c010f7078  gcc/pair-fusion.h
! 718e6aebe38eb0dd2bf3d15b5553f760  gcc/params.opt
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  818628b1b793b8f87f62d0c18fd1219a  gcc/pass_manager.h
  cf39cd628f9dc29a9a191f4af2c68346  gcc/passes.cc
--- 7710,7716 ----
  c77558a1c1f43463b3acae9243006ef9  gcc/output.h
  c9e6163e1eaa8f82c57f03f76e86da75  gcc/pair-fusion.cc
  b2f692287d25760afcef126c010f7078  gcc/pair-fusion.h
! 8af698cb899def4454f4b2b33cf5649a  gcc/params.opt
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  818628b1b793b8f87f62d0c18fd1219a  gcc/pass_manager.h
  cf39cd628f9dc29a9a191f4af2c68346  gcc/passes.cc
*************** e3f908061f2b051f55381b513a49022b  gcc/pa
*** 7719,7731 ****
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! aada76b74d192a74a0f06c0b61d666c0  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  ad3ed4d3a0135fbf9610627185805a14  gcc/po/be.po
  f06a600ee92348bc59755f3b4e3508bd  gcc/po/da.po
  eb727b61fc41c69f8eb58feed8f6f9af  gcc/po/de.po
  9dbd88f88adbc476a62e0c28592b8fe3  gcc/po/el.po
! f8a2f5613d5ae68cdad556047b6e7af3  gcc/po/es.po
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
  fc82e39614cbd5712e526b5f96bc1f74  gcc/po/fi.po
  52fd9ff2ae03e28d28ad65440d9548b2  gcc/po/fr.po
--- 7719,7731 ----
  57048d71e78511e69e3d39d60cb2f1b7  gcc/plugin.cc
  995702441547e9826ffaea326d8be617  gcc/plugin.def
  79cd4ea374ded38e9f3ef38c1624db9e  gcc/plugin.h
! b890e1bc3cedc73aaac412d28d28ef4a  gcc/po/ChangeLog
  fcae8297fb0c1be8e1502d7ca12c249f  gcc/po/EXCLUDES
  ad3ed4d3a0135fbf9610627185805a14  gcc/po/be.po
  f06a600ee92348bc59755f3b4e3508bd  gcc/po/da.po
  eb727b61fc41c69f8eb58feed8f6f9af  gcc/po/de.po
  9dbd88f88adbc476a62e0c28592b8fe3  gcc/po/el.po
! 2a8b04245b2c87d2208d599cc879f4c5  gcc/po/es.po
  748a1d219b34c4206fcf3385510cec82  gcc/po/exgettext
  fc82e39614cbd5712e526b5f96bc1f74  gcc/po/fi.po
  52fd9ff2ae03e28d28ad65440d9548b2  gcc/po/fr.po
*************** a5461dd81ec55dc6f56817a1f356f345  gcc/pr
*** 7765,7771 ****
  63499dea0e911b175def4a9153353027  gcc/print-rtl.h
  25b31c9113a977129e37056b6c5fd751  gcc/print-tree.cc
  469848c1e480b033f7ee22f68ec05f94  gcc/print-tree.h
! 535c6328fbe64d2af384ff2ef5d9b40d  gcc/profile-count.cc
  baf3f698b3459c32f628569084b80d9c  gcc/profile-count.h
  be294583d74c167da1819e51e9001b52  gcc/profile.cc
  d30f617ac9705fc7dc5d14e744fe4ff0  gcc/profile.h
--- 7765,7771 ----
  63499dea0e911b175def4a9153353027  gcc/print-rtl.h
  25b31c9113a977129e37056b6c5fd751  gcc/print-tree.cc
  469848c1e480b033f7ee22f68ec05f94  gcc/print-tree.h
! a559f8db8fdf600017e3fe66abf3d494  gcc/profile-count.cc
  baf3f698b3459c32f628569084b80d9c  gcc/profile-count.h
  be294583d74c167da1819e51e9001b52  gcc/profile.cc
  d30f617ac9705fc7dc5d14e744fe4ff0  gcc/profile.h
*************** da289341188bb47929b58cb05089f2b1  gcc/se
*** 8356,8367 ****
  aa7a992403f9436fb020f56988773ed5  gcc/selftest-diagnostic.h
  109061be2ca9df2d7941d134aabdf120  gcc/selftest-json.cc
  065d0522cc6ea795703e89270514b149  gcc/selftest-json.h
! cf6dc6ad925fca1cf0c021015c344469  gcc/selftest-logical-location.cc
  74ebb02c30bec8d1c45c78a387c5ee18  gcc/selftest-logical-location.h
  22224372e5a2696e660289e86b2696a5  gcc/selftest-rtl.cc
  ab96230d11b93b85d4d1b85cc5d494ab  gcc/selftest-rtl.h
  5bfc4952abe408a262a202b0601d72e8  gcc/selftest-run-tests.cc
  777b0025fe2356f118cb24f2302ae4ff  gcc/selftest-tree.h
  220320c985328c0546a9a80a7353964e  gcc/selftest.cc
  77ef0eb0fe55f14cbf7d202f1e79584e  gcc/selftest.h
  71b83bf173726493d9fee558216a2e02  gcc/sese.cc
--- 8356,8368 ----
  aa7a992403f9436fb020f56988773ed5  gcc/selftest-diagnostic.h
  109061be2ca9df2d7941d134aabdf120  gcc/selftest-json.cc
  065d0522cc6ea795703e89270514b149  gcc/selftest-json.h
! d90d59efc5dfd5359241062d80e3e745  gcc/selftest-logical-location.cc
  74ebb02c30bec8d1c45c78a387c5ee18  gcc/selftest-logical-location.h
  22224372e5a2696e660289e86b2696a5  gcc/selftest-rtl.cc
  ab96230d11b93b85d4d1b85cc5d494ab  gcc/selftest-rtl.h
  5bfc4952abe408a262a202b0601d72e8  gcc/selftest-run-tests.cc
  777b0025fe2356f118cb24f2302ae4ff  gcc/selftest-tree.h
+ fdc04e5af7ee387dce07c6ba9a99eaa8  gcc/selftest-xml.h
  220320c985328c0546a9a80a7353964e  gcc/selftest.cc
  77ef0eb0fe55f14cbf7d202f1e79584e  gcc/selftest.h
  71b83bf173726493d9fee558216a2e02  gcc/sese.cc
*************** f5e5ba1329ffae51d286f6c8932308d6  gcc/sr
*** 8390,8396 ****
  d0b55fa9a0f86f4f03bdbfcff3e068d8  gcc/stack-ptr-mod.cc
  bbd5abaa55463a5497e6ff9d14de3a1b  gcc/statistics.cc
  3fc844db346b8f5e70da401bd3f4ad0d  gcc/statistics.h
! 7a7a1a9ae9adfd12a338920b6553fb7c  gcc/stmt.cc
  dbd64f0fc5e750c51b3fae1183025ef5  gcc/stmt.h
  505fadce4b59d904957e16a30ade9c42  gcc/stor-layout.cc
  eb7d04020ade148a4c8969151c6d5478  gcc/stor-layout.h
--- 8391,8397 ----
  d0b55fa9a0f86f4f03bdbfcff3e068d8  gcc/stack-ptr-mod.cc
  bbd5abaa55463a5497e6ff9d14de3a1b  gcc/statistics.cc
  3fc844db346b8f5e70da401bd3f4ad0d  gcc/statistics.h
! ef637b5ca39d975c9e9bb73f830eacd9  gcc/stmt.cc
  dbd64f0fc5e750c51b3fae1183025ef5  gcc/stmt.h
  505fadce4b59d904957e16a30ade9c42  gcc/stor-layout.cc
  eb7d04020ade148a4c8969151c6d5478  gcc/stor-layout.h
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8426,8432 ****
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 69d2de10aa8a11028b036894bc1b93b3  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8427,8433 ----
  b4bbfe8a8f62eed5c75429762e88d324  gcc/targhooks.cc
  ae57260b8b60d8b8dfaef3556c3ac5e5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 707ec69cc9a2b5c29540c12f577a7e0d  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** c03d94813a62c9fafb95c7b8983360ce  gcc/te
*** 19379,19384 ****
--- 19380,19386 ----
  4406cf29b6e608168beb66e51b0828ce  gcc/testsuite/c-c++-common/pragma-diag-15.c
  2f44bc43abfb65e37859c4ba4bba1d3d  gcc/testsuite/c-c++-common/pragma-diag-16.c
  bac9caa6b04381a94bbf89aaf37887b7  gcc/testsuite/c-c++-common/pragma-diag-17.c
+ 06acaaea995b8a5763ef01e309ae0581  gcc/testsuite/c-c++-common/pragma-optimize-1.c
  6fbfb0791efb04e7199a6a9e44c1e3c9  gcc/testsuite/c-c++-common/pragma-region.c
  b74aa710dd73be16a516f400b59f4ab4  gcc/testsuite/c-c++-common/pragma-target-1.c
  e08a01190a0adf03b4c03708f6da1223  gcc/testsuite/c-c++-common/pragma-target-2.c
*************** c460f4ef8e2c4347cfa3c06d82869353  gcc/te
*** 21755,21761 ****
  bf25ae08316051d9833582ee358711b2  gcc/testsuite/g++.dg/coroutines/coro-bad-grooaf-01-grooaf-expected.C
  8e2244c730152e6c96e90cb463a33d11  gcc/testsuite/g++.dg/coroutines/coro-builtins.C
  a20d9c7dba9d8ca91ca47515997e5b82  gcc/testsuite/g++.dg/coroutines/coro-function-decl.C
! 2ee732d97a353f9dae689cd5e7a0e6bf  gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C
  c650db04adc1ddeff58daa89681ac083  gcc/testsuite/g++.dg/coroutines/coro-missing-gro.C
  d622746579a0968e8d80e69091842263  gcc/testsuite/g++.dg/coroutines/coro-missing-initial-suspend.C
  01aba67828b1315bbab362390efef076  gcc/testsuite/g++.dg/coroutines/coro-missing-promise-yield.C
--- 21757,21763 ----
  bf25ae08316051d9833582ee358711b2  gcc/testsuite/g++.dg/coroutines/coro-bad-grooaf-01-grooaf-expected.C
  8e2244c730152e6c96e90cb463a33d11  gcc/testsuite/g++.dg/coroutines/coro-builtins.C
  a20d9c7dba9d8ca91ca47515997e5b82  gcc/testsuite/g++.dg/coroutines/coro-function-decl.C
! 07743b60abf7b730475c646065f5cff7  gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C
  c650db04adc1ddeff58daa89681ac083  gcc/testsuite/g++.dg/coroutines/coro-missing-gro.C
  d622746579a0968e8d80e69091842263  gcc/testsuite/g++.dg/coroutines/coro-missing-initial-suspend.C
  01aba67828b1315bbab362390efef076  gcc/testsuite/g++.dg/coroutines/coro-missing-promise-yield.C
*************** bd0ea3710f987fa8b866de1dda671af6  gcc/te
*** 21770,21776 ****
  4cd3a4318393e911038536b6ead6b491  gcc/testsuite/g++.dg/coroutines/coro-range-for1.C
  022bd06252ed95612a4c379cb3d160c6  gcc/testsuite/g++.dg/coroutines/coro.h
  cb41fef7448625fa4e0c8fd96e24fc4d  gcc/testsuite/g++.dg/coroutines/coro1-allocators.h
! 478574fcd282b18447d13478fa0bec3f  gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
  6f5627b19b794cfdd383607165c8ad4e  gcc/testsuite/g++.dg/coroutines/coro1-refs-and-ctors.h
  6487c0454968e62ff493f215450a35cc  gcc/testsuite/g++.dg/coroutines/coro1-ret-int-yield-int.h
  6ece11b45159f25b68242745f908d279  gcc/testsuite/g++.dg/coroutines/maybe-unused-1.C
--- 21772,21778 ----
  4cd3a4318393e911038536b6ead6b491  gcc/testsuite/g++.dg/coroutines/coro-range-for1.C
  022bd06252ed95612a4c379cb3d160c6  gcc/testsuite/g++.dg/coroutines/coro.h
  cb41fef7448625fa4e0c8fd96e24fc4d  gcc/testsuite/g++.dg/coroutines/coro1-allocators.h
! 2d774ec6394ae7666d4e6bc4ec3e6183  gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
  6f5627b19b794cfdd383607165c8ad4e  gcc/testsuite/g++.dg/coroutines/coro1-refs-and-ctors.h
  6487c0454968e62ff493f215450a35cc  gcc/testsuite/g++.dg/coroutines/coro1-ret-int-yield-int.h
  6ece11b45159f25b68242745f908d279  gcc/testsuite/g++.dg/coroutines/maybe-unused-1.C
*************** db554dd8b7e091b17b59c6d8ebf5684e  gcc/te
*** 21789,21795 ****
  ef7a17d165b83f4a1f6f2146ca741d68  gcc/testsuite/g++.dg/coroutines/pr102489.C
  85cc1b4c4f0e73f17a81693bed3275fa  gcc/testsuite/g++.dg/coroutines/pr103328.C
  858276614776f5f89fec709b05c75e87  gcc/testsuite/g++.dg/coroutines/pr103868.C
! a49dbbbe1c94b2689489e4c418d84316  gcc/testsuite/g++.dg/coroutines/pr104051.C
  b134bf48c5d1c37a3f48e0c7f25bd714  gcc/testsuite/g++.dg/coroutines/pr104981-preview-this.C
  acd4b7e351c1cfe5342e8fe75093f59b  gcc/testsuite/g++.dg/coroutines/pr105287.C
  3ed2837ec0a605227e3db035996b80d7  gcc/testsuite/g++.dg/coroutines/pr105301.C
--- 21791,21798 ----
  ef7a17d165b83f4a1f6f2146ca741d68  gcc/testsuite/g++.dg/coroutines/pr102489.C
  85cc1b4c4f0e73f17a81693bed3275fa  gcc/testsuite/g++.dg/coroutines/pr103328.C
  858276614776f5f89fec709b05c75e87  gcc/testsuite/g++.dg/coroutines/pr103868.C
! dd1a29fabad954f753ab8031a31e31d0  gcc/testsuite/g++.dg/coroutines/pr104051-0.C
! c8f94348fa3a6378ec5c6fd9589d0c4c  gcc/testsuite/g++.dg/coroutines/pr104051-1.C
  b134bf48c5d1c37a3f48e0c7f25bd714  gcc/testsuite/g++.dg/coroutines/pr104981-preview-this.C
  acd4b7e351c1cfe5342e8fe75093f59b  gcc/testsuite/g++.dg/coroutines/pr105287.C
  3ed2837ec0a605227e3db035996b80d7  gcc/testsuite/g++.dg/coroutines/pr105301.C
*************** b75b654187426934820f1e2a8a63aaad  gcc/te
*** 21829,21838 ****
--- 21832,21843 ----
  36259c7c65f78b7358d2efa4fb0a9e54  gcc/testsuite/g++.dg/coroutines/pr116482.C
  808c70848e15a3d82e09b131dabb149b  gcc/testsuite/g++.dg/coroutines/pr116502.C
  99fb6f2e5c0e7bc8a3c78cbf8090a91f  gcc/testsuite/g++.dg/coroutines/pr116506.C
+ a086058df225e5fda842f4ebd12d6dbd  gcc/testsuite/g++.dg/coroutines/pr116775.C
  59d8e6cfa9a450642b4a378751f44e8a  gcc/testsuite/g++.dg/coroutines/pr116793-1.C
  16df01e113e50e8969f23cb32c1ab8fd  gcc/testsuite/g++.dg/coroutines/pr116880.C
  6f5d9f0541a73db813050efb87fec0d6  gcc/testsuite/g++.dg/coroutines/pr118903.C
  639bf3d722d542a1aab7bcbf3114716a  gcc/testsuite/g++.dg/coroutines/pr120453.C
+ 5e0a6f554522f0537a21112c91d33895  gcc/testsuite/g++.dg/coroutines/pr120495.C
  cbb42d13b1660a8eb1d40a3d88308140  gcc/testsuite/g++.dg/coroutines/pr93458-1-missing-traits.C
  d9151fc224e4913ed7ffacd748769917  gcc/testsuite/g++.dg/coroutines/pr93458-2-bad-traits.C
  e9b715cb41c54f5b179b4725b788e338  gcc/testsuite/g++.dg/coroutines/pr93458-3-missing-handle.C
*************** b8fef9a1bd09e90415f3e35f5466c85c  gcc/te
*** 33688,33693 ****
--- 33693,33699 ----
  f974ff4ce09c3f50fcec3f4ce9c39925  gcc/testsuite/g++.dg/opt/pr119518.C
  c60b844a013ddc3832a59b1cd376b1ad  gcc/testsuite/g++.dg/opt/pr119613.C
  8ae5f63f132f2e69255225e052069238  gcc/testsuite/g++.dg/opt/pr119614.C
+ b67c374c96c5b9bf7bfc34ab5c497627  gcc/testsuite/g++.dg/opt/pr120629.C
  2896f5b1a96dd9fabb1dbb65cb4c5921  gcc/testsuite/g++.dg/opt/pr13066-1.C
  4f87f86b9f018cae74888e97468b2fe0  gcc/testsuite/g++.dg/opt/pr14029.C
  8fb7e68e9e9b5eb02628e03f5333e645  gcc/testsuite/g++.dg/opt/pr14888.C
*************** f678b424d2148346313809851fbbe611  gcc/te
*** 35211,35216 ****
--- 35217,35223 ----
  adfc90a4ec5f7e6acacbdafc592a2862  gcc/testsuite/g++.dg/pr113673.C
  6431e5522e8138d482199836afdeb823  gcc/testsuite/g++.dg/pr114501_0.C
  ad9259e6bdf3bdde202871cc62bd27bb  gcc/testsuite/g++.dg/pr115232.C
+ d817d87f4590a7694dcb15ea0a0856a3  gcc/testsuite/g++.dg/pr115605.C
  af4c6212c5e52bf135c1867c6656d88b  gcc/testsuite/g++.dg/pr117222.C
  907af190ec2f3efd086d2b352c9934cd  gcc/testsuite/g++.dg/pr117919.C
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
*************** c06ceb436623685585c49fb701481265  gcc/te
*** 43188,43193 ****
--- 43195,43202 ----
  6d0d9132ecd5c558bd1ec20dcee32d5d  gcc/testsuite/g++.target/i386/vec-tmpl1.C
  d4dcded6122bb77c0450fd18568c030b  gcc/testsuite/g++.target/i386/vect-bfloat16-1.C
  b7eeb348c339c03fc0e89fe6ef631f76  gcc/testsuite/g++.target/i386/vect-cmp.C
+ 99f041cd98285900f98c95042bbb14b5  gcc/testsuite/g++.target/i386/vect-pragma-target-1.C
+ c8c24d88b9d93938e4018923d3db0ce3  gcc/testsuite/g++.target/i386/vect-pragma-target-2.C
  8df5f1183de744dc2a3a0c11278caec6  gcc/testsuite/g++.target/loongarch/atomic-cas-int.C
  f8bc85022b7adc985d76ed2766575abb  gcc/testsuite/g++.target/loongarch/bstrins-compile.C
  3d24eccefdd318d1bf2770dde9f60a08  gcc/testsuite/g++.target/loongarch/bstrins-run.C
*************** ac49cc2a622b01c5caa9253f83c5bdee  gcc/te
*** 43257,43266 ****
  3ab7d6c274311edec73365c855c97595  gcc/testsuite/g++.target/powerpc/altivec-types-4.C
  1dcc294b786a601d5c1b5d4178563803  gcc/testsuite/g++.target/powerpc/const2.C
  bd1c35be302338df14b1aa330813797d  gcc/testsuite/g++.target/powerpc/darwin-minversion-1.C
! f5b7ccbd3f678bc70227be8126507efb  gcc/testsuite/g++.target/powerpc/mvc-symbols1.C
! 183dc83aec115f5380cf8f58c39d6ba6  gcc/testsuite/g++.target/powerpc/mvc-symbols2.C
! 27ab04c73a66dce635c16a5d1371e7fc  gcc/testsuite/g++.target/powerpc/mvc-symbols3.C
! 76b63716511a7a9a89213699818696da  gcc/testsuite/g++.target/powerpc/mvc-symbols4.C
  d424a431fe3d449ee6974b8ea63bbdab  gcc/testsuite/g++.target/powerpc/powerpc.exp
  bafc15005abdfe9131f6074efde175eb  gcc/testsuite/g++.target/powerpc/ppc64-sighandle-cr.C
  e20e538d4bb1e80f32276f6a48219247  gcc/testsuite/g++.target/powerpc/pr101168.C
--- 43266,43275 ----
  3ab7d6c274311edec73365c855c97595  gcc/testsuite/g++.target/powerpc/altivec-types-4.C
  1dcc294b786a601d5c1b5d4178563803  gcc/testsuite/g++.target/powerpc/const2.C
  bd1c35be302338df14b1aa330813797d  gcc/testsuite/g++.target/powerpc/darwin-minversion-1.C
! ed682c5c32c8c40365c63058db820371  gcc/testsuite/g++.target/powerpc/mvc-symbols1.C
! 6f672fa678cee60fe23718bec1acfbb6  gcc/testsuite/g++.target/powerpc/mvc-symbols2.C
! 363132ff2406d4af14ddb7f074f68c0e  gcc/testsuite/g++.target/powerpc/mvc-symbols3.C
! 0d3b918c9a70db4e886e0846302f1fc2  gcc/testsuite/g++.target/powerpc/mvc-symbols4.C
  d424a431fe3d449ee6974b8ea63bbdab  gcc/testsuite/g++.target/powerpc/powerpc.exp
  bafc15005abdfe9131f6074efde175eb  gcc/testsuite/g++.target/powerpc/ppc64-sighandle-cr.C
  e20e538d4bb1e80f32276f6a48219247  gcc/testsuite/g++.target/powerpc/pr101168.C
*************** cf63bfb7d81a1506c5a7f642d12550d0  gcc/te
*** 46669,46674 ****
--- 46678,46684 ----
  fd7185346c3b94c0a7f7afba7b6bc241  gcc/testsuite/gcc.c-torture/execute/pr119071.c
  b7150a91a8e64c0a2f8d47a9f857fd6e  gcc/testsuite/gcc.c-torture/execute/pr119291.c
  e88a36f4cba0e85d5491d4b566b19508  gcc/testsuite/gcc.c-torture/execute/pr119428.c
+ 6cd050f88ca0f122ca3d062c32ebb9cf  gcc/testsuite/gcc.c-torture/execute/pr120630.c
  80c02c70a0b6b91b06942e395c34960f  gcc/testsuite/gcc.c-torture/execute/pr15262-1.c
  987c511633ad57d9f08d352eb9512819  gcc/testsuite/gcc.c-torture/execute/pr15262-2.c
  f7f514cfbd791b0c828e0710493b0910  gcc/testsuite/gcc.c-torture/execute/pr15262.c
*************** d0cadc3c4a24250334c4419a1d8bb229  gcc/te
*** 52251,52257 ****
  6af7fd86fadcfa6889af48973673b3e8  gcc/testsuite/gcc.dg/format/dfp-scanf-1.c
  597c2cef1b33bb71739d311ee56278e3  gcc/testsuite/gcc.dg/format/diag-1.c
  76b3d68f4d248a85562e894eb00f75c7  gcc/testsuite/gcc.dg/format/diag-2.c
! 05d13d6010a50527d41c5437992de40c  gcc/testsuite/gcc.dg/format/diagnostic-ranges-html.py
  014b97f7e69a48e2a765439bbd73799a  gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
  859d88caa1eeeb23ca9b76526b3a4f3e  gcc/testsuite/gcc.dg/format/errmk-1.c
  07bb1882393eddf8452ebd19e6a983d2  gcc/testsuite/gcc.dg/format/ext-1.c
--- 52261,52267 ----
  6af7fd86fadcfa6889af48973673b3e8  gcc/testsuite/gcc.dg/format/dfp-scanf-1.c
  597c2cef1b33bb71739d311ee56278e3  gcc/testsuite/gcc.dg/format/diag-1.c
  76b3d68f4d248a85562e894eb00f75c7  gcc/testsuite/gcc.dg/format/diag-2.c
! 5964767ea0368f36b723f8f22b2dc9ad  gcc/testsuite/gcc.dg/format/diagnostic-ranges-html.py
  014b97f7e69a48e2a765439bbd73799a  gcc/testsuite/gcc.dg/format/diagnostic-ranges.c
  859d88caa1eeeb23ca9b76526b3a4f3e  gcc/testsuite/gcc.dg/format/errmk-1.c
  07bb1882393eddf8452ebd19e6a983d2  gcc/testsuite/gcc.dg/format/ext-1.c
*************** dc12526b2575b25bbb0263164484aeb3  gcc/te
*** 53399,53405 ****
  dd0c3d86be7753351dad89d50055a01e  gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
  1010470d2b35619d2f4a98c1e6fa225e  gcc/testsuite/gcc.dg/html-output/html-output.exp
  a018345881bf4270a8876a6eeba3dbd1  gcc/testsuite/gcc.dg/html-output/missing-semicolon.c
! e6ff5beefb29ac113aac5326a601cafb  gcc/testsuite/gcc.dg/html-output/missing-semicolon.py
  87ba2fabf5289d6525439ba48a5c27f8  gcc/testsuite/gcc.dg/hwasan/hwasan.exp
  f20946bfbddc67e74cf619bd02e31549  gcc/testsuite/gcc.dg/hwasan/nested-functions-0.c
  36c11146134a4d86c84c359d41e52a7c  gcc/testsuite/gcc.dg/hwasan/nested-functions-1.c
--- 53409,53415 ----
  dd0c3d86be7753351dad89d50055a01e  gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
  1010470d2b35619d2f4a98c1e6fa225e  gcc/testsuite/gcc.dg/html-output/html-output.exp
  a018345881bf4270a8876a6eeba3dbd1  gcc/testsuite/gcc.dg/html-output/missing-semicolon.c
! 1738400167da7a01fff515e4fb1fc285  gcc/testsuite/gcc.dg/html-output/missing-semicolon.py
  87ba2fabf5289d6525439ba48a5c27f8  gcc/testsuite/gcc.dg/hwasan/hwasan.exp
  f20946bfbddc67e74cf619bd02e31549  gcc/testsuite/gcc.dg/hwasan/nested-functions-0.c
  36c11146134a4d86c84c359d41e52a7c  gcc/testsuite/gcc.dg/hwasan/nested-functions-1.c
*************** f5b4a2950b6c77e79b23979cb814ea61  gcc/te
*** 54513,54518 ****
--- 54523,54529 ----
  ef1884748c78b6ae1f9bd8ce831596f1  gcc/testsuite/gcc.dg/old-style-prom-1.c
  7883616b28c2d74f5e5ac36cdd4f98e0  gcc/testsuite/gcc.dg/old-style-prom-2.c
  00edc35547fc7664b26692b0a14c60d0  gcc/testsuite/gcc.dg/old-style-prom-3.c
+ 4473ef7aeb6975e7bb56d4d12858b0f6  gcc/testsuite/gcc.dg/old-style-prom-4.c
  8bda326f57b0d3f0efcade5058571a05  gcc/testsuite/gcc.dg/old-style-then-proto-1.c
  2249b753e9f5a2dced715e451b859f86  gcc/testsuite/gcc.dg/opt-ordered-and-nonequal-1.c
  1dadc95df2cfcfe39615669d181980e7  gcc/testsuite/gcc.dg/optimize-bswapdi-1.c
*************** ab9b438d79da41ae2faa25073b1f68ff  gcc/te
*** 54748,54754 ****
  48a41768247d6b150673cba3b15e815e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
  c5d2a11e1172f48545387ed92bd56a11  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-4.c
  2c9483e9d5c0705e4216466c0d4cb610  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.c
! 9916139bbb2f3261a2a96711a6570353  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py
  6efed2ab62fc17f3db08dc04e528fe7a  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-sarif.c
  ee3ed621610bc5bdf108f395f4789d4e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-sarif.py
  ce81f72fcd363c22f9fce9cd0b0c76b1  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata.c
--- 54759,54765 ----
  48a41768247d6b150673cba3b15e815e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
  c5d2a11e1172f48545387ed92bd56a11  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-4.c
  2c9483e9d5c0705e4216466c0d4cb610  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.c
! c206914683a80689e3bf23af3c671f70  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py
  6efed2ab62fc17f3db08dc04e528fe7a  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-sarif.c
  ee3ed621610bc5bdf108f395f4789d4e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-sarif.py
  ce81f72fcd363c22f9fce9cd0b0c76b1  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata.c
*************** df5927e5a5b0b123f415b49583084acd  gcc/te
*** 54760,54769 ****
  a7db561cc35fce636b1dca4e7394ba77  gcc/testsuite/gcc.dg/plugin/diagnostic-test-nesting-text-plain.c
  a6a63e4d673f32d534d3afc18a7f8218  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-1.c
  aa01caff792d42166912b838479f96af  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
! 722d8a07900a13a760a0fde5657152cd  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py
  5f17663596e733b7a39a6b737dc9ea56  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
  9c0af25560d6f1bb77ab2c9926f2b350  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.c
! 57c053ce857b30e57cbffe40b5afcb7a  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.py
  d69b80e0a539be7739a33736ee0e8aaf  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-5.c
  a58becab25d695c02613dbc4348f124b  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-multithreaded-inline-events.c
  3c5192534d44afd6ef8195407225eeb4  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-multithreaded-sarif.c
--- 54771,54780 ----
  a7db561cc35fce636b1dca4e7394ba77  gcc/testsuite/gcc.dg/plugin/diagnostic-test-nesting-text-plain.c
  a6a63e4d673f32d534d3afc18a7f8218  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-1.c
  aa01caff792d42166912b838479f96af  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
! bc17d4fe49a94a5706f9bcef474031c2  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py
  5f17663596e733b7a39a6b737dc9ea56  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
  9c0af25560d6f1bb77ab2c9926f2b350  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.c
! 4e32b40390f2106a445623caa3a97dac  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.py
  d69b80e0a539be7739a33736ee0e8aaf  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-5.c
  a58becab25d695c02613dbc4348f124b  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-multithreaded-inline-events.c
  3c5192534d44afd6ef8195407225eeb4  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-multithreaded-sarif.c
*************** a59c3c55e77b2ab336a32f5ffc9ed6ba  gcc/te
*** 54779,54785 ****
  7288fef9790277fe3bb349e82cef1875  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-generate-patch.c
  c1874b847baa5d41d58aa2db643143da  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-no-labels.c
  2c7e32cd8f076c6b6406aef7209045e7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c
! 6be5a14816d5901eb94ffd36d9e7e096  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus.py
  39f1ab78432ac25892fad284e179d8ac  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-trees-1.c
  bb20191ab0ad6e0d6ba368003d857339  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-1.c
  1a45355cf06403e775b5d7ab5b2a59f7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-2.c
--- 54790,54796 ----
  7288fef9790277fe3bb349e82cef1875  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-generate-patch.c
  c1874b847baa5d41d58aa2db643143da  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-no-labels.c
  2c7e32cd8f076c6b6406aef7209045e7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c
! 2ce8701c16038d138e802d62e66c4cba  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus.py
  39f1ab78432ac25892fad284e179d8ac  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-trees-1.c
  bb20191ab0ad6e0d6ba368003d857339  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-1.c
  1a45355cf06403e775b5d7ab5b2a59f7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-2.c
*************** cccc06652033bffb0ed73a8f12d234c2  gcc/te
*** 55468,55474 ****
  c7a64c754e3bec3fcb350f02eeca455c  gcc/testsuite/gcc.dg/pr119001-2.c
  33c13391b7d0c5d156ce1488a8cece3f  gcc/testsuite/gcc.dg/pr119071.c
  a3d075dd1b96232581aa40c9e02294e1  gcc/testsuite/gcc.dg/pr119151.c
! c13ce026e69ffee8d255e1d9e1c0e024  gcc/testsuite/gcc.dg/pr119160.c
  23b8c99f9e2dfda91a95f1195ab38bfd  gcc/testsuite/gcc.dg/pr119183.c
  5b4015cb994569a43c505c35b96cda44  gcc/testsuite/gcc.dg/pr119204.c
  749c769f6f099fb46192e06fcacafc89  gcc/testsuite/gcc.dg/pr119287.c
--- 55479,55485 ----
  c7a64c754e3bec3fcb350f02eeca455c  gcc/testsuite/gcc.dg/pr119001-2.c
  33c13391b7d0c5d156ce1488a8cece3f  gcc/testsuite/gcc.dg/pr119071.c
  a3d075dd1b96232581aa40c9e02294e1  gcc/testsuite/gcc.dg/pr119151.c
! 6b5bb26672e398cc957c3f920dbb6d50  gcc/testsuite/gcc.dg/pr119160.c
  23b8c99f9e2dfda91a95f1195ab38bfd  gcc/testsuite/gcc.dg/pr119183.c
  5b4015cb994569a43c505c35b96cda44  gcc/testsuite/gcc.dg/pr119204.c
  749c769f6f099fb46192e06fcacafc89  gcc/testsuite/gcc.dg/pr119287.c
*************** e33af444b933ae4b76c6fd6ea535e112  gcc/te
*** 55488,55500 ****
--- 55499,55515 ----
  cb7b5505103ef079e746dd619a21ee86  gcc/testsuite/gcc.dg/pr120057-2.c
  5db833c38de3e5ade44290c729fb748c  gcc/testsuite/gcc.dg/pr120074.c
  c1520f6dceb2ad219f9c1f006e65ea92  gcc/testsuite/gcc.dg/pr120277.c
+ d1fb0fcf1b0cfd267a038359c1a6435b  gcc/testsuite/gcc.dg/pr120303.c
  5bcef1d2686ff4144a4a4fcce9aad3ec  gcc/testsuite/gcc.dg/pr120353.c
  419de75d508972d0daecf2c3b360b2c8  gcc/testsuite/gcc.dg/pr120354.c
  689934c8e3065936b13e4d29e7945bf3  gcc/testsuite/gcc.dg/pr120380.c
  fa5bb8fde0acecb33a479faffc86bd94  gcc/testsuite/gcc.dg/pr120381.c
  00ae80f6bc28b04e42c74bc9c2084c39  gcc/testsuite/gcc.dg/pr120447.c
  9444444b4f048eadd4b6a2d7592f5fca  gcc/testsuite/gcc.dg/pr120480.c
+ 17a1e237b6ae68e2d4122d0a05fef1df  gcc/testsuite/gcc.dg/pr120510.c
  7e5ecdaab28f17bb60a37435dfa95af7  gcc/testsuite/gcc.dg/pr120525.c
+ 529713b98b912597ae0fe979488eb31a  gcc/testsuite/gcc.dg/pr120630.c
+ 4a9d9632d82cf6c4f4f4acbad8ab018d  gcc/testsuite/gcc.dg/pr120638.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** a8c77450164d982f6f0dcc79256dc3b3  gcc/te
*** 59193,59199 ****
  eddfc0d7cd1c070bdf2c737c7d6c0fd6  gcc/testsuite/gcc.dg/torture/pr117546.c
  318fa402aa23281002f7acad59c9cdf6  gcc/testsuite/gcc.dg/torture/pr117567.c
  211f874eb690213e110852d5efe7da32  gcc/testsuite/gcc.dg/torture/pr117574-1.c
! 76bbfa7fe02fbfd78a081d253fceb5e9  gcc/testsuite/gcc.dg/torture/pr117811.c
  a54993330e7b027c17c4eb45e9a8e2fc  gcc/testsuite/gcc.dg/torture/pr117859-1.c
  6ca4b56072ad00e7b9bb3f7ceae18e75  gcc/testsuite/gcc.dg/torture/pr117859-2.c
  6b9aaa702f18d21348344dba6b6aa8ae  gcc/testsuite/gcc.dg/torture/pr117938.c
--- 59208,59214 ----
  eddfc0d7cd1c070bdf2c737c7d6c0fd6  gcc/testsuite/gcc.dg/torture/pr117546.c
  318fa402aa23281002f7acad59c9cdf6  gcc/testsuite/gcc.dg/torture/pr117567.c
  211f874eb690213e110852d5efe7da32  gcc/testsuite/gcc.dg/torture/pr117574-1.c
! fbc66d37323062d4dfeea9f5f179a29e  gcc/testsuite/gcc.dg/torture/pr117811.c
  a54993330e7b027c17c4eb45e9a8e2fc  gcc/testsuite/gcc.dg/torture/pr117859-1.c
  6ca4b56072ad00e7b9bb3f7ceae18e75  gcc/testsuite/gcc.dg/torture/pr117859-2.c
  6b9aaa702f18d21348344dba6b6aa8ae  gcc/testsuite/gcc.dg/torture/pr117938.c
*************** e9fd20c6a5ee817fc329cc085c9032eb  gcc/te
*** 60384,60390 ****
  8d1595003065ecd1d4556067ec7e25cc  gcc/testsuite/gcc.dg/tree-prof/20041218-1.c
  3efe9018c42617fad26ca176fc3306fd  gcc/testsuite/gcc.dg/tree-prof/20050826-2.c
  7fea89044d1cae3c25a1775dd049cbe7  gcc/testsuite/gcc.dg/tree-prof/bb-reorg.c
! 9bc7df6cd831bae143cb16ce6ee5c741  gcc/testsuite/gcc.dg/tree-prof/clone-merge-1.c
  fea6679f47a5ff36663a877937522419  gcc/testsuite/gcc.dg/tree-prof/cmpsf-1.c
  124079e3848ee10f2ebc98be4d07e9f5  gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
  e9f1e3170e9c1bd390f79587f24c6349  gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
--- 60399,60405 ----
  8d1595003065ecd1d4556067ec7e25cc  gcc/testsuite/gcc.dg/tree-prof/20041218-1.c
  3efe9018c42617fad26ca176fc3306fd  gcc/testsuite/gcc.dg/tree-prof/20050826-2.c
  7fea89044d1cae3c25a1775dd049cbe7  gcc/testsuite/gcc.dg/tree-prof/bb-reorg.c
! b6efe4d551132d9a7c42ff097c91297d  gcc/testsuite/gcc.dg/tree-prof/clone-merge-1.c
  fea6679f47a5ff36663a877937522419  gcc/testsuite/gcc.dg/tree-prof/cmpsf-1.c
  124079e3848ee10f2ebc98be4d07e9f5  gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
  e9f1e3170e9c1bd390f79587f24c6349  gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
*************** fcf99b5d14963d6dc0b0c9a728fc8ac4  gcc/te
*** 68455,68460 ****
--- 68470,68476 ----
  ff37df956d90b080a15eee27baf83cf8  gcc/testsuite/gcc.target/aarch64/sme/za_state_5.c
  a9421cc74fddeb0b2e03c60e20410ede  gcc/testsuite/gcc.target/aarch64/sme/za_state_5_scp.c
  031a04851bc92dab81da666022b43d00  gcc/testsuite/gcc.target/aarch64/sme/za_state_6.c
+ d002a1f4df9b5c96addef824d09dfbd1  gcc/testsuite/gcc.target/aarch64/sme/za_state_7.c
  bc8fa843cae0050c83a00ac2cd807a98  gcc/testsuite/gcc.target/aarch64/sme/zt0_state_1.c
  f5392df0161b11a2eb084fecc3cb5f73  gcc/testsuite/gcc.target/aarch64/sme/zt0_state_2.c
  3ff747add1e9dfb996292dd5bf39ad0e  gcc/testsuite/gcc.target/aarch64/sme/zt0_state_3.c
*************** b36b54bea7bee04bed45d73a87ac0322  gcc/te
*** 71426,71431 ****
--- 71442,71448 ----
  ae44d68f203e7d5a17d19738cfbc53a0  gcc/testsuite/gcc.target/aarch64/sve/acle/general/nosve_4.c
  8034766df46983adb7740540ad8ef5f1  gcc/testsuite/gcc.target/aarch64/sve/acle/general/nosve_5.c
  78ad5fddb404ddbcdc5f197b1740e50a  gcc/testsuite/gcc.target/aarch64/sve/acle/general/nosve_6.c
+ 00194d868204fecd55737027de6b4001  gcc/testsuite/gcc.target/aarch64/sve/acle/general/not_1.c
  23037c19fa0b1b3f5bcac32c8d73393c  gcc/testsuite/gcc.target/aarch64/sve/acle/general/nrv_1.c
  618eed08c799209fcc7e876e7bc1f5a9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/orn_1.c
  c43619dc0345cb75df63193d4ecf32a5  gcc/testsuite/gcc.target/aarch64/sve/acle/general/orr_1.c
*************** a04b176d1f4debec96b6eb4ccec14017  gcc/te
*** 71754,71759 ****
--- 71771,71777 ----
  f5f51f0ce22434617d58b4330621ef23  gcc/testsuite/gcc.target/aarch64/sve/cost_model_13.c
  ff2b9241bd177f9b139fbf6fbf043cb3  gcc/testsuite/gcc.target/aarch64/sve/cost_model_14.c
  d5b139bd861ddd97284d5f818eb70a78  gcc/testsuite/gcc.target/aarch64/sve/cost_model_15.c
+ 92599cd7aea93c6796fffa0a479dd58c  gcc/testsuite/gcc.target/aarch64/sve/cost_model_16.c
  e918451f74d084e54a9a7ceb98f0bf8e  gcc/testsuite/gcc.target/aarch64/sve/cost_model_2.c
  8814c7380f5de0a24225ed6e4ac88c89  gcc/testsuite/gcc.target/aarch64/sve/cost_model_3.c
  a8a25f8db5e9498491012098a710bc72  gcc/testsuite/gcc.target/aarch64/sve/cost_model_4.c
*************** e5d8d3639b555ba70830b25736ebf22e  gcc/te
*** 78777,78782 ****
--- 78795,78803 ----
  cb28795666ca7509ec1f022d3bd3f094  gcc/testsuite/gcc.target/avr/torture/pr119989-memx-3.c
  f0df0c8f4daf66789854622391d700cf  gcc/testsuite/gcc.target/avr/torture/pr119989-memx-4.c
  74ee04691fd8567973b8145f4a03df26  gcc/testsuite/gcc.target/avr/torture/pr119989.h
+ 59f291298a5520267ffaa080ff9af660  gcc/testsuite/gcc.target/avr/torture/pr120423-1.c
+ 335e928612eeba541ace98419cfa1588  gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c
+ 63785ceba6e301ca68abd46c75c8f6a8  gcc/testsuite/gcc.target/avr/torture/pr120423-2.c
  42a74f28c740c9bd42dab79171f49a39  gcc/testsuite/gcc.target/avr/torture/pr39633.c
  8fb17af722ee890b7fa08b5610cdb80e  gcc/testsuite/gcc.target/avr/torture/pr41885.c
  70b849f57ecf42299230b99b7734dd2d  gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
*************** dc7877a60c094039a172aa23afb1e37c  gcc/te
*** 81854,81859 ****
--- 81875,81881 ----
  45a98ac2d84ae154c61e3e1ce84c17eb  gcc/testsuite/gcc.target/i386/avx512f-pr101896.c
  c59cb0f6296cca13977d48b062bd3b3e  gcc/testsuite/gcc.target/i386/avx512f-pr103750-1.c
  ed16a7946b57b110b46a4f5d0d286aa0  gcc/testsuite/gcc.target/i386/avx512f-pr103750-2.c
+ 87bd629f02bb8cddd2ca32e53635ac2b  gcc/testsuite/gcc.target/i386/avx512f-pr103750-3.c
  fa2c17673f6ee0e3a3910298a93d723d  gcc/testsuite/gcc.target/i386/avx512f-pr114157.c
  9a6936f1815277f15801196159007f44  gcc/testsuite/gcc.target/i386/avx512f-pr114566.c
  9d6b0fb1e1a52903717dc76f97738172  gcc/testsuite/gcc.target/i386/avx512f-pr116738-1.c
*************** bb420ee68e25b3f2c223a9b99a8e7c79  gcc/te
*** 85781,85786 ****
--- 85803,85810 ----
  8b7deb747f63c3654334325f025937b4  gcc/testsuite/gcc.target/i386/pr120032-2.c
  20bea83e4863880948ed90566766c909  gcc/testsuite/gcc.target/i386/pr120032-3.c
  dd47421a141f36dc244e35b0237335f0  gcc/testsuite/gcc.target/i386/pr120360.c
+ ba011de94e8c76e7b3328d4e8e3327b8  gcc/testsuite/gcc.target/i386/pr120434-1.c
+ 3cfa365a3c52dad131baec47ad46e76d  gcc/testsuite/gcc.target/i386/pr120434-2.c
  252fe8c2e6c536aceb69a6f43a4279b3  gcc/testsuite/gcc.target/i386/pr120553.c
  b03b1d817538a863277c823b5e4cdf75  gcc/testsuite/gcc.target/i386/pr12092-1.c
  f99f88a6e994ad6e55e065e41bc58f8f  gcc/testsuite/gcc.target/i386/pr12329.c
*************** e848ec23a6a21441ce72a346a0736a69  gcc/te
*** 87292,87297 ****
--- 87316,87325 ----
  cd32b51927f32216f74b09c3940931d8  gcc/testsuite/gcc.target/i386/pr90552.c
  131fcfea3c839d23cb34af1cb8402815  gcc/testsuite/gcc.target/i386/pr90579.c
  3333c9fab61d2b0a85919c2f2bcabcf7  gcc/testsuite/gcc.target/i386/pr90693-2.c
+ abe8a59c26b149ad14f8d4056fbcad42  gcc/testsuite/gcc.target/i386/pr90693-3.c
+ 922e080c15dbf15c45236be5280d0b63  gcc/testsuite/gcc.target/i386/pr90693-4.c
+ 530f6f5aecf81bc578c20d2758728457  gcc/testsuite/gcc.target/i386/pr90693-5.c
+ 6bd029c23103dff0d237303b8cef906b  gcc/testsuite/gcc.target/i386/pr90693-6.c
  ab0b47df71ffc980ef55fd8e562bb640  gcc/testsuite/gcc.target/i386/pr90693.c
  bedac99974c4a13a1a78b62b24233122  gcc/testsuite/gcc.target/i386/pr90765-1.c
  78277186e5e9fff510631438a31733a5  gcc/testsuite/gcc.target/i386/pr90765-2.c
*************** b24ba66b3104508ec7610b49a0fdd32f  gcc/te
*** 88678,88683 ****
--- 88706,88713 ----
  515f451843087285cae4273f2866f93b  gcc/testsuite/gcc.target/i386/vect-pr67800.c
  3c9e12b95afbbd42b2d335da98dfca9b  gcc/testsuite/gcc.target/i386/vect-pr82426.c
  c94d34a8add7450a1085d0dbbfca7403  gcc/testsuite/gcc.target/i386/vect-pr97352.c
+ d9f045b5fbe212b9521b7587a8323146  gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c
+ e28ced0a0e02af5ead87e8e207052bbd  gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c
  721bbf9cfd81a48f5915680f4a425bad  gcc/testsuite/gcc.target/i386/vect-rebuild.c
  75207fad1f58c73a9ea0045ffa247e39  gcc/testsuite/gcc.target/i386/vect-reduc-1.c
  0f9fc194c0bd731306645fe06259feae  gcc/testsuite/gcc.target/i386/vect-reduc-2.c
*************** b2d1c897502250789aa80edeceacdda7  gcc/te
*** 94668,94675 ****
  1b5ab23c497ddf3f94eee292a58b1e5f  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vor-rv64gcv.c
  f129e667bedfd57659a8bdd6d0f658d4  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vor-template.h
  2adfa8f1454cb7f892efb4ab6ec0e74b  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-run.c
! 7d1a430230ce1496d9b4e11cecb1df55  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv32gcv.c
! f55b83920a19cbea804b864d229ba89e  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv64gcv.c
  4e67662be6c87ee016efa0799d727755  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-template.h
  a5498854044a7005fc430d9e85db21b8  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrolr-1.c
  42ab4fa9f452ee9f3684892c200c6f54  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrolr-run.c
--- 94698,94705 ----
  1b5ab23c497ddf3f94eee292a58b1e5f  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vor-rv64gcv.c
  f129e667bedfd57659a8bdd6d0f658d4  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vor-template.h
  2adfa8f1454cb7f892efb4ab6ec0e74b  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-run.c
! 5eca7022cf37a1a7e8da13966d3c9f45  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv32gcv.c
! ebeda02df2858abb6e6ebeec4a2b251c  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv64gcv.c
  4e67662be6c87ee016efa0799d727755  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-template.h
  a5498854044a7005fc430d9e85db21b8  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrolr-1.c
  42ab4fa9f452ee9f3684892c200c6f54  gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrolr-run.c
*************** f95d4e0ecca41e722099be6b52b3efe7  gcc/te
*** 96779,96855 ****
  35044d6a949091b4c23addf451f035ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-rv64.c
  0026b1e2310b7242895d290cff3f1e9e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-template.h
  2d052315288cbb1a315add9fb76abbc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vreinterpet-fixed.c
! af8776830517bb954ac9c459d1e6e4df  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c
! 533425acb2dbaa2ee1585f05490f5252  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c
! d0da42342e145f70ceae46a5f395139a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c
! 284c74b2e8f38b34276014a398088a0a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c
! eda7efd66c9fa52bdb735fb1e517bc58  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c
! eda7efd66c9fa52bdb735fb1e517bc58  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c
! a3f071fb1601a2ef9f0701674b77eef9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c
! 457e2a52524f814e1f6349ee909ff170  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c
! 0fe045472992bc26ef2c863aacc842b3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c
! 79ad5399a00921303ca0d6fc4ba66af0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c
! 5bd48ea837ae4b6d73e1ea5fb3dd1aed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c
! ad4aa170c353380285118d3b5bdf1249  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c
! 239946fdec5e251b3392f324c905aa7a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop.h
! 79c32f2566be6d0eaf683a9534627f6b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h
! 2cd372fdc4763cb63b73b83b70d38f39  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h
! df6f3d2360496d0671c8f5854c185132  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f16.c
! 8a033d0af090fdff3cc9c59a4065b8fb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f32.c
! 0eb1337c135eaf2daab194fea24b2d1a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f64.c
! fa45f7628fd0cf461614b227e67533f9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f16.c
! d3936994aed8527428b052823a62ceb7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f32.c
! 3fdb8e8594229f6ef254e55881825865  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f64.c
! 7854a30c6170eb3b2f1b9cf3604e7d67  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
! 278fd0f1ef0150d3ec3ba9fa54e8fde7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
! f6f16db59e04f17bc0cf83938f246616  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
! 5d7155c76432faf00aac83af892c48cf  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! 49847df423c4dfc49a1f94f02ff50ce8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 631c28d8d7b2de42d52abb79cb3bf462  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! 8a197a97959e0d6b7a2a1013fe238b2a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! c1fa812da345140625f1d9a39a1822a3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
! cd02fac54917f069a61105a3d1bd8b87  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
! f833d075aef941e4759c6687003220d9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
! 02f9a30a96af7c9f39c055aa8b5578d2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
! 2ad682ed7c54e2d23632e45bf43a76f2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! 1c7520b0cace94f6cc8e732dbebf87b9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! 49adaea32eff8616c0f2f8b7ead23ccc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! 61276feaa997ddf0d4e314d13afb3f5e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! a4e9cc56b4a0fa80cd1027a5b47ede83  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
! cec9fb0c60ae8bcead7ac9b35c94ad0a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
! 155251ad7b63f75fbf4086a6dfca9843  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
! d9e385f58f2e83322291af1e2cb834e1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
! 2824fd0a5febf3aba00926432f110dd8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! 5aaa0db836ce556909e5280d0e7bd899  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! 82d219886047ee4c73db45b054730362  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! 17ab2cd62359991ba05b2235802acc8e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! 8382a56574ce1eeeb818901e0f6668bf  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
! 60f3b98b4a1594f3deacc3912af1b9e9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
! 8a0bd00b1302cb44eb20ba50466fb29e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
! 843608a75dfce38bdd00292804f0ba02  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
! 66d29685f2550255ccd704ffc7e1f40b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c
! 8e6ab2d987e11229936404a10870ed8f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c
! 74ef85269cb11f538e93c541667de1d3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c
! 67fcd70c96a12c2696cceb032a9f998b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c
! a1253d36bfbb7241bab31225feccf2fd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c
! 2ea7c2800dd0a549f95fc9300fe3ac1b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c
! 85706798ee6e05caa420a21a658ee669  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c
! c7b2660d4719458cbdaf163b02b2ad48  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c
! c286b6b08ca4f8e18cedab58d5abfbe1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c
! 1bca1db6d918e3c8f0b64f2878069a05  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c
! 78af4ce5fd9bb1eb1227ef7ab98bc5a1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c
! 722c76c75a3f5d3b27c0522bd22656d3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c
! 14bd5344e75779e36280c1f34aec5fb5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c
! 4ac211dc9d9d44d5c78e61718ac4e019  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c
! 629565d7f1286b69543727f26dc48a57  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c
! 9e683451f3304d077e2b8de907ed0c14  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c
! 2256731fcda00147802b2fa6de65c11d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c
! 3e6b1f1fd776ee96144b753f057fcf82  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c
! 541fe8aa98dbb20cc301f20fd689ee2e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c
! af5d030fe13babc88754f645efa12137  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c
! 4da3ebaa47949a9124ce4400b6e1f56a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c
! f6a301d0db99423158844de969165511  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! f0796a18ae6da9024dd32cbd64d8b064  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
  f82d1e3332267f884d6990983f9a5c50  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c
  9f3b8184fd845e5425e43d0e12950ff1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c
--- 96809,96891 ----
  35044d6a949091b4c23addf451f035ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-rv64.c
  0026b1e2310b7242895d290cff3f1e9e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-template.h
  2d052315288cbb1a315add9fb76abbc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vreinterpet-fixed.c
! 94d24273ec3dfa7d40814b97ca7264bb  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c
! ed91739ea0cbac6f9fabcf7e9ee0a73d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c
! 3d9ee26c3bc80d60d4fcee11fb8f5aff  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c
! 34169206871806962394e6758c4a8b95  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c
! 4ad969a8707d4511adfcd692f8c85e80  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c
! 4ad969a8707d4511adfcd692f8c85e80  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c
! 2c81e4c029eb17a42f46e29002f74804  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c
! f9407db9d5c731e94f73e452b86cd31b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c
! b2e154758dd4609c0258083f7398b0de  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c
! 76d39ca8673e91883adeedec15d8dfc7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c
! 15c336645408feb66efdecbdccd37d0d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c
! 5664c536a81cf4cccfd5de70ea8b0e8a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c
! 4c284f713528b3c79a76c97bcff0862b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop.h
! 1c4119935df2b0a9b4ab87cf47a3cdd7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h
! 652e4256c195098ff004de183e5d87b4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h
! 7d9bacac4cb3075e6e651438b64a1eb0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f16.c
! 2bb271c33a8ba9e528f8b21696fc71aa  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f32.c
! a386d42a89f75878c74496c442f903dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f64.c
! 805f35bd3009aba90d21e35b7df16c7b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f16.c
! 2a80193387fbe3e19d450805a3c08cb4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f32.c
! 0f3867abd68b5b8f31fb5489e8120a41  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f64.c
! 2e001ca81233867a673ec30e3905d647  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f16.c
! 16b72a043857cab068e08e508618d42a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f32.c
! 1c4d67c464978044d1bee527abe15336  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f64.c
! 0b950bd448a42e8497d2523f6f760b73  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f16.c
! 692d1c1c9345ec28dfc20c3b5bf3fd04  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f32.c
! 0edb34b5f84b95688c9fad17bc1647ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f64.c
! 50b050f7261dcaf0c12c93337a81244d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
! 52c5f0398404991821945ddc13243ba0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
! 63a8f53726781ff0c29a4f56e6abf115  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
! 24fb3b93aca4c87feec4c1c2c09a3d86  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
! 4d9f562e5df6e9f94bc2751bba5a5bb4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
! 688a5e8ccd21601e76196fc722a475a6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
! 2d9b1eabad2e428b1dfb4a680b2ff3d8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
! 3afe8066731140457a3fd960b259b50c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
! 2db5274e98793e56720d8cea42131794  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
! 9a18c8f3bcfeb983047afcfacbf4caf3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
! 4aad86b4f5e8fbe640f824a976447f70  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
! 742bfd8c8c976d666959480f876d01d0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
! 09ea1f43ef034dfb961369da0b720e0a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
! 610c95a87c877e75bc5aa882511fa235  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
! 5605d4d7fb970e375ee03a960d5501e8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
! 2a3875006630527257d2a20e97680a9a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
! 1f313ad9247ec030428dc1d3a4ac782d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
! 2df8e0f1d7644b40befe830ea1f00a3f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
! 6adeb1637ac13c77d1eebc6d2762fbb7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
! 0e21ab90384a2756e08fc828743e857f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
! f5508135c951b6601f5e49b20922771d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
! 4f5ca493c00cc41d060d9e0ed162eb13  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
! 36368859d4001b6f73bbe997d24a6143  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
! 318a2535578268b9eb032dc4fc849cef  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
! ce90c043f7e8a5767f4f52623c512f42  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
! 8ca7742968456da1fb04f228848de8fc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
! a36730172826dc2d774bdc3b4dc862f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
! ebea0c316ef0be0c20023c196ff7c94a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c
! 1d6ea96b1d245ebecfab36863e1e9bea  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c
! 649058e701ca8152d7ef6c82a8abb4bd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c
! 840b180f0dcf4460a86922ea079bbc88  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c
! 83728de75f2ba6f4fce5a16bac6344cc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c
! 0b73079dfba8823a21bba6f82233a495  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c
! 9e7d7cbb38c04591510fe8ac6c886cba  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c
! 25df563b66dbbc09857d909168000713  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c
! ccfb221f08f740ae213400b0e4557163  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c
! 94af8a48b27ad77303a9f8ba7b480d3e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c
! 08e2ea354326b2b3dc2393260f629c5c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c
! 4655eedb70dbe62983b3a3dfba3f3bba  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c
! 707758cf1e770f3bae0a4f4da6e87a4a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c
! 1f0aed477916a2a48a477f00022276d9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c
! 4963aca4603f62e7dcd1adf2a43a5a92  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c
! 49a2396648295907e346ad8723cfc6c0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c
! 2040c57e8b059e4aee1b9ef6e0870278  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c
! d719dc2b35e639538b6ad199f5b03590  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c
! 0ee531acfe70e06c78cfb0ca63ac61f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c
! 031179501228562edd7105e634e75ea1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c
! d77ee266427bd2501aede4e0ebb036d5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c
! 8a6007454ef2951151a09a59b6c6ba1d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
! 8458b2ec3bb75af5342ed80abb1fb70b  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
  f82d1e3332267f884d6990983f9a5c50  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i16.c
  9f3b8184fd845e5425e43d0e12950ff1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vadd-run-1-i32.c
*************** dc2b6bed194fc74b370b25a3dc744b75  gcc/te
*** 96875,96880 ****
--- 96911,96932 ----
  7ecbf5a0a0464699bf38031217fcf372  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vdiv-run-1-u32.c
  c6540253f4e8566becbeb0ec46e18999  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vdiv-run-1-u64.c
  fae1dd6ff530da227dc062a923a9e722  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vdiv-run-1-u8.c
+ 2b79e264f1dc49a63af57d99ff396f1b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i16.c
+ f30b3319aafd6ecd31ae1419cbf2ddc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i32.c
+ bb761d4e9d5897d36d3c611bd5ec2bef  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i64.c
+ bcf4341174e0dbd7d7d68ef1d9869c41  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i8.c
+ ac08fe7f5b019b7bdc08edd9e115433b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u16.c
+ d0a51834ba94e9d277fdeba7b5aa054d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u32.c
+ e93891976e9d7b283a38355bfc4ec95e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u64.c
+ 642c565bddef8e4666bddbe3043cee67  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u8.c
+ e2158c811baa45676ac11b74fc8c0cc8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i16.c
+ 8c0daaa41d2ca5ca4326b9acf07b7c03  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i32.c
+ 7d55418f453a723400c5b73eeb01c052  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i64.c
+ 9e4018e0b5f9135b4e8a9c8732c1ecc5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i8.c
+ c076a7fbd7f8c0673e5d3a4a627b78a3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u16.c
+ c80030fd3090eea241059b04eac15ce2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u32.c
+ a27a441c7767509bda668e7decb95a38  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u64.c
+ d2885df0e08ae7841dcf17483e5e95de  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-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
*************** f3610778d536959133cfda7115cd7ca8  gcc/te
*** 96887,96892 ****
--- 96939,96952 ----
  7245f5e0966d792119ec51a8ebb291ba  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vor-run-1-u32.c
  4cd87b01be0bac5ab9dec32a29319afd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vor-run-1-u64.c
  1c1b89506ddf16d88d008bd2d69edd40  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vor-run-1-u8.c
+ 04a11915eeea04d07f32ceac004e5c81  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i16.c
+ 637eb769575e9055254c5318bffb1fa4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i32.c
+ 5e1d5d946c58f496e52c83600b4886c6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i64.c
+ 3b3103d073764431091e6475c492d359  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i8.c
+ 28a59c4b3d2169f5971dc4c21c97831c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u16.c
+ a73f2841fb1cfbee8e7a74989aa0b037  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u32.c
+ ad7761f0fe4a6a519e1c227545379c9f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u64.c
+ 27b8b252ce77a531734c2a9d419d8124  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u8.c
  8937d0b839506b10a763ee6df5caa4cd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrsub-run-1-i16.c
  533eedb668b26c7e7bc78800d6f64c07  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrsub-run-1-i32.c
  cc285905b88b66b772a37b10056a36dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrsub-run-1-i64.c
*************** c0713b9aa6ed439fab330ab7223032dc  gcc/te
*** 98077,98082 ****
--- 98137,98143 ----
  14e4ce1dbfe4c1978792e21458b54f60  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c
  231f16f9d08fd8f85a1f7dac951a33d9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113696.c
  7af3daa5fca47d3622e18dcf26901c3a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr115214.c
+ 214ad7d07e6a288b395d3cef7ca24962  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr117974.c
  979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/riscv_vector.h
  e08588cfa23221a10eaf714a16aa7ea1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-1.c
  162e11cf9edc569ca4a0cc195e7265bb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-10.c
*************** b3330bdc7e59d45053b22dc4e53f3689  gcc/te
*** 98321,98327 ****
  6a22e60d3918a423ec81d82018d74f9e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-8.c
  609e1d2aef82a23de55a584b6e847de3  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-9.c
  9c2f522a14fc0f4d937d128fb08e4647  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/wredsum_vlmax.c
! 38f2d2ac7bb0e72885563562d91cb479  gcc/testsuite/gcc.target/riscv/rvv/vtype-call-clobbered.c
  e0318f5cdc094037bd383d17cc611346  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vc_f.c
  a3895b5dae542b6e77191b5fddf4e7f9  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vc_i.c
  401001c7498b3b97f4daf79627fdaef9  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vc_v.c
--- 98382,98388 ----
  6a22e60d3918a423ec81d82018d74f9e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-8.c
  609e1d2aef82a23de55a584b6e847de3  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-9.c
  9c2f522a14fc0f4d937d128fb08e4647  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/wredsum_vlmax.c
! 0fcc9fd70a59d0ab221be846457ab2c8  gcc/testsuite/gcc.target/riscv/rvv/vtype-call-clobbered.c
  e0318f5cdc094037bd383d17cc611346  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vc_f.c
  a3895b5dae542b6e77191b5fddf4e7f9  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vc_i.c
  401001c7498b3b97f4daf79627fdaef9  gcc/testsuite/gcc.target/riscv/rvv/xsfvector/sf_vc_v.c
*************** c0a4bee5eba1cce4e72b7fe92728426b  gcc/te
*** 99041,99046 ****
--- 99102,99108 ----
  41294ddc89d13c43941931c990fd176d  gcc/testsuite/gcc.target/riscv/target-attr-norelax.c
  eba52e984a37427da6fa1233257ff6a9  gcc/testsuite/gcc.target/riscv/tls_1.x
  dbe67905fc0f65b7be7d2f96a6c490e6  gcc/testsuite/gcc.target/riscv/tlsdesc.c
+ 29a602b7f814b2f1c3f0991f0e0525b8  gcc/testsuite/gcc.target/riscv/ventana-16122.c
  76005de0a7c1ca66b1b06de3c53ad1c2  gcc/testsuite/gcc.target/riscv/weak-1.c
  46c65ef5612e82f5d9ee2842af6c427b  gcc/testsuite/gcc.target/riscv/xor-synthesis-1.c
  857d7c1adabe9cb7d94b5f83613082d2  gcc/testsuite/gcc.target/riscv/xor-synthesis-2.c
*************** db8afdf5ed6aa3065c2d97091ed4668d  gcc/te
*** 114297,114302 ****
--- 114359,114366 ----
  3d1a820fbabf2b09a0663d760af54b26  gcc/testsuite/gm2.dg/doc/examples/pass/hellopim.mod
  66c568233a4ecff42698933a265bb3dd  gcc/testsuite/gm2.dg/doc/examples/plugin/fail/assignvalue.mod
  e76f2825196989e398cd2f3a186ca7b2  gcc/testsuite/gm2.dg/doc/examples/plugin/fail/doc-examples-plugin-fail.exp
+ 1e7e9bc1193e0f5adca7da8ec843a29c  gcc/testsuite/gm2.dg/doc/examples/run/pass/doc-examples-run-pass.exp
+ 8f55f7eaf880171edf867055931cc02d  gcc/testsuite/gm2.dg/doc/examples/run/pass/exampleadd2.mod
  8336252a5212ce63a317267e8e2bad76  gcc/testsuite/gm2.dg/pim/fail/badopaque.mod
  e6f3c702e8ca5bfbe627dcb752971fdb  gcc/testsuite/gm2.dg/pim/fail/badopaque2.mod
  ec56bce7bdde9ba4515172d6349ed250  gcc/testsuite/gm2.dg/pim/fail/dg-pim-fail.exp
*************** aabcce2ae6fcf461e4dc47ece6490255  gcc/te
*** 115430,115435 ****
--- 115494,115500 ----
  d1d27d2d63c6c5064aba34a58efe74b3  gcc/testsuite/gm2/pim/pass/foo2.mod
  519ac1b6b2f9994fc011779a417ac94a  gcc/testsuite/gm2/pim/pass/fooasm3.mod
  56286f2c3e92e15a7825618ae140091a  gcc/testsuite/gm2/pim/pass/for1.mod
+ 1bea85b657c87dc2f26e7e4f6f1de34f  gcc/testsuite/gm2/pim/pass/forarray.mod
  c5ba6a075ea2d754fd6c5cf5d0f63063  gcc/testsuite/gm2/pim/pass/forloop2.mod
  10d682bfd9139721b0c4ea187465de5b  gcc/testsuite/gm2/pim/pass/forloopby2.mod
  310d5b0ee05fb7018a2d7e1fac03e86b  gcc/testsuite/gm2/pim/pass/forloopnulchar.mod
*************** cde7364d679bf019115a37fca70a6f52  gcc/te
*** 121201,121207 ****
  628b339f01ad2b5a5afbfe6c0220ad31  gcc/testsuite/lib/go-dg.exp
  a658e6e3511698723b87be3277ba706d  gcc/testsuite/lib/go-torture.exp
  450868d4f15f0faade8c693e132ee071  gcc/testsuite/lib/go.exp
! 02cc772d453bb1a08e1225f882b3d895  gcc/testsuite/lib/htmltest.py
  8699bdd60911dccd7ce56e96f4032646  gcc/testsuite/lib/hwasan-dg.exp
  570d1ec9b7a393a25ac703df89bbc0ee  gcc/testsuite/lib/lto.exp
  645e8af17b334c4e279636a7b47dacbe  gcc/testsuite/lib/mike-g++.exp
--- 121266,121272 ----
  628b339f01ad2b5a5afbfe6c0220ad31  gcc/testsuite/lib/go-dg.exp
  a658e6e3511698723b87be3277ba706d  gcc/testsuite/lib/go-torture.exp
  450868d4f15f0faade8c693e132ee071  gcc/testsuite/lib/go.exp
! 3a7d5399cb16e6328b4fab6dc88546a0  gcc/testsuite/lib/htmltest.py
  8699bdd60911dccd7ce56e96f4032646  gcc/testsuite/lib/hwasan-dg.exp
  570d1ec9b7a393a25ac703df89bbc0ee  gcc/testsuite/lib/lto.exp
  645e8af17b334c4e279636a7b47dacbe  gcc/testsuite/lib/mike-g++.exp
*************** b4a6da1471f279353aaca4956c18cdea  gcc/tr
*** 123701,123707 ****
  bcff760f6710b9047412aba72a381983  gcc/tree-affine.h
  527c9fa3845b2653cafc14c109129179  gcc/tree-assume.cc
  918b3dce8ecc8579127255abad77605e  gcc/tree-call-cdce.cc
! ca42ede542aebd549facd7af1a165d55  gcc/tree-cfg.cc
  591222e5199894b9b5d23b1822f7e309  gcc/tree-cfg.h
  ca2c309862705e4161a11efb32eb1ebf  gcc/tree-cfgcleanup.cc
  b528a0932f50504df146d112f7d01a5c  gcc/tree-cfgcleanup.h
--- 123766,123772 ----
  bcff760f6710b9047412aba72a381983  gcc/tree-affine.h
  527c9fa3845b2653cafc14c109129179  gcc/tree-assume.cc
  918b3dce8ecc8579127255abad77605e  gcc/tree-call-cdce.cc
! 2c87f033308afd4a480f0002b4e08601  gcc/tree-cfg.cc
  591222e5199894b9b5d23b1822f7e309  gcc/tree-cfg.h
  ca2c309862705e4161a11efb32eb1ebf  gcc/tree-cfgcleanup.cc
  b528a0932f50504df146d112f7d01a5c  gcc/tree-cfgcleanup.h
*************** e046a9c4874579f81515c4b3d9106b63  gcc/tr
*** 123731,123737 ****
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
  71aa2d4206ac8bd978b5efd19148dd74  gcc/tree-iterator.cc
  1a3fc26573e4e592efe69f41168a65fa  gcc/tree-iterator.h
! 5d198acea1fa3dd4c92cdfe9fffa065e  gcc/tree-logical-location.cc
  0ffb67ad0ccbbc0705e9a36d7ad48724  gcc/tree-logical-location.h
  809e077fea6aa1e38be693ae0a16dee1  gcc/tree-loop-distribution.cc
  62502d6fd9aa927353d7437dc2a6da17  gcc/tree-nested.cc
--- 123796,123802 ----
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
  71aa2d4206ac8bd978b5efd19148dd74  gcc/tree-iterator.cc
  1a3fc26573e4e592efe69f41168a65fa  gcc/tree-iterator.h
! dffcb3b5c014f0539c1d4ad44d7cfc4f  gcc/tree-logical-location.cc
  0ffb67ad0ccbbc0705e9a36d7ad48724  gcc/tree-logical-location.h
  809e077fea6aa1e38be693ae0a16dee1  gcc/tree-loop-distribution.cc
  62502d6fd9aa927353d7437dc2a6da17  gcc/tree-nested.cc
*************** b9bad013f5186a6cf78fe8adbe457945  gcc/tr
*** 123739,123745 ****
  45fa4d8e792d6ddd01efa95b7e6dd98e  gcc/tree-nrv.cc
  e29c56f554dbdf5acd832105e721212a  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
! 705de1f086aac33c4497bc30aeb31610  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
  9d8acbaaafb1fa52b064abcc90b3b50c  gcc/tree-parloops.cc
  beaa17685ead93eee17f6373d004c4c4  gcc/tree-parloops.h
--- 123804,123810 ----
  45fa4d8e792d6ddd01efa95b7e6dd98e  gcc/tree-nrv.cc
  e29c56f554dbdf5acd832105e721212a  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
! de65dfb7d298f3e879ec71e5e2e95913  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
  9d8acbaaafb1fa52b064abcc90b3b50c  gcc/tree-parloops.cc
  beaa17685ead93eee17f6373d004c4c4  gcc/tree-parloops.h
*************** fbcc93539b376489c1256eb8cf2d4800  gcc/tr
*** 123789,123795 ****
  57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! d380b6f85525112b40e562d94546fe3f  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  0ed882dedcd92c361bc556587aaa4b74  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
--- 123854,123860 ----
  57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! 0c1a679afdd634f7923fdca0e577b268  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  0ed882dedcd92c361bc556587aaa4b74  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
*************** ebb8ac3717c1bf5db4371da2f3cf6af7  gcc/tr
*** 123834,123840 ****
  7a3edc7838f7a32dce3ac210a8b7cc75  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! 74ef1ea5c410a50a0742a2f04c2b11a9  gcc/tree-vect-loop.cc
  da6336ee0c69409d59d2599d74cc5717  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
  c2d8929f6d6edd9804d3f9736a1928ce  gcc/tree-vect-slp.cc
--- 123899,123905 ----
  7a3edc7838f7a32dce3ac210a8b7cc75  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  cc0bdf3f684b251509b8552d2d8549a3  gcc/tree-vect-loop-manip.cc
! 19f5026123eca9156e1123eed49bfabb  gcc/tree-vect-loop.cc
  da6336ee0c69409d59d2599d74cc5717  gcc/tree-vect-patterns.cc
  baa70369c21f662d5e61d1296052d231  gcc/tree-vect-slp-patterns.cc
  c2d8929f6d6edd9804d3f9736a1928ce  gcc/tree-vect-slp.cc
*************** a4620080dfbf6757116ace6cfaae648f  gcc/tr
*** 123845,123853 ****
  1e97b9d695553eed3822a8652957ba57  gcc/tree-vectorizer.h
  1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! bfca89f89db797ca2d3bd8f01de95e48  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
! bbe477ec66fdc58d5448219647183eda  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
  84205f5a5b424f30ce8c527b234e3f94  gcc/tristate.cc
  ea37ace5dddab6f4b2b9608516bebc35  gcc/tristate.h
--- 123910,123918 ----
  1e97b9d695553eed3822a8652957ba57  gcc/tree-vectorizer.h
  1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! 647216b40d8f7602d0c14a3690adaa60  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
! 6421adb3aed44df1b755d47237c685e4  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
  84205f5a5b424f30ce8c527b234e3f94  gcc/tristate.cc
  ea37ace5dddab6f4b2b9608516bebc35  gcc/tristate.h
*************** df85736a75a28f2d961a417c6edbbeeb  gcc/va
*** 123872,123878 ****
  5ee1b56a5e76c505c40cf28eb30f62e6  gcc/value-range-pretty-print.h
  6b536deb5ade6571e0988bf82fede1e2  gcc/value-range-storage.cc
  0b17e8456f7912204776ffd65ac2da59  gcc/value-range-storage.h
! 1fc7e153542568f793a4ffa7f020776d  gcc/value-range.cc
  3d0525509765bf6d8ff7d4a7490bcc69  gcc/value-range.h
  deaa5727e1ea5e4802dc5240239a6a3a  gcc/value-relation.cc
  e10bc25b7d5b26ec39898cb88adde4dd  gcc/value-relation.h
--- 123937,123943 ----
  5ee1b56a5e76c505c40cf28eb30f62e6  gcc/value-range-pretty-print.h
  6b536deb5ade6571e0988bf82fede1e2  gcc/value-range-storage.cc
  0b17e8456f7912204776ffd65ac2da59  gcc/value-range-storage.h
! 0298bac7b6e60a6f547611a2ec75c8cf  gcc/value-range.cc
  3d0525509765bf6d8ff7d4a7490bcc69  gcc/value-range.h
  deaa5727e1ea5e4802dc5240239a6a3a  gcc/value-relation.cc
  e10bc25b7d5b26ec39898cb88adde4dd  gcc/value-relation.h
*************** e3fa3f45e512510e34655f420629cbd8  gcc/wa
*** 123899,123907 ****
  88adca0d34004d3f3c8775540086085e  gcc/wide-int.cc
  4fc8c5d5a4dbeb10715da964977f1c81  gcc/wide-int.h
  818a3384157138e5a3f6fbc6368d2b11  gcc/xcoff.h
! 3ed8fd509bbf160b502fe7e9e2e4c2c5  gcc/xml-printer.h
! a589c23ea777df06f4544437b41f49bb  gcc/xml.cc
! 435fa17d97ed8bf09617897d62a447e4  gcc/xml.h
  172b2c568a40257f5c2537762154fa0b  gnattools/ChangeLog
  d8c97efb6bf9731cb774fb1b1b60a266  gnattools/Makefile.in
  813c7b1a065693bfcbc0b340b658fa5a  gnattools/configure
--- 123964,123972 ----
  88adca0d34004d3f3c8775540086085e  gcc/wide-int.cc
  4fc8c5d5a4dbeb10715da964977f1c81  gcc/wide-int.h
  818a3384157138e5a3f6fbc6368d2b11  gcc/xcoff.h
! d4ca2eb60a15b0128ddab26e5f20b5f2  gcc/xml-printer.h
! ecd3b602aff147f9c34c7b6daa548909  gcc/xml.cc
! 1c8711e8fe0fceb295ee0f98117744e6  gcc/xml.h
  172b2c568a40257f5c2537762154fa0b  gnattools/ChangeLog
  d8c97efb6bf9731cb774fb1b1b60a266  gnattools/Makefile.in
  813c7b1a065693bfcbc0b340b658fa5a  gnattools/configure
*************** cffdeae41b78da05839b193e90188f55  libcod
*** 124178,124184 ****
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! cacc3c7a814cdb6526feba0055fccfb5  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
--- 124243,124249 ----
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! 50f05ce049316ab492baf62329b4e80b  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
*************** ce74c78c2cb27bcdeac8a9b0400712cd  libcpp
*** 124195,124208 ****
  c496c50691c37464e0aacc985cc3ab1e  libcpp/identifiers.cc
  625e2785c1c28cbca2c662f92d67cf2b  libcpp/include/cpplib.h
  ac88522f7fec46badcd2623d11a4b61e  libcpp/include/label-text.h
! 1eb2202990c99ae53b4161878cf0a268  libcpp/include/line-map.h
  4779aaa10e24fd2398a105e78bdd88a5  libcpp/include/mkdeps.h
  8dc5525eef86dcf1b1ee26cd243ab3a6  libcpp/include/rich-location.h
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  3f05e522dd9325c9807fc4f662533f7b  libcpp/init.cc
  a0d37c297f3d462529b502a4e1bd2378  libcpp/internal.h
  4e6255f45482c932e22abfa044142804  libcpp/lex.cc
! afb53d91467e0952508a757742351dd6  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
  9ca45c4c9e1829d625f4cc03b82debd1  libcpp/macro.cc
  b4c085899eca6fc0e5ddc81d15fc2e67  libcpp/makeucnid.cc
--- 124260,124273 ----
  c496c50691c37464e0aacc985cc3ab1e  libcpp/identifiers.cc
  625e2785c1c28cbca2c662f92d67cf2b  libcpp/include/cpplib.h
  ac88522f7fec46badcd2623d11a4b61e  libcpp/include/label-text.h
! 3e6896aab65e6ef45626f6853773571b  libcpp/include/line-map.h
  4779aaa10e24fd2398a105e78bdd88a5  libcpp/include/mkdeps.h
  8dc5525eef86dcf1b1ee26cd243ab3a6  libcpp/include/rich-location.h
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  3f05e522dd9325c9807fc4f662533f7b  libcpp/init.cc
  a0d37c297f3d462529b502a4e1bd2378  libcpp/internal.h
  4e6255f45482c932e22abfa044142804  libcpp/lex.cc
! a8d3c292c5b6af1501cb5bbaeb0a86c0  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
  9ca45c4c9e1829d625f4cc03b82debd1  libcpp/macro.cc
  b4c085899eca6fc0e5ddc81d15fc2e67  libcpp/makeucnid.cc
*************** f017ba40c4699f1549cd341ad688007f  libgcc
*** 126260,126266 ****
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! c46ca5257b221a9a32b62ef2ddf0cf60  libgcobol/ChangeLog
  573e7a1dee0641f56d9b797b23dff44b  libgcobol/Makefile.am
  23cf4646d213d05645a0bf48209b374d  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
--- 126325,126331 ----
  804399bda5c6c23cd3e0cd78c21bc2fd  libgcc/vtv_end_preinit.c
  407de23229097d9b9a4d00e2e9c60c70  libgcc/vtv_start.c
  ba13e8c1385837f9a736ead153be6251  libgcc/vtv_start_preinit.c
! 670c2cd55b2829f290a505caa724057c  libgcobol/ChangeLog
  573e7a1dee0641f56d9b797b23dff44b  libgcobol/Makefile.am
  23cf4646d213d05645a0bf48209b374d  libgcobol/Makefile.in
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
*************** ef8b11373d27f5ca4df73f09c6ccab75  libgco
*** 126281,126296 ****
  4c5dc966be490381f53924b2441c9300  libgcobol/gfileio.h
  42a0be811da2d9bccec1fc42d43424cb  libgcobol/gmath.cc
  9b52995346d1f02cab9c3e2b816722d6  libgcobol/gmath.h
! 0b5ae3b67b71166d4df84260814f27b1  libgcobol/intrinsic.cc
  0cf9ce2863c11a8fd875185c371fe6e6  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 1b814a88622ab7dad7f894edd2c79344  libgcobol/libgcobol.cc
! eaf7d2874931c86ed39c2d32c5230232  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  7921a81e3cbf784d960d70db7bc6e242  libgcobol/valconv.cc
  c7d27fb7e36a42567d7cc4d14e7ed3fe  libgcobol/valconv.h
! ef42a4709e8899d529681778170d9fe4  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 126346,126361 ----
  4c5dc966be490381f53924b2441c9300  libgcobol/gfileio.h
  42a0be811da2d9bccec1fc42d43424cb  libgcobol/gmath.cc
  9b52995346d1f02cab9c3e2b816722d6  libgcobol/gmath.h
! 7b73c809113d6b9961b7ace6fb9bf96f  libgcobol/intrinsic.cc
  0cf9ce2863c11a8fd875185c371fe6e6  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 5d4ae8cbb595f9a256593a4349c6a633  libgcobol/libgcobol.cc
! d8a5cbab4bf15a09ef68e887f0562aa5  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  7921a81e3cbf784d960d70db7bc6e242  libgcobol/valconv.cc
  c7d27fb7e36a42567d7cc4d14e7ed3fe  libgcobol/valconv.h
! 4d17b62fad048ac99adfa7ca9f0bed9a  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** a25a190e02c8ba2caa2c3dee224eba51  libgfo
*** 126315,126322 ****
  aa424ddf6a9e4e08b8023d3d5b371a0d  libgfortran/ChangeLog-2023
  09537a69736f655d1e0ccf28367d3ddf  libgfortran/ChangeLog-2024
  16ba29cf4184ed00d26fe02df17c83d7  libgfortran/ISO_Fortran_binding.h
! dff439751d0f684d621dfa4cd7358321  libgfortran/Makefile.am
! 7a19a44169283cb020a346caff128ab8  libgfortran/Makefile.in
  43f0b2981fb15d556a8ee8292ef70ba8  libgfortran/acinclude.m4
  77dad7b87b2adfbfda676696055ef90f  libgfortran/aclocal.m4
  c89d50fda6cbf50698f2d324f8a6ec7e  libgfortran/c99_protos.h
--- 126380,126387 ----
  aa424ddf6a9e4e08b8023d3d5b371a0d  libgfortran/ChangeLog-2023
  09537a69736f655d1e0ccf28367d3ddf  libgfortran/ChangeLog-2024
  16ba29cf4184ed00d26fe02df17c83d7  libgfortran/ISO_Fortran_binding.h
! 37aad15f30e8f1452a0429ca441024de  libgfortran/Makefile.am
! 6e7ae7f41c7aaa5dabe267566223bf71  libgfortran/Makefile.in
  43f0b2981fb15d556a8ee8292ef70ba8  libgfortran/acinclude.m4
  77dad7b87b2adfbfda676696055ef90f  libgfortran/aclocal.m4
  c89d50fda6cbf50698f2d324f8a6ec7e  libgfortran/c99_protos.h
*************** a0ea91b654d17cf6d11adf8cd7080ee6  libgfo
*** 127295,127300 ****
--- 127360,127366 ----
  675f622f58b01feec2abd5d72f18b022  libgfortran/mk-kinds-h.sh
  5cacd438c86553689eda2ce3d5623b45  libgfortran/mk-sik-inc.sh
  f8813ac773f6f6eb0ea6ecb287fb9250  libgfortran/mk-srk-inc.sh
+ 33a9784a89eb486aeaccd86810bc24d5  libgfortran/regenerate.sh
  66d9a60e93850e25dc3c2ea0b6d25e4a  libgfortran/runtime/ISO_Fortran_binding.c
  146c22571b8f675e6009e57849bd3aa3  libgfortran/runtime/backtrace.c
  94a7b229d39dbcd4417158c27efc1985  libgfortran/runtime/bounds.c
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 132852,132858 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 4196def670f9eb5476373a1f2d955063  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  54c7bc8277669e3bf5f1a3db179ae206  libgomp/Makefile.in
--- 132918,132924 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 14129940f6e90585911ee7e71620b8d3  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  54c7bc8277669e3bf5f1a3db179ae206  libgomp/Makefile.in
*************** db5fedb1611696cb835292ca099add57  libgom
*** 133919,133926 ****
  462b7afc311815ebbf76742eba03d83f  libgomp/testsuite/libgomp.c/declare-variant-4-gfx908.c
  a6a60705b94c7e6b7919df5a6678c9c4  libgomp/testsuite/libgomp.c/declare-variant-4-gfx90a.c
  16f43074bb4d4a130ccb0b731b6ed992  libgomp/testsuite/libgomp.c/declare-variant-4-gfx90c.c
  1a4ae6cfa2b54902b0414a9c9adc6ec2  libgomp/testsuite/libgomp.c/declare-variant-4.c
! 980980e128b04d71584e4188d4a0be81  libgomp/testsuite/libgomp.c/declare-variant-4.h
  de26bcca8c4e027a5ce130d6ff6fc370  libgomp/testsuite/libgomp.c/depend-1.c
  f064386a2df301c3135834944af37de9  libgomp/testsuite/libgomp.c/depend-10.c
  e46784f3cdfb38c461a2af6e0d9094a0  libgomp/testsuite/libgomp.c/depend-2.c
--- 133985,133993 ----
  462b7afc311815ebbf76742eba03d83f  libgomp/testsuite/libgomp.c/declare-variant-4-gfx908.c
  a6a60705b94c7e6b7919df5a6678c9c4  libgomp/testsuite/libgomp.c/declare-variant-4-gfx90a.c
  16f43074bb4d4a130ccb0b731b6ed992  libgomp/testsuite/libgomp.c/declare-variant-4-gfx90c.c
+ 20d5a489ce984dbea8dfce2c73ccb2f2  libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c
  1a4ae6cfa2b54902b0414a9c9adc6ec2  libgomp/testsuite/libgomp.c/declare-variant-4.c
! 0bdcde926145240c37ff393b8f5bd91e  libgomp/testsuite/libgomp.c/declare-variant-4.h
  de26bcca8c4e027a5ce130d6ff6fc370  libgomp/testsuite/libgomp.c/depend-1.c
  f064386a2df301c3135834944af37de9  libgomp/testsuite/libgomp.c/depend-10.c
  e46784f3cdfb38c461a2af6e0d9094a0  libgomp/testsuite/libgomp.c/depend-2.c
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 137902,137908 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 49ee2fb97e5ff3d4a92e07d63afaa228  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 137969,137975 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! a02656354377696b01290fe06236d171  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** d66f986053e4755f0517ff5cfe90b2b5  libstd
*** 138138,138144 ****
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  9e50e6ed5219a6fa4058265ed4809638  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
! 575fc7a15bb0116a3eb836e702ee9792  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
  6d16751d668adf69fac47cc69bde7d40  libstdc++-v3/doc/html/api.html
  08920438eea18325b4bfdf979379ff66  libstdc++-v3/doc/html/bk02.html
--- 138205,138211 ----
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  9e50e6ed5219a6fa4058265ed4809638  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
! 1e84b47eb6d795909c81c1ce94fd08ca  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
  6d16751d668adf69fac47cc69bde7d40  libstdc++-v3/doc/html/api.html
  08920438eea18325b4bfdf979379ff66  libstdc++-v3/doc/html/bk02.html
*************** ea0c531c09fa230f346f8ba700961e4a  libstd
*** 138309,138315 ****
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
  52f0c68b15c7a2b6e098bcfb8da0094b  libstdc++-v3/doc/html/manual/support.html
  fcdceeabf3a95117ea22e93a0354e564  libstdc++-v3/doc/html/manual/termination.html
! 428c7db4a31405ff14baac9e08214658  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
--- 138376,138382 ----
  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
*************** e12241b98a6c1e835b7b1d1bb31761ca  libstd
*** 138555,138561 ****
  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
! 0dc4244a8b03857d947e6dbc4d0e9133  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
  257e301935b13b4b045e571fa248a4d8  libstdc++-v3/doc/xml/manual/using_exceptions.xml
--- 138622,138628 ----
  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
  257e301935b13b4b045e571fa248a4d8  libstdc++-v3/doc/xml/manual/using_exceptions.xml
*************** e3c307e48b9e12b0736fde183ffa8bd7  libstd
*** 138592,138598 ****
  5384dfbb9eb9731df3aca40e40d55350  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
! 729d52cc106a57b28f26cc302e94d029  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
  e999e0783a5ca2165919f352526501e9  libstdc++-v3/include/bits/cow_string.h
--- 138659,138665 ----
  5384dfbb9eb9731df3aca40e40d55350  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
! d3b339d09113fe5e5f1b274c3729fd58  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
  e999e0783a5ca2165919f352526501e9  libstdc++-v3/include/bits/cow_string.h
*************** e999e0783a5ca2165919f352526501e9  libstd
*** 138602,138608 ****
  be08582d1795753f6e8fb613a7ec9fe0  libstdc++-v3/include/bits/elements_of.h
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
! 83f2f221de29b3bd5f910e7b8cc27404  libstdc++-v3/include/bits/formatfwd.h
  3c1cd1724fd697b7e7c6c0b2233c4c62  libstdc++-v3/include/bits/forward_list.h
  8123372b7074a636b749e1e60f9f2b81  libstdc++-v3/include/bits/forward_list.tcc
  547631f602a86bc167ed71b762904cd9  libstdc++-v3/include/bits/fs_dir.h
--- 138669,138675 ----
  be08582d1795753f6e8fb613a7ec9fe0  libstdc++-v3/include/bits/elements_of.h
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
! b26aa27f137d75ab25452276ca9265b2  libstdc++-v3/include/bits/formatfwd.h
  3c1cd1724fd697b7e7c6c0b2233c4c62  libstdc++-v3/include/bits/forward_list.h
  8123372b7074a636b749e1e60f9f2b81  libstdc++-v3/include/bits/forward_list.tcc
  547631f602a86bc167ed71b762904cd9  libstdc++-v3/include/bits/fs_dir.h
*************** d5313190529dc17f5c1b224649a2d12c  libstd
*** 138634,138640 ****
  9e782e5da4039aa3230bb96c97245039  libstdc++-v3/include/bits/locale_facets_nonio.tcc
  1d2095e2488ff25b060768c176bc3199  libstdc++-v3/include/bits/localefwd.h
  ebe0e043997d2c8b674df27da18dc48c  libstdc++-v3/include/bits/mask_array.h
! 49e58e9ec2145ed684701aa13f71f5af  libstdc++-v3/include/bits/max_size_type.h
  9eff13bd13b461742ae4d1e12f0cce28  libstdc++-v3/include/bits/memory_resource.h
  27bdede74800b12180665889a05cca6b  libstdc++-v3/include/bits/memoryfwd.h
  3cdf6345e89c49a55bd7c9be035d3729  libstdc++-v3/include/bits/mofunc_impl.h
--- 138701,138707 ----
  9e782e5da4039aa3230bb96c97245039  libstdc++-v3/include/bits/locale_facets_nonio.tcc
  1d2095e2488ff25b060768c176bc3199  libstdc++-v3/include/bits/localefwd.h
  ebe0e043997d2c8b674df27da18dc48c  libstdc++-v3/include/bits/mask_array.h
! e12645f7a7e11148585fc7ef7d1d8c57  libstdc++-v3/include/bits/max_size_type.h
  9eff13bd13b461742ae4d1e12f0cce28  libstdc++-v3/include/bits/memory_resource.h
  27bdede74800b12180665889a05cca6b  libstdc++-v3/include/bits/memoryfwd.h
  3cdf6345e89c49a55bd7c9be035d3729  libstdc++-v3/include/bits/mofunc_impl.h
*************** a0ff2aff5e6b290f02129d8fd5066f94  libstd
*** 138654,138660 ****
  053e1de38aef43bbaf1a9a4af1e3ad2f  libstdc++-v3/include/bits/random.h
  924981b1c29c7c7b010418607af71d7b  libstdc++-v3/include/bits/random.tcc
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
! cf19d81d7bcf8f1af36e702f24965eb9  libstdc++-v3/include/bits/ranges_algo.h
  2739c66cfdc38cbad18771e2317ce548  libstdc++-v3/include/bits/ranges_algobase.h
  12404cc111ad47773d8f645e76d111f3  libstdc++-v3/include/bits/ranges_base.h
  586727039587b10b560a902b1c7008b1  libstdc++-v3/include/bits/ranges_cmp.h
--- 138721,138727 ----
  053e1de38aef43bbaf1a9a4af1e3ad2f  libstdc++-v3/include/bits/random.h
  924981b1c29c7c7b010418607af71d7b  libstdc++-v3/include/bits/random.tcc
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
! 100702fad84dd63ad4800f6b18e7c6fe  libstdc++-v3/include/bits/ranges_algo.h
  2739c66cfdc38cbad18771e2317ce548  libstdc++-v3/include/bits/ranges_algobase.h
  12404cc111ad47773d8f645e76d111f3  libstdc++-v3/include/bits/ranges_base.h
  586727039587b10b560a902b1c7008b1  libstdc++-v3/include/bits/ranges_cmp.h
*************** de3723b929f14af1731389010c14893b  libstd
*** 138686,138695 ****
  c35a5da0369f3af2e9e202c9c8510914  libstdc++-v3/include/bits/std_function.h
  5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
! 49ff8521bb744ea31d55e5841e423121  libstdc++-v3/include/bits/stl_algo.h
  ba1901789908a4eca42f3ec20afebc3a  libstdc++-v3/include/bits/stl_algobase.h
  50378fb402a4f63ad663a2763f5cd08a  libstdc++-v3/include/bits/stl_bvector.h
! 8b19d3c29a5f7649b167865966c49a51  libstdc++-v3/include/bits/stl_construct.h
  914ee95a80c9537f434a34cddd3409fb  libstdc++-v3/include/bits/stl_deque.h
  8bd7e182b77be76921e6f1bead44217f  libstdc++-v3/include/bits/stl_function.h
  c6b4511debfbf2f7971dbae97dbcc998  libstdc++-v3/include/bits/stl_heap.h
--- 138753,138762 ----
  c35a5da0369f3af2e9e202c9c8510914  libstdc++-v3/include/bits/std_function.h
  5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
! 3738277ac274ee1b48828db7014b1599  libstdc++-v3/include/bits/stl_algo.h
  ba1901789908a4eca42f3ec20afebc3a  libstdc++-v3/include/bits/stl_algobase.h
  50378fb402a4f63ad663a2763f5cd08a  libstdc++-v3/include/bits/stl_bvector.h
! c2ca446fe3c0e405c49faaad2b28e9aa  libstdc++-v3/include/bits/stl_construct.h
  914ee95a80c9537f434a34cddd3409fb  libstdc++-v3/include/bits/stl_deque.h
  8bd7e182b77be76921e6f1bead44217f  libstdc++-v3/include/bits/stl_function.h
  c6b4511debfbf2f7971dbae97dbcc998  libstdc++-v3/include/bits/stl_heap.h
*************** ef960a69cca203133e14f230f029c45f  libstd
*** 138707,138715 ****
  8b75378d24bf1cd680dec9034e5fa6cf  libstdc++-v3/include/bits/stl_relops.h
  c422f42aab865e6ef70233d1d512473c  libstdc++-v3/include/bits/stl_set.h
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
! e090d043a8cdc4479dde4340af533938  libstdc++-v3/include/bits/stl_tempbuf.h
  eaceb582a18a6a7ee11227f1fc82b069  libstdc++-v3/include/bits/stl_tree.h
! 875a120da5d87944fd151bca22a7703c  libstdc++-v3/include/bits/stl_uninitialized.h
  a370f99cf5710c07aee43e033d2e6b9b  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
--- 138774,138782 ----
  8b75378d24bf1cd680dec9034e5fa6cf  libstdc++-v3/include/bits/stl_relops.h
  c422f42aab865e6ef70233d1d512473c  libstdc++-v3/include/bits/stl_set.h
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
! e77200e337d1f4695ed04b8f6fd9991d  libstdc++-v3/include/bits/stl_tempbuf.h
  eaceb582a18a6a7ee11227f1fc82b069  libstdc++-v3/include/bits/stl_tree.h
! 4b5acc9b9be1d3fad8fa21ea297e6b78  libstdc++-v3/include/bits/stl_uninitialized.h
  a370f99cf5710c07aee43e033d2e6b9b  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
  69fecd7181ec71c850dba6e19cf9a58c  libstdc++-v3/include/bits/streambuf.tcc
*************** a229b5c8ad2904a3b3173239225596c4  libstd
*** 138733,138740 ****
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  652419a46dc988dd67c512e4f7d5638a  libstdc++-v3/include/bits/vector.tcc
! f3ae8a0a58b613ec7a9310a36c03802b  libstdc++-v3/include/bits/version.def
! 6dcea72a24d5be0fc41e19a22714f039  libstdc++-v3/include/bits/version.h
  0db0dfc5d016435e64398e3bb70098d3  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
--- 138800,138807 ----
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  652419a46dc988dd67c512e4f7d5638a  libstdc++-v3/include/bits/vector.tcc
! 7fbdf321669ceb03b55f94d26dc611b4  libstdc++-v3/include/bits/version.def
! 7db023fb759d8ac790d48b69a50bdf4f  libstdc++-v3/include/bits/version.h
  0db0dfc5d016435e64398e3bb70098d3  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
*************** ae96a272e65886b9386e26db37971da1  libstd
*** 139300,139306 ****
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 37992e3139c3ee4583504aec5cf58ff6  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
  866d33497e4338e4e1a5289de701f9ba  libstdc++-v3/include/std/functional
--- 139367,139373 ----
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 560105676ec9ce1a226eadf89ff54167  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
  866d33497e4338e4e1a5289de701f9ba  libstdc++-v3/include/std/functional
*************** ed6663b9ff729b09c2bacefa3568d1fc  libstd
*** 139317,139329 ****
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! 1acc29ca9bc70866ca3b49f2fd2d6c5b  libstdc++-v3/include/std/mdspan
  2b8d6320d7f5a907bf3c094dcbe4d9f5  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
  a7b8e00d6cf56ea696ec15140b7c1d15  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
! 79b194dcc53ff3f04fcf800d0fc26cfa  libstdc++-v3/include/std/optional
  5d2c4f92cc15a2b4491886b629aabc08  libstdc++-v3/include/std/ostream
  8883599080e145869428c2dc9e59e2d3  libstdc++-v3/include/std/print
  317c818ab1030cf117c8d8ef03df06aa  libstdc++-v3/include/std/queue
--- 139384,139396 ----
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! c2b9ce00940d8398ed1f4488795d06cf  libstdc++-v3/include/std/mdspan
  2b8d6320d7f5a907bf3c094dcbe4d9f5  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
  a7b8e00d6cf56ea696ec15140b7c1d15  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
! 7087192c3b2013f70a584b3832225555  libstdc++-v3/include/std/optional
  5d2c4f92cc15a2b4491886b629aabc08  libstdc++-v3/include/std/ostream
  8883599080e145869428c2dc9e59e2d3  libstdc++-v3/include/std/print
  317c818ab1030cf117c8d8ef03df06aa  libstdc++-v3/include/std/queue
*************** ee32950ba29d7cda3e788de0776d8c16  libstd
*** 139338,139344 ****
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  f5759070e24ce7ac653599ead1274a2d  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
! 885b7d229d8dcf3ad5bb087b5a5a1fb4  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
--- 139405,139411 ----
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  f5759070e24ce7ac653599ead1274a2d  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
! 1ffc378f8e8e686e82a35a2717c0da50  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
*************** c5a4df8fdbbe4b3d33d0b52db500e16d  libstd
*** 139351,139358 ****
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  7cdac9ea092e51e067047e2b3fb2060e  libstdc++-v3/include/std/thread
! af3d3134c33d40c51e1d3493f1fb7cc4  libstdc++-v3/include/std/tuple
! a226c77b238f160c30a4815500ae57d2  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
--- 139418,139425 ----
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  7cdac9ea092e51e067047e2b3fb2060e  libstdc++-v3/include/std/thread
! d2ff7cdca5ef2cee6f02c458a98fa638  libstdc++-v3/include/std/tuple
! 2368606e33813045e9daf0bbdf3ea9e2  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
*************** e93a6c516a51d1e04b8233a897e3588f  libstd
*** 139476,139482 ****
  925b44e74cdf29e0bf443716d788d8bc  libstdc++-v3/libsupc++/eh_type.cc
  6f2ba32375c733fff701a0cd7d8e0e55  libstdc++-v3/libsupc++/eh_unex_handler.cc
  a703e327cd408b5e3200f542691f8488  libstdc++-v3/libsupc++/enum_type_info.cc
! 5ec905b22ea1e428f63596de485509bd  libstdc++-v3/libsupc++/exception
  8054fe12bb18b03b241ea2b0db66b0d0  libstdc++-v3/libsupc++/exception.h
  8cb7ef9933695804f855459d4b0661ec  libstdc++-v3/libsupc++/exception_defines.h
  7735536dd8c1fa8df641d3ac8e8fdf0c  libstdc++-v3/libsupc++/exception_ptr.h
--- 139543,139549 ----
  925b44e74cdf29e0bf443716d788d8bc  libstdc++-v3/libsupc++/eh_type.cc
  6f2ba32375c733fff701a0cd7d8e0e55  libstdc++-v3/libsupc++/eh_unex_handler.cc
  a703e327cd408b5e3200f542691f8488  libstdc++-v3/libsupc++/enum_type_info.cc
! 956d78306ca1374b77f077dad8fcc8d2  libstdc++-v3/libsupc++/exception
  8054fe12bb18b03b241ea2b0db66b0d0  libstdc++-v3/libsupc++/exception.h
  8cb7ef9933695804f855459d4b0661ec  libstdc++-v3/libsupc++/exception_defines.h
  7735536dd8c1fa8df641d3ac8e8fdf0c  libstdc++-v3/libsupc++/exception_ptr.h
*************** c4a63edebdca46a9468f6ce9cde53449  libstd
*** 139531,139537 ****
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
! 40f8ee10a4683f6c7f555f9450fcaa12  libstdc++-v3/scripts/create_testsuite_files
  db724a6fa0555381c90302977970d0e3  libstdc++-v3/scripts/extract_symvers.in
  f501660a6c6b00aafeaef03458ae53a5  libstdc++-v3/scripts/extract_symvers.pl
  755b77f929d926f07f3257df2e802f2e  libstdc++-v3/scripts/gen_bind_includers.pl
--- 139598,139604 ----
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
! d964b7c0886aae16013b2d9f5bfceb50  libstdc++-v3/scripts/create_testsuite_files
  db724a6fa0555381c90302977970d0e3  libstdc++-v3/scripts/extract_symvers.in
  f501660a6c6b00aafeaef03458ae53a5  libstdc++-v3/scripts/extract_symvers.pl
  755b77f929d926f07f3257df2e802f2e  libstdc++-v3/scripts/gen_bind_includers.pl
*************** d85f3a53465585d54b96880e79456c79  libstd
*** 139661,139667 ****
  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
! 54fe1c43fad6dfb23bc4c5910ad45ce7  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  97527213996a1ca6a0910b1ab5f6c3a3  libstdc++-v3/src/c++26/Makefile.am
  5dd6b2acd5d63f897ba1545bb9a07d25  libstdc++-v3/src/c++26/Makefile.in
--- 139728,139734 ----
  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
! cd32e929910baf186cb585d8c4439e19  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  97527213996a1ca6a0910b1ab5f6c3a3  libstdc++-v3/src/c++26/Makefile.am
  5dd6b2acd5d63f897ba1545bb9a07d25  libstdc++-v3/src/c++26/Makefile.in
*************** d100df3b99954e5e2a1e25ac7967528c  libstd
*** 139751,139757 ****
  fa6dd9de47fc1161957dd77bcc925b13  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
  e4a354a67235724c5f38b1fc51630071  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
  1b083d4d975f6db8c98c387c2bf43571  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! 01e7ded25173115a457f55be07713814  libstdc++-v3/testsuite/17_intro/names.cc
  d4446489cc9fd961dbc2f15b2b21fca7  libstdc++-v3/testsuite/17_intro/names_fortify.cc
  047ad714f0a1ac010ab86a084dfbeee7  libstdc++-v3/testsuite/17_intro/names_pstl.cc
  441838fc5a4a7a22a784014872e61926  libstdc++-v3/testsuite/17_intro/no_library_allocation.cc
--- 139818,139824 ----
  fa6dd9de47fc1161957dd77bcc925b13  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
  e4a354a67235724c5f38b1fc51630071  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
  1b083d4d975f6db8c98c387c2bf43571  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! a50567fc977e250fd51cdb956bb79858  libstdc++-v3/testsuite/17_intro/names.cc
  d4446489cc9fd961dbc2f15b2b21fca7  libstdc++-v3/testsuite/17_intro/names_fortify.cc
  047ad714f0a1ac010ab86a084dfbeee7  libstdc++-v3/testsuite/17_intro/names_pstl.cc
  441838fc5a4a7a22a784014872e61926  libstdc++-v3/testsuite/17_intro/no_library_allocation.cc
*************** e87baf85f6f908100f4517bca965289b  libstd
*** 140878,140883 ****
--- 140945,140951 ----
  17d39f79ed38d2fa6bc9f0966d658070  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
  f7bf5549fbdf589877e5795a24ddd3fb  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
  d8af3640e7aabc8dd1960265b3ca5a27  libstdc++-v3/testsuite/20_util/optional/observers/lwg2762.cc
+ 5b53f481fa2d64eb63407e6f157fd182  libstdc++-v3/testsuite/20_util/optional/range.cc
  778cdd933451ff624c66d739396a7772  libstdc++-v3/testsuite/20_util/optional/relops/1.cc
  9b0c6c5d74424693ceca6e756d7db294  libstdc++-v3/testsuite/20_util/optional/relops/104606.cc
  b835a2c9ae7cb087a474e27645b6d22c  libstdc++-v3/testsuite/20_util/optional/relops/2.cc
*************** dbea899b3c675ff68a2a4b74a3b78bca  libstd
*** 140895,140901 ****
  0f3d45388c61f51b7f6df124ff507aaa  libstdc++-v3/testsuite/20_util/optional/swap/1.cc
  001a4c1e1cdc738cbb337a561fdf8f1b  libstdc++-v3/testsuite/20_util/optional/swap/2.cc
  87b708c4b560c5395ed1befec2f78c20  libstdc++-v3/testsuite/20_util/optional/typedefs.cc
! 63ddf373eb5a6d0bf6cfa6e8e5949381  libstdc++-v3/testsuite/20_util/optional/version.cc
  769c51ec9bdc631d6362fa951c05cccf  libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
  e0f9fb4daf676dc4e6d66cb9401c7ee8  libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
  dc4de23526f5805bc83f55f427e70ab3  libstdc++-v3/testsuite/20_util/owner_less/void.cc
--- 140963,140969 ----
  0f3d45388c61f51b7f6df124ff507aaa  libstdc++-v3/testsuite/20_util/optional/swap/1.cc
  001a4c1e1cdc738cbb337a561fdf8f1b  libstdc++-v3/testsuite/20_util/optional/swap/2.cc
  87b708c4b560c5395ed1befec2f78c20  libstdc++-v3/testsuite/20_util/optional/typedefs.cc
! d7fb62e17c0645e1ddf77323e882c43f  libstdc++-v3/testsuite/20_util/optional/version.cc
  769c51ec9bdc631d6362fa951c05cccf  libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
  e0f9fb4daf676dc4e6d66cb9401c7ee8  libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
  dc4de23526f5805bc83f55f427e70ab3  libstdc++-v3/testsuite/20_util/owner_less/void.cc
*************** a52bfedb1a381a0202dbb55c703013a0  libstd
*** 141179,141185 ****
  7c6df795389d4f9adf111d4d879fa257  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
  0c389150c2f95a24f62d342469a7c67e  libstdc++-v3/testsuite/20_util/specialized_algorithms/feature_test_macro.cc
  e7f673de33f454714074c0cd02339d78  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! cd86fee2a39f32a183ffe460241c5d26  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  ef6acc638fee193e17ccbdb06ce4dde8  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  09c95029dd16edca10e38b6f40f9859b  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  cc190104693360d7b581aac2061c8a7c  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
--- 141247,141254 ----
  7c6df795389d4f9adf111d4d879fa257  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
  0c389150c2f95a24f62d342469a7c67e  libstdc++-v3/testsuite/20_util/specialized_algorithms/feature_test_macro.cc
  e7f673de33f454714074c0cd02339d78  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 3d215c86194df15b75fdf87c57f36962  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc
! 26b39447a16317aaeaca689f89179e8a  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  ef6acc638fee193e17ccbdb06ce4dde8  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  09c95029dd16edca10e38b6f40f9859b  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  cc190104693360d7b581aac2061c8a7c  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
*************** c1d02704b0ca48f960e4264bad4da166  libstd
*** 141199,141204 ****
--- 141268,141274 ----
  2aa46a4daa14b4d9bbc06a909fa0db4a  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc
  e476f8f907b3f12bba040b0981f2fe90  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc
  5c529f66ba2dff99128282e6b9d61eca  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc
+ 12e5344649146b67dab4a377a2b9d6e4  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/120397.cc
  d3159b84b2e9833a521af84ceffbacfa  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constexpr.cc
  80b1e241c174cb2c19fe3bad0cdeb746  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constrained.cc
  131fd8d66b4f4501ac218ad00b557ef8  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc
*************** f965d986e70a4a8e4205944d0da1280c  libstd
*** 141219,141224 ****
--- 141289,141295 ----
  b9c754b752d700e95d0174f85d7a37a4  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc
  6cf4cb93cbec42025a516fa8bc8fc11d  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/constexpr.cc
  ce078b3c7da72093e79d78462d6765e3  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc
+ 728ff6bdc4a20d86864e3a02404ab3f8  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/120397.cc
  eab81dcb9803ffba589d84a1d9a6a38a  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc
  0139ac3e23d77cfa549f7bdcd27bb8b6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94831.cc
  65ad5bb2124a2dd98e70c1bfadea4655  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constexpr.cc
*************** db7eb287a5e0045f349675e65e3d5983  libstd
*** 141345,141350 ****
--- 141416,141422 ----
  c22b5ea71779420d97ca79d2eb1af226  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size_neg.cc
  f25fde8d3328cd18ff9cfb34d726e252  libstdc++-v3/testsuite/20_util/tuple/dangling_ref.cc
  c8f4ff27366ac7d9ff03d3d0c004b58e  libstdc++-v3/testsuite/20_util/tuple/dr2729.cc
+ a4bbf75133dc2f10f9fa6a83264d898c  libstdc++-v3/testsuite/20_util/tuple/dr3528.cc
  5c4d5220d3eb9f735e8817b5ea562b55  libstdc++-v3/testsuite/20_util/tuple/element_access/101427.cc
  ea626a193cd7bb449bf138394371a456  libstdc++-v3/testsuite/20_util/tuple/element_access/71096.cc
  ee985f91c48f897adf41b921928d75a8  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get.cc
*************** ef8992fce519e4aeb10d10129736a163  libstd
*** 143199,143209 ****
  1a429dd433a9cca8518d6eeaf0db7ff4  libstdc++-v3/testsuite/23_containers/map/version.cc
  cf53330bcd33cbf3f9444b6c9c76a483  libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc
  58d322becec5c5e65c19f17834e2a082  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_copy.cc
! d6a92413b18ed23d766b31740507b346  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_default.cc
  d4de13f0203d7d66539b205b64e6fdf5  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_ints.cc
  74773d6a3d965e479de89f3fe5d7058d  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_shape.cc
  7dddbd46b2322b83e499829b9330469c  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
  12eb872fdb4d5a57287eed12eabdd4f7  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
  351e436ffeeb8e47804c6992b75a81cb  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
  5bf01016c0929346c0086fb8a71129b5  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
  e49224c2f36823b4ec1be684dd0c8090  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
--- 143271,143286 ----
  1a429dd433a9cca8518d6eeaf0db7ff4  libstdc++-v3/testsuite/23_containers/map/version.cc
  cf53330bcd33cbf3f9444b6c9c76a483  libstdc++-v3/testsuite/23_containers/mdspan/extents/class_mandates_neg.cc
  58d322becec5c5e65c19f17834e2a082  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_copy.cc
! e9e5cce5f41b3fcb25e00e9b6edb9a83  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_default.cc
  d4de13f0203d7d66539b205b64e6fdf5  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_ints.cc
  74773d6a3d965e479de89f3fe5d7058d  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_shape.cc
  7dddbd46b2322b83e499829b9330469c  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
  12eb872fdb4d5a57287eed12eabdd4f7  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
+ 09f60c1da783ed561b487e9441ae6882  libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
+ bfd42a535aa33a3b5315bf669715ffb4  libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
+ dd7692786bb4cc01e8e54a11e77eef69  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
+ b8b98f6231b941e8ade7b6f8b50941cb  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
+ 3456466cd742d11c2e015ca5497a0206  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
  351e436ffeeb8e47804c6992b75a81cb  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
  5bf01016c0929346c0086fb8a71129b5  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
  e49224c2f36823b4ec1be684dd0c8090  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
*************** e0b11c4dbbdafef2f8d275b74b88c682  libstd
*** 144063,144069 ****
  4a80c4aed13525641b84766318cd6f8c  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
  f05d61ed2f2f49da266a6dd1825c57fb  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
  61dccf009d507fd3f577a5aeacafcbf6  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_rvalue.cc
! 75b250a8f0bd8993a250939859718a5f  libstdc++-v3/testsuite/23_containers/vector/bool/format.cc
  981d796e31f85b155c22e4537df612da  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
  ab56a6e398445099c12ca1122424277f  libstdc++-v3/testsuite/23_containers/vector/bool/iterator_c++20.cc
  3830dcd977751429dffbc55d64b358c1  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/1.cc
--- 144140,144146 ----
  4a80c4aed13525641b84766318cd6f8c  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
  f05d61ed2f2f49da266a6dd1825c57fb  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
  61dccf009d507fd3f577a5aeacafcbf6  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_rvalue.cc
! 4fa7762169af200b0d41570a00fd63fd  libstdc++-v3/testsuite/23_containers/vector/bool/format.cc
  981d796e31f85b155c22e4537df612da  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
  ab56a6e398445099c12ca1122424277f  libstdc++-v3/testsuite/23_containers/vector/bool/iterator_c++20.cc
  3830dcd977751429dffbc55d64b358c1  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/1.cc
*************** e3eb212137f2101dd4ceb83392d4f604  libstd
*** 144124,144131 ****
  61e8da4cd434fb8870df8cc065622ac8  libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
  6273d6891837720e35cbfccb6eaa7e66  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
  7a66bf7f5aca27ddc8ca203f2f55a9b6  libstdc++-v3/testsuite/23_containers/vector/cons/destroy-adl.cc
! 03d4bbea96b2b7d622e0f0d4ed285e82  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! c321498bb25d81efcdb153b4281a5653  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
  833017a30b2de971981f574bdc3fd989  libstdc++-v3/testsuite/23_containers/vector/cons/from_range.cc
  95343136dbd192e25dfe16b3a4eda01d  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
  f1d10ca32c2d09fd89ac466ce1077fce  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
--- 144201,144208 ----
  61e8da4cd434fb8870df8cc065622ac8  libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
  6273d6891837720e35cbfccb6eaa7e66  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
  7a66bf7f5aca27ddc8ca203f2f55a9b6  libstdc++-v3/testsuite/23_containers/vector/cons/destroy-adl.cc
! 2694e9f5cb5094fe107333e8e893566e  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! 3910bbb9d09dde186eeeeb0f6fc1fbab  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
  833017a30b2de971981f574bdc3fd989  libstdc++-v3/testsuite/23_containers/vector/cons/from_range.cc
  95343136dbd192e25dfe16b3a4eda01d  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
  f1d10ca32c2d09fd89ac466ce1077fce  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
*************** b9907ab1fd112fa27bbaea52ca154a99  libstd
*** 146240,146248 ****
--- 146317,146327 ----
  bebf7a07ac27dbfcc901db9147fe5d33  libstdc++-v3/testsuite/27_io/basic_istringstream/assign/1.cc
  c4102d45976ca7c177875aeb7a9c3d2d  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/2020.cc
  5316681d4e8205fb90d01589912e9786  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/1.cc
+ b4ed4432198a68b4b7375b8bd0f861bd  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/string_view.cc
  7ef3ba48f5633fcf4066d083d5d64533  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/default.cc
  8b711f3805237726219ea9c388081158  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/move.cc
  213748997487128fb0dce550dbc35112  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/wchar_t/1.cc
+ 8a5d79a6889f51c454f8466d1b58d82b  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc
  987516275235b1eb4c298acb701d0c31  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc
  b3cfbb11e8ee2d9bff86d2a19f58c120  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc
  55a67e27f3f1ac21ec3d7221716b0da9  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/base_classes.cc
*************** aafa09d244bb60e2537a532377a02ffd  libstd
*** 146419,146428 ****
--- 146498,146509 ----
  8cf21505b7c57bbbdb2458d40ef91cc3  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/2020.cc
  37c017aed89ca93195776523aacebf2f  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/1.cc
  4cfd677ee3ccfe4c53cd82bc0391a39a  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/3.cc
+ 8441f82d4508a211fbbc705df8135863  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/string_view.cc
  0034586c5534795efa76c00892f9270b  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/default.cc
  be52236370614302a7c457609aaa50eb  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/move.cc
  ed16e4df5a5c6b34b2818a1e7d21ea4c  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/1.cc
  71a006531de7ee318dd65366d1afe812  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/3.cc
+ bcb73da263574f844833df8f78a185fd  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc
  223977105923aabe68294894139c7941  libstdc++-v3/testsuite/27_io/basic_ostringstream/pthread3.cc
  bcdc3d1e6c1707d3f7a584058e9a0f55  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc
  90897520f40b1d36029ab67314d15e6b  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc
*************** efd0685b9bebc2bb5bca2a1f6896737b  libstd
*** 146480,146488 ****
--- 146561,146571 ----
  2f05a1c756fe0700d9237c1fa23ea781  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/1.cc
  e858aa991970a61f9123814202a4e3a2  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/2.cc
  26381397ad49887883fc473db9923738  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/default.cc
+ 6ded6e8fbf80b0bd8c122de7cfbc5ee9  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/string_view.cc
  9ccbe8160b0b3f44e6ea409381df308a  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc
  9f8eb1e05c9b9d6567fbd466917939ab  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/2.cc
  4132683e1ae9dc52c75fcc3a1908ef6b  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc
+ b968b10ba230ad54a32e604aa8db00b6  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc
  7a54b1c941aef9006d9187f166b46335  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/1.cc
  8f14c91d23da03f9166f102c2b09db58  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/9322.cc
  5b8d835400404644d180da140841af2e  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc
*************** da08e10dcc531fb464c2c64d877ef751  libstd
*** 146579,146587 ****
--- 146662,146672 ----
  13620a124051ad4ca76e7c1f6cd5f73f  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/2020.cc
  ef3c66fdb5c8f1f37370d898bd3a1467  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/1.cc
  a02fd111cec2a8fb9a282ed9f700b7ad  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/97719.cc
+ 52be1020d5348d9f2bafa39ecf1f6f06  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/string_view.cc
  3b19cb34fa2f6ea2d15969ce93f1ab63  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/default.cc
  326d6601e84f065e6a8ab2a59a6b57ee  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/move.cc
  3d88fecc512207cf2a3f6b1b584c0e88  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/wchar_t/1.cc
+ f38d4c8b5f14a540c9c992317b3fb187  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc
  01311f3ef19fb29de40638a75344cae4  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc
  d2585b125d7da8bde228e6fe97b58667  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/wchar_t/2832.cc
  51d6c99dc70b5397218c5ba449a02ee4  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/base_classes.cc
*************** a2a09869b9694d902f8143e6fe259895  libstd
*** 147915,147925 ****
  ae07841c664c8d013f629a5ace0dfe50  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
  3107784fe960cbb520edd9c5bc6fe291  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
  e8b20912d948455f8c08fe9b1a2a9f00  libstdc++-v3/testsuite/experimental/names.cc
! c3a63eae7968117044a7c2462f8fca16  libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc
! 9b444aabd71eae2c828b01f2c72a01c1  libstdc++-v3/testsuite/experimental/net/buffer/const.cc
  e5f7a5f053b81f20998e5834b64d953e  libstdc++-v3/testsuite/experimental/net/buffer/creation.cc
! a655c3131fbbb953da58224ebd27fa9b  libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc
! 3bd1c31d4492efe4dbd9c8067f8e30b5  libstdc++-v3/testsuite/experimental/net/buffer/size.cc
  fea29039bb37f69b7e62f937b97f8f42  libstdc++-v3/testsuite/experimental/net/buffer/traits.cc
  806df93a573b30fb0068e38badda9563  libstdc++-v3/testsuite/experimental/net/execution_context/make_service.cc
  dd86115093485fa9283de73189fa56fa  libstdc++-v3/testsuite/experimental/net/execution_context/use_service.cc
--- 148000,148010 ----
  ae07841c664c8d013f629a5ace0dfe50  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
  3107784fe960cbb520edd9c5bc6fe291  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
  e8b20912d948455f8c08fe9b1a2a9f00  libstdc++-v3/testsuite/experimental/names.cc
! f7394e7fb85dc31deca047ac56d1ffe9  libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc
! 183546c8d9d2d8438a6345058619d141  libstdc++-v3/testsuite/experimental/net/buffer/const.cc
  e5f7a5f053b81f20998e5834b64d953e  libstdc++-v3/testsuite/experimental/net/buffer/creation.cc
! b45238cfe6e213fc3fb65883d906879b  libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc
! 7807eb0c89471236ba769522f4e0dbc7  libstdc++-v3/testsuite/experimental/net/buffer/size.cc
  fea29039bb37f69b7e62f937b97f8f42  libstdc++-v3/testsuite/experimental/net/buffer/traits.cc
  806df93a573b30fb0068e38badda9563  libstdc++-v3/testsuite/experimental/net/execution_context/make_service.cc
  dd86115093485fa9283de73189fa56fa  libstdc++-v3/testsuite/experimental/net/execution_context/use_service.cc
*************** dd321bfe51cc26b51d1b1a6f4dea94e6  libstd
*** 147944,147952 ****
  045d777362c936c67868983c1356e743  libstdc++-v3/testsuite/experimental/net/socket/basic_socket.cc
  c0f9d478c9a3b5cd3ac28eb80fb8394d  libstdc++-v3/testsuite/experimental/net/socket/socket_base.cc
  45f99a8921e9e5487b995db3e98e1116  libstdc++-v3/testsuite/experimental/net/system_context/1.cc
! b841d806630070477f80c610a8b3884b  libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc
! e11c5b789552b3777154393ab4b52aa2  libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc
! d7eb2ae104ff870b7b76904f6792cc6c  libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc
  22acfb1a6813c7e0364d9f40983c58e7  libstdc++-v3/testsuite/experimental/numeric/77801.cc
  c939cfd2ee239479e54b9183a53b4bb7  libstdc++-v3/testsuite/experimental/numeric/92978.cc
  6fb30a61893fac984cce8a86c5607bff  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
--- 148029,148037 ----
  045d777362c936c67868983c1356e743  libstdc++-v3/testsuite/experimental/net/socket/basic_socket.cc
  c0f9d478c9a3b5cd3ac28eb80fb8394d  libstdc++-v3/testsuite/experimental/net/socket/socket_base.cc
  45f99a8921e9e5487b995db3e98e1116  libstdc++-v3/testsuite/experimental/net/system_context/1.cc
! 4a810cc2dbee98dd99099218c8904432  libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc
! da11abc9315c704a283b08ede5a3ef78  libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc
! 6b18595528ff9e90c816cdd2838b8f3d  libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc
  22acfb1a6813c7e0364d9f40983c58e7  libstdc++-v3/testsuite/experimental/numeric/77801.cc
  c939cfd2ee239479e54b9183a53b4bb7  libstdc++-v3/testsuite/experimental/numeric/92978.cc
  6fb30a61893fac984cce8a86c5607bff  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
*************** fa4e4b98c8f8635456c592adc18c413f  libstd
*** 148443,148458 ****
  6ab4f41a954e390a433eb318844f4dd4  libstdc++-v3/testsuite/ext/slist/check_construct_destroy.cc
  96e8f13a87f1080b06b8cceecc8e3957  libstdc++-v3/testsuite/ext/slist/requirements/explicit_instantiation.cc
  0bd8c9325568334f8d9fc07f26efd7e2  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_nan.cc
! 0d11760c0805130c535968c3908f661e  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc
  24952700fbd596befd020d37b5730395  libstdc++-v3/testsuite/ext/special_functions/airy_ai/compile.cc
  a4171b6952dc603715b9a58f91fe6175  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_nan.cc
! 2c94e7fdbbb620a557867364b59e664b  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc
  52e41cc9f919354e1dedd76f7e3ea7aa  libstdc++-v3/testsuite/ext/special_functions/airy_bi/compile.cc
  971a06f5b724952f7de0278afc47eef0  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
! 97bb8e2ce2328e98630ffeaf14cabe5b  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
  87b1def64f5d3a7a5867608101e82442  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
  38c071ef00474085bcca9b6b8a263baf  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
! bd764c83e80c9baa2db8c0d968c95177  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
  728ad1e387f396e909e9b047ce3d1032  libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
  11bb3602d16ddaf60f7a38510179a45f  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-1.cc
  a254b71df9850741d8925557f35d2c06  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
--- 148528,148543 ----
  6ab4f41a954e390a433eb318844f4dd4  libstdc++-v3/testsuite/ext/slist/check_construct_destroy.cc
  96e8f13a87f1080b06b8cceecc8e3957  libstdc++-v3/testsuite/ext/slist/requirements/explicit_instantiation.cc
  0bd8c9325568334f8d9fc07f26efd7e2  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_nan.cc
! b753c5a11f264c43b550d3938a030a2e  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc
  24952700fbd596befd020d37b5730395  libstdc++-v3/testsuite/ext/special_functions/airy_ai/compile.cc
  a4171b6952dc603715b9a58f91fe6175  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_nan.cc
! 9e176aaaad1fe28a7f1fc7e6831d9c79  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc
  52e41cc9f919354e1dedd76f7e3ea7aa  libstdc++-v3/testsuite/ext/special_functions/airy_bi/compile.cc
  971a06f5b724952f7de0278afc47eef0  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
! 4f2d6c50042ba639577a1cdf97f9703c  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
  87b1def64f5d3a7a5867608101e82442  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
  38c071ef00474085bcca9b6b8a263baf  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
! a3c4d5286ece434adb00e729d7c53127  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
  728ad1e387f396e909e9b047ce3d1032  libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
  11bb3602d16ddaf60f7a38510179a45f  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-1.cc
  a254b71df9850741d8925557f35d2c06  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
*************** c444ab2c2f0103bceefa9a7444718f2d  libstd
*** 148677,148769 ****
  b33c4ae16d1b60c561a1164e6f3b7fa5  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert.cc
  0e3743945e8aae1bf3dea785d39f9096  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find.cc
  136b0fddb33dd722bfa9ba61352b8ae8  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
! 42cb1464d83365b9c0dc015bb30f596b  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
  b4608f87b61b6cb60ba6833916a7cfaa  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
  01856fc91b73dab39b232eb48d6de4a3  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
  94576b7c648142104d017d57bdaa62bf  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
! be18226f81f7ef08eab15f3eb4448e35  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
  0f6cff3305de7c2011680fb1b9fab310  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
  c0aca6dab47cf90820046b24076f62b5  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
! 3e9801255b02ff9cf600c9954cbb16b3  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc
  727945333cfac8d73b637dcac2a79fa9  libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
! 04df3b664cb4a6d29cbf75e3085bae50  libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
  e67a716f9a63667852e88b4b593e5096  libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
  061a2f3eccd400d4c30356d45cdabe7d  libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
  ddad496fa60c33be017a496daf51d47b  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
! b85c7d97ac9033e6d56182f9095f686e  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
  7b0c39a174ac374ae7a1bd52fff46819  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
  3ff494321644d0cba65fee6be221df6f  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
  7aad9c3d2a1bb6f2d3eec291d71e0b31  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
! 6b6b1eb55676082e101b70aab0dea35e  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
  a8819b8a2cd45be6f579dbcb2900b610  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
  6a0a7bc40eaab918c917a3cd3c82684f  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
  bd8d79afa228e6f6a638746dcd682172  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! 1c5930e495da450795f505b41587a09f  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
  33dd4cb9b4493c6aa32e8161ef48df8a  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
  7ff01b869267667540d811f76020ee0b  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
  d40969d8e7a8973cde9b227f9ce95961  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc
  bc72b408d4a9fa37a6ffd64f22728c75  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
! 8268f8b53a6f220e7f6fea6896aece7d  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
  ca0816827d7b5d5f78f79c131c118889  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
  2a0ccbc101f3e2229c571f64e8faed15  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
  464b9c2119b9a3c7da2aca208818c540  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
  9381287440a416fad72936cc045ee8cf  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
! aa439f6e2740f6918654b8e7d0d8cb54  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
  ded6518481dcb19014a3011ead3702ed  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
  92a7b20905f10a638105d2bc017d1154  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
  488490c53b1c32e73c94c049532009cd  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
! 15595ca639d6580901d81686adf4ffeb  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
  f2bb9766f85b88e1e3ac2202922a44cf  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
  bc15b5a1b2cec6c204eb269f66b418ce  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
  9cc4cc77890fb416088ef1c01d5e6962  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
! 6bf18d87f20195755ce94bb4b5ae6d79  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
  198f1c7d481d70206119c45407ef9e2e  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
  a6bcd482522b01638cc225a42ba90f24  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
  08a3bd501d27e1b855828b6e52f9cd1b  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
! 5a95c143c53f18fd2f2f5e94d8185a6f  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
  af4dadd050d97629e98aa4bc19e0d940  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
  4b2d859c8f5c25f4dd1f65495ee7dc9a  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
  60de0983a880dfe14f5f3b6d8b36642e  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
! 503cb1f7ab13430ae8fd930a6e29376f  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
  86ab73f3d1e456ed8315ba89c5e326ab  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
  2b652b796dde56108c6abc20b0b9a304  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
  5746a0749df4f950a30e76c0d78e5c23  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! 3d2629df9b18fd65e0e626e6417a142b  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
  b5152c30c9293d7bb73bce5ff903960f  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
  2e38a671e08330209c8b044dde513e97  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
  51586062b3eeaebd7af37c198695dc60  libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc
  3c7f388dbe79cd24ee97ea182e2805e7  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
! db84dd5cc4577616fb0ee3fcab2f7a56  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
  3ff8b074b972818e2d04bafb624164e5  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
  549c4066a0ff68ebcf63b59918394810  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
  1c60310d46c7a1010cf65ad821856afe  libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc
  3d98d83f815403cd503a34c186cdbd9d  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
! e87744f52fa9fe8526a2f0956fd0118d  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
  2a6ec898e1d8bb772ad5fd73585e58ab  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
  a53d826325006320da29a1fb44638640  libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
  606cb587cd2747ccec156b76a7a529b6  libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
! 097647df6045486c7eeea1ec87434b06  libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
  e00f99e68cd521e183837b04810c0ae4  libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
  1718a3b472a3939850ad65d29faa6e60  libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
  109207d01e2c45de9699c967bc417564  libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
! 06848787bfa5a4e6d0f6dfb9f45f7b29  libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
  f6bc661b70f618a5b89394b21ef6d609  libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
  716861be5d927aed4641bb40f655aef4  libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
  1d86d7514fa1b2355749601498036df7  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
! d7ea70a54a47ed0907cc056f7ee02645  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
  3b60d687fdb0acf261238b6c0f04a2d9  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
  e2192a6ade4c08120fc75105a09a93ab  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
  24897a909fa8847bcfd2cce725a0fb4e  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
! ad63545847faf4bef3959cadbf62652c  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
  43a814be9ca8b5016dc4bcb4f2e295d4  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
  39a5cf9c73429332cc8def52b3eb3f94  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
  fa55bac54c4daf01580dde4c9f6a6879  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
! d1215e687e6f2d25c62690bde7f8ccf7  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
  400a294aff4d967433011b1509c22265  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
  e3932c9e04e30e174f8e2c7d4be03725  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
! edb0b32fb5927caf83f590823c3d5a8a  libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc
  14e684e51bbd97f3a488bb3c1e03e971  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
! 6d1293049bc11c9e18227593e5e692b1  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
  9d291c36bb67bdcbc01ec09b692ee3a6  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
  fbb9cb6aa1afed0d56fc6427306fa22e  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
  462c353e4232e973ac6947e6356f9296  libstdc++-v3/testsuite/std/concepts/1.cc
--- 148762,148854 ----
  b33c4ae16d1b60c561a1164e6f3b7fa5  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert.cc
  0e3743945e8aae1bf3dea785d39f9096  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find.cc
  136b0fddb33dd722bfa9ba61352b8ae8  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
! 58024f4a7408fe1306d250a3e616af7e  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
  b4608f87b61b6cb60ba6833916a7cfaa  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
  01856fc91b73dab39b232eb48d6de4a3  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
  94576b7c648142104d017d57bdaa62bf  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
! 95d73cf757de264527b0b3fb2b2a80c8  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
  0f6cff3305de7c2011680fb1b9fab310  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
  c0aca6dab47cf90820046b24076f62b5  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
! 7a925f1cf43259dadc282b53b249e880  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc
  727945333cfac8d73b637dcac2a79fa9  libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
! f70191dc0a2f8318e62c7fd93d95345b  libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
  e67a716f9a63667852e88b4b593e5096  libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
  061a2f3eccd400d4c30356d45cdabe7d  libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
  ddad496fa60c33be017a496daf51d47b  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
! fe687d9f60b9762813f7807212edca5d  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
  7b0c39a174ac374ae7a1bd52fff46819  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
  3ff494321644d0cba65fee6be221df6f  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
  7aad9c3d2a1bb6f2d3eec291d71e0b31  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
! be2a7a9c39309fb9d89cee3eca7e9c96  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
  a8819b8a2cd45be6f579dbcb2900b610  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
  6a0a7bc40eaab918c917a3cd3c82684f  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
  bd8d79afa228e6f6a638746dcd682172  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! 78a1ebc9c714e8de9f130b7fa407007a  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
  33dd4cb9b4493c6aa32e8161ef48df8a  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
  7ff01b869267667540d811f76020ee0b  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
  d40969d8e7a8973cde9b227f9ce95961  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc
  bc72b408d4a9fa37a6ffd64f22728c75  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
! 9a7c6cd9ae18a3b2b69cf530a01e8d20  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
  ca0816827d7b5d5f78f79c131c118889  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
  2a0ccbc101f3e2229c571f64e8faed15  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
  464b9c2119b9a3c7da2aca208818c540  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
  9381287440a416fad72936cc045ee8cf  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
! 8911cf7ff7fe19a07ab6b21ade8842cb  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
  ded6518481dcb19014a3011ead3702ed  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
  92a7b20905f10a638105d2bc017d1154  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
  488490c53b1c32e73c94c049532009cd  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
! 53556e7d3b5847e2dcceb87d0381b82b  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
  f2bb9766f85b88e1e3ac2202922a44cf  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
  bc15b5a1b2cec6c204eb269f66b418ce  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
  9cc4cc77890fb416088ef1c01d5e6962  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
! 51bc307c579196423f69ecd0e8bad3e9  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
  198f1c7d481d70206119c45407ef9e2e  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
  a6bcd482522b01638cc225a42ba90f24  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
  08a3bd501d27e1b855828b6e52f9cd1b  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
! dc82c35673d5f5ce911d44f016cd6914  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
  af4dadd050d97629e98aa4bc19e0d940  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
  4b2d859c8f5c25f4dd1f65495ee7dc9a  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
  60de0983a880dfe14f5f3b6d8b36642e  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
! 2f2702d37ce7a723bc15184d244152a0  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
  86ab73f3d1e456ed8315ba89c5e326ab  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
  2b652b796dde56108c6abc20b0b9a304  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
  5746a0749df4f950a30e76c0d78e5c23  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! aa649205d1c23e8321bccf2f33aefd18  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
  b5152c30c9293d7bb73bce5ff903960f  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
  2e38a671e08330209c8b044dde513e97  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
  51586062b3eeaebd7af37c198695dc60  libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc
  3c7f388dbe79cd24ee97ea182e2805e7  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
! 27d951326dd57241dcb70641cb276545  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
  3ff8b074b972818e2d04bafb624164e5  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
  549c4066a0ff68ebcf63b59918394810  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
  1c60310d46c7a1010cf65ad821856afe  libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc
  3d98d83f815403cd503a34c186cdbd9d  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
! 2f2f00d3d1ec3ab6c5a63dc8d639f2bd  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
  2a6ec898e1d8bb772ad5fd73585e58ab  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
  a53d826325006320da29a1fb44638640  libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
  606cb587cd2747ccec156b76a7a529b6  libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
! 34aeab3b3f1da6e9d82f3fbf11104b49  libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
  e00f99e68cd521e183837b04810c0ae4  libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
  1718a3b472a3939850ad65d29faa6e60  libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
  109207d01e2c45de9699c967bc417564  libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
! 29d9f6bdc13cc888ad890fe3d6deac35  libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
  f6bc661b70f618a5b89394b21ef6d609  libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
  716861be5d927aed4641bb40f655aef4  libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
  1d86d7514fa1b2355749601498036df7  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
! b73f46cf811142b887a6faef6fa37e78  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
  3b60d687fdb0acf261238b6c0f04a2d9  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
  e2192a6ade4c08120fc75105a09a93ab  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
  24897a909fa8847bcfd2cce725a0fb4e  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
! 4be8032263a0db77478ae613e9081d63  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
  43a814be9ca8b5016dc4bcb4f2e295d4  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
  39a5cf9c73429332cc8def52b3eb3f94  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
  fa55bac54c4daf01580dde4c9f6a6879  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
! 786d0466976caa0a87a6f61b537adff4  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
  400a294aff4d967433011b1509c22265  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
  e3932c9e04e30e174f8e2c7d4be03725  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
! 0ffb99ab9883d11e442704649794b83c  libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc
  14e684e51bbd97f3a488bb3c1e03e971  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
! c1429e074980034935d769a00f9c462d  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
  9d291c36bb67bdcbc01ec09b692ee3a6  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
  fbb9cb6aa1afed0d56fc6427306fa22e  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
  462c353e4232e973ac6947e6356f9296  libstdc++-v3/testsuite/std/concepts/1.cc
*************** cce32ddc9f763f73b9ecdd456f62dad8  libstd
*** 148800,148810 ****
  d52aff2e6dfd886a32da7955635ed09e  libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
  0ae0aa3194832d790df652a9ef7d17c7  libstdc++-v3/testsuite/std/format/arguments/lwg3810.cc
  088e48d84af728cffa21af00b37e3c04  libstdc++-v3/testsuite/std/format/context.cc
! ac6943ffc556ba9453e858169233ff57  libstdc++-v3/testsuite/std/format/debug.cc
  4e1e1bd1eb1b2db2e9f55215527ebcd0  libstdc++-v3/testsuite/std/format/debug_nonunicode.cc
  3f84148bfc5153a2278f3c8c413dad98  libstdc++-v3/testsuite/std/format/error.cc
  6425de3f85b700ce40dd3b11d934ee43  libstdc++-v3/testsuite/std/format/format_string.cc
  6fa5a2c92632d72f763333e89659d4a5  libstdc++-v3/testsuite/std/format/formatter/112832.cc
  6dfab89727d04a1035aba73afcf4d6a8  libstdc++-v3/testsuite/std/format/formatter/basic.cc
  ded8934ce957f586a60f8704fba49c77  libstdc++-v3/testsuite/std/format/formatter/concept.cc
  43cc21b94d247227b33bbccce8e28b07  libstdc++-v3/testsuite/std/format/formatter/ext_float.cc
--- 148885,148896 ----
  d52aff2e6dfd886a32da7955635ed09e  libstdc++-v3/testsuite/std/format/arguments/args_neg.cc
  0ae0aa3194832d790df652a9ef7d17c7  libstdc++-v3/testsuite/std/format/arguments/lwg3810.cc
  088e48d84af728cffa21af00b37e3c04  libstdc++-v3/testsuite/std/format/context.cc
! 8f6b20493386ac083a968add9dea93ac  libstdc++-v3/testsuite/std/format/debug.cc
  4e1e1bd1eb1b2db2e9f55215527ebcd0  libstdc++-v3/testsuite/std/format/debug_nonunicode.cc
  3f84148bfc5153a2278f3c8c413dad98  libstdc++-v3/testsuite/std/format/error.cc
  6425de3f85b700ce40dd3b11d934ee43  libstdc++-v3/testsuite/std/format/format_string.cc
  6fa5a2c92632d72f763333e89659d4a5  libstdc++-v3/testsuite/std/format/formatter/112832.cc
+ 45280a2212e6fb520cb8b7465d640540  libstdc++-v3/testsuite/std/format/formatter/120625.cc
  6dfab89727d04a1035aba73afcf4d6a8  libstdc++-v3/testsuite/std/format/formatter/basic.cc
  ded8934ce957f586a60f8704fba49c77  libstdc++-v3/testsuite/std/format/formatter/concept.cc
  43cc21b94d247227b33bbccce8e28b07  libstdc++-v3/testsuite/std/format/formatter/ext_float.cc
*************** f859e29ec6cd7017c9d0abc60ed4b8ce  libstd
*** 148819,148836 ****
  fc7c0a7a8dd0259caaa437eac20a9eca  libstdc++-v3/testsuite/std/format/functions/vformat_to.cc
  341fd71f544307f85453dfa5d899e9df  libstdc++-v3/testsuite/std/format/parse_ctx.cc
  98a750919025b1a6b7cbab28d1aba84a  libstdc++-v3/testsuite/std/format/parse_ctx_neg.cc
! 00ee268f5a1f913167de4aeea261dd30  libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
  857552c77c29e3b58e4847f84fc27778  libstdc++-v3/testsuite/std/format/ranges/feature_test.cc
  23c2d31669b319d0063a28d6dd8353cc  libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
  3eb8e2fa183f344414482633d44531bb  libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
! 6cb5d9fc875882db914c7abe02a8f948  libstdc++-v3/testsuite/std/format/ranges/formatter.cc
! ff3750d4f039ac257a2c2ab19f6cf79b  libstdc++-v3/testsuite/std/format/ranges/map.cc
! e45555ead95d55c0d93f49cd0bd71984  libstdc++-v3/testsuite/std/format/ranges/sequence.cc
! 8a7f37b7e996b74eb9e378ed8f945b04  libstdc++-v3/testsuite/std/format/ranges/string.cc
  22af3c8593871c64b40b11663417f80a  libstdc++-v3/testsuite/std/format/runtime_format.cc
  c400d0d58ad702f461b28668dc629c09  libstdc++-v3/testsuite/std/format/string.cc
  9818aa3a29f6312d9efbbdc1369fdc1f  libstdc++-v3/testsuite/std/format/string_neg.cc
! dc89beebf6f3de0a9e0df54272ec2939  libstdc++-v3/testsuite/std/format/tuple.cc
  1ee4f09d4811a5b094ebc85dd48142f9  libstdc++-v3/testsuite/std/memory/indirect/copy.cc
  2b0944a1839541995d0521288e45e718  libstdc++-v3/testsuite/std/memory/indirect/copy_alloc.cc
  b66acde099f00f183d242567d716ce77  libstdc++-v3/testsuite/std/memory/indirect/ctor.cc
--- 148905,148922 ----
  fc7c0a7a8dd0259caaa437eac20a9eca  libstdc++-v3/testsuite/std/format/functions/vformat_to.cc
  341fd71f544307f85453dfa5d899e9df  libstdc++-v3/testsuite/std/format/parse_ctx.cc
  98a750919025b1a6b7cbab28d1aba84a  libstdc++-v3/testsuite/std/format/parse_ctx_neg.cc
! b6b9f91be9026a6afba65550474a2713  libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
  857552c77c29e3b58e4847f84fc27778  libstdc++-v3/testsuite/std/format/ranges/feature_test.cc
  23c2d31669b319d0063a28d6dd8353cc  libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
  3eb8e2fa183f344414482633d44531bb  libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
! 03112d1161b5082cba6a89766445432d  libstdc++-v3/testsuite/std/format/ranges/formatter.cc
! d9708c521b612f15f943a911427b169b  libstdc++-v3/testsuite/std/format/ranges/map.cc
! 559739840dd6ec076b05995aa37cfa74  libstdc++-v3/testsuite/std/format/ranges/sequence.cc
! fdca82ddd8e353e70075872cb27926c2  libstdc++-v3/testsuite/std/format/ranges/string.cc
  22af3c8593871c64b40b11663417f80a  libstdc++-v3/testsuite/std/format/runtime_format.cc
  c400d0d58ad702f461b28668dc629c09  libstdc++-v3/testsuite/std/format/string.cc
  9818aa3a29f6312d9efbbdc1369fdc1f  libstdc++-v3/testsuite/std/format/string_neg.cc
! a554040cee1e3b564ea9bf0188ddf8da  libstdc++-v3/testsuite/std/format/tuple.cc
  1ee4f09d4811a5b094ebc85dd48142f9  libstdc++-v3/testsuite/std/memory/indirect/copy.cc
  2b0944a1839541995d0521288e45e718  libstdc++-v3/testsuite/std/memory/indirect/copy_alloc.cc
  b66acde099f00f183d242567d716ce77  libstdc++-v3/testsuite/std/memory/indirect/ctor.cc
*************** ace05307666a5a3bcf5266016bd4c004  libstd
*** 148927,148933 ****
  44137aa80598ab34f7738bab92bbae34  libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
  75efd0b5a361beafcd03c1943efc9c04  libstdc++-v3/testsuite/std/ranges/iota/iterator.cc
  67598573f701e95d4d0df9108e8b7e0d  libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc
! 0e79934369836841f02d89d4d7a50e1f  libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
  a928432e3c8b4b4e0e289fb494385ff3  libstdc++-v3/testsuite/std/ranges/iota/size.cc
  24ebb927ae39382e06cc730b99241813  libstdc++-v3/testsuite/std/ranges/istream_view.cc
  c5aeada458be2e96d710b53a50ba6023  libstdc++-v3/testsuite/std/ranges/p2259.cc
--- 149013,149019 ----
  44137aa80598ab34f7738bab92bbae34  libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
  75efd0b5a361beafcd03c1943efc9c04  libstdc++-v3/testsuite/std/ranges/iota/iterator.cc
  67598573f701e95d4d0df9108e8b7e0d  libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc
! 752a25e77c8354ea6b0f24900beeed71  libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
  a928432e3c8b4b4e0e289fb494385ff3  libstdc++-v3/testsuite/std/ranges/iota/size.cc
  24ebb927ae39382e06cc730b99241813  libstdc++-v3/testsuite/std/ranges/istream_view.cc
  c5aeada458be2e96d710b53a50ba6023  libstdc++-v3/testsuite/std/ranges/p2259.cc
*************** a87e1152f6bc2804b93ce070a51eeb54  libstd
*** 148973,148986 ****
  61d414725d4c256089a1075c566c8b58  libstdc++-v3/testsuite/std/time/day/1.cc
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
  1cfa2f31c3dde7297b8ca55ba69d3f47  libstdc++-v3/testsuite/std/time/exceptions.cc
! 232121c736ea4ba023897e7763bae5f0  libstdc++-v3/testsuite/std/time/format/empty_spec.cc
  90714e66b9741259bb9b9cd2ea23288c  libstdc++-v3/testsuite/std/time/format/format.cc
  06b738d93b3d78681b0da48efd0a60bf  libstdc++-v3/testsuite/std/time/format/localized.cc
  9cd4d6791c125e40939cae77277f928d  libstdc++-v3/testsuite/std/time/format/pr117085.cc
! 419cdd8872b10325a937888fac85a489  libstdc++-v3/testsuite/std/time/format/pr117214.cc
  107c8c7bd6daa477dad84b5cfee3eacf  libstdc++-v3/testsuite/std/time/format/pr119517.cc
! 7151cef2bf017dd6ee0e0ee9830b8909  libstdc++-v3/testsuite/std/time/format/pr120114.cc
! 221e74ad2b0f227283788794cb55e1f8  libstdc++-v3/testsuite/std/time/format/pr120481.cc
  2be47743c9d490923037b020cfc220b7  libstdc++-v3/testsuite/std/time/freestanding.cc
  e1b4a0af956607fcdfe6d75e391ae49c  libstdc++-v3/testsuite/std/time/hh_mm_ss/1.cc
  4ba93d13314c788e419728411ae7229d  libstdc++-v3/testsuite/std/time/hh_mm_ss/109772.cc
--- 149059,149074 ----
  61d414725d4c256089a1075c566c8b58  libstdc++-v3/testsuite/std/time/day/1.cc
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
  1cfa2f31c3dde7297b8ca55ba69d3f47  libstdc++-v3/testsuite/std/time/exceptions.cc
! b839172ef2937439d7712c266d633e0b  libstdc++-v3/testsuite/std/time/format/empty_spec.cc
  90714e66b9741259bb9b9cd2ea23288c  libstdc++-v3/testsuite/std/time/format/format.cc
  06b738d93b3d78681b0da48efd0a60bf  libstdc++-v3/testsuite/std/time/format/localized.cc
  9cd4d6791c125e40939cae77277f928d  libstdc++-v3/testsuite/std/time/format/pr117085.cc
! 11836aec53351222d0be5ee9402f3069  libstdc++-v3/testsuite/std/time/format/pr117214.cc
  107c8c7bd6daa477dad84b5cfee3eacf  libstdc++-v3/testsuite/std/time/format/pr119517.cc
! 99dced26d110a5aeb88482eb2d9e7961  libstdc++-v3/testsuite/std/time/format/pr120114.cc
! f496430452bd60cbce2feef18bc17a51  libstdc++-v3/testsuite/std/time/format/pr120481.cc
! d648ddf7be7edcdba01c3293195d5a8a  libstdc++-v3/testsuite/std/time/format/precision.cc
! ac8733e3ca2758248129cb382c496ee0  libstdc++-v3/testsuite/std/time/format/whitespace.cc
  2be47743c9d490923037b020cfc220b7  libstdc++-v3/testsuite/std/time/freestanding.cc
  e1b4a0af956607fcdfe6d75e391ae49c  libstdc++-v3/testsuite/std/time/hh_mm_ss/1.cc
  4ba93d13314c788e419728411ae7229d  libstdc++-v3/testsuite/std/time/hh_mm_ss/109772.cc
*************** f3776d41209fee3bd4b919d5a4e8fe88  libstd
*** 149357,149462 ****
  98264698423c670927f5402c0d8d5c77  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/constants.cc
  fc61d41ec82fba5ffa348863796b0046  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/typedefs.cc
  9f616098fbe5fcaa6cb28df368d1441d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc
! bd5f5e508a5cee9f21114f6eea78026b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc
  4eeba283c8a2a17dba96e7640bc4bb0a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile.cc
  360089bb266f081392b7a3136fedfa13  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile_2.cc
  e4e937776b6ce164119ccc3b8cc7001f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_nan.cc
! f0f3b09ba8da69796c62ff9ef60b8d77  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc
  27dddcf822912380b8498fe8639f6ec1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile.cc
  e71d15a2c931e6c0117dfa17b0b526d1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile_2.cc
! 419ce7602fa44b9877a43efcd7c0be2e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc
  014d9a168a68ba29c3ffd5400fa6ab6a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_nan.cc
! d3e80dfb3a06aea47f046b01705c4086  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc
  ee3a1b439ad2a069617fa9eda5a76e6a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile.cc
  44f6f92fb35ccbbb7d994cf826f4ba53  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile_2.cc
  f02000bd385f8d387eac8e27dc3ebc52  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_nan.cc
! 3fdd9ce56caf1cb09152a713312b30e1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc
  7cd92df40936823bf19d2db6b14ea1b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile.cc
  ab17bb6fe2abbdae7dce5184cd3016da  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile_2.cc
  784e42a974476c445bc48ce4982eac2d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_nan.cc
! 5663eaeec68d7b88c271c594fca09463  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc
  020684c065ef848fe2579821cc34bd1f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
  5f92097abbf7c25a38b2df783dbf6c59  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
  bb00fb24b57c246e36fc1252c77b432e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! d567fb40fd3a12a1d7d9a57144122a67  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
  ec1ac7bb9dac1b5e07c5fea0914aa042  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
  40a3fded46cd556c31b1ff12cb496935  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc
  4618aff82312f2efbcdba760637d68b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc
  f3f6e765aee4e9745d109aad6fabbb27  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
! 3b3c3ab9d4a6e6399d644eb703079a00  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
  0e182482e62176361acda8363587b7f5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
  a32d9f279188f9b6df2163db0d9abf06  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_2.cc
  c02835f8ad29ff08748d84dba93b8b08  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_cxx17.cc
  779880a6ca23ab481027acc02e212551  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_nan.cc
! c567d62abc8f9012db2cb4d8b9575209  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
  389626228945247d27f9bbe1849e06ed  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile.cc
  0c567a6aa257c0402fbef0182fde866b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile_2.cc
  682a3bef175970f9c3de5d77aa9e0ff6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
  d42ad08a4164074acda288bfc737968c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_nan.cc
! 7a81c910c1c5f388395f1bcefb3b83d9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
  7c01ba243a7624a29ef39fdba0b8be99  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile.cc
  c9bbbdf2d75589425554dd4668e5ba41  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile_2.cc
  94f01bde9c056d42e3aced764ce54982  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/airy.cc
  6ad40f993f600d66b508c5ebfedee8f9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_nan.cc
! e2f9a0bedbaf79d4d5eb73d1f2d76747  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
  58d85b6d07a8257b52dc8ff20937c63a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile.cc
  1fa502f5b8899b7706de023922b0bb2f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile_2.cc
  f128f18741c212df51320d2e9e925dcc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_nan.cc
! 82843850b2564321db0cd52b70d6a1c4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
  c158f5b462ec44a970cbe649b1dcf4e6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile.cc
  b78c1156c932cf131cbc8b6938978c75  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile_2.cc
  7bd86b3f1e046d7c848e5f5c980f6ff7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_nan.cc
! 1aad96c981f21d218040b265945a0937  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc
  833766834e2ab16931477aa44fa58ed5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile.cc
  e7edf8e982c1b923ce6a14b97897cb1b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile_2.cc
  0152ebc42f7675b95871678ff347cfed  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_nan.cc
! 7cd501a3b6753896fa39fcfae98e6707  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc
  5e96f7d51459dfd097b8af6c1401cd89  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
  402913df1bb220fc5191f6e15c28013e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
  ba40da57157187b813da60f7fe42220c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! 92cec458e9bf94b76c4ca85ed182d8b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
  635ca88963641bb1d3bbaff9656661a1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
  7f07a236c2fb3f08781c90dad1849e09  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc
  b780a349356e83ff98346ea066a7c8c7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc
  16fa984c3e3f61424d8e02b36aad0097  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
! 4caa2989f36f3b5e060d6e8c2dcaa64c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
  4e9053fe4b543b774caa7b32d6e0e88b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
  4395d8ec04ee817ea70a178640232467  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
  e44ee37a4df22a226aaeb7bac4069b46  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
  6a7e48963e97dffa64c5763435ec93b0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc
  415f72364c761835916198b66f583068  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
! ffc7c7a64e9d09e751fb73f115e1273c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
  34e229fd8fa88447c37fa08fbefac008  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
  fa4f5dc652b011ac8362bdeb3dd0bb76  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile_2.cc
  cddb9ec64f3881f450720cc89b032658  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_nan.cc
! 08e05154b450546a09815b2897c57b0f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
  e3c56a189b7c4c56b6d4ddb68f8a9fb4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile.cc
  cd8da7240d5ff13ffc7c6bf6803ab84c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_2.cc
  9ea123e03b709726def29bf436b46eda  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_cxx17.cc
  b5ee34d907a9193fa6fae45ef1d493dc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_nan.cc
! 4a71c9665b11df08760a020c5fa0c1c0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc
  f37fefd2e7437e90bb1b8ea5ee2cf701  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile.cc
  73b5f3878fcb700477d633be0c3d2d1b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile_2.cc
  f56905b221dfaa6a1620296e42798b56  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_nan.cc
! 8677530283e9f568a5a75085e142dae7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc
  08567b281094ffd8d3510c08435db8ec  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile.cc
  22f87116a7f0d5c320b8d939be684247  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile_2.cc
  01961307971b1363dfd58ed431e6b3fc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_nan.cc
! 3c61bebe45202052b1e2c6961a393e81  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc
  b41cb8dc0d8ba68bc59212e1f7299a43  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_pos.cc
  c32764df0cccac45fdba40b11349bd90  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile.cc
  5c9f0f60253aafc9f1b92d2c4c3e6e8f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile_2.cc
  acf6a436760da2cc78acb244ba3ffcc4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_nan.cc
! afc5c6cb0c6a0cd67b25fdee1ac316bd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
  eded7d635c1d6cb21cf67bbe9329a76f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile.cc
  07ee7063fcbb85220f479aa03c18fefa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile_2.cc
  455510f43d6bef6937192dc65addcd83  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_nan.cc
! 2998c8f0517c1dc9d427fb9ac802e71a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc
  d09874cab449b8706d58e8131ed7416d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile.cc
  ee8b1d5be39af661a2d5e4162119366d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile_2.cc
! ae04fb7d1aad2847fec8c052c810ce08  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc
  ee8595eb2e31d94778047c6d9d959b8b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_nan.cc
! efee4be1a6c88b9a10b68bd6e259126c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
  2ff7a9a07a69694dda8157199da29f44  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile.cc
  7ce4983b75ba5db9eac286c610c1bfe7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile_2.cc
  3f985ed9b6ca49e01d9635b77c8b42c9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/testcase.h
--- 149445,149550 ----
  98264698423c670927f5402c0d8d5c77  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/constants.cc
  fc61d41ec82fba5ffa348863796b0046  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/typedefs.cc
  9f616098fbe5fcaa6cb28df368d1441d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc
! e9b25c1549f0b4fccdaf242744e623aa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc
  4eeba283c8a2a17dba96e7640bc4bb0a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile.cc
  360089bb266f081392b7a3136fedfa13  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile_2.cc
  e4e937776b6ce164119ccc3b8cc7001f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_nan.cc
! 718cad8266d024c14f9d087e3282ad8e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc
  27dddcf822912380b8498fe8639f6ec1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile.cc
  e71d15a2c931e6c0117dfa17b0b526d1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile_2.cc
! 587c3ec4dd46afc325f86aee261c4fad  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc
  014d9a168a68ba29c3ffd5400fa6ab6a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_nan.cc
! b5c6af771714d0a01efcde04b6919467  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc
  ee3a1b439ad2a069617fa9eda5a76e6a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile.cc
  44f6f92fb35ccbbb7d994cf826f4ba53  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile_2.cc
  f02000bd385f8d387eac8e27dc3ebc52  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_nan.cc
! f568a965bd242c1834f44310207033fe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc
  7cd92df40936823bf19d2db6b14ea1b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile.cc
  ab17bb6fe2abbdae7dce5184cd3016da  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile_2.cc
  784e42a974476c445bc48ce4982eac2d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_nan.cc
! 3b75e81aabf2e14b08eed0c4fa1c07d6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc
  020684c065ef848fe2579821cc34bd1f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
  5f92097abbf7c25a38b2df783dbf6c59  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
  bb00fb24b57c246e36fc1252c77b432e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! 665fdbd388e8b1f9db008025b77e9db2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
  ec1ac7bb9dac1b5e07c5fea0914aa042  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
  40a3fded46cd556c31b1ff12cb496935  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc
  4618aff82312f2efbcdba760637d68b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc
  f3f6e765aee4e9745d109aad6fabbb27  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
! 7547c957d58c3345cafbf1182cc5c6f3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
  0e182482e62176361acda8363587b7f5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
  a32d9f279188f9b6df2163db0d9abf06  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_2.cc
  c02835f8ad29ff08748d84dba93b8b08  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_cxx17.cc
  779880a6ca23ab481027acc02e212551  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_nan.cc
! 9b86051ec2d575bf32169dd9f47538a7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
  389626228945247d27f9bbe1849e06ed  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile.cc
  0c567a6aa257c0402fbef0182fde866b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile_2.cc
  682a3bef175970f9c3de5d77aa9e0ff6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
  d42ad08a4164074acda288bfc737968c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_nan.cc
! 803c55d5bbe3a34076bd6162dbab2919  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
  7c01ba243a7624a29ef39fdba0b8be99  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile.cc
  c9bbbdf2d75589425554dd4668e5ba41  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile_2.cc
  94f01bde9c056d42e3aced764ce54982  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/airy.cc
  6ad40f993f600d66b508c5ebfedee8f9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_nan.cc
! c4428e7335f5b935804c8316749f27fe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
  58d85b6d07a8257b52dc8ff20937c63a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile.cc
  1fa502f5b8899b7706de023922b0bb2f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile_2.cc
  f128f18741c212df51320d2e9e925dcc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_nan.cc
! 560c2b2e530f444d56f573594eaa1ccb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
  c158f5b462ec44a970cbe649b1dcf4e6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile.cc
  b78c1156c932cf131cbc8b6938978c75  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile_2.cc
  7bd86b3f1e046d7c848e5f5c980f6ff7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_nan.cc
! 135daa1d79bbdaf4eec9a87ca3d9c62b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc
  833766834e2ab16931477aa44fa58ed5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile.cc
  e7edf8e982c1b923ce6a14b97897cb1b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile_2.cc
  0152ebc42f7675b95871678ff347cfed  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_nan.cc
! beffe82e91b1d22a5b5be819c53898e1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc
  5e96f7d51459dfd097b8af6c1401cd89  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
  402913df1bb220fc5191f6e15c28013e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
  ba40da57157187b813da60f7fe42220c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! b1fbace8c329ea366b682b0408ea9100  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
  635ca88963641bb1d3bbaff9656661a1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
  7f07a236c2fb3f08781c90dad1849e09  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc
  b780a349356e83ff98346ea066a7c8c7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc
  16fa984c3e3f61424d8e02b36aad0097  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
! a0f3a8e69ed24cd577cc644c3da412e4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
  4e9053fe4b543b774caa7b32d6e0e88b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
  4395d8ec04ee817ea70a178640232467  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
  e44ee37a4df22a226aaeb7bac4069b46  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
  6a7e48963e97dffa64c5763435ec93b0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc
  415f72364c761835916198b66f583068  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
! 832050fec59001f386e6ebde42f093dd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
  34e229fd8fa88447c37fa08fbefac008  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
  fa4f5dc652b011ac8362bdeb3dd0bb76  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile_2.cc
  cddb9ec64f3881f450720cc89b032658  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_nan.cc
! 3ba3855ff1cf3fe53bb710ba9dd48eaa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
  e3c56a189b7c4c56b6d4ddb68f8a9fb4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile.cc
  cd8da7240d5ff13ffc7c6bf6803ab84c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_2.cc
  9ea123e03b709726def29bf436b46eda  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_cxx17.cc
  b5ee34d907a9193fa6fae45ef1d493dc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_nan.cc
! 8c282f7b13a3efe4f09615307c2457d9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc
  f37fefd2e7437e90bb1b8ea5ee2cf701  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile.cc
  73b5f3878fcb700477d633be0c3d2d1b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile_2.cc
  f56905b221dfaa6a1620296e42798b56  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_nan.cc
! ffae63569331d7346b29ec7dcbe531bd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc
  08567b281094ffd8d3510c08435db8ec  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile.cc
  22f87116a7f0d5c320b8d939be684247  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile_2.cc
  01961307971b1363dfd58ed431e6b3fc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_nan.cc
! 1425f27e3259a82694828b3698a673ae  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc
  b41cb8dc0d8ba68bc59212e1f7299a43  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_pos.cc
  c32764df0cccac45fdba40b11349bd90  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile.cc
  5c9f0f60253aafc9f1b92d2c4c3e6e8f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile_2.cc
  acf6a436760da2cc78acb244ba3ffcc4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_nan.cc
! da0f0a15ba2b7ec880681fe99a685a93  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
  eded7d635c1d6cb21cf67bbe9329a76f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile.cc
  07ee7063fcbb85220f479aa03c18fefa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile_2.cc
  455510f43d6bef6937192dc65addcd83  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_nan.cc
! d17acf746a584d525f8dfc16a543adbb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc
  d09874cab449b8706d58e8131ed7416d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile.cc
  ee8b1d5be39af661a2d5e4162119366d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile_2.cc
! b49a937e8a436eba792441042b1dbf67  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc
  ee8595eb2e31d94778047c6d9d959b8b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_nan.cc
! fc89c0237a4642f0931fdf5a89caf397  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
  2ff7a9a07a69694dda8157199da29f44  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile.cc
  7ce4983b75ba5db9eac286c610c1bfe7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile_2.cc
  3f985ed9b6ca49e01d9635b77c8b42c9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/testcase.h
diff -Nrcpad gcc-16-20250608/configure gcc-16-20250615/configure
*** gcc-16-20250608/configure	Sun Jun  8 22:33:05 2025
--- gcc-16-20250615/configure	Sun Jun 15 22:32:22 2025
*************** case "${target}" in
*** 3397,3402 ****
--- 3397,3406 ----
  esac
  
  cpu_type=`echo ${host} | sed 's/-.*$//'`
+ # Special case cpu_type for x86_64 as it shares AUTO_PROFILE from i386.
+ if test "${cpu_type}" = "x86_64" ; then
+   cpu_type="i386"
+ fi
  
  
  # Disable libssp for some systems.
diff -Nrcpad gcc-16-20250608/configure.ac gcc-16-20250615/configure.ac
*** gcc-16-20250608/configure.ac	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/configure.ac	Sun Jun 15 22:32:22 2025
*************** case "${target}" in
*** 622,627 ****
--- 622,631 ----
  esac
  
  cpu_type=`echo ${host} | sed 's/-.*$//'`
+ # Special case cpu_type for x86_64 as it shares AUTO_PROFILE from i386.
+ if test "${cpu_type}" = "x86_64" ; then
+   cpu_type="i386"
+ fi
  AC_SUBST(cpu_type)
  
  # Disable libssp for some systems.
diff -Nrcpad gcc-16-20250608/gcc/ChangeLog gcc-16-20250615/gcc/ChangeLog
*** gcc-16-20250608/gcc/ChangeLog	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ChangeLog	Sun Jun 15 22:32:22 2025
***************
*** 1,3 ****
--- 1,613 ----
+ 2025-06-14  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-06-14  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR rtl-optimization/120423
+ 	PR rtl-optimization/116389
+ 	* config/avr/avr.md [-mno-lra]: Add pre-reload split to transform
+ 	(left shift of) a paradoxical subreg to a (left shift of) zero-extend.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120629
+ 	* cfgexpand.cc (expand_split_edge): New function.
+ 	(expand_gimple_cond, construct_init_block): Use it.
+ 
+ 2025-06-13  Spencer Abson  <spencer.abson@arm.com>
+ 
+ 	PR target/118150
+ 	* config/aarch64/aarch64-sve.md (*one_cmpl<mode>3_cc): New
+ 	combiner pattern.
+ 	(*one_cmpl<mode>3_ptest): Likewise.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120629
+ 	* cfgexpand.cc (construct_init_block): If first_block isn't BB_RTL,
+ 	has any PHI nodes and false_edge->dest_idx before redirection is
+ 	different from make_single_succ_edge result's dest_idx, swap the
+ 	latter with the former last pred edge and their dest_idx members.
+ 
+ 2025-06-13  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* gcc.cc (driver::set_up_specs): Use gcc_exec_prefix to
+ 	read the spec file rather than standard_exec_prefix.
+ 
+ 2025-06-13  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/120589
+ 	* config/mcore/mcore.cc (mcore_mark_dllimport): Don't use
+ 	gen_rtx_MEM.
+ 
+ 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/120638
+ 	* tree-ssa-math-opts.cc (pass_cse_reciprocals::execute): Call
+ 	reset_flow_sensitive_info on arg1.
+ 
+ 2025-06-12  Stafford Horne  <shorne@gmail.com>
+ 
+ 	PR target/120587
+ 	* config/or1k/or1k.cc (or1k_can_change_mode_class): Allow
+ 	changing flags mode from BI to SI to allow for paradoxical
+ 	subregs.
+ 
+ 2025-06-12  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/120604
+ 	* config/i386/i386-expand.cc (ix86_expand_int_movcc): Make sure
+ 	we can represent the difference between two 64-bit DImode
+ 	immediate values in 64-bit HOST_WIDE_INT.
+ 
+ 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120629
+ 	* cfgexpand.cc (expand_gimple_cond): If dest bb isn't BB_RTL,
+ 	has any PHI nodes and false_edge->dest_idx before redirection is
+ 	different from make_single_succ_edge result's dest_idx, swap the
+ 	latter with the former last pred edge and their dest_idx members.
+ 
+ 2025-06-12  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/riscv-v.cc (expand_vx_binary_vec_dup_vec): Add new
+ 	case SMAX.
+ 	(expand_vx_binary_vec_vec_dup): Ditto.
+ 	* config/riscv/riscv.cc (riscv_rtx_costs): Ditto.
+ 	* config/riscv/vector-iterators.md: Add new op smax.
+ 
+ 2025-06-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/120624
+ 	* config/aarch64/aarch64.md (SME_STATE_REGNUM): Expand on comments.
+ 	* config/aarch64/aarch64-sme.md (aarch64_restore_za): Also set
+ 	SME_STATE_REGNUM
+ 
+ 2025-06-12  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* cgraph.cc (cgraph_node::record_function_versions): Refactor and
+ 	rename to...
+ 	(cgraph_node::add_function_version): new function.
+ 	* cgraph.h (cgraph_node::record_function_versions): Refactor and
+ 	rename to...
+ 	(cgraph_node::add_function_version): new function.
+ 	* config/aarch64/aarch64.cc (aarch64_get_function_versions_dispatcher):
+ 	Remove reordering.
+ 	* config/i386/i386-features.cc (ix86_get_function_versions_dispatcher):
+ 	Remove reordering.
+ 	* config/riscv/riscv.cc (riscv_get_function_versions_dispatcher):
+ 	Remove reordering.
+ 	* config/rs6000/rs6000.cc (rs6000_get_function_versions_dispatcher):
+ 	Remove reordering.
+ 
+ 2025-06-12  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* attribs.cc (is_function_default_version): Add target_version logic.
+ 
+ 2025-06-12  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	* config/i386/x86-tune-sched.cc (ix86_issue_rate): Set 4 for SRF,
+ 	6 for GRR, GNR, CWF, DMR, ARL, PTL.
+ 
+ 2025-06-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/116792
+ 	* diagnostic-format-html.cc: Include "selftest-xml.h".
+ 	(html_builder::make_element_for_diagnostic): Move...
+ 	(class html_token_printer): ...from local to the function
+ 	to the global namespace.
+ 	(struct selftest::token_printer_test): New.
+ 	(selftest::test_token_printer): New.
+ 	(selftest::test_simple_log): Simplify using ASSERT_XML_PRINT_EQ.
+ 	(selftest::test_metadata): Likewise.
+ 	(selftest::diagnostic_format_html_cc_tests): Run the new test.
+ 	* selftest-xml.h: New file.
+ 	* xml.cc: Include "selftest-xml.h".
+ 	(selftest::assert_xml_print_eq): New.
+ 	(selftest::test_no_dtd): Simplify using ASSERT_XML_PRINT_EQ.
+ 	(selftest::test_printer): Likewise.
+ 	(selftest::test_attribute_ordering): Likewise.
+ 
+ 2025-06-11  Edwin Lu  <ewlu@rivosinc.com>
+ 
+ 	* config/riscv/riscv.cc (struct riscv_tune_param): Add tune
+ 	param.
+ 	(riscv_sched_can_speculate_insn): Implement.
+ 	(TARGET_SCHED_CAN_SPECULATE_INSN): Ditto.
+ 
+ 2025-06-11  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/120604
+ 	* config/i386/i386-expand.cc (ix86_expand_int_movcc): Cast operands of
+ 	signed 64-bit HOST_WIDE_INT subtractions to (unsigned HOST_WIDE_INT).
+ 
+ 2025-06-11  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	PR target/119100
+ 	* config/riscv/autovec-opt.md (*<optab>_vf_<mode>): Only handle vfmadd
+ 	and vfmsub.
+ 	(*vfnmsub_<mode>): New pattern.
+ 	(*vfnmadd_<mode>): New pattern.
+ 	* config/riscv/riscv.cc (get_vector_binary_rtx_cost): Add cost model for
+ 	NEG and VEC_DUPLICATE.
+ 
+ 2025-06-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120434
+ 	* gimple-range-fold.cc: Include rtl.h.
+ 	(fold_using_range::range_of_range_op): Handle bb ending with
+ 	GIMPLE_COND during RTL expansion where there is only one succ
+ 	edge instead of two.
+ 
+ 2025-06-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* internal-fn.cc (expand_POPCOUNT): Use
+ 	expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE) instead of
+ 	expand_normal (lhs).
+ 
+ 2025-06-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/116792
+ 	* diagnostic-format-html.cc: Include "diagnostic-path.h" and
+ 	"diagnostic-client-data-hooks.h".
+ 	(html_builder::m_logical_loc_mgr): New field.
+ 	(html_builder::m_cur_nesting_levels): New field.
+ 	(html_builder::m_last_logical_location): New field.
+ 	(html_builder::m_last_location): New field.
+ 	(html_builder::m_last_expanded_location): New field.
+ 	(HTML_STYLE): Add "white-space: pre;" to .source and .annotation.
+ 	Add "gcc-quoted-text" CSS class.
+ 	(html_builder::html_builder): Initialize the new fields.  If CSS
+ 	is enabled, add CDN links to PatternFly 3 stylesheets.
+ 	(html_builder::add_stylesheet): New.
+ 	(html_builder::on_report_diagnostic): Add "alert" param to
+ 	make_element_for_diagnostic, setting it by default, but unsetting
+ 	it for nested diagnostics below the top level.  Use
+ 	add_at_nesting_level for nested diagnostics.
+ 	(add_nesting_level_attr): New.
+ 	(html_builder::add_at_nesting_level): New.
+ 	(get_pf_class_for_alert_div): New.
+ 	(get_pf_class_for_alert_icon): New.
+ 	(get_label_for_logical_location_kind): New.
+ 	(add_labelled_value): New.
+ 	(html_builder::make_element_for_diagnostic): Add leading comment.
+ 	Add "alert" param.  Drop class="gcc-diagnostic" from <div> tag,
+ 	instead adding the class for a PatternFly 3 alert if "alert" is
+ 	true, and adding a <span> with an alert icon, both according to
+ 	the diagnostic severity.  Add a severity prefix to the message for
+ 	alerts.  Add any metadata/option text as suffixes to the message.
+ 	Show any logical location.  Show any physical location.  Don't
+ 	show the locus if the last location is unchanged within the
+ 	diagnostic_group.  Wrap any execution path element in a
+ 	<div id="execution-path"> and add a label to it.  Wrap any
+ 	generated patch in a <div id="suggested-fix"> and add a label
+ 	to it.
+ 	(selftest::test_simple_log): Update expected HTML.
+ 
+ 2025-06-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-path-output.cc: Use xml::printer::add_text_from_pp.
+ 	* diagnostic-show-locus.cc: Likewise.
+ 	* xml-printer.h (xml::printer::add_text_from_pp): New decl.
+ 	* xml.cc (xml::node_with_children::add_text_from_pp): New.
+ 	(xml::printer::add_text_from_pp): New.
+ 	* xml.h (xml::node_with_children::add_text_from_pp): New decl.
+ 
+ 2025-06-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/120610
+ 	* diagnostic-format-html.cc (html_builder::html_builder): Update
+ 	for new param of xml::printer::pop_tag.
+ 	(html_path_label_writer::end_label): Likewise.
+ 	(html_builder::make_element_for_diagnostic::html_token_printer):
+ 	Give the instance its own xml::printer.  Update for new param of
+ 	xml::printer::pop_tag.
+ 	(html_builder::make_element_for_diagnostic): Give the instance its
+ 	own xml::printer.
+ 	(html_builder::make_metadata_element): Update for new param of
+ 	xml::printer::pop_tag.
+ 	(html_builder::flush_to_file): Likewise.
+ 	* diagnostic-path-output.cc (begin_html_stack_frame): Likewise.
+ 	(begin_html_stack_frame): Likewise.
+ 	(end_html_stack_frame): Likewise.
+ 	(print_path_summary_as_html): Likewise.
+ 	* diagnostic-show-locus.cc
+ 	(struct to_text::auto_check_tag_nesting): New.
+ 	(struct to_html:: auto_check_tag_nesting): New.
+ 	(to_text::pop_html_tag): Change param to const char *.
+ 	(to_html::pop_html_tag): Likewise; rename param to
+ 	"expected_name".
+ 	(default_diagnostic_start_span_fn<to_html>): Update for new param
+ 	of xml::printer::pop_tag.
+ 	(layout_printer<to_html>::end_label): Likewise.
+ 	(layout_printer<Sink>::print_trailing_fixits): Add RAII sentinel
+ 	to check tag nesting for the HTML case.  Delete stray popping
+ 	of "td" in the presence of fix-it hints.
+ 	(layout_printer<Sink>::print_line): Add RAII sentinel
+ 	to check tag nesting for the HTML case.
+ 	(diagnostic_source_print_policy::print_as_html): Likewise.
+ 	(layout_printer<Sink>::print): Likewise.
+ 	* xml-printer.h (xml::printer::printer): Add optional
+ 	"check_popped_tags" param.
+ 	(xml::printer::pop_tag): Add "expected_name" param.
+ 	(xml::printer::get_num_open_tags): New accessor.
+ 	(xml::printer::dump): New decl.
+ 	(xml::printer::m_check_popped_tags): New field.
+ 	(class xml::auto_check_tag_nesting): New.
+ 	(class xml::auto_print_element): Update for new param of pop_tag.
+ 	* xml.cc: Move pragma pop so that the pragma also covers
+ 	xml::printer's member functions, "dump" in particular.
+ 	(xml::printer::printer): Add param "check_popped_tags".
+ 	(xml::printer::pop_tag): Add param "expected_name" and use it to assert
+ 	that the popped tag is as expected.  Assert that we have a tag to
+ 	pop.
+ 	(xml::printer::dump): New.
+ 	(selftest::test_printer): Update for new param of pop_tag.
+ 	(selftest::test_attribute_ordering): Likewise.
+ 
+ 2025-06-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* gimple-ssa-warn-access.cc
+ 	(pass_waccess::maybe_check_dealloc_call): Add missing
+ 	auto_diagnostic_group to nest the "returned from %qD"
+ 	note within the warning.
+ 
+ 2025-06-10  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.cc (cgraph_node::make_profile_local): New member function.
+ 	(cgraph_node::make_profile_global0): New member function.
+ 	(cgraph_node::apply_scale): Do not call adjust_for_ipa_scalling.
+ 	(cgraph_node::scale_profile_to): New member function.
+ 	* cgraph.h (cgraph_node::make_profile_local,
+ 	cgraph_node::make_profile_global0, cgraph_node::scale_profile_to):
+ 	Declare.
+ 	* ipa-cp.cc (lenient_count_portion_handling): Fix logic dropping count
+ 	to local.
+ 	(update_counts_for_self_gen_clones): Use scale_profile_to.
+ 	(update_profiling_info): Use make_profile_local, make_profile_global0
+ 	and scale_profile_to.
+ 	(update_specialized_profile): Likewise.
+ 	* ipa-inline-transform.cc (clone_inlined_nodes): Call
+ 	adjust_for_ipa_scalling.
+ 
+ 2025-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120434
+ 	* expr.cc (expand_expr_real_2) <CASE_CONVERT>: If get_range_pos_neg
+ 	at -O2 for scalar integer extension suggests the most significant
+ 	bit of op0 is not set, try both unsigned and signed conversion and
+ 	choose the cheaper one.  If both are the same cost, choose one
+ 	based on TYPE_UNSIGNED (TREE_TYPE (treeop0)).
+ 
+ 2025-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120434
+ 	* config/i386/i386.md (*bsr_rex64_2): Rename to ...
+ 	(*bsr_rex64<u>_2): ... this.  Use any_extend instead of sign_extend.
+ 	(*bsr_2): Rename to ...
+ 	(*bsr<u>_2): ... this.  Use any_extend instead of sign_extend.
+ 	(bsr splitters after those): Use any_extend instead of sign_extend.
+ 
+ 2025-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120434
+ 	* cfgrtl.h (update_bb_for_insn_chain): Declare.
+ 	* cfgrtl.cc (update_bb_for_insn_chain): No longer static.
+ 	* cfgexpand.h (expand_remove_edge): Declare.
+ 	* cfgexpand.cc: Include "gimple-range.h".
+ 	(head_end_for_bb): New variable.
+ 	(label_rtx_for_bb): Drop ATTRIBUTE_UNUSED from bb argument.
+ 	Use head_end_for_bb if possible for non-BB_RTL bbs.
+ 	(expand_remove_edge): New function.
+ 	(maybe_cleanup_end_of_block): Use it instead of remove_edge.
+ 	(expand_gimple_cond): Don't clear EDGE_TRUE_VALUE and
+ 	EDGE_FALSE_VALUE just yet.  Use head_end_for_bb elts instead
+ 	of BB_END and update_bb_for_insn_chain instead of update_bb_for_insn.
+ 	(expand_gimple_tailcall): Use expand_remove_edge instead of
+ 	remove_edge.  Use head_end_for_bb elts instead of BB_END and
+ 	update_bb_for_insn_chain instead of update_bb_for_insn.
+ 	(expand_gimple_basic_block): Don't change bb to BB_RTL here, instead
+ 	use head_end_for_bb elts instead of BB_HEAD and BB_END.  Use
+ 	update_bb_for_insn_chain instead of update_bb_for_insn.
+ 	(pass_expand::execute): Enable ranger before expand_gimple_basic_block
+ 	calls and create head_end_for_bb vector.  Disable ranger after
+ 	those calls, turn still non-BB_RTL blocks into BB_RTL and set their
+ 	BB_HEAD and BB_END from head_end_for_bb elts, and clear EDGE_TRUE_VALUE
+ 	and EDGE_FALSE_VALUE flags on edges.  Release head_end_for_bb
+ 	vector.
+ 	* tree-outof-ssa.cc (expand_phi_nodes): Don't clear phi nodes here.
+ 	* tree.h (get_range_pos_neg): Add gimple * argument defaulted to NULL.
+ 	* tree.cc (get_range_pos_neg): Add stmt argument.  Use
+ 	get_range_query (cfun) instead of get_global_range_query () and pass
+ 	stmt as third argument to range_of_expr.
+ 	* expr.cc (expand_expr_divmod): Pass currently_expanding_gimple_stmt
+ 	to get_range_pos_neg.
+ 	(expand_expr_real_1) <case SSA_NAME>: Change internal fn handling
+ 	to avoid temporarily overwriting gimple_call_lhs of ifn, instead
+ 	temporarily overwrite SSA_NAME_VAR of its lhs.
+ 	(maybe_optimize_pow2p_mod_cmp): Pass currently_expanding_gimple_stmt
+ 	to get_range_pos_neg.
+ 	(maybe_optimize_mod_cmp): Likewise.
+ 	* internal-fn.cc (get_min_precision): Likewise.  Use
+ 	get_range_query (cfun) instead of get_global_range_query () and pass
+ 	currently_expanding_gimple_stmt as third argument to range_of_expr.
+ 	Pass g to get_range_pos_neg.
+ 	(expand_addsub_overflow): Pass currently_expanding_gimple_stmt
+ 	to get_range_pos_neg.
+ 	(expand_mul_overflow): Likewise.
+ 	(expand_arith_overflow): Pass stmt to get_range_pos_neg.
+ 	* gimple-range-edge.cc: Include rtl.h.
+ 	(gimple_outgoing_range_stmt_p): Return NULL for BB_RTL bbs.
+ 	(gimple_outgoing_range::calc_switch_range): If default_edge is NULL,
+ 	assert currently_expanding_to_rtl and return before trying to
+ 	set range on that edge.
+ 	* builtins.cc (expand_builtin_strnlen): Use get_range_query (cfun)
+ 	instead of get_global_range_query () and pass
+ 	currently_expanding_gimple_stmt as third argument to range_of_expr.
+ 	(determine_block_size): Likewise.
+ 	* gimple-range.cc (gimple_ranger::range_on_exit): Set s to NULL
+ 	instead of last_nondebug_stmt for BB_RTL bbs.
+ 	* stmt.cc: Include cfgexpand.h.
+ 	(expand_case): Use expand_remove_edge instead of remove_edge.
+ 
+ 2025-06-10  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-range.cc (irange::set_range_from_bitmask): When the bitmask
+ 	result is a singleton, check if it is contained in the range.
+ 
+ 2025-06-10  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* config/gcn/gcn-devices.def: Add gfx942, gfx950 and gfx9-4-generic.
+ 	* config/gcn/gcn-opts.h (TARGET_CDNA3, TARGET_CDNA3_PLUS,
+ 	TARGET_GLC_NAME, TARGET_TARGET_SC_CACHE): Define.
+ 	(TARGET_ARCHITECTED_FLAT_SCRATCH): Use also for CDNA3.
+ 	* config/gcn/gcn.h (gcn_isa): Add ISA_CDNA3 to the enum.
+ 	* config/gcn/gcn.cc (print_operand): Update 'g' to use
+ 	TARGET_GLC_NAME; add 'G' to print TARGET_GLC_NAME unconditionally.
+ 	* config/gcn/gcn-valu.md (scatter, gather): Use TARGET_GLC_NAME.
+ 	* config/gcn/gcn.md: Use %G<num> instead of glc; use 'buffer_inv sc1'
+ 	for TARGET_TARGET_SC_CACHE.
+ 	* doc/invoke.texi (march): Add gfx942, gfx950 and gfx9-4-generic.
+ 	* doc/install.texi (amdgcn*-*-*): Add gfx942, gfx950 and gfx9-4-generic.
+ 	* config/gcn/gcn-tables.opt: Regenerate.
+ 
+ 2025-06-10  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv.md (lui-constraint<X:mode>and_to_or): Do not use
+ 	the RTL template for split code.  Emit it directly taking care to avoid
+ 	emitting a constant load that needed synthesis.  Fix formatting.
+ 
+ 2025-06-10  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* doc/riscv-ext.texi: Regen.
+ 
+ 2025-06-10  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/riscv-v.cc (expand_vx_binary_vec_vec_dup): Add new
+ 	case UMOD.
+ 	* config/riscv/riscv.cc (riscv_rtx_costs): Ditto.
+ 	* config/riscv/vector-iterators.md: Add new op umod.
+ 
+ 2025-06-09  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-format-sarif.cc (maybe_get_sarif_kind): Update for
+ 	conversion of enum logical_location_kind to enum class.
+ 	* diagnostic.cc (logical_location_manager::function_p): Likewise.
+ 	* libgdiagnostics.cc (html-output/missing-semicolon.py::get_kind):
+ 	Likewise.
+ 	* logical-location.h (enum logical_location_kind): Convert to...
+ 	(enum class logical_location_kind): ...this.
+ 	* selftest-logical-location.cc
+ 	(test_logical_location_manager::item_from_funcname): Update for
+ 	conversion of enum logical_location_kind to enum class.
+ 	* tree-logical-location.cc
+ 	(tree_logical_location_manager::get_kind): Likewise.
+ 
+ 2025-06-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* cgraph.cc (cgraph_node::apply_scale): New member function.
+ 	* cgraph.h (struct cgraph_node): declare.
+ 	* ipa-cp.cc (update_counts_for_self_gen_clones):
+ 	Use cgraph_node::apply_scale.
+ 	(update_profiling_info): Do not overwrite local
+ 	profile when dropping to 0 global profile.
+ 	(update_specialized_profile): Likewise.
+ 	* ipa-inline-transform.cc (update_noncloned_counts): Remove.
+ 	(can_remove_node_now_p_1): Fix formating.
+ 	(clone_inlined_nodes): Use cgraph_node::apply_scale.
+ 	* profile-count.cc (profile_count::dump): Do not ICE
+ 	when count is not compatible with entry block count.
+ 	* tree-cfg.cc (gimple_verify_flow_info): Check
+ 	compatibility of count and entry block count.
+ 
+ 2025-06-09  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/116792
+ 	* diagnostic-format-html.cc (html_builder::m_title_element): New
+ 	field.
+ 	(html_builder::html_builder): Initialize it.  Don't add
+ 	placeholder text.
+ 	(html_builder::set_main_input_filename): New.
+ 	(html_output_format::set_main_input_filename): New.
+ 	(test_html_diagnostic_context::test_html_diagnostic_context): Call
+ 	set_main_input_filename on the new sink.
+ 	(seldtest::test_simple_log): Update expected <title> text.
+ 	* diagnostic-format-json.cc (diagnostic_output_format_init_json):
+ 	Return a reference to the new sink.
+ 	(diagnostic_output_format_init_json_stderr): Likewise.
+ 	(diagnostic_output_format_init_json_file): Likewise.
+ 	* diagnostic-format-sarif.cc (sarif_builder::sarif_builder): Drop
+ 	"main_input_filename_" param, and move adding an artifact for it
+ 	with diagnostic_artifact_role::analysis_target to...
+ 	(sarif_builder::set_main_input_filename): ...this new function.
+ 	(sarif_output_format::set_main_input_filename): New.
+ 	(sarif_output_format::sarif_output_format): Drop
+ 	"main_input_filename_" param.
+ 	(sarif_stream_output_format::sarif_stream_output_format):
+ 	Likewise.
+ 	(sarif_file_output_format::sarif_file_output_format): Likewise.
+ 	(diagnostic_output_format_init_sarif): Return a reference to *FMT.
+ 	(diagnostic_output_format_init_sarif_stderr): Return a refererence
+ 	to the new sink.  Drop "main_input_filename_" param.
+ 	(diagnostic_output_format_init_sarif_file): Likewise.
+ 	(diagnostic_output_format_init_sarif_stream): Likewise.
+ 	(make_sarif_sink): Drop "main_input_filename_" param.
+ 	(selftest::test_sarif_diagnostic_context::test_sarif_diagnostic_context):
+ 	Likewise.  Call set_main_input_filename on the new format.
+ 	(selftest::test_sarif_diagnostic_context::buffered_output_format::buffered_output_format):
+ 	Drop "main_input_filename_" param.
+ 	(selftest::test_make_location_object): Likewise.
+ 	* diagnostic-format-sarif.h
+ 	(diagnostic_output_format_init_sarif_stderr): Return a refererence
+ 	to the new sink.  Drop "main_input_filename_" param.
+ 	(diagnostic_output_format_init_sarif_file): Likewise.
+ 	(diagnostic_output_format_init_sarif_stream): Likewise.
+ 	(make_sarif_sink): Drop "main_input_filename_" param.
+ 	* diagnostic-format.h
+ 	(diagnostic_output_format::set_main_input_filename): New vfunc.
+ 	(diagnostic_output_format_init_json_stderr): Return a refererence
+ 	to the new sink.
+ 	(diagnostic_output_format_init_json_file): Likewise.
+ 	* diagnostic.cc (diagnostic_output_format_init): Likewise.  Call
+ 	set_main_input_filename on the new sink.
+ 	* libgdiagnostics.cc (sarif_sink::sarif_sink): Update for above
+ 	changes.
+ 	* opts-diagnostic.cc (sarif_scheme_handler::make_sink): Likewise.
+ 	(handle_OPT_fdiagnostics_add_output_): Likewise.
+ 	(handle_OPT_fdiagnostics_set_output_): Likewise.
+ 
+ 2025-06-09  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_noce_conversion_profitable_p): Relax
+ 	condition for adjustments due to copies from promoted SUBREGs.
+ 
+ 2025-06-09  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* doc/extend.texi (outline-atomics): Document the inverse -mno flag.
+ 
+ 2025-06-09  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* params.opt (vect-scalar-cost-multiplier): New.
+ 	* tree-vect-loop.cc (vect_estimate_min_profitable_iters): Use it.
+ 	* doc/invoke.texi (vect-scalar-cost-multiplier): Document it.
+ 
+ 2025-06-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/103750
+ 	* config/i386/i386.cc (ix86_rtx_costs): Adjust rtx_cost for
+ 	maskload.
+ 	* config/i386/sse.md (*<avx512>_load<mode>mask_and15): New
+ 	define_insn_and_split.
+ 	(*<avx512>_load<mode>mask_and3): Ditto.
+ 
+ 2025-06-09  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/riscv-v.cc (expand_vx_binary_vec_vec_dup): Add new
+ 	case MOD.
+ 	* config/riscv/riscv.cc (riscv_rtx_costs): Ditto.
+ 	* config/riscv/vector-iterators.md: Add new op mod.
+ 
+ 2025-06-08  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* auto-profile.cc (function_instance::merge): Fix typo.
+ 
+ 2025-06-08  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	PR target/120203
+ 	* config/riscv/riscv.cc (CFUN_IN_CALL): New macro.
+ 	(struct mode_switching_info): Add new field.
+ 	(riscv_frm_adjust_mode_after_call): Remove.
+ 	(riscv_frm_mode_needed): Track call_insn.
+ 
+ 2025-06-08  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	PR target/119164
+ 	* config/riscv/riscv.cc (riscv_emit_frm_mode_set): check
+ 	STATIC_FRM_P for transition to DYN.
+ 
+ 2025-06-08  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_frm_emit_after_bb_end): Delete.
+ 	(riscv_frm_mode_needed): Remove call riscv_frm_emit_after_bb_end.
+ 
+ 2025-06-08  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_dynamic_frm_mode_p): Remove.
+ 	(riscv_mode_confluence): Ditto.
+ 	(TARGET_MODE_CONFLUENCE): Ditto.
+ 
+ 2025-06-08  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	* emit-rtl.cc (next_nonnote_nondebug_insn): Update comments.
+ 
+ 2025-06-08  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* tree-ssa-phiopt.cc (cond_if_else_store_replacement): Move
+ 	definitin of else_vdef to right before the usage. Reformat
+ 	slightly.
+ 
+ 2025-06-08  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR tree-optimization/120533
+ 	* tree-ssa-phiopt.cc (cond_if_else_store_replacement_limited): New function.
+ 	(pass_phiopt::execute):	Call cond_if_else_store_replacement_limited
+ 	for diamand case.
+ 
+ 2025-06-08  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* tree-ssa-phiopt.cc (single_trailing_store_in_bb): Add vphi argument.
+ 	Check for single use of the vdef of the store instead of a loop
+ 	and check vdef's single use statement is the same as vphi.
+ 	(cond_if_else_store_replacement): Update call to single_trailing_store_in_bb.
+ 
+ 2025-06-08  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	* tree-ssa-phiopt.cc (cond_if_else_store_replacement): Use get_virtual_phi
+ 	instead of inlining it.
+ 
+ 2025-06-08  Co-authored-by: Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_expand_conditional_move): Use
+ 	riscv_extend_comparands to extend sub-word comparison arguments.
+ 
+ 2025-06-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (printx, print_operand):
+ 	Add two instruction operand format codes 'U' and 'V',
+ 	whose represent scale factors of 0 to 15th positive/negative
+ 	power of two.
+ 	* config/xtensa/xtensa.md (c_enum "unspec"):
+ 	Add UNSPEC_CEIL and UNSPEC_FLOOR.
+ 	(int_iterator ANY_ROUND, int_attr m_round):
+ 	New integer iterator and its attribute.
+ 	(fix<s_fix>_truncsfsi2, *fix<s_fix>_truncsfsi2_2x,
+ 	*fix<s_fix>_truncsfsi2_scaled, float<s_float>sisf2,
+ 	*float<s_float>sisf2_scaled):
+ 	Use output templates with the operand formats added above,
+ 	instead of individual output statements.
+ 	(l<m_round>sfsi2, *l<m_round>sfsi2_2x, *l<m_round>sfsi2_scaled):
+ 	New insn patterns.
+ 
  2025-06-07  Jeff Law  <jlaw@ventanamicro.com>
  
  	* config/riscv/riscv.cc (riscv_expand_conditional_move): Use
diff -Nrcpad gcc-16-20250608/gcc/DATESTAMP gcc-16-20250615/gcc/DATESTAMP
*** gcc-16-20250608/gcc/DATESTAMP	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/DATESTAMP	Sun Jun 15 22:32:22 2025
***************
*** 1 ****
! 20250608
--- 1 ----
! 20250615
diff -Nrcpad gcc-16-20250608/gcc/ada/ChangeLog gcc-16-20250615/gcc/ada/ChangeLog
*** gcc-16-20250608/gcc/ada/ChangeLog	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/ChangeLog	Sun Jun 15 22:32:22 2025
***************
*** 1,3 ****
--- 1,602 ----
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Generate
+ 	a zero-initialization for the anonymous object of a small aggregate
+ 	allocated on the stack.
+ 	(inline_status_for_subprog): Minor tweak.
+ 
+ 2025-06-12  Tonu Naks  <naks@adacore.com>
+ 
+ 	* comperr.adb: update support instructions
+ 	* switch.adb: update support instructions
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sinfo.ads: Fix RM reference.
+ 
+ 2025-06-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Apply_External_Initialization): Reuse local constant.
+ 
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/gnat_language_extensions.rst
+ 	(Generalized Finalization): Document the actual implementation.
+ 	(No_Raise): Move to separate section.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnat/s-valuer.adb (Scan_Raw_Real): Apply tweak.
+ 
+ 2025-06-12  Tonu Naks  <naks@adacore.com>
+ 
+ 	* comperr.adb: replace report@ with support@
+ 	* gnatcmd.adb: replace report@ with support@
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Private_Type): Fix test.
+ 	(Build_Derived_Record_Type): Adjust error recovery paths.
+ 
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Has_Homonym): Fix inaccuracy in description.
+ 	* sem_ch8.ads (Find_Direct_Name): Remove obsolete description.
+ 	* sem_ch12.adb (Analyze_Associations): Rename I_Node parameter
+ 	into N and adjust description.
+ 	(Analyze_Subprogram_Instantiation): Add missing description.
+ 	(Contains_Instance_Of): Fix description.
+ 	(Associations): Rename Generic_Actual_Rec into Actual_Rec and
+ 	Gen_Assocs_Rec into Match_Rec.
+ 	(Analyze_One_Association): Rename I_Node parameter into N.
+ 	(Check_Fixed_Point_Warning): Rename Gen_Assocs parameter into
+ 	Match.
+ 	(Body of Associations): Minor cleanups and tweaks.
+ 	(Analyze_Associations): Rename I_Node parameter into N and
+ 	adjust implementation.
+ 	(Analyze_One_Association): Likewise.
+ 	(Analyze_Package_Instantiation): Remove obsolete code and clean up.
+ 	(Check_Fixed_Point_Warning): Rename Gen_Assocs parameter into
+ 	Match and adjust implementation.
+ 	(Freeze_Package_Instance): Simplify condition.
+ 	(Get_Unit_Instantiation_Node): Add support for instantiations of
+ 	subprograms and stop the loop properly in case of errors.
+ 	* sem_util.ads (Add_Global_Declaration): Rename N parameter into
+ 	Decl and fix description.
+ 	* sem_util.adb (Add_Global_Declaration): Rename N parameter into
+ 	Decl and adjust implementation.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnat/s-valuer.adb (Scan_Raw_Real): Add RM reference.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnat/s-valuer.adb (Scan_Raw_Real): Remove subexpression. Improve
+ 	surrounding comments.
+ 
+ 2025-06-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* vast.adb: Check basic tree properties.
+ 	* atree.adb (Traverse_Field): Minor.
+ 	* treepr.adb (Destroy): Minor comment.
+ 
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valuer.adb (Round_Extra): Use multiplicative test.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* einfo-utils.adb (Set_Convention): Remove obsolete test.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Discriminants): Set Ekind earlier.
+ 	* sem_util.adb (Enter_Name): Adjust error processing.
+ 
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valuef.adb (Integer_To_Fixed): Enable overflow checks.
+ 	Deal specifically with Val = 2**(Int'Size - 1) if Minus is not set.
+ 	Exit the loop when V saturates to 0 in the case of (huge) negative
+ 	exponents.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* exp_util.adb (Insert_Actions): Refine test.
+ 
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (Compiler
+ 	switches) <-O>: Fix long line.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (List of
+ 	all switches): Add -gnatRh subswitch.
+ 	(Debugging Control): Document -gnatRh subswitch.
+ 	* opt.ads (List_Representation_Info_Holes): New boolean variable.
+ 	* repinfo.adb: Add with clause for GNAT.Heap_Sort_G.
+ 	(List_Common_Type_Info): Relax assertion.
+ 	(List_Object_Info): Replace assertion with additional test.
+ 	(List_Record_Layout): If -gnatRh is specified, make sure that the
+ 	components are ordered by increasing offsets.  Output a comment
+ 	line giving the number of unused bits if there is a hole between
+ 	consecutive components.  Streamline the control flow of the loop.
+ 	(List_Record_Info): Use the original record type giving the layout
+ 	of components, if any, to display the layout of the record.
+ 	* switch-c.adb (Scan_Front_End_Switches) <-gnatR>: Add support for
+ 	-gnatRh subswitch.
+ 	* usage.adb (Usage): Document -gnatRh subswitch.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-06-12  Johannes Kliemann  <kliemann@adacore.com>
+ 
+ 	* libgnat/s-secsta.adb (SS_Allocate): Add comment about
+ 	conservative alignment padding calculation.
+ 	* libgnat/s-secsta__cheri.adb (SS_Allocate): Add comment about
+ 	conservative alignment padding calculation.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_warn.adb (Check_References): Rewrite expression
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Index, Make_Index, Array_Type_Declaration,
+ 	Analyze_Number_Declaration): Remove uses of E_Void.
+ 
+ 2025-06-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* usage.adb (Usage): Justify the documentation of common switches
+ 	like that of other switches.  Rework that of the -O switch.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst (Compiler
+ 	switches) <-O>: Rework and document 'z' and 'g' operands.
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst (Optimization Levels):
+ 	Rework and document -Oz and -Og switches.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Index): Avoid unused itypes.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Index): Factorize return statement.
+ 
+ 2025-06-12  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Build_Derived_Numeric_Type): Remove duplicate call.
+ 
+ 2025-06-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gen_il-gen-gen_entities.adb (Formal_Object_Kind): Remove
+ 	Entry_Component field.
+ 
+ 2025-06-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute): Remove redundant guard.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* inline.adb (Analyze_Inlined_Bodies): Minor comment tweak.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* inline.adb (Instantiate_Body): Do not call Add_Scope_To_Clean if
+ 	the main unit is generic.
+ 	(Instantiate_Bodies): Do not deal with generic main units here.
+ 	* sem_ch12.adb (Need_Subprogram_Instance_Body): Return false if the
+ 	main unit is generic.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (ADA_EXCLUDE_SRCS): Add the 128-bit support files.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Subtype): Factorize code.
+ 
+ 2025-06-10  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo.ads (Associated_Node_For_Itype): Document that
+ 	Parent field may be empty.
+ 	* vast.adb:  Allow empty Parent in Itypes.
+ 
+ 2025-06-10  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* einfo.ads: Revise comment about Dynamic_Predicate flag to make it
+ 	more accurate.
+ 	* sem_case.adb (Check_Choices): Test "not Has_Static_Predicate_Aspect"
+ 	as additional guard for error about use of subtype with nonstatic
+ 	predicate as a case choice. Improve related error message.
+ 
+ 2025-06-10  Tonu Naks  <naks@adacore.com>
+ 
+ 	* libgnat/s-valueu.adb: add explict raise
+ 	* libgnat/s-valueu.ads: update annotation
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch6.adb, sem_ch6.ads (Check_Discriminant_Conformance): Move to …
+ 	* sem_ch3.adb (Check_Discriminant_Conformance): … here.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Static_Object): Do not issue any error message
+ 	for compiler-generated entities.
+ 
+ 2025-06-10  Bob Duff  <duff@adacore.com>
+ 
+ 	* vast.adb: Implement two checks. Improve debugging
+ 	outputs.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Insert_Conditional_Object_Declaration): Deal with a
+ 	transient scope being created around the declaration.
+ 	* freeze.adb (Freeze_Entity): Do not call Freeze_Static_Object for
+ 	a renaming declaration.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-vafi32.ads: Fix head description.
+ 	* libgnat/s-vafi64.ads: Likewise.
+ 	* libgnat/s-vafi128.ads: Likewise.
+ 
+ 2025-06-10  Bob Duff  <duff@adacore.com>
+ 
+ 	* vast.adb: Initial implementation.
+ 	* vast.ads: Rename procedure. Remove parameter; body should decide
+ 	what to do.
+ 	* lib.ads (ipu): Minor: Rewrite comment for brevity, and because
+ 	of an inconvenient misspelling.
+ 	(Num_Units): Not used; remove.
+ 	(Remove_Unit): Minor: Remove "Currently" (which was current a decade
+ 	ago from) comment.
+ 	* lib.adb (Num_Units): Not used; remove.
+ 	* debug_a.adb (Debug_A_Entry): Fix bug: Use Write_Name_For_Debug,
+ 	so this won't crash on the Error node.
+ 	* debug.adb: Document -gnatd_V and -gnatd_W compiler switches.
+ 	* exp_ch6.adb (Validate_Subprogram_Calls): Remove redundant check for
+ 	Serious_Errors_Detected. (We turn off code gen when errors are
+ 	detected.)
+ 	* frontend.adb: Move decisions into VAST body.
+ 	* namet.ads (Present): Remove unnecessary overriding; these are
+ 	inherited by the derived types.
+ 	* namet.adb (Present): Likewise.
+ 
+ 2025-06-10  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Container_Aggr_Code.To_Int): Apply Enumeration_Pos
+ 	to Entity (Expr) rather than Expr.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Find_Type_Of_Object): Fix comment.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Component_Declaration): Rename constant.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Array): Simplify.
+ 	(Process_Subtype): Adjust.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Copy_Generic_Node): Do not call Root_Type to find
+ 	the root type of an aggregate of a derived tagged type.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnarl/s-stusta.adb (Compute_All_Tasks): Skip terminated tasks.
+ 
+ 2025-06-10  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_prag.adb (Is_Configuration_Pragma): Check that nodes
+ 	preceding the pragma are pragma nodes or originally were
+ 	pragma nodes.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valued.adb (Integer_to_Decimal): Add Extra parameter and
+ 	use its value to call Bad_Value on boundary values.
+ 	(Scan_Decimal): Adjust call to Integer_to_Decimal.
+ 	(Value_Decimal): Likewise.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.ads (Process_Subtype): New formal.
+ 	* sem_ch3.adb (Process_Subtype): Likewise.
+ 	(Analyze_Subtype_Declaration, Access_Type_Declaration): Use new
+ 	formal.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Subtype): Fix recursive call.
+ 
+ 2025-06-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* par-ch5.adb (P_Declare_Statement): Rename local variable.
+ 	(P_Begin_Statement): Likewise.
+ 
+ 2025-06-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.ads (Overridden_Operation, Static_Initialization): Remove
+ 	comments about a reused entity field.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Subtype): Tweak formatting.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Subtype): Add assertion.
+ 
+ 2025-06-10  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Subtype): Factorize initialization of variable.
+ 
+ 2025-06-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Index): In the case of a fixed-lower-bound index,
+ 	set Etype of the newly created itype's Scalar_Range from the index's Etype.
+ 	* sem_ch12.adb (Validate_Array_Type_Instance): If the actual subtype is
+ 	a fixed-lower-bound type, then check again the Etype of its Scalar_Range.
+ 
+ 2025-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Fix conditions for legality checks on
+ 	formal type declarations.
+ 
+ 2025-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): If pragmas apply to a formal array
+ 	type, then set the flags on the base type.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Subtype): Clarify code.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.ads (Process_Subtype): Add formal.
+ 	* sem_ch3.adb (Process_Subtype): Use new formal.
+ 	(Analyze_Subtype_Declaration, Array_Type_Declaration,
+ 	Build_Derived_Access_Type): Pass new actual.
+ 	* sem_ch4.adb (Find_Type_Of_Object): Likewise.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch6.adb (Set_Formal_Mode): Extend profile. Move parts of the
+ 	body…
+ 	(Process_Formals): … here. Move call to Set_Formal_Mode earlier. Call
+ 	Set_Is_Not_Self_Hidden in second traversal.
+ 
+ 2025-06-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_Container_Aggregate): Use the Base_Type of the
+ 	subtype provided by the context as the subtype of the temporary object
+ 	initialized by the aggregate.
+ 
+ 2025-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* par-ch4.adb (P_Function_Name): Delete body.
+ 	(P_Qualified_Simple_Name_Resync): Do not raise Error_Resync on an
+ 	operator symbol followed by something else than a dot.
+ 	* par-ch6.adb (P_Subprogram): Do not call P_Function_Name.
+ 	* par.adb (P_Function_Name): Delete declaration.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem.adb (Analyze): Adapt to new Ekinds.
+ 	* sem_ch3.adb (Analyze_Component_Declaration): Set Ekind early.
+ 	(Is_Visible_Component, Record_Type_Definition): Adjust.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem.adb (Analyze): Fix comment.
+ 
+ 2025-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* par-ch4.adb (P_Name): Remove obsolete references in comments.
+ 	(P_Qualified_Simple_Name): Call P_Qualified_Simple_Name_Resync.
+ 	(P_Qualified_Simple_Name_Resync): Adjust a couple of comments.
+ 
+ 2025-06-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_util.adb (Call_To_Parent_Dispatching_Op_Must_Be_Mapped): Replace
+ 	test of Covers with test of Is_Controlling_Formal. Add handling for
+ 	'Result actuals. Remove Actual_Type and its uses.
+ 
+ 2025-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Is_Name_Reference): Remove check for selector_name of a
+ 	selected_component; reuse existing code for indexed components and
+ 	slices.
+ 	(Statically_Names_Object): Remove dead code.
+ 
+ 2025-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Overlays_Constant): Define in constants and variables.
+ 	* gen_il-gen-gen_entities.adb (Entity_Kind): Move Overlays_Constant
+ 	semantic flag to...
+ 	(Constant_Or_Variable_Kind): ...here.
+ 	* sem_util.adb (Note_Possible_Modification): Add guard.
+ 
+ 2025-06-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration):
+ 	Deal with renamings transformed into object declarations.
+ 	* sem_ch8.adb (Analyze_Object_Renaming):
+ 	Reinstate transformation of a renaming into
+ 	an object declaration.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Call Mutate_Ekind earlier.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Tweak error handling.
+ 
+ 2025-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch13.adb (Get_Aspect_Specifications): Save and restore flag while
+ 	parsing aspect Abstract_State.
+ 	* par-ch2.adb (P_Pragma): Same while parsing pragma Abstract_State.
+ 	* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Specialize error message
+ 	for contract Abstract_State and extended aggregate.
+ 	* par.adb (Inside_Abstract_State): Add new context flag.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch10.adb (Analyze_Compilation_Unit): Check for generic bodies.
+ 	* exp_disp.adb (Build_Dispatch_Tables): Likewise.
+ 
+ 2025-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Find_Overlaid_Entity): Don't call Etype on empty Ent;
+ 	tune style; move computation of Overl_Typ out of the loop.
+ 
+ 2025-06-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Adding
+ 	documentation.
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst: ditto.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Remove test.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_util.adb (Enter_Name): Remove special handling.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_util.adb (Enter_Name): Remove comment.
+ 
+ 2025-06-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb: Remove a couple of "???" suggesting something that
+ 	we will likely never do.
+ 	(Make_Build_In_Place_Call_In_Object_Declaration):
+ 	When a constraint check is needed, do the check.
+ 	Do it at the call site for now.
+ 	The check is still missing in the untagged case,
+ 	because the caller allocates in that case.
+ 	* sem_ch8.adb (Analyze_Object_Renaming):
+ 	Remove obsolete transformation of a renaming into
+ 	an object declaration. Given that we also (sometimes) tranform
+ 	object declarations into renamings, this transformation was
+ 	adding complexity; the new code in
+ 	Make_Build_In_Place_Call_In_Object_Declaration above
+ 	would need to explicitly avoid the run-time check in the case of
+ 	renamings, because renamings are supposed to ignore the nominal
+ 	subtype. Anyway, it is no longer needed.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Rewrite comment;
+ 	it IS clear how to do it, but we haven't done it right yet.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* atree.ads (Copy_Node): Fix comment.
+ 
+ 2025-06-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): When expanding attribute
+ 	Valid, use signedness from the validated view, not from its base type.
+ 
+ 2025-06-09  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_util.adb (Find_Overlaid_Entity): Add extra parameter to
+ 	extract the type being overlaid.
+ 	(Note_Possible_Modification): Adjust call to Find_Overlaid_Entity.
+ 	(Ultimate_Overlaid_Entity): Likewise.
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Likewise.
+ 	* sem_util.ads (Find_Overlaid_Entity): Add extra parameter to
+ 	extract the type being overlaid.
+ 	* freeze.adb (Check_Address_Clause): Likewise.
+ 
+ 2025-06-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* contracts.adb (Inherit_Condition): Remove Assoc_List and its uses
+ 	along with function Check_Condition, since mapping of formals will
+ 	effectively be done in Build_Class_Wide_Expression (by Replace_Entity).
+ 	* exp_util.adb (Replace_Entity): Only rewrite entity references in
+ 	function calls that qualify according to the result of calling the
+ 	new function Call_To_Parent_Dispatching_Op_Must_Be_Mapped.
+ 	(Call_To_Parent_Dispatching_Op_Must_Be_Mapped): New function that
+ 	determines whether a function call to a primitive of Par_Subp
+ 	associated tagged type needs to be mapped (according to whether
+ 	it has any actuals that reference controlling formals of the
+ 	primitive).
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Remove comment.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_util.ads (Current_Entity_In_Scope): Add example in comment.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* atree.ads (Rewrite, Replace): Clarify comments.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* atree.ads (Rewrite): Remove comment.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* atree.adb (Rewrite): Improve readability.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_util.adb (Kill_Current_Values): Tweak condition.
+ 
+ 2025-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Insert_Conditional_Object_Declaration): Remove Decl
+ 	formal parameter, add Typ and Const formal parameters.
+ 	(Expand_N_Case_Expression): Fix pasto in comment.  Adjust call to
+ 	Insert_Conditional_Object_Declaration and tidy up surrounding code.
+ 	(Expand_N_If_Expression): Adjust couple of calls to
+ 	Insert_Conditional_Object_Declaration.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Selected_Component): Fix error path.
+ 
+ 2025-06-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-dourea.adb (Is_Infinity): Rename to...
+ 	(Is_Infinity_Or_NaN): ...this.
+ 	("*"): Adjust accordingly.
+ 	("/"): Likewise.
+ 	(Sqr): Likewise.
+ 	* libgnat/s-dorepr.adb (Two_Prod): Likewise.
+ 	(Two_Sqr): Likewise.
+ 	* libgnat/s-dorepr__fma.adb (Two_Prod): Likewise.
+ 
+ 2025-06-09  Daniel King  <dmking@adacore.com>
+ 
+ 	* libgnat/i-cheri.ads
+ 	(Set_Bounds, Set_Exact_Bounds): Remove wrong intrinsic binding.
+ 	* libgnat/i-cheri.adb
+ 	(Set_Bounds, Set_Exact_Bounds): New subprogram bodies.
+ 
+ 2025-06-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Selected_Component): Add mention.
+ 
  2025-06-06  Piotr Trojanek  <trojanek@adacore.com>
  
  	* urealp.adb (UR_Negate): Capture array element in a local constant.
diff -Nrcpad gcc-16-20250608/gcc/ada/Makefile.rtl gcc-16-20250615/gcc/ada/Makefile.rtl
*** gcc-16-20250608/gcc/ada/Makefile.rtl	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/Makefile.rtl	Sun Jun 15 22:32:22 2025
*************** ADA_EXCLUDE_SRCS =\
*** 3242,3249 ****
    i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \
    s-linux.ads  s-vxwext.adb s-vxwext.ads s-win32.ads  s-winext.ads \
    s-stchop.ads s-stchop.adb \
!   s-strcom.adb s-strcom.ads s-thread.ads \
    s-qnx.ads \
  
  # ADA_EXCLUDE_SRCS without the sources used by the target
  ADA_EXCLUDE_FILES=$(filter-out \
--- 3242,3333 ----
    i-vxwoio.adb i-vxwoio.ads i-vxwork.ads \
    s-linux.ads  s-vxwext.adb s-vxwext.ads s-win32.ads  s-winext.ads \
    s-stchop.ads s-stchop.adb \
!   s-strcom.ads s-strcom.adb \
!   s-thread.ads \
    s-qnx.ads \
+   s-arit128.ads s-arit128.adb \
+   s-casi128.ads s-casi128.adb \
+   s-caun128.ads s-caun128.adb \
+   s-exnllli.ads \
+   s-expllli.ads \
+   s-explllu.ads \
+   s-fode128.ads \
+   s-fofi128.ads \
+   s-imde128.ads \
+   s-imfi128.ads \
+   s-imglllb.ads \
+   s-imgllli.ads \
+   s-imglllu.ads \
+   s-imglllw.ads \
+   s-pack65.ads s-pack65.adb \
+   s-pack66.ads s-pack66.adb \
+   s-pack67.ads s-pack67.adb \
+   s-pack68.ads s-pack68.adb \
+   s-pack69.ads s-pack69.adb \
+   s-pack70.ads s-pack70.adb \
+   s-pack71.ads s-pack71.adb \
+   s-pack72.ads s-pack72.adb \
+   s-pack73.ads s-pack73.adb \
+   s-pack74.ads s-pack74.adb \
+   s-pack75.ads s-pack75.adb \
+   s-pack76.ads s-pack76.adb \
+   s-pack77.ads s-pack77.adb \
+   s-pack78.ads s-pack78.adb \
+   s-pack79.ads s-pack79.adb \
+   s-pack80.ads s-pack80.adb \
+   s-pack81.ads s-pack81.adb \
+   s-pack82.ads s-pack82.adb \
+   s-pack83.ads s-pack83.adb \
+   s-pack84.ads s-pack84.adb \
+   s-pack85.ads s-pack85.adb \
+   s-pack86.ads s-pack86.adb \
+   s-pack87.ads s-pack87.adb \
+   s-pack88.ads s-pack88.adb \
+   s-pack89.ads s-pack89.adb \
+   s-pack90.ads s-pack90.adb \
+   s-pack91.ads s-pack91.adb \
+   s-pack92.ads s-pack92.adb \
+   s-pack93.ads s-pack93.adb \
+   s-pack94.ads s-pack94.adb \
+   s-pack95.ads s-pack95.adb \
+   s-pack96.ads s-pack96.adb \
+   s-pack97.ads s-pack97.adb \
+   s-pack98.ads s-pack98.adb \
+   s-pack99.ads s-pack99.adb \
+   s-pack100.ads s-pack100.adb \
+   s-pack101.ads s-pack101.adb \
+   s-pack102.ads s-pack102.adb \
+   s-pack103.ads s-pack103.adb \
+   s-pack104.ads s-pack104.adb \
+   s-pack105.ads s-pack105.adb \
+   s-pack106.ads s-pack106.adb \
+   s-pack107.ads s-pack107.adb \
+   s-pack108.ads s-pack108.adb \
+   s-pack109.ads s-pack109.adb \
+   s-pack110.ads s-pack110.adb \
+   s-pack111.ads s-pack111.adb \
+   s-pack112.ads s-pack112.adb \
+   s-pack113.ads s-pack113.adb \
+   s-pack114.ads s-pack114.adb \
+   s-pack115.ads s-pack115.adb \
+   s-pack116.ads s-pack116.adb \
+   s-pack117.ads s-pack117.adb \
+   s-pack118.ads s-pack118.adb \
+   s-pack119.ads s-pack119.adb \
+   s-pack120.ads s-pack120.adb \
+   s-pack121.ads s-pack121.adb \
+   s-pack122.ads s-pack122.adb \
+   s-pack123.ads s-pack123.adb \
+   s-pack124.ads s-pack124.adb \
+   s-pack125.ads s-pack125.adb \
+   s-pack126.ads s-pack126.adb \
+   s-pack127.ads s-pack127.adb \
+   s-vade128.ads \
+   s-vafi128.ads \
+   s-valllli.ads \
+   s-vallllu.ads \
+   s-widllli.ads \
+   s-widlllu.ads
  
  # ADA_EXCLUDE_SRCS without the sources used by the target
  ADA_EXCLUDE_FILES=$(filter-out \
diff -Nrcpad gcc-16-20250608/gcc/ada/atree.adb gcc-16-20250615/gcc/ada/atree.adb
*** gcc-16-20250608/gcc/ada/atree.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/atree.adb	Sun Jun 15 22:32:22 2025
*************** package body Atree is
*** 2271,2280 ****
        --  Copy substitute node into place, preserving old fields as required
  
        Copy_Node (Source => New_Node, Destination => Old_Node);
-       Set_Error_Posted (Old_Node, Old_Error_Posted);
  
        Set_Check_Actuals (Old_Node, Old_CA);
        Set_Is_Ignored_Ghost_Node (Old_Node, Old_Is_IGN);
  
        if Nkind (New_Node) in N_Subexpr then
           Set_Paren_Count     (Old_Node, Old_Paren_Count);
--- 2271,2280 ----
        --  Copy substitute node into place, preserving old fields as required
  
        Copy_Node (Source => New_Node, Destination => Old_Node);
  
        Set_Check_Actuals (Old_Node, Old_CA);
        Set_Is_Ignored_Ghost_Node (Old_Node, Old_Is_IGN);
+       Set_Error_Posted (Old_Node, Old_Error_Posted);
  
        if Nkind (New_Node) in N_Subexpr then
           Set_Paren_Count     (Old_Node, Old_Paren_Count);
*************** package body Atree is
*** 2702,2710 ****
        --  tail recursive step won't go past the end.
  
        declare
-          Cur_Field : Offset_Array_Index := Traversed_Offset_Array'First;
           Offsets : Traversed_Offset_Array renames
             Traversed_Fields (Nkind (Cur_Node));
  
        begin
           if Offsets (Traversed_Offset_Array'First) /= No_Field_Offset then
--- 2702,2710 ----
        --  tail recursive step won't go past the end.
  
        declare
           Offsets : Traversed_Offset_Array renames
             Traversed_Fields (Nkind (Cur_Node));
+          Cur_Field : Offset_Array_Index := Traversed_Offset_Array'First;
  
        begin
           if Offsets (Traversed_Offset_Array'First) /= No_Field_Offset then
diff -Nrcpad gcc-16-20250608/gcc/ada/atree.ads gcc-16-20250615/gcc/ada/atree.ads
*** gcc-16-20250608/gcc/ada/atree.ads	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/atree.ads	Sun Jun 15 22:32:22 2025
*************** package Atree is
*** 285,299 ****
  
     procedure Copy_Node (Source, Destination : Node_Or_Entity_Id);
     --  Copy the entire contents of the source node to the destination node.
!    --  The contents of the source node is not affected. If the source node
!    --  has an extension, then the destination must have an extension also.
!    --  The parent pointer of the destination and its list link, if any, are
!    --  not affected by the copy. Note that parent pointers of descendants
!    --  are not adjusted, so the descendants of the destination node after
!    --  the Copy_Node is completed have dubious parent pointers. Note that
!    --  this routine does NOT copy aspect specifications, the Has_Aspects
!    --  flag in the returned node will always be False. The caller must deal
!    --  with copying aspect specifications where this is required.
  
     function New_Copy (Source : Node_Id) return Node_Id;
     --  This function allocates a new node, and then initializes it by copying
--- 285,295 ----
  
     procedure Copy_Node (Source, Destination : Node_Or_Entity_Id);
     --  Copy the entire contents of the source node to the destination node.
!    --  The contents of the source node is not affected. The parent pointer of
!    --  the destination and its list link, if any, are not affected by the copy.
!    --  Note that parent pointers of descendants are not adjusted, so the
!    --  descendants of the destination node after the Copy_Node is completed
!    --  have dubious parent pointers.
  
     function New_Copy (Source : Node_Id) return Node_Id;
     --  This function allocates a new node, and then initializes it by copying
*************** package Atree is
*** 536,551 ****
     procedure Rewrite (Old_Node, New_Node : Node_Id);
     --  This is used when a complete subtree is to be replaced. Old_Node is the
     --  root of the old subtree to be replaced, and New_Node is the root of the
!    --  newly constructed replacement subtree. The actual mechanism is to swap
!    --  the contents of these two nodes fixing up the parent pointers of the
!    --  replaced node (we do not attempt to preserve parent pointers for the
!    --  original node).
!    --  ??? The above explanation is incorrect, instead Copy_Node is called.
     --
     --  Note: New_Node may not contain references to Old_Node, for example as
!    --  descendants, since the rewrite would make such references invalid. If
!    --  New_Node does need to reference Old_Node, then these references should
!    --  be to a relocated copy of Old_Node (see Relocate_Node procedure).
     --
     --  Note: The Original_Node function applied to Old_Node (which has now
     --  been replaced by the contents of New_Node), can be used to obtain the
--- 532,544 ----
     procedure Rewrite (Old_Node, New_Node : Node_Id);
     --  This is used when a complete subtree is to be replaced. Old_Node is the
     --  root of the old subtree to be replaced, and New_Node is the root of the
!    --  newly constructed replacement subtree.
     --
     --  Note: New_Node may not contain references to Old_Node, for example as
!    --  descendants, since the rewrite would turn them into cyclic
!    --  self-references. If New_Node does need to reference Old_Node, then these
!    --  references should be to a relocated copy of Old_Node (see Relocate_Node
!    --  procedure).
     --
     --  Note: The Original_Node function applied to Old_Node (which has now
     --  been replaced by the contents of New_Node), can be used to obtain the
*************** package Atree is
*** 559,568 ****
     --  original contents of the Old_Node, but rather the New_Node value.
     --  Replace also preserves the setting of Comes_From_Source.
     --
!    --  Note that New_Node must not contain references to Old_Node, for example
!    --  as descendants, since the rewrite would make such references invalid. If
!    --  New_Node does need to reference Old_Node, then these references should
!    --  be to a relocated copy of Old_Node (see Relocate_Node procedure).
     --
     --  Replace is used in certain circumstances where it is desirable to
     --  suppress any history of the rewriting operation. Notably, it is used
--- 552,559 ----
     --  original contents of the Old_Node, but rather the New_Node value.
     --  Replace also preserves the setting of Comes_From_Source.
     --
!    --  The note in the documentation of Rewrite about the risk of creating
!    --  cyclic references also applies here.
     --
     --  Replace is used in certain circumstances where it is desirable to
     --  suppress any history of the rewriting operation. Notably, it is used
diff -Nrcpad gcc-16-20250608/gcc/ada/comperr.adb gcc-16-20250615/gcc/ada/comperr.adb
*** gcc-16-20250608/gcc/ada/comperr.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/comperr.adb	Sun Jun 15 22:32:22 2025
*************** package body Comperr is
*** 307,322 ****
  
                    Write_Str
                      ("| Please submit a bug report by email " &
!                      "to report@adacore.com.");
                    End_Line;
  
                    Write_Str
!                     ("| GAP members can alternatively use GNAT Tracker:");
                    End_Line;
  
                    Write_Str
!                     ("| https://www.adacore.com/login?mode=gap " &
!                      "section 'Create New Ticket'.");
                    End_Line;
  
                    Write_Str
--- 307,322 ----
  
                    Write_Str
                      ("| Please submit a bug report by email " &
!                      "to support@adacore.com.");
                    End_Line;
  
                    Write_Str
!                     ("| GAP members can alternatively use GNATtracker:");
                    End_Line;
  
                    Write_Str
!                     ("| https://support.adacore.com/csm " &
!                      "by using the button 'Create A New Case'.");
                    End_Line;
  
                    Write_Str
*************** package body Comperr is
*** 326,342 ****
  
                 else
                    Write_Str
!                     ("| Please submit a bug report using GNAT Tracker:");
                    End_Line;
  
                    Write_Str
!                     ("| https://www.adacore.com/login " &
!                      "section 'Create New Ticket'.");
                    End_Line;
  
                    Write_Str
                      ("| Or submit a bug report by email " &
!                      "to report@adacore.com");
                    End_Line;
  
                    Write_Str
--- 326,342 ----
  
                 else
                    Write_Str
!                     ("| Please submit a bug report using GNATtracker at");
                    End_Line;
  
                    Write_Str
!                     ("| https://support.adacore.com/csm " &
!                      "by using the button 'Create New Case'.");
                    End_Line;
  
                    Write_Str
                      ("| Or submit a bug report by email " &
!                      "to support@adacore.com");
                    End_Line;
  
                    Write_Str
diff -Nrcpad gcc-16-20250608/gcc/ada/contracts.adb gcc-16-20250615/gcc/ada/contracts.adb
*** gcc-16-20250608/gcc/ada/contracts.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/contracts.adb	Sun Jun 15 22:32:22 2025
*************** package body Contracts is
*** 4399,4408 ****
           Seen    : Subprogram_List (Subps'Range) := (others => Empty);
  
           function Inherit_Condition
!            (Par_Subp : Entity_Id;
!             Subp     : Entity_Id) return Node_Id;
!          --  Inherit the class-wide condition from Par_Subp to Subp and adjust
!          --  all the references to formals in the inherited condition.
  
           procedure Merge_Conditions (From : Node_Id; Into : Node_Id);
           --  Merge two class-wide preconditions or postconditions (the former
--- 4399,4408 ----
           Seen    : Subprogram_List (Subps'Range) := (others => Empty);
  
           function Inherit_Condition
!            (Par_Subp : Entity_Id) return Node_Id;
!          --  Inherit the class-wide condition from Par_Subp. Simply makes
!          --  a copy of the condition in preparation for later mapping of
!          --  referenced formals and functions by Build_Class_Wide_Expression.
  
           procedure Merge_Conditions (From : Node_Id; Into : Node_Id);
           --  Merge two class-wide preconditions or postconditions (the former
*************** package body Contracts is
*** 4417,4508 ****
           -----------------------
  
           function Inherit_Condition
!            (Par_Subp : Entity_Id;
!             Subp     : Entity_Id) return Node_Id
!          is
!             function Check_Condition (Expr : Node_Id) return Boolean;
!             --  Used in assertion to check that Expr has no reference to the
!             --  formals of Par_Subp.
! 
!             ---------------------
!             -- Check_Condition --
!             ---------------------
! 
!             function Check_Condition (Expr : Node_Id) return Boolean is
!                Par_Formal_Id : Entity_Id;
! 
!                function Check_Entity (N : Node_Id) return Traverse_Result;
!                --  Check occurrence of Par_Formal_Id
! 
!                ------------------
!                -- Check_Entity --
!                ------------------
! 
!                function Check_Entity (N : Node_Id) return Traverse_Result is
!                begin
!                   if Nkind (N) = N_Identifier
!                     and then Present (Entity (N))
!                     and then Entity (N) = Par_Formal_Id
!                   then
!                      return Abandon;
!                   end if;
! 
!                   return OK;
!                end Check_Entity;
! 
!                function Check_Expression is new Traverse_Func (Check_Entity);
! 
!             --  Start of processing for Check_Condition
! 
!             begin
!                Par_Formal_Id := First_Formal (Par_Subp);
! 
!                while Present (Par_Formal_Id) loop
!                   if Check_Expression (Expr) = Abandon then
!                      return False;
!                   end if;
! 
!                   Next_Formal (Par_Formal_Id);
!                end loop;
! 
!                return True;
!             end Check_Condition;
! 
!             --  Local variables
! 
!             Assoc_List     : constant Elist_Id := New_Elmt_List;
!             Par_Formal_Id  : Entity_Id := First_Formal (Par_Subp);
!             Subp_Formal_Id : Entity_Id := First_Formal (Subp);
!             New_Condition  : Node_Id;
! 
           begin
!             while Present (Par_Formal_Id) loop
!                Append_Elmt (Par_Formal_Id,  Assoc_List);
!                Append_Elmt (Subp_Formal_Id, Assoc_List);
! 
!                Next_Formal (Par_Formal_Id);
!                Next_Formal (Subp_Formal_Id);
!             end loop;
! 
!             --  Check that Parent field of all the nodes have their correct
!             --  decoration; required because otherwise mapped nodes with
!             --  wrong Parent field are left unmodified in the copied tree
!             --  and cause reporting wrong errors at later stages.
! 
!             pragma Assert
!               (Check_Parents (Class_Condition (Kind, Par_Subp), Assoc_List));
! 
!             New_Condition :=
                New_Copy_Tree
!                 (Source => Class_Condition (Kind, Par_Subp),
!                  Map    => Assoc_List);
! 
!             --  Ensure that the inherited condition has no reference to the
!             --  formals of the parent subprogram.
! 
!             pragma Assert (Check_Condition (New_Condition));
! 
!             return New_Condition;
           end Inherit_Condition;
  
           ----------------------
--- 4417,4427 ----
           -----------------------
  
           function Inherit_Condition
!            (Par_Subp : Entity_Id) return Node_Id is
           begin
!             return
                New_Copy_Tree
!                 (Source => Class_Condition (Kind, Par_Subp));
           end Inherit_Condition;
  
           ----------------------
*************** package body Contracts is
*** 4616,4624 ****
                    Par_Prim        := Subp_Id;
                    Par_Iface_Prims := Covered_Interface_Primitives (Par_Prim);
  
!                   Cond := Inherit_Condition
!                             (Subp     => Spec_Id,
!                              Par_Subp => Subp_Id);
  
                    if Present (Class_Cond) then
                       Merge_Conditions (Cond, Class_Cond);
--- 4535,4541 ----
                    Par_Prim        := Subp_Id;
                    Par_Iface_Prims := Covered_Interface_Primitives (Par_Prim);
  
!                   Cond := Inherit_Condition (Par_Subp => Subp_Id);
  
                    if Present (Class_Cond) then
                       Merge_Conditions (Cond, Class_Cond);
*************** package body Contracts is
*** 4662,4670 ****
                 then
                    Seen (Index) := Subp_Id;
  
!                   Cond := Inherit_Condition
!                             (Subp     => Spec_Id,
!                              Par_Subp => Subp_Id);
  
                    Check_Class_Condition
                      (Cond            => Cond,
--- 4579,4585 ----
                 then
                    Seen (Index) := Subp_Id;
  
!                   Cond := Inherit_Condition (Par_Subp => Subp_Id);
  
                    Check_Class_Condition
                      (Cond            => Cond,
diff -Nrcpad gcc-16-20250608/gcc/ada/debug.adb gcc-16-20250615/gcc/ada/debug.adb
*** gcc-16-20250608/gcc/ada/debug.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/debug.adb	Sun Jun 15 22:32:22 2025
*************** package body Debug is
*** 186,193 ****
     --  d_S
     --  d_T  Output trace information on invocation path recording
     --  d_U  Disable prepending messages with "error:".
!    --  d_V  Enable verifications on the expanded tree
!    --  d_W
     --  d_X  Disable assertions to check matching of extra formals
     --  d_Y
     --  d_Z
--- 186,193 ----
     --  d_S
     --  d_T  Output trace information on invocation path recording
     --  d_U  Disable prepending messages with "error:".
!    --  d_V  Enable VAST (verifications on the expanded tree)
!    --  d_W  Enable VAST in verbose mode
     --  d_X  Disable assertions to check matching of extra formals
     --  d_Y
     --  d_Z
*************** package body Debug is
*** 1065,1072 ****
     --  d_U  Disable prepending 'error:' to error messages. This used to be the
     --       default and can be seen as the opposite of -gnatU.
  
!    --  d_V  Enable verification of the expanded code before calling the backend
!    --       and generate error messages on each inconsistency found.
  
     --  d_X  Disable assertions to check matching of extra formals; switch added
     --       temporarily to disable these checks until this work is complete if
--- 1065,1075 ----
     --  d_U  Disable prepending 'error:' to error messages. This used to be the
     --       default and can be seen as the opposite of -gnatU.
  
!    --  d_V  Enable VAST (Verifier for the Ada Semantic Tree). This does
!    --       verification of the expanded code before calling the backend.
! 
!    --  d_W  Same as d_V, but also prints lots of tracing/debugging output
!    --       as it walks the tree.
  
     --  d_X  Disable assertions to check matching of extra formals; switch added
     --       temporarily to disable these checks until this work is complete if
diff -Nrcpad gcc-16-20250608/gcc/ada/debug_a.adb gcc-16-20250615/gcc/ada/debug_a.adb
*** gcc-16-20250608/gcc/ada/debug_a.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/debug_a.adb	Sun Jun 15 22:32:22 2025
*************** package body Debug_A is
*** 83,93 ****
  
           case Nkind (N) is
              when N_Has_Chars =>
!                Write_Str (" """);
!                if Present (Chars (N)) then
!                   Write_Str (Get_Name_String (Chars (N)));
!                end if;
!                Write_Str ("""");
              when others => null;
           end case;
  
--- 83,90 ----
  
           case Nkind (N) is
              when N_Has_Chars =>
!                Write_Str (" ");
!                Write_Name_For_Debug (Chars (N));
              when others => null;
           end case;
  
diff -Nrcpad gcc-16-20250608/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst gcc-16-20250615/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
*** gcc-16-20250608/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sun Jun 15 22:32:22 2025
*************** that the record type must be a root type
*** 1469,1565 ****
  
  The aspect additionally makes it possible to specify relaxed semantics for
  the finalization operations by means of the ``Relaxed_Finalization`` setting.
! 
! Example:
  
  .. code-block:: ada
  
!     type Ctrl is record
!       Id : Natural := 0;
      end record
        with Finalizable => (Initialize           => Initialize,
                             Adjust               => Adjust,
                             Finalize             => Finalize,
                             Relaxed_Finalization => True);
  
!     procedure Adjust     (Obj : in out Ctrl);
!     procedure Finalize   (Obj : in out Ctrl);
!     procedure Initialize (Obj : in out Ctrl);
! 
! The three procedures have the same profile, taking a single ``in out T``
! parameter.
  
! We follow the same dynamic semantics as controlled objects:
  
   - ``Initialize`` is called when an object of type ``T`` is declared without
!    default expression.
  
   - ``Adjust`` is called after an object of type ``T`` is assigned a new value.
  
   - ``Finalize`` is called when an object of type ``T`` goes out of scope (for
!    stack-allocated objects) or is explicitly deallocated (for heap-allocated
!    objects). It is also called when on the value being replaced in an
!    assignment.
! 
! However the following differences are enforced by default when compared to the
! current Ada controlled-objects finalization model:
! 
! * No automatic finalization of heap allocated objects: ``Finalize`` is only
!   called when an object is implicitly deallocated. As a consequence, no-runtime
!   support is needed for the implicit case, and no header will be maintained for
!   this in heap-allocated controlled objects.
! 
!   Heap-allocated objects allocated through a nested access type definition will
!   hence **not** be deallocated either. The result is simply that memory will be
!   leaked in those cases.
! 
! * The ``Finalize`` procedure should have have the :ref:`No_Raise_Aspect` specified.
!   If that's not the case, a compilation error will be raised.
! 
! Additionally, two other configuration aspects are added,
! ``Legacy_Heap_Finalization`` and ``Exceptions_In_Finalize``:
! 
! * ``Legacy_Heap_Finalization``: Uses the legacy automatic finalization of
!   heap-allocated objects
! 
! * ``Exceptions_In_Finalize``: Allow users to have a finalizer that raises exceptions
!   **NB!** note that using this aspect introduces execution time penalities.
! 
! .. _No_Raise_Aspect:
! 
! No_Raise aspect
! ----------------
! 
! The ``No_Raise`` aspect can be applied to a subprogram to declare that this subprogram is not
! expected to raise any exceptions. Should an exception still occur during the execution of
! this subprogram, ``Program_Error`` is raised.
! 
! New specification for ``Ada.Finalization.Controlled``
! ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
! 
! ``Ada.Finalization.Controlled`` is now specified as:
! 
! .. code-block:: ada
  
!    type Controlled is abstract tagged null record
!       with Initialize => Initialize,
!          Adjust => Adjust,
!          Finalize => Finalize,
!          Legacy_Heap_Finalization, Exceptions_In_Finalize;
  
!          procedure Initialize (Self : in out Controlled) is abstract;
!          procedure Adjust (Self : in out Controlled) is abstract;
!          procedure Finalize (Self : in out Controlled) is abstract;
  
  
! ### Examples
  
! A simple example of a ref-counted type:
  
  .. code-block:: ada
  
     type T is record
!       Value : Integer;
        Ref_Count : Natural := 0;
     end record;
  
--- 1469,1528 ----
  
  The aspect additionally makes it possible to specify relaxed semantics for
  the finalization operations by means of the ``Relaxed_Finalization`` setting.
! Here is the archetypal example:
  
  .. code-block:: ada
  
!     type T is record
!       ...
      end record
        with Finalizable => (Initialize           => Initialize,
                             Adjust               => Adjust,
                             Finalize             => Finalize,
                             Relaxed_Finalization => True);
  
!     procedure Adjust     (Obj : in out T);
!     procedure Finalize   (Obj : in out T);
!     procedure Initialize (Obj : in out T);
  
! The three procedures have the same profile, with a single ``in out`` parameter,
! and also have the same dynamic semantics as for controlled types:
  
   - ``Initialize`` is called when an object of type ``T`` is declared without
!    initialization expression.
  
   - ``Adjust`` is called after an object of type ``T`` is assigned a new value.
  
   - ``Finalize`` is called when an object of type ``T`` goes out of scope (for
!    stack-allocated objects) or is deallocated (for heap-allocated objects).
!    It is also called when the value is replaced by an assignment.
  
! However, when ``Relaxed_Finalization`` is either ``True`` or not explicitly
! specified, the following differences are implemented relative to the semantics
! of controlled types:
  
! * The compiler has permission to perform no automatic finalization of
!   heap-allocated objects: ``Finalize`` is only called when such an object
!   is explicitly deallocated, or when the designated object is assigned a new
!   value. As a consequence, no runtime support is needed for performing
!   implicit deallocation. In particular, no per-object header data is needed
!   for heap-allocated objects.
  
+   Heap-allocated objects allocated through a nested access type will therefore
+   **not** be deallocated either. The result is simply that memory will be leaked
+   in this case.
  
! * The ``Adjust`` and ``Finalize`` procedures are automatically considered as
!   having the :ref:`No_Raise_Aspect` specified for them. In particular, the
!   compiler has permission to enforce none of the guarantees specified by the
!   RM 7.6.1 (14/1) and subsequent subclauses.
  
! Simple example of ref-counted type:
  
  .. code-block:: ada
  
     type T is record
!       Value     : Integer;
        Ref_Count : Natural := 0;
     end record;
  
*************** A simple example of a ref-counted type:
*** 1571,1578 ****
     type T_Ref is record
        Value : T_Access;
     end record
!       with Adjust   => Adjust,
!          Finalize => Finalize;
  
     procedure Adjust (Ref : in out T_Ref) is
     begin
--- 1534,1541 ----
     type T_Ref is record
        Value : T_Access;
     end record
!       with Finalizable => (Adjust   => Adjust,
!                            Finalize => Finalize);
  
     procedure Adjust (Ref : in out T_Ref) is
     begin
*************** A simple example of a ref-counted type:
*** 1584,1591 ****
        Def_Ref (Ref.Value);
     end Finalize;
  
! 
! A simple file handle that ensures resources are properly released:
  
  .. code-block:: ada
  
--- 1547,1553 ----
        Def_Ref (Ref.Value);
     end Finalize;
  
! Simple file handle that ensures resources are properly released:
  
  .. code-block:: ada
  
*************** A simple file handle that ensures resour
*** 1595,1645 ****
        function Open (Path : String) return File;
  
        procedure Close (F : in out File);
     private
        type File is limited record
           Handle : ...;
        end record
!          with Finalize => Close;
! 
! 
! Finalized tagged types
! ^^^^^^^^^^^^^^^^^^^^^^^
  
! Aspects are inherited by derived types and optionally overriden by those. The
! compiler-generated calls to the user-defined operations are then
! dispatching whenever it makes sense, i.e. the object in question is of
! class-wide type and the class includes at least one finalized tagged type.
  
! However note that for simplicity, it is forbidden to change the value of any of
! those new aspects in derived types.
  
  Composite types
  ^^^^^^^^^^^^^^^
  
! When a finalized type is used as a component of a composite type, the latter
! becomes finalized as well. The three primitives are derived automatically
! in order to call the primitives of their components.
! 
! If that composite type was already user-finalized, then the compiler
! calls the primitives of the components so as to stay consistent with today's
! controlled types's behavior.
! 
! So, ``Initialize`` and ``Adjust`` are called on components before they
! are called on the composite object, but ``Finalize`` is  called on the composite
! object first.
  
  Interoperability with controlled types
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! As a consequence of the redefinition of the ``Controlled`` type as a base type
! with the new aspects defined, interoperability with controlled type naturally
! follows the definition of the above rules. In particular:
  
! * It is possible to have a new finalized type have a controlled type
!   component
! * It is possible to have a controlled type have a finalized type
!   component
  
  
  Inference of Dependent Types in Generic Instantiations
  ------------------------------------------------------
--- 1557,1603 ----
        function Open (Path : String) return File;
  
        procedure Close (F : in out File);
+ 
     private
        type File is limited record
           Handle : ...;
        end record
!          with Finalizable (Finalize => Close);
!    end P;
  
! Finalizable tagged types
! ^^^^^^^^^^^^^^^^^^^^^^^^
  
! The aspect is inherited by derived types and the primitives may be overridden
! by the derivation. The compiler-generated calls to these operations are then
! dispatching whenever it makes sense, i.e. when the object in question is of a
! class-wide type and the class includes at least one finalizable tagged type.
  
  Composite types
  ^^^^^^^^^^^^^^^
  
! When a finalizable type is used as a component of a composite type, the latter
! becomes finalizable as well. The three primitives are derived automatically
! in order to call the primitives of their components. The dynamic semantics is
! the same as for controlled components of composite types.
  
  Interoperability with controlled types
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  
! Finalizable types are fully interoperable with controlled types, in particular
! it is possible for a finalizable type to have a controlled component and vice
! versa, but the stricter dynamic semantics, in other words that of controlled
! types, is applied in this case.
  
! .. _No_Raise_Aspect:
! 
! No_Raise aspect
! ----------------
  
+ The ``No_Raise`` aspect can be applied to a subprogram to declare that this
+ subprogram is not expected to raise an exception. Should an exception still
+ be raised during the execution of the subprogram, it is caught at the end of
+ this execution and ``Program_Error`` is propagated to the caller.
  
  Inference of Dependent Types in Generic Instantiations
  ------------------------------------------------------
diff -Nrcpad gcc-16-20250608/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst gcc-16-20250615/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
*** gcc-16-20250608/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Sun Jun 15 22:32:22 2025
*************** and generics may name types with unknown
*** 123,128 ****
--- 123,133 ----
  the ``(<>)`` notation.  In addition, some but not all of the additional
  restrictions of Ada 83 are enforced.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  Ada 83 mode is intended for two purposes.  Firstly, it allows existing
  Ada 83 code to be compiled and adapted to GNAT with less effort.
  Secondly, it aids in keeping code backwards compatible with Ada 83.
*************** contexts.  This pragma is useful when wr
*** 149,154 ****
--- 154,164 ----
  itself uses Ada 95 features, but which is intended to be usable from
  either Ada 83 or Ada 95 programs.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  Pragma Ada_05
  =============
  
*************** This pragma is useful when writing a reu
*** 166,171 ****
--- 176,186 ----
  itself uses Ada 2005 features, but which is intended to be usable from
  either Ada 83 or Ada 95 programs.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  The one argument form (which is not a configuration pragma)
  is used for managing the transition from
  Ada 95 to Ada 2005 in the run-time library. If an entity is marked
*************** contexts.  This pragma is useful when wr
*** 209,214 ****
--- 224,234 ----
  itself uses Ada 2012 features, but which is intended to be usable from
  Ada 83, Ada 95, or Ada 2005 programs.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  The one argument form, which is not a configuration pragma,
  is used for managing the transition from Ada
  2005 to Ada 2012 in the run-time library. If an entity is marked
*************** contexts.  This pragma is useful when wr
*** 252,257 ****
--- 272,282 ----
  itself uses Ada 2022 features, but which is intended to be usable from
  Ada 83, Ada 95, Ada 2005 or Ada 2012 programs.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  The one argument form, which is not a configuration pragma,
  is used for managing the transition from Ada
  2012 to Ada 2022 in the run-time library. If an entity is marked
diff -Nrcpad gcc-16-20250608/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-16-20250615/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-16-20250608/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun Jun 15 22:32:22 2025
*************** Alphabetical List of All Switches
*** 2112,2118 ****
  
  .. index:: -gnatR  (gcc)
  
! :switch:`-gnatR[0|1|2|3|4][e][j][m][s]`
    Output representation information for declared types, objects and
    subprograms. Note that this switch is not allowed if a previous
    :switch:`-gnatD` switch has been given, since these two switches
--- 2112,2118 ----
  
  .. index:: -gnatR  (gcc)
  
! :switch:`-gnatR[0|1|2|3|4][e][h][m][j][s]`
    Output representation information for declared types, objects and
    subprograms. Note that this switch is not allowed if a previous
    :switch:`-gnatD` switch has been given, since these two switches
*************** Alphabetical List of All Switches
*** 2259,2273 ****
    ======= ==================================================================
     *n*     Effect
    ------- ------------------------------------------------------------------
!   *0*      No optimization, the default setting if no :switch:`-O` appears
!   *1*      Normal optimization, the default if you specify :switch:`-O` without an
!            operand. A good compromise between code quality and compilation
!            time.
!   *2*      Extensive optimization, may improve execution time, possibly at
             the cost of substantially increased compilation time.
!   *3*      Same as :switch:`-O2`, and also includes inline expansion for small
!            subprograms in the same unit.
!   *s*      Optimize space usage
    ======= ==================================================================
  
    See also :ref:`Optimization_Levels`.
--- 2259,2274 ----
    ======= ==================================================================
     *n*     Effect
    ------- ------------------------------------------------------------------
!   *0*      No optimization, the default setting if no :switch:`-O` appears.
!   *1*      Moderate optimization, same as :switch:`-O` without an operand.
!            A good compromise between code quality and compilation time.
!   *2*      Extensive optimization, should improve execution time, possibly at
             the cost of substantially increased compilation time.
!   *3*      Full optimization, may further improve execution time, possibly at
!            the cost of substantially larger generated code.
!   *s*      Optimize for size (code and data) rather than speed.
!   *z*      Optimize aggressively for size (code and data) rather than speed.
!   *g*      Optimize for debugging experience rather than speed.
    ======= ==================================================================
  
    See also :ref:`Optimization_Levels`.
*************** Debugging Control
*** 6088,6094 ****
  
  .. index:: -gnatR  (gcc)
  
! :switch:`-gnatR[0|1|2|3|4][e][j][m][s]`
    This switch controls output from the compiler of a listing showing
    representation information for declared types, objects and subprograms.
    For :switch:`-gnatR0`, no information is output (equivalent to omitting
--- 6089,6095 ----
  
  .. index:: -gnatR  (gcc)
  
! :switch:`-gnatR[0|1|2|3|4][e][h][m][j][s]`
    This switch controls output from the compiler of a listing showing
    representation information for declared types, objects and subprograms.
    For :switch:`-gnatR0`, no information is output (equivalent to omitting
*************** Debugging Control
*** 6116,6132 ****
    extended representation information for record sub-components of records
    is included.
  
    If the switch is followed by an ``m`` (e.g. :switch:`-gnatRm`), then
    subprogram conventions and parameter passing mechanisms for all the
    subprograms are included.
  
!   If the switch is followed by a ``j`` (e.g., :switch:`-gnatRj`), then
    the output is in the JSON data interchange format specified by the
    ECMA-404 standard. The semantic description of this JSON output is
    available in the specification of the Repinfo unit present in the
    compiler sources.
  
!   If the switch is followed by an ``s`` (e.g., :switch:`-gnatR3s`), then
    the output is to a file with the name :file:`file.rep` where ``file`` is
    the name of the corresponding source file, except if ``j`` is also
    specified, in which case the file name is :file:`file.json`.
--- 6117,6137 ----
    extended representation information for record sub-components of records
    is included.
  
+   If the switch is followed by a ``h`` (e.g. :switch:`-gnatR3h`), then
+   the components of records are sorted by increasing offsets and holes
+   between consecutive components are flagged.
+ 
    If the switch is followed by an ``m`` (e.g. :switch:`-gnatRm`), then
    subprogram conventions and parameter passing mechanisms for all the
    subprograms are included.
  
!   If the switch is followed by a ``j`` (e.g. :switch:`-gnatRj`), then
    the output is in the JSON data interchange format specified by the
    ECMA-404 standard. The semantic description of this JSON output is
    available in the specification of the Repinfo unit present in the
    compiler sources.
  
!   If the switch is followed by an ``s`` (e.g. :switch:`-gnatR3s`), then
    the output is to a file with the name :file:`file.rep` where ``file`` is
    the name of the corresponding source file, except if ``j`` is also
    specified, in which case the file name is :file:`file.json`.
diff -Nrcpad gcc-16-20250608/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst gcc-16-20250615/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
*** gcc-16-20250608/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Sun Jun 15 22:32:22 2025
*************** Turning on optimization makes the compil
*** 1584,1601 ****
  performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
! If you use multiple :switch:`-O` switches, with or without level
! numbers, the last such switch is the one that's used.
! 
! You can use the
! :switch:`-O` switch (the permitted forms are :switch:`-O0`, :switch:`-O1`
! :switch:`-O2`, :switch:`-O3`, and :switch:`-Os`)
! to ``gcc`` to control the optimization level:
  
  
  * :switch:`-O0`
!     No optimization (the default);
!     generates unoptimized code but has
      the fastest compilation time. Debugging is easiest with this switch.
  
      Note that many other compilers do substantial optimization even if
--- 1584,1599 ----
  performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
! You can pass the :switch:`-O` switch, with or without an operand
! (the permitted forms with an operand are :switch:`-O0`, :switch:`-O1`,
! :switch:`-O2`, :switch:`-O3`, :switch:`-Os`, :switch:`-Oz`, and
! :switch:`-Og`) to ``gcc`` to control the optimization level. If you
! pass multiple :switch:`-O` switches, with or without an operand,
! the last such switch is the one that's used:
  
  
  * :switch:`-O0`
!     No optimization (the default); generates unoptimized code but has
      the fastest compilation time. Debugging is easiest with this switch.
  
      Note that many other compilers do substantial optimization even if
*************** to ``gcc`` to control the optimization l
*** 1606,1637 ****
      mind when doing performance comparisons.
  
  * :switch:`-O1`
!     Moderate optimization; optimizes reasonably well but does not
!     degrade compilation time significantly. You may not be able to see
!     some variables in the debugger and changing the value of some
!     variables in the debugger may not have the effect you desire.
  
  * :switch:`-O2`
!     Full optimization;
!     generates highly optimized code and has
!     the slowest compilation time. You may see significant impacts on
      your ability to display and modify variables in the debugger.
  
  * :switch:`-O3`
!     Full optimization as in :switch:`-O2`;
!     also uses more aggressive automatic inlining of subprograms within a unit
!     (:ref:`Inlining_of_Subprograms`) and attempts to vectorize loops.
! 
  
  * :switch:`-Os`
!     Optimize space usage (code and data) of resulting program.
  
  Higher optimization levels perform more global transformations on the
  program and apply more expensive analysis algorithms in order to generate
  faster and more compact code. The price in compilation time, and the
! resulting improvement in execution time,
! both depend on the particular application and the hardware environment.
! You should experiment to find the best level for your application.
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
--- 1604,1648 ----
      mind when doing performance comparisons.
  
  * :switch:`-O1`
!     Moderate optimization (same as :switch:`-O` without an operand);
!     optimizes reasonably well but does not degrade compilation time
!     significantly. You may not be able to see some variables in the
!     debugger, and changing the value of some variables in the debugger
!     may not have the effect you desire.
  
  * :switch:`-O2`
!     Extensive optimization; generates highly optimized code but has
!     an increased compilation time. You may see significant impacts on
      your ability to display and modify variables in the debugger.
  
  * :switch:`-O3`
!     Full optimization; attempts more sophisticated transformations, in
!     particular on loops, possibly at the cost of larger generated code.
!     You may be hardly able to use the debugger at this optimization level.
  
  * :switch:`-Os`
!     Optimize for size (code and data) of resulting binary rather than
!     speed; based on the :switch:`-O2` optimization level, but disables
!     some of its transformations that often increase code size, as well
!     as performs further optimizations designed to reduce code size.
! 
! * :switch:`-Oz`
!     Optimize aggressively for size (code and data) of resulting binary
!     rather than speed; may increase the number of instructions executed
!     if these instructions require fewer bytes to be encoded.
! 
! * :switch:`-Og`
!     Optimize for debugging experience rather than speed; based on the
!     :switch:`-O1` optimization level, but attempts to eliminate all the
!     negative effects of optimization on debugging.
! 
  
  Higher optimization levels perform more global transformations on the
  program and apply more expensive analysis algorithms in order to generate
  faster and more compact code. The price in compilation time, and the
! resulting improvement in execution time, both depend on the particular
! application and the hardware environment. You should experiment to find
! the best level for your application.
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
diff -Nrcpad gcc-16-20250608/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst gcc-16-20250615/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
*** gcc-16-20250608/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Sun Jun 15 22:32:22 2025
*************** You can place configuration pragmas eith
*** 1477,1482 ****
--- 1477,1486 ----
  unit or in a configuration pragma file that applies to
  all compilations performed in a given compilation environment.
  
+ Configuration pragmas placed before a library level package specification
+ are not propagated to the corresponding package body (see RM 10.1.5(8));
+ they must be added explicitly to the package body.
+ 
  GNAT includes the ``gnatchop`` utility to provide an automatic
  way to handle configuration pragmas that follows the semantics for
  compilations (that is, files with multiple units) described in the RM.
diff -Nrcpad gcc-16-20250608/gcc/ada/einfo-utils.adb gcc-16-20250615/gcc/ada/einfo-utils.adb
*** gcc-16-20250608/gcc/ada/einfo-utils.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/einfo-utils.adb	Sun Jun 15 22:32:22 2025
*************** package body Einfo.Utils is
*** 2639,2652 ****
        --  anonymous protected types, since protected types always have the
        --  default convention.
  
!       if Present (Etype (E))
!         and then (Is_Object (E)
! 
!                    --  Allow E_Void (happens for pragma Convention appearing
!                    --  in the middle of a record applying to a component)
! 
!                    or else Ekind (E) = E_Void)
!       then
           declare
              Typ : constant Entity_Id := Etype (E);
  
--- 2639,2645 ----
        --  anonymous protected types, since protected types always have the
        --  default convention.
  
!       if Present (Etype (E)) and then Is_Object (E) then
           declare
              Typ : constant Entity_Id := Etype (E);
  
diff -Nrcpad gcc-16-20250608/gcc/ada/einfo.ads gcc-16-20250615/gcc/ada/einfo.ads
*** gcc-16-20250608/gcc/ada/einfo.ads	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/einfo.ads	Sun Jun 15 22:32:22 2025
*************** package Einfo is
*** 463,473 ****
  
  --       For an access_to_protected_subprogram parameter it is the declaration
  --       of the corresponding formal parameter.
! --
! --       Itypes have no explicit declaration, and therefore are not attached to
! --       the tree: their Parent field is always empty. The Associated_Node_For_
! --       Itype is the only way to determine the construct that leads to the
! --       creation of a given itype entity.
  
  --    Associated_Storage_Pool [root type only]
  --       Defined in simple and general access type entities. References the
--- 463,475 ----
  
  --       For an access_to_protected_subprogram parameter it is the declaration
  --       of the corresponding formal parameter.
! 
! --       Itypes need not have an explicit declaration, in which case they are
! --       not attached to the tree through the Parent field, which is empty. In
! --       other cases, they have one and are attached to the tree through the
! --       Parent field as usual. Associated_Node_For_Itype should be used to
! --       determine the construct that leads to the creation of a given itype
! --       entity.
  
  --    Associated_Storage_Pool [root type only]
  --       Defined in simple and general access type entities. References the
*************** package Einfo is
*** 1606,1612 ****
  
  --    Has_Dynamic_Predicate_Aspect
  --       Defined in all types and subtypes. Set if a Dynamic_Predicate aspect
! --       was explicitly applied to the type. Generally we treat predicates as
  --       static if possible, regardless of whether they are specified using
  --       Predicate, Static_Predicate, or Dynamic_Predicate. And if a predicate
  --       can be treated as static (i.e. its expression is predicate-static),
--- 1608,1614 ----
  
  --    Has_Dynamic_Predicate_Aspect
  --       Defined in all types and subtypes. Set if a Dynamic_Predicate aspect
! --       was applied to the type or subtype. Generally we treat predicates as
  --       static if possible, regardless of whether they are specified using
  --       Predicate, Static_Predicate, or Dynamic_Predicate. And if a predicate
  --       can be treated as static (i.e. its expression is predicate-static),
*************** package Einfo is
*** 1687,1693 ****
  --
  --    Has_Homonym
  --       Defined in all entities. Set if an entity has a homonym in the same
! --       scope. Used by the backend to generate unique names for all entities.
  
  --    Has_Implicit_Dereference
  --       Defined in types and discriminants. Set if the type has an aspect
--- 1689,1695 ----
  --
  --    Has_Homonym
  --       Defined in all entities. Set if an entity has a homonym in the same
! --       scope. Used by Exp_Dbug to generate unique names for all entities.
  
  --    Has_Implicit_Dereference
  --       Defined in types and discriminants. Set if the type has an aspect
*************** package Einfo is
*** 3927,3943 ****
  --         Points to the component in the base type.
  
  --    Overlays_Constant
! --       Defined in all entities. Set only for E_Constant or E_Variable for
! --       which there is an address clause that causes the entity to overlay
! --       a constant object.
  
  --    Overridden_Operation
  --       Defined in subprograms. For overriding operations, points to the
! --       user-defined parent subprogram that is being overridden. Note: this
! --       attribute uses the same field as Static_Initialization. The latter
! --       is only defined for internal initialization procedures, for which
! --       Overridden_Operation is irrelevant. Thus this attribute must not be
! --       set for init_procs.
  
  --    Package_Instantiation
  --       Defined in packages and generic packages. When defined, this field
--- 3929,3940 ----
  --         Points to the component in the base type.
  
  --    Overlays_Constant
! --       Defined in constants and variables. Set if there is an address clause
! --       that causes the entity to overlay a constant object.
  
  --    Overridden_Operation
  --       Defined in subprograms. For overriding operations, points to the
! --       user-defined parent subprogram that is being overridden.
  
  --    Package_Instantiation
  --       Defined in packages and generic packages. When defined, this field
*************** package Einfo is
*** 4491,4499 ****
  --       initialized statically. The value of this attribute is a positional
  --       aggregate whose components are compile-time static values. Used
  --       when available in object declarations to eliminate the call to the
! --       initialization procedure, and to minimize elaboration code. Note:
! --       This attribute uses the same field as Overridden_Operation, which is
! --       irrelevant in init_procs.
  
  --    Static_Real_Or_String_Predicate
  --       Defined in real types/subtypes with static predicates (with the two
--- 4488,4494 ----
  --       initialized statically. The value of this attribute is a positional
  --       aggregate whose components are compile-time static values. Used
  --       when available in object declarations to eliminate the call to the
! --       initialization procedure, and to minimize elaboration code.
  
  --    Static_Real_Or_String_Predicate
  --       Defined in real types/subtypes with static predicates (with the two
*************** package Einfo is
*** 4961,4967 ****
     --    Materialize_Entity
     --    Needs_Debug_Info
     --    Never_Set_In_Source
-    --    Overlays_Constant
     --    Referenced
     --    Referenced_As_LHS
     --    Referenced_As_Out_Parameter
--- 4956,4961 ----
*************** package Einfo is
*** 5288,5294 ****
     --    Interface_Name                        (constants only)
     --    Related_Type                          (constants only)
     --    Initialization_Statements
!    --    BIP_Initialization_Call
     --    Finalization_Master_Node
     --    Last_Aggregate_Assignment
     --    Activation_Record_Component
--- 5282,5288 ----
     --    Interface_Name                        (constants only)
     --    Related_Type                          (constants only)
     --    Initialization_Statements
!    --    BIP_Initialization_Call               (constants only)
     --    Finalization_Master_Node
     --    Last_Aggregate_Assignment
     --    Activation_Record_Component
*************** package Einfo is
*** 5318,5323 ****
--- 5312,5318 ----
     --    Is_Volatile_Full_Access
     --    Optimize_Alignment_Space              (constants only)
     --    Optimize_Alignment_Time               (constants only)
+    --    Overlays_Constant                     (constants only)
     --    SPARK_Pragma_Inherited                (constants only)
     --    Stores_Attribute_Old_Prefix           (constants only)
     --    Treat_As_Volatile
*************** package Einfo is
*** 6205,6210 ****
--- 6200,6206 ----
     --    OK_To_Rename
     --    Optimize_Alignment_Space
     --    Optimize_Alignment_Time
+    --    Overlays_Constant
     --    SPARK_Pragma_Inherited
     --    Suppress_Initialization
     --    Treat_As_Volatile
diff -Nrcpad gcc-16-20250608/gcc/ada/exp_aggr.adb gcc-16-20250615/gcc/ada/exp_aggr.adb
*** gcc-16-20250608/gcc/ada/exp_aggr.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/exp_aggr.adb	Sun Jun 15 22:32:22 2025
*************** package body Exp_Aggr is
*** 7017,7023 ****
        begin
           return UI_To_Int ((if Nkind (Expr) = N_Integer_Literal
                              then Intval (Expr)
!                             else Enumeration_Pos (Expr)));
        end To_Int;
  
        --  Local variables
--- 7017,7023 ----
        begin
           return UI_To_Int ((if Nkind (Expr) = N_Integer_Literal
                              then Intval (Expr)
!                             else Enumeration_Pos (Entity (Expr))));
        end To_Int;
  
        --  Local variables
*************** package body Exp_Aggr is
*** 7503,7512 ****
           Set_Assignment_OK (Lhs);
  
           Aggr_Code := Build_Container_Aggr_Code (N, Typ, Lhs, Init);
           Prepend_To (Aggr_Code,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Obj_Id,
!              Object_Definition   => New_Occurrence_Of (Typ, Loc),
               Expression          => Init));
  
           Insert_Actions (N, Aggr_Code);
--- 7503,7521 ----
           Set_Assignment_OK (Lhs);
  
           Aggr_Code := Build_Container_Aggr_Code (N, Typ, Lhs, Init);
+ 
+          --  Use the unconstrained base subtype of the subtype provided by
+          --  the context for declaring the temporary object (which may come
+          --  from a constrained assignment target), to ensure that the
+          --  aggregate can be successfully expanded and assigned to the
+          --  temporary without exceeding its capacity. (Later assignment
+          --  of the temporary to a target object may result in failing
+          --  a discriminant check.)
+ 
           Prepend_To (Aggr_Code,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Obj_Id,
!              Object_Definition   => New_Occurrence_Of (Base_Type (Typ), Loc),
               Expression          => Init));
  
           Insert_Actions (N, Aggr_Code);
diff -Nrcpad gcc-16-20250608/gcc/ada/exp_attr.adb gcc-16-20250615/gcc/ada/exp_attr.adb
*** gcc-16-20250608/gcc/ada/exp_attr.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/exp_attr.adb	Sun Jun 15 22:32:22 2025
*************** package body Exp_Attr is
*** 8183,8191 ****
           else
              declare
                 Uns  : constant Boolean :=
!                         Is_Unsigned_Type (Ptyp)
!                           or else (Is_Private_Type (Ptyp)
!                                     and then Is_Unsigned_Type (PBtyp));
                 Size : Uint;
                 P    : Node_Id := Pref;
  
--- 8183,8190 ----
           else
              declare
                 Uns  : constant Boolean :=
!                  Is_Unsigned_Type (Validated_View (Ptyp));
! 
                 Size : Uint;
                 P    : Node_Id := Pref;
  
diff -Nrcpad gcc-16-20250608/gcc/ada/exp_ch3.adb gcc-16-20250615/gcc/ada/exp_ch3.adb
*** gcc-16-20250608/gcc/ada/exp_ch3.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/exp_ch3.adb	Sun Jun 15 22:32:22 2025
*************** package body Exp_Ch3 is
*** 8741,8748 ****
                    --  be illegal in some cases (such as converting access-
                    --  to-unconstrained to access-to-constrained), but the
                    --  the unchecked conversion will presumably fail to work
!                   --  right in just such cases. It's not clear at all how to
!                   --  handle this.
  
                    Alloc_Stmt :=
                      Make_If_Statement (Loc,
--- 8741,8749 ----
                    --  be illegal in some cases (such as converting access-
                    --  to-unconstrained to access-to-constrained), but the
                    --  the unchecked conversion will presumably fail to work
!                   --  right in just such cases. In order to handle this
!                   --  properly, in the Caller_Allocation case, the callee
!                   --  needs to do the constraint check.
  
                    Alloc_Stmt :=
                      Make_If_Statement (Loc,
diff -Nrcpad gcc-16-20250608/gcc/ada/exp_ch4.adb gcc-16-20250615/gcc/ada/exp_ch4.adb
*** gcc-16-20250608/gcc/ada/exp_ch4.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/exp_ch4.adb	Sun Jun 15 22:32:22 2025
*************** package body Exp_Ch4 is
*** 193,204 ****
  
     procedure Insert_Conditional_Object_Declaration
       (Obj_Id : Entity_Id;
        Expr   : Node_Id;
!       Decl   : Node_Id);
!    --  Expr is the dependent expression of a conditional expression and Decl
!    --  is the declaration of an object whose initialization expression is the
!    --  conditional expression. Insert in the actions of Expr the declaration
!    --  of Obj_Id modeled on Decl and with Expr as initialization expression.
  
     procedure Insert_Dereference_Action (N : Node_Id);
     --  N is an expression whose type is an access. When the type of the
--- 193,204 ----
  
     procedure Insert_Conditional_Object_Declaration
       (Obj_Id : Entity_Id;
+       Typ    : Entity_Id;
        Expr   : Node_Id;
!       Const  : Boolean);
!    --  Expr is the dependent expression of a conditional expression. Insert in
!    --  the actions of Expr the declaration of Obj_Id with type Typ and Expr as
!    --  initialization expression. Const is True when Obj_Id is a constant.
  
     procedure Insert_Dereference_Action (N : Node_Id);
     --  N is an expression whose type is an access. When the type of the
*************** package body Exp_Ch4 is
*** 5313,5319 ****
        --  'Unrestricted_Access.
  
        --  Generate:
!       --    type Ptr_Typ is not null access all [constant] Typ;
  
        else
           Target_Typ := Make_Temporary (Loc, 'P');
--- 5313,5319 ----
        --  'Unrestricted_Access.
  
        --  Generate:
!       --    type Target_Typ is not null access all [constant] Typ;
  
        else
           Target_Typ := Make_Temporary (Loc, 'P');
*************** package body Exp_Ch4 is
*** 5411,5430 ****
              elsif Optimize_Object_Decl then
                 Obj := Make_Temporary (Loc, 'C', Alt_Expr);
  
!                Insert_Conditional_Object_Declaration (Obj, Alt_Expr, Par);
! 
!                Alt_Expr :=
!                  Make_Attribute_Reference (Alt_Loc,
!                    Prefix         => New_Occurrence_Of (Obj, Alt_Loc),
!                    Attribute_Name => Name_Unrestricted_Access);
! 
!                LHS := New_Occurrence_Of (Target, Loc);
!                Set_Assignment_OK (LHS);
  
                 Stmts := New_List (
                   Make_Assignment_Statement (Alt_Loc,
!                    Name       => LHS,
!                    Expression => Alt_Expr));
  
              --  Take the unrestricted access of the expression value for non-
              --  scalar types. This approach avoids big copies and covers the
--- 5411,5426 ----
              elsif Optimize_Object_Decl then
                 Obj := Make_Temporary (Loc, 'C', Alt_Expr);
  
!                Insert_Conditional_Object_Declaration
!                  (Obj, Typ, Alt_Expr, Const => Constant_Present (Par));
  
                 Stmts := New_List (
                   Make_Assignment_Statement (Alt_Loc,
!                    Name       => New_Occurrence_Of (Target, Loc),
!                    Expression =>
!                      Make_Attribute_Reference (Alt_Loc,
!                        Prefix         => New_Occurrence_Of (Obj, Alt_Loc),
!                        Attribute_Name => Name_Unrestricted_Access)));
  
              --  Take the unrestricted access of the expression value for non-
              --  scalar types. This approach avoids big copies and covers the
*************** package body Exp_Ch4 is
*** 6022,6029 ****
              Target   : constant Entity_Id := Make_Temporary (Loc, 'C', N);
  
           begin
!             Insert_Conditional_Object_Declaration (Then_Obj, Thenx, Par);
!             Insert_Conditional_Object_Declaration (Else_Obj, Elsex, Par);
  
              --  Generate:
              --    type Ptr_Typ is not null access all [constant] Typ;
--- 6018,6027 ----
              Target   : constant Entity_Id := Make_Temporary (Loc, 'C', N);
  
           begin
!             Insert_Conditional_Object_Declaration
!               (Then_Obj, Typ, Thenx, Const => Constant_Present (Par));
!             Insert_Conditional_Object_Declaration
!               (Else_Obj, Typ, Elsex, Const => Constant_Present (Par));
  
              --  Generate:
              --    type Ptr_Typ is not null access all [constant] Typ;
*************** package body Exp_Ch4 is
*** 13294,13309 ****
  
     procedure Insert_Conditional_Object_Declaration
       (Obj_Id : Entity_Id;
        Expr   : Node_Id;
!       Decl   : Node_Id)
     is
        Loc      : constant Source_Ptr := Sloc (Expr);
        Obj_Decl : constant Node_Id :=
          Make_Object_Declaration (Loc,
            Defining_Identifier => Obj_Id,
            Aliased_Present     => True,
!           Constant_Present    => Constant_Present (Decl),
!           Object_Definition   => New_Copy_Tree (Object_Definition (Decl)),
            Expression          => Relocate_Node (Expr));
        --  We make the object unconditionally aliased to avoid dangling bound
        --  issues when its nominal subtype is an unconstrained array type.
--- 13292,13308 ----
  
     procedure Insert_Conditional_Object_Declaration
       (Obj_Id : Entity_Id;
+       Typ    : Entity_Id;
        Expr   : Node_Id;
!       Const  : Boolean)
     is
        Loc      : constant Source_Ptr := Sloc (Expr);
        Obj_Decl : constant Node_Id :=
          Make_Object_Declaration (Loc,
            Defining_Identifier => Obj_Id,
            Aliased_Present     => True,
!           Constant_Present    => Const,
!           Object_Definition   => New_Occurrence_Of (Typ, Loc),
            Expression          => Relocate_Node (Expr));
        --  We make the object unconditionally aliased to avoid dangling bound
        --  issues when its nominal subtype is an unconstrained array type.
*************** package body Exp_Ch4 is
*** 13322,13330 ****
        Insert_Action (Expr, Obj_Decl);
  
        --  The object can never be local to an elaboration routine at library
!       --  level since we will take 'Unrestricted_Access of it.
  
!       Set_Is_Statically_Allocated (Obj_Id, Is_Library_Level_Entity (Obj_Id));
  
        --  If the object needs finalization, we need to insert its Master_Node
        --  manually because 1) the machinery in Exp_Ch7 will not pick it since
--- 13321,13339 ----
        Insert_Action (Expr, Obj_Decl);
  
        --  The object can never be local to an elaboration routine at library
!       --  level since we will take 'Unrestricted_Access of it. Beware that
!       --  Is_Library_Level_Entity always returns False when called from within
!       --  a transient scope, but the associated block will not be materialized
!       --  when the transient scope is finally closed in the case of an object
!       --  declaration (see Exp.Ch7.Wrap_Transient_Declaration).
  
!       if Scope (Obj_Id) = Current_Scope and then Scope_Is_Transient then
!          Set_Is_Statically_Allocated
!            (Obj_Id, Is_Library_Level_Entity (Scope (Obj_Id)));
!       else
!          Set_Is_Statically_Allocated
!            (Obj_Id, Is_Library_Level_Entity (Obj_Id));
!       end if;
  
        --  If the object needs finalization, we need to insert its Master_Node
        --  manually because 1) the machinery in Exp_Ch7 will not pick it since
diff -Nrcpad gcc-16-20250608/gcc/ada/exp_ch6.adb gcc-16-20250615/gcc/ada/exp_ch6.adb
*** gcc-16-20250608/gcc/ada/exp_ch6.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/exp_ch6.adb	Sun Jun 15 22:32:23 2025
*************** package body Exp_Ch6 is
*** 158,164 ****
        Alloc_Form_Exp : Node_Id             := Empty;
        Pool_Exp       : Node_Id             := Empty);
     --  Ada 2005 (AI-318-02): If the result type of a build-in-place call needs
!    --  them, add the actuals parameters BIP_Alloc_Form and BIP_Storage_Pool.
     --  If Alloc_Form_Exp is present, then pass it for the first parameter,
     --  otherwise pass a literal corresponding to the Alloc_Form parameter
     --  (which must not be Unspecified in that case). If Pool_Exp is present,
--- 158,164 ----
        Alloc_Form_Exp : Node_Id             := Empty;
        Pool_Exp       : Node_Id             := Empty);
     --  Ada 2005 (AI-318-02): If the result type of a build-in-place call needs
!    --  them, add the actual parameters BIP_Alloc_Form and BIP_Storage_Pool.
     --  If Alloc_Form_Exp is present, then pass it for the first parameter,
     --  otherwise pass a literal corresponding to the Alloc_Form parameter
     --  (which must not be Unspecified in that case). If Pool_Exp is present,
*************** package body Exp_Ch6 is
*** 442,450 ****
           return;
        end if;
  
!       --  Locate the implicit allocation form parameter in the called function.
!       --  Maybe it would be better for each implicit formal of a build-in-place
!       --  function to have a flag or a Uint attribute to identify it. ???
  
        Alloc_Form_Formal := Build_In_Place_Formal (Function_Id, BIP_Alloc_Form);
  
--- 442,448 ----
           return;
        end if;
  
!       --  Locate the implicit allocation form parameter in the called function
  
        Alloc_Form_Formal := Build_In_Place_Formal (Function_Id, BIP_Alloc_Form);
  
*************** package body Exp_Ch6 is
*** 928,936 ****
        Formal_Suffix : constant String := BIP_Formal_Suffix (Kind);
  
     begin
-       --  Maybe it would be better for each implicit formal of a build-in-place
-       --  function to have a flag or a Uint attribute to identify it. ???
- 
        --  The return type in the function declaration may have been a limited
        --  view, and the extra formals for the function were not generated at
        --  that point. At the point of call the full view must be available and
--- 926,931 ----
*************** package body Exp_Ch6 is
*** 8821,8826 ****
--- 8816,8840 ----
            and then
          not Has_Foreign_Convention (Return_Applies_To (Scope (Obj_Def_Id)));
  
+       Constraint_Check_Needed : constant Boolean :=
+         (Has_Discriminants (Obj_Typ) or else Is_Array_Type (Obj_Typ))
+          and then Is_Tagged_Type (Obj_Typ)
+          and then Nkind (Original_Node (Obj_Decl)) /=
+                     N_Object_Renaming_Declaration
+          and then Is_Constrained (Obj_Typ);
+       --  We are processing a call in the context of something like
+       --  "X : T := F (...);". This is True if we need to do a constraint
+       --  check, because T has constrained bounds or discriminants,
+       --  and F is returning an unconstrained subtype.
+       --  We are currently doing the check at the call site,
+       --  which is possible only in the callee-allocates case,
+       --  which is why we have Is_Tagged_Type above.
+       --  ???The check is missing in the untagged caller-allocates case.
+       --  ???The check for renaming declarations above is needed because
+       --  Sem_Ch8.Analyze_Object_Renaming sometimes changes a renaming
+       --  into an object declaration. We probably shouldn't do that,
+       --  but for now, we need this check.
+ 
     --  Start of processing for Make_Build_In_Place_Call_In_Object_Declaration
  
     begin
*************** package body Exp_Ch6 is
*** 8863,8877 ****
                Subtype_Indication =>
                  New_Occurrence_Of (Designated_Type, Loc)));
  
!       --  The access type and its accompanying object must be inserted after
!       --  the object declaration in the constrained case, so that the function
!       --  call can be passed access to the object. In the indefinite case, or
        --  if the object declaration is for a return object, the access type and
        --  object must be inserted before the object, since the object
        --  declaration is rewritten to be a renaming of a dereference of the
        --  access object.
  
!       if Definite and then not Is_OK_Return_Object then
           Insert_Action_After (Obj_Decl, Ptr_Typ_Decl);
        else
           Insert_Action (Obj_Decl, Ptr_Typ_Decl);
--- 8877,8892 ----
                Subtype_Indication =>
                  New_Occurrence_Of (Designated_Type, Loc)));
  
!       --  The access type and its object must be inserted after the object
!       --  declaration in the caller-allocates case, so that the function call
!       --  can be passed access to the object. In the caller-allocates case, or
        --  if the object declaration is for a return object, the access type and
        --  object must be inserted before the object, since the object
        --  declaration is rewritten to be a renaming of a dereference of the
        --  access object.
  
!       if Definite and not Is_OK_Return_Object and not Constraint_Check_Needed
!       then
           Insert_Action_After (Obj_Decl, Ptr_Typ_Decl);
        else
           Insert_Action (Obj_Decl, Ptr_Typ_Decl);
*************** package body Exp_Ch6 is
*** 8952,8958 ****
        --  to the (specific) result type of the function is inserted to handle
        --  the case where the object is declared with a class-wide type.
  
!       elsif Definite then
           Caller_Object := Unchecked_Convert_To
             (Result_Subt, New_Occurrence_Of (Obj_Def_Id, Loc));
  
--- 8967,8973 ----
        --  to the (specific) result type of the function is inserted to handle
        --  the case where the object is declared with a class-wide type.
  
!       elsif Definite and not Constraint_Check_Needed then
           Caller_Object := Unchecked_Convert_To
             (Result_Subt, New_Occurrence_Of (Obj_Def_Id, Loc));
  
*************** package body Exp_Ch6 is
*** 9090,9097 ****
        --  itself the return expression of an enclosing BIP function, then mark
        --  the object as having no initialization.
  
!       if Definite and then not Is_OK_Return_Object then
! 
           Set_Expression (Obj_Decl, Empty);
           Set_No_Initialization (Obj_Decl);
  
--- 9105,9112 ----
        --  itself the return expression of an enclosing BIP function, then mark
        --  the object as having no initialization.
  
!       if Definite and not Is_OK_Return_Object and not Constraint_Check_Needed
!       then
           Set_Expression (Obj_Decl, Empty);
           Set_No_Initialization (Obj_Decl);
  
*************** package body Exp_Ch6 is
*** 9150,9155 ****
--- 9165,9174 ----
           Analyze (Obj_Decl);
           Replace_Renaming_Declaration_Id
             (Obj_Decl, Original_Node (Obj_Decl));
+ 
+          if Constraint_Check_Needed then
+             Apply_Constraint_Check (Call_Deref, Obj_Typ);
+          end if;
        end if;
  
        pragma Assert (Check_Number_Of_Actuals (Func_Call, Function_Id));
*************** package body Exp_Ch6 is
*** 9919,9933 ****
     --  Start of processing for Validate_Subprogram_Calls
  
     begin
!       --  No action required if we are not generating code or compiling sources
!       --  that have errors.
  
!       if Serious_Errors_Detected > 0
!         or else Operating_Mode /= Generate_Code
!       then
           return;
        end if;
  
        Check_Calls (N);
     end Validate_Subprogram_Calls;
  
--- 9938,9952 ----
     --  Start of processing for Validate_Subprogram_Calls
  
     begin
!       --  No action if we are not generating code (including if we have
!       --  errors).
  
!       if Operating_Mode /= Generate_Code then
           return;
        end if;
  
+       pragma Assert (Serious_Errors_Detected = 0);
+ 
        Check_Calls (N);
     end Validate_Subprogram_Calls;
  
diff -Nrcpad gcc-16-20250608/gcc/ada/exp_disp.adb gcc-16-20250615/gcc/ada/exp_disp.adb
*** gcc-16-20250608/gcc/ada/exp_disp.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/exp_disp.adb	Sun Jun 15 22:32:23 2025
*************** package body Exp_Disp is
*** 413,419 ****
              if Nkind (D) = N_Package_Declaration then
                 Build_Package_Dispatch_Tables (D);
  
!             elsif Nkind (D) = N_Package_Body then
                 Build_Dispatch_Tables (Declarations (D));
  
              elsif Nkind (D) = N_Package_Body_Stub
--- 413,421 ----
              if Nkind (D) = N_Package_Declaration then
                 Build_Package_Dispatch_Tables (D);
  
!             elsif Nkind (D) = N_Package_Body
!               and then Ekind (Corresponding_Spec (D)) /= E_Generic_Package
!             then
                 Build_Dispatch_Tables (Declarations (D));
  
              elsif Nkind (D) = N_Package_Body_Stub
diff -Nrcpad gcc-16-20250608/gcc/ada/exp_util.adb gcc-16-20250615/gcc/ada/exp_util.adb
*** gcc-16-20250608/gcc/ada/exp_util.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/exp_util.adb	Sun Jun 15 22:32:23 2025
*************** package body Exp_Util is
*** 1523,1529 ****
              New_E := Type_Map.Get (Entity (N));
  
              if Present (New_E) then
!                Rewrite (N, New_Occurrence_Of (New_E, Sloc (N)));
              end if;
  
              --  Update type of function call node, which should be the same as
--- 1523,1645 ----
              New_E := Type_Map.Get (Entity (N));
  
              if Present (New_E) then
!                declare
! 
!                   Ctrl_Type : constant Entity_Id
!                     := Find_Dispatching_Type (Par_Subp);
! 
!                   function Call_To_Parent_Dispatching_Op_Must_Be_Mapped
!                     (Call_Node : Node_Id) return Boolean;
!                   --  If Call_Node is a call to a primitive function F of the
!                   --  tagged type T associated with Par_Subp that either has
!                   --  any actuals that are controlling formals of Par_Subp,
!                   --  or else the call to F is an actual parameter of an
!                   --  enclosing call to a primitive of T that has any actuals
!                   --  that are controlling formals of Par_Subp (and recursively
!                   --  up the tree of enclosing function calls), returns True;
!                   --  otherwise returns False. Returning True implies that the
!                   --  call to F must be mapped to a call that instead targets
!                   --  the corresponding function F of the tagged type for which
!                   --  Subp is a primitive function.
! 
!                   --------------------------------------------------
!                   -- Call_To_Parent_Dispatching_Op_Must_Be_Mapped --
!                   --------------------------------------------------
! 
!                   function Call_To_Parent_Dispatching_Op_Must_Be_Mapped
!                     (Call_Node : Node_Id) return Boolean
!                   is
!                      pragma Assert (Nkind (Call_Node) = N_Function_Call);
! 
!                      Actual           : Node_Id := First_Actual (Call_Node);
!                      Actual_Or_Prefix : Node_Id;
! 
!                   begin
!                      if Is_Entity_Name (Name (Call_Node))
!                        and then Is_Dispatching_Operation
!                                   (Entity (Name (Call_Node)))
!                        and then
!                             Is_Ancestor
!                               (Ctrl_Type,
!                                Find_Dispatching_Type
!                                  (Entity (Name (Call_Node))))
!                      then
!                         while Present (Actual) loop
! 
!                            --  Account for 'Old and explicit dereferences,
!                            --  picking up the prefix object in those cases.
! 
!                            if (Nkind (Actual) = N_Attribute_Reference
!                                 and then Attribute_Name (Actual) = Name_Old)
!                              or else Nkind (Actual) = N_Explicit_Dereference
!                            then
!                               Actual_Or_Prefix := Prefix (Actual);
!                            else
!                               Actual_Or_Prefix := Actual;
!                            end if;
! 
!                            --  If at least one actual is a controlling formal
!                            --  parameter of a class-wide Pre/Post aspect's
!                            --  subprogram, the rule in RM 6.1.1(7) applies,
!                            --  and we want to map the call to target the
!                            --  corresponding function of the derived type.
! 
!                            if Nkind (Actual_Or_Prefix)
!                                 in N_Identifier
!                                  | N_Expanded_Name
!                                  | N_Operator_Symbol
! 
!                              and then Is_Formal (Entity (Actual_Or_Prefix))
! 
!                              and then Is_Controlling_Formal
!                                         (Entity (Actual_Or_Prefix))
!                            then
!                               return True;
! 
!                            --  RM 6.1.1(7) also applies to Result attributes
!                            --  of primitive functions with controlling results.
! 
!                            elsif Is_Attribute_Result (Actual)
!                              and then Has_Controlling_Result (Subp)
!                            then
!                               return True;
!                            end if;
! 
!                            Next_Actual (Actual);
!                         end loop;
! 
!                         if Nkind (Parent (Call_Node)) = N_Function_Call then
!                            return
!                              Call_To_Parent_Dispatching_Op_Must_Be_Mapped
!                                (Parent (Call_Node));
!                         end if;
! 
!                         return False;
! 
!                      else
!                         return False;
!                      end if;
!                   end Call_To_Parent_Dispatching_Op_Must_Be_Mapped;
! 
!                begin
!                   --  If N's entity is in the map, then the entity is either
!                   --  a formal of the parent subprogram that should necessarily
!                   --  be mapped, or it's a function call's target entity that
!                   --  that should be mapped if the call involves any actuals
!                   --  that reference formals of the parent subprogram (or the
!                   --  function call is part of an enclosing call that similarly
!                   --  qualifies for mapping). Rewrite a node that references
!                   --  any such qualified entity to a new node referencing the
!                   --  corresponding entity associated with the derived type.
! 
!                   if not Is_Subprogram (Entity (N))
!                     or else Nkind (Parent (N)) /= N_Function_Call
!                     or else
!                       Call_To_Parent_Dispatching_Op_Must_Be_Mapped (Parent (N))
!                   then
!                      Rewrite (N, New_Occurrence_Of (New_E, Sloc (N)));
!                   end if;
!                end;
              end if;
  
              --  Update type of function call node, which should be the same as
*************** package body Exp_Util is
*** 8112,8130 ****
                    return;
                 end if;
  
!             --  the expansion of Task and protected type declarations can
              --  create declarations for temporaries which, like other actions
!             --  are inserted and analyzed before the current declaraation.
!             --  However, the current scope is the synchronized type, and
!             --  for unnesting it is critical that the proper scope for these
!             --  generated entities be the enclosing one.
  
              when N_Task_Type_Declaration
                 | N_Protected_Type_Declaration =>
  
!                Push_Scope (Scope (Current_Scope));
!                Insert_List_Before_And_Analyze (P, Ins_Actions);
!                Pop_Scope;
                 return;
  
              --  A special case, N_Raise_xxx_Error can act either as a statement
--- 8228,8258 ----
                    return;
                 end if;
  
!             --  The expansion of task and protected type declarations can
              --  create declarations for temporaries which, like other actions
!             --  are inserted and analyzed before the current declaration.
!             --  However, in some cases, the current scope is the synchronized
!             --  type, and for unnesting it is critical that the proper scope
!             --  for these generated entities be the enclosing one.
  
              when N_Task_Type_Declaration
                 | N_Protected_Type_Declaration =>
  
!                declare
!                   Skip_Scope : constant Boolean :=
!                     Ekind (Current_Scope) in Concurrent_Kind;
!                begin
!                   if Skip_Scope then
!                      Push_Scope (Scope (Current_Scope));
!                   end if;
! 
!                   Insert_List_Before_And_Analyze (P, Ins_Actions);
! 
!                   if Skip_Scope then
!                      Pop_Scope;
!                   end if;
!                end;
! 
                 return;
  
              --  A special case, N_Raise_xxx_Error can act either as a statement
diff -Nrcpad gcc-16-20250608/gcc/ada/freeze.adb gcc-16-20250615/gcc/ada/freeze.adb
*** gcc-16-20250608/gcc/ada/freeze.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/freeze.adb	Sun Jun 15 22:32:23 2025
*************** package body Freeze is
*** 715,724 ****
           then
              declare
                 O_Ent : Entity_Id;
                 Off   : Boolean;
  
              begin
!                Find_Overlaid_Entity (Addr, O_Ent, Off);
  
                 if Ekind (O_Ent) = E_Constant
                   and then Etype (O_Ent) = Typ
--- 715,725 ----
           then
              declare
                 O_Ent : Entity_Id;
+                O_Typ : Entity_Id;
                 Off   : Boolean;
  
              begin
!                Find_Overlaid_Entity (Addr, O_Ent, O_Typ, Off);
  
                 if Ekind (O_Ent) = E_Constant
                   and then Etype (O_Ent) = Typ
*************** package body Freeze is
*** 6869,6877 ****
                 end if;
              end if;
  
!             --  Static objects require special handling
  
              if (Ekind (E) = E_Constant or else Ekind (E) = E_Variable)
                and then Is_Statically_Allocated (E)
              then
                 Freeze_Static_Object (E);
--- 6870,6879 ----
                 end if;
              end if;
  
!             --  Statically allocated objects require special handling
  
              if (Ekind (E) = E_Constant or else Ekind (E) = E_Variable)
+               and then No (Renamed_Object (E))
                and then Is_Statically_Allocated (E)
              then
                 Freeze_Static_Object (E);
*************** package body Freeze is
*** 10231,10241 ****
           --  issue an error message saying that this object cannot be imported
           --  or exported. If it has an address clause it is an overlay in the
           --  current partition and the static requirement is not relevant.
!          --  Do not issue any error message when ignoring rep clauses.
  
           if Ignore_Rep_Clauses then
              null;
  
           elsif Is_Imported (E) then
              if No (Address_Clause (E)) then
                 Error_Msg_N
--- 10233,10249 ----
           --  issue an error message saying that this object cannot be imported
           --  or exported. If it has an address clause it is an overlay in the
           --  current partition and the static requirement is not relevant.
!          --  Do not issue any error message when ignoring rep clauses or for
!          --  compiler-generated entities.
  
           if Ignore_Rep_Clauses then
              null;
  
+          elsif not Comes_From_Source (E) then
+             pragma
+               Assert (Nkind (Parent (Declaration_Node (E))) in N_Case_Statement
+                                                              | N_If_Statement);
+ 
           elsif Is_Imported (E) then
              if No (Address_Clause (E)) then
                 Error_Msg_N
diff -Nrcpad gcc-16-20250608/gcc/ada/frontend.adb gcc-16-20250615/gcc/ada/frontend.adb
*** gcc-16-20250608/gcc/ada/frontend.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/frontend.adb	Sun Jun 15 22:32:23 2025
*************** begin
*** 506,514 ****
  
     --  Verify the validity of the tree
  
!    if Debug_Flag_Underscore_VV then
!       VAST.Check_Tree (Cunit (Main_Unit));
!    end if;
  
     --  Validate all the subprogram calls; this work will be done by VAST; in
     --  the meantime it is done to check extra formals and it can be disabled
--- 506,512 ----
  
     --  Verify the validity of the tree
  
!    VAST.VAST;
  
     --  Validate all the subprogram calls; this work will be done by VAST; in
     --  the meantime it is done to check extra formals and it can be disabled
diff -Nrcpad gcc-16-20250608/gcc/ada/gcc-interface/decl.cc gcc-16-20250615/gcc/ada/gcc-interface/decl.cc
*** gcc-16-20250608/gcc/ada/gcc-interface/decl.cc	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/gcc-interface/decl.cc	Sun Jun 15 22:32:23 2025
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1228,1233 ****
--- 1228,1251 ----
  	    gnu_expr = gnat_build_constructor (gnu_type, v);
  	  }
  
+ 	/* If we are allocating the anonymous object of a small aggregate on
+ 	   the stack, zero-initialize it so that the entire object is assigned
+ 	   and the subsequent assignments need not preserve unknown bits, but
+ 	   do it only when optimization is enabled for the sake of consistency
+ 	   with the gimplifier which does the same for CONSTRUCTORs.  */
+ 	else if (definition
+ 		 && !imported_p
+ 		 && !static_flag
+ 		 && !gnu_expr
+ 		 && TREE_CODE (gnu_type) == RECORD_TYPE
+ 		 && TREE_CODE (gnu_object_size) == INTEGER_CST
+ 		 && compare_tree_int (gnu_object_size, MAX_FIXED_MODE_SIZE) <= 0
+ 		 && Present (Related_Expression (gnat_entity))
+ 		 && Nkind (Original_Node (Related_Expression (gnat_entity)))
+ 		    == N_Aggregate
+ 		 && optimize)
+ 	    gnu_expr = build_constructor (gnu_type, NULL);
+ 
  	/* Convert the expression to the type of the object if need be.  */
  	if (gnu_expr && initial_value_needs_conversion (gnu_type, gnu_expr))
  	  gnu_expr = convert (gnu_type, gnu_expr);
*************** inline_status_for_subprog (Entity_Id sub
*** 5251,5257 ****
  	  && Is_Record_Type (Etype (First_Formal (subprog)))
  	  && (gnu_type = gnat_to_gnu_type (Etype (First_Formal (subprog))))
  	  && !TYPE_IS_BY_REFERENCE_P (gnu_type)
! 	  && tree_fits_uhwi_p (TYPE_SIZE (gnu_type))
  	  && compare_tree_int (TYPE_SIZE (gnu_type), MAX_FIXED_MODE_SIZE) <= 0)
  	return is_prescribed;
  
--- 5269,5275 ----
  	  && Is_Record_Type (Etype (First_Formal (subprog)))
  	  && (gnu_type = gnat_to_gnu_type (Etype (First_Formal (subprog))))
  	  && !TYPE_IS_BY_REFERENCE_P (gnu_type)
! 	  && TREE_CODE (TYPE_SIZE (gnu_type)) == INTEGER_CST
  	  && compare_tree_int (TYPE_SIZE (gnu_type), MAX_FIXED_MODE_SIZE) <= 0)
  	return is_prescribed;
  
diff -Nrcpad gcc-16-20250608/gcc/ada/gen_il-gen-gen_entities.adb gcc-16-20250615/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-16-20250608/gcc/ada/gen_il-gen-gen_entities.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/gen_il-gen-gen_entities.adb	Sun Jun 15 22:32:23 2025
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 215,221 ****
          Sm (May_Inherit_Delayed_Rep_Aspects, Flag),
          Sm (Needs_Debug_Info, Flag),
          Sm (Never_Set_In_Source, Flag),
-         Sm (Overlays_Constant, Flag),
          Sm (Prev_Entity, Node_Id),
          Sm (Referenced, Flag),
          Sm (Referenced_As_LHS, Flag),
--- 215,220 ----
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 353,358 ****
--- 352,358 ----
          Sm (Last_Aggregate_Assignment, Node_Id),
          Sm (Optimize_Alignment_Space, Flag),
          Sm (Optimize_Alignment_Time, Flag),
+         Sm (Overlays_Constant, Flag),
          Sm (Prival_Link, Node_Id),
          Sm (Related_Type, Node_Id),
          Sm (Return_Statement, Node_Id),
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 426,434 ****
          Sm (Discriminant_Default_Value, Node_Id),
          Sm (Is_Activation_Record, Flag)));
  
!    Ab (Formal_Object_Kind, Object_Kind,
!        --  Generic formal objects are also objects
!        (Sm (Entry_Component, Node_Id)));
  
     Cc (E_Generic_In_Out_Parameter, Formal_Object_Kind,
         --  A generic in out parameter, created by the use of a generic in out
--- 426,433 ----
          Sm (Discriminant_Default_Value, Node_Id),
          Sm (Is_Activation_Record, Flag)));
  
!    Ab (Formal_Object_Kind, Object_Kind);
!    --  Generic formal objects are also objects
  
     Cc (E_Generic_In_Out_Parameter, Formal_Object_Kind,
         --  A generic in out parameter, created by the use of a generic in out
diff -Nrcpad gcc-16-20250608/gcc/ada/gnat_rm.texi gcc-16-20250615/gcc/ada/gnat_rm.texi
*** gcc-16-20250608/gcc/ada/gnat_rm.texi	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/gnat_rm.texi	Sun Jun 15 22:32:23 2025
*************** Simpler Accessibility Model
*** 942,951 ****
  * Subprogram parameters:: 
  * Function results:: 
  
! No_Raise aspect
  
! * New specification for Ada.Finalization.Controlled: New specification for Ada Finalization Controlled. 
! * Finalized tagged types:: 
  * Composite types:: 
  * Interoperability with controlled types:: 
  
--- 942,950 ----
  * Subprogram parameters:: 
  * Function results:: 
  
! Generalized Finalization
  
! * Finalizable tagged types:: 
  * Composite types:: 
  * Interoperability with controlled types:: 
  
*************** and generics may name types with unknown
*** 1581,1586 ****
--- 1580,1590 ----
  the @code{(<>)} notation.  In addition, some but not all of the additional
  restrictions of Ada 83 are enforced.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  Ada 83 mode is intended for two purposes.  Firstly, it allows existing
  Ada 83 code to be compiled and adapted to GNAT with less effort.
  Secondly, it aids in keeping code backwards compatible with Ada 83.
*************** contexts.  This pragma is useful when wr
*** 1608,1613 ****
--- 1612,1622 ----
  itself uses Ada 95 features, but which is intended to be usable from
  either Ada 83 or Ada 95 programs.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  @node Pragma Ada_05,Pragma Ada_2005,Pragma Ada_95,Implementation Defined Pragmas
  @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-05}@anchor{21}
  @section Pragma Ada_05
*************** This pragma is useful when writing a reu
*** 1626,1631 ****
--- 1635,1645 ----
  itself uses Ada 2005 features, but which is intended to be usable from
  either Ada 83 or Ada 95 programs.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  The one argument form (which is not a configuration pragma)
  is used for managing the transition from
  Ada 95 to Ada 2005 in the run-time library. If an entity is marked
*************** contexts.  This pragma is useful when wr
*** 1671,1676 ****
--- 1685,1695 ----
  itself uses Ada 2012 features, but which is intended to be usable from
  Ada 83, Ada 95, or Ada 2005 programs.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  The one argument form, which is not a configuration pragma,
  is used for managing the transition from Ada
  2005 to Ada 2012 in the run-time library. If an entity is marked
*************** contexts.  This pragma is useful when wr
*** 1716,1721 ****
--- 1735,1745 ----
  itself uses Ada 2022 features, but which is intended to be usable from
  Ada 83, Ada 95, Ada 2005 or Ada 2012 programs.
  
+ Like all configuration pragmas, if the pragma is placed before a library
+ level package specification it is not propagated to the corresponding
+ package body (see RM 10.1.5(8)); it must be added explicitly to the
+ package body.
+ 
  The one argument form, which is not a configuration pragma,
  is used for managing the transition from Ada
  2012 to Ada 2022 in the run-time library. If an entity is marked
*************** that the record type must be a root type
*** 30914,30940 ****
  
  The aspect additionally makes it possible to specify relaxed semantics for
  the finalization operations by means of the @code{Relaxed_Finalization} setting.
! 
! Example:
  
  @example
! type Ctrl is record
!   Id : Natural := 0;
  end record
    with Finalizable => (Initialize           => Initialize,
                         Adjust               => Adjust,
                         Finalize             => Finalize,
                         Relaxed_Finalization => True);
  
! procedure Adjust     (Obj : in out Ctrl);
! procedure Finalize   (Obj : in out Ctrl);
! procedure Initialize (Obj : in out Ctrl);
  @end example
  
! The three procedures have the same profile, taking a single @code{in out T}
! parameter.
! 
! We follow the same dynamic semantics as controlled objects:
  
  @quotation
  
--- 30938,30961 ----
  
  The aspect additionally makes it possible to specify relaxed semantics for
  the finalization operations by means of the @code{Relaxed_Finalization} setting.
! Here is the archetypal example:
  
  @example
! type T is record
!   ...
  end record
    with Finalizable => (Initialize           => Initialize,
                         Adjust               => Adjust,
                         Finalize             => Finalize,
                         Relaxed_Finalization => True);
  
! procedure Adjust     (Obj : in out T);
! procedure Finalize   (Obj : in out T);
! procedure Initialize (Obj : in out T);
  @end example
  
! The three procedures have the same profile, with a single @code{in out} parameter,
! and also have the same dynamic semantics as for controlled types:
  
  @quotation
  
*************** We follow the same dynamic semantics as
*** 30943,31040 ****
  
  @item 
  @code{Initialize} is called when an object of type @code{T} is declared without
! default expression.
  
  @item 
  @code{Adjust} is called after an object of type @code{T} is assigned a new value.
  
  @item 
  @code{Finalize} is called when an object of type @code{T} goes out of scope (for
! stack-allocated objects) or is explicitly deallocated (for heap-allocated
! objects). It is also called when on the value being replaced in an
! assignment.
  @end itemize
  @end quotation
  
! However the following differences are enforced by default when compared to the
! current Ada controlled-objects finalization model:
  
  
  @itemize *
  
  @item 
! No automatic finalization of heap allocated objects: @code{Finalize} is only
! called when an object is implicitly deallocated. As a consequence, no-runtime
! support is needed for the implicit case, and no header will be maintained for
! this in heap-allocated controlled objects.
! 
! Heap-allocated objects allocated through a nested access type definition will
! hence `not' be deallocated either. The result is simply that memory will be
! leaked in those cases.
! 
! @item 
! The @code{Finalize} procedure should have have the @ref{466,,No_Raise aspect} specified.
! If that’s not the case, a compilation error will be raised.
! @end itemize
! 
! Additionally, two other configuration aspects are added,
! @code{Legacy_Heap_Finalization} and @code{Exceptions_In_Finalize}:
! 
! 
! @itemize *
  
! @item 
! @code{Legacy_Heap_Finalization}: Uses the legacy automatic finalization of
! heap-allocated objects
  
  @item 
! @code{Exceptions_In_Finalize}: Allow users to have a finalizer that raises exceptions
! `NB!' note that using this aspect introduces execution time penalities.
  @end itemize
  
! @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Generalized Finalization,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions id3}@anchor{467}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{466}
! @subsection No_Raise aspect
! 
! 
! The @code{No_Raise} aspect can be applied to a subprogram to declare that this subprogram is not
! expected to raise any exceptions. Should an exception still occur during the execution of
! this subprogram, @code{Program_Error} is raised.
! 
! @menu
! * New specification for Ada.Finalization.Controlled: New specification for Ada Finalization Controlled. 
! * Finalized tagged types:: 
! * Composite types:: 
! * Interoperability with controlled types:: 
! 
! @end menu
! 
! @node New specification for Ada Finalization Controlled,Finalized tagged types,,No_Raise aspect
! @anchor{gnat_rm/gnat_language_extensions new-specification-for-ada-finalization-controlled}@anchor{468}
! @subsubsection New specification for @code{Ada.Finalization.Controlled}
! 
! 
! @code{Ada.Finalization.Controlled} is now specified as:
! 
! @example
! type Controlled is abstract tagged null record
!    with Initialize => Initialize,
!       Adjust => Adjust,
!       Finalize => Finalize,
!       Legacy_Heap_Finalization, Exceptions_In_Finalize;
! 
!       procedure Initialize (Self : in out Controlled) is abstract;
!       procedure Adjust (Self : in out Controlled) is abstract;
!       procedure Finalize (Self : in out Controlled) is abstract;
! @end example
! 
! ### Examples
! 
! A simple example of a ref-counted type:
  
  @example
  type T is record
!    Value : Integer;
     Ref_Count : Natural := 0;
  end record;
  
--- 30964,31012 ----
  
  @item 
  @code{Initialize} is called when an object of type @code{T} is declared without
! initialization expression.
  
  @item 
  @code{Adjust} is called after an object of type @code{T} is assigned a new value.
  
  @item 
  @code{Finalize} is called when an object of type @code{T} goes out of scope (for
! stack-allocated objects) or is deallocated (for heap-allocated objects).
! It is also called when the value is replaced by an assignment.
  @end itemize
  @end quotation
  
! However, when @code{Relaxed_Finalization} is either @code{True} or not explicitly
! specified, the following differences are implemented relative to the semantics
! of controlled types:
  
  
  @itemize *
  
  @item 
! The compiler has permission to perform no automatic finalization of
! heap-allocated objects: @code{Finalize} is only called when such an object
! is explicitly deallocated, or when the designated object is assigned a new
! value. As a consequence, no runtime support is needed for performing
! implicit deallocation. In particular, no per-object header data is needed
! for heap-allocated objects.
  
! Heap-allocated objects allocated through a nested access type will therefore
! `not' be deallocated either. The result is simply that memory will be leaked
! in this case.
  
  @item 
! The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{466,,No_Raise aspect} specified for them. In particular, the
! compiler has permission to enforce none of the guarantees specified by the
! RM 7.6.1 (14/1) and subsequent subclauses.
  @end itemize
  
! Simple example of ref-counted type:
  
  @example
  type T is record
!    Value     : Integer;
     Ref_Count : Natural := 0;
  end record;
  
*************** type T_Access is access all T;
*** 31046,31053 ****
  type T_Ref is record
     Value : T_Access;
  end record
!    with Adjust   => Adjust,
!       Finalize => Finalize;
  
  procedure Adjust (Ref : in out T_Ref) is
  begin
--- 31018,31025 ----
  type T_Ref is record
     Value : T_Access;
  end record
!    with Finalizable => (Adjust   => Adjust,
!                         Finalize => Finalize);
  
  procedure Adjust (Ref : in out T_Ref) is
  begin
*************** begin
*** 31060,31066 ****
  end Finalize;
  @end example
  
! A simple file handle that ensures resources are properly released:
  
  @example
  package P is
--- 31032,31038 ----
  end Finalize;
  @end example
  
! Simple file handle that ensures resources are properly released:
  
  @example
  package P is
*************** package P is
*** 31069,31134 ****
     function Open (Path : String) return File;
  
     procedure Close (F : in out File);
  private
     type File is limited record
        Handle : ...;
     end record
!       with Finalize => Close;
  @end example
  
! @node Finalized tagged types,Composite types,New specification for Ada Finalization Controlled,No_Raise aspect
! @anchor{gnat_rm/gnat_language_extensions finalized-tagged-types}@anchor{469}
! @subsubsection Finalized tagged types
  
  
! Aspects are inherited by derived types and optionally overriden by those. The
! compiler-generated calls to the user-defined operations are then
! dispatching whenever it makes sense, i.e. the object in question is of
! class-wide type and the class includes at least one finalized tagged type.
  
- However note that for simplicity, it is forbidden to change the value of any of
- those new aspects in derived types.
  
! @node Composite types,Interoperability with controlled types,Finalized tagged types,No_Raise aspect
! @anchor{gnat_rm/gnat_language_extensions composite-types}@anchor{46a}
! @subsubsection Composite types
  
  
- When a finalized type is used as a component of a composite type, the latter
- becomes finalized as well. The three primitives are derived automatically
- in order to call the primitives of their components.
  
! If that composite type was already user-finalized, then the compiler
! calls the primitives of the components so as to stay consistent with today’s
! controlled types’s behavior.
! 
! So, @code{Initialize} and @code{Adjust} are called on components before they
! are called on the composite object, but @code{Finalize} is  called on the composite
! object first.
  
! @node Interoperability with controlled types,,Composite types,No_Raise aspect
! @anchor{gnat_rm/gnat_language_extensions interoperability-with-controlled-types}@anchor{46b}
  @subsubsection Interoperability with controlled types
  
  
! As a consequence of the redefinition of the @code{Controlled} type as a base type
! with the new aspects defined, interoperability with controlled type naturally
! follows the definition of the above rules. In particular:
! 
  
! @itemize *
  
- @item 
- It is possible to have a new finalized type have a controlled type
- component
  
! @item 
! It is possible to have a controlled type have a finalized type
! component
! @end itemize
  
  @node Inference of Dependent Types in Generic Instantiations,External_Initialization Aspect,No_Raise aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations}@anchor{46c}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
--- 31041,31104 ----
     function Open (Path : String) return File;
  
     procedure Close (F : in out File);
+ 
  private
     type File is limited record
        Handle : ...;
     end record
!       with Finalizable (Finalize => Close);
! end P;
  @end example
  
! @menu
! * Finalizable tagged types:: 
! * Composite types:: 
! * Interoperability with controlled types:: 
  
+ @end menu
  
! @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{467}
! @subsubsection Finalizable tagged types
  
  
! The aspect is inherited by derived types and the primitives may be overridden
! by the derivation. The compiler-generated calls to these operations are then
! dispatching whenever it makes sense, i.e. when the object in question is of a
! class-wide type and the class includes at least one finalizable tagged type.
  
+ @node Composite types,Interoperability with controlled types,Finalizable tagged types,Generalized Finalization
+ @anchor{gnat_rm/gnat_language_extensions composite-types}@anchor{468}
+ @subsubsection Composite types
  
  
! When a finalizable type is used as a component of a composite type, the latter
! becomes finalizable as well. The three primitives are derived automatically
! in order to call the primitives of their components. The dynamic semantics is
! the same as for controlled components of composite types.
  
! @node Interoperability with controlled types,,Composite types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions interoperability-with-controlled-types}@anchor{469}
  @subsubsection Interoperability with controlled types
  
  
! Finalizable types are fully interoperable with controlled types, in particular
! it is possible for a finalizable type to have a controlled component and vice
! versa, but the stricter dynamic semantics, in other words that of controlled
! types, is applied in this case.
  
! @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Generalized Finalization,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions id3}@anchor{46a}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{466}
! @subsection No_Raise aspect
  
  
! The @code{No_Raise} aspect can be applied to a subprogram to declare that this
! subprogram is not expected to raise an exception. Should an exception still
! be raised during the execution of the subprogram, it is caught at the end of
! this execution and @code{Program_Error} is propagated to the caller.
  
  @node Inference of Dependent Types in Generic Instantiations,External_Initialization Aspect,No_Raise aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations}@anchor{46b}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
*************** package Int_Array_Operations is new Arra
*** 31205,31211 ****
  @end example
  
  @node External_Initialization Aspect,Finally construct,Inference of Dependent Types in Generic Instantiations,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions external-initialization-aspect}@anchor{46d}
  @subsection External_Initialization Aspect
  
  
--- 31175,31181 ----
  @end example
  
  @node External_Initialization Aspect,Finally construct,Inference of Dependent Types in Generic Instantiations,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions external-initialization-aspect}@anchor{46c}
  @subsection External_Initialization Aspect
  
  
*************** The maximum size of loaded files is limi
*** 31246,31252 ****
  @end cartouche
  
  @node Finally construct,,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{46e}
  @subsection Finally construct
  
  
--- 31216,31222 ----
  @end cartouche
  
  @node Finally construct,,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{46d}
  @subsection Finally construct
  
  
*************** This feature is similar to the one with
*** 31263,31269 ****
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{46f}
  @subsubsection Syntax
  
  
--- 31233,31239 ----
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{46e}
  @subsubsection Syntax
  
  
*************** handled_sequence_of_statements ::=
*** 31278,31284 ****
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{470}
  @subsubsection Legality Rules
  
  
--- 31248,31254 ----
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{46f}
  @subsubsection Legality Rules
  
  
*************** to be transferred outside the finally pa
*** 31288,31294 ****
  Goto & exit where the target is outside of the finally’s @code{sequence_of_statements} are forbidden
  
  @node Dynamic Semantics<2>,,Legality Rules<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id6}@anchor{471}
  @subsubsection Dynamic Semantics
  
  
--- 31258,31264 ----
  Goto & exit where the target is outside of the finally’s @code{sequence_of_statements} are forbidden
  
  @node Dynamic Semantics<2>,,Legality Rules<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id6}@anchor{470}
  @subsubsection Dynamic Semantics
  
  
*************** execution, that is the finally block mus
*** 31303,31309 ****
  aborted, or if the control is transferred out of the block.
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{472}@anchor{gnat_rm/security_hardening_features id1}@anchor{473}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
--- 31273,31279 ----
  aborted, or if the control is transferred out of the block.
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{471}@anchor{gnat_rm/security_hardening_features id1}@anchor{472}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
*************** change.
*** 31325,31331 ****
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{474}
  @section Register Scrubbing
  
  
--- 31295,31301 ----
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{473}
  @section Register Scrubbing
  
  
*************** programming languages, see @cite{Using t
*** 31361,31367 ****
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{475}
  @section Stack Scrubbing
  
  
--- 31331,31337 ----
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{474}
  @section Stack Scrubbing
  
  
*************** Bar_Callable_Ptr.
*** 31505,31511 ****
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{476}
  @section Hardened Conditionals
  
  
--- 31475,31481 ----
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{475}
  @section Hardened Conditionals
  
  
*************** be used with other programming languages
*** 31595,31601 ****
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{477}
  @section Hardened Booleans
  
  
--- 31565,31571 ----
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{476}
  @section Hardened Booleans
  
  
*************** and more details on that attribute, see
*** 31656,31662 ****
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{478}
  @section Control Flow Redundancy
  
  
--- 31626,31632 ----
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{477}
  @section Control Flow Redundancy
  
  
*************** see @cite{Using the GNU Compiler Collect
*** 31824,31830 ****
  can be used with other programming languages supported by GCC.
  
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{479}@anchor{gnat_rm/obsolescent_features id1}@anchor{47a}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
--- 31794,31800 ----
  can be used with other programming languages supported by GCC.
  
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{478}@anchor{gnat_rm/obsolescent_features id1}@anchor{479}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
*************** compatibility purposes.
*** 31843,31849 ****
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{47b}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{47c}
  @section pragma No_Run_Time
  
  
--- 31813,31819 ----
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{47a}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{47b}
  @section pragma No_Run_Time
  
  
*************** preferred usage is to use an appropriate
*** 31856,31862 ****
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{47d}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{47e}
  @section pragma Ravenscar
  
  
--- 31826,31832 ----
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{47c}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{47d}
  @section pragma Ravenscar
  
  
*************** The pragma @code{Ravenscar} has exactly
*** 31865,31871 ****
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{47f}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{480}
  @section pragma Restricted_Run_Time
  
  
--- 31835,31841 ----
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{47e}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{47f}
  @section pragma Restricted_Run_Time
  
  
*************** preferred since the Ada 2005 pragma @cod
*** 31875,31881 ****
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{481}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{482}
  @section pragma Task_Info
  
  
--- 31845,31851 ----
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{480}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{481}
  @section pragma Task_Info
  
  
*************** in the spec of package System.Task_Info
*** 31901,31907 ****
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{483}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{484}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
--- 31871,31877 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{482}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{483}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
*************** to support the @code{Task_Info} pragma.
*** 31911,31917 ****
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{485}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{486}
  @chapter Compatibility and Porting Guide
  
  
--- 31881,31887 ----
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{484}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{485}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 31933,31939 ****
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{487}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{488}
  @section Writing Portable Fixed-Point Declarations
  
  
--- 31903,31909 ----
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{486}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{487}
  @section Writing Portable Fixed-Point Declarations
  
  
*************** If you follow this scheme you will be gu
*** 32055,32061 ****
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{489}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{48a}
  @section Compatibility with Ada 83
  
  
--- 32025,32031 ----
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{488}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{489}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 32083,32089 ****
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{48b}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{48c}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
--- 32053,32059 ----
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{48a}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{48b}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** the fix is usually simply to add the @co
*** 32183,32189 ****
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{48d}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{48e}
  @subsection More deterministic semantics
  
  
--- 32153,32159 ----
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{48c}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{48d}
  @subsection More deterministic semantics
  
  
*************** which open select branches are executed.
*** 32211,32217 ****
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{48f}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{490}
  @subsection Changed semantics
  
  
--- 32181,32187 ----
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{48e}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{48f}
  @subsection Changed semantics
  
  
*************** covers only the restricted range.
*** 32253,32259 ****
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{491}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{492}
  @subsection Other language compatibility issues
  
  
--- 32223,32229 ----
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{490}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{491}
  @subsection Other language compatibility issues
  
  
*************** include @code{pragma Interface} and the
*** 32286,32292 ****
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{493}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{494}
  @section Compatibility between Ada 95 and Ada 2005
  
  
--- 32256,32262 ----
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{492}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{493}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** can declare a function returning a value
*** 32358,32364 ****
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{495}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{496}
  @section Implementation-dependent characteristics
  
  
--- 32328,32334 ----
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{494}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{495}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 32381,32387 ****
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{497}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{498}
  @subsection Implementation-defined pragmas
  
  
--- 32351,32357 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{496}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{497}
  @subsection Implementation-defined pragmas
  
  
*************** avoiding compiler rejection of units tha
*** 32403,32409 ****
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{499}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{49a}
  @subsection Implementation-defined attributes
  
  
--- 32373,32379 ----
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{498}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{499}
  @subsection Implementation-defined attributes
  
  
*************** Ada 83, GNAT supplies the attributes @co
*** 32417,32423 ****
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{49b}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{49c}
  @subsection Libraries
  
  
--- 32387,32393 ----
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{49a}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{49b}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 32446,32452 ****
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{49d}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{49e}
  @subsection Elaboration order
  
  
--- 32416,32422 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{49c}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{49d}
  @subsection Elaboration order
  
  
*************** pragmas either globally (as an effect of
*** 32482,32488 ****
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{49f}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4a0}
  @subsection Target-specific aspects
  
  
--- 32452,32458 ----
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{49e}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{49f}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 32495,32504 ****
  Ada 2005 and Ada 2012) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{4a1,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{4a2}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4a3}
  @section Compatibility with Other Ada Systems
  
  
--- 32465,32474 ----
  Ada 2005 and Ada 2012) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{4a0,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{4a1}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4a2}
  @section Compatibility with Other Ada Systems
  
  
*************** far beyond this minimal set, as describe
*** 32541,32547 ****
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{4a4}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4a1}
  @section Representation Clauses
  
  
--- 32511,32517 ----
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{4a3}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4a0}
  @section Representation Clauses
  
  
*************** with thin pointers.
*** 32634,32640 ****
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{4a5}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4a6}
  @section Compatibility with HP Ada 83
  
  
--- 32604,32610 ----
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{4a4}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4a5}
  @section Compatibility with HP Ada 83
  
  
*************** extension of package System.
*** 32664,32670 ****
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4a7}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4a8}
  @chapter GNU Free Documentation License
  
  
--- 32634,32640 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4a6}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4a7}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-16-20250608/gcc/ada/gnat_ugn.texi gcc-16-20250615/gcc/ada/gnat_ugn.texi
*** gcc-16-20250608/gcc/ada/gnat_ugn.texi	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/gnat_ugn.texi	Sun Jun 15 22:32:23 2025
*************** You can place configuration pragmas eith
*** 2911,2916 ****
--- 2911,2920 ----
  unit or in a configuration pragma file that applies to
  all compilations performed in a given compilation environment.
  
+ Configuration pragmas placed before a library level package specification
+ are not propagated to the corresponding package body (see RM 10.1.5(8));
+ they must be added explicitly to the package body.
+ 
  GNAT includes the @code{gnatchop} utility to provide an automatic
  way to handle configuration pragmas that follows the semantics for
  compilations (that is, files with multiple units) described in the RM.
*************** Treat pragma Restrictions as Restriction
*** 9846,9852 ****
  
  @table @asis
  
! @item @code{-gnatR[0|1|2|3|4][e][j][m][s]}
  
  Output representation information for declared types, objects and
  subprograms. Note that this switch is not allowed if a previous
--- 9850,9856 ----
  
  @table @asis
  
! @item @code{-gnatR[0|1|2|3|4][e][h][m][j][s]}
  
  Output representation information for declared types, objects and
  subprograms. Note that this switch is not allowed if a previous
*************** Library (RTL) ALI files.
*** 10072,10078 ****
  @code{n} controls the optimization level:
  
  
! @multitable {xxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  `n'
--- 10076,10082 ----
  @code{n} controls the optimization level:
  
  
! @multitable {xxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
  `n'
*************** Effect
*** 10087,10093 ****
  
  @tab
  
! No optimization, the default setting if no @code{-O} appears
  
  @item
  
--- 10091,10097 ----
  
  @tab
  
! No optimization, the default setting if no @code{-O} appears.
  
  @item
  
*************** No optimization, the default setting if
*** 10095,10103 ****
  
  @tab
  
! Normal optimization, the default if you specify @code{-O} without an
! operand. A good compromise between code quality and compilation
! time.
  
  @item
  
--- 10099,10106 ----
  
  @tab
  
! Moderate optimization, same as @code{-O} without an operand.
! A good compromise between code quality and compilation time.
  
  @item
  
*************** time.
*** 10105,10111 ****
  
  @tab
  
! Extensive optimization, may improve execution time, possibly at
  the cost of substantially increased compilation time.
  
  @item
--- 10108,10114 ----
  
  @tab
  
! Extensive optimization, should improve execution time, possibly at
  the cost of substantially increased compilation time.
  
  @item
*************** the cost of substantially increased comp
*** 10114,10121 ****
  
  @tab
  
! Same as @code{-O2}, and also includes inline expansion for small
! subprograms in the same unit.
  
  @item
  
--- 10117,10124 ----
  
  @tab
  
! Full optimization, may further improve execution time, possibly at
! the cost of substantially larger generated code.
  
  @item
  
*************** subprograms in the same unit.
*** 10123,10129 ****
  
  @tab
  
! Optimize space usage
  
  @end multitable
  
--- 10126,10148 ----
  
  @tab
  
! Optimize for size (code and data) rather than speed.
! 
! @item
! 
! `z'
! 
! @tab
! 
! Optimize aggressively for size (code and data) rather than speed.
! 
! @item
! 
! `g'
! 
! @tab
! 
! Optimize for debugging experience rather than speed.
  
  @end multitable
  
*************** restriction warnings rather than restric
*** 15266,15272 ****
  
  @table @asis
  
! @item @code{-gnatR[0|1|2|3|4][e][j][m][s]}
  
  This switch controls output from the compiler of a listing showing
  representation information for declared types, objects and subprograms.
--- 15285,15291 ----
  
  @table @asis
  
! @item @code{-gnatR[0|1|2|3|4][e][h][m][j][s]}
  
  This switch controls output from the compiler of a listing showing
  representation information for declared types, objects and subprograms.
*************** If the switch is followed by an @code{e}
*** 15295,15311 ****
  extended representation information for record sub-components of records
  is included.
  
  If the switch is followed by an @code{m} (e.g. @code{-gnatRm}), then
  subprogram conventions and parameter passing mechanisms for all the
  subprograms are included.
  
! If the switch is followed by a @code{j} (e.g., @code{-gnatRj}), then
  the output is in the JSON data interchange format specified by the
  ECMA-404 standard. The semantic description of this JSON output is
  available in the specification of the Repinfo unit present in the
  compiler sources.
  
! If the switch is followed by an @code{s} (e.g., @code{-gnatR3s}), then
  the output is to a file with the name @code{file.rep} where @code{file} is
  the name of the corresponding source file, except if @code{j} is also
  specified, in which case the file name is @code{file.json}.
--- 15314,15334 ----
  extended representation information for record sub-components of records
  is included.
  
+ If the switch is followed by a @code{h} (e.g. @code{-gnatR3h}), then
+ the components of records are sorted by increasing offsets and holes
+ between consecutive components are flagged.
+ 
  If the switch is followed by an @code{m} (e.g. @code{-gnatRm}), then
  subprogram conventions and parameter passing mechanisms for all the
  subprograms are included.
  
! If the switch is followed by a @code{j} (e.g. @code{-gnatRj}), then
  the output is in the JSON data interchange format specified by the
  ECMA-404 standard. The semantic description of this JSON output is
  available in the specification of the Repinfo unit present in the
  compiler sources.
  
! If the switch is followed by an @code{s} (e.g. @code{-gnatR3s}), then
  the output is to a file with the name @code{file.rep} where @code{file} is
  the name of the corresponding source file, except if @code{j} is also
  specified, in which case the file name is @code{file.json}.
*************** Turning on optimization makes the compil
*** 20277,20289 ****
  performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
! If you use multiple @code{-O} switches, with or without level
! numbers, the last such switch is the one that’s used.
! 
! You can use the
! @code{-O} switch (the permitted forms are @code{-O0}, @code{-O1}
! @code{-O2}, @code{-O3}, and @code{-Os})
! to @code{gcc} to control the optimization level:
  
  
  @itemize *
--- 20300,20311 ----
  performance and/or code size at the expense of compilation time and
  possibly the ability to debug the program.
  
! You can pass the @code{-O} switch, with or without an operand
! (the permitted forms with an operand are @code{-O0}, @code{-O1},
! @code{-O2}, @code{-O3}, @code{-Os}, @code{-Oz}, and
! @code{-Og}) to @code{gcc} to control the optimization level. If you
! pass multiple @code{-O} switches, with or without an operand,
! the last such switch is the one that’s used:
  
  
  @itemize *
*************** to @code{gcc} to control the optimizatio
*** 20294,20301 ****
  
  @item @code{-O0}
  
! No optimization (the default);
! generates unoptimized code but has
  the fastest compilation time. Debugging is easiest with this switch.
  
  Note that many other compilers do substantial optimization even if
--- 20316,20322 ----
  
  @item @code{-O0}
  
! No optimization (the default); generates unoptimized code but has
  the fastest compilation time. Debugging is easiest with this switch.
  
  Note that many other compilers do substantial optimization even if
*************** mind when doing performance comparisons.
*** 20312,20321 ****
  
  @item @code{-O1}
  
! Moderate optimization; optimizes reasonably well but does not
! degrade compilation time significantly. You may not be able to see
! some variables in the debugger and changing the value of some
! variables in the debugger may not have the effect you desire.
  @end table
  
  @item 
--- 20333,20343 ----
  
  @item @code{-O1}
  
! Moderate optimization (same as @code{-O} without an operand);
! optimizes reasonably well but does not degrade compilation time
! significantly. You may not be able to see some variables in the
! debugger, and changing the value of some variables in the debugger
! may not have the effect you desire.
  @end table
  
  @item 
*************** variables in the debugger may not have t
*** 20324,20332 ****
  
  @item @code{-O2}
  
! Full optimization;
! generates highly optimized code and has
! the slowest compilation time. You may see significant impacts on
  your ability to display and modify variables in the debugger.
  @end table
  
--- 20346,20353 ----
  
  @item @code{-O2}
  
! Extensive optimization; generates highly optimized code but has
! an increased compilation time. You may see significant impacts on
  your ability to display and modify variables in the debugger.
  @end table
  
*************** your ability to display and modify varia
*** 20336,20344 ****
  
  @item @code{-O3}
  
! Full optimization as in @code{-O2};
! also uses more aggressive automatic inlining of subprograms within a unit
! (@ref{104,,Inlining of Subprograms}) and attempts to vectorize loops.
  @end table
  
  @item 
--- 20357,20365 ----
  
  @item @code{-O3}
  
! Full optimization; attempts more sophisticated transformations, in
! particular on loops, possibly at the cost of larger generated code.
! You may be hardly able to use the debugger at this optimization level.
  @end table
  
  @item 
*************** also uses more aggressive automatic inli
*** 20347,20362 ****
  
  @item @code{-Os}
  
! Optimize space usage (code and data) of resulting program.
  @end table
  @end itemize
  
  Higher optimization levels perform more global transformations on the
  program and apply more expensive analysis algorithms in order to generate
  faster and more compact code. The price in compilation time, and the
! resulting improvement in execution time,
! both depend on the particular application and the hardware environment.
! You should experiment to find the best level for your application.
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
--- 20368,20408 ----
  
  @item @code{-Os}
  
! Optimize for size (code and data) of resulting binary rather than
! speed; based on the @code{-O2} optimization level, but disables
! some of its transformations that often increase code size, as well
! as performs further optimizations designed to reduce code size.
! @end table
! 
! @item 
! 
! @table @asis
! 
! @item @code{-Oz}
! 
! Optimize aggressively for size (code and data) of resulting binary
! rather than speed; may increase the number of instructions executed
! if these instructions require fewer bytes to be encoded.
! @end table
! 
! @item 
! 
! @table @asis
! 
! @item @code{-Og}
! 
! Optimize for debugging experience rather than speed; based on the
! @code{-O1} optimization level, but attempts to eliminate all the
! negative effects of optimization on debugging.
  @end table
  @end itemize
  
  Higher optimization levels perform more global transformations on the
  program and apply more expensive analysis algorithms in order to generate
  faster and more compact code. The price in compilation time, and the
! resulting improvement in execution time, both depend on the particular
! application and the hardware environment. You should experiment to find
! the best level for your application.
  
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
*************** to permit their use in free software.
*** 29833,29840 ****
  
  @printindex ge
  
- @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
  @anchor{d2}@w{                              }
  
  @c %**end of body
  @bye
--- 29879,29886 ----
  
  @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-20250608/gcc/ada/gnatcmd.adb gcc-16-20250615/gcc/ada/gnatcmd.adb
*** gcc-16-20250608/gcc/ada/gnatcmd.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/gnatcmd.adb	Sun Jun 15 22:32:23 2025
*************** begin
*** 368,374 ****
           --  --help flag.
           Set_Standard_Output;
           Write_Eol;
!          Write_Line ("Report bugs to report@adacore.com");
           return;
        end if;
  
--- 368,374 ----
           --  --help flag.
           Set_Standard_Output;
           Write_Eol;
!          Write_Line ("Report bugs to support@adacore.com");
           return;
        end if;
  
diff -Nrcpad gcc-16-20250608/gcc/ada/inline.adb gcc-16-20250615/gcc/ada/inline.adb
*** gcc-16-20250608/gcc/ada/inline.adb	Sun Jun  8 22:32:15 2025
--- gcc-16-20250615/gcc/ada/inline.adb	Sun Jun 15 22:32:23 2025
*************** package body Inline is
*** 1006,1014 ****
           end loop;
  
           --  The list of inlined subprograms is an overestimate, because it
!          --  includes inlined functions called from functions that are compiled
!          --  as part of an inlined package, but are not themselves called. An
!          --  accurate computation of just those subprograms that are needed
           --  requires that we perform a transitive closure over the call graph,
           --  starting from calls in the main compilation unit.
  
--- 1006,1014 ----
           end loop;
  
           --  The list of inlined subprograms is an overestimate, because it
!          --  includes inlined subprograms called from subprograms that are
!          --  declared in an inlined package, but are not themselves called.
!          --  An accurate computation of just those subprograms that are needed
           --  requires that we perform a transitive closure over the call graph,
           --  starting from calls in the main compilation unit.
  
*************** package body Inline is
*** 4924,4934 ****
                and then Ekind (Info.Fin_Scop) = E_Package_Body
              then
                 Set_In_Package_Body (Spec_Entity (Info.Fin_Scop), True);
              end if;
  
!             Instantiate_Package_Body (Info);
  
!             if Present (Info.Fin_Scop) then
                 Scop := Info.Fin_Scop;
  
                 --  If the enclosing finalization scope is dynamic, the instance
--- 4924,4940 ----
                and then Ekind (Info.Fin_Scop) = E_Package_Body
              then
                 Set_In_Package_Body (Spec_Entity (Info.Fin_Scop), True);
+                Instantiate_Package_Body (Info);
+                Set_In_Package_Body (Spec_Entity (Info.Fin_Scop), False);
+             else
+                Instantiate_Package_Body (Info);
              end if;
  
!             --  No need to generate cleanups if the main unit is generic
  
!             if Present (Info.Fin_Scop)
!                and then not Is_Generic_Unit (Main_Unit_Entity)
!             then
                 Scop := Info.Fin_Scop;
  
                 --  If the enclosing finalization scope is dynamic, the instance
*************** package body Inline is
*** 4941,4952 ****
                 end if;
  
                 Add_Scope_To_Clean (Scop);
- 
-                --  Reset the In_Package_Body flag if it was set above
- 
-                if Ekind (Info.Fin_Scop) = E_Package_Body then
-                   Set_In_Package_Body (Spec_Entity (Info.Fin_Scop), False);
-                end if;
              end if;
  
           --  For subprogram instances, always instantiate the body
--- 4947,4952 ----
*************** package body Inline is
*** 4967,4976 ****
           Push_Scope (Standard_Standard);
           To_Clean := New_Elmt_List;
  
-          if Is_Generic_Unit (Cunit_Entity (Main_Unit)) then
-             Start_Generic;
-          end if;
- 
           --  A body instantiation may generate additional instantiations, so
           --  the following loop must scan to the end of a possibly expanding
           --  set (that's why we cannot simply use a FOR loop here). We must
--- 4967,4972 ----
*************** package body Inline is
*** 5009,5024 ****
              Pending_Instantiations.Init;
           end if;
  
!          --  We can now complete the cleanup actions of scopes that contain
!          --  pending instantiations (skipped for generic units, since we
!          --  never need any cleanups in generic units).
  
!          if Expander_Active
!            and then not Is_Generic_Unit (Main_Unit_Entity)
!          then
              Cleanup_Scopes;
-          elsif Is_Generic_Unit (Cunit_Entity (Main_Unit)) then
-             End_Generic;
           end if;
  
           Pop_Scope;
--- 5005,5014 ----
              Pending_Instantiations.Init;
           end if;
  
!          --  Expand the cleanup actions of scopes that contain instantiations
  
!          if Expander_Active then
              Cleanup_Scopes;
           end if;
  
           Pop_Scope;
diff -Nrcpad gcc-16-20250608/gcc/ada/lib.adb gcc-16-20250615/gcc/ada/lib.adb
*** gcc-16-20250608/gcc/ada/lib.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/lib.adb	Sun Jun 15 22:32:23 2025
*************** package body Lib is
*** 1129,1143 ****
        Units.Locked := True;
     end Lock;
  
-    ---------------
-    -- Num_Units --
-    ---------------
- 
-    function Num_Units return Nat is
-    begin
-       return Int (Units.Last) - Int (Main_Unit) + 1;
-    end Num_Units;
- 
     -----------------
     -- Remove_Unit --
     -----------------
--- 1129,1134 ----
diff -Nrcpad gcc-16-20250608/gcc/ada/lib.ads gcc-16-20250615/gcc/ada/lib.ads
*** gcc-16-20250608/gcc/ada/lib.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/lib.ads	Sun Jun 15 22:32:23 2025
*************** package Lib is
*** 633,642 ****
     --  Same as above, but for Source_Ptr
  
     function ipu (N : Node_Or_Entity_Id) return Boolean;
!    --  Same as In_Predefined_Unit, but renamed so it can assist debugging.
!    --  Otherwise, there is a disambiguous name conflict in the two versions of
!    --  In_Predefined_Unit which makes it inconvient to set as a breakpoint
!    --  condition.
  
     function In_Predefined_Unit (N : Node_Or_Entity_Id) return Boolean;
     --  Returns True if the given node or entity appears within the source text
--- 633,640 ----
     --  Same as above, but for Source_Ptr
  
     function ipu (N : Node_Or_Entity_Id) return Boolean;
!    --  Same as In_Predefined_Unit, but renamed to this unambiguous name for use
!    --  in the debugger.
  
     function In_Predefined_Unit (N : Node_Or_Entity_Id) return Boolean;
     --  Returns True if the given node or entity appears within the source text
*************** package Lib is
*** 720,731 ****
     procedure Lock;
     --  Lock internal tables before calling back end
  
-    function Num_Units return Nat;
-    --  Number of units currently in unit table
- 
     procedure Remove_Unit (U : Unit_Number_Type);
!    --  Remove unit U from unit table. Currently this is effective only if U is
!    --  the last unit currently stored in the unit table.
  
     procedure Replace_Linker_Option_String
       (S            : String_Id;
--- 718,726 ----
     procedure Lock;
     --  Lock internal tables before calling back end
  
     procedure Remove_Unit (U : Unit_Number_Type);
!    --  Remove unit U from unit table. U must be the last unit currently stored
!    --  in the unit table.
  
     procedure Replace_Linker_Option_String
       (S            : String_Id;
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnarl/s-stusta.adb gcc-16-20250615/gcc/ada/libgnarl/s-stusta.adb
*** gcc-16-20250608/gcc/ada/libgnarl/s-stusta.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnarl/s-stusta.adb	Sun Jun 15 22:32:23 2025
***************
*** 32,37 ****
--- 32,38 ----
  --  This is why this package is part of GNARL:
  
  with System.Tasking.Debug;
+ with System.Tasking.Stages;
  with System.Task_Primitives.Operations;
  
  with System.IO;
*************** package body System.Stack_Usage.Tasking
*** 103,109 ****
  
              --  Calculate the task usage for a given task
  
!             Report_For_Task (Id);
           end loop;
  
        end if;
--- 104,112 ----
  
              --  Calculate the task usage for a given task
  
!             if not System.Tasking.Stages.Terminated (Id) then
!                Report_For_Task (Id);
!             end if;
           end loop;
  
        end if;
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/i-cheri.adb gcc-16-20250615/gcc/ada/libgnat/i-cheri.adb
*** gcc-16-20250608/gcc/ada/libgnat/i-cheri.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/i-cheri.adb	Sun Jun 15 22:32:23 2025
***************
*** 31,36 ****
--- 31,60 ----
  
  package body Interfaces.CHERI is
  
+    ----------------
+    -- Set_Bounds --
+    ----------------
+ 
+    procedure Set_Bounds
+      (Cap    : in out Capability;
+       Length :        Bounds_Length)
+    is
+    begin
+       Cap := Capability_With_Bounds (Cap, Length);
+    end Set_Bounds;
+ 
+    ----------------------
+    -- Set_Exact_Bounds --
+    ----------------------
+ 
+    procedure Set_Exact_Bounds
+      (Cap    : in out Capability;
+       Length :        Bounds_Length)
+    is
+    begin
+       Cap := Capability_With_Exact_Bounds (Cap, Length);
+    end Set_Exact_Bounds;
+ 
     ----------------------------
     -- Set_Address_And_Bounds --
     ----------------------------
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/i-cheri.ads gcc-16-20250615/gcc/ada/libgnat/i-cheri.ads
*** gcc-16-20250608/gcc/ada/libgnat/i-cheri.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/i-cheri.ads	Sun Jun 15 22:32:23 2025
*************** is
*** 273,280 ****
       (Cap    : in out Capability;
        Length :        Bounds_Length)
     with
!      Import, Convention => Intrinsic,
!      External_Name => "__builtin_cheri_bounds_set";
     --  Narrow the bounds of a capability so that the lower bound is the
     --  current address and the upper bound is suitable for the Length.
     --
--- 273,279 ----
       (Cap    : in out Capability;
        Length :        Bounds_Length)
     with
!      Inline;
     --  Narrow the bounds of a capability so that the lower bound is the
     --  current address and the upper bound is suitable for the Length.
     --
*************** is
*** 287,294 ****
       (Cap    : in out Capability;
        Length :        Bounds_Length)
     with
!      Import, Convention => Intrinsic,
!      External_Name => "__builtin_cheri_bounds_set_exact";
     --  Narrow the bounds of a capability so that the lower bound is the
     --  current address and the upper bound is suitable for the Length.
     --
--- 286,292 ----
       (Cap    : in out Capability;
        Length :        Bounds_Length)
     with
!      Inline;
     --  Narrow the bounds of a capability so that the lower bound is the
     --  current address and the upper bound is suitable for the Length.
     --
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-dorepr.adb gcc-16-20250615/gcc/ada/libgnat/s-dorepr.adb
*** gcc-16-20250608/gcc/ada/libgnat/s-dorepr.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-dorepr.adb	Sun Jun 15 22:32:23 2025
*************** package body Product is
*** 134,140 ****
        Ahi, Alo, Bhi, Blo, E : Num;
  
     begin
!       if Is_Infinity (P) or else Is_Zero (P) then
           return (P, 0.0);
  
        else
--- 134,140 ----
        Ahi, Alo, Bhi, Blo, E : Num;
  
     begin
!       if Is_Infinity_Or_NaN (P) or else Is_Zero (P) then
           return (P, 0.0);
  
        else
*************** package body Product is
*** 157,163 ****
        Hi, Lo, E : Num;
  
     begin
!       if Is_Infinity (Q) or else Is_Zero (Q) then
           return (Q, 0.0);
  
        else
--- 157,163 ----
        Hi, Lo, E : Num;
  
     begin
!       if Is_Infinity_Or_NaN (Q) or else Is_Zero (Q) then
           return (Q, 0.0);
  
        else
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-dorepr__fma.adb gcc-16-20250615/gcc/ada/libgnat/s-dorepr__fma.adb
*** gcc-16-20250608/gcc/ada/libgnat/s-dorepr__fma.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-dorepr__fma.adb	Sun Jun 15 22:32:23 2025
*************** package body Product is
*** 78,84 ****
        E : Num;
  
     begin
!       if Is_Infinity (P) or else Is_Zero (P) then
           return (P, 0.0);
  
        else
--- 78,84 ----
        E : Num;
  
     begin
!       if Is_Infinity_Or_NaN (P) or else Is_Zero (P) then
           return (P, 0.0);
  
        else
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-dourea.adb gcc-16-20250615/gcc/ada/libgnat/s-dourea.adb
*** gcc-16-20250608/gcc/ada/libgnat/s-dourea.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-dourea.adb	Sun Jun 15 22:32:23 2025
*************** package body System.Double_Real is
*** 34,45 ****
     function Is_NaN (N : Num) return Boolean is (N /= N);
     --  Return True if N is a NaN
  
!    function Is_Infinity (N : Num) return Boolean is (Is_NaN (N - N));
!    --  Return True if N is an infinity. Used to avoid propagating meaningless
!    --  errors when the result of a product is an infinity.
  
     function Is_Zero (N : Num) return Boolean is (N = -N);
!    --  Return True if N is a Zero. Used to preserve the sign when the result of
     --  a product is a zero.
  
     package Product is
--- 34,45 ----
     function Is_NaN (N : Num) return Boolean is (N /= N);
     --  Return True if N is a NaN
  
!    function Is_Infinity_Or_NaN (N : Num) return Boolean is (Is_NaN (N - N));
!    --  Return True if N is either an infinity or NaN. Used to avoid propagating
!    --  meaningless errors when the result of a product is an infinity or NaN.
  
     function Is_Zero (N : Num) return Boolean is (N = -N);
!    --  Return True if N is a zero. Used to preserve the sign when the result of
     --  a product is a zero.
  
     package Product is
*************** package body System.Double_Real is
*** 151,157 ****
        P : constant Double_T := Two_Prod (A.Hi, B);
  
     begin
!       if Is_Infinity (P.Hi) or else Is_Zero (P.Hi) then
           return (P.Hi, 0.0);
        else
           return Quick_Two_Sum (P.Hi, P.Lo + A.Lo * B);
--- 151,157 ----
        P : constant Double_T := Two_Prod (A.Hi, B);
  
     begin
!       if Is_Infinity_Or_NaN (P.Hi) or else Is_Zero (P.Hi) then
           return (P.Hi, 0.0);
        else
           return Quick_Two_Sum (P.Hi, P.Lo + A.Lo * B);
*************** package body System.Double_Real is
*** 162,168 ****
        P : constant Double_T := Two_Prod (A.Hi, B.Hi);
  
     begin
!       if Is_Infinity (P.Hi) or else Is_Zero (P.Hi) then
           return (P.Hi, 0.0);
        else
           return Quick_Two_Sum (P.Hi, P.Lo + A.Hi * B.Lo + A.Lo * B.Hi);
--- 162,168 ----
        P : constant Double_T := Two_Prod (A.Hi, B.Hi);
  
     begin
!       if Is_Infinity_Or_NaN (P.Hi) or else Is_Zero (P.Hi) then
           return (P.Hi, 0.0);
        else
           return Quick_Two_Sum (P.Hi, P.Lo + A.Hi * B.Lo + A.Lo * B.Hi);
*************** package body System.Double_Real is
*** 178,184 ****
        P, R   : Double_T;
  
     begin
!       if Is_Infinity (B) or else Is_Zero (B) then
           return (A.Hi / B, 0.0);
        end if;
        pragma Annotate (CodePeer, Intentional, "test always false",
--- 178,184 ----
        P, R   : Double_T;
  
     begin
!       if Is_Infinity_Or_NaN (B) or else Is_Zero (B) then
           return (A.Hi / B, 0.0);
        end if;
        pragma Annotate (CodePeer, Intentional, "test always false",
*************** package body System.Double_Real is
*** 202,208 ****
        R, S       : Double_T;
  
     begin
!       if Is_Infinity (B.Hi) or else Is_Zero (B.Hi) then
           return (A.Hi / B.Hi, 0.0);
        end if;
        pragma Annotate (CodePeer, Intentional, "test always false",
--- 202,208 ----
        R, S       : Double_T;
  
     begin
!       if Is_Infinity_Or_NaN (B.Hi) or else Is_Zero (B.Hi) then
           return (A.Hi / B.Hi, 0.0);
        end if;
        pragma Annotate (CodePeer, Intentional, "test always false",
*************** package body System.Double_Real is
*** 228,234 ****
        Q : constant Double_T := Two_Sqr (A.Hi);
  
     begin
!       if Is_Infinity (Q.Hi) or else Is_Zero (Q.Hi) then
           return (Q.Hi, 0.0);
        else
           return Quick_Two_Sum (Q.Hi, Q.Lo + 2.0 * A.Hi * A.Lo + A.Lo * A.Lo);
--- 228,234 ----
        Q : constant Double_T := Two_Sqr (A.Hi);
  
     begin
!       if Is_Infinity_Or_NaN (Q.Hi) or else Is_Zero (Q.Hi) then
           return (Q.Hi, 0.0);
        else
           return Quick_Two_Sum (Q.Hi, Q.Lo + 2.0 * A.Hi * A.Lo + A.Lo * A.Lo);
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-secsta.adb gcc-16-20250615/gcc/ada/libgnat/s-secsta.adb
*** gcc-16-20250608/gcc/ada/libgnat/s-secsta.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-secsta.adb	Sun Jun 15 22:32:23 2025
*************** package body System.Secondary_Stack is
*** 633,638 ****
--- 633,647 ----
  
        if Over_Aligning then
           Padding := Alignment;
+ 
+          --  Typically the padding would be
+          --  Alignment - (Addr mod Alignment)
+          --  however Addr in this case is not known yet. It depends on the
+          --  type of the secondary stack (Dynamic/Static). The allocation
+          --  routine for the respective type of stack requires to know the
+          --  allocation size before the address is known. To ensure a
+          --  sufficient allocation size to fit the padding, the padding is
+          --  calculated conservatively.
        end if;
  
        --  Round the requested size (plus the needed padding in case of
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-secsta__cheri.adb gcc-16-20250615/gcc/ada/libgnat/s-secsta__cheri.adb
*** gcc-16-20250608/gcc/ada/libgnat/s-secsta__cheri.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-secsta__cheri.adb	Sun Jun 15 22:32:23 2025
*************** package body System.Secondary_Stack is
*** 662,667 ****
--- 662,676 ----
  
        if Over_Aligning then
           Over_Align_Padding := Alignment;
+ 
+          --  Typically the padding would be
+          --  Alignment - (Addr mod Alignment)
+          --  however Addr in this case is not known yet. It depends on the
+          --  type of the secondary stack (Dynamic/Static). The allocation
+          --  routine for the respective type of stack requires to know the
+          --  allocation size before the address is known. To ensure a
+          --  sufficient allocation size to fit the padding, the padding is
+          --  calculated conservatively.
        end if;
  
        --  It should not be possible to request an allocation of negative
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-vafi128.ads gcc-16-20250615/gcc/ada/libgnat/s-vafi128.ads
*** gcc-16-20250608/gcc/ada/libgnat/s-vafi128.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-vafi128.ads	Sun Jun 15 22:32:23 2025
***************
*** 29,37 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains routines for scanning values for ordinary fixed point
! --  types up to 128-bit small and mantissa, for use in Text_IO.Decimal_IO, and
! --  the Value attribute for such decimal types.
  
  with Interfaces;
  with System.Arith_128;
--- 29,37 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for supporting the Value attribute for
! --  ordinary fixed point types up to 128-bit small and mantissa, and also for
! --  conversion operations required in Text_IO.Fixed_IO for such types.
  
  with Interfaces;
  with System.Arith_128;
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-vafi32.ads gcc-16-20250615/gcc/ada/libgnat/s-vafi32.ads
*** gcc-16-20250608/gcc/ada/libgnat/s-vafi32.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-vafi32.ads	Sun Jun 15 22:32:23 2025
***************
*** 29,37 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains routines for scanning values for decimal fixed point
! --  types up to 32-bit small and mantissa, for use in Text_IO.Decimal_IO, and
! --  the Value attribute for such decimal types.
  
  with Interfaces;
  with System.Arith_32;
--- 29,37 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for supporting the Value attribute for
! --  ordinary fixed point types up to 32-bit small and mantissa, and also for
! --  conversion operations required in Text_IO.Fixed_IO for such types.
  
  with Interfaces;
  with System.Arith_32;
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-vafi64.ads gcc-16-20250615/gcc/ada/libgnat/s-vafi64.ads
*** gcc-16-20250608/gcc/ada/libgnat/s-vafi64.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-vafi64.ads	Sun Jun 15 22:32:23 2025
***************
*** 29,37 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains routines for scanning values for decimal fixed point
! --  types up to 64-bit small and mantissa, for use in Text_IO.Decimal_IO, and
! --  the Value attribute for such decimal types.
  
  with Interfaces;
  with System.Arith_64;
--- 29,37 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains the routines for supporting the Value attribute for
! --  ordinary fixed point types up to 64-bit small and mantissa, and also for
! --  conversion operations required in Text_IO.Fixed_IO for such types.
  
  with Interfaces;
  with System.Arith_64;
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-valued.adb gcc-16-20250615/gcc/ada/libgnat/s-valued.adb
*** gcc-16-20250608/gcc/ada/libgnat/s-valued.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-valued.adb	Sun Jun 15 22:32:23 2025
*************** package body System.Value_D is
*** 39,51 ****
     --  We need an unsigned type large enough to represent the mantissa
  
     package Impl is new Value_R (Uns, 1, 2**(Int'Size - 1), Round => False);
!    --  We do not use the Extra digit for decimal fixed-point types
  
     function Integer_to_Decimal
       (Str    : String;
        Val    : Uns;
        Base   : Unsigned;
        ScaleB : Integer;
        Minus  : Boolean;
        Scale  : Integer) return Int;
     --  Convert the real value from integer to decimal representation
--- 39,53 ----
     --  We need an unsigned type large enough to represent the mantissa
  
     package Impl is new Value_R (Uns, 1, 2**(Int'Size - 1), Round => False);
!    --  We do not use the Extra digit for decimal fixed-point types, except to
!    --  effectively ensure that overflow is detected near the boundaries.
  
     function Integer_to_Decimal
       (Str    : String;
        Val    : Uns;
        Base   : Unsigned;
        ScaleB : Integer;
+       Extra  : Unsigned;
        Minus  : Boolean;
        Scale  : Integer) return Int;
     --  Convert the real value from integer to decimal representation
*************** package body System.Value_D is
*** 59,64 ****
--- 61,67 ----
        Val    : Uns;
        Base   : Unsigned;
        ScaleB : Integer;
+       Extra  : Unsigned;
        Minus  : Boolean;
        Scale  : Integer) return Int
     is
*************** package body System.Value_D is
*** 126,131 ****
--- 129,138 ----
           end if;
        end Unsigned_To_Signed;
  
+       --  Local variables
+ 
+       E : Uns := Uns (Extra);
+ 
     begin
        --  If the base of the value is 10 or its scaling factor is zero, then
        --  add the scales (they are defined in the opposite sense) and apply
*************** package body System.Value_D is
*** 143,151 ****
              end loop;
  
              while S > 0 loop
!                if V <= Uns'Last / 10 then
!                   V := V * 10;
                    S := S - 1;
                 else
                    Bad_Value (Str);
                 end if;
--- 150,159 ----
              end loop;
  
              while S > 0 loop
!                if V <= (Uns'Last - E) / 10 then
!                   V := V * 10 + E;
                    S := S - 1;
+                   E := 0;
                 else
                    Bad_Value (Str);
                 end if;
*************** package body System.Value_D is
*** 193,200 ****
                    Z := 10 ** Integer'Max (0, -Scale);
  
                    for J in 1 .. LS loop
!                      if V <= Uns'Last / Uns (B) then
!                         V := V * Uns (B);
                       else
                          Bad_Value (Str);
                       end if;
--- 201,209 ----
                    Z := 10 ** Integer'Max (0, -Scale);
  
                    for J in 1 .. LS loop
!                      if V <= (Uns'Last - E) / Uns (B) then
!                         V := V * Uns (B) + E;
!                         E := 0;
                       else
                          Bad_Value (Str);
                       end if;
*************** package body System.Value_D is
*** 207,213 ****
                 raise Program_Error;
              end if;
  
!             --  Perform a scale divide operation with rounding to match 'Image
  
              Scaled_Divide (Unsigned_To_Signed (V), Y, Z, Q, R, Round => True);
  
--- 216,222 ----
                 raise Program_Error;
              end if;
  
!             --  Perform a scaled divide operation with rounding to match 'Image
  
              Scaled_Divide (Unsigned_To_Signed (V), Y, Z, Q, R, Round => True);
  
*************** package body System.Value_D is
*** 238,244 ****
     begin
        Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, Scl, Extra, Minus);
  
!       return Integer_to_Decimal (Str, Val (1), Base, Scl (1), Minus, Scale);
     end Scan_Decimal;
  
     -------------------
--- 247,254 ----
     begin
        Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, Scl, Extra, Minus);
  
!       return
!         Integer_to_Decimal (Str, Val (1), Base, Scl (1), Extra, Minus, Scale);
     end Scan_Decimal;
  
     -------------------
*************** package body System.Value_D is
*** 255,261 ****
     begin
        Val := Impl.Value_Raw_Real (Str, Base, Scl, Extra, Minus);
  
!       return Integer_to_Decimal (Str, Val (1), Base, Scl (1), Minus, Scale);
     end Value_Decimal;
  
  end System.Value_D;
--- 265,272 ----
     begin
        Val := Impl.Value_Raw_Real (Str, Base, Scl, Extra, Minus);
  
!       return
!         Integer_to_Decimal (Str, Val (1), Base, Scl (1), Extra, Minus, Scale);
     end Value_Decimal;
  
  end System.Value_D;
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-valuef.adb gcc-16-20250615/gcc/ada/libgnat/s-valuef.adb
*** gcc-16-20250608/gcc/ada/libgnat/s-valuef.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-valuef.adb	Sun Jun 15 22:32:23 2025
*************** package body System.Value_F is
*** 156,161 ****
--- 156,164 ----
        pragma Assert (Num < 0 and then Den < 0);
        --  Accept only negative numbers to allow -2**(Int'Size - 1)
  
+       pragma Unsuppress (Overflow_Check);
+       --  Use overflow check to catch bad values
+ 
        function Safe_Expont
          (Base   : Int;
           Exp    : in out Natural;
*************** package body System.Value_F is
*** 224,261 ****
  
        B : constant Int := Int (Base);
  
!       V : Uns := Val;
!       E : Uns := Uns (Extra);
  
        Y, Z, Q1, R1, Q2, R2 : Int;
  
     begin
        --  We will use a scaled divide operation for which we must control the
        --  magnitude of operands so that an overflow exception is not unduly
        --  raised during the computation. The only real concern is the exponent.
  
!       --  If ScaleB is too negative, then drop trailing digits, but preserve
!       --  the last dropped digit.
  
!       if ScaleB < 0 then
           declare
!             LS : Integer := -ScaleB;
  
           begin
              Y := Den;
              Z := Safe_Expont (B, LS, Num);
  
              for J in 1 .. LS loop
                 E := V rem Uns (B);
                 V := V / Uns (B);
              end loop;
           end;
  
!       --  If ScaleB is too positive, then scale V up, which may then overflow
  
!       elsif ScaleB > 0 then
           declare
!             LS : Integer := ScaleB;
  
           begin
              Y := Safe_Expont (B, LS, Den);
--- 227,278 ----
  
        B : constant Int := Int (Base);
  
!       V : Uns     := Val;
!       S : Integer := ScaleB;
!       E : Uns     := Uns (Extra);
  
        Y, Z, Q1, R1, Q2, R2 : Int;
  
     begin
+       --  The implementation of Value_R uses fully symmetric arithmetics
+       --  but here we cannot handle 2**(Int'Size - 1) if Minus is not set.
+ 
+       if V = 2**(Int'Size - 1) and then not Minus then
+          E := V rem Uns (B);
+          V := V / Uns (B);
+          S := S + 1;
+       end if;
+ 
        --  We will use a scaled divide operation for which we must control the
        --  magnitude of operands so that an overflow exception is not unduly
        --  raised during the computation. The only real concern is the exponent.
  
!       --  If S is too negative, then drop trailing digits, but preserve the
!       --  last dropped digit, until V saturates to 0.
  
!       if S < 0 then
           declare
!             LS : Integer := -S;
  
           begin
              Y := Den;
              Z := Safe_Expont (B, LS, Num);
  
              for J in 1 .. LS loop
+                if V = 0 then
+                   E := 0;
+                   exit;
+                end if;
                 E := V rem Uns (B);
                 V := V / Uns (B);
              end loop;
           end;
  
!       --  If S is too positive, then scale V up, which may then overflow
  
!       elsif S > 0 then
           declare
!             LS : Integer := S;
  
           begin
              Y := Safe_Expont (B, LS, Den);
*************** package body System.Value_F is
*** 271,277 ****
              end loop;
           end;
  
!       --  If ScaleB is zero, then proceed directly
  
        else
           Y := Den;
--- 288,294 ----
              end loop;
           end;
  
!       --  If S is zero, then proceed directly
  
        else
           Y := Den;
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-valuer.adb gcc-16-20250615/gcc/ada/libgnat/s-valuer.adb
*** gcc-16-20250608/gcc/ada/libgnat/s-valuer.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-valuer.adb	Sun Jun 15 22:32:23 2025
*************** package body System.Value_R is
*** 135,141 ****
        B : constant Uns := Uns (Base);
  
     begin
!       if Digit >= Base / 2 then
  
           --  If Extra is maximum, round Value
  
--- 135,143 ----
        B : constant Uns := Uns (Base);
  
     begin
!       --  Beware that Base may be odd
! 
!       if 2 * Unsigned (Digit) >= Base then
  
           --  If Extra is maximum, round Value
  
*************** package body System.Value_R is
*** 578,585 ****
        if Str (Index) in '0' .. '9' then
           After_Point := False;
  
!          --  If this is a digit it can indicates either the float decimal
!          --  part or the base to use.
  
           Scan_Integral_Digits
             (Str, Index, Max, Base, False, Value, Scale, N,
--- 580,587 ----
        if Str (Index) in '0' .. '9' then
           After_Point := False;
  
!          --  If this is a digit it can indicate either the integral part or the
!          --  base to use.
  
           Scan_Integral_Digits
             (Str, Index, Max, Base, False, Value, Scale, N,
*************** package body System.Value_R is
*** 602,608 ****
           Bad_Value (Str);
        end if;
  
!       --  Check if the first number encountered is a base
  
        pragma Assert (Index >= Str'First);
  
--- 604,611 ----
           Bad_Value (Str);
        end if;
  
!       --  Check if the first number encountered is a base. ':' is allowed in
!       --  place of '#' in virtue of RM J.2 (3).
  
        pragma Assert (Index >= Str'First);
  
*************** package body System.Value_R is
*** 611,617 ****
        then
           Base_Char := Str (Index);
  
!          if N = 1 and then Value (1) in 2 .. 16 then
              Base := Unsigned (Value (1));
           else
              Base_Violation := True;
--- 614,626 ----
        then
           Base_Char := Str (Index);
  
!          --  Functionally, "(Parts = 1 or else N = 1)" in the condition of the
!          --  following if statement could replaced by the simpler "N = 1". The
!          --  reason we use a more complicated expression is to accommodate
!          --  machine-code-based coverage tools: the simple version makes it
!          --  impossible to fully cover generic instances of System.Value_R with
!          --  Parts = 1.
!          if (Parts = 1 or else N = 1) and then Value (1) in 2 .. 16 then
              Base := Unsigned (Value (1));
           else
              Base_Violation := True;
*************** package body System.Value_R is
*** 630,639 ****
           end if;
        end if;
  
!       --  Scan the integral part if still necessary
  
        if Base_Char /= ASCII.NUL and then not After_Point then
!          if Index > Max or else As_Digit (Str (Index)) not in Valid_Digit then
              Bad_Value (Str);
           end if;
  
--- 639,648 ----
           end if;
        end if;
  
!       --  Scan the integral part if there was a base and no point right after
  
        if Base_Char /= ASCII.NUL and then not After_Point then
!          if As_Digit (Str (Index)) not in Valid_Digit then
              Bad_Value (Str);
           end if;
  
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-valueu.adb gcc-16-20250615/gcc/ada/libgnat/s-valueu.adb
*** gcc-16-20250608/gcc/ada/libgnat/s-valueu.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-valueu.adb	Sun Jun 15 22:32:23 2025
*************** package body System.Value_U is
*** 73,78 ****
--- 73,87 ----
        end if;
  
        P := Ptr.all;
+ 
+       --  Exit when the initial string to parse is empty
+ 
+       if Max < P then
+          raise Program_Error with
+             "Scan end Max=" & Max'Img &
+             " is smaller than scan end Ptr=" & P'Img;
+       end if;
+ 
        Uval := Character'Pos (Str (P)) - Character'Pos ('0');
        pragma Assert (Str (P) in '0' .. '9');
        P := P + 1;
diff -Nrcpad gcc-16-20250608/gcc/ada/libgnat/s-valueu.ads gcc-16-20250615/gcc/ada/libgnat/s-valueu.ads
*** gcc-16-20250608/gcc/ada/libgnat/s-valueu.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/libgnat/s-valueu.ads	Sun Jun 15 22:32:23 2025
*************** package System.Value_U is
*** 102,112 ****
     --  This string results in a Constraint_Error with the pointer pointing
     --  past the second 2.
     --
!    --  Note: if Str is empty, i.e. if Max is less than Ptr, then this is a
!    --  special case of an all-blank string, and Ptr is unchanged, and hence
!    --  is greater than Max as required in this case.
!    --  ??? This is not the case. We will read Str (Ptr.all) without checking
!    --  and increase Ptr.all by one.
     --
     --  Note: this routine should not be called with Str'Last = Positive'Last.
     --  If this occurs Program_Error is raised with a message noting that this
--- 102,110 ----
     --  This string results in a Constraint_Error with the pointer pointing
     --  past the second 2.
     --
!    --  Note: If Max is less than Ptr, then Ptr is left unchanged and
!    --  Program_Error is raised to indicate that a valid integer cannot
!    --  be parsed.
     --
     --  Note: this routine should not be called with Str'Last = Positive'Last.
     --  If this occurs Program_Error is raised with a message noting that this
diff -Nrcpad gcc-16-20250608/gcc/ada/namet.adb gcc-16-20250615/gcc/ada/namet.adb
*** gcc-16-20250608/gcc/ada/namet.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/namet.adb	Sun Jun 15 22:32:23 2025
*************** package body Namet is
*** 1297,1325 ****
     -- Present --
     -------------
  
-    function Present (Nam : File_Name_Type) return Boolean is
-    begin
-       return Nam /= No_File;
-    end Present;
- 
-    -------------
-    -- Present --
-    -------------
- 
     function Present (Nam : Name_Id) return Boolean is
     begin
        return Nam /= No_Name;
     end Present;
  
-    -------------
-    -- Present --
-    -------------
- 
-    function Present (Nam : Unit_Name_Type) return Boolean is
-    begin
-       return Nam /= No_Unit_Name;
-    end Present;
- 
     ------------------
     -- Reinitialize --
     ------------------
--- 1297,1307 ----
diff -Nrcpad gcc-16-20250608/gcc/ada/namet.ads gcc-16-20250615/gcc/ada/namet.ads
*** gcc-16-20250608/gcc/ada/namet.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/namet.ads	Sun Jun 15 22:32:23 2025
*************** package Namet is
*** 504,513 ****
     --  Constant used to indicate no file is present (this is used for example
     --  when a search for a file indicates that no file of the name exists).
  
-    function Present (Nam : File_Name_Type) return Boolean;
-    pragma Inline (Present);
-    --  Determine whether file name Nam exists
- 
     Error_File_Name : constant File_Name_Type := File_Name_Type (Error_Name);
     --  The special File_Name_Type value Error_File_Name is used to indicate
     --  a unit name where some previous processing has found an error.
--- 504,509 ----
*************** package Namet is
*** 532,541 ****
     No_Unit_Name : constant Unit_Name_Type := Unit_Name_Type (No_Name);
     --  Constant used to indicate no file name present
  
-    function Present (Nam : Unit_Name_Type) return Boolean;
-    pragma Inline (Present);
-    --  Determine whether unit name Nam exists
- 
     Error_Unit_Name : constant Unit_Name_Type := Unit_Name_Type (Error_Name);
     --  The special Unit_Name_Type value Error_Unit_Name is used to indicate
     --  a unit name where some previous processing has found an error.
--- 528,533 ----
diff -Nrcpad gcc-16-20250608/gcc/ada/opt.ads gcc-16-20250615/gcc/ada/opt.ads
*** gcc-16-20250608/gcc/ada/opt.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/opt.ads	Sun Jun 15 22:32:23 2025
*************** package Opt is
*** 943,948 ****
--- 943,963 ----
  
     --  WARNING: There is a matching C declaration of this variable in fe.h
  
+    List_Representation_Info_Extended : Boolean := False;
+    --  GNAT
+    --  Set true by -gnatRe switch. Causes extended information for record types
+    --  to be included in the representation output information.
+ 
+    List_Representation_Info_Holes : Boolean := False;
+    --  GNAT
+    --  Set true by -gnatRh switch. Causes information for holes between record
+    --  components to be included in the representation output information.
+ 
+    List_Representation_Info_Mechanisms : Boolean := False;
+    --  GNAT
+    --  Set true by -gnatRm switch. Causes information on mechanisms to be
+    --  included in the representation output information.
+ 
     List_Representation_Info_To_File : Boolean := False;
     --  GNAT
     --  Set true by -gnatRs switch. Causes information from -gnatR[1-4]m to be
*************** package Opt is
*** 955,970 ****
     --  Set true by -gnatRj switch. Causes information from -gnatR[1-4]m to be
     --  output in the JSON data interchange format.
  
-    List_Representation_Info_Mechanisms : Boolean := False;
-    --  GNAT
-    --  Set true by -gnatRm switch. Causes information on mechanisms to be
-    --  included in the representation output information.
- 
-    List_Representation_Info_Extended : Boolean := False;
-    --  GNAT
-    --  Set true by -gnatRe switch. Causes extended information for record types
-    --  to be included in the representation output information.
- 
     List_Preprocessing_Symbols : Boolean := False;
     --  GNAT, GNATPREP
     --  Set to True if symbols for preprocessing a source are to be listed
--- 970,975 ----
diff -Nrcpad gcc-16-20250608/gcc/ada/par-ch13.adb gcc-16-20250615/gcc/ada/par-ch13.adb
*** gcc-16-20250608/gcc/ada/par-ch13.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/par-ch13.adb	Sun Jun 15 22:32:23 2025
*************** package body Ch13 is
*** 503,508 ****
--- 503,510 ----
                   or else A_Id = Aspect_Refined_Depends
                 then
                    Inside_Depends := True;
+                elsif A_Id = Aspect_Abstract_State then
+                   Inside_Abstract_State := True;
                 end if;
  
                 --  Note that we have seen an Import aspect specification.
*************** package body Ch13 is
*** 529,537 ****
                    Set_Expression (Aspect, P_Expression);
                 end if;
  
!                --  Unconditionally reset flag for Inside_Depends
  
!                Inside_Depends := False;
              end if;
  
              --  Add the aspect to the resulting list only when it was properly
--- 531,540 ----
                    Set_Expression (Aspect, P_Expression);
                 end if;
  
!                --  Unconditionally reset flag for being inside aspects
  
!                Inside_Depends        := False;
!                Inside_Abstract_State := False;
              end if;
  
              --  Add the aspect to the resulting list only when it was properly
diff -Nrcpad gcc-16-20250608/gcc/ada/par-ch2.adb gcc-16-20250615/gcc/ada/par-ch2.adb
*** gcc-16-20250608/gcc/ada/par-ch2.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/par-ch2.adb	Sun Jun 15 22:32:23 2025
*************** package body Ch2 is
*** 385,390 ****
--- 385,392 ----
          or else Chars (Ident_Node) = Name_Refined_Depends
        then
           Inside_Depends := True;
+       elsif Chars (Ident_Node) = Name_Abstract_State then
+          Inside_Abstract_State := True;
        end if;
  
        --  Scan arguments. We assume that arguments are present if there is
*************** package body Ch2 is
*** 441,451 ****
  
        Semicolon_Loc := Token_Ptr;
  
!       --  Cancel indication of being within a pragma or in particular a Depends
!       --  pragma.
  
!       Inside_Depends := False;
!       Inside_Pragma  := False;
  
        --  Now we have two tasks left, we need to scan out the semicolon
        --  following the pragma, and we have to call Par.Prag to process
--- 443,453 ----
  
        Semicolon_Loc := Token_Ptr;
  
!       --  Cancel indication of being within a pragma
  
!       Inside_Depends        := False;
!       Inside_Abstract_State := False;
!       Inside_Pragma         := False;
  
        --  Now we have two tasks left, we need to scan out the semicolon
        --  following the pragma, and we have to call Par.Prag to process
*************** package body Ch2 is
*** 472,479 ****
     exception
        when Error_Resync =>
           Resync_Past_Semicolon;
!          Inside_Depends := False;
!          Inside_Pragma  := False;
           return Error;
     end P_Pragma;
  
--- 474,482 ----
     exception
        when Error_Resync =>
           Resync_Past_Semicolon;
!          Inside_Depends        := False;
!          Inside_Abstract_State := False;
!          Inside_Pragma         := False;
           return Error;
     end P_Pragma;
  
diff -Nrcpad gcc-16-20250608/gcc/ada/par-ch4.adb gcc-16-20250615/gcc/ada/par-ch4.adb
*** gcc-16-20250608/gcc/ada/par-ch4.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/par-ch4.adb	Sun Jun 15 22:32:23 2025
*************** package body Ch4 is
*** 668,680 ****
  
        --   (discrete_range)
  
!       --      This is a slice. This case is handled in LP_State_Init
  
        --   (expression, expression, ..)
  
        --      This is interpreted as an indexed component, i.e. as a
        --      case of a name which can be extended in the normal manner.
!       --      This case is handled by LP_State_Name or LP_State_Expr.
  
        --      Note: if and case expressions (without an extra level of
        --      parentheses) are permitted in this context).
--- 668,680 ----
  
        --   (discrete_range)
  
!       --      This is a slice
  
        --   (expression, expression, ..)
  
        --      This is interpreted as an indexed component, i.e. as a
        --      case of a name which can be extended in the normal manner.
!       --      This case is handled by LP_State_Expr.
  
        --      Note: if and case expressions (without an extra level of
        --      parentheses) are permitted in this context).
*************** package body Ch4 is
*** 935,1063 ****
  
     --  Error recovery: cannot raise Error_Resync
  
-    function P_Function_Name return Node_Id is
-       Designator_Node : Node_Id;
-       Prefix_Node     : Node_Id;
-       Selector_Node   : Node_Id;
-       Dot_Sloc        : Source_Ptr := No_Location;
- 
-    begin
-       --  Prefix_Node is set to the gathered prefix so far, Empty means that
-       --  no prefix has been scanned. This allows us to build up the result
-       --  in the required right recursive manner.
- 
-       Prefix_Node := Empty;
- 
-       --  Loop through prefixes
- 
-       loop
-          Designator_Node := Token_Node;
- 
-          if Token not in Token_Class_Desig then
-             return P_Identifier; -- let P_Identifier issue the error message
- 
-          else -- Token in Token_Class_Desig
-             Scan; -- past designator
-             exit when Token /= Tok_Dot;
-          end if;
- 
-          --  Here at a dot, with token just before it in Designator_Node
- 
-          if No (Prefix_Node) then
-             Prefix_Node := Designator_Node;
-          else
-             Selector_Node := New_Node (N_Selected_Component, Dot_Sloc);
-             Set_Prefix (Selector_Node, Prefix_Node);
-             Set_Selector_Name (Selector_Node, Designator_Node);
-             Prefix_Node := Selector_Node;
-          end if;
- 
-          Dot_Sloc := Token_Ptr;
-          Scan; -- past dot
-       end loop;
- 
-       --  Fall out of the loop having just scanned a designator
- 
-       if No (Prefix_Node) then
-          return Designator_Node;
-       else
-          Selector_Node := New_Node (N_Selected_Component, Dot_Sloc);
-          Set_Prefix (Selector_Node, Prefix_Node);
-          Set_Selector_Name (Selector_Node, Designator_Node);
-          return Selector_Node;
-       end if;
- 
-    exception
-       when Error_Resync =>
-          return Error;
-    end P_Function_Name;
- 
-    --  This function parses a restricted form of Names which are either
-    --  identifiers, or identifiers preceded by a sequence of prefixes
-    --  that are direct names.
- 
-    --  Error recovery: cannot raise Error_Resync
- 
     function P_Qualified_Simple_Name return Node_Id is
-       Designator_Node : Node_Id;
-       Prefix_Node     : Node_Id;
-       Selector_Node   : Node_Id;
-       Dot_Sloc        : Source_Ptr := No_Location;
- 
     begin
!       --  Prefix node is set to the gathered prefix so far, Empty means that
!       --  no prefix has been scanned. This allows us to build up the result
!       --  in the required right recursive manner.
! 
!       Prefix_Node := Empty;
! 
!       --  Loop through prefixes
! 
!       loop
!          Designator_Node := Token_Node;
! 
!          if Token = Tok_Identifier then
!             Scan; -- past identifier
!             exit when Token /= Tok_Dot;
! 
!          elsif Token not in Token_Class_Desig then
!             return P_Identifier; -- let P_Identifier issue the error message
! 
!          else
!             Scan; -- past designator
! 
!             if Token /= Tok_Dot then
!                Error_Msg_SP ("identifier expected");
!                return Error;
!             end if;
!          end if;
! 
!          --  Here at a dot, with token just before it in Designator_Node
! 
!          if No (Prefix_Node) then
!             Prefix_Node := Designator_Node;
!          else
!             Selector_Node := New_Node (N_Selected_Component, Dot_Sloc);
!             Set_Prefix (Selector_Node, Prefix_Node);
!             Set_Selector_Name (Selector_Node, Designator_Node);
!             Prefix_Node := Selector_Node;
!          end if;
! 
!          Dot_Sloc := Token_Ptr;
!          Scan; -- past dot
!       end loop;
! 
!       --  Fall out of the loop having just scanned an identifier
! 
!       if No (Prefix_Node) then
!          return Designator_Node;
!       else
!          Selector_Node := New_Node (N_Selected_Component, Dot_Sloc);
!          Set_Prefix (Selector_Node, Prefix_Node);
!          Set_Selector_Name (Selector_Node, Designator_Node);
!          return Selector_Node;
!       end if;
! 
     exception
        when Error_Resync =>
           return Error;
--- 935,943 ----
  
     --  Error recovery: cannot raise Error_Resync
  
     function P_Qualified_Simple_Name return Node_Id is
     begin
!       return P_Qualified_Simple_Name_Resync;
     exception
        when Error_Resync =>
           return Error;
*************** package body Ch4 is
*** 1076,1081 ****
--- 956,965 ----
        Dot_Sloc        : Source_Ptr := No_Location;
  
     begin
+       --  Prefix_Node is set to the gathered prefix so far, Empty means that
+       --  no prefix has been scanned. This allows us to build up the result
+       --  in the required right recursive manner.
+ 
        Prefix_Node := Empty;
  
        --  Loop through prefixes
*************** package body Ch4 is
*** 1083,1103 ****
        loop
           Designator_Node := Token_Node;
  
!          if Token = Tok_Identifier then
!             Scan; -- past identifier
!             exit when Token /= Tok_Dot;
! 
!          elsif Token not in Token_Class_Desig then
              Discard_Junk_Node (P_Identifier); -- to issue the error message
              raise Error_Resync;
  
           else
              Scan; -- past designator
! 
!             if Token /= Tok_Dot then
!                Error_Msg_SP ("identifier expected");
!                raise Error_Resync;
!             end if;
           end if;
  
           --  Here at a dot, with token just before it in Designator_Node
--- 967,979 ----
        loop
           Designator_Node := Token_Node;
  
!          if Token not in Token_Class_Desig then
              Discard_Junk_Node (P_Identifier); -- to issue the error message
              raise Error_Resync;
  
           else
              Scan; -- past designator
!             exit when Token /= Tok_Dot;
           end if;
  
           --  Here at a dot, with token just before it in Designator_Node
*************** package body Ch4 is
*** 1112,1118 ****
           end if;
  
           Dot_Sloc := Token_Ptr;
!          Scan; -- past period
        end loop;
  
        --  Fall out of the loop having just scanned an identifier
--- 988,994 ----
           end if;
  
           Dot_Sloc := Token_Ptr;
!          Scan; -- past dot
        end loop;
  
        --  Fall out of the loop having just scanned an identifier
*************** package body Ch4 is
*** 1607,1614 ****
           --  Improper use of WITH
  
           elsif Token = Tok_With then
!             Error_Msg_SC ("WITH must be preceded by single expression in " &
!                           "extension aggregate");
              raise Error_Resync;
  
           --  Range attribute can only appear as part of a discrete choice list
--- 1483,1495 ----
           --  Improper use of WITH
  
           elsif Token = Tok_With then
!             if Inside_Abstract_State then
!                Error_Msg_SC ("state name with options must be enclosed in " &
!                              "parentheses");
!             else
!                Error_Msg_SC ("WITH must be preceded by single expression in " &
!                              "extension aggregate");
!             end if;
              raise Error_Resync;
  
           --  Range attribute can only appear as part of a discrete choice list
diff -Nrcpad gcc-16-20250608/gcc/ada/par-ch5.adb gcc-16-20250615/gcc/ada/par-ch5.adb
*** gcc-16-20250608/gcc/ada/par-ch5.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/par-ch5.adb	Sun Jun 15 22:32:23 2025
*************** package body Ch5 is
*** 1899,1909 ****
       (Block_Name : Node_Id := Empty)
        return       Node_Id
     is
!       Block_Node   : Node_Id;
        Created_Name : Node_Id;
  
     begin
!       Block_Node := New_Node (N_Block_Statement, Token_Ptr);
  
        Push_Scope_Stack;
        Scopes (Scope.Last).Etyp := E_Name;
--- 1899,1909 ----
       (Block_Name : Node_Id := Empty)
        return       Node_Id
     is
!       Block        : Node_Id;
        Created_Name : Node_Id;
  
     begin
!       Block := New_Node (N_Block_Statement, Token_Ptr);
  
        Push_Scope_Stack;
        Scopes (Scope.Last).Etyp := E_Name;
*************** package body Ch5 is
*** 1916,1933 ****
  
        if No (Block_Name) then
           Created_Name :=
!            Make_Identifier (Sloc (Block_Node), Set_Loop_Block_Name ('B'));
           Set_Comes_From_Source (Created_Name, False);
!          Set_Has_Created_Identifier (Block_Node, True);
!          Set_Identifier (Block_Node, Created_Name);
           Scopes (Scope.Last).Labl := Created_Name;
        else
!          Set_Identifier (Block_Node, Block_Name);
        end if;
  
!       Append_Elmt (Block_Node, Label_List);
!       Parse_Decls_Begin_End (Block_Node);
!       return Block_Node;
     end P_Declare_Statement;
  
     --  P_Begin_Statement
--- 1916,1933 ----
  
        if No (Block_Name) then
           Created_Name :=
!            Make_Identifier (Sloc (Block), Set_Loop_Block_Name ('B'));
           Set_Comes_From_Source (Created_Name, False);
!          Set_Has_Created_Identifier (Block, True);
!          Set_Identifier (Block, Created_Name);
           Scopes (Scope.Last).Labl := Created_Name;
        else
!          Set_Identifier (Block, Block_Name);
        end if;
  
!       Append_Elmt (Block, Label_List);
!       Parse_Decls_Begin_End (Block);
!       return Block;
     end P_Declare_Statement;
  
     --  P_Begin_Statement
*************** package body Ch5 is
*** 1942,1952 ****
       (Block_Name : Node_Id := Empty)
        return       Node_Id
     is
!       Block_Node   : Node_Id;
        Created_Name : Node_Id;
  
     begin
!       Block_Node := New_Node (N_Block_Statement, Token_Ptr);
  
        Push_Scope_Stack;
        Scopes (Scope.Last).Etyp := E_Name;
--- 1942,1952 ----
       (Block_Name : Node_Id := Empty)
        return       Node_Id
     is
!       Block        : Node_Id;
        Created_Name : Node_Id;
  
     begin
!       Block := New_Node (N_Block_Statement, Token_Ptr);
  
        Push_Scope_Stack;
        Scopes (Scope.Last).Etyp := E_Name;
*************** package body Ch5 is
*** 1957,1980 ****
  
        if No (Block_Name) then
           Created_Name :=
!            Make_Identifier (Sloc (Block_Node), Set_Loop_Block_Name ('B'));
           Set_Comes_From_Source (Created_Name, False);
!          Set_Has_Created_Identifier (Block_Node, True);
!          Set_Identifier (Block_Node, Created_Name);
           Scopes (Scope.Last).Labl := Created_Name;
        else
!          Set_Identifier (Block_Node, Block_Name);
        end if;
  
!       Append_Elmt (Block_Node, Label_List);
  
        Scopes (Scope.Last).Ecol := Start_Column;
        Scopes (Scope.Last).Sloc := Token_Ptr;
        Scan; -- past BEGIN
        Set_Handled_Statement_Sequence
!         (Block_Node, P_Handled_Sequence_Of_Statements);
!       End_Statements (Handled_Statement_Sequence (Block_Node));
!       return Block_Node;
     end P_Begin_Statement;
  
     -------------------------
--- 1957,1980 ----
  
        if No (Block_Name) then
           Created_Name :=
!            Make_Identifier (Sloc (Block), Set_Loop_Block_Name ('B'));
           Set_Comes_From_Source (Created_Name, False);
!          Set_Has_Created_Identifier (Block, True);
!          Set_Identifier (Block, Created_Name);
           Scopes (Scope.Last).Labl := Created_Name;
        else
!          Set_Identifier (Block, Block_Name);
        end if;
  
!       Append_Elmt (Block, Label_List);
  
        Scopes (Scope.Last).Ecol := Start_Column;
        Scopes (Scope.Last).Sloc := Token_Ptr;
        Scan; -- past BEGIN
        Set_Handled_Statement_Sequence
!         (Block, P_Handled_Sequence_Of_Statements);
!       End_Statements (Handled_Statement_Sequence (Block));
!       return Block;
     end P_Begin_Statement;
  
     -------------------------
diff -Nrcpad gcc-16-20250608/gcc/ada/par-ch6.adb gcc-16-20250615/gcc/ada/par-ch6.adb
*** gcc-16-20250608/gcc/ada/par-ch6.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/par-ch6.adb	Sun Jun 15 22:32:23 2025
*************** package body Ch6 is
*** 362,373 ****
  
              if Func then
                 Inst_Node := New_Node (N_Function_Instantiation, Fproc_Sloc);
-                Set_Name (Inst_Node, P_Function_Name);
              else
                 Inst_Node := New_Node (N_Procedure_Instantiation, Fproc_Sloc);
-                Set_Name (Inst_Node, P_Qualified_Simple_Name);
              end if;
  
              Set_Defining_Unit_Name (Inst_Node, Name_Node);
              Set_Generic_Associations (Inst_Node, P_Generic_Actual_Part_Opt);
              P_Aspect_Specifications (Inst_Node, Semicolon => True);
--- 362,372 ----
  
              if Func then
                 Inst_Node := New_Node (N_Function_Instantiation, Fproc_Sloc);
              else
                 Inst_Node := New_Node (N_Procedure_Instantiation, Fproc_Sloc);
              end if;
  
+             Set_Name (Inst_Node, P_Qualified_Simple_Name);
              Set_Defining_Unit_Name (Inst_Node, Name_Node);
              Set_Generic_Associations (Inst_Node, P_Generic_Actual_Part_Opt);
              P_Aspect_Specifications (Inst_Node, Semicolon => True);
diff -Nrcpad gcc-16-20250608/gcc/ada/par.adb gcc-16-20250615/gcc/ada/par.adb
*** gcc-16-20250608/gcc/ada/par.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/par.adb	Sun Jun 15 22:32:23 2025
*************** function Par (Configuration_Pragmas : Bo
*** 80,85 ****
--- 80,90 ----
     --  True within a delta aggregate (but only after the "delta" token has
     --  been scanned). Used to distinguish syntax errors from syntactically
     --  correct "deep" delta aggregates (enabled via -gnatX0).
+ 
+    Inside_Abstract_State : Boolean := False;
+    --  True within an Abstract_State contract. Used to distinguish syntax error
+    --  about extended aggregates and about a malformed contract.
+ 
     Save_Style_Checks : Style_Check_Options;
     Save_Style_Check  : Boolean;
     --  Variables for storing the original state of whether style checks should
*************** function Par (Configuration_Pragmas : Bo
*** 825,831 ****
        function P_Aggregate                            return Node_Id;
        function P_Expression                           return Node_Id;
        function P_Expression_Or_Range_Attribute        return Node_Id;
-       function P_Function_Name                        return Node_Id;
        function P_Name                                 return Node_Id;
        function P_Qualified_Simple_Name                return Node_Id;
        function P_Qualified_Simple_Name_Resync         return Node_Id;
--- 830,835 ----
diff -Nrcpad gcc-16-20250608/gcc/ada/repinfo.adb gcc-16-20250615/gcc/ada/repinfo.adb
*** gcc-16-20250608/gcc/ada/repinfo.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/repinfo.adb	Sun Jun 15 22:32:23 2025
*************** with Debug;          use Debug;
*** 30,35 ****
--- 30,36 ----
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
+ with GNAT.Heap_Sort_G;
  with Lib;            use Lib;
  with Namet;          use Namet;
  with Nlists;         use Nlists;
*************** package body Repinfo is
*** 413,421 ****
              Write_Line (";");
           end if;
  
!       --  Alignment is not always set for task, protected, and class-wide
!       --  types, or when doing semantic analysis only. Representation aspects
!       --  are not computed for types in a generic unit.
  
        else
           --  Add unknown alignment entry in JSON format to ensure the format is
--- 414,422 ----
              Write_Line (";");
           end if;
  
!       --  Alignment is not always set for concurrent types, class-wide types,
!       --  cloned subtypes, or when doing semantic analysis only. Representation
!       --  aspects are not computed for types declared in a generic unit.
  
        else
           --  Add unknown alignment entry in JSON format to ensure the format is
*************** package body Repinfo is
*** 426,436 ****
              Write_Unknown_Val;
           end if;
  
!          pragma Assert
!            (not Expander_Active or else
!               Is_Concurrent_Type (Ent) or else
!               Is_Class_Wide_Type (Ent) or else
!               Sem_Util.In_Generic_Scope (Ent));
        end if;
     end List_Common_Type_Info;
  
--- 427,439 ----
              Write_Unknown_Val;
           end if;
  
!          pragma Assert (not Expander_Active
!            or else Is_Concurrent_Type (Ent)
!            or else Is_Class_Wide_Type (Ent)
!            or else (Ekind (Ent) = E_Record_Subtype
!                      and then Present (Cloned_Subtype (Ent))
!                      and then Has_Delayed_Freeze (Cloned_Subtype (Ent)))
!            or else Sem_Util.In_Generic_Scope (Ent));
        end if;
     end List_Common_Type_Info;
  
*************** package body Repinfo is
*** 856,863 ****
        --  generic unit, or if the back end is not being run), don't try to
        --  print them.
  
!       pragma Assert (Known_Esize (Ent) = Known_Alignment (Ent));
!       if not Known_Alignment (Ent) then
           return;
        end if;
  
--- 859,865 ----
        --  generic unit, or if the back end is not being run), don't try to
        --  print them.
  
!       if not Known_Esize (Ent) or else not Known_Alignment (Ent) then
           return;
        end if;
  
*************** package body Repinfo is
*** 882,887 ****
--- 884,890 ----
  
           Write_Eol;
           Write_Line ("}");
+ 
        else
           Write_Str ("for ");
           List_Name (Ent);
*************** package body Repinfo is
*** 1223,1233 ****
           Starting_First_Bit : Uint := Uint_0;
           Prefix             : String := "")
        is
!          Comp  : Entity_Id;
!          First : Boolean := True;
  
        begin
!          Comp := First_Component_Or_Discriminant (Ent);
           while Present (Comp) loop
  
              --  Skip a completely hidden discriminant or a discriminant in an
--- 1226,1360 ----
           Starting_First_Bit : Uint := Uint_0;
           Prefix             : String := "")
        is
!          function First_Comp_Or_Discr (Ent : Entity_Id) return Entity_Id;
!          --  Like First_Component_Or_Discriminant, but reorder the components
!          --  according to their bit offset if need be.
! 
!          -------------------------
!          -- First_Comp_Or_Discr --
!          -------------------------
! 
!          function First_Comp_Or_Discr (Ent : Entity_Id) return Entity_Id is
! 
!             function Is_Placed_Before (C1, C2 : Entity_Id) return Boolean;
!             --  Return True if component C1 is placed before component C2
! 
!             ----------------------
!             -- Is_Placed_Before --
!             ----------------------
! 
!             function Is_Placed_Before (C1, C2 : Entity_Id) return Boolean is
!             begin
!                return Known_Static_Component_Bit_Offset (C1)
!                  and then Known_Static_Component_Bit_Offset (C2)
!                  and then
!                    Component_Bit_Offset (C1) < Component_Bit_Offset (C2);
!             end Is_Placed_Before;
! 
!             --  Local variables
! 
!             Comp    : Entity_Id;
!             N_Comp  : Natural := 0;
!             Prev    : Entity_Id;
!             Reorder : Boolean := False;
! 
!          --  Start of processing for First_Comp_Or_Discr
! 
!          begin
!             --  Reordering is needed only for -gnatRh
! 
!             if not List_Representation_Info_Holes then
!                return First_Component_Or_Discriminant (Ent);
!             end if;
! 
!             --  Count the number of components and whether reordering is needed
! 
!             Comp := First_Component_Or_Discriminant (Ent);
!             Prev := Comp;
! 
!             while Present (Comp) loop
!                N_Comp := N_Comp + 1;
! 
!                if not Reorder then
!                   Reorder := Is_Placed_Before (Comp, Prev);
!                end if;
! 
!                Prev := Comp;
!                Next_Component_Or_Discriminant (Comp);
!             end loop;
! 
!             --  Reorder the components, if need be, by directly reshuffling the
!             --  list of entities between First_Entity and Last_Entity, which is
!             --  safe because we are invoked after compilation is finished.
! 
!             if Reorder then
!                declare
!                   Comps : array (Natural range 0 .. N_Comp) of Entity_Id;
!                   --  Support array for the heapsort
! 
!                   function Lt (Op1, Op2 : Natural) return Boolean is
!                     (Is_Placed_Before (Comps (Op1), Comps (Op2)));
!                   --  Compare function for the heapsort
! 
!                   procedure Move (From : Natural; To : Natural);
!                   pragma Inline (Move);
!                   --  Move procedure for the heapsort
! 
!                   ----------
!                   -- Move --
!                   ----------
! 
!                   procedure Move (From : Natural; To : Natural) is
!                   begin
!                      Comps (To) := Comps (From);
!                   end Move;
! 
!                   package HS is new GNAT.Heap_Sort_G (Lt => Lt, Move => Move);
!                   --  The heapsort for record components
! 
!                begin
!                   --  Pack the components into the array
! 
!                   N_Comp := 0;
!                   Comp := First_Component_Or_Discriminant (Ent);
! 
!                   while Present (Comp) loop
!                      N_Comp := N_Comp + 1;
!                      Comps (N_Comp) := Comp;
! 
!                      Next_Component_Or_Discriminant (Comp);
!                   end loop;
! 
!                   --  Sort the array
! 
!                   HS.Sort (N_Comp);
! 
!                   --  Unpack the component into the list of entities
! 
!                   Set_First_Entity (Ent, Comps (1));
!                   Set_Prev_Entity (Comps (1), Empty);
!                   for J in 1 .. N_Comp - 1 loop
!                      Set_Next_Entity (Comps (J), Comps (J + 1));
!                      Set_Prev_Entity (Comps (J + 1), Comps (J));
!                   end loop;
!                   Set_Next_Entity (Comps (N_Comp), Empty);
!                   Set_Last_Entity (Ent, Comps (N_Comp));
!                end;
!             end if;
! 
!             return First_Component_Or_Discriminant (Ent);
!          end First_Comp_Or_Discr;
! 
!          --  Local variables
! 
!          Bit_Offset : Uint := Uint_0;
!          Comp       : Entity_Id;
!          First      : Boolean := True;
! 
!       --  Start of processing for List_Record_Layout
  
        begin
!          Comp := First_Comp_Or_Discr (Ent);
           while Present (Comp) loop
  
              --  Skip a completely hidden discriminant or a discriminant in an
*************** package body Repinfo is
*** 1237,1305 ****
                and then (Is_Completely_Hidden (Comp)
                           or else Is_Unchecked_Union (Ent))
              then
!                goto Continue;
!             end if;
  
              --  Skip _Parent component in extension (to avoid overlap)
  
!             if Chars (Comp) = Name_uParent then
!                goto Continue;
!             end if;
  
              --  All other cases
  
!             declare
!                Ctyp : constant Entity_Id := Underlying_Type (Etype (Comp));
!                Npos : constant Uint      := Normalized_Position (Comp);
!                Fbit : constant Uint      := Normalized_First_Bit (Comp);
!                Spos : Uint;
!                Sbit : Uint;
  
!             begin
!                Get_Decoded_Name_String (Chars (Comp));
!                Set_Casing (Unit_Casing);
  
!                --  If extended information is requested, recurse fully into
!                --  record components, i.e. skip the outer level.
  
!                if List_Representation_Info_Extended
!                  and then Is_Record_Type (Ctyp)
!                  and then Known_Static_Normalized_Position (Comp)
!                  and then Known_Static_Normalized_First_Bit (Comp)
!                then
!                   Spos := Starting_Position  + Npos;
!                   Sbit := Starting_First_Bit + Fbit;
  
!                   if Sbit >= SSU then
!                      Spos := Spos + 1;
!                      Sbit := Sbit - SSU;
!                   end if;
  
!                   List_Record_Layout (Ctyp,
!                     Spos, Sbit, Prefix & Name_Buffer (1 .. Name_Len) & ".");
  
!                   goto Continue;
!                end if;
  
-                if List_Representation_Info_To_JSON then
-                   if First then
-                      Write_Eol;
-                      First := False;
                    else
!                      Write_Line (",");
!                   end if;
!                end if;
  
!                --  The Parent_Subtype in an extension is not back-annotated
  
!                List_Component_Layout (
!                  (if Known_Normalized_Position (Comp)
!                   then Comp
!                   else Original_Record_Component (Comp)),
!                  Starting_Position, Starting_First_Bit, Prefix);
!             end;
  
-          <<Continue>>
              Next_Component_Or_Discriminant (Comp);
           end loop;
        end List_Record_Layout;
--- 1364,1461 ----
                and then (Is_Completely_Hidden (Comp)
                           or else Is_Unchecked_Union (Ent))
              then
!                null;
  
              --  Skip _Parent component in extension (to avoid overlap)
  
!             elsif Chars (Comp) = Name_uParent then
!                null;
  
              --  All other cases
  
!             else
!                declare
!                   C : constant Entity_Id :=
!                         (if Known_Normalized_Position (Comp)
!                          then Comp
!                          else Original_Record_Component (Comp));
!                   --  The Parent_Subtype in an extension is not back-annotated
!                   --  but its layout is the same as that of the parent type.
  
!                   Ctyp : constant Entity_Id := Underlying_Type (Etype (C));
  
!                begin
!                   Get_Decoded_Name_String (Chars (C));
!                   Set_Casing (Unit_Casing);
  
!                   --  If extended information is requested, recurse fully into
!                   --  record components, i.e. skip the outer level.
  
!                   if List_Representation_Info_Extended
!                     and then Is_Record_Type (Ctyp)
!                     and then Known_Static_Normalized_Position (C)
!                     and then Known_Static_Normalized_First_Bit (C)
!                   then
!                      declare
!                         Npos : constant Uint := Normalized_Position (C);
!                         Fbit : constant Uint := Normalized_First_Bit (C);
!                         Pref : constant String :=
!                                  Prefix & Name_Buffer (1 .. Name_Len) & ".";
  
!                         Spos : Uint;
!                         Sbit : Uint;
  
!                      begin
!                         Spos := Starting_Position  + Npos;
!                         Sbit := Starting_First_Bit + Fbit;
! 
!                         if Sbit >= SSU then
!                            Spos := Spos + 1;
!                            Sbit := Sbit - SSU;
!                         end if;
! 
!                         List_Record_Layout (Ctyp, Spos, Sbit, Pref);
!                      end;
  
                    else
!                      if List_Representation_Info_To_JSON then
!                         if First then
!                            Write_Eol;
!                            First := False;
!                         else
!                            Write_Line (",");
!                         end if;
!                      end if;
  
!                      --  If information about holes is requested, update the
!                      --  current bit offset and report any (static) gap.
  
!                      if List_Representation_Info_Holes
!                        and then Known_Static_Component_Bit_Offset (C)
!                      then
!                         declare
!                            Gap : constant Uint :=
!                                    Component_Bit_Offset (C) - Bit_Offset;
!                         begin
!                            if Gap > Uint_0 then
!                               Write_Str ("   -- ");
!                               UI_Write (Gap, Decimal);
!                               Write_Line (" bits unused --");
!                            end if;
! 
!                            if Known_Static_Esize (C) then
!                               Bit_Offset :=
!                                 Component_Bit_Offset (C) + Esize (C);
!                            end if;
!                         end;
!                      end if;
! 
!                      List_Component_Layout
!                        (C, Starting_Position, Starting_First_Bit, Prefix);
!                   end if;
!                end;
!             end if;
  
              Next_Component_Or_Discriminant (Comp);
           end loop;
        end List_Record_Layout;
*************** package body Repinfo is
*** 1610,1615 ****
--- 1766,1782 ----
           end loop;
        end List_Structural_Record_Layout;
  
+       --  Use the original record type giving the layout of components
+       --  to avoid repeated reordering when -gnatRh is specified.
+ 
+       Rec : constant Entity_Id :=
+         (if Ekind (Ent) = E_Record_Subtype
+            and then Present (Cloned_Subtype (Ent))
+          then (if Is_Private_Type (Cloned_Subtype (Ent))
+                then Full_View (Cloned_Subtype (Ent))
+                else Cloned_Subtype (Ent))
+          else Ent);
+ 
     --  Start of processing for List_Record_Info
  
     begin
*************** package body Repinfo is
*** 1624,1630 ****
        --  First find out max line length and max starting position
        --  length, for the purpose of lining things up nicely.
  
!       Compute_Max_Length (Ent);
  
        --  Then do actual output based on those values
  
--- 1791,1797 ----
        --  First find out max line length and max starting position
        --  length, for the purpose of lining things up nicely.
  
!       Compute_Max_Length (Rec);
  
        --  Then do actual output based on those values
  
*************** package body Repinfo is
*** 1636,1656 ****
           --  declared in the extended main source unit for the time being,
           --  because otherwise declarations might not be processed at all.
  
!          if Is_Base_Type (Ent) then
              begin
!                List_Structural_Record_Layout (Ent, Ent);
  
              exception
                 when Incomplete_Layout
                    | Not_In_Extended_Main
                 =>
!                   List_Record_Layout (Ent);
  
                 when others =>
                    raise Program_Error;
              end;
           else
!             List_Record_Layout (Ent);
           end if;
  
           Write_Eol;
--- 1803,1823 ----
           --  declared in the extended main source unit for the time being,
           --  because otherwise declarations might not be processed at all.
  
!          if Is_Base_Type (Rec) then
              begin
!                List_Structural_Record_Layout (Rec, Rec);
  
              exception
                 when Incomplete_Layout
                    | Not_In_Extended_Main
                 =>
!                   List_Record_Layout (Rec);
  
                 when others =>
                    raise Program_Error;
              end;
           else
!             List_Record_Layout (Rec);
           end if;
  
           Write_Eol;
*************** package body Repinfo is
*** 1660,1666 ****
           List_Name (Ent);
           Write_Line (" use record");
  
!          List_Record_Layout (Ent);
  
           Write_Line ("end record;");
        end if;
--- 1827,1833 ----
           List_Name (Ent);
           Write_Line (" use record");
  
!          List_Record_Layout (Rec);
  
           Write_Line ("end record;");
        end if;
diff -Nrcpad gcc-16-20250608/gcc/ada/sem.adb gcc-16-20250615/gcc/ada/sem.adb
*** gcc-16-20250608/gcc/ada/sem.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem is
*** 765,776 ****
           E : constant Entity_Id := Defining_Entity_Or_Empty (N);
        begin
           if Present (E) then
!             if Ekind (E) = E_Void
!               and then Nkind (N) = N_Component_Declaration
                and then Present (Scope (E))
                and then Ekind (Scope (E)) = E_Record_Type
              then
!                null; -- Set it later, in Analyze_Component_Declaration
              elsif not Is_Not_Self_Hidden (E) then
                 Set_Is_Not_Self_Hidden (E);
              end if;
--- 765,775 ----
           E : constant Entity_Id := Defining_Entity_Or_Empty (N);
        begin
           if Present (E) then
!             if Nkind (N) = N_Component_Declaration
                and then Present (Scope (E))
                and then Ekind (Scope (E)) = E_Record_Type
              then
!                null; -- Set it later, in Record_Type_Definition
              elsif not Is_Not_Self_Hidden (E) then
                 Set_Is_Not_Self_Hidden (E);
              end if;
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_attr.adb gcc-16-20250615/gcc/ada/sem_attr.adb
*** gcc-16-20250608/gcc/ada/sem_attr.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_attr.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Attr is
*** 5693,5711 ****
        when Attribute_Partition_ID =>
           Check_E0;
  
!          if P_Type /= Any_Type then
!             if not Is_Library_Level_Entity (Entity (P)) then
!                Error_Attr_P
!                  ("prefix of % attribute must be library-level entity");
  
!             --  The defining entity of prefix should not be declared inside a
!             --  Pure unit. RM E.1(8). Is_Pure was set during declaration.
  
!             elsif Is_Entity_Name (P)
!               and then Is_Pure (Entity (P))
!             then
!                Error_Attr_P ("prefix of% attribute must not be declared pure");
!             end if;
           end if;
  
           Set_Etype (N, Universal_Integer);
--- 5693,5707 ----
        when Attribute_Partition_ID =>
           Check_E0;
  
!          if not Is_Library_Level_Entity (Entity (P)) then
!             Error_Attr_P
!               ("prefix of % attribute must be library-level entity");
  
!          --  The defining entity of prefix should not be declared inside a
!          --  Pure unit. RM E.1(8). Is_Pure was set during declaration.
  
!          elsif Is_Entity_Name (P) and then Is_Pure (Entity (P)) then
!             Error_Attr_P ("prefix of% attribute must not be declared pure");
           end if;
  
           Set_Etype (N, Universal_Integer);
*************** package body Sem_Attr is
*** 13018,13024 ****
              --  their Entity attribute to reference their discriminal.
  
              if Expander_Active
-               and then Present (Expressions (N))
                and then Attr_Id /= Attribute_Make
              then
                 declare
--- 13014,13019 ----
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_case.adb gcc-16-20250615/gcc/ada/sem_case.adb
*** gcc-16-20250608/gcc/ada/sem_case.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_case.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Case is
*** 3684,3696 ****
                             --  Use of nonstatic predicate is an error
  
                             if not Is_Discrete_Type (E)
!                              or else not Has_Static_Predicate (E)
                               or else Has_Dynamic_Predicate_Aspect (E)
                               or else Has_Ghost_Predicate_Aspect (E)
                             then
                                Bad_Predicated_Subtype_Use
!                                 ("cannot use subtype& with non-static "
!                                  & "predicate as case alternative",
                                   Choice, E, Suggest_Static => True);
  
                             --  Static predicate case. The bounds are those of
--- 3684,3698 ----
                             --  Use of nonstatic predicate is an error
  
                             if not Is_Discrete_Type (E)
!                              or else (not Has_Static_Predicate (E)
!                                         and then
!                                       not Has_Static_Predicate_Aspect (E))
                               or else Has_Dynamic_Predicate_Aspect (E)
                               or else Has_Ghost_Predicate_Aspect (E)
                             then
                                Bad_Predicated_Subtype_Use
!                                 ("cannot use subtype& with nonstatic "
!                                  & "predicate as choice in case alternative",
                                   Choice, E, Suggest_Static => True);
  
                             --  Static predicate case. The bounds are those of
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch10.adb gcc-16-20250615/gcc/ada/sem_ch10.adb
*** gcc-16-20250608/gcc/ada/sem_ch10.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch10.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Ch10 is
*** 1225,1233 ****
  
        if Expander_Active and then Tagged_Type_Expansion then
           case Nkind (Unit_Node) is
!             when N_Package_Declaration | N_Package_Body =>
                 Build_Static_Dispatch_Tables (Unit_Node);
  
              when N_Package_Instantiation =>
                 Build_Static_Dispatch_Tables (Instance_Spec (Unit_Node));
  
--- 1225,1239 ----
  
        if Expander_Active and then Tagged_Type_Expansion then
           case Nkind (Unit_Node) is
!             when N_Package_Declaration =>
                 Build_Static_Dispatch_Tables (Unit_Node);
  
+             when N_Package_Body =>
+                if Ekind (Corresponding_Spec (Unit_Node)) /= E_Generic_Package
+                then
+                   Build_Static_Dispatch_Tables (Unit_Node);
+                end if;
+ 
              when N_Package_Instantiation =>
                 Build_Static_Dispatch_Tables (Instance_Spec (Unit_Node));
  
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch12.adb gcc-16-20250615/gcc/ada/sem_ch12.adb
*** gcc-16-20250608/gcc/ada/sem_ch12.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch12.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Ch12 is
*** 479,496 ****
     --  Create a new access type with the given designated type
  
     function Analyze_Associations
!      (I_Node  : Node_Id;
        Formals : List_Id;
        F_Copy  : List_Id) return List_Id;
     --  At instantiation time, build the list of associations between formals
     --  and actuals. Each association becomes a renaming declaration for the
!    --  formal entity. F_Copy is the analyzed list of formals in the generic
!    --  copy. It is used to apply legality checks to the actuals. I_Node is the
!    --  instantiation node.
  
     procedure Analyze_Subprogram_Instantiation
       (N : Node_Id;
        K : Entity_Kind);
  
     procedure Build_Instance_Compilation_Unit_Nodes
       (N        : Node_Id;
--- 479,497 ----
     --  Create a new access type with the given designated type
  
     function Analyze_Associations
!      (N       : Node_Id;
        Formals : List_Id;
        F_Copy  : List_Id) return List_Id;
     --  At instantiation time, build the list of associations between formals
     --  and actuals. Each association becomes a renaming declaration for the
!    --  formal entity. N is the instantiation node. Formals is the list of
!    --  unanalyzed formals. F_Copy is the analyzed list of formals in the
!    --  generic copy.
  
     procedure Analyze_Subprogram_Instantiation
       (N : Node_Id;
        K : Entity_Kind);
+    --  Analyze subprogram instantiation N, either a function or a procedure
  
     procedure Build_Instance_Compilation_Unit_Nodes
       (N        : Node_Id;
*************** package body Sem_Ch12 is
*** 609,620 ****
       (Inner : Entity_Id;
        Outer : Entity_Id;
        N     : Node_Id) return Boolean;
!    --  Inner is instantiated within the generic Outer. Check whether Inner
!    --  directly or indirectly contains an instance of Outer or of one of its
!    --  parents, in the case of a subunit. Each generic unit holds a list of
!    --  the entities instantiated within (at any depth). This procedure
!    --  determines whether the set of such lists contains a cycle, i.e. an
!    --  illegal circular instantiation.
  
     function Denotes_Formal_Package
       (Pack     : Entity_Id;
--- 610,621 ----
       (Inner : Entity_Id;
        Outer : Entity_Id;
        N     : Node_Id) return Boolean;
!    --  Inner is being instantiated within Outer. If Outer is also a generic
!    --  unit, check whether Inner directly or indirectly contains an instance
!    --  of Outer or of one of its parents (case of subunit). Each generic unit
!    --  holds a list of the entities instantiated within (at any depth). This
!    --  procedure determines whether the set of such lists contains a cycle,
!    --  i.e. an illegal circular instantiation.
  
     function Denotes_Formal_Package
       (Pack     : Entity_Id;
*************** package body Sem_Ch12 is
*** 1009,1016 ****
  
     procedure Set_Next_Assoc (E : Assoc_Ptr; Next : Assoc_Ptr);
     function  Next_Assoc     (E : Assoc_Ptr) return Assoc_Ptr;
!    function Get_Gen_Id      (E : Assoc_Ptr) return Entity_Id;
!    function Hash            (F : Entity_Id) return HTable_Range;
  
     package Generic_Renamings_HTable is new GNAT.HTable.Static_HTable (
        Header_Num => HTable_Range,
--- 1010,1017 ----
  
     procedure Set_Next_Assoc (E : Assoc_Ptr; Next : Assoc_Ptr);
     function  Next_Assoc     (E : Assoc_Ptr) return Assoc_Ptr;
!    function  Get_Gen_Id     (E : Assoc_Ptr) return Entity_Id;
!    function  Hash           (F : Entity_Id) return HTable_Range;
  
     package Generic_Renamings_HTable is new GNAT.HTable.Static_HTable (
        Header_Num => HTable_Range,
*************** package body Sem_Ch12 is
*** 1158,1176 ****
        --  kinds for N_Box_Subp_Default, N_Box_Actual, N_Null_Default, and
        --  N_Exp_Func_Default.
  
!       type Generic_Actual_Rec (Kind : Actual_Kind := None) is record
!          --  Representation of one generic actual parameter
           case Kind is
!             when None | None_Use_Clause | Box_Subp_Default | Box_Actual |
!               Null_Default | Dummy_Assoc =>
                 null;
!             when Name_Exp | Exp_Func_Default =>
                 Name_Exp : Node_Id;
           end case;
        end record;
  
        type Actual_Origin_Enum is
!         (None, From_Explicit_Actual, From_Default, From_Inference,
           From_Others_Box);
        --  Indication of where the Actual came from -- explicitly in the
        --  instantiation, inferred from some other type, or defaulted.
--- 1159,1187 ----
        --  kinds for N_Box_Subp_Default, N_Box_Actual, N_Null_Default, and
        --  N_Exp_Func_Default.
  
!       type Actual_Rec (Kind : Actual_Kind := None) is record
           case Kind is
!             when None
!                | None_Use_Clause
!                | Box_Subp_Default
!                | Box_Actual
!                | Null_Default
!                | Dummy_Assoc
!             =>
                 null;
!             when Name_Exp
!                | Exp_Func_Default
!             =>
                 Name_Exp : Node_Id;
           end case;
        end record;
+       --  Representation of one generic actual parameter
  
        type Actual_Origin_Enum is
!         (None,
!          From_Explicit_Actual,
!          From_Default,
!          From_Inference,
           From_Others_Box);
        --  Indication of where the Actual came from -- explicitly in the
        --  instantiation, inferred from some other type, or defaulted.
*************** package body Sem_Ch12 is
*** 1179,1194 ****
        --  Reason an actual type corresponding to a formal type was (or could
        --  be) inferred from the actual type corresponding to another formal
        --  type.
!         (Designated_Type, -- designated type from formal access
!          Index_Type, -- index type from formal array
!          Component_Type, -- component type from formal array
           Discriminant_Type); -- discriminant type from formal discriminated
  
        function Image (Reason : Inference_Reason) return String is
          (case Reason is
!            when Designated_Type => "designated type",
!            when Index_Type => "index type",
!            when Component_Type => "component type",
             when Discriminant_Type => "discriminant type");
  
        type Assoc_Index is new Pos;
--- 1190,1205 ----
        --  Reason an actual type corresponding to a formal type was (or could
        --  be) inferred from the actual type corresponding to another formal
        --  type.
!         (Designated_Type,    -- designated type from formal access
!          Index_Type,         -- index type from formal array
!          Component_Type,     -- component type from formal array
           Discriminant_Type); -- discriminant type from formal discriminated
  
        function Image (Reason : Inference_Reason) return String is
          (case Reason is
!            when Designated_Type   => "designated type",
!            when Index_Type        => "index type",
!            when Component_Type    => "component type",
             when Discriminant_Type => "discriminant type");
  
        type Assoc_Index is new Pos;
*************** package body Sem_Ch12 is
*** 1210,1216 ****
           Explicit_Assoc : Opt_N_Generic_Association_Id;
           --  Explicit association, if any, from the source or generated.
  
!          Actual : Generic_Actual_Rec;
           --  Generic actual parameter corresponding to Un_Formal/An_Formal,
           --  possibly from defaults or others/boxes.
  
--- 1221,1227 ----
           Explicit_Assoc : Opt_N_Generic_Association_Id;
           --  Explicit association, if any, from the source or generated.
  
!          Actual : Actual_Rec;
           --  Generic actual parameter corresponding to Un_Formal/An_Formal,
           --  possibly from defaults or others/boxes.
  
*************** package body Sem_Ch12 is
*** 1224,1230 ****
           --  inferred.
  
           Inferred_From : Assoc_Index;
!          --  Index of a later Assoc_Rec in the same Gen_Assocs_Rec from which
           --  this one was inferred, or could be inferred.
           --  Valid only if Info_Inferred_Actual is present.
  
--- 1235,1241 ----
           --  inferred.
  
           Inferred_From : Assoc_Index;
!          --  Index of a later Assoc_Rec in the same Match_Rec from which
           --  this one was inferred, or could be inferred.
           --  Valid only if Info_Inferred_Actual is present.
  
*************** package body Sem_Ch12 is
*** 1237,1246 ****
        --  One element for each formal and (if legal) for each corresponding
        --  actual.
  
!       type Gen_Assocs_Rec (Num_Assocs : Assoc_Count) is record
!          --  Representation of formal/actual matching. Num_Assocs
!          --  is the number of formals and (if legal) the number
!          --  of actuals.
           Gen_Unit : Entity_Id;
           --  the generic unit being instantiated
           Others_Present : Boolean;
--- 1248,1257 ----
        --  One element for each formal and (if legal) for each corresponding
        --  actual.
  
!       type Match_Rec (Num_Assocs : Assoc_Count) is record
!          --  Representation of formal/actual matching. Num_Assocs is the
!          --  number of formals and (if legal) the number of actuals.
! 
           Gen_Unit : Entity_Id;
           --  the generic unit being instantiated
           Others_Present : Boolean;
*************** package body Sem_Ch12 is
*** 1251,1275 ****
        end record;
  
        function Match_Assocs
!         (I_Node : Node_Id; Formals : List_Id; F_Copy : List_Id)
!          return Gen_Assocs_Rec;
!       --  I_Node is the instantiation node. Formals is the list of unanalyzed
        --  formals. F_Copy is the analyzed list of formals in the generic copy.
!       --  Return a Gen_Assocs_Rec with formals, explicit actuals, and default
        --  actuals filled in. Check legality rules related to formal/actual
        --  matching.
  
        procedure Note_Potential_Inference
!         (I_Node : Node_Id; Gen_Assocs : Gen_Assocs_Rec);
        --  If -gnatd_I, print "info:" messages about type inference that could
        --  have been done.
  
     end Associations;
  
     procedure Analyze_One_Association
!      (I_Node   :  Node_Id; -- instantiation node
!       Assoc    : Associations.Assoc_Rec;
!       --  Logical 'in out' parameters:
        Result_Renamings  : List_Id;
        Default_Actuals   : List_Id;
        Actuals_To_Freeze : Elist_Id);
--- 1262,1287 ----
        end record;
  
        function Match_Assocs
!         (N       : Node_Id;
!          Formals : List_Id;
!          F_Copy  : List_Id) return Match_Rec;
!       --  N is the instantiation node. Formals is the list of unanalyzed
        --  formals. F_Copy is the analyzed list of formals in the generic copy.
!       --  Return a Match_Rec with formals, explicit actuals, and default
        --  actuals filled in. Check legality rules related to formal/actual
        --  matching.
  
        procedure Note_Potential_Inference
!         (N     : Node_Id;
!          Match : Match_Rec);
        --  If -gnatd_I, print "info:" messages about type inference that could
        --  have been done.
  
     end Associations;
  
     procedure Analyze_One_Association
!      (N                 : Node_Id;
!       Assoc             : Associations.Assoc_Rec;
        Result_Renamings  : List_Id;
        Default_Actuals   : List_Id;
        Actuals_To_Freeze : Elist_Id);
*************** package body Sem_Ch12 is
*** 1279,1290 ****
     --  appended onto Actuals_To_Freeze.
  
     procedure Check_Fixed_Point_Warning
!      (Gen_Assocs : Associations.Gen_Assocs_Rec;
        Renamings : List_Id);
     --  Warn if any actual is a fixed-point type that has user-defined
     --  arithmetic operators, but there is no corresponding formal in the
     --  generic, in which case the predefined operators will be used. This
!    --  merits a warning because of the special semantics of fixed point
     --  operators. However, do not warn if the formal is private, because there
     --  can be no arithmetic operators in the generic so there no danger of
     --  confusion.
--- 1291,1302 ----
     --  appended onto Actuals_To_Freeze.
  
     procedure Check_Fixed_Point_Warning
!      (Match     : Associations.Match_Rec;
        Renamings : List_Id);
     --  Warn if any actual is a fixed-point type that has user-defined
     --  arithmetic operators, but there is no corresponding formal in the
     --  generic, in which case the predefined operators will be used. This
!    --  deserves a warning because of the special semantics of fixed point
     --  operators. However, do not warn if the formal is private, because there
     --  can be no arithmetic operators in the generic so there no danger of
     --  confusion.
*************** package body Sem_Ch12 is
*** 1315,1341 ****
        --  analyzed formals in cases where there are multiple ones
        --  corresponding to a particular unanalyzed one.
  
!       function Num_An_Formals (F_Copy  : List_Id) return Assoc_Count;
        --  Number of analyzed formals that correspond directly to unanalyzed
        --  formals. There are all sorts of other things in F_Copy, which
        --  are not counted.
  
!       procedure Check_Box (I_Node, Actual : Node_Id);
        --  Check for errors in "others => <>" and "Name => <>"
  
!       function Default (Un_Formal : Node_Id) return Generic_Actual_Rec;
        --  Return the default for a given formal, which can be a name,
        --  expression, box, etc.
  
        procedure Match_Positional
!         (Src_Assoc : in out Node_Id; Assoc : in out Assoc_Rec);
        --  Called by Match_Assocs to match one positional parameter association.
        --  If the current formal (in Assoc) is not a use clause, then there is a
        --  match, and we set Assoc.Actual and move Src_Assoc to the next one.
  
        procedure Match_Named
!         (Src_Assoc : Node_Id; Assoc : in out Assoc_Rec;
!          Found : in out Boolean);
        --  Called by Match_Assocs to match one named parameter association.
        --  If the current formal (in Assoc) is not a use clause, and the
        --  selector name matches the formal name, then there is a match,
--- 1327,1355 ----
        --  analyzed formals in cases where there are multiple ones
        --  corresponding to a particular unanalyzed one.
  
!       function Num_An_Formals (F_Copy : List_Id) return Assoc_Count;
        --  Number of analyzed formals that correspond directly to unanalyzed
        --  formals. There are all sorts of other things in F_Copy, which
        --  are not counted.
  
!       procedure Check_Box (N, Actual : Node_Id);
        --  Check for errors in "others => <>" and "Name => <>"
  
!       function Default (Un_Formal : Node_Id) return Actual_Rec;
        --  Return the default for a given formal, which can be a name,
        --  expression, box, etc.
  
        procedure Match_Positional
!         (Src_Assoc : in out Node_Id;
!          Assoc     : in out Assoc_Rec);
        --  Called by Match_Assocs to match one positional parameter association.
        --  If the current formal (in Assoc) is not a use clause, then there is a
        --  match, and we set Assoc.Actual and move Src_Assoc to the next one.
  
        procedure Match_Named
!         (Src_Assoc : Node_Id;
!          Assoc     : in out Assoc_Rec;
!          Found     : in out Boolean);
        --  Called by Match_Assocs to match one named parameter association.
        --  If the current formal (in Assoc) is not a use clause, and the
        --  selector name matches the formal name, then there is a match,
*************** package body Sem_Ch12 is
*** 1343,1390 ****
        --  the matched formal, and set Found to True.
  
        procedure Inference_Msg
!         (Gen_Unit : Entity_Id;
!          Inferred_To, Inferred_From : Assoc_Rec;
!          Was_Inferred : Boolean);
        --  If Was_Inferred is True, this prints out an "info:" message
        --  showing the inference.
        --  If Was_Inferred is False, the message says that it could have
        --  been inferred.
  
        function Find_Assoc
!         (Gen_Assocs : Gen_Assocs_Rec; F : Entity_Id) return Assoc_Index;
!       --  Return the index of F in Gen_Assocs.Assocs, which must be
!       --  present.
  
        procedure Maybe_Infer_One
!         (Gen_Assocs : in out Gen_Assocs_Rec;
!          FF, AA : N_Entity_Id; Inferred_From : Assoc_Index;
!          Reason : Inference_Reason);
        --  If it makes sense to infer that formal FF is associated with
        --  actual AA, then do so.
  
        procedure Infer_From_Access
!         (Gen_Assocs : in out Gen_Assocs_Rec;
!          Index : Assoc_Index;
!          F : Node_Id;
           A_Full : Entity_Id);
        --  Try to infer the designated type
  
        procedure Infer_From_Array
!         (Gen_Assocs : in out Gen_Assocs_Rec;
!          Index : Assoc_Index;
!          F : Node_Id;
           A_Full : Entity_Id);
        --  Try to infer the index and component types
  
        procedure Infer_From_Discriminated
!         (Gen_Assocs : in out Gen_Assocs_Rec;
!          Index : Assoc_Index;
!          F : Node_Id;
           A_Full : Entity_Id);
        --  Try to infer the types of discriminants
  
!       procedure Infer_Actuals (Gen_Assocs : in out Gen_Assocs_Rec);
        --  Called by Match_Assocs after processing explicit and defaulted
        --  parameters to infer any that are still missing.
  
--- 1357,1406 ----
        --  the matched formal, and set Found to True.
  
        procedure Inference_Msg
!         (Gen_Unit      : Entity_Id;
!          Inferred_To   : Assoc_Rec;
!          Inferred_From : Assoc_Rec;
!          Was_Inferred  : Boolean);
        --  If Was_Inferred is True, this prints out an "info:" message
        --  showing the inference.
        --  If Was_Inferred is False, the message says that it could have
        --  been inferred.
  
        function Find_Assoc
!         (Match : Match_Rec;
!          F     : Entity_Id) return Assoc_Index;
!       --  Return the index of F in Match.Assocs, which must be present
  
        procedure Maybe_Infer_One
!         (Match         : in out Match_Rec;
!          FF, AA        : N_Entity_Id;
!          Inferred_From : Assoc_Index;
!          Reason        : Inference_Reason);
        --  If it makes sense to infer that formal FF is associated with
        --  actual AA, then do so.
  
        procedure Infer_From_Access
!         (Match  : in out Match_Rec;
!          Index  : Assoc_Index;
!          F      : Node_Id;
           A_Full : Entity_Id);
        --  Try to infer the designated type
  
        procedure Infer_From_Array
!         (Match  : in out Match_Rec;
!          Index  : Assoc_Index;
!          F      : Node_Id;
           A_Full : Entity_Id);
        --  Try to infer the index and component types
  
        procedure Infer_From_Discriminated
!         (Match  : in out Match_Rec;
!          Index  : Assoc_Index;
!          F      : Node_Id;
           A_Full : Entity_Id);
        --  Try to infer the types of discriminants
  
!       procedure Infer_Actuals (Match : in out Match_Rec);
        --  Called by Match_Assocs after processing explicit and defaulted
        --  parameters to infer any that are still missing.
  
*************** package body Sem_Ch12 is
*** 1542,1554 ****
        -- Check_Box --
        ---------------
  
!       procedure Check_Box (I_Node, Actual : Node_Id) is
        begin
           --  "... => <>" is allowed only in formal packages, not old-fashioned
           --  instantiations.
  
!          if Nkind (I_Node) /= N_Formal_Package_Declaration
!            and then Comes_From_Source (I_Node)
           then
              if Actual in N_Others_Choice_Id then
                 Error_Msg_N
--- 1558,1570 ----
        -- Check_Box --
        ---------------
  
!       procedure Check_Box (N, Actual : Node_Id) is
        begin
           --  "... => <>" is allowed only in formal packages, not old-fashioned
           --  instantiations.
  
!          if Nkind (N) /= N_Formal_Package_Declaration
!            and then Comes_From_Source (N)
           then
              if Actual in N_Others_Choice_Id then
                 Error_Msg_N
*************** package body Sem_Ch12 is
*** 1573,1581 ****
        -- Default --
        -------------
  
!       function Default (Un_Formal : Node_Id) return Generic_Actual_Rec is
        begin
!          return Result : Generic_Actual_Rec do
              case Nkind (Un_Formal) is
                 when N_Formal_Object_Declaration =>
                    if Present (Default_Expression (Un_Formal)) then
--- 1589,1597 ----
        -- Default --
        -------------
  
!       function Default (Un_Formal : Node_Id) return Actual_Rec is
        begin
!          return Result : Actual_Rec do
              case Nkind (Un_Formal) is
                 when N_Formal_Object_Declaration =>
                    if Present (Default_Expression (Un_Formal)) then
*************** package body Sem_Ch12 is
*** 1727,1748 ****
        ------------------
  
        function Match_Assocs
!         (I_Node : Node_Id; Formals : List_Id; F_Copy : List_Id)
!          return Gen_Assocs_Rec
        is
!          Src_Assocs : constant List_Id := Generic_Associations (I_Node);
!          Gen_Unit : constant Entity_Id := Defining_Entity (Parent (F_Copy));
        begin
           pragma Assert
             (Num_An_Formals (F_Copy) = Num_Formals (Formals)
              or else Serious_Errors_Detected > 0);
  
!          return Result : Gen_Assocs_Rec (Num_Assocs => Num_Formals (Formals))
           do
              Result.Gen_Unit := Gen_Unit;
              Result.Others_Present := False;
  
!             --  Loop through the unanalyzed formals:
  
              declare
                 procedure Set_Formal (F : Node_Id; Index : Assoc_Index);
--- 1743,1766 ----
        ------------------
  
        function Match_Assocs
!         (N       : Node_Id;
!          Formals : List_Id;
!          F_Copy  : List_Id) return Match_Rec
        is
!          Src_Assocs : constant List_Id   := Generic_Associations (N);
!          Gen_Unit   : constant Entity_Id := Defining_Entity (Parent (F_Copy));
! 
        begin
           pragma Assert
             (Num_An_Formals (F_Copy) = Num_Formals (Formals)
              or else Serious_Errors_Detected > 0);
  
!          return Result : Match_Rec (Num_Assocs => Num_Formals (Formals))
           do
              Result.Gen_Unit := Gen_Unit;
              Result.Others_Present := False;
  
!             --  Loop through the unanalyzed formals
  
              declare
                 procedure Set_Formal (F : Node_Id; Index : Assoc_Index);
*************** package body Sem_Ch12 is
*** 1779,1785 ****
                 Iter (Formals);
              end;
  
!             --  Loop through the analyzed copy of the formals:
  
              declare
                 procedure Set_An_Formal (F : Node_Id; Index : Assoc_Index);
--- 1797,1803 ----
                 Iter (Formals);
              end;
  
!             --  Loop through the analyzed copy of the formals
  
              declare
                 procedure Set_An_Formal (F : Node_Id; Index : Assoc_Index);
*************** package body Sem_Ch12 is
*** 1836,1842 ****
                 Iter (F_Copy);
              end;
  
!             --  Loop through actual source associations:
  
              declare
                 Src_Assoc : Node_Id := First (Src_Assocs);
--- 1854,1860 ----
                 Iter (F_Copy);
              end;
  
!             --  Loop through actual source associations
  
              declare
                 Src_Assoc : Node_Id := First (Src_Assocs);
*************** package body Sem_Ch12 is
*** 1864,1870 ****
                    --  Loop through named actuals and "others => <>":
  
                    while Present (Src_Assoc) loop
!                      Check_Box (I_Node, Src_Assoc);
                       if Src_Assoc in N_Others_Choice_Id then
                          Result.Others_Present := True;
                          exit;
--- 1882,1888 ----
                    --  Loop through named actuals and "others => <>":
  
                    while Present (Src_Assoc) loop
!                      Check_Box (N, Src_Assoc);
                       if Src_Assoc in N_Others_Choice_Id then
                          Result.Others_Present := True;
                          exit;
*************** package body Sem_Ch12 is
*** 1942,1949 ****
                 end;
              end loop;
  
!             if Nkind (I_Node) /= N_Formal_Package_Declaration then
!                Infer_Actuals (Gen_Assocs => Result);
              end if;
  
              --  Check for missing actuals
--- 1960,1967 ----
                 end;
              end loop;
  
!             if Nkind (N) /= N_Formal_Package_Declaration then
!                Infer_Actuals (Result);
              end if;
  
              --  Check for missing actuals
*************** package body Sem_Ch12 is
*** 1969,1977 ****
        -------------------
  
        procedure Inference_Msg
!         (Gen_Unit : Entity_Id;
!          Inferred_To, Inferred_From : Assoc_Rec;
!          Was_Inferred : Boolean)
        is
           pragma Assert (Debug_Flag_Underscore_II); -- This is only for -gnatd_I
  
--- 1987,1996 ----
        -------------------
  
        procedure Inference_Msg
!         (Gen_Unit      : Entity_Id;
!          Inferred_To   : Assoc_Rec;
!          Inferred_From : Assoc_Rec;
!          Was_Inferred  : Boolean)
        is
           pragma Assert (Debug_Flag_Underscore_II); -- This is only for -gnatd_I
  
*************** package body Sem_Ch12 is
*** 2009,2015 ****
        ------------------------------
  
        procedure Note_Potential_Inference
!         (I_Node : Node_Id; Gen_Assocs : Gen_Assocs_Rec)
        is
        begin
           if not Debug_Flag_Underscore_II or else Serious_Errors_Detected > 0
--- 2028,2035 ----
        ------------------------------
  
        procedure Note_Potential_Inference
!         (N     : Node_Id;
!          Match : Match_Rec)
        is
        begin
           if not Debug_Flag_Underscore_II or else Serious_Errors_Detected > 0
*************** package body Sem_Ch12 is
*** 2017,2036 ****
              return;
           end if;
  
!          for Index in Gen_Assocs.Assocs'Range loop
              declare
!                Assoc : Assoc_Rec renames Gen_Assocs.Assocs (Index);
              begin
                 if Assoc.Actual_Origin = From_Explicit_Actual
                   and then Present (Assoc.Info_Inferred_Actual)
!                  and then In_Extended_Main_Source_Unit (I_Node)
!                  and then not In_Internal_Unit (I_Node)
                 then
                    Inference_Msg
!                     (Gen_Assocs.Gen_Unit,
!                      Inferred_To => Assoc,
!                      Inferred_From => Gen_Assocs.Assocs (Assoc.Inferred_From),
!                      Was_Inferred => False);
                 end if;
              end;
           end loop;
--- 2037,2057 ----
              return;
           end if;
  
!          for Index in Match.Assocs'Range loop
              declare
!                Assoc : Assoc_Rec renames Match.Assocs (Index);
! 
              begin
                 if Assoc.Actual_Origin = From_Explicit_Actual
                   and then Present (Assoc.Info_Inferred_Actual)
!                  and then In_Extended_Main_Source_Unit (N)
!                  and then not In_Internal_Unit (N)
                 then
                    Inference_Msg
!                     (Match.Gen_Unit,
!                      Inferred_To   => Assoc,
!                      Inferred_From => Match.Assocs (Assoc.Inferred_From),
!                      Was_Inferred  => False);
                 end if;
              end;
           end loop;
*************** package body Sem_Ch12 is
*** 2041,2051 ****
        --------------
  
        function Find_Assoc
!         (Gen_Assocs : Gen_Assocs_Rec; F : Entity_Id) return Assoc_Index
        is
        begin
!          for Index in Gen_Assocs.Assocs'Range loop
!             if Defining_Entity (Gen_Assocs.Assocs (Index).An_Formal) = F then
                 return Index;
              end if;
           end loop;
--- 2062,2073 ----
        --------------
  
        function Find_Assoc
!         (Match : Match_Rec;
!          F     : Entity_Id) return Assoc_Index
        is
        begin
!          for Index in Match.Assocs'Range loop
!             if Defining_Entity (Match.Assocs (Index).An_Formal) = F then
                 return Index;
              end if;
           end loop;
*************** package body Sem_Ch12 is
*** 2058,2070 ****
        ---------------------
  
        procedure Maybe_Infer_One
!         (Gen_Assocs : in out Gen_Assocs_Rec;
!          FF, AA : N_Entity_Id; Inferred_From : Assoc_Index;
!          Reason : Inference_Reason)
        is
        begin
           if not (Is_Generic_Type (FF)
!                  and then Scope (FF) = Gen_Assocs.Gen_Unit)
           then
              return; -- no inference if not a formal type of this generic
           end if;
--- 2080,2093 ----
        ---------------------
  
        procedure Maybe_Infer_One
!         (Match         : in out Match_Rec;
!          FF, AA        : N_Entity_Id;
!          Inferred_From : Assoc_Index;
!          Reason        : Inference_Reason)
        is
        begin
           if not (Is_Generic_Type (FF)
!                  and then Scope (FF) = Match.Gen_Unit)
           then
              return; -- no inference if not a formal type of this generic
           end if;
*************** package body Sem_Ch12 is
*** 2074,2085 ****
           end if;
  
           declare
!             Index : constant Assoc_Index := Find_Assoc (Gen_Assocs, FF);
!             Assoc : Assoc_Rec renames Gen_Assocs.Assocs (Index);
              pragma Assert (Defining_Entity (Assoc.An_Formal) = FF);
  
              From_Actual : constant Node_Id :=
!               Gen_Assocs.Assocs (Inferred_From).Actual.Name_Exp;
  
           begin
              Assoc.Info_Inferred_Actual := AA;
--- 2097,2108 ----
           end if;
  
           declare
!             Index : constant Assoc_Index := Find_Assoc (Match, FF);
!             Assoc : Assoc_Rec renames Match.Assocs (Index);
              pragma Assert (Defining_Entity (Assoc.An_Formal) = FF);
  
              From_Actual : constant Node_Id :=
!               Match.Assocs (Inferred_From).Actual.Name_Exp;
  
           begin
              Assoc.Info_Inferred_Actual := AA;
*************** package body Sem_Ch12 is
*** 2097,2119 ****
  
                 if Debug_Flag_Underscore_II then
                    Inference_Msg
!                     (Gen_Assocs.Gen_Unit,
!                      Inferred_To => Assoc,
!                      Inferred_From => Gen_Assocs.Assocs (Assoc.Inferred_From),
!                      Was_Inferred => True);
                 end if;
              end if;
           end;
        end Maybe_Infer_One;
  
!       -------------------
!       -- Infer_Actuals --
!       -------------------
  
        procedure Infer_From_Access
!         (Gen_Assocs : in out Gen_Assocs_Rec;
!          Index : Assoc_Index;
!          F : Node_Id;
           A_Full : Entity_Id)
        is
        begin
--- 2120,2142 ----
  
                 if Debug_Flag_Underscore_II then
                    Inference_Msg
!                     (Match.Gen_Unit,
!                      Inferred_To   => Assoc,
!                      Inferred_From => Match.Assocs (Assoc.Inferred_From),
!                      Was_Inferred  => True);
                 end if;
              end if;
           end;
        end Maybe_Infer_One;
  
!       -----------------------
!       -- Infer_From_Access --
!       -----------------------
  
        procedure Infer_From_Access
!         (Match  : in out Match_Rec;
!          Index  : Assoc_Index;
!          F      : Node_Id;
           A_Full : Entity_Id)
        is
        begin
*************** package body Sem_Ch12 is
*** 2124,2130 ****
                 AA : constant Entity_Id := Designated_Type (A_Full);
              begin
                 Maybe_Infer_One
!                  (Gen_Assocs,
                   FF,
                   AA,
                   Inferred_From => Index,
--- 2147,2153 ----
                 AA : constant Entity_Id := Designated_Type (A_Full);
              begin
                 Maybe_Infer_One
!                  (Match,
                   FF,
                   AA,
                   Inferred_From => Index,
*************** package body Sem_Ch12 is
*** 2133,2142 ****
           end if;
        end Infer_From_Access;
  
        procedure Infer_From_Array
!         (Gen_Assocs : in out Gen_Assocs_Rec;
!          Index : Assoc_Index;
!          F : Node_Id;
           A_Full : Entity_Id)
        is
        begin
--- 2156,2169 ----
           end if;
        end Infer_From_Access;
  
+       ----------------------
+       -- Infer_From_Array --
+       ----------------------
+ 
        procedure Infer_From_Array
!         (Match  : in out Match_Rec;
!          Index  : Assoc_Index;
!          F      : Node_Id;
           A_Full : Entity_Id)
        is
        begin
*************** package body Sem_Ch12 is
*** 2150,2156 ****
                 while Present (F_Index_Type) and then Present (A_Index_Type)
                 loop
                    Maybe_Infer_One
!                     (Gen_Assocs,
                       Etype (F_Index_Type),
                       Etype (A_Index_Type),
                       Inferred_From => Index,
--- 2177,2183 ----
                 while Present (F_Index_Type) and then Present (A_Index_Type)
                 loop
                    Maybe_Infer_One
!                     (Match,
                       Etype (F_Index_Type),
                       Etype (A_Index_Type),
                       Inferred_From => Index,
*************** package body Sem_Ch12 is
*** 2168,2174 ****
                   Component_Type (A_Full);
              begin
                 Maybe_Infer_One
!                  (Gen_Assocs,
                    F_Comp_Type,
                    A_Comp_Type,
                    Inferred_From => Index,
--- 2195,2201 ----
                   Component_Type (A_Full);
              begin
                 Maybe_Infer_One
!                  (Match,
                    F_Comp_Type,
                    A_Comp_Type,
                    Inferred_From => Index,
*************** package body Sem_Ch12 is
*** 2177,2186 ****
           end if;
        end Infer_From_Array;
  
        procedure Infer_From_Discriminated
!         (Gen_Assocs : in out Gen_Assocs_Rec;
!          Index : Assoc_Index;
!          F : Node_Id;
           A_Full : Entity_Id)
        is
        begin
--- 2204,2217 ----
           end if;
        end Infer_From_Array;
  
+       ------------------------------
+       -- Infer_From_Discriminated --
+       ------------------------------
+ 
        procedure Infer_From_Discriminated
!         (Match  : in out Match_Rec;
!          Index  : Assoc_Index;
!          F      : Node_Id;
           A_Full : Entity_Id)
        is
        begin
*************** package body Sem_Ch12 is
*** 2196,2202 ****
              begin
                 while Present (F_Discrim) loop
                    Maybe_Infer_One
!                     (Gen_Assocs,
                       Etype (F_Discrim),
                       Etype (A_Discrim),
                       Inferred_From => Index,
--- 2227,2233 ----
              begin
                 while Present (F_Discrim) loop
                    Maybe_Infer_One
!                     (Match,
                       Etype (F_Discrim),
                       Etype (A_Discrim),
                       Inferred_From => Index,
*************** package body Sem_Ch12 is
*** 2210,2232 ****
           end if;
        end Infer_From_Discriminated;
  
!       procedure Infer_Actuals (Gen_Assocs : in out Gen_Assocs_Rec) is
!          --  Note that we can infer FROM defaults, but we cannot infer TO a
!          --  parameter that has a default. We can also infer from inferred
!          --  types.
  
!          --  We don't need to check that multiple inferences get the same
!          --  answer; the second one will get a type mismatch or nonstatically
!          --  matching error.
  
!          --  This code needs to be robust, in the sense of tolerating illegal
!          --  code, because we have not yet checked all legality rules. For
!          --  example, if a formal type F has a discriminant whose type is
!          --  another formal type, then we want to infer the type of the
!          --  discriminant from the actual for F. That actual must have
!          --  discriminants, but we have not checked that rule yet, so we
!          --  need to tolerate an actual for F that has no discriminants.
  
        begin
           --  For each parameter, check whether we can infer FROM that one TO
           --  other ones.
--- 2241,2267 ----
           end if;
        end Infer_From_Discriminated;
  
!       -------------------
!       -- Infer_Actuals --
!       -------------------
  
!       --  Note that we can infer FROM defaults, but we cannot infer TO a
!       --  parameter that has a default. We can also infer from inferred
!       --  types.
  
!       --  We don't need to check that multiple inferences get the same
!       --  answer; the second one will get a type mismatch or nonstatically
!       --  matching error.
! 
!       --  This code needs to be robust, in the sense of tolerating illegal
!       --  code, because we have not yet checked all legality rules. For
!       --  example, if a formal type F has a discriminant whose type is
!       --  another formal type, then we want to infer the type of the
!       --  discriminant from the actual for F. That actual must have
!       --  discriminants, but we have not checked that rule yet, so we
!       --  need to tolerate an actual for F that has no discriminants.
  
+       procedure Infer_Actuals (Match : in out Match_Rec) is
        begin
           --  For each parameter, check whether we can infer FROM that one TO
           --  other ones.
*************** package body Sem_Ch12 is
*** 2240,2251 ****
           --  designated type. The reverse loop implies that we will see the
           --  array type, then the access type, then the designated type.
  
!          for Index in reverse Gen_Assocs.Assocs'Range loop -- NB: "reverse"
!             if Gen_Assocs.Assocs (Index).Actual.Kind = Name_Exp then
                 declare
!                   F : constant Node_Id := Gen_Assocs.Assocs (Index).An_Formal;
                    A_E : constant Node_Id :=
!                     Gen_Assocs.Assocs (Index).Actual.Name_Exp;
                    A_Full : Entity_Id := Empty;
                 begin
                    if Nkind (A_E) in N_Has_Entity then
--- 2275,2286 ----
           --  designated type. The reverse loop implies that we will see the
           --  array type, then the access type, then the designated type.
  
!          for Index in reverse Match.Assocs'Range loop -- NB: "reverse"
!             if Match.Assocs (Index).Actual.Kind = Name_Exp then
                 declare
!                   F : constant Node_Id := Match.Assocs (Index).An_Formal;
                    A_E : constant Node_Id :=
!                     Match.Assocs (Index).Actual.Name_Exp;
                    A_Full : Entity_Id := Empty;
                 begin
                    if Nkind (A_E) in N_Has_Entity then
*************** package body Sem_Ch12 is
*** 2264,2270 ****
                    then
                       case Ekind (Defining_Entity (F)) is
                          when E_Access_Type | E_General_Access_Type =>
!                            Infer_From_Access (Gen_Assocs, Index, F, A_Full);
  
                          when E_Access_Subtype
                             | E_Access_Attribute_Type
--- 2299,2305 ----
                    then
                       case Ekind (Defining_Entity (F)) is
                          when E_Access_Type | E_General_Access_Type =>
!                            Infer_From_Access (Match, Index, F, A_Full);
  
                          when E_Access_Subtype
                             | E_Access_Attribute_Type
*************** package body Sem_Ch12 is
*** 2274,2280 ****
                             raise Program_Error;
  
                          when E_Array_Type | E_Array_Subtype =>
!                            Infer_From_Array (Gen_Assocs, Index, F, A_Full);
  
                          when E_String_Literal_Subtype =>
                             raise Program_Error;
--- 2309,2315 ----
                             raise Program_Error;
  
                          when E_Array_Type | E_Array_Subtype =>
!                            Infer_From_Array (Match, Index, F, A_Full);
  
                          when E_String_Literal_Subtype =>
                             raise Program_Error;
*************** package body Sem_Ch12 is
*** 2283,2295 ****
                             null;
                       end case;
  
!                      Infer_From_Discriminated (Gen_Assocs, Index, F, A_Full);
                    end if;
                 end;
              end if;
           end loop;
        end Infer_Actuals;
- 
     end Associations;
  
     ---------------------------
--- 2318,2329 ----
                             null;
                       end case;
  
!                      Infer_From_Discriminated (Match, Index, F, A_Full);
                    end if;
                 end;
              end if;
           end loop;
        end Infer_Actuals;
     end Associations;
  
     ---------------------------
*************** package body Sem_Ch12 is
*** 2316,2361 ****
     --------------------------
  
     function Analyze_Associations
!      (I_Node  : Node_Id;
        Formals : List_Id;
        F_Copy  : List_Id) return List_Id
     is
        use Associations;
  
!       Result_Renamings : constant List_Id  := New_List;
        --  To be returned. Includes "renamings" broadly interpreted
        --  (e.g. subtypes are used for types).
  
!       Actuals_To_Freeze : constant Elist_Id := New_Elmt_List;
!       Default_Actuals   : constant List_Id   := New_List;
! 
!       Gen_Assocs : constant Gen_Assocs_Rec :=
!         Match_Assocs (I_Node, Formals, F_Copy);
  
     begin
!       for Matching_Actual_Index in Gen_Assocs.Assocs'Range loop
           declare
!             Assoc : Assoc_Rec renames
!               Gen_Assocs.Assocs (Matching_Actual_Index);
           begin
              if Nkind (Assoc.Un_Formal) = N_Formal_Package_Declaration
                and then Error_Posted (Assoc.An_Formal)
              then
                 --  Restrict this to N_Formal_Package_Declaration,
                 --  because otherwise we miss errors.
                 Abandon_Instantiation (Instantiation_Node);
              end if;
  
!             if Nkind (Assoc.Un_Formal) in
!               N_Use_Package_Clause | N_Use_Type_Clause
              then
!                --  Copy the use clause to where it belongs:
                 Append (New_Copy_Tree (Assoc.Un_Formal), Result_Renamings);
  
              else
                 Analyze_One_Association
!                  (I_Node, Assoc,
!                   Result_Renamings, Default_Actuals, Actuals_To_Freeze);
              end if;
           end;
        end loop;
--- 2350,2398 ----
     --------------------------
  
     function Analyze_Associations
!      (N       : Node_Id;
        Formals : List_Id;
        F_Copy  : List_Id) return List_Id
     is
        use Associations;
  
!       Actuals_To_Freeze : constant Elist_Id := New_Elmt_List;
!       Default_Actuals   : constant List_Id  := New_List;
!       Result_Renamings  : constant List_Id  := New_List;
        --  To be returned. Includes "renamings" broadly interpreted
        --  (e.g. subtypes are used for types).
  
!       Match : constant Match_Rec := Match_Assocs (N, Formals, F_Copy);
  
     begin
!       for Index in Match.Assocs'Range loop
           declare
!             Assoc : Assoc_Rec renames Match.Assocs (Index);
! 
           begin
              if Nkind (Assoc.Un_Formal) = N_Formal_Package_Declaration
                and then Error_Posted (Assoc.An_Formal)
              then
                 --  Restrict this to N_Formal_Package_Declaration,
                 --  because otherwise we miss errors.
+ 
                 Abandon_Instantiation (Instantiation_Node);
              end if;
  
!             if Nkind (Assoc.Un_Formal) in N_Use_Package_Clause
!                                         | N_Use_Type_Clause
              then
!                --  Copy the use clause to where it belongs
! 
                 Append (New_Copy_Tree (Assoc.Un_Formal), Result_Renamings);
  
              else
                 Analyze_One_Association
!                  (N,
!                   Assoc,
!                   Result_Renamings,
!                   Default_Actuals,
!                   Actuals_To_Freeze);
              end if;
           end;
        end loop;
*************** package body Sem_Ch12 is
*** 2366,2374 ****
  
        declare
           Elmt : Elmt_Id := First_Elmt (Actuals_To_Freeze);
        begin
           while Present (Elmt) loop
!             Freeze_Before (I_Node, Node (Elmt));
              Next_Elmt (Elmt);
           end loop;
        end;
--- 2403,2412 ----
  
        declare
           Elmt : Elmt_Id := First_Elmt (Actuals_To_Freeze);
+ 
        begin
           while Present (Elmt) loop
!             Freeze_Before (N, Node (Elmt));
              Next_Elmt (Elmt);
           end loop;
        end;
*************** package body Sem_Ch12 is
*** 2388,2404 ****
                 Next (Default);
              end loop;
  
!             if No (Generic_Associations (I_Node)) then
!                Set_Generic_Associations (I_Node, Default_Actuals);
              else
!                Append_List_To (Generic_Associations (I_Node), Default_Actuals);
              end if;
           end;
        end if;
  
!       Note_Potential_Inference (I_Node, Gen_Assocs);
  
!       Check_Fixed_Point_Warning (Gen_Assocs, Result_Renamings);
  
        return Result_Renamings;
     end Analyze_Associations;
--- 2426,2442 ----
                 Next (Default);
              end loop;
  
!             if No (Generic_Associations (N)) then
!                Set_Generic_Associations (N, Default_Actuals);
              else
!                Append_List_To (Generic_Associations (N), Default_Actuals);
              end if;
           end;
        end if;
  
!       Note_Potential_Inference (N, Match);
  
!       Check_Fixed_Point_Warning (Match, Result_Renamings);
  
        return Result_Renamings;
     end Analyze_Associations;
*************** package body Sem_Ch12 is
*** 2408,2416 ****
     -----------------------------
  
     procedure Analyze_One_Association
!      (I_Node   :  Node_Id;
!       Assoc    : Associations.Assoc_Rec;
!       --  Logical 'in out' parameters:
        Result_Renamings  : List_Id;
        Default_Actuals   : List_Id;
        Actuals_To_Freeze : Elist_Id)
--- 2446,2453 ----
     -----------------------------
  
     procedure Analyze_One_Association
!      (N                 : Node_Id;
!       Assoc             : Associations.Assoc_Rec;
        Result_Renamings  : List_Id;
        Default_Actuals   : List_Id;
        Actuals_To_Freeze : Elist_Id)
*************** package body Sem_Ch12 is
*** 2482,2492 ****
  
                 if No (Match) and then not Inside_A_Generic then
                    Append_To (Default_Actuals,
!                     Make_Generic_Association (Sloc (I_Node),
                        Selector_Name =>
                          New_Occurrence_Of
                            (Defining_Identifier
!                             (Assoc.Un_Formal), Sloc (I_Node)),
                        Explicit_Generic_Actual_Parameter =>
                          New_Copy_Tree (Default_Expression (Assoc.Un_Formal))));
                 end if;
--- 2519,2529 ----
  
                 if No (Match) and then not Inside_A_Generic then
                    Append_To (Default_Actuals,
!                     Make_Generic_Association (Sloc (N),
                        Selector_Name =>
                          New_Occurrence_Of
                            (Defining_Identifier
!                             (Assoc.Un_Formal), Sloc (N)),
                        Explicit_Generic_Actual_Parameter =>
                          New_Copy_Tree (Default_Expression (Assoc.Un_Formal))));
                 end if;
*************** package body Sem_Ch12 is
*** 2607,2613 ****
                 --  unless this is a rewritten formal package, or the
                 --  formal is an Ada 2012 formal incomplete type.
  
!                if Nkind (I_Node) = N_Formal_Package_Declaration
                   or else
                     (Ada_Version >= Ada_2012
                       and then
--- 2644,2650 ----
                 --  unless this is a rewritten formal package, or the
                 --  formal is an Ada 2012 formal incomplete type.
  
!                if Nkind (N) = N_Formal_Package_Declaration
                   or else
                     (Ada_Version >= Ada_2012
                       and then
*************** package body Sem_Ch12 is
*** 2693,2699 ****
                 --  An instantiation is a freeze point for the actuals,
                 --  unless this is a rewritten formal package.
  
!                if Nkind (I_Node) /= N_Formal_Package_Declaration
                   and then Nkind (Match) = N_Identifier
                   and then Is_Subprogram (Entity (Match))
  
--- 2730,2736 ----
                 --  An instantiation is a freeze point for the actuals,
                 --  unless this is a rewritten formal package.
  
!                if Nkind (N) /= N_Formal_Package_Declaration
                   and then Nkind (Match) = N_Identifier
                   and then Is_Subprogram (Entity (Match))
  
*************** package body Sem_Ch12 is
*** 2711,2717 ****
                   --  subprograms defined in Standard which are used
                   --  as generic actuals.
  
!                  and then In_Same_Code_Unit (Entity (Match), I_Node)
                   and then Has_Fully_Defined_Profile (Entity (Match))
                 then
                    --  Mark the subprogram as having a delayed freeze
--- 2748,2754 ----
                   --  subprograms defined in Standard which are used
                   --  as generic actuals.
  
!                  and then In_Same_Code_Unit (Entity (Match), N)
                   and then Has_Fully_Defined_Profile (Entity (Match))
                 then
                    --  Mark the subprogram as having a delayed freeze
*************** package body Sem_Ch12 is
*** 2734,2744 ****
  
                 begin
                    Append_To (Default_Actuals,
!                     Make_Generic_Association (Sloc (I_Node),
                        Selector_Name                     =>
!                         New_Occurrence_Of (Subp, Sloc (I_Node)),
                        Explicit_Generic_Actual_Parameter =>
!                         New_Occurrence_Of (Subp, Sloc (I_Node))));
                 end;
              end if;
  
--- 2771,2781 ----
  
                 begin
                    Append_To (Default_Actuals,
!                     Make_Generic_Association (Sloc (N),
                        Selector_Name                     =>
!                         New_Occurrence_Of (Subp, Sloc (N)),
                        Explicit_Generic_Actual_Parameter =>
!                         New_Occurrence_Of (Subp, Sloc (N))));
                 end;
              end if;
  
*************** package body Sem_Ch12 is
*** 2851,2863 ****
  
                    if not Expander_Active
                      or else not Has_Completion (Actual)
!                     or else not In_Same_Source_Unit (I_Node, Actual)
                      or else Is_Frozen (Actual)
                      or else
                        (Present (Renamed_Entity (Actual))
                          and then
                            not In_Same_Source_Unit
!                                 (I_Node, (Renamed_Entity (Actual))))
                    then
                       null;
  
--- 2888,2900 ----
  
                    if not Expander_Active
                      or else not Has_Completion (Actual)
!                     or else not In_Same_Source_Unit (N, Actual)
                      or else Is_Frozen (Actual)
                      or else
                        (Present (Renamed_Entity (Actual))
                          and then
                            not In_Same_Source_Unit
!                                 (N, (Renamed_Entity (Actual))))
                    then
                       null;
  
*************** package body Sem_Ch12 is
*** 2869,2875 ****
  
                       Needs_Freezing := True;
  
!                      P := Parent (I_Node);
                       while Nkind (P) /= N_Compilation_Unit loop
                          if Nkind (P) = N_Handled_Sequence_Of_Statements
                          then
--- 2906,2912 ----
  
                       Needs_Freezing := True;
  
!                      P := Parent (N);
                       while Nkind (P) /= N_Compilation_Unit loop
                          if Nkind (P) = N_Handled_Sequence_Of_Statements
                          then
*************** package body Sem_Ch12 is
*** 3586,3592 ****
  
                 Decls :=
                   Analyze_Associations
!                    (I_Node  => Original_Node (N),
                      Formals => Generic_Formal_Declarations (Act_Tree),
                      F_Copy  => Generic_Formal_Declarations (Gen_Decl));
  
--- 3623,3629 ----
  
                 Decls :=
                   Analyze_Associations
!                    (N       => Original_Node (N),
                      Formals => Generic_Formal_Declarations (Act_Tree),
                      F_Copy  => Generic_Formal_Declarations (Gen_Decl));
  
*************** package body Sem_Ch12 is
*** 3602,3610 ****
           if No (Visible_Declarations (Specification (Pack_Decl))) then
              Set_Visible_Declarations (Specification (Pack_Decl), Decls);
           else
!             Insert_List_Before
!               (First (Visible_Declarations (Specification (Pack_Decl))),
!                  Decls);
           end if;
  
           return Pack_Decl;
--- 3639,3646 ----
           if No (Visible_Declarations (Specification (Pack_Decl))) then
              Set_Visible_Declarations (Specification (Pack_Decl), Decls);
           else
!             Prepend_List_To
!               (Visible_Declarations (Specification (Pack_Decl)), Decls);
           end if;
  
           return Pack_Decl;
*************** package body Sem_Ch12 is
*** 4860,4870 ****
  
        --  Local declarations
  
!       Gen_Id         : constant Node_Id    := Name (N);
!       Inst_Id        : constant Entity_Id  := Defining_Entity (N);
!       Is_Actual_Pack : constant Boolean    := Is_Internal (Inst_Id);
!       Loc            : constant Source_Ptr := Sloc (N);
! 
        Saved_GM   : constant Ghost_Mode_Type := Ghost_Mode;
        Saved_IGR  : constant Node_Id         := Ignored_Ghost_Region;
        Saved_ISMP : constant Boolean         :=
--- 4896,4905 ----
  
        --  Local declarations
  
!       Gen_Id     : constant Node_Id    := Name (N);
!       Loc        : constant Source_Ptr := Sloc (N);
!       Is_Abbrev  : constant Boolean    :=
!                      Is_Abbreviated_Instance (Defining_Entity (N));
        Saved_GM   : constant Ghost_Mode_Type := Ghost_Mode;
        Saved_IGR  : constant Node_Id         := Ignored_Ghost_Region;
        Saved_ISMP : constant Boolean         :=
*************** package body Sem_Ch12 is
*** 4877,4883 ****
        --  Save style check mode for restore on exit
  
        Act_Decl         : Node_Id;
-       Act_Decl_Name    : Node_Id;
        Act_Decl_Id      : Entity_Id;
        Act_Spec         : Node_Id;
        Act_Tree         : Node_Id;
--- 4912,4917 ----
*************** package body Sem_Ch12 is
*** 4918,4946 ****
  
        Instantiation_Node := N;
  
!       --  Case of instantiation of a generic package
! 
!       if Nkind (N) = N_Package_Instantiation then
!          Act_Decl_Id := New_Copy (Defining_Entity (N));
! 
!          if Nkind (Defining_Unit_Name (N)) = N_Defining_Program_Unit_Name then
!             Act_Decl_Name :=
!               Make_Defining_Program_Unit_Name (Loc,
!                 Name                =>
!                   New_Copy_Tree (Name (Defining_Unit_Name (N))),
!                 Defining_Identifier => Act_Decl_Id);
!          else
!             Act_Decl_Name := Act_Decl_Id;
!          end if;
! 
!       --  Case of instantiation of a formal package
! 
!       else
!          Act_Decl_Id   := Defining_Identifier (N);
!          Act_Decl_Name := Act_Decl_Id;
!       end if;
! 
!       Generate_Definition (Act_Decl_Id);
        Mutate_Ekind (Act_Decl_Id, E_Package);
        Set_Is_Not_Self_Hidden (Act_Decl_Id);
  
--- 4952,4958 ----
  
        Instantiation_Node := N;
  
!       Act_Decl_Id := New_Copy (Defining_Entity (N));
        Mutate_Ekind (Act_Decl_Id, E_Package);
        Set_Is_Not_Self_Hidden (Act_Decl_Id);
  
*************** package body Sem_Ch12 is
*** 4972,4978 ****
        --  Except for an abbreviated instance created to check a formal package,
        --  install the parent if this is a generic child unit.
  
!       if not Is_Abbreviated_Instance (Inst_Id) then
           Check_Generic_Child_Unit (Gen_Id, Parent_Installed);
        end if;
  
--- 4984,4990 ----
        --  Except for an abbreviated instance created to check a formal package,
        --  install the parent if this is a generic child unit.
  
!       if not Is_Abbrev then
           Check_Generic_Child_Unit (Gen_Id, Parent_Installed);
        end if;
  
*************** package body Sem_Ch12 is
*** 5075,5083 ****
           goto Leave;
  
        else
-          Mutate_Ekind (Inst_Id, E_Package);
-          Set_Scope (Inst_Id, Current_Scope);
- 
           --  If the context of the instance is subject to SPARK_Mode "off" or
           --  the annotation is altogether missing, set the global flag which
           --  signals Analyze_Pragma to ignore all SPARK_Mode pragmas within
--- 5087,5092 ----
*************** package body Sem_Ch12 is
*** 5115,5136 ****
           --  If this is the instance created to validate an actual package,
           --  only the formals matter, do not examine the package spec itself.
  
!          if Is_Actual_Pack then
              Set_Visible_Declarations (Act_Spec, New_List);
              Set_Private_Declarations (Act_Spec, New_List);
           end if;
  
           Renamings :=
             Analyze_Associations
!              (I_Node  => N,
                Formals => Generic_Formal_Declarations (Act_Tree),
                F_Copy  => Generic_Formal_Declarations (Gen_Decl));
  
           Vis_Prims_List := Check_Hidden_Primitives (Renamings);
  
           Set_Instance_Env (Gen_Unit, Act_Decl_Id);
-          Set_Defining_Unit_Name (Act_Spec, Act_Decl_Name);
           Set_Is_Generic_Instance (Act_Decl_Id);
           Set_Generic_Parent (Act_Spec, Gen_Unit);
  
           --  References to the generic in its own declaration or its body are
--- 5124,5161 ----
           --  If this is the instance created to validate an actual package,
           --  only the formals matter, do not examine the package spec itself.
  
!          if Is_Abbrev then
              Set_Visible_Declarations (Act_Spec, New_List);
              Set_Private_Declarations (Act_Spec, New_List);
           end if;
  
           Renamings :=
             Analyze_Associations
!              (N       => N,
                Formals => Generic_Formal_Declarations (Act_Tree),
                F_Copy  => Generic_Formal_Declarations (Gen_Decl));
  
           Vis_Prims_List := Check_Hidden_Primitives (Renamings);
  
+          --  Set minimal decoration on the original entity
+ 
+          Mutate_Ekind (Defining_Entity (N), E_Package);
+          Set_Scope (Defining_Entity (N), Current_Scope);
+ 
           Set_Instance_Env (Gen_Unit, Act_Decl_Id);
           Set_Is_Generic_Instance (Act_Decl_Id);
+          Generate_Definition (Act_Decl_Id);
+ 
+          if Nkind (Defining_Unit_Name (N)) = N_Defining_Program_Unit_Name then
+             Set_Defining_Unit_Name (Act_Spec,
+               Make_Defining_Program_Unit_Name (Loc,
+                 Name                =>
+                   New_Copy_Tree (Name (Defining_Unit_Name (N))),
+                 Defining_Identifier => Act_Decl_Id));
+          else
+             Set_Defining_Unit_Name (Act_Spec, Act_Decl_Id);
+          end if;
+ 
           Set_Generic_Parent (Act_Spec, Gen_Unit);
  
           --  References to the generic in its own declaration or its body are
*************** package body Sem_Ch12 is
*** 5274,5280 ****
                and then (not Is_Child_Unit (Gen_Unit)
                           or else not Is_Generic_Unit (Scope (Gen_Unit)))
                and then Might_Inline_Subp (Gen_Unit)
!               and then not Is_Actual_Pack
              then
                 if not Back_End_Inlining
                   and then (Front_End_Inlining or else Has_Inline_Always)
--- 5299,5305 ----
                and then (not Is_Child_Unit (Gen_Unit)
                           or else not Is_Generic_Unit (Scope (Gen_Unit)))
                and then Might_Inline_Subp (Gen_Unit)
!               and then not Is_Abbrev
              then
                 if not Back_End_Inlining
                   and then (Front_End_Inlining or else Has_Inline_Always)
*************** package body Sem_Ch12 is
*** 5319,5325 ****
                  or else Enclosing_Body_Present
                  or else Present (Corresponding_Body (Gen_Decl)))
                 and then Needs_Body_Instantiated (Gen_Unit)
!                and then not Is_Actual_Pack
                 and then not Inline_Now
                 and then (Operating_Mode = Generate_Code
                            or else (Operating_Mode = Check_Semantics
--- 5344,5350 ----
                  or else Enclosing_Body_Present
                  or else Present (Corresponding_Body (Gen_Decl)))
                 and then Needs_Body_Instantiated (Gen_Unit)
!                and then not Is_Abbrev
                 and then not Inline_Now
                 and then (Operating_Mode = Generate_Code
                            or else (Operating_Mode = Check_Semantics
*************** package body Sem_Ch12 is
*** 6032,6037 ****
--- 6057,6066 ----
  
        if (Is_In_Main_Unit (N) or else Is_Inlined_Or_Child_Of_Inlined (Subp))
  
+         --  No need to instantiate bodies in generic units
+ 
+         and then not Is_Generic_Unit (Cunit_Entity (Main_Unit))
+ 
          --  Must be generating code or analyzing code in GNATprove mode
  
          and then (Operating_Mode = Generate_Code
*************** package body Sem_Ch12 is
*** 6451,6457 ****
  
           Renamings :=
             Analyze_Associations
!              (I_Node  => N,
                Formals => Generic_Formal_Declarations (Act_Tree),
                F_Copy  => Generic_Formal_Declarations (Gen_Decl));
  
--- 6480,6486 ----
  
           Renamings :=
             Analyze_Associations
!              (N       => N,
                Formals => Generic_Formal_Declarations (Act_Tree),
                F_Copy  => Generic_Formal_Declarations (Gen_Decl));
  
*************** package body Sem_Ch12 is
*** 7559,7572 ****
     -------------------------------
  
     procedure Check_Fixed_Point_Warning
!      (Gen_Assocs : Associations.Gen_Assocs_Rec;
        Renamings : List_Id)
     is
        use Associations;
     begin
!       for Type_Index in Gen_Assocs.Assocs'Range loop
           declare
!             Assoc : Assoc_Rec renames Gen_Assocs.Assocs (Type_Index);
           begin
              if Nkind (Assoc.An_Formal) = N_Formal_Type_Declaration
                and then Is_Fixed_Point_Type (Defining_Entity (Assoc.An_Formal))
--- 7588,7602 ----
     -------------------------------
  
     procedure Check_Fixed_Point_Warning
!      (Match     : Associations.Match_Rec;
        Renamings : List_Id)
     is
        use Associations;
+ 
     begin
!       for Type_Index in Match.Assocs'Range loop
           declare
!             Assoc : Assoc_Rec renames Match.Assocs (Type_Index);
           begin
              if Nkind (Assoc.An_Formal) = N_Formal_Type_Declaration
                and then Is_Fixed_Point_Type (Defining_Entity (Assoc.An_Formal))
*************** package body Sem_Ch12 is
*** 7595,7603 ****
                          Op := Alias (Node (Elem));
  
                          for Op_Index in Type_Index + 1 ..
!                           Gen_Assocs.Assocs'Last
                          loop
!                            Formal := Gen_Assocs.Assocs (Op_Index).Un_Formal;
  
                             if Nkind (Formal) =
                                 N_Formal_Concrete_Subprogram_Declaration
--- 7625,7633 ----
                          Op := Alias (Node (Elem));
  
                          for Op_Index in Type_Index + 1 ..
!                           Match.Assocs'Last
                          loop
!                            Formal := Match.Assocs (Op_Index).Un_Formal;
  
                             if Nkind (Formal) =
                                 N_Formal_Concrete_Subprogram_Declaration
*************** package body Sem_Ch12 is
*** 9341,9349 ****
                and then Nkind (Ancestor_Type (N)) in N_Entity
              then
                 declare
-                   Root_Typ : constant Entity_Id :=
-                                Root_Type (Ancestor_Type (N));
- 
                    Typ : Entity_Id := Ancestor_Type (N);
  
                 begin
--- 9371,9376 ----
*************** package body Sem_Ch12 is
*** 9352,9358 ****
                          Switch_View (Typ);
                       end if;
  
!                      exit when Typ = Root_Typ;
  
                       Typ := Etype (Typ);
                    end loop;
--- 9379,9385 ----
                          Switch_View (Typ);
                       end if;
  
!                      exit when Etype (Typ) = Typ;
  
                       Typ := Etype (Typ);
                    end loop;
*************** package body Sem_Ch12 is
*** 10057,10069 ****
                 --  the freeze node for Inst must be inserted after that of
                 --  Parent_Inst. This relation is established by comparing
                 --  the Slocs of Parent_Inst freeze node and Inst.
!                --  We examine the parents of the enclosing lists to handle
                 --  the case where the parent instance is in the visible part
                 --  of a package declaration, and the inner instance is in
                 --  the corresponding private part.
  
!                if Parent (List_Containing (Freeze_Node (Par_Id)))
!                     = Parent (List_Containing (N))
                   and then Sloc (Freeze_Node (Par_Id)) <= Sloc (N)
                 then
                    Insert_Freeze_Node_For_Instance (N, F_Node);
--- 10084,10095 ----
                 --  the freeze node for Inst must be inserted after that of
                 --  Parent_Inst. This relation is established by comparing
                 --  the Slocs of Parent_Inst freeze node and Inst.
!                --  We examine the parents (of the enclosing lists) to handle
                 --  the case where the parent instance is in the visible part
                 --  of a package declaration, and the inner instance is in
                 --  the corresponding private part.
  
!                if Parent (Freeze_Node (Par_Id)) = Parent (N)
                   and then Sloc (Freeze_Node (Par_Id)) <= Sloc (N)
                 then
                    Insert_Freeze_Node_For_Instance (N, F_Node);
*************** package body Sem_Ch12 is
*** 10382,10388 ****
        --  investigated, and would allow this function to be significantly
        --  simplified. ???
  
!       Inst := Package_Instantiation (A);
  
        if Present (Inst) then
           if Nkind (Inst) = N_Package_Instantiation then
--- 10408,10415 ----
        --  investigated, and would allow this function to be significantly
        --  simplified. ???
  
!       Inst :=
!         (if Ekind (A) = E_Package then Package_Instantiation (A) else Empty);
  
        if Present (Inst) then
           if Nkind (Inst) = N_Package_Instantiation then
*************** package body Sem_Ch12 is
*** 10429,10438 ****
  
        else
           Inst := Next (Decl);
!          while Nkind (Inst) not in N_Formal_Package_Declaration
!                                  | N_Function_Instantiation
!                                  | N_Package_Instantiation
!                                  | N_Procedure_Instantiation
           loop
              Next (Inst);
           end loop;
--- 10456,10466 ----
  
        else
           Inst := Next (Decl);
!          while Present (Inst)
!            and then Nkind (Inst) not in N_Formal_Package_Declaration
!                                       | N_Function_Instantiation
!                                       | N_Package_Instantiation
!                                       | N_Procedure_Instantiation
           loop
              Next (Inst);
           end loop;
*************** package body Sem_Ch12 is
*** 14129,14134 ****
--- 14157,14172 ----
                 T2 := Etype (I2);
              end if;
  
+             --  In the case of a fixed-lower-bound subtype, we want to check
+             --  against the index type's range rather than the range of the
+             --  subtype (which will be seen as unconstrained, and whose bounds
+             --  won't generally match those of the formal unconstrained array
+             --  type's corresponding index type).
+ 
+             if Is_Fixed_Lower_Bound_Index_Subtype (T2) then
+                T2 := Etype (Scalar_Range (T2));
+             end if;
+ 
              if not Subtypes_Match
                       (Find_Actual_Type (Etype (I1), A_Gen_T), T2)
              then
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch13.adb gcc-16-20250615/gcc/ada/sem_ch13.adb
*** gcc-16-20250608/gcc/ada/sem_ch13.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch13.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Ch13 is
*** 6208,6213 ****
--- 6208,6214 ----
                 declare
                    Expr  : constant Node_Id := Expression (N);
                    O_Ent : Entity_Id;
+                   O_Typ : Entity_Id;
                    Off   : Boolean;
  
                 begin
*************** package body Sem_Ch13 is
*** 6220,6226 ****
                       return;
                    end if;
  
!                   Find_Overlaid_Entity (N, O_Ent, Off);
  
                    if Present (O_Ent) then
  
--- 6221,6227 ----
                       return;
                    end if;
  
!                   Find_Overlaid_Entity (N, O_Ent, O_Typ, Off);
  
                    if Present (O_Ent) then
  
*************** package body Sem_Ch13 is
*** 6273,6282 ****
  
                       if (Is_Record_Type (Etype (U_Ent))
                            or else Is_Array_Type (Etype (U_Ent)))
!                        and then (Is_Record_Type (Etype (O_Ent))
!                                   or else Is_Array_Type (Etype (O_Ent)))
                         and then Reverse_Storage_Order (Etype (U_Ent)) /=
!                                 Reverse_Storage_Order (Etype (O_Ent))
                       then
                          Error_Msg_N
                            ("??overlay changes scalar storage order", Expr);
--- 6274,6283 ----
  
                       if (Is_Record_Type (Etype (U_Ent))
                            or else Is_Array_Type (Etype (U_Ent)))
!                        and then (Is_Record_Type (O_Typ)
!                                   or else Is_Array_Type (O_Typ))
                         and then Reverse_Storage_Order (Etype (U_Ent)) /=
!                                 Reverse_Storage_Order (O_Typ)
                       then
                          Error_Msg_N
                            ("??overlay changes scalar storage order", Expr);
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch3.adb gcc-16-20250615/gcc/ada/sem_ch3.adb
*** gcc-16-20250608/gcc/ada/sem_ch3.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch3.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Ch3 is
*** 290,295 ****
--- 290,304 ----
     --  Check that the expression represented by E is suitable for use as a
     --  digits expression, i.e. it is of integer type, positive and static.
  
+    procedure Check_Discriminant_Conformance
+      (N        : Node_Id;
+       Prev     : Entity_Id;
+       Prev_Loc : Node_Id);
+    --  Check that the discriminants of a full type N fully conform to the
+    --  discriminants of the corresponding partial view Prev. Prev_Loc indicates
+    --  the source location of the partial view, which may be different than
+    --  Prev in the case of private types.
+ 
     procedure Check_Initialization (T : Entity_Id; Exp : Node_Id);
     --  Validate the initialization of an object declaration. T is the required
     --  type, and Exp is the initialization expression.
*************** package body Sem_Ch3 is
*** 382,388 ****
     --  created in the procedure and attached to Related_Nod.
  
     procedure Constrain_Array
!      (Def_Id      : in out Entity_Id;
        SI          : Node_Id;
        Related_Nod : Node_Id;
        Related_Id  : Entity_Id;
--- 391,397 ----
     --  created in the procedure and attached to Related_Nod.
  
     procedure Constrain_Array
!      (Def_Id      : Entity_Id;
        SI          : Node_Id;
        Related_Nod : Node_Id;
        Related_Id  : Entity_Id;
*************** package body Sem_Ch3 is
*** 1414,1420 ****
           end if;
  
        else
!          Setup_Access_Type (Desig_Typ => Process_Subtype (S, P, T, 'P'));
        end if;
  
        if not Error_Posted (T) then
--- 1423,1431 ----
           end if;
  
        else
!          Setup_Access_Type
!            (Desig_Typ =>
!               Process_Subtype (S, P, T, 'P', Incomplete_Type_OK => True));
        end if;
  
        if not Error_Posted (T) then
*************** package body Sem_Ch3 is
*** 1951,1957 ****
     procedure Analyze_Component_Declaration (N : Node_Id) is
        Id  : constant Entity_Id  := Defining_Identifier (N);
        E   : constant Node_Id    := Expression (N);
!       Typ : constant Node_Id    :=
                Subtype_Indication (Component_Definition (N));
        T   : Entity_Id;
        P   : Entity_Id;
--- 1962,1968 ----
     procedure Analyze_Component_Declaration (N : Node_Id) is
        Id  : constant Entity_Id  := Defining_Identifier (N);
        E   : constant Node_Id    := Expression (N);
!       Ind : constant Node_Id    :=
                Subtype_Indication (Component_Definition (N));
        T   : Entity_Id;
        P   : Entity_Id;
*************** package body Sem_Ch3 is
*** 2046,2055 ****
     --  Start of processing for Analyze_Component_Declaration
  
     begin
        Generate_Definition (Id);
        Enter_Name (Id);
  
!       if Present (Typ) then
           T := Find_Type_Of_Object
                  (Subtype_Indication (Component_Definition (N)), N);
  
--- 2057,2067 ----
     --  Start of processing for Analyze_Component_Declaration
  
     begin
+       Mutate_Ekind (Id, E_Component);
        Generate_Definition (Id);
        Enter_Name (Id);
  
!       if Present (Ind) then
           T := Find_Type_Of_Object
                  (Subtype_Indication (Component_Definition (N)), N);
  
*************** package body Sem_Ch3 is
*** 3701,3708 ****
           Set_Is_Static_Expression (E, True);
           Set_Etype                (E, Universal_Integer);
  
-          Set_Etype     (Id, Universal_Integer);
           Mutate_Ekind  (Id, E_Named_Integer);
           Set_Is_Frozen (Id, True);
  
           Set_Debug_Info_Needed (Id);
--- 3713,3720 ----
           Set_Is_Static_Expression (E, True);
           Set_Etype                (E, Universal_Integer);
  
           Mutate_Ekind  (Id, E_Named_Integer);
+          Set_Etype     (Id, Universal_Integer);
           Set_Is_Frozen (Id, True);
  
           Set_Debug_Info_Needed (Id);
*************** package body Sem_Ch3 is
*** 3762,3769 ****
  
        if Is_Integer_Type (T) then
           Resolve (E, T);
-          Set_Etype (Id, Universal_Integer);
           Mutate_Ekind (Id, E_Named_Integer);
  
        elsif Is_Real_Type (T) then
  
--- 3774,3781 ----
  
        if Is_Integer_Type (T) then
           Resolve (E, T);
           Mutate_Ekind (Id, E_Named_Integer);
+          Set_Etype (Id, Universal_Integer);
  
        elsif Is_Real_Type (T) then
  
*************** package body Sem_Ch3 is
*** 3794,3808 ****
           end if;
  
           Resolve (E, T);
-          Set_Etype (Id, Universal_Real);
           Mutate_Ekind (Id, E_Named_Real);
  
        else
           Wrong_Type (E, Any_Numeric);
           Resolve (E, T);
  
-          Set_Etype               (Id, T);
           Mutate_Ekind            (Id, E_Constant);
           Set_Never_Set_In_Source (Id, True);
           Set_Is_True_Constant    (Id, True);
           return;
--- 3806,3820 ----
           end if;
  
           Resolve (E, T);
           Mutate_Ekind (Id, E_Named_Real);
+          Set_Etype (Id, Universal_Real);
  
        else
           Wrong_Type (E, Any_Numeric);
           Resolve (E, T);
  
           Mutate_Ekind            (Id, E_Constant);
+          Set_Etype               (Id, T);
           Set_Never_Set_In_Source (Id, True);
           Set_Is_True_Constant    (Id, True);
           return;
*************** package body Sem_Ch3 is
*** 3951,3957 ****
                    Data_Path_String : constant String :=
                      Absolute_Dir
                      & System.OS_Lib.Directory_Separator
!                     & Stringt.To_String (Strval (Def));
  
                 begin
                    Data_Path := Name_Find (Data_Path_String);
--- 3963,3969 ----
                    Data_Path_String : constant String :=
                      Absolute_Dir
                      & System.OS_Lib.Directory_Separator
!                     & S;
  
                 begin
                    Data_Path := Name_Find (Data_Path_String);
*************** package body Sem_Ch3 is
*** 4364,4369 ****
--- 4376,4387 ----
     --  Start of processing for Analyze_Object_Declaration
  
     begin
+       if Constant_Present (N) then
+          Mutate_Ekind (Id, E_Constant);
+       else
+          Mutate_Ekind (Id, E_Variable);
+       end if;
+ 
        --  There are three kinds of implicit types generated by an
        --  object declaration:
  
*************** package body Sem_Ch3 is
*** 4443,4449 ****
  
              T := Find_Type_Of_Object (Object_Definition (N), N);
              Set_Etype (Id, T);
-             Mutate_Ekind (Id, E_Variable);
              goto Leave;
           end if;
  
--- 4461,4466 ----
*************** package body Sem_Ch3 is
*** 4469,4475 ****
  
           if Error_Posted (Id) then
              Set_Etype (Id, T);
-             Mutate_Ekind (Id, E_Variable);
              goto Leave;
           end if;
        end if;
--- 4486,4491 ----
*************** package body Sem_Ch3 is
*** 4552,4558 ****
              Error_Msg_N
                ("\declaration requires an initialization expression",
                  N);
-             Set_Constant_Present (N, False);
  
           --  In Ada 83, deferred constant must be of private type
  
--- 4568,4573 ----
*************** package body Sem_Ch3 is
*** 4659,4667 ****
              Set_Has_Completion (Id);
           end if;
  
!          --  Set type and resolve (type may be overridden later on). Note:
!          --  Ekind (Id) must still be E_Void at this point so that incorrect
!          --  early usage within E is properly diagnosed.
  
           Set_Etype (Id, T);
  
--- 4674,4680 ----
              Set_Has_Completion (Id);
           end if;
  
!          --  Set type and resolve (type may be overridden later on)
  
           Set_Etype (Id, T);
  
*************** package body Sem_Ch3 is
*** 4761,4767 ****
             and then In_Subrange_Of (Etype (Entity (E)), T)
           then
              Set_Is_Known_Valid (Id);
-             Mutate_Ekind (Id, E_Constant);
              Set_Actual_Subtype (Id, Etype (Entity (E)));
           end if;
  
--- 4774,4779 ----
*************** package body Sem_Ch3 is
*** 5010,5021 ****
              --  for discriminants and are thus not indefinite.
  
              elsif Is_Unchecked_Union (T) then
-                if Constant_Present (N) or else Nkind (E) = N_Function_Call then
-                   Mutate_Ekind (Id, E_Constant);
-                else
-                   Mutate_Ekind (Id, E_Variable);
-                end if;
- 
                 --  If the expression is an aggregate it contains the required
                 --  discriminant values but it has not been resolved yet, so do
                 --  it now, and treat it as the initial expression of an object
--- 5022,5027 ----
*************** package body Sem_Ch3 is
*** 5076,5085 ****
                    --  "X : Integer := X;".
  
                    if Constant_Present (N) then
-                      Mutate_Ekind         (Id, E_Constant);
                       Set_Is_True_Constant (Id);
                    else
-                      Mutate_Ekind (Id, E_Variable);
                       if Present (E) then
                          Set_Has_Initial_Value (Id);
                       end if;
--- 5082,5089 ----
*************** package body Sem_Ch3 is
*** 5221,5232 ****
        end if;
  
        if Constant_Present (N) then
-          Mutate_Ekind         (Id, E_Constant);
           Set_Is_True_Constant (Id);
  
        else
-          Mutate_Ekind (Id, E_Variable);
- 
           --  A variable is set as shared passive if it appears in a shared
           --  passive package, and is at the outer level. This is not done for
           --  entities generated during expansion, because those are always
--- 5225,5233 ----
*************** package body Sem_Ch3 is
*** 5779,5785 ****
           Enter_Name (Id);
        end if;
  
!       T := Process_Subtype (Subtype_Indication (N), N, Id, 'P');
  
        --  Class-wide equivalent types of records with unknown discriminants
        --  involve the generation of an itype which serves as the private view
--- 5780,5794 ----
           Enter_Name (Id);
        end if;
  
!       T :=
!         Process_Subtype
!           (Subtype_Indication (N),
!            N,
!            Id,
!            'P',
!            Excludes_Null      => Null_Exclusion_Present (N),
!            Incomplete_Type_OK =>
!              Ada_Version >= Ada_2005 or else Is_Itype (Id));
  
        --  Class-wide equivalent types of records with unknown discriminants
        --  involve the generation of an itype which serves as the private view
*************** package body Sem_Ch3 is
*** 6459,6470 ****
--- 6468,6482 ----
        Priv          : Entity_Id;
        Related_Id    : Entity_Id;
        Has_FLB_Index : Boolean := False;
+       K             : Entity_Kind;
  
     begin
        if Nkind (Def) = N_Constrained_Array_Definition then
           Index := First (Discrete_Subtype_Definitions (Def));
+          K := E_Array_Subtype;
        else
           Index := First (Subtype_Marks (Def));
+          K := E_Array_Type;
        end if;
  
        --  Find proper names for the implicit types which may be public. In case
*************** package body Sem_Ch3 is
*** 6596,6602 ****
        --  Process subtype indication if one is present
  
        if Present (Component_Typ) then
!          Element_Type := Process_Subtype (Component_Typ, P, Related_Id, 'C');
           Set_Etype (Component_Typ, Element_Type);
  
        --  Ada 2005 (AI-230): Access Definition case
--- 6608,6620 ----
        --  Process subtype indication if one is present
  
        if Present (Component_Typ) then
!          Element_Type :=
!            Process_Subtype
!              (Component_Typ,
!               P,
!               Related_Id,
!               'C',
!               Excludes_Null => Null_Exclusion_Present (Component_Def));
           Set_Etype (Component_Typ, Element_Type);
  
        --  Ada 2005 (AI-230): Access Definition case
*************** package body Sem_Ch3 is
*** 6637,6643 ****
           --  them unique suffixes, because GNATprove require distinct types to
           --  have different names.
  
!          T := Create_Itype (E_Void, P, Related_Id, 'T', Suffix_Index => -1);
        end if;
  
        --  Constrained array case
--- 6655,6661 ----
           --  them unique suffixes, because GNATprove require distinct types to
           --  have different names.
  
!          T := Create_Itype (K, P, Related_Id, 'T', Suffix_Index => -1);
        end if;
  
        --  Constrained array case
*************** package body Sem_Ch3 is
*** 7212,7218 ****
        Set_Directly_Designated_Type
          (Derived_Type, Designated_Type (Parent_Type));
  
!       Subt := Process_Subtype (S, N);
  
        if Nkind (S) /= N_Subtype_Indication
          and then Subt /= Base_Type (Subt)
--- 7230,7240 ----
        Set_Directly_Designated_Type
          (Derived_Type, Designated_Type (Parent_Type));
  
!       Subt :=
!         Process_Subtype
!           (S,
!            N,
!            Excludes_Null => Null_Exclusion_Present (Type_Definition (N)));
  
        if Nkind (S) /= N_Subtype_Indication
          and then Subt /= Base_Type (Subt)
*************** package body Sem_Ch3 is
*** 8114,8122 ****
           Set_Non_Binary_Modulus
             (Implicit_Base, Non_Binary_Modulus (Parent_Base));
  
-          Set_Is_Known_Valid
-            (Implicit_Base, Is_Known_Valid (Parent_Base));
- 
        elsif Is_Floating_Point_Type (Parent_Type) then
  
           --  Digits of base type is always copied from the digits value of
--- 8136,8141 ----
*************** package body Sem_Ch3 is
*** 8489,8499 ****
  
                 Analyze (Decl);
  
!                pragma Assert (Has_Discriminants (Full_Der)
!                  and then not Has_Unknown_Discriminants (Full_Der));
  
                 Uninstall_Declarations (Par_Scope);
  
                 --  Freeze the underlying record view, to prevent generation of
                 --  useless dispatching information, which is simply shared with
                 --  the real derived type.
--- 8508,8526 ----
  
                 Analyze (Decl);
  
!                pragma
!                  Assert
!                    ((Has_Discriminants (Full_Der)
!                      and then not Has_Unknown_Discriminants (Full_Der))
!                       or else Serious_Errors_Detected > 0);
  
                 Uninstall_Declarations (Par_Scope);
  
+                if Etype (Full_Der) = Any_Type then
+                   pragma Assert (Serious_Errors_Detected > 0);
+                   return;
+                end if;
+ 
                 --  Freeze the underlying record view, to prevent generation of
                 --  useless dispatching information, which is simply shared with
                 --  the real derived type.
*************** package body Sem_Ch3 is
*** 9458,9465 ****
        if Constraint_Present then
           if not Has_Discriminants (Parent_Base)
             or else
!              (Has_Unknown_Discriminants (Parent_Base)
!                and then Is_Private_Type (Parent_Base))
           then
              Error_Msg_N
                ("invalid constraint: type has no discriminant",
--- 9485,9492 ----
        if Constraint_Present then
           if not Has_Discriminants (Parent_Base)
             or else
!              (Has_Unknown_Discriminants (Parent_Type)
!                and then Is_Private_Type (Parent_Type))
           then
              Error_Msg_N
                ("invalid constraint: type has no discriminant",
*************** package body Sem_Ch3 is
*** 12668,12673 ****
--- 12695,12943 ----
  
     end Check_Digits_Expression;
  
+    ------------------------------------
+    -- Check_Discriminant_Conformance --
+    ------------------------------------
+ 
+    procedure Check_Discriminant_Conformance
+      (N        : Node_Id;
+       Prev     : Entity_Id;
+       Prev_Loc : Node_Id)
+    is
+       Old_Discr      : Entity_Id := First_Discriminant (Prev);
+       New_Discr      : Node_Id   := First (Discriminant_Specifications (N));
+       New_Discr_Id   : Entity_Id;
+       New_Discr_Type : Entity_Id;
+ 
+       procedure Conformance_Error (Msg : String; N : Node_Id);
+       --  Post error message for conformance error on given node. Two messages
+       --  are output. The first points to the previous declaration with a
+       --  general "no conformance" message. The second is the detailed reason,
+       --  supplied as Msg. The parameter N provide information for a possible
+       --  & insertion in the message.
+ 
+       -----------------------
+       -- Conformance_Error --
+       -----------------------
+ 
+       procedure Conformance_Error (Msg : String; N : Node_Id) is
+       begin
+          Error_Msg_Sloc := Sloc (Prev_Loc);
+          Error_Msg_N -- CODEFIX
+            ("not fully conformant with declaration#!", N);
+          Error_Msg_NE (Msg, N, N);
+       end Conformance_Error;
+ 
+    --  Start of processing for Check_Discriminant_Conformance
+ 
+    begin
+       while Present (Old_Discr) and then Present (New_Discr) loop
+          New_Discr_Id := Defining_Identifier (New_Discr);
+ 
+          --  The subtype mark of the discriminant on the full type has not
+          --  been analyzed so we do it here. For an access discriminant a new
+          --  type is created.
+ 
+          if Nkind (Discriminant_Type (New_Discr)) = N_Access_Definition then
+             New_Discr_Type :=
+               Access_Definition (N, Discriminant_Type (New_Discr));
+ 
+          else
+             Find_Type (Discriminant_Type (New_Discr));
+             New_Discr_Type := Etype (Discriminant_Type (New_Discr));
+ 
+             --  Ada 2005: if the discriminant definition carries a null
+             --  exclusion, create an itype to check properly for consistency
+             --  with partial declaration.
+ 
+             if Is_Access_Type (New_Discr_Type)
+               and then Null_Exclusion_Present (New_Discr)
+             then
+                New_Discr_Type :=
+                  Create_Null_Excluding_Itype
+                    (T           => New_Discr_Type,
+                     Related_Nod => New_Discr,
+                     Scope_Id    => Current_Scope);
+             end if;
+          end if;
+ 
+          if not Conforming_Types
+                   (Etype (Old_Discr), New_Discr_Type, Fully_Conformant)
+          then
+             Conformance_Error ("type of & does not match!", New_Discr_Id);
+             return;
+          else
+             --  Treat the new discriminant as an occurrence of the old one,
+             --  for navigation purposes, and fill in some semantic
+             --  information, for completeness.
+ 
+             Generate_Reference (Old_Discr, New_Discr_Id, 'r');
+             Set_Etype (New_Discr_Id, Etype (Old_Discr));
+             Set_Scope (New_Discr_Id, Scope (Old_Discr));
+          end if;
+ 
+          --  Names must match
+ 
+          if Chars (Old_Discr) /= Chars (Defining_Identifier (New_Discr)) then
+             Conformance_Error ("name & does not match!", New_Discr_Id);
+             return;
+          end if;
+ 
+          --  Default expressions must match
+ 
+          declare
+             NewD : constant Boolean :=
+                      Present (Expression (New_Discr));
+             OldD : constant Boolean :=
+                      Present (Expression (Parent (Old_Discr)));
+ 
+             function Has_Tagged_Limited_Partial_View
+               (Typ : Entity_Id) return Boolean;
+             --  Returns True iff Typ has a tagged limited partial view.
+ 
+             function Is_Derived_From_Immutably_Limited_Type
+               (Typ : Entity_Id) return Boolean;
+             --  Returns True iff Typ is a derived type (tagged or not)
+             --  whose ancestor type is immutably limited. The unusual
+             --  ("unusual" is one word for it) thing about this function
+             --  is that it handles the case where the ancestor name's Entity
+             --  attribute has not been set yet.
+ 
+             -------------------------------------
+             -- Has_Tagged_Limited_Partial_View --
+             -------------------------------------
+ 
+             function Has_Tagged_Limited_Partial_View
+               (Typ : Entity_Id) return Boolean
+             is
+                Priv : constant Entity_Id := Incomplete_Or_Partial_View (Typ);
+             begin
+                return Present (Priv)
+                  and then not Is_Incomplete_Type (Priv)
+                  and then Is_Tagged_Type (Priv)
+                  and then Limited_Present (Parent (Priv));
+             end Has_Tagged_Limited_Partial_View;
+ 
+             --------------------------------------------
+             -- Is_Derived_From_Immutably_Limited_Type --
+             --------------------------------------------
+ 
+             function Is_Derived_From_Immutably_Limited_Type
+               (Typ : Entity_Id) return Boolean
+             is
+                Type_Def : constant Node_Id := Type_Definition (Parent (Typ));
+                Parent_Name : Node_Id;
+             begin
+                if Nkind (Type_Def) /= N_Derived_Type_Definition then
+                   return False;
+                end if;
+                Parent_Name := Subtype_Indication (Type_Def);
+                if Nkind (Parent_Name) = N_Subtype_Indication then
+                   Parent_Name := Subtype_Mark (Parent_Name);
+                end if;
+                if Parent_Name not in N_Has_Entity_Id
+                  or else No (Entity (Parent_Name))
+                then
+                   Find_Type (Parent_Name);
+                end if;
+                return Is_Immutably_Limited_Type (Entity (Parent_Name));
+             end Is_Derived_From_Immutably_Limited_Type;
+ 
+          begin
+             if NewD or OldD then
+ 
+                --  The old default value has been analyzed and expanded,
+                --  because the current full declaration will have frozen
+                --  everything before. The new default values have not been
+                --  expanded, so expand now to check conformance.
+ 
+                if NewD then
+                   Preanalyze_And_Resolve_Spec_Expression
+                     (Expression (New_Discr), New_Discr_Type);
+                end if;
+ 
+                if not (NewD and OldD)
+                  or else not Fully_Conformant_Expressions
+                               (Expression (Parent (Old_Discr)),
+                                Expression (New_Discr))
+ 
+                then
+                   Conformance_Error
+                     ("default expression for & does not match!",
+                      New_Discr_Id);
+                   return;
+                end if;
+ 
+                if NewD
+                  and then Ada_Version >= Ada_2005
+                  and then Nkind (Discriminant_Type (New_Discr)) =
+                             N_Access_Definition
+                  and then not Is_Immutably_Limited_Type
+                                 (Defining_Identifier (N))
+ 
+                  --  Check for a case that would be awkward to handle in
+                  --  Is_Immutably_Limited_Type (because sem_aux can't
+                  --  "with" sem_util).
+ 
+                  and then not Has_Tagged_Limited_Partial_View
+                                 (Defining_Identifier (N))
+ 
+                  --  Check for another case that would be awkward to handle
+                  --  in Is_Immutably_Limited_Type
+ 
+                  and then not Is_Derived_From_Immutably_Limited_Type
+                                 (Defining_Identifier (N))
+                then
+                   Error_Msg_N
+                     ("(Ada 2005) default value for access discriminant "
+                      & "requires immutably limited type",
+                      Expression (New_Discr));
+                   return;
+                end if;
+             end if;
+          end;
+ 
+          --  In Ada 83 case, grouping must match: (A,B : X) /= (A : X; B : X)
+ 
+          if Ada_Version = Ada_83 then
+             declare
+                Old_Disc : constant Node_Id := Declaration_Node (Old_Discr);
+ 
+             begin
+                --  Grouping (use of comma in param lists) must be the same
+                --  This is where we catch a misconformance like:
+ 
+                --    A, B : Integer
+                --    A : Integer; B : Integer
+ 
+                --  which are represented identically in the tree except
+                --  for the setting of the flags More_Ids and Prev_Ids.
+ 
+                if More_Ids (Old_Disc) /= More_Ids (New_Discr)
+                  or else Prev_Ids (Old_Disc) /= Prev_Ids (New_Discr)
+                then
+                   Conformance_Error
+                     ("grouping of & does not match!", New_Discr_Id);
+                   return;
+                end if;
+             end;
+          end if;
+ 
+          Next_Discriminant (Old_Discr);
+          Next (New_Discr);
+       end loop;
+ 
+       if Present (Old_Discr) then
+          Conformance_Error ("too few discriminants!", Defining_Identifier (N));
+          return;
+ 
+       elsif Present (New_Discr) then
+          Conformance_Error
+            ("too many discriminants!", Defining_Identifier (New_Discr));
+          return;
+       end if;
+    end Check_Discriminant_Conformance;
+ 
     --------------------------
     -- Check_Initialization --
     --------------------------
*************** package body Sem_Ch3 is
*** 13970,13976 ****
     ---------------------
  
     procedure Constrain_Array
!      (Def_Id      : in out Entity_Id;
        SI          : Node_Id;
        Related_Nod : Node_Id;
        Related_Id  : Entity_Id;
--- 14240,14246 ----
     ---------------------
  
     procedure Constrain_Array
!      (Def_Id      : Entity_Id;
        SI          : Node_Id;
        Related_Nod : Node_Id;
        Related_Id  : Entity_Id;
*************** package body Sem_Ch3 is
*** 14070,14083 ****
           end if;
        end if;
  
!       if No (Def_Id) then
!          Def_Id :=
!            Create_Itype (E_Array_Subtype, Related_Nod, Related_Id, Suffix);
!          Set_Parent (Def_Id, Related_Nod);
! 
!       else
!          Mutate_Ekind (Def_Id, E_Array_Subtype);
!       end if;
  
        Set_Size_Info      (Def_Id,                (T));
        Set_First_Rep_Item (Def_Id, First_Rep_Item (T));
--- 14340,14346 ----
           end if;
        end if;
  
!       Mutate_Ekind (Def_Id, E_Array_Subtype);
  
        Set_Size_Info      (Def_Id,                (T));
        Set_First_Rep_Item (Def_Id, First_Rep_Item (T));
*************** package body Sem_Ch3 is
*** 14963,14979 ****
        R      : Node_Id := Empty;
        T      : constant Entity_Id := Etype (Index);
        Is_FLB_Index : Boolean := False;
  
     begin
!       Def_Id :=
!         Create_Itype (E_Void, Related_Nod, Related_Id, Suffix, Suffix_Index);
!       Set_Etype (Def_Id, Base_Type (T));
  
!       if Nkind (S) = N_Range
!         or else
!           (Nkind (S) = N_Attribute_Reference
!             and then Attribute_Name (S) = Name_Range)
!       then
           --  A Range attribute will be transformed into N_Range by Resolve
  
           --  If a range has an Empty upper bound, then remember that for later
--- 15226,15249 ----
        R      : Node_Id := Empty;
        T      : constant Entity_Id := Etype (Index);
        Is_FLB_Index : Boolean := False;
+       Is_Range     : constant Boolean :=
+         Nkind (S) = N_Range
+         or else (Nkind (S) = N_Attribute_Reference
+                  and then Attribute_Name (S) = Name_Range);
+       Is_Indic     : constant Boolean := Nkind (S) = N_Subtype_Indication;
+       K            : constant Entity_Kind :=
+         (if Is_Modular_Integer_Type (T) then E_Modular_Integer_Subtype
+          elsif Is_Integer_Type (T) then E_Signed_Integer_Subtype
+          else E_Enumeration_Subtype);
  
     begin
!       if Is_Range or else Is_Indic then
!          Def_Id :=
!            Create_Itype (K, Related_Nod, Related_Id, Suffix, Suffix_Index);
!          Set_Etype (Def_Id, Base_Type (T));
!       end if;
  
!       if Is_Range then
           --  A Range attribute will be transformed into N_Range by Resolve
  
           --  If a range has an Empty upper bound, then remember that for later
*************** package body Sem_Ch3 is
*** 15008,15014 ****
              end if;
           end if;
  
!       elsif Nkind (S) = N_Subtype_Indication then
  
           --  The parser has verified that this is a discrete indication
  
--- 15278,15284 ----
              end if;
           end if;
  
!       elsif Is_Indic then
  
           --  The parser has verified that this is a discrete indication
  
*************** package body Sem_Ch3 is
*** 15063,15089 ****
                    S, Entity (S));
              end if;
  
-             return;
- 
           else
              Error_Msg_N ("invalid index constraint", S);
              Rewrite (S, New_Occurrence_Of (T, Sloc (S)));
-             return;
           end if;
        end if;
  
        --  Complete construction of the Itype
  
!       if Is_Modular_Integer_Type (T) then
!          Mutate_Ekind (Def_Id, E_Modular_Integer_Subtype);
! 
!       elsif Is_Integer_Type (T) then
!          Mutate_Ekind (Def_Id, E_Signed_Integer_Subtype);
! 
!       else
!          Mutate_Ekind (Def_Id, E_Enumeration_Subtype);
           Set_Is_Character_Type (Def_Id, Is_Character_Type (T));
!          Set_First_Literal     (Def_Id, First_Literal (T));
        end if;
  
        Set_Size_Info      (Def_Id,                (T));
--- 15333,15351 ----
                    S, Entity (S));
              end if;
  
           else
              Error_Msg_N ("invalid index constraint", S);
              Rewrite (S, New_Occurrence_Of (T, Sloc (S)));
           end if;
+ 
+          return;
        end if;
  
        --  Complete construction of the Itype
  
!       if K = E_Enumeration_Subtype then
           Set_Is_Character_Type (Def_Id, Is_Character_Type (T));
!          Set_First_Literal (Def_Id, First_Literal (T));
        end if;
  
        Set_Size_Info      (Def_Id,                (T));
*************** package body Sem_Ch3 is
*** 15093,15099 ****
        --  If this is a range for a fixed-lower-bound subtype, then set the
        --  index itype's low bound to the FLB and the index itype's upper bound
        --  to the high bound of the parent array type's index subtype. Also,
!       --  mark the itype as an FLB index subtype.
  
        if Nkind (S) = N_Range and then Is_FLB_Index then
           Set_Scalar_Range
--- 15355,15362 ----
        --  If this is a range for a fixed-lower-bound subtype, then set the
        --  index itype's low bound to the FLB and the index itype's upper bound
        --  to the high bound of the parent array type's index subtype. Also,
!       --  set the Etype of the new scalar range and mark the itype as an FLB
!       --  index subtype.
  
        if Nkind (S) = N_Range and then Is_FLB_Index then
           Set_Scalar_Range
*************** package body Sem_Ch3 is
*** 15101,15106 ****
--- 15364,15370 ----
              Make_Range (Sloc (S),
                Low_Bound  => Low_Bound (S),
                High_Bound => Type_High_Bound (T)));
+          Set_Etype (Scalar_Range (Def_Id), Etype (Index));
           Set_Is_Fixed_Lower_Bound_Index_Subtype (Def_Id);
  
        else
*************** package body Sem_Ch3 is
*** 18833,18842 ****
                     or else Nkind (P) /= N_Object_Declaration
                     or else Is_Library_Level_Entity (Defining_Identifier (P)));
  
!       --  Otherwise, the object definition is just a subtype_mark
  
        else
!          T := Process_Subtype (Obj_Def, Related_Nod);
        end if;
  
        return T;
--- 19097,19111 ----
                     or else Nkind (P) /= N_Object_Declaration
                     or else Is_Library_Level_Entity (Defining_Identifier (P)));
  
!       --  Otherwise, either the object definition is just a subtype_mark or we
!       --  are analyzing a component declaration.
  
        else
!          T :=
!            Process_Subtype
!              (Obj_Def,
!               Related_Nod,
!               Excludes_Null => Null_Exclusion_Present (Parent (Obj_Def)));
        end if;
  
        return T;
*************** package body Sem_Ch3 is
*** 19844,19850 ****
     --  Start of processing for Is_Visible_Component
  
     begin
!       if Ekind (C) in E_Component | E_Discriminant then
           Original_Comp := Original_Record_Component (C);
        end if;
  
--- 20113,20121 ----
     --  Start of processing for Is_Visible_Component
  
     begin
!       if Ekind (C) in E_Component | E_Discriminant
!         and then Is_Not_Self_Hidden (C)
!       then
           Original_Comp := Original_Record_Component (C);
        end if;
  
*************** package body Sem_Ch3 is
*** 20339,20355 ****
  
        if No (Def_Id) then
           Def_Id :=
!            Create_Itype (E_Void, Related_Nod, Related_Id, 'D', Suffix_Index);
           Set_Etype (Def_Id, Base_Type (T));
  
!          if Is_Signed_Integer_Type (T) then
!             Mutate_Ekind (Def_Id, E_Signed_Integer_Subtype);
! 
!          elsif Is_Modular_Integer_Type (T) then
!             Mutate_Ekind (Def_Id, E_Modular_Integer_Subtype);
! 
!          else
!             Mutate_Ekind          (Def_Id, E_Enumeration_Subtype);
              Set_Is_Character_Type (Def_Id, Is_Character_Type (T));
              Set_First_Literal     (Def_Id, First_Literal (T));
           end if;
--- 20610,20626 ----
  
        if No (Def_Id) then
           Def_Id :=
!            Create_Itype
!              ((if Is_Signed_Integer_Type (T) then E_Signed_Integer_Subtype
!                elsif Is_Modular_Integer_Type (T) then E_Modular_Integer_Subtype
!                else E_Enumeration_Subtype),
!               Related_Nod,
!               Related_Id,
!               'D',
!               Suffix_Index);
           Set_Etype (Def_Id, Base_Type (T));
  
!          if Ekind (Def_Id) = E_Enumeration_Subtype then
              Set_Is_Character_Type (Def_Id, Is_Character_Type (T));
              Set_First_Literal     (Def_Id, First_Literal (T));
           end if;
*************** package body Sem_Ch3 is
*** 20983,20988 ****
--- 21254,21265 ----
  
        Discr := First (Discriminant_Specifications (N));
        while Present (Discr) loop
+          if Ekind (Defining_Identifier (Discr)) = E_In_Parameter then
+             Reinit_Field_To_Zero
+               (Defining_Identifier (Discr), F_Discriminal_Link);
+          end if;
+ 
+          Mutate_Ekind (Defining_Identifier (Discr), E_Discriminant);
           Enter_Name (Defining_Identifier (Discr));
  
           --  For navigation purposes we add a reference to the discriminant
*************** package body Sem_Ch3 is
*** 21258,21268 ****
        while Present (Discr) loop
           Id := Defining_Identifier (Discr);
  
-          if Ekind (Id) = E_In_Parameter then
-             Reinit_Field_To_Zero (Id, F_Discriminal_Link);
-          end if;
- 
-          Mutate_Ekind (Id, E_Discriminant);
           Set_Is_Not_Self_Hidden (Id);
           Reinit_Component_Location (Id);
           Reinit_Esize (Id);
--- 21535,21540 ----
*************** package body Sem_Ch3 is
*** 22509,22518 ****
     ---------------------
  
     function Process_Subtype
!      (S           : Node_Id;
!       Related_Nod : Node_Id;
!       Related_Id  : Entity_Id := Empty;
!       Suffix      : Character := ' ') return Entity_Id
     is
        procedure Check_Incomplete (T : Node_Id);
        --  Called to verify that an incomplete type is not used prematurely
--- 22781,22792 ----
     ---------------------
  
     function Process_Subtype
!      (S                  : Node_Id;
!       Related_Nod        : Node_Id;
!       Related_Id         : Entity_Id := Empty;
!       Suffix             : Character := ' ';
!       Excludes_Null      : Boolean := False;
!       Incomplete_Type_OK : Boolean := False) return Entity_Id
     is
        procedure Check_Incomplete (T : Node_Id);
        --  Called to verify that an incomplete type is not used prematurely
*************** package body Sem_Ch3 is
*** 22526,22538 ****
           --  Ada 2005 (AI-412): Incomplete subtypes are legal
  
           if Ekind (Root_Type (Entity (T))) = E_Incomplete_Type
!            and then
!              not (Ada_Version >= Ada_2005
!                    and then
!                      (Nkind (Parent (T)) = N_Subtype_Declaration
!                        or else (Nkind (Parent (T)) = N_Subtype_Indication
!                                  and then Nkind (Parent (Parent (T))) =
!                                                    N_Subtype_Declaration)))
           then
              Error_Msg_N ("invalid use of type before its full declaration", T);
           end if;
--- 22800,22806 ----
           --  Ada 2005 (AI-412): Incomplete subtypes are legal
  
           if Ekind (Root_Type (Entity (T))) = E_Incomplete_Type
!            and then not Incomplete_Type_OK
           then
              Error_Msg_N ("invalid use of type before its full declaration", T);
           end if;
*************** package body Sem_Ch3 is
*** 22540,22665 ****
  
        --  Local variables
  
!       P               : Node_Id;
        Def_Id          : Entity_Id;
        Error_Node      : Node_Id;
        Full_View_Id    : Entity_Id;
        Subtype_Mark_Id : Entity_Id;
  
-       May_Have_Null_Exclusion : Boolean;
- 
     --  Start of processing for Process_Subtype
  
     begin
!       --  Case of no constraints present
! 
!       if Nkind (S) /= N_Subtype_Indication then
!          Find_Type (S);
! 
!          --  No way to proceed if the subtype indication is malformed. This
!          --  will happen for example when the subtype indication in an object
!          --  declaration is missing altogether and the expression is analyzed
!          --  as if it were that indication.
! 
!          if not Is_Entity_Name (S) then
!             return Any_Type;
!          end if;
! 
!          Check_Incomplete (S);
!          P := Parent (S);
  
!          --  The following mirroring of assertion in Null_Exclusion_Present is
!          --  ugly, can't we have a range, a static predicate or even a flag???
  
!          May_Have_Null_Exclusion :=
!            Present (P)
!              and then
!            Nkind (P) in N_Access_Definition
!                       | N_Access_Function_Definition
!                       | N_Access_Procedure_Definition
!                       | N_Access_To_Object_Definition
!                       | N_Allocator
!                       | N_Component_Definition
!                       | N_Derived_Type_Definition
!                       | N_Discriminant_Specification
!                       | N_Formal_Object_Declaration
!                       | N_Function_Specification
!                       | N_Object_Declaration
!                       | N_Object_Renaming_Declaration
!                       | N_Parameter_Specification
!                       | N_Subtype_Declaration;
  
!          --  Ada 2005 (AI-231): Static check
  
!          if Ada_Version >= Ada_2005
!            and then May_Have_Null_Exclusion
!            and then Null_Exclusion_Present (P)
!            and then Nkind (P) /= N_Access_To_Object_Definition
!            and then not Is_Access_Type (Entity (S))
!          then
!             Error_Msg_N ("`NOT NULL` only allowed for an access type", S);
!          end if;
  
!          --  Create an Itype that is a duplicate of Entity (S) but with the
!          --  null-exclusion attribute.
  
!          if May_Have_Null_Exclusion
!            and then Is_Access_Type (Entity (S))
!            and then Null_Exclusion_Present (P)
  
!             --  No need to check the case of an access to object definition.
!             --  It is correct to define double not-null pointers.
  
!             --  Example:
!             --     type Not_Null_Int_Ptr is not null access Integer;
!             --     type Acc is not null access Not_Null_Int_Ptr;
  
!            and then Nkind (P) /= N_Access_To_Object_Definition
!          then
!             if Can_Never_Be_Null (Entity (S)) then
!                case Nkind (Related_Nod) is
!                   when N_Full_Type_Declaration =>
!                      if Nkind (Type_Definition (Related_Nod))
!                        in N_Array_Type_Definition
!                      then
                          Error_Node :=
                            Subtype_Indication
!                             (Component_Definition
!                              (Type_Definition (Related_Nod)));
!                      else
!                         Error_Node :=
!                           Subtype_Indication (Type_Definition (Related_Nod));
!                      end if;
! 
!                   when N_Subtype_Declaration =>
!                      Error_Node := Subtype_Indication (Related_Nod);
! 
!                   when N_Object_Declaration =>
!                      Error_Node := Object_Definition (Related_Nod);
  
!                   when N_Component_Declaration =>
!                      Error_Node :=
!                        Subtype_Indication (Component_Definition (Related_Nod));
  
!                   when N_Allocator =>
!                      Error_Node := Expression (Related_Nod);
  
!                   when others =>
!                      pragma Assert (False);
!                      Error_Node := Related_Nod;
!                end case;
  
!                Error_Msg_NE
!                  ("`NOT NULL` not allowed (& already excludes null)",
!                   Error_Node,
!                   Entity (S));
              end if;
- 
-             Set_Etype  (S,
-               Create_Null_Excluding_Itype
-                 (T           => Entity (S),
-                  Related_Nod => P));
-             Set_Entity (S, Etype (S));
           end if;
  
           return Entity (S);
--- 22808,22898 ----
  
        --  Local variables
  
!       P               : constant Node_Id := Parent (S);
!       Mark            : Node_Id;
        Def_Id          : Entity_Id;
        Error_Node      : Node_Id;
        Full_View_Id    : Entity_Id;
        Subtype_Mark_Id : Entity_Id;
  
     --  Start of processing for Process_Subtype
  
     begin
!       if Nkind (S) = N_Subtype_Indication then
!          Mark := Subtype_Mark (S);
!       else
!          Mark := S;
!       end if;
  
!       Find_Type (Mark);
  
!       --  No way to proceed if the subtype indication is malformed. This will
!       --  happen for example when the subtype indication in an object
!       --  declaration is missing altogether and the expression is analyzed as
!       --  if it were that indication.
  
!       if not Is_Entity_Name (Mark) then
!          return Any_Type;
!       end if;
  
!       Check_Incomplete (Mark);
  
!       --  Case of no constraints present
  
!       if Nkind (S) /= N_Subtype_Indication then
!          if Excludes_Null then
!             --  Create an Itype that is a duplicate of Entity (S) but with the
!             --  null-exclusion attribute.
!             if Is_Access_Type (Entity (S)) then
!                if Can_Never_Be_Null (Entity (S)) then
!                   case Nkind (Related_Nod) is
!                      when N_Full_Type_Declaration =>
!                         if Nkind (Type_Definition (Related_Nod))
!                            in N_Array_Type_Definition
!                         then
!                            Error_Node :=
!                              Subtype_Indication
!                                (Component_Definition
!                                   (Type_Definition (Related_Nod)));
!                         else
!                            Error_Node :=
!                              Subtype_Indication
!                                (Type_Definition (Related_Nod));
!                         end if;
  
!                      when N_Subtype_Declaration =>
!                         Error_Node := Subtype_Indication (Related_Nod);
  
!                      when N_Object_Declaration =>
!                         Error_Node := Object_Definition (Related_Nod);
  
!                      when N_Component_Declaration =>
                          Error_Node :=
                            Subtype_Indication
!                             (Component_Definition (Related_Nod));
  
!                      when N_Allocator =>
!                         Error_Node := Expression (Related_Nod);
  
!                      when others =>
!                         pragma Assert (False);
!                         Error_Node := Related_Nod;
!                   end case;
  
!                   Error_Msg_NE
!                     ("`NOT NULL` not allowed (& already excludes null)",
!                      Error_Node,
!                      Entity (S));
!                end if;
  
!                Set_Etype
!                  (S,
!                   Create_Null_Excluding_Itype
!                     (T => Entity (S), Related_Nod => P));
!                Set_Entity (S, Etype (S));
!             elsif Ada_Version >= Ada_2005 then
!                Error_Msg_N ("`NOT NULL` only allowed for an access type", S);
              end if;
           end if;
  
           return Entity (S);
*************** package body Sem_Ch3 is
*** 22668,22685 ****
        --  node (this node is created only if constraints are present).
  
        else
!          Find_Type (Subtype_Mark (S));
! 
!          if Nkind (Parent (S)) /= N_Access_To_Object_Definition
!            and then not
!             (Nkind (Parent (S)) = N_Subtype_Declaration
!               and then Is_Itype (Defining_Identifier (Parent (S))))
!          then
!             Check_Incomplete (Subtype_Mark (S));
!          end if;
! 
!          P := Parent (S);
!          Subtype_Mark_Id := Entity (Subtype_Mark (S));
  
           --  Explicit subtype declaration case
  
--- 22901,22907 ----
        --  node (this node is created only if constraints are present).
  
        else
!          Subtype_Mark_Id := Entity (Mark);
  
           --  Explicit subtype declaration case
  
*************** package body Sem_Ch3 is
*** 22699,22706 ****
           --  has not yet been called to create Def_Id.
  
           else
!             if Is_Array_Type (Subtype_Mark_Id)
!               or else Is_Concurrent_Type (Subtype_Mark_Id)
                or else Is_Access_Type (Subtype_Mark_Id)
              then
                 Def_Id := Empty;
--- 22921,22927 ----
           --  has not yet been called to create Def_Id.
  
           else
!             if Is_Concurrent_Type (Subtype_Mark_Id)
                or else Is_Access_Type (Subtype_Mark_Id)
              then
                 Def_Id := Empty;
*************** package body Sem_Ch3 is
*** 22733,22739 ****
  
              --  Make recursive call, having got rid of the bogus constraint
  
!             return Process_Subtype (S, Related_Nod, Related_Id, Suffix);
           end if;
  
           --  Remaining processing depends on type. Select on Base_Type kind to
--- 22954,22967 ----
  
              --  Make recursive call, having got rid of the bogus constraint
  
!             return
!               Process_Subtype
!                 (S,
!                  Related_Nod,
!                  Related_Id,
!                  Suffix,
!                  Excludes_Null,
!                  Incomplete_Type_OK);
           end if;
  
           --  Remaining processing depends on type. Select on Base_Type kind to
*************** package body Sem_Ch3 is
*** 22753,22758 ****
--- 22981,22988 ----
                       Error_Msg_N
                         ("constraint on class-wide type ignored??",
                          Constraint (S));
+                   else
+                      pragma Assert (False);
                    end if;
  
                    if Nkind (P) = N_Subtype_Declaration then
*************** package body Sem_Ch3 is
*** 22881,22888 ****
           --  Size, Alignment, Representation aspects and Convention are always
           --  inherited from the base type.
  
!          Set_Size_Info  (Def_Id,            (Subtype_Mark_Id));
!          Set_Rep_Info   (Def_Id,            (Subtype_Mark_Id));
           Set_Convention (Def_Id, Convention (Subtype_Mark_Id));
  
           --  The anonymous subtype created for the subtype indication
--- 23111,23118 ----
           --  Size, Alignment, Representation aspects and Convention are always
           --  inherited from the base type.
  
!          Set_Size_Info (Def_Id, Subtype_Mark_Id);
!          Set_Rep_Info (Def_Id, Subtype_Mark_Id);
           Set_Convention (Def_Id, Convention (Subtype_Mark_Id));
  
           --  The anonymous subtype created for the subtype indication
*************** package body Sem_Ch3 is
*** 23134,23143 ****
  
        Component := First_Entity (Current_Scope);
        while Present (Component) loop
!          if Ekind (Component) = E_Void
!            and then not Is_Itype (Component)
           then
-             Mutate_Ekind (Component, E_Component);
              Reinit_Component_Location (Component);
              Set_Is_Not_Self_Hidden (Component);
           end if;
--- 23364,23371 ----
  
        Component := First_Entity (Current_Scope);
        while Present (Component) loop
!          if Ekind (Component) = E_Component and then not Is_Itype (Component)
           then
              Reinit_Component_Location (Component);
              Set_Is_Not_Self_Hidden (Component);
           end if;
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch3.ads gcc-16-20250615/gcc/ada/sem_ch3.ads
*** gcc-16-20250608/gcc/ada/sem_ch3.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch3.ads	Sun Jun 15 22:32:23 2025
*************** package Sem_Ch3 is
*** 301,310 ****
     --  in this case the bounds are captured if necessary using this name.
  
     function Process_Subtype
!      (S           : Node_Id;
!       Related_Nod : Node_Id;
!       Related_Id  : Entity_Id := Empty;
!       Suffix      : Character := ' ') return Entity_Id;
     --  Process a subtype indication S and return corresponding entity.
     --  Related_Nod is the node where the potential generated implicit types
     --  will be inserted. The Related_Id and Suffix parameters are used to
--- 301,312 ----
     --  in this case the bounds are captured if necessary using this name.
  
     function Process_Subtype
!      (S                  : Node_Id;
!       Related_Nod        : Node_Id;
!       Related_Id         : Entity_Id := Empty;
!       Suffix             : Character := ' ';
!       Excludes_Null      : Boolean := False;
!       Incomplete_Type_OK : Boolean := False) return Entity_Id;
     --  Process a subtype indication S and return corresponding entity.
     --  Related_Nod is the node where the potential generated implicit types
     --  will be inserted. The Related_Id and Suffix parameters are used to
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch4.adb gcc-16-20250615/gcc/ada/sem_ch4.adb
*** gcc-16-20250608/gcc/ada/sem_ch4.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch4.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Ch4 is
*** 728,734 ****
              end;
           end if;
  
!          Type_Id := Process_Subtype (E, N);
           Acc_Type := Create_Itype (E_Allocator_Type, N);
           Set_Etype (Acc_Type, Acc_Type);
           Set_Directly_Designated_Type (Acc_Type, Type_Id);
--- 728,735 ----
              end;
           end if;
  
!          Type_Id :=
!            Process_Subtype (E, N, Excludes_Null => Null_Exclusion_Present (N));
           Acc_Type := Create_Itype (E_Allocator_Type, N);
           Set_Etype (Acc_Type, Acc_Type);
           Set_Directly_Designated_Type (Acc_Type, Type_Id);
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch6.adb gcc-16-20250615/gcc/ada/sem_ch6.adb
*** gcc-16-20250608/gcc/ada/sem_ch6.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch6.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Ch6 is
*** 225,231 ****
     --  Create the declaration for an inequality operator that is implicitly
     --  created by a user-defined equality operator that yields a boolean.
  
!    procedure Set_Formal_Mode (Formal_Id : Entity_Id);
     --  Set proper Ekind to reflect formal mode (in, out, in out), and set
     --  miscellaneous other attributes.
  
--- 225,234 ----
     --  Create the declaration for an inequality operator that is implicitly
     --  created by a user-defined equality operator that yields a boolean.
  
!    procedure Set_Formal_Mode
!      (Formal_Id : Entity_Id;
!       Spec      : N_Parameter_Specification_Id;
!       Subp_Id   : Entity_Id);
     --  Set proper Ekind to reflect formal mode (in, out, in out), and set
     --  miscellaneous other attributes.
  
*************** package body Sem_Ch6 is
*** 6463,6711 ****
        end if;
     end Check_Delayed_Subprogram;
  
-    ------------------------------------
-    -- Check_Discriminant_Conformance --
-    ------------------------------------
- 
-    procedure Check_Discriminant_Conformance
-      (N        : Node_Id;
-       Prev     : Entity_Id;
-       Prev_Loc : Node_Id)
-    is
-       Old_Discr      : Entity_Id := First_Discriminant (Prev);
-       New_Discr      : Node_Id   := First (Discriminant_Specifications (N));
-       New_Discr_Id   : Entity_Id;
-       New_Discr_Type : Entity_Id;
- 
-       procedure Conformance_Error (Msg : String; N : Node_Id);
-       --  Post error message for conformance error on given node. Two messages
-       --  are output. The first points to the previous declaration with a
-       --  general "no conformance" message. The second is the detailed reason,
-       --  supplied as Msg. The parameter N provide information for a possible
-       --  & insertion in the message.
- 
-       -----------------------
-       -- Conformance_Error --
-       -----------------------
- 
-       procedure Conformance_Error (Msg : String; N : Node_Id) is
-       begin
-          Error_Msg_Sloc := Sloc (Prev_Loc);
-          Error_Msg_N -- CODEFIX
-            ("not fully conformant with declaration#!", N);
-          Error_Msg_NE (Msg, N, N);
-       end Conformance_Error;
- 
-    --  Start of processing for Check_Discriminant_Conformance
- 
-    begin
-       while Present (Old_Discr) and then Present (New_Discr) loop
-          New_Discr_Id := Defining_Identifier (New_Discr);
- 
-          --  The subtype mark of the discriminant on the full type has not
-          --  been analyzed so we do it here. For an access discriminant a new
-          --  type is created.
- 
-          if Nkind (Discriminant_Type (New_Discr)) = N_Access_Definition then
-             New_Discr_Type :=
-               Access_Definition (N, Discriminant_Type (New_Discr));
- 
-          else
-             Find_Type (Discriminant_Type (New_Discr));
-             New_Discr_Type := Etype (Discriminant_Type (New_Discr));
- 
-             --  Ada 2005: if the discriminant definition carries a null
-             --  exclusion, create an itype to check properly for consistency
-             --  with partial declaration.
- 
-             if Is_Access_Type (New_Discr_Type)
-               and then Null_Exclusion_Present (New_Discr)
-             then
-                New_Discr_Type :=
-                  Create_Null_Excluding_Itype
-                    (T           => New_Discr_Type,
-                     Related_Nod => New_Discr,
-                     Scope_Id    => Current_Scope);
-             end if;
-          end if;
- 
-          if not Conforming_Types
-                   (Etype (Old_Discr), New_Discr_Type, Fully_Conformant)
-          then
-             Conformance_Error ("type of & does not match!", New_Discr_Id);
-             return;
-          else
-             --  Treat the new discriminant as an occurrence of the old one,
-             --  for navigation purposes, and fill in some semantic
-             --  information, for completeness.
- 
-             Generate_Reference (Old_Discr, New_Discr_Id, 'r');
-             Set_Etype (New_Discr_Id, Etype (Old_Discr));
-             Set_Scope (New_Discr_Id, Scope (Old_Discr));
-          end if;
- 
-          --  Names must match
- 
-          if Chars (Old_Discr) /= Chars (Defining_Identifier (New_Discr)) then
-             Conformance_Error ("name & does not match!", New_Discr_Id);
-             return;
-          end if;
- 
-          --  Default expressions must match
- 
-          declare
-             NewD : constant Boolean :=
-                      Present (Expression (New_Discr));
-             OldD : constant Boolean :=
-                      Present (Expression (Parent (Old_Discr)));
- 
-             function Has_Tagged_Limited_Partial_View
-               (Typ : Entity_Id) return Boolean;
-             --  Returns True iff Typ has a tagged limited partial view.
- 
-             function Is_Derived_From_Immutably_Limited_Type
-               (Typ : Entity_Id) return Boolean;
-             --  Returns True iff Typ is a derived type (tagged or not)
-             --  whose ancestor type is immutably limited. The unusual
-             --  ("unusual" is one word for it) thing about this function
-             --  is that it handles the case where the ancestor name's Entity
-             --  attribute has not been set yet.
- 
-             -------------------------------------
-             -- Has_Tagged_Limited_Partial_View --
-             -------------------------------------
- 
-             function Has_Tagged_Limited_Partial_View
-               (Typ : Entity_Id) return Boolean
-             is
-                Priv : constant Entity_Id := Incomplete_Or_Partial_View (Typ);
-             begin
-                return Present (Priv)
-                  and then not Is_Incomplete_Type (Priv)
-                  and then Is_Tagged_Type (Priv)
-                  and then Limited_Present (Parent (Priv));
-             end Has_Tagged_Limited_Partial_View;
- 
-             --------------------------------------------
-             -- Is_Derived_From_Immutably_Limited_Type --
-             --------------------------------------------
- 
-             function Is_Derived_From_Immutably_Limited_Type
-               (Typ : Entity_Id) return Boolean
-             is
-                Type_Def : constant Node_Id := Type_Definition (Parent (Typ));
-                Parent_Name : Node_Id;
-             begin
-                if Nkind (Type_Def) /= N_Derived_Type_Definition then
-                   return False;
-                end if;
-                Parent_Name := Subtype_Indication (Type_Def);
-                if Nkind (Parent_Name) = N_Subtype_Indication then
-                   Parent_Name := Subtype_Mark (Parent_Name);
-                end if;
-                if Parent_Name not in N_Has_Entity_Id
-                  or else No (Entity (Parent_Name))
-                then
-                   Find_Type (Parent_Name);
-                end if;
-                return Is_Immutably_Limited_Type (Entity (Parent_Name));
-             end Is_Derived_From_Immutably_Limited_Type;
- 
-          begin
-             if NewD or OldD then
- 
-                --  The old default value has been analyzed and expanded,
-                --  because the current full declaration will have frozen
-                --  everything before. The new default values have not been
-                --  expanded, so expand now to check conformance.
- 
-                if NewD then
-                   Preanalyze_And_Resolve_Spec_Expression
-                     (Expression (New_Discr), New_Discr_Type);
-                end if;
- 
-                if not (NewD and OldD)
-                  or else not Fully_Conformant_Expressions
-                               (Expression (Parent (Old_Discr)),
-                                Expression (New_Discr))
- 
-                then
-                   Conformance_Error
-                     ("default expression for & does not match!",
-                      New_Discr_Id);
-                   return;
-                end if;
- 
-                if NewD
-                  and then Ada_Version >= Ada_2005
-                  and then Nkind (Discriminant_Type (New_Discr)) =
-                             N_Access_Definition
-                  and then not Is_Immutably_Limited_Type
-                                 (Defining_Identifier (N))
- 
-                  --  Check for a case that would be awkward to handle in
-                  --  Is_Immutably_Limited_Type (because sem_aux can't
-                  --  "with" sem_util).
- 
-                  and then not Has_Tagged_Limited_Partial_View
-                                 (Defining_Identifier (N))
- 
-                  --  Check for another case that would be awkward to handle
-                  --  in Is_Immutably_Limited_Type
- 
-                  and then not Is_Derived_From_Immutably_Limited_Type
-                                 (Defining_Identifier (N))
-                then
-                   Error_Msg_N
-                     ("(Ada 2005) default value for access discriminant "
-                      & "requires immutably limited type",
-                      Expression (New_Discr));
-                   return;
-                end if;
-             end if;
-          end;
- 
-          --  In Ada 83 case, grouping must match: (A,B : X) /= (A : X; B : X)
- 
-          if Ada_Version = Ada_83 then
-             declare
-                Old_Disc : constant Node_Id := Declaration_Node (Old_Discr);
- 
-             begin
-                --  Grouping (use of comma in param lists) must be the same
-                --  This is where we catch a misconformance like:
- 
-                --    A, B : Integer
-                --    A : Integer; B : Integer
- 
-                --  which are represented identically in the tree except
-                --  for the setting of the flags More_Ids and Prev_Ids.
- 
-                if More_Ids (Old_Disc) /= More_Ids (New_Discr)
-                  or else Prev_Ids (Old_Disc) /= Prev_Ids (New_Discr)
-                then
-                   Conformance_Error
-                     ("grouping of & does not match!", New_Discr_Id);
-                   return;
-                end if;
-             end;
-          end if;
- 
-          Next_Discriminant (Old_Discr);
-          Next (New_Discr);
-       end loop;
- 
-       if Present (Old_Discr) then
-          Conformance_Error ("too few discriminants!", Defining_Identifier (N));
-          return;
- 
-       elsif Present (New_Discr) then
-          Conformance_Error
-            ("too many discriminants!", Defining_Identifier (New_Discr));
-          return;
-       end if;
-    end Check_Discriminant_Conformance;
- 
     -----------------------------------------
     -- Check_Formal_Subprogram_Conformance --
     -----------------------------------------
--- 6466,6471 ----
*************** package body Sem_Ch6 is
*** 13066,13078 ****
     --  Start of processing for Process_Formals
  
     begin
-       --  In order to prevent premature use of the formals in the same formal
-       --  part, the Ekind is left undefined until all default expressions are
-       --  analyzed. The Ekind is established in a separate loop at the end.
- 
        Param_Spec := First (T);
        while Present (Param_Spec) loop
           Formal := Defining_Identifier (Param_Spec);
           Set_Never_Set_In_Source (Formal, True);
           Enter_Name (Formal);
  
--- 12826,12835 ----
     --  Start of processing for Process_Formals
  
     begin
        Param_Spec := First (T);
        while Present (Param_Spec) loop
           Formal := Defining_Identifier (Param_Spec);
+          Set_Formal_Mode (Formal, Param_Spec, Current_Scope);
           Set_Never_Set_In_Source (Formal, True);
           Enter_Name (Formal);
  
*************** package body Sem_Ch6 is
*** 13390,13401 ****
           Analyze_Return_Type (Related_Nod);
        end if;
  
-       --  Now set the kind (mode) of each formal
- 
        Param_Spec := First (T);
        while Present (Param_Spec) loop
           Formal := Defining_Identifier (Param_Spec);
!          Set_Formal_Mode (Formal);
  
           if Ekind (Formal) = E_In_Parameter then
              Default := Expression (Param_Spec);
--- 13147,13194 ----
           Analyze_Return_Type (Related_Nod);
        end if;
  
        Param_Spec := First (T);
        while Present (Param_Spec) loop
           Formal := Defining_Identifier (Param_Spec);
!          Set_Is_Not_Self_Hidden (Formal);
! 
!          --  Set Is_Known_Non_Null for access parameters since the language
!          --  guarantees that access parameters are always non-null. We also set
!          --  Can_Never_Be_Null, since there is no way to change the value.
! 
!          if Nkind (Parameter_Type (Param_Spec)) = N_Access_Definition then
! 
!             --  Ada 2005 (AI-231): In Ada 95, access parameters are always non-
!             --  null; In Ada 2005, only if then null_exclusion is explicit.
! 
!             if Ada_Version < Ada_2005
!               or else Can_Never_Be_Null (Etype (Formal))
!             then
!                Set_Is_Known_Non_Null (Formal);
!                Set_Can_Never_Be_Null (Formal);
!             end if;
! 
!          --  Ada 2005 (AI-231): Null-exclusion access subtype
! 
!          elsif Is_Access_Type (Etype (Formal))
!            and then Can_Never_Be_Null (Etype (Formal))
!          then
!             Set_Is_Known_Non_Null (Formal);
! 
!             --  We can also set Can_Never_Be_Null (thus preventing some junk
!             --  access checks) for the case of an IN parameter, which cannot
!             --  be changed, or for an IN OUT parameter, which can be changed
!             --  but not to a null value. But for an OUT parameter, the initial
!             --  value passed in can be null, so we can't set this flag in that
!             --  case.
! 
!             if Ekind (Formal) /= E_Out_Parameter then
!                Set_Can_Never_Be_Null (Formal);
!             end if;
!          end if;
! 
!          Set_Mechanism (Formal, Default_Mechanism);
!          Set_Formal_Validity (Formal);
  
           if Ekind (Formal) = E_In_Parameter then
              Default := Expression (Param_Spec);
*************** package body Sem_Ch6 is
*** 13666,13688 ****
     -- Set_Formal_Mode --
     ---------------------
  
!    procedure Set_Formal_Mode (Formal_Id : Entity_Id) is
!       Spec : constant Node_Id   := Parent (Formal_Id);
!       Id   : constant Entity_Id := Scope (Formal_Id);
! 
     begin
        --  Note: we set Is_Known_Valid for IN parameters and IN OUT parameters
        --  since we ensure that corresponding actuals are always valid at the
        --  point of the call.
  
        if Out_Present (Spec) then
!          if Is_Entry (Id)
!            or else Is_Subprogram_Or_Generic_Subprogram (Id)
           then
!             Set_Has_Out_Or_In_Out_Parameter (Id, True);
           end if;
  
!          if Ekind (Id) in E_Function | E_Generic_Function then
  
              --  [IN] OUT parameters allowed for functions in Ada 2012
  
--- 13459,13481 ----
     -- Set_Formal_Mode --
     ---------------------
  
!    procedure Set_Formal_Mode
!      (Formal_Id : Entity_Id;
!       Spec      : N_Parameter_Specification_Id;
!       Subp_Id   : Entity_Id) is
     begin
        --  Note: we set Is_Known_Valid for IN parameters and IN OUT parameters
        --  since we ensure that corresponding actuals are always valid at the
        --  point of the call.
  
        if Out_Present (Spec) then
!          if Is_Entry (Subp_Id)
!            or else Is_Subprogram_Or_Generic_Subprogram (Subp_Id)
           then
!             Set_Has_Out_Or_In_Out_Parameter (Subp_Id, True);
           end if;
  
!          if Ekind (Subp_Id) in E_Function | E_Generic_Function then
  
              --  [IN] OUT parameters allowed for functions in Ada 2012
  
*************** package body Sem_Ch6 is
*** 13719,13763 ****
        else
           Mutate_Ekind (Formal_Id, E_In_Parameter);
        end if;
- 
-       Set_Is_Not_Self_Hidden (Formal_Id);
- 
-       --  Set Is_Known_Non_Null for access parameters since the language
-       --  guarantees that access parameters are always non-null. We also set
-       --  Can_Never_Be_Null, since there is no way to change the value.
- 
-       if Nkind (Parameter_Type (Spec)) = N_Access_Definition then
- 
-          --  Ada 2005 (AI-231): In Ada 95, access parameters are always non-
-          --  null; In Ada 2005, only if then null_exclusion is explicit.
- 
-          if Ada_Version < Ada_2005
-            or else Can_Never_Be_Null (Etype (Formal_Id))
-          then
-             Set_Is_Known_Non_Null (Formal_Id);
-             Set_Can_Never_Be_Null (Formal_Id);
-          end if;
- 
-       --  Ada 2005 (AI-231): Null-exclusion access subtype
- 
-       elsif Is_Access_Type (Etype (Formal_Id))
-         and then Can_Never_Be_Null (Etype (Formal_Id))
-       then
-          Set_Is_Known_Non_Null (Formal_Id);
- 
-          --  We can also set Can_Never_Be_Null (thus preventing some junk
-          --  access checks) for the case of an IN parameter, which cannot
-          --  be changed, or for an IN OUT parameter, which can be changed but
-          --  not to a null value. But for an OUT parameter, the initial value
-          --  passed in can be null, so we can't set this flag in that case.
- 
-          if Ekind (Formal_Id) /= E_Out_Parameter then
-             Set_Can_Never_Be_Null (Formal_Id);
-          end if;
-       end if;
- 
-       Set_Mechanism (Formal_Id, Default_Mechanism);
-       Set_Formal_Validity (Formal_Id);
     end Set_Formal_Mode;
  
     -------------------------
--- 13512,13517 ----
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch6.ads gcc-16-20250615/gcc/ada/sem_ch6.ads
*** gcc-16-20250608/gcc/ada/sem_ch6.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch6.ads	Sun Jun 15 22:32:23 2025
*************** package Sem_Ch6 is
*** 68,82 ****
     --  type in its profile depends on a private type without a full
     --  declaration, indicate that the subprogram or type is delayed.
  
-    procedure Check_Discriminant_Conformance
-      (N        : Node_Id;
-       Prev     : Entity_Id;
-       Prev_Loc : Node_Id);
-    --  Check that the discriminants of a full type N fully conform to the
-    --  discriminants of the corresponding partial view Prev. Prev_Loc indicates
-    --  the source location of the partial view, which may be different than
-    --  Prev in the case of private types.
- 
     procedure Check_Formal_Subprogram_Conformance
       (New_Id  : Entity_Id;
        Old_Id  : Entity_Id;
--- 68,73 ----
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch8.adb gcc-16-20250615/gcc/ada/sem_ch8.adb
*** gcc-16-20250608/gcc/ada/sem_ch8.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch8.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Ch8 is
*** 8404,8410 ****
  
              if Is_Overloaded (P) then
  
!                --  The prefix must resolve to a unique enclosing construct
  
                 declare
                    Found : Boolean := False;
--- 8404,8411 ----
  
              if Is_Overloaded (P) then
  
!                --  The prefix must resolve to a unique enclosing construct, per
!                --  the last sentence of RM 4.1.3 (13).
  
                 declare
                    Found : Boolean := False;
*************** package body Sem_Ch8 is
*** 8418,8423 ****
--- 8419,8425 ----
                          if Found then
                             Error_Msg_N (
                                "prefix must be unique enclosing scope", N);
+                            Change_Selected_Component_To_Expanded_Name (N);
                             Set_Entity (N, Any_Id);
                             Set_Etype  (N, Any_Type);
                             return;
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_ch8.ads gcc-16-20250615/gcc/ada/sem_ch8.ads
*** gcc-16-20250608/gcc/ada/sem_ch8.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_ch8.ads	Sun Jun 15 22:32:23 2025
*************** package Sem_Ch8 is
*** 100,110 ****
     --  entries in the current scope, and that will give all homonyms that are
     --  declared before the point of call in the current scope. This is useful
     --  for example in the processing for pragma Inline.
-    --
-    --  Flag Errors_OK should be set when error diagnostics are desired. Flag
-    --  Marker_OK should be set when a N_Variable_Reference_Marker needs to be
-    --  generated for a SPARK object in order to detect elaboration issues. Flag
-    --  Reference_OK should be set when N must generate a cross reference.
  
     procedure Find_Selected_Component (N : Node_Id);
     --  Resolve various cases of selected components, recognize expanded names
--- 100,105 ----
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_prag.adb gcc-16-20250615/gcc/ada/sem_prag.adb
*** gcc-16-20250608/gcc/ada/sem_prag.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_prag.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Prag is
*** 8087,8096 ****
--- 8087,8112 ----
        --  the test below also permits use in a configuration pragma file.
  
        function Is_Configuration_Pragma return Boolean is
+          function Is_Pragma_Node (Prg : Node_Id) return Boolean is
+            (Nkind (Prg) = N_Pragma
+             or else
+             (Present (Original_Node (Prg))
+              and then Nkind (Original_Node (Prg)) = N_Pragma));
+          --  Returns true whether the node is a pragma or was originally a
+          --  pragma.
+          --
+          --  Note that some pragmas like Assertion_Policy are rewritten as
+          --  Null_Statment nodes but we still need to make sure here that the
+          --  original node was a pragma node.
+ 
+          --  Local variables
+ 
           Lis : List_Id;
           Par : constant Node_Id := Parent (N);
           Prg : Node_Id;
  
+       --  Start of processing for Is_Configuration_Pragma
+ 
        begin
           --  Don't evaluate List_Containing (N) if Parent (N) could be
           --  an N_Aspect_Specification node.
*************** package body Sem_Prag is
*** 8119,8125 ****
              loop
                 if Prg = N then
                    return True;
!                elsif Nkind (Prg) /= N_Pragma then
                    return False;
                 end if;
  
--- 8135,8141 ----
              loop
                 if Prg = N then
                    return True;
!                elsif not Is_Pragma_Node (Prg) then
                    return False;
                 end if;
  
*************** package body Sem_Prag is
*** 14677,14695 ****
  
              D := Declaration_Node (E);
  
!             if (Nkind (D) = N_Full_Type_Declaration and then Is_Array_Type (E))
                or else
                  (Nkind (D) = N_Object_Declaration
                     and then Ekind (E) in E_Constant | E_Variable
                     and then Nkind (Object_Definition (D)) =
                                         N_Constrained_Array_Definition)
-               or else
-                  (Ada_Version >= Ada_2022
-                    and then Nkind (D) = N_Formal_Type_Declaration)
              then
                 --  The flag is set on the base type, or on the object
  
!                if Nkind (D) = N_Full_Type_Declaration then
                    E := Base_Type (E);
                 end if;
  
--- 14693,14710 ----
  
              D := Declaration_Node (E);
  
!             if (Nkind (D) in N_Full_Type_Declaration
!                            | N_Formal_Type_Declaration
!                   and then Is_Array_Type (E))
                or else
                  (Nkind (D) = N_Object_Declaration
                     and then Ekind (E) in E_Constant | E_Variable
                     and then Nkind (Object_Definition (D)) =
                                         N_Constrained_Array_Definition)
              then
                 --  The flag is set on the base type, or on the object
  
!                if Is_Array_Type (E) then
                    E := Base_Type (E);
                 end if;
  
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_util.adb gcc-16-20250615/gcc/ada/sem_util.adb
*** gcc-16-20250608/gcc/ada/sem_util.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_util.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Util is
*** 333,339 ****
     -- Add_Global_Declaration --
     ----------------------------
  
!    procedure Add_Global_Declaration (N : Node_Id) is
        Aux_Node : constant Node_Id := Aux_Decls_Node (Cunit (Current_Sem_Unit));
  
     begin
--- 333,339 ----
     -- Add_Global_Declaration --
     ----------------------------
  
!    procedure Add_Global_Declaration (Decl : Node_Id) is
        Aux_Node : constant Node_Id := Aux_Decls_Node (Cunit (Current_Sem_Unit));
  
     begin
*************** package body Sem_Util is
*** 341,348 ****
           Set_Declarations (Aux_Node, New_List);
        end if;
  
!       Append_To (Declarations (Aux_Node), N);
!       Analyze (N);
     end Add_Global_Declaration;
  
     --------------------------------
--- 341,348 ----
           Set_Declarations (Aux_Node, New_List);
        end if;
  
!       Append_To (Declarations (Aux_Node), Decl);
!       Analyze (Decl);
     end Add_Global_Declaration;
  
     --------------------------------
*************** package body Sem_Util is
*** 8026,8031 ****
--- 8026,8032 ----
              --  but the error should be posted on it, not on the component.
  
              elsif Ekind (E) = E_Discriminant
+               and then Is_Not_Self_Hidden (E)
                and then Present (Scope (Def_Id))
                and then Scope (Def_Id) /= Current_Scope
              then
*************** package body Sem_Util is
*** 8051,8057 ****
                 --  Avoid cascaded messages with duplicate components in
                 --  derived types.
  
!                if Ekind (E) in E_Component | E_Discriminant then
                    return;
                 end if;
              end if;
--- 8052,8061 ----
                 --  Avoid cascaded messages with duplicate components in
                 --  derived types.
  
!                if Ekind (E) = E_Component
!                  or else (Ekind (E) = E_Discriminant
!                           and then Is_Not_Self_Hidden (E))
!                then
                    return;
                 end if;
              end if;
*************** package body Sem_Util is
*** 8082,8101 ****
  
        --  If we fall through, declaration is OK, at least OK enough to continue
  
!       --  If Def_Id is a discriminant or a record component we are in the midst
!       --  of inheriting components in a derived record definition. Preserve
!       --  their Ekind and Etype.
! 
!       if Ekind (Def_Id) in E_Discriminant | E_Component then
!          null;
! 
!       --  If a type is already set, leave it alone (happens when a type
!       --  declaration is reanalyzed following a call to the optimizer).
! 
!       elsif Present (Etype (Def_Id)) then
!          null;
! 
!       else
           Set_Etype (Def_Id, Any_Type); -- avoid cascaded errors
        end if;
  
--- 8086,8092 ----
  
        --  If we fall through, declaration is OK, at least OK enough to continue
  
!       if No (Etype (Def_Id)) then
           Set_Etype (Def_Id, Any_Type); -- avoid cascaded errors
        end if;
  
*************** package body Sem_Util is
*** 8923,8931 ****
     --------------------------
  
     procedure Find_Overlaid_Entity
!      (N   : Node_Id;
!       Ent : out Entity_Id;
!       Off : out Boolean)
     is
        pragma Assert
          (Nkind (N) = N_Attribute_Definition_Clause
--- 8914,8923 ----
     --------------------------
  
     procedure Find_Overlaid_Entity
!      (N        : Node_Id;
!       Ent      : out Entity_Id;
!       Ovrl_Typ : out Entity_Id;
!       Off      : out Boolean)
     is
        pragma Assert
          (Nkind (N) = N_Attribute_Definition_Clause
*************** package body Sem_Util is
*** 8947,8954 ****
        --  In the second case, the expr is either Y'Address, or recursively a
        --  constant that eventually references Y'Address.
  
!       Ent := Empty;
!       Off := False;
  
        Expr := Expression (N);
  
--- 8939,8947 ----
        --  In the second case, the expr is either Y'Address, or recursively a
        --  constant that eventually references Y'Address.
  
!       Ent      := Empty;
!       Ovrl_Typ := Empty;
!       Off      := False;
  
        Expr := Expression (N);
  
*************** package body Sem_Util is
*** 8978,8983 ****
--- 8971,8978 ----
           end if;
        end loop;
  
+       Ovrl_Typ := Etype (Expr);
+ 
        --  This loop checks the form of the prefix for an entity, using
        --  recursion to deal with intermediate components.
  
*************** package body Sem_Util is
*** 8996,9003 ****
                 pragma Assert
                   (not Expander_Active
                    and then Is_Concurrent_Type (Scope (Ent)));
!                Ent := Empty;
              end if;
              return;
  
           --  Check for components
--- 8991,9000 ----
                 pragma Assert
                   (not Expander_Active
                    and then Is_Concurrent_Type (Scope (Ent)));
!                Ent      := Empty;
!                Ovrl_Typ := Empty;
              end if;
+ 
              return;
  
           --  Check for components
*************** package body Sem_Util is
*** 18382,18387 ****
--- 18379,18385 ----
  
        case Nkind (N) is
           when N_Indexed_Component
+             | N_Selected_Component
              | N_Slice
           =>
              return
*************** package body Sem_Util is
*** 18393,18405 ****
           when N_Attribute_Reference =>
              return Attribute_Name (N) in Name_Input | Name_Old | Name_Result;
  
-          when N_Selected_Component =>
-             return
-               Is_Name_Reference (Selector_Name (N))
-                 and then
-                   (Is_Name_Reference (Prefix (N))
-                     or else Is_Access_Type (Etype (Prefix (N))));
- 
           when N_Explicit_Dereference =>
              return True;
  
--- 18391,18396 ----
*************** package body Sem_Util is
*** 21907,21913 ****
           Set_Last_Assignment (Ent, Empty);
        end if;
  
!       if Is_Object (Ent) then
           if not Last_Assignment_Only then
              Kill_Checks (Ent);
              Set_Current_Value (Ent, Empty);
--- 21898,21904 ----
           Set_Last_Assignment (Ent, Empty);
        end if;
  
!       if Is_Object (Ent) and then Ekind (Ent) not in Record_Field_Kind then
           if not Last_Assignment_Only then
              Kill_Checks (Ent);
              Set_Current_Value (Ent, Empty);
*************** package body Sem_Util is
*** 25593,25608 ****
  
              if Sure
                and then Modification_Comes_From_Source
                and then Overlays_Constant (Ent)
                and then Address_Clause_Overlay_Warnings
              then
                 declare
                    Addr  : constant Node_Id := Address_Clause (Ent);
                    O_Ent : Entity_Id;
                    Off   : Boolean;
  
                 begin
!                   Find_Overlaid_Entity (Addr, O_Ent, Off);
  
                    Error_Msg_Sloc := Sloc (Addr);
                    Error_Msg_NE
--- 25584,25601 ----
  
              if Sure
                and then Modification_Comes_From_Source
+               and then Ekind (Ent) in E_Constant | E_Variable
                and then Overlays_Constant (Ent)
                and then Address_Clause_Overlay_Warnings
              then
                 declare
                    Addr  : constant Node_Id := Address_Clause (Ent);
                    O_Ent : Entity_Id;
+                   O_Typ : Entity_Id;
                    Off   : Boolean;
  
                 begin
!                   Find_Overlaid_Entity (Addr, O_Ent, O_Typ,  Off);
  
                    Error_Msg_Sloc := Sloc (Addr);
                    Error_Msg_NE
*************** package body Sem_Util is
*** 28522,28533 ****
                 return False;
              end if;
  
-             if Ekind (Entity (Selector_Name (N))) not in
-                  E_Component | E_Discriminant
-             then
-                return False;
-             end if;
- 
              declare
                 Comp : constant Entity_Id :=
                   Original_Record_Component (Entity (Selector_Name (N)));
--- 28515,28520 ----
*************** package body Sem_Util is
*** 29050,29058 ****
     ------------------------------
  
     function Ultimate_Overlaid_Entity (E : Entity_Id) return Entity_Id is
!       Address : Node_Id;
!       Alias   : Entity_Id := E;
!       Offset  : Boolean;
  
     begin
        --  Currently this routine is only called for stand-alone objects that
--- 29037,29046 ----
     ------------------------------
  
     function Ultimate_Overlaid_Entity (E : Entity_Id) return Entity_Id is
!       Address  : Node_Id;
!       Alias    : Entity_Id := E;
!       Offset   : Boolean;
!       Ovrl_Typ : Entity_Id;
  
     begin
        --  Currently this routine is only called for stand-alone objects that
*************** package body Sem_Util is
*** 29064,29070 ****
        loop
           Address := Address_Clause (Alias);
           if Present (Address) then
!             Find_Overlaid_Entity (Address, Alias, Offset);
              if Present (Alias) then
                 null;
              else
--- 29052,29058 ----
        loop
           Address := Address_Clause (Alias);
           if Present (Address) then
!             Find_Overlaid_Entity (Address, Alias, Ovrl_Typ, Offset);
              if Present (Alias) then
                 null;
              else
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_util.ads gcc-16-20250615/gcc/ada/sem_util.ads
*** gcc-16-20250608/gcc/ada/sem_util.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_util.ads	Sun Jun 15 22:32:23 2025
*************** package Sem_Util is
*** 54,65 ****
     --  Add A to the list of access types to process when expanding the
     --  freeze node of E.
  
!    procedure Add_Global_Declaration (N : Node_Id);
!    --  These procedures adds a declaration N at the library level, to be
     --  elaborated before any other code in the unit. It is used for example
     --  for the entity that marks whether a unit has been elaborated. The
     --  declaration is added to the Declarations list of the Aux_Decls_Node
!    --  for the current unit. The declarations are added in the current scope,
     --  so the caller should push a new scope as required before the call.
  
     function Add_Suffix (E : Entity_Id; Suffix : Character) return Name_Id;
--- 54,65 ----
     --  Add A to the list of access types to process when expanding the
     --  freeze node of E.
  
!    procedure Add_Global_Declaration (Decl : Node_Id);
!    --  This procedure adds a declaration Decl at the library level, to be
     --  elaborated before any other code in the unit. It is used for example
     --  for the entity that marks whether a unit has been elaborated. The
     --  declaration is added to the Declarations list of the Aux_Decls_Node
!    --  for the current unit. The declared entity is added to current scope,
     --  so the caller should push a new scope as required before the call.
  
     function Add_Suffix (E : Entity_Id; Suffix : Character) return Name_Id;
*************** package Sem_Util is
*** 619,625 ****
     --  Find whether there is a previous definition for name or identifier N in
     --  the current scope. Because declarations for a scope are not necessarily
     --  contiguous (e.g. for packages) the first entry on the visibility chain
!    --  for N is not necessarily in the current scope.
  
     function Current_Scope return Entity_Id;
     --  Get entity representing current scope
--- 619,639 ----
     --  Find whether there is a previous definition for name or identifier N in
     --  the current scope. Because declarations for a scope are not necessarily
     --  contiguous (e.g. for packages) the first entry on the visibility chain
!    --  for N is not necessarily in the current scope. Take, for example:
!    --
!    --  package P is
!    --     X : constant := 13;
!    --
!    --     package Q is
!    --        X : constant := 67;
!    --     end Q;
!    --
!    --     Y : constant := X;
!    --  end P;
!    --
!    --  When the declaration of Y is analyzed, the first entry on the visibility
!    --  chain is the X equal to 67, but Current_Entity_In_Scope returns the X
!    --  equal to 13.
  
     function Current_Scope return Entity_Id;
     --  Get entity representing current scope
*************** package Sem_Util is
*** 884,897 ****
     --  loop are nested within the block.
  
     procedure Find_Overlaid_Entity
!      (N   : Node_Id;
!       Ent : out Entity_Id;
!       Off : out Boolean);
     --  The node N should be an address representation clause. Determines if the
     --  target expression is the address of an entity with an optional offset.
     --  If so, set Ent to the entity and, if there is an offset, set Off to
     --  True, otherwise to False. If it is not possible to determine that the
     --  address is of this form, then set Ent to Empty.
  
     function Find_Parameter_Type (Param : Node_Id) return Entity_Id;
     --  Return the type of formal parameter Param as determined by its
--- 898,915 ----
     --  loop are nested within the block.
  
     procedure Find_Overlaid_Entity
!      (N        : Node_Id;
!       Ent      : out Entity_Id;
!       Ovrl_Typ : out Entity_Id;
!       Off      : out Boolean);
     --  The node N should be an address representation clause. Determines if the
     --  target expression is the address of an entity with an optional offset.
     --  If so, set Ent to the entity and, if there is an offset, set Off to
     --  True, otherwise to False. If it is not possible to determine that the
     --  address is of this form, then set Ent to Empty.
+    --  Ovrl_Typ is set to the type being overlaid and can be different than the
+    --  type of Ent, for example when the address clause is applied to a record
+    --  component or to an element of an array.
  
     function Find_Parameter_Type (Param : Node_Id) return Entity_Id;
     --  Return the type of formal parameter Param as determined by its
diff -Nrcpad gcc-16-20250608/gcc/ada/sem_warn.adb gcc-16-20250615/gcc/ada/sem_warn.adb
*** gcc-16-20250608/gcc/ada/sem_warn.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sem_warn.adb	Sun Jun 15 22:32:23 2025
*************** package body Sem_Warn is
*** 1712,1728 ****
  
                and then Ekind (E1) /= E_Class_Wide_Type
  
!               --  Objects other than parameters of task types are allowed to
!               --  be non-referenced, since they start up tasks.
! 
!               and then ((Ekind (E1) /= E_Variable
!                           and then Ekind (E1) /= E_Constant
!                           and then Ekind (E1) /= E_Component)
! 
!                          --  Check that E1T is not a task or a composite type
!                          --  with a task component.
  
!                          or else not Has_Task (E1T))
  
                --  For subunits, only place warnings on the main unit itself,
                --  since parent units are not completely compiled.
--- 1712,1722 ----
  
                and then Ekind (E1) /= E_Class_Wide_Type
  
!               --  Objects that are not parameters and whose types have tasks
!               --  are allowed to be non-referenced since they start up tasks.
  
!               and then not (Ekind (E1) in E_Variable | E_Constant | E_Component
!                             and then Has_Task (E1T))
  
                --  For subunits, only place warnings on the main unit itself,
                --  since parent units are not completely compiled.
diff -Nrcpad gcc-16-20250608/gcc/ada/sinfo.ads gcc-16-20250615/gcc/ada/sinfo.ads
*** gcc-16-20250608/gcc/ada/sinfo.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/sinfo.ads	Sun Jun 15 22:32:23 2025
*************** package Sinfo is
*** 8172,8178 ****
        --  An implicit label declaration is created for every occurrence of a
        --  label on a statement or a label on a block or loop. It is chained
        --  in the declarations of the innermost enclosing block as specified
!       --  in RM section 5.1 (3).
  
        --  The Defining_Identifier is the actual identifier for the statement
        --  identifier. Note that the occurrence of the label is a reference, NOT
--- 8172,8178 ----
        --  An implicit label declaration is created for every occurrence of a
        --  label on a statement or a label on a block or loop. It is chained
        --  in the declarations of the innermost enclosing block as specified
!       --  in RM section 5.1 (12).
  
        --  The Defining_Identifier is the actual identifier for the statement
        --  identifier. Note that the occurrence of the label is a reference, NOT
diff -Nrcpad gcc-16-20250608/gcc/ada/switch-c.adb gcc-16-20250615/gcc/ada/switch-c.adb
*** gcc-16-20250608/gcc/ada/switch-c.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/switch-c.adb	Sun Jun 15 22:32:23 2025
*************** package body Switch.C is
*** 1220,1236 ****
                       List_Representation_Info :=
                         Character'Pos (C) - Character'Pos ('0');
  
!                   when 's' =>
!                      List_Representation_Info_To_File := True;
  
!                   when 'j' =>
!                      List_Representation_Info_To_JSON := True;
  
                    when 'm' =>
                       List_Representation_Info_Mechanisms := True;
  
!                   when 'e' =>
!                      List_Representation_Info_Extended := True;
  
                    when others =>
                       Bad_Switch ("-gnatR" & Switch_Chars (Ptr .. Max));
--- 1220,1239 ----
                       List_Representation_Info :=
                         Character'Pos (C) - Character'Pos ('0');
  
!                   when 'e' =>
!                      List_Representation_Info_Extended := True;
  
!                   when 'h' =>
!                      List_Representation_Info_Holes := True;
  
                    when 'm' =>
                       List_Representation_Info_Mechanisms := True;
  
!                   when 'j' =>
!                      List_Representation_Info_To_JSON := True;
! 
!                   when 's' =>
!                      List_Representation_Info_To_File := True;
  
                    when others =>
                       Bad_Switch ("-gnatR" & Switch_Chars (Ptr .. Max));
*************** package body Switch.C is
*** 1245,1250 ****
--- 1248,1259 ----
                    Osint.Fail ("-gnatRe is incompatible with -gnatRj");
                 end if;
  
+                if List_Representation_Info_To_JSON
+                  and then List_Representation_Info_Holes
+                then
+                   Osint.Fail ("-gnatRh is incompatible with -gnatRj");
+                end if;
+ 
              --  -gnats (syntax check only)
  
              when 's' =>
diff -Nrcpad gcc-16-20250608/gcc/ada/switch.adb gcc-16-20250615/gcc/ada/switch.adb
*** gcc-16-20250608/gcc/ada/switch.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/switch.adb	Sun Jun 15 22:32:23 2025
*************** package body Switch is
*** 93,99 ****
           Set_Standard_Output;
           Usage;
           Write_Eol;
!          Write_Line ("Report bugs to report@adacore.com");
           Exit_Program (E_Success);
        end if;
     end Check_Version_And_Help_G;
--- 93,99 ----
           Set_Standard_Output;
           Usage;
           Write_Eol;
!          Write_Line ("Report bugs to support@adacore.com");
           Exit_Program (E_Success);
        end if;
     end Check_Version_And_Help_G;
diff -Nrcpad gcc-16-20250608/gcc/ada/treepr.adb gcc-16-20250615/gcc/ada/treepr.adb
*** gcc-16-20250608/gcc/ada/treepr.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/treepr.adb	Sun Jun 15 22:32:23 2025
*************** package body Treepr is
*** 87,93 ****
     procedure Destroy (Value : in out Nat) is null;
     pragma Annotate (CodePeer, False_Positive, "unassigned parameter",
                      "in out parameter is required to instantiate generic");
!    --  Dummy routine for destroing hashed values
  
     package Serial_Numbers is new Dynamic_Hash_Tables
       (Key_Type              => Int,
--- 87,93 ----
     procedure Destroy (Value : in out Nat) is null;
     pragma Annotate (CodePeer, False_Positive, "unassigned parameter",
                      "in out parameter is required to instantiate generic");
!    --  Dummy routine for destroying hashed values
  
     package Serial_Numbers is new Dynamic_Hash_Tables
       (Key_Type              => Int,
diff -Nrcpad gcc-16-20250608/gcc/ada/usage.adb gcc-16-20250615/gcc/ada/usage.adb
*** gcc-16-20250608/gcc/ada/usage.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/usage.adb	Sun Jun 15 22:32:23 2025
*************** begin
*** 92,108 ****
  
     --  Common switches available everywhere
  
!    Write_Switch_Char ("g            ", "");
     Write_Line ("Generate debugging information");
  
!    Write_Switch_Char ("Idir         ", "");
     Write_Line ("Specify source files search path");
  
!    Write_Switch_Char ("I-           ", "");
     Write_Line ("Do not look for sources in current directory");
  
!    Write_Switch_Char ("O[0123]      ", "");
!    Write_Line ("Control the optimization level");
  
     Write_Eol;
  
--- 92,108 ----
  
     --  Common switches available everywhere
  
!    Write_Switch_Char ("g        ", "");
     Write_Line ("Generate debugging information");
  
!    Write_Switch_Char ("Idir     ", "");
     Write_Line ("Specify source files search path");
  
!    Write_Switch_Char ("I-       ", "");
     Write_Line ("Do not look for sources in current directory");
  
!    Write_Switch_Char ("O[?]     ", "");
!    Write_Line ("Control the optimization level (?=0/1/2/3/s/z/g)");
  
     Write_Eol;
  
*************** begin
*** 402,408 ****
  
     Write_Switch_Char ("R?");
     Write_Line
!      ("List rep info (?=0/1/2/3/4/e/m for none/types/all/sym/cg/ext/mech)");
     Write_Switch_Char ("R?j");
     Write_Line ("List rep info in the JSON data interchange format");
     Write_Switch_Char ("R?s");
--- 402,408 ----
  
     Write_Switch_Char ("R?");
     Write_Line
!      ("List rep info (?=1/2/3/4/e/h/m for types/all/sym/cg/ext/holes/mech)");
     Write_Switch_Char ("R?j");
     Write_Line ("List rep info in the JSON data interchange format");
     Write_Switch_Char ("R?s");
diff -Nrcpad gcc-16-20250608/gcc/ada/vast.adb gcc-16-20250615/gcc/ada/vast.adb
*** gcc-16-20250608/gcc/ada/vast.adb	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/vast.adb	Sun Jun 15 22:32:23 2025
***************
*** 23,40 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Dummy implementation
  
  package body VAST is
  
     ----------------
!    -- Check_Tree --
     ----------------
  
!    procedure Check_Tree (GNAT_Root : Node_Id) is
!       pragma Unreferenced (GNAT_Root);
     begin
!       null;
!    end Check_Tree;
  
  end VAST;
--- 23,620 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! pragma Unsuppress (All_Checks);
! pragma Assertion_Policy (Check);
! --  Enable checking. This isn't really necessary, but it might come in handy if
! --  we want to run VAST with a compiler built without checks. Anyway, it's
! --  harmless, because VAST is not run by default.
! 
! with Ada.Unchecked_Deallocation;
! 
! with System.Case_Util;
! 
! with Atree;          use Atree;
! with Debug;
! with Einfo.Entities; use Einfo.Entities;
! with Lib;            use Lib;
! with Namet;          use Namet;
! with Nlists;         use Nlists;
! with Opt;            use Opt;
! with Output;
! with Sinfo.Nodes;    use Sinfo.Nodes;
! with Sinput;
! with Table;
! with Types;          use Types;
  
  package body VAST is
  
+    --  ???Basic tree properties not yet checked:
+    --   - No dangling trees. Every node that is reachable at all is reachable
+    --     by some syntactic path.
+    --   - Basic properties of Nlists/Elists (next/prev pointers make sense,
+    --     for example).
+ 
+    Force_Enable_VAST : constant Boolean := False;
+    --  Normally, VAST is enabled by the the -gnatd_V switch.
+    --  To force it to be enabled independent of any switches,
+    --  set this to True.
+ 
+    type Check_Enum is
+      (Check_Other,
+       Check_Sloc,
+       Check_Analyzed,
+       Check_Error_Nodes,
+       Check_Sharing,
+       Check_Parent_Present,
+       Check_Parent_Correct);
+ 
+    type Check_Status is
+      --  Action in case of check failure:
+      (Disabled, -- Do nothing
+       Enabled, -- Print messages, and raise an exception
+       Print_And_Continue); -- Print a message
+ 
+    pragma Warnings (Off, "Status*could be declared constant");
+    Status : array (Check_Enum) of Check_Status :=
+      (Check_Other => Enabled,
+       Check_Sloc => Disabled,
+       Check_Analyzed => Disabled,
+       Check_Error_Nodes => Print_And_Continue,
+       Check_Sharing => Disabled,
+       Check_Parent_Present => Print_And_Continue,
+       Check_Parent_Correct => Disabled);
+ --      others => Print_And_Continue);
+ --      others => Enabled);
+ --      others => Disabled);
+    --  Passing checks are Check_Other, which should always be Enabled.
+    --  Currently-failing checks are different enumerals in Check_Enum,
+    --  which can be disabled individually until we fix the bugs, or enabled
+    --  when debugging particular bugs. Pass a nondefault Check_Enum to
+    --  Assert in order to deal with bugs we have not yet fixed,
+    --  and play around with the value of Status above for
+    --  testing and debugging.
+    --
+    --  Note: Once a bug is fixed, and the check passes reliably, we may choose
+    --  to remove that check from Check_Enum and use Check_Other instead.
+ 
+    type Node_Stack_Index is new Pos;
+    subtype Node_Stack_Count is
+      Node_Stack_Index'Base range 0 .. Node_Stack_Index'Last;
+ 
+    package Node_Stack is new Table.Table
+      (Table_Component_Type => Node_Id,
+       Table_Index_Type     => Node_Stack_Index'Base,
+       Table_Low_Bound      => 1,
+       Table_Initial        => 1,
+       Table_Increment      => 100,
+       Table_Name           => "Node_Stack");
+ 
+    procedure Assert
+      (Condition : Boolean;
+       Check : Check_Enum := Check_Other;
+       Detail : String := "");
+    --  Check that the Condition is True. Status determines action on failure.
+ 
+    function To_Mixed (A : String) return String;
+    --  Copied from System.Case_Util; old versions of that package do not have
+    --  this function, so this is needed for bootstrapping.
+ 
+    function Image (Kind : Node_Kind) return String is (To_Mixed (Kind'Img));
+    function Image (Kind : Entity_Kind) return String is (To_Mixed (Kind'Img));
+ 
+    procedure Put (S : String);
+    procedure Put_Line (S : String);
+    procedure Put_Node (N : Node_Id);
+    procedure Put_Node_Stack;
+    --  Output routines; print only if -gnatd_W (VAST in verbose mode) is
+    --  enabled.
+ 
+    procedure Put_Indentation;
+    --  Print spaces to indicate nesting depth of Node_Stack
+ 
+    procedure Enter_Node (N : Node_Id);
+    procedure Leave_Node (N : Node_Id);
+    --  Called for each node while walking the tree.
+    --  Push/pop N to/from Node_Stack.
+    --  Print enter/leave debugging messages.
+    --  ???Possible improvements to messages:
+    --    Walk subtrees in a better order.
+    --    Print field names.
+    --    Don't print boring fields (such as N_Empty nodes).
+    --    Print more info (value of literals, "A.B.C" for expanded names, etc.).
+    --    Share some code with Treepr.
+ 
+    procedure Do_Tree (N : Node_Id);
+    --  Do VAST checking on a tree of nodes
+ 
+    function Has_Subtrees (N : Node_Id) return Boolean;
+    --  True if N has one or more syntactic fields
+ 
+    procedure Do_Subtrees (N : Node_Id);
+    --  Call Do_Tree on all the subtrees (i.e. syntactic fields) of N
+ 
+    procedure Do_List (L : List_Id);
+    --  Call Do_Tree on the list elements
+ 
+    procedure Do_Unit (U : Unit_Number_Type);
+    --  Call Do_Tree on the root node of a compilation unit
+ 
+    function Ancestor_Node (Count : Node_Stack_Count) return Node_Id;
+    --  Nth ancestor on the Node_Stack. Ancestor_Node(0) is the current node,
+    --  Ancestor_Node(1) is its parent, Ancestor_Node(2) is its grandparent,
+    --  and so on.
+ 
+    function Top_Node return Node_Id is (Ancestor_Node (0));
+ 
+    type Node_Set is array (Node_Id range <>) of Boolean;
+    pragma Pack (Node_Set);
+    type Node_Set_Ptr is access all Node_Set;
+    procedure Free is new Ada.Unchecked_Deallocation (Node_Set, Node_Set_Ptr);
+ 
+    Visited : Node_Set_Ptr;
+    --  Giant array of Booleans; Visited (N) is True if and only if we have
+    --  visited N in the tree walk. Used to detect incorrect sharing of subtrees
+    --  or (worse) cycles. We don't allocate the set on the stack, for fear of
+    --  Storage_Error.
+ 
+    function Get_Node_Field_Union is new
+      Atree.Atree_Private_Part.Get_32_Bit_Field (Union_Id) with Inline;
+ 
+    --------------
+    -- To_Mixed --
+    --------------
+ 
+    function To_Mixed (A : String) return String is
+       Result : String := A;
+    begin
+       System.Case_Util.To_Mixed (Result);
+       return Result;
+    end To_Mixed;
+ 
+    ---------
+    -- Put --
+    ---------
+ 
+    procedure Put (S : String) is
+    begin
+       if Debug.Debug_Flag_Underscore_WW then
+          Output.Write_Str (S);
+       end if;
+    end Put;
+ 
+    --------------
+    -- Put_Line --
+    --------------
+ 
+    procedure Put_Line (S : String) is
+    begin
+       if Debug.Debug_Flag_Underscore_WW then
+          Output.Write_Line (S);
+       end if;
+    end Put_Line;
+ 
+    --------------
+    -- Put_Node --
+    --------------
+ 
+    procedure Put_Node (N : Node_Id) is
+    begin
+       if Debug.Debug_Flag_Underscore_WW then
+          if Nkind (N) in N_Entity then
+             Put (Image (Ekind (N)));
+          else
+             Put (Image (Nkind (N)));
+          end if;
+ 
+          Put (N'Img & " ");
+          Sinput.Write_Location (Sloc (N));
+ 
+          if Comes_From_Source (N) then
+             Put (" (s)");
+          end if;
+ 
+          case Nkind (N) is
+             when N_Has_Chars =>
+                Put (" ");
+                Write_Name_For_Debug (Chars (N), Quote => """");
+             when others => null;
+          end case;
+ 
+       end if;
+    end Put_Node;
+ 
+    ---------------------
+    -- Put_Indentation --
+    ---------------------
+ 
+    procedure Put_Indentation is
+    begin
+       Put (String'(Natural (Node_Stack.First) ..
+                    Natural (Node_Stack.Last) * 2 => ' '));
+    end Put_Indentation;
+ 
     ----------------
!    -- Enter_Node --
     ----------------
  
!    procedure Enter_Node (N : Node_Id) is
     begin
!       Node_Stack.Append (N); -- push
! 
!       if Has_Subtrees (N) then
!          Put ("-->");
!       else
!          --  If no subtrees, just print one line for enter/leave
!          Put ("   ");
!       end if;
!       Put_Indentation;
!       Put_Node (N);
!       Put_Line ("");
!    end Enter_Node;
! 
!    ----------------
!    -- Leave_Node --
!    ----------------
! 
!    procedure Leave_Node (N : Node_Id) is
!    begin
!       if Has_Subtrees (N) then
!          Put ("<--");
!          Put_Indentation;
!          Put_Node (N);
!          Put_Line ("");
!       end if;
! 
!       Node_Stack.Decrement_Last; -- pop
!    end Leave_Node;
! 
!    --------------------
!    -- Put_Node_Stack --
!    --------------------
! 
!    procedure Put_Node_Stack is
!    begin
!       for J in reverse Node_Stack.First .. Node_Stack.Last loop
!          Put_Node (Node_Stack.Table (J));
!          Put_Line ("");
!       end loop;
!    end Put_Node_Stack;
! 
!    -------------------
!    -- Ancestor_Node --
!    -------------------
! 
!    function Ancestor_Node (Count : Node_Stack_Count) return Node_Id is
!    begin
!       return Node_Stack.Table (Node_Stack.Last - Count);
!    end Ancestor_Node;
! 
!    ------------
!    -- Assert --
!    ------------
! 
!    VAST_Failure : exception;
! 
!    procedure Assert
!      (Condition : Boolean;
!       Check : Check_Enum := Check_Other;
!       Detail : String := "")
!    is
!    begin
!       if not Condition then
!          declare
!             Part1 : constant String := "VAST fail";
!             Part2 : constant String :=
!               (if Check = Check_Other then ""
!                else ": " & To_Mixed (Check'Img));
!             Part3 : constant String :=
!               (if Detail = "" then "" else " -- " & Detail);
!             Message : constant String := Part1 & Part2 & Part3;
!             Save : constant Boolean := Debug.Debug_Flag_Underscore_WW;
!          begin
!             case Status (Check) is
!                when Disabled => null;
!                when Enabled | Print_And_Continue =>
!                   Debug.Debug_Flag_Underscore_WW := True;
!                   --  ???We should probably avoid changing the debug flag here
!                   Put (Message & ": ");
!                   Put_Node (Top_Node);
!                   Put_Line ("");
! 
!                   if Status (Check) = Enabled then
!                      Put_Node_Stack;
!                      raise VAST_Failure with Message;
!                   end if;
! 
!                   Debug.Debug_Flag_Underscore_WW := Save;
!             end case;
!          end;
!       end if;
!    end Assert;
! 
!    -------------
!    -- Do_Tree --
!    -------------
! 
!    procedure Do_Tree (N : Node_Id) is
!    begin
!       Enter_Node (N);
! 
!       --  Skip the rest if empty. Check Sloc:
! 
!       case Nkind (N) is
!          when N_Empty =>
!             Assert (No (Sloc (N)));
!             goto Done; -- -------------->
!             --  Don't do any further checks on Empty
! 
!          --  ???Some nodes, including exception handlers, have no Sloc;
!          --  it's unclear why.
! 
!          when N_Exception_Handler =>
!             Assert (if Comes_From_Source (N) then Present (Sloc (N)));
!          when others =>
!             Assert (Present (Sloc (N)), Check_Sloc);
!       end case;
! 
!       --  All reachable nodes should have been analyzed by the time we get
!       --  here:
! 
!       Assert (Analyzed (N), Check_Analyzed);
! 
!       --  If we visit the same node more than once, then there are shared
!       --  nodes; the "tree" is not a tree:
! 
!       Assert (not Visited (N), Check_Sharing);
!       Visited (N) := True;
! 
!       --  Misc checks based on node/entity kind:
! 
!       case Nkind (N) is
!          when N_Unused_At_Start | N_Unused_At_End =>
!             Assert (False);
! 
!          when N_Error =>
!             --  VAST doesn't do anything when Serious_Errors_Detected > 0 (at
!             --  least for now), so we shouldn't encounter any N_Error nodes.
!             Assert (False, Check_Error_Nodes);
! 
!          when N_Entity =>
!             case Ekind (N) is
!                when others =>
!                   null; -- more to be done here
!             end case;
! 
!          when others =>
!             null; -- more to be done here
!       end case;
! 
!       --  Check that N has a Parent, except in certain cases:
! 
!       case Nkind (N) is
!          when N_Empty =>
!             raise Program_Error; -- can't get here
! 
!          when N_Error =>
!             Assert (False, Check_Error_Nodes);
!             --  The error node has no parent, but we shouldn't even be seeing
!             --  error nodes in VAST at all. See earlier "when N_Error".
! 
!          when N_Compilation_Unit =>
!             Assert (No (Parent (N)));
!             --  The parent of the root of each unit is empty.
! 
!          when N_Entity =>
!             if not Is_Itype (N) then
!                --  An Itype might or might not have a parent
! 
!                Assert
!                  (Present (Parent (N)), Detail => "missing parent of entity");
!                Assert (Parent (N) = Ancestor_Node (1), Check_Parent_Correct);
!             end if;
! 
!          when others =>
!             Assert (Present (Parent (N)), Check_Parent_Present);
!             --  All other nodes should have a parent
!             if Status (Check_Parent_Present) = Enabled then
!                Assert (Parent (N) = Ancestor_Node (1), Check_Parent_Correct);
!             end if;
!       end case;
! 
!       Do_Subtrees (N);
! 
!       <<Done>>
!       Leave_Node (N);
!    end Do_Tree;
! 
!    -----------------
!    -- Has_Subtrees --
!    -----------------
! 
!    function Has_Subtrees (N : Node_Id) return Boolean is
!       Offsets : Traversed_Offset_Array renames
!         Traversed_Fields (Nkind (N));
!    begin
!       --  True if sentinel comes first
!       return Offsets (Offsets'First) /= No_Field_Offset;
!    end Has_Subtrees;
! 
!    -----------------
!    -- Do_Subtrees --
!    -----------------
! 
!    procedure Do_Subtrees (N : Node_Id) is
!       --  ???Do we need tail recursion elimination here,
!       --  as in Atree.Traverse_Func?
!       Offsets : Traversed_Offset_Array renames
!         Traversed_Fields (Nkind (N));
!    begin
!       for Cur_Field in Offset_Array_Index loop
!          exit when Offsets (Cur_Field) = No_Field_Offset;
! 
!          declare
!             F : constant Union_Id :=
!               Get_Node_Field_Union (N, Offsets (Cur_Field));
!          begin
!             if F in Node_Range then
!                Do_Tree (Node_Id (F));
!             elsif F in List_Range then
!                Do_List (List_Id (F));
!             else
!                raise Program_Error;
!             end if;
!          end;
!       end loop;
!    end Do_Subtrees;
! 
!    -------------
!    -- Do_List --
!    -------------
! 
!    procedure Do_List (L : List_Id) is
!       Elmt : Node_Id := First (L);
!       Len : constant String := List_Length (L)'Img;
!    begin
!       if Is_Non_Empty_List (L) then
!          Put ("-->");
!          Put_Indentation;
!          Put_Line ("list len=" & Len);
! 
!          while Present (Elmt) loop
!             Do_Tree (Elmt);
!             Next (Elmt);
!          end loop;
! 
!          Put ("<--");
!          Put_Indentation;
!          Put_Line ("list len=" & Len);
!       end if;
!    end Do_List;
! 
!    -------------
!    -- Do_Unit --
!    -------------
! 
!    procedure Do_Unit (U : Unit_Number_Type) is
!       U_Name : constant Unit_Name_Type := Unit_Name (U);
!       U_Name_S : constant String :=
!         (if U_Name = No_Unit_Name then "<No_Unit_Name>"
!          else Get_Name_String (U_Name));
!       Predef : constant String :=
!         (if Is_Predefined_Unit (U) then " (predef)"
!          elsif Is_Internal_Unit (U) then " (gnat)"
!          else "");
!       Is_Main : constant String :=
!         (if U = Main_Unit then " (main unit)" else "");
!       Msg : constant String :=
!         "VAST for unit" & U'Img & " " & U_Name_S & Predef & Is_Main;
! 
!       Is_Preprocessing_Dependency : constant Boolean :=
!         U_Name = No_Unit_Name;
!       --  True if this is a bogus unit added by Add_Preprocessing_Dependency.
!       --  ???Not sure what that's about, but these units have no name and
!       --  no associated tree, so we had better not try to walk those trees.
! 
!       Root : constant Node_Id := Cunit (U);
!    begin
!       pragma Assert (Node_Stack.Last = 0);
!       Assert (No (Root) = Is_Preprocessing_Dependency);
!       --  All compilation units except these bogus ones should have a Cunit.
! 
!       Put_Line (Msg);
! 
!       if Is_Preprocessing_Dependency then
!          Put_Line ("Skipping preprocessing dependency");
!          return;
!       end if;
! 
!       Assert (Present (Root));
!       Do_Tree (Root);
!       Put_Line (Msg & "  (done)");
!       pragma Assert (Node_Stack.Last = 0);
!    end Do_Unit;
! 
!    ----------
!    -- VAST --
!    ----------
! 
!    procedure VAST is
!       pragma Assert (Expander_Active = (Operating_Mode = Generate_Code));
!       --  ???So why do we need both Operating_Mode and Expander_Active?
!       use Debug;
!    begin
!       --  Do nothing if we're not calling the back end; the main point of VAST
!       --  is to protect against code-generation bugs. This includes the
!       --  case where legality errors were detected; the tree is known to be
!       --  malformed in some error cases.
! 
!       if Operating_Mode /= Generate_Code then
!          return;
!       end if;
! 
!       --  If -gnatd_W (VAST in verbose mode) is enabled, then that should imply
!       --  -gnatd_V (enable VAST).
! 
!       if Debug_Flag_Underscore_WW then
!          Debug_Flag_Underscore_VV := True;
!       end if;
! 
!       --  Do nothing if VAST is disabled
! 
!       if not (Debug_Flag_Underscore_VV or Force_Enable_VAST) then
!          return;
!       end if;
! 
!       --  Turn off output unless verbose mode is enabled
! 
!       Put_Line ("VAST");
! 
!       --  Operating_Mode = Generate_Code implies there are no legality errors:
! 
!       Assert (Serious_Errors_Detected = 0);
! 
!       Put_Line ("VAST checking" & Last_Unit'Img & " units");
! 
!       declare
!          use Atree_Private_Part;
!          Last_Node : constant Node_Id := Node_Offsets.Last;
!       begin
!          pragma Assert (Visited = null);
!          Visited := new Node_Set'(Node_Id'First .. Last_Node => False);
! 
!          for U in Main_Unit .. Last_Unit loop
!             --  Main_Unit is the one passed to the back end, but here we are
!             --  walking all the units.
!             Do_Unit (U);
!          end loop;
! 
!          --  We shouldn't have allocated any new nodes during VAST:
! 
!          pragma Assert (Node_Offsets.Last = Last_Node);
!          Free (Visited);
!       end;
! 
!       Put_Line ("VAST done.");
!    end VAST;
  
  end VAST;
diff -Nrcpad gcc-16-20250608/gcc/ada/vast.ads gcc-16-20250615/gcc/ada/vast.ads
*** gcc-16-20250608/gcc/ada/vast.ads	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/ada/vast.ads	Sun Jun 15 22:32:23 2025
***************
*** 24,36 ****
  ------------------------------------------------------------------------------
  
  --  This package is the entry point for VAST: Verifier for the Ada Semantic
! --  Tree.
! 
! with Types; use Types;
  
  package VAST is
  
!    procedure Check_Tree (GNAT_Root : Node_Id);
!    --  Check the validity of the given Root tree
  
  end VAST;
--- 24,33 ----
  ------------------------------------------------------------------------------
  
  --  This package is the entry point for VAST: Verifier for the Ada Semantic
! --  Tree. It walks the expanded trees, and verifies their validity.
  
  package VAST is
  
!    procedure VAST;
  
  end VAST;
diff -Nrcpad gcc-16-20250608/gcc/attribs.cc gcc-16-20250615/gcc/attribs.cc
*** gcc-16-20250608/gcc/attribs.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/attribs.cc	Sun Jun 15 22:32:23 2025
*************** make_dispatcher_decl (const tree decl)
*** 1279,1296 ****
    return func_decl;
  }
  
! /* Returns true if DECL is multi-versioned using the target attribute, and this
!    is the default version.  This function can only be used for targets that do
!    not support the "target_version" attribute.  */
  
  bool
  is_function_default_version (const tree decl)
  {
!   if (TREE_CODE (decl) != FUNCTION_DECL
!       || !DECL_FUNCTION_VERSIONED (decl))
      return false;
!   tree attr = lookup_attribute ("target", DECL_ATTRIBUTES (decl));
!   gcc_assert (attr);
    attr = TREE_VALUE (TREE_VALUE (attr));
    return (TREE_CODE (attr) == STRING_CST
  	  && strcmp (TREE_STRING_POINTER (attr), "default") == 0);
--- 1279,1309 ----
    return func_decl;
  }
  
! /* Returns true if DECL a multiversioned default.
!    With the target attribute semantics, returns true if the function is marked
!    as default with the target version.
!    With the target_version attribute semantics, returns true if the function
!    is either not annotated, or annotated as default.  */
  
  bool
  is_function_default_version (const tree decl)
  {
!   tree attr;
!   if (TREE_CODE (decl) != FUNCTION_DECL)
      return false;
!   if (TARGET_HAS_FMV_TARGET_ATTRIBUTE)
!     {
!       if (!DECL_FUNCTION_VERSIONED (decl))
! 	return false;
!       attr = lookup_attribute ("target", DECL_ATTRIBUTES (decl));
!       gcc_assert (attr);
!     }
!   else
!     {
!       attr = lookup_attribute ("target_version", DECL_ATTRIBUTES (decl));
!       if (!attr)
! 	return true;
!     }
    attr = TREE_VALUE (TREE_VALUE (attr));
    return (TREE_CODE (attr) == STRING_CST
  	  && strcmp (TREE_STRING_POINTER (attr), "default") == 0);
diff -Nrcpad gcc-16-20250608/gcc/auto-profile.cc gcc-16-20250615/gcc/auto-profile.cc
*** gcc-16-20250608/gcc/auto-profile.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/auto-profile.cc	Sun Jun 15 22:32:23 2025
*************** void function_instance::merge (function_
*** 575,584 ****
    for (callsite_map::const_iterator iter = other->callsites.begin ();
         iter != other->callsites.end (); ++iter)
      if (callsites.count (iter->first) == 0)
! 	callsites[iter->first] = iter->second;
  
!   for (position_count_map::const_iterator iter = pos_counts.begin ();
!        iter != pos_counts.end (); ++iter)
      if (pos_counts.count (iter->first) == 0)
        pos_counts[iter->first] = iter->second;
      else
--- 575,584 ----
    for (callsite_map::const_iterator iter = other->callsites.begin ();
         iter != other->callsites.end (); ++iter)
      if (callsites.count (iter->first) == 0)
!       callsites[iter->first] = iter->second;
  
!   for (position_count_map::const_iterator iter = other->pos_counts.begin ();
!        iter != other->pos_counts.end (); ++iter)
      if (pos_counts.count (iter->first) == 0)
        pos_counts[iter->first] = iter->second;
      else
diff -Nrcpad gcc-16-20250608/gcc/builtins.cc gcc-16-20250615/gcc/builtins.cc
*** gcc-16-20250608/gcc/builtins.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/builtins.cc	Sun Jun 15 22:32:23 2025
*************** expand_builtin_strnlen (tree exp, rtx ta
*** 3529,3535 ****
  
    wide_int min, max;
    int_range_max r;
!   get_global_range_query ()->range_of_expr (r, bound);
    if (r.varying_p () || r.undefined_p ())
      return NULL_RTX;
    min = r.lower_bound ();
--- 3529,3536 ----
  
    wide_int min, max;
    int_range_max r;
!   get_range_query (cfun)->range_of_expr (r, bound,
! 					 currently_expanding_gimple_stmt);
    if (r.varying_p () || r.undefined_p ())
      return NULL_RTX;
    min = r.lower_bound ();
*************** determine_block_size (tree len, rtx len_
*** 3604,3610 ****
  	{
  	  int_range_max r;
  	  tree tmin, tmax;
! 	  get_global_range_query ()->range_of_expr (r, len);
  	  range_type = get_legacy_range (r, tmin, tmax);
  	  if (range_type != VR_UNDEFINED)
  	    {
--- 3605,3612 ----
  	{
  	  int_range_max r;
  	  tree tmin, tmax;
! 	  gimple *cg = currently_expanding_gimple_stmt;
! 	  get_range_query (cfun)->range_of_expr (r, len, cg);
  	  range_type = get_legacy_range (r, tmin, tmax);
  	  if (range_type != VR_UNDEFINED)
  	    {
diff -Nrcpad gcc-16-20250608/gcc/c/ChangeLog gcc-16-20250615/gcc/c/ChangeLog
*** gcc-16-20250608/gcc/c/ChangeLog	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/c/ChangeLog	Sun Jun 15 22:32:23 2025
***************
*** 1,3 ****
--- 1,58 ----
+ 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-lang.h (union lang_type::maybe_objc_info): New type.
+ 	(struct lang_type): Use union maybe_objc_info info member
+ 	instead of tree objc_info.
+ 	* c-decl.cc (finish_struct): Allocate struct lang_type using
+ 	ggc_internal_cleared_alloc instead of ggc_cleared_alloc,
+ 	and use sizeof (struct lang_type) for ObjC and otherwise
+ 	offsetof (struct lang_type, info) as size.
+ 	(finish_enum): Likewise.
+ 
+ 2025-06-11  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/120510
+ 	* c-typeck.cc (composite_type_internal): Activate checking
+ 	assertions for all types and also inputs.
+ 	(comptypes_for_composite_check): New helper function.
+ 	(function_types_compatible_p): Add exception.
+ 
+ 2025-06-11  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	* c-typeck.cc (function_types_compatible_p): Remove unused
+ 	variables and return true/false instead of 1/0.
+ 	(type_lists_compatible_p): Return false instead of 0.
+ 
+ 2025-06-11  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/120303
+ 	* c-parser.cc (c_parser_generic_selection): Handle error
+ 	condition.
+ 
+ 2025-06-09  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/120510
+ 	* c-typeck.cc (remove_qualifiers): New function.
+ 	(composite_type_internal): Use it.
+ 	(comp_target_types): Use it.
+ 	(type_lists_compatible_p): Use it.
+ 	(find_anonymous_field_with_type): Use it.
+ 	(convert_to_anonymous_field): Use it.
+ 	(convert_for_assignment): Use it.
+ 
+ 2025-06-09  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/120510
+ 	* c-typeck.cc (composite_type_internal): Activate checking
+ 	assertion for arrays.
+ 	(common_pointer_type): Remove qualifiers also from arrays.
+ 
+ 2025-06-09  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/120510
+ 	* c-typeck.cc (composite_types_internal): Handle arrays
+ 	declared with atomic for function arguments.
+ 
  2025-06-03  Martin Uecker  <uecker@tugraz.at>
  
  	* c-typeck.cc (composite_type_internal,composite_type): Move
diff -Nrcpad gcc-16-20250608/gcc/c/c-decl.cc gcc-16-20250615/gcc/c/c-decl.cc
*** gcc-16-20250608/gcc/c/c-decl.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/c/c-decl.cc	Sun Jun 15 22:32:23 2025
*************** finish_struct (location_t loc, tree t, t
*** 9790,9801 ****
  	len += list_length (x);
  
  	/* Use the same allocation policy here that make_node uses, to
! 	  ensure that this lives as long as the rest of the struct decl.
! 	  All decls in an inline function need to be saved.  */
  
! 	space = ggc_cleared_alloc<struct lang_type> ();
! 	space2 = (sorted_fields_type *) ggc_internal_alloc
! 	  (sizeof (struct sorted_fields_type) + len * sizeof (tree));
  
  	len = 0;
  	space->s = space2;
--- 9790,9806 ----
  	len += list_length (x);
  
  	/* Use the same allocation policy here that make_node uses, to
! 	   ensure that this lives as long as the rest of the struct decl.
! 	   All decls in an inline function need to be saved.  */
  
! 	space = ((struct lang_type *)
! 		 ggc_internal_cleared_alloc (c_dialect_objc ()
! 					     ? sizeof (struct lang_type)
! 					     : offsetof (struct lang_type,
! 							 info)));
! 	space2 = ((sorted_fields_type *)
! 		  ggc_internal_alloc (sizeof (struct sorted_fields_type)
! 				      + len * sizeof (tree)));
  
  	len = 0;
  	space->s = space2;
*************** finish_enum (tree enumtype, tree values,
*** 10269,10275 ****
  
    /* Record the min/max values so that we can warn about bit-field
       enumerations that are too small for the values.  */
!   lt = ggc_cleared_alloc<struct lang_type> ();
    lt->enum_min = minnode;
    lt->enum_max = maxnode;
    TYPE_LANG_SPECIFIC (enumtype) = lt;
--- 10274,10283 ----
  
    /* Record the min/max values so that we can warn about bit-field
       enumerations that are too small for the values.  */
!   lt = ((struct lang_type *)
! 	ggc_internal_cleared_alloc (c_dialect_objc ()
! 				    ? sizeof (struct lang_type)
! 				    : offsetof (struct lang_type, info)));
    lt->enum_min = minnode;
    lt->enum_max = maxnode;
    TYPE_LANG_SPECIFIC (enumtype) = lt;
diff -Nrcpad gcc-16-20250608/gcc/c/c-lang.h gcc-16-20250615/gcc/c/c-lang.h
*** gcc-16-20250608/gcc/c/c-lang.h	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/c/c-lang.h	Sun Jun 15 22:32:23 2025
*************** struct GTY(()) lang_type {
*** 35,44 ****
    /* In an ENUMERAL_TYPE, the min and max values.  */
    tree enum_min;
    tree enum_max;
!   /* In a RECORD_TYPE, information specific to Objective-C, such
!      as a list of adopted protocols or a pointer to a corresponding
!      @interface.  See objc/objc-act.h for details.  */
!   tree objc_info;
  };
  
  struct GTY(()) lang_decl {
--- 35,48 ----
    /* In an ENUMERAL_TYPE, the min and max values.  */
    tree enum_min;
    tree enum_max;
!   union maybe_objc_info {
!     /* If not c_dialect_objc, this part is not even allocated.  */
!     char GTY((tag ("0"))) non_objc;
!     /* In a RECORD_TYPE, information specific to Objective-C, such
!        as a list of adopted protocols or a pointer to a corresponding
!        @interface.  See objc/objc-act.h for details.  */
!     tree GTY((tag ("1"))) objc_info;
!   } GTY ((desc ("c_dialect_objc ()"))) info;
  };
  
  struct GTY(()) lang_decl {
diff -Nrcpad gcc-16-20250608/gcc/c/c-parser.cc gcc-16-20250615/gcc/c/c-parser.cc
*** gcc-16-20250608/gcc/c/c-parser.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/c/c-parser.cc	Sun Jun 15 22:32:23 2025
*************** c_parser_generic_selection (c_parser *pa
*** 11146,11153 ****
  		   "ISO C does not support use of type name as %<_Generic%> "
  		   "controlling operand before C2Y");
        struct c_type_name *type = c_parser_type_name (parser);
!       selector_type = groktypename (type, NULL, NULL);
        c_inhibit_evaluation_warnings--;
      }
    else
      {
--- 11146,11159 ----
  		   "ISO C does not support use of type name as %<_Generic%> "
  		   "controlling operand before C2Y");
        struct c_type_name *type = c_parser_type_name (parser);
!       if (type)
! 	selector_type = groktypename (type, NULL, NULL);
        c_inhibit_evaluation_warnings--;
+       if (!type)
+ 	{
+ 	  c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
+ 	  return error_expr;
+ 	}
      }
    else
      {
diff -Nrcpad gcc-16-20250608/gcc/c/c-typeck.cc gcc-16-20250615/gcc/c/c-typeck.cc
*** gcc-16-20250608/gcc/c/c-typeck.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/c/c-typeck.cc	Sun Jun 15 22:32:23 2025
*************** static int lvalue_or_else (location_t, c
*** 136,141 ****
--- 136,142 ----
  static void record_maybe_used_decl (tree);
  static bool comptypes_internal (const_tree, const_tree,
  				struct comptypes_data *data);
+ static bool comptypes_check_for_composite (tree t1, tree t2);
  
  /* Return true if EXP is a null pointer constant, false otherwise.  */
  
*************** c_type_tag (const_tree t)
*** 613,618 ****
--- 614,630 ----
    return name;
  }
  
+ /* Remove qualifiers but not atomic.  For arrays remove qualifiers
+    on the element type but also do not remove atomic.  */
+ static tree
+ remove_qualifiers (tree t)
+ {
+   if (!t || t == error_mark_node)
+     return t;
+   return TYPE_ATOMIC (strip_array_types (t))
+ 	 ? c_build_qualified_type (TYPE_MAIN_VARIANT (t), TYPE_QUAL_ATOMIC)
+ 	 : TYPE_MAIN_VARIANT (t);
+ }
  
  
  /* Return the composite type of two compatible types.
*************** composite_type_internal (tree t1, tree t
*** 910,924 ****
  	for (; p1 && p1 != void_list_node;
  	     p1 = TREE_CHAIN (p1), p2 = TREE_CHAIN (p2), n = TREE_CHAIN (n))
  	  {
! 	     tree mv1 = TREE_VALUE (p1);
! 	     if (mv1 && mv1 != error_mark_node
! 		 && TREE_CODE (mv1) != ARRAY_TYPE)
! 	       mv1 = TYPE_MAIN_VARIANT (mv1);
! 
! 	     tree mv2 = TREE_VALUE (p2);
! 	     if (mv2 && mv2 != error_mark_node
! 		 && TREE_CODE (mv2) != ARRAY_TYPE)
! 	       mv2 = TYPE_MAIN_VARIANT (mv2);
  
  	    /* A null type means arg type is not specified.
  	       Take whatever the other function type has.  */
--- 922,929 ----
  	for (; p1 && p1 != void_list_node;
  	     p1 = TREE_CHAIN (p1), p2 = TREE_CHAIN (p2), n = TREE_CHAIN (n))
  	  {
! 	     tree mv1 = remove_qualifiers (TREE_VALUE (p1));
! 	     tree mv2 = remove_qualifiers (TREE_VALUE (p2));
  
  	    /* A null type means arg type is not specified.
  	       Take whatever the other function type has.  */
*************** composite_type_internal (tree t1, tree t
*** 998,1012 ****
  tree
  composite_type (tree t1, tree t2)
  {
    struct composite_cache cache = { };
    tree n = composite_type_internal (t1, t2, &cache);
!   /* For function and arrays there are some cases where qualifiers do
!      not match.  See PR120510.  */
!   if (FUNCTION_TYPE != TREE_CODE (n) && ARRAY_TYPE != TREE_CODE (n))
!     {
!       gcc_checking_assert (comptypes (n, t1));
!       gcc_checking_assert (comptypes (n, t2));
!     }
    return n;
  }
  
--- 1003,1015 ----
  tree
  composite_type (tree t1, tree t2)
  {
+   gcc_checking_assert (comptypes_check_for_composite (t1, t2));
+ 
    struct composite_cache cache = { };
    tree n = composite_type_internal (t1, t2, &cache);
! 
!   gcc_checking_assert (comptypes_check_for_composite (n, t1));
!   gcc_checking_assert (comptypes_check_for_composite (n, t2));
    return n;
  }
  
*************** static tree
*** 1020,1028 ****
  common_pointer_type (tree t1, tree t2)
  {
    tree attributes;
-   tree pointed_to_1, mv1;
-   tree pointed_to_2, mv2;
-   tree target;
    unsigned target_quals;
    addr_space_t as1, as2, as_common;
    int quals1, quals2;
--- 1023,1028 ----
*************** common_pointer_type (tree t1, tree t2)
*** 1044,1058 ****
    attributes = targetm.merge_type_attributes (t1, t2);
  
    /* Find the composite type of the target types, and combine the
!      qualifiers of the two types' targets.  Do not lose qualifiers on
!      array element types by taking the TYPE_MAIN_VARIANT.  */
!   mv1 = pointed_to_1 = TREE_TYPE (t1);
!   mv2 = pointed_to_2 = TREE_TYPE (t2);
!   if (TREE_CODE (mv1) != ARRAY_TYPE)
!     mv1 = TYPE_MAIN_VARIANT (pointed_to_1);
!   if (TREE_CODE (mv2) != ARRAY_TYPE)
!     mv2 = TYPE_MAIN_VARIANT (pointed_to_2);
!   target = composite_type (mv1, mv2);
  
    /* Strip array types to get correct qualifier for pointers to arrays */
    quals1 = TYPE_QUALS_NO_ADDR_SPACE (strip_array_types (pointed_to_1));
--- 1044,1054 ----
    attributes = targetm.merge_type_attributes (t1, t2);
  
    /* Find the composite type of the target types, and combine the
!      qualifiers of the two types' targets.  */
!   tree pointed_to_1 = TREE_TYPE (t1);
!   tree pointed_to_2 = TREE_TYPE (t2);
!   tree target = composite_type (TYPE_MAIN_VARIANT (pointed_to_1),
! 				TYPE_MAIN_VARIANT (pointed_to_2));
  
    /* Strip array types to get correct qualifier for pointers to arrays */
    quals1 = TYPE_QUALS_NO_ADDR_SPACE (strip_array_types (pointed_to_1));
*************** comptypes_verify (tree type1, tree type2
*** 1457,1472 ****
--- 1453,1491 ----
  }
  
  struct comptypes_data {
+ 
+   /* output */
    bool enum_and_int_p;
    bool different_types_p;
    bool warning_needed;
+ 
+   /* context */
    bool anon_field;
    bool pointedto;
+ 
+   /* configuration */
    bool equiv;
+   bool ignore_promoting_args;
  
    const struct tagged_tu_seen_cache* cache;
  };
  
+ 
+ /* Helper function for composite_type.  This function ignores when the
+    function type of an old-style declaration is incompatible with a type
+    of a declaration with prototype because some are arguments are not
+    self-promoting.  This is ignored only for function types but not
+    ignored in a nested context.  */
+ 
+ static bool
+ comptypes_check_for_composite (tree t1, tree t2)
+ {
+   struct comptypes_data data = { };
+   data.ignore_promoting_args = FUNCTION_TYPE == TREE_CODE (t1);
+   return comptypes_internal (t1, t2, &data);
+ }
+ 
+ 
  /* C implementation of compatible_types_for_indirection_note_p.  */
  
  bool
*************** comptypes_equiv_p (tree type1, tree type
*** 1596,1601 ****
--- 1615,1624 ----
     permitted in C11 typedef redeclarations, then this sets
     'different_types_p' in DATA to true; it is never set to
     false, but may or may not be set if the types are incompatible.
+    If two functions types are not compatible only because one is
+    an old-style definition that does not have self-promoting arguments,
+    then this can be ignored by setting 'ignore_promoting_args_p'.
+    For 'equiv' we can compute equivalency classes (see above).
     This differs from comptypes, in that we don't free the seen
     types.  */
  
*************** comp_target_types (location_t location,
*** 1794,1808 ****
      val_ped = comptypes (mvl, mvr);
  
    /* Qualifiers on element types of array types that are
!      pointer targets are lost by taking their TYPE_MAIN_VARIANT.  */
! 
!   mvl = (TYPE_ATOMIC (strip_array_types (mvl))
! 	 ? c_build_qualified_type (TYPE_MAIN_VARIANT (mvl), TYPE_QUAL_ATOMIC)
! 	 : TYPE_MAIN_VARIANT (mvl));
! 
!   mvr = (TYPE_ATOMIC (strip_array_types (mvr))
! 	 ? c_build_qualified_type (TYPE_MAIN_VARIANT (mvr), TYPE_QUAL_ATOMIC)
! 	 : TYPE_MAIN_VARIANT (mvr));
  
    enum_and_int_p = false;
    val = comptypes_check_enum_int (mvl, mvr, &enum_and_int_p);
--- 1817,1825 ----
      val_ped = comptypes (mvl, mvr);
  
    /* Qualifiers on element types of array types that are
!      pointer targets are also removed.  */
!   mvl = remove_qualifiers (mvl);
!   mvr = remove_qualifiers (mvr);
  
    enum_and_int_p = false;
    val = comptypes_check_enum_int (mvl, mvr, &enum_and_int_p);
*************** static bool
*** 2025,2038 ****
  function_types_compatible_p (const_tree f1, const_tree f2,
  			     struct comptypes_data *data)
  {
!   tree args1, args2;
!   /* 1 if no need for warning yet, 2 if warning cause has been seen.  */
!   int val = 1;
!   int val1;
!   tree ret1, ret2;
! 
!   ret1 = TREE_TYPE (f1);
!   ret2 = TREE_TYPE (f2);
  
    /* 'volatile' qualifiers on a function's return type used to mean
       the function is noreturn.  */
--- 2042,2049 ----
  function_types_compatible_p (const_tree f1, const_tree f2,
  			     struct comptypes_data *data)
  {
!   tree ret1 = TREE_TYPE (f1);
!   tree ret2 = TREE_TYPE (f2);
  
    /* 'volatile' qualifiers on a function's return type used to mean
       the function is noreturn.  */
*************** function_types_compatible_p (const_tree
*** 2044,2055 ****
    if (TYPE_VOLATILE (ret2))
      ret2 = build_qualified_type (TYPE_MAIN_VARIANT (ret2),
  				 TYPE_QUALS (ret2) & ~TYPE_QUAL_VOLATILE);
-   val = comptypes_internal (ret1, ret2, data);
-   if (val == 0)
-     return 0;
  
!   args1 = TYPE_ARG_TYPES (f1);
!   args2 = TYPE_ARG_TYPES (f2);
  
    if ((args1 == NULL_TREE) != (args2 == NULL_TREE))
      data->different_types_p = true;
--- 2055,2071 ----
    if (TYPE_VOLATILE (ret2))
      ret2 = build_qualified_type (TYPE_MAIN_VARIANT (ret2),
  				 TYPE_QUALS (ret2) & ~TYPE_QUAL_VOLATILE);
  
!   bool ignore_pargs = data->ignore_promoting_args;
!   data->ignore_promoting_args = false;
! 
!   if (!comptypes_internal (ret1, ret2, data))
!     return false;
! 
!   data->ignore_promoting_args = ignore_pargs;
! 
!   tree args1 = TYPE_ARG_TYPES (f1);
!   tree args2 = TYPE_ARG_TYPES (f2);
  
    if ((args1 == NULL_TREE) != (args2 == NULL_TREE))
      data->different_types_p = true;
*************** function_types_compatible_p (const_tree
*** 2060,2099 ****
    if (args1 == NULL_TREE)
      {
        if (TYPE_NO_NAMED_ARGS_STDARG_P (f1) != TYPE_NO_NAMED_ARGS_STDARG_P (f2))
! 	return 0;
!       if (!self_promoting_args_p (args2))
! 	return 0;
        /* If one of these types comes from a non-prototype fn definition,
  	 compare that with the other type's arglist.
  	 If they don't match, ask for a warning (but no error).  */
        if (TYPE_ACTUAL_ARG_TYPES (f1)
! 	  && type_lists_compatible_p (args2, TYPE_ACTUAL_ARG_TYPES (f1),
! 				      data) != 1)
! 	{
! 	  val = 1;
! 	  data->warning_needed = true;
! 	}
!       return val;
      }
    if (args2 == NULL_TREE)
      {
        if (TYPE_NO_NAMED_ARGS_STDARG_P (f1) != TYPE_NO_NAMED_ARGS_STDARG_P (f2))
! 	return 0;
!       if (!self_promoting_args_p (args1))
! 	return 0;
        if (TYPE_ACTUAL_ARG_TYPES (f2)
! 	  && type_lists_compatible_p (args1, TYPE_ACTUAL_ARG_TYPES (f2),
! 				      data) != 1)
! 	{
! 	  val = 1;
! 	  data->warning_needed = true;
! 	}
!       return val;
      }
  
    /* Both types have argument lists: compare them and propagate results.  */
!   val1 = type_lists_compatible_p (args1, args2, data);
!   return val1;
  }
  
  /* Check two lists of types for compatibility, returning false for
--- 2076,2108 ----
    if (args1 == NULL_TREE)
      {
        if (TYPE_NO_NAMED_ARGS_STDARG_P (f1) != TYPE_NO_NAMED_ARGS_STDARG_P (f2))
! 	return false;
!       if (!(data->ignore_promoting_args || self_promoting_args_p (args2)))
! 	return false;
!       data->ignore_promoting_args = false;
        /* If one of these types comes from a non-prototype fn definition,
  	 compare that with the other type's arglist.
  	 If they don't match, ask for a warning (but no error).  */
        if (TYPE_ACTUAL_ARG_TYPES (f1)
! 	  && !type_lists_compatible_p (args2, TYPE_ACTUAL_ARG_TYPES (f1), data))
! 	 data->warning_needed = true;
!       return true;
      }
    if (args2 == NULL_TREE)
      {
        if (TYPE_NO_NAMED_ARGS_STDARG_P (f1) != TYPE_NO_NAMED_ARGS_STDARG_P (f2))
! 	return false;
!       if (!(data->ignore_promoting_args || self_promoting_args_p (args1)))
! 	return false;
!       data->ignore_promoting_args = false;
        if (TYPE_ACTUAL_ARG_TYPES (f2)
! 	  && !type_lists_compatible_p (args1, TYPE_ACTUAL_ARG_TYPES (f2), data))
! 	data->warning_needed = true;
!       return true;
      }
  
    /* Both types have argument lists: compare them and propagate results.  */
!   return type_lists_compatible_p (args1, args2, data);
  }
  
  /* Check two lists of types for compatibility, returning false for
*************** type_lists_compatible_p (const_tree args
*** 2105,2129 ****
  {
    while (1)
      {
-       tree a1, mv1, a2, mv2;
        if (args1 == NULL_TREE && args2 == NULL_TREE)
  	return true;
        /* If one list is shorter than the other,
  	 they fail to match.  */
        if (args1 == NULL_TREE || args2 == NULL_TREE)
! 	return 0;
!       mv1 = a1 = TREE_VALUE (args1);
!       mv2 = a2 = TREE_VALUE (args2);
!       if (mv1 && mv1 != error_mark_node && TREE_CODE (mv1) != ARRAY_TYPE)
! 	mv1 = (TYPE_ATOMIC (mv1)
! 	       ? c_build_qualified_type (TYPE_MAIN_VARIANT (mv1),
! 					 TYPE_QUAL_ATOMIC)
! 	       : TYPE_MAIN_VARIANT (mv1));
!       if (mv2 && mv2 != error_mark_node && TREE_CODE (mv2) != ARRAY_TYPE)
! 	mv2 = (TYPE_ATOMIC (mv2)
! 	       ? c_build_qualified_type (TYPE_MAIN_VARIANT (mv2),
! 					 TYPE_QUAL_ATOMIC)
! 	       : TYPE_MAIN_VARIANT (mv2));
        /* A null pointer instead of a type
  	 means there is supposed to be an argument
  	 but nothing is specified about what type it has.
--- 2114,2129 ----
  {
    while (1)
      {
        if (args1 == NULL_TREE && args2 == NULL_TREE)
  	return true;
        /* If one list is shorter than the other,
  	 they fail to match.  */
        if (args1 == NULL_TREE || args2 == NULL_TREE)
! 	return false;
!       tree a1 = TREE_VALUE (args1);
!       tree a2 = TREE_VALUE (args2);
!       tree mv1 = remove_qualifiers (a1);
!       tree mv2 = remove_qualifiers (a2);
        /* A null pointer instead of a type
  	 means there is supposed to be an argument
  	 but nothing is specified about what type it has.
*************** type_lists_compatible_p (const_tree args
*** 2133,2144 ****
        if (a1 == NULL_TREE)
  	{
  	  if (c_type_promotes_to (a2) != a2)
! 	    return 0;
  	}
        else if (a2 == NULL_TREE)
  	{
  	  if (c_type_promotes_to (a1) != a1)
! 	    return 0;
  	}
        /* If one of the lists has an error marker, ignore this arg.  */
        else if (TREE_CODE (a1) == ERROR_MARK
--- 2133,2144 ----
        if (a1 == NULL_TREE)
  	{
  	  if (c_type_promotes_to (a2) != a2)
! 	    return false;
  	}
        else if (a2 == NULL_TREE)
  	{
  	  if (c_type_promotes_to (a1) != a1)
! 	    return false;
  	}
        /* If one of the lists has an error marker, ignore this arg.  */
        else if (TREE_CODE (a1) == ERROR_MARK
*************** type_lists_compatible_p (const_tree args
*** 2160,2177 ****
  	      for (memb = TYPE_FIELDS (a1);
  		   memb; memb = DECL_CHAIN (memb))
  		{
! 		  tree mv3 = TREE_TYPE (memb);
! 		  if (mv3 && mv3 != error_mark_node
! 		      && TREE_CODE (mv3) != ARRAY_TYPE)
! 		    mv3 = (TYPE_ATOMIC (mv3)
! 			   ? c_build_qualified_type (TYPE_MAIN_VARIANT (mv3),
! 						     TYPE_QUAL_ATOMIC)
! 			   : TYPE_MAIN_VARIANT (mv3));
  		  if (comptypes_internal (mv3, mv2, data))
  		    break;
  		}
  	      if (memb == NULL_TREE)
! 		return 0;
  	    }
  	  else if (TREE_CODE (a2) == UNION_TYPE
  		   && (TYPE_NAME (a2) == NULL_TREE
--- 2160,2171 ----
  	      for (memb = TYPE_FIELDS (a1);
  		   memb; memb = DECL_CHAIN (memb))
  		{
! 		  tree mv3 = remove_qualifiers (TREE_TYPE (memb));
  		  if (comptypes_internal (mv3, mv2, data))
  		    break;
  		}
  	      if (memb == NULL_TREE)
! 		return false;
  	    }
  	  else if (TREE_CODE (a2) == UNION_TYPE
  		   && (TYPE_NAME (a2) == NULL_TREE
*************** type_lists_compatible_p (const_tree args
*** 2184,2204 ****
  	      for (memb = TYPE_FIELDS (a2);
  		   memb; memb = DECL_CHAIN (memb))
  		{
! 		  tree mv3 = TREE_TYPE (memb);
! 		  if (mv3 && mv3 != error_mark_node
! 		      && TREE_CODE (mv3) != ARRAY_TYPE)
! 		    mv3 = (TYPE_ATOMIC (mv3)
! 			   ? c_build_qualified_type (TYPE_MAIN_VARIANT (mv3),
! 						     TYPE_QUAL_ATOMIC)
! 			   : TYPE_MAIN_VARIANT (mv3));
  		  if (comptypes_internal (mv3, mv1, data))
  		    break;
  		}
  	      if (memb == NULL_TREE)
! 		return 0;
  	    }
  	  else
! 	    return 0;
  	}
  
        args1 = TREE_CHAIN (args1);
--- 2178,2192 ----
  	      for (memb = TYPE_FIELDS (a2);
  		   memb; memb = DECL_CHAIN (memb))
  		{
! 		  tree mv3 = remove_qualifiers (TREE_TYPE (memb));
  		  if (comptypes_internal (mv3, mv1, data))
  		    break;
  		}
  	      if (memb == NULL_TREE)
! 		return false;
  	    }
  	  else
! 	    return false;
  	}
  
        args1 = TREE_CHAIN (args1);
*************** find_anonymous_field_with_type (tree str
*** 7482,7491 ****
         field != NULL_TREE;
         field = TREE_CHAIN (field))
      {
!       tree fieldtype = (TYPE_ATOMIC (TREE_TYPE (field))
! 			? c_build_qualified_type (TREE_TYPE (field),
! 						  TYPE_QUAL_ATOMIC)
! 			: TYPE_MAIN_VARIANT (TREE_TYPE (field)));
        if (DECL_NAME (field) == NULL
  	  && comptypes (type, fieldtype))
  	{
--- 7470,7476 ----
         field != NULL_TREE;
         field = TREE_CHAIN (field))
      {
!       tree fieldtype = remove_qualifiers (TREE_TYPE (field));
        if (DECL_NAME (field) == NULL
  	  && comptypes (type, fieldtype))
  	{
*************** convert_to_anonymous_field (location_t l
*** 7523,7532 ****
    gcc_assert (RECORD_OR_UNION_TYPE_P (rhs_struct_type));
  
    gcc_assert (POINTER_TYPE_P (type));
!   lhs_main_type = (TYPE_ATOMIC (TREE_TYPE (type))
! 		   ? c_build_qualified_type (TREE_TYPE (type),
! 					     TYPE_QUAL_ATOMIC)
! 		   : TYPE_MAIN_VARIANT (TREE_TYPE (type)));
  
    found_field = NULL_TREE;
    found_sub_field = false;
--- 7508,7514 ----
    gcc_assert (RECORD_OR_UNION_TYPE_P (rhs_struct_type));
  
    gcc_assert (POINTER_TYPE_P (type));
!   lhs_main_type = remove_qualifiers (TREE_TYPE (type));
  
    found_field = NULL_TREE;
    found_sub_field = false;
*************** convert_to_anonymous_field (location_t l
*** 7537,7546 ****
        if (DECL_NAME (field) != NULL_TREE
  	  || !RECORD_OR_UNION_TYPE_P (TREE_TYPE (field)))
  	continue;
!       tree fieldtype = (TYPE_ATOMIC (TREE_TYPE (field))
! 			? c_build_qualified_type (TREE_TYPE (field),
! 						  TYPE_QUAL_ATOMIC)
! 			: TYPE_MAIN_VARIANT (TREE_TYPE (field)));
        if (comptypes (lhs_main_type, fieldtype))
  	{
  	  if (found_field != NULL_TREE)
--- 7519,7525 ----
        if (DECL_NAME (field) != NULL_TREE
  	  || !RECORD_OR_UNION_TYPE_P (TREE_TYPE (field)))
  	continue;
!       tree fieldtype = remove_qualifiers (TREE_TYPE (field));
        if (comptypes (lhs_main_type, fieldtype))
  	{
  	  if (found_field != NULL_TREE)
*************** convert_for_assignment (location_t locat
*** 8297,8319 ****
  
        tree ttl = TREE_TYPE (type);
        tree ttr = TREE_TYPE (rhstype);
-       tree mvl = ttl;
-       tree mvr = ttr;
        bool is_opaque_pointer;
        bool target_cmp = false;   /* Cache comp_target_types () result.  */
        addr_space_t asl;
        addr_space_t asr;
  
!       if (TREE_CODE (mvl) != ARRAY_TYPE)
! 	mvl = (TYPE_ATOMIC (mvl)
! 	       ? c_build_qualified_type (TYPE_MAIN_VARIANT (mvl),
! 					 TYPE_QUAL_ATOMIC)
! 	       : TYPE_MAIN_VARIANT (mvl));
!       if (TREE_CODE (mvr) != ARRAY_TYPE)
! 	mvr = (TYPE_ATOMIC (mvr)
! 	       ? c_build_qualified_type (TYPE_MAIN_VARIANT (mvr),
! 					 TYPE_QUAL_ATOMIC)
! 	       : TYPE_MAIN_VARIANT (mvr));
        /* Opaque pointers are treated like void pointers.  */
        is_opaque_pointer = vector_targets_convertible_p (ttl, ttr);
  
--- 8276,8289 ----
  
        tree ttl = TREE_TYPE (type);
        tree ttr = TREE_TYPE (rhstype);
        bool is_opaque_pointer;
        bool target_cmp = false;   /* Cache comp_target_types () result.  */
        addr_space_t asl;
        addr_space_t asr;
  
!       tree mvl = remove_qualifiers (ttl);
!       tree mvr = remove_qualifiers (ttr);
! 
        /* Opaque pointers are treated like void pointers.  */
        is_opaque_pointer = vector_targets_convertible_p (ttl, ttr);
  
diff -Nrcpad gcc-16-20250608/gcc/c-family/ChangeLog gcc-16-20250615/gcc/c-family/ChangeLog
*** gcc-16-20250608/gcc/c-family/ChangeLog	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/c-family/ChangeLog	Sun Jun 15 22:32:23 2025
***************
*** 1,3 ****
--- 1,11 ----
+ 2025-06-12  Gwenole Beauchesne  <gb.devel@gmail.com>
+ 	    Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR c++/41201
+ 	PR c++/48026
+ 	* c-pragma.cc (init_pragma): Use c_register_pragma_with_early_handler
+ 	instead of c_register_pragma for `#pragma GCC optimize`.
+ 
  2025-06-03  Martin Uecker  <uecker@tugraz.at>
  
  	PR c/120078
diff -Nrcpad gcc-16-20250608/gcc/c-family/c-pragma.cc gcc-16-20250615/gcc/c-family/c-pragma.cc
*** gcc-16-20250608/gcc/c-family/c-pragma.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/c-family/c-pragma.cc	Sun Jun 15 22:32:23 2025
*************** init_pragma (void)
*** 1847,1853 ****
    c_register_pragma_with_early_handler ("GCC", "target",
  					handle_pragma_target,
  					handle_pragma_target);
!   c_register_pragma ("GCC", "optimize", handle_pragma_optimize);
    c_register_pragma_with_early_handler ("GCC", "push_options",
  					handle_pragma_push_options,
  					handle_pragma_push_options);
--- 1847,1855 ----
    c_register_pragma_with_early_handler ("GCC", "target",
  					handle_pragma_target,
  					handle_pragma_target);
!   c_register_pragma_with_early_handler ("GCC", "optimize",
! 					handle_pragma_optimize,
! 					handle_pragma_optimize);
    c_register_pragma_with_early_handler ("GCC", "push_options",
  					handle_pragma_push_options,
  					handle_pragma_push_options);
diff -Nrcpad gcc-16-20250608/gcc/cfgexpand.cc gcc-16-20250615/gcc/cfgexpand.cc
*** gcc-16-20250608/gcc/cfgexpand.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cfgexpand.cc	Sun Jun 15 22:32:23 2025
*************** along with GCC; see the file COPYING3.
*** 74,79 ****
--- 74,80 ----
  #include "output.h"
  #include "builtins.h"
  #include "opts.h"
+ #include "gimple-range.h"
  
  /* Some systems use __main in a way incompatible with its use in gcc, in these
     cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
*************** maybe_dump_rtl_for_gimple_stmt (gimple *
*** 2771,2776 ****
--- 2772,2781 ----
      }
  }
  
+ /* Temporary storage for BB_HEAD and BB_END of bbs until they are converted
+    to BB_RTL.  */
+ static vec<std::pair <rtx_insn *, rtx_insn *>> head_end_for_bb;
+ 
  /* Maps the blocks that do not contain tree labels to rtx labels.  */
  
  static hash_map<basic_block, rtx_code_label *> *lab_rtx_for_bb;
*************** static hash_map<basic_block, rtx_code_la
*** 2778,2788 ****
  /* Returns the label_rtx expression for a label starting basic block BB.  */
  
  static rtx_code_label *
! label_rtx_for_bb (basic_block bb ATTRIBUTE_UNUSED)
  {
    if (bb->flags & BB_RTL)
      return block_label (bb);
  
    rtx_code_label **elt = lab_rtx_for_bb->get (bb);
    if (elt)
      return *elt;
--- 2783,2805 ----
  /* Returns the label_rtx expression for a label starting basic block BB.  */
  
  static rtx_code_label *
! label_rtx_for_bb (basic_block bb)
  {
    if (bb->flags & BB_RTL)
      return block_label (bb);
  
+   if ((unsigned) bb->index < head_end_for_bb.length ()
+       && head_end_for_bb[bb->index].first)
+     {
+       if (!LABEL_P (head_end_for_bb[bb->index].first))
+ 	{
+ 	  head_end_for_bb[bb->index].first
+ 	    = emit_label_before (gen_label_rtx (),
+ 				 head_end_for_bb[bb->index].first);
+ 	}
+       return as_a <rtx_code_label *> (head_end_for_bb[bb->index].first);
+     }
+ 
    rtx_code_label **elt = lab_rtx_for_bb->get (bb);
    if (elt)
      return *elt;
*************** label_rtx_for_bb (basic_block bb ATTRIBU
*** 2801,2806 ****
--- 2818,2861 ----
  }
  
  
+ /* Wrapper around remove_edge during expansion.  */
+ 
+ void
+ expand_remove_edge (edge e)
+ {
+   if (current_ir_type () != IR_GIMPLE
+       && (e->dest->flags & BB_RTL) == 0
+       && !gimple_seq_empty_p (phi_nodes (e->dest)))
+     remove_phi_args (e);
+   remove_edge (e);
+ }
+ 
+ /* Split edge E during expansion and instead of creating a new
+    bb on that edge, add there BB.  FLAGS should be flags on the
+    new edge from BB to former E->dest.  */
+ 
+ static void
+ expand_split_edge (edge e, basic_block bb, int flags)
+ {
+   unsigned int dest_idx = e->dest_idx;
+   basic_block dest = e->dest;
+   redirect_edge_succ (e, bb);
+   e = make_single_succ_edge (bb, dest, flags);
+   if ((dest->flags & BB_RTL) == 0
+       && phi_nodes (dest)
+       && e->dest_idx != dest_idx)
+     {
+       /* If there are any PHI nodes on dest, swap the new succ edge
+ 	 with the one moved into false_edge's former position, so that
+ 	 PHI arguments don't need adjustment.  */
+       edge e2 = EDGE_PRED (dest, dest_idx);
+       std::swap (e->dest_idx, e2->dest_idx);
+       std::swap (EDGE_PRED (dest, e->dest_idx),
+ 		 EDGE_PRED (dest, e2->dest_idx));
+     }
+ }
+ 
+ 
  /* A subroutine of expand_gimple_cond.  Given E, a fallthrough edge
     of a basic block where we just expanded the conditional at the end,
     possibly clean up the CFG and instruction sequence.  LAST is the
*************** maybe_cleanup_end_of_block (edge e, rtx_
*** 2823,2829 ****
    if (BARRIER_P (get_last_insn ()))
      {
        rtx_insn *insn;
!       remove_edge (e);
        /* Now, we have a single successor block, if we have insns to
  	 insert on the remaining edge we potentially will insert
  	 it at the end of this block (if the dest block isn't feasible)
--- 2878,2884 ----
    if (BARRIER_P (get_last_insn ()))
      {
        rtx_insn *insn;
!       expand_remove_edge (e);
        /* Now, we have a single successor block, if we have insns to
  	 insert on the remaining edge we potentially will insert
  	 it at the end of this block (if the dest block isn't feasible)
*************** expand_gimple_cond (basic_block bb, gcon
*** 2942,2951 ****
    extract_true_false_edges_from_block (bb, &true_edge, &false_edge);
    set_curr_insn_location (gimple_location (stmt));
  
-   /* These flags have no purpose in RTL land.  */
-   true_edge->flags &= ~EDGE_TRUE_VALUE;
-   false_edge->flags &= ~EDGE_FALSE_VALUE;
- 
    /* We can either have a pure conditional jump with one fallthru edge or
       two-way jump that needs to be decomposed into two basic blocks.  */
    if (false_edge->dest == bb->next_bb)
--- 2997,3002 ----
*************** expand_gimple_cond (basic_block bb, gcon
*** 2978,2991 ****
      set_curr_insn_location (false_edge->goto_locus);
    emit_jump (label_rtx_for_bb (false_edge->dest));
  
!   BB_END (bb) = last;
!   if (BARRIER_P (BB_END (bb)))
!     BB_END (bb) = PREV_INSN (BB_END (bb));
!   update_bb_for_insn (bb);
  
    new_bb = create_basic_block (NEXT_INSN (last), get_last_insn (), bb);
    dest = false_edge->dest;
!   redirect_edge_succ (false_edge, new_bb);
    false_edge->flags |= EDGE_FALLTHRU;
    new_bb->count = false_edge->count ();
    loop_p loop = find_common_loop (bb->loop_father, dest->loop_father);
--- 3029,3044 ----
      set_curr_insn_location (false_edge->goto_locus);
    emit_jump (label_rtx_for_bb (false_edge->dest));
  
!   head_end_for_bb[bb->index].second = last;
!   if (BARRIER_P (head_end_for_bb[bb->index].second))
!     head_end_for_bb[bb->index].second
!       = PREV_INSN (head_end_for_bb[bb->index].second);
!   update_bb_for_insn_chain (head_end_for_bb[bb->index].first,
! 			    head_end_for_bb[bb->index].second, bb);
  
    new_bb = create_basic_block (NEXT_INSN (last), get_last_insn (), bb);
    dest = false_edge->dest;
!   expand_split_edge (false_edge, new_bb, 0);
    false_edge->flags |= EDGE_FALLTHRU;
    new_bb->count = false_edge->count ();
    loop_p loop = find_common_loop (bb->loop_father, dest->loop_father);
*************** expand_gimple_cond (basic_block bb, gcon
*** 2993,2999 ****
    if (loop->latch == bb
        && loop->header == dest)
      loop->latch = new_bb;
-   make_single_succ_edge (new_bb, dest, 0);
    if (BARRIER_P (BB_END (new_bb)))
      BB_END (new_bb) = PREV_INSN (BB_END (new_bb));
    update_bb_for_insn (new_bb);
--- 3046,3051 ----
*************** expand_gimple_tailcall (basic_block bb,
*** 4445,4451 ****
  	  if (e->dest != EXIT_BLOCK_PTR_FOR_FN (cfun))
  	    e->dest->count -= e->count ();
  	  probability += e->probability;
! 	  remove_edge (e);
  	}
        else
  	ei_next (&ei);
--- 4497,4503 ----
  	  if (e->dest != EXIT_BLOCK_PTR_FOR_FN (cfun))
  	    e->dest->count -= e->count ();
  	  probability += e->probability;
! 	  expand_remove_edge (e);
  	}
        else
  	ei_next (&ei);
*************** expand_gimple_tailcall (basic_block bb,
*** 4473,4480 ****
    e = make_edge (bb, EXIT_BLOCK_PTR_FOR_FN (cfun), EDGE_ABNORMAL
  		 | EDGE_SIBCALL);
    e->probability = probability;
!   BB_END (bb) = last;
!   update_bb_for_insn (bb);
  
    if (NEXT_INSN (last))
      {
--- 4525,4533 ----
    e = make_edge (bb, EXIT_BLOCK_PTR_FOR_FN (cfun), EDGE_ABNORMAL
  		 | EDGE_SIBCALL);
    e->probability = probability;
!   head_end_for_bb[bb->index].second = last;
!   update_bb_for_insn_chain (head_end_for_bb[bb->index].first,
! 			    head_end_for_bb[bb->index].second, bb);
  
    if (NEXT_INSN (last))
      {
*************** static basic_block
*** 6092,6098 ****
  expand_gimple_basic_block (basic_block bb, bool disable_tail_calls)
  {
    gimple_stmt_iterator gsi;
-   gimple_seq stmts;
    gimple *stmt = NULL;
    rtx_note *note = NULL;
    rtx_insn *last;
--- 6145,6150 ----
*************** expand_gimple_basic_block (basic_block b
*** 6110,6127 ****
       access the BB sequence directly.  */
    if (optimize)
      reorder_operands (bb);
-   stmts = bb_seq (bb);
-   bb->il.gimple.seq = NULL;
-   bb->il.gimple.phi_nodes = NULL;
    rtl_profile_for_bb (bb);
-   init_rtl_bb_info (bb);
-   bb->flags |= BB_RTL;
  
    /* Remove the RETURN_EXPR if we may fall though to the exit
       instead.  */
!   gsi = gsi_last (stmts);
!   if (!gsi_end_p (gsi)
!       && gimple_code (gsi_stmt (gsi)) == GIMPLE_RETURN)
      {
        greturn *ret_stmt = as_a <greturn *> (gsi_stmt (gsi));
  
--- 6162,6173 ----
       access the BB sequence directly.  */
    if (optimize)
      reorder_operands (bb);
    rtl_profile_for_bb (bb);
  
    /* Remove the RETURN_EXPR if we may fall though to the exit
       instead.  */
!   gsi = gsi_last_bb (bb);
!   if (!gsi_end_p (gsi) && gimple_code (gsi_stmt (gsi)) == GIMPLE_RETURN)
      {
        greturn *ret_stmt = as_a <greturn *> (gsi_stmt (gsi));
  
*************** expand_gimple_basic_block (basic_block b
*** 6136,6142 ****
  	}
      }
  
!   gsi = gsi_start (stmts);
    if (!gsi_end_p (gsi))
      {
        stmt = gsi_stmt (gsi);
--- 6182,6188 ----
  	}
      }
  
!   gsi = gsi_start_bb (bb);
    if (!gsi_end_p (gsi))
      {
        stmt = gsi_stmt (gsi);
*************** expand_gimple_basic_block (basic_block b
*** 6145,6150 ****
--- 6191,6198 ----
      }
  
    rtx_code_label **elt = lab_rtx_for_bb->get (bb);
+   if ((unsigned) bb->index >= head_end_for_bb.length ())
+     head_end_for_bb.safe_grow_cleared (bb->index + 1);
  
    if (stmt || elt)
      {
*************** expand_gimple_basic_block (basic_block b
*** 6160,6175 ****
        if (elt)
  	emit_label (*elt);
  
!       BB_HEAD (bb) = NEXT_INSN (last);
!       if (NOTE_P (BB_HEAD (bb)))
! 	BB_HEAD (bb) = NEXT_INSN (BB_HEAD (bb));
!       gcc_assert (LABEL_P (BB_HEAD (bb)));
!       note = emit_note_after (NOTE_INSN_BASIC_BLOCK, BB_HEAD (bb));
  
        maybe_dump_rtl_for_gimple_stmt (stmt, last);
      }
    else
!     BB_HEAD (bb) = note = emit_note (NOTE_INSN_BASIC_BLOCK);
  
    if (note)
      NOTE_BASIC_BLOCK (note) = bb;
--- 6208,6225 ----
        if (elt)
  	emit_label (*elt);
  
!       head_end_for_bb[bb->index].first = NEXT_INSN (last);
!       if (NOTE_P (head_end_for_bb[bb->index].first))
! 	head_end_for_bb[bb->index].first
! 	  = NEXT_INSN (head_end_for_bb[bb->index].first);
!       gcc_assert (LABEL_P (head_end_for_bb[bb->index].first));
!       note = emit_note_after (NOTE_INSN_BASIC_BLOCK,
! 			      head_end_for_bb[bb->index].first);
  
        maybe_dump_rtl_for_gimple_stmt (stmt, last);
      }
    else
!     head_end_for_bb[bb->index].first = note = emit_note (NOTE_INSN_BASIC_BLOCK);
  
    if (note)
      NOTE_BASIC_BLOCK (note) = bb;
*************** expand_gimple_basic_block (basic_block b
*** 6485,6493 ****
      last = PREV_INSN (PREV_INSN (last));
    if (BARRIER_P (last))
      last = PREV_INSN (last);
!   BB_END (bb) = last;
  
!   update_bb_for_insn (bb);
  
    return bb;
  }
--- 6535,6544 ----
      last = PREV_INSN (PREV_INSN (last));
    if (BARRIER_P (last))
      last = PREV_INSN (last);
!   head_end_for_bb[bb->index].second = last;
  
!   update_bb_for_insn_chain (head_end_for_bb[bb->index].first,
! 			    head_end_for_bb[bb->index].second, bb);
  
    return bb;
  }
*************** expand_gimple_basic_block (basic_block b
*** 6498,6504 ****
  static basic_block
  construct_init_block (void)
  {
!   basic_block init_block, first_block;
    edge e = NULL;
    int flags;
  
--- 6549,6555 ----
  static basic_block
  construct_init_block (void)
  {
!   basic_block init_block;
    edge e = NULL;
    int flags;
  
*************** construct_init_block (void)
*** 6529,6539 ****
    init_block->count = ENTRY_BLOCK_PTR_FOR_FN (cfun)->count;
    add_bb_to_loop (init_block, ENTRY_BLOCK_PTR_FOR_FN (cfun)->loop_father);
    if (e)
!     {
!       first_block = e->dest;
!       redirect_edge_succ (e, init_block);
!       make_single_succ_edge (init_block, first_block, flags);
!     }
    else
      make_single_succ_edge (init_block, EXIT_BLOCK_PTR_FOR_FN (cfun),
  			   EDGE_FALLTHRU);
--- 6580,6586 ----
    init_block->count = ENTRY_BLOCK_PTR_FOR_FN (cfun)->count;
    add_bb_to_loop (init_block, ENTRY_BLOCK_PTR_FOR_FN (cfun)->loop_father);
    if (e)
!     expand_split_edge (e, init_block, flags);
    else
      make_single_succ_edge (init_block, EXIT_BLOCK_PTR_FOR_FN (cfun),
  			   EDGE_FALLTHRU);
*************** pass_expand::execute (function *fun)
*** 7175,7184 ****
--- 7222,7256 ----
        >= param_max_debug_marker_count)
      cfun->debug_nonbind_markers = false;
  
+   enable_ranger (fun);
    lab_rtx_for_bb = new hash_map<basic_block, rtx_code_label *>;
+   head_end_for_bb.create (last_basic_block_for_fn (fun));
    FOR_BB_BETWEEN (bb, init_block->next_bb, EXIT_BLOCK_PTR_FOR_FN (fun),
  		  next_bb)
      bb = expand_gimple_basic_block (bb, var_ret_seq != NULL_RTX);
+   disable_ranger (fun);
+   FOR_BB_BETWEEN (bb, init_block->next_bb, EXIT_BLOCK_PTR_FOR_FN (fun),
+ 		  next_bb)
+     {
+       if ((bb->flags & BB_RTL) == 0)
+ 	{
+ 	  bb->il.gimple.seq = NULL;
+ 	  bb->il.gimple.phi_nodes = NULL;
+ 	  init_rtl_bb_info (bb);
+ 	  bb->flags |= BB_RTL;
+ 	  BB_HEAD (bb) = head_end_for_bb[bb->index].first;
+ 	  BB_END (bb) = head_end_for_bb[bb->index].second;
+ 	}
+       /* These flags have no purpose in RTL land.  */
+       if (EDGE_COUNT (bb->succs) == 2)
+ 	{
+ 	  EDGE_SUCC (bb, 0)->flags &= ~(EDGE_TRUE_VALUE | EDGE_FALSE_VALUE);
+ 	  EDGE_SUCC (bb, 1)->flags &= ~(EDGE_TRUE_VALUE | EDGE_FALSE_VALUE);
+ 	}
+       else if (single_succ_p (bb))
+ 	single_succ_edge (bb)->flags &= ~(EDGE_TRUE_VALUE | EDGE_FALSE_VALUE);
+     }
+   head_end_for_bb.release ();
  
    if (MAY_HAVE_DEBUG_BIND_INSNS)
      expand_debug_locations ();
diff -Nrcpad gcc-16-20250608/gcc/cfgexpand.h gcc-16-20250615/gcc/cfgexpand.h
*** gcc-16-20250608/gcc/cfgexpand.h	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cfgexpand.h	Sun Jun 15 22:32:23 2025
*************** along with GCC; see the file COPYING3.
*** 22,27 ****
--- 22,28 ----
  
  extern tree gimple_assign_rhs_to_tree (gimple *);
  extern HOST_WIDE_INT estimated_stack_frame_size (struct cgraph_node *);
+ extern void expand_remove_edge (edge);
  extern void set_parm_rtl (tree, rtx);
  
  
diff -Nrcpad gcc-16-20250608/gcc/cfgrtl.cc gcc-16-20250615/gcc/cfgrtl.cc
*** gcc-16-20250608/gcc/cfgrtl.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cfgrtl.cc	Sun Jun 15 22:32:23 2025
*************** emit_insn_at_entry (rtx insn)
*** 538,544 ****
     The insn chain range is inclusive
     (i.e. both BEGIN and END will be updated. */
  
! static void
  update_bb_for_insn_chain (rtx_insn *begin, rtx_insn *end, basic_block bb)
  {
    rtx_insn *insn;
--- 538,544 ----
     The insn chain range is inclusive
     (i.e. both BEGIN and END will be updated. */
  
! void
  update_bb_for_insn_chain (rtx_insn *begin, rtx_insn *end, basic_block bb)
  {
    rtx_insn *insn;
diff -Nrcpad gcc-16-20250608/gcc/cfgrtl.h gcc-16-20250615/gcc/cfgrtl.h
*** gcc-16-20250608/gcc/cfgrtl.h	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cfgrtl.h	Sun Jun 15 22:32:23 2025
*************** extern basic_block create_basic_block_st
*** 28,33 ****
--- 28,34 ----
  extern void compute_bb_for_insn (void);
  extern void free_bb_for_insn (void);
  extern rtx_insn *entry_of_function (void);
+ extern void update_bb_for_insn_chain (rtx_insn *, rtx_insn *, basic_block);
  extern void update_bb_for_insn (basic_block);
  extern bool contains_no_active_insn_p (const_basic_block);
  extern bool forwarder_block_p (const_basic_block);
diff -Nrcpad gcc-16-20250608/gcc/cgraph.cc gcc-16-20250615/gcc/cgraph.cc
*** gcc-16-20250608/gcc/cgraph.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cgraph.cc	Sun Jun 15 22:32:23 2025
*************** cgraph_node::function_version (void)
*** 179,184 ****
--- 179,306 ----
    return cgraph_fnver_htab->find (&key);
  }
  
+ /* If profile is IPA, turn it into local one.  */
+ void
+ cgraph_node::make_profile_local ()
+ {
+   if (!count.ipa ().initialized_p ())
+     return;
+   if (!(count == profile_count::zero ()))
+     count = count.guessed_local ();
+   for (cgraph_edge *e = callees; e; e = e->next_callee)
+     {
+       if (!e->inline_failed)
+ 	e->callee->make_profile_local ();
+       if (!(e->count == profile_count::zero ()))
+ 	e->count = e->count.guessed_local ();
+     }
+   for (cgraph_edge *e = indirect_calls; e; e = e->next_callee)
+     if (!(e->count == profile_count::zero ()))
+       e->count = e->count.guessed_local ();
+ }
+ 
+ /* Turn profile to global0.  Walk into inlined functions.
+    QUALITY must be GUESSED_GLOBAL0 or GUESSED_GLOBAL0_ADJUSTED  */
+ void
+ cgraph_node::make_profile_global0 (profile_quality quality)
+ {
+   if (count == profile_count::zero ())
+     ;
+   else if (quality == GUESSED_GLOBAL0)
+     {
+       if (count.quality () == GUESSED_GLOBAL0)
+ 	return;
+       count = count.global0 ();
+     }
+   else if (quality == GUESSED_GLOBAL0_ADJUSTED)
+     {
+       if (count.quality () == GUESSED_GLOBAL0
+ 	  || count.quality () == GUESSED_GLOBAL0_ADJUSTED)
+ 	return;
+       count = count.global0adjusted ();
+     }
+   else
+     gcc_unreachable ();
+   for (cgraph_edge *e = callees; e; e = e->next_callee)
+     {
+       if (!e->inline_failed)
+ 	e->callee->make_profile_global0 (quality);
+       if (e->count == profile_count::zero ())
+ 	;
+       else if (quality == GUESSED_GLOBAL0)
+ 	e->count = e->count.global0 ();
+       else if (quality == GUESSED_GLOBAL0_ADJUSTED)
+ 	e->count = e->count.global0adjusted ();
+       else
+ 	gcc_unreachable ();
+     }
+   for (cgraph_edge *e = indirect_calls; e; e = e->next_callee)
+     if (e->count == profile_count::zero ())
+       ;
+     else if (quality == GUESSED_GLOBAL0)
+       e->count = e->count.global0 ();
+     else if (quality == GUESSED_GLOBAL0_ADJUSTED)
+       e->count = e->count.global0adjusted ();
+     else
+       gcc_unreachable ();
+ }
+ 
+ /* Scale profile by NUM/DEN.  Walk into inlined functions.  */
+ 
+ void
+ cgraph_node::apply_scale (profile_count num, profile_count den)
+ {
+   if (num == den)
+     return;
+ 
+   for (cgraph_edge *e = callees; e; e = e->next_callee)
+     {
+       if (!e->inline_failed)
+ 	e->callee->apply_scale (num, den);
+       e->count = e->count.apply_scale (num, den);
+     }
+   for (cgraph_edge *e = indirect_calls; e; e = e->next_callee)
+     e->count = e->count.apply_scale (num, den);
+   count = count.apply_scale (num, den);
+ }
+ 
+ /* Scale profile to given IPA_COUNT.
+    IPA_COUNT should pass ipa_p () with a single exception.
+    It can be also GUESSED_LOCAL in case we want to
+    drop any IPA info about the profile.  */
+ 
+ void
+ cgraph_node::scale_profile_to (profile_count ipa_count)
+ {
+   /* If we do not know the adjustment, it is better to keep profile
+      as it is.  */
+   if (!ipa_count.initialized_p ()
+       || ipa_count == count)
+     return;
+   /* ipa-cp converts value to guessed-local in case it believes
+      that we lost track of IPA profile.  */
+   if (ipa_count.quality () == GUESSED_LOCAL)
+     {
+       make_profile_local ();
+       return;
+     }
+   if (ipa_count == profile_count::zero ())
+     {
+       make_profile_global0 (GUESSED_GLOBAL0);
+       return;
+     }
+   if (ipa_count == profile_count::adjusted_zero ())
+     {
+       make_profile_global0 (GUESSED_GLOBAL0_ADJUSTED);
+       return;
+     }
+   gcc_assert (ipa_count.ipa () == ipa_count
+ 	      && !inlined_to);
+   profile_count num = count.combine_with_ipa_count (ipa_count);
+   profile_count den = count;
+   profile_count::adjust_for_ipa_scaling (&num, &den);
+ }
+ 
  /* Insert a new cgraph_function_version_info node into cgraph_fnver_htab
     corresponding to cgraph_node NODE.  */
  cgraph_function_version_info *
*************** cgraph_node::delete_function_version_by_
*** 231,275 ****
    decl_node->remove ();
  }
  
! /* Record that DECL1 and DECL2 are semantically identical function
     versions.  */
  void
! cgraph_node::record_function_versions (tree decl1, tree decl2)
  {
!   cgraph_node *decl1_node = cgraph_node::get_create (decl1);
!   cgraph_node *decl2_node = cgraph_node::get_create (decl2);
!   cgraph_function_version_info *decl1_v = NULL;
!   cgraph_function_version_info *decl2_v = NULL;
!   cgraph_function_version_info *before;
!   cgraph_function_version_info *after;
  
!   gcc_assert (decl1_node != NULL && decl2_node != NULL);
!   decl1_v = decl1_node->function_version ();
!   decl2_v = decl2_node->function_version ();
  
!   if (decl1_v != NULL && decl2_v != NULL)
      return;
  
!   if (decl1_v == NULL)
!     decl1_v = decl1_node->insert_new_function_version ();
  
!   if (decl2_v == NULL)
!     decl2_v = decl2_node->insert_new_function_version ();
  
!   /* Chain decl2_v and decl1_v.  All semantically identical versions
!      will be chained together.  */
  
!   before = decl1_v;
!   after = decl2_v;
  
!   while (before->next != NULL)
!     before = before->next;
  
!   while (after->prev != NULL)
!     after= after->prev;
  
!   before->next = after;
!   after->prev = before;
  }
  
  /* Initialize callgraph dump file.  */
--- 353,412 ----
    decl_node->remove ();
  }
  
! /* Add decl to the structure of semantically identical function versions.
!    The node is inserted at the point maintaining the priority ordering on the
     versions.  */
  void
! cgraph_node::add_function_version (cgraph_function_version_info *fn_v,
! 				   tree decl)
  {
!   cgraph_node *decl_node = cgraph_node::get_create (decl);
!   cgraph_function_version_info *decl_v = NULL;
  
!   gcc_assert (decl_node != NULL);
  
!   decl_v = decl_node->function_version ();
! 
!   /* If the nodes are already linked, skip.  */
!   if (decl_v != NULL && (decl_v->next || decl_v->prev))
      return;
  
!   if (decl_v == NULL)
!     decl_v = decl_node->insert_new_function_version ();
  
!   gcc_assert (decl_v);
!   gcc_assert (fn_v);
  
!   /* Go to start of the FMV structure.  */
!   while (fn_v->prev)
!     fn_v = fn_v->prev;
  
!   cgraph_function_version_info *insert_point_before = NULL;
!   cgraph_function_version_info *insert_point_after = fn_v;
  
!   /* Find the insertion point for the new version to maintain ordering.
!      The default node must always go at the beginning.  */
!   if (!is_function_default_version (decl))
!     while (insert_point_after
! 	   && (targetm.compare_version_priority
! 		 (decl, insert_point_after->this_node->decl) > 0
! 	       || is_function_default_version
! 		    (insert_point_after->this_node->decl)
! 	       || lookup_attribute
! 		    ("target_clones",
! 		     DECL_ATTRIBUTES (insert_point_after->this_node->decl))))
!       {
! 	insert_point_before = insert_point_after;
! 	insert_point_after = insert_point_after->next;
!       }
  
!   decl_v->prev = insert_point_before;
!   decl_v->next= insert_point_after;
  
!   if (insert_point_before)
!     insert_point_before->next = decl_v;
!   if (insert_point_after)
!     insert_point_after->prev = decl_v;
  }
  
  /* Initialize callgraph dump file.  */
diff -Nrcpad gcc-16-20250608/gcc/cgraph.h gcc-16-20250615/gcc/cgraph.h
*** gcc-16-20250608/gcc/cgraph.h	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cgraph.h	Sun Jun 15 22:32:23 2025
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1256,1261 ****
--- 1256,1276 ----
       it is not used in any other non-standard way.  */
    bool only_called_directly_p (void);
  
+   /* Turn profile to global0.  Walk into inlined functions.  */
+   void make_profile_local ();
+ 
+   /* Turn profile to global0.  Walk into inlined functions.  */
+   void make_profile_global0 (profile_quality quality);
+ 
+   /* Scale profile by NUM/DEN.  Walk into inlined funtion.  */
+   void apply_scale (profile_count num, profile_count den);
+ 
+   /* Scale profile to given IPA_COUNT.
+      IPA_COUNT should pass ipa_p () with a single exception.
+      It can be also GUESSED_LOCAL in case we want to
+      drop any IPA info about the profile.  */
+   void scale_profile_to (profile_count ipa_count);
+ 
    /* Return true when function is only called directly or it has alias.
       i.e. it is not externally visible, address was not taken and
       it is not used in any other non-standard way.  */
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1324,1332 ****
      return m_summary_id;
    }
  
!   /* Record that DECL1 and DECL2 are semantically identical function
!      versions.  */
!   static void record_function_versions (tree decl1, tree decl2);
  
    /* Remove the cgraph_function_version_info and cgraph_node for DECL.  This
       DECL is a duplicate declaration.  */
--- 1339,1347 ----
      return m_summary_id;
    }
  
!   /* Adds DECL to the FN_V structure of semantically identical functions.  */
!   static void add_function_version (cgraph_function_version_info *fn_v,
! 				    tree decl);
  
    /* Remove the cgraph_function_version_info and cgraph_node for DECL.  This
       DECL is a duplicate declaration.  */
diff -Nrcpad gcc-16-20250608/gcc/cobol/ChangeLog gcc-16-20250615/gcc/cobol/ChangeLog
*** gcc-16-20250608/gcc/cobol/ChangeLog	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cobol/ChangeLog	Sun Jun 15 22:32:23 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-06-10  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* Make-lang.in: cobol.clean does not remove libgcobol files.
+ 	* cdf.y: Suppress 1 cppcheck false positive.
+ 	* cdfval.h (scanner_parsing):  Partial via cppcheck for PR119324.
+ 	* gcobol.1: Fix groff errors.
+ 	* gcobolspec.cc (append_arg): Const parameter.
+ 	* parse_ante.h (intrinsic_call_2): Avoid NULL dereference.
+ 
  2025-06-06  Robert Dubner  <rdubner@symas.com>
  	    James K. Lowden  <jklowden@cobolworx.com>
  
diff -Nrcpad gcc-16-20250608/gcc/cobol/Make-lang.in gcc-16-20250615/gcc/cobol/Make-lang.in
*** gcc-16-20250608/gcc/cobol/Make-lang.in	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cobol/Make-lang.in	Sun Jun 15 22:32:23 2025
*************** cobol.srcman:
*** 351,358 ****
  cobol.mostlyclean:
  
  cobol.clean:
! 	rm -fr gcobol cobol1 cobol/*		\
! 	../*/libgcobol/*
  
  cobol.distclean:
  
--- 351,357 ----
  cobol.mostlyclean:
  
  cobol.clean:
! 	rm -fr gcobol cobol1 cobol/*
  
  cobol.distclean:
  
diff -Nrcpad gcc-16-20250608/gcc/cobol/cdf.y gcc-16-20250615/gcc/cobol/cdf.y
*** gcc-16-20250608/gcc/cobol/cdf.y	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cobol/cdf.y	Sun Jun 15 22:32:23 2025
*************** verify_integer( const YDFLTYPE& loc, con
*** 891,896 ****
--- 891,897 ----
    return true;
  }
  
+ // cppcheck-suppress returnTempReference
  const cdfval_base_t&
  cdfval_base_t::operator()( const YDFLTYPE& loc ) {
    static cdfval_t zero(0);
diff -Nrcpad gcc-16-20250608/gcc/cobol/cdfval.h gcc-16-20250615/gcc/cobol/cdfval.h
*** gcc-16-20250608/gcc/cobol/cdfval.h	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cobol/cdfval.h	Sun Jun 15 22:32:23 2025
***************
*** 38,43 ****
--- 38,51 ----
  
  bool scanner_parsing();
  
+ /* cdfval_base_t has no constructor because otherwise: 
+  * cobol/cdf.h:172:7: note: ‘YDFSTYPE::YDFSTYPE()’ is implicitly deleted 
+  *  because the default definition would be ill-formed:
+  * 172 | union YDFSTYPE
+  * 
+  * We use the derived type cdfval_t, which can be properly constructed and
+  * operated on, but tell Bison only about its POD base class.
+  */
  struct YDFLTYPE;
  struct cdfval_base_t {
    bool off;
diff -Nrcpad gcc-16-20250608/gcc/cobol/gcobol.1 gcc-16-20250615/gcc/cobol/gcobol.1
*** gcc-16-20250608/gcc/cobol/gcobol.1	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cobol/gcobol.1	Sun Jun 15 22:32:23 2025
*************** compiles \*[lang] source code to object
*** 39,45 ****
  executable binary or shared object.  As a GCC component, it accepts
  all options that affect code-generation and linking.  Options specific
  to \*[lang] are listed below.
! .Bl -tag -width \0\0debug
  .It Fl main Ar filename
  .Nm
  will generate a
--- 39,45 ----
  executable binary or shared object.  As a GCC component, it accepts
  all options that affect code-generation and linking.  Options specific
  to \*[lang] are listed below.
! .Bl -tag -width "\0\0debug"
  .It Fl main Ar filename
  .Nm
  will generate a
*************** Otherwise, columns 1-6 are examined. If
*** 197,210 ****
  or blanks, the file is assumed to be in
  .Em "fixed-form reference format",
  also with the indicator in column 7.
- 
  If not auto-detected as 
  .Em "fixed-form reference format" 
  or 
  .Em "extended source format",
  the file is assumed to be in 
  .Em "free-form reference format".
- 
  .Pp
  .
  .It Fl fcobol-exceptions Ar exception Op Ns , Ns Ar exception Ns ...
--- 197,208 ----
*************** the directive must appear before
*** 1088,1094 ****
  .Pp
  To test a feature-set variable, use
  .Dl >>IF Ar feature Li DEFINED
! ..
  .Ss Copybooks
  .Nm
  supports the CDF
--- 1086,1092 ----
  .Pp
  To test a feature-set variable, use
  .Dl >>IF Ar feature Li DEFINED
! .
  .Ss Copybooks
  .Nm
  supports the CDF
*************** stores and converts
*** 1294,1300 ****
  numbers.  Converting the floating-point value to the numeric display
  value 0055110 is done by multiplying 55.109999...\& by 1,000 and then
  truncating the result to an integer.  And it turns out that even
! though 55.11 can’t be represented in floating-point as an exact value,
  the product of the multiplication, 55110, is an exact value.
  .Pp
  In cases where it is important for conversions to have predictable
--- 1292,1298 ----
  numbers.  Converting the floating-point value to the numeric display
  value 0055110 is done by multiplying 55.109999...\& by 1,000 and then
  truncating the result to an integer.  And it turns out that even
! though 55.11 can't be represented in floating-point as an exact value,
  the product of the multiplication, 55110, is an exact value.
  .Pp
  In cases where it is important for conversions to have predictable
*************** specified for a calculation, then the in
*** 1325,1331 ****
  .
  .Ss A warning about binary floating point comparison
  The cardinal rule when doing comparisons involving floating-point
! values: Never, ever, test for equality.  It’s just not worth the hassle.
  .Pp
  For example:
  .Bd -literal
--- 1323,1329 ----
  .
  .Ss A warning about binary floating point comparison
  The cardinal rule when doing comparisons involving floating-point
! values: Never, ever, test for equality.  It's just not worth the hassle.
  .Pp
  For example:
  .Bd -literal
*************** and you really test the code.  And then
*** 1361,1367 ****
  .Pp
  Finally, it is observably the case that the
  .Nm
! implementations of floating-point conversions and comparisons don’t
  precisely match the behavior of other \*[lang] compilers.
  .Pp
  You have been warned.
--- 1359,1365 ----
  .Pp
  Finally, it is observably the case that the
  .Nm
! implementations of floating-point conversions and comparisons don't
  precisely match the behavior of other \*[lang] compilers.
  .Pp
  You have been warned.
diff -Nrcpad gcc-16-20250608/gcc/cobol/gcobolspec.cc gcc-16-20250615/gcc/cobol/gcobolspec.cc
*** gcc-16-20250608/gcc/cobol/gcobolspec.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cobol/gcobolspec.cc	Sun Jun 15 22:32:23 2025
*************** static bool need_libgcobol = true;
*** 82,88 ****
  // #define NOISY 1
  
  static void
! append_arg(const struct cl_decoded_option arg)
    {
  #ifdef NOISY
    static int counter = 1;
--- 82,88 ----
  // #define NOISY 1
  
  static void
! append_arg(const cl_decoded_option& arg)
    {
  #ifdef NOISY
    static int counter = 1;
diff -Nrcpad gcc-16-20250608/gcc/cobol/parse_ante.h gcc-16-20250615/gcc/cobol/parse_ante.h
*** gcc-16-20250608/gcc/cobol/parse_ante.h	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/cobol/parse_ante.h	Sun Jun 15 22:32:23 2025
*************** intrinsic_call_1( cbl_field_t *output, i
*** 2612,2618 ****
  
  static bool
  intrinsic_call_2( cbl_field_t *tgt, int token, cbl_refer_t *r1, cbl_refer_t *r2 ) {
!   std::vector<cbl_refer_t> args { *r1, *r2 };
    size_t n = intrinsic_invalid_parameter(token, args);
    if( n < args.size() ) {
      error_msg(args[n].loc, "invalid parameter '%s'", args[n].field->name);
--- 2612,2618 ----
  
  static bool
  intrinsic_call_2( cbl_field_t *tgt, int token, cbl_refer_t *r1, cbl_refer_t *r2 ) {
!   std::vector<cbl_refer_t> args { *r1, r2? *r2 : cbl_refer_t() };
    size_t n = intrinsic_invalid_parameter(token, args);
    if( n < args.size() ) {
      error_msg(args[n].loc, "invalid parameter '%s'", args[n].field->name);
diff -Nrcpad gcc-16-20250608/gcc/config/aarch64/aarch64-sme.md gcc-16-20250615/gcc/config/aarch64/aarch64-sme.md
*** gcc-16-20250608/gcc/config/aarch64/aarch64-sme.md	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/aarch64/aarch64-sme.md	Sun Jun 15 22:32:23 2025
***************
*** 373,378 ****
--- 373,380 ----
  		    (reg:DI SME_STATE_REGNUM)
  		    (reg:DI TPIDR2_SETUP_REGNUM)
  		    (reg:DI ZA_SAVED_REGNUM)] UNSPEC_RESTORE_ZA))
+    (set (reg:DI SME_STATE_REGNUM)
+ 	(unspec:DI [(reg:DI SME_STATE_REGNUM)] UNSPEC_TPIDR2_RESTORE))
     (clobber (reg:DI R0_REGNUM))
     (clobber (reg:DI R14_REGNUM))
     (clobber (reg:DI R15_REGNUM))
diff -Nrcpad gcc-16-20250608/gcc/config/aarch64/aarch64-sve.md gcc-16-20250615/gcc/config/aarch64/aarch64-sve.md
*** gcc-16-20250608/gcc/config/aarch64/aarch64-sve.md	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/aarch64/aarch64-sve.md	Sun Jun 15 22:32:23 2025
***************
*** 3948,3953 ****
--- 3948,3954 ----
  ;; -------------------------------------------------------------------------
  ;; Includes:
  ;; - NOT
+ ;; - NOTS
  ;; -------------------------------------------------------------------------
  
  ;; Unpredicated predicate inverse.
***************
*** 3972,3977 ****
--- 3973,4014 ----
    "not\t%0.b, %1/z, %2.b"
  )
  
+ ;; Predicated predicate inverse in which the flags are set in the same
+ ;; way as a PTEST.
+ (define_insn "*one_cmpl<mode>3_cc"
+   [(set (reg:CC_NZC CC_REGNUM)
+ 	(unspec:CC_NZC
+ 	  [(match_operand:VNx16BI 1 "register_operand" "Upa")
+ 	   (match_operand 3)
+ 	   (match_operand:SI 4 "aarch64_sve_ptrue_flag")
+ 	   (and:PRED_ALL
+ 	     (not:PRED_ALL
+ 	       (match_operand:PRED_ALL 2 "register_operand" "Upa"))
+ 	     (match_dup 3))]
+ 	  UNSPEC_PTEST))
+    (set (match_operand:PRED_ALL 0 "register_operand" "=Upa")
+ 	(and:PRED_ALL (not:PRED_ALL (match_dup 2)) (match_dup 3)))]
+   "TARGET_SVE"
+   "nots\t%0.b, %1/z, %2.b"
+ )
+ 
+ ;; Same, where only the flags result is interesting.
+ (define_insn "*one_cmpl<mode>3_ptest"
+   [(set (reg:CC_NZC CC_REGNUM)
+ 	(unspec:CC_NZC
+ 	  [(match_operand:VNx16BI 1 "register_operand" "Upa")
+ 	   (match_operand 3)
+ 	   (match_operand:SI 4 "aarch64_sve_ptrue_flag")
+ 	   (and:PRED_ALL
+ 	     (not:PRED_ALL
+ 	       (match_operand:PRED_ALL 2 "register_operand" "Upa"))
+ 	     (match_dup 3))]
+ 	  UNSPEC_PTEST))
+    (clobber (match_scratch:PRED_ALL 0 "=Upa"))]
+   "TARGET_SVE"
+   "nots\t%0.b, %1/z, %2.b"
+ )
+ 
  ;; =========================================================================
  ;; == Binary arithmetic
  ;; =========================================================================
diff -Nrcpad gcc-16-20250608/gcc/config/aarch64/aarch64.cc gcc-16-20250615/gcc/config/aarch64/aarch64.cc
*** gcc-16-20250608/gcc/config/aarch64/aarch64.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/aarch64/aarch64.cc	Sun Jun 15 22:32:23 2025
*************** aarch64_get_function_versions_dispatcher
*** 20862,20868 ****
    struct cgraph_node *node = NULL;
    struct cgraph_node *default_node = NULL;
    struct cgraph_function_version_info *node_v = NULL;
-   struct cgraph_function_version_info *first_v = NULL;
  
    tree dispatch_decl = NULL;
  
--- 20862,20867 ----
*************** aarch64_get_function_versions_dispatcher
*** 20879,20915 ****
    if (node_v->dispatcher_resolver != NULL)
      return node_v->dispatcher_resolver;
  
!   /* Find the default version and make it the first node.  */
!   first_v = node_v;
!   /* Go to the beginning of the chain.  */
!   while (first_v->prev != NULL)
!     first_v = first_v->prev;
!   default_version_info = first_v;
!   while (default_version_info != NULL)
!     {
!       if (get_feature_mask_for_version
! 	    (default_version_info->this_node->decl) == 0ULL)
! 	break;
!       default_version_info = default_version_info->next;
!     }
  
    /* If there is no default node, just return NULL.  */
!   if (default_version_info == NULL)
      return NULL;
  
-   /* Make default info the first node.  */
-   if (first_v != default_version_info)
-     {
-       default_version_info->prev->next = default_version_info->next;
-       if (default_version_info->next)
- 	default_version_info->next->prev = default_version_info->prev;
-       first_v->prev = default_version_info;
-       default_version_info->next = first_v;
-       default_version_info->prev = NULL;
-     }
- 
-   default_node = default_version_info->this_node;
- 
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
--- 20878,20893 ----
    if (node_v->dispatcher_resolver != NULL)
      return node_v->dispatcher_resolver;
  
!   /* The default node is always the beginning of the chain.  */
!   default_version_info = node_v;
!   while (default_version_info->prev)
!     default_version_info = default_version_info->prev;
!   default_node = default_version_info->this_node;
  
    /* If there is no default node, just return NULL.  */
!   if (!is_function_default_version (default_node->decl))
      return NULL;
  
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
diff -Nrcpad gcc-16-20250608/gcc/config/aarch64/aarch64.md gcc-16-20250615/gcc/config/aarch64/aarch64.md
*** gcc-16-20250608/gcc/config/aarch64/aarch64.md	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/aarch64/aarch64.md	Sun Jun 15 22:32:23 2025
***************
*** 136,141 ****
--- 136,149 ----
      ;; The actual value can sometimes vary, because it does not track
      ;; changes to PSTATE.ZA that happen during a lazy save and restore.
      ;; Those effects are instead tracked by ZA_SAVED_REGNUM.
+     ;;
+     ;; Sequences also write to this register if they synchronize the
+     ;; actual contents of ZA and PSTATE.ZA with the current function's
+     ;; ZA_REGNUM and SME_STATE_REGNUM.  Conceptually, these extra writes
+     ;; do not change the value of SME_STATE_REGNUM.  They simply act as
+     ;; sequencing points.  They means that all direct accesses to ZA can
+     ;; depend only on ZA_REGNUM and SME_STATE_REGNUM, rather than also
+     ;; depending on ZA_SAVED_REGNUM etc.
      (SME_STATE_REGNUM 89)
  
      ;; Instructions write to this register if they set TPIDR2_EL0 to a
diff -Nrcpad gcc-16-20250608/gcc/config/avr/avr.md gcc-16-20250615/gcc/config/avr/avr.md
*** gcc-16-20250608/gcc/config/avr/avr.md	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/avr/avr.md	Sun Jun 15 22:32:24 2025
***************
*** 5273,5278 ****
--- 5273,5313 ----
  ;;<< << << << << << << << << << << << << << << << << << << << << << << << << <<
  ;; arithmetic shift left
  
+ ;; Work around PR120423: Transform left shift of a paradoxical subreg
+ ;; into left shift of the zero-extended entity.
+ (define_split ; PR120423
+   [(set (match_operand:HISI 0 "register_operand")
+         (ashift:HISI (subreg:HISI (match_operand:QIPSI 1 "nonimmediate_operand")
+                                   0)
+                      (match_operand:QI 2 "const_int_operand")))]
+   "!reload_completed
+    && !avropt_lra_p
+    && <HISI:SIZE> > <QIPSI:SIZE>"
+   [(set (match_dup 4)
+         (zero_extend:HISI (match_dup 5)))
+    (set (match_dup 0)
+         (ashift:HISI (match_dup 4)
+                      (match_dup 2)))]
+   {
+     operands[4] = gen_reg_rtx (<HISI:MODE>mode);
+     operands[5] = force_reg (<QIPSI:MODE>mode, operands[1]);
+   })
+ 
+ ;; Similar happens for PR116389.
+ (define_split ; PR116389
+   [(set (match_operand:HISI 0 "register_operand")
+         (subreg:HISI (match_operand:QIPSI 1 "nonimmediate_operand")
+                      0))]
+   "!reload_completed
+    && !avropt_lra_p
+    && <HISI:SIZE> > <QIPSI:SIZE>"
+   [(set (match_dup 0)
+         (zero_extend:HISI (match_dup 2)))]
+   {
+     operands[2] = force_reg (<QIPSI:MODE>mode, operands[1]);
+   })
+ 
+ 
  ;; "ashlqi3"
  ;; "ashlqq3"  "ashluqq3"
  (define_expand "ashl<mode>3"
diff -Nrcpad gcc-16-20250608/gcc/config/gcn/gcn-devices.def gcc-16-20250615/gcc/config/gcn/gcn-devices.def
*** gcc-16-20250608/gcc/config/gcn/gcn-devices.def	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/gcn/gcn-devices.def	Sun Jun 15 22:32:24 2025
*************** GCN_DEVICE(gfx90c, GFX90C, 0x32, ISA_GCN
*** 171,180 ****
--- 171,213 ----
  	   /* Generic Name */ GFX9_GENERIC
  	   )
  
+ GCN_DEVICE(gfx942, GFX942, 0x4c, ISA_CDNA3,
+ 	   /* XNACK default */ HSACO_ATTR_ANY,
+ 	   /* SRAM_ECC default */ HSACO_ATTR_ANY,
+ 	   /* WAVE64 mode */ HSACO_ATTR_UNSUPPORTED,
+ 	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
+ 	   /* Max ISA VGPRs */ 512,
+ 	   /* Generic code obj version */ 0,  /* non-generic */
+ 	   /* Architecture Family */ GFX9,
+ 	   /* Generic Name */ NONE
+ 	   )
+ 
+ GCN_DEVICE(gfx950, GFX950, 0x4f, ISA_CDNA3,
+ 	   /* XNACK default */ HSACO_ATTR_ANY,
+ 	   /* SRAM_ECC default */ HSACO_ATTR_ANY,
+ 	   /* WAVE64 mode */ HSACO_ATTR_UNSUPPORTED,
+ 	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
+ 	   /* Max ISA VGPRs */ 512,
+ 	   /* Generic code obj version */ 0,  /* non-generic */
+ 	   /* Architecture Family */ GFX9,
+ 	   /* Generic Name */ NONE
+ 	   )
+ 
  GCN_DEVICE(gfx9-generic, GFX9_GENERIC, 0x051, ISA_GCN5,
  	   /* XNACK default */ HSACO_ATTR_ANY,
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_UNSUPPORTED,
+ 	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
+ 	   /* Max ISA VGPRs */ 256,
+ 	   /* Generic code obj version */ 1,
+ 	   /* Architecture Family */ GFX9,
+ 	   /* Generic Name */ NONE
+ 	   )
+ 
+ GCN_DEVICE(gfx9-4-generic, GFX9_4_GENERIC, 0x05f, ISA_CDNA3,
+ 	   /* XNACK default */ HSACO_ATTR_ANY,
+ 	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
+ 	   /* WAVE64 mode */ HSACO_ATTR_UNSUPPORTED,
  	   /* CU mode */ HSACO_ATTR_UNSUPPORTED,
  	   /* Max ISA VGPRs */ 256,
  	   /* Generic code obj version */ 1,
diff -Nrcpad gcc-16-20250608/gcc/config/gcn/gcn-opts.h gcc-16-20250615/gcc/config/gcn/gcn-opts.h
*** gcc-16-20250608/gcc/config/gcn/gcn-opts.h	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/gcn/gcn-opts.h	Sun Jun 15 22:32:24 2025
*************** extern enum gcn_isa {
*** 33,39 ****
    ISA_RDNA2,
    ISA_RDNA3,
    ISA_CDNA1,
!   ISA_CDNA2
  } gcn_isa;
  
  #define TARGET_GCN5 (gcn_isa == ISA_GCN5)
--- 33,40 ----
    ISA_RDNA2,
    ISA_RDNA3,
    ISA_CDNA1,
!   ISA_CDNA2,
!   ISA_CDNA3
  } gcn_isa;
  
  #define TARGET_GCN5 (gcn_isa == ISA_GCN5)
*************** extern enum gcn_isa {
*** 41,46 ****
--- 42,49 ----
  #define TARGET_CDNA1_PLUS (gcn_isa >= ISA_CDNA1)
  #define TARGET_CDNA2 (gcn_isa == ISA_CDNA2)
  #define TARGET_CDNA2_PLUS (gcn_isa >= ISA_CDNA2)
+ #define TARGET_CDNA3 (gcn_isa == ISA_CDNA3)
+ #define TARGET_CDNA3_PLUS (gcn_isa >= ISA_CDNA3)
  #define TARGET_RDNA2 (gcn_isa == ISA_RDNA2)
  #define TARGET_RDNA2_PLUS (gcn_isa >= ISA_RDNA2 && gcn_isa < ISA_CDNA1)
  #define TARGET_RDNA3 (gcn_isa == ISA_RDNA3)
*************** enum hsaco_attr_type
*** 81,98 ****
  #define TARGET_DPP8 TARGET_RDNA2_PLUS
  /* Device requires CDNA1-style manually inserted wait states for AVGPRs.  */
  #define TARGET_AVGPR_CDNA1_NOPS TARGET_CDNA1
  /* The metadata on different devices need different granularity.  */
  #define TARGET_VGPR_GRANULARITY \
    (TARGET_RDNA3 ? 12 \
     : TARGET_RDNA2_PLUS || TARGET_CDNA2_PLUS ? 8 \
     : 4)
  /* This mostly affects the metadata.  */
! #define TARGET_ARCHITECTED_FLAT_SCRATCH TARGET_RDNA3
  /* Device has Sub-DWord Addressing instrucions.  */
  #define TARGET_SDWA (!TARGET_RDNA3)
  /* Different devices uses different cache control instructions.  */
! #define TARGET_WBINVL1_CACHE (!TARGET_RDNA2_PLUS)
  #define TARGET_GLn_CACHE TARGET_RDNA2_PLUS
  /* Some devices have TGSPLIT, which needs at least metadata.  */
  #define TARGET_TGSPLIT TARGET_CDNA2_PLUS
  
--- 84,105 ----
  #define TARGET_DPP8 TARGET_RDNA2_PLUS
  /* Device requires CDNA1-style manually inserted wait states for AVGPRs.  */
  #define TARGET_AVGPR_CDNA1_NOPS TARGET_CDNA1
+ /* Whether to use the 'globally coherent' (glc) or the 'scope' (sc0, sc1) flag
+    for scalar memory operations. The string starts on purpose with a space.  */
+ #define TARGET_GLC_NAME (TARGET_CDNA3 ? " sc0" : " glc")
  /* The metadata on different devices need different granularity.  */
  #define TARGET_VGPR_GRANULARITY \
    (TARGET_RDNA3 ? 12 \
     : TARGET_RDNA2_PLUS || TARGET_CDNA2_PLUS ? 8 \
     : 4)
  /* This mostly affects the metadata.  */
! #define TARGET_ARCHITECTED_FLAT_SCRATCH (TARGET_RDNA3 || TARGET_CDNA3)
  /* Device has Sub-DWord Addressing instrucions.  */
  #define TARGET_SDWA (!TARGET_RDNA3)
  /* Different devices uses different cache control instructions.  */
! #define TARGET_WBINVL1_CACHE (!TARGET_RDNA2_PLUS && !TARGET_CDNA3)
  #define TARGET_GLn_CACHE TARGET_RDNA2_PLUS
+ #define TARGET_TARGET_SC_CACHE TARGET_CDNA3
  /* Some devices have TGSPLIT, which needs at least metadata.  */
  #define TARGET_TGSPLIT TARGET_CDNA2_PLUS
  
diff -Nrcpad gcc-16-20250608/gcc/config/gcn/gcn-tables.opt gcc-16-20250615/gcc/config/gcn/gcn-tables.opt
*** gcc-16-20250608/gcc/config/gcn/gcn-tables.opt	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/gcn/gcn-tables.opt	Sun Jun 15 22:32:24 2025
*************** EnumValue
*** 49,57 ****
--- 49,66 ----
  Enum(gpu_type) String(gfx90c) Value(PROCESSOR_GFX90C)
  
  EnumValue
+ Enum(gpu_type) String(gfx942) Value(PROCESSOR_GFX942)
+ 
+ EnumValue
+ Enum(gpu_type) String(gfx950) Value(PROCESSOR_GFX950)
+ 
+ EnumValue
  Enum(gpu_type) String(gfx9-generic) Value(PROCESSOR_GFX9_GENERIC)
  
  EnumValue
+ Enum(gpu_type) String(gfx9-4-generic) Value(PROCESSOR_GFX9_4_GENERIC)
+ 
+ EnumValue
  Enum(gpu_type) String(gfx1030) Value(PROCESSOR_GFX1030)
  
  EnumValue
diff -Nrcpad gcc-16-20250608/gcc/config/gcn/gcn-valu.md gcc-16-20250615/gcc/config/gcn/gcn-valu.md
*** gcc-16-20250608/gcc/config/gcn/gcn-valu.md	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/gcn/gcn-valu.md	Sun Jun 15 22:32:24 2025
***************
*** 1161,1167 ****
         && (((unsigned HOST_WIDE_INT)INTVAL(operands[2]) + 0x1000) < 0x2000))"
    {
      addr_space_t as = INTVAL (operands[3]);
!     const char *glc = INTVAL (operands[4]) ? " glc" : "";
  
      static char buf[200];
      if (AS_FLAT_P (as))
--- 1161,1167 ----
         && (((unsigned HOST_WIDE_INT)INTVAL(operands[2]) + 0x1000) < 0x2000))"
    {
      addr_space_t as = INTVAL (operands[3]);
!     const char *glc = INTVAL (operands[4]) ? TARGET_GLC_NAME : "";
  
      static char buf[200];
      if (AS_FLAT_P (as))
***************
*** 1221,1227 ****
      && (((unsigned HOST_WIDE_INT)INTVAL(operands[3]) + 0x1000) < 0x2000))"
    {
      addr_space_t as = INTVAL (operands[4]);
!     const char *glc = INTVAL (operands[5]) ? " glc" : "";
  
      static char buf[200];
      if (AS_GLOBAL_P (as))
--- 1221,1227 ----
      && (((unsigned HOST_WIDE_INT)INTVAL(operands[3]) + 0x1000) < 0x2000))"
    {
      addr_space_t as = INTVAL (operands[4]);
!     const char *glc = INTVAL (operands[5]) ? TARGET_GLC_NAME : "";
  
      static char buf[200];
      if (AS_GLOBAL_P (as))
***************
*** 1288,1294 ****
  	&& (((unsigned HOST_WIDE_INT)INTVAL(operands[1]) + 0x1000) < 0x2000))"
    {
      addr_space_t as = INTVAL (operands[3]);
!     const char *glc = INTVAL (operands[4]) ? " glc" : "";
  
      static char buf[200];
      if (AS_FLAT_P (as))
--- 1288,1294 ----
  	&& (((unsigned HOST_WIDE_INT)INTVAL(operands[1]) + 0x1000) < 0x2000))"
    {
      addr_space_t as = INTVAL (operands[3]);
!     const char *glc = INTVAL (operands[4]) ? TARGET_GLC_NAME : "";
  
      static char buf[200];
      if (AS_FLAT_P (as))
***************
*** 1345,1351 ****
      && (((unsigned HOST_WIDE_INT)INTVAL(operands[2]) + 0x1000) < 0x2000))"
    {
      addr_space_t as = INTVAL (operands[4]);
!     const char *glc = INTVAL (operands[5]) ? " glc" : "";
  
      static char buf[200];
      if (AS_GLOBAL_P (as))
--- 1345,1351 ----
      && (((unsigned HOST_WIDE_INT)INTVAL(operands[2]) + 0x1000) < 0x2000))"
    {
      addr_space_t as = INTVAL (operands[4]);
!     const char *glc = INTVAL (operands[5]) ? TARGET_GLC_NAME : "";
  
      static char buf[200];
      if (AS_GLOBAL_P (as))
diff -Nrcpad gcc-16-20250608/gcc/config/gcn/gcn.cc gcc-16-20250615/gcc/config/gcn/gcn.cc
*** gcc-16-20250608/gcc/config/gcn/gcn.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/gcn/gcn.cc	Sun Jun 15 22:32:24 2025
*************** print_operand_address (FILE *file, rtx m
*** 7102,7108 ****
     E - print conditional code for v_cmp (eq_u64/ne_u64...)
     A - print address in formatting suitable for given address space.
     O - print offset:n for data share operations.
!    g - print "glc", if appropriate for given MEM
     L - print low-part of a multi-reg value
     H - print second part of a multi-reg value (high-part of 2-reg value)
     J - print third part of a multi-reg value
--- 7102,7109 ----
     E - print conditional code for v_cmp (eq_u64/ne_u64...)
     A - print address in formatting suitable for given address space.
     O - print offset:n for data share operations.
!    G - print "glc" (or for gfx94x: sc0) unconditionally [+ indep. of regnum]
!    g - print "glc" (or for gfx94x: sc0), if appropriate for given MEM
     L - print low-part of a multi-reg value
     H - print second part of a multi-reg value (high-part of 2-reg value)
     J - print third part of a multi-reg value
*************** print_operand (FILE *file, rtx x, int co
*** 7718,7727 ****
        else
  	output_addr_const (file, x);
        return;
      case 'g':
        gcc_assert (xcode == MEM);
        if (MEM_VOLATILE_P (x))
! 	fputs (" glc", file);
        return;
      default:
        output_operand_lossage ("invalid %%xn code");
--- 7719,7731 ----
        else
  	output_addr_const (file, x);
        return;
+     case 'G':
+       fputs (TARGET_GLC_NAME, file);
+       return;
      case 'g':
        gcc_assert (xcode == MEM);
        if (MEM_VOLATILE_P (x))
! 	fputs (TARGET_GLC_NAME, file);
        return;
      default:
        output_operand_lossage ("invalid %%xn code");
diff -Nrcpad gcc-16-20250608/gcc/config/gcn/gcn.h gcc-16-20250615/gcc/config/gcn/gcn.h
*** gcc-16-20250608/gcc/config/gcn/gcn.h	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/gcn/gcn.h	Sun Jun 15 22:32:24 2025
*************** extern const struct gcn_device_def {
*** 43,48 ****
--- 43,50 ----
  	builtin_define ("__CDNA1__");                                          \
        else if (TARGET_CDNA2)                                                   \
  	builtin_define ("__CDNA2__");                                          \
+       else if (TARGET_CDNA3)                                                   \
+ 	builtin_define ("__CDNA3__");                                          \
        else if (TARGET_RDNA2)                                                   \
  	builtin_define ("__RDNA2__");                                          \
        else if (TARGET_RDNA3)                                                   \
diff -Nrcpad gcc-16-20250608/gcc/config/gcn/gcn.md gcc-16-20250615/gcc/config/gcn/gcn.md
*** gcc-16-20250608/gcc/config/gcn/gcn.md	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/gcn/gcn.md	Sun Jun 15 22:32:24 2025
***************
*** 206,212 ****
  ;	 vdata: vgpr0-255
  ;	 srsrc: sgpr0-102
  ;	 soffset: sgpr0-102
! ;	 flags: offen, idxen, glc, lds, slc, tfe
  ;
  ; mtbuf - Typed memory buffer operation. Two words
  ;	 offset: 12-bit constant
--- 206,212 ----
  ;	 vdata: vgpr0-255
  ;	 srsrc: sgpr0-102
  ;	 soffset: sgpr0-102
! ;	 flags: offen, idxen, %G, lds, slc, tfe
  ;
  ; mtbuf - Typed memory buffer operation. Two words
  ;	 offset: 12-bit constant
***************
*** 216,225 ****
  ;	 vdata: vgpr0-255
  ;	 srsrc: sgpr0-102
  ;	 soffset: sgpr0-102
! ;	 flags: offen, idxen, glc, lds, slc, tfe
  ;
  ; flat - flat or global memory operations
! ;	 flags: glc, slc
  ;	 addr: vgpr0-255
  ;	 data: vgpr0-255
  ;	 vdst: vgpr0-255
--- 216,225 ----
  ;	 vdata: vgpr0-255
  ;	 srsrc: sgpr0-102
  ;	 soffset: sgpr0-102
! ;	 flags: offen, idxen, %G, lds, slc, tfe
  ;
  ; flat - flat or global memory operations
! ;	 flags: %G, slc
  ;	 addr: vgpr0-255
  ;	 data: vgpr0-255
  ;	 vdst: vgpr0-255
***************
*** 1964,1969 ****
--- 1964,1977 ----
    [(set_attr "type" "mult")
     (set_attr "length" "8")])
  
+ (define_insn "*memory_barrier"
+   [(set (match_operand:BLK 0)
+ 	(unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))]
+   "TARGET_TARGET_SC_CACHE"
+   "buffer_inv sc1"
+   [(set_attr "type" "mubuf")
+    (set_attr "length" "4")])
+ 
  ; FIXME: These patterns have been disabled as they do not seem to work
  ; reliably - they can cause hangs or incorrect results.
  ; TODO: flush caches according to memory model
***************
*** 1979,1987 ****
     (use (match_operand 3 "const_int_operand"))]
    "0 /* Disabled.  */"
    "@
!    s_atomic_<bare_mnemonic><X>\t%0, %1, %2 glc\;s_waitcnt\tlgkmcnt(0)
!    flat_atomic_<bare_mnemonic><X>\t%0, %1, %2 glc\;s_waitcnt\t0
!    global_atomic_<bare_mnemonic><X>\t%0, %A1, %2%O1 glc\;s_waitcnt\tvmcnt(0)"
    [(set_attr "type" "smem,flat,flat")
     (set_attr "length" "12")])
  
--- 1987,1995 ----
     (use (match_operand 3 "const_int_operand"))]
    "0 /* Disabled.  */"
    "@
!    s_atomic_<bare_mnemonic><X>\t%0, %1, %2 %G2\;s_waitcnt\tlgkmcnt(0)
!    flat_atomic_<bare_mnemonic><X>\t%0, %1, %2 %G2\;s_waitcnt\t0
!    global_atomic_<bare_mnemonic><X>\t%0, %A1, %2%O1 %G2\;s_waitcnt\tvmcnt(0)"
    [(set_attr "type" "smem,flat,flat")
     (set_attr "length" "12")])
  
***************
*** 2046,2054 ****
  	  UNSPECV_ATOMIC))]
    ""
    "@
!    s_atomic_cmpswap<X>\t%0, %1, %2 glc\;s_waitcnt\tlgkmcnt(0)
!    flat_atomic_cmpswap<X>\t%0, %1, %2 glc\;s_waitcnt\t0
!    global_atomic_cmpswap<X>\t%0, %A1, %2%O1 glc\;s_waitcnt\tvmcnt(0)"
    [(set_attr "type" "smem,flat,flat")
     (set_attr "length" "12")
     (set_attr "delayeduse" "*,yes,yes")])
--- 2054,2062 ----
  	  UNSPECV_ATOMIC))]
    ""
    "@
!    s_atomic_cmpswap<X>\t%0, %1, %2 %G2\;s_waitcnt\tlgkmcnt(0)
!    flat_atomic_cmpswap<X>\t%0, %1, %2 %G2\;s_waitcnt\t0
!    global_atomic_cmpswap<X>\t%0, %A1, %2%O1 %G2\;s_waitcnt\tvmcnt(0)"
    [(set_attr "type" "smem,flat,flat")
     (set_attr "length" "12")
     (set_attr "delayeduse" "*,yes,yes")])
***************
*** 2088,2102 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_load%o0\t%0, %A1 glc\;s_waitcnt\tlgkmcnt(0)";
  	  case 1:
  	    return (TARGET_RDNA2 /* Not GFX11.  */
! 		    ? "flat_load%o0\t%0, %A1%O1 glc dlc\;s_waitcnt\t0"
! 		    : "flat_load%o0\t%0, %A1%O1 glc\;s_waitcnt\t0");
  	  case 2:
  	    return (TARGET_RDNA2 /* Not GFX11.  */
! 		    ? "global_load%o0\t%0, %A1%O1 glc dlc\;s_waitcnt\tvmcnt(0)"
! 		    : "global_load%o0\t%0, %A1%O1 glc\;s_waitcnt\tvmcnt(0)");
  	  }
  	break;
        case MEMMODEL_CONSUME:
--- 2096,2110 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_load%o0\t%0, %A1 %G1\;s_waitcnt\tlgkmcnt(0)";
  	  case 1:
  	    return (TARGET_RDNA2 /* Not GFX11.  */
! 		    ? "flat_load%o0\t%0, %A1%O1 %G1 dlc\;s_waitcnt\t0"
! 		    : "flat_load%o0\t%0, %A1%O1 %G1\;s_waitcnt\t0");
  	  case 2:
  	    return (TARGET_RDNA2 /* Not GFX11.  */
! 		    ? "global_load%o0\t%0, %A1%O1 %G1 dlc\;s_waitcnt\tvmcnt(0)"
! 		    : "global_load%o0\t%0, %A1%O1 %G1\;s_waitcnt\tvmcnt(0)");
  	  }
  	break;
        case MEMMODEL_CONSUME:
***************
*** 2105,2129 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_load%o0\t%0, %A1 glc\;s_waitcnt\tlgkmcnt(0)\;"
  		   "s_dcache_wb_vol";
  	  case 1:
  	    return (TARGET_RDNA2
! 		    ? "flat_load%o0\t%0, %A1%O1 glc dlc\;s_waitcnt\t0\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_RDNA3
! 		    ? "flat_load%o0\t%0, %A1%O1 glc\;s_waitcnt\t0\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
! 		    : "flat_load%o0\t%0, %A1%O1 glc\;s_waitcnt\t0\;"
  		      "buffer_wbinvl1_vol");
  	  case 2:
  	    return (TARGET_RDNA2
! 		    ? "global_load%o0\t%0, %A1%O1 glc dlc\;s_waitcnt\tvmcnt(0)\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_RDNA3
! 		    ? "global_load%o0\t%0, %A1%O1 glc\;s_waitcnt\tvmcnt(0)\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
! 		    : "global_load%o0\t%0, %A1%O1 glc\;s_waitcnt\tvmcnt(0)\;"
  		      "buffer_wbinvl1_vol");
  	  }
  	break;
--- 2113,2143 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_load%o0\t%0, %A1 %G1\;s_waitcnt\tlgkmcnt(0)\;"
  		   "s_dcache_wb_vol";
  	  case 1:
  	    return (TARGET_RDNA2
! 		    ? "flat_load%o0\t%0, %A1%O1 %G1 dlc\;s_waitcnt\t0\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_RDNA3
! 		    ? "flat_load%o0\t%0, %A1%O1 %G1\;s_waitcnt\t0\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
! 		    : TARGET_TARGET_SC_CACHE
! 		    ? "flat_load%o0\t%0, %A1%O1 %G1\;s_waitcnt\t0\;"
! 		      "buffer_inv sc1"
! 		    : "flat_load%o0\t%0, %A1%O1 %G1\;s_waitcnt\t0\;"
  		      "buffer_wbinvl1_vol");
  	  case 2:
  	    return (TARGET_RDNA2
! 		    ? "global_load%o0\t%0, %A1%O1 %G1 dlc\;s_waitcnt\tvmcnt(0)\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_RDNA3
! 		    ? "global_load%o0\t%0, %A1%O1 %G1\;s_waitcnt\tvmcnt(0)\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
! 		    : TARGET_TARGET_SC_CACHE
! 		    ? "global_load%o0\t%0, %A1%O1 %G1\;s_waitcnt\tvmcnt(0)\;"
! 		      "buffer_inv sc1"
! 		    : "global_load%o0\t%0, %A1%O1 %G1\;s_waitcnt\tvmcnt(0)\;"
  		      "buffer_wbinvl1_vol");
  	  }
  	break;
***************
*** 2133,2157 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_load%o0\t%0, %A1 glc\;"
  		   "s_waitcnt\tlgkmcnt(0)\;s_dcache_inv_vol";
  	  case 1:
  	    return (TARGET_RDNA2
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_load%o0\t%0, %A1%O1 glc dlc\;"
  		      "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_RDNA3
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_load%o0\t%0, %A1%O1 glc\;"
  		      "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv"
! 		    : "buffer_wbinvl1_vol\;flat_load%o0\t%0, %A1%O1 glc\;"
  		      "s_waitcnt\t0\;buffer_wbinvl1_vol");
  	  case 2:
  	    return (TARGET_RDNA2
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;global_load%o0\t%0, %A1%O1 glc dlc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_RDNA3
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;global_load%o0\t%0, %A1%O1 glc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
! 		    : "buffer_wbinvl1_vol\;global_load%o0\t%0, %A1%O1 glc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol");
  	  }
  	break;
--- 2147,2177 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_load%o0\t%0, %A1 %G1\;"
  		   "s_waitcnt\tlgkmcnt(0)\;s_dcache_inv_vol";
  	  case 1:
  	    return (TARGET_RDNA2
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_load%o0\t%0, %A1%O1 %G1 dlc\;"
  		      "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_RDNA3
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_load%o0\t%0, %A1%O1 %G1\;"
  		      "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv"
! 		    : TARGET_TARGET_SC_CACHE
! 		    ? "buffer_inv sc1\;flat_load%o0\t%0, %A1%O1 %G1\;"
! 		      "s_waitcnt\t0\;buffer_inv sc1"
! 		    : "buffer_wbinvl1_vol\;flat_load%o0\t%0, %A1%O1 %G1\;"
  		      "s_waitcnt\t0\;buffer_wbinvl1_vol");
  	  case 2:
  	    return (TARGET_RDNA2
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;global_load%o0\t%0, %A1%O1 %G1 dlc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_RDNA3
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;global_load%o0\t%0, %A1%O1 %G1\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
! 		    : TARGET_TARGET_SC_CACHE
! 		    ? "buffer_inv sc1\;global_load%o0\t%0, %A1%O1 %G1\;"
! 		      "s_waitcnt\tvmcnt(0)\;buffer_inv sc1"
! 		    : "buffer_wbinvl1_vol\;global_load%o0\t%0, %A1%O1 %G1\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol");
  	  }
  	break;
***************
*** 2176,2186 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_store%o1\t%1, %A0 glc\;s_waitcnt\tlgkmcnt(0)";
  	  case 1:
! 	    return "flat_store%o1\t%A0, %1%O0 glc\;s_waitcnt\t0";
  	  case 2:
! 	    return "global_store%o1\t%A0, %1%O0 glc\;s_waitcnt\tvmcnt(0)";
  	  }
  	break;
        case MEMMODEL_RELEASE:
--- 2196,2206 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_store%o1\t%1, %A0 %G1\;s_waitcnt\tlgkmcnt(0)";
  	  case 1:
! 	    return "flat_store%o1\t%A0, %1%O0 %G1\;s_waitcnt\t0";
  	  case 2:
! 	    return "global_store%o1\t%A0, %1%O0 %G1\;s_waitcnt\tvmcnt(0)";
  	  }
  	break;
        case MEMMODEL_RELEASE:
***************
*** 2188,2205 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_store%o1\t%1, %A0 glc";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_store%o1\t%A0, %1%O0 glc"
  		    : TARGET_WBINVL1_CACHE
! 		    ? "buffer_wbinvl1_vol\;flat_store%o1\t%A0, %1%O0 glc"
  		    : "error: cache architectire unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;global_store%o1\t%A0, %1%O0 glc"
  		    : TARGET_WBINVL1_CACHE
! 		    ? "buffer_wbinvl1_vol\;global_store%o1\t%A0, %1%O0 glc"
  		    : "error: cache architecture unspecified");
  	  }
  	break;
--- 2208,2229 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_store%o1\t%1, %A0 %G1";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_store%o1\t%A0, %1%O0 %G1"
  		    : TARGET_WBINVL1_CACHE
! 		    ? "buffer_wbinvl1_vol\;flat_store%o1\t%A0, %1%O0 %G1"
! 		    : TARGET_TARGET_SC_CACHE
! 		    ? "buffer_inv sc1\;flat_store%o1\t%A0, %1%O0 %G1"
  		    : "error: cache architectire unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;global_store%o1\t%A0, %1%O0 %G1"
  		    : TARGET_WBINVL1_CACHE
! 		    ? "buffer_wbinvl1_vol\;global_store%o1\t%A0, %1%O0 %G1"
! 		    : TARGET_TARGET_SC_CACHE
! 		    ? "buffer_inv sc1\;global_store%o1\t%A0, %1%O0 %G1"
  		    : "error: cache architecture unspecified");
  	  }
  	break;
***************
*** 2209,2231 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_store%o1\t%1, %A0 glc\;"
  		   "s_waitcnt\tlgkmcnt(0)\;s_dcache_inv_vol";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_store%o1\t%A0, %1%O0 glc\;"
  		      "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
! 		    ? "buffer_wbinvl1_vol\;flat_store%o1\t%A0, %1%O0 glc\;"
  		      "s_waitcnt\t0\;buffer_wbinvl1_vol"
  		    : "error: cache architecture unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;global_store%o1\t%A0, %1%O0 glc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
! 		    ? "buffer_wbinvl1_vol\;global_store%o1\t%A0, %1%O0 glc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"
  		    : "error: cache architecture unspecified");
  	  }
  	break;
--- 2233,2261 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_store%o1\t%1, %A0 %G1\;"
  		   "s_waitcnt\tlgkmcnt(0)\;s_dcache_inv_vol";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_store%o1\t%A0, %1%O0 %G1\;"
  		      "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
! 		    ? "buffer_wbinvl1_vol\;flat_store%o1\t%A0, %1%O0 %G1\;"
  		      "s_waitcnt\t0\;buffer_wbinvl1_vol"
+ 		    : TARGET_TARGET_SC_CACHE
+ 		    ? "buffer_inv sc1\;flat_store%o1\t%A0, %1%O0 %G1\;"
+ 		      "s_waitcnt\t0\;buffer_inv sc1"
  		    : "error: cache architecture unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;global_store%o1\t%A0, %1%O0 %G1\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
! 		    ? "buffer_wbinvl1_vol\;global_store%o1\t%A0, %1%O0 %G1\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"
+ 		    : TARGET_TARGET_SC_CACHE
+ 		    ? "buffer_inv sc1\;global_store%o1\t%A0, %1%O0 %G1\;"
+ 		      "s_waitcnt\tvmcnt(0)\;buffer_inv sc1"
  		    : "error: cache architecture unspecified");
  	  }
  	break;
***************
*** 2252,2262 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_atomic_swap<X>\t%0, %1, %2 glc\;s_waitcnt\tlgkmcnt(0)";
  	  case 1:
! 	    return "flat_atomic_swap<X>\t%0, %1, %2 glc\;s_waitcnt\t0";
  	  case 2:
! 	    return "global_atomic_swap<X>\t%0, %A1, %2%O1 glc\;"
  		   "s_waitcnt\tvmcnt(0)";
  	  }
  	break;
--- 2282,2292 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_atomic_swap<X>\t%0, %1, %2 %G1\;s_waitcnt\tlgkmcnt(0)";
  	  case 1:
! 	    return "flat_atomic_swap<X>\t%0, %1, %2 %G1\;s_waitcnt\t0";
  	  case 2:
! 	    return "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
  		   "s_waitcnt\tvmcnt(0)";
  	  }
  	break;
***************
*** 2266,2288 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_atomic_swap<X>\t%0, %1, %2 glc\;s_waitcnt\tlgkmcnt(0)\;"
  		   "s_dcache_wb_vol\;s_dcache_inv_vol";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "flat_atomic_swap<X>\t%0, %1, %2 glc\;s_waitcnt\t0\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
!             ? "flat_atomic_swap<X>\t%0, %1, %2 glc\;s_waitcnt\t0\;"
  		      "buffer_wbinvl1_vol"
              : "error: cache architecture unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
! 		    ? "global_atomic_swap<X>\t%0, %A1, %2%O1 glc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
!             ? "global_atomic_swap<X>\t%0, %A1, %2%O1 glc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"
              : "error: cache architecture unspecified");
  	  }
  	break;
--- 2296,2324 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_atomic_swap<X>\t%0, %1, %2 %G1\;s_waitcnt\tlgkmcnt(0)\;"
  		   "s_dcache_wb_vol\;s_dcache_inv_vol";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "flat_atomic_swap<X>\t%0, %1, %2 %G1\;s_waitcnt\t0\;"
  		      "buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
!             ? "flat_atomic_swap<X>\t%0, %1, %2 %G1\;s_waitcnt\t0\;"
  		      "buffer_wbinvl1_vol"
+ 	    : TARGET_TARGET_SC_CACHE
+             ? "flat_atomic_swap<X>\t%0, %1, %2 %G1\;s_waitcnt\t0\;"
+ 		      "buffer_inv sc1"
              : "error: cache architecture unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
! 		    ? "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
!             ? "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"
+ 	    : TARGET_TARGET_SC_CACHE
+             ? "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
+ 		      "s_waitcnt\tvmcnt(0)\;buffer_inv sc1"
              : "error: cache architecture unspecified");
  	  }
  	break;
***************
*** 2291,2314 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_atomic_swap<X>\t%0, %1, %2 glc\;"
  		   "s_waitcnt\tlgkmcnt(0)";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_atomic_swap<X>\t%0, %1, %2 glc\;"
  		      "s_waitcnt\t0"
  		    : TARGET_WBINVL1_CACHE
!             ? "buffer_wbinvl1_vol\;flat_atomic_swap<X>\t%0, %1, %2 glc\;"
  		      "s_waitcnt\t0"
              : "error: cache architecture unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
  		    ? "buffer_gl1_inv\;buffer_gl0_inv\;"
! 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 glc\;"
  		      "s_waitcnt\tvmcnt(0)"
  		    : TARGET_WBINVL1_CACHE
              ? "buffer_wbinvl1_vol\;"
! 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 glc\;"
  		      "s_waitcnt\tvmcnt(0)"
              : "error: cache architecture unspecified");
  	  }
--- 2327,2357 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_atomic_swap<X>\t%0, %1, %2 %G1\;"
  		   "s_waitcnt\tlgkmcnt(0)";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_atomic_swap<X>\t%0, %1, %2 %G1\;"
  		      "s_waitcnt\t0"
  		    : TARGET_WBINVL1_CACHE
!             ? "buffer_wbinvl1_vol\;flat_atomic_swap<X>\t%0, %1, %2 %G1\;"
! 		      "s_waitcnt\t0"
! 	    : TARGET_TARGET_SC_CACHE
!             ? "buffer_inv sc1\;flat_atomic_swap<X>\t%0, %1, %2 %G1\;"
  		      "s_waitcnt\t0"
              : "error: cache architecture unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
  		    ? "buffer_gl1_inv\;buffer_gl0_inv\;"
! 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
  		      "s_waitcnt\tvmcnt(0)"
  		    : TARGET_WBINVL1_CACHE
              ? "buffer_wbinvl1_vol\;"
! 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
! 		      "s_waitcnt\tvmcnt(0)"
! 	    : TARGET_TARGET_SC_CACHE
!             ? "buffer_inv sc1\;"
! 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
  		      "s_waitcnt\tvmcnt(0)"
              : "error: cache architecture unspecified");
  	  }
***************
*** 2319,2343 ****
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_atomic_swap<X>\t%0, %1, %2 glc\;"
  		   "s_waitcnt\tlgkmcnt(0)\;s_dcache_inv_vol";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_atomic_swap<X>\t%0, %1, %2 glc\;"
  		      "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
!             ? "buffer_wbinvl1_vol\;flat_atomic_swap<X>\t%0, %1, %2 glc\;"
  		      "s_waitcnt\t0\;buffer_wbinvl1_vol"
              : "error: cache architecture unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
  		    ? "buffer_gl1_inv\;buffer_gl0_inv\;"
! 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 glc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
              ? "buffer_wbinvl1_vol\;"
! 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 glc\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"
              : "error: cache architecture unspecified");
  	  }
  	break;
--- 2362,2393 ----
  	switch (which_alternative)
  	  {
  	  case 0:
! 	    return "s_dcache_wb_vol\;s_atomic_swap<X>\t%0, %1, %2 %G1\;"
  		   "s_waitcnt\tlgkmcnt(0)\;s_dcache_inv_vol";
  	  case 1:
  	    return (TARGET_GLn_CACHE
! 		    ? "buffer_gl1_inv\;buffer_gl0_inv\;flat_atomic_swap<X>\t%0, %1, %2 %G1\;"
  		      "s_waitcnt\t0\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
!             ? "buffer_wbinvl1_vol\;flat_atomic_swap<X>\t%0, %1, %2 %G1\;"
  		      "s_waitcnt\t0\;buffer_wbinvl1_vol"
+ 	    : TARGET_TARGET_SC_CACHE
+             ? "buffer_inv sc1\;flat_atomic_swap<X>\t%0, %1, %2 %G1\;"
+ 		      "s_waitcnt\t0\;buffer_inv sc1"
              : "error: cache architecture unspecified");
  	  case 2:
  	    return (TARGET_GLn_CACHE
  		    ? "buffer_gl1_inv\;buffer_gl0_inv\;"
! 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_gl1_inv\;buffer_gl0_inv"
  		    : TARGET_WBINVL1_CACHE
              ? "buffer_wbinvl1_vol\;"
! 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
  		      "s_waitcnt\tvmcnt(0)\;buffer_wbinvl1_vol"
+ 	    : TARGET_TARGET_SC_CACHE
+             ? "buffer_inv sc1\;"
+ 		      "global_atomic_swap<X>\t%0, %A1, %2%O1 %G1\;"
+ 		      "s_waitcnt\tvmcnt(0)\;buffer_inv sc1"
              : "error: cache architecture unspecified");
  	  }
  	break;
diff -Nrcpad gcc-16-20250608/gcc/config/i386/i386-expand.cc gcc-16-20250615/gcc/config/i386/i386-expand.cc
*** gcc-16-20250608/gcc/config/i386/i386-expand.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/i386/i386-expand.cc	Sun Jun 15 22:32:24 2025
*************** ix86_expand_int_movcc (rtx operands[])
*** 3609,3615 ****
  	    negate_cc_compare_p = true;
  	}
  
!       diff = ct - cf;
        /*  Sign bit compares are better done using shifts than we do by using
  	  sbb.  */
        if (sign_bit_compare_p
--- 3609,3619 ----
  	    negate_cc_compare_p = true;
  	}
  
!       diff = (unsigned HOST_WIDE_INT) ct - cf;
!       /* Make sure we can represent the difference between the two values.  */
!       if ((diff > 0) != ((cf < 0) != (ct < 0) ? cf < 0 : cf < ct))
! 	return false;
! 
        /*  Sign bit compares are better done using shifts than we do by using
  	  sbb.  */
        if (sign_bit_compare_p
*************** ix86_expand_int_movcc (rtx operands[])
*** 3667,3673 ****
  		    PUT_CODE (compare_op,
  			      reverse_condition (GET_CODE (compare_op)));
  		}
! 	      diff = ct - cf;
  
  	      if (reg_overlap_mentioned_p (out, compare_op))
  		tmp = gen_reg_rtx (mode);
--- 3671,3682 ----
  		    PUT_CODE (compare_op,
  			      reverse_condition (GET_CODE (compare_op)));
  		}
! 
! 	      diff = (unsigned HOST_WIDE_INT) ct - cf;
! 	      /* Make sure we can represent the difference
! 		 between the two values.  */
! 	      if ((diff > 0) != ((cf < 0) != (ct < 0) ? cf < 0 : cf < ct))
! 		return false;
  
  	      if (reg_overlap_mentioned_p (out, compare_op))
  		tmp = gen_reg_rtx (mode);
*************** ix86_expand_int_movcc (rtx operands[])
*** 3685,3691 ****
  	      else
  		{
  		  std::swap (ct, cf);
! 		  diff = ct - cf;
  		}
  	      tmp = emit_store_flag (tmp, code, op0, op1, VOIDmode, 0, -1);
  	    }
--- 3694,3705 ----
  	      else
  		{
  		  std::swap (ct, cf);
! 
! 		  diff = (unsigned HOST_WIDE_INT) ct - cf;
! 		  /* Make sure we can represent the difference
! 		     between the two values.  */
! 		  if ((diff > 0) != ((cf < 0) != (ct < 0) ? cf < 0 : cf < ct))
! 		    return false;
  		}
  	      tmp = emit_store_flag (tmp, code, op0, op1, VOIDmode, 0, -1);
  	    }
*************** ix86_expand_int_movcc (rtx operands[])
*** 3752,3760 ****
  		  tmp = expand_simple_unop (mode, NOT, tmp, copy_rtx (tmp), 1);
  		}
  
  	      tmp = expand_simple_binop (mode, AND,
  					 copy_rtx (tmp),
! 					 gen_int_mode (cf - ct, mode),
  					 copy_rtx (tmp), 1, OPTAB_DIRECT);
  	      if (ct)
  		tmp = expand_simple_binop (mode, PLUS,
--- 3766,3780 ----
  		  tmp = expand_simple_unop (mode, NOT, tmp, copy_rtx (tmp), 1);
  		}
  
+ 	      HOST_WIDE_INT ival = (unsigned HOST_WIDE_INT) cf - ct;
+ 	      /* Make sure we can represent the difference
+ 		 between the two values.  */
+ 	      if ((ival > 0) != ((ct < 0) != (cf < 0) ? ct < 0 : ct < cf))
+ 		return false;
+ 
  	      tmp = expand_simple_binop (mode, AND,
  					 copy_rtx (tmp),
! 					 gen_int_mode (ival, mode),
  					 copy_rtx (tmp), 1, OPTAB_DIRECT);
  	      if (ct)
  		tmp = expand_simple_binop (mode, PLUS,
*************** ix86_expand_int_movcc (rtx operands[])
*** 3791,3797 ****
  	  if (new_code != UNKNOWN)
  	    {
  	      std::swap (ct, cf);
! 	      diff = -diff;
  	      code = new_code;
  	    }
  	}
--- 3811,3823 ----
  	  if (new_code != UNKNOWN)
  	    {
  	      std::swap (ct, cf);
! 
! 	      diff = (unsigned HOST_WIDE_INT) ct - cf;
! 	      /* Make sure we can represent the difference
! 		 between the two values.  */
! 	      if ((diff > 0) != ((cf < 0) != (ct < 0) ? cf < 0 : cf < ct))
! 		return false;
! 
  	      code = new_code;
  	    }
  	}
*************** ix86_expand_int_movcc (rtx operands[])
*** 3994,4001 ****
  					 copy_rtx (out), 1, OPTAB_DIRECT);
  	    }
  
  	  out = expand_simple_binop (mode, AND, copy_rtx (out),
! 				     gen_int_mode (cf - ct, mode),
  				     copy_rtx (out), 1, OPTAB_DIRECT);
  	  if (ct)
  	    out = expand_simple_binop (mode, PLUS, copy_rtx (out), GEN_INT (ct),
--- 4020,4033 ----
  					 copy_rtx (out), 1, OPTAB_DIRECT);
  	    }
  
+ 	  HOST_WIDE_INT ival = (unsigned HOST_WIDE_INT) cf - ct;
+ 	  /* Make sure we can represent the difference
+ 	     between the two values.  */
+ 	  if ((ival > 0) != ((ct < 0) != (cf < 0) ? ct < 0 : ct < cf))
+ 	    return false;
+ 
  	  out = expand_simple_binop (mode, AND, copy_rtx (out),
! 				     gen_int_mode (ival, mode),
  				     copy_rtx (out), 1, OPTAB_DIRECT);
  	  if (ct)
  	    out = expand_simple_binop (mode, PLUS, copy_rtx (out), GEN_INT (ct),
diff -Nrcpad gcc-16-20250608/gcc/config/i386/i386-features.cc gcc-16-20250615/gcc/config/i386/i386-features.cc
*** gcc-16-20250608/gcc/config/i386/i386-features.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/i386/i386-features.cc	Sun Jun 15 22:32:24 2025
*************** ix86_get_function_versions_dispatcher (v
*** 4284,4290 ****
    struct cgraph_node *node = NULL;
    struct cgraph_node *default_node = NULL;
    struct cgraph_function_version_info *node_v = NULL;
-   struct cgraph_function_version_info *first_v = NULL;
  
    tree dispatch_decl = NULL;
  
--- 4284,4289 ----
*************** ix86_get_function_versions_dispatcher (v
*** 4301,4337 ****
    if (node_v->dispatcher_resolver != NULL)
      return node_v->dispatcher_resolver;
  
!   /* Find the default version and make it the first node.  */
!   first_v = node_v;
!   /* Go to the beginning of the chain.  */
!   while (first_v->prev != NULL)
!     first_v = first_v->prev;
!   default_version_info = first_v;
!   while (default_version_info != NULL)
!     {
!       if (is_function_default_version
! 	    (default_version_info->this_node->decl))
! 	break;
!       default_version_info = default_version_info->next;
!     }
  
    /* If there is no default node, just return NULL.  */
!   if (default_version_info == NULL)
      return NULL;
  
-   /* Make default info the first node.  */
-   if (first_v != default_version_info)
-     {
-       default_version_info->prev->next = default_version_info->next;
-       if (default_version_info->next)
- 	default_version_info->next->prev = default_version_info->prev;
-       first_v->prev = default_version_info;
-       default_version_info->next = first_v;
-       default_version_info->prev = NULL;
-     }
- 
-   default_node = default_version_info->this_node;
- 
  #if defined (ASM_OUTPUT_TYPE_DIRECTIVE)
    if (targetm.has_ifunc_p ())
      {
--- 4300,4315 ----
    if (node_v->dispatcher_resolver != NULL)
      return node_v->dispatcher_resolver;
  
!   /* The default node is always the beginning of the chain.  */
!   default_version_info = node_v;
!   while (default_version_info->prev != NULL)
!     default_version_info = default_version_info->prev;
!   default_node = default_version_info->this_node;
  
    /* If there is no default node, just return NULL.  */
!   if (!is_function_default_version (default_node->decl))
      return NULL;
  
  #if defined (ASM_OUTPUT_TYPE_DIRECTIVE)
    if (targetm.has_ifunc_p ())
      {
diff -Nrcpad gcc-16-20250608/gcc/config/i386/i386.cc gcc-16-20250615/gcc/config/i386/i386.cc
*** gcc-16-20250608/gcc/config/i386/i386.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/i386/i386.cc	Sun Jun 15 22:32:24 2025
*************** ix86_rtx_costs (rtx x, machine_mode mode
*** 22938,22944 ****
  	}
        /* This is masked instruction, assume the same cost,
  	 as nonmasked variant.  */
!       else if (TARGET_AVX512F && register_operand (mask, GET_MODE (mask)))
  	{
  	  *total = rtx_cost (XEXP (x, 0), mode, outer_code, opno, speed)
  		   + rtx_cost (XEXP (x, 1), mode, outer_code, opno, speed);
--- 22938,22954 ----
  	}
        /* This is masked instruction, assume the same cost,
  	 as nonmasked variant.  */
!       else if (TARGET_AVX512F
! 	       && (register_operand (mask, GET_MODE (mask))
! 		   /* Redunduant clean up of high bits for kmask with VL=2/4
! 		      .i.e (vec_merge op0, op1, (and op3 15)).  */
! 		   || (GET_CODE (mask) == AND
! 		       && register_operand (XEXP (mask, 0), GET_MODE (mask))
! 		       && CONST_INT_P (XEXP (mask, 1))
! 		       && ((INTVAL (XEXP (mask, 1)) == 3
! 			    && GET_MODE_NUNITS (mode) == 2)
! 			   || (INTVAL (XEXP (mask, 1)) == 15
! 			       && GET_MODE_NUNITS (mode) == 4)))))
  	{
  	  *total = rtx_cost (XEXP (x, 0), mode, outer_code, opno, speed)
  		   + rtx_cost (XEXP (x, 1), mode, outer_code, opno, speed);
diff -Nrcpad gcc-16-20250608/gcc/config/i386/i386.md gcc-16-20250615/gcc/config/i386/i386.md
*** gcc-16-20250608/gcc/config/i386/i386.md	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/i386/i386.md	Sun Jun 15 22:32:24 2025
***************
*** 21512,21522 ****
     (set_attr "mode" "SI")])
  
  ; As bsr is undefined behavior on zero and for other input
! ; values it is in range 0 to 63, we can optimize away sign-extends.
! (define_insn_and_split "*bsr_rex64_2"
    [(set (match_operand:DI 0 "register_operand")
  	(xor:DI
! 	  (sign_extend:DI
  	    (minus:SI
  	      (const_int 63)
  	      (subreg:SI (clz:DI (match_operand:DI 1 "nonimmediate_operand"))
--- 21512,21523 ----
     (set_attr "mode" "SI")])
  
  ; As bsr is undefined behavior on zero and for other input
! ; values it is in range 0 to 63, we can optimize away sign-extends
! ; or zero-extends.
! (define_insn_and_split "*bsr_rex64<u>_2"
    [(set (match_operand:DI 0 "register_operand")
  	(xor:DI
! 	  (any_extend:DI
  	    (minus:SI
  	      (const_int 63)
  	      (subreg:SI (clz:DI (match_operand:DI 1 "nonimmediate_operand"))
***************
*** 21538,21546 ****
    operands[3] = lowpart_subreg (SImode, operands[2], DImode);
  })
  
! (define_insn_and_split "*bsr_2"
    [(set (match_operand:DI 0 "register_operand")
! 	(sign_extend:DI
  	  (xor:SI
  	    (minus:SI
  	      (const_int 31)
--- 21539,21547 ----
    operands[3] = lowpart_subreg (SImode, operands[2], DImode);
  })
  
! (define_insn_and_split "*bsr<u>_2"
    [(set (match_operand:DI 0 "register_operand")
! 	(any_extend:DI
  	  (xor:SI
  	    (minus:SI
  	      (const_int 31)
***************
*** 21617,21623 ****
  	(minus:DI
  	  (match_operand:DI 2 "const_int_operand")
  	  (xor:DI
! 	    (sign_extend:DI
  	      (minus:SI (const_int 63)
  			(subreg:SI
  			  (clz:DI (match_operand:DI 1 "nonimmediate_operand"))
--- 21618,21624 ----
  	(minus:DI
  	  (match_operand:DI 2 "const_int_operand")
  	  (xor:DI
! 	    (any_extend:DI
  	      (minus:SI (const_int 63)
  			(subreg:SI
  			  (clz:DI (match_operand:DI 1 "nonimmediate_operand"))
***************
*** 21647,21653 ****
    [(set (match_operand:DI 0 "register_operand")
  	(minus:DI
  	  (match_operand:DI 2 "const_int_operand")
! 	  (sign_extend:DI
  	    (xor:SI
  	      (minus:SI (const_int 31)
  			(clz:SI (match_operand:SI 1 "nonimmediate_operand")))
--- 21648,21654 ----
    [(set (match_operand:DI 0 "register_operand")
  	(minus:DI
  	  (match_operand:DI 2 "const_int_operand")
! 	  (any_extend:DI
  	    (xor:SI
  	      (minus:SI (const_int 31)
  			(clz:SI (match_operand:SI 1 "nonimmediate_operand")))
diff -Nrcpad gcc-16-20250608/gcc/config/i386/sse.md gcc-16-20250615/gcc/config/i386/sse.md
*** gcc-16-20250608/gcc/config/i386/sse.md	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/i386/sse.md	Sun Jun 15 22:32:24 2025
***************
*** 1589,1594 ****
--- 1589,1632 ----
    "&& 1"
    [(set (match_dup 0) (match_dup 1))])
  
+ (define_insn_and_split "*<avx512>_load<mode>mask_and15"
+   [(set (match_operand:V48_AVX512VL_4 0 "register_operand" "=v")
+ 	(vec_merge:V48_AVX512VL_4
+ 	 (unspec:V48_AVX512VL_4
+ 	  [(match_operand:V48_AVX512VL_4 1 "memory_operand" "m")]
+ 	  UNSPEC_MASKLOAD)
+ 	 (match_operand:V48_AVX512VL_4 2 "nonimm_or_0_operand" "0C")
+ 	 (and:QI
+ 	  (match_operand:QI 3 "register_operand" "Yk")
+ 	  (const_int 15))))]
+   "TARGET_AVX512F"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V48_AVX512VL_4
+ 	 (unspec:V48_AVX512VL_4 [(match_dup 1)] UNSPEC_MASKLOAD)
+ 	 (match_dup 2)
+ 	 (match_dup 3)))])
+ 
+ (define_insn_and_split "*<avx512>_load<mode>mask_and3"
+   [(set (match_operand:V8_AVX512VL_2 0 "register_operand" "=v")
+ 	(vec_merge:V8_AVX512VL_2
+ 	 (unspec:V8_AVX512VL_2
+ 	  [(match_operand:V8_AVX512VL_2 1 "memory_operand" "m")]
+ 	  UNSPEC_MASKLOAD)
+ 	 (match_operand:V8_AVX512VL_2 2 "nonimm_or_0_operand" "0C")
+ 	 (and:QI
+ 	  (match_operand:QI 3 "register_operand" "Yk")
+ 	  (const_int 3))))]
+   "TARGET_AVX512F"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_merge:V8_AVX512VL_2
+ 	 (unspec:V8_AVX512VL_2 [(match_dup 1)] UNSPEC_MASKLOAD)
+ 	 (match_dup 2)
+ 	 (match_dup 3)))])
+ 
  (define_expand "<avx512>_load<mode>_mask"
    [(set (match_operand:VI12_AVX512VL 0 "register_operand")
  	(vec_merge:VI12_AVX512VL
diff -Nrcpad gcc-16-20250608/gcc/config/i386/x86-tune-sched.cc gcc-16-20250615/gcc/config/i386/x86-tune-sched.cc
*** gcc-16-20250608/gcc/config/i386/x86-tune-sched.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/i386/x86-tune-sched.cc	Sun Jun 15 22:32:24 2025
*************** ix86_issue_rate (void)
*** 80,85 ****
--- 80,86 ----
      case PROCESSOR_ALDERLAKE:
      case PROCESSOR_YONGFENG:
      case PROCESSOR_SHIJIDADAO:
+     case PROCESSOR_SIERRAFOREST:
      case PROCESSOR_GENERIC:
      /* For znver5 decoder can handle 4 or 8 instructions per cycle,
         op cache 12 instruction/cycle, dispatch 8 instructions
*************** ix86_issue_rate (void)
*** 99,104 ****
--- 100,113 ----
        return 5;
  
      case PROCESSOR_SAPPHIRERAPIDS:
+     case PROCESSOR_GRANITERAPIDS:
+     case PROCESSOR_GRANITERAPIDS_D:
+     case PROCESSOR_DIAMONDRAPIDS:
+     case PROCESSOR_GRANDRIDGE:
+     case PROCESSOR_CLEARWATERFOREST:
+     case PROCESSOR_ARROWLAKE:
+     case PROCESSOR_ARROWLAKE_S:
+     case PROCESSOR_PANTHERLAKE:
        return 6;
  
      default:
diff -Nrcpad gcc-16-20250608/gcc/config/mcore/mcore.cc gcc-16-20250615/gcc/config/mcore/mcore.cc
*** gcc-16-20250608/gcc/config/mcore/mcore.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/mcore/mcore.cc	Sun Jun 15 22:32:24 2025
*************** mcore_mark_dllimport (tree decl)
*** 2984,2992 ****
    /* ??? At least I think that's why we do this.  */
    idp = get_identifier (newname);
  
!   newrtl = gen_rtx_MEM (Pmode,
! 		    gen_rtx_SYMBOL_REF (Pmode,
! 			     IDENTIFIER_POINTER (idp)));
    XEXP (DECL_RTL (decl), 0) = newrtl;
  }
  
--- 2984,2990 ----
    /* ??? At least I think that's why we do this.  */
    idp = get_identifier (newname);
  
!   newrtl = gen_rtx_SYMBOL_REF (Pmode, IDENTIFIER_POINTER (idp));
    XEXP (DECL_RTL (decl), 0) = newrtl;
  }
  
diff -Nrcpad gcc-16-20250608/gcc/config/or1k/or1k.cc gcc-16-20250615/gcc/config/or1k/or1k.cc
*** gcc-16-20250608/gcc/config/or1k/or1k.cc	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/or1k/or1k.cc	Sun Jun 15 22:32:24 2025
*************** static bool
*** 1408,1415 ****
  or1k_can_change_mode_class (machine_mode from, machine_mode to,
  			    reg_class_t rclass)
  {
    if (rclass == FLAG_REGS)
!     return from == to;
    return true;
  }
  
--- 1408,1416 ----
  or1k_can_change_mode_class (machine_mode from, machine_mode to,
  			    reg_class_t rclass)
  {
+   /* Allow cnoverting special flags to SI mode subregs.  */
    if (rclass == FLAG_REGS)
!     return from == to || (from == BImode && to == SImode);
    return true;
  }
  
diff -Nrcpad gcc-16-20250608/gcc/config/riscv/autovec-opt.md gcc-16-20250615/gcc/config/riscv/autovec-opt.md
*** gcc-16-20250608/gcc/config/riscv/autovec-opt.md	Sun Jun  8 22:32:16 2025
--- gcc-16-20250615/gcc/config/riscv/autovec-opt.md	Sun Jun 15 22:32:24 2025
***************
*** 1719,1727 ****
  ;; Include
  ;; - vfmadd.vf
  ;; - vfmsub.vf
  ;; =============================================================================
  
! 
  (define_insn_and_split "*<optab>_vf_<mode>"
    [(set (match_operand:V_VLSF 0 "register_operand"		"=vd")
      (plus_minus:V_VLSF
--- 1719,1729 ----
  ;; Include
  ;; - vfmadd.vf
  ;; - vfmsub.vf
+ ;; - vfnmadd.vf
+ ;; - vfnmsub.vf
  ;; =============================================================================
  
! ;; vfmadd.vf, vfmsub.vf
  (define_insn_and_split "*<optab>_vf_<mode>"
    [(set (match_operand:V_VLSF 0 "register_operand"		"=vd")
      (plus_minus:V_VLSF
***************
*** 1744,1752 ****
    [(set_attr "type" "vfmuladd")]
  )
  
! (define_insn_and_split "*<optab>_vf_<mode>"
    [(set (match_operand:V_VLSF 0 "register_operand"		"=vd")
!     (plus_minus:V_VLSF
  	    (match_operand:V_VLSF 3 "register_operand"		" vr")
  	    (mult:V_VLSF
  	      (vec_duplicate:V_VLSF
--- 1746,1755 ----
    [(set_attr "type" "vfmuladd")]
  )
  
! ;; vfnmsub.vf
! (define_insn_and_split "*vfnmsub_<mode>"
    [(set (match_operand:V_VLSF 0 "register_operand"		"=vd")
!     (minus:V_VLSF
  	    (match_operand:V_VLSF 3 "register_operand"		" vr")
  	    (mult:V_VLSF
  	      (vec_duplicate:V_VLSF
***************
*** 1759,1765 ****
    {
      rtx ops[] = {operands[0], operands[1], operands[2], operands[3],
  		 operands[2]};
!     riscv_vector::emit_vlmax_insn (code_for_pred_mul_scalar (<CODE>, <MODE>mode),
  				   riscv_vector::TERNARY_OP_FRM_DYN, ops);
      DONE;
    }
--- 1762,1792 ----
    {
      rtx ops[] = {operands[0], operands[1], operands[2], operands[3],
  		 operands[2]};
!     riscv_vector::emit_vlmax_insn (code_for_pred_mul_neg_scalar (PLUS, <MODE>mode),
! 				   riscv_vector::TERNARY_OP_FRM_DYN, ops);
!     DONE;
!   }
!   [(set_attr "type" "vfmuladd")]
! )
! 
! ;; vfnmadd.vf
! (define_insn_and_split "*vfnmadd_<mode>"
!   [(set (match_operand:V_VLSF 0 "register_operand"	"=vd")
!     (minus:V_VLSF
!       (mult:V_VLSF
! 	(neg:V_VLSF
! 	  (match_operand:V_VLSF 2 "register_operand"	"  0"))
! 	(vec_duplicate:V_VLSF
! 	  (match_operand:<VEL> 1 "register_operand"	"  f")))
!       (match_operand:V_VLSF 3 "register_operand"	" vr")))]
!   "TARGET_VECTOR && can_create_pseudo_p ()"
!   "#"
!   "&& 1"
!   [(const_int 0)]
!   {
!     rtx ops[] = {operands[0], operands[1], operands[2], operands[3],
! 		 operands[2]};
!     riscv_vector::emit_vlmax_insn (code_for_pred_mul_neg_scalar (MINUS, <MODE>mode),
  				   riscv_vector::TERNARY_OP_FRM_DYN, ops);
      DONE;
    }
diff -Nrcpad gcc-16-20250608/gcc/config/riscv/riscv-v.cc gcc-16-20250615/gcc/config/riscv/riscv-v.cc
*** gcc-16-20250608/gcc/config/riscv/riscv-v.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/config/riscv/riscv-v.cc	Sun Jun 15 22:32:24 2025
*************** expand_vx_binary_vec_dup_vec (rtx op_0,
*** 5537,5542 ****
--- 5537,5544 ----
      case IOR:
      case XOR:
      case MULT:
+     case SMAX:
+     case UMAX:
        icode = code_for_pred_scalar (code, mode);
        break;
      case MINUS:
*************** expand_vx_binary_vec_vec_dup (rtx op_0,
*** 5569,5574 ****
--- 5571,5580 ----
      case MULT:
      case DIV:
      case UDIV:
+     case MOD:
+     case UMOD:
+     case SMAX:
+     case UMAX:
        icode = code_for_pred_scalar (code, mode);
        break;
      default:
diff -Nrcpad gcc-16-20250608/gcc/config/riscv/riscv.cc gcc-16-20250615/gcc/config/riscv/riscv.cc
*** gcc-16-20250608/gcc/config/riscv/riscv.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/config/riscv/riscv.cc	Sun Jun 15 22:32:24 2025
*************** struct riscv_tune_param
*** 302,307 ****
--- 302,308 ----
    bool vector_unaligned_access;
    bool use_divmod_expansion;
    bool overlap_op_by_pieces;
+   bool speculative_sched_vsetvl;
    unsigned int fusible_ops;
    const struct cpu_vector_cost *vec_costs;
    const char *function_align;
*************** static const struct riscv_tune_param roc
*** 464,469 ****
--- 465,471 ----
    false,					/* vector_unaligned_access */
    false,					/* use_divmod_expansion */
    false,					/* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_NOTHING,                           /* fusible_ops */
    NULL,						/* vector cost */
    NULL,						/* function_align */
*************** static const struct riscv_tune_param sif
*** 486,491 ****
--- 488,494 ----
    false,					/* vector_unaligned_access */
    false,					/* use_divmod_expansion */
    false,					/* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_NOTHING,                           /* fusible_ops */
    NULL,						/* vector cost */
    NULL,						/* function_align */
*************** static const struct riscv_tune_param sif
*** 508,513 ****
--- 511,517 ----
    false,					/* vector_unaligned_access */
    false,					/* use_divmod_expansion */
    false,					/* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_LUI_ADDI | RISCV_FUSE_AUIPC_ADDI,  /* fusible_ops */
    &generic_vector_cost,				/* vector cost */
    NULL,						/* function_align */
*************** static const struct riscv_tune_param sif
*** 530,535 ****
--- 534,540 ----
    false,					/* vector_unaligned_access */
    false,					/* use_divmod_expansion */
    false,					/* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_LUI_ADDI | RISCV_FUSE_AUIPC_ADDI,  /* fusible_ops */
    &generic_vector_cost,				/* vector cost */
    NULL,						/* function_align */
*************** static const struct riscv_tune_param the
*** 552,557 ****
--- 557,563 ----
    false,					/* vector_unaligned_access */
    false,	/* use_divmod_expansion */
    false,					/* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_NOTHING,                           /* fusible_ops */
    NULL,						/* vector cost */
    NULL,						/* function_align */
*************** static const struct riscv_tune_param xia
*** 574,579 ****
--- 580,586 ----
    false,					/* vector_unaligned_access */
    false,					/* use_divmod_expansion */
    false,					/* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_ZEXTW | RISCV_FUSE_ZEXTH,          /* fusible_ops */
    NULL,						/* vector cost */
    NULL,						/* function_align */
*************** static const struct riscv_tune_param gen
*** 596,601 ****
--- 603,609 ----
    true,						/* vector_unaligned_access */
    false,					/* use_divmod_expansion */
    true,						/* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_NOTHING,                           /* fusible_ops */
    &generic_vector_cost,				/* vector cost */
    NULL,						/* function_align */
*************** static const struct riscv_tune_param tt_
*** 618,623 ****
--- 626,632 ----
    true,						/* vector_unaligned_access */
    true,						/* use_divmod_expansion */
    true,						/* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_NOTHING,                           /* fusible_ops */
    &generic_vector_cost,				/* vector cost */
    NULL,						/* function_align */
*************** static const struct riscv_tune_param opt
*** 640,645 ****
--- 649,655 ----
    false,					/* vector_unaligned_access */
    false,					/* use_divmod_expansion */
    false,					/* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_NOTHING,                           /* fusible_ops */
    NULL,						/* vector cost */
    NULL,						/* function_align */
*************** static const struct riscv_tune_param mip
*** 662,667 ****
--- 672,678 ----
    false,        /* vector_unaligned_access */
    true,         /* use_divmod_expansion */
    false,        /* overlap_op_by_pieces */
+   false,					/* speculative_sched_vsetvl */
    RISCV_FUSE_NOTHING,				/* fusible_ops */
    NULL,         /* vector cost */
    NULL,         /* function_align */
*************** get_vector_binary_rtx_cost (rtx x, int s
*** 3911,3916 ****
--- 3922,3929 ----
    if (GET_CODE (op_0) == VEC_DUPLICATE
        || GET_CODE (op_1) == VEC_DUPLICATE)
      return (scalar2vr_cost + 1) * COSTS_N_INSNS (1);
+   else if (GET_CODE (op_0) == NEG && GET_CODE (op_1) == VEC_DUPLICATE)
+     return (scalar2vr_cost + 1) * COSTS_N_INSNS (1);
    else
      return COSTS_N_INSNS (1);
  }
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 3949,3954 ****
--- 3962,3969 ----
  		    {
  		    case DIV:
  		    case UDIV:
+ 		    case MOD:
+ 		    case UMOD:
  		      *total = get_vector_binary_rtx_cost (op, scalar2vr_cost);
  		      break;
  		    default:
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 3963,3968 ****
--- 3978,3985 ----
  	      case IOR:
  	      case XOR:
  	      case MULT:
+ 	      case SMAX:
+ 	      case UMAX:
  		{
  		  rtx op;
  		  rtx op_0 = XEXP (x, 0);
*************** riscv_noce_conversion_profitable_p (rtx_
*** 4608,4623 ****
  
  	  rtx dest = SET_DEST (x);
  
! 	  /* Do something similar for the  moves that are likely to
  	     turn into NOP moves by the time the register allocator is
! 	     done.  These are also side effects of how our sCC expanders
! 	     work.  We'll want to check and update LAST_DEST here too.  */
! 	  if (last_dest
! 	      && REG_P (dest)
  	      && GET_MODE (dest) == SImode
  	      && SUBREG_P (src)
! 	      && SUBREG_PROMOTED_VAR_P (src)
! 	      && REGNO (SUBREG_REG (src)) == REGNO (last_dest))
  	    {
  	      riscv_if_info.original_cost += COSTS_N_INSNS (1);
  	      riscv_if_info.max_seq_cost += COSTS_N_INSNS (1);
--- 4625,4638 ----
  
  	  rtx dest = SET_DEST (x);
  
! 	  /* Do something similar for the moves that are likely to
  	     turn into NOP moves by the time the register allocator is
! 	     done.  We don't require src to be something set in this
! 	     sequence, just a promoted SUBREG.  */
! 	  if (REG_P (dest)
  	      && GET_MODE (dest) == SImode
  	      && SUBREG_P (src)
! 	      && SUBREG_PROMOTED_VAR_P (src))
  	    {
  	      riscv_if_info.original_cost += COSTS_N_INSNS (1);
  	      riscv_if_info.max_seq_cost += COSTS_N_INSNS (1);
*************** riscv_sched_adjust_cost (rtx_insn *, int
*** 10439,10444 ****
--- 10454,10480 ----
    return new_cost;
  }
  
+ /* Implement TARGET_SCHED_CAN_SPECULATE_INSN hook.  Return true if insn can
+    can be scheduled for speculative execution.  Reject vsetvl instructions to
+    prevent the scheduler from hoisting them out of basic blocks without
+    checking for data dependencies PR117974.  */
+ static bool
+ riscv_sched_can_speculate_insn (rtx_insn *insn)
+ {
+   /* Gate speculative scheduling of vsetvl instructions behind tune param.  */
+   if (tune_param->speculative_sched_vsetvl)
+     return true;
+ 
+   switch (get_attr_type (insn))
+     {
+       case TYPE_VSETVL:
+       case TYPE_VSETVL_PRE:
+ 	return false;
+       default:
+ 	return true;
+     }
+ }
+ 
  /* Auxiliary function to emit RISC-V ELF attribute. */
  static void
  riscv_emit_attribute ()
*************** riscv_get_function_versions_dispatcher (
*** 13919,13925 ****
    struct cgraph_node *node = NULL;
    struct cgraph_node *default_node = NULL;
    struct cgraph_function_version_info *node_v = NULL;
-   struct cgraph_function_version_info *first_v = NULL;
  
    tree dispatch_decl = NULL;
  
--- 13955,13960 ----
*************** riscv_get_function_versions_dispatcher (
*** 13936,13976 ****
    if (node_v->dispatcher_resolver != NULL)
      return node_v->dispatcher_resolver;
  
!   /* Find the default version and make it the first node.  */
!   first_v = node_v;
!   /* Go to the beginning of the chain.  */
!   while (first_v->prev != NULL)
!     first_v = first_v->prev;
!   default_version_info = first_v;
! 
!   while (default_version_info != NULL)
!     {
!       struct riscv_feature_bits res;
!       int priority; /* Unused.  */
!       parse_features_for_version (default_version_info->this_node->decl,
! 				  res, priority);
!       if (res.length == 0)
! 	break;
!       default_version_info = default_version_info->next;
!     }
  
    /* If there is no default node, just return NULL.  */
!   if (default_version_info == NULL)
      return NULL;
  
-   /* Make default info the first node.  */
-   if (first_v != default_version_info)
-     {
-       default_version_info->prev->next = default_version_info->next;
-       if (default_version_info->next)
- 	default_version_info->next->prev = default_version_info->prev;
-       first_v->prev = default_version_info;
-       default_version_info->next = first_v;
-       default_version_info->prev = NULL;
-     }
- 
-   default_node = default_version_info->this_node;
- 
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
--- 13971,13986 ----
    if (node_v->dispatcher_resolver != NULL)
      return node_v->dispatcher_resolver;
  
!   /* The default node is always the beginning of the chain.  */
!   default_version_info = node_v;
!   while (default_version_info->prev)
!     default_version_info = default_version_info->prev;
!   default_node = default_version_info->this_node;
  
    /* If there is no default node, just return NULL.  */
!   if (!is_function_default_version (default_node->decl))
      return NULL;
  
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
*************** synthesize_and (rtx operands[3])
*** 14743,14748 ****
--- 14753,14761 ----
  #undef  TARGET_SCHED_ADJUST_COST
  #define TARGET_SCHED_ADJUST_COST riscv_sched_adjust_cost
  
+ #undef TARGET_SCHED_CAN_SPECULATE_INSN
+ #define TARGET_SCHED_CAN_SPECULATE_INSN riscv_sched_can_speculate_insn
+ 
  #undef TARGET_FUNCTION_OK_FOR_SIBCALL
  #define TARGET_FUNCTION_OK_FOR_SIBCALL riscv_function_ok_for_sibcall
  
diff -Nrcpad gcc-16-20250608/gcc/config/riscv/riscv.md gcc-16-20250615/gcc/config/riscv/riscv.md
*** gcc-16-20250608/gcc/config/riscv/riscv.md	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/config/riscv/riscv.md	Sun Jun 15 22:32:24 2025
***************
*** 884,890 ****
  ;; Where C1 is not a LUI operand, but ~C1 is a LUI operand
  
  (define_insn_and_split "*lui_constraint<X:mode>_and_to_or"
! 	[(set (match_operand:X 0 "register_operand" "=r")
  	(plus:X (and:X (match_operand:X 1 "register_operand" "r")
  		       (match_operand 2 "const_int_operand"))
  		(match_operand 3 "const_int_operand")))
--- 884,890 ----
  ;; Where C1 is not a LUI operand, but ~C1 is a LUI operand
  
  (define_insn_and_split "*lui_constraint<X:mode>_and_to_or"
!   [(set (match_operand:X 0 "register_operand" "=r")
  	(plus:X (and:X (match_operand:X 1 "register_operand" "r")
  		       (match_operand 2 "const_int_operand"))
  		(match_operand 3 "const_int_operand")))
***************
*** 898,910 ****
  	<= riscv_const_insns (operands[3], false)))"
    "#"
    "&& reload_completed"
!   [(set (match_dup 4) (match_dup 5))
!    (set (match_dup 0) (ior:X (match_dup 1) (match_dup 4)))
!    (set (match_dup 4) (match_dup 6))
!    (set (match_dup 0) (minus:X (match_dup 0) (match_dup 4)))]
    {
      operands[5] = GEN_INT (~INTVAL (operands[2]));
      operands[6] = GEN_INT ((~INTVAL (operands[2])) | (-INTVAL (operands[3])));
    }
    [(set_attr "type" "arith")])
  
--- 898,918 ----
  	<= riscv_const_insns (operands[3], false)))"
    "#"
    "&& reload_completed"
!   [(const_int 0)]
    {
      operands[5] = GEN_INT (~INTVAL (operands[2]));
      operands[6] = GEN_INT ((~INTVAL (operands[2])) | (-INTVAL (operands[3])));
+ 
+     /* This is always a LUI operand, so it's safe to just emit.  */
+     emit_move_insn (operands[4], operands[5]);
+ 
+     rtx x = gen_rtx_IOR (word_mode, operands[1], operands[4]);
+     emit_move_insn (operands[0], x);
+ 
+     /* This may require multiple steps to synthesize.  */
+     riscv_emit_move (operands[4], operands[6]);
+     x = gen_rtx_MINUS (word_mode, operands[0], operands[4]);
+     emit_move_insn (operands[0], x);
    }
    [(set_attr "type" "arith")])
  
diff -Nrcpad gcc-16-20250608/gcc/config/riscv/vector-iterators.md gcc-16-20250615/gcc/config/riscv/vector-iterators.md
*** gcc-16-20250608/gcc/config/riscv/vector-iterators.md	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/config/riscv/vector-iterators.md	Sun Jun 15 22:32:24 2025
***************
*** 4042,4052 ****
  ])
  
  (define_code_iterator any_int_binop_no_shift_v_vdup [
!   plus minus and ior xor mult div udiv
  ])
  
  (define_code_iterator any_int_binop_no_shift_vdup_v [
!   plus minus and ior xor mult
  ])
  
  (define_code_iterator any_int_unop [neg not])
--- 4042,4052 ----
  ])
  
  (define_code_iterator any_int_binop_no_shift_v_vdup [
!   plus minus and ior xor mult div udiv mod umod smax umax
  ])
  
  (define_code_iterator any_int_binop_no_shift_vdup_v [
!   plus minus and ior xor mult smax umax
  ])
  
  (define_code_iterator any_int_unop [neg not])
diff -Nrcpad gcc-16-20250608/gcc/config/rs6000/rs6000.cc gcc-16-20250615/gcc/config/rs6000/rs6000.cc
*** gcc-16-20250608/gcc/config/rs6000/rs6000.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/config/rs6000/rs6000.cc	Sun Jun 15 22:32:24 2025
*************** rs6000_get_function_versions_dispatcher
*** 25312,25318 ****
    struct cgraph_node *node = NULL;
    struct cgraph_node *default_node = NULL;
    struct cgraph_function_version_info *node_v = NULL;
-   struct cgraph_function_version_info *first_v = NULL;
  
    tree dispatch_decl = NULL;
  
--- 25312,25317 ----
*************** rs6000_get_function_versions_dispatcher
*** 25332,25369 ****
    if (node_v->dispatcher_resolver != NULL)
      return node_v->dispatcher_resolver;
  
!   /* Find the default version and make it the first node.  */
!   first_v = node_v;
!   /* Go to the beginning of the chain.  */
!   while (first_v->prev != NULL)
!     first_v = first_v->prev;
! 
!   default_version_info = first_v;
!   while (default_version_info != NULL)
!     {
!       const tree decl2 = default_version_info->this_node->decl;
!       if (is_function_default_version (decl2))
!         break;
!       default_version_info = default_version_info->next;
!     }
  
    /* If there is no default node, just return NULL.  */
!   if (default_version_info == NULL)
      return NULL;
  
-   /* Make default info the first node.  */
-   if (first_v != default_version_info)
-     {
-       default_version_info->prev->next = default_version_info->next;
-       if (default_version_info->next)
-         default_version_info->next->prev = default_version_info->prev;
-       first_v->prev = default_version_info;
-       default_version_info->next = first_v;
-       default_version_info->prev = NULL;
-     }
- 
-   default_node = default_version_info->this_node;
- 
  #ifndef TARGET_LIBC_PROVIDES_HWCAP_IN_TCB
    error_at (DECL_SOURCE_LOCATION (default_node->decl),
  	    "%<target_clones%> attribute needs GLIBC (2.23 and newer) that "
--- 25331,25346 ----
    if (node_v->dispatcher_resolver != NULL)
      return node_v->dispatcher_resolver;
  
!   /* The default node is always the beginning of the chain.  */
!   default_version_info = node_v;
!   while (default_version_info->prev)
!     default_version_info = default_version_info->prev;
!   default_node = default_version_info->this_node;
  
    /* If there is no default node, just return NULL.  */
!   if (!is_function_default_version (default_node->decl))
      return NULL;
  
  #ifndef TARGET_LIBC_PROVIDES_HWCAP_IN_TCB
    error_at (DECL_SOURCE_LOCATION (default_node->decl),
  	    "%<target_clones%> attribute needs GLIBC (2.23 and newer) that "
diff -Nrcpad gcc-16-20250608/gcc/cp/ChangeLog gcc-16-20250615/gcc/cp/ChangeLog
*** gcc-16-20250608/gcc/cp/ChangeLog	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/cp/ChangeLog	Sun Jun 15 22:32:24 2025
***************
*** 1,3 ****
--- 1,49 ----
+ 2025-06-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (build_co_await): Identify diagnostics
+ 	for initial and final await expressions.
+ 	(cp_coroutine_transform::wrap_original_function_body): Do
+ 	not handle initial and final await expressions here ...
+ 	(cp_coroutine_transform::apply_transforms): ... handle them
+ 	here and avoid duplicate diagnostics.
+ 	* coroutines.h: Declare inital and final await expressions
+ 	in the transform class.  Save the function closing brace
+ 	location.
+ 
+ 2025-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/116775
+ 	* coroutines.cc (analyze_expression_awaits): When we see
+ 	a builtin_constant_p call, and that contains one or more
+ 	await expressions, then replace the call with its result
+ 	and discard the unevaluated operand.
+ 
+ 2025-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (build_actor_fn): Set can_throw.
+ 
+ 2025-06-12  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* decl.cc (maybe_version_functions): Change record_function_versions
+ 	call to add_function_version.
+ 
+ 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* cp-tree.h (union lang_type::maybe_objc_info): New type.
+ 	(struct lang_type): Use union maybe_objc_info info member
+ 	instead of tree objc_info.
+ 	* lex.cc (copy_lang_type): Use sizeof (struct lang_type)
+ 	just for ObjC++ and otherwise offsetof (struct lang_type, info).
+ 	(maybe_add_lang_type_raw): Likewise.
+ 	(cxx_make_type): Formatting fix.
+ 
+ 2025-06-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/120495
+ 	PR c++/115605
+ 	* pt.cc (lookup_template_class): Honour provided namespace contexts
+ 	when looking up class templates.
+ 
  2025-06-06  Jason Merrill  <jason@redhat.com>
  
  	PR c++/120555
diff -Nrcpad gcc-16-20250608/gcc/cp/coroutines.cc gcc-16-20250615/gcc/cp/coroutines.cc
*** gcc-16-20250608/gcc/cp/coroutines.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/cp/coroutines.cc	Sun Jun 15 22:32:24 2025
*************** build_co_await (location_t loc, tree a,
*** 1277,1284 ****
  
    if (TREE_CODE (o_type) != RECORD_TYPE)
      {
!       error_at (loc, "awaitable type %qT is not a structure",
! 		o_type);
        return error_mark_node;
      }
  
--- 1277,1290 ----
  
    if (TREE_CODE (o_type) != RECORD_TYPE)
      {
!       if (suspend_kind == FINAL_SUSPEND_POINT)
! 	error_at (loc, "%qs awaitable type %qT is not a structure",
! 		  "final_suspend()", o_type);
!       else if (suspend_kind == INITIAL_SUSPEND_POINT)
! 	error_at (loc, "%qs awaitable type %qT is not a structure",
! 		  "initial_suspend()", o_type);
!       else
! 	error_at (loc, "awaitable type %qT is not a structure", o_type);
        return error_mark_node;
      }
  
*************** build_actor_fn (location_t loc, tree cor
*** 2406,2411 ****
--- 2412,2422 ----
    bool spf = start_preparsed_function (actor, NULL_TREE, SF_PRE_PARSED);
    gcc_checking_assert (spf);
    gcc_checking_assert (cfun && current_function_decl && TREE_STATIC (actor));
+   if (flag_exceptions)
+     /* We, unconditionally, add a try/catch and rethrow.
+        TODO: Determine if the combination of initial suspend and the original
+        body cannot throw, and elide these additions.  */
+     cp_function_chain->can_throw = true;
    tree stmt = begin_function_body ();
  
    tree actor_bind = build3 (BIND_EXPR, void_type_node, NULL, NULL, NULL);
*************** maybe_promote_temps (tree *stmt, void *d
*** 3420,3426 ****
    return cp_walk_tree (stmt, register_awaits, d, &visited);
  }
  
! /* Lightweight callback to determine two key factors:
     1) If the statement/expression contains any await expressions.
     2) If the statement/expression potentially requires a re-write to handle
        TRUTH_{AND,OR}IF_EXPRs since, in most cases, they will need expansion
--- 3431,3438 ----
    return cp_walk_tree (stmt, register_awaits, d, &visited);
  }
  
! /* Relatively lightweight callback to do initial assessment:
!    0) Rewrite some await expressions.
     1) If the statement/expression contains any await expressions.
     2) If the statement/expression potentially requires a re-write to handle
        TRUTH_{AND,OR}IF_EXPRs since, in most cases, they will need expansion
*************** analyze_expression_awaits (tree *stmt, i
*** 3437,3442 ****
--- 3449,3474 ----
    switch (TREE_CODE (*stmt))
      {
        default: return NULL_TREE;
+       case CALL_EXPR:
+ 	{
+ 	  tree fn = cp_get_callee_fndecl_nofold (*stmt);
+ 	  /* Special-cases where we want to re-write await expressions to some
+ 	     other value before they are otherwise processed.  */
+ 	  if (fn && DECL_IS_BUILTIN_CONSTANT_P (fn))
+ 	    {
+ 	      gcc_checking_assert (call_expr_nargs (*stmt) == 1);
+ 	      tree expr = CALL_EXPR_ARG (*stmt, 0);
+ 	      if (cp_walk_tree (&expr, find_any_await, nullptr, NULL))
+ 		{
+ 		  if (TREE_CONSTANT (maybe_constant_value (expr)))
+ 		    *stmt = integer_one_node;
+ 		  else
+ 		    *stmt = integer_zero_node;
+ 		}
+ 	      *do_subtree = 0;
+ 	    }
+ 	}
+ 	break;
        case CO_YIELD_EXPR:
  	/* co_yield is syntactic sugar, re-write it to co_await.  */
  	*stmt = TREE_OPERAND (*stmt, 1);
*************** cp_coroutine_transform::wrap_original_fu
*** 4330,4336 ****
    /* Wrap the function body in a try {} catch (...) {} block, if exceptions
       are enabled.  */
    tree var_list = NULL_TREE;
-   tree initial_await = build_init_or_final_await (fn_start, false);
  
    /* [stmt.return.coroutine] / 3
       If p.return_void() is a valid expression, flowing off the end of a
--- 4362,4367 ----
*************** cp_coroutine_transform::wrap_original_fu
*** 4524,4530 ****
    zero_resume = build2_loc (loc, MODIFY_EXPR, act_des_fn_ptr_type,
  			    resume_fn_ptr, zero_resume);
    finish_expr_stmt (zero_resume);
!   finish_expr_stmt (build_init_or_final_await (fn_start, true));
    BIND_EXPR_BODY (update_body) = pop_stmt_list (BIND_EXPR_BODY (update_body));
    BIND_EXPR_VARS (update_body) = nreverse (var_list);
    BLOCK_VARS (top_block) = BIND_EXPR_VARS (update_body);
--- 4555,4562 ----
    zero_resume = build2_loc (loc, MODIFY_EXPR, act_des_fn_ptr_type,
  			    resume_fn_ptr, zero_resume);
    finish_expr_stmt (zero_resume);
!   finish_expr_stmt (final_await);
! 
    BIND_EXPR_BODY (update_body) = pop_stmt_list (BIND_EXPR_BODY (update_body));
    BIND_EXPR_VARS (update_body) = nreverse (var_list);
    BLOCK_VARS (top_block) = BIND_EXPR_VARS (update_body);
*************** cp_coroutine_transform::cp_coroutine_tra
*** 5181,5189 ****
        }
  
      /* We don't have the locus of the opening brace - it's filled in later (and
!        there doesn't really seem to be any easy way to get at it).
!        The closing brace is assumed to be input_location.  */
      fn_start = DECL_SOURCE_LOCATION (orig_fn_decl);
  
      /* Build types we need.  */
      tree fr_name = get_fn_local_identifier (orig_fn_decl, "Frame");
--- 5213,5222 ----
        }
  
      /* We don't have the locus of the opening brace - it's filled in later (and
!        there doesn't really seem to be any easy way to get at it).  */
      fn_start = DECL_SOURCE_LOCATION (orig_fn_decl);
+     /* The closing brace is assumed to be input_location.  */
+     fn_end = input_location;
  
      /* Build types we need.  */
      tree fr_name = get_fn_local_identifier (orig_fn_decl, "Frame");
*************** cp_coroutine_transform::apply_transforms
*** 5262,5267 ****
--- 5295,5310 ----
      = coro_build_actor_or_destroy_function (orig_fn_decl, act_des_fn_type,
  					    frame_ptr_type, false);
  
+   /* Avoid repeating diagnostics about promise or awaiter fails.  */
+   if (!seen_error ())
+     {
+       iloc_sentinel stable_input_loc (fn_start);
+       initial_await = build_init_or_final_await (fn_start, false);
+       input_location = fn_end;
+       if (initial_await && initial_await != error_mark_node)
+ 	final_await = build_init_or_final_await (fn_end, true);
+     }
+ 
    /* Transform the function body as per [dcl.fct.def.coroutine] / 5.  */
    wrap_original_function_body ();
  
diff -Nrcpad gcc-16-20250608/gcc/cp/coroutines.h gcc-16-20250615/gcc/cp/coroutines.h
*** gcc-16-20250608/gcc/cp/coroutines.h	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/cp/coroutines.h	Sun Jun 15 22:32:24 2025
*************** private:
*** 102,107 ****
--- 102,108 ----
    tree orig_fn_decl;		 /* The original function decl.  */
    tree orig_fn_body = NULL_TREE; /* The original function body.  */
    location_t fn_start = UNKNOWN_LOCATION;
+   location_t fn_end = UNKNOWN_LOCATION;
    tree resumer = error_mark_node;
    tree destroyer = error_mark_node;
    tree coroutine_body = NULL_TREE;
*************** private:
*** 126,131 ****
--- 127,135 ----
    bool inline_p = false;
    bool valid_coroutine = false;
  
+   tree initial_await = error_mark_node;
+   tree final_await = error_mark_node;
+ 
    void analyze_fn_parms ();
    void wrap_original_function_body ();
    bool build_ramp_function ();
diff -Nrcpad gcc-16-20250608/gcc/cp/cp-tree.h gcc-16-20250615/gcc/cp/cp-tree.h
*** gcc-16-20250608/gcc/cp/cp-tree.h	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/cp/cp-tree.h	Sun Jun 15 22:32:24 2025
*************** struct GTY(()) lang_type {
*** 2514,2525 ****
    tree key_method;
    tree decl_list;
    tree befriending_classes;
-   /* In a RECORD_TYPE, information specific to Objective-C++, such
-      as a list of adopted protocols or a pointer to a corresponding
-      @interface.  See objc/objc-act.h for details.  */
-   tree objc_info;
    /* FIXME reuse another field?  */
    tree lambda_expr;
  };
  
  /* We used to have a variant type for lang_type.  Keep the name of the
--- 2514,2529 ----
    tree key_method;
    tree decl_list;
    tree befriending_classes;
    /* FIXME reuse another field?  */
    tree lambda_expr;
+   union maybe_objc_info {
+     /* If not c_dialect_objc, this part is not even allocated.  */
+     char GTY((tag ("0"))) non_objc;
+     /* In a RECORD_TYPE, information specific to Objective-C, such
+        as a list of adopted protocols or a pointer to a corresponding
+        @interface.  See objc/objc-act.h for details.  */
+     tree GTY((tag ("1"))) objc_info;
+   } GTY ((desc ("c_dialect_objc ()"))) info;
  };
  
  /* We used to have a variant type for lang_type.  Keep the name of the
diff -Nrcpad gcc-16-20250608/gcc/cp/decl.cc gcc-16-20250615/gcc/cp/decl.cc
*** gcc-16-20250608/gcc/cp/decl.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/cp/decl.cc	Sun Jun 15 22:32:24 2025
*************** maybe_version_functions (tree newdecl, t
*** 1311,1317 ****
      }
  
    if (record)
!     cgraph_node::record_function_versions (olddecl, newdecl);
  
    return true;
  }
--- 1311,1325 ----
      }
  
    if (record)
!     {
!       /* Add the new version to the function version structure.  */
!       cgraph_node *fn_node = cgraph_node::get_create (olddecl);
!       cgraph_function_version_info *fn_v = fn_node->function_version ();
!       if (!fn_v)
! 	fn_v = fn_node->insert_new_function_version ();
! 
!       cgraph_node::add_function_version (fn_v, newdecl);
!     }
  
    return true;
  }
diff -Nrcpad gcc-16-20250608/gcc/cp/lex.cc gcc-16-20250615/gcc/cp/lex.cc
*** gcc-16-20250608/gcc/cp/lex.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/cp/lex.cc	Sun Jun 15 22:32:24 2025
*************** copy_lang_type (tree node)
*** 1082,1096 ****
    if (! TYPE_LANG_SPECIFIC (node))
      return;
  
!   auto *lt = (struct lang_type *) ggc_internal_alloc (sizeof (struct lang_type));
  
!   memcpy (lt, TYPE_LANG_SPECIFIC (node), (sizeof (struct lang_type)));
    TYPE_LANG_SPECIFIC (node) = lt;
  
    if (GATHER_STATISTICS)
      {
        tree_node_counts[(int)lang_type] += 1;
!       tree_node_sizes[(int)lang_type] += sizeof (struct lang_type);
      }
  }
  
--- 1082,1098 ----
    if (! TYPE_LANG_SPECIFIC (node))
      return;
  
!   size_t sz = (c_dialect_objc () ? sizeof (struct lang_type)
! 	       : offsetof (struct lang_type, info));
!   auto *lt = (struct lang_type *) ggc_internal_alloc (sz);
  
!   memcpy (lt, TYPE_LANG_SPECIFIC (node), sz);
    TYPE_LANG_SPECIFIC (node) = lt;
  
    if (GATHER_STATISTICS)
      {
        tree_node_counts[(int)lang_type] += 1;
!       tree_node_sizes[(int)lang_type] += sz;
      }
  }
  
*************** maybe_add_lang_type_raw (tree t)
*** 1114,1127 ****
    if (!RECORD_OR_UNION_CODE_P (TREE_CODE (t)))
      return false;
  
!   auto *lt = (struct lang_type *) (ggc_internal_cleared_alloc
! 				   (sizeof (struct lang_type)));
    TYPE_LANG_SPECIFIC (t) = lt;
  
    if (GATHER_STATISTICS)
      {
        tree_node_counts[(int)lang_type] += 1;
!       tree_node_sizes[(int)lang_type] += sizeof (struct lang_type);
      }
  
    return true;
--- 1116,1130 ----
    if (!RECORD_OR_UNION_CODE_P (TREE_CODE (t)))
      return false;
  
!   size_t sz = (c_dialect_objc () ? sizeof (struct lang_type)
! 	       : offsetof (struct lang_type, info));
!   auto *lt = (struct lang_type *) (ggc_internal_cleared_alloc (sz));
    TYPE_LANG_SPECIFIC (t) = lt;
  
    if (GATHER_STATISTICS)
      {
        tree_node_counts[(int)lang_type] += 1;
!       tree_node_sizes[(int)lang_type] += sz;
      }
  
    return true;
*************** cxx_make_type (enum tree_code code MEM_S
*** 1135,1142 ****
    if (maybe_add_lang_type_raw (t))
      {
        /* Set up some flags that give proper default behavior.  */
!       struct c_fileinfo *finfo =
! 	get_fileinfo (LOCATION_FILE (input_location));
        SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, finfo->interface_unknown);
        CLASSTYPE_INTERFACE_ONLY (t) = finfo->interface_only;
      }
--- 1138,1145 ----
    if (maybe_add_lang_type_raw (t))
      {
        /* Set up some flags that give proper default behavior.  */
!       struct c_fileinfo *finfo
! 	= get_fileinfo (LOCATION_FILE (input_location));
        SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, finfo->interface_unknown);
        CLASSTYPE_INTERFACE_ONLY (t) = finfo->interface_only;
      }
diff -Nrcpad gcc-16-20250608/gcc/cp/pt.cc gcc-16-20250615/gcc/cp/pt.cc
*** gcc-16-20250608/gcc/cp/pt.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/cp/pt.cc	Sun Jun 15 22:32:24 2025
*************** tsubst_entering_scope (tree t, tree args
*** 10052,10066 ****
  
     D1 is the PTYPENAME terminal, and ARGLIST is the list of arguments.
  
     IN_DECL, if non-NULL, is the template declaration we are trying to
     instantiate.
  
     Issue error and warning messages under control of COMPLAIN.
  
-    If the template class is really a local class in a template
-    function, then the FUNCTION_CONTEXT is the function in which it is
-    being instantiated.
- 
     ??? Note that this function is currently called *twice* for each
     template-id: the first time from the parser, while creating the
     incomplete type (finish_template_type), and the second type during the
--- 10052,10071 ----
  
     D1 is the PTYPENAME terminal, and ARGLIST is the list of arguments.
  
+    If D1 is an identifier and CONTEXT is non-NULL, then the lookup is
+    carried out in CONTEXT. Currently, only namespaces are supported for
+    CONTEXT.
+ 
+    If D1 is an identifier and CONTEXT is NULL, the lookup is performed
+    in the innermost non-namespace binding.
+ 
+    Otherwise CONTEXT is ignored and no lookup is carried out.
+ 
     IN_DECL, if non-NULL, is the template declaration we are trying to
     instantiate.
  
     Issue error and warning messages under control of COMPLAIN.
  
     ??? Note that this function is currently called *twice* for each
     template-id: the first time from the parser, while creating the
     incomplete type (finish_template_type), and the second type during the
*************** lookup_template_class (tree d1, tree arg
*** 10079,10098 ****
    spec_entry **slot;
    spec_entry *entry;
  
!   if (identifier_p (d1))
      {
        tree value = innermost_non_namespace_value (d1);
        if (value && DECL_TEMPLATE_TEMPLATE_PARM_P (value))
  	templ = value;
        else
! 	{
! 	  if (context)
! 	    push_decl_namespace (context);
  	  templ = lookup_name (d1);
  	  templ = maybe_get_template_decl_from_type_decl (templ);
! 	  if (context)
! 	    pop_decl_namespace ();
! 	}
      }
    else if (TREE_CODE (d1) == TYPE_DECL && MAYBE_CLASS_TYPE_P (TREE_TYPE (d1)))
      {
--- 10084,10106 ----
    spec_entry **slot;
    spec_entry *entry;
  
!   if (identifier_p (d1) && context)
!     {
!       gcc_checking_assert (TREE_CODE (context) == NAMESPACE_DECL);
!       push_decl_namespace (context);
!       templ = lookup_name (d1, LOOK_where::NAMESPACE, LOOK_want::NORMAL);
!       pop_decl_namespace ();
!     }
!   else if (identifier_p (d1))
      {
        tree value = innermost_non_namespace_value (d1);
        if (value && DECL_TEMPLATE_TEMPLATE_PARM_P (value))
  	templ = value;
        else
!         {
  	  templ = lookup_name (d1);
  	  templ = maybe_get_template_decl_from_type_decl (templ);
!         }
      }
    else if (TREE_CODE (d1) == TYPE_DECL && MAYBE_CLASS_TYPE_P (TREE_TYPE (d1)))
      {
diff -Nrcpad gcc-16-20250608/gcc/diagnostic-format-html.cc gcc-16-20250615/gcc/diagnostic-format-html.cc
*** gcc-16-20250608/gcc/diagnostic-format-html.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/diagnostic-format-html.cc	Sun Jun 15 22:32:24 2025
*************** along with GCC; see the file COPYING3.
*** 31,36 ****
--- 31,38 ----
  #include "diagnostic-format-text.h"
  #include "diagnostic-output-file.h"
  #include "diagnostic-buffer.h"
+ #include "diagnostic-path.h"
+ #include "diagnostic-client-data-hooks.h"
  #include "selftest.h"
  #include "selftest-diagnostic.h"
  #include "pretty-print-format-impl.h"
*************** along with GCC; see the file COPYING3.
*** 40,45 ****
--- 42,48 ----
  #include "xml.h"
  #include "xml-printer.h"
  #include "json.h"
+ #include "selftest-xml.h"
  
  // struct html_generation_options
  
*************** public:
*** 104,109 ****
--- 107,115 ----
  		const line_maps *line_maps,
  		const html_generation_options &html_gen_opts);
  
+   void
+   set_main_input_filename (const char *name);
+ 
    void on_report_diagnostic (const diagnostic_info &diagnostic,
  			     diagnostic_t orig_diag_kind,
  			     diagnostic_html_format_buffer *buffer);
*************** public:
*** 136,160 ****
    }
  
  private:
    std::unique_ptr<xml::element>
    make_element_for_diagnostic (const diagnostic_info &diagnostic,
! 			       diagnostic_t orig_diag_kind);
  
    std::unique_ptr<xml::element>
    make_metadata_element (label_text label,
  			 label_text url);
  
    diagnostic_context &m_context;
    pretty_printer *m_printer;
    const line_maps *m_line_maps;
    html_generation_options m_html_gen_opts;
  
    std::unique_ptr<xml::document> m_document;
    xml::element *m_head_element;
    xml::element *m_diagnostics_element;
    std::unique_ptr<xml::element> m_cur_diagnostic_element;
    int m_next_diag_id; // for handing out unique IDs
    json::array m_ui_focus_ids;
  };
  
  static std::unique_ptr<xml::element>
--- 142,186 ----
    }
  
  private:
+   void
+   add_stylesheet (std::string url);
+ 
    std::unique_ptr<xml::element>
    make_element_for_diagnostic (const diagnostic_info &diagnostic,
! 			       diagnostic_t orig_diag_kind,
! 			       bool alert);
  
    std::unique_ptr<xml::element>
    make_metadata_element (label_text label,
  			 label_text url);
  
+   void
+   add_at_nesting_level (size_t nesting_level,
+ 			std::unique_ptr<xml::element> child_diag_element);
+ 
+   void
+   push_nesting_level ();
+ 
+   void
+   pop_nesting_level ();
+ 
    diagnostic_context &m_context;
    pretty_printer *m_printer;
    const line_maps *m_line_maps;
    html_generation_options m_html_gen_opts;
+   const logical_location_manager *m_logical_loc_mgr;
  
    std::unique_ptr<xml::document> m_document;
    xml::element *m_head_element;
+   xml::element *m_title_element;
    xml::element *m_diagnostics_element;
    std::unique_ptr<xml::element> m_cur_diagnostic_element;
+   std::vector<xml::element *> m_cur_nesting_levels;
    int m_next_diag_id; // for handing out unique IDs
    json::array m_ui_focus_ids;
+   logical_location m_last_logical_location;
+   location_t m_last_location;
+   expanded_location m_last_expanded_location;
  };
  
  static std::unique_ptr<xml::element>
*************** static const char * const HTML_STYLE
*** 233,240 ****
--- 259,268 ----
       "    .ruler { color: red;\n"
       "              white-space: pre; }\n"
       "    .source { color: blue;\n"
+      "              background-color: white;\n"
       "              white-space: pre; }\n"
       "    .annotation { color: green;\n"
+      "                  background-color: white;\n"
       "                  white-space: pre; }\n"
       "    .linenum-gap { text-align: center;\n"
       "                   border-top: 1px solid black;\n"
*************** static const char * const HTML_STYLE
*** 265,270 ****
--- 293,300 ----
       "                   font-weight: bold; }\n"
       "    .highlight-b { color: #3f9c35;\n" // pf-green-400
       "                   font-weight: bold; }\n"
+      "    .gcc-quoted-text { font-weight: bold;\n"
+      "                       font-family: mono; }\n"
       "  </style>\n");
  
  /* A little JavaScript for ease of navigation.
*************** html_builder::html_builder (diagnostic_c
*** 347,358 ****
    m_printer (&pp),
    m_line_maps (line_maps),
    m_html_gen_opts (html_gen_opts),
    m_head_element (nullptr),
    m_diagnostics_element (nullptr),
!   m_next_diag_id (0)
  {
    gcc_assert (m_line_maps);
  
    m_document = std::make_unique<xml::document> ();
    m_document->m_doctypedecl = std::make_unique<html_doctypedecl> ();
    {
--- 377,395 ----
    m_printer (&pp),
    m_line_maps (line_maps),
    m_html_gen_opts (html_gen_opts),
+   m_logical_loc_mgr (nullptr),
    m_head_element (nullptr),
+   m_title_element (nullptr),
    m_diagnostics_element (nullptr),
!   m_next_diag_id (0),
!   m_last_location (UNKNOWN_LOCATION),
!   m_last_expanded_location ({})
  {
    gcc_assert (m_line_maps);
  
+   if (auto client_data_hooks = context.get_client_data_hooks ())
+     m_logical_loc_mgr = client_data_hooks->get_logical_location_manager ();
+ 
    m_document = std::make_unique<xml::document> ();
    m_document->m_doctypedecl = std::make_unique<html_doctypedecl> ();
    {
*************** html_builder::html_builder (diagnostic_c
*** 367,383 ****
        m_head_element = xp.get_insertion_point ();
        {
  	xml::auto_print_element title (xp, "title", true);
! 	xp.add_text ("Title goes here");
        }
        if (m_html_gen_opts.m_css)
! 	xp.add_raw (HTML_STYLE);
        if (m_html_gen_opts.m_javascript)
  	{
  	  xp.push_tag ("script");
  	  /* Escaping rules are different for HTML <script> elements,
  	     so add the script "raw" for now.  */
  	  xp.add_raw (HTML_SCRIPT);
! 	  xp.pop_tag (); // script
  	}
      }
  
--- 404,425 ----
        m_head_element = xp.get_insertion_point ();
        {
  	xml::auto_print_element title (xp, "title", true);
! 	m_title_element = xp.get_insertion_point ();
        }
+ 
        if (m_html_gen_opts.m_css)
! 	{
! 	  add_stylesheet ("https://cdnjs.cloudflare.com/ajax/libs/patternfly/3.24.0/css/patternfly.min.css");
! 	  add_stylesheet ("https://cdnjs.cloudflare.com/ajax/libs/patternfly/3.24.0/css/patternfly-additions.min.css");
! 	  xp.add_raw (HTML_STYLE);
! 	}
        if (m_html_gen_opts.m_javascript)
  	{
  	  xp.push_tag ("script");
  	  /* Escaping rules are different for HTML <script> elements,
  	     so add the script "raw" for now.  */
  	  xp.add_raw (HTML_SCRIPT);
! 	  xp.pop_tag ("script");
  	}
      }
  
*************** html_builder::html_builder (diagnostic_c
*** 392,397 ****
--- 434,462 ----
    }
  }
  
+ void
+ html_builder::set_main_input_filename (const char *name)
+ {
+   gcc_assert (m_title_element);
+   if (name)
+     {
+       m_title_element->m_children.clear ();
+       m_title_element->add_text (name);
+     }
+ }
+ 
+ void
+ html_builder::add_stylesheet (std::string url)
+ {
+   gcc_assert (m_head_element);
+ 
+   xml::printer xp (*m_head_element);
+   xp.push_tag ("link", false);
+   xp.set_attr ("rel", "stylesheet");
+   xp.set_attr ("type", "text/css");
+   xp.set_attr ("href", std::move (url));
+ }
+ 
  /* Implementation of "on_report_diagnostic" for HTML output.  */
  
  void
*************** html_builder::on_report_diagnostic (cons
*** 409,416 ****
        fnotice (stderr, "Internal compiler error:\n");
      }
  
    auto diag_element
!     = make_element_for_diagnostic (diagnostic, orig_diag_kind);
    if (buffer)
      {
        gcc_assert (!m_cur_diagnostic_element);
--- 474,487 ----
        fnotice (stderr, "Internal compiler error:\n");
      }
  
+   const int nesting_level = m_context.get_diagnostic_nesting_level ();
+   bool alert = true;
+   if (m_cur_diagnostic_element && nesting_level > 0)
+     alert = false;
+   if (!m_cur_diagnostic_element)
+     m_last_logical_location = logical_location ();
    auto diag_element
!     = make_element_for_diagnostic (diagnostic, orig_diag_kind, alert);
    if (buffer)
      {
        gcc_assert (!m_cur_diagnostic_element);
*************** html_builder::on_report_diagnostic (cons
*** 419,430 ****
    else
      {
        if (m_cur_diagnostic_element)
! 	/* Nested diagnostic.  */
! 	m_cur_diagnostic_element->add_child (std::move (diag_element));
        else
  	/* Top-level diagnostic.  */
! 	m_cur_diagnostic_element = std::move (diag_element);
      }
  }
  
  /* Custom subclass of html_label_writer.
--- 490,566 ----
    else
      {
        if (m_cur_diagnostic_element)
! 	{
! 	  /* Nested diagnostic.  */
! 	  gcc_assert (nesting_level >= 0);
! 	  add_at_nesting_level (nesting_level, std::move (diag_element));
! 	}
        else
  	/* Top-level diagnostic.  */
! 	{
! 	  m_cur_diagnostic_element = std::move (diag_element);
! 	  m_cur_nesting_levels.clear ();
! 	}
!     }
! }
! 
! // For ease of comparison with experimental-nesting-show-levels=yes
! 
! static void
! add_nesting_level_attr (xml::element &element,
! 			int nesting_level)
! {
!   element.set_attr ("nesting-level", std::to_string (nesting_level));
! }
! 
! void
! html_builder::
! add_at_nesting_level (size_t nesting_level,
! 		      std::unique_ptr<xml::element> child_diag_element)
! {
!   gcc_assert (m_cur_diagnostic_element);
!   while (nesting_level > m_cur_nesting_levels.size ())
!     push_nesting_level ();
!   while (nesting_level < m_cur_nesting_levels.size ())
!     pop_nesting_level ();
! 
!   if (nesting_level > 0)
!     {
!       gcc_assert (!m_cur_nesting_levels.empty ());
!       auto current_nesting_level = m_cur_nesting_levels.back ();
!       xml::printer xp (*current_nesting_level);
!       xp.push_tag ("li");
!       add_nesting_level_attr (*xp.get_insertion_point (),
! 			      m_cur_nesting_levels.size ());
!       xp.append (std::move (child_diag_element));
!       xp.pop_tag ("li");
      }
+   else
+     m_cur_diagnostic_element->add_child (std::move (child_diag_element));
+ }
+ 
+ void
+ html_builder::push_nesting_level ()
+ {
+   gcc_assert (m_cur_diagnostic_element);
+   auto new_nesting_level = std::make_unique<xml::element> ("ul", false);
+   add_nesting_level_attr (*new_nesting_level,
+ 			  m_cur_nesting_levels.size () + 1);
+   xml::element *current_nesting_level = nullptr;
+   if (!m_cur_nesting_levels.empty ())
+     current_nesting_level = m_cur_nesting_levels.back ();
+   m_cur_nesting_levels.push_back (new_nesting_level.get ());
+   if (current_nesting_level)
+     current_nesting_level->add_child (std::move (new_nesting_level));
+   else
+     m_cur_diagnostic_element->add_child (std::move (new_nesting_level));
+ }
+ 
+ void
+ html_builder::pop_nesting_level ()
+ {
+   gcc_assert (m_cur_diagnostic_element);
+   m_cur_nesting_levels.pop_back ();
  }
  
  /* Custom subclass of html_label_writer.
*************** public:
*** 456,462 ****
  
    void end_label () final override
    {
!     m_xp.pop_tag (); // span
    }
  
  private:
--- 592,598 ----
  
    void end_label () final override
    {
!     m_xp.pop_tag ("span"); // from begin_label
    }
  
  private:
*************** private:
*** 466,546 ****
    int m_next_event_idx;
  };
  
! std::unique_ptr<xml::element>
! html_builder::make_element_for_diagnostic (const diagnostic_info &diagnostic,
! 					   diagnostic_t orig_diag_kind)
  {
!   class html_token_printer : public token_printer
!   {
!   public:
!     html_token_printer (xml::printer &xp)
!     : m_xp (xp)
      {
      }
!     void print_tokens (pretty_printer */*pp*/,
! 		       const pp_token_list &tokens) final override
      {
!       /* Implement print_tokens by adding child elements to
! 	 m_parent_element.  */
!       for (auto iter = tokens.m_first; iter; iter = iter->m_next)
! 	switch (iter->m_kind)
! 	  {
! 	  default:
! 	    gcc_unreachable ();
  
! 	  case pp_token::kind::text:
! 	    {
! 	      pp_token_text *sub = as_a <pp_token_text *> (iter);
! 	      /* The value might be in the obstack, so we may need to
! 		 copy it.  */
! 	      m_xp.add_text (sub->m_value.get ());
! 	    }
! 	    break;
  
! 	  case pp_token::kind::begin_color:
! 	    {
! 	      pp_token_begin_color *sub = as_a <pp_token_begin_color *> (iter);
! 	      gcc_assert (sub->m_value.get ());
! 	      m_xp.push_tag_with_class ("span", sub->m_value.get ());
! 	    }
! 	    break;
  
! 	  case pp_token::kind::end_color:
! 	    m_xp.pop_tag ();
! 	    break;
  
! 	  case pp_token::kind::begin_quote:
! 	    {
! 	      m_xp.add_text (open_quote);
! 	      m_xp.push_tag_with_class ("span", "gcc-quoted-text");
! 	    }
! 	    break;
! 	  case pp_token::kind::end_quote:
! 	    {
! 	      m_xp.pop_tag ();
! 	      m_xp.add_text (close_quote);
! 	    }
! 	    break;
  
! 	  case pp_token::kind::begin_url:
! 	    {
! 	      pp_token_begin_url *sub = as_a <pp_token_begin_url *> (iter);
! 	      m_xp.push_tag ("a", true);
! 	      m_xp.set_attr ("href", sub->m_value.get ());
  	    }
! 	    break;
! 	  case pp_token::kind::end_url:
! 	    m_xp.pop_tag ();
! 	    break;
  	  }
!     }
  
!   private:
!     xml::printer &m_xp;
!   };
  
!   auto diag_element = make_div ("gcc-diagnostic");
  
    const int diag_idx = m_next_diag_id++;
    std::string diag_id;
    {
--- 602,826 ----
    int m_next_event_idx;
  };
  
! /* See https://pf3.patternfly.org/v3/pattern-library/widgets/#alerts */
! static const char *
! get_pf_class_for_alert_div (diagnostic_t diag_kind)
  {
!   switch (diag_kind)
      {
+     case DK_DEBUG:
+     case DK_NOTE:
+       return "alert alert-info";
+ 
+     case DK_ANACHRONISM:
+     case DK_WARNING:
+       return "alert alert-warning";
+ 
+     case DK_ERROR:
+     case DK_SORRY:
+     case DK_ICE:
+     case DK_ICE_NOBT:
+     case DK_FATAL:
+       return "alert alert-danger";
+ 
+     default:
+       gcc_unreachable ();
      }
! }
! 
! static const char *
! get_pf_class_for_alert_icon (diagnostic_t diag_kind)
! {
!   switch (diag_kind)
      {
!     case DK_DEBUG:
!     case DK_NOTE:
!       return "pficon pficon-info";
  
!     case DK_ANACHRONISM:
!     case DK_WARNING:
!       return "pficon pficon-warning-triangle-o";
  
!     case DK_ERROR:
!     case DK_SORRY:
!     case DK_ICE:
!     case DK_ICE_NOBT:
!     case DK_FATAL:
!       return "pficon pficon-error-circle-o";
  
!     default:
!       gcc_unreachable ();
!     }
! }
  
! static const char *
! get_label_for_logical_location_kind (enum logical_location_kind kind)
! {
!   switch (kind)
!     {
!     default:
!       gcc_unreachable ();
!     case logical_location_kind::unknown:
!       return nullptr;
  
!     /* Kinds within executable code.  */
!     case logical_location_kind::function:
!       return "Function";
!     case logical_location_kind::member:
!       return "Member";
!     case logical_location_kind::module_:
!       return "Module";
!     case logical_location_kind::namespace_:
!       return "Namespace";
!     case logical_location_kind::type:
!       return "Type";
!     case logical_location_kind::return_type:
!       return "Return type";
!     case logical_location_kind::parameter:
!       return "Parameter";
!     case logical_location_kind::variable:
!       return "Variable";
! 
!     /* Kinds within XML or HTML documents.  */
!     case logical_location_kind::element:
!       return "Element";
!     case logical_location_kind::attribute:
!       return "Attribute";
!     case logical_location_kind::text:
!       return "Text";
!     case logical_location_kind::comment:
!       return "Comment";
!     case logical_location_kind::processing_instruction:
!       return "Processing Instruction";
!     case logical_location_kind::dtd:
!       return "DTD";
!     case logical_location_kind::declaration:
!       return "Declaration";
! 
!   /* Kinds within JSON documents.  */
!     case logical_location_kind::object:
!       return "Object";
!     case logical_location_kind::array:
!       return "Array";
!     case logical_location_kind::property:
!       return "Property";
!     case logical_location_kind::value:
!       return "Value";
!     }
! }
! 
! static void
! add_labelled_value (xml::printer &xp,
! 		    std::string id,
! 		    std::string label,
! 		    std::string value,
! 		    bool quote_value)
! {
!   xp.push_tag ("div", true);
!   xp.set_attr ("id", id);
!   xp.push_tag ("span");
!   xp.add_text (label);
!   xp.add_text (" ");
!   xp.pop_tag ("span");
!   xp.push_tag ("span");
!   if (quote_value)
!     xp.set_attr ("class", "gcc-quoted-text");
!   xp.add_text (std::move (value));
!   xp.pop_tag ("span");
!   xp.pop_tag ("div");
! }
! 
! class html_token_printer : public token_printer
! {
! public:
!   html_token_printer (xml::element &parent_element)
!     /* Ideally pp_token_lists that reach a token_printer should be
!        "balanced", but for now they can have mismatching pp_tokens
!        e.g. a begin_color without an end_color (PR other/120610).
!        Give html_token_printer its own xml::printer as a firewall to
!        limit the scope of the mismatches in the HTML.  */
!     : m_xp (parent_element,
! 	    /* Similarly we don't check that the popped tags match.  */
! 	    false)
!   {
!   }
!   void print_tokens (pretty_printer */*pp*/,
! 		     const pp_token_list &tokens) final override
!   {
!     /* Implement print_tokens by adding child elements to
!        m_parent_element.  */
!     for (auto iter = tokens.m_first; iter; iter = iter->m_next)
!       switch (iter->m_kind)
! 	{
! 	default:
! 	  gcc_unreachable ();
! 
! 	case pp_token::kind::text:
! 	  {
! 	    pp_token_text *sub = as_a <pp_token_text *> (iter);
! 	    /* The value might be in the obstack, so we may need to
! 	       copy it.  */
! 	    m_xp.add_text (sub->m_value.get ());
  	    }
! 	  break;
! 
! 	case pp_token::kind::begin_color:
! 	  {
! 	    pp_token_begin_color *sub = as_a <pp_token_begin_color *> (iter);
! 	    gcc_assert (sub->m_value.get ());
! 	    m_xp.push_tag_with_class ("span", sub->m_value.get ());
  	  }
! 	  break;
  
! 	case pp_token::kind::end_color:
! 	  m_xp.pop_tag ("span");
! 	  break;
  
! 	case pp_token::kind::begin_quote:
! 	  {
! 	    m_xp.add_text (open_quote);
! 	    m_xp.push_tag_with_class ("span", "gcc-quoted-text");
! 	  }
! 	  break;
! 	case pp_token::kind::end_quote:
! 	  {
! 	    m_xp.pop_tag ("span");
! 	    m_xp.add_text (close_quote);
! 	  }
! 	  break;
! 
! 	case pp_token::kind::begin_url:
! 	  {
! 	    pp_token_begin_url *sub = as_a <pp_token_begin_url *> (iter);
! 	    m_xp.push_tag ("a", true);
! 	    m_xp.set_attr ("href", sub->m_value.get ());
! 	  }
! 	  break;
! 	case pp_token::kind::end_url:
! 	  m_xp.pop_tag ("a");
! 	  break;
! 	}
!   }
! 
! private:
!   xml::printer m_xp;
! };
! 
! /* Make a <div class="gcc-diagnostic"> for DIAGNOSTIC.
! 
!    If ALERT is true, make it be a PatternFly alert (see
!    https://pf3.patternfly.org/v3/pattern-library/widgets/#alerts) and
!    show severity text (e.g. "error: ").
  
+    If ALERT is false, don't show the severity text and don't show
+    the filename if it's the same as the previous diagnostic within the
+    diagnostic group.  */
+ 
+ std::unique_ptr<xml::element>
+ html_builder::make_element_for_diagnostic (const diagnostic_info &diagnostic,
+ 					   diagnostic_t orig_diag_kind,
+ 					   bool alert)
+ {
    const int diag_idx = m_next_diag_id++;
    std::string diag_id;
    {
*************** html_builder::make_element_for_diagnosti
*** 548,577 ****
      pp_printf (&pp, "gcc-diag-%i", diag_idx);
      diag_id = pp_formatted_text (&pp);
    }
-   diag_element->set_attr ("id", diag_id);
  
    // TODO: might be nice to emulate the text output format, but colorize it
  
!   auto message_span = make_span ("gcc-message");
!   std::string message_span_id (diag_id + "-message");
!   message_span->set_attr ("id", message_span_id);
!   add_focus_id (message_span_id);
  
!   xml::printer xp (*message_span.get ());
!   html_token_printer tok_printer (xp);
    m_printer->set_token_printer (&tok_printer);
    pp_output_formatted_text (m_printer, m_context.get_urlifier ());
    m_printer->set_token_printer (nullptr);
    pp_clear_output_area (m_printer);
-   diag_element->add_child (std::move (message_span));
  
    if (diagnostic.metadata)
      {
!       diag_element->add_text (" ");
!       diag_element->add_child
! 	(make_element_for_metadata (*diagnostic.metadata));
      }
  
    label_text option_text = label_text::take
      (m_context.make_option_name (diagnostic.option_id,
  				 orig_diag_kind, diagnostic.kind));
--- 828,902 ----
      pp_printf (&pp, "gcc-diag-%i", diag_idx);
      diag_id = pp_formatted_text (&pp);
    }
  
    // TODO: might be nice to emulate the text output format, but colorize it
  
!   /* See https://pf3.patternfly.org/v3/pattern-library/widgets/#alerts
!      which has this example:
! <div class="alert alert-danger">
!   <span class="pficon pficon-error-circle-o"></span>
!   <strong>Hey there is a problem!</strong> Yeah this is really messed up and you should <a href="#" class="alert-link">know about it</a>.
! </div>
!   */
!   auto diag_element = make_div ("gcc-diagnostic");
!   diag_element->set_attr ("id", diag_id);
!   if (alert)
!     diag_element->set_attr ("class",
! 			    get_pf_class_for_alert_div (diagnostic.kind));
  
!   xml::printer xp (*diag_element.get ());
!   const size_t depth_within_alert_div = 1;
! 
!   gcc_assert (xp.get_num_open_tags () == depth_within_alert_div);
! 
!   if (alert)
!     {
!       xp.push_tag_with_class ("span",
! 			      get_pf_class_for_alert_icon (diagnostic.kind),
! 			      true);
!       xp.add_text (" ");
!       xp.pop_tag ("span");
!     }
! 
!   // The rest goes in the <div>...
!   gcc_assert (xp.get_num_open_tags () == depth_within_alert_div);
! 
!   xp.push_tag_with_class ("div", "gcc-message", true);
!   std::string message_alert_id (diag_id + "-message");
!   xp.set_attr ("id", message_alert_id);
!   add_focus_id (message_alert_id);
! 
!   const size_t depth_within_message_div = depth_within_alert_div + 1;
!   gcc_assert (xp.get_num_open_tags () == depth_within_message_div);
! 
!   // Severity e.g. "warning: "
!   bool show_severity = true;
!   if (!alert)
!     show_severity = false;
!   if (show_severity)
!   {
!     xp.push_tag ("strong");
!     xp.add_text (_(get_diagnostic_kind_text (diagnostic.kind)));
!     xp.pop_tag ("strong");
!     xp.add_text (" ");
!   }
! 
!   // Add the message itself:
!   html_token_printer tok_printer (*xp.get_insertion_point ());
    m_printer->set_token_printer (&tok_printer);
    pp_output_formatted_text (m_printer, m_context.get_urlifier ());
    m_printer->set_token_printer (nullptr);
    pp_clear_output_area (m_printer);
  
+   // Add any metadata as a suffix to the message
    if (diagnostic.metadata)
      {
!       xp.add_text (" ");
!       xp.append (make_element_for_metadata (*diagnostic.metadata));
      }
  
+   // Add any option as a suffix to the message
+ 
    label_text option_text = label_text::take
      (m_context.make_option_name (diagnostic.option_id,
  				 orig_diag_kind, diagnostic.kind));
*************** html_builder::make_element_for_diagnosti
*** 580,586 ****
        label_text option_url = label_text::take
  	(m_context.make_option_url (diagnostic.option_id));
  
!       diag_element->add_text (" ");
        auto option_span = make_span ("gcc-option");
        option_span->add_text ("[");
        {
--- 905,911 ----
        label_text option_url = label_text::take
  	(m_context.make_option_url (diagnostic.option_id));
  
!       xp.add_text (" ");
        auto option_span = make_span ("gcc-option");
        option_span->add_text ("[");
        {
*************** html_builder::make_element_for_diagnosti
*** 595,629 ****
  	  option_span->add_text (option_text.get ());
  	option_span->add_text ("]");
        }
!       diag_element->add_child (std::move (option_span));
      }
  
    /* Source (and fix-it hints).  */
    {
!     xml::printer xp (*diag_element);
!     m_context.m_last_location = UNKNOWN_LOCATION;
      m_context.maybe_show_locus_as_html (*diagnostic.richloc,
  					m_context.m_source_printing,
  					diagnostic.kind,
  					xp,
  					nullptr,
  					nullptr);
    }
  
    /* Execution path.  */
    if (auto path = diagnostic.richloc->get_path ())
      {
!       xml::printer xp (*diag_element);
        std::string event_id_prefix (diag_id + "-event-");
        html_path_label_writer event_label_writer (xp, *this,
  						 event_id_prefix);
        diagnostic_source_print_policy dspp (m_context);
        print_path_as_html (xp, *path, m_context, &event_label_writer,
  			  dspp);
      }
  
    if (auto patch_element = make_element_for_patch (diagnostic))
!     diag_element->add_child (std::move (patch_element));
  
    return diag_element;
  }
--- 920,1029 ----
  	  option_span->add_text (option_text.get ());
  	option_span->add_text ("]");
        }
!       xp.append (std::move (option_span));
!     }
! 
!   gcc_assert (xp.get_num_open_tags () == depth_within_message_div);
! 
!   xp.pop_tag ("div");
! 
!   gcc_assert (xp.get_num_open_tags () == depth_within_alert_div);
! 
!   /* Show any logical location.  */
!   if (m_logical_loc_mgr)
!     if (auto client_data_hooks = m_context.get_client_data_hooks ())
!       if (auto logical_loc = client_data_hooks->get_current_logical_location ())
! 	if (logical_loc != m_last_logical_location)
! 	  {
! 	    enum logical_location_kind kind
! 	      = m_logical_loc_mgr->get_kind (logical_loc);;
! 	    if (const char *label = get_label_for_logical_location_kind (kind))
! 	      if (const char *name_with_scope
! 		  = m_logical_loc_mgr->get_name_with_scope (logical_loc))
! 		add_labelled_value (xp, "logical-location",
! 				    label, name_with_scope, true);
! 	    m_last_logical_location = logical_loc;
! 	  }
! 
!   /* Show any physical location.  */
!   const expanded_location s
!     = diagnostic_expand_location (&diagnostic);
!   if (s != m_last_expanded_location
!       || alert)
!     {
!       if (s.file
! 	  && (s.file != m_last_expanded_location.file
! 	      || alert))
! 	add_labelled_value (xp, "file", "File", s.file, false);
!       if (s.line)
! 	{
! 	  add_labelled_value (xp, "line", "Line", std::to_string (s.line), false);
! 	  diagnostic_column_policy column_policy (m_context);
! 	  int converted_column = column_policy.converted_column (s);
! 	  if (converted_column >= 0)
! 	    add_labelled_value (xp, "column", "Column",
! 				std::to_string (converted_column),
! 				false);
! 	}
!       if (s.file)
! 	m_last_expanded_location = s;
      }
  
    /* Source (and fix-it hints).  */
    {
!     // TODO: m_context.m_last_location should be moved into the sink
!     location_t saved = m_context.m_last_location;
!     m_context.m_last_location = m_last_location;
      m_context.maybe_show_locus_as_html (*diagnostic.richloc,
  					m_context.m_source_printing,
  					diagnostic.kind,
  					xp,
  					nullptr,
  					nullptr);
+     m_context.m_last_location = saved;
+     m_last_location = m_context.m_last_location;
    }
  
+   gcc_assert (xp.get_num_open_tags () == depth_within_alert_div);
+ 
    /* Execution path.  */
    if (auto path = diagnostic.richloc->get_path ())
      {
!       xp.push_tag ("div");
!       xp.set_attr ("id", "execution-path");
! 
!       xp.push_tag ("label", true);
!       const int num_events = path->num_events ();
!       pretty_printer pp;
!       pp_printf_n (&pp, num_events,
! 		   "Execution path with %i event",
! 		   "Execution path with %i events",
! 		   num_events);
!       xp.add_text_from_pp (pp);
!       xp.pop_tag ("label");
! 
        std::string event_id_prefix (diag_id + "-event-");
        html_path_label_writer event_label_writer (xp, *this,
  						 event_id_prefix);
        diagnostic_source_print_policy dspp (m_context);
        print_path_as_html (xp, *path, m_context, &event_label_writer,
  			  dspp);
+ 
+       xp.pop_tag ("div");
      }
  
+   gcc_assert (xp.get_num_open_tags () == depth_within_alert_div);
+ 
    if (auto patch_element = make_element_for_patch (diagnostic))
!     {
!       xp.push_tag ("div");
!       xp.set_attr ("id", "suggested-fix");
!       xp.push_tag ("label", true);
!       xp.add_text ("Suggested fix");
!       xp.pop_tag ("label");
!       xp.append (std::move (patch_element));
!       xp.pop_tag ("div");
!     }
  
    return diag_element;
  }
*************** html_builder::make_metadata_element (lab
*** 664,670 ****
        }
      xp.add_text (label.get ());
      if (url.get ())
!       xp.pop_tag ();
    }
    xp.add_text ("]");
    return item;
--- 1064,1070 ----
        }
      xp.add_text (label.get ());
      if (url.get ())
!       xp.pop_tag ("a");
    }
    xp.add_text ("]");
    return item;
*************** html_builder::flush_to_file (FILE *outf)
*** 739,745 ****
        m_ui_focus_ids.print (&pp, true);
        pp_string (&pp, ";\n");
        xp.add_raw (pp_formatted_text (&pp));
!       xp.pop_tag (); // script
      }
    auto top = m_document.get ();
    top->dump (outf);
--- 1139,1145 ----
        m_ui_focus_ids.print (&pp, true);
        pp_string (&pp, ";\n");
        xp.add_raw (pp_formatted_text (&pp));
!       xp.pop_tag ("script");
      }
    auto top = m_document.get ();
    top->dump (outf);
*************** public:
*** 765,770 ****
--- 1165,1176 ----
      diagnostic_output_format::dump (out, indent);
    }
  
+   void
+   set_main_input_filename (const char *name) final override
+   {
+     m_builder.set_main_input_filename (name);
+   }
+ 
    std::unique_ptr<diagnostic_per_format_buffer>
    make_per_format_buffer () final override
    {
*************** make_html_sink (diagnostic_context &cont
*** 924,929 ****
--- 1330,1382 ----
  
  namespace selftest {
  
+ /* Helper for writing tests of html_token_printer.
+    Printing to m_pp will appear as HTML within m_top_element, a <div>.  */
+ 
+ struct token_printer_test
+ {
+   token_printer_test ()
+   : m_top_element ("div", true),
+     m_tok_printer (m_top_element)
+   {
+     m_pp.set_token_printer (&m_tok_printer);
+   }
+ 
+   xml::element m_top_element;
+   html_token_printer m_tok_printer;
+   pretty_printer m_pp;
+ };
+ 
+ static void
+ test_token_printer ()
+ {
+   {
+     token_printer_test t;
+     pp_printf (&t.m_pp, "hello world");
+     ASSERT_XML_PRINT_EQ
+       (t.m_top_element,
+        "<div>hello world</div>\n");
+   }
+ 
+   {
+     token_printer_test t;
+     pp_printf (&t.m_pp, "%qs: %qs", "foo", "bar");
+     ASSERT_XML_PRINT_EQ
+       (t.m_top_element,
+        "<div>"
+        "`"
+        "<span class=\"gcc-quoted-text\">"
+        "foo"
+        "</span>"
+        "&apos;: `"
+        "<span class=\"gcc-quoted-text\">"
+        "bar"
+        "</span>"
+        "&apos;"
+        "</div>\n");
+   }
+ }
+ 
  /* A subclass of html_output_format for writing selftests.
     The XML output is cached internally, rather than written
     out to a file.  */
*************** public:
*** 940,945 ****
--- 1393,1399 ----
  							       line_table,
  							       html_gen_opts);
      sink->update_printer ();
+     sink->set_main_input_filename ("(main input filename)");
      m_format = sink.get (); // borrowed
  
      set_output_format (std::move (sink));
*************** test_simple_log ()
*** 988,1009 ****
  
    const xml::document &doc  = dc.get_document ();
  
!   pretty_printer pp;
!   doc.write_as_xml (&pp, 0, true);
!   ASSERT_STREQ
!     (pp_formatted_text (&pp),
       ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
        "<!DOCTYPE html\n"
        "     PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n"
        "     \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
        "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
        "  <head>\n"
!       "    <title>Title goes here</title>\n"
        "  </head>\n"
        "  <body>\n"
        "    <div class=\"gcc-diagnostic-list\">\n"
!       "      <div class=\"gcc-diagnostic\" id=\"gcc-diag-0\">\n"
!       "        <span class=\"gcc-message\" id=\"gcc-diag-0-message\">this is a test: `<span class=\"gcc-quoted-text\">foo</span>&apos;</span>\n"
        "      </div>\n"
        "    </div>\n"
        "  </body>\n"
--- 1442,1462 ----
  
    const xml::document &doc  = dc.get_document ();
  
!   ASSERT_XML_PRINT_EQ
!     (doc,
       ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
        "<!DOCTYPE html\n"
        "     PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n"
        "     \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n"
        "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
        "  <head>\n"
!       "    <title>(main input filename)</title>\n"
        "  </head>\n"
        "  <body>\n"
        "    <div class=\"gcc-diagnostic-list\">\n"
!       "      <div class=\"alert alert-danger\" id=\"gcc-diag-0\">\n"
!       "        <span class=\"pficon pficon-error-circle-o\"> </span>\n"
!       "        <div class=\"gcc-message\" id=\"gcc-diag-0-message\"><strong>error: </strong> this is a test: `<span class=\"gcc-quoted-text\">foo</span>&apos;</div>\n"
        "      </div>\n"
        "    </div>\n"
        "  </body>\n"
*************** test_metadata ()
*** 1020,1029 ****
      diagnostic_metadata metadata;
      metadata.add_cwe (415);
      auto element = b.make_element_for_metadata (metadata);
!     pretty_printer pp;
!     element->write_as_xml (&pp, 0, true);
!     ASSERT_STREQ
!       (pp_formatted_text (&pp),
         "<span class=\"gcc-metadata\">"
         "<span class=\"gcc-metadata-item\">"
         "["
--- 1473,1480 ----
      diagnostic_metadata metadata;
      metadata.add_cwe (415);
      auto element = b.make_element_for_metadata (metadata);
!     ASSERT_XML_PRINT_EQ
!       (*element,
         "<span class=\"gcc-metadata\">"
         "<span class=\"gcc-metadata-item\">"
         "["
*************** test_metadata ()
*** 1041,1050 ****
  					      "http://example.com");
      metadata.add_rule (rule);
      auto element = b.make_element_for_metadata (metadata);
!     pretty_printer pp;
!     element->write_as_xml (&pp, 0, true);
!     ASSERT_STREQ
!       (pp_formatted_text (&pp),
         "<span class=\"gcc-metadata\">"
         "<span class=\"gcc-metadata-item\">"
         "["
--- 1492,1499 ----
  					      "http://example.com");
      metadata.add_rule (rule);
      auto element = b.make_element_for_metadata (metadata);
!     ASSERT_XML_PRINT_EQ
!       (*element,
         "<span class=\"gcc-metadata\">"
         "<span class=\"gcc-metadata-item\">"
         "["
*************** void
*** 1063,1068 ****
--- 1512,1518 ----
  diagnostic_format_html_cc_tests ()
  {
    auto_fix_quotes fix_quotes;
+   test_token_printer ();
    test_simple_log ();
    test_metadata ();
  }
diff -Nrcpad gcc-16-20250608/gcc/diagnostic-format-json.cc gcc-16-20250615/gcc/diagnostic-format-json.cc
*** gcc-16-20250608/gcc/diagnostic-format-json.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/diagnostic-format-json.cc	Sun Jun 15 22:32:24 2025
*************** private:
*** 505,544 ****
  };
  
  /* Populate CONTEXT in preparation for JSON output (either to stderr, or
!    to a file).  */
  
! static void
  diagnostic_output_format_init_json (diagnostic_context &context,
  				    std::unique_ptr<json_output_format> fmt)
  {
    /* Don't colorize the text.  */
    pp_show_color (fmt->get_printer ()) = false;
    context.set_show_highlight_colors (false);
  
    context.set_output_format (std::move (fmt));
  }
  
! /* Populate CONTEXT in preparation for JSON output to stderr.  */
  
! void
  diagnostic_output_format_init_json_stderr (diagnostic_context &context,
  					   bool formatted)
  {
!   diagnostic_output_format_init_json
      (context,
       std::make_unique<json_stderr_output_format> (context,
  						  formatted));
  }
  
  /* Populate CONTEXT in preparation for JSON output to a file named
!    BASE_FILE_NAME.gcc.json.  */
  
! void
  diagnostic_output_format_init_json_file (diagnostic_context &context,
  					 bool formatted,
  					 const char *base_file_name)
  {
!   diagnostic_output_format_init_json
      (context,
       std::make_unique<json_file_output_format> (context,
  						formatted,
--- 505,551 ----
  };
  
  /* Populate CONTEXT in preparation for JSON output (either to stderr, or
!    to a file) using FMT.  Return a reference to *FMT.  */
  
! static diagnostic_output_format &
  diagnostic_output_format_init_json (diagnostic_context &context,
  				    std::unique_ptr<json_output_format> fmt)
  {
+   gcc_assert (fmt);
+   diagnostic_output_format &out = *fmt;
+ 
    /* Don't colorize the text.  */
    pp_show_color (fmt->get_printer ()) = false;
    context.set_show_highlight_colors (false);
  
    context.set_output_format (std::move (fmt));
+ 
+   return out;
  }
  
! /* Populate CONTEXT in preparation for JSON output to stderr.
!    Return a reference to the context's new sink.  */
  
! diagnostic_output_format &
  diagnostic_output_format_init_json_stderr (diagnostic_context &context,
  					   bool formatted)
  {
!   return diagnostic_output_format_init_json
      (context,
       std::make_unique<json_stderr_output_format> (context,
  						  formatted));
  }
  
  /* Populate CONTEXT in preparation for JSON output to a file named
!    BASE_FILE_NAME.gcc.json.
!    Return a reference to the context's new sink.  */
  
! diagnostic_output_format &
  diagnostic_output_format_init_json_file (diagnostic_context &context,
  					 bool formatted,
  					 const char *base_file_name)
  {
!   return diagnostic_output_format_init_json
      (context,
       std::make_unique<json_file_output_format> (context,
  						formatted,
diff -Nrcpad gcc-16-20250608/gcc/diagnostic-format-sarif.cc gcc-16-20250615/gcc/diagnostic-format-sarif.cc
*** gcc-16-20250608/gcc/diagnostic-format-sarif.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/diagnostic-format-sarif.cc	Sun Jun 15 22:32:24 2025
*************** public:
*** 751,757 ****
    sarif_builder (diagnostic_context &context,
  		 pretty_printer &printer,
  		 const line_maps *line_maps,
- 		 const char *main_input_filename_,
  		 std::unique_ptr<sarif_serialization_format> serialization_format,
  		 const sarif_generation_options &sarif_gen_opts);
    ~sarif_builder ();
--- 751,756 ----
*************** public:
*** 767,772 ****
--- 766,774 ----
      return m_logical_loc_mgr;
    }
  
+   void
+   set_main_input_filename (const char *name);
+ 
    void on_report_diagnostic (const diagnostic_info &diagnostic,
  			     diagnostic_t orig_diag_kind,
  			     diagnostic_sarif_format_buffer *buffer);
*************** sarif_thread_flow::add_location ()
*** 1643,1649 ****
  sarif_builder::sarif_builder (diagnostic_context &context,
  			      pretty_printer &printer,
  			      const line_maps *line_maps,
- 			      const char *main_input_filename_,
  			      std::unique_ptr<sarif_serialization_format> serialization_format,
  			      const sarif_generation_options &sarif_gen_opts)
  : m_context (context),
--- 1645,1650 ----
*************** sarif_builder::sarif_builder (diagnostic
*** 1672,1688 ****
  
    if (auto client_data_hooks = context.get_client_data_hooks ())
      m_logical_loc_mgr = client_data_hooks->get_logical_location_manager ();
- 
-   /* Mark MAIN_INPUT_FILENAME_ as the artifact that the tool was
-      instructed to scan.
-      Only quote the contents if it gets referenced by physical locations,
-      since otherwise the "no diagnostics" case would quote the main input
-      file, and doing so noticeably bloated the output seen in analyzer
-      integration testing (build directory went from 20G -> 21G).  */
-   if (main_input_filename_)
-     get_or_create_artifact (main_input_filename_,
- 			    diagnostic_artifact_role::analysis_target,
- 			    false);
  }
  
  sarif_builder::~sarif_builder ()
--- 1673,1678 ----
*************** sarif_builder::make_stack_from_backtrace
*** 1820,1825 ****
--- 1810,1829 ----
    return stack;
  }
  
+ void
+ sarif_builder::set_main_input_filename (const char *name)
+ {
+   /* Mark NAME as the artifact that the tool was instructed to scan.
+      Only quote the contents if it gets referenced by physical locations,
+      since otherwise the "no diagnostics" case would quote the main input
+      file, and doing so noticeably bloated the output seen in analyzer
+      integration testing (build directory went from 20G -> 21G).  */
+   if (name)
+     get_or_create_artifact (name,
+ 			    diagnostic_artifact_role::analysis_target,
+ 			    false);
+ }
+ 
  /* Implementation of "on_report_diagnostic" for SARIF output.  */
  
  void
*************** maybe_get_sarif_kind (enum logical_locat
*** 2731,2781 ****
      {
      default:
        gcc_unreachable ();
!     case LOGICAL_LOCATION_KIND_UNKNOWN:
        return nullptr;
  
      /* Kinds within executable code.  */
!     case LOGICAL_LOCATION_KIND_FUNCTION:
        return "function";
!     case LOGICAL_LOCATION_KIND_MEMBER:
        return "member";
!     case LOGICAL_LOCATION_KIND_MODULE:
        return "module";
!     case LOGICAL_LOCATION_KIND_NAMESPACE:
        return "namespace";
!     case LOGICAL_LOCATION_KIND_TYPE:
        return "type";
!     case LOGICAL_LOCATION_KIND_RETURN_TYPE:
        return "returnType";
!     case LOGICAL_LOCATION_KIND_PARAMETER:
        return "parameter";
!     case LOGICAL_LOCATION_KIND_VARIABLE:
        return "variable";
  
      /* Kinds within XML or HTML documents.  */
!     case LOGICAL_LOCATION_KIND_ELEMENT:
        return "element";
!     case LOGICAL_LOCATION_KIND_ATTRIBUTE:
        return "attribute";
!     case LOGICAL_LOCATION_KIND_TEXT:
        return "text";
!     case LOGICAL_LOCATION_KIND_COMMENT:
        return "comment";
!     case LOGICAL_LOCATION_KIND_PROCESSING_INSTRUCTION:
        return "processingInstruction";
!     case LOGICAL_LOCATION_KIND_DTD:
        return "dtd";
!     case LOGICAL_LOCATION_KIND_DECLARATION:
        return "declaration";
  
      /* Kinds within JSON documents.  */
!     case LOGICAL_LOCATION_KIND_OBJECT:
        return "object";
!     case LOGICAL_LOCATION_KIND_ARRAY:
        return "array";
!     case LOGICAL_LOCATION_KIND_PROPERTY:
        return "property";
!     case LOGICAL_LOCATION_KIND_VALUE:
        return "value";
      }
  }
--- 2735,2785 ----
      {
      default:
        gcc_unreachable ();
!     case logical_location_kind::unknown:
        return nullptr;
  
      /* Kinds within executable code.  */
!     case logical_location_kind::function:
        return "function";
!     case logical_location_kind::member:
        return "member";
!     case logical_location_kind::module_:
        return "module";
!     case logical_location_kind::namespace_:
        return "namespace";
!     case logical_location_kind::type:
        return "type";
!     case logical_location_kind::return_type:
        return "returnType";
!     case logical_location_kind::parameter:
        return "parameter";
!     case logical_location_kind::variable:
        return "variable";
  
      /* Kinds within XML or HTML documents.  */
!     case logical_location_kind::element:
        return "element";
!     case logical_location_kind::attribute:
        return "attribute";
!     case logical_location_kind::text:
        return "text";
!     case logical_location_kind::comment:
        return "comment";
!     case logical_location_kind::processing_instruction:
        return "processingInstruction";
!     case logical_location_kind::dtd:
        return "dtd";
!     case logical_location_kind::declaration:
        return "declaration";
  
      /* Kinds within JSON documents.  */
!     case logical_location_kind::object:
        return "object";
!     case logical_location_kind::array:
        return "array";
!     case logical_location_kind::property:
        return "property";
!     case logical_location_kind::value:
        return "value";
      }
  }
*************** public:
*** 3657,3662 ****
--- 3661,3672 ----
      diagnostic_output_format::dump (out, indent);
    }
  
+   void
+   set_main_input_filename (const char *name) final override
+   {
+     m_builder.set_main_input_filename (name);
+   }
+ 
    std::unique_ptr<diagnostic_per_format_buffer>
    make_per_format_buffer () final override
    {
*************** public:
*** 3722,3732 ****
  protected:
    sarif_output_format (diagnostic_context &context,
  		       const line_maps *line_maps,
- 		       const char *main_input_filename_,
  		       std::unique_ptr<sarif_serialization_format> serialization_format,
  		       const sarif_generation_options &sarif_gen_opts)
    : diagnostic_output_format (context),
!     m_builder (context, *get_printer (), line_maps, main_input_filename_,
  	       std::move (serialization_format), sarif_gen_opts),
      m_buffer (nullptr)
    {}
--- 3732,3741 ----
  protected:
    sarif_output_format (diagnostic_context &context,
  		       const line_maps *line_maps,
  		       std::unique_ptr<sarif_serialization_format> serialization_format,
  		       const sarif_generation_options &sarif_gen_opts)
    : diagnostic_output_format (context),
!     m_builder (context, *get_printer (), line_maps,
  	       std::move (serialization_format), sarif_gen_opts),
      m_buffer (nullptr)
    {}
*************** class sarif_stream_output_format : publi
*** 3740,3750 ****
  public:
    sarif_stream_output_format (diagnostic_context &context,
  			      const line_maps *line_maps,
- 			      const char *main_input_filename_,
  			      std::unique_ptr<sarif_serialization_format> serialization_format,
  			      const sarif_generation_options &sarif_gen_opts,
  			      FILE *stream)
!   : sarif_output_format (context, line_maps, main_input_filename_,
  			 std::move (serialization_format), sarif_gen_opts),
      m_stream (stream)
    {
--- 3749,3758 ----
  public:
    sarif_stream_output_format (diagnostic_context &context,
  			      const line_maps *line_maps,
  			      std::unique_ptr<sarif_serialization_format> serialization_format,
  			      const sarif_generation_options &sarif_gen_opts,
  			      FILE *stream)
!   : sarif_output_format (context, line_maps,
  			 std::move (serialization_format), sarif_gen_opts),
      m_stream (stream)
    {
*************** class sarif_file_output_format : public
*** 3766,3776 ****
  public:
    sarif_file_output_format (diagnostic_context &context,
  			    const line_maps *line_maps,
- 			    const char *main_input_filename_,
  			    std::unique_ptr<sarif_serialization_format> serialization_format,
  			    const sarif_generation_options &sarif_gen_opts,
  			    diagnostic_output_file output_file)
!   : sarif_output_format (context, line_maps, main_input_filename_,
  			 std::move (serialization_format), sarif_gen_opts),
      m_output_file (std::move (output_file))
    {
--- 3774,3783 ----
  public:
    sarif_file_output_format (diagnostic_context &context,
  			    const line_maps *line_maps,
  			    std::unique_ptr<sarif_serialization_format> serialization_format,
  			    const sarif_generation_options &sarif_gen_opts,
  			    diagnostic_output_file output_file)
!   : sarif_output_format (context, line_maps,
  			 std::move (serialization_format), sarif_gen_opts),
      m_output_file (std::move (output_file))
    {
*************** sarif_builder::sarif_token_printer::prin
*** 3914,3947 ****
  }
  
  /* Populate CONTEXT in preparation for SARIF output (either to stderr, or
!    to a file).  */
  
! static void
  diagnostic_output_format_init_sarif (diagnostic_context &context,
  				     std::unique_ptr<sarif_output_format> fmt)
  {
    fmt->update_printer ();
  
    context.set_output_format (std::move (fmt));
  }
  
! /* Populate CONTEXT in preparation for SARIF output to stderr.  */
  
! void
  diagnostic_output_format_init_sarif_stderr (diagnostic_context &context,
  					    const line_maps *line_maps,
- 					    const char *main_input_filename_,
  					    bool formatted)
  {
    gcc_assert (line_maps);
    const sarif_generation_options sarif_gen_opts;
    auto serialization
      = std::make_unique<sarif_serialization_format_json> (formatted);
!   diagnostic_output_format_init_sarif
      (context,
       std::make_unique<sarif_stream_output_format> (context,
  						   line_maps,
- 						   main_input_filename_,
  						   std::move (serialization),
  						   sarif_gen_opts,
  						   stderr));
--- 3921,3959 ----
  }
  
  /* Populate CONTEXT in preparation for SARIF output (either to stderr, or
!    to a file).
!    Return a reference to *FMT.  */
  
! static diagnostic_output_format &
  diagnostic_output_format_init_sarif (diagnostic_context &context,
  				     std::unique_ptr<sarif_output_format> fmt)
  {
+   gcc_assert (fmt);
+   diagnostic_output_format &out = *fmt;
+ 
    fmt->update_printer ();
  
    context.set_output_format (std::move (fmt));
+ 
+   return out;
  }
  
! /* Populate CONTEXT in preparation for SARIF output to stderr.
!    Return a reference to the new sink.  */
  
! diagnostic_output_format &
  diagnostic_output_format_init_sarif_stderr (diagnostic_context &context,
  					    const line_maps *line_maps,
  					    bool formatted)
  {
    gcc_assert (line_maps);
    const sarif_generation_options sarif_gen_opts;
    auto serialization
      = std::make_unique<sarif_serialization_format_json> (formatted);
!   return diagnostic_output_format_init_sarif
      (context,
       std::make_unique<sarif_stream_output_format> (context,
  						   line_maps,
  						   std::move (serialization),
  						   sarif_gen_opts,
  						   stderr));
*************** diagnostic_output_format_open_sarif_file
*** 4018,4029 ****
  }
  
  /* Populate CONTEXT in preparation for SARIF output to a file named
!    BASE_FILE_NAME.sarif.  */
  
! void
  diagnostic_output_format_init_sarif_file (diagnostic_context &context,
  					  line_maps *line_maps,
- 					  const char *main_input_filename_,
  					  bool formatted,
  					  const char *base_file_name)
  {
--- 4030,4041 ----
  }
  
  /* Populate CONTEXT in preparation for SARIF output to a file named
!    BASE_FILE_NAME.sarif.
!    Return a reference to the new sink.  */
  
! diagnostic_output_format &
  diagnostic_output_format_init_sarif_file (diagnostic_context &context,
  					  line_maps *line_maps,
  					  bool formatted,
  					  const char *base_file_name)
  {
*************** diagnostic_output_format_init_sarif_file
*** 4038,4059 ****
      = std::make_unique<sarif_serialization_format_json> (formatted);
  
    const sarif_generation_options sarif_gen_opts;
!   diagnostic_output_format_init_sarif
      (context,
       std::make_unique<sarif_file_output_format> (context,
  						 line_maps,
- 						 main_input_filename_,
  						 std::move (serialization),
  						 sarif_gen_opts,
  						 std::move (output_file)));
  }
  
! /* Populate CONTEXT in preparation for SARIF output to STREAM.  */
  
! void
  diagnostic_output_format_init_sarif_stream (diagnostic_context &context,
  					    const line_maps *line_maps,
- 					    const char *main_input_filename_,
  					    bool formatted,
  					    FILE *stream)
  {
--- 4050,4070 ----
      = std::make_unique<sarif_serialization_format_json> (formatted);
  
    const sarif_generation_options sarif_gen_opts;
!   return diagnostic_output_format_init_sarif
      (context,
       std::make_unique<sarif_file_output_format> (context,
  						 line_maps,
  						 std::move (serialization),
  						 sarif_gen_opts,
  						 std::move (output_file)));
  }
  
! /* Populate CONTEXT in preparation for SARIF output to STREAM.
!    Return a reference to the new sink.  */
  
! diagnostic_output_format &
  diagnostic_output_format_init_sarif_stream (diagnostic_context &context,
  					    const line_maps *line_maps,
  					    bool formatted,
  					    FILE *stream)
  {
*************** diagnostic_output_format_init_sarif_stre
*** 4061,4071 ****
    const sarif_generation_options sarif_gen_opts;
    auto serialization
      = std::make_unique<sarif_serialization_format_json> (formatted);
!   diagnostic_output_format_init_sarif
      (context,
       std::make_unique<sarif_stream_output_format> (context,
  						   line_maps,
- 						   main_input_filename_,
  						   std::move (serialization),
  						   sarif_gen_opts,
  						   stream));
--- 4072,4081 ----
    const sarif_generation_options sarif_gen_opts;
    auto serialization
      = std::make_unique<sarif_serialization_format_json> (formatted);
!   return diagnostic_output_format_init_sarif
      (context,
       std::make_unique<sarif_stream_output_format> (context,
  						   line_maps,
  						   std::move (serialization),
  						   sarif_gen_opts,
  						   stream));
*************** diagnostic_output_format_init_sarif_stre
*** 4074,4080 ****
  std::unique_ptr<diagnostic_output_format>
  make_sarif_sink (diagnostic_context &context,
  		 const line_maps &line_maps,
- 		 const char *main_input_filename_,
  		 std::unique_ptr<sarif_serialization_format> serialization,
  		 const sarif_generation_options &sarif_gen_opts,
  		 diagnostic_output_file output_file)
--- 4084,4089 ----
*************** make_sarif_sink (diagnostic_context &con
*** 4082,4088 ****
    auto sink
      = std::make_unique<sarif_file_output_format> (context,
  						  &line_maps,
- 						  main_input_filename_,
  						  std::move (serialization),
  						  sarif_gen_opts,
  						  std::move (output_file));
--- 4091,4096 ----
*************** public:
*** 4183,4193 ****
    {
      auto format = std::make_unique<buffered_output_format> (*this,
  							    line_table,
- 							    main_input_filename,
  							    true,
  							    sarif_gen_opts);
      m_format = format.get (); // borrowed
      diagnostic_output_format_init_sarif (*this, std::move (format));
    }
  
    std::unique_ptr<sarif_log> flush_to_object ()
--- 4191,4201 ----
    {
      auto format = std::make_unique<buffered_output_format> (*this,
  							    line_table,
  							    true,
  							    sarif_gen_opts);
      m_format = format.get (); // borrowed
      diagnostic_output_format_init_sarif (*this, std::move (format));
+     m_format->set_main_input_filename (main_input_filename);
    }
  
    std::unique_ptr<sarif_log> flush_to_object ()
*************** private:
*** 4204,4213 ****
    public:
      buffered_output_format (diagnostic_context &context,
  			    const line_maps *line_maps,
- 			    const char *main_input_filename_,
  			    bool formatted,
  			    const sarif_generation_options &sarif_gen_opts)
!     : sarif_output_format (context, line_maps, main_input_filename_,
  			   std::make_unique<sarif_serialization_format_json>
  			     (formatted),
  			   sarif_gen_opts)
--- 4212,4220 ----
    public:
      buffered_output_format (diagnostic_context &context,
  			    const line_maps *line_maps,
  			    bool formatted,
  			    const sarif_generation_options &sarif_gen_opts)
!     : sarif_output_format (context, line_maps,
  			   std::make_unique<sarif_serialization_format_json>
  			     (formatted),
  			   sarif_gen_opts)
*************** test_make_location_object (const sarif_g
*** 4243,4249 ****
    test_diagnostic_context dc;
    pretty_printer pp;
    sarif_builder builder
!     (dc, pp, line_table, "MAIN_INPUT_FILENAME",
       std::make_unique<sarif_serialization_format_json> (true),
       sarif_gen_opts);
  
--- 4250,4256 ----
    test_diagnostic_context dc;
    pretty_printer pp;
    sarif_builder builder
!     (dc, pp, line_table,
       std::make_unique<sarif_serialization_format_json> (true),
       sarif_gen_opts);
  
diff -Nrcpad gcc-16-20250608/gcc/diagnostic-format-sarif.h gcc-16-20250615/gcc/diagnostic-format-sarif.h
*** gcc-16-20250608/gcc/diagnostic-format-sarif.h	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/diagnostic-format-sarif.h	Sun Jun 15 22:32:24 2025
*************** diagnostic_output_format_open_sarif_file
*** 41,61 ****
  					  const char *base_file_name,
  					  enum sarif_serialization_kind serialization_kind);
  
! extern void
  diagnostic_output_format_init_sarif_stderr (diagnostic_context &context,
  					    const line_maps *line_maps,
- 					    const char *main_input_filename_,
  					    bool formatted);
! extern void
  diagnostic_output_format_init_sarif_file (diagnostic_context &context,
  					  line_maps *line_maps,
- 					  const char *main_input_filename_,
  					  bool formatted,
  					  const char *base_file_name);
! extern void
  diagnostic_output_format_init_sarif_stream (diagnostic_context &context,
  					    const line_maps *line_maps,
- 					    const char *main_input_filename_,
  					    bool formatted,
  					    FILE *stream);
  
--- 41,58 ----
  					  const char *base_file_name,
  					  enum sarif_serialization_kind serialization_kind);
  
! extern diagnostic_output_format &
  diagnostic_output_format_init_sarif_stderr (diagnostic_context &context,
  					    const line_maps *line_maps,
  					    bool formatted);
! extern diagnostic_output_format &
  diagnostic_output_format_init_sarif_file (diagnostic_context &context,
  					  line_maps *line_maps,
  					  bool formatted,
  					  const char *base_file_name);
! extern diagnostic_output_format &
  diagnostic_output_format_init_sarif_stream (diagnostic_context &context,
  					    const line_maps *line_maps,
  					    bool formatted,
  					    FILE *stream);
  
*************** struct sarif_generation_options
*** 109,115 ****
  extern std::unique_ptr<diagnostic_output_format>
  make_sarif_sink (diagnostic_context &context,
  		 const line_maps &line_maps,
- 		 const char *main_input_filename_,
  		 std::unique_ptr<sarif_serialization_format> serialization_format,
  		 const sarif_generation_options &sarif_gen_opts,
  		 diagnostic_output_file output_file);
--- 106,111 ----
diff -Nrcpad gcc-16-20250608/gcc/diagnostic-format.h gcc-16-20250615/gcc/diagnostic-format.h
*** gcc-16-20250608/gcc/diagnostic-format.h	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/diagnostic-format.h	Sun Jun 15 22:32:24 2025
*************** public:
*** 36,41 ****
--- 36,45 ----
  
    virtual void dump (FILE *out, int indent) const;
  
+   /* Vfunc for notifying this format what the primary input file is,
+      e.g. for titles of HTML, for SARIF's artifact metadata.  */
+   virtual void set_main_input_filename (const char *) {}
+ 
    /* Vfunc for making an appropriate diagnostic_per_format_buffer
       subclass for this format.  */
    virtual std::unique_ptr<diagnostic_per_format_buffer>
*************** diagnostic_output_format_init (diagnosti
*** 95,104 ****
  			       const char *base_file_name,
  			       enum diagnostics_output_format,
  			       bool json_formatting);
! extern void
  diagnostic_output_format_init_json_stderr (diagnostic_context &context,
  					   bool formatted);
! extern void
  diagnostic_output_format_init_json_file (diagnostic_context &context,
  					 bool formatted,
  					 const char *base_file_name);
--- 99,109 ----
  			       const char *base_file_name,
  			       enum diagnostics_output_format,
  			       bool json_formatting);
! 
! extern diagnostic_output_format &
  diagnostic_output_format_init_json_stderr (diagnostic_context &context,
  					   bool formatted);
! extern diagnostic_output_format &
  diagnostic_output_format_init_json_file (diagnostic_context &context,
  					 bool formatted,
  					 const char *base_file_name);
diff -Nrcpad gcc-16-20250608/gcc/diagnostic-path-output.cc gcc-16-20250615/gcc/diagnostic-path-output.cc
*** gcc-16-20250608/gcc/diagnostic-path-output.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/diagnostic-path-output.cc	Sun Jun 15 22:32:24 2025
*************** begin_html_stack_frame (xml::printer &xp
*** 321,327 ****
        {
  	xp.push_tag_with_class ("td", "interprocmargin", false);
  	xp.set_attr ("style", "padding-left: 100px");
! 	xp.pop_tag ();
        }
        xp.push_tag_with_class ("td", "stack-frame", false);
        label_text funcname
--- 321,327 ----
        {
  	xp.push_tag_with_class ("td", "interprocmargin", false);
  	xp.set_attr ("style", "padding-left: 100px");
! 	xp.pop_tag ("td");
        }
        xp.push_tag_with_class ("td", "stack-frame", false);
        label_text funcname
*************** begin_html_stack_frame (xml::printer &xp
*** 331,338 ****
  	  xp.push_tag_with_class ("div", "frame-funcname", false);
  	  xp.push_tag ("span", true);
  	  xp.add_text (funcname.get ());
! 	  xp.pop_tag (); // span
! 	  xp.pop_tag (); // div
  	}
      }
    return std::make_unique<stack_frame> (std::move (parent),
--- 331,338 ----
  	  xp.push_tag_with_class ("div", "frame-funcname", false);
  	  xp.push_tag ("span", true);
  	  xp.add_text (funcname.get ());
! 	  xp.pop_tag ("span");
! 	  xp.pop_tag ("div");
  	}
      }
    return std::make_unique<stack_frame> (std::move (parent),
*************** end_html_stack_frame (xml::printer &xp,
*** 350,358 ****
    auto parent = std::move (frame->m_parent);
    if (frame->m_logical_loc)
      {
!       xp.pop_tag (); // td
!       xp.pop_tag (); // tr
!       xp.pop_tag (); // table
      }
    return parent;
  }
--- 350,358 ----
    auto parent = std::move (frame->m_parent);
    if (frame->m_logical_loc)
      {
!       xp.pop_tag ("td");
!       xp.pop_tag ("tr");
!       xp.pop_tag ("table");
      }
    return parent;
  }
*************** struct event_range
*** 689,695 ****
  	    iter_event.print_desc (pp);
  	    if (event_label_writer)
  	      event_label_writer->begin_label ();
! 	    xp.add_text (pp_formatted_text (&pp));
  	    if (event_label_writer)
  	      event_label_writer->end_label ();
  	  }
--- 689,695 ----
  	    iter_event.print_desc (pp);
  	    if (event_label_writer)
  	      event_label_writer->begin_label ();
! 	    xp.add_text_from_pp (pp);
  	    if (event_label_writer)
  	      event_label_writer->end_label ();
  	  }
*************** print_path_summary_as_html (const path_s
*** 1230,1236 ****
  	    {
  	      xp.push_tag_with_class ("span", "funcname", true);
  	      xp.add_text (funcname.get ());
! 	      xp.pop_tag (); //span
  	      xp.add_text (": ");
  	    }
  	}
--- 1230,1236 ----
  	    {
  	      xp.push_tag_with_class ("span", "funcname", true);
  	      xp.add_text (funcname.get ());
! 	      xp.pop_tag ("span");
  	      xp.add_text (": ");
  	    }
  	}
*************** print_path_summary_as_html (const path_s
*** 1243,1250 ****
  	else
  	  pp_printf (&pp, "events %i-%i",
  		     range->m_start_idx + 1, range->m_end_idx + 1);
! 	xp.add_text (pp_formatted_text (&pp));
! 	xp.pop_tag (); // span
        }
        if (show_depths)
  	{
--- 1243,1250 ----
  	else
  	  pp_printf (&pp, "events %i-%i",
  		     range->m_start_idx + 1, range->m_end_idx + 1);
! 	xp.add_text_from_pp (pp);
! 	xp.pop_tag ("span");
        }
        if (show_depths)
  	{
*************** print_path_summary_as_html (const path_s
*** 1252,1261 ****
  	  xp.push_tag_with_class ("span", "depth", true);
  	  pretty_printer pp;
  	  pp_printf (&pp, "(depth %i)", range->m_stack_depth);
! 	  xp.add_text (pp_formatted_text (&pp));
! 	  xp.pop_tag (); //span
  	}
!       xp.pop_tag (); // div
  
        /* Print a run of events.  */
        thread_event_printer &tep = thread_event_printers[swimlane_idx];
--- 1252,1261 ----
  	  xp.push_tag_with_class ("span", "depth", true);
  	  pretty_printer pp;
  	  pp_printf (&pp, "(depth %i)", range->m_stack_depth);
! 	  xp.add_text_from_pp (pp);
! 	  xp.pop_tag ("span");
  	}
!       xp.pop_tag ("div");
  
        /* Print a run of events.  */
        thread_event_printer &tep = thread_event_printers[swimlane_idx];
*************** print_path_summary_as_html (const path_s
*** 1267,1282 ****
  						  range, &effect_info);
        last_out_edge_column = effect_info.m_trailing_out_edge_column;
  
!       xp.pop_tag (); // td
!       xp.pop_tag (); // tr
!       xp.pop_tag (); // table
      }
  
    /* Close outstanding frames.  */
    while (curr_frame)
      curr_frame = end_html_stack_frame (xp, std::move (curr_frame));
  
!   xp.pop_tag (); // div
  }
  
  } /* end of anonymous namespace for path-printing code.  */
--- 1267,1282 ----
  						  range, &effect_info);
        last_out_edge_column = effect_info.m_trailing_out_edge_column;
  
!       xp.pop_tag ("td");
!       xp.pop_tag ("tr");
!       xp.pop_tag ("table");
      }
  
    /* Close outstanding frames.  */
    while (curr_frame)
      curr_frame = end_html_stack_frame (xp, std::move (curr_frame));
  
!   xp.pop_tag ("div");
  }
  
  } /* end of anonymous namespace for path-printing code.  */
diff -Nrcpad gcc-16-20250608/gcc/diagnostic-show-locus.cc gcc-16-20250615/gcc/diagnostic-show-locus.cc
*** gcc-16-20250608/gcc/diagnostic-show-locus.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/diagnostic-show-locus.cc	Sun Jun 15 22:32:24 2025
*************** struct to_text
*** 408,413 ****
--- 408,419 ----
  {
    friend class layout_printer<to_text>;
  
+   // This is a RAII class for HTML, but is a no-op for text.
+   struct auto_check_tag_nesting
+   {
+     auto_check_tag_nesting (to_text &) {}
+   };
+ 
    to_text (pretty_printer &pp,
  	   colorizer &colorizer)
    : m_pp (pp),
*************** struct to_text
*** 446,452 ****
    {
      // no-op for text
    }
!   void pop_html_tag (std::string)
    {
      // no-op for text
    }
--- 452,458 ----
    {
      // no-op for text
    }
!   void pop_html_tag (const char *)
    {
      // no-op for text
    }
*************** struct to_html
*** 538,543 ****
--- 544,559 ----
  {
    friend class layout_printer<to_html>;
  
+   // RAII class for ensuring that the tags nested correctly
+   struct auto_check_tag_nesting : public xml::auto_check_tag_nesting
+   {
+   public:
+     auto_check_tag_nesting (to_html &sink)
+     : xml::auto_check_tag_nesting (sink.m_xp)
+     {
+     }
+   };
+ 
    to_html (xml::printer &xp,
  	   const rich_location *richloc,
  	   html_label_writer *html_label_writer)
*************** struct to_html
*** 569,577 ****
  			      preserve_whitespace);
    }
  
!   void pop_html_tag (std::string /*name*/)
    {
!     m_xp.pop_tag ();
    }
  
    void add_html_tag_with_class (std::string name,
--- 585,593 ----
  			      preserve_whitespace);
    }
  
!   void pop_html_tag (const char *expected_name)
    {
!     m_xp.pop_tag (expected_name);
    }
  
    void add_html_tag_with_class (std::string name,
*************** struct to_html
*** 598,604 ****
    {
      pp_clear_output_area (&m_scratch_pp);
      pp_unicode_character (&m_scratch_pp, ch);
!     m_xp.add_text (pp_formatted_text (&m_scratch_pp));
    }
  
    void add_utf8_byte (char b)
--- 614,620 ----
    {
      pp_clear_output_area (&m_scratch_pp);
      pp_unicode_character (&m_scratch_pp, ch);
!     m_xp.add_text_from_pp (m_scratch_pp);
    }
  
    void add_utf8_byte (char b)
*************** default_diagnostic_start_span_fn<to_html
*** 728,734 ****
  				       false);
    sink.m_xp.push_tag_with_class ("span", "location", true);
    sink.m_xp.add_text (text.get ());
!   sink.m_xp.pop_tag (); // span
  }
  
  namespace {
--- 744,750 ----
  				       false);
    sink.m_xp.push_tag_with_class ("span", "location", true);
    sink.m_xp.add_text (text.get ());
!   sink.m_xp.pop_tag ("span");
  }
  
  namespace {
*************** layout_printer<to_html>::end_label (int
*** 2719,2725 ****
  				    bool is_label_text)
  {
    if (m_sink.get_highlight_color_for_range_idx (range_idx))
!     m_sink.m_xp.pop_tag ();
  
    if (is_label_text && m_sink.m_html_label_writer)
      m_sink.m_html_label_writer->end_label ();
--- 2735,2741 ----
  				    bool is_label_text)
  {
    if (m_sink.get_highlight_color_for_range_idx (range_idx))
!     m_sink.m_xp.pop_tag ("span");
  
    if (is_label_text && m_sink.m_html_label_writer)
      m_sink.m_html_label_writer->end_label ();
*************** template<typename Sink>
*** 3438,3443 ****
--- 3454,3461 ----
  void
  layout_printer<Sink>::print_trailing_fixits (linenum_type row)
  {
+   typename Sink::auto_check_tag_nesting sentinel (m_sink);
+ 
    /* Build a list of correction instances for the line,
       potentially consolidating hints (for the sake of readability).  */
    line_corrections corrections (m_layout.m_file_cache, m_layout.m_char_policy,
*************** layout_printer<Sink>::print_trailing_fix
*** 3509,3517 ****
  	}
      }
  
-   if (!corrections.m_corrections.is_empty ())
-     m_sink.pop_html_tag ("td");
- 
    /* Add a trailing newline, if necessary.  */
    move_to_column (&column, 1 + m_layout.m_x_offset_display, false);
  }
--- 3527,3532 ----
*************** template<typename Sink>
*** 3691,3696 ****
--- 3706,3713 ----
  void
  layout_printer<Sink>::print_line (linenum_type row)
  {
+   typename Sink::auto_check_tag_nesting sentinel (m_sink);
+ 
    char_span line
      = m_layout.m_file_cache.get_source_line (m_layout.m_exploc.file, row);
    if (!line)
*************** diagnostic_source_print_policy::print_as
*** 3948,3953 ****
--- 3965,3971 ----
    to_html sink (xp, &richloc, label_writer);
    layout_printer<to_html> lp (sink, layout,
  			      diagnostic_kind == DK_DIAGNOSTIC_PATH);
+   xml::auto_check_tag_nesting sentinel (xp);
    lp.print (*this);
  }
  
*************** template <typename Sink>
*** 3955,3960 ****
--- 3973,3980 ----
  void
  layout_printer<Sink>::print (const diagnostic_source_print_policy &source_policy)
  {
+   typename Sink::auto_check_tag_nesting sentinel (m_sink);
+ 
    m_sink.push_html_tag_with_class ("table", "locus", false);
  
    if (get_options ().show_ruler_p)
diff -Nrcpad gcc-16-20250608/gcc/diagnostic.cc gcc-16-20250615/gcc/diagnostic.cc
*** gcc-16-20250608/gcc/diagnostic.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/diagnostic.cc	Sun Jun 15 22:32:24 2025
*************** logical_location_manager::function_p (ke
*** 1059,1075 ****
      {
      default:
        gcc_unreachable ();
!     case LOGICAL_LOCATION_KIND_UNKNOWN:
!     case LOGICAL_LOCATION_KIND_MODULE:
!     case LOGICAL_LOCATION_KIND_NAMESPACE:
!     case LOGICAL_LOCATION_KIND_TYPE:
!     case LOGICAL_LOCATION_KIND_RETURN_TYPE:
!     case LOGICAL_LOCATION_KIND_PARAMETER:
!     case LOGICAL_LOCATION_KIND_VARIABLE:
        return false;
  
!     case LOGICAL_LOCATION_KIND_FUNCTION:
!     case LOGICAL_LOCATION_KIND_MEMBER:
        return true;
      }
  }
--- 1059,1075 ----
      {
      default:
        gcc_unreachable ();
!     case logical_location_kind::unknown:
!     case logical_location_kind::module_:
!     case logical_location_kind::namespace_:
!     case logical_location_kind::type:
!     case logical_location_kind::return_type:
!     case logical_location_kind::parameter:
!     case logical_location_kind::variable:
        return false;
  
!     case logical_location_kind::function:
!     case logical_location_kind::member:
        return true;
      }
  }
*************** diagnostic_output_format_init (diagnosti
*** 1865,1870 ****
--- 1865,1871 ----
  			       enum diagnostics_output_format format,
  			       bool json_formatting)
  {
+   diagnostic_output_format *new_sink = nullptr;
    switch (format)
      {
      default:
*************** diagnostic_output_format_init (diagnosti
*** 1874,1904 ****
        break;
  
      case DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR:
!       diagnostic_output_format_init_json_stderr (context,
! 						 json_formatting);
        break;
  
      case DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE:
!       diagnostic_output_format_init_json_file (context,
! 					       json_formatting,
! 					       base_file_name);
        break;
  
      case DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR:
!       diagnostic_output_format_init_sarif_stderr (context,
! 						  line_table,
! 						  main_input_filename_,
! 						  json_formatting);
        break;
  
      case DIAGNOSTICS_OUTPUT_FORMAT_SARIF_FILE:
!       diagnostic_output_format_init_sarif_file (context,
! 						line_table,
! 						main_input_filename_,
! 						json_formatting,
! 						base_file_name);
        break;
      }
  }
  
  /* Initialize this context's m_diagrams based on CHARSET.
--- 1875,1905 ----
        break;
  
      case DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR:
!       new_sink = &diagnostic_output_format_init_json_stderr (context,
! 							     json_formatting);
        break;
  
      case DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE:
!       new_sink = &diagnostic_output_format_init_json_file (context,
! 							   json_formatting,
! 							   base_file_name);
        break;
  
      case DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR:
!       new_sink = &diagnostic_output_format_init_sarif_stderr (context,
! 							      line_table,
! 							      json_formatting);
        break;
  
      case DIAGNOSTICS_OUTPUT_FORMAT_SARIF_FILE:
!       new_sink = &diagnostic_output_format_init_sarif_file (context,
! 							line_table,
! 							    json_formatting,
! 							    base_file_name);
        break;
      }
+   if (new_sink)
+     new_sink->set_main_input_filename (main_input_filename_);
  }
  
  /* Initialize this context's m_diagrams based on CHARSET.
diff -Nrcpad gcc-16-20250608/gcc/doc/extend.texi gcc-16-20250615/gcc/doc/extend.texi
*** gcc-16-20250608/gcc/doc/extend.texi	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/doc/extend.texi	Sun Jun 15 22:32:24 2025
*************** behavior and permissible arguments are t
*** 3879,3884 ****
--- 3879,3885 ----
  
  @cindex @code{outline-atomics} function attribute, AArch64
  @item outline-atomics
+ @itemx no-outline-atomics
  Enable or disable calls to out-of-line helpers to implement atomic operations.
  This corresponds to the behavior of the command-line options
  @option{-moutline-atomics} and @option{-mno-outline-atomics}.
diff -Nrcpad gcc-16-20250608/gcc/doc/install.texi gcc-16-20250615/gcc/doc/install.texi
*** gcc-16-20250608/gcc/doc/install.texi	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/doc/install.texi	Sun Jun 15 22:32:24 2025
*************** default set of libraries is selected bas
*** 1343,1353 ****
  @item amdgcn*-*-*
  @var{list} is a comma separated list of ISA names (allowed values:
  @code{gfx900}, @code{gfx902}, @code{gfx904}, @code{gfx906}, @code{gfx908},
! @code{gfx909}, @code{gfx90a}, @code{gfx90c}, @code{gfx9-generic},
! @code{gfx1030}, @code{gfx1031}, @code{gfx1032}, @code{gfx1033},
! @code{gfx1034}, @code{gfx1035}, @code{gfx1036}, @code{gfx10-3-generic},
! @code{gfx1100}, @code{gfx1101}, @code{gfx1102}, @code{gfx1103},
! @code{gfx1150}, @code{gfx1151}, @code{gfx1152}, @code{gfx1153},
  @code{gfx11-generic}).  It ought not include the name of the default
  ISA, specified via @option{--with-arch}.  If @var{list} is empty, then there
  will be no multilibs and only the default run-time library will be built.  If
--- 1343,1353 ----
  @item amdgcn*-*-*
  @var{list} is a comma separated list of ISA names (allowed values:
  @code{gfx900}, @code{gfx902}, @code{gfx904}, @code{gfx906}, @code{gfx908},
! @code{gfx909}, @code{gfx90a}, @code{gfx90c}, @code{gfx942}, @code{gfx950},
! @code{gfx9-generic}, @code{gfx9-4-generic}, @code{gfx1030}, @code{gfx1031},
! @code{gfx1032}, @code{gfx1033}, @code{gfx1034}, @code{gfx1035}, @code{gfx1036},
! @code{gfx10-3-generic}, @code{gfx1100}, @code{gfx1101}, @code{gfx1102},
! @code{gfx1103}, @code{gfx1150}, @code{gfx1151}, @code{gfx1152}, @code{gfx1153},
  @code{gfx11-generic}).  It ought not include the name of the default
  ISA, specified via @option{--with-arch}.  If @var{list} is empty, then there
  will be no multilibs and only the default run-time library will be built.  If
*************** By default, multilib support is built fo
*** 4064,4072 ****
  requires LLVM 15 or newer.  LLVM 13.0.1 or LLVM 14 can be used by specifying
  a @code{--with-multilib-list=} that does not list any GFX 11 device nor
  @code{gfx1036}.  At least LLVM 16 is required for @code{gfx1150} and
! @code{gfx1151}, LLVM 19 for the generic @code{gfx9-generic},
! @code{gfx10-3-generic}, and @code{gfx11-generic} targets and for
! @code{gfx1152}, while LLVM 20 is required for @code{gfx1153}.
  
  The supported ISA architectures are listed in the GCC manual. The generic
  ISA targets @code{gfx9-generic}, @code{gfx10-3-generic}, and
--- 4064,4073 ----
  requires LLVM 15 or newer.  LLVM 13.0.1 or LLVM 14 can be used by specifying
  a @code{--with-multilib-list=} that does not list any GFX 11 device nor
  @code{gfx1036}.  At least LLVM 16 is required for @code{gfx1150} and
! @code{gfx1151}, LLVM 18 for @code{gfx942}, LLVM 19 for the generic
! @code{gfx9-generic}, @code{gfx9-4-generic}, @code{gfx10-3-generic}, and
! @code{gfx11-generic} targets and for @code{gfx1152}, while LLVM 20 is required
! for @code{gfx950} and @code{gfx1153}.
  
  The supported ISA architectures are listed in the GCC manual. The generic
  ISA targets @code{gfx9-generic}, @code{gfx10-3-generic}, and
diff -Nrcpad gcc-16-20250608/gcc/doc/invoke.texi gcc-16-20250615/gcc/doc/invoke.texi
*** gcc-16-20250608/gcc/doc/invoke.texi	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/doc/invoke.texi	Sun Jun 15 22:32:24 2025
*************** this parameter.  The default value of th
*** 17325,17330 ****
--- 17325,17334 ----
  @item vect-induction-float
  Enable loop vectorization of floating point inductions.
  
+ @item vect-scalar-cost-multiplier
+ Apply the given multiplier % to scalar loop costing during vectorization.
+ Increasing the cost multiplier will make vector loops more profitable.
+ 
  @item vrp-block-limit
  Maximum number of basic blocks before VRP switches to a lower memory algorithm.
  
*************** Compile for CDNA2 Instinct MI200 series
*** 22669,22678 ****
--- 22673,22692 ----
  @item gfx90c
  Compile for GCN5 Vega 7 devices (gfx90c).
  
+ @item gfx942
+ Compile for CDNA3 Instinct MI300 series devices (gfx942). (Experimental)
+ 
+ @item gfx950
+ Compile for the CDNA3 gfx950 devices. (Experimental)
+ 
  @item gfx9-generic
  Compile generic code for Vega devices, executable on the following subset of
  GFX9 devices: gfx900, gfx902, gfx904, gfx906, gfx909 and gfx90c. (Experimental)
  
+ @item gfx9-4-generic
+ Compile generic code for CDNA3 devices, executable on the following subset of
+ GFX9 devices: gfx942 and gfx950. (Experimental)
+ 
  @item gfx1030
  Compile for RDNA2 gfx1030 devices (GFX10 series).
  
diff -Nrcpad gcc-16-20250608/gcc/doc/riscv-ext.texi gcc-16-20250615/gcc/doc/riscv-ext.texi
*** gcc-16-20250608/gcc/doc/riscv-ext.texi	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/doc/riscv-ext.texi	Sun Jun 15 22:32:24 2025
***************
*** 520,526 ****
  
  @item smrnmi
  @tab 1.0
! @tab Resumable Non-Maskable Interrupts
  
  @item smstateen
  @tab 1.0
--- 520,526 ----
  
  @item smrnmi
  @tab 1.0
! @tab Resumable non-maskable interrupts
  
  @item smstateen
  @tab 1.0
diff -Nrcpad gcc-16-20250608/gcc/expr.cc gcc-16-20250615/gcc/expr.cc
*** gcc-16-20250608/gcc/expr.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/expr.cc	Sun Jun 15 22:32:24 2025
*************** expand_expr_divmod (tree_code code, mach
*** 9681,9688 ****
  		|| code == CEIL_MOD_EXPR || code == ROUND_MOD_EXPR);
    if (SCALAR_INT_MODE_P (mode)
        && optimize >= 2
!       && get_range_pos_neg (treeop0) == 1
!       && get_range_pos_neg (treeop1) == 1)
      {
        /* If both arguments are known to be positive when interpreted
  	 as signed, we can expand it as both signed and unsigned
--- 9681,9688 ----
  		|| code == CEIL_MOD_EXPR || code == ROUND_MOD_EXPR);
    if (SCALAR_INT_MODE_P (mode)
        && optimize >= 2
!       && get_range_pos_neg (treeop0, currently_expanding_gimple_stmt) == 1
!       && get_range_pos_neg (treeop1, currently_expanding_gimple_stmt) == 1)
      {
        /* If both arguments are known to be positive when interpreted
  	 as signed, we can expand it as both signed and unsigned
*************** expand_expr_real_2 (const_sepops ops, rt
*** 9879,9892 ****
  	op0 = gen_rtx_fmt_e (TYPE_UNSIGNED (TREE_TYPE (treeop0))
  			     ? ZERO_EXTEND : SIGN_EXTEND, mode, op0);
  
        else if (target == 0)
! 	op0 = convert_to_mode (mode, op0,
! 			       TYPE_UNSIGNED (TREE_TYPE
! 					      (treeop0)));
        else
  	{
! 	  convert_move (target, op0,
! 			TYPE_UNSIGNED (TREE_TYPE (treeop0)));
  	  op0 = target;
  	}
  
--- 9879,9946 ----
  	op0 = gen_rtx_fmt_e (TYPE_UNSIGNED (TREE_TYPE (treeop0))
  			     ? ZERO_EXTEND : SIGN_EXTEND, mode, op0);
  
+       else if (SCALAR_INT_MODE_P (GET_MODE (op0))
+ 	       && optimize >= 2
+ 	       && SCALAR_INT_MODE_P (mode)
+ 	       && (GET_MODE_SIZE (as_a <scalar_int_mode> (mode))
+ 		   > GET_MODE_SIZE (as_a <scalar_int_mode> (GET_MODE (op0))))
+ 	       && get_range_pos_neg (treeop0,
+ 				     currently_expanding_gimple_stmt) == 1)
+ 	{
+ 	  /* If argument is known to be positive when interpreted
+ 	     as signed, we can expand it as both sign and zero
+ 	     extension.  Choose the cheaper sequence in that case.  */
+ 	  bool speed_p = optimize_insn_for_speed_p ();
+ 	  rtx uns_ret = NULL_RTX, sgn_ret = NULL_RTX;
+ 	  do_pending_stack_adjust ();
+ 	  start_sequence ();
+ 	  if (target == NULL_RTX)
+ 	    uns_ret = convert_to_mode (mode, op0, 1);
+ 	  else
+ 	    convert_move (target, op0, 1);
+ 	  rtx_insn *uns_insns = end_sequence ();
+ 	  start_sequence ();
+ 	  if (target == NULL_RTX)
+ 	    sgn_ret = convert_to_mode (mode, op0, 0);
+ 	  else
+ 	    convert_move (target, op0, 0);
+ 	  rtx_insn *sgn_insns = end_sequence ();
+ 	  unsigned uns_cost = seq_cost (uns_insns, speed_p);
+ 	  unsigned sgn_cost = seq_cost (sgn_insns, speed_p);
+ 	  bool was_tie = false;
+ 
+ 	  /* If costs are the same then use as tie breaker the other other
+ 	     factor.  */
+ 	  if (uns_cost == sgn_cost)
+ 	    {
+ 	      uns_cost = seq_cost (uns_insns, !speed_p);
+ 	      sgn_cost = seq_cost (sgn_insns, !speed_p);
+ 	      was_tie = true;
+ 	    }
+ 
+ 	  if (dump_file && (dump_flags & TDF_DETAILS))
+ 	    fprintf (dump_file, ";; positive extension:%s unsigned cost: %u; "
+ 				"signed cost: %u\n",
+ 		     was_tie ? " (needed tie breaker)" : "",
+ 		     uns_cost, sgn_cost);
+ 	  if (uns_cost < sgn_cost
+ 	      || (uns_cost == sgn_cost && TYPE_UNSIGNED (TREE_TYPE (treeop0))))
+ 	    {
+ 	      emit_insn (uns_insns);
+ 	      sgn_ret = uns_ret;
+ 	    }
+ 	  else
+ 	    emit_insn (sgn_insns);
+ 	  if (target == NULL_RTX)
+ 	    op0 = sgn_ret;
+ 	  else
+ 	    op0 = target;
+ 	}
        else if (target == 0)
! 	op0 = convert_to_mode (mode, op0, TYPE_UNSIGNED (TREE_TYPE (treeop0)));
        else
  	{
! 	  convert_move (target, op0, TYPE_UNSIGNED (TREE_TYPE (treeop0)));
  	  op0 = target;
  	}
  
*************** expand_expr_real_1 (tree exp, rtx target
*** 11366,11376 ****
  	  /* ???  internal call expansion doesn't follow the usual API
  	     of returning the destination RTX and being passed a desired
  	     target.  */
  	  rtx dest = gen_reg_rtx (TYPE_MODE (TREE_TYPE (exp)));
  	  tree tmplhs = make_tree (TREE_TYPE (exp), dest);
! 	  gimple_call_set_lhs (g, tmplhs);
  	  expand_internal_call (as_a <gcall *> (g));
! 	  gimple_call_set_lhs (g, exp);
  	  return dest;
  	}
  
--- 11420,11435 ----
  	  /* ???  internal call expansion doesn't follow the usual API
  	     of returning the destination RTX and being passed a desired
  	     target.  */
+ 	  if (modifier == EXPAND_WRITE)
+ 	    return DECL_RTL (SSA_NAME_VAR (exp));
  	  rtx dest = gen_reg_rtx (TYPE_MODE (TREE_TYPE (exp)));
  	  tree tmplhs = make_tree (TREE_TYPE (exp), dest);
! 	  tree var_or_id = SSA_NAME_VAR (exp);
! 	  if (!var_or_id)
! 	    var_or_id = SSA_NAME_IDENTIFIER (exp);
! 	  SET_SSA_NAME_VAR_OR_IDENTIFIER (exp, tmplhs);
  	  expand_internal_call (as_a <gcall *> (g));
! 	  SET_SSA_NAME_VAR_OR_IDENTIFIER (exp, var_or_id);
  	  return dest;
  	}
  
*************** maybe_optimize_pow2p_mod_cmp (enum tree_
*** 13217,13223 ****
        || integer_zerop (*arg1)
        /* If c is known to be non-negative, modulo will be expanded as unsigned
  	 modulo.  */
!       || get_range_pos_neg (treeop0) == 1)
      return code;
  
    /* x % c == d where d < 0 && d <= -c should be always false.  */
--- 13276,13282 ----
        || integer_zerop (*arg1)
        /* If c is known to be non-negative, modulo will be expanded as unsigned
  	 modulo.  */
!       || get_range_pos_neg (treeop0, currently_expanding_gimple_stmt) == 1)
      return code;
  
    /* x % c == d where d < 0 && d <= -c should be always false.  */
*************** maybe_optimize_mod_cmp (enum tree_code c
*** 13349,13355 ****
    /* If both operands are known to have the sign bit clear, handle
       even the signed modulo case as unsigned.  treeop1 is always
       positive >= 2, checked above.  */
!   if (!TYPE_UNSIGNED (type) && get_range_pos_neg (treeop0) != 1)
      sgn = SIGNED;
  
    if (!TYPE_UNSIGNED (type))
--- 13408,13415 ----
    /* If both operands are known to have the sign bit clear, handle
       even the signed modulo case as unsigned.  treeop1 is always
       positive >= 2, checked above.  */
!   if (!TYPE_UNSIGNED (type)
!       && get_range_pos_neg (treeop0, currently_expanding_gimple_stmt) != 1)
      sgn = SIGNED;
  
    if (!TYPE_UNSIGNED (type))
diff -Nrcpad gcc-16-20250608/gcc/fortran/ChangeLog gcc-16-20250615/gcc/fortran/ChangeLog
*** gcc-16-20250608/gcc/fortran/ChangeLog	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/fortran/ChangeLog	Sun Jun 15 22:32:24 2025
***************
*** 1,3 ****
--- 1,10 ----
+ 2025-06-12  Yuao Ma  <c8ef@outlook.com>
+ 	    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/113152
+ 	* intrinsic.texi: Document new half-revolution trigonometric
+ 	functions. Reorder doc for atand.
+ 
  2025-06-06  Tobias Burnus  <tburnus@baylibre.com>
  	    Sandra Loosemore  <sloosemore@baylibre.com>
  
diff -Nrcpad gcc-16-20250608/gcc/fortran/intrinsic.texi gcc-16-20250615/gcc/fortran/intrinsic.texi
*** gcc-16-20250608/gcc/fortran/intrinsic.texi	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/fortran/intrinsic.texi	Sun Jun 15 22:32:24 2025
*************** Some basic guidelines for editing this d
*** 24,38 ****
  
  @tex
  \gdef\acosd{\mathop{\rm acosd}\nolimits}
- \gdef\asind{\mathop{\rm asind}\nolimits}
- \gdef\atand{\mathop{\rm atand}\nolimits}
- \gdef\acos{\mathop{\rm acos}\nolimits}
- \gdef\asin{\mathop{\rm asin}\nolimits}
- \gdef\atan{\mathop{\rm atan}\nolimits}
  \gdef\acosh{\mathop{\rm acosh}\nolimits}
  \gdef\asinh{\mathop{\rm asinh}\nolimits}
  \gdef\atanh{\mathop{\rm atanh}\nolimits}
  \gdef\cosd{\mathop{\rm cosd}\nolimits}
  @end tex
  
  
--- 24,45 ----
  
  @tex
  \gdef\acosd{\mathop{\rm acosd}\nolimits}
  \gdef\acosh{\mathop{\rm acosh}\nolimits}
+ \gdef\acospi{\mathop{\rm acospi}\nolimits}
+ \gdef\acos{\mathop{\rm acos}\nolimits}
+ \gdef\asind{\mathop{\rm asind}\nolimits}
  \gdef\asinh{\mathop{\rm asinh}\nolimits}
+ \gdef\asinpi{\mathop{\rm asinpi}\nolimits}
+ \gdef\asin{\mathop{\rm asin}\nolimits}
+ \gdef\atan2pi{\mathop{\rm atan2pi}\nolimits}
+ \gdef\atand{\mathop{\rm atand}\nolimits}
  \gdef\atanh{\mathop{\rm atanh}\nolimits}
+ \gdef\atanpi{\mathop{\rm atanpi}\nolimits}
+ \gdef\atan{\mathop{\rm atan}\nolimits}
  \gdef\cosd{\mathop{\rm cosd}\nolimits}
+ \gdef\cospi{\mathop{\rm cospi}\nolimits}
+ \gdef\sinpi{\mathop{\rm sinpi}\nolimits}
+ \gdef\tanpi{\mathop{\rm tanpi}\nolimits}
  @end tex
  
  
*************** Some basic guidelines for editing this d
*** 49,54 ****
--- 56,62 ----
  * @code{ACOS}:          ACOS,      Arccosine function
  * @code{ACOSD}:         ACOSD,     Arccosine function, degrees
  * @code{ACOSH}:         ACOSH,     Inverse hyperbolic cosine function
+ * @code{ACOSPI}:        ACOSPI,    Circular arc cosine function
  * @code{ADJUSTL}:       ADJUSTL,   Left adjust a string
  * @code{ADJUSTR}:       ADJUSTR,   Right adjust a string
  * @code{AIMAG}:         AIMAG,     Imaginary part of complex number
*************** Some basic guidelines for editing this d
*** 62,73 ****
  * @code{ASIN}:          ASIN,      Arcsine function
  * @code{ASIND}:         ASIND,     Arcsine function, degrees
  * @code{ASINH}:         ASINH,     Inverse hyperbolic sine function
  * @code{ASSOCIATED}:    ASSOCIATED, Status of a pointer or pointer/target pair
  * @code{ATAN}:          ATAN,      Arctangent function
- * @code{ATAND}:         ATAND,     Arctangent function, degrees
  * @code{ATAN2}:         ATAN2,     Arctangent function
  * @code{ATAN2D}:        ATAN2D,    Arctangent function, degrees
  * @code{ATANH}:         ATANH,     Inverse hyperbolic tangent function
  * @code{ATOMIC_ADD}:    ATOMIC_ADD, Atomic ADD operation
  * @code{ATOMIC_AND}:    ATOMIC_AND, Atomic bitwise AND operation
  * @code{ATOMIC_CAS}:    ATOMIC_CAS, Atomic compare and swap
--- 70,84 ----
  * @code{ASIN}:          ASIN,      Arcsine function
  * @code{ASIND}:         ASIND,     Arcsine function, degrees
  * @code{ASINH}:         ASINH,     Inverse hyperbolic sine function
+ * @code{ASINPI}:        ASINPI,    Circular arc sine function
  * @code{ASSOCIATED}:    ASSOCIATED, Status of a pointer or pointer/target pair
  * @code{ATAN}:          ATAN,      Arctangent function
  * @code{ATAN2}:         ATAN2,     Arctangent function
  * @code{ATAN2D}:        ATAN2D,    Arctangent function, degrees
+ * @code{ATAN2PI}:       ATAN2PI,   Circular arc tangent function
+ * @code{ATAND}:         ATAND,     Arctangent function, degrees
  * @code{ATANH}:         ATANH,     Inverse hyperbolic tangent function
+ * @code{ATANPI}:        ATANPI,    Circular arc tangent function
  * @code{ATOMIC_ADD}:    ATOMIC_ADD, Atomic ADD operation
  * @code{ATOMIC_AND}:    ATOMIC_AND, Atomic bitwise AND operation
  * @code{ATOMIC_CAS}:    ATOMIC_CAS, Atomic compare and swap
*************** Some basic guidelines for editing this d
*** 116,121 ****
--- 127,133 ----
  * @code{COS}:           COS,       Cosine function
  * @code{COSD}:          COSD,      Cosine function, degrees
  * @code{COSH}:          COSH,      Hyperbolic cosine function
+ * @code{COSPI}:         COSPI,     Circular cosine function
  * @code{COTAN}:         COTAN,     Cotangent function
  * @code{COTAND}:        COTAND,    Cotangent function, degrees
  * @code{COUNT}:         COUNT,     Count occurrences of TRUE in an array
*************** Some basic guidelines for editing this d
*** 296,301 ****
--- 308,314 ----
  * @code{SIN}:           SIN,       Sine function
  * @code{SIND}:          SIND,      Sine function, degrees
  * @code{SINH}:          SINH,      Hyperbolic sine function
+ * @code{SINPI}:         SINPI,     Circular sine function
  * @code{SIZE}:          SIZE,      Function to determine the size of an array
  * @code{SIZEOF}:        SIZEOF,    Determine the size in bytes of an expression
  * @code{SLEEP}:         SLEEP,     Sleep for the specified number of seconds
*************** Some basic guidelines for editing this d
*** 312,317 ****
--- 325,331 ----
  * @code{TAN}:           TAN,       Tangent function
  * @code{TAND}:          TAND,      Tangent function, degrees
  * @code{TANH}:          TANH,      Hyperbolic tangent function
+ * @code{TANPI}:         TANPI,     Circular tangent function
  * @code{TEAM_NUMBER}:   TEAM_NUMBER, Retrieve team id of given team
  * @code{THIS_IMAGE}:    THIS_IMAGE, Cosubscript index of this image
  * @code{TIME}:          TIME,      Time function
*************** Inverse function: @*
*** 754,759 ****
--- 768,829 ----
  
  
  
+ @node ACOSPI
+ @section @code{ACOSPI} --- Circular arc cosine function
+ @fnindex ACOSPI
+ @cindex trigonometric function, cosine, inverse
+ 
+ @table @asis
+ @item @emph{Description}:
+ @code{ACOSPI(X)} computes @math{ \acos(x) / \pi}, which is a measure
+ of an angle in half-revolutions.
+ 
+ @item @emph{Standard}:
+ Fortran 2023
+ 
+ @item @emph{Class}:
+ Elemental function
+ 
+ @item @emph{Syntax}:
+ @code{RESULT = ACOSPI(X)}
+ 
+ @item @emph{Arguments}:
+ @multitable @columnfractions .15 .70
+ @item @var{X} @tab The type shall be @code{REAL} with @math{-1 \leq x \leq 1}.
+ @end multitable
+ 
+ @item @emph{Return value}:
+ The return value has the same type and kind as @var{X}.
+ It is expressed in half-revolutions and satisfies
+ @math{ 0 \leq \acospi (x) \leq  1}.
+ 
+ @item @emph{Example}:
+ @smallexample
+ program test_acospi
+   implicit none
+   real, parameter :: x = 0.123, y(3) = [0.123, 0.45, 0.8]
+   real, parameter :: a = acospi(x), b(3) = acospi(y)
+   call foo(x, y)
+ contains
+   subroutine foo(u, v)
+     real, intent(in) :: u, v(:)
+     real :: f, g(size(v))
+     f = acospi(u)
+     g = acospi(v)
+     if (abs(a - f) > 8 * epsilon(f)) stop 1
+     if (any(abs(g - b) > 8 * epsilon(f))) stop 2
+   end subroutine foo
+ end program test_acospi
+ @end smallexample
+ 
+ @item @emph{See also}:
+ @ref{ASINPI} @*
+ @ref{ATAN2PI} @*
+ @ref{ATANPI} @*
+ @end table
+ 
+ 
+ 
  @node ADJUSTL
  @section @code{ADJUSTL} --- Left adjust a string 
  @fnindex ADJUSTL
*************** Inverse function: @*
*** 1469,1474 ****
--- 1539,1600 ----
  
  
  
+ @node ASINPI
+ @section @code{ASINPI} --- Circular arc sine function
+ @fnindex ASINPI
+ @cindex trigonometric function, sine, inverse
+ 
+ @table @asis
+ @item @emph{Description}:
+ @code{ASINPI(X)} computes @math{ \asin(x) / \pi}, which is a measure
+ of an angle in half-revolutions.
+ 
+ @item @emph{Standard}:
+ Fortran 2023
+ 
+ @item @emph{Class}:
+ Elemental function
+ 
+ @item @emph{Syntax}:
+ @code{RESULT = ASINPI(X)}
+ 
+ @item @emph{Arguments}:
+ @multitable @columnfractions .15 .70
+ @item @var{X} @tab The type shall be @code{REAL} with @math{-1 \leq x \leq 1}.
+ @end multitable
+ 
+ @item @emph{Return value}:
+ The return value has the same type and kind as @var{X}.
+ It is expressed in half-revolutions and satisfies
+ @math{ -0.5 \leq \asinpi (x) \leq  0.5}.
+ 
+ @item @emph{Example}:
+ @smallexample
+ program test_asinpi
+   implicit none
+   real, parameter :: x = 0.123, y(3) = [0.123, 0.45, 0.8]
+   real, parameter :: a = asinpi(x), b(3) = asinpi(y)
+   call foo(x, y)
+ contains
+   subroutine foo(u, v)
+     real, intent(in) :: u, v(:)
+     real :: f, g(size(v))
+     f = asinpi(u)
+     g = asinpi(v)
+     if (abs(a - f) > 8 * epsilon(f)) stop 1
+     if (any(abs(g - b) > 8 * epsilon(f))) stop 2
+   end subroutine foo
+ end program test_asinpi
+ @end smallexample
+ 
+ @item @emph{See also}:
+ @ref{ACOSPI} @*
+ @ref{ATAN2PI} @*
+ @ref{ATANPI} @*
+ @end table
+ 
+ 
+ 
  @node ASSOCIATED
  @section @code{ASSOCIATED} --- Status of a pointer or pointer/target pair 
  @fnindex ASSOCIATED
*************** Degrees function: @*
*** 1608,1675 ****
  
  
  
- @node ATAND
- @section @code{ATAND} --- Arctangent function, degrees
- @fnindex ATAND
- @fnindex DATAND
- @cindex trigonometric function, tangent, inverse, degrees
- @cindex tangent, inverse, degrees
- 
- @table @asis
- @item @emph{Synopsis}:
- @multitable @columnfractions .80
- @item @code{RESULT = ATAND(X)}
- @item @code{RESULT = ATAND(Y, X)}
- @end multitable
- 
- @item @emph{Description}:
- @code{ATAND(X)} computes the arctangent of @var{X} in degrees (inverse of
- @ref{TAND}).
- 
- @item @emph{Class}:
- Elemental function
- 
- @item @emph{Arguments}:
- @multitable @columnfractions .15 .70
- @item @var{X} @tab The type shall be @code{REAL}.
- @item @var{Y} @tab The type and kind type parameter shall be the same as @var{X}.
- @end multitable
- 
- @item @emph{Return value}:
- The return value is of the same type and kind as @var{X}.
- If @var{Y} is present, the result is identical to @code{ATAN2D(Y, X)}.
- Otherwise, the result is in degrees and lies in the range
- @math{-90 \leq \atand(x) \leq 90}.
- 
- @item @emph{Example}:
- @smallexample
- program test_atand
-   real(8) :: x = 2.866_8
-   real(4) :: x1 = 1.e0_4, y1 = 0.5e0_4
-   x = atand(x)
-   x1 = atand(y1, x1)
- end program test_atand
- @end smallexample
- 
- @item @emph{Specific names}:
- @multitable @columnfractions .23 .23 .20 .30
- @headitem Name            @tab Argument          @tab Return type       @tab Standard
- @item @code{ATAND(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab Fortran 2023
- @item @code{DATAND(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
- @end multitable
- 
- @item @emph{Standard}:
- Fortran 2023
- 
- @item @emph{See also}:
- Inverse function: @*
- @ref{TAND} @*
- Radians function: @*
- @ref{ATAN}
- @end table
- 
- 
- 
  @node ATAN2
  @section @code{ATAN2} --- Arctangent function 
  @fnindex ATAN2
--- 1734,1739 ----
*************** Radians function: @*
*** 1798,1803 ****
--- 1862,1978 ----
  @ref{ATAN2}
  @end table
  
+ 
+ 
+ @node ATAN2PI
+ @section @code{ATAN2PI} --- Circular arc tangent function
+ @fnindex ATAN2PI
+ @cindex trigonometric function, tangent, inverse
+ 
+ @table @asis
+ @item @emph{Description}:
+ @code{ATAN2PI(Y, X)} computes @math{ {\rm {atan2}}(y, x) / \pi},
+ and provides a measure of an angle in half-revolutions within
+ the proper quadrant.
+ 
+ @item @emph{Standard}:
+ Fortran 2023
+ 
+ @item @emph{Class}:
+ Elemental function
+ 
+ @item @emph{Syntax}:
+ @code{RESULT = ATAN2PI(Y, X)}
+ 
+ @item @emph{Arguments}:
+ @multitable @columnfractions .15 .70
+ @item @var{Y} @tab The type shall be @code{REAL}.
+ @item @var{X} @tab The type and kind type parameter shall be the
+ same as @var{Y}.  If @var{Y} is zero, then @var{X} shall be nonzero.
+ @end multitable
+ 
+ @item @emph{Return value}:
+ The return value has the same type and kind type parameter as @var{Y}
+ and satisfies @math{-1 \leq {\rm {atan2}}(y, x) / \pi \leq 1}.
+ 
+ @item @emph{Example}:
+ @smallexample
+ program test_atan2pi
+   real(kind=4) :: x = 1.e0_4, y = 0.5e0_4
+   x = atan2pi(y, x)
+ end program test_atan2pi
+ @end smallexample
+ 
+ @item @emph{See also}:
+ @ref{ACOSPI} @*
+ @ref{ASINPI} @*
+ @ref{ATANPI} @*
+ @end table
+ 
+ 
+ 
+ @node ATAND
+ @section @code{ATAND} --- Arctangent function, degrees
+ @fnindex ATAND
+ @fnindex DATAND
+ @cindex trigonometric function, tangent, inverse, degrees
+ @cindex tangent, inverse, degrees
+ 
+ @table @asis
+ @item @emph{Synopsis}:
+ @multitable @columnfractions .80
+ @item @code{RESULT = ATAND(X)}
+ @item @code{RESULT = ATAND(Y, X)}
+ @end multitable
+ 
+ @item @emph{Description}:
+ @code{ATAND(X)} computes the arctangent of @var{X} in degrees (inverse of
+ @ref{TAND}).
+ 
+ @item @emph{Class}:
+ Elemental function
+ 
+ @item @emph{Arguments}:
+ @multitable @columnfractions .15 .70
+ @item @var{X} @tab The type shall be @code{REAL}.
+ @item @var{Y} @tab The type and kind type parameter shall be the same as @var{X}.
+ @end multitable
+ 
+ @item @emph{Return value}:
+ The return value is of the same type and kind as @var{X}.
+ If @var{Y} is present, the result is identical to @code{ATAN2D(Y, X)}.
+ Otherwise, the result is in degrees and lies in the range
+ @math{-90 \leq \atand(x) \leq 90}.
+ 
+ @item @emph{Example}:
+ @smallexample
+ program test_atand
+   real(8) :: x = 2.866_8
+   real(4) :: x1 = 1.e0_4, y1 = 0.5e0_4
+   x = atand(x)
+   x1 = atand(y1, x1)
+ end program test_atand
+ @end smallexample
+ 
+ @item @emph{Specific names}:
+ @multitable @columnfractions .23 .23 .20 .30
+ @headitem Name            @tab Argument          @tab Return type       @tab Standard
+ @item @code{ATAND(X)}  @tab @code{REAL(4) X}  @tab @code{REAL(4)}    @tab Fortran 2023
+ @item @code{DATAND(X)} @tab @code{REAL(8) X}  @tab @code{REAL(8)}    @tab GNU extension
+ @end multitable
+ 
+ @item @emph{Standard}:
+ Fortran 2023
+ 
+ @item @emph{See also}:
+ Inverse function: @*
+ @ref{TAND} @*
+ Radians function: @*
+ @ref{ATAN}
+ @end table
+ 
+ 
+ 
  @node ATANH
  @section @code{ATANH} --- Inverse hyperbolic tangent function
  @fnindex ATANH
*************** Inverse function: @*
*** 1851,1856 ****
--- 2026,2095 ----
  
  
  
+ @node ATANPI
+ @section @code{ATANPI} --- Circular arc tangent function
+ @fnindex ATANPI
+ @cindex trigonometric function, tangent, inverse
+ 
+ @table @asis
+ @item @emph{Description}:
+ @code{ATANPI(X)} computes @math{ \atan(x) / \pi}.
+ @code{ATANPI(Y, X)} computes @math{ {\rm atan2}(y, x) / \pi}.
+ These provide a measure of an angle in half-revolutions.
+ 
+ @item @emph{Standard}:
+ Fortran 2023
+ 
+ @item @emph{Class}:
+ Elemental function
+ 
+ @item @emph{Syntax}:
+ @multitable @columnfractions .80
+ @item @code{RESULT = ATANPI(X)}
+ @item @code{RESULT = ATANPI(Y, X)}
+ @end multitable
+ 
+ @item @emph{Arguments}:
+ @multitable @columnfractions .15 .70
+ @item @var{Y} @tab The type shall be @code{REAL}.
+ @item @var{X} @tab If @var{Y} appears, @var{X} shall have the same type
+ and kind as @var{Y}.  If @var{Y} is zero, then @var{X} shall not be zero.
+ If @var{Y} does not appear in a function reference, then @var{X} shall be
+ @code{REAL}.
+ @end multitable
+ 
+ @item @emph{Return value}:
+ The return value has the same type and kind as @var{X}.
+ It is expressed in half-revolutions and satisfies
+ @math{ -0.5 \leq \atanpi (x) \leq  0.5}.
+ 
+ @item @emph{Example}:
+ @smallexample
+ program test_atanpi
+   implicit none
+   real, parameter :: x = 0.123, y(3) = [0.123, 0.45, 0.8]
+   real, parameter :: a = atanpi(x), b(3) = atanpi(y)
+   call foo(x, y)
+ contains
+   subroutine foo(u, v)
+     real, intent(in) :: u, v(:)
+     real :: f, g(size(v))
+     f = atanpi(u)
+     g = atanpi(v)
+     if (abs(a - f) > 8 * epsilon(f)) stop 1
+     if (any(abs(g - b) > 8 * epsilon(f))) stop 2
+   end subroutine foo
+ end program test_atanpi
+ @end smallexample
+ 
+ @item @emph{See also}:
+ @ref{ACOSPI} @*
+ @ref{ASINPI} @*
+ @ref{ATAN2PI} @*
+ @end table
+ 
+ 
+ 
  @node ATOMIC_ADD
  @section @code{ATOMIC_ADD} --- Atomic ADD operation
  @fnindex ATOMIC_ADD
*************** Inverse function: @*
*** 4391,4396 ****
--- 4630,4686 ----
  
  
  
+ @node COSPI
+ @section @code{COSPI} --- Circular cosine function
+ @fnindex COSPI
+ @cindex trigonometric function, cosine
+ @cindex cosine
+ 
+ @table @asis
+ @item @emph{Description}:
+ @code{COSPI(X)} computes @math{\cos(\pi x)} without performing
+ an explicit multiplication by @math{\pi}.  This is achieved
+ through argument reduction where @math{ x = n + r } with
+ @math{n} an integer and @math{0 \leq r \le 1}.
+ Due to the
+ properties of floating-point arithmetic, the useful range
+ for @var{X} is defined by
+ @code{ABS(X) <= REAL(2,KIND(X))**DIGITS(X)}.
+ 
+ @item @emph{Standard}:
+ Fortran 2023
+ 
+ @item @emph{Class}:
+ Elemental function
+ 
+ @item @emph{Syntax}:
+ @code{RESULT = COSPI(X)}
+ 
+ @item @emph{Arguments}:
+ @multitable @columnfractions .15 .70
+ @item @var{X} @tab The type shall be @code{REAL}.
+ @end multitable
+ 
+ @item @emph{Return value}:
+ The return value is of the same type and kind as @var{X}.
+ The result is in half-revolutions and satisfies
+ @math{ -1 \leq \cospi (x) \leq 1}.
+ 
+ @item @emph{Example}:
+ @smallexample
+ program test_cospi
+   real :: x = 0.0
+   x = cospi(x)
+ end program test_cospi
+ @end smallexample
+ 
+ @item @emph{See also}:
+ @ref{ACOSPI} @*
+ @ref{COS} @*
+ @end table
+ 
+ 
+ 
  @node COTAN
  @section @code{COTAN} --- Cotangent function
  @fnindex COTAN
*************** a GNU extension
*** 13677,13682 ****
--- 13967,14023 ----
  
  
  
+ @node SINPI
+ @section @code{SINPI} --- Circular sine function
+ @fnindex SINPI
+ @cindex trigonometric function, sine
+ @cindex sine
+ 
+ @table @asis
+ @item @emph{Description}:
+ @code{SINPI(X)} computes @math{\sin(\pi x)} without performing
+ an explicit multiplication by @math{\pi}.  This is achieved
+ through argument reduction where @math{ |x| = n + r } with
+ @math{n} an integer and @math{0 \leq r \le 1}.
+ Due to the
+ properties of floating-point arithmetic, the useful range
+ for @var{X} is defined by
+ @code{ABS(X) <= REAL(2,KIND(X))**DIGITS(X)}.
+ 
+ @item @emph{Standard}:
+ Fortran 2023
+ 
+ @item @emph{Class}:
+ Elemental function
+ 
+ @item @emph{Syntax}:
+ @code{RESULT = SINPI(X)}
+ 
+ @item @emph{Arguments}:
+ @multitable @columnfractions .15 .70
+ @item @var{X} @tab The type shall be @code{REAL}.
+ @end multitable
+ 
+ @item @emph{Return value}:
+ The return value is of the same type and kind as @var{X}.
+ The result is in half-revolutions and satisfies
+ @math{ -1 \leq \sinpi (x) \leq 1}.
+ 
+ @item @emph{Example}:
+ @smallexample
+ program test_sinpi
+   real :: x = 0.0
+   x = sinpi(x)
+ end program test_sinpi
+ @end smallexample
+ 
+ @item @emph{See also}:
+ @ref{ASINPI} @*
+ @ref{SIN} @*
+ @end table
+ 
+ 
+ 
  @node SIZE
  @section @code{SIZE} --- Determine the size of an array
  @fnindex SIZE
*************** Fortran 2018 and later.
*** 14573,14578 ****
--- 14914,14968 ----
  @end table
  
  
+ 
+ @node TANPI
+ @section @code{TANPI} --- Circular tangent function
+ @fnindex TANPI
+ @cindex trigonometric function, tangent
+ @cindex tangent
+ 
+ @table @asis
+ @item @emph{Description}:
+ @code{TANPI(X)} computes @math{\tan(\pi x)} without performing
+ an explicit multiplication by @math{\pi}.  This is achieved
+ through argument reduction where @math{ |x| = n + r } with
+ @math{n} an integer and @math{0 \leq r \le 1}.
+ Due to the
+ properties of floating-point arithmetic, the useful range
+ for @var{X} is defined by
+ @code{ABS(X) <= REAL(2,KIND(X))**DIGITS(X)}.
+ 
+ @item @emph{Standard}:
+ Fortran 2023
+ 
+ @item @emph{Class}:
+ Elemental function
+ 
+ @item @emph{Syntax}:
+ @code{RESULT = TANPI(X)}
+ 
+ @item @emph{Arguments}:
+ @multitable @columnfractions .15 .70
+ @item @var{X} @tab The type shall be @code{REAL}.
+ @end multitable
+ 
+ @item @emph{Return value}:
+ The return value is of the same type and kind as @var{X}.
+ 
+ @item @emph{Example}:
+ @smallexample
+ program test_tanpi
+   real :: x = 0.0
+   x = tanpi(x)
+ end program test_tanpi
+ @end smallexample
+ 
+ @item @emph{See also}:
+ @ref{ATANPI} @*
+ @ref{TAN} @*
+ @end table
+ 
+ 
  
  @node THIS_IMAGE
  @section @code{THIS_IMAGE} --- Function that returns the cosubscript index of this image
diff -Nrcpad gcc-16-20250608/gcc/gcc.cc gcc-16-20250615/gcc/gcc.cc
*** gcc-16-20250608/gcc/gcc.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/gcc.cc	Sun Jun 15 22:32:24 2025
*************** driver::set_up_specs () const
*** 8506,8516 ****
    spec_machine_suffix = just_machine_suffix;
  #endif
  
    /* We need to check standard_exec_prefix/spec_machine_suffix/specs
       for any override of as, ld and libraries.  */
!   specs_file = (char *) alloca (strlen (standard_exec_prefix)
! 		       + strlen (spec_machine_suffix) + sizeof ("specs"));
!   strcpy (specs_file, standard_exec_prefix);
    strcat (specs_file, spec_machine_suffix);
    strcat (specs_file, "specs");
    if (access (specs_file, R_OK) == 0)
--- 8506,8518 ----
    spec_machine_suffix = just_machine_suffix;
  #endif
  
+   const char *exec_prefix
+     = gcc_exec_prefix ? gcc_exec_prefix : standard_exec_prefix;
    /* We need to check standard_exec_prefix/spec_machine_suffix/specs
       for any override of as, ld and libraries.  */
!   specs_file = (char *) alloca (
!     strlen (exec_prefix) + strlen (spec_machine_suffix) + sizeof ("specs"));
!   strcpy (specs_file, exec_prefix);
    strcat (specs_file, spec_machine_suffix);
    strcat (specs_file, "specs");
    if (access (specs_file, R_OK) == 0)
diff -Nrcpad gcc-16-20250608/gcc/gimple-range-edge.cc gcc-16-20250615/gcc/gimple-range-edge.cc
*** gcc-16-20250608/gcc/gimple-range-edge.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/gimple-range-edge.cc	Sun Jun 15 22:32:24 2025
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 32,38 ----
  #include "tree-cfg.h"
  #include "gimple-range.h"
  #include "value-range-storage.h"
+ #include "rtl.h"
  
  // If there is a range control statement at the end of block BB, return it.
  // Otherwise return NULL.
*************** along with GCC; see the file COPYING3.
*** 39,44 ****
--- 40,47 ----
  gimple *
  gimple_outgoing_range_stmt_p (basic_block bb)
  {
+   if (bb->flags & BB_RTL)
+     return NULL;
    gimple_stmt_iterator gsi = gsi_last_nondebug_bb (bb);
    if (!gsi_end_p (gsi))
      {
*************** gimple_outgoing_range::calc_switch_range
*** 190,195 ****
--- 193,206 ----
        slot = m_range_allocator->clone (case_range);
      }
  
+   if (default_edge == NULL)
+     {
+       /* During expansion the default edge could have been removed
+ 	 if the default is unreachable.  */
+       gcc_assert (currently_expanding_to_rtl);
+       return;
+     }
+ 
    vrange_storage *&slot = m_edge_table->get_or_insert (default_edge, &existed);
    // This should be the first call into this switch.
    gcc_checking_assert (!existed);
diff -Nrcpad gcc-16-20250608/gcc/gimple-range-fold.cc gcc-16-20250615/gcc/gimple-range-fold.cc
*** gcc-16-20250608/gcc/gimple-range-fold.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/gimple-range-fold.cc	Sun Jun 15 22:32:24 2025
*************** along with GCC; see the file COPYING3.
*** 51,56 ****
--- 51,57 ----
  #include "sreal.h"
  #include "ipa-cp.h"
  #include "ipa-prop.h"
+ #include "rtl.h"
  // Construct a fur_source, and set the m_query field.
  
  fur_source::fur_source (range_query *q)
*************** fold_using_range::range_of_range_op (vra
*** 778,788 ****
  	    {
  	      basic_block bb = gimple_bb (s);
  	      edge e0 = EDGE_SUCC (bb, 0);
! 	      edge e1 = EDGE_SUCC (bb, 1);
  
  	      if (!single_pred_p (e0->dest))
  		e0 = NULL;
! 	      if (!single_pred_p (e1->dest))
  		e1 = NULL;
  	      src.register_outgoing_edges (as_a<gcond *> (s),
  					   as_a <irange> (r), e0, e1);
--- 779,792 ----
  	    {
  	      basic_block bb = gimple_bb (s);
  	      edge e0 = EDGE_SUCC (bb, 0);
! 	      /* During RTL expansion one of the edges can be removed
! 		 if expansion proves the jump is unconditional.  */
! 	      edge e1 = single_succ_p (bb) ? NULL : EDGE_SUCC (bb, 1);
  
+ 	      gcc_checking_assert (e1 || currently_expanding_to_rtl);
  	      if (!single_pred_p (e0->dest))
  		e0 = NULL;
! 	      if (e1 && !single_pred_p (e1->dest))
  		e1 = NULL;
  	      src.register_outgoing_edges (as_a<gcond *> (s),
  					   as_a <irange> (r), e0, e1);
diff -Nrcpad gcc-16-20250608/gcc/gimple-range.cc gcc-16-20250615/gcc/gimple-range.cc
*** gcc-16-20250608/gcc/gimple-range.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/gimple-range.cc	Sun Jun 15 22:32:24 2025
*************** gimple_ranger::range_on_exit (vrange &r,
*** 200,206 ****
    // If this is not the definition block, get the range on the last stmt in
    // the block... if there is one.
    if (def_bb != bb)
!     s = last_nondebug_stmt (bb);
    // If there is no statement provided, get the range_on_entry for this block.
    if (s)
      range_of_expr (r, name, s);
--- 200,211 ----
    // If this is not the definition block, get the range on the last stmt in
    // the block... if there is one.
    if (def_bb != bb)
!     {
!       if (bb->flags & BB_RTL)
! 	s = NULL;
!       else
! 	s = last_nondebug_stmt (bb);
!     }
    // If there is no statement provided, get the range_on_entry for this block.
    if (s)
      range_of_expr (r, name, s);
diff -Nrcpad gcc-16-20250608/gcc/gimple-ssa-warn-access.cc gcc-16-20250615/gcc/gimple-ssa-warn-access.cc
*** gcc-16-20250608/gcc/gimple-ssa-warn-access.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/gimple-ssa-warn-access.cc	Sun Jun 15 22:32:24 2025
*************** pass_waccess::maybe_check_dealloc_call (
*** 3767,3772 ****
--- 3767,3773 ----
  
        if (is_gimple_call (def_stmt))
  	{
+ 	  auto_diagnostic_group d;
  	  bool warned = false;
  	  if (gimple_call_alloc_p (def_stmt))
  	    {
diff -Nrcpad gcc-16-20250608/gcc/internal-fn.cc gcc-16-20250615/gcc/internal-fn.cc
*** gcc-16-20250608/gcc/internal-fn.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/internal-fn.cc	Sun Jun 15 22:32:25 2025
*************** get_min_precision (tree arg, signop sign
*** 926,932 ****
  	{
  	  if (TYPE_UNSIGNED (TREE_TYPE (arg)))
  	    sign = UNSIGNED;
! 	  else if (sign == UNSIGNED && get_range_pos_neg (arg) != 1)
  	    return prec + (orig_sign != sign);
  	  prec = TYPE_PRECISION (TREE_TYPE (arg));
  	}
--- 926,935 ----
  	{
  	  if (TYPE_UNSIGNED (TREE_TYPE (arg)))
  	    sign = UNSIGNED;
! 	  else if (sign == UNSIGNED
! 		   && (get_range_pos_neg (arg,
! 					  currently_expanding_gimple_stmt)
! 		       != 1))
  	    return prec + (orig_sign != sign);
  	  prec = TYPE_PRECISION (TREE_TYPE (arg));
  	}
*************** get_min_precision (tree arg, signop sign
*** 946,952 ****
    if (TREE_CODE (arg) != SSA_NAME)
      return prec + (orig_sign != sign);
    int_range_max r;
!   while (!get_global_range_query ()->range_of_expr (r, arg)
  	 || r.varying_p ()
  	 || r.undefined_p ())
      {
--- 949,956 ----
    if (TREE_CODE (arg) != SSA_NAME)
      return prec + (orig_sign != sign);
    int_range_max r;
!   gimple *cg = currently_expanding_gimple_stmt;
!   while (!get_range_query (cfun)->range_of_expr (r, arg, cg)
  	 || r.varying_p ()
  	 || r.undefined_p ())
      {
*************** get_min_precision (tree arg, signop sign
*** 963,969 ****
  		{
  		  if (TYPE_UNSIGNED (TREE_TYPE (arg)))
  		    sign = UNSIGNED;
! 		  else if (sign == UNSIGNED && get_range_pos_neg (arg) != 1)
  		    return prec + (orig_sign != sign);
  		  prec = TYPE_PRECISION (TREE_TYPE (arg));
  		}
--- 967,974 ----
  		{
  		  if (TYPE_UNSIGNED (TREE_TYPE (arg)))
  		    sign = UNSIGNED;
! 		  else if (sign == UNSIGNED
! 			   && get_range_pos_neg (arg, g) != 1)
  		    return prec + (orig_sign != sign);
  		  prec = TYPE_PRECISION (TREE_TYPE (arg));
  		}
*************** expand_addsub_overflow (location_t loc,
*** 1301,1307 ****
  	 unsigned.  */
        res = expand_binop (mode, sub_optab, op0, op1, NULL_RTX, false,
  			  OPTAB_LIB_WIDEN);
!       int pos_neg = get_range_pos_neg (arg0);
        if (pos_neg == 2)
  	/* If ARG0 is known to be always negative, this is always overflow.  */
  	emit_jump (do_error);
--- 1306,1312 ----
  	 unsigned.  */
        res = expand_binop (mode, sub_optab, op0, op1, NULL_RTX, false,
  			  OPTAB_LIB_WIDEN);
!       int pos_neg = get_range_pos_neg (arg0, currently_expanding_gimple_stmt);
        if (pos_neg == 2)
  	/* If ARG0 is known to be always negative, this is always overflow.  */
  	emit_jump (do_error);
*************** expand_addsub_overflow (location_t loc,
*** 1361,1370 ****
  	 unsigned.  */
        res = expand_binop (mode, code == PLUS_EXPR ? add_optab : sub_optab,
  			  op0, op1, NULL_RTX, false, OPTAB_LIB_WIDEN);
!       int pos_neg = get_range_pos_neg (arg1);
        if (code == PLUS_EXPR)
  	{
! 	  int pos_neg0 = get_range_pos_neg (arg0);
  	  if (pos_neg0 != 3 && pos_neg == 3)
  	    {
  	      std::swap (op0, op1);
--- 1366,1376 ----
  	 unsigned.  */
        res = expand_binop (mode, code == PLUS_EXPR ? add_optab : sub_optab,
  			  op0, op1, NULL_RTX, false, OPTAB_LIB_WIDEN);
!       int pos_neg = get_range_pos_neg (arg1, currently_expanding_gimple_stmt);
        if (code == PLUS_EXPR)
  	{
! 	  int pos_neg0 = get_range_pos_neg (arg0,
! 					    currently_expanding_gimple_stmt);
  	  if (pos_neg0 != 3 && pos_neg == 3)
  	    {
  	      std::swap (op0, op1);
*************** expand_addsub_overflow (location_t loc,
*** 1462,1471 ****
         the second operand, as subtraction is not commutative) is always
         non-negative or always negative, we can do just one comparison
         and conditional jump.  */
!     int pos_neg = get_range_pos_neg (arg1);
      if (code == PLUS_EXPR)
        {
! 	int pos_neg0 = get_range_pos_neg (arg0);
  	if (pos_neg0 != 3 && pos_neg == 3)
  	  {
  	    std::swap (op0, op1);
--- 1468,1478 ----
         the second operand, as subtraction is not commutative) is always
         non-negative or always negative, we can do just one comparison
         and conditional jump.  */
!     int pos_neg = get_range_pos_neg (arg1, currently_expanding_gimple_stmt);
      if (code == PLUS_EXPR)
        {
! 	int pos_neg0 = get_range_pos_neg (arg0,
! 					  currently_expanding_gimple_stmt);
  	if (pos_neg0 != 3 && pos_neg == 3)
  	  {
  	    std::swap (op0, op1);
*************** expand_mul_overflow (location_t loc, tre
*** 1757,1764 ****
        uns1_p = true;
      }
  
!   int pos_neg0 = get_range_pos_neg (arg0);
!   int pos_neg1 = get_range_pos_neg (arg1);
    /* Unsigned types with smaller than mode precision, even if they have most
       significant bit set, are still zero-extended.  */
    if (uns0_p && TYPE_PRECISION (TREE_TYPE (arg0)) < GET_MODE_PRECISION (mode))
--- 1764,1771 ----
        uns1_p = true;
      }
  
!   int pos_neg0 = get_range_pos_neg (arg0, currently_expanding_gimple_stmt);
!   int pos_neg1 = get_range_pos_neg (arg1, currently_expanding_gimple_stmt);
    /* Unsigned types with smaller than mode precision, even if they have most
       significant bit set, are still zero-extended.  */
    if (uns0_p && TYPE_PRECISION (TREE_TYPE (arg0)) < GET_MODE_PRECISION (mode))
*************** expand_arith_overflow (enum tree_code co
*** 2763,2771 ****
    int prec1 = TYPE_PRECISION (TREE_TYPE (arg1));
    int precres = TYPE_PRECISION (type);
    location_t loc = gimple_location (stmt);
!   if (!uns0_p && get_range_pos_neg (arg0) == 1)
      uns0_p = true;
!   if (!uns1_p && get_range_pos_neg (arg1) == 1)
      uns1_p = true;
    int pr = get_min_precision (arg0, uns0_p ? UNSIGNED : SIGNED);
    prec0 = MIN (prec0, pr);
--- 2770,2778 ----
    int prec1 = TYPE_PRECISION (TREE_TYPE (arg1));
    int precres = TYPE_PRECISION (type);
    location_t loc = gimple_location (stmt);
!   if (!uns0_p && get_range_pos_neg (arg0, stmt) == 1)
      uns0_p = true;
!   if (!uns1_p && get_range_pos_neg (arg1, stmt) == 1)
      uns1_p = true;
    int pr = get_min_precision (arg0, uns0_p ? UNSIGNED : SIGNED);
    prec0 = MIN (prec0, pr);
*************** expand_POPCOUNT (internal_fn fn, gcall *
*** 5554,5560 ****
    expand_unary_optab_fn (fn, stmt, popcount_optab);
    rtx_insn *popcount_insns = end_sequence ();
    start_sequence ();
!   rtx plhs = expand_normal (lhs);
    rtx pcmp = emit_store_flag (NULL_RTX, EQ, plhs, const1_rtx, lhsmode, 0, 0);
    if (pcmp == NULL_RTX)
      {
--- 5561,5567 ----
    expand_unary_optab_fn (fn, stmt, popcount_optab);
    rtx_insn *popcount_insns = end_sequence ();
    start_sequence ();
!   rtx plhs = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE);
    rtx pcmp = emit_store_flag (NULL_RTX, EQ, plhs, const1_rtx, lhsmode, 0, 0);
    if (pcmp == NULL_RTX)
      {
*************** expand_POPCOUNT (internal_fn fn, gcall *
*** 5596,5602 ****
      {
        start_sequence ();
        emit_insn (cmp_insns);
!       plhs = expand_normal (lhs);
        if (GET_MODE (cmp) != GET_MODE (plhs))
  	cmp = convert_to_mode (GET_MODE (plhs), cmp, 1);
        /* For `<= 1`, we need to produce `2 - cmp` or `cmp ? 1 : 2` as that
--- 5603,5609 ----
      {
        start_sequence ();
        emit_insn (cmp_insns);
!       plhs = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE);
        if (GET_MODE (cmp) != GET_MODE (plhs))
  	cmp = convert_to_mode (GET_MODE (plhs), cmp, 1);
        /* For `<= 1`, we need to produce `2 - cmp` or `cmp ? 1 : 2` as that
diff -Nrcpad gcc-16-20250608/gcc/ipa-cp.cc gcc-16-20250615/gcc/ipa-cp.cc
*** gcc-16-20250608/gcc/ipa-cp.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/ipa-cp.cc	Sun Jun 15 22:32:25 2025
*************** lenient_count_portion_handling (profile_
*** 4528,4534 ****
    if (remainder.ipa_p () && !remainder.ipa ().nonzero_p ()
        && orig_node->count.ipa_p () && orig_node->count.ipa ().nonzero_p ()
        && opt_for_fn (orig_node->decl, flag_profile_partial_training))
!     remainder = remainder.guessed_local ();
  
    return remainder;
  }
--- 4528,4534 ----
    if (remainder.ipa_p () && !remainder.ipa ().nonzero_p ()
        && orig_node->count.ipa_p () && orig_node->count.ipa ().nonzero_p ()
        && opt_for_fn (orig_node->decl, flag_profile_partial_training))
!     remainder = orig_node->count.guessed_local ();
  
    return remainder;
  }
*************** update_counts_for_self_gen_clones (cgrap
*** 4666,4684 ****
    unsigned i = 0;
    for (cgraph_node *n : self_gen_clones)
      {
-       profile_count orig_count = n->count;
        profile_count new_count
  	= (redist_sum / self_gen_clones.length () + other_edges_count[i]);
        new_count = lenient_count_portion_handling (new_count, orig_node);
!       n->count = new_count;
!       profile_count::adjust_for_ipa_scaling (&new_count, &orig_count);
        for (cgraph_edge *cs = n->callees; cs; cs = cs->next_callee)
! 	{
! 	  cs->count = cs->count.apply_scale (new_count, orig_count);
! 	  processed_edges.add (cs);
! 	}
!       for (cgraph_edge *cs = n->indirect_calls; cs; cs = cs->next_callee)
! 	cs->count = cs->count.apply_scale (new_count, orig_count);
  
        i++;
      }
--- 4666,4677 ----
    unsigned i = 0;
    for (cgraph_node *n : self_gen_clones)
      {
        profile_count new_count
  	= (redist_sum / self_gen_clones.length () + other_edges_count[i]);
        new_count = lenient_count_portion_handling (new_count, orig_node);
!       n->scale_profile_to (new_count);
        for (cgraph_edge *cs = n->callees; cs; cs = cs->next_callee)
! 	processed_edges.add (cs);
  
        i++;
      }
*************** update_profiling_info (struct cgraph_nod
*** 4776,4791 ****
    bool orig_edges_processed = false;
    if (new_sum > orig_node_count)
      {
!       /* TODO: Profile has alreay gone astray, keep what we have but lower it
! 	 to global0 category.  */
!       remainder = orig_node->count.global0 ();
! 
!       for (cgraph_edge *cs = orig_node->callees; cs; cs = cs->next_callee)
! 	cs->count = cs->count.global0 ();
!       for (cgraph_edge *cs = orig_node->indirect_calls;
! 	   cs;
! 	   cs = cs->next_callee)
! 	cs->count = cs->count.global0 ();
        orig_edges_processed = true;
      }
    else if (stats.rec_count_sum.nonzero_p ())
--- 4769,4780 ----
    bool orig_edges_processed = false;
    if (new_sum > orig_node_count)
      {
!       /* Profile has alreay gone astray, keep what we have but lower it
! 	 to global0adjusted or to local if we have partial training.  */
!       if (opt_for_fn (orig_node->decl, flag_profile_partial_training))
! 	orig_node->make_profile_local ();
!       else
! 	orig_node->make_profile_global0 (GUESSED_GLOBAL0_ADJUSTED);
        orig_edges_processed = true;
      }
    else if (stats.rec_count_sum.nonzero_p ())
*************** update_profiling_info (struct cgraph_nod
*** 4811,4830 ****
  	      /* The NEW_NODE count and counts of all its outgoing edges
  		 are still unmodified copies of ORIG_NODE's.  Just clear
  		 the latter and bail out.  */
- 	      profile_count zero;
                if (opt_for_fn (orig_node->decl, flag_profile_partial_training))
!                 zero = profile_count::zero ().guessed_local ();
  	      else
! 		zero = profile_count::adjusted_zero ();
! 	      orig_node->count = zero;
! 	      for (cgraph_edge *cs = orig_node->callees;
! 		   cs;
! 		   cs = cs->next_callee)
! 		cs->count = zero;
! 	      for (cgraph_edge *cs = orig_node->indirect_calls;
! 		   cs;
! 		   cs = cs->next_callee)
! 		cs->count = zero;
  	      return;
  	    }
  	}
--- 4800,4809 ----
  	      /* The NEW_NODE count and counts of all its outgoing edges
  		 are still unmodified copies of ORIG_NODE's.  Just clear
  		 the latter and bail out.  */
                if (opt_for_fn (orig_node->decl, flag_profile_partial_training))
! 		orig_node->make_profile_local ();
  	      else
! 		orig_node->make_profile_global0 (GUESSED_GLOBAL0_ADJUSTED);
  	      return;
  	    }
  	}
*************** update_profiling_info (struct cgraph_nod
*** 4873,4899 ****
      remainder = lenient_count_portion_handling (orig_node_count - new_sum,
  						orig_node);
  
!   new_sum = orig_node_count.combine_with_ipa_count (new_sum);
!   new_node->count = new_sum;
!   orig_node->count = remainder;
! 
!   profile_count orig_new_node_count = orig_node_count;
!   profile_count::adjust_for_ipa_scaling (&new_sum, &orig_new_node_count);
!   for (cgraph_edge *cs = new_node->callees; cs; cs = cs->next_callee)
!     cs->count = cs->count.apply_scale (new_sum, orig_new_node_count);
!   for (cgraph_edge *cs = new_node->indirect_calls; cs; cs = cs->next_callee)
!     cs->count = cs->count.apply_scale (new_sum, orig_new_node_count);
  
    if (!orig_edges_processed)
!     {
!       profile_count::adjust_for_ipa_scaling (&remainder, &orig_node_count);
!       for (cgraph_edge *cs = orig_node->callees; cs; cs = cs->next_callee)
! 	cs->count = cs->count.apply_scale (remainder, orig_node_count);
!       for (cgraph_edge *cs = orig_node->indirect_calls;
! 	   cs;
! 	   cs = cs->next_callee)
! 	cs->count = cs->count.apply_scale (remainder, orig_node_count);
!     }
  
    if (dump_file)
      {
--- 4852,4861 ----
      remainder = lenient_count_portion_handling (orig_node_count - new_sum,
  						orig_node);
  
!   new_node->scale_profile_to (new_sum);
  
    if (!orig_edges_processed)
!     orig_node->scale_profile_to (remainder);
  
    if (dump_file)
      {
*************** update_specialized_profile (struct cgrap
*** 4911,4945 ****
  			    struct cgraph_node *orig_node,
  			    profile_count redirected_sum)
  {
-   struct cgraph_edge *cs;
-   profile_count new_node_count, orig_node_count = orig_node->count.ipa ();
- 
    if (dump_file)
      {
        fprintf (dump_file, "    the sum of counts of redirected  edges is ");
        redirected_sum.dump (dump_file);
        fprintf (dump_file, "\n    old ipa count of the original node is ");
!       orig_node_count.dump (dump_file);
        fprintf (dump_file, "\n");
      }
!   if (!orig_node_count.nonzero_p ())
      return;
  
!   new_node_count = new_node->count;
!   new_node->count += redirected_sum;
!   orig_node->count
!     = lenient_count_portion_handling (orig_node->count - redirected_sum,
! 				      orig_node);
! 
!   for (cs = new_node->callees; cs; cs = cs->next_callee)
!     cs->count += cs->count.apply_scale (redirected_sum, new_node_count);
  
!   for (cs = orig_node->callees; cs; cs = cs->next_callee)
!     {
!       profile_count dec = cs->count.apply_scale (redirected_sum,
! 						 orig_node_count);
!       cs->count -= dec;
!     }
  
    if (dump_file)
      {
--- 4873,4895 ----
  			    struct cgraph_node *orig_node,
  			    profile_count redirected_sum)
  {
    if (dump_file)
      {
        fprintf (dump_file, "    the sum of counts of redirected  edges is ");
        redirected_sum.dump (dump_file);
        fprintf (dump_file, "\n    old ipa count of the original node is ");
!       orig_node->count.dump (dump_file);
        fprintf (dump_file, "\n");
      }
!   if (!orig_node->count.ipa ().nonzero_p ()
!       || !redirected_sum.nonzero_p ())
      return;
  
!   orig_node->scale_profile_to
!     (lenient_count_portion_handling (orig_node->count.ipa () - redirected_sum,
! 				     orig_node));
  
!   new_node->scale_profile_to (new_node->count.ipa () + redirected_sum);
  
    if (dump_file)
      {
diff -Nrcpad gcc-16-20250608/gcc/ipa-inline-transform.cc gcc-16-20250615/gcc/ipa-inline-transform.cc
*** gcc-16-20250608/gcc/ipa-inline-transform.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/ipa-inline-transform.cc	Sun Jun 15 22:32:25 2025
*************** along with GCC; see the file COPYING3.
*** 58,84 ****
  int ncalls_inlined;
  int nfunctions_inlined;
  
- /* Scale counts of NODE edges by NUM/DEN.  */
- 
- static void
- update_noncloned_counts (struct cgraph_node *node,
- 			 profile_count num, profile_count den)
- {
-   struct cgraph_edge *e;
- 
-   profile_count::adjust_for_ipa_scaling (&num, &den);
- 
-   for (e = node->callees; e; e = e->next_callee)
-     {
-       if (!e->inline_failed)
-         update_noncloned_counts (e->callee, num, den);
-       e->count = e->count.apply_scale (num, den);
-     }
-   for (e = node->indirect_calls; e; e = e->next_callee)
-     e->count = e->count.apply_scale (num, den);
-   node->count = node->count.apply_scale (num, den);
- }
- 
  /* We removed or are going to remove the last call to NODE.
     Return true if we can and want proactively remove the NODE now.
     This is important to do, since we want inliner to know when offline
--- 58,63 ----
*************** can_remove_node_now_p_1 (struct cgraph_n
*** 93,99 ****
      {
        cgraph_node *alias = dyn_cast <cgraph_node *> (ref->referring);
        if ((alias->callers && alias->callers != e)
!           || !can_remove_node_now_p_1 (alias, e))
  	return false;
      }
    /* FIXME: When address is taken of DECL_EXTERNAL function we still
--- 72,78 ----
      {
        cgraph_node *alias = dyn_cast <cgraph_node *> (ref->referring);
        if ((alias->callers && alias->callers != e)
! 	  || !can_remove_node_now_p_1 (alias, e))
  	return false;
      }
    /* FIXME: When address is taken of DECL_EXTERNAL function we still
*************** clone_inlined_nodes (struct cgraph_edge
*** 212,218 ****
  	    }
  	  duplicate = false;
  	  e->callee->externally_visible = false;
!           update_noncloned_counts (e->callee, e->count, e->callee->count);
  
  	  dump_callgraph_transformation (e->callee, inlining_into,
  					 "inlining to");
--- 191,200 ----
  	    }
  	  duplicate = false;
  	  e->callee->externally_visible = false;
! 	  profile_count num = e->count;
! 	  profile_count den = e->callee->count;
! 	  profile_count::adjust_for_ipa_scaling (&num, &den);
! 	  e->callee->apply_scale (num, den);
  
  	  dump_callgraph_transformation (e->callee, inlining_into,
  					 "inlining to");
diff -Nrcpad gcc-16-20250608/gcc/libgdiagnostics.cc gcc-16-20250615/gcc/libgdiagnostics.cc
*** gcc-16-20250608/gcc/libgdiagnostics.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/libgdiagnostics.cc	Sun Jun 15 22:32:25 2025
*************** public:
*** 307,351 ****
  	gcc_unreachable ();
  
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_FUNCTION:
! 	return LOGICAL_LOCATION_KIND_FUNCTION;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_MEMBER:
! 	return LOGICAL_LOCATION_KIND_MEMBER;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_MODULE:
! 	return LOGICAL_LOCATION_KIND_MODULE;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_NAMESPACE:
! 	return LOGICAL_LOCATION_KIND_NAMESPACE;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_TYPE:
! 	return LOGICAL_LOCATION_KIND_TYPE;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_RETURN_TYPE:
! 	return LOGICAL_LOCATION_KIND_RETURN_TYPE;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_PARAMETER:
! 	return LOGICAL_LOCATION_KIND_PARAMETER;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_VARIABLE:
! 	return LOGICAL_LOCATION_KIND_VARIABLE;
  
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_ELEMENT:
! 	return LOGICAL_LOCATION_KIND_ELEMENT;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_ATTRIBUTE:
! 	return LOGICAL_LOCATION_KIND_ATTRIBUTE;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_TEXT:
! 	return LOGICAL_LOCATION_KIND_TEXT;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_COMMENT:
! 	return LOGICAL_LOCATION_KIND_COMMENT;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_PROCESSING_INSTRUCTION:
! 	return LOGICAL_LOCATION_KIND_PROCESSING_INSTRUCTION;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_DTD:
! 	return LOGICAL_LOCATION_KIND_DTD;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_DECLARATION:
! 	return LOGICAL_LOCATION_KIND_DECLARATION;
  
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_OBJECT:
! 	  return LOGICAL_LOCATION_KIND_OBJECT;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_ARRAY:
! 	return LOGICAL_LOCATION_KIND_ARRAY;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_PROPERTY:
! 	return LOGICAL_LOCATION_KIND_PROPERTY;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_VALUE:
! 	return LOGICAL_LOCATION_KIND_VALUE;
        }
    }
  
--- 307,351 ----
  	gcc_unreachable ();
  
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_FUNCTION:
! 	return logical_location_kind::function;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_MEMBER:
! 	return logical_location_kind::member;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_MODULE:
! 	return logical_location_kind::module_;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_NAMESPACE:
! 	return logical_location_kind::namespace_;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_TYPE:
! 	return logical_location_kind::type;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_RETURN_TYPE:
! 	return logical_location_kind::return_type;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_PARAMETER:
! 	return logical_location_kind::parameter;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_VARIABLE:
! 	return logical_location_kind::variable;
  
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_ELEMENT:
! 	return logical_location_kind::element;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_ATTRIBUTE:
! 	return logical_location_kind::attribute;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_TEXT:
! 	return logical_location_kind::text;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_COMMENT:
! 	return logical_location_kind::comment;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_PROCESSING_INSTRUCTION:
! 	return logical_location_kind::processing_instruction;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_DTD:
! 	return logical_location_kind::dtd;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_DECLARATION:
! 	return logical_location_kind::declaration;
  
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_OBJECT:
! 	  return logical_location_kind::object;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_ARRAY:
! 	return logical_location_kind::array;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_PROPERTY:
! 	return logical_location_kind::property;
        case DIAGNOSTIC_LOGICAL_LOCATION_KIND_VALUE:
! 	return logical_location_kind::value;
        }
    }
  
*************** sarif_sink::sarif_sink (diagnostic_manag
*** 1191,1200 ****
    auto serialization = std::make_unique<sarif_serialization_format_json> (true);
    auto inner_sink = make_sarif_sink (mgr.get_dc (),
  				     *mgr.get_line_table (),
- 				     main_input_file->get_name (),
  				     std::move (serialization),
  				     sarif_gen_opts,
  				     std::move (output_file));
    mgr.get_dc ().add_sink (std::move (inner_sink));
  }
  
--- 1191,1200 ----
    auto serialization = std::make_unique<sarif_serialization_format_json> (true);
    auto inner_sink = make_sarif_sink (mgr.get_dc (),
  				     *mgr.get_line_table (),
  				     std::move (serialization),
  				     sarif_gen_opts,
  				     std::move (output_file));
+   inner_sink->set_main_input_filename (main_input_file->get_name ());
    mgr.get_dc ().add_sink (std::move (inner_sink));
  }
  
diff -Nrcpad gcc-16-20250608/gcc/logical-location.h gcc-16-20250615/gcc/logical-location.h
*** gcc-16-20250608/gcc/logical-location.h	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/logical-location.h	Sun Jun 15 22:32:25 2025
*************** along with GCC; see the file COPYING3.
*** 29,62 ****
     Roughly corresponds to logicalLocation's "kind" property in SARIF v2.1.0
     (section 3.33.7).  */
  
! enum logical_location_kind
  {
!   LOGICAL_LOCATION_KIND_UNKNOWN,
  
    /* Kinds within executable code.  */
!   LOGICAL_LOCATION_KIND_FUNCTION,
!   LOGICAL_LOCATION_KIND_MEMBER,
!   LOGICAL_LOCATION_KIND_MODULE,
!   LOGICAL_LOCATION_KIND_NAMESPACE,
!   LOGICAL_LOCATION_KIND_TYPE,
!   LOGICAL_LOCATION_KIND_RETURN_TYPE,
!   LOGICAL_LOCATION_KIND_PARAMETER,
!   LOGICAL_LOCATION_KIND_VARIABLE,
  
    /* Kinds within XML or HTML documents.  */
!   LOGICAL_LOCATION_KIND_ELEMENT,
!   LOGICAL_LOCATION_KIND_ATTRIBUTE,
!   LOGICAL_LOCATION_KIND_TEXT,
!   LOGICAL_LOCATION_KIND_COMMENT,
!   LOGICAL_LOCATION_KIND_PROCESSING_INSTRUCTION,
!   LOGICAL_LOCATION_KIND_DTD,
!   LOGICAL_LOCATION_KIND_DECLARATION,
  
    /* Kinds within JSON documents.  */
!   LOGICAL_LOCATION_KIND_OBJECT,
!   LOGICAL_LOCATION_KIND_ARRAY,
!   LOGICAL_LOCATION_KIND_PROPERTY,
!   LOGICAL_LOCATION_KIND_VALUE
  };
  
  /* We want to efficiently support passing around logical locations in the
--- 29,62 ----
     Roughly corresponds to logicalLocation's "kind" property in SARIF v2.1.0
     (section 3.33.7).  */
  
! enum class logical_location_kind
  {
!   unknown,
  
    /* Kinds within executable code.  */
!   function,
!   member,
!   module_,
!   namespace_,
!   type,
!   return_type,
!   parameter,
!   variable,
  
    /* Kinds within XML or HTML documents.  */
!   element,
!   attribute,
!   text,
!   comment,
!   processing_instruction,
!   dtd,
!   declaration,
  
    /* Kinds within JSON documents.  */
!   object,
!   array,
!   property,
!   value
  };
  
  /* We want to efficiently support passing around logical locations in the
diff -Nrcpad gcc-16-20250608/gcc/m2/ChangeLog gcc-16-20250615/gcc/m2/ChangeLog
*** gcc-16-20250608/gcc/m2/ChangeLog	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/m2/ChangeLog	Sun Jun 15 22:32:25 2025
***************
*** 1,3 ****
--- 1,19 ----
+ 2025-06-12  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/119650
+ 	* gm2-libs/ARRAYOFCHAR.def: Remove comment about non
+ 	existent read.
+ 	* target-independent/m2/Builtins.texi: Regenerate.
+ 	* target-independent/m2/SYSTEM-iso.texi: Ditto.
+ 	* target-independent/m2/SYSTEM-pim.texi: Ditto.
+ 	* target-independent/m2/gm2-libs.texi: Ditto.
+ 
+ 2025-06-09  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/120606
+ 	* gm2-compiler/M2Quads.mod (ForLoopLastIterator): Dereference
+ 	start and end expressions e1 and e2 respectively.
+ 
  2025-06-07  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	PR modula2/119650
diff -Nrcpad gcc-16-20250608/gcc/m2/gm2-compiler/M2Quads.mod gcc-16-20250615/gcc/m2/gm2-compiler/M2Quads.mod
*** gcc-16-20250608/gcc/m2/gm2-compiler/M2Quads.mod	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/m2/gm2-compiler/M2Quads.mod	Sun Jun 15 22:32:25 2025
*************** BEGIN
*** 4646,4651 ****
--- 4646,4653 ----
                     BySym) ;
        MetaErrorDecl (BySym, TRUE)
     ELSE
+       e1 := DereferenceLValue (e1tok, e1) ;
+       e2 := DereferenceLValue (e2tok, e2) ;
        GenQuadOTypetok (bytok, LastForIteratorOp, LastIterator,
                         Make2Tuple (e1, e2), BySym, FALSE, FALSE,
                         bytok, MakeVirtual2Tok (e1tok, e2tok), bytok)
diff -Nrcpad gcc-16-20250608/gcc/m2/gm2-libs/ARRAYOFCHAR.def gcc-16-20250615/gcc/m2/gm2-libs/ARRAYOFCHAR.def
*** gcc-16-20250608/gcc/m2/gm2-libs/ARRAYOFCHAR.def	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/m2/gm2-libs/ARRAYOFCHAR.def	Sun Jun 15 22:32:25 2025
*************** FROM FIO IMPORT File ;
*** 30,37 ****
  
  
  (*
!    Description: provides write and read procedures for
!                 ARRAY OF CHAR.
  *)
  
  PROCEDURE Write (f: File; str: ARRAY OF CHAR) ;
--- 30,36 ----
  
  
  (*
!    Description: provides write procedures for ARRAY OF CHAR.
  *)
  
  PROCEDURE Write (f: File; str: ARRAY OF CHAR) ;
diff -Nrcpad gcc-16-20250608/gcc/m2/target-independent/m2/Builtins.texi gcc-16-20250615/gcc/m2/target-independent/m2/Builtins.texi
*** gcc-16-20250608/gcc/m2/target-independent/m2/Builtins.texi	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/m2/target-independent/m2/Builtins.texi	Sun Jun 15 22:32:25 2025
*************** PROCEDURE __BUILTIN__ strchr (s: ADDRESS
*** 348,353 ****
--- 348,362 ----
  @findex strrchr
  PROCEDURE __BUILTIN__ strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
  
+ @findex clz
+ PROCEDURE __BUILTIN__ clz (value: CARDINAL) : INTEGER ;
+ @findex clzll
+ PROCEDURE __BUILTIN__ clzll (value: LONGCARD) : INTEGER ;
+ @findex ctz
+ PROCEDURE __BUILTIN__ ctz (value: CARDINAL) : INTEGER ;
+ @findex ctzll
+ PROCEDURE __BUILTIN__ ctzll (value: LONGCARD) : INTEGER ;
+ 
  (*
     longjmp - this GCC builtin restricts the val to always 1.
  *)
diff -Nrcpad gcc-16-20250608/gcc/m2/target-independent/m2/SYSTEM-iso.texi gcc-16-20250615/gcc/m2/target-independent/m2/SYSTEM-iso.texi
*** gcc-16-20250608/gcc/m2/target-independent/m2/SYSTEM-iso.texi	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/m2/target-independent/m2/SYSTEM-iso.texi	Sun Jun 15 22:32:25 2025
*************** DEFINITION MODULE SYSTEM;
*** 8,14 ****
    (* The constants and types define underlying properties of storage *)
  
  EXPORT QUALIFIED BITSPERLOC, LOCSPERWORD,
!                  LOC, BYTE, WORD, ADDRESS, CSIZE_T, CSSIZE_T, (* 
                   Target specific data types.  *)
                   ADDADR, SUBADR, DIFADR, MAKEADR, ADR, ROTATE,
                   SHIFT, CAST, TSIZE,
--- 8,14 ----
    (* The constants and types define underlying properties of storage *)
  
  EXPORT QUALIFIED BITSPERLOC, LOCSPERWORD,
!                  LOC, BYTE, WORD, ADDRESS, CSIZE_T, CSSIZE_T, COFF_T, (* 
                   Target specific data types.  *)
                   ADDADR, SUBADR, DIFADR, MAKEADR, ADR, ROTATE,
                   SHIFT, CAST, TSIZE,
diff -Nrcpad gcc-16-20250608/gcc/m2/target-independent/m2/SYSTEM-pim.texi gcc-16-20250615/gcc/m2/target-independent/m2/SYSTEM-pim.texi
*** gcc-16-20250608/gcc/m2/target-independent/m2/SYSTEM-pim.texi	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/m2/target-independent/m2/SYSTEM-pim.texi	Sun Jun 15 22:32:25 2025
***************
*** 3,9 ****
  DEFINITION MODULE SYSTEM ;
  
  EXPORT QUALIFIED BITSPERBYTE, BYTESPERWORD,
!                  ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, (* 
                   Target specific data types.  *)
                   ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE ;
                   (* SIZE is also exported if -fpim2 is used.  *)
--- 3,9 ----
  DEFINITION MODULE SYSTEM ;
  
  EXPORT QUALIFIED BITSPERBYTE, BYTESPERWORD,
!                  ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, CARDINAL64, (* 
                   Target specific data types.  *)
                   ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE ;
                   (* SIZE is also exported if -fpim2 is used.  *)
diff -Nrcpad gcc-16-20250608/gcc/m2/target-independent/m2/gm2-libs.texi gcc-16-20250615/gcc/m2/target-independent/m2/gm2-libs.texi
*** gcc-16-20250608/gcc/m2/target-independent/m2/gm2-libs.texi	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/m2/target-independent/m2/gm2-libs.texi	Sun Jun 15 22:32:25 2025
*************** type results in a number of equivalent m
*** 35,51 ****
--- 35,55 ----
  These modules have been extensively tested and are used throughout
  building the GNU Modula-2 compiler.
  @menu
+ * gm2-libs/ARRAYOFCHAR::ARRAYOFCHAR.def
  * gm2-libs/ASCII::ASCII.def
  * gm2-libs/Args::Args.def
  * gm2-libs/Assertion::Assertion.def
  * gm2-libs/Break::Break.def
  * gm2-libs/Builtins::Builtins.def
+ * gm2-libs/CFileSysOp::CFileSysOp.def
+ * gm2-libs/CHAR::CHAR.def
  * gm2-libs/COROUTINES::COROUTINES.def
  * gm2-libs/CmdArgs::CmdArgs.def
  * gm2-libs/Debug::Debug.def
  * gm2-libs/DynamicStrings::DynamicStrings.def
  * gm2-libs/Environment::Environment.def
  * gm2-libs/FIO::FIO.def
+ * gm2-libs/FileSysOp::FileSysOp.def
  * gm2-libs/FormatStrings::FormatStrings.def
  * gm2-libs/FpuIO::FpuIO.def
  * gm2-libs/GetOpt::GetOpt.def
*************** building the GNU Modula-2 compiler.
*** 76,82 ****
--- 80,88 ----
  * gm2-libs/StrCase::StrCase.def
  * gm2-libs/StrIO::StrIO.def
  * gm2-libs/StrLib::StrLib.def
+ * gm2-libs/String::String.def
  * gm2-libs/StringConvert::StringConvert.def
+ * gm2-libs/StringFileSysOp::StringFileSysOp.def
  * gm2-libs/SysExceptions::SysExceptions.def
  * gm2-libs/SysStorage::SysStorage.def
  * gm2-libs/TimeString::TimeString.def
*************** building the GNU Modula-2 compiler.
*** 95,101 ****
  * gm2-libs/wrapc::wrapc.def
  @end menu
  
! @node gm2-libs/ASCII, gm2-libs/Args, , Base libraries
  @subsection gm2-libs/ASCII
  
  @example
--- 101,130 ----
  * gm2-libs/wrapc::wrapc.def
  @end menu
  
! @node gm2-libs/ARRAYOFCHAR, gm2-libs/ASCII, , Base libraries
! @subsection gm2-libs/ARRAYOFCHAR
! 
! @example
! DEFINITION MODULE ARRAYOFCHAR ;
! 
! FROM FIO IMPORT File ;
! 
! 
! (*
!    Description: provides write procedures for ARRAY OF CHAR.
! *)
! 
! @findex Write
! PROCEDURE Write (f: File; str: ARRAY OF CHAR) ;
! @findex WriteLn
! PROCEDURE WriteLn (f: File) ;
! 
! 
! END ARRAYOFCHAR.
! @end example
! @page
! 
! @node gm2-libs/ASCII, gm2-libs/Args, gm2-libs/ARRAYOFCHAR, Base libraries
  @subsection gm2-libs/ASCII
  
  @example
*************** END Break.
*** 232,238 ****
  @end example
  @page
  
! @node gm2-libs/Builtins, gm2-libs/COROUTINES, gm2-libs/Break, Base libraries
  @subsection gm2-libs/Builtins
  
  @example
--- 261,267 ----
  @end example
  @page
  
! @node gm2-libs/Builtins, gm2-libs/CFileSysOp, gm2-libs/Break, Base libraries
  @subsection gm2-libs/Builtins
  
  @example
*************** PROCEDURE __BUILTIN__ strchr (s: ADDRESS
*** 584,589 ****
--- 613,627 ----
  @findex strrchr
  PROCEDURE __BUILTIN__ strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
  
+ @findex clz
+ PROCEDURE __BUILTIN__ clz (value: CARDINAL) : INTEGER ;
+ @findex clzll
+ PROCEDURE __BUILTIN__ clzll (value: LONGCARD) : INTEGER ;
+ @findex ctz
+ PROCEDURE __BUILTIN__ ctz (value: CARDINAL) : INTEGER ;
+ @findex ctzll
+ PROCEDURE __BUILTIN__ ctzll (value: LONGCARD) : INTEGER ;
+ 
  (*
     longjmp - this GCC builtin restricts the val to always 1.
  *)
*************** END Builtins.
*** 632,638 ****
  @end example
  @page
  
! @node gm2-libs/COROUTINES, gm2-libs/CmdArgs, gm2-libs/Builtins, Base libraries
  @subsection gm2-libs/COROUTINES
  
  @example
--- 670,769 ----
  @end example
  @page
  
! @node gm2-libs/CFileSysOp, gm2-libs/CHAR, gm2-libs/Builtins, Base libraries
! @subsection gm2-libs/CFileSysOp
! 
! @example
! DEFINITION MODULE CFileSysOp ;
! 
! FROM SYSTEM IMPORT ADDRESS ;
! 
! 
! (*
!    Description: provides access to filesystem operations.
!                 The implementation module is written in C
!                 and the parameters behave as their C
!                 counterparts.
! *)
! 
! TYPE
! @findex AccessMode (type)
!    AccessMode = SET OF AccessStatus ;
! @findex AccessStatus (type)
!    AccessStatus = (F_OK, R_OK, W_OK, X_OK, A_FAIL) ;
! 
! 
! @findex Unlink
! PROCEDURE Unlink (filename: ADDRESS) : INTEGER ;
! 
! 
! (*
!    Access - test access to a path or file.  The behavior is
!             the same as defined in access(2).  Except that
!             on A_FAIL is only used during the return result
!             indicating the underlying C access has returned
!             -1 (and errno can be checked).
! *)
! 
! @findex Access
! PROCEDURE Access (pathname: ADDRESS; mode: AccessMode) : AccessMode ;
! 
! 
! (* Return TRUE if the caller can see the existance of the file or
!    directory on the filesystem.  *)
! 
! (*
!    IsDir - return true if filename is a regular directory.
! *)
! 
! @findex IsDir
! PROCEDURE IsDir (dirname: ADDRESS) : BOOLEAN ;
! 
! 
! (*
!    IsFile - return true if filename is a regular file.
! *)
! 
! @findex IsFile
! PROCEDURE IsFile (filename: ADDRESS) : BOOLEAN ;
! 
! 
! (*
!    Exists - return true if pathname exists.
! *)
! 
! @findex Exists
! PROCEDURE Exists (pathname: ADDRESS) : BOOLEAN ;
! 
! 
! END CFileSysOp.
! @end example
! @page
! 
! @node gm2-libs/CHAR, gm2-libs/COROUTINES, gm2-libs/CFileSysOp, Base libraries
! @subsection gm2-libs/CHAR
! 
! @example
! DEFINITION MODULE CHAR ;
! 
! FROM FIO IMPORT File ;
! 
! 
! (*
!    Write a single character ch to file f.
! *)
! 
! @findex Write
! PROCEDURE Write (f: File; ch: CHAR) ;
! @findex WriteLn
! PROCEDURE WriteLn (f: File) ;
! 
! 
! END CHAR.
! @end example
! @page
! 
! @node gm2-libs/COROUTINES, gm2-libs/CmdArgs, gm2-libs/CHAR, Base libraries
  @subsection gm2-libs/COROUTINES
  
  @example
*************** END Environment.
*** 1179,1185 ****
  @end example
  @page
  
! @node gm2-libs/FIO, gm2-libs/FormatStrings, gm2-libs/Environment, Base libraries
  @subsection gm2-libs/FIO
  
  @example
--- 1310,1316 ----
  @end example
  @page
  
! @node gm2-libs/FIO, gm2-libs/FileSysOp, gm2-libs/Environment, Base libraries
  @subsection gm2-libs/FIO
  
  @example
*************** END FIO.
*** 1543,1549 ****
  @end example
  @page
  
! @node gm2-libs/FormatStrings, gm2-libs/FpuIO, gm2-libs/FIO, Base libraries
  @subsection gm2-libs/FormatStrings
  
  @example
--- 1674,1710 ----
  @end example
  @page
  
! @node gm2-libs/FileSysOp, gm2-libs/FormatStrings, gm2-libs/FIO, Base libraries
! @subsection gm2-libs/FileSysOp
! 
! @example
! DEFINITION MODULE FileSysOp ;
! 
! FROM CFileSysOp IMPORT AccessMode ;
! 
! 
! (*
!    Description: provides access to filesystem operations using
!                 Modula-2 base types.
! *)
! 
! @findex Exists
! PROCEDURE Exists (filename: ARRAY OF CHAR) : BOOLEAN ;
! @findex IsDir
! PROCEDURE IsDir (dirname: ARRAY OF CHAR) : BOOLEAN ;
! @findex IsFile
! PROCEDURE IsFile (filename: ARRAY OF CHAR) : BOOLEAN ;
! @findex Unlink
! PROCEDURE Unlink (filename: ARRAY OF CHAR) : BOOLEAN ;
! @findex Access
! PROCEDURE Access (pathname: ARRAY OF CHAR; mode: AccessMode) : AccessMode ;
! 
! 
! END FileSysOp.
! @end example
! @page
! 
! @node gm2-libs/FormatStrings, gm2-libs/FpuIO, gm2-libs/FileSysOp, Base libraries
  @subsection gm2-libs/FormatStrings
  
  @example
*************** PROCEDURE ForeachIndiceInIndexDo (i: Ind
*** 1986,1991 ****
--- 2147,2161 ----
  PROCEDURE IsEmpty (i: Index) : BOOLEAN ;
  
  
+ (*
+    FindIndice - returns the indice containing a.
+                 It returns zero if a is not found in array i.
+ *)
+ 
+ @findex FindIndice
+ PROCEDURE FindIndice (i: Index; a: ADDRESS) : CARDINAL ;
+ 
+ 
  END Indexing.
  @end example
  @page
*************** END SMathLib0.
*** 3303,3309 ****
  DEFINITION MODULE SYSTEM ;
  
  EXPORT QUALIFIED BITSPERBYTE, BYTESPERWORD,
!                  ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, (* 
                   Target specific data types.  *)
                   ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE ;
                   (* SIZE is also exported if -fpim2 is used.  *)
--- 3473,3479 ----
  DEFINITION MODULE SYSTEM ;
  
  EXPORT QUALIFIED BITSPERBYTE, BYTESPERWORD,
!                  ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, CARDINAL64, (* 
                   Target specific data types.  *)
                   ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE ;
                   (* SIZE is also exported if -fpim2 is used.  *)
*************** END StrIO.
*** 3872,3878 ****
  @end example
  @page
  
! @node gm2-libs/StrLib, gm2-libs/StringConvert, gm2-libs/StrIO, Base libraries
  @subsection gm2-libs/StrLib
  
  @example
--- 4042,4048 ----
  @end example
  @page
  
! @node gm2-libs/StrLib, gm2-libs/String, gm2-libs/StrIO, Base libraries
  @subsection gm2-libs/StrLib
  
  @example
*************** END StrLib.
*** 3946,3952 ****
  @end example
  @page
  
! @node gm2-libs/StringConvert, gm2-libs/SysExceptions, gm2-libs/StrLib, Base libraries
  @subsection gm2-libs/StringConvert
  
  @example
--- 4116,4140 ----
  @end example
  @page
  
! @node gm2-libs/String, gm2-libs/StringConvert, gm2-libs/StrLib, Base libraries
! @subsection gm2-libs/String
! 
! @example
! DEFINITION MODULE String ;
! 
! FROM DynamicStrings IMPORT String ;
! FROM FIO IMPORT File ;
! 
! @findex Write
! PROCEDURE Write (f: File; str: String) ;
! @findex WriteLn
! PROCEDURE WriteLn (f: File) ;
! 
! END String.
! @end example
! @page
! 
! @node gm2-libs/StringConvert, gm2-libs/StringFileSysOp, gm2-libs/String, Base libraries
  @subsection gm2-libs/StringConvert
  
  @example
*************** END StringConvert.
*** 4290,4296 ****
  @end example
  @page
  
! @node gm2-libs/SysExceptions, gm2-libs/SysStorage, gm2-libs/StringConvert, Base libraries
  @subsection gm2-libs/SysExceptions
  
  @example
--- 4478,4510 ----
  @end example
  @page
  
! @node gm2-libs/StringFileSysOp, gm2-libs/SysExceptions, gm2-libs/StringConvert, Base libraries
! @subsection gm2-libs/StringFileSysOp
! 
! @example
! DEFINITION MODULE StringFileSysOp ;
! 
! FROM DynamicStrings IMPORT String ;
! FROM CFileSysOp IMPORT AccessMode ;
! 
! 
! @findex Exists
! PROCEDURE Exists (filename: String) : BOOLEAN ;
! @findex IsDir
! PROCEDURE IsDir (dirname: String) : BOOLEAN ;
! @findex IsFile
! PROCEDURE IsFile (filename: String) : BOOLEAN ;
! @findex Unlink
! PROCEDURE Unlink (filename: String) : BOOLEAN ;
! @findex Access
! PROCEDURE Access (pathname: String; mode: AccessMode) : AccessMode ;
! 
! 
! END StringFileSysOp.
! @end example
! @page
! 
! @node gm2-libs/SysExceptions, gm2-libs/SysStorage, gm2-libs/StringFileSysOp, Base libraries
  @subsection gm2-libs/SysExceptions
  
  @example
*************** EXPORT UNQUALIFIED alloca, memcpy,
*** 4476,4482 ****
                     index, rindex,
                     memcmp, memset, memmove,
                     strcat, strncat, strcpy, strncpy, strcmp, strncmp,
!                    strlen, strstr, strpbrk, strspn, strcspn, strchr, strrchr ;
  
  @findex alloca
  PROCEDURE alloca (i: CARDINAL) : ADDRESS ;
--- 4690,4699 ----
                     index, rindex,
                     memcmp, memset, memmove,
                     strcat, strncat, strcpy, strncpy, strcmp, strncmp,
!                    strlen, strstr, strpbrk, strspn, strcspn, strchr, strrchr,
! 
!                    clz, clzll,
!                    ctz, ctzll ;
  
  @findex alloca
  PROCEDURE alloca (i: CARDINAL) : ADDRESS ;
*************** PROCEDURE strchr (s: ADDRESS; c: INTEGER
*** 4732,4737 ****
--- 4949,4964 ----
  @findex strrchr
  PROCEDURE strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
  
+ @findex clz
+ PROCEDURE clz (value: CARDINAL) : INTEGER ;
+ @findex clzll
+ PROCEDURE clzll (value: CARDINAL) : INTEGER ;
+ @findex ctz
+ PROCEDURE ctz (value: CARDINAL) : INTEGER ;
+ @findex ctzll
+ PROCEDURE ctzll (value: CARDINAL) : INTEGER ;
+ 
+ 
  END cbuiltin.
  @end example
  @page
*************** PROCEDURE strtod (s: ADDRESS; VAR error:
*** 4893,4899 ****
  
  @findex dtoa
  PROCEDURE dtoa (d        : REAL;
!                 mode     : Mode;
                  ndigits  : INTEGER;
  	        VAR decpt: INTEGER;
  	        VAR sign : BOOLEAN) : ADDRESS ;
--- 5120,5126 ----
  
  @findex dtoa
  PROCEDURE dtoa (d        : REAL;
!                 mode     : INTEGER;
                  ndigits  : INTEGER;
  	        VAR decpt: INTEGER;
  	        VAR sign : BOOLEAN) : ADDRESS ;
*************** PROCEDURE strtold (s: ADDRESS; VAR error
*** 4999,5005 ****
  
  @findex ldtoa
  PROCEDURE ldtoa (d        : LONGREAL;
!                  mode     : Mode;
                   ndigits  : INTEGER;
                   VAR decpt: INTEGER;
                   VAR sign : BOOLEAN) : ADDRESS ;
--- 5226,5232 ----
  
  @findex ldtoa
  PROCEDURE ldtoa (d        : LONGREAL;
!                  mode     : INTEGER;
                   ndigits  : INTEGER;
                   VAR decpt: INTEGER;
                   VAR sign : BOOLEAN) : ADDRESS ;
*************** END ldtoa.
*** 5015,5023 ****
  @example
  DEFINITION MODULE FOR "C" libc ;
  
! FROM SYSTEM IMPORT ADDRESS, CSIZE_T, CSSIZE_T ;
  
  EXPORT UNQUALIFIED time_t, timeb, tm, ptrToTM,
                     write, read,
                     system, abort,
                     malloc, free,
--- 5242,5252 ----
  @example
  DEFINITION MODULE FOR "C" libc ;
  
! FROM SYSTEM IMPORT ADDRESS, CSIZE_T, CSSIZE_T, COFF_T ;
  
  EXPORT UNQUALIFIED time_t, timeb, tm, ptrToTM,
+                    atof, atoi, atol, atoll,
+                    strtod, strtof, strtold, strtol, strtoll, strtoul, strtoull,
                     write, read,
                     system, abort,
                     malloc, free,
*************** TYPE
*** 5072,5077 ****
--- 5301,5399 ----
  
  
  (*
+      double atof(const char *nptr)
+ *)
+ 
+ @findex atof
+ PROCEDURE atof (nptr: ADDRESS) : REAL ;
+ 
+ 
+ (*
+      int atoi(const char *nptr)
+ *)
+ 
+ @findex atoi
+ PROCEDURE atoi (nptr: ADDRESS) : INTEGER ;
+ 
+ 
+ (*
+      long atol(const char *nptr);
+ *)
+ 
+ @findex atol
+ PROCEDURE atol (nptr: ADDRESS) : CSSIZE_T ;
+ 
+ 
+ (*
+      long long atoll(const char *nptr);
+ *)
+ 
+ @findex atoll
+ PROCEDURE atoll (nptr: ADDRESS) : LONGINT ;
+ 
+ 
+ (*
+      double strtod(const char *restrict nptr, char **_Nullable restrict endptr)
+ *)
+ 
+ @findex strtod
+ PROCEDURE strtod (nptr, endptr: ADDRESS) : REAL ;
+ 
+ 
+ (*
+      float strtof(const char *restrict nptr, char **_Nullable restrict endptr)
+ *)
+ 
+ @findex strtof
+ PROCEDURE strtof (nptr, endptr: ADDRESS) : SHORTREAL ;
+ 
+ 
+ (*
+      long double strtold(const char *restrict nptr,
+                          char **_Nullable restrict endptr)
+ *)
+ 
+ @findex strtold
+ PROCEDURE strtold (nptr, endptr: ADDRESS) : LONGREAL ;
+ 
+ 
+ (*
+      long strtol(const char *restrict nptr, char **_Nullable restrict endptr,
+                  int base)
+ *)
+ 
+ @findex strtol
+ PROCEDURE strtol (nptr, endptr: ADDRESS; base: INTEGER) : CSSIZE_T ;
+ 
+ 
+ (*
+      long long strtoll(const char *restrict nptr,
+                        char **_Nullable restrict endptr, int base)
+ *)
+ 
+ @findex strtoll
+ PROCEDURE strtoll (nptr, endptr: ADDRESS; base: INTEGER) : LONGINT ;
+ 
+ 
+ (*
+      unsigned long strtoul(const char *restrict nptr,
+                            char **_Nullable restrict endptr, int base)
+ *)
+ 
+ @findex strtoul
+ PROCEDURE strtoul (nptr, endptr: ADDRESS; base: INTEGER) : CSIZE_T ;
+ 
+ 
+ (*
+      unsigned long long strtoull(const char *restrict nptr,
+                                  char **_Nullable restrict endptr, int base)
+ *)
+ 
+ @findex strtoull
+ PROCEDURE strtoull (nptr, endptr: ADDRESS; base: INTEGER) : LONGCARD ;
+ 
+ 
+ (*
       ssize_t write (int d, void *buf, size_t nbytes)
  *)
  
*************** PROCEDURE close (d: INTEGER) : [ INTEGER
*** 5222,5228 ****
  *)
  
  @findex open
! PROCEDURE open (filename: ADDRESS; oflag: INTEGER; ...) : INTEGER ;
  
  
  (*
--- 5544,5550 ----
  *)
  
  @findex open
! PROCEDURE open (filename: ADDRESS; oflag: INTEGER; mode: INTEGER) : INTEGER ;
  
  
  (*
*************** PROCEDURE creat (filename: ADDRESS; mode
*** 5240,5246 ****
  *)
  
  @findex lseek
! PROCEDURE lseek (fd: INTEGER; offset: CSSIZE_T; whence: INTEGER) : [ CSSIZE_T ] ;
  
  
  (*
--- 5562,5568 ----
  *)
  
  @findex lseek
! PROCEDURE lseek (fd: INTEGER; offset: COFF_T; whence: INTEGER) : [ COFF_T ] ;
  
  
  (*
*************** PROCEDURE BlockMoveBackward (dest, src:
*** 6720,6726 ****
  
  
  (*
!    BlockClear - fills, block..block+n-1, with zero's.
  *)
  
  @findex BlockClear
--- 7042,7048 ----
  
  
  (*
!    BlockClear - fills, block..block+n-1, with zeros.
  *)
  
  @findex BlockClear
*************** PROCEDURE Doio (VAR f: File) ;
*** 7381,7387 ****
  *)
  
  @findex FileNameChar
! PROCEDURE FileNameChar (ch: CHAR) ;
  
  
  END FileSystem.
--- 7703,7709 ----
  *)
  
  @findex FileNameChar
! PROCEDURE FileNameChar (ch: CHAR) : CHAR ;
  
  
  END FileSystem.
*************** VAR
*** 7512,7518 ****
  
  (*
     OpenInput - reads a string from stdin as the filename for reading.
!                If the filename ends with `.' then it appends the defext
                 extension. The global variable Done is set if all
                 was successful.
  *)
--- 7834,7840 ----
  
  (*
     OpenInput - reads a string from stdin as the filename for reading.
!                If the filename ends with '.' then it appends the defext
                 extension. The global variable Done is set if all
                 was successful.
  *)
*************** PROCEDURE CloseInput ;
*** 7532,7538 ****
  
  (*
     OpenOutput - reads a string from stdin as the filename for writing.
!                 If the filename ends with `.' then it appends the defext
                  extension. The global variable Done is set if all
                  was successful.
  *)
--- 7854,7860 ----
  
  (*
     OpenOutput - reads a string from stdin as the filename for writing.
!                 If the filename ends with '.' then it appends the defext
                  extension. The global variable Done is set if all
                  was successful.
  *)
*************** EXPORT QUALIFIED SEMAPHORE, DESCRIPTOR,
*** 8424,8430 ****
  
  TYPE
  @findex SEMAPHORE (type)
!    SEMAPHORE ;         (* defines Dijkstra's semaphores *)
  @findex DESCRIPTOR (type)
     DESCRIPTOR ;        (* handle onto a process         *)
  
--- 8746,8752 ----
  
  TYPE
  @findex SEMAPHORE (type)
!    SEMAPHORE ;         (* defines Dijkstras semaphores  *)
  @findex DESCRIPTOR (type)
     DESCRIPTOR ;        (* handle onto a process         *)
  
*************** PROCEDURE InitSemaphore (v: CARDINAL; Na
*** 8483,8489 ****
  
  
  (*
!    Wait - performs dijkstra's P operation on a semaphore.
            A process which calls this procedure will
            wait until the value of the semaphore is > 0
            and then it will decrement this value.
--- 8805,8811 ----
  
  
  (*
!    Wait - performs dijkstras P operation on a semaphore.
            A process which calls this procedure will
            wait until the value of the semaphore is > 0
            and then it will decrement this value.
*************** PROCEDURE Wait (s: SEMAPHORE) ;
*** 8494,8500 ****
  
  
  (*
!    Signal - performs dijkstra's V operation on a semaphore.
              A process which calls the procedure will increment
              the semaphores value.
  *)
--- 8816,8822 ----
  
  
  (*
!    Signal - performs dijkstras V operation on a semaphore.
              A process which calls the procedure will increment
              the semaphores value.
  *)
*************** DEFINITION MODULE SYSTEM ;
*** 8621,8627 ****
  FROM COROUTINES IMPORT PROTECTION ;
  
  EXPORT QUALIFIED (* the following are built into the compiler: *)
!                  ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, (* 
                   Target specific data types. *)
                   ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE,
                   (* SIZE is exported depending upon -fpim2 and
--- 8943,8949 ----
  FROM COROUTINES IMPORT PROTECTION ;
  
  EXPORT QUALIFIED (* the following are built into the compiler: *)
!                  ADDRESS, WORD, BYTE, CSIZE_T, CSSIZE_T, COFF_T, (* 
                   Target specific data types. *)
                   ADR, TSIZE, ROTATE, SHIFT, THROW, TBITSIZE,
                   (* SIZE is exported depending upon -fpim2 and
*************** DEFINITION MODULE SYSTEM;
*** 13322,13328 ****
    (* The constants and types define underlying properties of storage *)
  
  EXPORT QUALIFIED BITSPERLOC, LOCSPERWORD,
!                  LOC, BYTE, WORD, ADDRESS, CSIZE_T, CSSIZE_T, (* 
                   Target specific data types.  *)
                   ADDADR, SUBADR, DIFADR, MAKEADR, ADR, ROTATE,
                   SHIFT, CAST, TSIZE,
--- 13644,13650 ----
    (* The constants and types define underlying properties of storage *)
  
  EXPORT QUALIFIED BITSPERLOC, LOCSPERWORD,
!                  LOC, BYTE, WORD, ADDRESS, CSIZE_T, CSSIZE_T, COFF_T, (* 
                   Target specific data types.  *)
                   ADDADR, SUBADR, DIFADR, MAKEADR, ADR, ROTATE,
                   SHIFT, CAST, TSIZE,
*************** IMPORT IOChan ;
*** 14878,14889 ****
  PROCEDURE SkipSpaces (cid: IOChan.ChanId) ;
  
  
! (* The following procedures do not read past line marks.  *)
  
  @findex CharAvailable
  PROCEDURE CharAvailable (cid: IOChan.ChanId) : BOOLEAN ;
  
  
  @findex EofOrEoln
  PROCEDURE EofOrEoln (cid: IOChan.ChanId) : BOOLEAN ;
  
--- 15200,15215 ----
  PROCEDURE SkipSpaces (cid: IOChan.ChanId) ;
  
  
! (* CharAvailable returns TRUE if IOChan.ReadResult is notKnown or
!    allRight.  *)
  
  @findex CharAvailable
  PROCEDURE CharAvailable (cid: IOChan.ChanId) : BOOLEAN ;
  
  
+ (* EofOrEoln returns TRUE if IOChan.ReadResult is endOfLine or
+    endOfInput.  *)
+ 
  @findex EofOrEoln
  PROCEDURE EofOrEoln (cid: IOChan.ChanId) : BOOLEAN ;
  
diff -Nrcpad gcc-16-20250608/gcc/objc/ChangeLog gcc-16-20250615/gcc/objc/ChangeLog
*** gcc-16-20250608/gcc/objc/ChangeLog	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/objc/ChangeLog	Sun Jun 15 22:32:25 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* objc-act.h (TYPE_OBJC_INFO): Define to info.objc_info
+ 	instead of objc_info.
+ 
  2024-11-22  Andrew Pinski  <quic_apinski@quicinc.com>
  
  	PR bootstrap/117737
diff -Nrcpad gcc-16-20250608/gcc/objc/objc-act.h gcc-16-20250615/gcc/objc/objc-act.h
*** gcc-16-20250608/gcc/objc/objc-act.h	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/objc/objc-act.h	Sun Jun 15 22:32:25 2025
*************** enum objc_property_nullability {
*** 228,234 ****
  
  /* The following three macros must be overridden (in objcp/objcp-decl.h)
     for Objective-C++.  */
! #define TYPE_OBJC_INFO(TYPE) TYPE_LANG_SPECIFIC (TYPE)->objc_info
  #define SIZEOF_OBJC_TYPE_LANG_SPECIFIC sizeof (struct lang_type)
  #define ALLOC_OBJC_TYPE_LANG_SPECIFIC(NODE)				\
    do {									\
--- 228,234 ----
  
  /* The following three macros must be overridden (in objcp/objcp-decl.h)
     for Objective-C++.  */
! #define TYPE_OBJC_INFO(TYPE) TYPE_LANG_SPECIFIC (TYPE)->info.objc_info
  #define SIZEOF_OBJC_TYPE_LANG_SPECIFIC sizeof (struct lang_type)
  #define ALLOC_OBJC_TYPE_LANG_SPECIFIC(NODE)				\
    do {									\
diff -Nrcpad gcc-16-20250608/gcc/objcp/ChangeLog gcc-16-20250615/gcc/objcp/ChangeLog
*** gcc-16-20250608/gcc/objcp/ChangeLog	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/objcp/ChangeLog	Sun Jun 15 22:32:25 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* objcp-decl.h (TYPE_OBJC_INFO): Define to info.objc_info
+ 	instead of objc_info.
+ 
  2024-11-22  Andrew Pinski  <quic_apinski@quicinc.com>
  
  	PR bootstrap/117737
diff -Nrcpad gcc-16-20250608/gcc/objcp/objcp-decl.h gcc-16-20250615/gcc/objcp/objcp-decl.h
*** gcc-16-20250608/gcc/objcp/objcp-decl.h	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/objcp/objcp-decl.h	Sun Jun 15 22:32:25 2025
*************** extern tree objcp_end_compound_stmt (tre
*** 60,66 ****
  #define OBJC_SET_TYPE_NAME(type, name) (TYPE_IDENTIFIER (type) = (name))
  
  #undef TYPE_OBJC_INFO
! #define TYPE_OBJC_INFO(TYPE) LANG_TYPE_CLASS_CHECK (TYPE)->objc_info
  #undef SIZEOF_OBJC_TYPE_LANG_SPECIFIC
  #define SIZEOF_OBJC_TYPE_LANG_SPECIFIC sizeof (struct lang_type)
  #undef ALLOC_OBJC_TYPE_LANG_SPECIFIC
--- 60,66 ----
  #define OBJC_SET_TYPE_NAME(type, name) (TYPE_IDENTIFIER (type) = (name))
  
  #undef TYPE_OBJC_INFO
! #define TYPE_OBJC_INFO(TYPE) LANG_TYPE_CLASS_CHECK (TYPE)->info.objc_info
  #undef SIZEOF_OBJC_TYPE_LANG_SPECIFIC
  #define SIZEOF_OBJC_TYPE_LANG_SPECIFIC sizeof (struct lang_type)
  #undef ALLOC_OBJC_TYPE_LANG_SPECIFIC
diff -Nrcpad gcc-16-20250608/gcc/opts-diagnostic.cc gcc-16-20250615/gcc/opts-diagnostic.cc
*** gcc-16-20250608/gcc/opts-diagnostic.cc	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/opts-diagnostic.cc	Sun Jun 15 22:32:25 2025
*************** sarif_scheme_handler::make_sink (const c
*** 531,537 ****
  
    auto sink = make_sarif_sink (ctxt.m_dc,
  			       *line_table,
- 			       ctxt.m_opts.x_main_input_filename,
  			       std::move (serialization_obj),
  			       sarif_gen_opts,
  			       std::move (output_file));
--- 531,536 ----
*************** handle_OPT_fdiagnostics_add_output_ (con
*** 633,638 ****
--- 632,638 ----
    if (!sink)
      return;
  
+   sink->set_main_input_filename (opts.x_main_input_filename);
    dc.add_sink (std::move (sink));
  }
  
*************** handle_OPT_fdiagnostics_set_output_ (con
*** 657,662 ****
--- 657,663 ----
    if (!sink)
      return;
  
+   sink->set_main_input_filename (opts.x_main_input_filename);
    dc.set_output_format (std::move (sink));
  }
  
diff -Nrcpad gcc-16-20250608/gcc/params.opt gcc-16-20250615/gcc/params.opt
*** gcc-16-20250608/gcc/params.opt	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/params.opt	Sun Jun 15 22:32:25 2025
*************** The maximum factor which the loop vector
*** 1253,1258 ****
--- 1253,1262 ----
  Common Joined UInteger Var(param_vect_induction_float) Init(1) IntegerRange(0, 1) Param Optimization
  Enable loop vectorization of floating point inductions.
  
+ -param=vect-scalar-cost-multiplier=
+ Common Joined UInteger Var(param_vect_scalar_cost_multiplier) Init(100) IntegerRange(0, 10000) Param Optimization
+ The scaling multiplier as a percentage to apply to all scalar loop costing when performing vectorization profitability analysis.  The default value is 100.
+ 
  -param=vrp-block-limit=
  Common Joined UInteger Var(param_vrp_block_limit) Init(150000) Optimization Param
  Maximum number of basic blocks before VRP switches to a fast model with less memory requirements.
diff -Nrcpad gcc-16-20250608/gcc/po/ChangeLog gcc-16-20250615/gcc/po/ChangeLog
*** gcc-16-20250608/gcc/po/ChangeLog	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/po/ChangeLog	Sun Jun 15 22:32:25 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-06-12  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* es.po: Update.
+ 
  2025-05-15  Joseph Myers  <josmyers@redhat.com>
  
  	* zh_CN.po: Update.
diff -Nrcpad gcc-16-20250608/gcc/po/es.po gcc-16-20250615/gcc/po/es.po
*** gcc-16-20250608/gcc/po/es.po	Sun Jun  8 22:32:17 2025
--- gcc-16-20250615/gcc/po/es.po	Sun Jun 15 22:32:25 2025
***************
*** 2,8 ****
  # Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
  # Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
! # Antonio Ceballos Roa <aceballos@gmail.com>, 2016, 2017, 2018, 2019, 2020
  #
  # Agradezco a Juan Cuquejo Mira por sus comentarios sobre esta traducción
  #
--- 2,8 ----
  # Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2016, 2017, 2018, 2019, 2020 Free Software Foundation, Inc.
  # This file is distributed under the same license as the gcc package.
  # Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
! # Antonio Ceballos Roa <aceballos@gmail.com>, 2016, 2017, 2018, 2019, 2020, 2025
  #
  # Agradezco a Juan Cuquejo Mira por sus comentarios sobre esta traducción
  #
***************
*** 40,49 ****
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 10.1-b20200209\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-04-23 19:27+0000\n"
! "PO-Revision-Date: 2020-03-22 16:48+0100\n"
  "Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
  "Language-Team: Spanish <es@tp.org.es>\n"
  "Language: es\n"
--- 40,49 ----
  #
  msgid ""
  msgstr ""
! "Project-Id-Version: gcc 15.1.0\n"
  "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
  "POT-Creation-Date: 2025-04-23 19:27+0000\n"
! "PO-Revision-Date: 2025-06-12 23:08+0200\n"
  "Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
  "Language-Team: Spanish <es@tp.org.es>\n"
  "Language: es\n"
*************** msgstr "Activa las opciones comunes para
*** 15533,15544 ****
  #: common.opt:2648
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
! msgstr ""
  
  #: common.opt:2652
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
! msgstr ""
  
  #: common.opt:2656
  #, no-c-format
--- 15533,15544 ----
  #: common.opt:2648
  #, no-c-format
  msgid "Register the profile information in the .gcov_info section instead of using a constructor/destructor."
! msgstr "Registra la información de análisis de perfil en la sección .gcov_info en lugar de utilizar un constructor/destructor."
  
  #: common.opt:2652
  #, no-c-format
  msgid "Register the profile information in the specified section instead of using a constructor/destructor."
! msgstr "Registra la información de análisis de perfil en la sección especificada en lugar de utilizar un constructor/destructor."
  
  #: common.opt:2656
  #, no-c-format
*************** msgstr ""
*** 18902,18908 ****
  #: gcov-tool.cc:157 gcov-tool.cc:300
  #, c-format
  msgid "no profile files were merged\n"
! msgstr ""
  
  #: gcov-tool.cc:169
  #, c-format
--- 18902,18908 ----
  #: gcov-tool.cc:157 gcov-tool.cc:300
  #, c-format
  msgid "no profile files were merged\n"
! msgstr "no se han mezclado ficheros de perfil\n"
  
  #: gcov-tool.cc:169
  #, c-format
*************** msgid "    -w, --weight <w1,w2>
*** 18925,18950 ****
  msgstr "    -w, --weight <p1,p2>                Establece los pesos (valores de coma flotante)\n"
  
  #: gcov-tool.cc:188
! #, fuzzy, c-format
! #| msgid "Merge subcomand usage:"
  msgid "Merge subcommand usage:"
  msgstr "Modo de empleo de la suborden de mezcla:"
  
  #: gcov-tool.cc:240
! #, fuzzy, c-format
! #| msgid ""
! #| "  -l, --long-file-names           Use long output file names for included\n"
! #| "                                    source files\n"
  msgid ""
  "  merge-stream [options] [<file>]       Merge coverage stream file (or stdin)\n"
  "                                        and coverage file contents\n"
  msgstr ""
! "  -l, --long-file-names           Usa nombres largos de ficheros para los\n"
! "                                    ficheros fuentes incluidos\n"
  
  #: gcov-tool.cc:258
! #, fuzzy, c-format
! #| msgid "Merge subcomand usage:"
  msgid "Merge-stream subcommand usage:"
  msgstr "Modo de empleo de la suborden de mezcla:"
  
--- 18925,18946 ----
  msgstr "    -w, --weight <p1,p2>                Establece los pesos (valores de coma flotante)\n"
  
  #: gcov-tool.cc:188
! #, c-format
  msgid "Merge subcommand usage:"
  msgstr "Modo de empleo de la suborden de mezcla:"
  
  #: gcov-tool.cc:240
! #, c-format
  msgid ""
  "  merge-stream [options] [<file>]       Merge coverage stream file (or stdin)\n"
  "                                        and coverage file contents\n"
  msgstr ""
! "  merge-stream [options] [<fich>]       Mezcla el fichero de flujo de cobertura\n"
! "                                        (o stdin) y el contenido del fichero de\n"
! "                                        cobertura\n"
  
  #: gcov-tool.cc:258
! #, c-format
  msgid "Merge-stream subcommand usage:"
  msgstr "Modo de empleo de la suborden de mezcla:"
  
*************** msgid "    -t <float>, --hot_threshold <
*** 19014,19021 ****
  msgstr "    -t <float>, --hot_threshold <float> Establece el umbral de calentura\n"
  
  #: gcov-tool.cc:510
! #, fuzzy, c-format
! #| msgid "Overlap subcomand usage:"
  msgid "Overlap subcommand usage:"
  msgstr "Modo de empleo de la suborden de solapamiento:"
  
--- 19010,19016 ----
  msgstr "    -t <float>, --hot_threshold <float> Establece el umbral de calentura\n"
  
  #: gcov-tool.cc:510
! #, c-format
  msgid "Overlap subcommand usage:"
  msgstr "Modo de empleo de la suborden de solapamiento:"
  
*************** msgstr ""
*** 19059,19068 ****
  "%s.\n"
  
  #: gcov-tool.cc:595
! #, fuzzy, c-format
! #| msgid "Copyright %s 2019 Free Software Foundation, Inc.\n"
  msgid "Copyright %s 2025 Free Software Foundation, Inc.\n"
! msgstr "Copyright %s 2019 Free Software Foundation, Inc.\n"
  
  #: gcov.cc:1096
  #, c-format
--- 19054,19062 ----
  "%s.\n"
  
  #: gcov-tool.cc:595
! #, c-format
  msgid "Copyright %s 2025 Free Software Foundation, Inc.\n"
! msgstr "Copyright %s 2025 Free Software Foundation, Inc.\n"
  
  #: gcov.cc:1096
  #, c-format
*************** msgstr ""
*** 19102,19123 ****
  "                                    en lugar de los porcentajes\n"
  
  #: gcov.cc:1102
! #, fuzzy, c-format
! #| msgid ""
! #| "  -c, --branch-counts             Output counts of branches taken\n"
! #| "                                    rather than percentages\n"
  msgid ""
  "  -g, --conditions                Include modified condition/decision\n"
  "                                    coverage (masking MC/DC) in output\n"
  msgstr ""
! "  -c, --branch-counts             Se muestra el número de ramificaciones\n"
! "                                    en lugar de los porcentajes\n"
  
  #: gcov.cc:1104
! #, fuzzy, c-format
! #| msgid "  -p, --preserve-paths            Preserve all pathname components\n"
  msgid "  -e, --prime-paths               Show prime path coverage summary\n"
! msgstr "  -p, --preserve-paths            Preserva todos los nombres de ruta de los componentes\n"
  
  #: gcov.cc:1105
  #, c-format
--- 19096,19116 ----
  "                                    en lugar de los porcentajes\n"
  
  #: gcov.cc:1102
! #, c-format
  msgid ""
  "  -g, --conditions                Include modified condition/decision\n"
  "                                    coverage (masking MC/DC) in output\n"
  msgstr ""
! "  -g, --conditions                Incluye la cobertura de condición/decisión\n"
! "                                    modificada (enmascarando MC/DC) en la\n"
! "                                    salida\n"
  
  #: gcov.cc:1104
! #, c-format
  msgid "  -e, --prime-paths               Show prime path coverage summary\n"
! msgstr ""
! "  -e, --prime-paths               Muestra el resumen de la cobertura de camino\n"
! "                                    primario\n"
  
  #: gcov.cc:1105
  #, c-format
*************** msgid ""
*** 19127,19132 ****
--- 19120,19129 ----
  "                                    TYPE is 'covered', 'uncovered', or 'both'\n"
  "                                    and defaults to 'uncovered'\n"
  msgstr ""
+ "      --prime-paths-lines[=TIPO]  Incluye los caminos en la salida\n"
+ "                                    modo de traza de línea - no afecta a json\n"
+ "                                    TIPO es 'covered', 'uncovered' o 'both'\n"
+ "                                    y el predefinido es 'uncovered'\n"
  
  #: gcov.cc:1109
  #, c-format
*************** msgid ""
*** 19136,19141 ****
--- 19133,19142 ----
  "                                    TYPE is 'covered', 'uncovered', or 'both'\n"
  "                                    and defaults to 'uncovered'\n"
  msgstr ""
+ "      --prime-paths-source[=TIPO] Incluye los caminos en la salida\n"
+ "                                    modo de traza de fuente - no afecta a json\n"
+ "                                    TIPO es 'covered', 'uncovered' o 'both'\n"
+ "                                    y el predefinido es 'uncovered'\n"
  
  #: gcov.cc:1113
  #, c-format
*************** msgstr "  -d, --display-progress
*** 19145,19151 ****
  #: gcov.cc:1114
  #, c-format
  msgid "  -D, --debug\t\t\t    Display debugging dumps\n"
! msgstr ""
  
  #: gcov.cc:1115
  #, c-format
--- 19146,19152 ----
  #: gcov.cc:1114
  #, c-format
  msgid "  -D, --debug\t\t\t    Display debugging dumps\n"
! msgstr "  -D, --debug\t\t\t    Muestra volcados de depuración\n"
  
  #: gcov.cc:1115
  #, c-format
*************** msgid "  -f, --function-summaries
*** 19153,19168 ****
  msgstr "  -f, --function-summaries        Muestra sumarios para cada función\n"
  
  #: gcov.cc:1116
! #, fuzzy, c-format
! #| msgid "    -f, --function                      Print function level info\n"
  msgid "      --include                   Include functions matching this regex\n"
! msgstr "    -f, --function                      Imprime información sobre el nivel de funciones\n"
  
  #: gcov.cc:1117
! #, fuzzy, c-format
! #| msgid "  -h, --help                      Print this help, then exit\n"
  msgid "      --exclude                   Exclude functions matching this regex\n"
! msgstr "  -h, --help                      Muestra esta información, y finaliza\n"
  
  #: gcov.cc:1118
  #, c-format
--- 19154,19167 ----
  msgstr "  -f, --function-summaries        Muestra sumarios para cada función\n"
  
  #: gcov.cc:1116
! #, c-format
  msgid "      --include                   Include functions matching this regex\n"
! msgstr "      --include                   Incluye funciones coincidentes con esta regex\n"
  
  #: gcov.cc:1117
! #, c-format
  msgid "      --exclude                   Exclude functions matching this regex\n"
! msgstr "      --exclude                   Excluye funciones coincidentes con esta regex\n"
  
  #: gcov.cc:1118
  #, c-format
*************** msgid "  -h, --help
*** 19170,19187 ****
  msgstr "  -h, --help                      Muestra esta información, y finaliza\n"
  
  #: gcov.cc:1119
! #, fuzzy, c-format
! #| msgid "  -i, --json-format               Output JSON intermediate format into .gcov.json.gz file\n"
  msgid ""
  "  -j, --json-format               Output JSON intermediate format\n"
  "                                    into .gcov.json.gz file\n"
! msgstr "  -i, --json-format               Salida con formato JSON intermedia en el fichero .gcov.json.gz\n"
  
  #: gcov.cc:1121
! #, fuzzy, c-format
! #| msgid "  -j, --human-readable            Output human readable numbers\n"
  msgid "  -H, --human-readable            Output human readable numbers\n"
! msgstr "  -j, --human-readable            Salida con números legibles para humanos\n"
  
  #: gcov.cc:1122
  #, c-format
--- 19169,19186 ----
  msgstr "  -h, --help                      Muestra esta información, y finaliza\n"
  
  #: gcov.cc:1119
! #, c-format
  msgid ""
  "  -j, --json-format               Output JSON intermediate format\n"
  "                                    into .gcov.json.gz file\n"
! msgstr ""
! "  -j, --json-format               Envía el formato intermedio JSON\n"
! "                                    al fichero .gcov.json.gz\n"
  
  #: gcov.cc:1121
! #, c-format
  msgid "  -H, --human-readable            Output human readable numbers\n"
! msgstr "  -H, --human-readable            Salida con números legibles para humanos\n"
  
  #: gcov.cc:1122
  #, c-format
*************** msgstr ""
*** 19200,19218 ****
  #: gcov.cc:1125
  #, c-format
  msgid "  -m, --demangled-names           Output demangled function names\n"
! msgstr "  -m, --demangled-names           Nombres de función mutilados de salida\n"
  
  #: gcov.cc:1126
! #, fuzzy, c-format
! #| msgid ""
! #| "  -l, --long-file-names           Use long output file names for included\n"
! #| "                                    source files\n"
  msgid ""
  "  -M, --filter-on-demangled       Make --include/--exclude match on demangled\n"
  "                                    names. This does not imply -m\n"
  msgstr ""
! "  -l, --long-file-names           Usa nombres largos de ficheros para los\n"
! "                                    ficheros fuentes incluidos\n"
  
  #: gcov.cc:1128
  #, c-format
--- 19199,19214 ----
  #: gcov.cc:1125
  #, c-format
  msgid "  -m, --demangled-names           Output demangled function names\n"
! msgstr "  -m, --demangled-names           Saca nombres de función desofuscados\n"
  
  #: gcov.cc:1126
! #, c-format
  msgid ""
  "  -M, --filter-on-demangled       Make --include/--exclude match on demangled\n"
  "                                    names. This does not imply -m\n"
  msgstr ""
! "  -M, --filter-on-demangled       Aplica --include/--exclude a los nombres\n"
! "                                    desofuscados. No implica -m\n"
  
  #: gcov.cc:1128
  #, c-format
*************** msgid "  -x, --hash-filenames
*** 19270,19293 ****
  msgstr "  -x, --hash-filenames            Nombres de ruta largos de Hash\n"
  
  #: gcov.cc:1139
! #, fuzzy, c-format
! #| msgid "Options:\n"
  msgid ""
  "\n"
  "Obsolete options:\n"
! msgstr "Opciones:\n"
  
  #: gcov.cc:1140
! #, fuzzy, c-format
! #| msgid "  -i, --json-format               Output JSON intermediate format into .gcov.json.gz file\n"
  msgid "  -i, --json-format               Replaced with -j, --json-format\n"
! msgstr "  -i, --json-format               Salida con formato JSON intermedia en el fichero .gcov.json.gz\n"
  
  #: gcov.cc:1141
! #, fuzzy, c-format
! #| msgid "  -j, --human-readable            Output human readable numbers\n"
  msgid "  -j, --human-readable            Replaced with -H, --human-readable\n"
! msgstr "  -j, --human-readable            Salida con números legibles para humanos\n"
  
  #: gcov.cc:1152
  #, c-format
--- 19266,19288 ----
  msgstr "  -x, --hash-filenames            Nombres de ruta largos de Hash\n"
  
  #: gcov.cc:1139
! #, c-format
  msgid ""
  "\n"
  "Obsolete options:\n"
! msgstr ""
! "\n"
! "Opciones obsoletas:\n"
  
  #: gcov.cc:1140
! #, c-format
  msgid "  -i, --json-format               Replaced with -j, --json-format\n"
! msgstr "  -i, --json-format               Reemplazado por -j, --json-format\n"
  
  #: gcov.cc:1141
! #, c-format
  msgid "  -j, --human-readable            Replaced with -H, --human-readable\n"
! msgstr "  -j, --human-readable            Reemplazado por -H, --human-readable\n"
  
  #: gcov.cc:1152
  #, c-format
*************** msgid "gcov %s%s\n"
*** 19295,19314 ****
  msgstr "gcov %s%s\n"
  
  #: gcov.cc:1153
! #, fuzzy, c-format
! #| msgid "collect2 version %s\n"
  msgid "JSON format version: %s\n"
! msgstr "collect2 versión %s\n"
  
  #: gcov.cc:1237
  #, c-format
  msgid "invalid argument '%s' for '--prime-paths-lines'. Valid arguments are: 'covered', 'uncovered', 'both'\n"
! msgstr ""
  
  #: gcov.cc:1258
  #, c-format
  msgid "invalid argument '%s' for '--prime-paths-source'. Valid arguments are: 'covered', 'uncovered', 'both'\n"
! msgstr ""
  
  #: gcov.cc:1726
  #, c-format
--- 19290,19308 ----
  msgstr "gcov %s%s\n"
  
  #: gcov.cc:1153
! #, c-format
  msgid "JSON format version: %s\n"
! msgstr "versión del formato JSON: %s\n"
  
  #: gcov.cc:1237
  #, c-format
  msgid "invalid argument '%s' for '--prime-paths-lines'. Valid arguments are: 'covered', 'uncovered', 'both'\n"
! msgstr "argumento no válido '%s' para --prime-paths-lines'. Argumentos válidos: 'covered', 'uncovered', 'both'\n"
  
  #: gcov.cc:1258
  #, c-format
  msgid "invalid argument '%s' for '--prime-paths-source'. Valid arguments are: 'covered', 'uncovered', 'both'\n"
! msgstr "argumento no válido '%s' para --prime-paths-source'. Argumentos válidos: 'covered', 'uncovered', 'both'\n"
  
  #: gcov.cc:1726
  #, c-format
*************** msgid "%s:already seen blocks for '%s'\n
*** 19376,19385 ****
  msgstr "%s:ya se vieron bloques para '%s'\n"
  
  #: gcov.cc:2391
! #, fuzzy, c-format
! #| msgid "%s:already seen blocks for '%s'\n"
  msgid "%s:already seen conditions for '%s'\n"
! msgstr "%s:ya se vieron bloques para '%s'\n"
  
  #: gcov.cc:2449 gcov.cc:2589
  #, c-format
--- 19370,19378 ----
  msgstr "%s:ya se vieron bloques para '%s'\n"
  
  #: gcov.cc:2391
! #, c-format
  msgid "%s:already seen conditions for '%s'\n"
! msgstr "%s:condiciones ya vistas para '%s'\n"
  
  #: gcov.cc:2449 gcov.cc:2589
  #, c-format
*************** msgid "No calls\n"
*** 19482,19509 ****
  msgstr "No hay llamadas\n"
  
  #: gcov.cc:3090 gcov.cc:3144
! #, fuzzy, c-format
! #| msgid "Lines executed:%s of %d\n"
  msgid "Condition outcomes covered:%s of %d\n"
! msgstr "Líneas ejecutadas:%s de %d\n"
  
  #: gcov.cc:3095 gcov.cc:3149
! #, fuzzy, c-format
! #| msgid "bad condition code"
  msgid "No conditions\n"
! msgstr "código de condición erróneo"
  
  #: gcov.cc:3101 gcov.cc:3155
! #, fuzzy, c-format
! #| msgid "Branches executed:%s of %d\n"
  msgid "Prime paths covered:%s of %d\n"
! msgstr "Ramificaciones ejecutadas:%s de %d\n"
  
  #: gcov.cc:3105 gcov.cc:3159
! #, fuzzy, c-format
! #| msgid "Display this information."
  msgid "No path information\n"
! msgstr "Muestra esta información."
  
  #: gcov.cc:3379
  #, c-format
--- 19475,19498 ----
  msgstr "No hay llamadas\n"
  
  #: gcov.cc:3090 gcov.cc:3144
! #, c-format
  msgid "Condition outcomes covered:%s of %d\n"
! msgstr "Salidas de condiciones cubiertas:%s de %d\n"
  
  #: gcov.cc:3095 gcov.cc:3149
! #, c-format
  msgid "No conditions\n"
! msgstr "No hay condiciones\n"
  
  #: gcov.cc:3101 gcov.cc:3155
! #, c-format
  msgid "Prime paths covered:%s of %d\n"
! msgstr "Caminos primarios cubiertos:%s de %d\n"
  
  #: gcov.cc:3105 gcov.cc:3159
! #, c-format
  msgid "No path information\n"
! msgstr "No hay información de caminos\n"
  
  #: gcov.cc:3379
  #, c-format
*************** msgstr "%s:no hay líneas para '%s'\n"
*** 19513,19525 ****
  #: gcov.cc:3515
  #, c-format
  msgid "condition outcomes covered %d/%d\n"
! msgstr ""
  
  #: gcov.cc:3528
! #, fuzzy, c-format
! #| msgid "unconditional %2d taken %s\n"
  msgid "condition %2u not covered (%s%s)\n"
! msgstr "el incondicional %2d tomado %s\n"
  
  #: gcov.cc:3542
  #, c-format
--- 19502,19513 ----
  #: gcov.cc:3515
  #, c-format
  msgid "condition outcomes covered %d/%d\n"
! msgstr "salidas de condiciones cubiertas %d/%d\n"
  
  #: gcov.cc:3528
! #, c-format
  msgid "condition %2u not covered (%s%s)\n"
! msgstr "condición %2u no cubierta (%s%s)\n"
  
  #: gcov.cc:3542
  #, c-format
*************** msgid "branch %2d taken %s%s"
*** 19537,19546 ****
  msgstr "ramificación %2d tomada %s%s"
  
  #: gcov.cc:3557
! #, fuzzy, c-format
! #| msgid "branch %2d never executed"
  msgid "branch %2d never executed%s"
! msgstr "la ramificacion %2d nunca se ejecuta"
  
  #: gcov.cc:3562
  #, c-format
--- 19525,19533 ----
  msgstr "ramificación %2d tomada %s%s"
  
  #: gcov.cc:3557
! #, c-format
  msgid "branch %2d never executed%s"
! msgstr "la ramificacion %2d nunca se ejecuta%s"
  
  #: gcov.cc:3562
  #, c-format
*************** msgid "unconditional %2d never executed\
*** 19558,19572 ****
  msgstr "el incondicional %2d nunca se ejecuta\n"
  
  #: gcov.cc:3729
! #, fuzzy, c-format
! #| msgid "parameter name omitted"
  msgid "path coverage omitted\n"
! msgstr "se omitió el nombre del parámetro"
  
  #: gcov.cc:3731
  #, c-format
  msgid "paths covered %u of %zu\n"
! msgstr ""
  
  #: gcov.cc:3806
  #, c-format
--- 19545,19558 ----
  msgstr "el incondicional %2d nunca se ejecuta\n"
  
  #: gcov.cc:3729
! #, c-format
  msgid "path coverage omitted\n"
! msgstr "cobertura de caminos omitida\n"
  
  #: gcov.cc:3731
  #, c-format
  msgid "paths covered %u of %zu\n"
! msgstr "caminos cubiertos %u de %zu\n"
  
  #: gcov.cc:3806
  #, c-format
*************** msgid "End of search list.\n"
*** 19612,19627 ****
  msgstr "Fin de la lista de búsqueda.\n"
  
  #: incpath.cc:408
! #, fuzzy, c-format
! #| msgid "#include <...> search starts here:\n"
  msgid "#embed <...> search starts here:\n"
! msgstr "la búsqueda de #include <...> inicia aquí:\n"
  
  #: incpath.cc:411
! #, fuzzy, c-format
! #| msgid "End of search list.\n"
  msgid "End of #embed search list.\n"
! msgstr "Fin de la lista de búsqueda.\n"
  
  #: input.cc:35
  msgid "<built-in>"
--- 19598,19611 ----
  msgstr "Fin de la lista de búsqueda.\n"
  
  #: incpath.cc:408
! #, c-format
  msgid "#embed <...> search starts here:\n"
! msgstr "la búsqueda de #embed <...> comienza aquí:\n"
  
  #: incpath.cc:411
! #, c-format
  msgid "End of #embed search list.\n"
! msgstr "Fin de la lista de búsqueda de #embed.\n"
  
  #: input.cc:35
  msgid "<built-in>"
*************** msgid "wrong number of arguments to %%:d
*** 27144,27153 ****
  msgstr "número erróneo de argumentos para %%:debug-level-gt"
  
  #: gcov-tool.cc:75
! #, fuzzy, gcc-internal-format, gfc-internal-format
! #| msgid "error in removing %s\n"
  msgid "error in removing %s"
! msgstr "error al quitar %s\n"
  
  #: gcov-tool.cc:106
  #, gcc-internal-format, gfc-internal-format
--- 27128,27136 ----
  msgstr "número erróneo de argumentos para %%:debug-level-gt"
  
  #: gcov-tool.cc:75
! #, gcc-internal-format, gfc-internal-format
  msgid "error in removing %s"
! msgstr "error al quitar %s"
  
  #: gcov-tool.cc:106
  #, gcc-internal-format, gfc-internal-format
*************** msgstr "No se puede cambiar al directori
*** 27167,27185 ****
  #: gcov-tool.cc:125
  #, gcc-internal-format, gfc-internal-format
  msgid "output file %s already exists in folder %s"
! msgstr ""
  
  #: gcov-tool.cc:217 gcov-tool.cc:285
! #, fuzzy, gcc-internal-format
! #| msgid "weights need to be non-negative\n"
  msgid "weights need to be non-negative"
! msgstr "los pesos tienen que ser no negativos\n"
  
  #: gcov-tool.cc:424
! #, fuzzy, gcc-internal-format
! #| msgid "scale needs to be non-negative\n"
  msgid "scale needs to be non-negative"
! msgstr "la escala tiene que ser no negativa\n"
  
  #: gcse.cc:4194
  #, gcc-internal-format, gfc-internal-format
--- 27150,27166 ----
  #: gcov-tool.cc:125
  #, gcc-internal-format, gfc-internal-format
  msgid "output file %s already exists in folder %s"
! msgstr "el fichero de salida %s ya existe en la carpeta %s"
  
  #: gcov-tool.cc:217 gcov-tool.cc:285
! #, gcc-internal-format
  msgid "weights need to be non-negative"
! msgstr "los pesos han de ser no negativos"
  
  #: gcov-tool.cc:424
! #, gcc-internal-format
  msgid "scale needs to be non-negative"
! msgstr "la escala ha de ser no negativa"
  
  #: gcse.cc:4194
  #, gcc-internal-format, gfc-internal-format
diff -Nrcpad gcc-16-20250608/gcc/profile-count.cc gcc-16-20250615/gcc/profile-count.cc
*** gcc-16-20250608/gcc/profile-count.cc	Sun Jun  8 22:32:18 2025
--- gcc-16-20250615/gcc/profile-count.cc	Sun Jun 15 22:32:25 2025
*************** profile_count::dump (FILE *f, struct fun
*** 94,102 ****
    else if (fun && initialized_p ()
  	   && fun->cfg
  	   && ENTRY_BLOCK_PTR_FOR_FN (fun)->count.initialized_p ())
!     fprintf (f, "%" PRId64 " (%s, freq %.4f)", m_val,
! 	     profile_quality_display_names[m_quality],
! 	     to_sreal_scale (ENTRY_BLOCK_PTR_FOR_FN (fun)->count).to_double ());
    else
      fprintf (f, "%" PRId64 " (%s)", m_val,
  	     profile_quality_display_names[m_quality]);
--- 94,109 ----
    else if (fun && initialized_p ()
  	   && fun->cfg
  	   && ENTRY_BLOCK_PTR_FOR_FN (fun)->count.initialized_p ())
!     {
!       if (compatible_p (ENTRY_BLOCK_PTR_FOR_FN (fun)->count))
! 	fprintf (f, "%" PRId64 " (%s, freq %.4f)", m_val,
! 		 profile_quality_display_names[m_quality],
! 		 to_sreal_scale
! 		   (ENTRY_BLOCK_PTR_FOR_FN (fun)->count).to_double ());
!       else
! 	fprintf (f, "%" PRId64 " (%s, incompatible with entry block count)",
! 		 m_val, profile_quality_display_names[m_quality]);
!     }
    else
      fprintf (f, "%" PRId64 " (%s)", m_val,
  	     profile_quality_display_names[m_quality]);
diff -Nrcpad gcc-16-20250608/gcc/selftest-logical-location.cc gcc-16-20250615/gcc/selftest-logical-location.cc
*** gcc-16-20250608/gcc/selftest-logical-location.cc	Sun Jun  8 22:32:18 2025
--- gcc-16-20250615/gcc/selftest-logical-location.cc	Sun Jun 15 22:32:25 2025
*************** test_logical_location_manager::item_from
*** 90,96 ****
    if (item **slot = m_name_to_item_map.get (funcname))
      return *slot;
  
!   item *i = new item (LOGICAL_LOCATION_KIND_FUNCTION, funcname);
    m_name_to_item_map.put (funcname, i);
    return i;
  }
--- 90,96 ----
    if (item **slot = m_name_to_item_map.get (funcname))
      return *slot;
  
!   item *i = new item (logical_location_kind::function, funcname);
    m_name_to_item_map.put (funcname, i);
    return i;
  }
diff -Nrcpad gcc-16-20250608/gcc/selftest-xml.h gcc-16-20250615/gcc/selftest-xml.h
*** gcc-16-20250608/gcc/selftest-xml.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/selftest-xml.h	Sun Jun 15 22:32:25 2025
***************
*** 0 ****
--- 1,50 ----
+ /* Selftest support for XML.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ 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/>.  */
+ 
+ #ifndef GCC_SELFTEST_XML_H
+ #define GCC_SELFTEST_XML_H
+ 
+ #include "xml.h"
+ 
+ /* The selftest code should entirely disappear in a production
+    configuration, hence we guard all of it with #if CHECKING_P.  */
+ 
+ #if CHECKING_P
+ 
+ namespace selftest {
+ 
+ /* Assert that NODE written with indentation as xml source
+    equals EXPECTED_VALUE.
+    Use LOC for any failures.  */
+ 
+ void
+ assert_xml_print_eq (const location &loc,
+ 		     const xml::node &node,
+ 		     const char *expected_value);
+ #define ASSERT_XML_PRINT_EQ(XML_NODE, EXPECTED_VALUE)		\
+   assert_xml_print_eq ((SELFTEST_LOCATION),			\
+ 		       (XML_NODE),				\
+ 		       (EXPECTED_VALUE))
+ 
+ } // namespace selftest
+ 
+ #endif /* #if CHECKING_P */
+ 
+ #endif /* GCC_SELFTEST_XML_H */
diff -Nrcpad gcc-16-20250608/gcc/stmt.cc gcc-16-20250615/gcc/stmt.cc
*** gcc-16-20250608/gcc/stmt.cc	Sun Jun  8 22:32:18 2025
--- gcc-16-20250615/gcc/stmt.cc	Sun Jun 15 22:32:25 2025
*************** along with GCC; see the file COPYING3.
*** 52,57 ****
--- 52,58 ----
  #include "tree-cfg.h"
  #include "dumpfile.h"
  #include "builtins.h"
+ #include "cfgexpand.h"
  
  
  /* Functions and data structures for expanding case statements.  */
*************** expand_case (gswitch *stmt)
*** 1025,1031 ****
        && gimple_seq_unreachable_p (bb_seq (default_edge->dest)))
      {
        default_label = NULL;
!       remove_edge (default_edge);
        default_edge = NULL;
      }
  
--- 1026,1032 ----
        && gimple_seq_unreachable_p (bb_seq (default_edge->dest)))
      {
        default_label = NULL;
!       expand_remove_edge (default_edge);
        default_edge = NULL;
      }
  
diff -Nrcpad gcc-16-20250608/gcc/testsuite/ChangeLog gcc-16-20250615/gcc/testsuite/ChangeLog
*** gcc-16-20250608/gcc/testsuite/ChangeLog	Sun Jun  8 22:32:18 2025
--- gcc-16-20250615/gcc/testsuite/ChangeLog	Sun Jun 15 22:32:25 2025
***************
*** 1,3 ****
--- 1,407 ----
+ 2025-06-14  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-06-14  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR rtl-optimization/120423
+ 	PR rtl-optimization/116389
+ 	* gcc.target/avr/torture/pr120423-1.c: New test.
+ 	* gcc.target/avr/torture/pr120423-2.c: New test.
+ 	* gcc.target/avr/torture/pr120423-116389.c: New test.
+ 
+ 2025-06-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/coroutines/coro1-missing-await-method.C: Adjust for
+ 	improved diagnostics.
+ 	* g++.dg/coroutines/coro-missing-final-suspend.C: Likewise.
+ 	* g++.dg/coroutines/pr104051.C: Move to...
+ 	* g++.dg/coroutines/pr104051-0.C: ...here.
+ 	* g++.dg/coroutines/pr104051-1.C: New test.
+ 
+ 2025-06-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/116775
+ 	* g++.dg/coroutines/pr116775.C: New test.
+ 
+ 2025-06-13  Spencer Abson  <spencer.abson@arm.com>
+ 
+ 	PR target/118150
+ 	* gcc.target/aarch64/sve/acle/general/not_1.c: New test.
+ 
+ 2025-06-13  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR testsuite/119862
+ 	* gcc.dg/pr119160.c: Added empty definitions for
+ 	`__cyg_profile_func_enter` and `__cyg_profile_func_exit`
+ 	functions.
+ 
+ 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/120638
+ 	* gcc.dg/pr120638.c: New test.
+ 
+ 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120630
+ 	* gcc.dg/pr120630.c: New test.
+ 	* gcc.c-torture/execute/pr120630.c: New test.
+ 
+ 2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120629
+ 	* g++.dg/opt/pr120629.C: New test.
+ 
+ 2025-06-12  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c: Add asm check
+ 	for vmax.vx combine.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c: Ditto.
+ 
+ 2025-06-12  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c: Add asm check
+ 	for vmax.vx combine.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c: Ditto.
+ 
+ 2025-06-12  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add asm check
+ 	for max func 1 vmax.vx combine.
+ 	* 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_vmax-run-2-i16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i8.c: New test.
+ 
+ 2025-06-12  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add asm check
+ 	for max func 1 vmax.vx combine.
+ 	* 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_vmax-run-1-i16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i8.c: New test.
+ 
+ 2025-06-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/120624
+ 	* gcc.target/aarch64/sme/za_state_7.c: New test.
+ 
+ 2025-06-12  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR middle-end/117811
+ 	PR testsuite/52641
+ 	* gcc.dg/torture/pr117811.c: Fix for int < 32 bit.
+ 
+ 2025-06-12  Gwenole Beauchesne  <gb.devel@gmail.com>
+ 	    Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR c++/41201
+ 	PR c++/48026
+ 	* c-c++-common/pragma-optimize-1.c: New test.
+ 	* g++.target/i386/vect-pragma-target-1.C: New test.
+ 	* g++.target/i386/vect-pragma-target-2.C: New test.
+ 	* gcc.target/i386/vect-pragma-target-1.c: New test.
+ 	* gcc.target/i386/vect-pragma-target-2.c: New test.
+ 
+ 2025-06-11  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/120510
+ 	* gcc.dg/old-style-prom-4.c: New test.
+ 
+ 2025-06-11  Edwin Lu  <ewlu@rivosinc.com>
+ 
+ 	* gcc.target/riscv/rvv/vsetvl/pr117974.c: New test.
+ 
+ 2025-06-11  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	PR target/119100
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfnmadd and
+ 	vfnmsub.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop.h: Add support for neg
+ 	variants. Fix sign for sub.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h: Add data for neg
+ 	variants. Fix data for sub.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h: Rename x to f.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f16.c: Add neg
+ 	argument.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f64.c: New test.
+ 
+ 2025-06-11  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/120303
+ 	* gcc.dg/pr120303.c: New test.
+ 
+ 2025-06-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/90693
+ 	* gcc.target/i386/pr90693-3.c: New test.
+ 	* gcc.target/i386/pr90693-4.c: New test.
+ 	* gcc.target/i386/pr90693-5.c: New test.
+ 	* gcc.target/i386/pr90693-6.c: New test.
+ 
+ 2025-06-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/116792
+ 	* gcc.dg/html-output/missing-semicolon.py: Update for changes
+ 	to diagnostic elements.
+ 	* gcc.dg/format/diagnostic-ranges-html.py: Likewise.
+ 	* gcc.dg/plugin/diagnostic-test-metadata-html.py: Likewise.  Drop
+ 	out-of-date comment.
+ 	* gcc.dg/plugin/diagnostic-test-paths-2.py: Likewise.
+ 	* gcc.dg/plugin/diagnostic-test-paths-4.py: Likewise.  Drop
+ 	out-of-date comment.
+ 	* gcc.dg/plugin/diagnostic-test-show-locus.py: Likewise.
+ 	* lib/htmltest.py (get_diag_by_index): Update to use search by id.
+ 	(get_message_within_diag): Update to use search by class.
+ 
+ 2025-06-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/120610
+ 	* gcc.dg/format/diagnostic-ranges-html.py: Remove out-of-date
+ 	comment.
+ 
+ 2025-06-10  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	* gcc.target/riscv/rvv/vtype-call-clobbered.c: Fix -mabi.
+ 
+ 2025-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120434
+ 	* gcc.target/i386/pr120434-2.c: New test.
+ 
+ 2025-06-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120434
+ 	* gcc.target/i386/pr120434-1.c: New test.
+ 
+ 2025-06-10  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/ventana-16122.c: New test.
+ 
+ 2025-06-10  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c: Add asm check
+ 	for vremu.vx combine.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c: Ditto.
+ 
+ 2025-06-10  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: Add asm check
+ 	for vremu.vx combine.
+ 	* 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_data.h: Add test
+ 	data for run test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u8.c: New test.
+ 
+ 2025-06-10  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/binop/vrem-rv32gcv.c: Adjust the
+ 	asm check for vremu.
+ 	* gcc.target/riscv/rvv/autovec/binop/vrem-rv64gcv.c: Ditto.
+ 
+ 2025-06-09  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/120510
+ 	* gcc.dg/pr120510.c
+ 
+ 2025-06-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/120495
+ 	PR c++/115605
+ 	* g++.dg/coroutines/pr120495.C: New test.
+ 	* g++.dg/pr115605.C: New test.
+ 
+ 2025-06-09  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/120606
+ 	* gm2/pim/pass/forarray.mod: New test.
+ 
+ 2025-06-09  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/119779
+ 	* gm2.dg/doc/examples/run/pass/doc-examples-run-pass.exp: New test.
+ 	* gm2.dg/doc/examples/run/pass/exampleadd2.mod: New test.
+ 
+ 2025-06-09  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/116792
+ 	* gcc.dg/html-output/missing-semicolon.py: Update expected <title>
+ 	text.  Drop out-of-date comment.
+ 
+ 2025-06-09  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	PR testsuite/120519
+ 	* g++.target/powerpc/mvc-symbols1.C: Modify tests.
+ 	* g++.target/powerpc/mvc-symbols2.C: Ditto.
+ 	* g++.target/powerpc/mvc-symbols3.C: Ditto.
+ 	* g++.target/powerpc/mvc-symbols4.C: Ditto.
+ 
+ 2025-06-09  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/cost_model_16.c: New test.
+ 
+ 2025-06-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/avx512f-pr103750-3.c: New test.
+ 
+ 2025-06-09  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c: Add asm check
+ 	for vrem.vx combine.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c: Ditto.
+ 
+ 2025-06-09  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add asm check
+ 	for vrem.vx combine.
+ 	* 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_data.h: Add test
+ 	data for run test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i8.c: New test.
+ 
+ 2025-06-09  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/binop/vrem-rv32gcv.c: Adjust the
+ 	asm check for vrem.
+ 	* gcc.target/riscv/rvv/autovec/binop/vrem-rv64gcv.c: Ditto.
+ 
+ 2025-06-08  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* gcc.dg/tree-prof/clone-merge-1.c: Enable only for
+ 	-fauto-profile.
+ 
+ 2025-06-08  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	PR target/120203
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-74.c: Expect
+ 	an additional FRRM.
+ 
+ 2025-06-08  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	PR target/119164
+ 	* gcc.target/riscv/rvv/base/pr119164.c: New test.
+ 
+ 2025-06-08  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR tree-optimization/120533
+ 	* gcc.dg/tree-ssa/pr35286.c: Add -fno-ssa-phiopt.
+ 	* gcc.dg/tree-ssa/split-path-6.c: Likewise.
+ 	* gcc.dg/tree-ssa/split-path-7.c: Likewise.
+ 	* gcc.dg/tree-ssa/phiprop-2.c: Move the check for MIN_EXPR to phiopt1.
+ 
  2025-06-07  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	PR modula2/119650
diff -Nrcpad gcc-16-20250608/gcc/testsuite/c-c++-common/pragma-optimize-1.c gcc-16-20250615/gcc/testsuite/c-c++-common/pragma-optimize-1.c
*** gcc-16-20250608/gcc/testsuite/c-c++-common/pragma-optimize-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/c-c++-common/pragma-optimize-1.c	Sun Jun 15 22:32:27 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast" } */
+ 
+ /* PR c++/48026 */
+ /* Make sure `#pragma GCC optimize` affects the pre-defined macros too */
+ 
+ #pragma GCC optimize ("no-fast-math")
+ #ifdef __FAST_MATH__
+ #  error Hey yo, What you doing on FAST_MATH??
+ #endif
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C
*** gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C	Sun Jun  8 22:32:19 2025
--- gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/coro-missing-final-suspend.C	Sun Jun 15 22:32:29 2025
***************
*** 7,16 ****
  #include "coro1-ret-int-yield-int.h"
  
  coro1
! my_coro () // { dg-error {no member named 'final_suspend' in} }
  {
    co_return 0;
! }
  
  // check we have not messed up continuation of the compilation.
  template <class... Args>
--- 7,16 ----
  #include "coro1-ret-int-yield-int.h"
  
  coro1
! my_coro ()
  {
    co_return 0;
! } // { dg-error {no member named 'final_suspend' in} }
  
  // check we have not messed up continuation of the compilation.
  template <class... Args>
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
*** gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C	Sun Jun  8 22:32:19 2025
--- gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C	Sun Jun 15 22:32:29 2025
***************
*** 7,13 ****
  #include "coro1-ret-int-yield-int.h"
  
  coro1
! bar0 () // { dg-error {no member named 'await_suspend' in 'coro1::suspend_always_prt'} }
  {
    co_await coro1::suspend_never_prt{}; // { dg-error {no member named 'await_ready' in 'coro1::suspend_never_prt'} }
    co_yield 5; // { dg-error {no member named 'await_suspend' in 'coro1::suspend_always_prt'} }
--- 7,13 ----
  #include "coro1-ret-int-yield-int.h"
  
  coro1
! bar0 ()
  {
    co_await coro1::suspend_never_prt{}; // { dg-error {no member named 'await_ready' in 'coro1::suspend_never_prt'} }
    co_yield 5; // { dg-error {no member named 'await_suspend' in 'coro1::suspend_always_prt'} }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr104051-0.C gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr104051-0.C
*** gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr104051-0.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr104051-0.C	Sun Jun 15 22:32:29 2025
***************
*** 0 ****
--- 1,30 ----
+ // { dg-additional-options "-fsyntax-only" }
+ // { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
+ #include <coroutine>
+ #include <vector>
+ template <typename> struct promise {
+   struct final_awaitable {
+     bool await_ready() noexcept;
+     template <typename Promise>
+     std::coroutine_handle<>
+         await_suspend(std::coroutine_handle<Promise>) noexcept;
+     void await_resume() noexcept;
+   };
+   auto get_return_object() {
+     return std::coroutine_handle<promise>::from_promise(*this);
+   }
+   auto initial_suspend() { return std::suspend_always(); }
+   auto final_suspend() noexcept { return true; }
+   void unhandled_exception();
+ };
+ template <typename T> struct task {
+   using promise_type = promise<T>;
+   task(std::coroutine_handle<promise<T>>);
+   bool await_ready();
+   std::coroutine_handle<> await_suspend(std::coroutine_handle<>);
+   T await_resume();
+ };
+ task<std::vector<int>> foo() {
+   while ((co_await foo()).empty())
+     ;
+ } // { dg-error {'final_suspend\(\)' awaitable type 'bool' is not a structure} }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr104051-1.C gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr104051-1.C
*** gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr104051-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr104051-1.C	Sun Jun 15 22:32:29 2025
***************
*** 0 ****
--- 1,23 ----
+ // { dg-additional-options "-fsyntax-only" }
+ // { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
+ #include <coroutine>
+ template <typename>
+ struct promise {
+   auto get_return_object() {
+     return std::coroutine_handle<promise>::from_promise(*this);
+   }
+   auto initial_suspend() { return 42.0; }
+   auto final_suspend() noexcept { return true; }
+   void unhandled_exception();
+   void return_void ();
+ };
+ template <typename T> struct task {
+   using promise_type = promise<T>;
+   task(std::coroutine_handle<promise<T>>);
+   bool await_ready();
+   std::coroutine_handle<> await_suspend(std::coroutine_handle<>);
+   T await_resume();
+ };
+ task<double> foo() { // { dg-error {'initial_suspend\(\)' awaitable type 'double' is not a structure} }
+   co_return;
+ } 
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr104051.C gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr104051.C
*** gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr104051.C	Sun Jun  8 22:32:19 2025
--- gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr104051.C	Thu Jan  1 00:00:00 1970
***************
*** 1,30 ****
- // { dg-additional-options "-fsyntax-only" }
- // { dg-skip-if "requires hosted libstdc++ for vector" { ! hostedlib } }
- #include <coroutine>
- #include <vector>
- template <typename> struct promise {
-   struct final_awaitable {
-     bool await_ready() noexcept;
-     template <typename Promise>
-     std::coroutine_handle<>
-         await_suspend(std::coroutine_handle<Promise>) noexcept;
-     void await_resume() noexcept;
-   };
-   auto get_return_object() {
-     return std::coroutine_handle<promise>::from_promise(*this);
-   }
-   auto initial_suspend() { return std::suspend_always(); }
-   auto final_suspend() noexcept { return true; }
-   void unhandled_exception();
- };
- template <typename T> struct task {
-   using promise_type = promise<T>;
-   task(std::coroutine_handle<promise<T>>);
-   bool await_ready();
-   std::coroutine_handle<> await_suspend(std::coroutine_handle<>);
-   T await_resume();
- };
- task<std::vector<int>> foo() { // { dg-error {awaitable type 'bool' is not a structure} }
-   while ((co_await foo()).empty())
-     ;
- }
--- 0 ----
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr116775.C gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr116775.C
*** gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr116775.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr116775.C	Sun Jun 15 22:32:29 2025
***************
*** 0 ****
--- 1,68 ----
+ // { dg-additional-options "-fsyntax-only" }
+ // PR116775
+ #include <coroutine>
+ #ifndef OUTPUT
+ #  define PRINT(X)
+ #  define PRINTF(...)
+ #else
+ #include <cstdio>
+ #  define PRINT(X) puts(X)
+ #  define PRINTF(...) printf(__VA_ARGS__)
+ #endif
+ 
+ struct awaitable {
+     awaitable(int n) : delay{n} {}
+ 
+     constexpr bool await_ready() const noexcept { return false; }
+     auto await_suspend(std::coroutine_handle<> h) const {
+         __builtin_trap ();
+         return false;
+     }
+     int await_resume() const noexcept {
+         return delay;
+     }
+ 
+     int delay;
+ };
+ 
+ struct Task {
+     struct promise_type {
+         promise_type() = default;
+         Task get_return_object() { return {}; }
+         std::suspend_never initial_suspend() { return {}; }
+         std::suspend_always final_suspend() noexcept { return {}; }
+         void unhandled_exception() {}
+         void return_void () {}
+         awaitable yield_value (int v) { return {v}; }
+     };
+ };
+ 
+ Task foo() noexcept {
+     if (__builtin_constant_p (true ? 1 : co_await awaitable{10}))
+       PRINT ("const OK");
+     else
+       {
+         PRINT ("failed : should be const");
+         __builtin_abort ();
+       }
+     if (__builtin_constant_p (false ? 1 : co_await awaitable{15}))
+       {
+         PRINT ("failed : should not be const");
+         __builtin_abort ();
+       }
+     else
+       PRINT ("not const, OK");
+     if (__builtin_constant_p (5 == (co_yield 42)))
+       {
+         PRINT ("failed : should not be const");
+         __builtin_abort ();
+       }
+     else
+       PRINT ("not const, OK");
+     co_return;
+ }
+ 
+ //call foo
+ int main() {
+     foo();
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr120495.C gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr120495.C
*** gcc-16-20250608/gcc/testsuite/g++.dg/coroutines/pr120495.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/g++.dg/coroutines/pr120495.C	Sun Jun 15 22:32:29 2025
***************
*** 0 ****
--- 1,55 ----
+ // { dg-additional-options "-fsyntax-only" }
+ 
+ #include <coroutine>
+ #include <exception>
+ 
+ struct fire_and_forget {
+ };
+ 
+ template <typename... Args>
+ struct std::coroutine_traits<fire_and_forget, Args...>
+ {
+     struct promise_type
+     {
+         fire_and_forget get_return_object() const noexcept
+         {
+             return{};
+         }
+ 
+         void return_void() const noexcept
+         {
+         }
+ 
+         suspend_never initial_suspend() const noexcept
+         {
+             return{};
+         }
+ 
+         suspend_never final_suspend() const noexcept
+         {
+             return{};
+         }
+ 
+         void unhandled_exception() const noexcept
+         {
+             std::terminate();
+         }
+     };
+ };
+ 
+ struct foo
+ {
+     fire_and_forget bar()
+     {
+         co_await std::suspend_always{ };
+     }
+ 
+ private:
+     // The line below triggered the error.
+     using coroutine_handle = std::coroutine_handle<>;
+ };
+ 
+ int main()
+ {
+     foo{}.bar();
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.dg/opt/pr120629.C gcc-16-20250615/gcc/testsuite/g++.dg/opt/pr120629.C
*** gcc-16-20250608/gcc/testsuite/g++.dg/opt/pr120629.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/g++.dg/opt/pr120629.C	Sun Jun 15 22:32:33 2025
***************
*** 0 ****
--- 1,53 ----
+ // PR middle-end/120629
+ // { dg-do run }
+ // { dg-options "-O2 -fprofile-generate -fno-exceptions -fno-rtti" }
+ // { dg-require-profiling "-fprofile-generate" }
+ 
+ __attribute__((noipa, noreturn, cold)) void
+ foo (const char *, int, const char *)
+ {
+   __builtin_abort ();
+ }
+ 
+ struct S
+ {
+   __attribute__((noipa)) void bar (void *);
+   static const int a = 8;
+   unsigned int b[a + 1];
+ };
+ 
+ __attribute__((noipa)) unsigned long
+ baz (void *)
+ {
+   static int x = 8;
+   return --x;
+ }
+ 
+ __attribute__((noipa)) void
+ S::bar (void *x)
+ {
+   unsigned int c;
+   int k = 0;
+ 
+   do
+     {
+       ((void) (!(k <= a) ? foo ("foo", 42, __FUNCTION__), 0 : 0));
+       c = b[k++] = baz (x);
+     }
+   while (c);
+   while (k <= a)
+     b[k++] = 0;
+ }
+ 
+ int
+ main ()
+ {
+   struct T { S a; unsigned int b; } s = {};
+   s.b = 0x1234;
+   s.a.bar (0);
+   for (int i = 0; i < 9; ++i)
+     if (s.a.b[i] != (i == 8 ? 0 : 7 - i))
+       __builtin_abort ();
+   if (s.b != 0x1234)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.dg/pr115605.C gcc-16-20250615/gcc/testsuite/g++.dg/pr115605.C
*** gcc-16-20250608/gcc/testsuite/g++.dg/pr115605.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/g++.dg/pr115605.C	Sun Jun 15 22:32:37 2025
***************
*** 0 ****
--- 1,10 ----
+ // { dg-do compile { target c++20 } }
+ 
+ #include <array>
+ 
+ int foo() {
+     int const tuple_size = 5;
+     std::array<int, 3> array {1, 2, 3};
+     auto [a, b, c] = array;
+     return c;
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.target/i386/vect-pragma-target-1.C gcc-16-20250615/gcc/testsuite/g++.target/i386/vect-pragma-target-1.C
*** gcc-16-20250608/gcc/testsuite/g++.target/i386/vect-pragma-target-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/g++.target/i386/vect-pragma-target-1.C	Sun Jun 15 22:32:41 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile { target { i?86-*-* x86_64-*-* } } }                 */
+ /* { dg-options "-O0" }                                                 */
+ /* { dg-final { scan-assembler-times "paddd.+xmm\[0-9]+"        1 } }   */
+ /* { dg-final { scan-assembler-times "vfmadd132ps.+ymm\[0-9]+"  1 } }   */
+ /* { dg-final { scan-assembler-times "vpaddw.+zmm\[0-9]+"       1 } }   */
+ #include "../../gcc.target/i386/vect-pragma-target-1.c"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.target/i386/vect-pragma-target-2.C gcc-16-20250615/gcc/testsuite/g++.target/i386/vect-pragma-target-2.C
*** gcc-16-20250608/gcc/testsuite/g++.target/i386/vect-pragma-target-2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/g++.target/i386/vect-pragma-target-2.C	Sun Jun 15 22:32:41 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile { target { i?86-*-* x86_64-*-* } } }                 */
+ /* { dg-options "-O0" }                                                 */
+ /* { dg-final { scan-assembler-times "paddd.+xmm\[0-9]+"        1 } }   */
+ /* { dg-final { scan-assembler-times "vfmadd132ps.+ymm\[0-9]+"  1 } }   */
+ /* { dg-final { scan-assembler-times "vpaddw.+zmm\[0-9]+"       1 } }   */
+ #include "../../gcc.target/i386/vect-pragma-target-2.c"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.target/powerpc/mvc-symbols1.C gcc-16-20250615/gcc/testsuite/g++.target/powerpc/mvc-symbols1.C
*** gcc-16-20250608/gcc/testsuite/g++.target/powerpc/mvc-symbols1.C	Sun Jun  8 22:32:22 2025
--- gcc-16-20250615/gcc/testsuite/g++.target/powerpc/mvc-symbols1.C	Sun Jun 15 22:32:41 2025
*************** int bar(int x)
*** 28,47 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.cpu_power6:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.cpu_power6x:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tbl _Z3foov\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.default\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.cpu_power6\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.cpu_power6x\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6x:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tbl _Z3fooi\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3fooi\.default\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3fooi\.cpu_power6\n" 0 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3fooi\.cpu_power6x\n" 1 } } */
--- 28,41 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.cpu_power6:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.cpu_power6x:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tbl _Z3foov(\n|@)" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6x:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tbl _Z3fooi(\n|@)" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.target/powerpc/mvc-symbols2.C gcc-16-20250615/gcc/testsuite/g++.target/powerpc/mvc-symbols2.C
*** gcc-16-20250608/gcc/testsuite/g++.target/powerpc/mvc-symbols2.C	Sun Jun  8 22:32:22 2025
--- gcc-16-20250615/gcc/testsuite/g++.target/powerpc/mvc-symbols2.C	Sun Jun 15 22:32:41 2025
*************** int foo (int)
*** 20,28 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.default\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.cpu_power6\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.cpu_power6x\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6:\n" 1 } } */
--- 20,25 ----
*************** int foo (int)
*** 30,35 ****
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3fooi\.default\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3fooi\.cpu_power6\n" 0 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3fooi\.cpu_power6x\n" 1 } } */
--- 27,29 ----
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.target/powerpc/mvc-symbols3.C gcc-16-20250615/gcc/testsuite/g++.target/powerpc/mvc-symbols3.C
*** gcc-16-20250608/gcc/testsuite/g++.target/powerpc/mvc-symbols3.C	Sun Jun  8 22:32:22 2025
--- gcc-16-20250615/gcc/testsuite/g++.target/powerpc/mvc-symbols3.C	Sun Jun 15 22:32:41 2025
*************** int bar(int x)
*** 22,41 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.cpu_power6:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.cpu_power6x:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tbl _Z3foov\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.default\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.cpu_power6\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.cpu_power6x\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6x:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tbl _Z3fooi\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3foov\.default\n" 1 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3fooi\.cpu_power6\n" 0 } } */
- /* { dg-final { scan-assembler-times "\n\t\.quad\t_Z3fooi\.cpu_power6x\n" 1 } } */
--- 22,35 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.cpu_power6:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.cpu_power6x:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tbl _Z3foov(\n|@)" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6x:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tbl _Z3fooi(\n|@)" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/g++.target/powerpc/mvc-symbols4.C gcc-16-20250615/gcc/testsuite/g++.target/powerpc/mvc-symbols4.C
*** gcc-16-20250608/gcc/testsuite/g++.target/powerpc/mvc-symbols4.C	Sun Jun  8 22:32:22 2025
--- gcc-16-20250615/gcc/testsuite/g++.target/powerpc/mvc-symbols4.C	Sun Jun 15 22:32:41 2025
*************** int foo (int);
*** 14,22 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
- /* { dg-final { scan-assembler-times "\n\tlis \[\\d\]+,_Z3foov\.default@ha\n" 0 } } */
- /* { dg-final { scan-assembler-times "\n\tlis \[\\d\]+,_Z3foov\.cpu_power6@ha\n" 0 } } */
- /* { dg-final { scan-assembler-times "\n\tlis \[\\d\]+,_Z3foov\.cpu_power6x@ha\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.cpu_power6:\n" 0 } } */
--- 14,19 ----
*************** int foo (int);
*** 24,29 ****
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
- /* { dg-final { scan-assembler-times "\n\tlis \[\\d\]+,_Z3fooi\.default@ha\n" 0 } } */
- /* { dg-final { scan-assembler-times "\n\tlis \[\\d\]+,_Z3fooi\.cpu_power6@ha\n" 0 } } */
- /* { dg-final { scan-assembler-times "\n\tlis \[\\d\]+,_Z3fooi\.cpu_power6x@ha\n" 0 } } */
--- 21,23 ----
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.c-torture/execute/pr120630.c gcc-16-20250615/gcc/testsuite/gcc.c-torture/execute/pr120630.c
*** gcc-16-20250608/gcc/testsuite/gcc.c-torture/execute/pr120630.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.c-torture/execute/pr120630.c	Sun Jun 15 22:32:43 2025
***************
*** 0 ****
--- 1,29 ----
+ /* PR middle-end/120630 */
+ 
+ __attribute__((noipa)) int
+ foo (const char *x, ...)
+ {
+   return *x;
+ }
+ 
+ int a, b, c;
+ unsigned d = 1;
+ 
+ int
+ main ()
+ {
+   if (a)
+     foo ("0");
+   int e = -1;
+   if (a < 1)
+     {
+       e = c;
+       if (c)
+ 	while (1)
+ 	  ;
+     }
+   b = (~e + 0UL) / -1;
+   if (d > b)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/format/diagnostic-ranges-html.py gcc-16-20250615/gcc/testsuite/gcc.dg/format/diagnostic-ranges-html.py
*** gcc-16-20250608/gcc/testsuite/gcc.dg/format/diagnostic-ranges-html.py	Sun Jun  8 22:32:24 2025
--- gcc-16-20250615/gcc/testsuite/gcc.dg/format/diagnostic-ranges-html.py	Sun Jun 15 22:32:45 2025
*************** def test_message(html_tree):
*** 19,35 ****
      diag = get_diag_by_index(html_tree, 0)
      msg = get_message_within_diag(diag)
  
!     assert_tag(msg[0], 'span')
!     assert_class(msg[0], 'gcc-quoted-text')
!     assert_highlighted_text(msg[0][0], 'highlight-a', '%i')
! 
      assert_tag(msg[1], 'span')
      assert_class(msg[1], 'gcc-quoted-text')
!     assert_highlighted_text(msg[1][0], 'highlight-a', 'int')
  
      assert_tag(msg[2], 'span')
      assert_class(msg[2], 'gcc-quoted-text')
!     assert_highlighted_text(msg[2][0], 'highlight-b', 'const char *')
  
  def test_annotations(html_tree):
      """
--- 19,38 ----
      diag = get_diag_by_index(html_tree, 0)
      msg = get_message_within_diag(diag)
  
!     assert_tag(msg[0], 'strong')
!     assert msg[0].text == 'warning: '
!     
      assert_tag(msg[1], 'span')
      assert_class(msg[1], 'gcc-quoted-text')
!     assert_highlighted_text(msg[1][0], 'highlight-a', '%i')
  
      assert_tag(msg[2], 'span')
      assert_class(msg[2], 'gcc-quoted-text')
!     assert_highlighted_text(msg[2][0], 'highlight-a', 'int')
! 
!     assert_tag(msg[3], 'span')
!     assert_class(msg[3], 'gcc-quoted-text')
!     assert_highlighted_text(msg[3][0], 'highlight-b', 'const char *')
  
  def test_annotations(html_tree):
      """
*************** def test_annotations(html_tree):
*** 74,99 ****
      assert_class(tds[1], 'annotation')
      assert_highlighted_text(tds[1][0], 'highlight-a', 'int')
      assert_highlighted_text(tds[1][1], 'highlight-b', 'const char *')
- 
- # For reference, here's the generated HTML:
- """
-         <span class="gcc-message" id="gcc-diag-0-message">format &apos;<span class="gcc-quoted-text"><span class="high
- light-a">%i</span></span>&apos; expects argument of type &apos;<span class="gcc-quoted-text"><span class="highlight-a"
- >int</span></span>&apos;, but argument 2 has type &apos;<span class="gcc-quoted-text"><span class="highlight-b">const 
- char *</span></span>&apos;</span>
-          
-         <span class="gcc-option">[<a href="https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wformat">-Wfo
- rmat=</a>]</span>
-         <table class="locus">
-           <tbody class="line-span">
-             <tr><td class="left-margin"> </td><td class="source">  printf(&quot;hello <span class="highlight-a">%i</span>&quot;, <span class="highlight-b">msg</span>);  /* { dg-warning &quot;format &apos;%i&apos; expects argument of type &apos;int&apos;, but argument 2 has type &apos;const char \\*&apos; &quot; } */</td></tr>
-             <tr><td class="left-margin"> </td><td class="annotation">                <span class="highlight-a">~^</spa
- n>   <span class="highlight-b">~~~</span></td></tr>
-             <tr><td class="left-margin"> </td><td class="annotation">                 <span class="highlight-a">|</spa
- n>   <span class="highlight-b">|</span></td></tr>
-             <tr><td class="left-margin"> </td><td class="annotation">                 <span class="highlight-a">int</s
- pan> <span class="highlight-b">const char *</span></td></tr>
-             <tr><td class="left-margin"> </td><td class="annotation">                %s</td></tr>
-           </tbody>
-         </table>
- """
--- 77,79 ----
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/html-output/missing-semicolon.py gcc-16-20250615/gcc/testsuite/gcc.dg/html-output/missing-semicolon.py
*** gcc-16-20250608/gcc/testsuite/gcc.dg/html-output/missing-semicolon.py	Sun Jun  8 22:32:24 2025
--- gcc-16-20250615/gcc/testsuite/gcc.dg/html-output/missing-semicolon.py	Sun Jun 15 22:32:45 2025
*************** def test_basics(html_tree):
*** 26,32 ****
      assert head is not None
  
      title = head.find('xhtml:title', ns)
!     assert title.text == 'Title goes here'
  
      body = root.find('xhtml:body', ns)
      assert body is not None
--- 26,32 ----
      assert head is not None
  
      title = head.find('xhtml:title', ns)
!     assert title.text.endswith('gcc/testsuite/gcc.dg/html-output/missing-semicolon.c')
  
      body = root.find('xhtml:body', ns)
      assert body is not None
*************** def test_basics(html_tree):
*** 37,81 ****
  
      diag = diag_list.find('xhtml:div', ns)
      assert diag is not None
!     assert diag.attrib['class'] == 'gcc-diagnostic'
  
!     message = diag.find('xhtml:span', ns)
      assert message is not None
!     assert message.attrib['class'] == 'gcc-message'
!     assert message.text == "expected '"
!     assert message[0].tag == make_tag('span')
!     assert message[0].attrib['class'] == 'gcc-quoted-text'
!     assert message[0].text == ';'
!     assert message[0].tail == "' before '"
      assert message[1].tag == make_tag('span')
      assert message[1].attrib['class'] == 'gcc-quoted-text'
!     assert message[1].text == '}'
!     assert message[1].tail == "' token"
  
!     pre = diag.find('xhtml:pre', ns)
      assert pre is not None
      assert pre.attrib['class'] == 'gcc-generated-patch'
      assert pre.text.startswith('--- ')
- 
- # For reference, here's the generated HTML:
- """
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE html
-      PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
-   <head>
-     <title>Title goes here</title>
-   </head>
-   <body>
-     <div class="gcc-diagnostic-list">
-       <div class="gcc-diagnostic">
-         <span class="gcc-message">expected &apos;<span class="gcc-quoted-text">;</span>&apos; before &apos;<span class="gcc-quoted-text">}</span>&apos; token</span>
-         <pre class="gcc-generated-patch">
-         [...snip...]
-         </pre>
-       </div>
-     </div>
-   </body>
- </html>
- """
--- 37,104 ----
  
      diag = diag_list.find('xhtml:div', ns)
      assert diag is not None
!     assert diag.attrib['class'] == 'alert alert-danger'
!     assert diag.attrib['id'] == 'gcc-diag-0'
  
!     icon = diag.find('xhtml:span', ns)
!     assert icon.attrib['class'] == 'pficon pficon-error-circle-o'
! 
!     # The message line:
!     message = diag.find("./xhtml:div[@class='gcc-message']", ns)
      assert message is not None
!     # <html:div xmlns:html="http://www.w3.org/1999/xhtml" class="gcc-message" id="gcc-diag-0-message"><html:strong>error: </html:strong> expected '<html:span class="gcc-quoted-text">;</html:span>' before '<html:span class="gcc-quoted-text">}</html:span>' token</html:div>
!     assert message[0].tag == make_tag('strong')
!     assert message[0].text == 'error: '
!     assert message[0].tail == " expected '"
      assert message[1].tag == make_tag('span')
      assert message[1].attrib['class'] == 'gcc-quoted-text'
!     assert message[1].text == ';'
!     assert message[1].tail == "' before '"
!     assert message[2].tag == make_tag('span')
!     assert message[2].attrib['class'] == 'gcc-quoted-text'
!     assert message[2].text == '}'
!     assert message[2].tail == "' token"
  
!     # Logical location
!     logical_loc = diag.find("./xhtml:div[@id='logical-location']", ns)
!     assert logical_loc is not None
!     assert len(logical_loc) == 2
!     assert logical_loc[0].tag == make_tag('span')
!     assert logical_loc[0].text == 'Function '
!     assert logical_loc[1].tag == make_tag('span')
!     assert logical_loc[1].text == 'missing_semicolon'
!     assert logical_loc[1].attrib['class'] == 'gcc-quoted-text'
! 
!     # Physical location
!     file_ = diag.find("./xhtml:div[@id='file']", ns)
!     assert file_ is not None
!     assert len(file_) == 2
!     assert file_[0].tag == make_tag('span')
!     assert file_[0].text == 'File '
!     assert file_[1].tag == make_tag('span')
!     assert file_[1].text.endswith('gcc/testsuite/gcc.dg/html-output/missing-semicolon.c')
! 
!     line = diag.find("./xhtml:div[@id='line']", ns)
!     assert line is not None
!     assert len(line) == 2
!     assert line[0].tag == make_tag('span')
!     assert line[0].text == 'Line '
!     assert line[1].tag == make_tag('span')
!     assert line[1].text == '8'
! 
!     column = diag.find("./xhtml:div[@id='column']", ns)
!     assert column is not None
!     assert len(column) == 2
!     assert column[0].tag == make_tag('span')
!     assert column[0].text == 'Column '
!     assert column[1].tag == make_tag('span')
!     assert column[1].text == '12'
! 
!     # Suggested fix
!     fix = diag.find("./xhtml:div[@id='suggested-fix']", ns)
!     label = fix.find('xhtml:label', ns)
!     assert label.text == "Suggested fix"
!     pre = fix.find('xhtml:pre', ns)
      assert pre is not None
      assert pre.attrib['class'] == 'gcc-generated-patch'
      assert pre.text.startswith('--- ')
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/old-style-prom-4.c gcc-16-20250615/gcc/testsuite/gcc.dg/old-style-prom-4.c
*** gcc-16-20250608/gcc/testsuite/gcc.dg/old-style-prom-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.dg/old-style-prom-4.c	Sun Jun 15 22:32:46 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-std=gnu17" } */
+ 
+ int g(float a, float b);
+ int g(a, b)
+ 	float a;
+ 	float b;
+ {
+ }
+ 
+ int f(float a, float (*b)());	/* { dg-error "prototype declaration" } */
+ 
+ int f(a, b)
+ 	float a;
+ 	float (*b)(float);	/* { dg-error "match prototype" } */
+ {
+ }
+ 
+ int (*e(float a))(float (*b)());
+ 
+ int (*e(a))(float (*b)(float))		/* { dg-error "conflicting types" } */
+ 	float a;
+ {
+ }
+ 
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py gcc-16-20250615/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py
*** gcc-16-20250608/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py	Sun Jun  8 22:32:25 2025
--- gcc-16-20250615/gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata-html.py	Sun Jun 15 22:32:46 2025
*************** def test_metadata(html_tree):
*** 21,30 ****
  
      diag = diag_list.find('xhtml:div', ns)
      assert diag is not None
!     assert diag.attrib['class'] == 'gcc-diagnostic'
  
!     spans = diag.findall('xhtml:span', ns)
!     metadata = spans[1]
      assert metadata.attrib['class'] == 'gcc-metadata'
      assert metadata[0].tag == make_tag('span')
      assert metadata[0].attrib['class'] == 'gcc-metadata-item'
--- 21,44 ----
  
      diag = diag_list.find('xhtml:div', ns)
      assert diag is not None
!     assert diag.attrib['class'] == 'alert alert-warning'
  
!     icon = diag.find('xhtml:span', ns)
!     assert icon.attrib['class'] == 'pficon pficon-warning-triangle-o'
! 
!     message = diag.find("./xhtml:div[@class='gcc-message']", ns)
!     assert message.attrib['id'] == 'gcc-diag-0-message'
! 
!     assert message[0].tag == make_tag('strong')
!     assert message[0].text == 'warning: '
!     assert message[0].tail == " never use '"
! 
!     assert message[1].tag == make_tag('span')
!     assert message[1].attrib['class'] == 'gcc-quoted-text'
!     assert message[1].text == 'gets'
!     assert message[1].tail == "' "
!     
!     metadata = message[2]
      assert metadata.attrib['class'] == 'gcc-metadata'
      assert metadata[0].tag == make_tag('span')
      assert metadata[0].attrib['class'] == 'gcc-metadata-item'
*************** def test_metadata(html_tree):
*** 57,77 ****
      annotation_tr = rows[1]
      assert_annotation_line(annotation_tr,
                             '  ^~~~~~~~~~')
- 
- # For reference, here's the generated HTML:
- """
-   <body>
-     <div class="gcc-diagnostic-list">
-       <div class="gcc-diagnostic">
-         <span class="gcc-message">never use &apos;<span class="gcc-quoted-text">gets</span>&apos;</span> 
-         <span class="gcc-metadata"><span class="gcc-metadata-item">[<a href="https://cwe.mitre.org/data/definitions/242.html">CWE-242</a>]</span><span class="gcc-metadata-item">[<a href="https://example.com/">STR34-C</a>]</span></span><table class="locus">
- <tbody class="line-span">
- <tr><td class="linenum">   10</td> <td class="source">  gets (buf);</td></tr>
- <tr><td class="linenum"/><td class="annotation">  ^~~~~~~~~~</td></tr>
- </tbody>
- </table>
- 
-       </div>
-     </div>
-   </body>
- """
--- 71,73 ----
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py gcc-16-20250615/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py
*** gcc-16-20250608/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py	Sun Jun  8 22:32:25 2025
--- gcc-16-20250615/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.py	Sun Jun 15 22:32:46 2025
*************** def test_paths(html_tree):
*** 21,29 ****
  
      diag = diag_list.find('xhtml:div', ns)
      assert diag is not None
!     assert diag.attrib['class'] == 'gcc-diagnostic'
  
!     event_ranges = diag.find('xhtml:div', ns)
      assert_class(event_ranges, 'event-ranges')
  
      frame_margin = event_ranges.find('xhtml:table', ns)
--- 21,36 ----
  
      diag = diag_list.find('xhtml:div', ns)
      assert diag is not None
!     assert diag.attrib['class'] == 'alert alert-danger'
!     assert diag.attrib['id'] == 'gcc-diag-0'
  
!     exec_path = diag.find("./xhtml:div[@id='execution-path']", ns)
!     assert exec_path is not None
! 
!     label = exec_path.find('xhtml:label', ns)
!     assert label.text == 'Execution path with 3 events'
!     
!     event_ranges = exec_path.find('xhtml:div', ns)
      assert_class(event_ranges, 'event-ranges')
  
      frame_margin = event_ranges.find('xhtml:table', ns)
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.py gcc-16-20250615/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.py
*** gcc-16-20250608/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.py	Sun Jun  8 22:32:25 2025
--- gcc-16-20250615/gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.py	Sun Jun 15 22:32:46 2025
*************** def test_paths(html_tree):
*** 25,31 ****
      assert_annotation_line(annotation_tr,
                             '  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
  
!     event_ranges = diag.find('xhtml:div', ns)
      assert_class(event_ranges, 'event-ranges')
  
      test_frame_margin = event_ranges.find('xhtml:table', ns)
--- 25,37 ----
      assert_annotation_line(annotation_tr,
                             '  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
  
!     exec_path = diag.find("./xhtml:div[@id='execution-path']", ns)
!     assert exec_path is not None
! 
!     label = exec_path.find('xhtml:label', ns)
!     assert label.text == 'Execution path with 9 events'
!     
!     event_ranges = exec_path.find('xhtml:div', ns)
      assert_class(event_ranges, 'event-ranges')
  
      test_frame_margin = event_ranges.find('xhtml:table', ns)
*************** def test_paths(html_tree):
*** 41,190 ****
      test_frame = tds[1]
      assert_frame(test_frame, 'test')
      assert_event_range_with_margin(test_frame[1])
- 
- # For reference, generated HTML looks like this:
- """
- <table class="stack-frame-with-margin"><tr>
-   <td class="interprocmargin" style="padding-left: 100px"/>
-   <td class="stack-frame">
- <div class="frame-funcname"><span>test</span></div><table class="event-range-with-margin"><tr>
-   <td class="event-range">
-     <div class="events-hdr"><span class="funcname">test</span>: <span class="event-ids">events 1-2</span></div>
- <table class="locus">
- <tbody class="line-span">
- <tr><td class="linenum">   27</td> <td class="source">{</td></tr>
- <tr><td class="linenum"/><td class="annotation">^</td></tr>
- <tr><td class="linenum"/><td class="annotation">|</td></tr>
- <tr><td class="linenum"/><td class="annotation">(1) entering 'test'</td></tr>
- <tr><td class="linenum">   28</td> <td class="source">  register_handler ();</td></tr>
- <tr><td class="linenum"/><td class="annotation">  ~~~~~~~~~~~~~~~~~~~</td></tr>
- <tr><td class="linenum"/><td class="annotation">  |</td></tr>
- <tr><td class="linenum"/><td class="annotation">  (2) calling 'register_handler'</td></tr>
- </tbody>
- </table>
- </td></tr></table>
- <div class="between-ranges-call">
-   <svg height="30" width="150">
-     <defs>
-       <marker id="arrowhead" markerWidth="10" markerHeight="7"
-               refX="0" refY="3.5" orient="auto" stroke="#0088ce" fill="#0088ce">
-       <polygon points="0 0, 10 3.5, 0 7"/>
-       </marker>
-     </defs>
-     <polyline points="20,0 20,10 120,10 120,20"
-               style="fill:none;stroke: #0088ce"
-               marker-end="url(#arrowhead)"/>
-   </svg>
- </div>
- 
- <table class="stack-frame-with-margin"><tr>
-   <td class="interprocmargin" style="padding-left: 100px"/>
-   <td class="stack-frame">
- <div class="frame-funcname"><span>register_handler</span></div><table class="event-range-with-margin"><tr>
-   <td class="event-range">
-     <div class="events-hdr"><span class="funcname">register_handler</span>: <span class="event-ids">events 3-4</span></div>
- <table class="locus">
- <tbody class="line-span">
- <tr><td class="linenum">   22</td> <td class="source">{</td></tr>
- <tr><td class="linenum"/><td class="annotation">^</td></tr>
- <tr><td class="linenum"/><td class="annotation">|</td></tr>
- <tr><td class="linenum"/><td class="annotation">(3) entering 'register_handler'</td></tr>
- <tr><td class="linenum">   23</td> <td class="source">  signal(SIGINT, int_handler);</td></tr>
- <tr><td class="linenum"/><td class="annotation">  ~~~~~~~~~~~~~~~~~~~~~~~~~~~</td></tr>
- <tr><td class="linenum"/><td class="annotation">  |</td></tr>
- <tr><td class="linenum"/><td class="annotation">  (4) registering 'int_handler' as signal handler</td></tr>
- </tbody>
- </table>
- </td></tr></table>
- </td></tr></table>
- </td></tr></table>
- <div class="between-ranges-return">
-   <svg height="30" width="250">
-     <defs>
-       <marker id="arrowhead" markerWidth="10" markerHeight="7"
-               refX="0" refY="3.5" orient="auto" stroke="#0088ce" fill="#0088ce">
-       <polygon points="0 0, 10 3.5, 0 7"/>
-       </marker>
-     </defs>
-     <polyline points="220,0 220,10 20,10 20,20"
-               style="fill:none;stroke: #0088ce"
-               marker-end="url(#arrowhead)"/>
-   </svg>
- </div>
- 
- <table class="event-range-with-margin"><tr>
-   <td class="event-range">
-     <div class="events-hdr"><span class="event-ids">event 5</span></div>
-  (5): later on, when the signal is delivered to the process
- </td></tr></table>
- <div class="between-ranges-call">
-   <svg height="30" width="150">
-     <defs>
-       <marker id="arrowhead" markerWidth="10" markerHeight="7"
-               refX="0" refY="3.5" orient="auto" stroke="#0088ce" fill="#0088ce">
-       <polygon points="0 0, 10 3.5, 0 7"/>
-       </marker>
-     </defs>
-     <polyline points="20,0 20,10 120,10 120,20"
-               style="fill:none;stroke: #0088ce"
-               marker-end="url(#arrowhead)"/>
-   </svg>
- </div>
- 
- <table class="stack-frame-with-margin"><tr>
-   <td class="interprocmargin" style="padding-left: 100px"/>
-   <td class="stack-frame">
- <div class="frame-funcname"><span>int_handler</span></div><table class="event-range-with-margin"><tr>
-   <td class="event-range">
-     <div class="events-hdr"><span class="funcname">int_handler</span>: <span class="event-ids">events 6-7</span></div>
- <table class="locus">
- <tbody class="line-span">
- <tr><td class="linenum">   17</td> <td class="source">{</td></tr>
- <tr><td class="linenum"/><td class="annotation">^</td></tr>
- <tr><td class="linenum"/><td class="annotation">|</td></tr>
- <tr><td class="linenum"/><td class="annotation">(6) entering 'int_handler'</td></tr>
- <tr><td class="linenum">   18</td> <td class="source">  custom_logger("got signal");</td></tr>
- <tr><td class="linenum"/><td class="annotation">  ~~~~~~~~~~~~~~~~~~~~~~~~~~~</td></tr>
- <tr><td class="linenum"/><td class="annotation">  |</td></tr>
- <tr><td class="linenum"/><td class="annotation">  (7) calling 'custom_logger'</td></tr>
- </tbody>
- </table>
- </td></tr></table>
- <div class="between-ranges-call">
-   <svg height="30" width="150">
-     <defs>
-       <marker id="arrowhead" markerWidth="10" markerHeight="7"
-               refX="0" refY="3.5" orient="auto" stroke="#0088ce" fill="#0088ce">
-       <polygon points="0 0, 10 3.5, 0 7"/>
-       </marker>
-     </defs>
-     <polyline points="20,0 20,10 120,10 120,20"
-               style="fill:none;stroke: #0088ce"
-               marker-end="url(#arrowhead)"/>
-   </svg>
- </div>
- 
- <table class="stack-frame-with-margin"><tr>
-   <td class="interprocmargin" style="padding-left: 100px"/>
-   <td class="stack-frame">
- <div class="frame-funcname"><span>custom_logger</span></div><table class="event-range-with-margin"><tr>
-   <td class="event-range">
-     <div class="events-hdr"><span class="funcname">custom_logger</span>: <span class="event-ids">events 8-9</span></div>
- <table class="locus">
- <tbody class="line-span">
- <tr><td class="linenum">   12</td> <td class="source">{</td></tr>
- <tr><td class="linenum"/><td class="annotation">^</td></tr>
- <tr><td class="linenum"/><td class="annotation">|</td></tr>
- <tr><td class="linenum"/><td class="annotation">(8) entering 'custom_logger'</td></tr>
- <tr><td class="linenum">   13</td> <td class="source">  fprintf(stderr, "LOG: %s", msg); /* { dg-warning "call to 'fprintf' from within signal handler" } */</td></tr>
- <tr><td class="linenum"/><td class="annotation">  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</td></tr>
- <tr><td class="linenum"/><td class="annotation">  |</td></tr>
- <tr><td class="linenum"/><td class="annotation">  (9) calling 'fprintf'</td></tr>
- </tbody>
- </table>
- </td></tr></table>
- </td></tr></table>
- </td></tr></table>
- 
- </div>
-     """
--- 47,49 ----
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus.py gcc-16-20250615/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus.py
*** gcc-16-20250608/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus.py	Sun Jun  8 22:32:25 2025
--- gcc-16-20250615/gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus.py	Sun Jun 15 22:32:46 2025
*************** def test_very_wide_line(html_tree):
*** 46,52 ****
  def test_fixit_insert(html_tree):
      diag = get_diag_by_index(html_tree, 3)
      msg = get_message_within_diag(diag)
!     assert msg.text == 'example of insertion hints'
  
      src = get_locus_within_diag(diag)
  
--- 46,53 ----
  def test_fixit_insert(html_tree):
      diag = get_diag_by_index(html_tree, 3)
      msg = get_message_within_diag(diag)
!     assert msg[0].text == 'warning: '
!     assert msg[0].tail == ' example of insertion hints'
  
      src = get_locus_within_diag(diag)
  
*************** def test_fixit_insert(html_tree):
*** 62,68 ****
  def test_fixit_remove(html_tree):
      diag = get_diag_by_index(html_tree, 4)
      msg = get_message_within_diag(diag)
!     assert msg.text == 'example of a removal hint'
  
      src = get_locus_within_diag(diag)
  
--- 63,70 ----
  def test_fixit_remove(html_tree):
      diag = get_diag_by_index(html_tree, 4)
      msg = get_message_within_diag(diag)
!     assert msg[0].text == 'warning: '
!     assert msg[0].tail == ' example of a removal hint'
  
      src = get_locus_within_diag(diag)
  
*************** def test_fixit_remove(html_tree):
*** 78,84 ****
  def test_fixit_replace(html_tree):
      diag = get_diag_by_index(html_tree, 5)
      msg = get_message_within_diag(diag)
!     assert msg.text == 'example of a replacement hint'
  
      src = get_locus_within_diag(diag)
  
--- 80,87 ----
  def test_fixit_replace(html_tree):
      diag = get_diag_by_index(html_tree, 5)
      msg = get_message_within_diag(diag)
!     assert msg[0].text == 'warning: '
!     assert msg[0].tail == ' example of a replacement hint'
  
      src = get_locus_within_diag(diag)
  
*************** def test_fixit_replace(html_tree):
*** 94,100 ****
  def test_fixit_insert_newline(html_tree):
      diag = get_diag_by_index(html_tree, 6)
      msg = get_message_within_diag(diag)
!     assert msg.text == 'example of newline insertion hint'
  
      src = get_locus_within_diag(diag)
  
--- 97,104 ----
  def test_fixit_insert_newline(html_tree):
      diag = get_diag_by_index(html_tree, 6)
      msg = get_message_within_diag(diag)
!     assert msg[0].text == 'warning: '
!     assert msg[0].tail == ' example of newline insertion hint'
  
      src = get_locus_within_diag(diag)
  
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/pr119160.c gcc-16-20250615/gcc/testsuite/gcc.dg/pr119160.c
*** gcc-16-20250608/gcc/testsuite/gcc.dg/pr119160.c	Sun Jun  8 22:32:25 2025
--- gcc-16-20250615/gcc/testsuite/gcc.dg/pr119160.c	Sun Jun 15 22:32:46 2025
***************
*** 4,9 ****
--- 4,22 ----
  
  typedef __attribute__((__vector_size__ (32))) int V;
  
+ /* Add empty implementations of __cyg_profile_func_enter() and
+    __cyg_profile_func_exit() to avoid problems on non-glibc
+    systems.  */
+ void __attribute__((no_instrument_function))
+ __cyg_profile_func_enter(void *this_fn, void *call_site)
+ {
+ }
+ 
+ void __attribute__((no_instrument_function))
+ __cyg_profile_func_exit(void *this_fn, void *call_site)
+ {
+ }
+ 
  void
  foo (V v, V, V, V *r)
  {
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/pr120303.c gcc-16-20250615/gcc/testsuite/gcc.dg/pr120303.c
*** gcc-16-20250608/gcc/testsuite/gcc.dg/pr120303.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.dg/pr120303.c	Sun Jun 15 22:32:46 2025
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y" } */
+ 
+ int t = _Generic (char(1));	/* { dg-error "before numeric constant" } */
+ 
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/pr120510.c gcc-16-20250615/gcc/testsuite/gcc.dg/pr120510.c
*** gcc-16-20250608/gcc/testsuite/gcc.dg/pr120510.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.dg/pr120510.c	Sun Jun 15 22:32:46 2025
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-options "-std=c23" } */
+ 
+ void f (int [_Atomic]);
+ void f (int [_Atomic]);
+ void f (int [_Atomic]);
+ 
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/pr120630.c gcc-16-20250615/gcc/testsuite/gcc.dg/pr120630.c
*** gcc-16-20250608/gcc/testsuite/gcc.dg/pr120630.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.dg/pr120630.c	Sun Jun 15 22:32:46 2025
***************
*** 0 ****
--- 1,25 ----
+ /* PR middle-end/120630 */
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fno-tree-loop-im -fno-tree-loop-optimize -fno-tree-ch" } */
+ 
+ int a, c, d;
+ 
+ void
+ foo (int b)
+ {
+   a = b;
+ }
+ 
+ int
+ main ()
+ {
+   while (d)
+     ;
+   for (c = 0; c > -3; c--)
+     {
+       long f = c;
+       foo (f >> 2);
+     }
+   if (a != -1)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/pr120638.c gcc-16-20250615/gcc/testsuite/gcc.dg/pr120638.c
*** gcc-16-20250608/gcc/testsuite/gcc.dg/pr120638.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.dg/pr120638.c	Sun Jun 15 22:32:46 2025
***************
*** 0 ****
--- 1,31 ----
+ /* PR tree-optimization/120638 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -ffast-math" } */
+ 
+ extern float sqrtf (float x);
+ 
+ __attribute__((noipa)) float
+ foo (unsigned int s)
+ {
+   return 0.5f / sqrtf (1.f + s);
+ }
+ 
+ __attribute__((noipa)) float
+ bar (float s)
+ {
+   if (s < 0.0 || s > 65535.0f)
+     __builtin_unreachable ();
+   return 0.5f / sqrtf (1.f + s);
+ }
+ 
+ int
+ main ()
+ {
+   if (__builtin_fabsf (foo (3) - 0.25f) > 0.00390625f
+       || __builtin_fabsf (foo (15) - 0.125f) > 0.00390625f
+       || __builtin_fabsf (foo (63) - 0.0625f) > 0.00390625f
+       || __builtin_fabsf (bar (3.0f) - 0.25f) > 0.00390625f
+       || __builtin_fabsf (bar (15.0f) - 0.125f) > 0.00390625f
+       || __builtin_fabsf (bar (63.0f) - 0.0625f) > 0.00390625f)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/torture/pr117811.c gcc-16-20250615/gcc/testsuite/gcc.dg/torture/pr117811.c
*** gcc-16-20250608/gcc/testsuite/gcc.dg/torture/pr117811.c	Sun Jun  8 22:32:25 2025
--- gcc-16-20250615/gcc/testsuite/gcc.dg/torture/pr117811.c	Sun Jun 15 22:32:47 2025
*************** void __attribute__((noclone,noinline)) d
*** 18,25 ****
--- 18,30 ----
  
  int main ()
  {
+ #if __SIZEOF_INT__ >= 4
    v4 vec =  {0x1000000, 0x2000, 0x300, 0x40};
    v4 vec2 = {0x100000,  0x200,  0x30,  0x4};
+ #else
+   v4 vec =  {0x4000, 0x2000, 0x300, 0x40};
+   v4 vec2 = {0x400,  0x200,  0x30,  0x4};
+ #endif
    do_shift (&vec, 4);
    if (memcmp (&vec, &vec2, sizeof (v4)) != 0)
      __builtin_abort ();
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.dg/tree-prof/clone-merge-1.c gcc-16-20250615/gcc/testsuite/gcc.dg/tree-prof/clone-merge-1.c
*** gcc-16-20250608/gcc/testsuite/gcc.dg/tree-prof/clone-merge-1.c	Sun Jun  8 22:32:26 2025
--- gcc-16-20250615/gcc/testsuite/gcc.dg/tree-prof/clone-merge-1.c	Sun Jun 15 22:32:47 2025
***************
*** 1,4 ****
--- 1,6 ----
  /* { dg-options "-O3 -fno-early-inlining -fdump-ipa-afdo-all" } */
+ /* { dg-require-profiling "-fauto-profile" } */ 
+ 
  __attribute__ ((used))
  int a[1000];
  
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/aarch64/sme/za_state_7.c gcc-16-20250615/gcc/testsuite/gcc.target/aarch64/sme/za_state_7.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/aarch64/sme/za_state_7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/aarch64/sme/za_state_7.c	Sun Jun 15 22:32:48 2025
***************
*** 0 ****
--- 1,21 ----
+ // { dg-options "-O -fno-optimize-sibling-calls -fomit-frame-pointer" }
+ 
+ #include <arm_sme.h>
+ 
+ void callee();
+ 
+ __arm_new("za") __arm_locally_streaming int test()
+ {
+   svbool_t all = svptrue_b8();
+   svint8_t expected = svindex_s8(1, 1);
+   svwrite_hor_za8_m(0, 0, all, expected);
+ 
+   callee();
+ 
+   svint8_t actual = svread_hor_za8_m(svdup_s8(0), all, 0, 0);
+   return svptest_any(all, svcmpne(all, expected, actual));
+ }
+ 
+ // { dg-final { scan-assembler {\tbl\t__arm_tpidr2_save\n} } }
+ // { dg-final { scan-assembler {\tbl\t__arm_tpidr2_restore\n} } }
+ // { dg-final { scan-assembler-times {\tsmstart\tza\n} 2 } }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/aarch64/sve/acle/general/not_1.c gcc-16-20250615/gcc/testsuite/gcc.target/aarch64/sve/acle/general/not_1.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/aarch64/sve/acle/general/not_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/aarch64/sve/acle/general/not_1.c	Sun Jun 15 22:32:50 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ #include <arm_sve.h>
+ 
+ void
+ test1 (svbool_t pg, svbool_t x, int *any, svbool_t *ptr)
+ {
+   svbool_t res = svnot_z (pg, x);
+   *any = svptest_last (pg, res);
+   *ptr = res;
+ }
+ 
+ int
+ test2 (svbool_t pg, svbool_t x)
+ {
+   svbool_t res = svnot_z (pg, x);
+   return svptest_first (pg, res);
+ }
+ 
+ /* { dg-final { scan-assembler-times {\tnots\t} 2 } } */
+ /* { dg-final { scan-assembler-not {\tnot\t} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/aarch64/sve/cost_model_16.c gcc-16-20250615/gcc/testsuite/gcc.target/aarch64/sve/cost_model_16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/aarch64/sve/cost_model_16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/aarch64/sve/cost_model_16.c	Sun Jun 15 22:32:50 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast -march=armv8-a+sve --param vect-scalar-cost-multiplier=1000 -fdump-tree-vect-details" } */
+ 
+ void
+ foo (char *restrict a, int *restrict b, int *restrict c,
+      int *restrict d, int stride)
+ {
+     if (stride <= 1)
+         return;
+ 
+     for (int i = 0; i < 3; i++)
+         {
+             int res = c[i];
+             int t = b[i * stride];
+             if (a[i] != 0)
+                 res = t * d[i];
+             c[i] = res;
+         }
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/avr/torture/pr120423-1.c gcc-16-20250615/gcc/testsuite/gcc.target/avr/torture/pr120423-1.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/avr/torture/pr120423-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/avr/torture/pr120423-1.c	Sun Jun 15 22:32:56 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ 
+ struct data
+ {
+     int a;
+     int b;
+     long c;
+ };
+ 
+ unsigned char val;
+ unsigned val2;
+ 
+ void func1 (struct data *d)
+ {
+     d->a = 0;
+     d->b = 0x100 * val - 1;
+ }
+ 
+ void func2 (struct data *d)
+ {
+     d->a = 0;
+     d->c = 0x10000 * val2 - 1;
+ }
+ 
+ void func3 (struct data *d)
+ {
+     d->a = 0;
+     d->c = 0x1000000 * val - 1;
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c gcc-16-20250615/gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/avr/torture/pr120423-116389.c	Sun Jun 15 22:32:56 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ 
+ struct T { int val; };
+ 
+ void f_int (int);
+ char* get_pos (void);
+ struct T* get_pT (void);
+ 
+ void func (char i)
+ {
+     struct T t = * get_pT ();
+     unsigned diff = get_pos () - &i;
+ 
+     if (diff)
+     {
+         long val32 = t.val;
+         if (get_pos ())
+             val32 = diff;
+         if (get_pos ())
+             f_int (2 * val32);
+     }
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/avr/torture/pr120423-2.c gcc-16-20250615/gcc/testsuite/gcc.target/avr/torture/pr120423-2.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/avr/torture/pr120423-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/avr/torture/pr120423-2.c	Sun Jun 15 22:32:56 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-ffixed-18 -ffixed-20 -ffixed-22" } */
+ 
+ struct data
+ {
+     int a;
+     int b;
+     long c;
+ };
+ 
+ unsigned char val;
+ unsigned val2;
+ 
+ void func1 (struct data *d)
+ {
+     d->a = 0;
+     d->b = 0x100 * val - 1;
+ }
+ 
+ void func2 (struct data *d)
+ {
+     d->a = 0;
+     d->c = 0x10000 * val2 - 1;
+ }
+ 
+ void func3 (struct data *d)
+ {
+     d->a = 0;
+     d->c = 0x1000000 * val - 1;
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/i386/avx512f-pr103750-3.c gcc-16-20250615/gcc/testsuite/gcc.target/i386/avx512f-pr103750-3.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/i386/avx512f-pr103750-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/i386/avx512f-pr103750-3.c	Sun Jun 15 22:32:56 2025
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=x86-64-v4 -mprefer-vector-width=256 -Ofast" } */
+ /* { dg-final { scan-assembler-not "kmov" } } */
+ 
+ void
+ foo (double* a, double* __restrict b, double* c, double* d, int n)
+ {
+   for (int i = 0; i != n; i++)
+     {
+       double tmp = 0.0;
+       if (c[i] > d[i])
+ 	tmp = b[i];
+       a[i] = tmp;
+     }
+ }
+ 
+ void
+ foo1 (double* a, double* __restrict b, double* c, double* d, int n)
+ {
+   for (int i = 0; i != n; i++)
+     {
+       double tmp = 0.0;
+       if (c[i] > d[i])
+ 	a[i] = b[i];
+     }
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr120434-1.c gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr120434-1.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr120434-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr120434-1.c	Sun Jun 15 22:32:57 2025
***************
*** 0 ****
--- 1,28 ----
+ /* PR middle-end/120434 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mtune=generic -masm=att" } */
+ /* { dg-final { scan-assembler-times "\tsar\[lq]\t" 2 } } */
+ /* { dg-final { scan-assembler-times "\tshr\[lq]\t" 2 } } */
+ 
+ [[gnu::noipa]] int
+ foo (int x)
+ {
+   return x / 200;
+ }
+ 
+ [[gnu::noipa]] int
+ bar (int x)
+ {
+   if (x < 0)
+     __builtin_unreachable ();
+   return x / 200;
+ }
+ 
+ [[gnu::noipa]] int
+ baz (int x)
+ {
+   if (x >= 0)
+     return x / 200;
+   else
+     return 24;
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr120434-2.c gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr120434-2.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr120434-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr120434-2.c	Sun Jun 15 22:32:57 2025
***************
*** 0 ****
--- 1,15 ----
+ /* PR middle-end/120434 */
+ /* { dg-do compile { target lp64 } } */
+ /* { dg-options "-O2 -mtune=generic -masm=att" } */
+ /* { dg-final { scan-assembler-not "\tmovslq\t%edi, %rdi" } } */
+ /* { dg-final { scan-assembler "\tmovl\t%edi, %edi" } } */
+ 
+ extern unsigned long long foo (unsigned long long x);
+ 
+ unsigned long long
+ bar (int x)
+ {
+   if (x < 50)
+     return 0;
+   return foo (x);
+ }
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr90693-3.c gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr90693-3.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr90693-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr90693-3.c	Sun Jun 15 22:32:57 2025
***************
*** 0 ****
--- 1,5 ----
+ /* PR tree-optimization/90693 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mpopcnt" } */
+ 
+ #include "pr90693.c"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr90693-4.c gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr90693-4.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr90693-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr90693-4.c	Sun Jun 15 22:32:57 2025
***************
*** 0 ****
--- 1,5 ----
+ /* PR tree-optimization/90693 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mpopcnt" } */
+ 
+ #include "pr90693-2.c"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr90693-5.c gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr90693-5.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr90693-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr90693-5.c	Sun Jun 15 22:32:57 2025
***************
*** 0 ****
--- 1,5 ----
+ /* PR tree-optimization/90693 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mabm" } */
+ 
+ #include "pr90693.c"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr90693-6.c gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr90693-6.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/i386/pr90693-6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/i386/pr90693-6.c	Sun Jun 15 22:32:57 2025
***************
*** 0 ****
--- 1,5 ----
+ /* PR tree-optimization/90693 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mabm" } */
+ 
+ #include "pr90693-2.c"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c gcc-16-20250615/gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/i386/vect-pragma-target-1.c	Sun Jun 15 22:32:57 2025
***************
*** 0 ****
--- 1,194 ----
+ /* { dg-do compile { target { i?86-*-* x86_64-*-* } } }                 */
+ /* { dg-options "-O0" }                                                 */
+ /* { dg-final { scan-assembler-times "paddd.+xmm\[0-9]+"        1 } }   */
+ /* { dg-final { scan-assembler-times "vfmadd132ps.+ymm\[0-9]+"  1 } }   */
+ /* { dg-final { scan-assembler-times "vpaddw.+zmm\[0-9]+"       1 } }   */
+ #ifndef CHECK_DEFINES
+ #define CHECK_DEFINES 0
+ #endif
+ 
+ #define N 1024
+ 
+ /* Optimization flags and tree vectorizer shall be disabled at this point */
+ #if CHECK_DEFINES && defined(__OPTIMIZE__)
+ #error "__OPTIMIZE__ is defined (not compiled with -O0?)"
+ #endif
+ 
+ #pragma GCC push_options
+ #pragma GCC optimize ("O2", "tree-vectorize")
+ 
+ /* Optimization flags and tree vectorizer shall be enabled at this point */
+ #if CHECK_DEFINES && !defined(__OPTIMIZE__)
+ #error "__OPTIMIZE__ is not defined"
+ #endif
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("sse4.2")
+ #ifdef __cplusplus
+ namespace {
+ #endif
+ 
+ /* Target flags up to including SSE4.2 shall be enabled at this point */
+ #if CHECK_DEFINES && !defined(__SSE3__)
+ #error "Target flag (SSE3) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__SSSE3__)
+ #error "Target flag (SSSE3) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__SSE4_1__)
+ #error "Target flag (SSE4.1) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__SSE4_2__)
+ #error "Target flag (SSE4.2) is not defined"
+ #endif
+ 
+ void
+ __attribute__((__noinline__, __used__))
+ vec_saxpy_i32(int y[N], const int a[N], const int x[N])
+ {
+     int i;
+     for (i = 0; i < N; i++)
+         y[i] += a[i] * x[i];
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
+ #pragma GCC pop_options
+ 
+ /* Target flags up to including SSE4.2 shall be disabled at this point */
+ #if CHECK_DEFINES && defined(__SSE3__)
+ #error "Target flag (SSE3) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__SSSE3__)
+ #error "Target flag (SSSE3) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__SSE4_1__)
+ #error "Target flag (SSE4.1) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__SSE4_2__)
+ #error "Target flag (SSE4.2) is still defined"
+ #endif
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("avx2", "fma")
+ #ifdef __cplusplus
+ struct A {
+ #endif
+ 
+ /* Target flags up to including AVX2+FMA shall be enabled at this point */
+ #if CHECK_DEFINES && !defined(__SSE3__)
+ #error "Target flag (SSE3) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__SSSE3__)
+ #error "Target flag (SSSE3) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__SSE4_1__)
+ #error "Target flag (SSE4.1) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__SSE4_2__)
+ #error "Target flag (SSE4.2) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__AVX__)
+ #error "Target flag (AVX) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__AVX2__)
+ #error "Target flag (AVX2) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__FMA__)
+ #error "Target flag (FMA) is not defined"
+ #endif
+ 
+ void
+ __attribute__((__noinline__, __used__))
+ vec_saxpy_f32(float y[N], const float a[N], const float x[N])
+ {
+     int i;
+     for (i = 0; i < N; i++)
+         y[i] += a[i] * x[i];
+ }
+ 
+ #ifdef __cplusplus
+ };
+ #endif
+ #pragma GCC pop_options
+ 
+ /* Target flags up to including AVX2+FMA shall be disabled at this point */
+ #if CHECK_DEFINES && defined(__SSE3__)
+ #error "Target flag (SSE3) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__SSSE3__)
+ #error "Target flag (SSSE3) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__SSE4_1__)
+ #error "Target flag (SSE4.1) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__SSE4_2__)
+ #error "Target flag (SSE4.2) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__AVX__)
+ #error "Target flag (AVX) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__AVX2__)
+ #error "Target flag (AVX2) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__FMA__)
+ #error "Target flag (FMA) is still defined"
+ #endif
+ 
+ #pragma GCC push_options
+ #pragma GCC target ("arch=x86-64-v4")
+ #ifdef __cplusplus
+ namespace avx512 {
+ struct A {
+ #endif
+ 
+ /* Essential AVX512 target flags shall be enabled at this point */
+ #if CHECK_DEFINES && !defined(__AVX512F__)
+ #error "Target flag (AVX512F) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__AVX512VL__)
+ #error "Target flag (AVX512VL) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__AVX512DQ__)
+ #error "Target flag (AVX512DQ) is not defined"
+ #endif
+ #if CHECK_DEFINES && !defined(__AVX512BW__)
+ #error "Target flag (AVX512BW) is not defined"
+ #endif
+ 
+ void
+ __attribute__((__noinline__, __used__))
+ vec_saxpy_i16(short y[N], const short a[N], const short x[N])
+ {
+     int i;
+     for (i = 0; i < N; i++)
+         y[i] += a[i] * x[i];
+ }
+ 
+ #ifdef __cplusplus
+ };
+ }
+ #endif
+ #pragma GCC pop_options
+ 
+ /* Essential AVX512 target flags shall be disabled at this point */
+ #if CHECK_DEFINES && defined(__AVX512F__)
+ #error "Target flag (AVX512F) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__AVX512VL__)
+ #error "Target flag (AVX512VL) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__AVX512DQ__)
+ #error "Target flag (AVX512DQ) is still defined"
+ #endif
+ #if CHECK_DEFINES && defined(__AVX512BW__)
+ #error "Target flag (AVX512BW) is still defined"
+ #endif
+ 
+ #pragma GCC pop_options
+ 
+ /* Optimization flags and tree vectorizer shall be disabled at this point */
+ #if CHECK_DEFINES && defined(__OPTIMIZE__)
+ #error "__OPTIMIZE__ is still defined"
+ #endif
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c gcc-16-20250615/gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/i386/vect-pragma-target-2.c	Sun Jun 15 22:32:57 2025
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile { target { i?86-*-* x86_64-*-* } } }                 */
+ /* { dg-options "-O0" }                                                 */
+ /* { dg-final { scan-assembler-times "paddd.+xmm\[0-9]+"        1 } }   */
+ /* { dg-final { scan-assembler-times "vfmadd132ps.+ymm\[0-9]+"  1 } }   */
+ /* { dg-final { scan-assembler-times "vpaddw.+zmm\[0-9]+"       1 } }   */
+ #define CHECK_DEFINES 1
+ #include "vect-pragma-target-1.c"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv32gcv.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv32gcv.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv32gcv.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv32gcv.c	Sun Jun 15 22:33:15 2025
***************
*** 2,11 ****
  
  #include "vrem-template.h"
  
! /* { dg-final { scan-assembler-times {\tvrem\.vv} 5 } } */
! /* { dg-final { scan-assembler-times {\tvrem\.vx} 3 } } */
! /* { dg-final { scan-assembler-times {\tvremu\.vv} 5 } } */
! /* { dg-final { scan-assembler-times {\tvremu\.vx} 3 } } */
  /* { dg-final { scan-tree-dump-times "\.COND_LEN_MOD" 16 "optimized" } } */
  /* { dg-final { scan-assembler-not {\tvmv1r\.v} } } */
  /* { dg-final { scan-assembler-not {\tvmv2r\.v} } } */
--- 2,11 ----
  
  #include "vrem-template.h"
  
! /* { dg-final { scan-assembler-times {\tvrem\.vv} 8 } } */
! /* { dg-final { scan-assembler-not {\tvrem\.vx} } } */
! /* { dg-final { scan-assembler-times {\tvremu\.vv} 8 } } */
! /* { dg-final { scan-assembler-not {\tvremu\.vx} } } */
  /* { dg-final { scan-tree-dump-times "\.COND_LEN_MOD" 16 "optimized" } } */
  /* { dg-final { scan-assembler-not {\tvmv1r\.v} } } */
  /* { dg-final { scan-assembler-not {\tvmv2r\.v} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv64gcv.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv64gcv.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv64gcv.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vrem-rv64gcv.c	Sun Jun 15 22:33:15 2025
***************
*** 3,12 ****
  
  #include "vrem-template.h"
  
! /* { dg-final { scan-assembler-times {\tvrem\.vv} 4 } } */
! /* { dg-final { scan-assembler-times {\tvrem\.vx} 4 } } */
! /* { dg-final { scan-assembler-times {\tvremu\.vv} 4 } } */
! /* { dg-final { scan-assembler-times {\tvremu\.vx} 4 } } */
  /* { dg-final { scan-tree-dump-times "\.COND_LEN_MOD" 16 "optimized" } } */
  /* { dg-final { scan-assembler-not {\tvmv1r\.v} } } */
  /* { dg-final { scan-assembler-not {\tvmv2r\.v} } } */
--- 3,12 ----
  
  #include "vrem-template.h"
  
! /* { dg-final { scan-assembler-times {\tvrem\.vv} 8 } } */
! /* { dg-final { scan-assembler-not {\tvrem\.vx} } } */
! /* { dg-final { scan-assembler-times {\tvremu\.vv} 8 } } */
! /* { dg-final { scan-assembler-not {\tvremu\.vx} } } */
  /* { dg-final { scan-tree-dump-times "\.COND_LEN_MOD" 16 "optimized" } } */
  /* { dg-final { scan-assembler-not {\tvmv1r\.v} } } */
  /* { dg-final { scan-assembler-not {\tvmv2r\.v} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0(_Float16, +, add)
! DEF_VF_MULOP_CASE_0(_Float16, -, sub)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0 (_Float16, +, +, add)
! DEF_VF_MULOP_CASE_0 (_Float16, -, +, sub)
! DEF_VF_MULOP_CASE_0 (_Float16, +, -, nadd)
! DEF_VF_MULOP_CASE_0 (_Float16, -, -, nsub)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfnmadd.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfnmsub.vf} 1 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0(float, +, add)
! DEF_VF_MULOP_CASE_0(float, -, sub)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0 (float, +, +, add)
! DEF_VF_MULOP_CASE_0 (float, -, +, sub)
! DEF_VF_MULOP_CASE_0 (float, +, -, nadd)
! DEF_VF_MULOP_CASE_0 (float, -, -, nsub)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfnmadd.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfnmsub.vf} 1 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0(double, +, add)
! DEF_VF_MULOP_CASE_0(double, -, sub)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0 (double, +, +, add)
! DEF_VF_MULOP_CASE_0 (double, -, +, sub)
! DEF_VF_MULOP_CASE_0 (double, +, -, nadd)
! DEF_VF_MULOP_CASE_0 (double, -, -, nsub)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfnmadd.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfnmsub.vf} 1 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0(_Float16, +, add)
! DEF_VF_MULOP_CASE_0(_Float16, -, sub)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0 (_Float16, +, +, add)
! DEF_VF_MULOP_CASE_0 (_Float16, -, +, sub)
! DEF_VF_MULOP_CASE_0 (_Float16, +, -, nadd)
! DEF_VF_MULOP_CASE_0 (_Float16, -, -, nsub)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmsub.vf} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0(float, +, add)
! DEF_VF_MULOP_CASE_0(float, -, sub)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0 (float, +, +, add)
! DEF_VF_MULOP_CASE_0 (float, -, +, sub)
! DEF_VF_MULOP_CASE_0 (float, +, -, nadd)
! DEF_VF_MULOP_CASE_0 (float, -, -, nsub)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmsub.vf} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0(float, +, add)
! DEF_VF_MULOP_CASE_0(float, -, sub)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_0 (float, +, +, add)
! DEF_VF_MULOP_CASE_0 (float, -, +, sub)
! DEF_VF_MULOP_CASE_0 (float, +, -, nadd)
! DEF_VF_MULOP_CASE_0 (float, -, -, nsub)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmsub.vf} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1(_Float16, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1(_Float16, -, sub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1 (_Float16, +, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (_Float16, -, +, sub, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (_Float16, +, -, nadd, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (_Float16, -, -, nsub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
+ /* { dg-final { scan-assembler {vfnmadd.vf} } } */
+ /* { dg-final { scan-assembler {vfnmsub.vf} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1(float, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1(float, -, sub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1 (float, +, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (float, -, +, sub, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (float, +, -, nadd, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (float, -, -, nsub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
+ /* { dg-final { scan-assembler {vfnmadd.vf} } } */
+ /* { dg-final { scan-assembler {vfnmsub.vf} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1(double, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1(double, -, sub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1 (double, +, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (double, -, +, sub, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (double, +, -, nadd, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (double, -, -, nsub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
+ /* { dg-final { scan-assembler {vfnmadd.vf} } } */
+ /* { dg-final { scan-assembler {vfnmsub.vf} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1(_Float16, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1(_Float16, -, sub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1 (_Float16, +, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (_Float16, -, +, sub, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (_Float16, +, -, nadd, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (_Float16, -, -, nsub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmsub.vf} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1(float, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1(float, -, sub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1 (float, +, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (float, -, +, sub, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (float, +, -, nadd, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (float, -, -, nsub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmsub.vf} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c	Sun Jun 15 22:33:15 2025
***************
*** 3,10 ****
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1(double, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1(double, -, sub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
--- 3,14 ----
  
  #include "vf_mulop.h"
  
! DEF_VF_MULOP_CASE_1 (double, +, +, add, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (double, -, +, sub, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (double, +, -, nadd, VF_MULOP_BODY_X16)
! DEF_VF_MULOP_CASE_1 (double, -, -, nsub, VF_MULOP_BODY_X16)
  
  /* { dg-final { scan-assembler-not {vfmadd.vf} } } */
  /* { dg-final { scan-assembler-not {vfmsub.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfnmsub.vf} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop.h gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop.h
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop.h	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop.h	Sun Jun 15 22:33:15 2025
***************
*** 3,61 ****
  
  #include <stdint.h>
  
! #define DEF_VF_MULOP_CASE_0(T, OP, NAME)                                       \
!   void test_vf_mulop_##NAME##_##T##_case_0(T *restrict out, T *restrict in,    \
!                                            T x, unsigned n) {                  \
      for (unsigned i = 0; i < n; i++)                                           \
!       out[i] = in[i] OP out[i] * x;                                            \
    }
! #define DEF_VF_MULOP_CASE_0_WRAP(T, OP, NAME) DEF_VF_MULOP_CASE_0(T, OP, NAME)
  #define RUN_VF_MULOP_CASE_0(T, NAME, out, in, x, n)                            \
    test_vf_mulop_##NAME##_##T##_case_0(out, in, x, n)
  #define RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)                       \
    RUN_VF_MULOP_CASE_0(T, NAME, out, in, x, n)
  
! #define VF_MULOP_BODY(op)                                                      \
!   out[k + 0] = in[k + 0] op tmp * out[k + 0];                                  \
!   out[k + 1] = in[k + 1] op tmp * out[k + 1];                                  \
    k += 2;
  
! #define VF_MULOP_BODY_X4(op)                                                   \
!   VF_MULOP_BODY(op)                                                            \
!   VF_MULOP_BODY(op)
  
! #define VF_MULOP_BODY_X8(op)                                                   \
!   VF_MULOP_BODY_X4(op)                                                         \
!   VF_MULOP_BODY_X4(op)
  
! #define VF_MULOP_BODY_X16(op)                                                  \
!   VF_MULOP_BODY_X8(op)                                                         \
!   VF_MULOP_BODY_X8(op)
  
! #define VF_MULOP_BODY_X32(op)                                                  \
!   VF_MULOP_BODY_X16(op)                                                        \
!   VF_MULOP_BODY_X16(op)
  
! #define VF_MULOP_BODY_X64(op)                                                  \
!   VF_MULOP_BODY_X32(op)                                                        \
!   VF_MULOP_BODY_X32(op)
  
! #define VF_MULOP_BODY_X128(op)                                                 \
!   VF_MULOP_BODY_X64(op)                                                        \
!   VF_MULOP_BODY_X64(op)
  
! #define DEF_VF_MULOP_CASE_1(T, OP, NAME, BODY)                                       \
!   void test_vf_mulop_##NAME##_##T##_case_1(T *restrict out, T *restrict in,    \
!                                            T x, unsigned n) {                  \
      unsigned k = 0;                                                            \
      T tmp = x + 3;                                                             \
                                                                                 \
!     while (k < n) {                                                            \
!       tmp = tmp * 0x3f;                                                        \
!       BODY(OP)                                                                 \
!     }                                                                          \
    }
! #define DEF_VF_MULOP_CASE_1_WRAP(T, OP, NAME, BODY)                            \
!   DEF_VF_MULOP_CASE_1(T, OP, NAME, BODY)
  
  #endif
--- 3,65 ----
  
  #include <stdint.h>
  
! #define DEF_VF_MULOP_CASE_0(T, OP, NEG, NAME)                                  \
!   void test_vf_mulop_##NAME##_##T##_case_0 (T *restrict out, T *restrict in,   \
! 					    T f, unsigned n)                   \
!   {                                                                            \
      for (unsigned i = 0; i < n; i++)                                           \
!       out[i] = NEG (f * out[i] OP in[i]);                                      \
    }
! #define DEF_VF_MULOP_CASE_0_WRAP(T, OP, NEG, NAME)                             \
!   DEF_VF_MULOP_CASE_0 (T, OP, NEG, NAME)
  #define RUN_VF_MULOP_CASE_0(T, NAME, out, in, x, n)                            \
    test_vf_mulop_##NAME##_##T##_case_0(out, in, x, n)
  #define RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)                       \
    RUN_VF_MULOP_CASE_0(T, NAME, out, in, x, n)
  
! #define VF_MULOP_BODY(op, neg)                                                 \
!   out[k + 0] = neg (tmp * out[k + 0] op in[k + 0]);                            \
!   out[k + 1] = neg (tmp * out[k + 1] op in[k + 1]);                            \
    k += 2;
  
! #define VF_MULOP_BODY_X4(op, neg)                                              \
!   VF_MULOP_BODY (op, neg)                                                      \
!   VF_MULOP_BODY (op, neg)
  
! #define VF_MULOP_BODY_X8(op, neg)                                              \
!   VF_MULOP_BODY_X4 (op, neg)                                                   \
!   VF_MULOP_BODY_X4 (op, neg)
  
! #define VF_MULOP_BODY_X16(op, neg)                                             \
!   VF_MULOP_BODY_X8 (op, neg)                                                   \
!   VF_MULOP_BODY_X8 (op, neg)
  
! #define VF_MULOP_BODY_X32(op, neg)                                             \
!   VF_MULOP_BODY_X16 (op, neg)                                                  \
!   VF_MULOP_BODY_X16 (op, neg)
  
! #define VF_MULOP_BODY_X64(op, neg)                                             \
!   VF_MULOP_BODY_X32 (op, neg)                                                  \
!   VF_MULOP_BODY_X32 (op, neg)
  
! #define VF_MULOP_BODY_X128(op, neg)                                            \
!   VF_MULOP_BODY_X64 (op, neg)                                                  \
!   VF_MULOP_BODY_X64 (op, neg)
  
! #define DEF_VF_MULOP_CASE_1(T, OP, NEG, NAME, BODY)                            \
!   void test_vf_mulop_##NAME##_##T##_case_1 (T *restrict out, T *restrict in,   \
! 					    T x, unsigned n)                   \
!   {                                                                            \
      unsigned k = 0;                                                            \
      T tmp = x + 3;                                                             \
                                                                                 \
!     while (k < n)                                                              \
!       {                                                                        \
! 	tmp = tmp * 0x3f;                                                      \
! 	BODY (OP, NEG)                                                         \
!       }                                                                        \
    }
! #define DEF_VF_MULOP_CASE_1_WRAP(T, OP, NEG, NAME, BODY)                       \
!   DEF_VF_MULOP_CASE_1 (T, OP, NEG, NAME, BODY)
  
  #endif
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_data.h	Sun Jun 15 22:33:15 2025
*************** double TEST_MULOP_DATA(double, add)[][4]
*** 211,216 ****
--- 211,618 ----
  _Float16 TEST_MULOP_DATA(_Float16, sub)[][4][N] =
  {
    {
+     {       5.94f16 },
+     {
+          -20.1f16,      -20.1f16,      -20.1f16,      -20.1f16,
+          -13.1f16,      -13.1f16,      -13.1f16,      -13.1f16,
+          -8.92f16,      -8.92f16,      -8.92f16,      -8.92f16,
+          -43.1f16,      -43.1f16,      -43.1f16,      -43.1f16,
+     },
+     {
+           7.44f16,       7.44f16,       7.44f16,       7.44f16,
+            5.9f16,        5.9f16,        5.9f16,        5.9f16,
+           6.81f16,       6.81f16,       6.81f16,       6.81f16,
+           9.03f16,       9.03f16,       9.03f16,       9.03f16,
+     },
+     {
+           64.2f16,       64.2f16,       64.2f16,       64.2f16,
+           48.1f16,       48.1f16,       48.1f16,       48.1f16,
+           49.4f16,       49.4f16,       49.4f16,       49.4f16,
+           96.7f16,       96.7f16,       96.7f16,       96.7f16,
+     }
+   },
+   {
+     {     0.0475f16 },
+     {
+        -0.0965f16,    -0.0965f16,    -0.0965f16,    -0.0965f16,
+          -0.23f16,      -0.23f16,      -0.23f16,      -0.23f16,
+         -0.267f16,     -0.267f16,     -0.267f16,     -0.267f16,
+         -0.455f16,     -0.455f16,     -0.455f16,     -0.455f16,
+     },
+     {
+         0.0748f16,     0.0748f16,     0.0748f16,     0.0748f16,
+         0.0372f16,     0.0372f16,     0.0372f16,     0.0372f16,
+         0.0183f16,     0.0183f16,     0.0183f16,     0.0183f16,
+         0.0411f16,     0.0411f16,     0.0411f16,     0.0411f16,
+     },
+     {
+            0.1f16,        0.1f16,        0.1f16,        0.1f16,
+          0.232f16,      0.232f16,      0.232f16,      0.232f16,
+          0.268f16,      0.268f16,      0.268f16,      0.268f16,
+          0.457f16,      0.457f16,      0.457f16,      0.457f16,
+     }
+   },
+   {
+     {   2.46e+01f16 },
+     {
+      -1.46e+02f16,  -1.46e+02f16,  -1.46e+02f16,  -1.46e+02f16,
+       3.66e+02f16,   3.66e+02f16,   3.66e+02f16,   3.66e+02f16,
+       3.47e+02f16,   3.47e+02f16,   3.47e+02f16,   3.47e+02f16,
+       6.24e+02f16,   6.24e+02f16,   6.24e+02f16,   6.24e+02f16,
+     },
+     {
+       6.17e+00f16,   6.17e+00f16,   6.17e+00f16,   6.17e+00f16,
+       2.46e+01f16,   2.46e+01f16,   2.46e+01f16,   2.46e+01f16,
+       1.99e+01f16,   1.99e+01f16,   1.99e+01f16,   1.99e+01f16,
+       3.29e+01f16,   3.29e+01f16,   3.29e+01f16,   3.29e+01f16,
+     },
+     {
+       2.97e+02f16,   2.97e+02f16,   2.97e+02f16,   2.97e+02f16,
+       2.39e+02f16,   2.39e+02f16,   2.39e+02f16,   2.39e+02f16,
+       1.42e+02f16,   1.42e+02f16,   1.42e+02f16,   1.42e+02f16,
+       1.85e+02f16,   1.85e+02f16,   1.85e+02f16,   1.85e+02f16,
+     }
+   },
+ };
+ 
+ float TEST_MULOP_DATA(float, sub)[][4][N] =
+ {
+   {
+     {       5.96f },
+     {
+           7.74f,       7.74f,       7.74f,       7.74f,
+           -57.f,       -57.f,       -57.f,       -57.f,
+           32.7f,       32.7f,       32.7f,       32.7f,
+           2.44f,       2.44f,       2.44f,       2.44f,
+     },
+     {
+           7.37f,       7.37f,       7.37f,       7.37f,
+            5.6f,        5.6f,        5.6f,        5.6f,
+           9.07f,       9.07f,       9.07f,       9.07f,
+           2.87f,       2.87f,       2.87f,       2.87f,
+     },
+     {
+           36.2f,       36.2f,       36.2f,       36.2f,
+           90.4f,       90.4f,       90.4f,       90.4f,
+           21.3f,       21.3f,       21.3f,       21.3f,
+           14.6f,       14.6f,       14.6f,       14.6f,
+     }
+   },
+   {
+     {   3.00e-02f },
+     {
+      -2.83e-01f,  -2.83e-01f,  -2.83e-01f,  -2.83e-01f,
+      -5.37e-01f,  -5.37e-01f,  -5.37e-01f,  -5.37e-01f,
+      -7.87e-01f,  -7.87e-01f,  -7.87e-01f,  -7.87e-01f,
+      -3.65e-01f,  -3.65e-01f,  -3.65e-01f,  -3.65e-01f,
+     },
+     {
+       8.84e-02f,   8.84e-02f,   8.84e-02f,   8.84e-02f,
+       9.27e-02f,   9.27e-02f,   9.27e-02f,   9.27e-02f,
+       6.51e-02f,   6.51e-02f,   6.51e-02f,   6.51e-02f,
+       5.67e-02f,   5.67e-02f,   5.67e-02f,   5.67e-02f,
+     },
+     {
+       2.86e-01f,   2.86e-01f,   2.86e-01f,   2.86e-01f,
+       5.40e-01f,   5.40e-01f,   5.40e-01f,   5.40e-01f,
+       7.89e-01f,   7.89e-01f,   7.89e-01f,   7.89e-01f,
+       3.67e-01f,   3.67e-01f,   3.67e-01f,   3.67e-01f,
+     }
+   },
+   {
+     {   9.04e+01f },
+     {
+       2.76e+03f,   2.76e+03f,   2.76e+03f,   2.76e+03f,
+       1.05e+03f,   1.05e+03f,   1.05e+03f,   1.05e+03f,
+       5.17e+03f,   5.17e+03f,   5.17e+03f,   5.17e+03f,
+       3.91e+03f,   3.91e+03f,   3.91e+03f,   3.91e+03f,
+     },
+     {
+       3.99e+01f,   3.99e+01f,   3.99e+01f,   3.99e+01f,
+       1.38e+01f,   1.38e+01f,   1.38e+01f,   1.38e+01f,
+       6.36e+01f,   6.36e+01f,   6.36e+01f,   6.36e+01f,
+       4.77e+01f,   4.77e+01f,   4.77e+01f,   4.77e+01f,
+     },
+     {
+       8.39e+02f,   8.39e+02f,   8.39e+02f,   8.39e+02f,
+       1.97e+02f,   1.97e+02f,   1.97e+02f,   1.97e+02f,
+       5.77e+02f,   5.77e+02f,   5.77e+02f,   5.77e+02f,
+       4.02e+02f,   4.02e+02f,   4.02e+02f,   4.02e+02f,
+     }
+   },
+ };
+ 
+ double TEST_MULOP_DATA(double, sub)[][4][N] =
+ {
+   {
+     {   1.69e+01 },
+     {
+       8.58e+02,   8.58e+02,   8.58e+02,   8.58e+02,
+       2.87e+02,   2.87e+02,   2.87e+02,   2.87e+02,
+       4.35e+02,   4.35e+02,   4.35e+02,   4.35e+02,
+      -6.35e+01,  -6.35e+01,  -6.35e+01,  -6.35e+01,
+     },
+     {
+       8.02e+01,   8.02e+01,   8.02e+01,   8.02e+01,
+       7.51e+01,   7.51e+01,   7.51e+01,   7.51e+01,
+       5.85e+01,   5.85e+01,   5.85e+01,   5.85e+01,
+       1.65e+01,   1.65e+01,   1.65e+01,   1.65e+01,
+     },
+     {
+       4.95e+02,   4.95e+02,   4.95e+02,   4.95e+02,
+       9.80e+02,   9.80e+02,   9.80e+02,   9.80e+02,
+       5.51e+02,   5.51e+02,   5.51e+02,   5.51e+02,
+       3.42e+02,   3.42e+02,   3.42e+02,   3.42e+02,
+     }
+   },
+   {
+     {   8.86e-10 },
+     {
+      -8.82e-09,  -8.82e-09,  -8.82e-09,  -8.82e-09,
+      -3.09e-09,  -3.09e-09,  -3.09e-09,  -3.09e-09,
+      -4.87e-09,  -4.87e-09,  -4.87e-09,  -4.87e-09,
+      -5.70e-09,  -5.70e-09,  -5.70e-09,  -5.70e-09,
+     },
+     {
+       9.72e-10,   9.72e-10,   9.72e-10,   9.72e-10,
+       5.78e-10,   5.78e-10,   5.78e-10,   5.78e-10,
+       1.10e-10,   1.10e-10,   1.10e-10,   1.10e-10,
+       4.62e-10,   4.62e-10,   4.62e-10,   4.62e-10,
+     },
+     {
+       8.82e-09,   8.82e-09,   8.82e-09,   8.82e-09,
+       3.09e-09,   3.09e-09,   3.09e-09,   3.09e-09,
+       4.87e-09,   4.87e-09,   4.87e-09,   4.87e-09,
+       5.70e-09,   5.70e-09,   5.70e-09,   5.70e-09,
+     }
+   },
+   {
+     {   1.09e-20 },
+     {
+      -5.46e-19,  -5.46e-19,  -5.46e-19,  -5.46e-19,
+      -2.28e-19,  -2.28e-19,  -2.28e-19,  -2.28e-19,
+      -4.77e-19,  -4.77e-19,  -4.77e-19,  -4.77e-19,
+      -1.76e-19,  -1.76e-19,  -1.76e-19,  -1.76e-19,
+     },
+     {
+       5.52e-20,   5.52e-20,   5.52e-20,   5.52e-20,
+       2.20e-20,   2.20e-20,   2.20e-20,   2.20e-20,
+       2.97e-20,   2.97e-20,   2.97e-20,   2.97e-20,
+       3.23e-20,   3.23e-20,   3.23e-20,   3.23e-20,
+     },
+     {
+       5.46e-19,   5.46e-19,   5.46e-19,   5.46e-19,
+       2.28e-19,   2.28e-19,   2.28e-19,   2.28e-19,
+       4.77e-19,   4.77e-19,   4.77e-19,   4.77e-19,
+       1.76e-19,   1.76e-19,   1.76e-19,   1.76e-19,
+     }
+   },
+ };
+ 
+ _Float16 TEST_MULOP_DATA(_Float16, nadd)[][4][N] =
+ {
+   {
+     {       1.09f16 },
+     {
+          -60.7f16,      -60.7f16,      -60.7f16,      -60.7f16,
+          -25.2f16,      -25.2f16,      -25.2f16,      -25.2f16,
+          -50.9f16,      -50.9f16,      -50.9f16,      -50.9f16,
+          -21.1f16,      -21.1f16,      -21.1f16,      -21.1f16,
+     },
+     {
+           5.52f16,       5.52f16,       5.52f16,       5.52f16,
+            2.2f16,        2.2f16,        2.2f16,        2.2f16,
+           2.97f16,       2.97f16,       2.97f16,       2.97f16,
+           3.23f16,       3.23f16,       3.23f16,       3.23f16,
+     },
+     {
+           54.6f16,       54.6f16,       54.6f16,       54.6f16,
+           22.8f16,       22.8f16,       22.8f16,       22.8f16,
+           47.7f16,       47.7f16,       47.7f16,       47.7f16,
+           17.6f16,       17.6f16,       17.6f16,       17.6f16,
+     }
+   },
+   {
+     {      0.794f16 },
+     {
+           -6.8f16,       -6.8f16,       -6.8f16,       -6.8f16,
+           -6.1f16,       -6.1f16,       -6.1f16,       -6.1f16,
+          -3.02f16,      -3.02f16,      -3.02f16,      -3.02f16,
+          -3.15f16,      -3.15f16,      -3.15f16,      -3.15f16,
+     },
+     {
+          0.119f16,      0.119f16,      0.119f16,      0.119f16,
+          0.774f16,      0.774f16,      0.774f16,      0.774f16,
+          0.302f16,      0.302f16,      0.302f16,      0.302f16,
+          0.784f16,      0.784f16,      0.784f16,      0.784f16,
+     },
+     {
+            6.7f16,        6.7f16,        6.7f16,        6.7f16,
+           5.49f16,       5.49f16,       5.49f16,       5.49f16,
+           2.78f16,       2.78f16,       2.78f16,       2.78f16,
+           2.52f16,       2.52f16,       2.52f16,       2.52f16,
+     }
+   },
+   {
+     {      -2.62f16 },
+     {
+           48.6f16,       48.6f16,       48.6f16,       48.6f16,
+           28.1f16,       28.1f16,       28.1f16,       28.1f16,
+          -2.93f16,      -2.93f16,      -2.93f16,      -2.93f16,
+           80.6f16,       80.6f16,       80.6f16,       80.6f16,
+     },
+     {
+          -1.18f16,      -1.18f16,      -1.18f16,      -1.18f16,
+          -7.52f16,      -7.52f16,      -7.52f16,      -7.52f16,
+          -5.37f16,      -5.37f16,      -5.37f16,      -5.37f16,
+          -5.39f16,      -5.39f16,      -5.39f16,      -5.39f16,
+     },
+     {
+          -51.7f16,      -51.7f16,      -51.7f16,      -51.7f16,
+          -47.8f16,      -47.8f16,      -47.8f16,      -47.8f16,
+          -11.2f16,      -11.2f16,      -11.2f16,      -11.2f16,
+          -94.8f16,      -94.8f16,      -94.8f16,      -94.8f16,
+     }
+   },
+ };
+ 
+ float TEST_MULOP_DATA(float, nadd)[][4][N] =
+ {
+   {
+     {       1.19f },
+     {
+          -21.4f,      -21.4f,      -21.4f,      -21.4f,
+          -9.12f,      -9.12f,      -9.12f,      -9.12f,
+          -51.1f,      -51.1f,      -51.1f,      -51.1f,
+          -48.8f,      -48.8f,      -48.8f,      -48.8f,
+     },
+     {
+           3.83f,       3.83f,       3.83f,       3.83f,
+            2.9f,        2.9f,        2.9f,        2.9f,
+           4.63f,       4.63f,       4.63f,       4.63f,
+           0.65f,       0.65f,       0.65f,       0.65f,
+     },
+     {
+           16.8f,       16.8f,       16.8f,       16.8f,
+           5.66f,       5.66f,       5.66f,       5.66f,
+           45.5f,       45.5f,       45.5f,       45.5f,
+           48.1f,       48.1f,       48.1f,       48.1f,
+     }
+   },
+   {
+     {   1.60e+01f },
+     {
+      -2.69e+02f,  -2.69e+02f,  -2.69e+02f,  -2.69e+02f,
+      -5.05e+02f,  -5.05e+02f,  -5.05e+02f,  -5.05e+02f,
+      -2.92e+02f,  -2.92e+02f,  -2.92e+02f,  -2.92e+02f,
+      -3.91e+02f,  -3.91e+02f,  -3.91e+02f,  -3.91e+02f,
+     },
+     {
+       6.28e+00f,   6.28e+00f,   6.28e+00f,   6.28e+00f,
+       1.94e+01f,   1.94e+01f,   1.94e+01f,   1.94e+01f,
+       1.02e+01f,   1.02e+01f,   1.02e+01f,   1.02e+01f,
+       1.60e+01f,   1.60e+01f,   1.60e+01f,   1.60e+01f,
+     },
+     {
+       1.68e+02f,   1.68e+02f,   1.68e+02f,   1.68e+02f,
+       1.95e+02f,   1.95e+02f,   1.95e+02f,   1.95e+02f,
+       1.30e+02f,   1.30e+02f,   1.30e+02f,   1.30e+02f,
+       1.35e+02f,   1.35e+02f,   1.35e+02f,   1.35e+02f,
+     }
+   },
+   {
+     {  -5.63e+01f },
+     {
+      -3.59e+03f,  -3.59e+03f,  -3.59e+03f,  -3.59e+03f,
+      -2.25e+02f,  -2.25e+02f,  -2.25e+02f,  -2.25e+02f,
+      -4.85e+03f,  -4.85e+03f,  -4.85e+03f,  -4.85e+03f,
+      -1.59e+03f,  -1.59e+03f,  -1.59e+03f,  -1.59e+03f,
+     },
+     {
+      -7.96e+01f,  -7.96e+01f,  -7.96e+01f,  -7.96e+01f,
+      -1.07e+01f,  -1.07e+01f,  -1.07e+01f,  -1.07e+01f,
+      -9.62e+01f,  -9.62e+01f,  -9.62e+01f,  -9.62e+01f,
+      -3.86e+01f,  -3.86e+01f,  -3.86e+01f,  -3.86e+01f,
+     },
+     {
+      -8.83e+02f,  -8.83e+02f,  -8.83e+02f,  -8.83e+02f,
+      -3.79e+02f,  -3.79e+02f,  -3.79e+02f,  -3.79e+02f,
+      -5.62e+02f,  -5.62e+02f,  -5.62e+02f,  -5.62e+02f,
+      -5.85e+02f,  -5.85e+02f,  -5.85e+02f,  -5.85e+02f,
+     }
+   },
+ };
+ 
+ double TEST_MULOP_DATA(double, nadd)[][4][N] =
+ {
+   {
+     {   8.64e+20 },
+     {
+      -2.89e+41,  -2.89e+41,  -2.89e+41,  -2.89e+41,
+      -6.50e+41,  -6.50e+41,  -6.50e+41,  -6.50e+41,
+      -8.11e+41,  -8.11e+41,  -8.11e+41,  -8.11e+41,
+      -4.44e+41,  -4.44e+41,  -4.44e+41,  -4.44e+41,
+     },
+     {
+       2.61e+20,   2.61e+20,   2.61e+20,   2.61e+20,
+       4.25e+20,   4.25e+20,   4.25e+20,   4.25e+20,
+       5.77e+20,   5.77e+20,   5.77e+20,   5.77e+20,
+       3.74e+20,   3.74e+20,   3.74e+20,   3.74e+20,
+     },
+     {
+       6.38e+40,   6.38e+40,   6.38e+40,   6.38e+40,
+       2.83e+41,   2.83e+41,   2.83e+41,   2.83e+41,
+       3.13e+41,   3.13e+41,   3.13e+41,   3.13e+41,
+       1.21e+41,   1.21e+41,   1.21e+41,   1.21e+41,
+     }
+   },
+   {
+     {  -3.01e+40 },
+     {
+      -7.27e+81,  -7.27e+81,  -7.27e+81,  -7.27e+81,
+      -4.10e+81,  -4.10e+81,  -4.10e+81,  -4.10e+81,
+      -7.82e+81,  -7.82e+81,  -7.82e+81,  -7.82e+81,
+      -1.54e+81,  -1.54e+81,  -1.54e+81,  -1.54e+81,
+     },
+     {
+      -5.71e+40,  -5.71e+40,  -5.71e+40,  -5.71e+40,
+      -1.41e+40,  -1.41e+40,  -1.41e+40,  -1.41e+40,
+      -3.01e+40,  -3.01e+40,  -3.01e+40,  -3.01e+40,
+      -2.47e+40,  -2.47e+40,  -2.47e+40,  -2.47e+40,
+     },
+     {
+       5.55e+81,   5.55e+81,   5.55e+81,   5.55e+81,
+       3.67e+81,   3.67e+81,   3.67e+81,   3.67e+81,
+       6.92e+81,   6.92e+81,   6.92e+81,   6.92e+81,
+       7.96e+80,   7.96e+80,   7.96e+80,   7.96e+80,
+     }
+   },
+   {
+     {   3.65e-20 },
+     {
+      -4.11e-39,  -4.11e-39,  -4.11e-39,  -4.11e-39,
+      -8.48e-39,  -8.48e-39,  -8.48e-39,  -8.48e-39,
+      -8.93e-39,  -8.93e-39,  -8.93e-39,  -8.93e-39,
+      -2.74e-39,  -2.74e-39,  -2.74e-39,  -2.74e-39,
+     },
+     {
+       5.78e-20,   5.78e-20,   5.78e-20,   5.78e-20,
+       1.61e-20,   1.61e-20,   1.61e-20,   1.61e-20,
+       6.91e-20,   6.91e-20,   6.91e-20,   6.91e-20,
+       6.18e-20,   6.18e-20,   6.18e-20,   6.18e-20,
+     },
+     {
+       2.00e-39,   2.00e-39,   2.00e-39,   2.00e-39,
+       7.89e-39,   7.89e-39,   7.89e-39,   7.89e-39,
+       6.41e-39,   6.41e-39,   6.41e-39,   6.41e-39,
+       4.87e-40,   4.87e-40,   4.87e-40,   4.87e-40,
+     }
+   },
+ };
+ 
+ _Float16 TEST_MULOP_DATA(_Float16, nsub)[][4][N] =
+ {
+   {
      {      0.676f16 },
      {
            1.39f16,       1.39f16,       1.39f16,       1.39f16,
*************** _Float16 TEST_MULOP_DATA(_Float16, sub)[
*** 275,281 ****
    },
  };
  
! float TEST_MULOP_DATA(float, sub)[][4][N] =
  {
    {
    {8.51f },
--- 677,683 ----
    },
  };
  
! float TEST_MULOP_DATA(float, nsub)[][4][N] =
  {
    {
    {8.51f },
*************** float TEST_MULOP_DATA(float, sub)[][4][N
*** 342,348 ****
    },
  };
  
! double TEST_MULOP_DATA(double, sub)[][4][N] =
  {
    {
      { 80.54 },
--- 744,750 ----
    },
  };
  
! double TEST_MULOP_DATA(double, nsub)[][4][N] =
  {
    {
      { 80.54 },
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h	Sun Jun 15 22:33:15 2025
*************** main ()
*** 13,24 ****
  
    for (i = 0; i < sizeof (TEST_DATA) / sizeof (TEST_DATA[0]); i++)
      {
!       T x = TEST_DATA[i][0][0];
        T *in = TEST_DATA[i][1];
        T *out = TEST_DATA[i][2];
        T *expect = TEST_DATA[i][3];
  
!       TEST_RUN (T, NAME, out, in, x, N);
  
        for (k = 0; k < N; k++)
  	{
--- 13,24 ----
  
    for (i = 0; i < sizeof (TEST_DATA) / sizeof (TEST_DATA[0]); i++)
      {
!       T f = TEST_DATA[i][0][0];
        T *in = TEST_DATA[i][1];
        T *out = TEST_DATA[i][2];
        T *expect = TEST_DATA[i][3];
  
!       TEST_RUN (T, NAME, out, in, f, N);
  
        for (k = 0; k < N; k++)
  	{
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f16.c	Sun Jun 15 22:33:15 2025
***************
*** 7,13 ****
  #define T    _Float16
  #define NAME add
  
! DEF_VF_MULOP_CASE_0_WRAP(T, +, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
--- 7,13 ----
  #define T    _Float16
  #define NAME add
  
! DEF_VF_MULOP_CASE_0_WRAP (T, +, +, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f32.c	Sun Jun 15 22:33:15 2025
***************
*** 7,13 ****
  #define T    float
  #define NAME add
  
! DEF_VF_MULOP_CASE_0_WRAP(T, +, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
--- 7,13 ----
  #define T    float
  #define NAME add
  
! DEF_VF_MULOP_CASE_0_WRAP (T, +, +, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmadd-run-1-f64.c	Sun Jun 15 22:33:15 2025
***************
*** 7,13 ****
  #define T    double
  #define NAME add
  
! DEF_VF_MULOP_CASE_0_WRAP(T, +, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
--- 7,13 ----
  #define T    double
  #define NAME add
  
! DEF_VF_MULOP_CASE_0_WRAP (T, +, +, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f16.c	Sun Jun 15 22:33:15 2025
***************
*** 7,13 ****
  #define T    _Float16
  #define NAME sub
  
! DEF_VF_MULOP_CASE_0_WRAP(T, -, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
--- 7,13 ----
  #define T    _Float16
  #define NAME sub
  
! DEF_VF_MULOP_CASE_0_WRAP (T, -, +, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f32.c	Sun Jun 15 22:33:15 2025
***************
*** 7,13 ****
  #define T    float
  #define NAME sub
  
! DEF_VF_MULOP_CASE_0_WRAP(T, -, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
--- 7,13 ----
  #define T    float
  #define NAME sub
  
! DEF_VF_MULOP_CASE_0_WRAP (T, -, +, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmsub-run-1-f64.c	Sun Jun 15 22:33:15 2025
***************
*** 7,13 ****
  #define T    double
  #define NAME sub
  
! DEF_VF_MULOP_CASE_0_WRAP(T, -, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
--- 7,13 ----
  #define T    double
  #define NAME sub
  
! DEF_VF_MULOP_CASE_0_WRAP (T, -, +, NAME)
  
  #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
  #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f16.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_mulop.h"
+ #include "vf_mulop_data.h"
+ 
+ #define T    _Float16
+ #define NAME nadd
+ 
+ DEF_VF_MULOP_CASE_0_WRAP(T, +, -, NAME)
+ 
+ #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vf_mulop_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f32.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_mulop.h"
+ #include "vf_mulop_data.h"
+ 
+ #define T    float
+ #define NAME nadd
+ 
+ DEF_VF_MULOP_CASE_0_WRAP (T, +, -, NAME)
+ 
+ #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vf_mulop_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmadd-run-1-f64.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_mulop.h"
+ #include "vf_mulop_data.h"
+ 
+ #define T    double
+ #define NAME nadd
+ 
+ DEF_VF_MULOP_CASE_0_WRAP (T, +, -, NAME)
+ 
+ #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vf_mulop_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f16.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_mulop.h"
+ #include "vf_mulop_data.h"
+ 
+ #define T    _Float16
+ #define NAME nsub
+ 
+ DEF_VF_MULOP_CASE_0_WRAP (T, -, -, NAME)
+ 
+ #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vf_mulop_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f32.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_mulop.h"
+ #include "vf_mulop_data.h"
+ 
+ #define T    float
+ #define NAME nsub
+ 
+ DEF_VF_MULOP_CASE_0_WRAP (T, -, -, NAME)
+ 
+ #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vf_mulop_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfnmsub-run-1-f64.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_mulop.h"
+ #include "vf_mulop_data.h"
+ 
+ #define T    double
+ #define NAME nsub
+ 
+ DEF_VF_MULOP_CASE_0_WRAP (T, -, -, NAME)
+ 
+ #define TEST_DATA                        TEST_MULOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, x, n) RUN_VF_MULOP_CASE_0_WRAP(T, NAME, out, in, x, n)
+ 
+ #include "vf_mulop_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-times {vxor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmul.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vdiv.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vrem.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmax.vx} 2 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-times {vxor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmul.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vdiv.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vrem.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmax.vx} 2 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-times {vxor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmul.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vdiv.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vrem.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmax.vx} 2 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-times {vxor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vmul.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vdiv.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vrem.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmax.vx} 2 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-times {vor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vxor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vdivu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vremu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmaxu.vx} 2 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-times {vor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vxor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vdivu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vremu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmaxu.vx} 2 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-times {vor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vxor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vdivu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vremu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmaxu.vx} 2 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-times {vadd.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vsub.vx} 1 } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-times {vor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vxor.vx} 1 } } */
  /* { dg-final { scan-assembler-times {vdivu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vremu.vx} 1 } } */
+ /* { dg-final { scan-assembler-times {vmaxu.vx} 2 } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler-not {vdiv.vx} } } */
+ /* { dg-final { scan-assembler-not {vrem.vx} } } */
+ /* { dg-final { scan-assembler-not {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler-not {vdiv.vx} } } */
+ /* { dg-final { scan-assembler-not {vrem.vx} } } */
+ /* { dg-final { scan-assembler-not {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler-not {vdiv.vx} } } */
+ /* { dg-final { scan-assembler-not {vrem.vx} } } */
+ /* { dg-final { scan-assembler-not {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler-not {vdiv.vx} } } */
+ /* { dg-final { scan-assembler-not {vrem.vx} } } */
+ /* { dg-final { scan-assembler-not {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vor.vx} } } */
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vdivu.vx} } } */
+ /* { dg-final { scan-assembler-not {vremu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vor.vx} } } */
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vdivu.vx} } } */
+ /* { dg-final { scan-assembler-not {vremu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vor.vx} } } */
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vdivu.vx} } } */
+ /* { dg-final { scan-assembler-not {vremu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vor.vx} } } */
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vdivu.vx} } } */
+ /* { dg-final { scan-assembler-not {vremu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler-not {vdiv.vx} } } */
+ /* { dg-final { scan-assembler-not {vrem.vx} } } */
+ /* { dg-final { scan-assembler-not {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler-not {vdiv.vx} } } */
+ /* { dg-final { scan-assembler-not {vrem.vx} } } */
+ /* { dg-final { scan-assembler-not {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler-not {vdiv.vx} } } */
+ /* { dg-final { scan-assembler-not {vrem.vx} } } */
+ /* { dg-final { scan-assembler-not {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, *, mul)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler-not {vdiv.vx} } } */
+ /* { dg-final { scan-assembler-not {vrem.vx} } } */
+ /* { dg-final { scan-assembler-not {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vor.vx} } } */
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vdivu.vx} } } */
+ /* { dg-final { scan-assembler-not {vremu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vor.vx} } } */
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vdivu.vx} } } */
+ /* { dg-final { scan-assembler-not {vremu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vor.vx} } } */
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vdivu.vx} } } */
+ /* { dg-final { scan-assembler-not {vremu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_0_WRAP(T, &, and)
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_0_WRAP(T, |, or)
  DEF_VX_BINARY_CASE_0_WRAP(T, ^, xor)
  DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
+ DEF_VX_BINARY_CASE_0_WRAP(T, %, rem)
+ 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)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_0_WRAP(T, /, div)
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vor.vx} } } */
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vdivu.vx} } } */
+ /* { dg-final { scan-assembler-not {vremu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-i8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-4-u8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X8)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY_X8)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-i8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY_X8)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X8)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-5-u8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X8)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY_X8)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler-not {vdiv.vx} } } */
+ /* { dg-final { scan-assembler-not {vrem.vx} } } */
+ /* { dg-final { scan-assembler-not {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-i8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_B
*** 13,18 ****
--- 13,21 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, *, mul, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 22,24 ****
--- 25,29 ----
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vmul.vx} } } */
  /* { dg-final { scan-assembler {vdiv.vx} } } */
+ /* { dg-final { scan-assembler {vrem.vx} } } */
+ /* { dg-final { scan-assembler {vmax.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u16.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY_X8)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X8)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u32.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X4)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X4)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u64.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY)
  
  /* { dg-final { scan-assembler-not {vadd.vx} } } */
  /* { dg-final { scan-assembler-not {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler-not {vor.vx} } } */
  /* { dg-final { scan-assembler-not {vxor.vx} } } */
  /* { dg-final { scan-assembler-not {vdivu.vx} } } */
+ /* { dg-final { scan-assembler-not {vremu.vx} } } */
+ /* { dg-final { scan-assembler-not {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-6-u8.c	Sun Jun 15 22:33:15 2025
*************** DEF_VX_BINARY_CASE_1_WRAP(T, &, and, VX_
*** 12,17 ****
--- 12,20 ----
  DEF_VX_BINARY_CASE_1_WRAP(T, |, or, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, ^, xor, VX_BINARY_BODY_X16)
  DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_1_WRAP(T, %, rem, VX_BINARY_BODY_X16)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_0_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
+ DEF_VX_BINARY_CASE_3_WRAP(T, MAX_FUNC_1_WARP(T), max, VX_BINARY_FUNC_BODY_X8)
  
  /* { dg-final { scan-assembler {vadd.vx} } } */
  /* { dg-final { scan-assembler {vsub.vx} } } */
*************** DEF_VX_BINARY_CASE_1_WRAP(T, /, div, VX_
*** 20,22 ****
--- 23,27 ----
  /* { dg-final { scan-assembler {vor.vx} } } */
  /* { dg-final { scan-assembler {vxor.vx} } } */
  /* { dg-final { scan-assembler {vdivu.vx} } } */
+ /* { dg-final { scan-assembler {vremu.vx} } } */
+ /* { dg-final { scan-assembler {vmaxu.vx} } } */
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h	Sun Jun 15 22:33:15 2025
*************** test_vx_binary_reverse_##NAME##_##T##_ca
*** 127,130 ****
--- 127,233 ----
  #define DEF_VX_BINARY_REVERSE_CASE_1_WRAP(T, OP, NAME, BODY) \
    DEF_VX_BINARY_REVERSE_CASE_1(T, OP, NAME, BODY)
  
+ #define DEF_MAX_0(T)        \
+ static inline T             \
+ test_##T##_max_0 (T a, T b) \
+ {                           \
+   return a > b ? a : b;     \
+ }
+ 
+ #define DEF_MAX_1(T)        \
+ static inline T             \
+ test_##T##_max_1 (T a, T b) \
+ {                           \
+   return a >= b ? a : b;    \
+ }
+ 
+ DEF_MAX_0(int8_t)
+ DEF_MAX_0(int16_t)
+ DEF_MAX_0(int32_t)
+ DEF_MAX_0(int64_t)
+ 
+ DEF_MAX_1(int8_t)
+ DEF_MAX_1(int16_t)
+ DEF_MAX_1(int32_t)
+ DEF_MAX_1(int64_t)
+ 
+ DEF_MAX_0(uint8_t)
+ DEF_MAX_0(uint16_t)
+ DEF_MAX_0(uint32_t)
+ DEF_MAX_0(uint64_t)
+ 
+ DEF_MAX_1(uint8_t)
+ DEF_MAX_1(uint16_t)
+ DEF_MAX_1(uint32_t)
+ DEF_MAX_1(uint64_t)
+ 
+ #define MAX_FUNC_0(T) test_##T##_max_0
+ #define MAX_FUNC_0_WARP(T) MAX_FUNC_0(T)
+ 
+ #define MAX_FUNC_1(T) test_##T##_max_1
+ #define MAX_FUNC_1_WARP(T) MAX_FUNC_1(T)
+ 
+ #define DEF_VX_BINARY_CASE_2(T, FUNC, NAME)                      \
+ void                                                             \
+ test_vx_binary_##NAME##_##FUNC##_##T##_case_2 (T * restrict out, \
+ 					       T * restrict in,  \
+ 					       T x, unsigned n)  \
+ {                                                                \
+   for (unsigned i = 0; i < n; i++)                               \
+     out[i] = FUNC (in[i], x);                                    \
+ }
+ #define DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, NAME) \
+   DEF_VX_BINARY_CASE_2(T, FUNC, NAME)
+ #define RUN_VX_BINARY_CASE_2(T, NAME, FUNC, out, in, x, n) \
+   test_vx_binary_##NAME##_##FUNC##_##T##_case_2(out, in, x, n)
+ #define RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2(T, NAME, FUNC, out, in, x, n)
+ 
+ #define DEF_VX_BINARY_CASE_3(T, FUNC, NAME, BODY)                \
+ void                                                             \
+ test_vx_binary_##NAME##_##FUNC##_##T##_case_3 (T * restrict out, \
+ 					       T * restrict in,  \
+ 					       T x, unsigned n)  \
+ {                                                                \
+   unsigned k = 0;                                                \
+   T tmp = x + 3;                                                 \
+                                                                  \
+   while (k < n)                                                  \
+     {                                                            \
+       tmp = tmp ^ 0x82;                                          \
+       BODY(FUNC)                                                 \
+     }                                                            \
+ }
+ #define DEF_VX_BINARY_CASE_3_WRAP(T, FUNC, NAME, BODY) \
+   DEF_VX_BINARY_CASE_3(T, FUNC, NAME, BODY)
+ 
+ #define VX_BINARY_FUNC_BODY(func)     \
+   out[k + 0] = func (in[k + 0], tmp); \
+   out[k + 1] = func (in[k + 1], tmp); \
+   k += 2;
+ 
+ #define VX_BINARY_FUNC_BODY_X4(op) \
+   VX_BINARY_FUNC_BODY(op)          \
+   VX_BINARY_FUNC_BODY(op)
+ 
+ #define VX_BINARY_FUNC_BODY_X8(op) \
+   VX_BINARY_FUNC_BODY_X4(op)       \
+   VX_BINARY_FUNC_BODY_X4(op)
+ 
+ #define VX_BINARY_FUNC_BODY_X16(op) \
+   VX_BINARY_FUNC_BODY_X8(op)        \
+   VX_BINARY_FUNC_BODY_X8(op)
+ 
+ #define VX_BINARY_FUNC_BODY_X32(op) \
+   VX_BINARY_FUNC_BODY_X16(op)       \
+   VX_BINARY_FUNC_BODY_X16(op)
+ 
+ #define VX_BINARY_FUNC_BODY_X64(op) \
+   VX_BINARY_FUNC_BODY_X32(op)       \
+   VX_BINARY_FUNC_BODY_X32(op)
+ 
+ #define VX_BINARY_FUNC_BODY_X128(op) \
+   VX_BINARY_FUNC_BODY_X64(op)        \
+   VX_BINARY_FUNC_BODY_X64(op)
+ 
  #endif
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h	Sun Jun 15 22:33:15 2025
*************** uint64_t TEST_BINARY_DATA(uint64_t, div)
*** 2946,2949 ****
--- 2946,3733 ----
    },
  };
  
+ int8_t TEST_BINARY_DATA(int8_t, rem)[][3][N] =
+ {
+   {
+     { 2 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { 127 },
+     {
+        127,  127,  127,  127,
+         -1,   -1,   -1,   -1,
+       -128, -128, -128, -128,
+         -2,   -2,   -2,   -2,
+     },
+     {
+          0,    0,    0,    0,
+         -1,   -1,   -1,   -1,
+         -1,   -1,   -1,   -1,
+         -2,   -2,   -2,   -2,
+     },
+   },
+   {
+     { -128 },
+     {
+       -128, -128, -128, -128,
+          1,    1,    1,    1,
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+     },
+     {
+          0,    0,    0,    0,
+          1,    1,    1,    1,
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+     },
+   },
+ };
+ 
+ int16_t TEST_BINARY_DATA(int16_t, rem)[][3][N] =
+ {
+   {
+     { 2 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { 32767 },
+     {
+        32767,  32767,  32767,  32767,
+           -1,     -1,     -1,     -1,
+       -32768, -32768, -32768, -32768,
+           -2,     -2,     -2,     -2,
+     },
+     {
+          0,    0,    0,    0,
+         -1,   -1,   -1,   -1,
+         -1,   -1,   -1,   -1,
+         -2,   -2,   -2,   -2,
+     },
+   },
+   {
+     { -32768 },
+     {
+       -32768, -32768, -32768, -32768,
+            1,      1,      1,      1,
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+     },
+     {
+            0,      0,      0,      0,
+            1,      1,      1,      1,
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+     },
+   },
+ };
+ 
+ int32_t TEST_BINARY_DATA(int32_t, rem)[][3][N] =
+ {
+   {
+     { 2 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { 2147483647 },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+                -1,          -1,          -1,          -1,
+       -2147483648, -2147483648, -2147483648, -2147483648,
+                -2,          -2,          -2,          -2,
+     },
+     {
+          0,    0,    0,    0,
+         -1,   -1,   -1,   -1,
+         -1,   -1,   -1,   -1,
+         -2,   -2,   -2,   -2,
+     },
+   },
+   {
+     { -2147483648 },
+     {
+       -2147483648, -2147483648, -2147483648, -2147483648,
+                 1,           1,           1,           1,
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+     },
+     {
+                 0,           0,           0,           0,
+                 1,           1,           1,           1,
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+     },
+   },
+ };
+ 
+ int64_t TEST_BINARY_DATA(int64_t, rem)[][3][N] =
+ {
+   {
+     { 2 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { 9223372036854775807ll },
+     {
+         9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,
+                            -1,                      -1,                      -1,                      -1,
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+                            -2,                      -2,                      -2,                      -2,
+     },
+     {
+          0,    0,    0,    0,
+         -1,   -1,   -1,   -1,
+         -1,   -1,   -1,   -1,
+         -2,   -2,   -2,   -2,
+     },
+   },
+   {
+     { -9223372036854775808ull },
+     {
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+                             1,                       1,                       1,                       1,
+         9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,
+                             2,                       2,                       2,                       2,
+     },
+     {
+                            0,                      0,                      0,                      0,
+                            1,                      1,                      1,                      1,
+        9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,
+                            2,                      2,                      2,                      2,
+     },
+   },
+ };
+ 
+ uint8_t TEST_BINARY_DATA(uint8_t, rem)[][3][N] =
+ {
+   {
+     { 2 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        8,  8,  8,  8,
+        7,  7,  7,  7,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { 127 },
+     {
+        127,  127,  127,  127,
+          1,    1,    1,    1,
+        128,  128,  128,  128,
+          2,    2,    2,    2,
+     },
+     {
+          0,    0,    0,    0,
+          1,    1,    1,    1,
+          1,    1,    1,    1,
+          2,    2,    2,    2,
+     },
+   },
+   {
+     {  128 },
+     {
+        128,  128,  128,  128,
+        255,  255,  255,  255,
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+     },
+     {
+          0,    0,    0,    0,
+        127,  127,  127,  127,
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+     },
+   },
+ };
+ 
+ uint16_t TEST_BINARY_DATA(uint16_t, rem)[][3][N] =
+ {
+   {
+     { 2 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        8,  8,  8,  8,
+        7,  7,  7,  7,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { 32767 },
+     {
+        32767,  32767,  32767,  32767,
+            1,      1,      1,      1,
+        32768,  32768,  32768,  32768,
+            2,      2,      2,      2,
+     },
+     {
+          0,    0,    0,    0,
+          1,    1,    1,    1,
+          1,    1,    1,    1,
+          2,    2,    2,    2,
+     },
+   },
+   {
+     {  32768 },
+     {
+        32768,  32768,  32768,  32768,
+        65535,  65535,  65535,  65535,
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+     },
+     {
+            0,      0,      0,      0,
+        32767,  32767,  32767,  32767,
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+     },
+   },
+ };
+ 
+ uint32_t TEST_BINARY_DATA(uint32_t, rem)[][3][N] =
+ {
+   {
+     { 2 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        8,  8,  8,  8,
+        7,  7,  7,  7,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { 2147483647 },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 1,           1,           1,           1,
+        2147483648,  2147483648,  2147483648,  2147483648,
+                 2,           2,           2,           2,
+     },
+     {
+          0,    0,    0,    0,
+          1,    1,    1,    1,
+          1,    1,    1,    1,
+          2,    2,    2,    2,
+     },
+   },
+   {
+     {  2147483648 },
+     {
+        2147483648,  2147483648,  2147483648,  2147483648,
+        4294967295,  4294967295,  4294967295,  4294967295,
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+     },
+     {
+                 0,           0,           0,           0,
+        2147483647,  2147483647,  2147483647,  2147483647,
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+     },
+   },
+ };
+ 
+ uint64_t TEST_BINARY_DATA(uint64_t, rem)[][3][N] =
+ {
+   {
+     { 2 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        8,  8,  8,  8,
+        7,  7,  7,  7,
+     },
+     {
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        1,  1,  1,  1,
+     },
+   },
+   {
+     { 9223372036854775807ull },
+     {
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+                             1,                       1,                       1,                       1,
+        9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,
+                             2,                       2,                       2,                       2,
+     },
+     {
+          0,    0,    0,    0,
+          1,    1,    1,    1,
+          1,    1,    1,    1,
+          2,    2,    2,    2,
+     },
+   },
+   {
+     {  9223372036854775808ull },
+     {
+         9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,
+        18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+         9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+                              2,                       2,                       2,                       2,
+     },
+     {
+                             0,                       0,                       0,                       0,
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+                             2,                       2,                       2,                       2,
+     },
+   },
+ };
+ 
+ int8_t TEST_BINARY_DATA(int8_t, max)[][3][N] =
+ {
+   {
+     { 0 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { 127 },
+     {
+        127,  127,  127,  127,
+         -1,   -1,   -1,   -1,
+       -128, -128, -128, -128,
+         -2,   -2,   -2,   -2,
+     },
+     {
+        127,  127,  127,  127,
+        127,  127,  127,  127,
+        127,  127,  127,  127,
+        127,  127,  127,  127,
+     },
+   },
+   {
+     { -128 },
+     {
+       -128, -128, -128, -128,
+          1,    1,    1,    1,
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+     },
+     {
+       -128, -128, -128, -128,
+          1,    1,    1,    1,
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+     },
+   },
+ };
+ 
+ int16_t TEST_BINARY_DATA(int16_t, max)[][3][N] =
+ {
+   {
+     { 0 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { 32767 },
+     {
+        32767,  32767,  32767,  32767,
+           -1,     -1,     -1,     -1,
+       -32768, -32768, -32768, -32768,
+           -2,     -2,     -2,     -2,
+     },
+     {
+        32767,  32767,  32767,  32767,
+        32767,  32767,  32767,  32767,
+        32767,  32767,  32767,  32767,
+        32767,  32767,  32767,  32767,
+     },
+   },
+   {
+     { -32768 },
+     {
+       -32768, -32768, -32768, -32768,
+            1,      1,      1,      1,
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+     },
+     {
+       -32768, -32768, -32768, -32768,
+            1,      1,      1,      1,
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+     },
+   },
+ };
+ 
+ int32_t TEST_BINARY_DATA(int32_t, max)[][3][N] =
+ {
+   {
+     { 0 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { 2147483647 },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+                -1,          -1,          -1,          -1,
+       -2147483648, -2147483648, -2147483648, -2147483648,
+                -2,          -2,          -2,          -2,
+     },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+        2147483647,  2147483647,  2147483647,  2147483647,
+        2147483647,  2147483647,  2147483647,  2147483647,
+        2147483647,  2147483647,  2147483647,  2147483647,
+     },
+   },
+   {
+     { -2147483648 },
+     {
+       -2147483648, -2147483648, -2147483648, -2147483648,
+                 1,           1,           1,           1,
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+     },
+     {
+       -2147483648, -2147483648, -2147483648, -2147483648,
+                 1,           1,           1,           1,
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+     },
+   },
+ };
+ 
+ int64_t TEST_BINARY_DATA(int64_t, max)[][3][N] =
+ {
+   {
+     { 0 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+       -1, -1, -1, -1,
+       -2, -2, -2, -2,
+     },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        0,  0,  0,  0,
+     },
+   },
+   {
+     { 9223372036854775807ll },
+     {
+         9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,
+                            -1,                      -1,                      -1,                      -1,
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+                            -2,                      -2,                      -2,                      -2,
+     },
+     {
+        9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,
+        9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,
+        9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,
+        9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,  9223372036854775807ll,
+     },
+   },
+   {
+     { -9223372036854775808ull },
+     {
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+                             1,                       1,                       1,                       1,
+         9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,
+                             2,                       2,                       2,                       2,
+     },
+     {
+       -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull, -9223372036854775808ull,
+                             1,                       1,                       1,                       1,
+         9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,   9223372036854775807ll,
+                             2,                       2,                       2,                       2,
+     },
+   },
+ };
+ 
+ uint8_t TEST_BINARY_DATA(uint8_t, max)[][3][N] =
+ {
+   {
+     { 0 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+   },
+   {
+     { 127 },
+     {
+        127,  127,  127,  127,
+        128,  128,  128,  128,
+        255,  255,  255,  255,
+          1,    1,    1,    1,
+     },
+     {
+        127,  127,  127,  127,
+        128,  128,  128,  128,
+        255,  255,  255,  255,
+        127,  127,  127,  127,
+     },
+   },
+   {
+     { 254 },
+     {
+        128,  128,  128,  128,
+        255,  255,  255,  255,
+        127,  127,  127,  127,
+          2,    2,    2,    2,
+     },
+     {
+        254,  254,  254,  254,
+        255,  255,  255,  255,
+        254,  254,  254,  254,
+        254,  254,  254,  254,
+     },
+   },
+ };
+ 
+ uint16_t TEST_BINARY_DATA(uint16_t, max)[][3][N] =
+ {
+   {
+     { 0 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+   },
+   {
+     { 32767 },
+     {
+        32767,  32767,  32767,  32767,
+        32768,  32768,  32768,  32768,
+        65535,  65535,  65535,  65535,
+            1,      1,      1,      1,
+     },
+     {
+        32767,  32767,  32767,  32767,
+        32768,  32768,  32768,  32768,
+        65535,  65535,  65535,  65535,
+        32767,  32767,  32767,  32767,
+     },
+   },
+   {
+     { 65534 },
+     {
+        32768,  32768,  32768,  32768,
+        65535,  65535,  65535,  65535,
+        32767,  32767,  32767,  32767,
+            2,      2,      2,      2,
+     },
+     {
+        65534,  65534,  65534,  65534,
+        65535,  65535,  65535,  65535,
+        65534,  65534,  65534,  65534,
+        65534,  65534,  65534,  65534,
+     },
+   },
+ };
+ 
+ uint32_t TEST_BINARY_DATA(uint32_t, max)[][3][N] =
+ {
+   {
+     { 0 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+   },
+   {
+     { 2147483647 },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+        2147483648,  2147483648,  2147483648,  2147483648,
+        4294967295,  4294967295,  4294967295,  4294967295,
+                 1,           1,           1,           1,
+     },
+     {
+        2147483647,  2147483647,  2147483647,  2147483647,
+        2147483648,  2147483648,  2147483648,  2147483648,
+        4294967295,  4294967295,  4294967295,  4294967295,
+        2147483647,  2147483647,  2147483647,  2147483647,
+     },
+   },
+   {
+     { 4294967294 },
+     {
+        2147483648,  2147483648,  2147483648,  2147483648,
+        4294967295,  4294967295,  4294967295,  4294967295,
+        2147483647,  2147483647,  2147483647,  2147483647,
+                 2,           2,           2,           2,
+     },
+     {
+        4294967294,  4294967294,  4294967294,  4294967294,
+        4294967295,  4294967295,  4294967295,  4294967295,
+        4294967294,  4294967294,  4294967294,  4294967294,
+        4294967294,  4294967294,  4294967294,  4294967294,
+     },
+   },
+ };
+ 
+ uint64_t TEST_BINARY_DATA(uint64_t, max)[][3][N] =
+ {
+   {
+     { 0 },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+     {
+        2,  2,  2,  2,
+        1,  1,  1,  1,
+        0,  0,  0,  0,
+        4,  4,  4,  4,
+     },
+   },
+   {
+     { 9223372036854775807ull },
+     {
+         9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+         9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,
+        18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+                              1,                       1,                       1,                       1,
+     },
+     {
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+        9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,
+       18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+     },
+   },
+   {
+     { 18446744073709551614ull },
+     {
+        9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,  9223372036854775808ull,
+       18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull, 18446744073709551615ull,
+        9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,  9223372036854775807ull,
+                             2,                       2,                       2,                       2,
+     },
+     {
+        18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,
+        18446744073709551615ull,  18446744073709551615ull,  18446744073709551615ull,  18446744073709551615ull,
+        18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,
+        18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,  18446744073709551614ull,
+     },
+   },
+ };
+ 
  #endif
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i16.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_0_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i32.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_0_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i64.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_0_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-i8.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_0_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u16.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_0_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u32.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_0_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u64.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_0_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-1-u8.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_0_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i16.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_1_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i32.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_1_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i64.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_1_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-i8.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_1_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u16.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_1_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u32.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_1_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u64.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_1_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vmax-run-2-u8.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { 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       max
+ #define FUNC       MAX_FUNC_1_WARP(T)
+ #define TEST_DATA  TEST_BINARY_DATA_WRAP(T, NAME)
+ 
+ DEF_VX_BINARY_CASE_2_WRAP(T, FUNC, max)
+ 
+ #define TEST_RUN(T, NAME, out, in, x, n) \
+   RUN_VX_BINARY_CASE_2_WRAP(T, NAME, FUNC, out, in, x, n)
+ 
+ #include "vx_binary_run.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i16.c	Sun Jun 15 22:33:15 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 rem
+ 
+ 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-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i32.c	Sun Jun 15 22:33:15 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 rem
+ 
+ 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-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i64.c	Sun Jun 15 22:33:15 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 rem
+ 
+ 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-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-i8.c	Sun Jun 15 22:33:15 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 rem
+ 
+ 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-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u16.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u16.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u16.c	Sun Jun 15 22:33:15 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 rem
+ 
+ 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-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u32.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u32.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u32.c	Sun Jun 15 22:33:15 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 rem
+ 
+ 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-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u64.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u64.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u64.c	Sun Jun 15 22:33:15 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 rem
+ 
+ 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-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u8.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u8.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx_vrem-run-1-u8.c	Sun Jun 15 22:33:15 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 rem
+ 
+ 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-20250608/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr117974.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr117974.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr117974.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr117974.c	Sun Jun 15 22:33:15 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl256b -mabi=lp64d -mrvv-vector-bits=zvl -Ofast" } */
+ 
+ float g(float q[], int N){
+     float dqnorm = 0.0;
+ 
+     #pragma GCC unroll 4
+ 
+     for (int i=0; i < N; i++) {
+         dqnorm = dqnorm + q[i] * q[i];
+     }
+     return dqnorm;
+ }
+ 
+ /* need slightly different test for when -funroll-loops is enabled to keep
+    test output stable.  Otherwise test may be flakey.  */
+ /* { dg-final { scan-assembler-times {beq\s+[a-x0-9]+,zero,.L12\s+vsetvli} 3 { target { no-opts "-funroll-loops" } } } } */
+ /* { dg-final { scan-assembler-times {beq\s+[a-x0-9]+,[a-x0-9]+,.L12\s+vsetvli} 3 { target { any-opts "-funroll-loops" } } } } */
+ 
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/vtype-call-clobbered.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/vtype-call-clobbered.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/rvv/vtype-call-clobbered.c	Sun Jun  8 22:32:31 2025
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/rvv/vtype-call-clobbered.c	Sun Jun 15 22:33:15 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O2" } */
  /* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" } } */
  
  #include "riscv_vector.h"
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64d -O2" } */
  /* { dg-skip-if "" { *-*-* } { "-O0" "-Og" "-Os" "-Oz" } } */
  
  #include "riscv_vector.h"
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gcc.target/riscv/ventana-16122.c gcc-16-20250615/gcc/testsuite/gcc.target/riscv/ventana-16122.c
*** gcc-16-20250608/gcc/testsuite/gcc.target/riscv/ventana-16122.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gcc.target/riscv/ventana-16122.c	Sun Jun 15 22:33:25 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile { target { rv64 } } } */
+ 
+ extern void NG (void);
+ typedef signed char int8_t;
+ typedef signed short int16_t;
+ typedef signed int int32_t;
+ void f74(void) {
+     	int16_t x309 = 0x7fff;
+ 	volatile int32_t x310 = 0x7fffffff;
+ 	int8_t x311 = 59;
+ 	int16_t x312 = -0x8000;
+ 	static volatile int32_t t74 = 614992577;
+ 
+     t74 = (x309==((x310^x311)%x312));
+ 
+     if (t74 != 0) { NG(); } else { ; }
+ 	
+ }
+ 
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gm2/pim/pass/forarray.mod gcc-16-20250615/gcc/testsuite/gm2/pim/pass/forarray.mod
*** gcc-16-20250608/gcc/testsuite/gm2/pim/pass/forarray.mod	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gm2/pim/pass/forarray.mod	Sun Jun 15 22:33:34 2025
***************
*** 0 ****
--- 1,21 ----
+ MODULE forarray ;
+ 
+ 
+ VAR
+    array: ARRAY [0..10] OF CARDINAL ;
+ 
+ 
+ PROCEDURE Init ;
+ VAR
+    i, n: CARDINAL ;
+ BEGIN
+    array[0] := 10 ;
+    n := 0 ;
+    FOR i := 1 TO array[n] DO
+    END
+ END Init ;
+ 
+ 
+ BEGIN
+    Init
+ END forarray.
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gm2.dg/doc/examples/run/pass/doc-examples-run-pass.exp gcc-16-20250615/gcc/testsuite/gm2.dg/doc/examples/run/pass/doc-examples-run-pass.exp
*** gcc-16-20250608/gcc/testsuite/gm2.dg/doc/examples/run/pass/doc-examples-run-pass.exp	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gm2.dg/doc/examples/run/pass/doc-examples-run-pass.exp	Sun Jun 15 22:33:33 2025
***************
*** 0 ****
--- 1,17 ----
+ # Compile tests, no torture testing.
+ #
+ # These tests should all pass.
+ 
+ # Load support procs.
+ load_lib gm2-dg.exp
+ 
+ gm2_init_pim4 $srcdir/$subdir -masm=intel
+ 
+ # Initialize `dg'.
+ dg-init
+ 
+ # Main loop.
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] "" ""
+ 
+ # All done.
+ dg-finish
diff -Nrcpad gcc-16-20250608/gcc/testsuite/gm2.dg/doc/examples/run/pass/exampleadd2.mod gcc-16-20250615/gcc/testsuite/gm2.dg/doc/examples/run/pass/exampleadd2.mod
*** gcc-16-20250608/gcc/testsuite/gm2.dg/doc/examples/run/pass/exampleadd2.mod	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/gcc/testsuite/gm2.dg/doc/examples/run/pass/exampleadd2.mod	Sun Jun 15 22:33:33 2025
***************
*** 0 ****
--- 1,35 ----
+ (* { dg-do assemble { target { x86_64-*-gnu* } } } *)
+ (* { dg-options "-masm=intel" } *)
+ (* { dg-do run { target x86_64-*-gnu* } } *)
+ 
+ MODULE exampleadd2 ;
+ 
+ FROM libc IMPORT printf, exit ;
+ 
+ 
+ PROCEDURE Example (foo, bar: LONGCARD) : CARDINAL ;
+ VAR
+    myout: LONGCARD ;
+ BEGIN
+    ASM VOLATILE (
+     "mov rax, %[left]; add rax, %[right]; mov %[output], rax;"
+       : [output] "=rm" (myout)                  (* outputs *)
+       : [left] "rm" (foo), [right] "rm" (bar)   (* inputs  *)
+       : "rax") ;                                (* we trash *)
+    RETURN( myout )
+ END Example ;
+ 
+ VAR
+    a, b, c: CARDINAL ;
+ BEGIN
+    a := 1 ;
+    b := 2 ;
+    c := Example (a, b) ;
+    IF c = 3
+    THEN
+       printf ("success result from function is %d\n", c) ;
+    ELSE
+       printf ("example failed to return 3, seen %d\n" , c) ;
+       exit (1)
+    END
+ END exampleadd2.
\ No newline at end of file
diff -Nrcpad gcc-16-20250608/gcc/testsuite/lib/htmltest.py gcc-16-20250615/gcc/testsuite/lib/htmltest.py
*** gcc-16-20250608/gcc/testsuite/lib/htmltest.py	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/testsuite/lib/htmltest.py	Sun Jun 15 22:33:45 2025
*************** def get_diag_by_index(html_tree, index):
*** 83,96 ****
      assert diag_list is not None
      assert_class(diag_list, 'gcc-diagnostic-list')
  
!     diags = diag_list.findall('xhtml:div', ns)
!     diag = diags[index]
!     assert_class(diag, 'gcc-diagnostic')
      return diag
  
  def get_message_within_diag(diag_element):
!     msg = diag_element.find('xhtml:span', ns)
!     assert_class(msg, 'gcc-message')
      return msg
  
  def get_locus_within_diag(diag_element):
--- 83,93 ----
      assert diag_list is not None
      assert_class(diag_list, 'gcc-diagnostic-list')
  
!     diag = diag_list.find(f"xhtml:div[@id='gcc-diag-{index}']", ns)
      return diag
  
  def get_message_within_diag(diag_element):
!     msg = diag_element.find("xhtml:div[@class='gcc-message']", ns)
      return msg
  
  def get_locus_within_diag(diag_element):
diff -Nrcpad gcc-16-20250608/gcc/tree-cfg.cc gcc-16-20250615/gcc/tree-cfg.cc
*** gcc-16-20250608/gcc/tree-cfg.cc	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/tree-cfg.cc	Sun Jun 15 22:33:47 2025
*************** gimple_verify_flow_info (void)
*** 5757,5762 ****
--- 5757,5768 ----
        error ("probability of edge from entry block not initialized");
        err = true;
      }
+   if (!EXIT_BLOCK_PTR_FOR_FN (cfun)
+ 	->count.compatible_p (ENTRY_BLOCK_PTR_FOR_FN (cfun)->count))
+     {
+       error ("exit block count is not compoatible with entry block count");
+       err = true;
+     }
  
  
    FOR_EACH_BB_FN (bb, cfun)
*************** gimple_verify_flow_info (void)
*** 5780,5785 ****
--- 5786,5797 ----
  		err = true;
  	      }
          }
+       if (!bb->count.compatible_p (ENTRY_BLOCK_PTR_FOR_FN (cfun)->count))
+ 	{
+ 	  error ("count of bb %d is not compoatible with entry block count",
+ 		 bb->index);
+ 	  err = true;
+ 	}
  
        /* Skip labels on the start of basic block.  */
        for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
diff -Nrcpad gcc-16-20250608/gcc/tree-logical-location.cc gcc-16-20250615/gcc/tree-logical-location.cc
*** gcc-16-20250608/gcc/tree-logical-location.cc	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/tree-logical-location.cc	Sun Jun 15 22:33:47 2025
*************** tree_logical_location_manager::get_kind
*** 90,107 ****
    switch (TREE_CODE (node))
      {
      default:
!       return LOGICAL_LOCATION_KIND_UNKNOWN;
      case FUNCTION_DECL:
!       return LOGICAL_LOCATION_KIND_FUNCTION;
      case PARM_DECL:
!       return LOGICAL_LOCATION_KIND_PARAMETER;
      case VAR_DECL:
!       return LOGICAL_LOCATION_KIND_VARIABLE;
      case NAMESPACE_DECL:
!       return LOGICAL_LOCATION_KIND_NAMESPACE;
  
      case RECORD_TYPE:
!       return LOGICAL_LOCATION_KIND_TYPE;
      }
  }
  
--- 90,107 ----
    switch (TREE_CODE (node))
      {
      default:
!       return logical_location_kind::unknown;
      case FUNCTION_DECL:
!       return logical_location_kind::function;
      case PARM_DECL:
!       return logical_location_kind::parameter;
      case VAR_DECL:
!       return logical_location_kind::variable;
      case NAMESPACE_DECL:
!       return logical_location_kind::namespace_;
  
      case RECORD_TYPE:
!       return logical_location_kind::type;
      }
  }
  
diff -Nrcpad gcc-16-20250608/gcc/tree-outof-ssa.cc gcc-16-20250615/gcc/tree-outof-ssa.cc
*** gcc-16-20250608/gcc/tree-outof-ssa.cc	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/tree-outof-ssa.cc	Sun Jun 15 22:33:47 2025
*************** get_undefined_value_partitions (var_map
*** 1005,1013 ****
  }
  
  /* Given the out-of-ssa info object SA (with prepared partitions)
!    eliminate all phi nodes in all basic blocks.  Afterwards no
!    basic block will have phi nodes anymore and there are possibly
!    some RTL instructions inserted on edges.  */
  
  void
  expand_phi_nodes (struct ssaexpand *sa)
--- 1005,1012 ----
  }
  
  /* Given the out-of-ssa info object SA (with prepared partitions)
!    eliminate all phi nodes in all basic blocks.  Afterwards there
!    are possibly some RTL instructions inserted on edges.  */
  
  void
  expand_phi_nodes (struct ssaexpand *sa)
*************** expand_phi_nodes (struct ssaexpand *sa)
*** 1023,1029 ****
  	edge_iterator ei;
  	FOR_EACH_EDGE (e, ei, bb->preds)
  	  eliminate_phi (e, &g);
- 	set_phi_nodes (bb, NULL);
  	/* We can't redirect EH edges in RTL land, so we need to do this
  	   here.  Redirection happens only when splitting is necessary,
  	   which it is only for critical edges, normally.  For EH edges
--- 1022,1027 ----
diff -Nrcpad gcc-16-20250608/gcc/tree-ssa-math-opts.cc gcc-16-20250615/gcc/tree-ssa-math-opts.cc
*** gcc-16-20250608/gcc/tree-ssa-math-opts.cc	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/tree-ssa-math-opts.cc	Sun Jun 15 22:33:47 2025
*************** pass_cse_reciprocals::execute (function
*** 1053,1058 ****
--- 1053,1059 ----
  		    continue;
  
  		  gimple_replace_ssa_lhs (call, arg1);
+ 		  reset_flow_sensitive_info (arg1);
  		  if (gimple_call_internal_p (call) != (ifn != IFN_LAST))
  		    {
  		      auto_vec<tree, 4> args;
diff -Nrcpad gcc-16-20250608/gcc/tree-vect-loop.cc gcc-16-20250615/gcc/tree-vect-loop.cc
*** gcc-16-20250608/gcc/tree-vect-loop.cc	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/tree-vect-loop.cc	Sun Jun 15 22:33:47 2025
*************** vect_estimate_min_profitable_iters (loop
*** 4646,4652 ****
       TODO: Consider assigning different costs to different scalar
       statements.  */
  
!   scalar_single_iter_cost = loop_vinfo->scalar_costs->total_cost ();
  
    /* Add additional cost for the peeled instructions in prologue and epilogue
       loop.  (For fully-masked loops there will be no peeling.)
--- 4646,4653 ----
       TODO: Consider assigning different costs to different scalar
       statements.  */
  
!   scalar_single_iter_cost = (loop_vinfo->scalar_costs->total_cost ()
! 			     * param_vect_scalar_cost_multiplier) / 100;
  
    /* Add additional cost for the peeled instructions in prologue and epilogue
       loop.  (For fully-masked loops there will be no peeling.)
diff -Nrcpad gcc-16-20250608/gcc/tree.cc gcc-16-20250615/gcc/tree.cc
*** gcc-16-20250608/gcc/tree.cc	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/tree.cc	Sun Jun 15 22:33:47 2025
*************** verify_type (const_tree t)
*** 14613,14622 ****
  
  /* Return 1 if ARG interpreted as signed in its precision is known to be
     always non-negative or 2 if ARG is known to be always negative, or 3 if
!    ARG may be non-negative or negative.  */
  
  int
! get_range_pos_neg (tree arg)
  {
    if (arg == error_mark_node)
      return 3;
--- 14613,14623 ----
  
  /* Return 1 if ARG interpreted as signed in its precision is known to be
     always non-negative or 2 if ARG is known to be always negative, or 3 if
!    ARG may be non-negative or negative.  STMT if specified is the statement
!    on which it is being tested.  */
  
  int
! get_range_pos_neg (tree arg, gimple *stmt)
  {
    if (arg == error_mark_node)
      return 3;
*************** get_range_pos_neg (tree arg)
*** 14649,14655 ****
    if (TREE_CODE (arg) != SSA_NAME)
      return 3;
    int_range_max r;
!   while (!get_global_range_query ()->range_of_expr (r, arg)
  	 || r.undefined_p () || r.varying_p ())
      {
        gimple *g = SSA_NAME_DEF_STMT (arg);
--- 14650,14656 ----
    if (TREE_CODE (arg) != SSA_NAME)
      return 3;
    int_range_max r;
!   while (!get_range_query (cfun)->range_of_expr (r, arg, stmt)
  	 || r.undefined_p () || r.varying_p ())
      {
        gimple *g = SSA_NAME_DEF_STMT (arg);
diff -Nrcpad gcc-16-20250608/gcc/tree.h gcc-16-20250615/gcc/tree.h
*** gcc-16-20250608/gcc/tree.h	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/tree.h	Sun Jun 15 22:33:47 2025
*************** extern bool gimple_canonical_types_compa
*** 5900,5906 ****
  						 bool trust_type_canonical = true);
  extern bool type_with_interoperable_signedness (const_tree);
  extern bitmap get_nonnull_args (const_tree);
! extern int get_range_pos_neg (tree);
  
  /* Return true for a valid pair of new and delete operators.  */
  extern bool valid_new_delete_pair_p (tree, tree, bool * = NULL);
--- 5900,5906 ----
  						 bool trust_type_canonical = true);
  extern bool type_with_interoperable_signedness (const_tree);
  extern bitmap get_nonnull_args (const_tree);
! extern int get_range_pos_neg (tree, gimple * = NULL);
  
  /* Return true for a valid pair of new and delete operators.  */
  extern bool valid_new_delete_pair_p (tree, tree, bool * = NULL);
diff -Nrcpad gcc-16-20250608/gcc/value-range.cc gcc-16-20250615/gcc/value-range.cc
*** gcc-16-20250608/gcc/value-range.cc	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/value-range.cc	Sun Jun 15 22:33:47 2025
*************** irange::set_range_from_bitmask ()
*** 2268,2274 ****
    // If all the bits are known, this is a singleton.
    if (m_bitmask.mask () == 0)
      {
!       set (m_type, m_bitmask.value (), m_bitmask.value ());
        return true;
      }
  
--- 2268,2278 ----
    // If all the bits are known, this is a singleton.
    if (m_bitmask.mask () == 0)
      {
!       // Make sure the singleton is within the range.
!       if (contains_p (m_bitmask.value ()))
! 	set (m_type, m_bitmask.value (), m_bitmask.value ());
!       else
! 	set_undefined ();
        return true;
      }
  
diff -Nrcpad gcc-16-20250608/gcc/xml-printer.h gcc-16-20250615/gcc/xml-printer.h
*** gcc-16-20250608/gcc/xml-printer.h	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/xml-printer.h	Sun Jun 15 22:33:47 2025
*************** class node;
*** 32,49 ****
  class printer
  {
  public:
!   printer (element &insertion_point);
  
    void push_tag (std::string name,
  		 bool preserve_whitespace = false);
    void push_tag_with_class (std::string name,
  			    std::string class_,
  			    bool preserve_whitespace = false);
!   void pop_tag ();
  
    void set_attr (const char *name, std::string value);
  
    void add_text (std::string text);
  
    void add_raw (std::string text);
  
--- 32,50 ----
  class printer
  {
  public:
!   printer (element &insertion_point, bool check_popped_tags = true);
  
    void push_tag (std::string name,
  		 bool preserve_whitespace = false);
    void push_tag_with_class (std::string name,
  			    std::string class_,
  			    bool preserve_whitespace = false);
!   void pop_tag (const char *expected_name);
  
    void set_attr (const char *name, std::string value);
  
    void add_text (std::string text);
+   void add_text_from_pp (pretty_printer &pp);
  
    void add_raw (std::string text);
  
*************** public:
*** 53,61 ****
--- 54,91 ----
  
    element *get_insertion_point () const;
  
+   size_t get_num_open_tags () const { return m_open_tags.size (); }
+ 
+   void DEBUG_FUNCTION dump () const;
+ 
  private:
    // borrowed ptrs:
    std::vector<element *> m_open_tags;
+   bool m_check_popped_tags;
+ };
+ 
+ /* RAII class for ensuring that the tags nested correctly.
+    Verify that within an instance's lifetime that any pushes
+    to the printer's insertion point have been popped by the end.  */
+ 
+ class auto_check_tag_nesting
+ {
+ public:
+   auto_check_tag_nesting (const printer &xp)
+   : m_xp (xp),
+     m_initial_insertion_element (xp.get_insertion_point ())
+   {
+   }
+   ~auto_check_tag_nesting ()
+   {
+     /* Verify that we didn't pop too many tags within the printer,
+        or leave any tags open.  */
+     gcc_assert (m_initial_insertion_element == m_xp.get_insertion_point ());
+   }
+ 
+ private:
+   const printer &m_xp;
+   const element *m_initial_insertion_element;
  };
  
  // RAII for push/pop element on xml::printer
*************** public:
*** 66,82 ****
    auto_print_element (printer &printer,
  		      std::string name,
  		      bool preserve_whitespace = false)
!   : m_printer (printer)
    {
!     m_printer.push_tag (name, preserve_whitespace);
    }
    ~auto_print_element ()
    {
!     m_printer.pop_tag ();
    }
  
  private:
    printer &m_printer;
  };
  
  } // namespace xml
--- 96,114 ----
    auto_print_element (printer &printer,
  		      std::string name,
  		      bool preserve_whitespace = false)
!   : m_printer (printer),
!     m_name (std::move (name))
    {
!     m_printer.push_tag (m_name, preserve_whitespace);
    }
    ~auto_print_element ()
    {
!     m_printer.pop_tag (m_name.c_str ());
    }
  
  private:
    printer &m_printer;
+   std::string m_name;
  };
  
  } // namespace xml
diff -Nrcpad gcc-16-20250608/gcc/xml.cc gcc-16-20250615/gcc/xml.cc
*** gcc-16-20250608/gcc/xml.cc	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/xml.cc	Sun Jun 15 22:33:47 2025
*************** along with GCC; see the file COPYING3.
*** 28,33 ****
--- 28,34 ----
  #include "xml-printer.h"
  #include "pretty-print.h"
  #include "selftest.h"
+ #include "selftest-xml.h"
  
  namespace xml {
  
*************** node_with_children::add_text (std::strin
*** 121,126 ****
--- 122,132 ----
    add_child (std::make_unique <text> (std::move (str)));
  }
  
+ void
+ node_with_children::add_text_from_pp (pretty_printer &pp)
+ {
+   add_text (pp_formatted_text (&pp));
+ }
  
  /* struct document : public node_with_children.  */
  
*************** raw::write_as_xml (pretty_printer *pp,
*** 196,208 ****
    pp_string (pp, m_xml_src.c_str ());
  }
  
- #if __GNUC__ >= 10
- #  pragma GCC diagnostic pop
- #endif
- 
  // class printer
  
! printer::printer (element &insertion_point)
  {
    m_open_tags.push_back (&insertion_point);
  }
--- 202,212 ----
    pp_string (pp, m_xml_src.c_str ());
  }
  
  // class printer
  
! printer::printer (element &insertion_point,
! 		  bool check_popped_tags)
! : m_check_popped_tags (check_popped_tags)
  {
    m_open_tags.push_back (&insertion_point);
  }
*************** printer::push_tag_with_class (std::strin
*** 227,235 ****
    push_element (std::move (new_element));
  }
  
  void
! printer::pop_tag ()
  {
    m_open_tags.pop_back ();
  }
  
--- 231,246 ----
    push_element (std::move (new_element));
  }
  
+ /*  Pop the current topmost tag.
+     If m_check_popped_tags, assert that the tag we're popping is
+     EXPECTED_NAME.  */
+ 
  void
! printer::pop_tag (const char *expected_name ATTRIBUTE_UNUSED)
  {
+   gcc_assert (!m_open_tags.empty ());
+   if (m_check_popped_tags)
+     gcc_assert (expected_name == get_insertion_point ()->m_kind);
    m_open_tags.pop_back ();
  }
  
*************** printer::add_text (std::string text)
*** 247,252 ****
--- 258,270 ----
  }
  
  void
+ printer::add_text_from_pp (pretty_printer &pp)
+ {
+   element *parent = m_open_tags.back ();
+   parent->add_text_from_pp (pp);
+ }
+ 
+ void
  printer::add_raw (std::string text)
  {
    element *parent = m_open_tags.back ();
*************** printer::get_insertion_point () const
*** 274,293 ****
    return m_open_tags.back ();
  }
  
  } // namespace xml
  
  #if CHECKING_P
  
  namespace selftest {
  
  static void
  test_no_dtd ()
  {
    xml::document doc;
!   pretty_printer pp;
!   doc.write_as_xml (&pp, 0, true);
!   ASSERT_STREQ
!     (pp_formatted_text (&pp),
       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
  }
  
--- 292,338 ----
    return m_open_tags.back ();
  }
  
+ void
+ printer::dump () const
+ {
+   pretty_printer pp;
+   pp.set_output_stream (stderr);
+   pp_printf (&pp, "open tags: %i:", (int)m_open_tags.size ());
+   for (auto iter : m_open_tags)
+     pp_printf (&pp, " <%s>", iter->m_kind.c_str ());
+   pp_newline (&pp);
+   pp_printf (&pp, "xml:");
+   pp_newline (&pp);
+   m_open_tags[0]->write_as_xml (&pp, 1, true);
+   pp_flush (&pp);
+ }
+ 
+ #if __GNUC__ >= 10
+ #  pragma GCC diagnostic pop
+ #endif
+ 
  } // namespace xml
  
  #if CHECKING_P
  
  namespace selftest {
  
+ void
+ assert_xml_print_eq (const location &loc,
+ 		     const xml::node &node,
+ 		     const char *expected_value)
+ {
+   pretty_printer pp;
+   node.write_as_xml (&pp, 0, true);
+   ASSERT_STREQ_AT (loc, pp_formatted_text (&pp), expected_value);
+ }
+ 
  static void
  test_no_dtd ()
  {
    xml::document doc;
!   ASSERT_XML_PRINT_EQ
!     (doc,
       "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
  }
  
*************** test_printer ()
*** 303,316 ****
    xp.set_attr ("color", "red");
    xp.add_text ("world");
    xp.push_tag ("baz");
!   xp.pop_tag ();
!   xp.pop_tag ();
!   xp.pop_tag ();
  
!   pretty_printer pp;
!   top.write_as_xml (&pp, 0, true);
!   ASSERT_STREQ
!     (pp_formatted_text (&pp),
       "<top>\n"
       "  <foo>\n"
       "    hello\n"
--- 348,359 ----
    xp.set_attr ("color", "red");
    xp.add_text ("world");
    xp.push_tag ("baz");
!   xp.pop_tag ("baz");
!   xp.pop_tag ("bar");
!   xp.pop_tag ("foo");
  
!   ASSERT_XML_PRINT_EQ
!     (top,
       "<top>\n"
       "  <foo>\n"
       "    hello\n"
*************** test_attribute_ordering ()
*** 334,351 ****
    xp.set_attr ("hastings", "1066");
    xp.set_attr ("edgehill", "1642");
    xp.set_attr ("naseby", "1645");
!   xp.pop_tag ();
    xp.push_tag ("alphabetical");
    xp.set_attr ("edgehill", "1642");
    xp.set_attr ("hastings", "1066");
    xp.set_attr ("maldon", "991");
    xp.set_attr ("naseby", "1645");
!   xp.pop_tag ();
  
!   pretty_printer pp;
!   top.write_as_xml (&pp, 0, true);
!   ASSERT_STREQ
!     (pp_formatted_text (&pp),
       "<top>\n"
       "  <chronological maldon=\"991\" hastings=\"1066\" edgehill=\"1642\" naseby=\"1645\"/>\n"
       "  <alphabetical edgehill=\"1642\" hastings=\"1066\" maldon=\"991\" naseby=\"1645\"/>\n"
--- 377,392 ----
    xp.set_attr ("hastings", "1066");
    xp.set_attr ("edgehill", "1642");
    xp.set_attr ("naseby", "1645");
!   xp.pop_tag ("chronological");
    xp.push_tag ("alphabetical");
    xp.set_attr ("edgehill", "1642");
    xp.set_attr ("hastings", "1066");
    xp.set_attr ("maldon", "991");
    xp.set_attr ("naseby", "1645");
!   xp.pop_tag ("alphabetical");
  
!   ASSERT_XML_PRINT_EQ
!     (top,
       "<top>\n"
       "  <chronological maldon=\"991\" hastings=\"1066\" edgehill=\"1642\" naseby=\"1645\"/>\n"
       "  <alphabetical edgehill=\"1642\" hastings=\"1066\" maldon=\"991\" naseby=\"1645\"/>\n"
diff -Nrcpad gcc-16-20250608/gcc/xml.h gcc-16-20250615/gcc/xml.h
*** gcc-16-20250608/gcc/xml.h	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/gcc/xml.h	Sun Jun 15 22:33:47 2025
*************** struct node_with_children : public node
*** 65,70 ****
--- 65,71 ----
  {
    void add_child (std::unique_ptr<node> node);
    void add_text (std::string str);
+   void add_text_from_pp (pretty_printer &pp);
  
    std::vector<std::unique_ptr<node>> m_children;
  };
diff -Nrcpad gcc-16-20250608/libcpp/ChangeLog gcc-16-20250615/libcpp/ChangeLog
*** gcc-16-20250608/libcpp/ChangeLog	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/libcpp/ChangeLog	Sun Jun 15 22:33:47 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-06-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR other/116792
+ 	* include/line-map.h (typedef expanded_location): Convert to...
+ 	(struct expanded_location): ...this.
+ 	(operator==): New decl, for expanded_location.
+ 	(operator!=): Likewise.
+ 	* line-map.cc (operator==): New decl, for expanded_location.
+ 
  2025-05-07  Jakub Jelinek  <jakub@redhat.com>
  
  	PR preprocessor/108900
diff -Nrcpad gcc-16-20250608/libcpp/include/line-map.h gcc-16-20250615/libcpp/include/line-map.h
*** gcc-16-20250608/libcpp/include/line-map.h	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/libcpp/include/line-map.h	Sun Jun 15 22:33:47 2025
*************** linemap_location_before_p (const line_ma
*** 1280,1286 ****
    return linemap_compare_locations (set, loc_a, loc_b) >= 0;
  }
  
! typedef struct
  {
    /* The name of the source file involved.  */
    const char *file;
--- 1280,1286 ----
    return linemap_compare_locations (set, loc_a, loc_b) >= 0;
  }
  
! struct expanded_location
  {
    /* The name of the source file involved.  */
    const char *file;
*************** typedef struct
*** 1294,1300 ****
  
    /* In a system header?. */
    bool sysp;
! } expanded_location;
  
  /* This is enum is used by the function linemap_resolve_location
     below.  The meaning of the values is explained in the comment of
--- 1294,1311 ----
  
    /* In a system header?. */
    bool sysp;
! };
! 
! extern bool
! operator== (const expanded_location &a,
! 	    const expanded_location &b);
! inline bool
! operator!= (const expanded_location &a,
! 	    const expanded_location &b)
! {
!   return !(a == b);
! }
! 
  
  /* This is enum is used by the function linemap_resolve_location
     below.  The meaning of the values is explained in the comment of
diff -Nrcpad gcc-16-20250608/libcpp/line-map.cc gcc-16-20250615/libcpp/line-map.cc
*** gcc-16-20250608/libcpp/line-map.cc	Sun Jun  8 22:32:40 2025
--- gcc-16-20250615/libcpp/line-map.cc	Sun Jun 15 22:33:47 2025
*************** linemap_expand_location (const line_maps
*** 1949,1954 ****
--- 1949,1976 ----
    return xloc;
  }
  
+ bool
+ operator== (const expanded_location &a,
+ 	    const expanded_location &b)
+ {
+   /* "file" can be null; for them to be equal they must both
+      have either null or nonnull values, and if non-null
+      they must compare as equal.  */
+   if ((a.file == nullptr) != (b.file == nullptr))
+     return false;
+   if (a.file && strcmp (a.file, b.file))
+     return false;
+ 
+   if (a.line != b.line)
+     return false;
+   if (a.column != b.column)
+     return false;
+   if (a.data != b.data)
+     return false;
+   if (a.sysp != b.sysp)
+     return false;
+   return true;
+ }
  
  /* Dump line map at index IX in line table SET to STREAM.  If STREAM
     is NULL, use stderr.  IS_MACRO is true if the caller wants to
diff -Nrcpad gcc-16-20250608/libgcobol/ChangeLog gcc-16-20250615/libgcobol/ChangeLog
*** gcc-16-20250608/libgcobol/ChangeLog	Sun Jun  8 22:32:41 2025
--- gcc-16-20250615/libgcobol/ChangeLog	Sun Jun 15 22:33:48 2025
***************
*** 1,3 ****
--- 1,20 ----
+ 2025-06-11  Robert Dubner  <rdubner@symas.com>
+ 
+ 	PR cobol/119975
+ 	* intrinsic.cc (__gg__current_date): Eliminate CLOCK_REALTIME.
+ 	(__gg__seconds_past_midnight): Likewise.
+ 	(__gg__formatted_current_date): Likewise.
+ 	(__gg__random): Likewise.
+ 	(__gg__random_next): Likewise.
+ 	* libgcobol.cc: include <sys/time.h>.
+ 	(__gg__abort): Eliminate CLOCK_REALTIME.
+ 	(cobol_time): Likewise.
+ 	(get_time_nanoseconds): Rename.
+ 	(get_time_nanoseconds_local): Comment; Eliminate CLOCK_REALTIME.
+ 	(__gg__clock_gettime): Likewise.
+ 	(__gg__get_date_hhmmssff): Likewise.
+ 	* libgcobol.h (__gg__clock_gettime): Eliminate clockid_t from declaration.
+ 
  2025-06-06  Robert Dubner  <rdubner@symas.com>
  	    James K. Lowden  <jklowden@cobolworx.com>
  
diff -Nrcpad gcc-16-20250608/libgcobol/intrinsic.cc gcc-16-20250615/libgcobol/intrinsic.cc
*** gcc-16-20250608/libgcobol/intrinsic.cc	Sun Jun  8 22:32:41 2025
--- gcc-16-20250615/libgcobol/intrinsic.cc	Sun Jun 15 22:33:48 2025
*************** __gg__current_date(cblc_field_t *dest)
*** 1219,1225 ****
    {
    // FUNCTION CURRENT-DATE
    struct cbl_timespec tp = {};
!   __gg__clock_gettime(CLOCK_REALTIME, &tp); // time_t tv_sec; long tv_nsec
  
    char retval[DATE_STRING_BUFFER_SIZE];
    timespec_to_string(retval, tp);
--- 1219,1225 ----
    {
    // FUNCTION CURRENT-DATE
    struct cbl_timespec tp = {};
!   __gg__clock_gettime(&tp); // time_t tv_sec; long tv_nsec
  
    char retval[DATE_STRING_BUFFER_SIZE];
    timespec_to_string(retval, tp);
*************** __gg__seconds_past_midnight(cblc_field_t
*** 1236,1242 ****
    struct tm tm;
    __int128 retval=0;
    
!   __gg__clock_gettime(CLOCK_REALTIME, &tp); // time_t tv_sec; long tv_nsec
    localtime_r(&tp.tv_sec, &tm);
  
    retval += tm.tm_hour;
--- 1236,1242 ----
    struct tm tm;
    __int128 retval=0;
    
!   __gg__clock_gettime(&tp); // time_t tv_sec; long tv_nsec
    localtime_r(&tp.tv_sec, &tm);
  
    retval += tm.tm_hour;
*************** __gg__formatted_current_date( cblc_field
*** 1460,1466 ****
                                size_t input_offset,
                                size_t input_size)
    {
!   // FUNCTION CURRENT-DATE
  
    // Establish the destination, and set it to spaces
    char *d    = PTRCAST(char, dest->data);
--- 1460,1466 ----
                                size_t input_offset,
                                size_t input_size)
    {
!   // FUNCTION FORMATTED-CURRENT-DATE
  
    // Establish the destination, and set it to spaces
    char *d    = PTRCAST(char, dest->data);
*************** __gg__formatted_current_date( cblc_field
*** 1485,1491 ****
      }
  
    struct cbl_timespec ts = {};
!   __gg__clock_gettime(CLOCK_REALTIME, &ts);
  
    struct tm tm = {};
  #ifdef HAVE_STRUCT_TM_TM_ZONE
--- 1485,1491 ----
      }
  
    struct cbl_timespec ts = {};
!   __gg__clock_gettime(&ts);
  
    struct tm tm = {};
  #ifdef HAVE_STRUCT_TM_TM_ZONE
*************** __gg__random( cblc_field_t *dest,
*** 3433,3439 ****
      state = (char *)malloc(state_len);
  
      struct cbl_timespec ts;
!     __gg__clock_gettime(CLOCK_REALTIME, &ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
    int seed = (int)__gg__binary_value_from_qualified_field(&rdigits,
--- 3433,3439 ----
      state = (char *)malloc(state_len);
  
      struct cbl_timespec ts;
!     __gg__clock_gettime(&ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
    int seed = (int)__gg__binary_value_from_qualified_field(&rdigits,
*************** __gg__random_next(cblc_field_t *dest)
*** 3473,3479 ****
      buf->state = NULL;
      state = (char *)malloc(state_len);
      struct cbl_timespec ts;
!     __gg__clock_gettime(CLOCK_REALTIME, &ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
    random_r(buf, &retval_31);
--- 3473,3479 ----
      buf->state = NULL;
      state = (char *)malloc(state_len);
      struct cbl_timespec ts;
!     __gg__clock_gettime(&ts);
      initstate_r( ts.tv_nsec, state, state_len, buf);
      }
    random_r(buf, &retval_31);
diff -Nrcpad gcc-16-20250608/libgcobol/libgcobol.cc gcc-16-20250615/libgcobol/libgcobol.cc
*** gcc-16-20250608/libgcobol/libgcobol.cc	Sun Jun  8 22:32:41 2025
--- gcc-16-20250615/libgcobol/libgcobol.cc	Sun Jun 15 22:33:48 2025
***************
*** 69,74 ****
--- 69,75 ----
  #include <sys/resource.h>
  #include <sys/stat.h>
  #include <sys/types.h>
+ #include <sys/time.h>
  #include <execinfo.h>
  #include "exceptl.h"
  
*************** class ec_status_t {
*** 264,270 ****
                      ,  operation(file_op_none)
                      ,  mode(file_mode_none_e)
                      ,  user_status(nullptr)
!                     ,  filename(nullptr) 
                        {}
      explicit file_status_t( const cblc_file_t *file )
                      : ifile(file->symbol_table_index)
--- 265,271 ----
                      ,  operation(file_op_none)
                      ,  mode(file_mode_none_e)
                      ,  user_status(nullptr)
!                     ,  filename(nullptr)
                        {}
      explicit file_status_t( const cblc_file_t *file )
                      : ifile(file->symbol_table_index)
*************** __gg__abort(const char *msg)
*** 558,564 ****
    abort();
    }
  
! void 
  __gg__mabort()
    {
    __gg__abort("Memory allocation error\n");
--- 559,565 ----
    abort();
    }
  
! void
  __gg__mabort()
    {
    __gg__abort("Memory allocation error\n");
*************** static time_t
*** 2290,2296 ****
  cobol_time()
    {
    struct cbl_timespec tp;
!   __gg__clock_gettime(CLOCK_REALTIME, &tp);
    return tp.tv_sec;
    }
  
--- 2291,2297 ----
  cobol_time()
    {
    struct cbl_timespec tp;
!   __gg__clock_gettime(&tp);
    return tp.tv_sec;
    }
  
*************** int_from_digits(const char * &p, int ndi
*** 2402,2413 ****
    return retval;
    }
  
! uint64_t
! get_time_nanoseconds()
  {
    // This code was unabashedly stolen from gcc/timevar.cc.
    // It returns the Unix epoch with nine decimal places.
  
    uint64_t retval = 0;
  
  #ifdef HAVE_CLOCK_GETTIME
--- 2403,2430 ----
    return retval;
    }
  
! // For testing purposes, this undef causes the use of gettimeofday().
! // #undef HAVE_CLOCK_GETTIME
! 
! static uint64_t
! get_time_nanoseconds_local()
  {
    // This code was unabashedly stolen from gcc/timevar.cc.
    // It returns the Unix epoch with nine decimal places.
  
+   /*  Note:  I am perplexed.  I have been examining the gcc Makefiles and
+       configure.ac files, and I am unable to locate where HAVE_GETTIMEOFDAY
+       is established.  There have been issues compiling on MacOS, where
+       apparently clock_gettime() is not available.  But I don't see exactly
+       how gettimeofday() gets used, instead.  But without the ability to
+       compile on a MacOS system, I am fumbling along as best I can.
+ 
+       I decided to simply replace clock_gettime() with getttimeofday() when
+       clock_gettime() isn't available, even though gcc/timevar.cc handles
+       the situation differently.
+ 
+            -- Bob Dubner, 2025-06-11*/
+ 
    uint64_t retval = 0;
  
  #ifdef HAVE_CLOCK_GETTIME
*************** get_time_nanoseconds()
*** 2415,2422 ****
    clock_gettime (CLOCK_REALTIME, &ts);
    retval = ts.tv_sec * 1000000000 + ts.tv_nsec;
    return retval;
! #endif
! #ifdef HAVE_GETTIMEOFDAY
    struct timeval tv;
    gettimeofday (&tv, NULL);
    retval = tv.tv_sec * 1000000000 + tv.tv_usec * 1000;
--- 2432,2440 ----
    clock_gettime (CLOCK_REALTIME, &ts);
    retval = ts.tv_sec * 1000000000 + ts.tv_nsec;
    return retval;
! //#endif
! //#ifdef HAVE_GETTIMEOFDAY
! #else
    struct timeval tv;
    gettimeofday (&tv, NULL);
    retval = tv.tv_sec * 1000000000 + tv.tv_usec * 1000;
*************** get_time_nanoseconds()
*** 2427,2433 ****
  
  extern "C"
  void
! __gg__clock_gettime(clockid_t clk_id, struct cbl_timespec *tp)
    {
    const char *p = getenv("GCOBOL_CURRENT_DATE");
  
--- 2445,2451 ----
  
  extern "C"
  void
! __gg__clock_gettime(struct cbl_timespec *tp)
    {
    const char *p = getenv("GCOBOL_CURRENT_DATE");
  
*************** __gg__clock_gettime(clockid_t clk_id, st
*** 2457,2465 ****
      }
    else
      {
!     timespec tm;
!     clock_gettime(clk_id, &tm);
!     uint64_t ns = get_time_nanoseconds();
      tp->tv_sec  = ns/1000000000;
      tp->tv_nsec = ns%1000000000;
      }
--- 2475,2481 ----
      }
    else
      {
!     uint64_t ns = get_time_nanoseconds_local();
      tp->tv_sec  = ns/1000000000;
      tp->tv_nsec = ns%1000000000;
      }
*************** __gg__get_date_hhmmssff()
*** 2472,2478 ****
    char ach[32];
  
    struct cbl_timespec tv;
!   __gg__clock_gettime(CLOCK_REALTIME, &tv);
  
    struct tm tm;
    localtime_r(&tv.tv_sec, &tm);
--- 2488,2494 ----
    char ach[32];
  
    struct cbl_timespec tv;
!   __gg__clock_gettime(&tv);
  
    struct tm tm;
    localtime_r(&tv.tv_sec, &tm);
*************** compare_88( const char    *list,
*** 3691,3697 ****
      }
    else
      {
!     cmpval = cstrncmp (test, 
                        PTRCAST(char, conditional_location),
                        conditional_length);
      if( cmpval == 0 && (int)strlen(test) != conditional_length )
--- 3707,3713 ----
      }
    else
      {
!     cmpval = cstrncmp (test,
                        PTRCAST(char, conditional_location),
                        conditional_length);
      if( cmpval == 0 && (int)strlen(test) != conditional_length )
*************** __gg__compare_2(cblc_field_t *left_side,
*** 4573,4579 ****
          }
  
        static size_t right_string_size = MINIMUM_ALLOCATION_SIZE;
!       static char *right_string 
                                = static_cast<char *>(malloc(right_string_size));
  
        right_string = format_for_display_internal(
--- 4589,4595 ----
          }
  
        static size_t right_string_size = MINIMUM_ALLOCATION_SIZE;
!       static char *right_string
                                = static_cast<char *>(malloc(right_string_size));
  
        right_string = format_for_display_internal(
diff -Nrcpad gcc-16-20250608/libgcobol/libgcobol.h gcc-16-20250615/libgcobol/libgcobol.h
*** gcc-16-20250608/libgcobol/libgcobol.h	Sun Jun  8 22:32:41 2025
--- gcc-16-20250615/libgcobol/libgcobol.h	Sun Jun 15 22:33:48 2025
*************** struct cbl_timespec
*** 112,118 ****
    long    tv_nsec;   // Nanoseconds.
    } ;
  
! extern "C" void __gg__clock_gettime(clockid_t clk_id, struct cbl_timespec *tp);
  
  extern "C" GCOB_FP128 __gg__float128_from_location(
                                          const cblc_field_t *var,
--- 112,118 ----
    long    tv_nsec;   // Nanoseconds.
    } ;
  
! extern "C" void __gg__clock_gettime(struct cbl_timespec *tp);
  
  extern "C" GCOB_FP128 __gg__float128_from_location(
                                          const cblc_field_t *var,
diff -Nrcpad gcc-16-20250608/libgfortran/ChangeLog gcc-16-20250615/libgfortran/ChangeLog
*** gcc-16-20250608/libgfortran/ChangeLog	Sun Jun  8 22:32:41 2025
--- gcc-16-20250615/libgfortran/ChangeLog	Sun Jun 15 22:33:48 2025
***************
*** 1,3 ****
--- 1,17 ----
+ 2025-06-11  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	PR libfortran/116400
+ 	* Makefile.am: Simplify logic.
+ 	* Makefile.in: Regenerate.
+ 	* regenerate.sh: Add some checks.
+ 
+ 2025-06-10  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	PR libfortran/116400
+ 	* Makefile.am: Remove source file regeneration rules.
+ 	* Makefile.in: Regenerate.
+ 	* regenerate.sh: New file.
+ 
  2025-06-07  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
  
  	PR libfortran/116400
diff -Nrcpad gcc-16-20250608/libgfortran/Makefile.am gcc-16-20250615/libgfortran/Makefile.am
*** gcc-16-20250608/libgfortran/Makefile.am	Sun Jun  8 22:32:41 2025
--- gcc-16-20250615/libgfortran/Makefile.am	Sun Jun 15 22:33:48 2025
*************** runtime/stop.c
*** 240,341 ****
  
  endif
  
! i_all_c= \
  generated/all_l1.c \
  generated/all_l2.c \
  generated/all_l4.c \
  generated/all_l8.c \
! generated/all_l16.c
! 
! i_any_c= \
  generated/any_l1.c \
  generated/any_l2.c \
  generated/any_l4.c \
  generated/any_l8.c \
! generated/any_l16.c
! 
! i_bessel_c= \
! generated/bessel_r4.c \
! generated/bessel_r8.c \
! generated/bessel_r10.c \
! generated/bessel_r16.c \
! generated/bessel_r17.c
! 
! i_count_c= \
  generated/count_1_l.c \
  generated/count_2_l.c \
  generated/count_4_l.c \
  generated/count_8_l.c \
! generated/count_16_l.c
! 
! i_iall_c= \
! generated/iall_i1.c \
! generated/iall_i2.c \
! generated/iall_i4.c \
! generated/iall_i8.c \
! generated/iall_i16.c
! 
! i_iany_c= \
! generated/iany_i1.c \
! generated/iany_i2.c \
! generated/iany_i4.c \
! generated/iany_i8.c \
! generated/iany_i16.c
! 
! i_iparity_c= \
! generated/iparity_i1.c \
! generated/iparity_i2.c \
! generated/iparity_i4.c \
! generated/iparity_i8.c \
! generated/iparity_i16.c
! 
! i_findloc0_c= \
! generated/findloc0_i1.c \
! generated/findloc0_i2.c \
! generated/findloc0_i4.c \
! generated/findloc0_i8.c \
! generated/findloc0_i16.c \
! generated/findloc0_r4.c \
! generated/findloc0_r8.c \
! generated/findloc0_r10.c \
! generated/findloc0_r16.c \
! generated/findloc0_r17.c \
! generated/findloc0_c4.c \
! generated/findloc0_c8.c \
! generated/findloc0_c10.c \
! generated/findloc0_c16.c \
! generated/findloc0_c17.c
! 
! i_findloc0s_c= \
! generated/findloc0_s1.c \
! generated/findloc0_s4.c
! 
! i_findloc1_c= \
! generated/findloc1_i1.c \
! generated/findloc1_i2.c \
! generated/findloc1_i4.c \
! generated/findloc1_i8.c \
! generated/findloc1_i16.c \
! generated/findloc1_r4.c \
! generated/findloc1_r8.c \
! generated/findloc1_r10.c \
! generated/findloc1_r16.c \
! generated/findloc1_r17.c \
! generated/findloc1_c4.c \
! generated/findloc1_c8.c \
! generated/findloc1_c10.c \
! generated/findloc1_c16.c \
! generated/findloc1_c17.c
! 
! i_findloc1s_c= \
! generated/findloc1_s1.c \
! generated/findloc1_s4.c
! 
! i_findloc2s_c= \
! generated/findloc2_s1.c \
! generated/findloc2_s4.c
! 
! i_maxloc0_c= \
  generated/maxloc0_4_i1.c \
  generated/maxloc0_8_i1.c \
  generated/maxloc0_16_i1.c \
--- 240,300 ----
  
  endif
  
! i_matmul_c= \
! generated/matmul_i1.c \
! generated/matmul_i2.c \
! generated/matmul_i4.c \
! generated/matmul_i8.c \
! generated/matmul_i16.c \
! generated/matmul_r4.c \
! generated/matmul_r8.c \
! generated/matmul_r10.c \
! generated/matmul_r16.c \
! generated/matmul_r17.c \
! generated/matmul_c4.c \
! generated/matmul_c8.c \
! generated/matmul_c10.c \
! generated/matmul_c16.c \
! generated/matmul_c17.c
! 
! i_matmulavx128_c= \
! generated/matmulavx128_i1.c \
! generated/matmulavx128_i2.c \
! generated/matmulavx128_i4.c \
! generated/matmulavx128_i8.c \
! generated/matmulavx128_i16.c \
! generated/matmulavx128_r4.c \
! generated/matmulavx128_r8.c \
! generated/matmulavx128_r10.c \
! generated/matmulavx128_r16.c \
! generated/matmulavx128_r17.c \
! generated/matmulavx128_c4.c \
! generated/matmulavx128_c8.c \
! generated/matmulavx128_c10.c \
! generated/matmulavx128_c16.c \
! generated/matmulavx128_c17.c
! 
! i_matmull_c= \
! generated/matmul_l4.c \
! generated/matmul_l8.c \
! generated/matmul_l16.c
! 
! gfor_built_src= \
  generated/all_l1.c \
  generated/all_l2.c \
  generated/all_l4.c \
  generated/all_l8.c \
! generated/all_l16.c \
  generated/any_l1.c \
  generated/any_l2.c \
  generated/any_l4.c \
  generated/any_l8.c \
! generated/any_l16.c \
  generated/count_1_l.c \
  generated/count_2_l.c \
  generated/count_4_l.c \
  generated/count_8_l.c \
! generated/count_16_l.c \
  generated/maxloc0_4_i1.c \
  generated/maxloc0_8_i1.c \
  generated/maxloc0_16_i1.c \
*************** generated/maxloc0_8_r16.c \
*** 380,396 ****
  generated/maxloc0_16_r16.c \
  generated/maxloc0_4_r17.c \
  generated/maxloc0_8_r17.c \
! generated/maxloc0_16_r17.c
! 
! i_maxloc0s_c = \
! generated/maxloc0_4_s1.c \
! generated/maxloc0_4_s4.c \
! generated/maxloc0_8_s1.c \
! generated/maxloc0_8_s4.c \
! generated/maxloc0_16_s1.c \
! generated/maxloc0_16_s4.c
! 
! i_maxloc1_c= \
  generated/maxloc1_4_i1.c \
  generated/maxloc1_8_i1.c \
  generated/maxloc1_16_i1.c \
--- 339,345 ----
  generated/maxloc0_16_r16.c \
  generated/maxloc0_4_r17.c \
  generated/maxloc0_8_r17.c \
! generated/maxloc0_16_r17.c \
  generated/maxloc1_4_i1.c \
  generated/maxloc1_8_i1.c \
  generated/maxloc1_16_i1.c \
*************** generated/maxloc1_8_r16.c \
*** 435,459 ****
  generated/maxloc1_16_r16.c \
  generated/maxloc1_4_r17.c \
  generated/maxloc1_8_r17.c \
! generated/maxloc1_16_r17.c
! 
! i_maxloc1s_c= \
! generated/maxloc1_4_s1.c \
! generated/maxloc1_4_s4.c \
! generated/maxloc1_8_s1.c \
! generated/maxloc1_8_s4.c \
! generated/maxloc1_16_s1.c \
! generated/maxloc1_16_s4.c
! 
! i_maxloc2s_c= \
! generated/maxloc2_4_s1.c \
! generated/maxloc2_4_s4.c \
! generated/maxloc2_8_s1.c \
! generated/maxloc2_8_s4.c \
! generated/maxloc2_16_s1.c \
! generated/maxloc2_16_s4.c
! 
! i_maxval_c= \
  generated/maxval_i1.c \
  generated/maxval_i2.c \
  generated/maxval_i4.c \
--- 384,390 ----
  generated/maxloc1_16_r16.c \
  generated/maxloc1_4_r17.c \
  generated/maxloc1_8_r17.c \
! generated/maxloc1_16_r17.c \
  generated/maxval_i1.c \
  generated/maxval_i2.c \
  generated/maxval_i4.c \
*************** generated/maxval_r4.c \
*** 468,484 ****
  generated/maxval_r8.c \
  generated/maxval_r10.c \
  generated/maxval_r16.c \
! generated/maxval_r17.c
! 
! i_maxval0s_c=\
! generated/maxval0_s1.c \
! generated/maxval0_s4.c
! 
! i_maxval1s_c=\
! generated/maxval1_s1.c \
! generated/maxval1_s4.c
! 
! i_minloc0_c= \
  generated/minloc0_4_i1.c \
  generated/minloc0_8_i1.c \
  generated/minloc0_16_i1.c \
--- 399,405 ----
  generated/maxval_r8.c \
  generated/maxval_r10.c \
  generated/maxval_r16.c \
! generated/maxval_r17.c \
  generated/minloc0_4_i1.c \
  generated/minloc0_8_i1.c \
  generated/minloc0_16_i1.c \
*************** generated/minloc0_8_r16.c \
*** 523,539 ****
  generated/minloc0_16_r16.c \
  generated/minloc0_4_r17.c \
  generated/minloc0_8_r17.c \
! generated/minloc0_16_r17.c
! 
! i_minloc0s_c = \
! generated/minloc0_4_s1.c \
! generated/minloc0_4_s4.c \
! generated/minloc0_8_s1.c \
! generated/minloc0_8_s4.c \
! generated/minloc0_16_s1.c \
! generated/minloc0_16_s4.c
! 
! i_minloc1_c= \
  generated/minloc1_4_i1.c \
  generated/minloc1_8_i1.c \
  generated/minloc1_16_i1.c \
--- 444,450 ----
  generated/minloc0_16_r16.c \
  generated/minloc0_4_r17.c \
  generated/minloc0_8_r17.c \
! generated/minloc0_16_r17.c \
  generated/minloc1_4_i1.c \
  generated/minloc1_8_i1.c \
  generated/minloc1_16_i1.c \
*************** generated/minloc1_8_r16.c \
*** 578,602 ****
  generated/minloc1_16_r16.c \
  generated/minloc1_4_r17.c \
  generated/minloc1_8_r17.c \
! generated/minloc1_16_r17.c
! 
! i_minloc1s_c= \
! generated/minloc1_4_s1.c \
! generated/minloc1_4_s4.c \
! generated/minloc1_8_s1.c \
! generated/minloc1_8_s4.c \
! generated/minloc1_16_s1.c \
! generated/minloc1_16_s4.c
! 
! i_minloc2s_c= \
! generated/minloc2_4_s1.c \
! generated/minloc2_4_s4.c \
! generated/minloc2_8_s1.c \
! generated/minloc2_8_s4.c \
! generated/minloc2_16_s1.c \
! generated/minloc2_16_s4.c
! 
! i_minval_c= \
  generated/minval_i1.c \
  generated/minval_i2.c \
  generated/minval_i4.c \
--- 489,495 ----
  generated/minloc1_16_r16.c \
  generated/minloc1_4_r17.c \
  generated/minloc1_8_r17.c \
! generated/minloc1_16_r17.c \
  generated/minval_i1.c \
  generated/minval_i2.c \
  generated/minval_i4.c \
*************** generated/minval_r4.c \
*** 611,658 ****
  generated/minval_r8.c \
  generated/minval_r10.c \
  generated/minval_r16.c \
! generated/minval_r17.c
! 
! i_minval0s_c=\
! generated/minval0_s1.c \
! generated/minval0_s4.c
! 
! i_minval1s_c=\
! generated/minval1_s1.c \
! generated/minval1_s4.c
! 
! i_norm2_c= \
! generated/norm2_r4.c \
! generated/norm2_r8.c \
! generated/norm2_r10.c \
! generated/norm2_r16.c \
! generated/norm2_r17.c
! 
! i_parity_c = \
! generated/parity_l1.c \
! generated/parity_l2.c \
! generated/parity_l4.c \
! generated/parity_l8.c \
! generated/parity_l16.c
! 
! i_sum_c= \
! generated/sum_i1.c \
! generated/sum_i2.c \
! generated/sum_i4.c \
! generated/sum_i8.c \
! generated/sum_i16.c \
! generated/sum_r4.c \
! generated/sum_r8.c \
! generated/sum_r10.c \
! generated/sum_r16.c \
! generated/sum_r17.c \
! generated/sum_c4.c \
! generated/sum_c8.c \
! generated/sum_c10.c \
! generated/sum_c16.c \
! generated/sum_c17.c
! 
! i_product_c= \
  generated/product_i1.c \
  generated/product_i2.c \
  generated/product_i4.c \
--- 504,510 ----
  generated/minval_r8.c \
  generated/minval_r10.c \
  generated/minval_r16.c \
! generated/minval_r17.c \
  generated/product_i1.c \
  generated/product_i2.c \
  generated/product_i4.c \
*************** generated/product_c4.c \
*** 667,721 ****
  generated/product_c8.c \
  generated/product_c10.c \
  generated/product_c16.c \
! generated/product_c17.c
! 
! i_matmul_c= \
! generated/matmul_i1.c \
! generated/matmul_i2.c \
! generated/matmul_i4.c \
! generated/matmul_i8.c \
! generated/matmul_i16.c \
! generated/matmul_r4.c \
! generated/matmul_r8.c \
! generated/matmul_r10.c \
! generated/matmul_r16.c \
! generated/matmul_r17.c \
! generated/matmul_c4.c \
! generated/matmul_c8.c \
! generated/matmul_c10.c \
! generated/matmul_c16.c \
! generated/matmul_c17.c
! 
! i_matmulavx128_c= \
! generated/matmulavx128_i1.c \
! generated/matmulavx128_i2.c \
! generated/matmulavx128_i4.c \
! generated/matmulavx128_i8.c \
! generated/matmulavx128_i16.c \
! generated/matmulavx128_r4.c \
! generated/matmulavx128_r8.c \
! generated/matmulavx128_r10.c \
! generated/matmulavx128_r16.c \
! generated/matmulavx128_r17.c \
! generated/matmulavx128_c4.c \
! generated/matmulavx128_c8.c \
! generated/matmulavx128_c10.c \
! generated/matmulavx128_c16.c \
! generated/matmulavx128_c17.c
! 
! i_matmull_c= \
! generated/matmul_l4.c \
! generated/matmul_l8.c \
! generated/matmul_l16.c
! 
! i_shape_c= \
  generated/shape_i1.c \
  generated/shape_i2.c \
  generated/shape_i4.c \
  generated/shape_i8.c \
! generated/shape_i16.c
! 
! i_reshape_c= \
  generated/reshape_i4.c \
  generated/reshape_i8.c \
  generated/reshape_i16.c \
--- 519,584 ----
  generated/product_c8.c \
  generated/product_c10.c \
  generated/product_c16.c \
! generated/product_c17.c \
! generated/sum_i1.c \
! generated/sum_i2.c \
! generated/sum_i4.c \
! generated/sum_i8.c \
! generated/sum_i16.c \
! generated/sum_r4.c \
! generated/sum_r8.c \
! generated/sum_r10.c \
! generated/sum_r16.c \
! generated/sum_r17.c \
! generated/sum_c4.c \
! generated/sum_c8.c \
! generated/sum_c10.c \
! generated/sum_c16.c \
! generated/sum_c17.c \
! generated/bessel_r4.c \
! generated/bessel_r8.c \
! generated/bessel_r10.c \
! generated/bessel_r16.c \
! generated/bessel_r17.c \
! generated/iall_i1.c \
! generated/iall_i2.c \
! generated/iall_i4.c \
! generated/iall_i8.c \
! generated/iall_i16.c \
! generated/iany_i1.c \
! generated/iany_i2.c \
! generated/iany_i4.c \
! generated/iany_i8.c \
! generated/iany_i16.c \
! generated/iparity_i1.c \
! generated/iparity_i2.c \
! generated/iparity_i4.c \
! generated/iparity_i8.c \
! generated/iparity_i16.c \
! generated/norm2_r4.c \
! generated/norm2_r8.c \
! generated/norm2_r10.c \
! generated/norm2_r16.c \
! generated/norm2_r17.c \
! generated/parity_l1.c \
! generated/parity_l2.c \
! generated/parity_l4.c \
! generated/parity_l8.c \
! generated/parity_l16.c \
  generated/shape_i1.c \
  generated/shape_i2.c \
  generated/shape_i4.c \
  generated/shape_i8.c \
! generated/shape_i16.c \
! generated/eoshift1_4.c \
! generated/eoshift1_8.c \
! generated/eoshift1_16.c \
! generated/eoshift3_4.c \
! generated/eoshift3_8.c \
! generated/eoshift3_16.c \
! generated/cshift1_4.c \
! generated/cshift1_8.c \
! generated/cshift1_16.c \
  generated/reshape_i4.c \
  generated/reshape_i8.c \
  generated/reshape_i16.c \
*************** generated/reshape_c4.c \
*** 728,815 ****
  generated/reshape_c8.c \
  generated/reshape_c10.c \
  generated/reshape_c16.c \
! generated/reshape_c17.c
! 
! i_eoshift1_c= \
! generated/eoshift1_4.c \
! generated/eoshift1_8.c \
! generated/eoshift1_16.c
! 
! i_eoshift3_c= \
! generated/eoshift3_4.c \
! generated/eoshift3_8.c \
! generated/eoshift3_16.c
! 
! i_cshift0_c= \
! generated/cshift0_i1.c \
! generated/cshift0_i2.c \
! generated/cshift0_i4.c \
! generated/cshift0_i8.c \
! generated/cshift0_i16.c \
! generated/cshift0_r4.c \
! generated/cshift0_r8.c \
! generated/cshift0_r10.c \
! generated/cshift0_r16.c \
! generated/cshift0_r17.c \
! generated/cshift0_c4.c \
! generated/cshift0_c8.c \
! generated/cshift0_c10.c \
! generated/cshift0_c16.c \
! generated/cshift0_c17.c
! 
! i_cshift1_c= \
! generated/cshift1_4.c \
! generated/cshift1_8.c \
! generated/cshift1_16.c
! 
! i_cshift1a_c = \
! generated/cshift1_4_i1.c \
! generated/cshift1_4_i2.c \
! generated/cshift1_4_i4.c \
! generated/cshift1_4_i8.c \
! generated/cshift1_4_i16.c \
! generated/cshift1_4_r4.c \
! generated/cshift1_4_r8.c \
! generated/cshift1_4_r10.c \
! generated/cshift1_4_r16.c \
! generated/cshift1_4_r17.c \
! generated/cshift1_4_c4.c \
! generated/cshift1_4_c8.c \
! generated/cshift1_4_c10.c \
! generated/cshift1_4_c16.c \
! generated/cshift1_4_c17.c \
! generated/cshift1_8_i1.c \
! generated/cshift1_8_i2.c \
! generated/cshift1_8_i4.c \
! generated/cshift1_8_i8.c \
! generated/cshift1_8_i16.c \
! generated/cshift1_8_r4.c \
! generated/cshift1_8_r8.c \
! generated/cshift1_8_r10.c \
! generated/cshift1_8_r16.c \
! generated/cshift1_8_r17.c \
! generated/cshift1_8_c4.c \
! generated/cshift1_8_c8.c \
! generated/cshift1_8_c10.c \
! generated/cshift1_8_c16.c \
! generated/cshift1_8_c17.c \
! generated/cshift1_16_i1.c \
! generated/cshift1_16_i2.c \
! generated/cshift1_16_i4.c \
! generated/cshift1_16_i8.c \
! generated/cshift1_16_i16.c \
! generated/cshift1_16_r4.c \
! generated/cshift1_16_r8.c \
! generated/cshift1_16_r10.c \
! generated/cshift1_16_r16.c \
! generated/cshift1_16_r17.c \
! generated/cshift1_16_c4.c \
! generated/cshift1_16_c8.c \
! generated/cshift1_16_c10.c \
! generated/cshift1_16_c16.c \
! generated/cshift1_16_c17.c
! 
! in_pack_c = \
  generated/in_pack_i1.c \
  generated/in_pack_i2.c \
  generated/in_pack_i4.c \
--- 591,597 ----
  generated/reshape_c8.c \
  generated/reshape_c10.c \
  generated/reshape_c16.c \
! generated/reshape_c17.c \
  generated/in_pack_i1.c \
  generated/in_pack_i2.c \
  generated/in_pack_i4.c \
*************** generated/in_pack_c4.c \
*** 824,832 ****
  generated/in_pack_c8.c \
  generated/in_pack_c10.c \
  generated/in_pack_c16.c \
! generated/in_pack_c17.c
! 
! in_unpack_c = \
  generated/in_unpack_i1.c \
  generated/in_unpack_i2.c \
  generated/in_unpack_i4.c \
--- 606,612 ----
  generated/in_pack_c8.c \
  generated/in_pack_c10.c \
  generated/in_pack_c16.c \
! generated/in_pack_c17.c \
  generated/in_unpack_i1.c \
  generated/in_unpack_i2.c \
  generated/in_unpack_i4.c \
*************** generated/in_unpack_c4.c \
*** 841,849 ****
  generated/in_unpack_c8.c \
  generated/in_unpack_c10.c \
  generated/in_unpack_c16.c \
! generated/in_unpack_c17.c
! 
! i_pow_c = \
  generated/pow_i4_i4.c \
  generated/pow_i8_i4.c \
  generated/pow_i16_i4.c \
--- 621,627 ----
  generated/in_unpack_c8.c \
  generated/in_unpack_c10.c \
  generated/in_unpack_c16.c \
! generated/in_unpack_c17.c \
  generated/pow_i4_i4.c \
  generated/pow_i8_i4.c \
  generated/pow_i16_i4.c \
*************** generated/pow_c4_i16.c \
*** 879,914 ****
  generated/pow_c8_i16.c \
  generated/pow_c10_i16.c \
  generated/pow_c16_i16.c \
! generated/pow_c17_i16.c
! 
! i_powu_c = \
! generated/pow_m1_m1.c \
! generated/pow_m1_m2.c \
! generated/pow_m1_m4.c \
! generated/pow_m1_m8.c \
! generated/pow_m1_m16.c \
! generated/pow_m2_m1.c \
! generated/pow_m2_m2.c \
! generated/pow_m2_m4.c \
! generated/pow_m2_m8.c \
! generated/pow_m2_m16.c \
! generated/pow_m4_m1.c \
! generated/pow_m4_m2.c \
! generated/pow_m4_m4.c \
! generated/pow_m4_m8.c \
! generated/pow_m4_m16.c \
! generated/pow_m8_m1.c \
! generated/pow_m8_m2.c \
! generated/pow_m8_m4.c \
! generated/pow_m8_m8.c \
! generated/pow_m8_m16.c \
! generated/pow_m16_m1.c \
! generated/pow_m16_m2.c \
! generated/pow_m16_m4.c \
! generated/pow_m16_m8.c \
! generated/pow_m16_m16.c
! 
! i_pack_c = \
  generated/pack_i1.c \
  generated/pack_i2.c \
  generated/pack_i4.c \
--- 657,663 ----
  generated/pow_c8_i16.c \
  generated/pow_c10_i16.c \
  generated/pow_c16_i16.c \
! generated/pow_c17_i16.c \
  generated/pack_i1.c \
  generated/pack_i2.c \
  generated/pack_i4.c \
*************** generated/pack_c4.c \
*** 923,931 ****
  generated/pack_c8.c \
  generated/pack_c10.c \
  generated/pack_c16.c \
! generated/pack_c17.c
! 
! i_unpack_c = \
  generated/unpack_i1.c \
  generated/unpack_i2.c \
  generated/unpack_i4.c \
--- 672,678 ----
  generated/pack_c8.c \
  generated/pack_c10.c \
  generated/pack_c16.c \
! generated/pack_c17.c \
  generated/unpack_i1.c \
  generated/unpack_i2.c \
  generated/unpack_i4.c \
*************** generated/unpack_c4.c \
*** 940,948 ****
  generated/unpack_c8.c \
  generated/unpack_c10.c \
  generated/unpack_c16.c \
! generated/unpack_c17.c
! 
! i_spread_c = \
  generated/spread_i1.c \
  generated/spread_i2.c \
  generated/spread_i4.c \
--- 687,693 ----
  generated/unpack_c8.c \
  generated/unpack_c10.c \
  generated/unpack_c16.c \
! generated/unpack_c17.c \
  generated/spread_i1.c \
  generated/spread_i2.c \
  generated/spread_i4.c \
*************** generated/spread_c4.c \
*** 957,999 ****
  generated/spread_c8.c \
  generated/spread_c10.c \
  generated/spread_c16.c \
! generated/spread_c17.c
! 
! i_isobinding_c = \
! runtime/ISO_Fortran_binding.c
! 
! m4_files= m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \
! 	m4/any.m4 m4/count.m4 m4/maxloc0.m4 m4/maxloc1.m4 m4/maxval.m4 \
! 	m4/minloc0.m4 m4/minloc1.m4 m4/minval.m4 m4/product.m4 m4/sum.m4 \
! 	m4/matmul.m4 m4/matmull.m4 m4/ifunction_logical.m4 \
! 	m4/ctrig.m4 m4/cexp.m4 m4/chyp.m4 m4/mtype.m4 \
! 	m4/specific.m4 m4/specific2.m4 m4/head.m4 m4/shape.m4 m4/reshape.m4 \
! 	m4/eoshift1.m4 m4/eoshift3.m4 \
! 	m4/pow.m4 \
! 	m4/misc_specifics.m4 m4/pack.m4 \
! 	m4/unpack.m4 m4/spread.m4 m4/bessel.m4 m4/norm2.m4 m4/parity.m4 \
! 	m4/iall.m4 m4/iany.m4 m4/iparity.m4 m4/iforeach-s.m4 m4/findloc0.m4 \
! 	m4/findloc0s.m4 m4/ifindloc0.m4 m4/findloc1.m4 m4/ifindloc1.m4 \
! 	m4/findloc2s.m4 m4/ifindloc2.m4
! 
! gfor_built_src= $(i_all_c) $(i_any_c) $(i_count_c) $(i_maxloc0_c) \
! 	$(i_maxloc1_c) $(i_maxval_c) $(i_minloc0_c) $(i_minloc1_c) $(i_minval_c) \
! 	$(i_product_c) $(i_sum_c) $(i_bessel_c) $(i_iall_c) $(i_iany_c) \
! 	$(i_iparity_c) $(i_norm2_c) $(i_parity_c) \
! 	$(i_matmul_c) $(i_matmull_c) $(i_shape_c) $(i_eoshift1_c) \
! 	$(i_eoshift3_c) $(i_cshift1_c) $(i_reshape_c) $(in_pack_c) $(in_unpack_c) \
! 	$(i_pow_c) $(i_pack_c) $(i_unpack_c) $(i_matmulavx128_c) \
! 	$(i_spread_c) selected_int_kind.inc selected_real_kind.inc kinds.h \
! 	$(i_cshift0_c) kinds.inc c99_protos.inc fpu-target.h fpu-target.inc \
! 	include/ISO_Fortran_binding.h \
! 	$(i_cshift1a_c) $(i_maxloc0s_c) $(i_minloc0s_c) $(i_maxloc1s_c) \
! 	$(i_minloc1s_c) $(i_maxloc2s_c) $(i_minloc2s_c) $(i_maxvals_c) \
! 	$(i_maxval0s_c) $(i_minval0s_c) $(i_maxval1s_c) $(i_minval1s_c) \
! 	$(i_findloc0_c) $(i_findloc0s_c) $(i_findloc1_c) $(i_findloc1s_c) \
! 	$(i_findloc2s_c) $(i_isobinding_c) $(i_powu_c)
  
! # Machine generated specifics
! gfor_built_specific_src= \
  generated/_abs_c4.F90 \
  generated/_abs_c8.F90 \
  generated/_abs_c10.F90 \
--- 702,880 ----
  generated/spread_c8.c \
  generated/spread_c10.c \
  generated/spread_c16.c \
! generated/spread_c17.c \
! generated/cshift0_i1.c \
! generated/cshift0_i2.c \
! generated/cshift0_i4.c \
! generated/cshift0_i8.c \
! generated/cshift0_i16.c \
! generated/cshift0_r4.c \
! generated/cshift0_r8.c \
! generated/cshift0_r10.c \
! generated/cshift0_r16.c \
! generated/cshift0_r17.c \
! generated/cshift0_c4.c \
! generated/cshift0_c8.c \
! generated/cshift0_c10.c \
! generated/cshift0_c16.c \
! generated/cshift0_c17.c \
! generated/cshift1_4_i1.c \
! generated/cshift1_4_i2.c \
! generated/cshift1_4_i4.c \
! generated/cshift1_4_i8.c \
! generated/cshift1_4_i16.c \
! generated/cshift1_4_r4.c \
! generated/cshift1_4_r8.c \
! generated/cshift1_4_r10.c \
! generated/cshift1_4_r16.c \
! generated/cshift1_4_r17.c \
! generated/cshift1_4_c4.c \
! generated/cshift1_4_c8.c \
! generated/cshift1_4_c10.c \
! generated/cshift1_4_c16.c \
! generated/cshift1_4_c17.c \
! generated/cshift1_8_i1.c \
! generated/cshift1_8_i2.c \
! generated/cshift1_8_i4.c \
! generated/cshift1_8_i8.c \
! generated/cshift1_8_i16.c \
! generated/cshift1_8_r4.c \
! generated/cshift1_8_r8.c \
! generated/cshift1_8_r10.c \
! generated/cshift1_8_r16.c \
! generated/cshift1_8_r17.c \
! generated/cshift1_8_c4.c \
! generated/cshift1_8_c8.c \
! generated/cshift1_8_c10.c \
! generated/cshift1_8_c16.c \
! generated/cshift1_8_c17.c \
! generated/cshift1_16_i1.c \
! generated/cshift1_16_i2.c \
! generated/cshift1_16_i4.c \
! generated/cshift1_16_i8.c \
! generated/cshift1_16_i16.c \
! generated/cshift1_16_r4.c \
! generated/cshift1_16_r8.c \
! generated/cshift1_16_r10.c \
! generated/cshift1_16_r16.c \
! generated/cshift1_16_r17.c \
! generated/cshift1_16_c4.c \
! generated/cshift1_16_c8.c \
! generated/cshift1_16_c10.c \
! generated/cshift1_16_c16.c \
! generated/cshift1_16_c17.c \
! generated/findloc0_i1.c \
! generated/findloc0_i2.c \
! generated/findloc0_i4.c \
! generated/findloc0_i8.c \
! generated/findloc0_i16.c \
! generated/findloc0_r4.c \
! generated/findloc0_r8.c \
! generated/findloc0_r10.c \
! generated/findloc0_r16.c \
! generated/findloc0_r17.c \
! generated/findloc0_c4.c \
! generated/findloc0_c8.c \
! generated/findloc0_c10.c \
! generated/findloc0_c16.c \
! generated/findloc0_c17.c \
! generated/findloc0_s1.c \
! generated/findloc0_s4.c \
! generated/findloc1_i1.c \
! generated/findloc1_i2.c \
! generated/findloc1_i4.c \
! generated/findloc1_i8.c \
! generated/findloc1_i16.c \
! generated/findloc1_r4.c \
! generated/findloc1_r8.c \
! generated/findloc1_r10.c \
! generated/findloc1_r16.c \
! generated/findloc1_r17.c \
! generated/findloc1_c4.c \
! generated/findloc1_c8.c \
! generated/findloc1_c10.c \
! generated/findloc1_c16.c \
! generated/findloc1_c17.c \
! generated/findloc1_s1.c \
! generated/findloc1_s4.c \
! generated/findloc2_s1.c \
! generated/findloc2_s4.c \
! generated/maxloc0_4_s1.c \
! generated/maxloc0_4_s4.c \
! generated/maxloc0_8_s1.c \
! generated/maxloc0_8_s4.c \
! generated/maxloc0_16_s1.c \
! generated/maxloc0_16_s4.c \
! generated/maxloc1_4_s1.c \
! generated/maxloc1_4_s4.c \
! generated/maxloc1_8_s1.c \
! generated/maxloc1_8_s4.c \
! generated/maxloc1_16_s1.c \
! generated/maxloc1_16_s4.c \
! generated/maxloc2_4_s1.c \
! generated/maxloc2_4_s4.c \
! generated/maxloc2_8_s1.c \
! generated/maxloc2_8_s4.c \
! generated/maxloc2_16_s1.c \
! generated/maxloc2_16_s4.c \
! generated/maxval0_s1.c \
! generated/maxval0_s4.c \
! generated/maxval1_s1.c \
! generated/maxval1_s4.c \
! generated/minloc0_4_s1.c \
! generated/minloc0_4_s4.c \
! generated/minloc0_8_s1.c \
! generated/minloc0_8_s4.c \
! generated/minloc0_16_s1.c \
! generated/minloc0_16_s4.c \
! generated/minloc1_4_s1.c \
! generated/minloc1_4_s4.c \
! generated/minloc1_8_s1.c \
! generated/minloc1_8_s4.c \
! generated/minloc1_16_s1.c \
! generated/minloc1_16_s4.c \
! generated/minloc2_4_s1.c \
! generated/minloc2_4_s4.c \
! generated/minloc2_8_s1.c \
! generated/minloc2_8_s4.c \
! generated/minloc2_16_s1.c \
! generated/minloc2_16_s4.c \
! generated/minval0_s1.c \
! generated/minval0_s4.c \
! generated/minval1_s1.c \
! generated/minval1_s4.c \
! generated/pow_m1_m1.c \
! generated/pow_m1_m2.c \
! generated/pow_m1_m4.c \
! generated/pow_m1_m8.c \
! generated/pow_m1_m16.c \
! generated/pow_m2_m1.c \
! generated/pow_m2_m2.c \
! generated/pow_m2_m4.c \
! generated/pow_m2_m8.c \
! generated/pow_m2_m16.c \
! generated/pow_m4_m1.c \
! generated/pow_m4_m2.c \
! generated/pow_m4_m4.c \
! generated/pow_m4_m8.c \
! generated/pow_m4_m16.c \
! generated/pow_m8_m1.c \
! generated/pow_m8_m2.c \
! generated/pow_m8_m4.c \
! generated/pow_m8_m8.c \
! generated/pow_m8_m16.c \
! generated/pow_m16_m1.c \
! generated/pow_m16_m2.c \
! generated/pow_m16_m4.c \
! generated/pow_m16_m8.c \
! generated/pow_m16_m16.c \
! $(i_matmul_c) $(i_matmull_c) $(i_matmulavx128_c) \
! selected_int_kind.inc selected_real_kind.inc kinds.h \
! kinds.inc c99_protos.inc fpu-target.h fpu-target.inc \
! include/ISO_Fortran_binding.h runtime/ISO_Fortran_binding.c
  
! # Specifics
! gfor_specific_src= \
  generated/_abs_c4.F90 \
  generated/_abs_c8.F90 \
  generated/_abs_c10.F90 \
*************** generated/_anint_r4.F90 \
*** 1131,1139 ****
  generated/_anint_r8.F90 \
  generated/_anint_r10.F90 \
  generated/_anint_r16.F90 \
! generated/_anint_r17.F90
! 
! gfor_built_specific2_src= \
  generated/_sign_i4.F90 \
  generated/_sign_i8.F90 \
  generated/_sign_i16.F90 \
--- 1012,1018 ----
  generated/_anint_r8.F90 \
  generated/_anint_r10.F90 \
  generated/_anint_r16.F90 \
! generated/_anint_r17.F90 \
  generated/_sign_i4.F90 \
  generated/_sign_i8.F90 \
  generated/_sign_i16.F90 \
*************** generated/_mod_r4.F90 \
*** 1162,1175 ****
  generated/_mod_r8.F90 \
  generated/_mod_r10.F90 \
  generated/_mod_r16.F90 \
! generated/_mod_r17.F90
! 
! gfor_misc_specifics = generated/misc_specifics.F90
! 
! gfor_specific_src= \
! $(gfor_built_specific_src) \
! $(gfor_built_specific2_src) \
! $(gfor_misc_specifics) \
  intrinsics/dprod_r8.f90 \
  intrinsics/f2c_specifics.F90 \
  intrinsics/random_init.f90
--- 1041,1048 ----
  generated/_mod_r8.F90 \
  generated/_mod_r10.F90 \
  generated/_mod_r16.F90 \
! generated/_mod_r17.F90 \
! generated/misc_specifics.F90 \
  intrinsics/dprod_r8.f90 \
  intrinsics/f2c_specifics.F90 \
  intrinsics/random_init.f90
*************** ieee_exceptions.mod: ieee/ieee_exception
*** 1221,1244 ****
  ieee_arithmetic.mod: ieee/ieee_arithmetic.lo
  	:
  
! BUILT_SOURCES=$(gfor_built_src) $(gfor_built_specific_src) \
! 	$(gfor_built_specific2_src) $(gfor_misc_specifics)
  
  libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \
  	$(gfor_helper_src) $(gfor_ieee_src) $(gfor_io_headers) $(gfor_specific_src)
  
- I_M4_DEPS=m4/iparm.m4 m4/mtype.m4
- I_M4_DEPS0=$(I_M4_DEPS) m4/iforeach.m4
- I_M4_DEPS1=$(I_M4_DEPS) m4/ifunction.m4
- I_M4_DEPS2=$(I_M4_DEPS) m4/ifunction_logical.m4
- I_M4_DEPS3=$(I_M4_DEPS) m4/iforeach-s.m4
- I_M4_DEPS4=$(I_M4_DEPS) m4/ifunction-s.m4
- I_M4_DEPS5=$(I_M4_DEPS) m4/iforeach-s2.m4
- I_M4_DEPS6=$(I_M4_DEPS) m4/ifunction-s2.m4
- I_M4_DEPS7=$(I_M4_DEPS) m4/ifindloc0.m4
- I_M4_DEPS8=$(I_M4_DEPS) m4/ifindloc1.m4
- I_M4_DEPS9=$(I_M4_DEPS) m4/ifindloc2.m4
- 
  kinds.h: $(srcdir)/mk-kinds-h.sh
  	$(SHELL) $(srcdir)/mk-kinds-h.sh '@LIBGOMP_CHECKED_INT_KINDS@' \
  					 '@LIBGOMP_CHECKED_REAL_KINDS@' \
--- 1094,1104 ----
  ieee_arithmetic.mod: ieee/ieee_arithmetic.lo
  	:
  
! BUILT_SOURCES=$(gfor_built_src)
  
  libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \
  	$(gfor_helper_src) $(gfor_ieee_src) $(gfor_io_headers) $(gfor_specific_src)
  
  kinds.h: $(srcdir)/mk-kinds-h.sh
  	$(SHELL) $(srcdir)/mk-kinds-h.sh '@LIBGOMP_CHECKED_INT_KINDS@' \
  					 '@LIBGOMP_CHECKED_REAL_KINDS@' \
*************** include/ISO_Fortran_binding.h: $(srcdir)
*** 1271,1442 ****
  	$(MKDIR_P) include
  	cp $(srcdir)/ISO_Fortran_binding.h $@
  
- ## A 'normal' build shouldn't need to regenerate these
- ## so we only include them in maintainer mode
- 
- if MAINTAINER_MODE
- $(i_all_c): m4/all.m4 $(I_M4_DEPS2)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 all.m4 > $@
- 
- $(i_bessel_c): m4/bessel.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 bessel.m4 > $@
- 
- $(i_any_c): m4/any.m4 $(I_M4_DEPS2)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 any.m4 > $@
- 
- $(i_count_c): m4/count.m4 $(I_M4_DEPS2)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 count.m4 > $@
- 
- $(i_findloc0_c): m4/findloc0.m4 $(I_M4_DEPS7)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc0.m4 > $@
- 
- $(i_findloc0s_c): m4/findloc0s.m4 $(I_M4_DEPS7)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc0s.m4 > $@
- 
- $(i_findloc1_c): m4/findloc1.m4 $(I_M4_DEPS8)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc1.m4 > $@
- 
- $(i_findloc1s_c): m4/findloc1s.m4 $(I_M4_DEPS8)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc1s.m4 > $@
- 
- $(i_findloc2s_c): m4/findloc2s.m4 $(I_M4_DEPS9)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc2s.m4 > $@
- 
- $(i_iall_c): m4/iall.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 iall.m4 > $@
- 
- $(i_iany_c): m4/iany.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 iany.m4 > $@
- 
- $(i_iparity_c): m4/iparity.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 iparity.m4 > $@
- 
- $(i_maxloc0_c): m4/maxloc0.m4 $(I_M4_DEPS0)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc0.m4 > $@
- 
- $(i_maxloc0s_c) : m4/maxloc0s.m4 $(I_M4_DEPS3)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc0s.m4 > $@
- 
- $(i_maxloc1_c): m4/maxloc1.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc1.m4 > $@
- 
- $(i_maxloc1s_c): m4/maxloc1s.m4 $(I_M4_DEPS4)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc1s.m4 > $@
- 
- $(i_maxloc2s_c): m4/maxloc2s.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc2s.m4 > $@
- 
- $(i_maxval_c): m4/maxval.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxval.m4 > $@
- 
- $(i_maxval0s_c): m4/maxval0s.m4 $(I_M4_DEPS5)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxval0s.m4 > $@
- 
- $(i_maxval1s_c): m4/maxval1s.m4 $(I_M4_DEPS6)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxval1s.m4 > $@
- 
- $(i_minloc0_c): m4/minloc0.m4 $(I_M4_DEPS0)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc0.m4 > $@
- 
- $(i_minloc0s_c) : m4/minloc0s.m4 $(I_M4_DEPS3)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc0s.m4 > $@
- 
- $(i_minloc1_c): m4/minloc1.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc1.m4 > $@
- 
- $(i_minloc1s_c): m4/minloc1s.m4 $(I_M4_DEPS4)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc1s.m4 > $@
- 
- $(i_minloc2s_c): m4/minloc2s.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc2s.m4 > $@
- 
- $(i_minval_c): m4/minval.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 minval.m4 > $@
- 
- $(i_minval0s_c): m4/minval0s.m4 $(I_M4_DEPS5)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 minval0s.m4 > $@
- 
- $(i_minval1s_c): m4/minval1s.m4 $(I_M4_DEPS6)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 minval1s.m4 > $@
- 
- $(i_product_c): m4/product.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 product.m4 > $@
- 
- $(i_sum_c): m4/sum.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 sum.m4 > $@
- 
- $(i_matmul_c): m4/matmul.m4 m4/matmul_internal.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 matmul.m4 > $@
- 
- $(i_matmulavx128_c): m4/matmulavx128.m4 m4/matmul_internal.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 matmulavx128.m4 > $@
- 
- $(i_matmull_c): m4/matmull.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 matmull.m4 > $@
- 
- $(i_norm2_c): m4/norm2.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 norm2.m4 > $@
- 
- $(i_parity_c): m4/parity.m4 $(I_M4_DEPS1)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 parity.m4 > $@
- 
- $(i_shape_c): m4/shape.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 shape.m4 > $@
- 
- $(i_reshape_c): m4/reshape.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 reshape.m4 > $@
- 
- $(i_eoshift1_c): m4/eoshift1.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 eoshift1.m4 > $@
- 
- $(i_eoshift3_c): m4/eoshift3.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 eoshift3.m4 > $@
- 
- $(i_cshift0_c): m4/cshift0.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 cshift0.m4 > $@
- 
- $(i_cshift1_c): m4/cshift1.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 cshift1.m4 > $@
- 
- $(i_cshift1a_c): m4/cshift1a.m4 $(I_M$_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 cshift1a.m4 > $@
- 
- $(in_pack_c): m4/in_pack.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 in_pack.m4 > $@
- 
- $(in_unpack_c): m4/in_unpack.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 in_unpack.m4 > $@
- 
- $(i_pow_c): m4/pow.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 pow.m4 > $@
- 
- $(i_powu_c): m4/powu.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 powu.m4 > $@
- 
- $(i_pack_c): m4/pack.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 pack.m4 > $@
- 
- $(i_unpack_c): m4/unpack.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 unpack.m4 > $@
- 
- $(i_spread_c): m4/spread.m4 $(I_M4_DEPS)
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 spread.m4 > $@
- 
- $(gfor_built_specific_src): m4/specific.m4 m4/head.m4
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 specific.m4 > $@
- 
- $(gfor_built_specific2_src): m4/specific2.m4 m4/head.m4
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 specific2.m4 > $@
- 
- $(gfor_misc_specifics): m4/misc_specifics.m4 m4/head.m4
- 	$(M4) -Dfile=$@ -I$(srcdir)/m4 misc_specifics.m4 > $@
- ## end of maintainer mode only rules
- endif
- 
  clean-local:
  	-rm -rf include $(version_dep)
  
! EXTRA_DIST = $(m4_files)
  
  # target overrides
  -include $(tmake_file)
--- 1131,1140 ----
  	$(MKDIR_P) include
  	cp $(srcdir)/ISO_Fortran_binding.h $@
  
  clean-local:
  	-rm -rf include $(version_dep)
  
! EXTRA_DIST = m4
  
  # target overrides
  -include $(tmake_file)
diff -Nrcpad gcc-16-20250608/libgfortran/Makefile.in gcc-16-20250615/libgfortran/Makefile.in
*** gcc-16-20250608/libgfortran/Makefile.in	Sun Jun  8 22:33:05 2025
--- gcc-16-20250615/libgfortran/Makefile.in	Sun Jun 15 22:34:31 2025
*************** libgfortran_la_LIBADD =
*** 231,267 ****
  am__objects_3 = runtime/bounds.lo runtime/compile_options.lo \
  	runtime/memory.lo runtime/string.lo runtime/select.lo \
  	$(am__objects_1) $(am__objects_2)
! am__objects_4 = generated/all_l1.lo generated/all_l2.lo \
! 	generated/all_l4.lo generated/all_l8.lo generated/all_l16.lo
! am__objects_5 = generated/any_l1.lo generated/any_l2.lo \
! 	generated/any_l4.lo generated/any_l8.lo generated/any_l16.lo
! am__objects_6 = generated/count_1_l.lo generated/count_2_l.lo \
  	generated/count_4_l.lo generated/count_8_l.lo \
! 	generated/count_16_l.lo
! am__objects_7 = generated/maxloc0_4_i1.lo generated/maxloc0_8_i1.lo \
! 	generated/maxloc0_16_i1.lo generated/maxloc0_4_i2.lo \
! 	generated/maxloc0_8_i2.lo generated/maxloc0_16_i2.lo \
! 	generated/maxloc0_4_i4.lo generated/maxloc0_8_i4.lo \
! 	generated/maxloc0_16_i4.lo generated/maxloc0_4_i8.lo \
! 	generated/maxloc0_8_i8.lo generated/maxloc0_16_i8.lo \
! 	generated/maxloc0_4_i16.lo generated/maxloc0_8_i16.lo \
! 	generated/maxloc0_16_i16.lo generated/maxloc0_4_m1.lo \
! 	generated/maxloc0_8_m1.lo generated/maxloc0_16_m1.lo \
! 	generated/maxloc0_4_m2.lo generated/maxloc0_8_m2.lo \
! 	generated/maxloc0_16_m2.lo generated/maxloc0_4_m4.lo \
! 	generated/maxloc0_8_m4.lo generated/maxloc0_16_m4.lo \
! 	generated/maxloc0_4_m8.lo generated/maxloc0_8_m8.lo \
! 	generated/maxloc0_16_m8.lo generated/maxloc0_4_m16.lo \
! 	generated/maxloc0_8_m16.lo generated/maxloc0_16_m16.lo \
! 	generated/maxloc0_4_r4.lo generated/maxloc0_8_r4.lo \
! 	generated/maxloc0_16_r4.lo generated/maxloc0_4_r8.lo \
! 	generated/maxloc0_8_r8.lo generated/maxloc0_16_r8.lo \
! 	generated/maxloc0_4_r10.lo generated/maxloc0_8_r10.lo \
! 	generated/maxloc0_16_r10.lo generated/maxloc0_4_r16.lo \
! 	generated/maxloc0_8_r16.lo generated/maxloc0_16_r16.lo \
! 	generated/maxloc0_4_r17.lo generated/maxloc0_8_r17.lo \
! 	generated/maxloc0_16_r17.lo
! am__objects_8 = generated/maxloc1_4_i1.lo generated/maxloc1_8_i1.lo \
  	generated/maxloc1_16_i1.lo generated/maxloc1_4_i2.lo \
  	generated/maxloc1_8_i2.lo generated/maxloc1_16_i2.lo \
  	generated/maxloc1_4_i4.lo generated/maxloc1_8_i4.lo \
--- 231,284 ----
  am__objects_3 = runtime/bounds.lo runtime/compile_options.lo \
  	runtime/memory.lo runtime/string.lo runtime/select.lo \
  	$(am__objects_1) $(am__objects_2)
! am__objects_4 = generated/matmul_i1.lo generated/matmul_i2.lo \
! 	generated/matmul_i4.lo generated/matmul_i8.lo \
! 	generated/matmul_i16.lo generated/matmul_r4.lo \
! 	generated/matmul_r8.lo generated/matmul_r10.lo \
! 	generated/matmul_r16.lo generated/matmul_r17.lo \
! 	generated/matmul_c4.lo generated/matmul_c8.lo \
! 	generated/matmul_c10.lo generated/matmul_c16.lo \
! 	generated/matmul_c17.lo
! am__objects_5 = generated/matmul_l4.lo generated/matmul_l8.lo \
! 	generated/matmul_l16.lo
! am__objects_6 = generated/matmulavx128_i1.lo \
! 	generated/matmulavx128_i2.lo generated/matmulavx128_i4.lo \
! 	generated/matmulavx128_i8.lo generated/matmulavx128_i16.lo \
! 	generated/matmulavx128_r4.lo generated/matmulavx128_r8.lo \
! 	generated/matmulavx128_r10.lo generated/matmulavx128_r16.lo \
! 	generated/matmulavx128_r17.lo generated/matmulavx128_c4.lo \
! 	generated/matmulavx128_c8.lo generated/matmulavx128_c10.lo \
! 	generated/matmulavx128_c16.lo generated/matmulavx128_c17.lo
! am__objects_7 = generated/all_l1.lo generated/all_l2.lo \
! 	generated/all_l4.lo generated/all_l8.lo generated/all_l16.lo \
! 	generated/any_l1.lo generated/any_l2.lo generated/any_l4.lo \
! 	generated/any_l8.lo generated/any_l16.lo \
! 	generated/count_1_l.lo generated/count_2_l.lo \
  	generated/count_4_l.lo generated/count_8_l.lo \
! 	generated/count_16_l.lo generated/maxloc0_4_i1.lo \
! 	generated/maxloc0_8_i1.lo generated/maxloc0_16_i1.lo \
! 	generated/maxloc0_4_i2.lo generated/maxloc0_8_i2.lo \
! 	generated/maxloc0_16_i2.lo generated/maxloc0_4_i4.lo \
! 	generated/maxloc0_8_i4.lo generated/maxloc0_16_i4.lo \
! 	generated/maxloc0_4_i8.lo generated/maxloc0_8_i8.lo \
! 	generated/maxloc0_16_i8.lo generated/maxloc0_4_i16.lo \
! 	generated/maxloc0_8_i16.lo generated/maxloc0_16_i16.lo \
! 	generated/maxloc0_4_m1.lo generated/maxloc0_8_m1.lo \
! 	generated/maxloc0_16_m1.lo generated/maxloc0_4_m2.lo \
! 	generated/maxloc0_8_m2.lo generated/maxloc0_16_m2.lo \
! 	generated/maxloc0_4_m4.lo generated/maxloc0_8_m4.lo \
! 	generated/maxloc0_16_m4.lo generated/maxloc0_4_m8.lo \
! 	generated/maxloc0_8_m8.lo generated/maxloc0_16_m8.lo \
! 	generated/maxloc0_4_m16.lo generated/maxloc0_8_m16.lo \
! 	generated/maxloc0_16_m16.lo generated/maxloc0_4_r4.lo \
! 	generated/maxloc0_8_r4.lo generated/maxloc0_16_r4.lo \
! 	generated/maxloc0_4_r8.lo generated/maxloc0_8_r8.lo \
! 	generated/maxloc0_16_r8.lo generated/maxloc0_4_r10.lo \
! 	generated/maxloc0_8_r10.lo generated/maxloc0_16_r10.lo \
! 	generated/maxloc0_4_r16.lo generated/maxloc0_8_r16.lo \
! 	generated/maxloc0_16_r16.lo generated/maxloc0_4_r17.lo \
! 	generated/maxloc0_8_r17.lo generated/maxloc0_16_r17.lo \
! 	generated/maxloc1_4_i1.lo generated/maxloc1_8_i1.lo \
  	generated/maxloc1_16_i1.lo generated/maxloc1_4_i2.lo \
  	generated/maxloc1_8_i2.lo generated/maxloc1_16_i2.lo \
  	generated/maxloc1_4_i4.lo generated/maxloc1_8_i4.lo \
*************** am__objects_8 = generated/maxloc1_4_i1.l
*** 283,298 ****
  	generated/maxloc1_16_r10.lo generated/maxloc1_4_r16.lo \
  	generated/maxloc1_8_r16.lo generated/maxloc1_16_r16.lo \
  	generated/maxloc1_4_r17.lo generated/maxloc1_8_r17.lo \
! 	generated/maxloc1_16_r17.lo
! am__objects_9 = generated/maxval_i1.lo generated/maxval_i2.lo \
! 	generated/maxval_i4.lo generated/maxval_i8.lo \
! 	generated/maxval_i16.lo generated/maxval_m1.lo \
! 	generated/maxval_m2.lo generated/maxval_m4.lo \
! 	generated/maxval_m8.lo generated/maxval_m16.lo \
! 	generated/maxval_r4.lo generated/maxval_r8.lo \
! 	generated/maxval_r10.lo generated/maxval_r16.lo \
! 	generated/maxval_r17.lo
! am__objects_10 = generated/minloc0_4_i1.lo generated/minloc0_8_i1.lo \
  	generated/minloc0_16_i1.lo generated/minloc0_4_i2.lo \
  	generated/minloc0_8_i2.lo generated/minloc0_16_i2.lo \
  	generated/minloc0_4_i4.lo generated/minloc0_8_i4.lo \
--- 300,314 ----
  	generated/maxloc1_16_r10.lo generated/maxloc1_4_r16.lo \
  	generated/maxloc1_8_r16.lo generated/maxloc1_16_r16.lo \
  	generated/maxloc1_4_r17.lo generated/maxloc1_8_r17.lo \
! 	generated/maxloc1_16_r17.lo generated/maxval_i1.lo \
! 	generated/maxval_i2.lo generated/maxval_i4.lo \
! 	generated/maxval_i8.lo generated/maxval_i16.lo \
! 	generated/maxval_m1.lo generated/maxval_m2.lo \
! 	generated/maxval_m4.lo generated/maxval_m8.lo \
! 	generated/maxval_m16.lo generated/maxval_r4.lo \
! 	generated/maxval_r8.lo generated/maxval_r10.lo \
! 	generated/maxval_r16.lo generated/maxval_r17.lo \
! 	generated/minloc0_4_i1.lo generated/minloc0_8_i1.lo \
  	generated/minloc0_16_i1.lo generated/minloc0_4_i2.lo \
  	generated/minloc0_8_i2.lo generated/minloc0_16_i2.lo \
  	generated/minloc0_4_i4.lo generated/minloc0_8_i4.lo \
*************** am__objects_10 = generated/minloc0_4_i1.
*** 314,484 ****
  	generated/minloc0_16_r10.lo generated/minloc0_4_r16.lo \
  	generated/minloc0_8_r16.lo generated/minloc0_16_r16.lo \
  	generated/minloc0_4_r17.lo generated/minloc0_8_r17.lo \
! 	generated/minloc0_16_r17.lo
! am__objects_11 = generated/minloc1_4_i1.lo generated/minloc1_8_i1.lo \
! 	generated/minloc1_16_i1.lo generated/minloc1_4_i2.lo \
! 	generated/minloc1_8_i2.lo generated/minloc1_16_i2.lo \
! 	generated/minloc1_4_i4.lo generated/minloc1_8_i4.lo \
! 	generated/minloc1_16_i4.lo generated/minloc1_4_i8.lo \
! 	generated/minloc1_8_i8.lo generated/minloc1_16_i8.lo \
! 	generated/minloc1_4_i16.lo generated/minloc1_8_i16.lo \
! 	generated/minloc1_16_i16.lo generated/minloc1_4_m1.lo \
! 	generated/minloc1_8_m1.lo generated/minloc1_16_m1.lo \
! 	generated/minloc1_4_m2.lo generated/minloc1_8_m2.lo \
! 	generated/minloc1_16_m2.lo generated/minloc1_4_m4.lo \
! 	generated/minloc1_8_m4.lo generated/minloc1_16_m4.lo \
! 	generated/minloc1_4_m8.lo generated/minloc1_8_m8.lo \
! 	generated/minloc1_16_m8.lo generated/minloc1_4_m16.lo \
! 	generated/minloc1_8_m16.lo generated/minloc1_16_m16.lo \
! 	generated/minloc1_4_r4.lo generated/minloc1_8_r4.lo \
! 	generated/minloc1_16_r4.lo generated/minloc1_4_r8.lo \
! 	generated/minloc1_8_r8.lo generated/minloc1_16_r8.lo \
! 	generated/minloc1_4_r10.lo generated/minloc1_8_r10.lo \
! 	generated/minloc1_16_r10.lo generated/minloc1_4_r16.lo \
! 	generated/minloc1_8_r16.lo generated/minloc1_16_r16.lo \
! 	generated/minloc1_4_r17.lo generated/minloc1_8_r17.lo \
! 	generated/minloc1_16_r17.lo
! am__objects_12 = generated/minval_i1.lo generated/minval_i2.lo \
  	generated/minval_i4.lo generated/minval_i8.lo \
  	generated/minval_i16.lo generated/minval_m1.lo \
  	generated/minval_m2.lo generated/minval_m4.lo \
  	generated/minval_m8.lo generated/minval_m16.lo \
  	generated/minval_r4.lo generated/minval_r8.lo \
  	generated/minval_r10.lo generated/minval_r16.lo \
! 	generated/minval_r17.lo
! am__objects_13 = generated/product_i1.lo generated/product_i2.lo \
! 	generated/product_i4.lo generated/product_i8.lo \
! 	generated/product_i16.lo generated/product_r4.lo \
! 	generated/product_r8.lo generated/product_r10.lo \
! 	generated/product_r16.lo generated/product_r17.lo \
! 	generated/product_c4.lo generated/product_c8.lo \
! 	generated/product_c10.lo generated/product_c16.lo \
! 	generated/product_c17.lo
! am__objects_14 = generated/sum_i1.lo generated/sum_i2.lo \
! 	generated/sum_i4.lo generated/sum_i8.lo generated/sum_i16.lo \
! 	generated/sum_r4.lo generated/sum_r8.lo generated/sum_r10.lo \
! 	generated/sum_r16.lo generated/sum_r17.lo generated/sum_c4.lo \
! 	generated/sum_c8.lo generated/sum_c10.lo generated/sum_c16.lo \
! 	generated/sum_c17.lo
! am__objects_15 = generated/bessel_r4.lo generated/bessel_r8.lo \
  	generated/bessel_r10.lo generated/bessel_r16.lo \
! 	generated/bessel_r17.lo
! am__objects_16 = generated/iall_i1.lo generated/iall_i2.lo \
! 	generated/iall_i4.lo generated/iall_i8.lo \
! 	generated/iall_i16.lo
! am__objects_17 = generated/iany_i1.lo generated/iany_i2.lo \
! 	generated/iany_i4.lo generated/iany_i8.lo \
! 	generated/iany_i16.lo
! am__objects_18 = generated/iparity_i1.lo generated/iparity_i2.lo \
! 	generated/iparity_i4.lo generated/iparity_i8.lo \
! 	generated/iparity_i16.lo
! am__objects_19 = generated/norm2_r4.lo generated/norm2_r8.lo \
  	generated/norm2_r10.lo generated/norm2_r16.lo \
! 	generated/norm2_r17.lo
! am__objects_20 = generated/parity_l1.lo generated/parity_l2.lo \
! 	generated/parity_l4.lo generated/parity_l8.lo \
! 	generated/parity_l16.lo
! am__objects_21 = generated/matmul_i1.lo generated/matmul_i2.lo \
! 	generated/matmul_i4.lo generated/matmul_i8.lo \
! 	generated/matmul_i16.lo generated/matmul_r4.lo \
! 	generated/matmul_r8.lo generated/matmul_r10.lo \
! 	generated/matmul_r16.lo generated/matmul_r17.lo \
! 	generated/matmul_c4.lo generated/matmul_c8.lo \
! 	generated/matmul_c10.lo generated/matmul_c16.lo \
! 	generated/matmul_c17.lo
! am__objects_22 = generated/matmul_l4.lo generated/matmul_l8.lo \
! 	generated/matmul_l16.lo
! am__objects_23 = generated/shape_i1.lo generated/shape_i2.lo \
  	generated/shape_i4.lo generated/shape_i8.lo \
! 	generated/shape_i16.lo
! am__objects_24 = generated/eoshift1_4.lo generated/eoshift1_8.lo \
! 	generated/eoshift1_16.lo
! am__objects_25 = generated/eoshift3_4.lo generated/eoshift3_8.lo \
! 	generated/eoshift3_16.lo
! am__objects_26 = generated/cshift1_4.lo generated/cshift1_8.lo \
! 	generated/cshift1_16.lo
! am__objects_27 = generated/reshape_i4.lo generated/reshape_i8.lo \
  	generated/reshape_i16.lo generated/reshape_r4.lo \
  	generated/reshape_r8.lo generated/reshape_r10.lo \
  	generated/reshape_r16.lo generated/reshape_r17.lo \
  	generated/reshape_c4.lo generated/reshape_c8.lo \
  	generated/reshape_c10.lo generated/reshape_c16.lo \
! 	generated/reshape_c17.lo
! am__objects_28 = generated/in_pack_i1.lo generated/in_pack_i2.lo \
! 	generated/in_pack_i4.lo generated/in_pack_i8.lo \
! 	generated/in_pack_i16.lo generated/in_pack_r4.lo \
! 	generated/in_pack_r8.lo generated/in_pack_r10.lo \
! 	generated/in_pack_r16.lo generated/in_pack_r17.lo \
! 	generated/in_pack_c4.lo generated/in_pack_c8.lo \
! 	generated/in_pack_c10.lo generated/in_pack_c16.lo \
! 	generated/in_pack_c17.lo
! am__objects_29 = generated/in_unpack_i1.lo generated/in_unpack_i2.lo \
  	generated/in_unpack_i4.lo generated/in_unpack_i8.lo \
  	generated/in_unpack_i16.lo generated/in_unpack_r4.lo \
  	generated/in_unpack_r8.lo generated/in_unpack_r10.lo \
  	generated/in_unpack_r16.lo generated/in_unpack_r17.lo \
  	generated/in_unpack_c4.lo generated/in_unpack_c8.lo \
  	generated/in_unpack_c10.lo generated/in_unpack_c16.lo \
! 	generated/in_unpack_c17.lo
! am__objects_30 = generated/pow_i4_i4.lo generated/pow_i8_i4.lo \
! 	generated/pow_i16_i4.lo generated/pow_r16_i4.lo \
! 	generated/pow_r17_i4.lo generated/pow_c4_i4.lo \
! 	generated/pow_c8_i4.lo generated/pow_c10_i4.lo \
! 	generated/pow_c16_i4.lo generated/pow_c17_i4.lo \
! 	generated/pow_i4_i8.lo generated/pow_i8_i8.lo \
! 	generated/pow_i16_i8.lo generated/pow_r4_i8.lo \
! 	generated/pow_r8_i8.lo generated/pow_r10_i8.lo \
! 	generated/pow_r16_i8.lo generated/pow_r17_i8.lo \
! 	generated/pow_c4_i8.lo generated/pow_c8_i8.lo \
! 	generated/pow_c10_i8.lo generated/pow_c16_i8.lo \
! 	generated/pow_c17_i8.lo generated/pow_i4_i16.lo \
! 	generated/pow_i8_i16.lo generated/pow_i16_i16.lo \
! 	generated/pow_r4_i16.lo generated/pow_r8_i16.lo \
! 	generated/pow_r10_i16.lo generated/pow_r16_i16.lo \
! 	generated/pow_r17_i16.lo generated/pow_c4_i16.lo \
! 	generated/pow_c8_i16.lo generated/pow_c10_i16.lo \
! 	generated/pow_c16_i16.lo generated/pow_c17_i16.lo
! am__objects_31 = generated/pack_i1.lo generated/pack_i2.lo \
! 	generated/pack_i4.lo generated/pack_i8.lo \
  	generated/pack_i16.lo generated/pack_r4.lo \
  	generated/pack_r8.lo generated/pack_r10.lo \
  	generated/pack_r16.lo generated/pack_r17.lo \
  	generated/pack_c4.lo generated/pack_c8.lo \
  	generated/pack_c10.lo generated/pack_c16.lo \
! 	generated/pack_c17.lo
! am__objects_32 = generated/unpack_i1.lo generated/unpack_i2.lo \
! 	generated/unpack_i4.lo generated/unpack_i8.lo \
! 	generated/unpack_i16.lo generated/unpack_r4.lo \
! 	generated/unpack_r8.lo generated/unpack_r10.lo \
! 	generated/unpack_r16.lo generated/unpack_r17.lo \
! 	generated/unpack_c4.lo generated/unpack_c8.lo \
! 	generated/unpack_c10.lo generated/unpack_c16.lo \
! 	generated/unpack_c17.lo
! am__objects_33 = generated/matmulavx128_i1.lo \
! 	generated/matmulavx128_i2.lo generated/matmulavx128_i4.lo \
! 	generated/matmulavx128_i8.lo generated/matmulavx128_i16.lo \
! 	generated/matmulavx128_r4.lo generated/matmulavx128_r8.lo \
! 	generated/matmulavx128_r10.lo generated/matmulavx128_r16.lo \
! 	generated/matmulavx128_r17.lo generated/matmulavx128_c4.lo \
! 	generated/matmulavx128_c8.lo generated/matmulavx128_c10.lo \
! 	generated/matmulavx128_c16.lo generated/matmulavx128_c17.lo
! am__objects_34 = generated/spread_i1.lo generated/spread_i2.lo \
  	generated/spread_i4.lo generated/spread_i8.lo \
  	generated/spread_i16.lo generated/spread_r4.lo \
  	generated/spread_r8.lo generated/spread_r10.lo \
  	generated/spread_r16.lo generated/spread_r17.lo \
  	generated/spread_c4.lo generated/spread_c8.lo \
  	generated/spread_c10.lo generated/spread_c16.lo \
! 	generated/spread_c17.lo
! am__objects_35 = generated/cshift0_i1.lo generated/cshift0_i2.lo \
! 	generated/cshift0_i4.lo generated/cshift0_i8.lo \
! 	generated/cshift0_i16.lo generated/cshift0_r4.lo \
! 	generated/cshift0_r8.lo generated/cshift0_r10.lo \
! 	generated/cshift0_r16.lo generated/cshift0_r17.lo \
! 	generated/cshift0_c4.lo generated/cshift0_c8.lo \
! 	generated/cshift0_c10.lo generated/cshift0_c16.lo \
! 	generated/cshift0_c17.lo
! am__objects_36 = generated/cshift1_4_i1.lo generated/cshift1_4_i2.lo \
  	generated/cshift1_4_i4.lo generated/cshift1_4_i8.lo \
  	generated/cshift1_4_i16.lo generated/cshift1_4_r4.lo \
  	generated/cshift1_4_r8.lo generated/cshift1_4_r10.lo \
--- 330,469 ----
  	generated/minloc0_16_r10.lo generated/minloc0_4_r16.lo \
  	generated/minloc0_8_r16.lo generated/minloc0_16_r16.lo \
  	generated/minloc0_4_r17.lo generated/minloc0_8_r17.lo \
! 	generated/minloc0_16_r17.lo generated/minloc1_4_i1.lo \
! 	generated/minloc1_8_i1.lo generated/minloc1_16_i1.lo \
! 	generated/minloc1_4_i2.lo generated/minloc1_8_i2.lo \
! 	generated/minloc1_16_i2.lo generated/minloc1_4_i4.lo \
! 	generated/minloc1_8_i4.lo generated/minloc1_16_i4.lo \
! 	generated/minloc1_4_i8.lo generated/minloc1_8_i8.lo \
! 	generated/minloc1_16_i8.lo generated/minloc1_4_i16.lo \
! 	generated/minloc1_8_i16.lo generated/minloc1_16_i16.lo \
! 	generated/minloc1_4_m1.lo generated/minloc1_8_m1.lo \
! 	generated/minloc1_16_m1.lo generated/minloc1_4_m2.lo \
! 	generated/minloc1_8_m2.lo generated/minloc1_16_m2.lo \
! 	generated/minloc1_4_m4.lo generated/minloc1_8_m4.lo \
! 	generated/minloc1_16_m4.lo generated/minloc1_4_m8.lo \
! 	generated/minloc1_8_m8.lo generated/minloc1_16_m8.lo \
! 	generated/minloc1_4_m16.lo generated/minloc1_8_m16.lo \
! 	generated/minloc1_16_m16.lo generated/minloc1_4_r4.lo \
! 	generated/minloc1_8_r4.lo generated/minloc1_16_r4.lo \
! 	generated/minloc1_4_r8.lo generated/minloc1_8_r8.lo \
! 	generated/minloc1_16_r8.lo generated/minloc1_4_r10.lo \
! 	generated/minloc1_8_r10.lo generated/minloc1_16_r10.lo \
! 	generated/minloc1_4_r16.lo generated/minloc1_8_r16.lo \
! 	generated/minloc1_16_r16.lo generated/minloc1_4_r17.lo \
! 	generated/minloc1_8_r17.lo generated/minloc1_16_r17.lo \
! 	generated/minval_i1.lo generated/minval_i2.lo \
  	generated/minval_i4.lo generated/minval_i8.lo \
  	generated/minval_i16.lo generated/minval_m1.lo \
  	generated/minval_m2.lo generated/minval_m4.lo \
  	generated/minval_m8.lo generated/minval_m16.lo \
  	generated/minval_r4.lo generated/minval_r8.lo \
  	generated/minval_r10.lo generated/minval_r16.lo \
! 	generated/minval_r17.lo generated/product_i1.lo \
! 	generated/product_i2.lo generated/product_i4.lo \
! 	generated/product_i8.lo generated/product_i16.lo \
! 	generated/product_r4.lo generated/product_r8.lo \
! 	generated/product_r10.lo generated/product_r16.lo \
! 	generated/product_r17.lo generated/product_c4.lo \
! 	generated/product_c8.lo generated/product_c10.lo \
! 	generated/product_c16.lo generated/product_c17.lo \
! 	generated/sum_i1.lo generated/sum_i2.lo generated/sum_i4.lo \
! 	generated/sum_i8.lo generated/sum_i16.lo generated/sum_r4.lo \
! 	generated/sum_r8.lo generated/sum_r10.lo generated/sum_r16.lo \
! 	generated/sum_r17.lo generated/sum_c4.lo generated/sum_c8.lo \
! 	generated/sum_c10.lo generated/sum_c16.lo generated/sum_c17.lo \
! 	generated/bessel_r4.lo generated/bessel_r8.lo \
  	generated/bessel_r10.lo generated/bessel_r16.lo \
! 	generated/bessel_r17.lo generated/iall_i1.lo \
! 	generated/iall_i2.lo generated/iall_i4.lo generated/iall_i8.lo \
! 	generated/iall_i16.lo generated/iany_i1.lo \
! 	generated/iany_i2.lo generated/iany_i4.lo generated/iany_i8.lo \
! 	generated/iany_i16.lo generated/iparity_i1.lo \
! 	generated/iparity_i2.lo generated/iparity_i4.lo \
! 	generated/iparity_i8.lo generated/iparity_i16.lo \
! 	generated/norm2_r4.lo generated/norm2_r8.lo \
  	generated/norm2_r10.lo generated/norm2_r16.lo \
! 	generated/norm2_r17.lo generated/parity_l1.lo \
! 	generated/parity_l2.lo generated/parity_l4.lo \
! 	generated/parity_l8.lo generated/parity_l16.lo \
! 	generated/shape_i1.lo generated/shape_i2.lo \
  	generated/shape_i4.lo generated/shape_i8.lo \
! 	generated/shape_i16.lo generated/eoshift1_4.lo \
! 	generated/eoshift1_8.lo generated/eoshift1_16.lo \
! 	generated/eoshift3_4.lo generated/eoshift3_8.lo \
! 	generated/eoshift3_16.lo generated/cshift1_4.lo \
! 	generated/cshift1_8.lo generated/cshift1_16.lo \
! 	generated/reshape_i4.lo generated/reshape_i8.lo \
  	generated/reshape_i16.lo generated/reshape_r4.lo \
  	generated/reshape_r8.lo generated/reshape_r10.lo \
  	generated/reshape_r16.lo generated/reshape_r17.lo \
  	generated/reshape_c4.lo generated/reshape_c8.lo \
  	generated/reshape_c10.lo generated/reshape_c16.lo \
! 	generated/reshape_c17.lo generated/in_pack_i1.lo \
! 	generated/in_pack_i2.lo generated/in_pack_i4.lo \
! 	generated/in_pack_i8.lo generated/in_pack_i16.lo \
! 	generated/in_pack_r4.lo generated/in_pack_r8.lo \
! 	generated/in_pack_r10.lo generated/in_pack_r16.lo \
! 	generated/in_pack_r17.lo generated/in_pack_c4.lo \
! 	generated/in_pack_c8.lo generated/in_pack_c10.lo \
! 	generated/in_pack_c16.lo generated/in_pack_c17.lo \
! 	generated/in_unpack_i1.lo generated/in_unpack_i2.lo \
  	generated/in_unpack_i4.lo generated/in_unpack_i8.lo \
  	generated/in_unpack_i16.lo generated/in_unpack_r4.lo \
  	generated/in_unpack_r8.lo generated/in_unpack_r10.lo \
  	generated/in_unpack_r16.lo generated/in_unpack_r17.lo \
  	generated/in_unpack_c4.lo generated/in_unpack_c8.lo \
  	generated/in_unpack_c10.lo generated/in_unpack_c16.lo \
! 	generated/in_unpack_c17.lo generated/pow_i4_i4.lo \
! 	generated/pow_i8_i4.lo generated/pow_i16_i4.lo \
! 	generated/pow_r16_i4.lo generated/pow_r17_i4.lo \
! 	generated/pow_c4_i4.lo generated/pow_c8_i4.lo \
! 	generated/pow_c10_i4.lo generated/pow_c16_i4.lo \
! 	generated/pow_c17_i4.lo generated/pow_i4_i8.lo \
! 	generated/pow_i8_i8.lo generated/pow_i16_i8.lo \
! 	generated/pow_r4_i8.lo generated/pow_r8_i8.lo \
! 	generated/pow_r10_i8.lo generated/pow_r16_i8.lo \
! 	generated/pow_r17_i8.lo generated/pow_c4_i8.lo \
! 	generated/pow_c8_i8.lo generated/pow_c10_i8.lo \
! 	generated/pow_c16_i8.lo generated/pow_c17_i8.lo \
! 	generated/pow_i4_i16.lo generated/pow_i8_i16.lo \
! 	generated/pow_i16_i16.lo generated/pow_r4_i16.lo \
! 	generated/pow_r8_i16.lo generated/pow_r10_i16.lo \
! 	generated/pow_r16_i16.lo generated/pow_r17_i16.lo \
! 	generated/pow_c4_i16.lo generated/pow_c8_i16.lo \
! 	generated/pow_c10_i16.lo generated/pow_c16_i16.lo \
! 	generated/pow_c17_i16.lo generated/pack_i1.lo \
! 	generated/pack_i2.lo generated/pack_i4.lo generated/pack_i8.lo \
  	generated/pack_i16.lo generated/pack_r4.lo \
  	generated/pack_r8.lo generated/pack_r10.lo \
  	generated/pack_r16.lo generated/pack_r17.lo \
  	generated/pack_c4.lo generated/pack_c8.lo \
  	generated/pack_c10.lo generated/pack_c16.lo \
! 	generated/pack_c17.lo generated/unpack_i1.lo \
! 	generated/unpack_i2.lo generated/unpack_i4.lo \
! 	generated/unpack_i8.lo generated/unpack_i16.lo \
! 	generated/unpack_r4.lo generated/unpack_r8.lo \
! 	generated/unpack_r10.lo generated/unpack_r16.lo \
! 	generated/unpack_r17.lo generated/unpack_c4.lo \
! 	generated/unpack_c8.lo generated/unpack_c10.lo \
! 	generated/unpack_c16.lo generated/unpack_c17.lo \
! 	generated/spread_i1.lo generated/spread_i2.lo \
  	generated/spread_i4.lo generated/spread_i8.lo \
  	generated/spread_i16.lo generated/spread_r4.lo \
  	generated/spread_r8.lo generated/spread_r10.lo \
  	generated/spread_r16.lo generated/spread_r17.lo \
  	generated/spread_c4.lo generated/spread_c8.lo \
  	generated/spread_c10.lo generated/spread_c16.lo \
! 	generated/spread_c17.lo generated/cshift0_i1.lo \
! 	generated/cshift0_i2.lo generated/cshift0_i4.lo \
! 	generated/cshift0_i8.lo generated/cshift0_i16.lo \
! 	generated/cshift0_r4.lo generated/cshift0_r8.lo \
! 	generated/cshift0_r10.lo generated/cshift0_r16.lo \
! 	generated/cshift0_r17.lo generated/cshift0_c4.lo \
! 	generated/cshift0_c8.lo generated/cshift0_c10.lo \
! 	generated/cshift0_c16.lo generated/cshift0_c17.lo \
! 	generated/cshift1_4_i1.lo generated/cshift1_4_i2.lo \
  	generated/cshift1_4_i4.lo generated/cshift1_4_i8.lo \
  	generated/cshift1_4_i16.lo generated/cshift1_4_r4.lo \
  	generated/cshift1_4_r8.lo generated/cshift1_4_r10.lo \
*************** am__objects_36 = generated/cshift1_4_i1.
*** 500,587 ****
  	generated/cshift1_16_r16.lo generated/cshift1_16_r17.lo \
  	generated/cshift1_16_c4.lo generated/cshift1_16_c8.lo \
  	generated/cshift1_16_c10.lo generated/cshift1_16_c16.lo \
! 	generated/cshift1_16_c17.lo
! am__objects_37 = generated/maxloc0_4_s1.lo generated/maxloc0_4_s4.lo \
! 	generated/maxloc0_8_s1.lo generated/maxloc0_8_s4.lo \
! 	generated/maxloc0_16_s1.lo generated/maxloc0_16_s4.lo
! am__objects_38 = generated/minloc0_4_s1.lo generated/minloc0_4_s4.lo \
! 	generated/minloc0_8_s1.lo generated/minloc0_8_s4.lo \
! 	generated/minloc0_16_s1.lo generated/minloc0_16_s4.lo
! am__objects_39 = generated/maxloc1_4_s1.lo generated/maxloc1_4_s4.lo \
! 	generated/maxloc1_8_s1.lo generated/maxloc1_8_s4.lo \
! 	generated/maxloc1_16_s1.lo generated/maxloc1_16_s4.lo
! am__objects_40 = generated/minloc1_4_s1.lo generated/minloc1_4_s4.lo \
! 	generated/minloc1_8_s1.lo generated/minloc1_8_s4.lo \
! 	generated/minloc1_16_s1.lo generated/minloc1_16_s4.lo
! am__objects_41 = generated/maxloc2_4_s1.lo generated/maxloc2_4_s4.lo \
! 	generated/maxloc2_8_s1.lo generated/maxloc2_8_s4.lo \
! 	generated/maxloc2_16_s1.lo generated/maxloc2_16_s4.lo
! am__objects_42 = generated/minloc2_4_s1.lo generated/minloc2_4_s4.lo \
! 	generated/minloc2_8_s1.lo generated/minloc2_8_s4.lo \
! 	generated/minloc2_16_s1.lo generated/minloc2_16_s4.lo
! am__objects_43 = generated/maxval0_s1.lo generated/maxval0_s4.lo
! am__objects_44 = generated/minval0_s1.lo generated/minval0_s4.lo
! am__objects_45 = generated/maxval1_s1.lo generated/maxval1_s4.lo
! am__objects_46 = generated/minval1_s1.lo generated/minval1_s4.lo
! am__objects_47 = generated/findloc0_i1.lo generated/findloc0_i2.lo \
! 	generated/findloc0_i4.lo generated/findloc0_i8.lo \
! 	generated/findloc0_i16.lo generated/findloc0_r4.lo \
! 	generated/findloc0_r8.lo generated/findloc0_r10.lo \
! 	generated/findloc0_r16.lo generated/findloc0_r17.lo \
! 	generated/findloc0_c4.lo generated/findloc0_c8.lo \
! 	generated/findloc0_c10.lo generated/findloc0_c16.lo \
! 	generated/findloc0_c17.lo
! am__objects_48 = generated/findloc0_s1.lo generated/findloc0_s4.lo
! am__objects_49 = generated/findloc1_i1.lo generated/findloc1_i2.lo \
  	generated/findloc1_i4.lo generated/findloc1_i8.lo \
  	generated/findloc1_i16.lo generated/findloc1_r4.lo \
  	generated/findloc1_r8.lo generated/findloc1_r10.lo \
  	generated/findloc1_r16.lo generated/findloc1_r17.lo \
  	generated/findloc1_c4.lo generated/findloc1_c8.lo \
  	generated/findloc1_c10.lo generated/findloc1_c16.lo \
! 	generated/findloc1_c17.lo
! am__objects_50 = generated/findloc1_s1.lo generated/findloc1_s4.lo
! am__objects_51 = generated/findloc2_s1.lo generated/findloc2_s4.lo
! am__objects_52 = runtime/ISO_Fortran_binding.lo
! am__objects_53 = generated/pow_m1_m1.lo generated/pow_m1_m2.lo \
! 	generated/pow_m1_m4.lo generated/pow_m1_m8.lo \
! 	generated/pow_m1_m16.lo generated/pow_m2_m1.lo \
! 	generated/pow_m2_m2.lo generated/pow_m2_m4.lo \
! 	generated/pow_m2_m8.lo generated/pow_m2_m16.lo \
! 	generated/pow_m4_m1.lo generated/pow_m4_m2.lo \
! 	generated/pow_m4_m4.lo generated/pow_m4_m8.lo \
! 	generated/pow_m4_m16.lo generated/pow_m8_m1.lo \
! 	generated/pow_m8_m2.lo generated/pow_m8_m4.lo \
! 	generated/pow_m8_m8.lo generated/pow_m8_m16.lo \
! 	generated/pow_m16_m1.lo generated/pow_m16_m2.lo \
! 	generated/pow_m16_m4.lo generated/pow_m16_m8.lo \
! 	generated/pow_m16_m16.lo
! am__objects_54 = $(am__objects_4) $(am__objects_5) $(am__objects_6) \
! 	$(am__objects_7) $(am__objects_8) $(am__objects_9) \
! 	$(am__objects_10) $(am__objects_11) $(am__objects_12) \
! 	$(am__objects_13) $(am__objects_14) $(am__objects_15) \
! 	$(am__objects_16) $(am__objects_17) $(am__objects_18) \
! 	$(am__objects_19) $(am__objects_20) $(am__objects_21) \
! 	$(am__objects_22) $(am__objects_23) $(am__objects_24) \
! 	$(am__objects_25) $(am__objects_26) $(am__objects_27) \
! 	$(am__objects_28) $(am__objects_29) $(am__objects_30) \
! 	$(am__objects_31) $(am__objects_32) $(am__objects_33) \
! 	$(am__objects_34) $(am__objects_35) $(am__objects_36) \
! 	$(am__objects_37) $(am__objects_38) $(am__objects_39) \
! 	$(am__objects_40) $(am__objects_41) $(am__objects_42) \
! 	$(am__objects_43) $(am__objects_44) $(am__objects_45) \
! 	$(am__objects_46) $(am__objects_47) $(am__objects_48) \
! 	$(am__objects_49) $(am__objects_50) $(am__objects_51) \
! 	$(am__objects_52) $(am__objects_53)
! @LIBGFOR_MINIMAL_FALSE@am__objects_55 = io/close.lo io/file_pos.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/format.lo io/inquire.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/intrinsics.lo io/list_read.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/lock.lo io/open.lo io/read.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/transfer.lo io/transfer128.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/unit.lo io/unix.lo io/write.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/fbuf.lo io/async.lo
! am__objects_56 = io/size_from_kind.lo $(am__objects_55)
! @LIBGFOR_MINIMAL_FALSE@am__objects_57 = intrinsics/access.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/c99_functions.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/chdir.lo intrinsics/chmod.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/clock.lo \
--- 485,554 ----
  	generated/cshift1_16_r16.lo generated/cshift1_16_r17.lo \
  	generated/cshift1_16_c4.lo generated/cshift1_16_c8.lo \
  	generated/cshift1_16_c10.lo generated/cshift1_16_c16.lo \
! 	generated/cshift1_16_c17.lo generated/findloc0_i1.lo \
! 	generated/findloc0_i2.lo generated/findloc0_i4.lo \
! 	generated/findloc0_i8.lo generated/findloc0_i16.lo \
! 	generated/findloc0_r4.lo generated/findloc0_r8.lo \
! 	generated/findloc0_r10.lo generated/findloc0_r16.lo \
! 	generated/findloc0_r17.lo generated/findloc0_c4.lo \
! 	generated/findloc0_c8.lo generated/findloc0_c10.lo \
! 	generated/findloc0_c16.lo generated/findloc0_c17.lo \
! 	generated/findloc0_s1.lo generated/findloc0_s4.lo \
! 	generated/findloc1_i1.lo generated/findloc1_i2.lo \
  	generated/findloc1_i4.lo generated/findloc1_i8.lo \
  	generated/findloc1_i16.lo generated/findloc1_r4.lo \
  	generated/findloc1_r8.lo generated/findloc1_r10.lo \
  	generated/findloc1_r16.lo generated/findloc1_r17.lo \
  	generated/findloc1_c4.lo generated/findloc1_c8.lo \
  	generated/findloc1_c10.lo generated/findloc1_c16.lo \
! 	generated/findloc1_c17.lo generated/findloc1_s1.lo \
! 	generated/findloc1_s4.lo generated/findloc2_s1.lo \
! 	generated/findloc2_s4.lo generated/maxloc0_4_s1.lo \
! 	generated/maxloc0_4_s4.lo generated/maxloc0_8_s1.lo \
! 	generated/maxloc0_8_s4.lo generated/maxloc0_16_s1.lo \
! 	generated/maxloc0_16_s4.lo generated/maxloc1_4_s1.lo \
! 	generated/maxloc1_4_s4.lo generated/maxloc1_8_s1.lo \
! 	generated/maxloc1_8_s4.lo generated/maxloc1_16_s1.lo \
! 	generated/maxloc1_16_s4.lo generated/maxloc2_4_s1.lo \
! 	generated/maxloc2_4_s4.lo generated/maxloc2_8_s1.lo \
! 	generated/maxloc2_8_s4.lo generated/maxloc2_16_s1.lo \
! 	generated/maxloc2_16_s4.lo generated/maxval0_s1.lo \
! 	generated/maxval0_s4.lo generated/maxval1_s1.lo \
! 	generated/maxval1_s4.lo generated/minloc0_4_s1.lo \
! 	generated/minloc0_4_s4.lo generated/minloc0_8_s1.lo \
! 	generated/minloc0_8_s4.lo generated/minloc0_16_s1.lo \
! 	generated/minloc0_16_s4.lo generated/minloc1_4_s1.lo \
! 	generated/minloc1_4_s4.lo generated/minloc1_8_s1.lo \
! 	generated/minloc1_8_s4.lo generated/minloc1_16_s1.lo \
! 	generated/minloc1_16_s4.lo generated/minloc2_4_s1.lo \
! 	generated/minloc2_4_s4.lo generated/minloc2_8_s1.lo \
! 	generated/minloc2_8_s4.lo generated/minloc2_16_s1.lo \
! 	generated/minloc2_16_s4.lo generated/minval0_s1.lo \
! 	generated/minval0_s4.lo generated/minval1_s1.lo \
! 	generated/minval1_s4.lo generated/pow_m1_m1.lo \
! 	generated/pow_m1_m2.lo generated/pow_m1_m4.lo \
! 	generated/pow_m1_m8.lo generated/pow_m1_m16.lo \
! 	generated/pow_m2_m1.lo generated/pow_m2_m2.lo \
! 	generated/pow_m2_m4.lo generated/pow_m2_m8.lo \
! 	generated/pow_m2_m16.lo generated/pow_m4_m1.lo \
! 	generated/pow_m4_m2.lo generated/pow_m4_m4.lo \
! 	generated/pow_m4_m8.lo generated/pow_m4_m16.lo \
! 	generated/pow_m8_m1.lo generated/pow_m8_m2.lo \
! 	generated/pow_m8_m4.lo generated/pow_m8_m8.lo \
! 	generated/pow_m8_m16.lo generated/pow_m16_m1.lo \
! 	generated/pow_m16_m2.lo generated/pow_m16_m4.lo \
! 	generated/pow_m16_m8.lo generated/pow_m16_m16.lo \
! 	$(am__objects_4) $(am__objects_5) $(am__objects_6) \
! 	runtime/ISO_Fortran_binding.lo
! @LIBGFOR_MINIMAL_FALSE@am__objects_8 = io/close.lo io/file_pos.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/format.lo io/inquire.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/intrinsics.lo io/list_read.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/lock.lo io/open.lo io/read.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/transfer.lo io/transfer128.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/unit.lo io/unix.lo io/write.lo \
  @LIBGFOR_MINIMAL_FALSE@	io/fbuf.lo io/async.lo
! am__objects_9 = io/size_from_kind.lo $(am__objects_8)
! @LIBGFOR_MINIMAL_FALSE@am__objects_10 = intrinsics/access.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/c99_functions.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/chdir.lo intrinsics/chmod.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/clock.lo \
*************** am__objects_56 = io/size_from_kind.lo $(
*** 605,612 ****
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/system_clock.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/time.lo intrinsics/umask.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/unlink.lo
! @IEEE_SUPPORT_TRUE@am__objects_58 = ieee/ieee_helper.lo
! am__objects_59 = intrinsics/associated.lo intrinsics/abort.lo \
  	intrinsics/args.lo intrinsics/cshift0.lo \
  	intrinsics/eoshift0.lo intrinsics/eoshift2.lo \
  	intrinsics/erfc_scaled.lo intrinsics/extends_type_of.lo \
--- 572,579 ----
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/system_clock.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/time.lo intrinsics/umask.lo \
  @LIBGFOR_MINIMAL_FALSE@	intrinsics/unlink.lo
! @IEEE_SUPPORT_TRUE@am__objects_11 = ieee/ieee_helper.lo
! am__objects_12 = intrinsics/associated.lo intrinsics/abort.lo \
  	intrinsics/args.lo intrinsics/cshift0.lo \
  	intrinsics/eoshift0.lo intrinsics/eoshift2.lo \
  	intrinsics/erfc_scaled.lo intrinsics/extends_type_of.lo \
*************** am__objects_59 = intrinsics/associated.l
*** 621,632 ****
  	intrinsics/selected_real_kind.lo intrinsics/trigd.lo \
  	intrinsics/unpack_generic.lo runtime/in_pack_generic.lo \
  	runtime/in_unpack_generic.lo runtime/in_pack_class.lo \
! 	runtime/in_unpack_class.lo $(am__objects_57) $(am__objects_58)
! @IEEE_SUPPORT_TRUE@am__objects_60 = ieee/ieee_arithmetic.lo \
  @IEEE_SUPPORT_TRUE@	ieee/ieee_exceptions.lo \
  @IEEE_SUPPORT_TRUE@	ieee/ieee_features.lo
! am__objects_61 =
! am__objects_62 = generated/_abs_c4.lo generated/_abs_c8.lo \
  	generated/_abs_c10.lo generated/_abs_c16.lo \
  	generated/_abs_c17.lo generated/_abs_i4.lo \
  	generated/_abs_i8.lo generated/_abs_i16.lo \
--- 588,599 ----
  	intrinsics/selected_real_kind.lo intrinsics/trigd.lo \
  	intrinsics/unpack_generic.lo runtime/in_pack_generic.lo \
  	runtime/in_unpack_generic.lo runtime/in_pack_class.lo \
! 	runtime/in_unpack_class.lo $(am__objects_10) $(am__objects_11)
! @IEEE_SUPPORT_TRUE@am__objects_13 = ieee/ieee_arithmetic.lo \
  @IEEE_SUPPORT_TRUE@	ieee/ieee_exceptions.lo \
  @IEEE_SUPPORT_TRUE@	ieee/ieee_features.lo
! am__objects_14 =
! am__objects_15 = generated/_abs_c4.lo generated/_abs_c8.lo \
  	generated/_abs_c10.lo generated/_abs_c16.lo \
  	generated/_abs_c17.lo generated/_abs_i4.lo \
  	generated/_abs_i8.lo generated/_abs_i16.lo \
*************** am__objects_62 = generated/_abs_c4.lo ge
*** 694,701 ****
  	generated/_aint_r10.lo generated/_aint_r16.lo \
  	generated/_aint_r17.lo generated/_anint_r4.lo \
  	generated/_anint_r8.lo generated/_anint_r10.lo \
! 	generated/_anint_r16.lo generated/_anint_r17.lo
! am__objects_63 = generated/_sign_i4.lo generated/_sign_i8.lo \
  	generated/_sign_i16.lo generated/_sign_r4.lo \
  	generated/_sign_r8.lo generated/_sign_r10.lo \
  	generated/_sign_r16.lo generated/_sign_r17.lo \
--- 661,668 ----
  	generated/_aint_r10.lo generated/_aint_r16.lo \
  	generated/_aint_r17.lo generated/_anint_r4.lo \
  	generated/_anint_r8.lo generated/_anint_r10.lo \
! 	generated/_anint_r16.lo generated/_anint_r17.lo \
! 	generated/_sign_i4.lo generated/_sign_i8.lo \
  	generated/_sign_i16.lo generated/_sign_r4.lo \
  	generated/_sign_r8.lo generated/_sign_r10.lo \
  	generated/_sign_r16.lo generated/_sign_r17.lo \
*************** am__objects_63 = generated/_sign_i4.lo g
*** 709,722 ****
  	generated/_mod_i8.lo generated/_mod_i16.lo \
  	generated/_mod_r4.lo generated/_mod_r8.lo \
  	generated/_mod_r10.lo generated/_mod_r16.lo \
! 	generated/_mod_r17.lo
! am__objects_64 = generated/misc_specifics.lo
! am__objects_65 = $(am__objects_62) $(am__objects_63) $(am__objects_64) \
  	intrinsics/dprod_r8.lo intrinsics/f2c_specifics.lo \
  	intrinsics/random_init.lo
! am_libgfortran_la_OBJECTS = $(am__objects_3) $(am__objects_54) \
! 	$(am__objects_56) $(am__objects_59) $(am__objects_60) \
! 	$(am__objects_61) $(am__objects_65)
  libgfortran_la_OBJECTS = $(am_libgfortran_la_OBJECTS)
  AM_V_P = $(am__v_P_@AM_V@)
  am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
--- 676,687 ----
  	generated/_mod_i8.lo generated/_mod_i16.lo \
  	generated/_mod_r4.lo generated/_mod_r8.lo \
  	generated/_mod_r10.lo generated/_mod_r16.lo \
! 	generated/_mod_r17.lo generated/misc_specifics.lo \
  	intrinsics/dprod_r8.lo intrinsics/f2c_specifics.lo \
  	intrinsics/random_init.lo
! am_libgfortran_la_OBJECTS = $(am__objects_3) $(am__objects_7) \
! 	$(am__objects_9) $(am__objects_12) $(am__objects_13) \
! 	$(am__objects_14) $(am__objects_15)
  libgfortran_la_OBJECTS = $(am_libgfortran_la_OBJECTS)
  AM_V_P = $(am__v_P_@AM_V@)
  am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
*************** gfor_helper_src = intrinsics/associated.
*** 1048,1149 ****
  gfor_src = runtime/bounds.c runtime/compile_options.c runtime/memory.c \
  	runtime/string.c runtime/select.c $(am__append_6) \
  	$(am__append_7)
! i_all_c = \
  generated/all_l1.c \
  generated/all_l2.c \
  generated/all_l4.c \
  generated/all_l8.c \
! generated/all_l16.c
! 
! i_any_c = \
  generated/any_l1.c \
  generated/any_l2.c \
  generated/any_l4.c \
  generated/any_l8.c \
! generated/any_l16.c
! 
! i_bessel_c = \
! generated/bessel_r4.c \
! generated/bessel_r8.c \
! generated/bessel_r10.c \
! generated/bessel_r16.c \
! generated/bessel_r17.c
! 
! i_count_c = \
  generated/count_1_l.c \
  generated/count_2_l.c \
  generated/count_4_l.c \
  generated/count_8_l.c \
! generated/count_16_l.c
! 
! i_iall_c = \
! generated/iall_i1.c \
! generated/iall_i2.c \
! generated/iall_i4.c \
! generated/iall_i8.c \
! generated/iall_i16.c
! 
! i_iany_c = \
! generated/iany_i1.c \
! generated/iany_i2.c \
! generated/iany_i4.c \
! generated/iany_i8.c \
! generated/iany_i16.c
! 
! i_iparity_c = \
! generated/iparity_i1.c \
! generated/iparity_i2.c \
! generated/iparity_i4.c \
! generated/iparity_i8.c \
! generated/iparity_i16.c
! 
! i_findloc0_c = \
! generated/findloc0_i1.c \
! generated/findloc0_i2.c \
! generated/findloc0_i4.c \
! generated/findloc0_i8.c \
! generated/findloc0_i16.c \
! generated/findloc0_r4.c \
! generated/findloc0_r8.c \
! generated/findloc0_r10.c \
! generated/findloc0_r16.c \
! generated/findloc0_r17.c \
! generated/findloc0_c4.c \
! generated/findloc0_c8.c \
! generated/findloc0_c10.c \
! generated/findloc0_c16.c \
! generated/findloc0_c17.c
! 
! i_findloc0s_c = \
! generated/findloc0_s1.c \
! generated/findloc0_s4.c
! 
! i_findloc1_c = \
! generated/findloc1_i1.c \
! generated/findloc1_i2.c \
! generated/findloc1_i4.c \
! generated/findloc1_i8.c \
! generated/findloc1_i16.c \
! generated/findloc1_r4.c \
! generated/findloc1_r8.c \
! generated/findloc1_r10.c \
! generated/findloc1_r16.c \
! generated/findloc1_r17.c \
! generated/findloc1_c4.c \
! generated/findloc1_c8.c \
! generated/findloc1_c10.c \
! generated/findloc1_c16.c \
! generated/findloc1_c17.c
! 
! i_findloc1s_c = \
! generated/findloc1_s1.c \
! generated/findloc1_s4.c
! 
! i_findloc2s_c = \
! generated/findloc2_s1.c \
! generated/findloc2_s4.c
! 
! i_maxloc0_c = \
  generated/maxloc0_4_i1.c \
  generated/maxloc0_8_i1.c \
  generated/maxloc0_16_i1.c \
--- 1013,1073 ----
  gfor_src = runtime/bounds.c runtime/compile_options.c runtime/memory.c \
  	runtime/string.c runtime/select.c $(am__append_6) \
  	$(am__append_7)
! i_matmul_c = \
! generated/matmul_i1.c \
! generated/matmul_i2.c \
! generated/matmul_i4.c \
! generated/matmul_i8.c \
! generated/matmul_i16.c \
! generated/matmul_r4.c \
! generated/matmul_r8.c \
! generated/matmul_r10.c \
! generated/matmul_r16.c \
! generated/matmul_r17.c \
! generated/matmul_c4.c \
! generated/matmul_c8.c \
! generated/matmul_c10.c \
! generated/matmul_c16.c \
! generated/matmul_c17.c
! 
! i_matmulavx128_c = \
! generated/matmulavx128_i1.c \
! generated/matmulavx128_i2.c \
! generated/matmulavx128_i4.c \
! generated/matmulavx128_i8.c \
! generated/matmulavx128_i16.c \
! generated/matmulavx128_r4.c \
! generated/matmulavx128_r8.c \
! generated/matmulavx128_r10.c \
! generated/matmulavx128_r16.c \
! generated/matmulavx128_r17.c \
! generated/matmulavx128_c4.c \
! generated/matmulavx128_c8.c \
! generated/matmulavx128_c10.c \
! generated/matmulavx128_c16.c \
! generated/matmulavx128_c17.c
! 
! i_matmull_c = \
! generated/matmul_l4.c \
! generated/matmul_l8.c \
! generated/matmul_l16.c
! 
! gfor_built_src = \
  generated/all_l1.c \
  generated/all_l2.c \
  generated/all_l4.c \
  generated/all_l8.c \
! generated/all_l16.c \
  generated/any_l1.c \
  generated/any_l2.c \
  generated/any_l4.c \
  generated/any_l8.c \
! generated/any_l16.c \
  generated/count_1_l.c \
  generated/count_2_l.c \
  generated/count_4_l.c \
  generated/count_8_l.c \
! generated/count_16_l.c \
  generated/maxloc0_4_i1.c \
  generated/maxloc0_8_i1.c \
  generated/maxloc0_16_i1.c \
*************** generated/maxloc0_8_r16.c \
*** 1188,1204 ****
  generated/maxloc0_16_r16.c \
  generated/maxloc0_4_r17.c \
  generated/maxloc0_8_r17.c \
! generated/maxloc0_16_r17.c
! 
! i_maxloc0s_c = \
! generated/maxloc0_4_s1.c \
! generated/maxloc0_4_s4.c \
! generated/maxloc0_8_s1.c \
! generated/maxloc0_8_s4.c \
! generated/maxloc0_16_s1.c \
! generated/maxloc0_16_s4.c
! 
! i_maxloc1_c = \
  generated/maxloc1_4_i1.c \
  generated/maxloc1_8_i1.c \
  generated/maxloc1_16_i1.c \
--- 1112,1118 ----
  generated/maxloc0_16_r16.c \
  generated/maxloc0_4_r17.c \
  generated/maxloc0_8_r17.c \
! generated/maxloc0_16_r17.c \
  generated/maxloc1_4_i1.c \
  generated/maxloc1_8_i1.c \
  generated/maxloc1_16_i1.c \
*************** generated/maxloc1_8_r16.c \
*** 1243,1267 ****
  generated/maxloc1_16_r16.c \
  generated/maxloc1_4_r17.c \
  generated/maxloc1_8_r17.c \
! generated/maxloc1_16_r17.c
! 
! i_maxloc1s_c = \
! generated/maxloc1_4_s1.c \
! generated/maxloc1_4_s4.c \
! generated/maxloc1_8_s1.c \
! generated/maxloc1_8_s4.c \
! generated/maxloc1_16_s1.c \
! generated/maxloc1_16_s4.c
! 
! i_maxloc2s_c = \
! generated/maxloc2_4_s1.c \
! generated/maxloc2_4_s4.c \
! generated/maxloc2_8_s1.c \
! generated/maxloc2_8_s4.c \
! generated/maxloc2_16_s1.c \
! generated/maxloc2_16_s4.c
! 
! i_maxval_c = \
  generated/maxval_i1.c \
  generated/maxval_i2.c \
  generated/maxval_i4.c \
--- 1157,1163 ----
  generated/maxloc1_16_r16.c \
  generated/maxloc1_4_r17.c \
  generated/maxloc1_8_r17.c \
! generated/maxloc1_16_r17.c \
  generated/maxval_i1.c \
  generated/maxval_i2.c \
  generated/maxval_i4.c \
*************** generated/maxval_r4.c \
*** 1276,1292 ****
  generated/maxval_r8.c \
  generated/maxval_r10.c \
  generated/maxval_r16.c \
! generated/maxval_r17.c
! 
! i_maxval0s_c = \
! generated/maxval0_s1.c \
! generated/maxval0_s4.c
! 
! i_maxval1s_c = \
! generated/maxval1_s1.c \
! generated/maxval1_s4.c
! 
! i_minloc0_c = \
  generated/minloc0_4_i1.c \
  generated/minloc0_8_i1.c \
  generated/minloc0_16_i1.c \
--- 1172,1178 ----
  generated/maxval_r8.c \
  generated/maxval_r10.c \
  generated/maxval_r16.c \
! generated/maxval_r17.c \
  generated/minloc0_4_i1.c \
  generated/minloc0_8_i1.c \
  generated/minloc0_16_i1.c \
*************** generated/minloc0_8_r16.c \
*** 1331,1347 ****
  generated/minloc0_16_r16.c \
  generated/minloc0_4_r17.c \
  generated/minloc0_8_r17.c \
! generated/minloc0_16_r17.c
! 
! i_minloc0s_c = \
! generated/minloc0_4_s1.c \
! generated/minloc0_4_s4.c \
! generated/minloc0_8_s1.c \
! generated/minloc0_8_s4.c \
! generated/minloc0_16_s1.c \
! generated/minloc0_16_s4.c
! 
! i_minloc1_c = \
  generated/minloc1_4_i1.c \
  generated/minloc1_8_i1.c \
  generated/minloc1_16_i1.c \
--- 1217,1223 ----
  generated/minloc0_16_r16.c \
  generated/minloc0_4_r17.c \
  generated/minloc0_8_r17.c \
! generated/minloc0_16_r17.c \
  generated/minloc1_4_i1.c \
  generated/minloc1_8_i1.c \
  generated/minloc1_16_i1.c \
*************** generated/minloc1_8_r16.c \
*** 1386,1410 ****
  generated/minloc1_16_r16.c \
  generated/minloc1_4_r17.c \
  generated/minloc1_8_r17.c \
! generated/minloc1_16_r17.c
! 
! i_minloc1s_c = \
! generated/minloc1_4_s1.c \
! generated/minloc1_4_s4.c \
! generated/minloc1_8_s1.c \
! generated/minloc1_8_s4.c \
! generated/minloc1_16_s1.c \
! generated/minloc1_16_s4.c
! 
! i_minloc2s_c = \
! generated/minloc2_4_s1.c \
! generated/minloc2_4_s4.c \
! generated/minloc2_8_s1.c \
! generated/minloc2_8_s4.c \
! generated/minloc2_16_s1.c \
! generated/minloc2_16_s4.c
! 
! i_minval_c = \
  generated/minval_i1.c \
  generated/minval_i2.c \
  generated/minval_i4.c \
--- 1262,1268 ----
  generated/minloc1_16_r16.c \
  generated/minloc1_4_r17.c \
  generated/minloc1_8_r17.c \
! generated/minloc1_16_r17.c \
  generated/minval_i1.c \
  generated/minval_i2.c \
  generated/minval_i4.c \
*************** generated/minval_r4.c \
*** 1419,1466 ****
  generated/minval_r8.c \
  generated/minval_r10.c \
  generated/minval_r16.c \
! generated/minval_r17.c
! 
! i_minval0s_c = \
! generated/minval0_s1.c \
! generated/minval0_s4.c
! 
! i_minval1s_c = \
! generated/minval1_s1.c \
! generated/minval1_s4.c
! 
! i_norm2_c = \
! generated/norm2_r4.c \
! generated/norm2_r8.c \
! generated/norm2_r10.c \
! generated/norm2_r16.c \
! generated/norm2_r17.c
! 
! i_parity_c = \
! generated/parity_l1.c \
! generated/parity_l2.c \
! generated/parity_l4.c \
! generated/parity_l8.c \
! generated/parity_l16.c
! 
! i_sum_c = \
! generated/sum_i1.c \
! generated/sum_i2.c \
! generated/sum_i4.c \
! generated/sum_i8.c \
! generated/sum_i16.c \
! generated/sum_r4.c \
! generated/sum_r8.c \
! generated/sum_r10.c \
! generated/sum_r16.c \
! generated/sum_r17.c \
! generated/sum_c4.c \
! generated/sum_c8.c \
! generated/sum_c10.c \
! generated/sum_c16.c \
! generated/sum_c17.c
! 
! i_product_c = \
  generated/product_i1.c \
  generated/product_i2.c \
  generated/product_i4.c \
--- 1277,1283 ----
  generated/minval_r8.c \
  generated/minval_r10.c \
  generated/minval_r16.c \
! generated/minval_r17.c \
  generated/product_i1.c \
  generated/product_i2.c \
  generated/product_i4.c \
*************** generated/product_c4.c \
*** 1475,1529 ****
  generated/product_c8.c \
  generated/product_c10.c \
  generated/product_c16.c \
! generated/product_c17.c
! 
! i_matmul_c = \
! generated/matmul_i1.c \
! generated/matmul_i2.c \
! generated/matmul_i4.c \
! generated/matmul_i8.c \
! generated/matmul_i16.c \
! generated/matmul_r4.c \
! generated/matmul_r8.c \
! generated/matmul_r10.c \
! generated/matmul_r16.c \
! generated/matmul_r17.c \
! generated/matmul_c4.c \
! generated/matmul_c8.c \
! generated/matmul_c10.c \
! generated/matmul_c16.c \
! generated/matmul_c17.c
! 
! i_matmulavx128_c = \
! generated/matmulavx128_i1.c \
! generated/matmulavx128_i2.c \
! generated/matmulavx128_i4.c \
! generated/matmulavx128_i8.c \
! generated/matmulavx128_i16.c \
! generated/matmulavx128_r4.c \
! generated/matmulavx128_r8.c \
! generated/matmulavx128_r10.c \
! generated/matmulavx128_r16.c \
! generated/matmulavx128_r17.c \
! generated/matmulavx128_c4.c \
! generated/matmulavx128_c8.c \
! generated/matmulavx128_c10.c \
! generated/matmulavx128_c16.c \
! generated/matmulavx128_c17.c
! 
! i_matmull_c = \
! generated/matmul_l4.c \
! generated/matmul_l8.c \
! generated/matmul_l16.c
! 
! i_shape_c = \
  generated/shape_i1.c \
  generated/shape_i2.c \
  generated/shape_i4.c \
  generated/shape_i8.c \
! generated/shape_i16.c
! 
! i_reshape_c = \
  generated/reshape_i4.c \
  generated/reshape_i8.c \
  generated/reshape_i16.c \
--- 1292,1357 ----
  generated/product_c8.c \
  generated/product_c10.c \
  generated/product_c16.c \
! generated/product_c17.c \
! generated/sum_i1.c \
! generated/sum_i2.c \
! generated/sum_i4.c \
! generated/sum_i8.c \
! generated/sum_i16.c \
! generated/sum_r4.c \
! generated/sum_r8.c \
! generated/sum_r10.c \
! generated/sum_r16.c \
! generated/sum_r17.c \
! generated/sum_c4.c \
! generated/sum_c8.c \
! generated/sum_c10.c \
! generated/sum_c16.c \
! generated/sum_c17.c \
! generated/bessel_r4.c \
! generated/bessel_r8.c \
! generated/bessel_r10.c \
! generated/bessel_r16.c \
! generated/bessel_r17.c \
! generated/iall_i1.c \
! generated/iall_i2.c \
! generated/iall_i4.c \
! generated/iall_i8.c \
! generated/iall_i16.c \
! generated/iany_i1.c \
! generated/iany_i2.c \
! generated/iany_i4.c \
! generated/iany_i8.c \
! generated/iany_i16.c \
! generated/iparity_i1.c \
! generated/iparity_i2.c \
! generated/iparity_i4.c \
! generated/iparity_i8.c \
! generated/iparity_i16.c \
! generated/norm2_r4.c \
! generated/norm2_r8.c \
! generated/norm2_r10.c \
! generated/norm2_r16.c \
! generated/norm2_r17.c \
! generated/parity_l1.c \
! generated/parity_l2.c \
! generated/parity_l4.c \
! generated/parity_l8.c \
! generated/parity_l16.c \
  generated/shape_i1.c \
  generated/shape_i2.c \
  generated/shape_i4.c \
  generated/shape_i8.c \
! generated/shape_i16.c \
! generated/eoshift1_4.c \
! generated/eoshift1_8.c \
! generated/eoshift1_16.c \
! generated/eoshift3_4.c \
! generated/eoshift3_8.c \
! generated/eoshift3_16.c \
! generated/cshift1_4.c \
! generated/cshift1_8.c \
! generated/cshift1_16.c \
  generated/reshape_i4.c \
  generated/reshape_i8.c \
  generated/reshape_i16.c \
*************** generated/reshape_c4.c \
*** 1536,1623 ****
  generated/reshape_c8.c \
  generated/reshape_c10.c \
  generated/reshape_c16.c \
! generated/reshape_c17.c
! 
! i_eoshift1_c = \
! generated/eoshift1_4.c \
! generated/eoshift1_8.c \
! generated/eoshift1_16.c
! 
! i_eoshift3_c = \
! generated/eoshift3_4.c \
! generated/eoshift3_8.c \
! generated/eoshift3_16.c
! 
! i_cshift0_c = \
! generated/cshift0_i1.c \
! generated/cshift0_i2.c \
! generated/cshift0_i4.c \
! generated/cshift0_i8.c \
! generated/cshift0_i16.c \
! generated/cshift0_r4.c \
! generated/cshift0_r8.c \
! generated/cshift0_r10.c \
! generated/cshift0_r16.c \
! generated/cshift0_r17.c \
! generated/cshift0_c4.c \
! generated/cshift0_c8.c \
! generated/cshift0_c10.c \
! generated/cshift0_c16.c \
! generated/cshift0_c17.c
! 
! i_cshift1_c = \
! generated/cshift1_4.c \
! generated/cshift1_8.c \
! generated/cshift1_16.c
! 
! i_cshift1a_c = \
! generated/cshift1_4_i1.c \
! generated/cshift1_4_i2.c \
! generated/cshift1_4_i4.c \
! generated/cshift1_4_i8.c \
! generated/cshift1_4_i16.c \
! generated/cshift1_4_r4.c \
! generated/cshift1_4_r8.c \
! generated/cshift1_4_r10.c \
! generated/cshift1_4_r16.c \
! generated/cshift1_4_r17.c \
! generated/cshift1_4_c4.c \
! generated/cshift1_4_c8.c \
! generated/cshift1_4_c10.c \
! generated/cshift1_4_c16.c \
! generated/cshift1_4_c17.c \
! generated/cshift1_8_i1.c \
! generated/cshift1_8_i2.c \
! generated/cshift1_8_i4.c \
! generated/cshift1_8_i8.c \
! generated/cshift1_8_i16.c \
! generated/cshift1_8_r4.c \
! generated/cshift1_8_r8.c \
! generated/cshift1_8_r10.c \
! generated/cshift1_8_r16.c \
! generated/cshift1_8_r17.c \
! generated/cshift1_8_c4.c \
! generated/cshift1_8_c8.c \
! generated/cshift1_8_c10.c \
! generated/cshift1_8_c16.c \
! generated/cshift1_8_c17.c \
! generated/cshift1_16_i1.c \
! generated/cshift1_16_i2.c \
! generated/cshift1_16_i4.c \
! generated/cshift1_16_i8.c \
! generated/cshift1_16_i16.c \
! generated/cshift1_16_r4.c \
! generated/cshift1_16_r8.c \
! generated/cshift1_16_r10.c \
! generated/cshift1_16_r16.c \
! generated/cshift1_16_r17.c \
! generated/cshift1_16_c4.c \
! generated/cshift1_16_c8.c \
! generated/cshift1_16_c10.c \
! generated/cshift1_16_c16.c \
! generated/cshift1_16_c17.c
! 
! in_pack_c = \
  generated/in_pack_i1.c \
  generated/in_pack_i2.c \
  generated/in_pack_i4.c \
--- 1364,1370 ----
  generated/reshape_c8.c \
  generated/reshape_c10.c \
  generated/reshape_c16.c \
! generated/reshape_c17.c \
  generated/in_pack_i1.c \
  generated/in_pack_i2.c \
  generated/in_pack_i4.c \
*************** generated/in_pack_c4.c \
*** 1632,1640 ****
  generated/in_pack_c8.c \
  generated/in_pack_c10.c \
  generated/in_pack_c16.c \
! generated/in_pack_c17.c
! 
! in_unpack_c = \
  generated/in_unpack_i1.c \
  generated/in_unpack_i2.c \
  generated/in_unpack_i4.c \
--- 1379,1385 ----
  generated/in_pack_c8.c \
  generated/in_pack_c10.c \
  generated/in_pack_c16.c \
! generated/in_pack_c17.c \
  generated/in_unpack_i1.c \
  generated/in_unpack_i2.c \
  generated/in_unpack_i4.c \
*************** generated/in_unpack_c4.c \
*** 1649,1657 ****
  generated/in_unpack_c8.c \
  generated/in_unpack_c10.c \
  generated/in_unpack_c16.c \
! generated/in_unpack_c17.c
! 
! i_pow_c = \
  generated/pow_i4_i4.c \
  generated/pow_i8_i4.c \
  generated/pow_i16_i4.c \
--- 1394,1400 ----
  generated/in_unpack_c8.c \
  generated/in_unpack_c10.c \
  generated/in_unpack_c16.c \
! generated/in_unpack_c17.c \
  generated/pow_i4_i4.c \
  generated/pow_i8_i4.c \
  generated/pow_i16_i4.c \
*************** generated/pow_c4_i16.c \
*** 1687,1722 ****
  generated/pow_c8_i16.c \
  generated/pow_c10_i16.c \
  generated/pow_c16_i16.c \
! generated/pow_c17_i16.c
! 
! i_powu_c = \
! generated/pow_m1_m1.c \
! generated/pow_m1_m2.c \
! generated/pow_m1_m4.c \
! generated/pow_m1_m8.c \
! generated/pow_m1_m16.c \
! generated/pow_m2_m1.c \
! generated/pow_m2_m2.c \
! generated/pow_m2_m4.c \
! generated/pow_m2_m8.c \
! generated/pow_m2_m16.c \
! generated/pow_m4_m1.c \
! generated/pow_m4_m2.c \
! generated/pow_m4_m4.c \
! generated/pow_m4_m8.c \
! generated/pow_m4_m16.c \
! generated/pow_m8_m1.c \
! generated/pow_m8_m2.c \
! generated/pow_m8_m4.c \
! generated/pow_m8_m8.c \
! generated/pow_m8_m16.c \
! generated/pow_m16_m1.c \
! generated/pow_m16_m2.c \
! generated/pow_m16_m4.c \
! generated/pow_m16_m8.c \
! generated/pow_m16_m16.c
! 
! i_pack_c = \
  generated/pack_i1.c \
  generated/pack_i2.c \
  generated/pack_i4.c \
--- 1430,1436 ----
  generated/pow_c8_i16.c \
  generated/pow_c10_i16.c \
  generated/pow_c16_i16.c \
! generated/pow_c17_i16.c \
  generated/pack_i1.c \
  generated/pack_i2.c \
  generated/pack_i4.c \
*************** generated/pack_c4.c \
*** 1731,1739 ****
  generated/pack_c8.c \
  generated/pack_c10.c \
  generated/pack_c16.c \
! generated/pack_c17.c
! 
! i_unpack_c = \
  generated/unpack_i1.c \
  generated/unpack_i2.c \
  generated/unpack_i4.c \
--- 1445,1451 ----
  generated/pack_c8.c \
  generated/pack_c10.c \
  generated/pack_c16.c \
! generated/pack_c17.c \
  generated/unpack_i1.c \
  generated/unpack_i2.c \
  generated/unpack_i4.c \
*************** generated/unpack_c4.c \
*** 1748,1756 ****
  generated/unpack_c8.c \
  generated/unpack_c10.c \
  generated/unpack_c16.c \
! generated/unpack_c17.c
! 
! i_spread_c = \
  generated/spread_i1.c \
  generated/spread_i2.c \
  generated/spread_i4.c \
--- 1460,1466 ----
  generated/unpack_c8.c \
  generated/unpack_c10.c \
  generated/unpack_c16.c \
! generated/unpack_c17.c \
  generated/spread_i1.c \
  generated/spread_i2.c \
  generated/spread_i4.c \
*************** generated/spread_c4.c \
*** 1765,1808 ****
  generated/spread_c8.c \
  generated/spread_c10.c \
  generated/spread_c16.c \
! generated/spread_c17.c
! 
! i_isobinding_c = \
! runtime/ISO_Fortran_binding.c
! 
! m4_files = m4/iparm.m4 m4/ifunction.m4 m4/iforeach.m4 m4/all.m4 \
! 	m4/any.m4 m4/count.m4 m4/maxloc0.m4 m4/maxloc1.m4 m4/maxval.m4 \
! 	m4/minloc0.m4 m4/minloc1.m4 m4/minval.m4 m4/product.m4 m4/sum.m4 \
! 	m4/matmul.m4 m4/matmull.m4 m4/ifunction_logical.m4 \
! 	m4/ctrig.m4 m4/cexp.m4 m4/chyp.m4 m4/mtype.m4 \
! 	m4/specific.m4 m4/specific2.m4 m4/head.m4 m4/shape.m4 m4/reshape.m4 \
! 	m4/eoshift1.m4 m4/eoshift3.m4 \
! 	m4/pow.m4 \
! 	m4/misc_specifics.m4 m4/pack.m4 \
! 	m4/unpack.m4 m4/spread.m4 m4/bessel.m4 m4/norm2.m4 m4/parity.m4 \
! 	m4/iall.m4 m4/iany.m4 m4/iparity.m4 m4/iforeach-s.m4 m4/findloc0.m4 \
! 	m4/findloc0s.m4 m4/ifindloc0.m4 m4/findloc1.m4 m4/ifindloc1.m4 \
! 	m4/findloc2s.m4 m4/ifindloc2.m4
! 
! gfor_built_src = $(i_all_c) $(i_any_c) $(i_count_c) $(i_maxloc0_c) \
! 	$(i_maxloc1_c) $(i_maxval_c) $(i_minloc0_c) $(i_minloc1_c) $(i_minval_c) \
! 	$(i_product_c) $(i_sum_c) $(i_bessel_c) $(i_iall_c) $(i_iany_c) \
! 	$(i_iparity_c) $(i_norm2_c) $(i_parity_c) \
! 	$(i_matmul_c) $(i_matmull_c) $(i_shape_c) $(i_eoshift1_c) \
! 	$(i_eoshift3_c) $(i_cshift1_c) $(i_reshape_c) $(in_pack_c) $(in_unpack_c) \
! 	$(i_pow_c) $(i_pack_c) $(i_unpack_c) $(i_matmulavx128_c) \
! 	$(i_spread_c) selected_int_kind.inc selected_real_kind.inc kinds.h \
! 	$(i_cshift0_c) kinds.inc c99_protos.inc fpu-target.h fpu-target.inc \
! 	include/ISO_Fortran_binding.h \
! 	$(i_cshift1a_c) $(i_maxloc0s_c) $(i_minloc0s_c) $(i_maxloc1s_c) \
! 	$(i_minloc1s_c) $(i_maxloc2s_c) $(i_minloc2s_c) $(i_maxvals_c) \
! 	$(i_maxval0s_c) $(i_minval0s_c) $(i_maxval1s_c) $(i_minval1s_c) \
! 	$(i_findloc0_c) $(i_findloc0s_c) $(i_findloc1_c) $(i_findloc1s_c) \
! 	$(i_findloc2s_c) $(i_isobinding_c) $(i_powu_c)
  
  
! # Machine generated specifics
! gfor_built_specific_src = \
  generated/_abs_c4.F90 \
  generated/_abs_c8.F90 \
  generated/_abs_c10.F90 \
--- 1475,1654 ----
  generated/spread_c8.c \
  generated/spread_c10.c \
  generated/spread_c16.c \
! generated/spread_c17.c \
! generated/cshift0_i1.c \
! generated/cshift0_i2.c \
! generated/cshift0_i4.c \
! generated/cshift0_i8.c \
! generated/cshift0_i16.c \
! generated/cshift0_r4.c \
! generated/cshift0_r8.c \
! generated/cshift0_r10.c \
! generated/cshift0_r16.c \
! generated/cshift0_r17.c \
! generated/cshift0_c4.c \
! generated/cshift0_c8.c \
! generated/cshift0_c10.c \
! generated/cshift0_c16.c \
! generated/cshift0_c17.c \
! generated/cshift1_4_i1.c \
! generated/cshift1_4_i2.c \
! generated/cshift1_4_i4.c \
! generated/cshift1_4_i8.c \
! generated/cshift1_4_i16.c \
! generated/cshift1_4_r4.c \
! generated/cshift1_4_r8.c \
! generated/cshift1_4_r10.c \
! generated/cshift1_4_r16.c \
! generated/cshift1_4_r17.c \
! generated/cshift1_4_c4.c \
! generated/cshift1_4_c8.c \
! generated/cshift1_4_c10.c \
! generated/cshift1_4_c16.c \
! generated/cshift1_4_c17.c \
! generated/cshift1_8_i1.c \
! generated/cshift1_8_i2.c \
! generated/cshift1_8_i4.c \
! generated/cshift1_8_i8.c \
! generated/cshift1_8_i16.c \
! generated/cshift1_8_r4.c \
! generated/cshift1_8_r8.c \
! generated/cshift1_8_r10.c \
! generated/cshift1_8_r16.c \
! generated/cshift1_8_r17.c \
! generated/cshift1_8_c4.c \
! generated/cshift1_8_c8.c \
! generated/cshift1_8_c10.c \
! generated/cshift1_8_c16.c \
! generated/cshift1_8_c17.c \
! generated/cshift1_16_i1.c \
! generated/cshift1_16_i2.c \
! generated/cshift1_16_i4.c \
! generated/cshift1_16_i8.c \
! generated/cshift1_16_i16.c \
! generated/cshift1_16_r4.c \
! generated/cshift1_16_r8.c \
! generated/cshift1_16_r10.c \
! generated/cshift1_16_r16.c \
! generated/cshift1_16_r17.c \
! generated/cshift1_16_c4.c \
! generated/cshift1_16_c8.c \
! generated/cshift1_16_c10.c \
! generated/cshift1_16_c16.c \
! generated/cshift1_16_c17.c \
! generated/findloc0_i1.c \
! generated/findloc0_i2.c \
! generated/findloc0_i4.c \
! generated/findloc0_i8.c \
! generated/findloc0_i16.c \
! generated/findloc0_r4.c \
! generated/findloc0_r8.c \
! generated/findloc0_r10.c \
! generated/findloc0_r16.c \
! generated/findloc0_r17.c \
! generated/findloc0_c4.c \
! generated/findloc0_c8.c \
! generated/findloc0_c10.c \
! generated/findloc0_c16.c \
! generated/findloc0_c17.c \
! generated/findloc0_s1.c \
! generated/findloc0_s4.c \
! generated/findloc1_i1.c \
! generated/findloc1_i2.c \
! generated/findloc1_i4.c \
! generated/findloc1_i8.c \
! generated/findloc1_i16.c \
! generated/findloc1_r4.c \
! generated/findloc1_r8.c \
! generated/findloc1_r10.c \
! generated/findloc1_r16.c \
! generated/findloc1_r17.c \
! generated/findloc1_c4.c \
! generated/findloc1_c8.c \
! generated/findloc1_c10.c \
! generated/findloc1_c16.c \
! generated/findloc1_c17.c \
! generated/findloc1_s1.c \
! generated/findloc1_s4.c \
! generated/findloc2_s1.c \
! generated/findloc2_s4.c \
! generated/maxloc0_4_s1.c \
! generated/maxloc0_4_s4.c \
! generated/maxloc0_8_s1.c \
! generated/maxloc0_8_s4.c \
! generated/maxloc0_16_s1.c \
! generated/maxloc0_16_s4.c \
! generated/maxloc1_4_s1.c \
! generated/maxloc1_4_s4.c \
! generated/maxloc1_8_s1.c \
! generated/maxloc1_8_s4.c \
! generated/maxloc1_16_s1.c \
! generated/maxloc1_16_s4.c \
! generated/maxloc2_4_s1.c \
! generated/maxloc2_4_s4.c \
! generated/maxloc2_8_s1.c \
! generated/maxloc2_8_s4.c \
! generated/maxloc2_16_s1.c \
! generated/maxloc2_16_s4.c \
! generated/maxval0_s1.c \
! generated/maxval0_s4.c \
! generated/maxval1_s1.c \
! generated/maxval1_s4.c \
! generated/minloc0_4_s1.c \
! generated/minloc0_4_s4.c \
! generated/minloc0_8_s1.c \
! generated/minloc0_8_s4.c \
! generated/minloc0_16_s1.c \
! generated/minloc0_16_s4.c \
! generated/minloc1_4_s1.c \
! generated/minloc1_4_s4.c \
! generated/minloc1_8_s1.c \
! generated/minloc1_8_s4.c \
! generated/minloc1_16_s1.c \
! generated/minloc1_16_s4.c \
! generated/minloc2_4_s1.c \
! generated/minloc2_4_s4.c \
! generated/minloc2_8_s1.c \
! generated/minloc2_8_s4.c \
! generated/minloc2_16_s1.c \
! generated/minloc2_16_s4.c \
! generated/minval0_s1.c \
! generated/minval0_s4.c \
! generated/minval1_s1.c \
! generated/minval1_s4.c \
! generated/pow_m1_m1.c \
! generated/pow_m1_m2.c \
! generated/pow_m1_m4.c \
! generated/pow_m1_m8.c \
! generated/pow_m1_m16.c \
! generated/pow_m2_m1.c \
! generated/pow_m2_m2.c \
! generated/pow_m2_m4.c \
! generated/pow_m2_m8.c \
! generated/pow_m2_m16.c \
! generated/pow_m4_m1.c \
! generated/pow_m4_m2.c \
! generated/pow_m4_m4.c \
! generated/pow_m4_m8.c \
! generated/pow_m4_m16.c \
! generated/pow_m8_m1.c \
! generated/pow_m8_m2.c \
! generated/pow_m8_m4.c \
! generated/pow_m8_m8.c \
! generated/pow_m8_m16.c \
! generated/pow_m16_m1.c \
! generated/pow_m16_m2.c \
! generated/pow_m16_m4.c \
! generated/pow_m16_m8.c \
! generated/pow_m16_m16.c \
! $(i_matmul_c) $(i_matmull_c) $(i_matmulavx128_c) \
! selected_int_kind.inc selected_real_kind.inc kinds.h \
! kinds.inc c99_protos.inc fpu-target.h fpu-target.inc \
! include/ISO_Fortran_binding.h runtime/ISO_Fortran_binding.c
  
  
! # Specifics
! gfor_specific_src = \
  generated/_abs_c4.F90 \
  generated/_abs_c8.F90 \
  generated/_abs_c10.F90 \
*************** generated/_anint_r4.F90 \
*** 1940,1948 ****
  generated/_anint_r8.F90 \
  generated/_anint_r10.F90 \
  generated/_anint_r16.F90 \
! generated/_anint_r17.F90
! 
! gfor_built_specific2_src = \
  generated/_sign_i4.F90 \
  generated/_sign_i8.F90 \
  generated/_sign_i16.F90 \
--- 1786,1792 ----
  generated/_anint_r8.F90 \
  generated/_anint_r10.F90 \
  generated/_anint_r16.F90 \
! generated/_anint_r17.F90 \
  generated/_sign_i4.F90 \
  generated/_sign_i8.F90 \
  generated/_sign_i16.F90 \
*************** generated/_mod_r4.F90 \
*** 1971,2005 ****
  generated/_mod_r8.F90 \
  generated/_mod_r10.F90 \
  generated/_mod_r16.F90 \
! generated/_mod_r17.F90
! 
! gfor_misc_specifics = generated/misc_specifics.F90
! gfor_specific_src = \
! $(gfor_built_specific_src) \
! $(gfor_built_specific2_src) \
! $(gfor_misc_specifics) \
  intrinsics/dprod_r8.f90 \
  intrinsics/f2c_specifics.F90 \
  intrinsics/random_init.f90
  
! BUILT_SOURCES = $(gfor_built_src) $(gfor_built_specific_src) \
! 	$(gfor_built_specific2_src) $(gfor_misc_specifics)
! 
  libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \
  	$(gfor_helper_src) $(gfor_ieee_src) $(gfor_io_headers) $(gfor_specific_src)
  
! I_M4_DEPS = m4/iparm.m4 m4/mtype.m4
! I_M4_DEPS0 = $(I_M4_DEPS) m4/iforeach.m4
! I_M4_DEPS1 = $(I_M4_DEPS) m4/ifunction.m4
! I_M4_DEPS2 = $(I_M4_DEPS) m4/ifunction_logical.m4
! I_M4_DEPS3 = $(I_M4_DEPS) m4/iforeach-s.m4
! I_M4_DEPS4 = $(I_M4_DEPS) m4/ifunction-s.m4
! I_M4_DEPS5 = $(I_M4_DEPS) m4/iforeach-s2.m4
! I_M4_DEPS6 = $(I_M4_DEPS) m4/ifunction-s2.m4
! I_M4_DEPS7 = $(I_M4_DEPS) m4/ifindloc0.m4
! I_M4_DEPS8 = $(I_M4_DEPS) m4/ifindloc1.m4
! I_M4_DEPS9 = $(I_M4_DEPS) m4/ifindloc2.m4
! EXTRA_DIST = $(m4_files)
  MULTISRCTOP = 
  MULTIBUILDTOP = 
  MULTIDIRS = 
--- 1815,1831 ----
  generated/_mod_r8.F90 \
  generated/_mod_r10.F90 \
  generated/_mod_r16.F90 \
! generated/_mod_r17.F90 \
! generated/misc_specifics.F90 \
  intrinsics/dprod_r8.f90 \
  intrinsics/f2c_specifics.F90 \
  intrinsics/random_init.f90
  
! BUILT_SOURCES = $(gfor_built_src)
  libgfortran_la_SOURCES = $(gfor_src) $(gfor_built_src) $(gfor_io_src) \
  	$(gfor_helper_src) $(gfor_ieee_src) $(gfor_io_headers) $(gfor_specific_src)
  
! EXTRA_DIST = m4
  MULTISRCTOP = 
  MULTIBUILDTOP = 
  MULTIDIRS = 
*************** generated/parity_l8.lo: generated/$(am__
*** 2752,2793 ****
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/parity_l16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_i1.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_i2.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_i4.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_i8.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_i16.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_r4.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_r8.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_r10.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_r16.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_r17.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_c4.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_c8.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_c10.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_c16.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_c17.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_l4.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_l8.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmul_l16.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
  generated/shape_i1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/shape_i2.lo: generated/$(am__dirstamp) \
--- 2578,2583 ----
*************** generated/unpack_c16.lo: generated/$(am_
*** 3034,3069 ****
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/unpack_c17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_i1.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_i2.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_i4.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_i8.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_i16.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_r4.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_r8.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_r10.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_r16.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_r17.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_c4.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_c8.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_c10.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_c16.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
- generated/matmulavx128_c17.lo: generated/$(am__dirstamp) \
- 	generated/$(DEPDIR)/$(am__dirstamp)
  generated/spread_i1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/spread_i2.lo: generated/$(am__dirstamp) \
--- 2824,2829 ----
*************** generated/cshift1_16_c16.lo: generated/$
*** 3214,3381 ****
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/cshift1_16_c17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxval0_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxval0_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minval0_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minval0_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxval1_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxval1_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minval1_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minval1_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i2.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r10.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c10.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i2.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r10.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c10.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc2_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc2_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
- runtime/ISO_Fortran_binding.lo: runtime/$(am__dirstamp) \
- 	runtime/$(DEPDIR)/$(am__dirstamp)
  generated/pow_m1_m1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/pow_m1_m2.lo: generated/$(am__dirstamp) \
--- 2974,3139 ----
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/cshift1_16_c17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i2.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_i16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r10.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_r17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c10.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_c17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc0_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i2.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_i16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r10.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_r17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c8.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c10.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_c17.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc1_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc2_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/findloc2_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc0_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc1_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxloc2_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxval0_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxval0_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxval1_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/maxval1_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc0_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc1_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_4_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_4_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_8_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_8_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_16_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minloc2_16_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minval0_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minval0_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minval1_s1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
! generated/minval1_s4.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/pow_m1_m1.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/pow_m1_m2.lo: generated/$(am__dirstamp) \
*************** generated/pow_m16_m8.lo: generated/$(am_
*** 3426,3431 ****
--- 3184,3257 ----
  	generated/$(DEPDIR)/$(am__dirstamp)
  generated/pow_m16_m16.lo: generated/$(am__dirstamp) \
  	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_i1.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_i2.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_i4.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_i8.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_i16.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_r4.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_r8.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_r10.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_r16.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_r17.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_c4.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_c8.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_c10.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_c16.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_c17.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_l4.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_l8.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmul_l16.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_i1.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_i2.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_i4.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_i8.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_i16.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_r4.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_r8.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_r10.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_r16.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_r17.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_c4.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_c8.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_c10.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_c16.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ generated/matmulavx128_c17.lo: generated/$(am__dirstamp) \
+ 	generated/$(DEPDIR)/$(am__dirstamp)
+ runtime/ISO_Fortran_binding.lo: runtime/$(am__dirstamp) \
+ 	runtime/$(DEPDIR)/$(am__dirstamp)
  io/$(am__dirstamp):
  	@$(MKDIR_P) io
  	@: > io/$(am__dirstamp)
*************** include/ISO_Fortran_binding.h: $(srcdir)
*** 5094,5255 ****
  	$(MKDIR_P) include
  	cp $(srcdir)/ISO_Fortran_binding.h $@
  
- @MAINTAINER_MODE_TRUE@$(i_all_c): m4/all.m4 $(I_M4_DEPS2)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 all.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_bessel_c): m4/bessel.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 bessel.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_any_c): m4/any.m4 $(I_M4_DEPS2)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 any.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_count_c): m4/count.m4 $(I_M4_DEPS2)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 count.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_findloc0_c): m4/findloc0.m4 $(I_M4_DEPS7)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc0.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_findloc0s_c): m4/findloc0s.m4 $(I_M4_DEPS7)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc0s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_findloc1_c): m4/findloc1.m4 $(I_M4_DEPS8)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc1.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_findloc1s_c): m4/findloc1s.m4 $(I_M4_DEPS8)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc1s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_findloc2s_c): m4/findloc2s.m4 $(I_M4_DEPS9)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 findloc2s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_iall_c): m4/iall.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 iall.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_iany_c): m4/iany.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 iany.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_iparity_c): m4/iparity.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 iparity.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_maxloc0_c): m4/maxloc0.m4 $(I_M4_DEPS0)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc0.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_maxloc0s_c) : m4/maxloc0s.m4 $(I_M4_DEPS3)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc0s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_maxloc1_c): m4/maxloc1.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc1.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_maxloc1s_c): m4/maxloc1s.m4 $(I_M4_DEPS4)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc1s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_maxloc2s_c): m4/maxloc2s.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxloc2s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_maxval_c): m4/maxval.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxval.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_maxval0s_c): m4/maxval0s.m4 $(I_M4_DEPS5)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxval0s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_maxval1s_c): m4/maxval1s.m4 $(I_M4_DEPS6)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 maxval1s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_minloc0_c): m4/minloc0.m4 $(I_M4_DEPS0)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc0.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_minloc0s_c) : m4/minloc0s.m4 $(I_M4_DEPS3)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc0s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_minloc1_c): m4/minloc1.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc1.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_minloc1s_c): m4/minloc1s.m4 $(I_M4_DEPS4)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc1s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_minloc2s_c): m4/minloc2s.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 minloc2s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_minval_c): m4/minval.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 minval.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_minval0s_c): m4/minval0s.m4 $(I_M4_DEPS5)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 minval0s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_minval1s_c): m4/minval1s.m4 $(I_M4_DEPS6)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 minval1s.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_product_c): m4/product.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 product.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_sum_c): m4/sum.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 sum.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_matmul_c): m4/matmul.m4 m4/matmul_internal.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 matmul.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_matmulavx128_c): m4/matmulavx128.m4 m4/matmul_internal.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 matmulavx128.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_matmull_c): m4/matmull.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 matmull.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_norm2_c): m4/norm2.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 norm2.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_parity_c): m4/parity.m4 $(I_M4_DEPS1)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 parity.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_shape_c): m4/shape.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 shape.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_reshape_c): m4/reshape.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 reshape.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_eoshift1_c): m4/eoshift1.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 eoshift1.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_eoshift3_c): m4/eoshift3.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 eoshift3.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_cshift0_c): m4/cshift0.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 cshift0.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_cshift1_c): m4/cshift1.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 cshift1.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_cshift1a_c): m4/cshift1a.m4 $(I_M$_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 cshift1a.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(in_pack_c): m4/in_pack.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 in_pack.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(in_unpack_c): m4/in_unpack.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 in_unpack.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_pow_c): m4/pow.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 pow.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_powu_c): m4/powu.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 powu.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_pack_c): m4/pack.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 pack.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_unpack_c): m4/unpack.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 unpack.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(i_spread_c): m4/spread.m4 $(I_M4_DEPS)
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 spread.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(gfor_built_specific_src): m4/specific.m4 m4/head.m4
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 specific.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(gfor_built_specific2_src): m4/specific2.m4 m4/head.m4
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 specific2.m4 > $@
- 
- @MAINTAINER_MODE_TRUE@$(gfor_misc_specifics): m4/misc_specifics.m4 m4/head.m4
- @MAINTAINER_MODE_TRUE@	$(M4) -Dfile=$@ -I$(srcdir)/m4 misc_specifics.m4 > $@
- 
  clean-local:
  	-rm -rf include $(version_dep)
  
--- 4920,4925 ----
diff -Nrcpad gcc-16-20250608/libgfortran/regenerate.sh gcc-16-20250615/libgfortran/regenerate.sh
*** gcc-16-20250608/libgfortran/regenerate.sh	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libgfortran/regenerate.sh	Sun Jun 15 22:33:48 2025
***************
*** 0 ****
--- 1,1250 ----
+ #!/bin/sh
+ 
+ # Unless the user specified their desired m4 implementation through the
+ # M4 environment variable, find a GNU M4 in the PATH.
+ 
+ if [ -z "$M4" ] ; then
+   for prog in gm4 gnum4 m4 ; do
+     if $prog --version 2>/dev/null | grep -q 'GNU M4' ; then
+       M4=${prog}
+       break
+     fi
+   done
+ fi
+ 
+ if [ -z "$M4" ] ; then
+   echo "GNU M4 not found"
+   exit 1
+ else
+   echo "Found GNU M4: ${M4}"
+ fi
+ 
+ # Make sure we run in the correct directory
+ 
+ if [ ! -e "./m4/pow.m4" ] ; then
+   echo "This script should be run in the libgfortran/ directory"
+   exit 1
+ fi
+ 
+ 
+ i_all_c="
+ generated/all_l1.c
+ generated/all_l2.c
+ generated/all_l4.c
+ generated/all_l8.c
+ generated/all_l16.c
+ "
+ 
+ i_any_c="
+ generated/any_l1.c
+ generated/any_l2.c
+ generated/any_l4.c
+ generated/any_l8.c
+ generated/any_l16.c
+ "
+ 
+ i_bessel_c="
+ generated/bessel_r4.c
+ generated/bessel_r8.c
+ generated/bessel_r10.c
+ generated/bessel_r16.c
+ generated/bessel_r17.c
+ "
+ 
+ i_count_c="
+ generated/count_1_l.c
+ generated/count_2_l.c
+ generated/count_4_l.c
+ generated/count_8_l.c
+ generated/count_16_l.c
+ "
+ 
+ i_iall_c="
+ generated/iall_i1.c
+ generated/iall_i2.c
+ generated/iall_i4.c
+ generated/iall_i8.c
+ generated/iall_i16.c
+ "
+ 
+ i_iany_c="
+ generated/iany_i1.c
+ generated/iany_i2.c
+ generated/iany_i4.c
+ generated/iany_i8.c
+ generated/iany_i16.c
+ "
+ 
+ i_iparity_c="
+ generated/iparity_i1.c
+ generated/iparity_i2.c
+ generated/iparity_i4.c
+ generated/iparity_i8.c
+ generated/iparity_i16.c
+ "
+ 
+ i_findloc0_c="
+ generated/findloc0_i1.c
+ generated/findloc0_i2.c
+ generated/findloc0_i4.c
+ generated/findloc0_i8.c
+ generated/findloc0_i16.c
+ generated/findloc0_r4.c
+ generated/findloc0_r8.c
+ generated/findloc0_r10.c
+ generated/findloc0_r16.c
+ generated/findloc0_r17.c
+ generated/findloc0_c4.c
+ generated/findloc0_c8.c
+ generated/findloc0_c10.c
+ generated/findloc0_c16.c
+ generated/findloc0_c17.c
+ "
+ 
+ i_findloc0s_c="
+ generated/findloc0_s1.c
+ generated/findloc0_s4.c
+ "
+ 
+ i_findloc1_c="
+ generated/findloc1_i1.c
+ generated/findloc1_i2.c
+ generated/findloc1_i4.c
+ generated/findloc1_i8.c
+ generated/findloc1_i16.c
+ generated/findloc1_r4.c
+ generated/findloc1_r8.c
+ generated/findloc1_r10.c
+ generated/findloc1_r16.c
+ generated/findloc1_r17.c
+ generated/findloc1_c4.c
+ generated/findloc1_c8.c
+ generated/findloc1_c10.c
+ generated/findloc1_c16.c
+ generated/findloc1_c17.c
+ "
+ 
+ i_findloc1s_c="
+ generated/findloc1_s1.c
+ generated/findloc1_s4.c
+ "
+ 
+ i_findloc2s_c="
+ generated/findloc2_s1.c
+ generated/findloc2_s4.c
+ "
+ 
+ i_maxloc0_c="
+ generated/maxloc0_4_i1.c
+ generated/maxloc0_8_i1.c
+ generated/maxloc0_16_i1.c
+ generated/maxloc0_4_i2.c
+ generated/maxloc0_8_i2.c
+ generated/maxloc0_16_i2.c
+ generated/maxloc0_4_i4.c
+ generated/maxloc0_8_i4.c
+ generated/maxloc0_16_i4.c
+ generated/maxloc0_4_i8.c
+ generated/maxloc0_8_i8.c
+ generated/maxloc0_16_i8.c
+ generated/maxloc0_4_i16.c
+ generated/maxloc0_8_i16.c
+ generated/maxloc0_16_i16.c
+ generated/maxloc0_4_m1.c
+ generated/maxloc0_8_m1.c
+ generated/maxloc0_16_m1.c
+ generated/maxloc0_4_m2.c
+ generated/maxloc0_8_m2.c
+ generated/maxloc0_16_m2.c
+ generated/maxloc0_4_m4.c
+ generated/maxloc0_8_m4.c
+ generated/maxloc0_16_m4.c
+ generated/maxloc0_4_m8.c
+ generated/maxloc0_8_m8.c
+ generated/maxloc0_16_m8.c
+ generated/maxloc0_4_m16.c
+ generated/maxloc0_8_m16.c
+ generated/maxloc0_16_m16.c
+ generated/maxloc0_4_r4.c
+ generated/maxloc0_8_r4.c
+ generated/maxloc0_16_r4.c
+ generated/maxloc0_4_r8.c
+ generated/maxloc0_8_r8.c
+ generated/maxloc0_16_r8.c
+ generated/maxloc0_4_r10.c
+ generated/maxloc0_8_r10.c
+ generated/maxloc0_16_r10.c
+ generated/maxloc0_4_r16.c
+ generated/maxloc0_8_r16.c
+ generated/maxloc0_16_r16.c
+ generated/maxloc0_4_r17.c
+ generated/maxloc0_8_r17.c
+ generated/maxloc0_16_r17.c
+ "
+ 
+ i_maxloc0s_c="
+ generated/maxloc0_4_s1.c
+ generated/maxloc0_4_s4.c
+ generated/maxloc0_8_s1.c
+ generated/maxloc0_8_s4.c
+ generated/maxloc0_16_s1.c
+ generated/maxloc0_16_s4.c
+ "
+ 
+ i_maxloc1_c="
+ generated/maxloc1_4_i1.c
+ generated/maxloc1_8_i1.c
+ generated/maxloc1_16_i1.c
+ generated/maxloc1_4_i2.c
+ generated/maxloc1_8_i2.c
+ generated/maxloc1_16_i2.c
+ generated/maxloc1_4_i4.c
+ generated/maxloc1_8_i4.c
+ generated/maxloc1_16_i4.c
+ generated/maxloc1_4_i8.c
+ generated/maxloc1_8_i8.c
+ generated/maxloc1_16_i8.c
+ generated/maxloc1_4_i16.c
+ generated/maxloc1_8_i16.c
+ generated/maxloc1_16_i16.c
+ generated/maxloc1_4_m1.c
+ generated/maxloc1_8_m1.c
+ generated/maxloc1_16_m1.c
+ generated/maxloc1_4_m2.c
+ generated/maxloc1_8_m2.c
+ generated/maxloc1_16_m2.c
+ generated/maxloc1_4_m4.c
+ generated/maxloc1_8_m4.c
+ generated/maxloc1_16_m4.c
+ generated/maxloc1_4_m8.c
+ generated/maxloc1_8_m8.c
+ generated/maxloc1_16_m8.c
+ generated/maxloc1_4_m16.c
+ generated/maxloc1_8_m16.c
+ generated/maxloc1_16_m16.c
+ generated/maxloc1_4_r4.c
+ generated/maxloc1_8_r4.c
+ generated/maxloc1_16_r4.c
+ generated/maxloc1_4_r8.c
+ generated/maxloc1_8_r8.c
+ generated/maxloc1_16_r8.c
+ generated/maxloc1_4_r10.c
+ generated/maxloc1_8_r10.c
+ generated/maxloc1_16_r10.c
+ generated/maxloc1_4_r16.c
+ generated/maxloc1_8_r16.c
+ generated/maxloc1_16_r16.c
+ generated/maxloc1_4_r17.c
+ generated/maxloc1_8_r17.c
+ generated/maxloc1_16_r17.c
+ "
+ 
+ i_maxloc1s_c="
+ generated/maxloc1_4_s1.c
+ generated/maxloc1_4_s4.c
+ generated/maxloc1_8_s1.c
+ generated/maxloc1_8_s4.c
+ generated/maxloc1_16_s1.c
+ generated/maxloc1_16_s4.c
+ "
+ 
+ i_maxloc2s_c="
+ generated/maxloc2_4_s1.c
+ generated/maxloc2_4_s4.c
+ generated/maxloc2_8_s1.c
+ generated/maxloc2_8_s4.c
+ generated/maxloc2_16_s1.c
+ generated/maxloc2_16_s4.c
+ "
+ 
+ i_maxval_c="
+ generated/maxval_i1.c
+ generated/maxval_i2.c
+ generated/maxval_i4.c
+ generated/maxval_i8.c
+ generated/maxval_i16.c
+ generated/maxval_m1.c
+ generated/maxval_m2.c
+ generated/maxval_m4.c
+ generated/maxval_m8.c
+ generated/maxval_m16.c
+ generated/maxval_r4.c
+ generated/maxval_r8.c
+ generated/maxval_r10.c
+ generated/maxval_r16.c
+ generated/maxval_r17.c
+ "
+ 
+ i_maxval0s_c="
+ generated/maxval0_s1.c
+ generated/maxval0_s4.c
+ "
+ 
+ i_maxval1s_c="
+ generated/maxval1_s1.c
+ generated/maxval1_s4.c
+ "
+ 
+ i_minloc0_c="
+ generated/minloc0_4_i1.c
+ generated/minloc0_8_i1.c
+ generated/minloc0_16_i1.c
+ generated/minloc0_4_i2.c
+ generated/minloc0_8_i2.c
+ generated/minloc0_16_i2.c
+ generated/minloc0_4_i4.c
+ generated/minloc0_8_i4.c
+ generated/minloc0_16_i4.c
+ generated/minloc0_4_i8.c
+ generated/minloc0_8_i8.c
+ generated/minloc0_16_i8.c
+ generated/minloc0_4_i16.c
+ generated/minloc0_8_i16.c
+ generated/minloc0_16_i16.c
+ generated/minloc0_4_m1.c
+ generated/minloc0_8_m1.c
+ generated/minloc0_16_m1.c
+ generated/minloc0_4_m2.c
+ generated/minloc0_8_m2.c
+ generated/minloc0_16_m2.c
+ generated/minloc0_4_m4.c
+ generated/minloc0_8_m4.c
+ generated/minloc0_16_m4.c
+ generated/minloc0_4_m8.c
+ generated/minloc0_8_m8.c
+ generated/minloc0_16_m8.c
+ generated/minloc0_4_m16.c
+ generated/minloc0_8_m16.c
+ generated/minloc0_16_m16.c
+ generated/minloc0_4_r4.c
+ generated/minloc0_8_r4.c
+ generated/minloc0_16_r4.c
+ generated/minloc0_4_r8.c
+ generated/minloc0_8_r8.c
+ generated/minloc0_16_r8.c
+ generated/minloc0_4_r10.c
+ generated/minloc0_8_r10.c
+ generated/minloc0_16_r10.c
+ generated/minloc0_4_r16.c
+ generated/minloc0_8_r16.c
+ generated/minloc0_16_r16.c
+ generated/minloc0_4_r17.c
+ generated/minloc0_8_r17.c
+ generated/minloc0_16_r17.c
+ "
+ 
+ i_minloc0s_c="
+ generated/minloc0_4_s1.c
+ generated/minloc0_4_s4.c
+ generated/minloc0_8_s1.c
+ generated/minloc0_8_s4.c
+ generated/minloc0_16_s1.c
+ generated/minloc0_16_s4.c
+ "
+ 
+ i_minloc1_c="
+ generated/minloc1_4_i1.c
+ generated/minloc1_8_i1.c
+ generated/minloc1_16_i1.c
+ generated/minloc1_4_i2.c
+ generated/minloc1_8_i2.c
+ generated/minloc1_16_i2.c
+ generated/minloc1_4_i4.c
+ generated/minloc1_8_i4.c
+ generated/minloc1_16_i4.c
+ generated/minloc1_4_i8.c
+ generated/minloc1_8_i8.c
+ generated/minloc1_16_i8.c
+ generated/minloc1_4_i16.c
+ generated/minloc1_8_i16.c
+ generated/minloc1_16_i16.c
+ generated/minloc1_4_m1.c
+ generated/minloc1_8_m1.c
+ generated/minloc1_16_m1.c
+ generated/minloc1_4_m2.c
+ generated/minloc1_8_m2.c
+ generated/minloc1_16_m2.c
+ generated/minloc1_4_m4.c
+ generated/minloc1_8_m4.c
+ generated/minloc1_16_m4.c
+ generated/minloc1_4_m8.c
+ generated/minloc1_8_m8.c
+ generated/minloc1_16_m8.c
+ generated/minloc1_4_m16.c
+ generated/minloc1_8_m16.c
+ generated/minloc1_16_m16.c
+ generated/minloc1_4_r4.c
+ generated/minloc1_8_r4.c
+ generated/minloc1_16_r4.c
+ generated/minloc1_4_r8.c
+ generated/minloc1_8_r8.c
+ generated/minloc1_16_r8.c
+ generated/minloc1_4_r10.c
+ generated/minloc1_8_r10.c
+ generated/minloc1_16_r10.c
+ generated/minloc1_4_r16.c
+ generated/minloc1_8_r16.c
+ generated/minloc1_16_r16.c
+ generated/minloc1_4_r17.c
+ generated/minloc1_8_r17.c
+ generated/minloc1_16_r17.c
+ "
+ i_minloc1s_c="
+ generated/minloc1_4_s1.c
+ generated/minloc1_4_s4.c
+ generated/minloc1_8_s1.c
+ generated/minloc1_8_s4.c
+ generated/minloc1_16_s1.c
+ generated/minloc1_16_s4.c
+ "
+ 
+ i_minloc2s_c="
+ generated/minloc2_4_s1.c
+ generated/minloc2_4_s4.c
+ generated/minloc2_8_s1.c
+ generated/minloc2_8_s4.c
+ generated/minloc2_16_s1.c
+ generated/minloc2_16_s4.c
+ "
+ 
+ i_minval_c="
+ generated/minval_i1.c
+ generated/minval_i2.c
+ generated/minval_i4.c
+ generated/minval_i8.c
+ generated/minval_i16.c
+ generated/minval_m1.c
+ generated/minval_m2.c
+ generated/minval_m4.c
+ generated/minval_m8.c
+ generated/minval_m16.c
+ generated/minval_r4.c
+ generated/minval_r8.c
+ generated/minval_r10.c
+ generated/minval_r16.c
+ generated/minval_r17.c
+ "
+ 
+ i_minval0s_c="
+ generated/minval0_s1.c
+ generated/minval0_s4.c
+ "
+ 
+ i_minval1s_c="
+ generated/minval1_s1.c
+ generated/minval1_s4.c
+ "
+ 
+ i_norm2_c="
+ generated/norm2_r4.c
+ generated/norm2_r8.c
+ generated/norm2_r10.c
+ generated/norm2_r16.c
+ generated/norm2_r17.c
+ "
+ i_parity_c="
+ generated/parity_l1.c
+ generated/parity_l2.c
+ generated/parity_l4.c
+ generated/parity_l8.c
+ generated/parity_l16.c
+ "
+ 
+ i_sum_c="
+ generated/sum_i1.c
+ generated/sum_i2.c
+ generated/sum_i4.c
+ generated/sum_i8.c
+ generated/sum_i16.c
+ generated/sum_r4.c
+ generated/sum_r8.c
+ generated/sum_r10.c
+ generated/sum_r16.c
+ generated/sum_r17.c
+ generated/sum_c4.c
+ generated/sum_c8.c
+ generated/sum_c10.c
+ generated/sum_c16.c
+ generated/sum_c17.c
+ "
+ 
+ i_product_c="
+ generated/product_i1.c
+ generated/product_i2.c
+ generated/product_i4.c
+ generated/product_i8.c
+ generated/product_i16.c
+ generated/product_r4.c
+ generated/product_r8.c
+ generated/product_r10.c
+ generated/product_r16.c
+ generated/product_r17.c
+ generated/product_c4.c
+ generated/product_c8.c
+ generated/product_c10.c
+ generated/product_c16.c
+ generated/product_c17.c
+ "
+ 
+ i_matmul_c="
+ generated/matmul_i1.c
+ generated/matmul_i2.c
+ generated/matmul_i4.c
+ generated/matmul_i8.c
+ generated/matmul_i16.c
+ generated/matmul_r4.c
+ generated/matmul_r8.c
+ generated/matmul_r10.c
+ generated/matmul_r16.c
+ generated/matmul_r17.c
+ generated/matmul_c4.c
+ generated/matmul_c8.c
+ generated/matmul_c10.c
+ generated/matmul_c16.c
+ generated/matmul_c17.c
+ "
+ 
+ i_matmulavx128_c="
+ generated/matmulavx128_i1.c
+ generated/matmulavx128_i2.c
+ generated/matmulavx128_i4.c
+ generated/matmulavx128_i8.c
+ generated/matmulavx128_i16.c
+ generated/matmulavx128_r4.c
+ generated/matmulavx128_r8.c
+ generated/matmulavx128_r10.c
+ generated/matmulavx128_r16.c
+ generated/matmulavx128_r17.c
+ generated/matmulavx128_c4.c
+ generated/matmulavx128_c8.c
+ generated/matmulavx128_c10.c
+ generated/matmulavx128_c16.c
+ generated/matmulavx128_c17.c
+ "
+ 
+ i_matmull_c="
+ generated/matmul_l4.c
+ generated/matmul_l8.c
+ generated/matmul_l16.c
+ "
+ 
+ i_shape_c="
+ generated/shape_i1.c
+ generated/shape_i2.c
+ generated/shape_i4.c
+ generated/shape_i8.c
+ generated/shape_i16.c
+ "
+ 
+ i_reshape_c="
+ generated/reshape_i4.c
+ generated/reshape_i8.c
+ generated/reshape_i16.c
+ generated/reshape_r4.c
+ generated/reshape_r8.c
+ generated/reshape_r10.c
+ generated/reshape_r16.c
+ generated/reshape_r17.c
+ generated/reshape_c4.c
+ generated/reshape_c8.c
+ generated/reshape_c10.c
+ generated/reshape_c16.c
+ generated/reshape_c17.c
+ "
+ 
+ i_eoshift1_c="
+ generated/eoshift1_4.c
+ generated/eoshift1_8.c
+ generated/eoshift1_16.c
+ "
+ 
+ i_eoshift3_c="
+ generated/eoshift3_4.c
+ generated/eoshift3_8.c
+ generated/eoshift3_16.c
+ "
+ 
+ i_cshift0_c="
+ generated/cshift0_i1.c
+ generated/cshift0_i2.c
+ generated/cshift0_i4.c
+ generated/cshift0_i8.c
+ generated/cshift0_i16.c
+ generated/cshift0_r4.c
+ generated/cshift0_r8.c
+ generated/cshift0_r10.c
+ generated/cshift0_r16.c
+ generated/cshift0_r17.c
+ generated/cshift0_c4.c
+ generated/cshift0_c8.c
+ generated/cshift0_c10.c
+ generated/cshift0_c16.c
+ generated/cshift0_c17.c
+ "
+ 
+ i_cshift1_c="
+ generated/cshift1_4.c
+ generated/cshift1_8.c
+ generated/cshift1_16.c
+ "
+ 
+ i_cshift1a_c="
+ generated/cshift1_4_i1.c
+ generated/cshift1_4_i2.c
+ generated/cshift1_4_i4.c
+ generated/cshift1_4_i8.c
+ generated/cshift1_4_i16.c
+ generated/cshift1_4_r4.c
+ generated/cshift1_4_r8.c
+ generated/cshift1_4_r10.c
+ generated/cshift1_4_r16.c
+ generated/cshift1_4_r17.c
+ generated/cshift1_4_c4.c
+ generated/cshift1_4_c8.c
+ generated/cshift1_4_c10.c
+ generated/cshift1_4_c16.c
+ generated/cshift1_4_c17.c
+ generated/cshift1_8_i1.c
+ generated/cshift1_8_i2.c
+ generated/cshift1_8_i4.c
+ generated/cshift1_8_i8.c
+ generated/cshift1_8_i16.c
+ generated/cshift1_8_r4.c
+ generated/cshift1_8_r8.c
+ generated/cshift1_8_r10.c
+ generated/cshift1_8_r16.c
+ generated/cshift1_8_r17.c
+ generated/cshift1_8_c4.c
+ generated/cshift1_8_c8.c
+ generated/cshift1_8_c10.c
+ generated/cshift1_8_c16.c
+ generated/cshift1_8_c17.c
+ generated/cshift1_16_i1.c
+ generated/cshift1_16_i2.c
+ generated/cshift1_16_i4.c
+ generated/cshift1_16_i8.c
+ generated/cshift1_16_i16.c
+ generated/cshift1_16_r4.c
+ generated/cshift1_16_r8.c
+ generated/cshift1_16_r10.c
+ generated/cshift1_16_r16.c
+ generated/cshift1_16_r17.c
+ generated/cshift1_16_c4.c
+ generated/cshift1_16_c8.c
+ generated/cshift1_16_c10.c
+ generated/cshift1_16_c16.c
+ generated/cshift1_16_c17.c
+ "
+ 
+ in_pack_c="
+ generated/in_pack_i1.c
+ generated/in_pack_i2.c
+ generated/in_pack_i4.c
+ generated/in_pack_i8.c
+ generated/in_pack_i16.c
+ generated/in_pack_r4.c
+ generated/in_pack_r8.c
+ generated/in_pack_r10.c
+ generated/in_pack_r16.c
+ generated/in_pack_r17.c
+ generated/in_pack_c4.c
+ generated/in_pack_c8.c
+ generated/in_pack_c10.c
+ generated/in_pack_c16.c
+ generated/in_pack_c17.c
+ "
+ 
+ in_unpack_c="
+ generated/in_unpack_i1.c
+ generated/in_unpack_i2.c
+ generated/in_unpack_i4.c
+ generated/in_unpack_i8.c
+ generated/in_unpack_i16.c
+ generated/in_unpack_r4.c
+ generated/in_unpack_r8.c
+ generated/in_unpack_r10.c
+ generated/in_unpack_r16.c
+ generated/in_unpack_r17.c
+ generated/in_unpack_c4.c
+ generated/in_unpack_c8.c
+ generated/in_unpack_c10.c
+ generated/in_unpack_c16.c
+ generated/in_unpack_c17.c
+ "
+ 
+ i_pow_c="
+ generated/pow_i4_i4.c
+ generated/pow_i8_i4.c
+ generated/pow_i16_i4.c
+ generated/pow_r16_i4.c
+ generated/pow_r17_i4.c
+ generated/pow_c4_i4.c
+ generated/pow_c8_i4.c
+ generated/pow_c10_i4.c
+ generated/pow_c16_i4.c
+ generated/pow_c17_i4.c
+ generated/pow_i4_i8.c
+ generated/pow_i8_i8.c
+ generated/pow_i16_i8.c
+ generated/pow_r4_i8.c
+ generated/pow_r8_i8.c
+ generated/pow_r10_i8.c
+ generated/pow_r16_i8.c
+ generated/pow_r17_i8.c
+ generated/pow_c4_i8.c
+ generated/pow_c8_i8.c
+ generated/pow_c10_i8.c
+ generated/pow_c16_i8.c
+ generated/pow_c17_i8.c
+ generated/pow_i4_i16.c
+ generated/pow_i8_i16.c
+ generated/pow_i16_i16.c
+ generated/pow_r4_i16.c
+ generated/pow_r8_i16.c
+ generated/pow_r10_i16.c
+ generated/pow_r16_i16.c
+ generated/pow_r17_i16.c
+ generated/pow_c4_i16.c
+ generated/pow_c8_i16.c
+ generated/pow_c10_i16.c
+ generated/pow_c16_i16.c
+ generated/pow_c17_i16.c
+ "
+ 
+ i_powu_c="
+ generated/pow_m1_m1.c
+ generated/pow_m1_m2.c
+ generated/pow_m1_m4.c
+ generated/pow_m1_m8.c
+ generated/pow_m1_m16.c
+ generated/pow_m2_m1.c
+ generated/pow_m2_m2.c
+ generated/pow_m2_m4.c
+ generated/pow_m2_m8.c
+ generated/pow_m2_m16.c
+ generated/pow_m4_m1.c
+ generated/pow_m4_m2.c
+ generated/pow_m4_m4.c
+ generated/pow_m4_m8.c
+ generated/pow_m4_m16.c
+ generated/pow_m8_m1.c
+ generated/pow_m8_m2.c
+ generated/pow_m8_m4.c
+ generated/pow_m8_m8.c
+ generated/pow_m8_m16.c
+ generated/pow_m16_m1.c
+ generated/pow_m16_m2.c
+ generated/pow_m16_m4.c
+ generated/pow_m16_m8.c
+ generated/pow_m16_m16.c
+ "
+ 
+ i_pack_c="
+ generated/pack_i1.c
+ generated/pack_i2.c
+ generated/pack_i4.c
+ generated/pack_i8.c
+ generated/pack_i16.c
+ generated/pack_r4.c
+ generated/pack_r8.c
+ generated/pack_r10.c
+ generated/pack_r16.c
+ generated/pack_r17.c
+ generated/pack_c4.c
+ generated/pack_c8.c
+ generated/pack_c10.c
+ generated/pack_c16.c
+ generated/pack_c17.c
+ "
+ 
+ i_unpack_c="
+ generated/unpack_i1.c
+ generated/unpack_i2.c
+ generated/unpack_i4.c
+ generated/unpack_i8.c
+ generated/unpack_i16.c
+ generated/unpack_r4.c
+ generated/unpack_r8.c
+ generated/unpack_r10.c
+ generated/unpack_r16.c
+ generated/unpack_r17.c
+ generated/unpack_c4.c
+ generated/unpack_c8.c
+ generated/unpack_c10.c
+ generated/unpack_c16.c
+ generated/unpack_c17.c
+ "
+ 
+ i_spread_c="
+ generated/spread_i1.c
+ generated/spread_i2.c
+ generated/spread_i4.c
+ generated/spread_i8.c
+ generated/spread_i16.c
+ generated/spread_r4.c
+ generated/spread_r8.c
+ generated/spread_r10.c
+ generated/spread_r16.c
+ generated/spread_r17.c
+ generated/spread_c4.c
+ generated/spread_c8.c
+ generated/spread_c10.c
+ generated/spread_c16.c
+ generated/spread_c17.c
+ "
+ 
+ gfor_built_specific_src="
+ generated/_abs_c4.F90
+ generated/_abs_c8.F90
+ generated/_abs_c10.F90
+ generated/_abs_c16.F90
+ generated/_abs_c17.F90
+ generated/_abs_i4.F90
+ generated/_abs_i8.F90
+ generated/_abs_i16.F90
+ generated/_abs_r4.F90
+ generated/_abs_r8.F90
+ generated/_abs_r10.F90
+ generated/_abs_r16.F90
+ generated/_abs_r17.F90
+ generated/_aimag_c4.F90
+ generated/_aimag_c8.F90
+ generated/_aimag_c10.F90
+ generated/_aimag_c16.F90
+ generated/_aimag_c17.F90
+ generated/_exp_r4.F90
+ generated/_exp_r8.F90
+ generated/_exp_r10.F90
+ generated/_exp_r16.F90
+ generated/_exp_r17.F90
+ generated/_exp_c4.F90
+ generated/_exp_c8.F90
+ generated/_exp_c10.F90
+ generated/_exp_c16.F90
+ generated/_exp_c17.F90
+ generated/_log_r4.F90
+ generated/_log_r8.F90
+ generated/_log_r10.F90
+ generated/_log_r16.F90
+ generated/_log_r17.F90
+ generated/_log_c4.F90
+ generated/_log_c8.F90
+ generated/_log_c10.F90
+ generated/_log_c16.F90
+ generated/_log_c17.F90
+ generated/_log10_r4.F90
+ generated/_log10_r8.F90
+ generated/_log10_r10.F90
+ generated/_log10_r16.F90
+ generated/_log10_r17.F90
+ generated/_sqrt_r4.F90
+ generated/_sqrt_r8.F90
+ generated/_sqrt_r10.F90
+ generated/_sqrt_r16.F90
+ generated/_sqrt_r17.F90
+ generated/_sqrt_c4.F90
+ generated/_sqrt_c8.F90
+ generated/_sqrt_c10.F90
+ generated/_sqrt_c16.F90
+ generated/_sqrt_c17.F90
+ generated/_asin_r4.F90
+ generated/_asin_r8.F90
+ generated/_asin_r10.F90
+ generated/_asin_r16.F90
+ generated/_asin_r17.F90
+ generated/_asinh_r4.F90
+ generated/_asinh_r8.F90
+ generated/_asinh_r10.F90
+ generated/_asinh_r16.F90
+ generated/_asinh_r17.F90
+ generated/_acos_r4.F90
+ generated/_acos_r8.F90
+ generated/_acos_r10.F90
+ generated/_acos_r16.F90
+ generated/_acos_r17.F90
+ generated/_acosh_r4.F90
+ generated/_acosh_r8.F90
+ generated/_acosh_r10.F90
+ generated/_acosh_r16.F90
+ generated/_acosh_r17.F90
+ generated/_atan_r4.F90
+ generated/_atan_r8.F90
+ generated/_atan_r10.F90
+ generated/_atan_r16.F90
+ generated/_atan_r17.F90
+ generated/_atanh_r4.F90
+ generated/_atanh_r8.F90
+ generated/_atanh_r10.F90
+ generated/_atanh_r16.F90
+ generated/_atanh_r17.F90
+ generated/_sin_r4.F90
+ generated/_sin_r8.F90
+ generated/_sin_r10.F90
+ generated/_sin_r16.F90
+ generated/_sin_r17.F90
+ generated/_sin_c4.F90
+ generated/_sin_c8.F90
+ generated/_sin_c10.F90
+ generated/_sin_c16.F90
+ generated/_sin_c17.F90
+ generated/_cos_r4.F90
+ generated/_cos_r8.F90
+ generated/_cos_r10.F90
+ generated/_cos_r16.F90
+ generated/_cos_r17.F90
+ generated/_cos_c4.F90
+ generated/_cos_c8.F90
+ generated/_cos_c10.F90
+ generated/_cos_c16.F90
+ generated/_cos_c17.F90
+ generated/_tan_r4.F90
+ generated/_tan_r8.F90
+ generated/_tan_r10.F90
+ generated/_tan_r16.F90
+ generated/_tan_r17.F90
+ generated/_sinh_r4.F90
+ generated/_sinh_r8.F90
+ generated/_sinh_r10.F90
+ generated/_sinh_r16.F90
+ generated/_sinh_r17.F90
+ generated/_cosh_r4.F90
+ generated/_cosh_r8.F90
+ generated/_cosh_r10.F90
+ generated/_cosh_r16.F90
+ generated/_cosh_r17.F90
+ generated/_tanh_r4.F90
+ generated/_tanh_r8.F90
+ generated/_tanh_r10.F90
+ generated/_tanh_r16.F90
+ generated/_tanh_r17.F90
+ generated/_conjg_c4.F90
+ generated/_conjg_c8.F90
+ generated/_conjg_c10.F90
+ generated/_conjg_c16.F90
+ generated/_conjg_c17.F90
+ generated/_aint_r4.F90
+ generated/_aint_r8.F90
+ generated/_aint_r10.F90
+ generated/_aint_r16.F90
+ generated/_aint_r17.F90
+ generated/_anint_r4.F90
+ generated/_anint_r8.F90
+ generated/_anint_r10.F90
+ generated/_anint_r16.F90
+ generated/_anint_r17.F90
+ "
+ 
+ gfor_built_specific2_src="
+ generated/_sign_i4.F90
+ generated/_sign_i8.F90
+ generated/_sign_i16.F90
+ generated/_sign_r4.F90
+ generated/_sign_r8.F90
+ generated/_sign_r10.F90
+ generated/_sign_r16.F90
+ generated/_sign_r17.F90
+ generated/_dim_i4.F90
+ generated/_dim_i8.F90
+ generated/_dim_i16.F90
+ generated/_dim_r4.F90
+ generated/_dim_r8.F90
+ generated/_dim_r10.F90
+ generated/_dim_r16.F90
+ generated/_dim_r17.F90
+ generated/_atan2_r4.F90
+ generated/_atan2_r8.F90
+ generated/_atan2_r10.F90
+ generated/_atan2_r16.F90
+ generated/_atan2_r17.F90
+ generated/_mod_i4.F90
+ generated/_mod_i8.F90
+ generated/_mod_i16.F90
+ generated/_mod_r4.F90
+ generated/_mod_r8.F90
+ generated/_mod_r10.F90
+ generated/_mod_r16.F90
+ generated/_mod_r17.F90
+ "
+ 
+ gfor_misc_specifics="
+ generated/misc_specifics.F90
+ "
+ 
+ 
+ for f in ${i_all_c} ; do
+   ${M4} -Dfile=$f -I./m4 all.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_bessel_c} ; do
+   ${M4} -Dfile=$f -I./m4 bessel.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_any_c} ; do
+   ${M4} -Dfile=$f -I./m4 any.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_count_c} ; do
+   ${M4} -Dfile=$f -I./m4 count.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_findloc0_c} ; do
+   ${M4} -Dfile=$f -I./m4 findloc0.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_findloc0s_c} ; do
+   ${M4} -Dfile=$f -I./m4 findloc0s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_findloc1_c} ; do
+   ${M4} -Dfile=$f -I./m4 findloc1.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_findloc1s_c} ; do
+   ${M4} -Dfile=$f -I./m4 findloc1s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_findloc2s_c} ; do
+   ${M4} -Dfile=$f -I./m4 findloc2s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_iall_c} ; do
+   ${M4} -Dfile=$f -I./m4 iall.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_iany_c} ; do
+   ${M4} -Dfile=$f -I./m4 iany.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_iparity_c} ; do
+   ${M4} -Dfile=$f -I./m4 iparity.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_maxloc0_c} ; do
+   ${M4} -Dfile=$f -I./m4 maxloc0.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_maxloc0s_c} ; do
+   ${M4} -Dfile=$f -I./m4 maxloc0s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_maxloc1_c} ; do
+   ${M4} -Dfile=$f -I./m4 maxloc1.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_maxloc1s_c} ; do
+   ${M4} -Dfile=$f -I./m4 maxloc1s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_maxloc2s_c} ; do
+   ${M4} -Dfile=$f -I./m4 maxloc2s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_maxval_c} ; do
+   ${M4} -Dfile=$f -I./m4 maxval.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_maxval0s_c} ; do
+   ${M4} -Dfile=$f -I./m4 maxval0s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_maxval1s_c} ; do
+   ${M4} -Dfile=$f -I./m4 maxval1s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_minloc0_c} ; do
+   ${M4} -Dfile=$f -I./m4 minloc0.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_minloc0s_c} ; do
+   ${M4} -Dfile=$f -I./m4 minloc0s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_minloc1_c} ; do
+   ${M4} -Dfile=$f -I./m4 minloc1.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_minloc1s_c} ; do
+   ${M4} -Dfile=$f -I./m4 minloc1s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_minloc2s_c} ; do
+   ${M4} -Dfile=$f -I./m4 minloc2s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_minval_c} ; do
+   ${M4} -Dfile=$f -I./m4 minval.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_minval0s_c} ; do
+   ${M4} -Dfile=$f -I./m4 minval0s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_minval1s_c} ; do
+   ${M4} -Dfile=$f -I./m4 minval1s.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_product_c} ; do
+   ${M4} -Dfile=$f -I./m4 product.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_sum_c} ; do
+   ${M4} -Dfile=$f -I./m4 sum.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_matmul_c} ; do
+   ${M4} -Dfile=$f -I./m4 matmul.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_matmulavx128_c} ; do
+   ${M4} -Dfile=$f -I./m4 matmulavx128.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_matmull_c} ; do
+   ${M4} -Dfile=$f -I./m4 matmull.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_norm2_c} ; do
+   ${M4} -Dfile=$f -I./m4 norm2.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_parity_c} ; do
+   ${M4} -Dfile=$f -I./m4 parity.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_shape_c} ; do
+   ${M4} -Dfile=$f -I./m4 shape.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_reshape_c} ; do
+   ${M4} -Dfile=$f -I./m4 reshape.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_eoshift1_c} ; do
+   ${M4} -Dfile=$f -I./m4 eoshift1.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_eoshift3_c} ; do
+   ${M4} -Dfile=$f -I./m4 eoshift3.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_cshift0_c} ; do
+   ${M4} -Dfile=$f -I./m4 cshift0.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_cshift1_c} ; do
+   ${M4} -Dfile=$f -I./m4 cshift1.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_cshift1a_c} ; do
+   ${M4} -Dfile=$f -I./m4 cshift1a.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${in_pack_c} ; do
+   ${M4} -Dfile=$f -I./m4 in_pack.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${in_unpack_c} ; do
+   ${M4} -Dfile=$f -I./m4 in_unpack.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_pow_c} ; do
+   ${M4} -Dfile=$f -I./m4 pow.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_powu_c} ; do
+   ${M4} -Dfile=$f -I./m4 powu.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_pack_c} ; do
+   ${M4} -Dfile=$f -I./m4 pack.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_unpack_c} ; do
+   ${M4} -Dfile=$f -I./m4 unpack.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${i_spread_c} ; do
+   ${M4} -Dfile=$f -I./m4 spread.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${gfor_built_specific_src} ; do
+   ${M4} -Dfile=$f -I./m4 specific.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${gfor_built_specific2_src} ; do
+   ${M4} -Dfile=$f -I./m4 specific2.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ for f in ${gfor_misc_specifics} ; do
+   ${M4} -Dfile=$f -I./m4 misc_specifics.m4 > $f.tmp
+   ../move-if-change $f.tmp $f
+ done
+ 
+ # Check that all generated files are listed in Makefile.am
+ 
+ for i in generated/*.c generated/*.F90 ; do
+   if ! grep -q "$i" Makefile.am ; then
+     echo "File $i is not present in Makefile.am"
+   fi
+ done
+ 
+ # Check that all generated files listed in Makefile.am actually exist
+ 
+ genlist=`tr ' ' '\n' < Makefile.am | grep 'generated/'`
+ for i in $genlist ; do
+   if ! test -e "$i" ; then
+     echo "File $i listed in Makefile.am does not exist"
+   fi
+ done
+ 
diff -Nrcpad gcc-16-20250608/libgomp/ChangeLog gcc-16-20250615/libgomp/ChangeLog
*** gcc-16-20250608/libgomp/ChangeLog	Sun Jun  8 22:32:44 2025
--- gcc-16-20250615/libgomp/ChangeLog	Sun Jun 15 22:33:50 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-06-10  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* testsuite/libgomp.c/declare-variant-4.h (gfx942): New variant function.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx942.c: New test.
+ 
  2025-06-06  Tobias Burnus  <tburnus@baylibre.com>
  	    Sandra Loosemore  <sloosemore@baylibre.com>
  
diff -Nrcpad gcc-16-20250608/libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c gcc-16-20250615/libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c
*** gcc-16-20250608/libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c	Sun Jun 15 22:33:50 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx942 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx942 \\(\\);" "optimized" } } */
diff -Nrcpad gcc-16-20250608/libgomp/testsuite/libgomp.c/declare-variant-4.h gcc-16-20250615/libgomp/testsuite/libgomp.c/declare-variant-4.h
*** gcc-16-20250608/libgomp/testsuite/libgomp.c/declare-variant-4.h	Sun Jun  8 22:32:44 2025
--- gcc-16-20250615/libgomp/testsuite/libgomp.c/declare-variant-4.h	Sun Jun 15 22:33:50 2025
*************** gfx90c (void)
*** 37,42 ****
--- 37,49 ----
  
  __attribute__ ((noipa))
  int
+ gfx942 (void)
+ {
+   return 0x942;
+ }
+ 
+ __attribute__ ((noipa))
+ int
  gfx1030 (void)
  {
    return 0x1030;
*************** gfx1103 (void)
*** 68,73 ****
--- 75,81 ----
  #pragma omp declare variant(gfx908) match(device = {isa("gfx908")})
  #pragma omp declare variant(gfx90a) match(device = {isa("gfx90a")})
  #pragma omp declare variant(gfx90c) match(device = {isa("gfx90c")})
+ #pragma omp declare variant(gfx942) match(device = {isa("gfx942")})
  #pragma omp declare variant(gfx1030) match(device = {isa("gfx1030")})
  #pragma omp declare variant(gfx1036) match(device = {isa("gfx1036")})
  #pragma omp declare variant(gfx1100) match(device = {isa("gfx1100")})
diff -Nrcpad gcc-16-20250608/libstdc++-v3/ChangeLog gcc-16-20250615/libstdc++-v3/ChangeLog
*** gcc-16-20250608/libstdc++-v3/ChangeLog	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/ChangeLog	Sun Jun 15 22:33:52 2025
***************
*** 1,3 ****
--- 1,471 ----
+ 2025-06-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120397
+ 	* include/bits/stl_uninitialized.h (_UninitDestroyGuard<I,void>):
+ 	Add new member function _S_destroy and call it from the
+ 	destructor (for C++17 only).
+ 	* testsuite/20_util/specialized_algorithms/uninitialized_default_construct/120397.cc:
+ 	New test.
+ 	* testsuite/20_util/specialized_algorithms/uninitialized_value_construct/120397.cc:
+ 	New test.
+ 
+ 2025-06-13  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/120648
+ 	* include/bits/chrono_io.h (__formatter_chrono::_M_format_to):
+ 	Handle %c, %r, %x and %X by passing them to _M_c_r_x_X.
+ 	(__formatter_chrono::_M_c_r_x_X): Reworked from _M_c.
+ 	(__formatter_chrono::_M_c): Renamed into above.
+ 	(__formatter_chrono::_M_r, __formatter_chrono::_M_x)
+ 	(__formatter_chrono::_M_X): Removed.
+ 	* testsuite/std/time/format/pr117214.cc: New tests for %r, %x,
+ 	%X with date, time and durations.
+ 
+ 2025-06-13  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/bits/ranges_algo.h (__detail::__by_ref_or_value_fn): New.
+ 	(__detail::_Comp_proj): New.
+ 	(__detail::__make_comp_proj): Use it instead.
+ 	(__detail::_Pred_proj): New.
+ 	(__detail::__make_pred_proj): Use it instead.
+ 
+ 2025-06-13  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
+ 
+ 	PR c++/120644
+ 	* include/std/optional (format_kind): Do not use `auto`.
+ 
+ 2025-06-13  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/23_containers/vector/bool/format.cc: Replaced _CharT
+ 	with CharT.
+ 	* testsuite/std/format/debug.cc: Likewise.
+ 	* testsuite/std/format/ranges/adaptors.cc: Likewise.
+ 	* testsuite/std/format/ranges/formatter.cc: Likewise.
+ 	* testsuite/std/format/ranges/map.cc: Likewise.
+ 	* testsuite/std/format/ranges/sequence.cc: Likewise.
+ 	* testsuite/std/format/ranges/string.cc: Likewise.
+ 	* testsuite/std/format/tuple.cc: Likewise.
+ 	* testsuite/std/time/format/empty_spec.cc: Likewise.
+ 	* testsuite/std/time/format/pr120114.cc: Likewise.
+ 	* testsuite/std/time/format/pr120481.cc: Likewise.
+ 	* testsuite/std/time/format/precision.cc: Likewise.
+ 
+ 2025-06-13  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/chrono_io.h (__formatter_chrono::_M_format):
+ 	Remove handling of empty _M_chrono_specs.
+ 	(__formatter_chrono::_M_format_to_ostream): Changed to accept
+ 	only chrono::duration and made public.
+ 	(std::formatter<chrono::duration<_Rep, _Period>, _CharT>):
+ 	Configure __defSpec and handle empty chrono-spec locally.
+ 
+ 2025-06-13  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/chrono_io.h (__format::__formatter_chrono_info)
+ 	[_GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI]: Define.
+ 	(std::formatter<chrono::sys_info, _CharT>)
+ 	(std::formatter<chrono::local_inf, _CharT>): Delegate to
+ 	__format::__formatter_chrono_info.
+ 	(std::operator<<(basic_ostream<_CharT, _Traits>& const sys_info&)):
+ 	Use format on sys_info with empty format spec.
+ 
+ 2025-06-13  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/std/time/format/whitespace.cc: New test.
+ 
+ 2025-06-12  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
+ 
+ 	PR libstdc++/119496
+ 	* include/bits/stl_algo.h: Adjust calls to requested_size.
+ 	* include/bits/stl_tempbuf.h (requested_size): Rename with
+ 	an _M_ prefix.
+ 	* testsuite/17_intro/names.cc: Add a #define for
+ 	requested_size.
+ 
+ 2025-06-12  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
+ 
+ 	* include/bits/formatfwd.h (format_kind): Move the definition
+ 	(and some supporting code) from <format>.
+ 	* include/std/format (format_kind): Likewise.
+ 	* include/bits/version.def (optional_range_support): Add
+ 	the feature-testing macro.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/optional (iterator, const_iterator, begin, end):
+ 	Add range support.
+ 	(enable_view): Specialize for std::optional.
+ 	(format_kind): Specialize for std::optional.
+ 	* testsuite/20_util/optional/range.cc: New test.
+ 	* testsuite/20_util/optional/version.cc: Test the new
+ 	feature-testing macro.
+ 
+ 2025-06-12  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/chrono_io.h (_ChronoFormats::_S_ftz)
+ 	(_ChronoFormats::_S_ft, _ChronoFormats::_S_t): Define.
+ 	(__formatter_chrono::_M_format_to_ostream): Remove handling for
+ 	time_points.
+ 	(std::formatter<chrono::hh_mm_ss<_Dur>, _CharT>)
+ 	(std::formatter<chrono::sys_time<_Dur>, _CharT>)
+ 	(std::formatter<chrono::utc_time<_Dur>, _CharT>)
+ 	(std::formatter<chrono::tai_time<_Dur>, _CharT>)
+ 	(std::formatter<chrono::gps_time<_Dur>, _CharT>)
+ 	(std::formatter<chrono::file_time<_Dur>, _CharT>)
+ 	(std::formatter<chrono::local_time<_Dur>, _CharT>)
+ 	(std::formatter<chrono::__detail::__local_time_fmt<_Dur>, _CharT>)
+ 	(std::formatter<chrono::zoned_time<_Dur>, _CharT>):
+ 	Define __defSpec, and pass it as argument to _M_prase and
+ 	constructor of __formatter_chrono.
+ 
+ 2025-06-12  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/chrono_io.h (__format::_ChronoFormats): Define.
+ 	(__formatter_chrono::__formatter_chrono())
+ 	(__formatter_chrono::__formatter_chrono(_ChronoSpec<_CharT>)): Define.
+ 	(__formatter_chrono::_M_parse): Add parameter with default spec,
+ 	and merge it with new values. Handle '%\0' as weekday index
+ 	specifier.
+ 	(__formatter_chrono::_M_a_A, __formatter_chrono::_M_b_B)
+ 	(__formatter_chrono::_M_C_y_Y, __formatter_chrono::_M_d_e)
+ 	(__formatter_chrono::_M_F): Support _M_debug flag.
+ 	(__formatter_chrono::_M_wi, __formatter_chrono::_S_weekday_index):
+ 	Define.
+ 	(std::formatter<chrono::day, _CharT>)
+ 	(std::formatter<chrono::month, _CharT>)
+ 	(std::formatter<chrono::year, _CharT>)
+ 	(std::formatter<chrono::weekday, _CharT>)
+ 	(std::formatter<chrono::weekday_indexed, _CharT>)
+ 	(std::formatter<chrono::weekday_last, _CharT>)
+ 	(std::formatter<chrono::month_day, _CharT>)
+ 	(std::formatter<chrono::month_day_last, _CharT>)
+ 	(std::formatter<chrono::month_weekday, _CharT>)
+ 	(std::formatter<chrono::month_weekday_last, _CharT>)
+ 	(std::formatter<chrono::year_month, _CharT>)
+ 	(std::formatter<chrono::year_month_day, _CharT>)
+ 	(std::formatter<chrono::year_month_day_last, _CharT>)
+ 	(std::formatter<chrono::year_month_weekday, _CharT>)
+ 	(std::formatter<chrono::year_month_weekday_last, _CharT>):
+ 	Define __defSpec, and pass it as argument to _M_parse and
+ 	constructor of __formatter_chrono.
+ 
+ 2025-06-12  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/mdspan (__mdspan::__mapping_alike): Rename template
+ 	parameter from M to _M_p.
+ 	(layout_right::mapping): Replace class with typename in template
+ 	head.
+ 	(layout_stride::mapping): Fix typo in comment.
+ 	* testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc:
+ 	Changed B to function.
+ 
+ 2025-06-12  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan (layout_left): Strengthen the exception
+ 	guarantees of layout_left::mapping(layout_stride::mapping).
+ 	* testsuite/23_containers/mdspan/layouts/ctors.cc:
+ 	Simplify tests to reflect the change.
+ 
+ 2025-06-12  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc: Add
+ 	tests for layout_stride.
+ 	* testsuite/23_containers/mdspan/layouts/ctors.cc: Add test for
+ 	layout_stride and the interaction with other layouts.
+ 	* testsuite/23_containers/mdspan/layouts/empty.cc: Ditto.
+ 	* testsuite/23_containers/mdspan/layouts/mapping.cc: Ditto.
+ 	* testsuite/23_containers/mdspan/layouts/stride.cc: New test.
+ 
+ 2025-06-12  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan (layout_stride): New class.
+ 	* src/c++23/std.cc.in: Add layout_stride.
+ 
+ 2025-06-12  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc: Add
+ 	tests for layout_right.
+ 	* testsuite/23_containers/mdspan/layouts/ctors.cc: Add tests for
+ 	layout_right and the interaction with layout_left.
+ 	* testsuite/23_containers/mdspan/layouts/empty.cc: ditto.
+ 	* testsuite/23_containers/mdspan/layouts/mapping.cc: ditto.
+ 
+ 2025-06-12  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan (layout_right): New class.
+ 	* src/c++23/std.cc.in: Add layout_right.
+ 
+ 2025-06-12  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc: New test.
+ 	* testsuite/23_containers/mdspan/layouts/ctors.cc: New test.
+ 	* testsuite/23_containers/mdspan/layouts/empty.cc: New test.
+ 	* testsuite/23_containers/mdspan/layouts/mapping.cc: New test.
+ 
+ 2025-06-12  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan (layout_left): New class.
+ 	* src/c++23/std.cc.in: Add layout_left.
+ 
+ 2025-06-12  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan(__mdspan::_ExtentsStorage): Change name
+ 	of private member _M_dynamic_extens to _M_dyn_exts.
+ 	(extents): Change name of private member from _M_dynamic_extents
+ 	to _M_exts.
+ 	Fix two instances of whitespace errors.
+ 	* testsuite/23_containers/mdspan/extents/ctor_default.cc: Fix
+ 	integer comparison with cmp_equal.
+ 
+ 2025-06-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/test.xml: Improve discussion of copyright
+ 	notices in new test cases.
+ 	* doc/html/manual/test.html: Regenerate.
+ 
+ 2025-06-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* scripts/create_testsuite_files: Remove incorrect comment about
+ 	filtering out wchar_t tests.
+ 
+ 2025-06-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120625
+ 	* include/std/format (__format::__disabled): Remove.
+ 	(__formatter_disabled): New type.
+ 	(formatter<char*, wchar_t>, formatter<const char*, wchar_t>)
+ 	(formatter<char[N], wchar_t>, formatter<string, wchar_t>)
+ 	(formatter<string_view, wchar_t>): Use __formatter_disabled as
+ 	base class instead of formatter<__disabled, wchar_t>.
+ 	* testsuite/std/format/formatter/120625.cc: New test.
+ 
+ 2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/doxygen/user.cfg.in (PREDEFINED): Remove -D prefixes from
+ 	some macros. Define _GLIBCXX_USE_BUILTIN_TRAIT and
+ 	_GLIBCXX_HAVE_ICONV macros.
+ 
+ 2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* libsupc++/exception: Remove redundant parentheses and adjust
+ 	whitespace.
+ 
+ 2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/type_traits: Restore @cond and @endcond balance.
+ 
+ 2025-06-11  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/std/time/format/empty_spec.cc: New tests.
+ 	* testsuite/std/time/format/precision.cc: New test.
+ 
+ 2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_construct.h: Replace std::__addressof with
+ 	std::addressof in code that doesn't need to compile as C++98.
+ 	Replace std::__is_constant_evaluated with
+ 	std::is_constant_evaluated in code that doesn't need to compile
+ 	as C++17 or earlier.
+ 	* include/bits/stl_uninitialized.h: Likewise for __addressof.
+ 
+ 2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/test.xml: Remove note about unused 'test'
+ 	variables for old definition of VERIFY.
+ 	* doc/html/manual/test.html: Regenerate.
+ 	* testsuite/experimental/net/buffer/arithmetic.cc: Remove unused
+ 	variable.
+ 	* testsuite/experimental/net/buffer/const.cc: Likewise.
+ 	* testsuite/experimental/net/buffer/mutable.cc: Likewise.
+ 	* testsuite/experimental/net/buffer/size.cc: Likewise.
+ 	* testsuite/experimental/net/timer/waitable/cons.cc: Likewise.
+ 	* testsuite/experimental/net/timer/waitable/dest.cc: Likewise.
+ 	* testsuite/experimental/net/timer/waitable/ops.cc: Likewise.
+ 	* testsuite/ext/special_functions/airy_ai/check_value.cc:
+ 	Likewise.
+ 	* testsuite/ext/special_functions/airy_bi/check_value.cc:
+ 	Likewise.
+ 	* testsuite/ext/special_functions/conf_hyperg/check_value.cc:
+ 	Likewise.
+ 	* testsuite/ext/special_functions/hyperg/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/01_assoc_laguerre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/02_assoc_legendre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/02_assoc_legendre/pr86655.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/03_beta/check_value.cc: Likewise.
+ 	* testsuite/special_functions/04_comp_ellint_1/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/05_comp_ellint_2/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/06_comp_ellint_3/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/07_cyl_bessel_i/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/08_cyl_bessel_j/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/09_cyl_bessel_k/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/10_cyl_neumann/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/11_ellint_1/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/12_ellint_2/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/13_ellint_3/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/14_expint/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/15_hermite/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/16_laguerre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/17_legendre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/18_riemann_zeta/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/19_sph_bessel/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/20_sph_legendre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/20_sph_legendre/pr86655.cc:
+ 	Likewise.
+ 	* testsuite/special_functions/21_sph_neumann/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc:
+ 	Likewise.
+ 	* testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc:
+ 	Likewise.
+ 
+ 2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/sstream: Adjust whitespace.
+ 
+ 2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120390
+ 	* include/bits/stl_construct.h (_Destroy_aux::__destroy_n): New
+ 	static member function.
+ 	(_Destroy_aux<true>::__destroy_n): Likewise.
+ 	(_Destroy_n_aux): Remove.
+ 	(_Destroy(ForwardIterator, ForwardIterator)): Remove
+ 	static_assert. Use is_trivially_destructible instead of
+ 	__has_trivial_destructor.
+ 	(_Destroy_n): Likewise. Use _Destroy_aux::__destroy_n instead of
+ 	_Destroy_n_aux::__destroy_n.
+ 	* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
+ 	Adjust dg-error strings. Move destroy_n tests to ...
+ 	* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc:
+ 	New test.
+ 	* testsuite/23_containers/vector/cons/destructible_debug_neg.cc:
+ 	Adjust dg-error strings.
+ 	* testsuite/23_containers/vector/cons/destructible_neg.cc:
+ 	Likewise.
+ 
+ 2025-06-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/27_io/basic_istringstream/cons/char/string_view.cc:
+ 	Only check get_allocator() for new string ABI.
+ 	* testsuite/27_io/basic_ostringstream/cons/char/string_view.cc:
+ 	Likewise.
+ 	* testsuite/27_io/basic_stringbuf/cons/char/string_view.cc:
+ 	Likewise.
+ 	* testsuite/27_io/basic_stringstream/cons/char/string_view.cc:
+ 	Likewise.
+ 
+ 2025-06-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/bits/max_size_type.h (__max_size_type::_M_val): Make
+ 	public instead of private.
+ 	(__max_size_type::_M_msb): Likewise.
+ 	(__max_diff_type::_M_rep): Likewise.
+ 	* testsuite/std/ranges/iota/max_size_type.cc: Verify
+ 	__max_diff_type and __max_size_type are structural.
+ 
+ 2025-06-10  Yihan Wang  <yronglin777@gmail.com>
+ 	    Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/tuple (__can_make_from_tuple): New variable
+ 	template.
+ 	(__make_from_tuple_impl): Add static_assert.
+ 	(make_from_tuple): Constrain using __can_make_from_tuple.
+ 	* testsuite/20_util/tuple/dr3528.cc: New test.
+ 
+ 2025-06-09  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	PR libstdc++/119741
+ 	* include/std/sstream: full implementation, really just
+ 	decls, requires clause and plumbing.
+ 	* include/bits/version.def, include/bits/version.h:
+ 	new preprocessor symbol
+ 	__cpp_lib_sstream_from_string_view.
+ 	* testsuite/27_io/basic_stringbuf/cons/char/string_view.cc:
+ 	New tests.
+ 	* testsuite/27_io/basic_istringstream/cons/char/string_view.cc:
+ 	New tests.
+ 	* testsuite/27_io/basic_ostringstream/cons/char/string_view.cc:
+ 	New tests.
+ 	* testsuite/27_io/basic_stringstream/cons/char/string_view.cc:
+ 	New tests.
+ 	* testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc:
+ 	New tests.
+ 	* testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc:
+ 	New tests.
+ 	* testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc:
+ 	New tests.
+ 	* testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc:
+ 	New tests.
+ 
+ 2025-06-08  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/abi/post/hppa-linux-gnu/baseline_symbols.txt: Update.
+ 
  2025-06-06  Jonathan Wakely  <jwakely@redhat.com>
  
  	* testsuite/30_threads/semaphore/1.cc: Check type properties and
diff -Nrcpad gcc-16-20250608/libstdc++-v3/doc/doxygen/user.cfg.in gcc-16-20250615/libstdc++-v3/doc/doxygen/user.cfg.in
*** gcc-16-20250608/libstdc++-v3/doc/doxygen/user.cfg.in	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/doc/doxygen/user.cfg.in	Sun Jun 15 22:33:52 2025
*************** PREDEFINED             = __cplusplus=202
*** 2350,2357 ****
                           "_GLIBCXX_END_NAMESPACE_CONTAINER= " \
                           "_GLIBCXX_END_NAMESPACE_CXX11= " \
                           "_GLIBCXX_END_NAMESPACE_LDBL= " \
! 			 "-D_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(X)= " \
! 			 "-D_GLIBCXX_END_INLINE_ABI_NAMESPACE(X)= " \
                           "_GLIBCXX_TEMPLATE_ARGS=...  " \
                           "_GLIBCXX_DEPRECATED= " \
                           "_GLIBCXX_DEPRECATED_SUGGEST(E)= " \
--- 2350,2357 ----
                           "_GLIBCXX_END_NAMESPACE_CONTAINER= " \
                           "_GLIBCXX_END_NAMESPACE_CXX11= " \
                           "_GLIBCXX_END_NAMESPACE_LDBL= " \
! 			 "_GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(X)= " \
! 			 "_GLIBCXX_END_INLINE_ABI_NAMESPACE(X)= " \
                           "_GLIBCXX_TEMPLATE_ARGS=...  " \
                           "_GLIBCXX_DEPRECATED= " \
                           "_GLIBCXX_DEPRECATED_SUGGEST(E)= " \
*************** PREDEFINED             = __cplusplus=202
*** 2414,2419 ****
--- 2414,2421 ----
                           _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE \
                           _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED \
                           _GLIBCXX_HAVE_BUILTIN_LAUNDER \
+ 			 "_GLIBCXX_USE_BUILTIN_TRAIT(X)=1" \
+ 			 _GLIBCXX_HAVE_ICONV=1 \
  			 "_GLIBCXX_DOXYGEN_ONLY(X)=X " \
  			 __exception_ptr=__unspecified__ \
  
diff -Nrcpad gcc-16-20250608/libstdc++-v3/doc/html/manual/test.html gcc-16-20250615/libstdc++-v3/doc/html/manual/test.html
*** gcc-16-20250608/libstdc++-v3/doc/html/manual/test.html	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/doc/html/manual/test.html	Sun Jun 15 22:33:52 2025
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 389,398 ****
      We no longer require that, because most tests are uninteresting
      and contain no "original authorship", and so would not be protected
      by copyright anyway.
!     If you do want to add the FSF copyright notice and GPL licence text,
      then the first copyright year should correspond to the date
!     the file was checked in to version control. If a test is copied from
!     an existing file it should retain the copyright years from the
      original file.
     </p><p>
       The DejaGnu instructions say to always return <code class="literal">0</code>
--- 389,403 ----
      We no longer require that, because most tests are uninteresting
      and contain no "original authorship", and so would not be protected
      by copyright anyway.
!     Adding the FSF copyright notice to new tests is incorrect unless you
!     (or your employer) have a copyright assignment on file with the FSF,
!     or if the test contains code copied from another test under FSF copyright.
!     In particular, new tests that contain original code are not copyright FSF
!     if contributed under the <a class="link" href="https://gcc.gnu.org/dco.html" target="_top">DCO</a> terms.
!     If new tests do add the FSF copyright notice and GPL licence text,
      then the first copyright year should correspond to the date
!     the file was checked in to version control. If the test code is copied
!     from an existing file it should retain the copyright years from the
      original file.
     </p><p>
       The DejaGnu instructions say to always return <code class="literal">0</code>
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 416,433 ****
      (to avoid using <code class="literal">assert</code> and being affected by
      <code class="literal">NDEBUG</code>).
     </p><p>
-     Prior to GCC 7.1, <code class="literal">VERIFY</code> was defined differently.
-     It usually expanded to the standard <code class="literal">assert</code> macro, but
-     allowed targets to define it to something different. In order to support
-     the alternative expansions of <code class="literal">VERIFY</code>, before any use
-     of the macro there needed to be a variable called <code class="varname">test</code>
-     in scope, which was usually defined like so (the attribute avoids
-     warnings about an unused variable):
-     </p><pre class="programlisting">
-     bool test __attribute__((unused)) = true;
-     </pre><p>
-     This is no longer needed, and should not be added to new tests.
-    </p><p>
      The testsuite uses the DejaGnu framework to compile and run the tests.
      Test cases are normal C++ files which contain special directives in
      comments.  These directives look like <code class="literal">{ dg-* ... }</code>
--- 421,426 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/doc/xml/manual/test.xml gcc-16-20250615/libstdc++-v3/doc/xml/manual/test.xml
*** gcc-16-20250608/libstdc++-v3/doc/xml/manual/test.xml	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/doc/xml/manual/test.xml	Sun Jun 15 22:33:52 2025
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 650,659 ****
      We no longer require that, because most tests are uninteresting
      and contain no "original authorship", and so would not be protected
      by copyright anyway.
!     If you do want to add the FSF copyright notice and GPL licence text,
      then the first copyright year should correspond to the date
!     the file was checked in to version control. If a test is copied from
!     an existing file it should retain the copyright years from the
      original file.
     </para>
  
--- 650,665 ----
      We no longer require that, because most tests are uninteresting
      and contain no "original authorship", and so would not be protected
      by copyright anyway.
!     Adding the FSF copyright notice to new tests is incorrect unless you
!     (or your employer) have a copyright assignment on file with the FSF,
!     or if the test contains code copied from another test under FSF copyright.
!     In particular, new tests that contain original code are not copyright FSF
!     if contributed under the <link xmlns:xlink="http://www.w3.org/1999/xlink"
!       xlink:href="https://gcc.gnu.org/dco.html">DCO</link> terms.
!     If new tests do add the FSF copyright notice and GPL licence text,
      then the first copyright year should correspond to the date
!     the file was checked in to version control. If the test code is copied
!     from an existing file it should retain the copyright years from the
      original file.
     </para>
  
*************** cat 27_io/objects/char/3_xin.in | a.out<
*** 685,704 ****
     </para>
  
     <para>
-     Prior to GCC 7.1, <literal>VERIFY</literal> was defined differently.
-     It usually expanded to the standard <literal>assert</literal> macro, but
-     allowed targets to define it to something different. In order to support
-     the alternative expansions of <literal>VERIFY</literal>, before any use
-     of the macro there needed to be a variable called <varname>test</varname>
-     in scope, which was usually defined like so (the attribute avoids
-     warnings about an unused variable):
-     <programlisting>
-     bool test __attribute__((unused)) = true;
-     </programlisting>
-     This is no longer needed, and should not be added to new tests.
-    </para>
- 
-    <para>
      The testsuite uses the DejaGnu framework to compile and run the tests.
      Test cases are normal C++ files which contain special directives in
      comments.  These directives look like <literal>{ dg-* ... }</literal>
--- 691,696 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/chrono_io.h gcc-16-20250615/libstdc++-v3/include/bits/chrono_io.h
*** gcc-16-20250608/libstdc++-v3/include/bits/chrono_io.h	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/chrono_io.h	Sun Jun 15 22:33:52 2025
*************** namespace __format
*** 238,243 ****
--- 238,345 ----
    operator|=(_ChronoParts& __x, _ChronoParts __y) noexcept
    { return __x = __x | __y; }
  
+   template<typename _CharT>
+   struct _ChronoFormats
+   {
+     using _String_view = basic_string_view<_CharT>;
+ 
+     static consteval
+     _String_view
+     _S_ftz() noexcept
+     { return _GLIBCXX_WIDEN("%F %T %Z"); }
+ 
+     static consteval
+     _String_view
+     _S_ft() noexcept
+     { return _S_ftz().substr(0, 5); }
+ 
+     static consteval
+     _String_view
+     _S_f() noexcept
+     { return _S_ftz().substr(0, 2); }
+ 
+     static consteval
+     _String_view
+     _S_t() noexcept
+     { return _S_ftz().substr(3, 2); }
+ 
+     static consteval
+     _String_view
+     _S_ymd() noexcept
+     { return _GLIBCXX_WIDEN("%Y/%b/%d"); }
+ 
+     static consteval
+     _String_view
+     _S_ym() noexcept
+     { return _S_ymd().substr(0, 5); }
+ 
+     static consteval
+     _String_view
+     _S_md() noexcept
+     { return _S_ymd().substr(3); }
+ 
+     static consteval
+     _String_view
+     _S_y() noexcept
+     { return _S_ymd().substr(0, 2); }
+ 
+     static consteval
+     _String_view
+     _S_m() noexcept
+     { return _S_ymd().substr(3, 2); }
+ 
+     static consteval
+     _String_view
+     _S_d() noexcept
+     { return _S_ymd().substr(6, 2); }
+ 
+     static consteval
+     _String_view
+     _S_ymwi() noexcept
+     // %\0 is extension for handling weekday index
+     { return _String_view(_GLIBCXX_WIDEN("%Y/%b/%a[%\0]"), 12); }
+ 
+     static consteval
+     _String_view
+     _S_mwi() noexcept
+     { return _S_ymwi().substr(3); }
+ 
+     static consteval
+     _String_view
+     _S_wi() noexcept
+     { return _S_ymwi().substr(6); }
+ 
+     static consteval
+     _String_view
+     _S_w() noexcept
+     { return _S_ymwi().substr(6, 2); }
+ 
+     static consteval
+     _String_view
+     _S_ymwl() noexcept
+     { return _GLIBCXX_WIDEN("%Y/%b/%a[last]"); }
+ 
+     static consteval
+     _String_view
+     _S_mwl() noexcept
+     { return _S_ymwl().substr(3); }
+ 
+     static consteval
+     _String_view
+     _S_wl() noexcept
+     { return _S_ymwl().substr(6); }
+ 
+     static consteval
+     _String_view
+     _S_yml() noexcept
+     { return _GLIBCXX_WIDEN("%Y/%b/last"); }
+ 
+     static consteval
+     _String_view
+     _S_ml() noexcept
+     { return _S_yml().substr(3); }
+   };
+ 
    // TODO rename this to chrono::__formatter? or chrono::__detail::__formatter?
    template<typename _CharT>
      struct __formatter_chrono
*************** namespace __format
*** 245,258 ****
        using __string_view = basic_string_view<_CharT>;
        using __string = basic_string<_CharT>;
  
        template<typename _ParseContext>
  	constexpr typename _ParseContext::iterator
! 	_M_parse(_ParseContext& __pc, _ChronoParts __parts)
  	{
  	  auto __first = __pc.begin();
  	  auto __last = __pc.end();
  
! 	  _ChronoSpec<_CharT> __spec{};
  
  	  auto __finalize = [this, &__spec] {
  	    _M_spec = __spec;
--- 347,368 ----
        using __string_view = basic_string_view<_CharT>;
        using __string = basic_string<_CharT>;
  
+       __formatter_chrono() = default;
+ 
+       constexpr explicit
+       __formatter_chrono(_ChronoSpec<_CharT> __spec) noexcept
+       : _M_spec(__spec)
+       { }
+ 
        template<typename _ParseContext>
  	constexpr typename _ParseContext::iterator
! 	_M_parse(_ParseContext& __pc, _ChronoParts __parts,
! 		 const _ChronoSpec<_CharT>& __def = {})
  	{
  	  auto __first = __pc.begin();
  	  auto __last = __pc.end();
  
! 	  _ChronoSpec<_CharT> __spec = __def;
  
  	  auto __finalize = [this, &__spec] {
  	    _M_spec = __spec;
*************** namespace __format
*** 285,290 ****
--- 395,401 ----
  		return __first;
  	    }
  
+ 	  __spec._M_localized = false;
  	  __first = __spec._M_parse_locale(__first, __last);
  	  if (__finished())
  	    return __first;
*************** namespace __format
*** 306,311 ****
--- 417,425 ----
  	  // Parse chrono-specs in [first,last), checking each conversion-spec
  	  // against __parts (so fail for %Y if no year in parts).
  	  // Save range in __spec._M_chrono_specs.
+ 	  __spec._M_debug = false;
+ 	  __spec._M_locale_specific = true;
+ 	  __spec._M_chrono_specs = __string_view();
  
  	  const auto __chrono_specs = __first++; // Skip leading '%'
  	  if (*__chrono_specs != '%')
*************** namespace __format
*** 492,505 ****
        // that we instantiate fewer different specializations. Similar to
        // _Sink_iter for std::format. Replace each _S_year, _S_day etc. with
        // member functions of that type.
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
  	_M_format(const _Tp& __t, _FormatContext& __fc,
  		  bool __is_neg = false) const
  	{
- 	  if (_M_spec._M_chrono_specs.empty())
- 	    return _M_format_to_ostream(__t, __fc, __is_neg);
- 
  #if defined _GLIBCXX_USE_NL_LANGINFO_L && __CHAR_BIT__ == 8
  	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
  	  // 3565. Handling of encodings in localized formatting
--- 606,617 ----
        // that we instantiate fewer different specializations. Similar to
        // _Sink_iter for std::format. Replace each _S_year, _S_day etc. with
        // member functions of that type.
+       // pre: !_M_spec._M_chrono_specs.empty()
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
  	_M_format(const _Tp& __t, _FormatContext& __fc,
  		  bool __is_neg = false) const
  	{
  #if defined _GLIBCXX_USE_NL_LANGINFO_L && __CHAR_BIT__ == 8
  	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
  	  // 3565. Handling of encodings in localized formatting
*************** namespace __format
*** 562,567 ****
--- 674,683 ----
  	      _CharT __c = *__first++;
  	      switch (__c)
  		{
+ 		// %\0 is extension for handling weekday index
+ 		case '\0':
+ 		  __out = _M_wi(__t, std::move(__out), __fc);
+ 		  break;
  		case 'a':
  		case 'A':
  		  __out = _M_a_A(__t, std::move(__out), __fc, __c == 'A');
*************** namespace __format
*** 572,578 ****
  		  __out = _M_b_B(__t, std::move(__out), __fc, __c == 'B');
  		  break;
  		case 'c':
! 		  __out = _M_c(__t, std::move(__out), __fc, __mod == 'E');
  		  break;
  		case 'C':
  		case 'y':
--- 688,697 ----
  		  __out = _M_b_B(__t, std::move(__out), __fc, __c == 'B');
  		  break;
  		case 'c':
! 		case 'r':
! 		case 'x':
! 		case 'X':
! 		  __out = _M_c_r_x_X(__t, std::move(__out), __fc, __c, __mod);
  		  break;
  		case 'C':
  		case 'y':
*************** namespace __format
*** 623,631 ****
  		    __throw_format_error("chrono format error: argument is "
  					 "not a duration");
  		  break;
- 		case 'r':
- 		  __out = _M_r(__t, __print_sign(), __fc);
- 		  break;
  		case 'R':
  		case 'T':
  		  __out = _M_R_T(__t, __print_sign(), __fc, __c == 'T');
--- 742,747 ----
*************** namespace __format
*** 643,654 ****
  		  __out = _M_U_V_W(__t, std::move(__out), __fc, __c,
  				   __mod == 'O');
  		  break;
- 		case 'x':
- 		  __out = _M_x(__t, std::move(__out), __fc, __mod == 'E');
- 		  break;
- 		case 'X':
- 		  __out = _M_X(__t, __print_sign(), __fc, __mod == 'E');
- 		  break;
  		case 'z':
  		  __out = _M_z(__t, std::move(__out), __fc, (bool)__mod);
  		  break;
--- 759,764 ----
*************** namespace __format
*** 694,699 ****
--- 804,827 ----
  	  return std::move(__out);
  	}
  
+       // Format duration for empty chrono-specs, e.g. "{}" (C++20 [time.format] p6).
+       template<typename _Rep, typename _Period, typename _FormatContext>
+ 	typename _FormatContext::iterator
+ 	_M_format_to_ostream(const chrono::duration<_Rep, _Period>& __d,
+ 			     bool __is_neg, _FormatContext& __fc) const
+ 	{
+ 	   basic_ostringstream<_CharT> __os;
+ 	   __os.imbue(_M_locale(__fc));
+ 
+ 	   if (__is_neg) [[unlikely]]
+ 	     __os << _S_plus_minus[1];
+ 	   __os << __d;
+ 
+ 	  auto __str = std::move(__os).str();
+ 	  return __format::__write_padded_as_spec(__str, __str.size(),
+ 						  __fc, _M_spec);
+ 	}
+ 
        _ChronoSpec<_CharT> _M_spec;
  
      private:
*************** namespace __format
*** 708,789 ****
  	    return __fc.locale();
  	}
  
-       // Format for empty chrono-specs, e.g. "{}" (C++20 [time.format] p6).
-       // TODO: consider moving body of every operator<< into this function
-       // and use std::format("{}", t) to implement those operators. That
-       // would avoid std::format("{}", t) calling operator<< which calls
-       // std::format again.
-       template<typename _Tp, typename _FormatContext>
- 	typename _FormatContext::iterator
- 	_M_format_to_ostream(const _Tp& __t, _FormatContext& __fc,
- 			     bool __is_neg) const
- 	{
- 	  using ::std::chrono::__detail::__utc_leap_second;
- 	  using ::std::chrono::__detail::__local_time_fmt;
- 
- 	  basic_ostringstream<_CharT> __os;
- 	  __os.imbue(_M_locale(__fc));
- 
- 	  if constexpr (__is_specialization_of<_Tp, __local_time_fmt>)
- 	    {
- 	      // Format as "{:L%F %T}"
- 	      auto __days = chrono::floor<chrono::days>(__t._M_time);
- 	      __os << chrono::year_month_day(__days) << ' '
- 		   << chrono::hh_mm_ss(__t._M_time - __days);
- 
- 	      // For __local_time_fmt the __is_neg flags says whether to
- 	      // append " %Z" to the result.
- 	      if (__is_neg)
- 		{
- 		  if (!__t._M_abbrev) [[unlikely]]
- 		    __format::__no_timezone_available();
- 		  else if constexpr (is_same_v<_CharT, char>)
- 		    __os << ' ' << *__t._M_abbrev;
- 		  else
- 		    {
- 		      __os << L' ';
- 		      for (char __c : *__t._M_abbrev)
- 			__os << __c;
- 		    }
- 		}
- 	    }
- 	  else
- 	    {
- 	      if constexpr (__is_specialization_of<_Tp, __utc_leap_second>)
- 		__os << __t._M_date << ' ' << __t._M_time;
- 	      else if constexpr (chrono::__is_time_point_v<_Tp>)
- 		{
- 		  // Need to be careful here because not all specializations
- 		  // of chrono::sys_time can be written to an ostream.
- 		  // For the specializations of time_point that can be
- 		  // formatted with an empty chrono-specs, either it's a
- 		  // sys_time with period greater or equal to days:
- 		  if constexpr (is_convertible_v<_Tp, chrono::sys_days>)
- 		    __os << _S_date(__t);
- 		  // Or a local_time with period greater or equal to days:
- 		  else if constexpr (is_convertible_v<_Tp, chrono::local_days>)
- 		    __os << _S_date(__t);
- 		  else // Or it's formatted as "{:L%F %T}":
- 		    {
- 		      auto __days = chrono::floor<chrono::days>(__t);
- 		      __os << chrono::year_month_day(__days) << ' '
- 			 << chrono::hh_mm_ss(__t - __days);
- 		    }
- 		}
- 	      else
- 		{
- 		  if constexpr (chrono::__is_duration_v<_Tp>)
- 		    if (__is_neg) [[unlikely]]
- 		      __os << _S_plus_minus[1];
- 		  __os << __t;
- 		}
- 	    }
- 
- 	  auto __str = std::move(__os).str();
- 	  return __format::__write_padded_as_spec(__str, __str.size(),
- 						  __fc, _M_spec);
- 	}
- 
        static constexpr const _CharT* _S_chars
  	= _GLIBCXX_WIDEN("0123456789:/ +-{}");
        static constexpr _CharT _S_colon = _S_chars[10];
--- 836,841 ----
*************** namespace __format
*** 818,823 ****
--- 870,891 ----
  
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
+ 	_M_wi(const _Tp& __t, typename _FormatContext::iterator __out,
+ 	       _FormatContext& __ctx) const
+ 	{
+ 	  // %\0 Extension to format weekday index, used only by empty format spec
+ 	  unsigned __wi = _S_weekday_index(__t);
+ 
+ 	  _CharT __buf[3];
+ 	  __out = __format::__write(std::move(__out), _S_str_d1(__buf, __wi));
+ 	  if (_M_spec._M_debug && (__wi < 1 || __wi > 5))
+ 	    __out = __format::__write(std::move(__out),
+ 		      __string_view(_GLIBCXX_WIDEN(" is not a valid index")));
+ 	  return std::move(__out);
+ 	}
+ 
+       template<typename _Tp, typename _FormatContext>
+ 	typename _FormatContext::iterator
  	_M_a_A(const _Tp& __t, typename _FormatContext::iterator __out,
  	       _FormatContext& __ctx, bool __full) const
  	{
*************** namespace __format
*** 825,831 ****
  	  // %A Locale's full weekday name.
  	  chrono::weekday __wd = _S_weekday(__t);
  	  if (!__wd.ok())
! 	    __throw_format_error("format error: invalid weekday");
  
  	  locale __loc = _M_locale(__ctx);
  	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
--- 893,908 ----
  	  // %A Locale's full weekday name.
  	  chrono::weekday __wd = _S_weekday(__t);
  	  if (!__wd.ok())
! 	    {
! 	      if (!_M_spec._M_debug)
! 		__throw_format_error("format error: invalid weekday");
! 
! 	      _CharT __buf[3];
! 	      __out = __format::__write(std::move(__out),
! 					_S_str_d1(__buf, __wd.c_encoding()));
! 	      return __format::__write(std::move(__out),
! 			__string_view(_GLIBCXX_WIDEN(" is not a valid weekday")));
! 	    }
  
  	  locale __loc = _M_locale(__ctx);
  	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
*************** namespace __format
*** 847,853 ****
  	  // %B Locale's full month name.
  	  chrono::month __m = _S_month(__t);
  	  if (!__m.ok())
! 	    __throw_format_error("format error: invalid month");
  	  locale __loc = _M_locale(__ctx);
  	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
  	  const _CharT* __months[12];
--- 924,940 ----
  	  // %B Locale's full month name.
  	  chrono::month __m = _S_month(__t);
  	  if (!__m.ok())
! 	    {
! 	      if (!_M_spec._M_debug)
! 		__throw_format_error("format error: invalid month");
! 
! 	      _CharT __buf[3];
! 	      __out = __format::__write(std::move(__out),
! 					_S_str_d1(__buf, (unsigned)__m));
! 	      return __format::__write(std::move(__out),
! 			__string_view(_GLIBCXX_WIDEN(" is not a valid month")));
! 	    }
! 
  	  locale __loc = _M_locale(__ctx);
  	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
  	  const _CharT* __months[12];
*************** namespace __format
*** 861,871 ****
  
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
! 	_M_c(const _Tp& __t, typename _FormatContext::iterator __out,
! 	     _FormatContext& __ctx, bool __mod = false) const
  	{
  	  // %c  Locale's date and time representation.
  	  // %Ec Locale's alternate date and time representation.
  
  	  using namespace chrono;
  	  using ::std::chrono::__detail::__utc_leap_second;
--- 948,963 ----
  
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
! 	_M_c_r_x_X(const _Tp& __t, typename _FormatContext::iterator __out,
! 		   _FormatContext& __ctx, _CharT __conv, _CharT __mod) const
  	{
  	  // %c  Locale's date and time representation.
  	  // %Ec Locale's alternate date and time representation.
+ 	  // %r  Locale's 12-hour clock time.
+ 	  // %x  Locale's date rep
+ 	  // %Ex Locale's alternative date representation.
+ 	  // %X  Locale's time rep
+ 	  // %EX Locale's alternative time representation.
  
  	  using namespace chrono;
  	  using ::std::chrono::__detail::__utc_leap_second;
*************** namespace __format
*** 899,921 ****
  	    __tm.tm_zone = const_cast<char*>("UTC");
  #endif
  
! 	  auto __d = _S_days(__t); // Either sys_days or local_days.
! 	  using _TDays = decltype(__d);
! 	  const year_month_day __ymd(__d);
! 	  const auto __y = __ymd.year();
! 	  const auto __hms = _S_hms(__t);
  
! 	  __tm.tm_year = (int)__y - 1900;
! 	  __tm.tm_yday = (__d - _TDays(__y/January/1)).count();
! 	  __tm.tm_mon = (unsigned)__ymd.month() - 1;
! 	  __tm.tm_mday = (unsigned)__ymd.day();
! 	  __tm.tm_wday = weekday(__d).c_encoding();
! 	  __tm.tm_hour = __hms.hours().count();
! 	  __tm.tm_min = __hms.minutes().count();
! 	  __tm.tm_sec = __hms.seconds().count();
  
! 	  return _M_locale_fmt(std::move(__out), _M_locale(__ctx), __tm, 'c',
! 			       __mod ? 'E' : '\0');
  	}
  
        template<typename _Tp, typename _FormatContext>
--- 991,1020 ----
  	    __tm.tm_zone = const_cast<char*>("UTC");
  #endif
  
! 	  if (__conv == 'c' || __conv == 'x')
! 	  {
! 	    auto __d = _S_days(__t); // Either sys_days or local_days.
! 	    using _TDays = decltype(__d);
! 	    const year_month_day __ymd(__d);
! 	    const auto __y = __ymd.year();
  
! 	    __tm.tm_year = (int)__y - 1900;
! 	    __tm.tm_yday = (__d - _TDays(__y/January/1)).count();
! 	    __tm.tm_mon = (unsigned)__ymd.month() - 1;
! 	    __tm.tm_mday = (unsigned)__ymd.day();
! 	    __tm.tm_wday = weekday(__d).c_encoding();
! 	  }
  
! 	  if (__conv != 'x')
! 	  {
! 	    const auto __hms = _S_hms(__t);
! 	    __tm.tm_hour = __hms.hours().count();
! 	    __tm.tm_min = __hms.minutes().count();
! 	    __tm.tm_sec = __hms.seconds().count();
! 	  }
! 
! 	  return _M_locale_fmt(std::move(__out), _M_locale(__ctx), __tm,
! 			       __conv, __mod);
  	}
  
        template<typename _Tp, typename _FormatContext>
*************** namespace __format
*** 974,980 ****
  		}
  	      __out = __format::__write(std::move(__out), __sv);
  	    }
! 	 return std::move(__out);
  	}
  
        template<typename _Tp, typename _FormatContext>
--- 1073,1083 ----
  		}
  	      __out = __format::__write(std::move(__out), __sv);
  	    }
! 
! 	  if (_M_spec._M_debug && __conv == 'Y' && !__y.ok()) [[unlikely]]
! 	    __out = __format::__write(std::move(__out),
! 		      __string_view(_GLIBCXX_WIDEN(" is not a valid year")));
! 	  return __out;
  	}
  
        template<typename _Tp, typename _FormatContext>
*************** namespace __format
*** 1039,1045 ****
  	      __buf[0] = _S_space;
  	      __sv = {__buf, 2};
  	    }
! 	  return __format::__write(std::move(__out), __sv);
  	}
  
        template<typename _Tp, typename _FormatContext>
--- 1142,1153 ----
  	      __buf[0] = _S_space;
  	      __sv = {__buf, 2};
  	    }
! 
! 	  __out = __format::__write(std::move(__out), __sv);
! 	  if (_M_spec._M_debug && !__d.ok()) [[unlikely]]
! 	    __out = __format::__write(std::move(__out),
! 		      __string_view(_GLIBCXX_WIDEN(" is not a valid day")));
! 	  return std::move(__out);
  	}
  
        template<typename _Tp, typename _FormatContext>
*************** namespace __format
*** 1076,1081 ****
--- 1184,1193 ----
  	      _S_fill_two_digits(__buf + 9, __di);
  	      __out = __format::__write(std::move(__out), __sv);
  	    }
+ 
+ 	  if (_M_spec._M_debug && !__ymd.ok())
+ 	    __out = __format::__write(std::move(__out),
+ 		      __string_view(_GLIBCXX_WIDEN(" is not a valid date")));
  	  return std::move(__out);
  	}
  
*************** namespace __format
*** 1243,1267 ****
  
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
- 	_M_r(const _Tp& __tt, typename _FormatContext::iterator __out,
- 	     _FormatContext& __ctx) const
- 	{
- 	  // %r locale's 12-hour clock time.
- 	  auto __t = _S_floor_seconds(__tt);
- 	  locale __loc = _M_locale(__ctx);
- 	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
- 	  const _CharT* __ampm_fmt;
- 	  __tp._M_am_pm_format(&__ampm_fmt);
- 	  basic_string<_CharT> __fmt(_S_empty_spec);
- 	  __fmt.insert(1u, 1u, _S_colon);
- 	  __fmt.insert(2u, __ampm_fmt);
- 	  using _FmtStr = _Runtime_format_string<_CharT>;
- 	  return _M_write(std::move(__out), __loc,
- 			  std::format(__loc, _FmtStr(__fmt), __t));
- 	}
- 
-       template<typename _Tp, typename _FormatContext>
- 	typename _FormatContext::iterator
  	_M_R_T(const _Tp& __t, typename _FormatContext::iterator __out,
  	       _FormatContext& __ctx, bool __secs) const
  	{
--- 1355,1360 ----
*************** namespace __format
*** 1441,1493 ****
  
        template<typename _Tp, typename _FormatContext>
  	typename _FormatContext::iterator
- 	_M_x(const _Tp& __t, typename _FormatContext::iterator __out,
- 	     _FormatContext& __ctx, bool __mod = false) const
- 	{
- 	  // %x  Locale's date rep
- 	  // %Ex Locale's alternative date representation.
- 	  locale __loc = _M_locale(__ctx);
- 	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
- 	  const _CharT* __date_reps[2];
- 	  __tp._M_date_formats(__date_reps);
- 	  const _CharT* __rep = __date_reps[__mod];
- 	  if (!*__rep)
- 	    return _M_D(__t, std::move(__out), __ctx);
- 
- 	  basic_string<_CharT> __fmt(_S_empty_spec);
- 	  __fmt.insert(1u, 1u, _S_colon);
- 	  __fmt.insert(2u, __rep);
- 	  using _FmtStr = _Runtime_format_string<_CharT>;
- 	  return _M_write(std::move(__out), __loc,
- 			  std::format(__loc, _FmtStr(__fmt), __t));
- 	}
- 
-       template<typename _Tp, typename _FormatContext>
- 	typename _FormatContext::iterator
- 	_M_X(const _Tp& __tt, typename _FormatContext::iterator __out,
- 	     _FormatContext& __ctx, bool __mod = false) const
- 	{
- 	  // %X  Locale's time rep
- 	  // %EX Locale's alternative time representation.
- 	  auto __t = _S_floor_seconds(__tt);
- 	  locale __loc = _M_locale(__ctx);
- 	  const auto& __tp = use_facet<__timepunct<_CharT>>(__loc);
- 	  const _CharT* __time_reps[2];
- 	  __tp._M_time_formats(__time_reps);
- 	  const _CharT* __rep = __time_reps[__mod];
- 	  if (!*__rep)
- 	    return _M_R_T(__t, std::move(__out), __ctx, true);
- 
- 	  basic_string<_CharT> __fmt(_S_empty_spec);
- 	  __fmt.insert(1u, 1u, _S_colon);
- 	  __fmt.insert(2u, __rep);
- 	  using _FmtStr = _Runtime_format_string<_CharT>;
- 	  return _M_write(std::move(__out), __loc,
- 			  std::format(__loc, _FmtStr(__fmt), __t));
- 	}
- 
-       template<typename _Tp, typename _FormatContext>
- 	typename _FormatContext::iterator
  	_M_z(const _Tp& __t, typename _FormatContext::iterator __out,
  	     _FormatContext&, bool __mod = false) const
  	{
--- 1534,1539 ----
*************** namespace __format
*** 1757,1762 ****
--- 1803,1822 ----
  	    return weekday(_S_days(__t));
  	}
  
+       template<typename _Tp>
+ 	static unsigned
+ 	_S_weekday_index(const _Tp& __t)
+ 	{
+ 	  using namespace ::std::chrono;
+ 
+ 	  if constexpr (is_same_v<_Tp, weekday_indexed>)
+ 	    return __t.index();
+ 	  else if constexpr (requires { __t.weekday_indexed(); })
+ 	    return __t.weekday_indexed().index();
+ 	  else
+ 	    return ((unsigned)_S_day(__t) + 6) / 7;
+ 	}
+ 
        // Remove subsecond precision from a time_point.
        template<typename _Tp>
  	static auto
*************** namespace __format
*** 1801,1806 ****
--- 1861,1944 ----
  	}
      };
  
+ #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
+   template<typename _CharT>
+     struct __formatter_chrono_info
+     {
+       constexpr typename basic_format_parse_context<_CharT>::iterator
+       parse(basic_format_parse_context<_CharT>& __pc)
+       { return _M_f._M_parse(__pc, _ChronoParts(), {}); }
+ 
+       template<typename _Info, typename _Out>
+ 	typename basic_format_context<_Out, _CharT>::iterator
+ 	format(const _Info& __i,
+ 	       basic_format_context<_Out, _CharT>& __fc) const
+ 	{
+ 	  // n.b. only acceptable chrono-spec for info is one containing
+ 	  // only whitespaces and %%, that do not depend on formatted object.
+ 	  if (!_M_f._M_spec._M_chrono_specs.empty()) [[unlikely]]
+ 	    return _M_f._M_format(chrono::day(1), __fc);
+ 
+ 	  const size_t __padwidth = _M_f._M_spec._M_get_width(__fc);
+ 	  if (__padwidth == 0)
+ 	    return _M_format_to(__fc.out(), __i);
+ 
+ 	  _Padding_sink<_Out, _CharT> __sink(__fc.out(), __padwidth);
+ 	  _M_format_to(__sink.out(), __i);
+ 	  return __sink._M_finish(_M_f._M_spec._M_align, _M_f._M_spec._M_fill);
+ 	}
+ 
+     private:
+        template<typename _Out>
+ 	 _Out
+ 	 _M_format_to(_Out __out, const chrono::sys_info& __si) const
+ 	 {
+ 	   using _FmtStr = _Runtime_format_string<_CharT>;
+ 	   // n.b. only decimal separator is locale dependent for specifiers
+ 	   // used below, as sys_info uses seconds and minutes duration, the
+ 	   // output is locale-independent.
+ 	   constexpr auto* __fs
+ 	     = _GLIBCXX_WIDEN("[{0:%F %T},{1:%F %T},{2:%T},{3:%Q%q},{0:%Z}]");
+ 	   const chrono::local_seconds __lb(__si.begin.time_since_epoch());
+ 	   return std::format_to(std::move(__out), _FmtStr(__fs),
+ 				 chrono::local_time_format(__lb, &__si.abbrev),
+ 				 __si.end, __si.offset, __si.save);
+ 	 }
+ 
+        template<typename _Out>
+ 	 _Out
+ 	 _M_format_to(_Out __out, const chrono::local_info& __li) const
+ 	 {
+ 	   *__out = _Separators<_CharT>::_S_squares()[0];
+ 	   ++__out;
+ 	   if (__li.result == chrono::local_info::unique)
+ 	     __out = _M_format_to(std::move(__out), __li.first);
+ 	   else
+ 	    {
+ 	      basic_string_view<_CharT> __sv;
+ 	      if (__li.result == chrono::local_info::nonexistent)
+ 		__sv =_GLIBCXX_WIDEN("nonexistent");
+ 	      else
+ 		__sv = _GLIBCXX_WIDEN("ambiguous");
+ 	      __out = __format::__write(std::move(__out), __sv);
+ 
+ 	      __sv = _GLIBCXX_WIDEN(" local time between ");
+ 	      __out = __format::__write(std::move(__out), __sv);
+ 	      __out = _M_format_to(std::move(__out), __li.first);
+ 
+ 	      __sv = _GLIBCXX_WIDEN(" and ");
+ 	      __out = __format::__write(std::move(__out), __sv);
+ 	      __out = _M_format_to(std::move(__out), __li.second);
+ 	    }
+ 	  *__out = _Separators<_CharT>::_S_squares()[1];
+ 	  ++__out;
+ 	  return std::move(__out);
+ 	}
+ 
+       __formatter_chrono<_CharT> _M_f;
+     };
+ #endif
+ 
  } // namespace __format
  /// @endcond
  
*************** namespace __format
*** 1812,1818 ****
        parse(basic_format_parse_context<_CharT>& __pc)
        {
  	using namespace __format;
! 	auto __it = _M_f._M_parse(__pc, _Duration|_TimeOfDay);
  	if constexpr (!is_floating_point_v<_Rep>)
  	  if (_M_f._M_spec._M_prec_kind != __format::_WP_none)
  	    __throw_format_error("format error: invalid precision for duration");
--- 1950,1956 ----
        parse(basic_format_parse_context<_CharT>& __pc)
        {
  	using namespace __format;
! 	auto __it = _M_f._M_parse(__pc, _Duration|_TimeOfDay, __defSpec);
  	if constexpr (!is_floating_point_v<_Rep>)
  	  if (_M_f._M_spec._M_prec_kind != __format::_WP_none)
  	    __throw_format_error("format error: invalid precision for duration");
*************** namespace __format
*** 1834,1849 ****
  		    using _URep = make_unsigned_t<_Rep>;
  		    auto __ucnt = -static_cast<_URep>(__d.count());
  		    auto __ud = chrono::duration<_URep, _Period>(__ucnt);
! 		    return _M_f._M_format(__ud, __fc, true);
  		  }
  		else
! 		  return _M_f._M_format(-__d, __fc, true);
  	      }
! 	  return _M_f._M_format(__d, __fc, false);
  	}
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 1972,2008 ----
  		    using _URep = make_unsigned_t<_Rep>;
  		    auto __ucnt = -static_cast<_URep>(__d.count());
  		    auto __ud = chrono::duration<_URep, _Period>(__ucnt);
! 		    return _M_format(__ud, true, __fc);
  		  }
  		else
! 		  return _M_format(-__d, true, __fc);
  	      }
! 	  return _M_format(__d, false, __fc);
  	}
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_localized = !is_integral_v<_Rep>;
! 	  if constexpr (is_integral_v<_Rep>)
! 	    __res._M_chrono_specs = _GLIBCXX_WIDEN("%Q%q");
! 	  return __res;
! 	}();
! 
!       template<typename _Rep2, typename _Out>
! 	typename basic_format_context<_Out, _CharT>::iterator
! 	_M_format(const chrono::duration<_Rep2, _Period>& __d,
! 		  bool __is_neg,
! 		  basic_format_context<_Out, _CharT>& __fc) const
! 	{
! 	  if constexpr (!is_integral_v<_Rep>)
! 	    if (_M_f._M_spec._M_chrono_specs.empty())
! 	      return _M_f._M_format_to_ostream(__d, __is_neg, __fc);
! 	  return _M_f._M_format(__d, __fc, __is_neg);
! 	}
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 1851,1857 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Day); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2010,2016 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Day, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 1860,1866 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2019,2033 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_d();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 1868,1874 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Month); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2035,2041 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Month, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 1877,1883 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2044,2060 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_m();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 1885,1891 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Year); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2062,2068 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Year, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 1894,1900 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2071,2085 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_y();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 1902,1908 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Weekday); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2087,2093 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Weekday, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 1911,1917 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2096,2112 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_w();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 1919,1925 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Weekday); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2114,2120 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Weekday, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 1928,1934 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2123,2139 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_wi();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 1936,1942 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Weekday); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2141,2147 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Weekday, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 1945,1951 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2150,2166 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_wl();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 1953,1959 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Month|__format::_Day); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2168,2177 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       {
! 	return _M_f._M_parse(__pc, __format::_Month|__format::_Day,
! 			     __defSpec);
!       }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 1962,1968 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2180,2196 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_md();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 1970,1976 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Month|__format::_Day); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2198,2207 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       {
! 	return _M_f._M_parse(__pc, __format::_Month|__format::_Day,
! 			     __defSpec);
!       }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 1979,1985 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2210,2226 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!        static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ml();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 1987,1993 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Month|__format::_Weekday); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2228,2237 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       {
! 	return _M_f._M_parse(__pc, __format::_Month|__format::_Weekday,
! 			     __defSpec);
!       }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 1996,2002 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2240,2256 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_mwi();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 2004,2010 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Month|__format::_Weekday); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2258,2267 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       {
! 	return _M_f._M_parse(__pc, __format::_Month|__format::_Weekday,
! 			     __defSpec);
!       }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 2013,2019 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2270,2286 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!        static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_mwl();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 2021,2027 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Year|__format::_Month); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2288,2297 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       {
! 	return _M_f._M_parse(__pc, __format::_Year|__format::_Month,
! 			     __defSpec);
!       }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 2030,2036 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2300,2316 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!        static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ym();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 2038,2044 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Date); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2318,2324 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Date, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 2047,2053 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2327,2341 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_f();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 2055,2061 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Date); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2343,2349 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Date, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 2064,2070 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2352,2368 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
! 	static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_yml();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 2072,2078 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Date); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2370,2376 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Date, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 2081,2087 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2379,2395 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
! 	static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ymwi();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 2089,2095 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Date); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2397,2403 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_Date, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 2098,2104 ****
        	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<typename _Rep, typename _Period, __format::__char _CharT>
--- 2406,2422 ----
        	{ return _M_f._M_format(__t, __fc); }
  
      private:
! 	static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_debug = true;
! 	  __res._M_localized = true;
! 	  __res._M_locale_specific = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ymwl();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<typename _Rep, typename _Period, __format::__char _CharT>
*************** namespace __format
*** 2106,2112 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_TimeOfDay); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
--- 2424,2430 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_TimeOfDay, __defSpec); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
*************** namespace __format
*** 2115,2121 ****
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
  #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
--- 2433,2447 ----
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_localized = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_t();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
  #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
*************** namespace __format
*** 2124,2139 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ChronoParts{}); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const chrono::sys_info& __i,
  	       basic_format_context<_Out, _CharT>& __fc) const
! 	{ return _M_f._M_format(__i, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
--- 2450,2465 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f.parse(__pc); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const chrono::sys_info& __i,
  	       basic_format_context<_Out, _CharT>& __fc) const
! 	{ return _M_f.format(__i, __fc); }
  
      private:
!       __format::__formatter_chrono_info<_CharT> _M_f;
      };
  
    template<__format::__char _CharT>
*************** namespace __format
*** 2141,2156 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ChronoParts{}); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const chrono::local_info& __i,
  	       basic_format_context<_Out, _CharT>& __fc) const
! 	{ return _M_f._M_format(__i, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  #endif
  
--- 2467,2482 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f.parse(__pc); }
  
        template<typename _Out>
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const chrono::local_info& __i,
  	       basic_format_context<_Out, _CharT>& __fc) const
! 	{ return _M_f.format(__i, __fc); }
  
      private:
!       __format::__formatter_chrono_info<_CharT> _M_f;
      };
  #endif
  
*************** namespace __format
*** 2160,2166 ****
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
        {
! 	auto __next = _M_f._M_parse(__pc, __format::_ZonedDateTime);
  	if constexpr (!__stream_insertable)
  	  if (_M_f._M_spec._M_chrono_specs.empty())
  	    __format::__invalid_chrono_spec(); // chrono-specs can't be empty
--- 2486,2492 ----
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
        {
! 	auto __next = _M_f._M_parse(__pc, __format::_ZonedDateTime, __defSpec);
  	if constexpr (!__stream_insertable)
  	  if (_M_f._M_spec._M_chrono_specs.empty())
  	    __format::__invalid_chrono_spec(); // chrono-specs can't be empty
*************** namespace __format
*** 2178,2184 ****
  	= requires (basic_ostream<_CharT>& __os,
  		    chrono::sys_time<_Duration> __t) { __os << __t; };
  
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<typename _Duration, __format::__char _CharT>
--- 2504,2525 ----
  	= requires (basic_ostream<_CharT>& __os,
  		    chrono::sys_time<_Duration> __t) { __os << __t; };
  
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  if constexpr (!__stream_insertable)
! 	    return __res;
! 	  else if constexpr (is_convertible_v<_Duration, chrono::days>)
! 	    __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_f();
! 	  else
! 	    {
! 	      __res._M_localized = true;
! 	      __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ft();
! 	    }
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<typename _Duration, __format::__char _CharT>
*************** namespace __format
*** 2187,2197 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime); }
  
        template<typename _Out>
!         typename basic_format_context<_Out, _CharT>::iterator
!         format(const chrono::utc_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  // Adjust by removing leap seconds to get equivalent sys_time.
--- 2528,2538 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime, __defSpec); }
  
        template<typename _Out>
! 	typename basic_format_context<_Out, _CharT>::iterator
! 	format(const chrono::utc_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  // Adjust by removing leap seconds to get equivalent sys_time.
*************** namespace __format
*** 2212,2218 ****
      private:
        friend formatter<chrono::__detail::__utc_leap_second<_Duration>, _CharT>;
  
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<typename _Duration, __format::__char _CharT>
--- 2553,2567 ----
      private:
        friend formatter<chrono::__detail::__utc_leap_second<_Duration>, _CharT>;
  
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_localized = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ft();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<typename _Duration, __format::__char _CharT>
*************** namespace __format
*** 2221,2231 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime); }
  
        template<typename _Out>
!         typename basic_format_context<_Out, _CharT>::iterator
!         format(const chrono::tai_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  // Convert to __local_time_fmt with abbrev "TAI" and offset 0s.
--- 2570,2580 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime, __defSpec); }
  
        template<typename _Out>
! 	typename basic_format_context<_Out, _CharT>::iterator
! 	format(const chrono::tai_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  // Convert to __local_time_fmt with abbrev "TAI" and offset 0s.
*************** namespace __format
*** 2243,2249 ****
  	}
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<typename _Duration, __format::__char _CharT>
--- 2592,2606 ----
  	}
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_localized = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ft();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<typename _Duration, __format::__char _CharT>
*************** namespace __format
*** 2252,2262 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime); }
  
        template<typename _Out>
!         typename basic_format_context<_Out, _CharT>::iterator
!         format(const chrono::gps_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  // Convert to __local_time_fmt with abbrev "GPS" and offset 0s.
--- 2609,2619 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime, __defSpec); }
  
        template<typename _Out>
! 	typename basic_format_context<_Out, _CharT>::iterator
! 	format(const chrono::gps_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  // Convert to __local_time_fmt with abbrev "GPS" and offset 0s.
*************** namespace __format
*** 2274,2280 ****
  	}
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<typename _Duration, __format::__char _CharT>
--- 2631,2645 ----
  	}
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_localized = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ft();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<typename _Duration, __format::__char _CharT>
*************** namespace __format
*** 2282,2292 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime); }
  
        template<typename _Out>
!         typename basic_format_context<_Out, _CharT>::iterator
!         format(const chrono::file_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  using namespace chrono;
--- 2647,2657 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime, __defSpec); }
  
        template<typename _Out>
! 	typename basic_format_context<_Out, _CharT>::iterator
! 	format(const chrono::file_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  using namespace chrono;
*************** namespace __format
*** 2294,2317 ****
  	}
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
!     };
  
    template<typename _Duration, __format::__char _CharT>
      struct formatter<chrono::local_time<_Duration>, _CharT>
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       {  return _M_f._M_parse(__pc, __format::_DateTime); }
  
        template<typename _Out>
!         typename basic_format_context<_Out, _CharT>::iterator
!         format(const chrono::local_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
    template<typename _Duration, __format::__char _CharT>
--- 2659,2703 ----
  	}
  
      private:
!        static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_localized = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ft();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
!      };
  
    template<typename _Duration, __format::__char _CharT>
      struct formatter<chrono::local_time<_Duration>, _CharT>
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       {  return _M_f._M_parse(__pc, __format::_DateTime, __defSpec); }
  
        template<typename _Out>
! 	typename basic_format_context<_Out, _CharT>::iterator
! 	format(const chrono::local_time<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{ return _M_f._M_format(__t, __fc); }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  if constexpr (is_convertible_v<_Duration, chrono::days>)
! 	    __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_f();
! 	  else
! 	    {
! 	      __res._M_localized = true;
! 	      __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ft();
! 	    }
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
    template<typename _Duration, __format::__char _CharT>
*************** namespace __format
*** 2319,2334 ****
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime); }
  
        template<typename _Out>
!         typename basic_format_context<_Out, _CharT>::iterator
!         format(const chrono::__detail::__local_time_fmt<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
! 	{ return _M_f._M_format(__t, __fc, /* use %Z for {} */ true); }
  
      private:
!       __format::__formatter_chrono<_CharT> _M_f;
      };
  
  #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
--- 2705,2728 ----
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
!       { return _M_f._M_parse(__pc, __format::_ZonedDateTime, __defSpec); }
  
        template<typename _Out>
! 	typename basic_format_context<_Out, _CharT>::iterator
! 	format(const chrono::__detail::__local_time_fmt<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
! 	{ return _M_f._M_format(__t, __fc); }
  
      private:
!        static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  __format::_ChronoSpec<_CharT> __res{};
! 	  __res._M_localized = true;
! 	  __res._M_chrono_specs = __format::_ChronoFormats<_CharT>::_S_ftz();
! 	  return __res;
! 	}();
! 
!       __format::__formatter_chrono<_CharT> _M_f{__defSpec};
      };
  
  #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
*************** namespace __format
*** 2337,2344 ****
      : formatter<chrono::__detail::__local_time_fmt_for<_Duration>, _CharT>
      {
        template<typename _Out>
!         typename basic_format_context<_Out, _CharT>::iterator
!         format(const chrono::zoned_time<_Duration, _TimeZonePtr>& __tp,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  using _Ltf = chrono::__detail::__local_time_fmt_for<_Duration>;
--- 2731,2738 ----
      : formatter<chrono::__detail::__local_time_fmt_for<_Duration>, _CharT>
      {
        template<typename _Out>
! 	typename basic_format_context<_Out, _CharT>::iterator
! 	format(const chrono::zoned_time<_Duration, _TimeZonePtr>& __tp,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  using _Ltf = chrono::__detail::__local_time_fmt_for<_Duration>;
*************** namespace __format
*** 2358,2365 ****
      : formatter<chrono::utc_time<_Duration>, _CharT>
      {
        template<typename _Out>
!         typename basic_format_context<_Out, _CharT>::iterator
!         format(const chrono::__detail::__utc_leap_second<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{ return this->_M_f._M_format(__t, __fc); }
      };
--- 2752,2759 ----
      : formatter<chrono::utc_time<_Duration>, _CharT>
      {
        template<typename _Out>
! 	typename basic_format_context<_Out, _CharT>::iterator
! 	format(const chrono::__detail::__utc_leap_second<_Duration>& __t,
  	       basic_format_context<_Out, _CharT>& __fc) const
  	{ return this->_M_f._M_format(__t, __fc); }
      };
*************** namespace __detail
*** 2944,2958 ****
      basic_ostream<_CharT, _Traits>&
      operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_info& __i)
      {
!       // n.b. only decimal separator is locale dependent for specifiers
!       // used below, as sys_info uses seconds and minutes duration, the
!       // output is locale-independent.
!       constexpr auto* __fs 
! 	= _GLIBCXX_WIDEN("[{0:%F %T},{1:%F %T},{2:%T},{3:%Q%q},{0:%Z}]");
!       local_seconds __lb(__i.begin.time_since_epoch());
!       __os << std::format(__fs, local_time_format(__lb, &__i.abbrev),
! 			  __i.end, __i.offset, __i.save);
!       return __os;
      }
  
    /// Writes a local_info object to an ostream in an unspecified format.
--- 3338,3344 ----
      basic_ostream<_CharT, _Traits>&
      operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_info& __i)
      {
!       return __os << std::format(__os.getloc(), _GLIBCXX_WIDEN("{}"), __i);
      }
  
    /// Writes a local_info object to an ostream in an unspecified format.
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/formatfwd.h gcc-16-20250615/libstdc++-v3/include/bits/formatfwd.h
*** gcc-16-20250608/libstdc++-v3/include/bits/formatfwd.h	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/formatfwd.h	Sun Jun 15 22:33:52 2025
*************** namespace __format
*** 162,167 ****
--- 162,193 ----
      using __maybe_const
        = __conditional_t<formattable<const _Tp, _CharT>, const _Tp, _Tp>;
  }
+ 
+   // [format.range], formatting of ranges
+   // [format.range.fmtkind], variable template format_kind
+   enum class range_format {
+     disabled,
+     map,
+     set,
+     sequence,
+     string,
+     debug_string
+   };
+ 
+   /** @brief A constant determining how a range should be formatted.
+    *
+    * The primary template of `std::format_kind` cannot be instantiated.
+    * There is a partial specialization for input ranges and you can
+    * specialize the variable template for your own cv-unqualified types
+    * that satisfy the `ranges::input_range` concept.
+    *
+    * @since C++23
+    */
+   template<typename _Rg>
+     constexpr auto format_kind = []{
+       static_assert(false, "cannot use primary template of 'std::format_kind'");
+       return type_identity<_Rg>{};
+     }();
  #endif // format_ranges
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/max_size_type.h gcc-16-20250615/libstdc++-v3/include/bits/max_size_type.h
*** gcc-16-20250608/libstdc++-v3/include/bits/max_size_type.h	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/max_size_type.h	Sun Jun 15 22:33:52 2025
*************** namespace ranges
*** 425,434 ****
        using __rep = unsigned long long;
  #endif
        static constexpr size_t _S_rep_bits = sizeof(__rep) * __CHAR_BIT__;
!     private:
        __rep _M_val = 0;
        unsigned _M_msb:1 = 0;
  
        constexpr explicit
        __max_size_type(__rep __val, int __msb) noexcept
  	: _M_val(__val), _M_msb(__msb)
--- 425,435 ----
        using __rep = unsigned long long;
  #endif
        static constexpr size_t _S_rep_bits = sizeof(__rep) * __CHAR_BIT__;
! 
        __rep _M_val = 0;
        unsigned _M_msb:1 = 0;
  
+     private:
        constexpr explicit
        __max_size_type(__rep __val, int __msb) noexcept
  	: _M_val(__val), _M_msb(__msb)
*************** namespace ranges
*** 752,758 ****
        { return !(__l < __r); }
  #endif
  
-     private:
        __max_size_type _M_rep = 0;
  
        friend class __max_size_type;
--- 753,758 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/ranges_algo.h gcc-16-20250615/libstdc++-v3/include/bits/ranges_algo.h
*** gcc-16-20250608/libstdc++-v3/include/bits/ranges_algo.h	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/ranges_algo.h	Sun Jun 15 22:33:52 2025
*************** namespace ranges
*** 47,74 ****
  {
    namespace __detail
    {
      template<typename _Comp, typename _Proj>
!       constexpr auto
        __make_comp_proj(_Comp& __comp, _Proj& __proj)
        {
! 	return [&] (auto&& __lhs, auto&& __rhs) -> bool {
! 	  using _TL = decltype(__lhs);
! 	  using _TR = decltype(__rhs);
! 	  return std::__invoke(__comp,
! 			       std::__invoke(__proj, std::forward<_TL>(__lhs)),
! 			       std::__invoke(__proj, std::forward<_TR>(__rhs)));
! 	};
!       }
  
      template<typename _Pred, typename _Proj>
!       constexpr auto
        __make_pred_proj(_Pred& __pred, _Proj& __proj)
!       {
! 	return [&] <typename _Tp> (_Tp&& __arg) -> bool {
! 	  return std::__invoke(__pred,
! 			       std::__invoke(__proj, std::forward<_Tp>(__arg)));
! 	};
!       }
    } // namespace __detail
  
    struct __all_of_fn
--- 47,106 ----
  {
    namespace __detail
    {
+     template<typename _Fp>
+       using __by_ref_or_value_fn
+ 	= __conditional_t<is_scalar_v<_Fp> || is_empty_v<_Fp>, _Fp, _Fp&>;
+ 
      template<typename _Comp, typename _Proj>
!       struct _Comp_proj
!       {
! 	[[no_unique_address]] __by_ref_or_value_fn<_Comp> _M_comp;
! 	[[no_unique_address]] __by_ref_or_value_fn<_Proj> _M_proj;
! 
! 	constexpr
! 	_Comp_proj(_Comp& __comp, _Proj& __proj)
! 	: _M_comp(__comp), _M_proj(__proj)
! 	{ }
! 
! 	template<typename _Tp, typename _Up>
! 	  constexpr bool
! 	  operator()(_Tp&& __x, _Up&& __y)
! 	  {
! 	    return std::__invoke(_M_comp,
! 				 std::__invoke(_M_proj, std::forward<_Tp>(__x)),
! 				 std::__invoke(_M_proj, std::forward<_Up>(__y)));
! 	  }
!       };
! 
!     template<typename _Comp, typename _Proj>
!       constexpr _Comp_proj<_Comp, _Proj>
        __make_comp_proj(_Comp& __comp, _Proj& __proj)
+       { return {__comp, __proj}; }
+ 
+     template<typename _Pred, typename _Proj>
+       struct _Pred_proj
        {
! 	[[no_unique_address]] __by_ref_or_value_fn<_Pred> _M_pred;
! 	[[no_unique_address]] __by_ref_or_value_fn<_Proj> _M_proj;
! 
! 	constexpr
! 	_Pred_proj(_Pred& __pred, _Proj& __proj)
! 	: _M_pred(__pred), _M_proj(__proj)
! 	{ }
! 
! 	template<typename _Tp>
! 	  constexpr bool
! 	  operator()(_Tp&& __x)
! 	  {
! 	    return std::__invoke(_M_pred,
! 				 std::__invoke(_M_proj, std::forward<_Tp>(__x)));
! 	  }
!       };
  
      template<typename _Pred, typename _Proj>
!       constexpr _Pred_proj<_Pred, _Proj>
        __make_pred_proj(_Pred& __pred, _Proj& __proj)
!       { return {__pred, __proj}; }
    } // namespace __detail
  
    struct __all_of_fn
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/stl_algo.h gcc-16-20250615/libstdc++-v3/include/bits/stl_algo.h
*** gcc-16-20250608/libstdc++-v3/include/bits/stl_algo.h	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/stl_algo.h	Sun Jun 15 22:33:52 2025
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2511,2517 ****
        // [first,middle) and [middle,last).
        _TmpBuf __buf(__first, std::min(__len1, __len2));
  
!       if (__builtin_expect(__buf.size() == __buf.requested_size(), true))
  	std::__merge_adaptive
  	  (__first, __middle, __last, __len1, __len2, __buf.begin(), __comp);
        else if (__builtin_expect(__buf.begin() == 0, false))
--- 2511,2517 ----
        // [first,middle) and [middle,last).
        _TmpBuf __buf(__first, std::min(__len1, __len2));
  
!       if (__builtin_expect(__buf.size() == __buf._M_requested_size(), true))
  	std::__merge_adaptive
  	  (__first, __middle, __last, __len1, __len2, __buf.begin(), __comp);
        else if (__builtin_expect(__buf.begin() == 0, false))
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5024,5030 ****
        // so the buffer only needs to fit half the range at once.
        _TmpBuf __buf(__first, (__last - __first + 1) / 2);
  
!       if (__builtin_expect(__buf.requested_size() == __buf.size(), true))
  	std::__stable_sort_adaptive(__first,
  				    __first + _DistanceType(__buf.size()),
  				    __last, __buf.begin(), __comp);
--- 5024,5030 ----
        // so the buffer only needs to fit half the range at once.
        _TmpBuf __buf(__first, (__last - __first + 1) / 2);
  
!       if (__builtin_expect(__buf._M_requested_size() == __buf.size(), true))
  	std::__stable_sort_adaptive(__first,
  				    __first + _DistanceType(__buf.size()),
  				    __last, __buf.begin(), __comp);
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/stl_construct.h gcc-16-20250615/libstdc++-v3/include/bits/stl_construct.h
*** gcc-16-20250608/libstdc++-v3/include/bits/stl_construct.h	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/stl_construct.h	Sun Jun 15 22:33:52 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 82,88 ****
        if constexpr (__cplusplus > 201703L && is_array_v<_Tp>)
  	{
  	  for (auto& __x : *__location)
! 	    std::destroy_at(std::__addressof(__x));
  	}
        else
  	__location->~_Tp();
--- 82,88 ----
        if constexpr (__cplusplus > 201703L && is_array_v<_Tp>)
  	{
  	  for (auto& __x : *__location)
! 	    std::destroy_at(std::addressof(__x));
  	}
        else
  	__location->~_Tp();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 123,129 ****
      _Construct(_Tp* __p, _Args&&... __args)
      {
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       if (std::__is_constant_evaluated())
  	{
  	  // Allow std::_Construct to be used in constant expressions.
  	  std::construct_at(__p, std::forward<_Args>(__args)...);
--- 123,129 ----
      _Construct(_Tp* __p, _Args&&... __args)
      {
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       if (std::is_constant_evaluated())
  	{
  	  // Allow std::_Construct to be used in constant expressions.
  	  std::construct_at(__p, std::forward<_Args>(__args)...);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 181,186 ****
--- 181,195 ----
  	  for (; __first != __last; ++__first)
  	    std::_Destroy(std::__addressof(*__first));
  	}
+ 
+       template<typename _ForwardIterator, typename _Size>
+ 	static _GLIBCXX20_CONSTEXPR _ForwardIterator
+ 	__destroy_n(_ForwardIterator __first, _Size __count)
+ 	{
+ 	  for (; __count > 0; (void)++__first, --__count)
+ 	    std::_Destroy(std::__addressof(*__first));
+ 	  return __first;
+ 	}
      };
  
    template<>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 189,194 ****
--- 198,211 ----
        template<typename _ForwardIterator>
          static void
          __destroy(_ForwardIterator, _ForwardIterator) { }
+ 
+       template<typename _ForwardIterator, typename _Size>
+ 	static _ForwardIterator
+ 	__destroy_n(_ForwardIterator __first, _Size __count)
+ 	{
+ 	  std::advance(__first, __count);
+ 	  return __first;
+ 	}
      };
  #endif
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 204,219 ****
        typedef typename iterator_traits<_ForwardIterator>::value_type
                         _Value_type;
  #if __cplusplus >= 201103L
!       // A deleted destructor is trivial, this ensures we reject such types:
!       static_assert(is_destructible<_Value_type>::value,
! 		    "value type is destructible");
!       if constexpr (!__has_trivial_destructor(_Value_type))
  	for (; __first != __last; ++__first)
! 	  std::_Destroy(std::__addressof(*__first));
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       else if (std::__is_constant_evaluated())
  	for (; __first != __last; ++__first)
! 	  std::destroy_at(std::__addressof(*__first));
  #endif
  #else
        std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
--- 221,233 ----
        typedef typename iterator_traits<_ForwardIterator>::value_type
                         _Value_type;
  #if __cplusplus >= 201103L
!       if constexpr (!is_trivially_destructible<_Value_type>::value)
  	for (; __first != __last; ++__first)
! 	  std::_Destroy(std::addressof(*__first));
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       else if (std::is_constant_evaluated())
  	for (; __first != __last; ++__first)
! 	  std::destroy_at(std::addressof(*__first));
  #endif
  #else
        std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 221,253 ****
  #endif
      }
  
- #if __cplusplus < 201103L
-   template<bool>
-     struct _Destroy_n_aux
-     {
-       template<typename _ForwardIterator, typename _Size>
- 	static _GLIBCXX20_CONSTEXPR _ForwardIterator
- 	__destroy_n(_ForwardIterator __first, _Size __count)
- 	{
- 	  for (; __count > 0; (void)++__first, --__count)
- 	    std::_Destroy(std::__addressof(*__first));
- 	  return __first;
- 	}
-     };
- 
-   template<>
-     struct _Destroy_n_aux<true>
-     {
-       template<typename _ForwardIterator, typename _Size>
-         static _ForwardIterator
-         __destroy_n(_ForwardIterator __first, _Size __count)
- 	{
- 	  std::advance(__first, __count);
- 	  return __first;
- 	}
-     };
- #endif
- 
    /**
     * Destroy a range of objects.  If the value_type of the object has
     * a trivial destructor, the compiler should optimize all of this
--- 235,240 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 260,281 ****
        typedef typename iterator_traits<_ForwardIterator>::value_type
                         _Value_type;
  #if __cplusplus >= 201103L
!       // A deleted destructor is trivial, this ensures we reject such types:
!       static_assert(is_destructible<_Value_type>::value,
! 		    "value type is destructible");
!       if constexpr (!__has_trivial_destructor(_Value_type))
  	for (; __count > 0; (void)++__first, --__count)
! 	  std::_Destroy(std::__addressof(*__first));
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       else if (std::__is_constant_evaluated())
  	for (; __count > 0; (void)++__first, --__count)
! 	  std::destroy_at(std::__addressof(*__first));
  #endif
        else
  	std::advance(__first, __count);
        return __first;
  #else
!       return std::_Destroy_n_aux<__has_trivial_destructor(_Value_type)>::
  	__destroy_n(__first, __count);
  #endif
      }
--- 247,265 ----
        typedef typename iterator_traits<_ForwardIterator>::value_type
                         _Value_type;
  #if __cplusplus >= 201103L
!       if constexpr (!is_trivially_destructible<_Value_type>::value)
  	for (; __count > 0; (void)++__first, --__count)
! 	  std::_Destroy(std::addressof(*__first));
  #if __cpp_constexpr_dynamic_alloc // >= C++20
!       else if (std::is_constant_evaluated())
  	for (; __count > 0; (void)++__first, --__count)
! 	  std::destroy_at(std::addressof(*__first));
  #endif
        else
  	std::advance(__first, __count);
        return __first;
  #else
!       return std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
  	__destroy_n(__first, __count);
  #endif
      }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/stl_tempbuf.h gcc-16-20250615/libstdc++-v3/include/bits/stl_tempbuf.h
*** gcc-16-20250608/libstdc++-v3/include/bits/stl_tempbuf.h	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/stl_tempbuf.h	Sun Jun 15 22:33:52 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 227,233 ****
  
        /// Returns the size requested by the constructor; may be >size().
        size_type
!       requested_size() const
        { return _M_original_len; }
  
        /// As per Table mumble.
--- 227,233 ----
  
        /// Returns the size requested by the constructor; may be >size().
        size_type
!       _M_requested_size() const
        { return _M_original_len; }
  
        /// As per Table mumble.
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/stl_uninitialized.h gcc-16-20250615/libstdc++-v3/include/bits/stl_uninitialized.h
*** gcc-16-20250608/libstdc++-v3/include/bits/stl_uninitialized.h	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/stl_uninitialized.h	Sun Jun 15 22:33:52 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 118,124 ****
--- 118,130 ----
        ~_UninitDestroyGuard()
        {
  	if (__builtin_expect(_M_cur != 0, 0))
+ #if __cplusplus == 201703L
+ 	  // std::uninitialized_{value,default}{,_n} can construct array types,
+ 	  // but std::_Destroy cannot handle them until C++20 (PR 120397).
+ 	  _S_destroy(_M_first, *_M_cur);
+ #else
  	  std::_Destroy(_M_first, *_M_cur);
+ #endif
        }
  
        _GLIBCXX20_CONSTEXPR
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 129,134 ****
--- 135,154 ----
  
      private:
        _UninitDestroyGuard(const _UninitDestroyGuard&);
+ 
+ #if __cplusplus == 201703L
+       template<typename _Iter>
+ 	static void
+ 	_S_destroy(_Iter __first, _Iter __last)
+ 	{
+ 	  using _ValT = typename iterator_traits<_Iter>::value_type;
+ 	  if constexpr (is_array<_ValT>::value)
+ 	    for (; __first != __last; ++__first)
+ 	      _S_destroy(*__first, *__first + extent<_ValT>::value);
+ 	  else
+ 	    std::_Destroy(__first, __last);
+ 	}
+ #endif
      };
  
    // This is the default implementation of std::uninitialized_copy.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 839,845 ****
          {
  	  _UninitDestroyGuard<_ForwardIterator> __guard(__first);
  	  for (; __first != __last; ++__first)
! 	    std::_Construct(std::__addressof(*__first));
  	  __guard.release();
  	}
      };
--- 859,865 ----
          {
  	  _UninitDestroyGuard<_ForwardIterator> __guard(__first);
  	  for (; __first != __last; ++__first)
! 	    std::_Construct(std::addressof(*__first));
  	  __guard.release();
  	}
      };
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 856,862 ****
  	    return;
  
  	  typename iterator_traits<_ForwardIterator>::value_type* __val
! 	    = std::__addressof(*__first);
  	  std::_Construct(__val);
  	  if (++__first != __last)
  	    std::fill(__first, __last, *__val);
--- 876,882 ----
  	    return;
  
  	  typename iterator_traits<_ForwardIterator>::value_type* __val
! 	    = std::addressof(*__first);
  	  std::_Construct(__val);
  	  if (++__first != __last)
  	    std::fill(__first, __last, *__val);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 873,879 ****
          {
  	  _UninitDestroyGuard<_ForwardIterator> __guard(__first);
  	  for (; __n > 0; --__n, (void) ++__first)
! 	    std::_Construct(std::__addressof(*__first));
  	  __guard.release();
  	  return __first;
  	}
--- 893,899 ----
          {
  	  _UninitDestroyGuard<_ForwardIterator> __guard(__first);
  	  for (; __n > 0; --__n, (void) ++__first)
! 	    std::_Construct(std::addressof(*__first));
  	  __guard.release();
  	  return __first;
  	}
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 890,896 ****
  	  if (__n > 0)
  	    {
  	      typename iterator_traits<_ForwardIterator>::value_type* __val
! 		= std::__addressof(*__first);
  	      std::_Construct(__val);
  	      ++__first;
  	      __first = std::fill_n(__first, __n - 1, *__val);
--- 910,916 ----
  	  if (__n > 0)
  	    {
  	      typename iterator_traits<_ForwardIterator>::value_type* __val
! 		= std::addressof(*__first);
  	      std::_Construct(__val);
  	      ++__first;
  	      __first = std::fill_n(__first, __n - 1, *__val);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 955,961 ****
  								__alloc);
        typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
        for (; __first != __last; ++__first)
! 	__traits::construct(__alloc, std::__addressof(*__first));
        __guard.release();
      }
  
--- 975,981 ----
  								__alloc);
        typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
        for (; __first != __last; ++__first)
! 	__traits::construct(__alloc, std::addressof(*__first));
        __guard.release();
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 980,986 ****
  								__alloc);
        typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
        for (; __n > 0; --__n, (void) ++__first)
! 	__traits::construct(__alloc, std::__addressof(*__first));
        __guard.release();
        return __first;
      }
--- 1000,1006 ----
  								__alloc);
        typedef __gnu_cxx::__alloc_traits<_Allocator> __traits;
        for (; __n > 0; --__n, (void) ++__first)
! 	__traits::construct(__alloc, std::addressof(*__first));
        __guard.release();
        return __first;
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1007,1013 ****
  	{
  	  _UninitDestroyGuard<_ForwardIterator> __guard(__first);
  	  for (; __first != __last; ++__first)
! 	    std::_Construct_novalue(std::__addressof(*__first));
  	  __guard.release();
  	}
      };
--- 1027,1033 ----
  	{
  	  _UninitDestroyGuard<_ForwardIterator> __guard(__first);
  	  for (; __first != __last; ++__first)
! 	    std::_Construct_novalue(std::addressof(*__first));
  	  __guard.release();
  	}
      };
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1033,1039 ****
  	{
  	  _UninitDestroyGuard<_ForwardIterator> __guard(__first);
  	  for (; __n > 0; --__n, (void) ++__first)
! 	    std::_Construct_novalue(std::__addressof(*__first));
  	  __guard.release();
  	  return __first;
  	}
--- 1053,1059 ----
  	{
  	  _UninitDestroyGuard<_ForwardIterator> __guard(__first);
  	  for (; __n > 0; --__n, (void) ++__first)
! 	    std::_Construct_novalue(std::addressof(*__first));
  	  __guard.release();
  	  return __first;
  	}
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1089,1095 ****
      {
        _UninitDestroyGuard<_ForwardIterator> __guard(__result);
        for (; __n > 0; --__n, (void) ++__first, ++__result)
! 	std::_Construct(std::__addressof(*__result), *__first);
        __guard.release();
        return __result;
      }
--- 1109,1115 ----
      {
        _UninitDestroyGuard<_ForwardIterator> __guard(__result);
        for (; __n > 0; --__n, (void) ++__first, ++__result)
! 	std::_Construct(std::addressof(*__result), *__first);
        __guard.release();
        return __result;
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1112,1118 ****
      {
        _UninitDestroyGuard<_ForwardIterator> __guard(__result);
        for (; __n > 0; --__n, (void) ++__first, ++__result)
! 	std::_Construct(std::__addressof(*__result), *__first);
        __guard.release();
        return {__first, __result};
      }
--- 1132,1138 ----
      {
        _UninitDestroyGuard<_ForwardIterator> __guard(__result);
        for (; __n > 0; --__n, (void) ++__first, ++__result)
! 	std::_Construct(std::addressof(*__result), *__first);
        __guard.release();
        return {__first, __result};
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1276,1286 ****
      noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc,
  			 __dest, std::move(*__orig)))
  	     && noexcept(std::allocator_traits<_Allocator>::destroy(
! 			    __alloc, std::__addressof(*__orig))))
      {
        typedef std::allocator_traits<_Allocator> __traits;
        __traits::construct(__alloc, __dest, std::move(*__orig));
!       __traits::destroy(__alloc, std::__addressof(*__orig));
      }
  
    // This class may be specialized for specific types.
--- 1296,1306 ----
      noexcept(noexcept(std::allocator_traits<_Allocator>::construct(__alloc,
  			 __dest, std::move(*__orig)))
  	     && noexcept(std::allocator_traits<_Allocator>::destroy(
! 			    __alloc, std::addressof(*__orig))))
      {
        typedef std::allocator_traits<_Allocator> __traits;
        __traits::construct(__alloc, __dest, std::move(*__orig));
!       __traits::destroy(__alloc, std::addressof(*__orig));
      }
  
    // This class may be specialized for specific types.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1308,1315 ****
  	  "relocation is only possible for values of the same type");
        _ForwardIterator __cur = __result;
        for (; __first != __last; ++__first, (void)++__cur)
! 	std::__relocate_object_a(std::__addressof(*__cur),
! 				 std::__addressof(*__first), __alloc);
        return __cur;
      }
  
--- 1328,1335 ----
  	  "relocation is only possible for values of the same type");
        _ForwardIterator __cur = __result;
        for (; __first != __last; ++__first, (void)++__cur)
! 	std::__relocate_object_a(std::addressof(*__cur),
! 				 std::addressof(*__first), __alloc);
        return __cur;
      }
  
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/version.def gcc-16-20250615/libstdc++-v3/include/bits/version.def
*** gcc-16-20250608/libstdc++-v3/include/bits/version.def	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/version.def	Sun Jun 15 22:33:52 2025
*************** ftms = {
*** 649,655 ****
    };
    values = {
      v = 1;
!     /* For when there's no gthread.  */
      cxxmin = 17;
      hosted = yes;
      gthread = no;
--- 649,655 ----
    };
    values = {
      v = 1;
!     // For when there is no gthread.
      cxxmin = 17;
      hosted = yes;
      gthread = no;
*************** ftms = {
*** 852,857 ****
--- 852,865 ----
  };
  
  ftms = {
+   name = optional_range_support;
+   values = {
+     v = 202406;
+     cxxmin = 26;
+   };
+ };
+ 
+ ftms = {
    name = destroying_delete;
    values = {
      v = 201806;
*************** ftms = {
*** 1993,1998 ****
--- 2001,2015 ----
      cxxmin = 26;
      hosted = yes;
    };
+ };
+ 
+ ftms = {
+   name = sstream_from_string_view;
+   values = {
+     v = 202306;
+     cxxmin = 26;
+     hosted = yes;
+   };
  };
  
  // Standard test specifications.
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/bits/version.h gcc-16-20250615/libstdc++-v3/include/bits/version.h
*** gcc-16-20250608/libstdc++-v3/include/bits/version.h	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/bits/version.h	Sun Jun 15 22:33:52 2025
***************
*** 955,960 ****
--- 955,970 ----
  #endif /* !defined(__cpp_lib_optional) && defined(__glibcxx_want_optional) */
  #undef __glibcxx_want_optional
  
+ #if !defined(__cpp_lib_optional_range_support)
+ # if (__cplusplus >  202302L)
+ #  define __glibcxx_optional_range_support 202406L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_optional_range_support)
+ #   define __cpp_lib_optional_range_support 202406L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_optional_range_support) && defined(__glibcxx_want_optional_range_support) */
+ #undef __glibcxx_want_optional_range_support
+ 
  #if !defined(__cpp_lib_destroying_delete)
  # if (__cplusplus >= 202002L) && (__cpp_impl_destroying_delete)
  #  define __glibcxx_destroying_delete 201806L
***************
*** 2233,2236 ****
--- 2243,2256 ----
  #endif /* !defined(__cpp_lib_polymorphic) && defined(__glibcxx_want_polymorphic) */
  #undef __glibcxx_want_polymorphic
  
+ #if !defined(__cpp_lib_sstream_from_string_view)
+ # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
+ #  define __glibcxx_sstream_from_string_view 202306L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_sstream_from_string_view)
+ #   define __cpp_lib_sstream_from_string_view 202306L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_sstream_from_string_view) && defined(__glibcxx_want_sstream_from_string_view) */
+ #undef __glibcxx_want_sstream_from_string_view
+ 
  #undef __glibcxx_want_all
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/std/format gcc-16-20250615/libstdc++-v3/include/std/format
*** gcc-16-20250608/libstdc++-v3/include/std/format	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/std/format	Sun Jun 15 22:33:52 2025
*************** namespace __format
*** 3114,3137 ****
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // 3944. Formatters converting sequences of char to sequences of wchar_t
  
!   namespace __format { struct __disabled; }
  
-   // std::formatter<__disabled, C> uses the primary template, which is disabled.
    template<>
      struct formatter<char*, wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
    template<>
      struct formatter<const char*, wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
    template<size_t _Nm>
      struct formatter<char[_Nm], wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
    template<class _Traits, class _Allocator>
      struct formatter<basic_string<char, _Traits, _Allocator>, wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
    template<class _Traits>
      struct formatter<basic_string_view<char, _Traits>, wchar_t>
!     : private formatter<__format::__disabled, wchar_t> { };
  #endif
  
    /// An iterator after the last character written, and the number of
--- 3114,3141 ----
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // 3944. Formatters converting sequences of char to sequences of wchar_t
  
!   struct __formatter_disabled
!   {
!     __formatter_disabled() = delete; // Cannot format char sequence to wchar_t
!     __formatter_disabled(const __formatter_disabled&) = delete;
!     __formatter_disabled& operator=(const __formatter_disabled&) = delete;
!   };
  
    template<>
      struct formatter<char*, wchar_t>
!     : private __formatter_disabled { };
    template<>
      struct formatter<const char*, wchar_t>
!     : private __formatter_disabled { };
    template<size_t _Nm>
      struct formatter<char[_Nm], wchar_t>
!     : private __formatter_disabled { };
    template<class _Traits, class _Allocator>
      struct formatter<basic_string<char, _Traits, _Allocator>, wchar_t>
!     : private __formatter_disabled { };
    template<class _Traits>
      struct formatter<basic_string_view<char, _Traits>, wchar_t>
!     : private __formatter_disabled { };
  #endif
  
    /// An iterator after the last character written, and the number of
*************** namespace __format
*** 5479,5510 ****
  #endif
  
  #if __glibcxx_format_ranges // C++ >= 23 && HOSTED
-   // [format.range], formatting of ranges
-   // [format.range.fmtkind], variable template format_kind
-   enum class range_format {
-     disabled,
-     map,
-     set,
-     sequence,
-     string,
-     debug_string
-   };
- 
-   /** @brief A constant determining how a range should be formatted.
-    *
-    * The primary template of `std::format_kind` cannot be instantiated.
-    * There is a partial specialization for input ranges and you can
-    * specialize the variable template for your own cv-unqualified types
-    * that satisfy the `ranges::input_range` concept.
-    *
-    * @since C++23
-    */
-   template<typename _Rg>
-     constexpr auto format_kind = []{
-       static_assert(false, "cannot use primary template of 'std::format_kind'");
-       return type_identity<_Rg>{};
-     }();
- 
    /// @cond undocumented
    template<typename _Tp>
      consteval range_format
--- 5483,5488 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/std/mdspan gcc-16-20250615/libstdc++-v3/include/std/mdspan
*** gcc-16-20250608/libstdc++-v3/include/std/mdspan	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/std/mdspan	Sun Jun 15 22:33:52 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 69,80 ****
  	//
  	// If __r is the index of a dynamic extent, then
  	// _S_dynamic_index[__r] is the index of that extent in
! 	// _M_dynamic_extents.
  	static constexpr auto _S_dynamic_index = [] consteval
  	{
  	  array<size_t, _S_rank+1> __ret;
  	  size_t __dyn = 0;
! 	  for(size_t __i = 0; __i < _S_rank; ++__i)
  	    {
  	      __ret[__i] = __dyn;
  	      __dyn += _S_is_dyn(_Extents[__i]);
--- 69,80 ----
  	//
  	// If __r is the index of a dynamic extent, then
  	// _S_dynamic_index[__r] is the index of that extent in
! 	// _M_dyn_exts.
  	static constexpr auto _S_dynamic_index = [] consteval
  	{
  	  array<size_t, _S_rank+1> __ret;
  	  size_t __dyn = 0;
! 	  for (size_t __i = 0; __i < _S_rank; ++__i)
  	    {
  	      __ret[__i] = __dyn;
  	      __dyn += _S_is_dyn(_Extents[__i]);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 105,111 ****
  	{
  	  auto __se = _Extents[__r];
  	  if (__se == dynamic_extent)
! 	    return _M_dynamic_extents[_S_dynamic_index[__r]];
  	  else
  	    return __se;
  	}
--- 105,111 ----
  	{
  	  auto __se = _Extents[__r];
  	  if (__se == dynamic_extent)
! 	    return _M_dyn_exts[_S_dynamic_index[__r]];
  	  else
  	    return __se;
  	}
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 114,125 ****
  	  constexpr void
  	  _M_init_dynamic_extents(_GetOtherExtent __get_extent) noexcept
  	  {
! 	    for(size_t __i = 0; __i < _S_rank_dynamic; ++__i)
  	      {
  		size_t __di = __i;
  		if constexpr (_OtherRank != _S_rank_dynamic)
  		  __di = _S_dynamic_index_inv[__i];
! 		_M_dynamic_extents[__i] = _S_int_cast(__get_extent(__di));
  	      }
  	  }
  
--- 114,125 ----
  	  constexpr void
  	  _M_init_dynamic_extents(_GetOtherExtent __get_extent) noexcept
  	  {
! 	    for (size_t __i = 0; __i < _S_rank_dynamic; ++__i)
  	      {
  		size_t __di = __i;
  		if constexpr (_OtherRank != _S_rank_dynamic)
  		  __di = _S_dynamic_index_inv[__i];
! 		_M_dyn_exts[__i] = _S_int_cast(__get_extent(__di));
  	      }
  	  }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 144,152 ****
  	      { return __exts[__i]; });
  	  }
  
        private:
  	using _S_storage = __array_traits<_IndexType, _S_rank_dynamic>::_Type;
! 	[[no_unique_address]] _S_storage _M_dynamic_extents{};
        };
  
      template<typename _OIndexType, typename _SIndexType>
--- 144,166 ----
  	      { return __exts[__i]; });
  	  }
  
+ 	static constexpr span<const size_t>
+ 	_S_static_extents(size_t __begin, size_t __end) noexcept
+ 	{
+ 	  return {_Extents.data() + __begin, _Extents.data() + __end};
+ 	}
+ 
+ 	constexpr span<const _IndexType>
+ 	_M_dynamic_extents(size_t __begin, size_t __end) const noexcept
+ 	requires (_Extents.size() > 0)
+ 	{
+ 	  return {_M_dyn_exts + _S_dynamic_index[__begin],
+ 		  _M_dyn_exts + _S_dynamic_index[__end]};
+ 	}
+ 
        private:
  	using _S_storage = __array_traits<_IndexType, _S_rank_dynamic>::_Type;
! 	[[no_unique_address]] _S_storage _M_dyn_exts{};
        };
  
      template<typename _OIndexType, typename _SIndexType>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 160,165 ****
--- 174,196 ----
  	|| _Extent <= numeric_limits<_IndexType>::max();
    }
  
+   namespace __mdspan
+   {
+     template<typename _Extents>
+       constexpr span<const size_t>
+       __static_extents(size_t __begin = 0, size_t __end = _Extents::rank())
+       noexcept
+       { return _Extents::_S_storage::_S_static_extents(__begin, __end); }
+ 
+     template<typename _Extents>
+       constexpr span<const typename _Extents::index_type>
+       __dynamic_extents(const _Extents& __exts, size_t __begin = 0,
+ 			size_t __end = _Extents::rank()) noexcept
+       {
+ 	return __exts._M_exts._M_dynamic_extents(__begin, __end);
+       }
+   }
+ 
    template<typename _IndexType, size_t... _Extents>
      class extents
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 197,203 ****
  	if constexpr (rank() == 0)
  	  __builtin_trap();
  	else
! 	  return _M_dynamic_extents._M_extent(__r);
        }
  
        constexpr
--- 228,234 ----
  	if constexpr (rank() == 0)
  	  __builtin_trap();
  	else
! 	  return _M_exts._M_extent(__r);
        }
  
        constexpr
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 233,246 ****
  	requires (_S_is_compatible_extents<_OExtents...>())
  	constexpr explicit(_S_ctor_explicit<_OIndexType, _OExtents...>())
  	extents(const extents<_OIndexType, _OExtents...>& __other) noexcept
! 	: _M_dynamic_extents(__other._M_dynamic_extents)
  	{ }
  
        template<__mdspan::__valid_index_type<index_type>... _OIndexTypes>
  	requires (sizeof...(_OIndexTypes) == rank()
  		  || sizeof...(_OIndexTypes) == rank_dynamic())
  	constexpr explicit extents(_OIndexTypes... __exts) noexcept
! 	: _M_dynamic_extents(span<const _IndexType, sizeof...(_OIndexTypes)>(
  	    initializer_list{_S_storage::_S_int_cast(__exts)...}))
  	{ }
  
--- 264,277 ----
  	requires (_S_is_compatible_extents<_OExtents...>())
  	constexpr explicit(_S_ctor_explicit<_OIndexType, _OExtents...>())
  	extents(const extents<_OIndexType, _OExtents...>& __other) noexcept
! 	: _M_exts(__other._M_exts)
  	{ }
  
        template<__mdspan::__valid_index_type<index_type>... _OIndexTypes>
  	requires (sizeof...(_OIndexTypes) == rank()
  		  || sizeof...(_OIndexTypes) == rank_dynamic())
  	constexpr explicit extents(_OIndexTypes... __exts) noexcept
! 	: _M_exts(span<const _IndexType, sizeof...(_OIndexTypes)>(
  	    initializer_list{_S_storage::_S_int_cast(__exts)...}))
  	{ }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 248,262 ****
  	requires (_Nm == rank() || _Nm == rank_dynamic())
  	constexpr explicit(_Nm != rank_dynamic())
  	extents(span<_OIndexType, _Nm> __exts) noexcept
! 	: _M_dynamic_extents(span<const _OIndexType, _Nm>(__exts))
  	{ }
  
- 
        template<__mdspan::__valid_index_type<index_type> _OIndexType, size_t _Nm>
  	requires (_Nm == rank() || _Nm == rank_dynamic())
  	constexpr explicit(_Nm != rank_dynamic())
  	extents(const array<_OIndexType, _Nm>& __exts) noexcept
! 	: _M_dynamic_extents(span<const _OIndexType, _Nm>(__exts))
  	{ }
  
        template<typename _OIndexType, size_t... _OExtents>
--- 279,292 ----
  	requires (_Nm == rank() || _Nm == rank_dynamic())
  	constexpr explicit(_Nm != rank_dynamic())
  	extents(span<_OIndexType, _Nm> __exts) noexcept
! 	: _M_exts(span<const _OIndexType, _Nm>(__exts))
  	{ }
  
        template<__mdspan::__valid_index_type<index_type> _OIndexType, size_t _Nm>
  	requires (_Nm == rank() || _Nm == rank_dynamic())
  	constexpr explicit(_Nm != rank_dynamic())
  	extents(const array<_OIndexType, _Nm>& __exts) noexcept
! 	: _M_exts(span<const _OIndexType, _Nm>(__exts))
  	{ }
  
        template<typename _OIndexType, size_t... _OExtents>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 276,284 ****
  	}
  
      private:
        using _S_storage = __mdspan::_ExtentsStorage<
  	_IndexType, array<size_t, sizeof...(_Extents)>{_Extents...}>;
!       [[no_unique_address]] _S_storage _M_dynamic_extents;
  
        template<typename _OIndexType, size_t... _OExtents>
  	friend class extents;
--- 306,320 ----
  	}
  
      private:
+       friend span<const size_t>
+       __mdspan::__static_extents<extents>(size_t, size_t);
+ 
+       friend span<const index_type>
+       __mdspan::__dynamic_extents<extents>(const extents&, size_t, size_t);
+ 
        using _S_storage = __mdspan::_ExtentsStorage<
  	_IndexType, array<size_t, sizeof...(_Extents)>{_Extents...}>;
!       [[no_unique_address]] _S_storage _M_exts;
  
        template<typename _OIndexType, size_t... _OExtents>
  	friend class extents;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 286,291 ****
--- 322,390 ----
  
    namespace __mdspan
    {
+     template<typename _Tp, size_t _Nm>
+       constexpr bool
+       __contains_zero(span<_Tp, _Nm> __exts) noexcept
+       {
+ 	for (size_t __i = 0; __i < __exts.size(); ++__i)
+ 	  if (__exts[__i] == 0)
+ 	    return true;
+ 	return false;
+       }
+ 
+     template<typename _Extents>
+       constexpr bool
+       __empty(const _Extents& __exts) noexcept
+       {
+ 	if constexpr (__contains_zero(__static_extents<_Extents>()))
+ 	  return true;
+ 	else if constexpr (_Extents::rank_dynamic() > 0)
+ 	  return __contains_zero(__dynamic_extents(__exts));
+ 	else
+ 	  return false;
+       }
+ 
+     constexpr size_t
+     __static_extents_prod(const auto& __sta_exts) noexcept
+     {
+       size_t __ret = 1;
+       for (auto __factor : __sta_exts)
+ 	if (__factor != dynamic_extent)
+ 	  __ret *= __factor;
+       return __ret;
+     }
+ 
+     template<typename _Extents>
+       constexpr typename _Extents::index_type
+       __exts_prod(const _Extents& __exts, size_t __begin, size_t __end) noexcept
+       {
+ 	using _IndexType = typename _Extents::index_type;
+ 
+ 	size_t __ret = 1;
+ 	if constexpr (_Extents::rank_dynamic() != _Extents::rank())
+ 	  {
+ 	    auto __sta_exts = __static_extents<_Extents>(__begin, __end);
+ 	    __ret = __static_extents_prod(__sta_exts);
+ 	    if (__ret == 0)
+ 	      return 0;
+ 	  }
+ 
+ 	if constexpr (_Extents::rank_dynamic() > 0)
+ 	  for (auto __factor : __dynamic_extents(__exts, __begin, __end))
+ 	    __ret *= size_t(__factor);
+ 	return _IndexType(__ret);
+       }
+ 
+     template<typename _Extents>
+       constexpr typename _Extents::index_type
+       __fwd_prod(const _Extents& __exts, size_t __r) noexcept
+       { return __exts_prod(__exts, 0, __r); }
+ 
+     template<typename _Extents>
+       constexpr typename _Extents::index_type
+       __rev_prod(const _Extents& __exts, size_t __r) noexcept
+       { return __exts_prod(__exts, __r + 1, __exts.rank()); }
+ 
      template<typename _IndexType, size_t... _Counts>
        auto __build_dextents_type(integer_sequence<size_t, _Counts...>)
  	-> extents<_IndexType, ((void) _Counts, dynamic_extent)...>;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 304,309 ****
--- 403,1009 ----
      explicit extents(_Integrals...) ->
        extents<size_t, __mdspan::__dynamic_extent<_Integrals>()...>;
  
+   struct layout_left
+   {
+     template<typename _Extents>
+       class mapping;
+   };
+ 
+   struct layout_right
+   {
+     template<typename _Extents>
+       class mapping;
+   };
+ 
+   struct layout_stride
+   {
+     template<typename _Extents>
+       class mapping;
+   };
+ 
+   namespace __mdspan
+   {
+     template<typename _Tp>
+       constexpr bool __is_extents = false;
+ 
+     template<typename _IndexType, size_t... _Extents>
+       constexpr bool __is_extents<extents<_IndexType, _Extents...>> = true;
+ 
+     template<typename _Extents, typename... _Indices>
+       constexpr typename _Extents::index_type
+       __linear_index_left(const _Extents& __exts, _Indices... __indices)
+       noexcept
+       {
+ 	using _IndexType = typename _Extents::index_type;
+ 	_IndexType __res = 0;
+ 	if constexpr (sizeof...(__indices) > 0)
+ 	  {
+ 	    _IndexType __mult = 1;
+ 	    auto __update = [&, __pos = 0u](_IndexType __idx) mutable
+ 	      {
+ 		__res += __idx * __mult;
+ 		__mult *= __exts.extent(__pos);
+ 		++__pos;
+ 	      };
+ 	    (__update(__indices), ...);
+ 	  }
+ 	return __res;
+       }
+ 
+     template<typename _Extents,
+              typename _IndexType = typename _Extents::index_type>
+       consteval _IndexType
+       __static_quotient(_IndexType __nom = numeric_limits<_IndexType>::max())
+       {
+ 	auto __sta_exts = __static_extents<_Extents>();
+ 	for (auto __factor : __sta_exts)
+ 	  {
+ 	    if (__factor != dynamic_extent)
+ 	      __nom /= _IndexType(__factor);
+ 	    if (__nom == 0)
+ 	      break;
+ 	  }
+ 	return __nom;
+       }
+ 
+     template<typename _Extents>
+       constexpr bool
+       __is_representable_extents(const _Extents& __exts) noexcept
+       {
+ 	using _IndexType = _Extents::index_type;
+ 
+ 	if constexpr (__contains_zero(__static_extents<_Extents>()))
+ 	  return true;
+ 	else
+ 	  {
+ 	    constexpr auto __sta_quo = __static_quotient<_Extents>();
+ 	    if constexpr (_Extents::rank_dynamic() == 0)
+ 	      return __sta_quo != 0;
+ 	    else
+ 	      {
+ 		auto __dyn_exts = __dynamic_extents(__exts);
+ 		if (__contains_zero(__dyn_exts))
+ 		  return true;
+ 
+ 		if constexpr (__sta_quo == 0)
+ 		  return false;
+ 		else
+ 		  {
+ 		    auto __dyn_quo = _IndexType(__sta_quo);
+ 		    for (auto __factor : __dyn_exts)
+ 		      {
+ 			__dyn_quo /= __factor;
+ 			if (__dyn_quo == 0)
+ 			  return false;
+ 		      }
+ 		    return true;
+ 		  }
+ 	      }
+ 	  }
+       }
+ 
+     template<typename _Extents, typename _IndexType>
+       concept __representable_size = _Extents::rank_dynamic() != 0
+ 	|| __contains_zero(__static_extents<_Extents>())
+ 	|| (__static_quotient<_Extents, _IndexType>() != 0);
+ 
+     template<typename _Layout, typename _Mapping>
+       concept __mapping_of =
+ 	is_same_v<typename _Layout::mapping<typename _Mapping::extents_type>,
+ 		  _Mapping>;
+ 
+     template<typename _Mapping>
+       concept __standardized_mapping = __mapping_of<layout_left, _Mapping>
+ 				       || __mapping_of<layout_right, _Mapping>
+ 				       || __mapping_of<layout_stride, _Mapping>;
+ 
+     // A tag type to create internal ctors.
+     class __internal_ctor
+     { };
+   }
+ 
+   template<typename _Extents>
+     class layout_left::mapping
+     {
+     public:
+       using extents_type = _Extents;
+       using index_type = typename extents_type::index_type;
+       using size_type = typename extents_type::size_type;
+       using rank_type = typename extents_type::rank_type;
+       using layout_type = layout_left;
+ 
+       static_assert(__mdspan::__representable_size<extents_type, index_type>,
+ 	"The size of extents_type must be representable as index_type");
+ 
+       constexpr
+       mapping() noexcept = default;
+ 
+       constexpr
+       mapping(const mapping&) noexcept = default;
+ 
+       constexpr
+       mapping(const extents_type& __extents) noexcept
+       : _M_extents(__extents)
+       { __glibcxx_assert(__mdspan::__is_representable_extents(_M_extents)); }
+ 
+       template<typename _OExtents>
+ 	requires is_constructible_v<extents_type, _OExtents>
+ 	constexpr explicit(!is_convertible_v<_OExtents, extents_type>)
+ 	mapping(const mapping<_OExtents>& __other) noexcept
+ 	: mapping(__other.extents(), __mdspan::__internal_ctor{})
+ 	{ }
+ 
+       template<typename _OExtents>
+ 	requires (extents_type::rank() <= 1)
+ 		  && is_constructible_v<extents_type, _OExtents>
+ 	constexpr explicit(!is_convertible_v<_OExtents, extents_type>)
+ 	mapping(const layout_right::mapping<_OExtents>& __other) noexcept
+ 	: mapping(__other.extents(), __mdspan::__internal_ctor{})
+ 	{ }
+ 
+       // noexcept for consistency with other layouts.
+       template<typename _OExtents>
+ 	requires is_constructible_v<extents_type, _OExtents>
+ 	constexpr explicit(extents_type::rank() > 0)
+ 	mapping(const layout_stride::mapping<_OExtents>& __other) noexcept
+ 	: mapping(__other.extents(), __mdspan::__internal_ctor{})
+ 	{ __glibcxx_assert(*this == __other); }
+ 
+       constexpr mapping&
+       operator=(const mapping&) noexcept = default;
+ 
+       constexpr const extents_type&
+       extents() const noexcept { return _M_extents; }
+ 
+       constexpr index_type
+       required_span_size() const noexcept
+       { return __mdspan::__fwd_prod(_M_extents, extents_type::rank()); }
+ 
+       template<__mdspan::__valid_index_type<index_type>... _Indices>
+ 	requires (sizeof...(_Indices) == extents_type::rank())
+ 	constexpr index_type
+ 	operator()(_Indices... __indices) const noexcept
+ 	{
+ 	  return __mdspan::__linear_index_left(_M_extents,
+ 	    static_cast<index_type>(__indices)...);
+ 	}
+ 
+       static constexpr bool
+       is_always_unique() noexcept { return true; }
+ 
+       static constexpr bool
+       is_always_exhaustive() noexcept { return true; }
+ 
+       static constexpr bool
+       is_always_strided() noexcept { return true; }
+ 
+       static constexpr bool
+       is_unique() noexcept { return true; }
+ 
+       static constexpr bool
+       is_exhaustive() noexcept { return true; }
+ 
+       static constexpr bool
+       is_strided() noexcept { return true; }
+ 
+       constexpr index_type
+       stride(rank_type __i) const noexcept
+       requires (extents_type::rank() > 0)
+       {
+ 	__glibcxx_assert(__i < extents_type::rank());
+ 	return __mdspan::__fwd_prod(_M_extents, __i);
+       }
+ 
+       template<typename _OExtents>
+ 	requires (extents_type::rank() == _OExtents::rank())
+ 	friend constexpr bool
+ 	operator==(const mapping& __self, const mapping<_OExtents>& __other)
+ 	noexcept
+ 	{ return __self.extents() == __other.extents(); }
+ 
+     private:
+       template<typename _OExtents>
+ 	constexpr explicit
+ 	mapping(const _OExtents& __oexts, __mdspan::__internal_ctor) noexcept
+ 	: _M_extents(__oexts)
+ 	{
+ 	  static_assert(__mdspan::__representable_size<_OExtents, index_type>,
+ 	    "The size of OtherExtents must be representable as index_type");
+ 	  __glibcxx_assert(__mdspan::__is_representable_extents(_M_extents));
+ 	}
+ 
+ 	[[no_unique_address]] extents_type _M_extents{};
+     };
+ 
+   namespace __mdspan
+   {
+     template<typename _Extents, typename... _Indices>
+       constexpr typename _Extents::index_type
+       __linear_index_right(const _Extents& __exts, _Indices... __indices)
+       noexcept
+       {
+ 	using _IndexType = typename _Extents::index_type;
+ 	array<_IndexType, sizeof...(__indices)> __ind_arr{__indices...};
+ 	_IndexType __res = 0;
+ 	if constexpr (sizeof...(__indices) > 0)
+ 	  {
+ 	    _IndexType __mult = 1;
+ 	    auto __update = [&, __pos = __exts.rank()](_IndexType) mutable
+ 	      {
+ 		--__pos;
+ 		__res += __ind_arr[__pos] * __mult;
+ 		__mult *= __exts.extent(__pos);
+ 	      };
+ 	    (__update(__indices), ...);
+ 	  }
+ 	return __res;
+       }
+   }
+ 
+   template<typename _Extents>
+     class layout_right::mapping
+     {
+     public:
+       using extents_type = _Extents;
+       using index_type = typename extents_type::index_type;
+       using size_type = typename extents_type::size_type;
+       using rank_type = typename extents_type::rank_type;
+       using layout_type = layout_right;
+ 
+       static_assert(__mdspan::__representable_size<extents_type, index_type>,
+ 	"The size of extents_type must be representable as index_type");
+ 
+       constexpr
+       mapping() noexcept = default;
+ 
+       constexpr
+       mapping(const mapping&) noexcept = default;
+ 
+       constexpr
+       mapping(const extents_type& __extents) noexcept
+       : _M_extents(__extents)
+       { __glibcxx_assert(__mdspan::__is_representable_extents(_M_extents)); }
+ 
+       template<typename _OExtents>
+ 	requires is_constructible_v<extents_type, _OExtents>
+ 	constexpr explicit(!is_convertible_v<_OExtents, extents_type>)
+ 	mapping(const mapping<_OExtents>& __other) noexcept
+ 	: mapping(__other.extents(), __mdspan::__internal_ctor{})
+ 	{ }
+ 
+       template<typename _OExtents>
+ 	requires (extents_type::rank() <= 1)
+ 	    && is_constructible_v<extents_type, _OExtents>
+ 	constexpr explicit(!is_convertible_v<_OExtents, extents_type>)
+ 	mapping(const layout_left::mapping<_OExtents>& __other) noexcept
+ 	: mapping(__other.extents(), __mdspan::__internal_ctor{})
+ 	{ }
+ 
+       template<typename _OExtents>
+ 	requires is_constructible_v<extents_type, _OExtents>
+ 	constexpr explicit(extents_type::rank() > 0)
+ 	mapping(const layout_stride::mapping<_OExtents>& __other) noexcept
+ 	: mapping(__other.extents(), __mdspan::__internal_ctor{})
+ 	{ __glibcxx_assert(*this == __other); }
+ 
+       constexpr mapping&
+       operator=(const mapping&) noexcept = default;
+ 
+       constexpr const extents_type&
+       extents() const noexcept { return _M_extents; }
+ 
+       constexpr index_type
+       required_span_size() const noexcept
+       { return __mdspan::__fwd_prod(_M_extents, extents_type::rank()); }
+ 
+       template<__mdspan::__valid_index_type<index_type>... _Indices>
+ 	requires (sizeof...(_Indices) == extents_type::rank())
+ 	constexpr index_type
+ 	operator()(_Indices... __indices) const noexcept
+ 	{
+ 	  return __mdspan::__linear_index_right(
+ 	    _M_extents, static_cast<index_type>(__indices)...);
+ 	}
+ 
+       static constexpr bool
+       is_always_unique() noexcept
+       { return true; }
+ 
+       static constexpr bool
+       is_always_exhaustive() noexcept
+       { return true; }
+ 
+       static constexpr bool
+       is_always_strided() noexcept
+       { return true; }
+ 
+       static constexpr bool
+       is_unique() noexcept
+       { return true; }
+ 
+       static constexpr bool
+       is_exhaustive() noexcept
+       { return true; }
+ 
+       static constexpr bool
+       is_strided() noexcept
+       { return true; }
+ 
+       constexpr index_type
+       stride(rank_type __i) const noexcept
+       requires (extents_type::rank() > 0)
+       {
+ 	__glibcxx_assert(__i < extents_type::rank());
+ 	return __mdspan::__rev_prod(_M_extents, __i);
+       }
+ 
+       template<typename _OExtents>
+ 	requires (extents_type::rank() == _OExtents::rank())
+ 	friend constexpr bool
+ 	operator==(const mapping& __self, const mapping<_OExtents>& __other)
+ 	noexcept
+ 	{ return __self.extents() == __other.extents(); }
+ 
+     private:
+       template<typename _OExtents>
+ 	constexpr explicit
+ 	mapping(const _OExtents& __oexts, __mdspan::__internal_ctor) noexcept
+ 	: _M_extents(__oexts)
+ 	{
+ 	  static_assert(__mdspan::__representable_size<_OExtents, index_type>,
+ 	    "The size of OtherExtents must be representable as index_type");
+ 	  __glibcxx_assert(__mdspan::__is_representable_extents(_M_extents));
+ 	}
+ 
+ 	[[no_unique_address]] extents_type _M_extents{};
+     };
+ 
+   namespace __mdspan
+   {
+     template<typename _Mp>
+       concept __mapping_alike = requires
+       {
+ 	requires __is_extents<typename _Mp::extents_type>;
+ 	{ _Mp::is_always_strided() } -> same_as<bool>;
+ 	{ _Mp::is_always_exhaustive() } -> same_as<bool>;
+ 	{ _Mp::is_always_unique() } -> same_as<bool>;
+ 	bool_constant<_Mp::is_always_strided()>::value;
+ 	bool_constant<_Mp::is_always_exhaustive()>::value;
+ 	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)
+       noexcept
+       {
+ 	using _IndexType = typename _Mapping::index_type;
+ 	_IndexType __res = 0;
+ 	if constexpr (sizeof...(__indices) > 0)
+ 	  {
+ 	    auto __update = [&, __pos = 0u](_IndexType __idx) mutable
+ 	      {
+ 		__res += __idx * __m.stride(__pos++);
+ 	      };
+ 	    (__update(__indices), ...);
+ 	  }
+ 	return __res;
+       }
+   }
+ 
+   template<typename _Extents>
+     class layout_stride::mapping
+     {
+     public:
+       using extents_type = _Extents;
+       using index_type = typename extents_type::index_type;
+       using size_type = typename extents_type::size_type;
+       using rank_type = typename extents_type::rank_type;
+       using layout_type = layout_stride;
+ 
+       static_assert(__mdspan::__representable_size<extents_type, index_type>,
+ 	"The size of extents_type must be representable as index_type");
+ 
+       constexpr
+       mapping() noexcept
+       {
+ 	// The precondition is either statically asserted, or automatically
+ 	// satisfied because dynamic extents are zero-initialized.
+ 	size_t __stride = 1;
+ 	for (size_t __i = extents_type::rank(); __i > 0; --__i)
+ 	  {
+ 	    _M_strides[__i - 1] = index_type(__stride);
+ 	    __stride *= size_t(_M_extents.extent(__i - 1));
+ 	  }
+       }
+ 
+       constexpr
+       mapping(const mapping&) noexcept = default;
+ 
+       template<__mdspan::__valid_index_type<index_type> _OIndexType>
+ 	constexpr
+ 	mapping(const extents_type& __exts,
+ 		span<_OIndexType, extents_type::rank()> __strides) noexcept
+ 	: _M_extents(__exts)
+ 	{
+ 	  for (size_t __i = 0; __i < extents_type::rank(); ++__i)
+ 	    _M_strides[__i] = index_type(as_const(__strides[__i]));
+ 	}
+ 
+       template<__mdspan::__valid_index_type<index_type> _OIndexType>
+ 	constexpr
+ 	mapping(const extents_type& __exts,
+ 		const array<_OIndexType, extents_type::rank()>& __strides)
+ 	noexcept
+ 	: mapping(__exts,
+ 		  span<const _OIndexType, extents_type::rank()>(__strides))
+ 	{ }
+ 
+       template<__mdspan::__mapping_alike _StridedMapping>
+ 	requires (is_constructible_v<extents_type,
+ 				     typename _StridedMapping::extents_type>
+ 		  && _StridedMapping::is_always_unique()
+ 		  && _StridedMapping::is_always_strided())
+ 	constexpr explicit(!(
+ 	  is_convertible_v<typename _StridedMapping::extents_type, extents_type>
+ 	  && __mdspan::__standardized_mapping<_StridedMapping>))
+ 	mapping(const _StridedMapping& __other) noexcept
+ 	: _M_extents(__other.extents())
+ 	{
+ 	  using _OIndexType = _StridedMapping::index_type;
+ 	  using _OExtents = _StridedMapping::extents_type;
+ 
+ 	  __glibcxx_assert(__mdspan::__offset(__other) == 0);
+ 	  static_assert(__mdspan::__representable_size<_OExtents, index_type>,
+ 	    "The size of StridedMapping::extents_type must be representable as"
+ 	    " index_type");
+ 	  if constexpr (cmp_greater(numeric_limits<_OIndexType>::max(),
+ 				    numeric_limits<index_type>::max()))
+ 	    __glibcxx_assert(!cmp_less(numeric_limits<index_type>::max(),
+ 				       __other.required_span_size())
+ 		&& "other.required_span_size() must be representable"
+ 		   " as index_type");
+ 	  if constexpr (extents_type::rank() > 0)
+ 	    for (size_t __i = 0; __i < extents_type::rank(); ++__i)
+ 	      _M_strides[__i] = index_type(__other.stride(__i));
+ 	}
+ 
+       constexpr mapping&
+       operator=(const mapping&) noexcept = default;
+ 
+       constexpr const extents_type&
+       extents() const noexcept { return _M_extents; }
+ 
+       constexpr array<index_type, extents_type::rank()>
+       strides() const noexcept
+       {
+ 	array<index_type, extents_type::rank()> __ret;
+ 	for (size_t __i = 0; __i < extents_type::rank(); ++__i)
+ 	  __ret[__i] = _M_strides[__i];
+ 	return __ret;
+       }
+ 
+       constexpr index_type
+       required_span_size() const noexcept
+       {
+ 	if (__mdspan::__empty(_M_extents))
+ 	  return 0;
+ 
+ 	index_type __ret = 1;
+ 	for (size_t __i = 0; __i < extents_type::rank(); ++__i)
+ 	  __ret += (_M_extents.extent(__i) - 1) * _M_strides[__i];
+ 	return __ret;
+       }
+ 
+       template<__mdspan::__valid_index_type<index_type>... _Indices>
+ 	requires (sizeof...(_Indices) == extents_type::rank())
+ 	constexpr index_type
+ 	operator()(_Indices... __indices) const noexcept
+ 	{
+ 	  return __mdspan::__linear_index_strides(*this,
+ 	    static_cast<index_type>(__indices)...);
+ 	}
+ 
+       static constexpr bool
+       is_always_unique() noexcept { return true; }
+ 
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // 4266. layout_stride::mapping should treat empty mappings as exhaustive
+       static constexpr bool
+       is_always_exhaustive() noexcept
+       {
+ 	return (_Extents::rank() == 0) || __mdspan::__contains_zero(
+ 	    __mdspan::__static_extents<extents_type>());
+       }
+ 
+       static constexpr bool
+       is_always_strided() noexcept { return true; }
+ 
+       static constexpr bool
+       is_unique() noexcept { return true; }
+ 
+       // _GLIBCXX_RESOLVE_LIB_DEFECTS
+       // 4266. layout_stride::mapping should treat empty mappings as exhaustive
+       constexpr bool
+       is_exhaustive() const noexcept
+       {
+ 	if constexpr (!is_always_exhaustive())
+ 	  {
+ 	    constexpr auto __rank = extents_type::rank();
+ 	    auto __size = __mdspan::__fwd_prod(_M_extents, __rank);
+ 	    if(__size > 0)
+ 	      return __size == required_span_size();
+ 	  }
+ 	return true;
+       }
+ 
+       static constexpr bool
+       is_strided() noexcept { return true; }
+ 
+       constexpr index_type
+       stride(rank_type __r) const noexcept { return _M_strides[__r]; }
+ 
+       template<__mdspan::__mapping_alike _OMapping>
+ 	requires ((extents_type::rank() == _OMapping::extents_type::rank())
+ 		  && _OMapping::is_always_strided())
+ 	friend constexpr bool
+ 	operator==(const mapping& __self, const _OMapping& __other) noexcept
+ 	{
+ 	  if (__self.extents() != __other.extents())
+ 	    return false;
+ 	  if constexpr (extents_type::rank() > 0)
+ 	    for (size_t __i = 0; __i < extents_type::rank(); ++__i)
+ 	      if (!cmp_equal(__self.stride(__i), __other.stride(__i)))
+ 		return false;
+ 	  return __mdspan::__offset(__other) == 0;
+ 	}
+ 
+     private:
+       using _S_strides_t = typename __array_traits<index_type,
+ 						   extents_type::rank()>::_Type;
+       [[no_unique_address]] extents_type _M_extents;
+       [[no_unique_address]] _S_strides_t _M_strides;
+     };
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  }
  #endif
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/std/optional gcc-16-20250615/libstdc++-v3/include/std/optional
*** gcc-16-20250608/libstdc++-v3/include/std/optional	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/std/optional	Sun Jun 15 22:33:52 2025
***************
*** 36,41 ****
--- 36,42 ----
  
  #define __glibcxx_want_freestanding_optional
  #define __glibcxx_want_optional
+ #define __glibcxx_want_optional_range_support
  #define __glibcxx_want_constrained_equality
  #include <bits/version.h>
  
***************
*** 57,62 ****
--- 58,68 ----
  #if __cplusplus > 202002L
  # include <concepts>
  #endif
+ #ifdef __cpp_lib_optional_range_support // C++ >= 26
+ # include <bits/formatfwd.h>
+ # include <bits/ranges_base.h>
+ # include <bits/stl_iterator.h>
+ #endif
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 858,863 ****
--- 864,873 ----
  
      public:
        using value_type = _Tp;
+ #ifdef __cpp_lib_optional_range_support // >= C++26
+       using iterator = __gnu_cxx::__normal_iterator<_Tp*, optional>;
+       using const_iterator = __gnu_cxx::__normal_iterator<const _Tp*, optional>;
+ #endif
  
        constexpr optional() noexcept { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1158,1163 ****
--- 1168,1200 ----
  	  }
        }
  
+ #ifdef __cpp_lib_optional_range_support // >= C++26
+       // Iterator support.
+       constexpr iterator begin() noexcept
+       {
+ 	return iterator(
+ 	  this->_M_is_engaged() ? std::addressof(this->_M_get()) : nullptr
+ 	);
+       }
+ 
+       constexpr const_iterator begin() const noexcept
+       {
+ 	return const_iterator(
+ 	  this->_M_is_engaged() ? std::addressof(this->_M_get()) : nullptr
+ 	);
+       }
+ 
+       constexpr iterator end() noexcept
+       {
+ 	return begin() + has_value();
+       }
+ 
+       constexpr const_iterator end() const noexcept
+       {
+ 	return begin() + has_value();
+       }
+ #endif // __cpp_lib_optional_range_support
+ 
        // Observers.
        constexpr const _Tp*
        operator->() const noexcept
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1772,1777 ****
--- 1809,1824 ----
    template <typename _Tp> optional(_Tp) -> optional<_Tp>;
  #endif
  
+ #ifdef __cpp_lib_optional_range_support // >= C++26
+   template<typename _Tp>
+     inline constexpr bool
+       ranges::enable_view<optional<_Tp>> = true;
+ 
+   template<typename _Tp>
+     inline constexpr range_format
+       format_kind<optional<_Tp>> = range_format::disabled;
+ #endif // __cpp_lib_optional_range_support
+ 
  #undef _GLIBCXX_USE_CONSTRAINTS_FOR_OPTIONAL
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/std/sstream gcc-16-20250615/libstdc++-v3/include/std/sstream
*** gcc-16-20250608/libstdc++-v3/include/std/sstream	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/std/sstream	Sun Jun 15 22:33:52 2025
***************
*** 41,48 ****
--- 41,56 ----
  
  #include <istream>
  #include <ostream>
+ 
  #include <bits/alloc_traits.h> // allocator_traits, __allocator_like
  
+ #define __glibcxx_want_sstream_from_string_view
+ #include <bits/version.h>
+ 
+ #ifdef __cpp_lib_sstream_from_string_view
+ # include <string_view>
+ #endif
+ 
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
  # define _GLIBCXX_LVAL_REF_QUAL &
  # define _GLIBCXX_SSTREAM_ALWAYS_INLINE
***************
*** 52,59 ****
  # define _GLIBCXX_SSTREAM_ALWAYS_INLINE [[__gnu__::__always_inline__]]
  #endif
  
- 
- 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
--- 60,65 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 159,164 ****
--- 165,171 ----
        { __rhs._M_sync(const_cast<char_type*>(__rhs._M_string.data()), 0, 0); }
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+       // P0408 Efficient access to basic_stringbuf buffer
        explicit
        basic_stringbuf(const allocator_type& __a)
        : basic_stringbuf(ios_base::in | std::ios_base::out, __a)
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 197,203 ****
--- 204,239 ----
  						    | ios_base::out)
  	: basic_stringbuf(__s, __mode, allocator_type{})
  	{ }
+ #endif
+ 
+ #ifdef __cpp_lib_sstream_from_string_view
+       template<typename _Tp>
+ 	explicit
+ 	basic_stringbuf(const _Tp& __t,
+ 	    ios_base::openmode __mode = ios_base::in | ios_base::out)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: basic_stringbuf(__t, __mode, allocator_type{})
+ 	{ }
  
+       template<typename _Tp>
+ 	basic_stringbuf(const _Tp& __t, const allocator_type& __a)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: basic_stringbuf(__t, ios_base::in | ios_base::out, __a)
+ 	{ }
+ 
+       template<typename _Tp>
+ 	basic_stringbuf(const _Tp& __t, ios_base::openmode __mode,
+ 	    const allocator_type& __a)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: _M_string(__t, __a)
+ 	{ _M_stringbuf_init(__mode); }
+ #endif // C++26
+ 
+ #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+       // P0408 Efficient access to basic_stringbuf buffer
        basic_stringbuf(basic_stringbuf&& __rhs, const allocator_type& __a)
        : basic_stringbuf(std::move(__rhs), __a, __xfer_bufptrs(__rhs, this))
        { __rhs._M_sync(const_cast<char_type*>(__rhs._M_string.data()), 0, 0); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 262,267 ****
--- 298,304 ----
  #if __cplusplus > 201703L
  #if _GLIBCXX_USE_CXX11_ABI
  #if __cpp_concepts
+ 	// P0407 Allocator-aware basic_streambuf
        template<__allocator_like _SAlloc>
  	_GLIBCXX_NODISCARD
  	basic_string<_CharT, _Traits, _SAlloc>
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 317,322 ****
--- 354,360 ----
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
  #if __cpp_concepts
+ 	// P0407 Allocator-aware basic_streambuf
        template<__allocator_like _SAlloc>
  	requires (!is_same_v<_SAlloc, _Alloc>)
  	void
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 335,340 ****
--- 373,391 ----
        }
  #endif
  
+ #ifdef __cpp_lib_sstream_from_string_view
+       template <typename _Tp>
+ 	void
+ 	str(const _Tp& __t)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	{
+ 	  basic_string_view<_CharT, _Traits> __sv{__t};
+ 	  _M_string = __sv;
+ 	  _M_stringbuf_init(_M_mode);
+ 	}
+ #endif // C++26
+ 
      protected:
        // Common initialization code goes here.
        void
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 521,526 ****
--- 572,579 ----
        { }
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+       // P0408 Efficient access to basic_stringbuf buffer
+ 
        // The move constructor initializes an __xfer_bufptrs temporary then
        // delegates to this constructor to performs moves during its lifetime.
        basic_stringbuf(basic_stringbuf&& __rhs, const allocator_type& __a,
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 584,590 ****
        */
        basic_istringstream()
        : __istream_type(), _M_stringbuf(ios_base::in)
!       { this->init(&_M_stringbuf); }
  
        /**
         *  @brief  Starts with an empty string buffer.
--- 637,643 ----
        */
        basic_istringstream()
        : __istream_type(), _M_stringbuf(ios_base::in)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  Starts with an empty string buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 601,607 ****
        explicit
        basic_istringstream(ios_base::openmode __mode)
        : __istream_type(), _M_stringbuf(__mode | ios_base::in)
!       { this->init(&_M_stringbuf); }
  
        /**
         *  @brief  Starts with an existing string buffer.
--- 654,660 ----
        explicit
        basic_istringstream(ios_base::openmode __mode)
        : __istream_type(), _M_stringbuf(__mode | ios_base::in)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  Starts with an existing string buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 620,626 ****
        basic_istringstream(const __string_type& __str,
  			  ios_base::openmode __mode = ios_base::in)
        : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in)
!       { this->init(&_M_stringbuf); }
  
        /**
         *  @brief  The destructor does nothing.
--- 673,679 ----
        basic_istringstream(const __string_type& __str,
  			  ios_base::openmode __mode = ios_base::in)
        : __istream_type(), _M_stringbuf(__str, __mode | ios_base::in)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  The destructor does nothing.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 637,645 ****
        basic_istringstream(basic_istringstream&& __rhs)
        : __istream_type(std::move(__rhs)),
        _M_stringbuf(std::move(__rhs._M_stringbuf))
!       { __istream_type::set_rdbuf(&_M_stringbuf); }
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
        basic_istringstream(ios_base::openmode __mode, const allocator_type& __a)
        : __istream_type(), _M_stringbuf(__mode | ios_base::in, __a)
        { this->init(std::__addressof(_M_stringbuf)); }
--- 690,699 ----
        basic_istringstream(basic_istringstream&& __rhs)
        : __istream_type(std::move(__rhs)),
        _M_stringbuf(std::move(__rhs._M_stringbuf))
!       { __istream_type::set_rdbuf(std::__addressof(_M_stringbuf)); }
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+       // P0408 Efficient access to basic_stringbuf buffer
        basic_istringstream(ios_base::openmode __mode, const allocator_type& __a)
        : __istream_type(), _M_stringbuf(__mode | ios_base::in, __a)
        { this->init(std::__addressof(_M_stringbuf)); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 671,676 ****
--- 725,756 ----
  	{ }
  #endif // C++20
  
+ #ifdef __cpp_lib_sstream_from_string_view
+       template <typename _Tp>
+ 	explicit
+ 	basic_istringstream(const _Tp& __t,
+ 	    ios_base::openmode __mode = ios_base::in)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: basic_istringstream(__t, __mode, allocator_type{})
+ 	{ }
+ 
+       template <typename _Tp>
+ 	basic_istringstream(const _Tp& __t, const allocator_type& __a)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: basic_istringstream(__t, ios_base::in, __a)
+ 	{ }
+ 
+       template <typename _Tp>
+ 	basic_istringstream(const _Tp& __t, ios_base::openmode __mode,
+ 	    const allocator_type& __a)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	  : __istream_type(), _M_stringbuf(__t, __mode | ios_base::in, __a)
+ 	{ this->init(std::__addressof(_M_stringbuf)); }
+ #endif // C++26
+ 
        // 27.8.3.2 Assign and swap:
  
        basic_istringstream&
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 702,708 ****
        _GLIBCXX_NODISCARD
        __stringbuf_type*
        rdbuf() const
!       { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
  
        /**
         *  @brief  Copying out the string buffer.
--- 782,788 ----
        _GLIBCXX_NODISCARD
        __stringbuf_type*
        rdbuf() const
!       { return const_cast<__stringbuf_type*>(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  Copying out the string buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 716,721 ****
--- 796,802 ----
  #if __cplusplus > 201703L
  #if _GLIBCXX_USE_CXX11_ABI
  #if __cpp_concepts
+ 	// P0407 Allocator-aware basic_streambuf
        template<__allocator_like _SAlloc>
  	_GLIBCXX_NODISCARD
  	basic_string<_CharT, _Traits, _SAlloc>
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 747,752 ****
--- 828,834 ----
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
  #if __cpp_concepts
+ 	// P0407 Allocator-aware basic_streambuf
        template<__allocator_like _SAlloc>
  	requires (!is_same_v<_SAlloc, _Alloc>)
  	void
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 758,763 ****
--- 840,854 ----
        str(__string_type&& __s)
        { _M_stringbuf.str(std::move(__s)); }
  #endif
+ 
+ #ifdef __cpp_lib_sstream_from_string_view
+       template<typename _Tp>
+ 	void
+ 	str(const _Tp& __t)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	{ _M_stringbuf.str(__t); }
+ #endif // C++26
      };
  
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 812,818 ****
        */
        basic_ostringstream()
        : __ostream_type(), _M_stringbuf(ios_base::out)
!       { this->init(&_M_stringbuf); }
  
        /**
         *  @brief  Starts with an empty string buffer.
--- 903,909 ----
        */
        basic_ostringstream()
        : __ostream_type(), _M_stringbuf(ios_base::out)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  Starts with an empty string buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 829,835 ****
        explicit
        basic_ostringstream(ios_base::openmode __mode)
        : __ostream_type(), _M_stringbuf(__mode | ios_base::out)
!       { this->init(&_M_stringbuf); }
  
        /**
         *  @brief  Starts with an existing string buffer.
--- 920,926 ----
        explicit
        basic_ostringstream(ios_base::openmode __mode)
        : __ostream_type(), _M_stringbuf(__mode | ios_base::out)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  Starts with an existing string buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 848,854 ****
        basic_ostringstream(const __string_type& __str,
  			  ios_base::openmode __mode = ios_base::out)
        : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out)
!       { this->init(&_M_stringbuf); }
  
        /**
         *  @brief  The destructor does nothing.
--- 939,945 ----
        basic_ostringstream(const __string_type& __str,
  			  ios_base::openmode __mode = ios_base::out)
        : __ostream_type(), _M_stringbuf(__str, __mode | ios_base::out)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  The destructor does nothing.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 865,873 ****
        basic_ostringstream(basic_ostringstream&& __rhs)
        : __ostream_type(std::move(__rhs)),
        _M_stringbuf(std::move(__rhs._M_stringbuf))
!       { __ostream_type::set_rdbuf(&_M_stringbuf); }
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
        basic_ostringstream(ios_base::openmode __mode, const allocator_type& __a)
        : __ostream_type(), _M_stringbuf(__mode | ios_base::out, __a)
        { this->init(std::__addressof(_M_stringbuf)); }
--- 956,965 ----
        basic_ostringstream(basic_ostringstream&& __rhs)
        : __ostream_type(std::move(__rhs)),
        _M_stringbuf(std::move(__rhs._M_stringbuf))
!       { __ostream_type::set_rdbuf(std::__addressof(_M_stringbuf)); }
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+       // P0408 Efficient access to basic_stringbuf buffer
        basic_ostringstream(ios_base::openmode __mode, const allocator_type& __a)
        : __ostream_type(), _M_stringbuf(__mode | ios_base::out, __a)
        { this->init(std::__addressof(_M_stringbuf)); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 899,904 ****
--- 991,1022 ----
  	{ }
  #endif // C++20
  
+ #ifdef __cpp_lib_sstream_from_string_view
+       template <typename _Tp>
+ 	explicit
+ 	basic_ostringstream(
+ 	    const _Tp& __t, ios_base::openmode __mode = ios_base::out)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: basic_ostringstream(__t, __mode, allocator_type{})
+ 	{ }
+ 
+       template <typename _Tp>
+ 	basic_ostringstream(const _Tp& __t, const allocator_type& __a)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: basic_ostringstream(__t, ios_base::out, __a)
+ 	{ }
+ 
+       template <typename _Tp>
+ 	basic_ostringstream(const _Tp& __t, ios_base::openmode __mode,
+ 	    const allocator_type& __a)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: __ostream_type(), _M_stringbuf(__t, __mode | ios_base::out, __a)
+ 	{ this->init(std::__addressof(_M_stringbuf)); }
+ #endif // C++26
+ 
        // 27.8.3.2 Assign and swap:
  
        basic_ostringstream&
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 930,936 ****
        _GLIBCXX_NODISCARD
        __stringbuf_type*
        rdbuf() const
!       { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
  
        /**
         *  @brief  Copying out the string buffer.
--- 1048,1054 ----
        _GLIBCXX_NODISCARD
        __stringbuf_type*
        rdbuf() const
!       { return const_cast<__stringbuf_type*>(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  Copying out the string buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 944,949 ****
--- 1062,1068 ----
  #if __cplusplus > 201703L
  #if _GLIBCXX_USE_CXX11_ABI
  #if __cpp_concepts
+ 	// P0407 Allocator-aware basic_streambuf
        template<__allocator_like _SAlloc>
  	_GLIBCXX_NODISCARD
  	basic_string<_CharT, _Traits, _SAlloc>
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 975,980 ****
--- 1094,1100 ----
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
  #if __cpp_concepts
+ 	// P0407 Allocator-aware basic_streambuf
        template<__allocator_like _SAlloc>
  	requires (!is_same_v<_SAlloc, _Alloc>)
  	void
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 986,991 ****
--- 1106,1120 ----
        str(__string_type&& __s)
        { _M_stringbuf.str(std::move(__s)); }
  #endif
+ 
+ #ifdef __cpp_lib_sstream_from_string_view
+       template<typename _Tp>
+ 	void
+ 	str(const _Tp& __t)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		     basic_string_view<_CharT, _Traits>>)
+ 	{ _M_stringbuf.str(__t); }
+ #endif // C++26
      };
  
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1040,1046 ****
        */
        basic_stringstream()
        : __iostream_type(), _M_stringbuf(ios_base::out | ios_base::in)
!       { this->init(&_M_stringbuf); }
  
        /**
         *  @brief  Starts with an empty string buffer.
--- 1169,1175 ----
        */
        basic_stringstream()
        : __iostream_type(), _M_stringbuf(ios_base::out | ios_base::in)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  Starts with an empty string buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1055,1061 ****
        explicit
        basic_stringstream(ios_base::openmode __m)
        : __iostream_type(), _M_stringbuf(__m)
!       { this->init(&_M_stringbuf); }
  
        /**
         *  @brief  Starts with an existing string buffer.
--- 1184,1190 ----
        explicit
        basic_stringstream(ios_base::openmode __m)
        : __iostream_type(), _M_stringbuf(__m)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  Starts with an existing string buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1072,1078 ****
        basic_stringstream(const __string_type& __str,
  			 ios_base::openmode __m = ios_base::out | ios_base::in)
        : __iostream_type(), _M_stringbuf(__str, __m)
!       { this->init(&_M_stringbuf); }
  
        /**
         *  @brief  The destructor does nothing.
--- 1201,1207 ----
        basic_stringstream(const __string_type& __str,
  			 ios_base::openmode __m = ios_base::out | ios_base::in)
        : __iostream_type(), _M_stringbuf(__str, __m)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  The destructor does nothing.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1089,1100 ****
        basic_stringstream(basic_stringstream&& __rhs)
        : __iostream_type(std::move(__rhs)),
        _M_stringbuf(std::move(__rhs._M_stringbuf))
!       { __iostream_type::set_rdbuf(&_M_stringbuf); }
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
        basic_stringstream(ios_base::openmode __mode, const allocator_type& __a)
        : __iostream_type(), _M_stringbuf(__mode, __a)
!       { this->init(&_M_stringbuf); }
  
        explicit
        basic_stringstream(__string_type&& __str,
--- 1218,1230 ----
        basic_stringstream(basic_stringstream&& __rhs)
        : __iostream_type(std::move(__rhs)),
        _M_stringbuf(std::move(__rhs._M_stringbuf))
!       { __iostream_type::set_rdbuf(std::__addressof(_M_stringbuf)); }
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
+       // P0408 Efficient access to basic_stringbuf buffer
        basic_stringstream(ios_base::openmode __mode, const allocator_type& __a)
        : __iostream_type(), _M_stringbuf(__mode, __a)
!       { this->init(std::__addressof(_M_stringbuf)); }
  
        explicit
        basic_stringstream(__string_type&& __str,
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1125,1130 ****
--- 1255,1285 ----
  	{ }
  #endif // C++20
  
+ #ifdef __cpp_lib_sstream_from_string_view
+       template <typename _Tp>
+ 	explicit
+ 	basic_stringstream(const _Tp& __t,
+ 	    ios_base::openmode __mode = ios_base::in | ios_base::out)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: basic_stringstream(__t, __mode, allocator_type{})
+ 	{ }
+ 
+       template <typename _Tp>
+ 	basic_stringstream(const _Tp& __t, const allocator_type& __a)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	: basic_stringstream(__t, ios_base::in | ios_base::out, __a)
+ 	{ }
+ 
+       template <typename _Tp>
+ 	basic_stringstream(const _Tp& __t, ios_base::openmode __mode,
+ 	    const allocator_type& __a)
+ 	  requires (is_convertible_v<const _Tp&, basic_string_view<_CharT, _Traits>>)
+ 	: __iostream_type(), _M_stringbuf(__t, __mode, __a)
+ 	{ this->init(std::__addressof(_M_stringbuf)); }
+ #endif // C++26
+ 
        // 27.8.3.2 Assign and swap:
  
        basic_stringstream&
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1156,1162 ****
        _GLIBCXX_NODISCARD
        __stringbuf_type*
        rdbuf() const
!       { return const_cast<__stringbuf_type*>(&_M_stringbuf); }
  
        /**
         *  @brief  Copying out the string buffer.
--- 1311,1317 ----
        _GLIBCXX_NODISCARD
        __stringbuf_type*
        rdbuf() const
!       { return const_cast<__stringbuf_type*>(std::__addressof(_M_stringbuf)); }
  
        /**
         *  @brief  Copying out the string buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1170,1175 ****
--- 1325,1331 ----
  #if __cplusplus > 201703L
  #if _GLIBCXX_USE_CXX11_ABI
  #if __cpp_concepts
+ 	// P0407 Allocator-aware basic_streambuf
        template<__allocator_like _SAlloc>
  	_GLIBCXX_NODISCARD
  	basic_string<_CharT, _Traits, _SAlloc>
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1201,1206 ****
--- 1357,1363 ----
  
  #if __cplusplus > 201703L && _GLIBCXX_USE_CXX11_ABI
  #if __cpp_concepts
+ 	// P0407 Allocator-aware basic_streambuf
        template<__allocator_like _SAlloc>
  	requires (!is_same_v<_SAlloc, _Alloc>)
  	void
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1212,1217 ****
--- 1369,1383 ----
        str(__string_type&& __s)
        { _M_stringbuf.str(std::move(__s)); }
  #endif
+ 
+ #ifdef __cpp_lib_sstream_from_string_view
+       template<typename _Tp>
+ 	void
+ 	str(const _Tp& __t)
+ 	  requires (is_convertible_v<const _Tp&,
+ 		    basic_string_view<_CharT, _Traits>>)
+ 	{ _M_stringbuf.str(__t); }
+ #endif // C++26
      };
  
  #if __cplusplus >= 201103L
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/std/tuple gcc-16-20250615/libstdc++-v3/include/std/tuple
*** gcc-16-20250608/libstdc++-v3/include/std/tuple	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/std/tuple	Sun Jun 15 22:33:52 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2939,2957 ****
  #endif
  
  #ifdef __cpp_lib_make_from_tuple // C++ >= 17
    template <typename _Tp, typename _Tuple, size_t... _Idx>
      constexpr _Tp
      __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>)
!     { return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...); }
  
  #if __cpp_lib_tuple_like // >= C++23
    template <typename _Tp, __tuple_like _Tuple>
  #else
    template <typename _Tp, typename _Tuple>
  #endif
!     constexpr _Tp
      make_from_tuple(_Tuple&& __t)
      noexcept(__unpack_std_tuple<is_nothrow_constructible, _Tp, _Tuple>)
      {
        constexpr size_t __n = tuple_size_v<remove_reference_t<_Tuple>>;
  #if __has_builtin(__reference_constructs_from_temporary)
--- 2939,2977 ----
  #endif
  
  #ifdef __cpp_lib_make_from_tuple // C++ >= 17
+   template <typename _Tp, typename _Tuple, typename _Seq
+ 	      = make_index_sequence<tuple_size_v<remove_reference_t<_Tuple>>>>
+     constexpr bool __can_make_from_tuple = false;
+ 
+   // _GLIBCXX_RESOLVE_LIB_DEFECTS
+   // 3528. make_from_tuple can perform (the equivalent of) a C-style cast
+   template <typename _Tp, typename _Tuple, size_t... _Idx>
+     constexpr bool __can_make_from_tuple<_Tp, _Tuple, index_sequence<_Idx...>>
+       = is_constructible_v<_Tp,
+ 			   decltype(std::get<_Idx>(std::declval<_Tuple>()))...>;
+ 
    template <typename _Tp, typename _Tuple, size_t... _Idx>
      constexpr _Tp
      __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>)
!     {
!       static_assert(__can_make_from_tuple<_Tp, _Tuple, index_sequence<_Idx...>>);
!       return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...);
!     }
  
  #if __cpp_lib_tuple_like // >= C++23
    template <typename _Tp, __tuple_like _Tuple>
  #else
    template <typename _Tp, typename _Tuple>
  #endif
!     constexpr auto
      make_from_tuple(_Tuple&& __t)
      noexcept(__unpack_std_tuple<is_nothrow_constructible, _Tp, _Tuple>)
+ #ifdef __cpp_concepts // >= C++20
+     -> _Tp
+     requires __can_make_from_tuple<_Tp, _Tuple>
+ #else
+     -> __enable_if_t<__can_make_from_tuple<_Tp, _Tuple>, _Tp>
+ #endif
      {
        constexpr size_t __n = tuple_size_v<remove_reference_t<_Tuple>>;
  #if __has_builtin(__reference_constructs_from_temporary)
diff -Nrcpad gcc-16-20250608/libstdc++-v3/include/std/type_traits gcc-16-20250615/libstdc++-v3/include/std/type_traits
*** gcc-16-20250608/libstdc++-v3/include/std/type_traits	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/include/std/type_traits	Sun Jun 15 22:33:52 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1036,1041 ****
--- 1036,1042 ----
      struct __is_array_unknown_bounds<_Tp[]>
      : public true_type
      { };
+   /// @endcond
  
    // Destructible and constructible type properties.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1046,1051 ****
--- 1047,1054 ----
      : public __bool_constant<__is_destructible(_Tp)>
      { };
  #else
+   /// @cond undocumented
+ 
    // In N3290 is_destructible does not say anything about function
    // types and abstract types, see LWG 2049. This implementation
    // describes function types as non-destructible and all complete
diff -Nrcpad gcc-16-20250608/libstdc++-v3/libsupc++/exception gcc-16-20250615/libstdc++-v3/libsupc++/exception
*** gcc-16-20250608/libstdc++-v3/libsupc++/exception	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/libsupc++/exception	Sun Jun 15 22:33:52 2025
*************** _GLIBCXX_END_NAMESPACE_VERSION
*** 164,172 ****
  
  } // extern "C++"
  
! #if (__cplusplus >= 201103L)
! #include <bits/exception_ptr.h>
! #include <bits/nested_exception.h>
  #endif
  
  #endif
--- 164,172 ----
  
  } // extern "C++"
  
! #if __cplusplus >= 201103L
! # include <bits/exception_ptr.h>
! # include <bits/nested_exception.h>
  #endif
  
  #endif
diff -Nrcpad gcc-16-20250608/libstdc++-v3/scripts/create_testsuite_files gcc-16-20250615/libstdc++-v3/scripts/create_testsuite_files
*** gcc-16-20250608/libstdc++-v3/scripts/create_testsuite_files	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/scripts/create_testsuite_files	Sun Jun 15 22:33:52 2025
***************
*** 3,11 ****
  # Constructs lists of source files (full pathnames) to test.  Two
  # files are constructed: testsuite_files, which is used to test with
  # the default dg-runtest command, and testsuite_files_interactive,
! # which is used to test cases that require input to be entered. In
! # addition, both lists are pruned of wchar_t tests if the toolchain
! # under test does not support wchar_t functionality.
  #
  # We mimic the mkcheck script in that the first time this is run, all
  # existing files are listed in "testsuite_files" in the output
--- 3,9 ----
  # Constructs lists of source files (full pathnames) to test.  Two
  # files are constructed: testsuite_files, which is used to test with
  # the default dg-runtest command, and testsuite_files_interactive,
! # which is used to test cases that require input to be entered.
  #
  # We mimic the mkcheck script in that the first time this is run, all
  # existing files are listed in "testsuite_files" in the output
diff -Nrcpad gcc-16-20250608/libstdc++-v3/src/c++23/std.cc.in gcc-16-20250615/libstdc++-v3/src/c++23/std.cc.in
*** gcc-16-20250608/libstdc++-v3/src/c++23/std.cc.in	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/src/c++23/std.cc.in	Sun Jun 15 22:33:52 2025
*************** export namespace std
*** 1840,1846 ****
  export namespace std
  {
    using std::extents;
!   // FIXME layout_*, default_accessor and mdspan
  }
  #endif
  
--- 1840,1849 ----
  export namespace std
  {
    using std::extents;
!   using std::layout_left;
!   using std::layout_right;
!   using std::layout_stride;
!   // FIXME layout_left_padded, layout_right_padded, default_accessor and mdspan
  }
  #endif
  
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/17_intro/names.cc gcc-16-20250615/libstdc++-v3/testsuite/17_intro/names.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/17_intro/names.cc	Sun Jun  8 22:32:47 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/17_intro/names.cc	Sun Jun 15 22:33:52 2025
***************
*** 404,407 ****
--- 404,411 ----
  # endif
  #endif
  
+ // PR libstdc++/119496
+ // _Temporary_buffer used to have a member with this name
+ #define requested_size 1
+ 
  #include <bits/stdc++.h>
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/20_util/optional/range.cc gcc-16-20250615/libstdc++-v3/testsuite/20_util/optional/range.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/20_util/optional/range.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/20_util/optional/range.cc	Sun Jun 15 22:33:53 2025
***************
*** 0 ****
--- 1,163 ----
+ // { dg-do compile { target c++26 } }
+ 
+ #include <concepts>
+ #include <format>
+ #include <iterator>
+ #include <optional>
+ #include <ranges>
+ #include <string_view>
+ #include <vector>
+ 
+ #include <testsuite_hooks.h>
+ 
+ template<typename O>
+ constexpr
+ void
+ test_range_concepts()
+ {
+   static_assert(std::ranges::contiguous_range<O>);
+   static_assert(std::ranges::sized_range<O>);
+   static_assert(std::ranges::common_range<O>);
+   static_assert(!std::ranges::borrowed_range<O>);
+ 
+   // an optional<const T> is not assignable, and therefore does not satisfy ranges::view
+   using T = typename O::value_type;
+   constexpr bool is_const_opt = std::is_const_v<T>;
+   static_assert(std::ranges::view<O> == !is_const_opt);
+   static_assert(std::ranges::viewable_range<O> == !is_const_opt);
+ }
+ 
+ template<typename O>
+ constexpr
+ void
+ test_iterator_concepts()
+ {
+   using T = typename O::value_type;
+   using iterator = typename O::iterator;
+   static_assert(std::contiguous_iterator<iterator>);
+   static_assert(std::is_same_v<typename std::iterator_traits<iterator>::value_type, std::remove_cv_t<T>>);
+   static_assert(std::is_same_v<std::iter_value_t<iterator>, std::remove_cv_t<T>>);
+   static_assert(std::is_same_v<typename std::iterator_traits<iterator>::reference, T&>);
+   static_assert(std::is_same_v<std::iter_reference_t<iterator>, T&>);
+ 
+   using const_iterator = typename O::const_iterator;
+   static_assert(std::contiguous_iterator<const_iterator>);
+   static_assert(std::is_same_v<typename std::iterator_traits<const_iterator>::value_type, std::remove_cv_t<T>>);
+   static_assert(std::is_same_v<std::iter_value_t<const_iterator>, std::remove_cv_t<T>>);
+   static_assert(std::is_same_v<typename std::iterator_traits<const_iterator>::reference, const T&>);
+   static_assert(std::is_same_v<std::iter_reference_t<const_iterator>, const T&>);
+ }
+ 
+ template<typename O>
+ constexpr
+ void
+ test_empty()
+ {
+   O empty;
+   VERIFY(!empty);
+   VERIFY(empty.begin() == empty.end());
+   VERIFY(std::as_const(empty).begin() == std::as_const(empty).end());
+   VERIFY(std::ranges::empty(empty));
+   VERIFY(std::ranges::empty(std::as_const(empty)));
+   VERIFY(std::ranges::empty(empty | std::views::as_const));
+   VERIFY(std::ranges::size(empty) == 0);
+   VERIFY(std::ranges::size(std::as_const(empty)) == 0);
+ 
+   size_t count = 0;
+   for (const auto& x : empty)
+     ++count;
+   VERIFY(count == 0);
+ }
+ 
+ template<typename O, typename T>
+ constexpr
+ void
+ test_non_empty(const T& value)
+ {
+   O non_empty = std::make_optional(value);
+   VERIFY(non_empty);
+   VERIFY(*non_empty == value);
+   VERIFY(non_empty.begin() != non_empty.end());
+   VERIFY(non_empty.begin() < non_empty.end());
+   VERIFY(std::as_const(non_empty).begin() != std::as_const(non_empty).end());
+   VERIFY(std::as_const(non_empty).begin() < std::as_const(non_empty).end());
+   VERIFY(!std::ranges::empty(non_empty));
+   VERIFY(!std::ranges::empty(std::as_const(non_empty)));
+   VERIFY(!std::ranges::empty(non_empty | std::views::as_const));
+   VERIFY(std::ranges::size(non_empty) == 1);
+   VERIFY(std::ranges::size(std::as_const(non_empty)) == 1);
+ 
+   size_t count = 0;
+   for (const auto& x : non_empty)
+     ++count;
+   VERIFY(count == 1);
+ 
+   if constexpr (!std::is_const_v<typename O::value_type>) {
+     for (auto& x : non_empty)
+       x = T{};
+     VERIFY(non_empty);
+     VERIFY(*non_empty == T{});
+   }
+ }
+ 
+ template<typename T>
+ constexpr
+ void
+ test(const T& value)
+ {
+   using O = std::optional<T>;
+   test_range_concepts<O>();
+   test_iterator_concepts<O>();
+   test_empty<O>();
+   test_non_empty<O>(value);
+   static_assert(!std::formattable<O, char>);
+   static_assert(!std::formattable<O, wchar_t>);
+   static_assert(std::format_kind<O> == std::range_format::disabled);
+ }
+ 
+ constexpr
+ void
+ range_chain_example() // from P3168
+ {
+   std::vector<int> v{2, 3, 4, 5, 6, 7, 8, 9, 1};
+   auto test = [](int i) -> std::optional<int> {
+     switch(i) {
+     case 1:
+     case 3:
+     case 7:
+     case 9:
+       return i * 2;
+     default:
+       return {};
+     }
+   };
+ 
+   auto result = v
+     | std::views::transform(test)
+     | std::views::filter([](auto x) { return bool(x); })
+     | std::views::transform([](auto x){ return *x; })
+     | std::ranges::to<std::vector>();
+ 
+   bool ok = result == std::vector<int>{6, 14, 18, 2};
+   VERIFY(ok);
+ }
+ 
+ constexpr
+ bool
+ all_tests()
+ {
+   test(42);
+   int i = 42;
+   test(&i);
+   test(std::string_view("test"));
+   test(std::vector<int>{1, 2, 3, 4});
+   test(std::optional<int>(42));
+   test<const int>(42);
+ 
+   range_chain_example();
+ 
+   return true;
+ }
+ 
+ static_assert(all_tests());
+ 
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/20_util/optional/version.cc gcc-16-20250615/libstdc++-v3/testsuite/20_util/optional/version.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/20_util/optional/version.cc	Sun Jun  8 22:32:48 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/20_util/optional/version.cc	Sun Jun 15 22:33:53 2025
***************
*** 21,28 ****
--- 21,37 ----
  #endif
  #endif
  
+ #if __cplusplus > 202302L
+ # ifndef __cpp_lib_optional_range_support
+ #  error "Feature test macro for optional range support is missing in <version>"
+ # elif __cpp_lib_optional_range_support != 202406L
+ #  error "Feature test macro for optional range support has wrong value for C++26 in <version>"
+ # endif
+ #endif
+ 
  #undef __cpp_lib_optional
  #undef __cpp_lib_freestanding_optional
+ #undef __cpp_lib_optional_range_support
  #include <optional>
  
  #if __cplusplus >= 202302L
***************
*** 32,34 ****
--- 41,52 ----
  # error "Feature test macro for freestanding std::optional has wrong value in <optional>"
  #endif
  #endif
+ 
+ #if __cplusplus > 202302L
+ # ifndef __cpp_lib_optional_range_support
+ #  error "Feature test macro for optional range support is missing in <optional>"
+ # endif
+ # if __cpp_lib_optional_range_support != 202406L
+ #  error "Feature test macro for optional range support has wrong value for C++26 in <optional>"
+ # endif
+ #endif
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc gcc-16-20250615/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_n_neg.cc	Sun Jun 15 22:33:53 2025
***************
*** 0 ****
--- 1,59 ----
+ // Copyright (C) 2017-2025 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do compile { target c++17 } }
+ 
+ #include <memory>
+ 
+ // This has a trivial destructor, but should not be destructible!
+ struct DeletedDtor {
+   ~DeletedDtor() = delete;
+ };
+ 
+ void
+ test01()
+ {
+   alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
+   auto p = ::new (buf) DeletedDtor();
+   std::destroy_n(p, 1);
+ }
+ 
+ class PrivateDtor {
+   ~PrivateDtor() { }
+ };
+ 
+ void
+ test02()
+ {
+   alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
+   auto p = ::new (buf) PrivateDtor();
+   std::destroy_n(p, 1);
+ }
+ 
+ #if __cpp_constexpr_dynamic_alloc // >= C++20
+ consteval bool
+ test03()
+ {
+   DeletedDtor* p = nullptr;
+   std::destroy_n(p, 0);
+   return true;
+ }
+ static_assert(test03());
+ #endif
+ 
+ // { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
+ // { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc gcc-16-20250615/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc	Sun Jun  8 22:32:48 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc	Sun Jun 15 22:33:53 2025
*************** test01()
*** 29,36 ****
  {
    alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
    auto p = ::new (buf) DeletedDtor();
!   std::destroy(p, p + 1);	// { dg-error "here" }
!   std::destroy_n(p, 1);		// { dg-error "here" }
  }
  
  class PrivateDtor {
--- 29,35 ----
  {
    alignas(DeletedDtor) unsigned char buf[sizeof(DeletedDtor)];
    auto p = ::new (buf) DeletedDtor();
!   std::destroy(p, p + 1);
  }
  
  class PrivateDtor {
*************** test02()
*** 42,49 ****
  {
    alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
    auto p = ::new (buf) PrivateDtor();
!   std::destroy(p, p + 1);	// { dg-error "here" }
!   std::destroy_n(p, 1);		// { dg-error "here" }
  }
  
! // { dg-error "value type is destructible" "" { target *-*-* } 0 }
--- 41,59 ----
  {
    alignas(PrivateDtor) unsigned char buf[sizeof(PrivateDtor)];
    auto p = ::new (buf) PrivateDtor();
!   std::destroy(p, p + 1);
  }
  
! #if __cpp_constexpr_dynamic_alloc // >= C++20
! consteval bool
! test03()
! {
!   DeletedDtor* p = nullptr;
!   std::destroy(p, p);
!   return true;
! }
! static_assert(test03());
! #endif
! 
! // { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
! // { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/120397.cc gcc-16-20250615/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/120397.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/120397.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/120397.cc	Sun Jun 15 22:33:53 2025
***************
*** 0 ****
--- 1,19 ----
+ // { dg-do compile { target c++17 } }
+ 
+ #include <memory>
+ 
+ // PR libstdc++/120397
+ // std::uninitialized_value_construct cannot create arrays of non-trivially
+ // destructible types
+ 
+ struct X { X() { } ~X() { } };
+ 
+ void def(X (*x)[1])
+ {
+   std::uninitialized_default_construct(x, x+1);
+ }
+ 
+ void def_n(X (*x)[1])
+ {
+   std::uninitialized_default_construct_n(x, 1);
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/120397.cc gcc-16-20250615/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/120397.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/120397.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/120397.cc	Sun Jun 15 22:33:53 2025
***************
*** 0 ****
--- 1,19 ----
+ // { dg-do compile { target c++17 } }
+ 
+ #include <memory>
+ 
+ // PR libstdc++/120397
+ // std::uninitialized_value_construct cannot create arrays of non-trivially
+ // destructible types
+ 
+ struct X { X() { } ~X() { } };
+ 
+ void val(X (*x)[1])
+ {
+   std::uninitialized_value_construct(x, x+1);
+ }
+ 
+ void val_n(X (*x)[1])
+ {
+   std::uninitialized_value_construct_n(x, 1);
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/20_util/tuple/dr3528.cc gcc-16-20250615/libstdc++-v3/testsuite/20_util/tuple/dr3528.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/20_util/tuple/dr3528.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/20_util/tuple/dr3528.cc	Sun Jun 15 22:33:53 2025
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do compile { target c++17 } }
+ 
+ // LWG 3528. make_from_tuple can perform (the equivalent of) a C-style cast
+ 
+ #include <tuple>
+ #include <array>
+ #include <utility>
+ 
+ template<typename T, typename Tuple>
+ using make_t = decltype(std::make_from_tuple<T>(std::declval<Tuple>()));
+ 
+ template<typename T, typename Tuple, typename = void>
+ constexpr bool can_make = false;
+ template<typename T, typename Tuple>
+ constexpr bool can_make<T, Tuple, std::void_t<make_t<T, Tuple>>> = true;
+ 
+ static_assert( can_make<int, std::tuple<int>> );
+ static_assert( can_make<int, std::tuple<int>&> );
+ static_assert( can_make<int, const std::tuple<int>&> );
+ static_assert( can_make<int, std::array<short, 1>> );
+ static_assert( can_make<int, const std::array<short, 1>&&> );
+ static_assert( can_make<std::tuple<int, int>, std::pair<unsigned, long>> );
+ static_assert( can_make<std::pair<int, int>, std::array<int, 2>> );
+ static_assert( can_make<const int*, std::tuple<int*>> );
+ static_assert( can_make<void*, std::tuple<int*>> );
+ static_assert( can_make<int, std::tuple<>> );
+ static_assert( ! can_make<int, std::tuple<int, int>> );
+ static_assert( ! can_make<int, std::pair<short, char>> );
+ static_assert( ! can_make<int, std::pair<short, char>&> );
+ static_assert( ! can_make<int, std::tuple<const char*>> );
+ static_assert( ! can_make<int*, std::tuple<const int*>> );
+ static_assert( ! can_make<int*, std::tuple<void*>> );
+ static_assert( ! can_make<int, std::array<int, 2>> );
+ static_assert( ! can_make<void, std::tuple<>> );
+ static_assert( ! can_make<void, std::array<int, 1>> );
+ 
+ struct Two
+ {
+   Two(const char*, int);
+ };
+ 
+ static_assert( can_make<Two, std::tuple<char*, unsigned>> );
+ static_assert( ! can_make<Two, std::tuple<const char*, int, int>> );
+ static_assert( can_make<Two, std::pair<const char*, long>> );
+ static_assert( ! can_make<Two, std::pair<int*, long>> );
+ static_assert( ! can_make<std::pair<int, int>, std::array<int, 3>> );
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_default.cc gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_default.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_default.cc	Sun Jun  8 22:32:49 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_default.cc	Sun Jun 15 22:33:54 2025
*************** template<typename Extents>
*** 15,21 ****
        if(exts.static_extent(i) == std::dynamic_extent)
  	VERIFY(exts.extent(i) == 0);
        else
! 	VERIFY(exts.extent(i) == Extents::static_extent(i));
    }
  
  constexpr bool
--- 15,21 ----
        if(exts.static_extent(i) == std::dynamic_extent)
  	VERIFY(exts.extent(i) == 0);
        else
! 	VERIFY(std::cmp_equal(exts.extent(i), Extents::static_extent(i)));
    }
  
  constexpr bool
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc	Sun Jun 15 22:33:54 2025
***************
*** 0 ****
--- 1,48 ----
+ // { dg-do compile { target c++23 } }
+ #include<mdspan>
+ 
+ #include <cstdint>
+ 
+ constexpr size_t dyn = std::dynamic_extent;
+ static constexpr size_t n = std::numeric_limits<uint8_t>::max() / 2;
+ 
+ template<typename Layout>
+   struct A
+   {
+     typename Layout::mapping<std::extents<uint8_t, n, 2>> m0;
+     typename Layout::mapping<std::extents<uint8_t, n, 2, dyn>> m1;
+     typename Layout::mapping<std::extents<uint8_t, n, 2, 0>> m2;
+ 
+     using extents_type = std::extents<uint8_t, n, 4>;
+     typename Layout::mapping<extents_type> m3; // { dg-error "required from" }
+   };
+ 
+ template<size_t Count, typename Layout, typename OLayout>
+   bool
+   B()
+   {
+     using Extents = std::extents<uint8_t, dyn, dyn, Count>;
+     using OExtents = std::extents<uint16_t, n, 4, Count>;
+ 
+     using Mapping = typename Layout::mapping<Extents>;
+     using OMapping = typename OLayout::mapping<OExtents>;
+ 
+     Mapping m{OMapping{}};
+     return true;
+   };
+ 
+ A<std::layout_left> a_left;                      // { dg-error "required from" }
+ A<std::layout_right> a_right;                    // { dg-error "required from" }
+ A<std::layout_stride> a_stride;                  // { dg-error "required from" }
+ 
+ auto b1 = B<1, std::layout_left, std::layout_left>();     // { dg-error "required from" }
+ auto b2 = B<2, std::layout_left, std::layout_stride>();   // { dg-error "required from" }
+ 
+ auto b3 = B<3, std::layout_right, std::layout_right>();   // { dg-error "required from" }
+ auto b4 = B<4, std::layout_right, std::layout_stride>();  // { dg-error "required from" }
+ 
+ auto b5 = B<5, std::layout_stride, std::layout_right>();  // { dg-error "required from" }
+ auto b6 = B<6, std::layout_stride, std::layout_left>();   // { dg-error "required from" }
+ auto b7 = B<7, std::layout_stride, std::layout_stride>(); // { dg-error "required from" }
+ 
+ // { dg-prune-output "must be representable as index_type" }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc	Sun Jun 15 22:33:54 2025
***************
*** 0 ****
--- 1,436 ----
+ // { dg-do run { target c++23 } }
+ #include <mdspan>
+ 
+ #include <cstdint>
+ #include <testsuite_hooks.h>
+ 
+ constexpr size_t dyn = std::dynamic_extent;
+ 
+ template<typename Mapping, typename IndexType, size_t... Extents>
+   constexpr void
+   verify(std::extents<IndexType, Extents...> oexts)
+   {
+     auto m = Mapping(oexts);
+     VERIFY(m.extents() == oexts);
+   }
+ 
+ template<typename Mapping, typename OMapping>
+   requires (requires { typename OMapping::layout_type; })
+   constexpr void
+   verify(OMapping other)
+   {
+     constexpr auto rank = Mapping::extents_type::rank();
+     auto m = Mapping(other);
+     VERIFY(m.extents() == other.extents());
+     if constexpr (rank > 0)
+       for(size_t i = 0; i < rank; ++i)
+ 	VERIFY(std::cmp_equal(m.stride(i), other.stride(i)));
+   }
+ 
+ 
+ template<typename To, typename From>
+   constexpr void
+   verify_convertible(From from)
+   {
+     static_assert(std::is_convertible_v<From, To>);
+     verify<To>(from);
+   }
+ 
+ template<typename To, typename From>
+   constexpr void
+   verify_nothrow_convertible(From from)
+   {
+     static_assert(std::is_nothrow_constructible_v<To, From>);
+     verify_convertible<To>(from);
+   }
+ 
+ template<typename To, typename From>
+   constexpr void
+   verify_constructible(From from)
+   {
+     static_assert(!std::is_convertible_v<From, To>);
+     static_assert(std::is_constructible_v<To, From>);
+     verify<To>(from);
+   }
+ 
+ template<typename To, typename From>
+   constexpr void
+   verify_nothrow_constructible(From from)
+   {
+     static_assert(std::is_nothrow_constructible_v<To, From>);
+     verify_constructible<To>(from);
+   }
+ 
+ template<typename Mapping, typename OExtents>
+   constexpr void
+   assert_not_constructible()
+   {
+     static_assert(!std::is_constructible_v<Mapping, OExtents>);
+   }
+ 
+ // ctor: mapping()
+ namespace default_ctor
+ {
+   template<typename Layout, typename Extents>
+     constexpr void
+     test_default_ctor()
+     {
+       using Mapping = typename Layout::mapping<Extents>;
+ 
+       Mapping m;
+       for(size_t i = 0; i < Extents::rank(); ++i)
+ 	if (Extents::static_extent(i) == std::dynamic_extent)
+ 	  VERIFY(m.extents().extent(i) == 0);
+ 	else
+ 	  VERIFY(m.extents().static_extent(i) == Extents::static_extent(i));
+     }
+ 
+   template<typename Layout>
+     constexpr bool
+     test_default_ctor_all()
+     {
+       test_default_ctor<Layout, std::extents<int, dyn>>();
+       test_default_ctor<Layout, std::extents<int, 1, 2>>();
+       test_default_ctor<Layout, std::extents<int, dyn, 2>>();
+       test_default_ctor<Layout, std::extents<int, dyn, dyn>>();
+       test_default_ctor<Layout, std::extents<int, dyn, 2, dyn>>();
+       test_default_ctor<Layout, std::extents<int, dyn, dyn, dyn>>();
+       return true;
+     }
+ 
+   template<typename Layout>
+   constexpr void
+   test_all()
+   {
+     test_default_ctor_all<Layout>();
+     static_assert(test_default_ctor_all<Layout>());
+   }
+ }
+ 
+ // ctor: mapping(const extents&)
+ namespace from_extents
+ {
+   template<typename Layout, typename Extents, typename OExtents>
+     constexpr void
+     verify_nothrow_convertible(OExtents oexts)
+     {
+       using Mapping = typename Layout::mapping<Extents>;
+       ::verify_nothrow_convertible<Mapping>(oexts);
+     }
+ 
+   template<typename Layout, typename Extents, typename OExtents>
+     constexpr void
+     verify_nothrow_constructible(OExtents oexts)
+     {
+       using Mapping = typename Layout::mapping<Extents>;
+       ::verify_nothrow_constructible<Mapping>(oexts);
+     }
+ 
+   template<typename Layout, typename Extents, typename OExtents>
+     constexpr void
+     assert_not_constructible()
+     {
+       using Mapping = typename Layout::mapping<Extents>;
+       ::assert_not_constructible<Mapping, OExtents>();
+     }
+ 
+   template<typename Layout>
+     constexpr bool
+     test_ctor()
+     {
+       verify_nothrow_convertible<Layout, std::extents<int>>(
+ 	std::extents<int>{});
+ 
+       verify_nothrow_convertible<Layout, std::extents<int, 2>>(
+ 	std::extents<int, 2>{});
+ 
+       verify_nothrow_convertible<Layout, std::extents<int, dyn, 3>>(
+ 	std::extents<int, dyn, 3>{2});
+ 
+       verify_nothrow_constructible<Layout, std::extents<unsigned int>>(
+ 	std::extents<int>{});
+ 
+       verify_nothrow_constructible<Layout, std::extents<int, dyn>>(
+ 	std::extents<int, 2>{});
+ 
+       verify_nothrow_constructible<Layout, std::extents<int, dyn, 3>>(
+ 	std::extents<int, 2, 3>{});
+ 
+       assert_not_constructible<Layout, std::extents<int>,
+ 			       std::extents<unsigned int>>();
+       assert_not_constructible<Layout, std::extents<int, 2>,
+ 			       std::extents<int, dyn>>();
+       assert_not_constructible<Layout, std::extents<int, 2, 3>,
+ 			       std::extents<int, dyn, 3>>();
+       return true;
+     }
+ 
+   template<typename Layout, typename Extents>
+     constexpr void
+     assert_deducible(Extents exts)
+     {
+       typename Layout::mapping m(exts);
+       static_assert(std::same_as<decltype(m),
+ 		    typename Layout::mapping<Extents>>);
+     }
+ 
+   template<typename Layout>
+     constexpr void
+     test_deducible()
+     {
+       assert_deducible<Layout>(std::extents<int>());
+       assert_deducible<Layout>(std::extents<int, 1>());
+       assert_deducible<Layout>(std::extents<int, 1, 2, dyn>(3));
+     }
+ 
+   template<typename Layout>
+     constexpr void
+     test_all()
+     {
+       test_ctor<Layout>();
+       static_assert(test_ctor<Layout>());
+       test_deducible<Layout>();
+     }
+ }
+ 
+ // ctor: mapping(mapping<OExtents>)
+ namespace from_same_layout
+ {
+   template<typename Layout, typename Extents, typename OExtents>
+     constexpr void
+     verify_nothrow_convertible(OExtents exts)
+     {
+       using Mapping = typename Layout::mapping<Extents>;
+       using OMapping = typename Layout::mapping<OExtents>;
+ 
+       ::verify_nothrow_convertible<Mapping>(OMapping(exts));
+     }
+ 
+   template<typename Layout, typename Extents, typename OExtents>
+     constexpr void
+     verify_nothrow_constructible(OExtents exts)
+     {
+       using Mapping = typename Layout::mapping<Extents>;
+       using OMapping = typename Layout::mapping<OExtents>;
+ 
+       ::verify_nothrow_constructible<Mapping>(OMapping(exts));
+     }
+ 
+   template<typename Layout>
+     constexpr bool
+     test_ctor()
+     {
+       verify_nothrow_convertible<Layout, std::extents<unsigned int>>(
+ 	std::extents<int>{});
+ 
+       verify_nothrow_constructible<Layout, std::extents<int>>(
+ 	std::extents<unsigned int>{});
+ 
+       assert_not_constructible<
+ 	typename Layout::mapping<std::extents<int>>,
+ 	typename Layout::mapping<std::extents<int, 1>>>();
+ 
+       assert_not_constructible<
+ 	typename Layout::mapping<std::extents<int, 1>>,
+ 	typename Layout::mapping<std::extents<int>>>();
+ 
+       verify_nothrow_constructible<Layout, std::extents<int, 1>>(
+ 	std::extents<int, dyn>{1});
+ 
+       verify_nothrow_convertible<Layout, std::extents<int, dyn>>(
+ 	std::extents<int, 1>{});
+ 
+       assert_not_constructible<
+ 	typename Layout::mapping<std::extents<int, 1, 2>>,
+ 	typename Layout::mapping<std::extents<int, 1>>>();
+ 
+       verify_nothrow_constructible<Layout, std::extents<int, 1, 2>>(
+ 	std::extents<int, dyn, 2>{1});
+ 
+       verify_nothrow_convertible<Layout, std::extents<int, dyn, 2>>(
+ 	std::extents<int, 1, 2>{});
+       return true;
+     }
+ 
+   template<typename Layout>
+     constexpr void
+     test_all()
+     {
+       test_ctor<Layout>();
+       static_assert(test_ctor<Layout>());
+     }
+ }
+ 
+ // ctor: mapping(layout_{right,left}::mapping<OExtents>)
+ namespace from_left_or_right
+ {
+   template<typename SLayout, typename OLayout, typename SExtents,
+ 	   typename OExtents>
+     constexpr void
+     verify_ctor(OExtents oexts)
+     {
+       using SMapping = typename SLayout::mapping<SExtents>;
+       using OMapping = typename OLayout::mapping<OExtents>;
+ 
+       constexpr bool expected = std::is_convertible_v<OExtents, SExtents>;
+       if constexpr (expected)
+ 	verify_nothrow_convertible<SMapping>(OMapping(oexts));
+       else
+ 	verify_nothrow_constructible<SMapping>(OMapping(oexts));
+     }
+ 
+   template<typename SLayout, typename OLayout>
+     constexpr bool
+     test_ctor()
+     {
+       assert_not_constructible<
+ 	typename SLayout::mapping<std::extents<int>>,
+ 	typename OLayout::mapping<std::extents<int, 1>>>();
+ 
+       verify_ctor<OLayout, SLayout, std::extents<int>>(
+ 	std::extents<unsigned int>{});
+ 
+       verify_ctor<OLayout, SLayout, std::extents<unsigned int>>(
+ 	std::extents<int>{});
+ 
+       assert_not_constructible<
+ 	typename SLayout::mapping<std::extents<int, 1>>,
+ 	typename OLayout::mapping<std::extents<int>>>();
+ 
+       verify_ctor<OLayout, SLayout, std::extents<int, 1>>(
+ 	std::extents<int, 1>{});
+ 
+       verify_ctor<OLayout, SLayout, std::extents<int, 1>>(
+ 	std::extents<unsigned int, 1>{});
+ 
+       verify_ctor<OLayout, SLayout, std::extents<unsigned int, 1>>(
+ 	std::extents<int, 1>{});
+ 
+       assert_not_constructible<
+ 	typename SLayout::mapping<std::extents<int, 1, 2>>,
+ 	typename OLayout::mapping<std::extents<int, 1, 2>>>();
+       return true;
+     }
+ 
+   template<typename SLayout, typename OLayout>
+     constexpr void
+     test_all()
+     {
+       test_ctor<SLayout, OLayout>();
+       static_assert(test_ctor<SLayout, OLayout>());
+     }
+ }
+ 
+ // ctor: mapping(layout_stride::mapping<OExtents>)
+ namespace from_stride
+ {
+   template<typename Mapping>
+     constexpr auto
+     strides(Mapping m)
+     {
+       constexpr auto rank = Mapping::extents_type::rank();
+       std::array<typename Mapping::index_type, rank> s;
+ 
+       if constexpr (rank > 0)
+ 	for(size_t i = 0; i < rank; ++i)
+ 	  s[i] = m.stride(i);
+       return s;
+     }
+ 
+   template<typename Layout, typename Extents, typename OExtents>
+     constexpr void
+     verify_nothrow_convertible(OExtents oexts)
+     {
+       using Mapping = typename Layout::mapping<Extents>;
+       using OMapping = std::layout_stride::mapping<OExtents>;
+ 
+       constexpr auto other = OMapping(oexts, strides(Mapping(Extents(oexts))));
+       ::verify_nothrow_convertible<Mapping>(other);
+     }
+ 
+   template<typename Layout, typename Extents, typename OExtents>
+     constexpr void
+     verify_nothrow_constructible(OExtents oexts)
+     {
+       using Mapping = typename Layout::mapping<Extents>;
+       using OMapping = std::layout_stride::mapping<OExtents>;
+ 
+       constexpr auto other = OMapping(oexts, strides(Mapping(Extents(oexts))));
+       ::verify_nothrow_constructible<Mapping>(other);
+     }
+ 
+   template<typename Layout>
+     constexpr bool
+     test_ctor()
+     {
+       assert_not_constructible<
+ 	typename Layout::mapping<std::extents<int>>,
+ 	std::layout_stride::mapping<std::extents<int, 1>>>();
+ 
+       assert_not_constructible<
+ 	typename Layout::mapping<std::extents<int, 1>>,
+ 	std::layout_stride::mapping<std::extents<int>>>();
+ 
+       assert_not_constructible<
+ 	typename Layout::mapping<std::extents<int, 2>>,
+ 	std::layout_stride::mapping<std::extents<int, 1>>>();
+ 
+       verify_nothrow_convertible<Layout, std::extents<int>>(
+ 	std::extents<int>{});
+ 
+       verify_nothrow_convertible<Layout, std::extents<unsigned int>>(
+ 	std::extents<int>{});
+ 
+       // Rank ==  0 doesn't check IndexType for convertibility.
+       verify_nothrow_convertible<Layout, std::extents<int>>(
+ 	std::extents<unsigned int>{});
+ 
+       verify_nothrow_constructible<Layout, std::extents<int, 3>>(
+ 	std::extents<int, 3>{});
+ 
+       verify_nothrow_constructible<Layout, std::extents<unsigned int, 3>>(
+ 	std::extents<int, 3>{});
+ 
+       verify_nothrow_constructible<Layout, std::extents<int, 3>>(
+ 	std::extents<unsigned int, 3>{});
+ 
+       verify_nothrow_constructible<Layout, std::extents<int, 3, 5>>(
+ 	std::extents<int, 3, 5>{});
+ 
+       verify_nothrow_constructible<Layout, std::extents<unsigned int, 3, 5>>(
+ 	std::extents<int, 3, 5>{});
+ 
+       verify_nothrow_constructible<Layout, std::extents<int, 3, 5>>(
+ 	std::extents<unsigned int, 3, 5>{});
+       return true;
+     }
+ 
+   template<typename Layout>
+     constexpr void
+     test_all()
+     {
+       test_ctor<Layout>();
+       static_assert(test_ctor<Layout>());
+     }
+ }
+ 
+ template<typename Layout>
+   constexpr void
+   test_all()
+   {
+     default_ctor::test_all<Layout>();
+     from_extents::test_all<Layout>();
+     from_same_layout::test_all<Layout>();
+     from_stride::test_all<Layout>();
+   }
+ 
+ int
+ main()
+ {
+   test_all<std::layout_left>();
+   test_all<std::layout_right>();
+ 
+   from_left_or_right::test_all<std::layout_left, std::layout_right>();
+   from_left_or_right::test_all<std::layout_right, std::layout_left>();
+   return 0;
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc	Sun Jun 15 22:33:54 2025
***************
*** 0 ****
--- 1,131 ----
+ // { dg-do run { target c++23 } }
+ #include <mdspan>
+ 
+ #include <cstdint>
+ #include <algorithm>
+ #include <testsuite_hooks.h>
+ 
+ constexpr size_t dyn = std::dynamic_extent;
+ 
+ template<typename Mapping>
+   constexpr void
+   invoke_stride(Mapping m)
+   {
+     // Only checking for UB, e.g. signed overflow.
+     for(size_t i = 0; i < Mapping::extents_type::rank(); ++i)
+       m.stride(i);
+   }
+ 
+ template<typename Mapping>
+   constexpr void
+   verify_required_span_size(Mapping m)
+   { VERIFY(m.required_span_size() == 0); }
+ 
+ template<typename Mapping>
+   constexpr void
+   verify_all(Mapping m)
+   {
+     verify_required_span_size(m);
+     invoke_stride(m);
+   }
+ 
+ template<typename Layout, typename Int>
+ constexpr void
+ test_static_overflow()
+ {
+   constexpr Int n1 = std::numeric_limits<Int>::max();
+   constexpr size_t n2 = std::dynamic_extent - 1;
+   constexpr size_t n = std::cmp_less(n1, n2) ? size_t(n1) : n2;
+ 
+   verify_all(typename Layout::mapping<std::extents<Int, n, n, 0, n, n>>{});
+   verify_all(typename Layout::mapping<std::extents<Int, 0, n, n, n>>{});
+   verify_all(typename Layout::mapping<std::extents<Int, dyn, n, n, n>>{});
+   verify_all(typename Layout::mapping<std::extents<Int, n, n, n, 0>>{});
+   verify_all(typename Layout::mapping<std::extents<Int, n, n, n, dyn>>{});
+ }
+ 
+ template<typename Int, size_t N>
+ constexpr std::array<Int, N>
+ make_strides()
+ {
+   std::array<Int, N> strides;
+   std::ranges::fill(strides, Int(1));
+   return strides;
+ }
+ 
+ template<typename Layout, typename Extents>
+ constexpr typename Layout::mapping<Extents>
+ make_mapping(Extents exts)
+ {
+   using IndexType = typename Extents::index_type;
+   constexpr auto rank = Extents::rank();
+   constexpr auto strides = make_strides<IndexType, rank>();
+ 
+   if constexpr (std::same_as<Layout, std::layout_stride>)
+     return typename Layout::mapping(exts, strides);
+   else
+     return typename Layout::mapping(exts);
+ }
+ 
+ template<typename Layout, typename Int>
+ constexpr void
+ test_dynamic_overflow()
+ {
+   constexpr Int n1 = std::numeric_limits<Int>::max();
+   constexpr size_t n2 = std::dynamic_extent - 1;
+   constexpr Int n = std::cmp_less(n1, n2) ? n1 : Int(n2);
+ 
+   verify_all(make_mapping<Layout>(
+       std::extents<Int, dyn, dyn, 0, dyn, dyn>{n, n, n, n}));
+ 
+   verify_all(make_mapping<Layout>(
+       std::extents<Int, dyn, dyn, dyn, dyn, dyn>{n, n, 0, n, n}));
+ 
+   verify_all(make_mapping<Layout>(
+       std::extents<Int, dyn, dyn, dyn, 0>{n, n, n}));
+ 
+   verify_all(make_mapping<Layout>(
+       std::extents<Int, dyn, dyn, dyn, dyn>{n, n, n, 0}));
+ 
+   verify_all(make_mapping<Layout>(
+       std::extents<Int, 0, dyn, dyn, dyn>{n, n, n}));
+ 
+   verify_all(make_mapping<Layout>(
+       std::extents<Int, dyn, dyn, dyn, dyn>{0, n, n, n}));
+ }
+ 
+ template<typename Layout, typename Int>
+ constexpr void
+ test_overflow()
+ {
+   test_static_overflow<Layout, Int>();
+   test_dynamic_overflow<Layout, Int>();
+ }
+ 
+ template<typename Layout>
+ constexpr bool
+ test_all()
+ {
+   test_overflow<Layout, signed char>();
+   test_overflow<Layout, short int>();
+   test_overflow<Layout, int>();
+   test_overflow<Layout, long int>();
+   test_overflow<Layout, long long int>();
+ 
+   test_overflow<Layout, unsigned char>();
+   test_overflow<Layout, unsigned short int>();
+   test_overflow<Layout, unsigned int>();
+   test_overflow<Layout, unsigned long int>();
+   test_overflow<Layout, unsigned long long int>();
+   test_overflow<Layout, size_t>();
+   return true;
+ }
+ 
+ int
+ main()
+ {
+   static_assert(test_all<std::layout_left>());
+   static_assert(test_all<std::layout_right>());
+   static_assert(test_all<std::layout_stride>());
+   return 0;
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc	Sun Jun 15 22:33:54 2025
***************
*** 0 ****
--- 1,568 ----
+ // { dg-do run { target c++23 } }
+ #include <mdspan>
+ 
+ #include <cstdint>
+ #include <testsuite_hooks.h>
+ 
+ constexpr size_t dyn = std::dynamic_extent;
+ 
+ template<typename Layout, typename Extents>
+   constexpr bool
+   test_mapping_properties()
+   {
+     using M = typename Layout::mapping<Extents>;
+     static_assert(std::__mdspan::__is_extents<typename M::extents_type>);
+     static_assert(std::__mdspan::__mapping_alike<M>);
+     static_assert(std::copyable<M>);
+     static_assert(std::is_nothrow_move_constructible_v<M>);
+     static_assert(std::is_nothrow_move_assignable_v<M>);
+     static_assert(std::is_nothrow_swappable_v<M>);
+     static_assert(std::is_same_v<typename M::extents_type, Extents>);
+     static_assert(std::is_same_v<typename M::index_type,
+ 				 typename M::extents_type::index_type>);
+     static_assert(std::is_same_v<typename M::size_type,
+ 				 typename M::extents_type::size_type>);
+     static_assert(std::is_same_v<typename M::rank_type,
+ 				 typename M::extents_type::rank_type>);
+     static_assert(std::is_same_v<typename M::layout_type, Layout>);
+ 
+     static_assert(std::is_trivially_copyable_v<M>);
+     static_assert(std::regular<M>);
+ 
+     static_assert(M::is_always_unique() && M::is_unique());
+     static_assert(M::is_always_strided() && M::is_strided());
+     if constexpr (!std::is_same_v<Layout, std::layout_stride>)
+       static_assert(M::is_always_exhaustive() && M::is_exhaustive());
+     return true;
+   }
+ 
+ template<typename Layout>
+   constexpr bool
+   test_mapping_properties_all()
+   {
+     test_mapping_properties<Layout, std::extents<int>>();
+     test_mapping_properties<Layout, std::extents<int, 1>>();
+     test_mapping_properties<Layout, std::extents<int, dyn>>();
+     test_mapping_properties<Layout, std::extents<int, dyn, dyn>>();
+     return true;
+   }
+ 
+ // Check operator()(Indices...)
+ template<typename Mapping, size_t N>
+   constexpr typename Mapping::index_type
+   linear_index(const Mapping& mapping,
+ 	       const std::array<typename Mapping::index_type, N>& indices)
+   {
+     typename Mapping::index_type ret = 0;
+     for(size_t r = 0; r < indices.size(); ++r)
+       ret += indices[r] * mapping.stride(r);
+     return ret;
+   }
+ 
+ template<typename Mapping, typename... Indices>
+   constexpr void
+   test_linear_index(const Mapping& m, Indices... i)
+   {
+     using index_type = typename Mapping::index_type;
+     index_type expected = linear_index(m, std::array{index_type(i)...});
+     VERIFY(m(i...) == expected);
+     VERIFY(m(uint8_t(i)...) == expected);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_linear_index_0d()
+   {
+     constexpr typename Layout::mapping<std::extents<int>> m;
+     VERIFY(m() == 0);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_linear_index_1d()
+   {
+     typename Layout::mapping<std::extents<int, 5>> m;
+     test_linear_index(m, 0);
+     test_linear_index(m, 1);
+     test_linear_index(m, 4);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_linear_index_2d()
+   {
+     typename Layout::mapping<std::extents<int, 3, 256>> m;
+     test_linear_index(m, 0, 0);
+     test_linear_index(m, 1, 0);
+     test_linear_index(m, 0, 1);
+     test_linear_index(m, 1, 1);
+     test_linear_index(m, 2, 4);
+   }
+ 
+ template<typename Layout>
+   struct MappingFactory
+   {
+     template<typename Extents>
+       static constexpr typename Layout::mapping<Extents>
+       create(Extents exts)
+       { return exts; }
+   };
+ 
+ template<>
+   struct MappingFactory<std::layout_stride>
+   {
+     template<typename Extents>
+       static constexpr std::layout_stride::mapping<Extents>
+       create(Extents exts)
+       {
+ 	if constexpr (Extents::rank() == 0)
+ 	  {
+ 	    auto strides = std::array<size_t, 0>{};
+ 	    return std::layout_stride::mapping(exts, strides);
+ 	  }
+ 	else if constexpr (Extents::rank() == 1)
+ 	  {
+ 	    auto strides = std::array<size_t, 1>{2};
+ 	    return std::layout_stride::mapping(exts, strides);
+ 	  }
+ 	else if constexpr (Extents::rank() == 2)
+ 	  {
+ 	    size_t m = exts.extent(1);
+ 	    auto strides = std::array<size_t, 2>{3*m, 2};
+ 	    return std::layout_stride::mapping(exts, strides);
+ 	  }
+ 	else if constexpr (Extents::rank() == 3)
+ 	  {
+ 	    size_t n = exts.extent(0);
+ 	    size_t m = exts.extent(1);
+ 	    auto strides = std::array<size_t, 3>{3*m, 2, 11*m*n};
+ 	    return std::layout_stride::mapping(exts, strides);
+ 	  }
+       }
+   };
+ 
+ template<typename Layout>
+   constexpr void
+   test_linear_index_3d()
+   {
+     auto m = MappingFactory<Layout>::create(std::extents(3, 5, 7));
+     test_linear_index(m, 0, 0, 0);
+     test_linear_index(m, 1, 0, 0);
+     test_linear_index(m, 0, 1, 0);
+     test_linear_index(m, 0, 0, 1);
+     test_linear_index(m, 1, 1, 0);
+     test_linear_index(m, 2, 4, 6);
+   }
+ 
+ struct IntLikeA
+ {
+   operator int()
+   { return 0; }
+ };
+ 
+ struct IntLikeB
+ {
+   operator int() noexcept
+   { return 0; }
+ };
+ 
+ struct NotIntLike
+ { };
+ 
+ template<typename Layout>
+   constexpr void
+   test_has_linear_index_0d()
+   {
+     using Mapping = typename Layout::mapping<std::extents<int>>;
+     static_assert(std::invocable<Mapping>);
+     static_assert(!std::invocable<Mapping, int>);
+     static_assert(!std::invocable<Mapping, IntLikeA>);
+     static_assert(!std::invocable<Mapping, IntLikeB>);
+     static_assert(!std::invocable<Mapping, NotIntLike>);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_has_linear_index_1d()
+   {
+     using Mapping = typename Layout::mapping<std::extents<int, 3>>;
+     static_assert(std::invocable<Mapping, int>);
+     static_assert(!std::invocable<Mapping>);
+     static_assert(!std::invocable<Mapping, IntLikeA>);
+     static_assert(std::invocable<Mapping, IntLikeB>);
+     static_assert(!std::invocable<Mapping, NotIntLike>);
+     static_assert(std::invocable<Mapping, double>);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_has_linear_index_2d()
+   {
+     using Mapping = typename Layout::mapping<std::extents<int, 3, 5>>;
+     static_assert(std::invocable<Mapping, int, int>);
+     static_assert(!std::invocable<Mapping, int>);
+     static_assert(!std::invocable<Mapping, IntLikeA, int>);
+     static_assert(std::invocable<Mapping, IntLikeB, int>);
+     static_assert(!std::invocable<Mapping, NotIntLike, int>);
+     static_assert(std::invocable<Mapping, double, double>);
+   }
+ 
+ template<typename Layout>
+   constexpr bool
+   test_linear_index_all()
+   {
+     test_linear_index_0d<Layout>();
+     test_linear_index_1d<Layout>();
+     test_linear_index_2d<Layout>();
+     test_linear_index_3d<Layout>();
+     test_has_linear_index_0d<Layout>();
+     test_has_linear_index_1d<Layout>();
+     test_has_linear_index_2d<Layout>();
+     return true;
+   }
+ 
+ template<typename Mapping>
+   constexpr typename Mapping::index_type
+   linear_index_end(Mapping m)
+   {
+     using index_type = typename Mapping::index_type;
+     constexpr size_t rank = Mapping::extents_type::rank();
+ 
+     auto impl = [m]<index_type... Counts>(
+ 	std::integer_sequence<index_type, Counts...>) -> index_type
+       {
+ 	auto exts = m.extents();
+ 	if(((exts.extent(Counts) == 0) || ...))
+ 	  return 0;
+ 	return m((exts.extent(Counts) - 1)...) + 1;
+       };
+ 
+     return impl(std::make_integer_sequence<index_type, rank>());
+   }
+ 
+ // Check required_span_size
+ template<typename Mapping>
+   constexpr void
+   test_required_span_size(Mapping m)
+   { VERIFY(m.required_span_size() == linear_index_end(m)); }
+ 
+ template<typename Layout>
+   constexpr void
+   test_required_span_size_0d()
+   {
+     typename Layout::mapping<std::extents<int>> m;
+     test_required_span_size(m);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_required_span_size_1d()
+   {
+     auto m = MappingFactory<Layout>::create(std::extents(3));
+     test_required_span_size(m);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_required_span_size_2d()
+   {
+     auto m = MappingFactory<Layout>::create(std::extents(3, 5));
+     test_required_span_size(m);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_required_span_size_3d()
+   {
+     auto m = MappingFactory<Layout>::create(std::extents(3, 5, 7));
+     test_required_span_size(m);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_required_span_size_zero_1d()
+   {
+     auto m = MappingFactory<Layout>::create(std::extents(3, 0));
+     test_required_span_size(m);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_required_span_size_zero_3d()
+   {
+     auto m = MappingFactory<Layout>::create(std::extents(3, 0, 7));
+     test_required_span_size(m);
+   }
+ 
+ template<typename Layout>
+   constexpr bool
+   test_required_span_size_all()
+   {
+     test_required_span_size_0d<Layout>();
+     test_required_span_size_1d<Layout>();
+     test_required_span_size_2d<Layout>();
+     test_required_span_size_3d<Layout>();
+     test_required_span_size_zero_1d<Layout>();
+     test_required_span_size_zero_3d<Layout>();
+     return true;
+   }
+ 
+ // Check stride
+ template<typename Layout>
+   constexpr void
+   test_stride_1d()
+   {
+     std::layout_left::mapping<std::extents<int, 3>> m;
+     VERIFY(m.stride(0) == 1);
+   }
+ 
+ template<>
+   constexpr void
+   test_stride_1d<std::layout_stride>()
+   {
+     std::array<int, 1> strides{13};
+     std::layout_stride::mapping m(std::extents<int, 3>{}, strides);
+     VERIFY(m.stride(0) == strides[0]);
+     VERIFY(m.strides() == strides);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_stride_2d();
+ 
+ template<>
+   constexpr void
+   test_stride_2d<std::layout_left>()
+   {
+     std::layout_left::mapping<std::extents<int, 3, 5>> m;
+     VERIFY(m.stride(0) == 1);
+     VERIFY(m.stride(1) == 3);
+   }
+ 
+ template<>
+   constexpr void
+   test_stride_2d<std::layout_right>()
+   {
+     std::layout_right::mapping<std::extents<int, 3, 5>> m;
+     VERIFY(m.stride(0) == 5);
+     VERIFY(m.stride(1) == 1);
+   }
+ 
+ template<>
+   constexpr void
+   test_stride_2d<std::layout_stride>()
+   {
+     std::array<int, 2> strides{13, 2};
+     std::layout_stride::mapping m(std::extents<int, 3, 5>{}, strides);
+     VERIFY(m.stride(0) == strides[0]);
+     VERIFY(m.stride(1) == strides[1]);
+     VERIFY(m.strides() == strides);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_stride_3d();
+ 
+ template<>
+   constexpr void
+   test_stride_3d<std::layout_left>()
+   {
+     std::layout_left::mapping m(std::dextents<int, 3>(3, 5, 7));
+     VERIFY(m.stride(0) == 1);
+     VERIFY(m.stride(1) == 3);
+     VERIFY(m.stride(2) == 3*5);
+   }
+ 
+ template<>
+   constexpr void
+   test_stride_3d<std::layout_right>()
+   {
+     std::layout_right::mapping m(std::dextents<int, 3>(3, 5, 7));
+     VERIFY(m.stride(0) == 5*7);
+     VERIFY(m.stride(1) == 7);
+     VERIFY(m.stride(2) == 1);
+   }
+ 
+ template<>
+   constexpr void
+   test_stride_3d<std::layout_stride>()
+   {
+     std::dextents<int, 3> exts(3, 5, 7);
+     std::array<int, 3> strides{11, 2, 41};
+     std::layout_stride::mapping<std::dextents<int, 3>> m(exts, strides);
+     VERIFY(m.stride(0) == strides[0]);
+     VERIFY(m.stride(1) == strides[1]);
+     VERIFY(m.stride(2) == strides[2]);
+     VERIFY(m.strides() == strides);
+   }
+ 
+ template<typename Layout>
+   constexpr bool
+   test_stride_all()
+   {
+     test_stride_1d<Layout>();
+     test_stride_2d<Layout>();
+     test_stride_3d<Layout>();
+     return true;
+   }
+ 
+ template<typename Mapping>
+   concept has_stride = requires (Mapping m)
+   {
+     { m.stride(0) } -> std::same_as<typename Mapping::index_type>;
+   };
+ 
+ template<typename Layout>
+   constexpr void
+   test_has_stride_0d()
+   {
+     using Mapping = typename Layout::mapping<std::extents<int>>;
+     constexpr bool expected = std::is_same_v<Layout, std::layout_stride>;
+     static_assert(has_stride<Mapping> == expected);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_has_stride_1d()
+   { static_assert(has_stride<typename Layout::mapping<std::extents<int, 1>>>); }
+ 
+ template<typename Layout>
+   constexpr void
+   test_has_stride_2d()
+   {
+     using Extents = std::extents<int, 1, 2>;
+     static_assert(has_stride<typename Layout::mapping<Extents>>);
+   }
+ 
+ // Check operator==
+ template<typename Layout>
+   constexpr void
+   test_eq()
+   {
+     typename Layout::mapping<std::extents<int, 1, 2>> m1;
+     typename Layout::mapping<std::extents<int, 2, 2>> m2;
+     typename Layout::mapping<std::dextents<int, 2>> m3(m1);
+ 
+     VERIFY(m1 == m1);
+     VERIFY(m1 != m2);
+     VERIFY(m1 == m3);
+     VERIFY(m2 != m3);
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_eq_zero()
+   {
+     typename Layout::mapping<std::extents<int, 0, 2>> m1;
+     typename Layout::mapping<std::extents<int, 0, 2>> m2;
+     typename Layout::mapping<std::extents<int, 2, 0>> m3;
+ 
+     VERIFY(m1 == m2);
+     VERIFY(m1 != m3);
+   }
+ 
+ template<typename M1, typename M2>
+   concept has_op_eq = requires (M1 m1, M2 m2)
+   {
+     { m1 == m2 } -> std::same_as<bool>;
+     { m2 == m1 } -> std::same_as<bool>;
+     { m1 != m2 } -> std::same_as<bool>;
+     { m2 != m1 } -> std::same_as<bool>;
+   };
+ 
+ template<typename SLayout, typename OLayout, bool Expected>
+   constexpr void
+   test_has_op_eq()
+   {
+     static_assert(has_op_eq<
+ 	typename SLayout::mapping<std::extents<int>>,
+ 	typename OLayout::mapping<std::extents<int>>> == Expected);
+ 
+     static_assert(!has_op_eq<
+ 	typename SLayout::mapping<std::extents<int>>,
+ 	typename OLayout::mapping<std::extents<int, 1>>>);
+ 
+     static_assert(has_op_eq<
+ 	typename SLayout::mapping<std::extents<int, 1>>,
+ 	typename OLayout::mapping<std::extents<int, 1>>> == Expected);
+ 
+     static_assert(has_op_eq<
+ 	typename SLayout::mapping<std::extents<int, 1>>,
+ 	typename OLayout::mapping<std::extents<int, 2>>> == Expected);
+ 
+     static_assert(!has_op_eq<
+ 	typename SLayout::mapping<std::extents<int, 1>>,
+ 	typename OLayout::mapping<std::extents<int, 1, 2>>>);
+ 
+     static_assert(has_op_eq<
+ 	typename SLayout::mapping<std::extents<int, 1, 2>>,
+ 	typename OLayout::mapping<std::extents<int, 1, 2>>> == Expected);
+ 
+     static_assert(has_op_eq<
+ 	typename SLayout::mapping<std::extents<int, 1, 2>>,
+ 	typename OLayout::mapping<std::extents<int, 2, 2>>> == Expected);
+ 
+     static_assert(!has_op_eq<
+ 	typename SLayout::mapping<std::extents<int, 1, 2>>,
+ 	typename OLayout::mapping<std::extents<int, 1, 2, 3>>>);
+   }
+ 
+ constexpr void
+ test_has_op_eq_peculiar()
+ {
+   static_assert(has_op_eq<
+       std::layout_right::mapping<std::extents<int>>,
+       std::layout_left::mapping<std::extents<unsigned int>>>);
+ 
+   static_assert(has_op_eq<
+       std::layout_right::mapping<std::extents<int, 1>>,
+       std::layout_left::mapping<std::extents<int, dyn>>>);
+ 
+   static_assert(!has_op_eq<
+       std::layout_right::mapping<std::extents<int, 1, 2>>,
+       std::layout_left::mapping<std::extents<int, dyn, 2>>>);
+ }
+ 
+ template<typename Layout>
+   constexpr bool
+   test_mapping_all()
+   {
+     test_linear_index_all<Layout>();
+     test_required_span_size_all<Layout>();
+     test_stride_all<Layout>();
+ 
+     test_eq<Layout>();
+     test_eq_zero<Layout>();
+     return true;
+   }
+ 
+ template<typename Layout>
+   constexpr void
+   test_all()
+   {
+     static_assert(std::is_trivially_default_constructible_v<Layout>);
+     static_assert(std::is_trivially_copyable_v<Layout>);
+     static_assert(test_mapping_properties_all<Layout>());
+ 
+     test_mapping_all<Layout>();
+     static_assert(test_mapping_all<Layout>());
+ 
+     test_has_stride_0d<Layout>();
+     test_has_stride_1d<Layout>();
+     test_has_stride_2d<Layout>();
+     test_has_op_eq<Layout, Layout, true>();
+   }
+ 
+ int
+ main()
+ {
+   test_all<std::layout_left>();
+   test_all<std::layout_right>();
+   test_all<std::layout_stride>();
+ 
+   test_has_op_eq<std::layout_right, std::layout_left, false>();
+   test_has_op_eq<std::layout_right, std::layout_stride, true>();
+   test_has_op_eq<std::layout_left, std::layout_stride, true>();
+   test_has_op_eq_peculiar();
+   return 0;
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc	Sun Jun 15 22:33:54 2025
***************
*** 0 ****
--- 1,526 ----
+ // { dg-do run { target c++23 } }
+ #include <mdspan>
+ 
+ #include <testsuite_hooks.h>
+ 
+ constexpr size_t dyn = std::dynamic_extent;
+ 
+ template<typename MappingStride>
+   constexpr void
+   test_ctor_default_stride()
+   {
+     using Extents = typename MappingStride::extents_type;
+     MappingStride actual;
+     typename std::layout_right::mapping<Extents> expected;
+ 
+     constexpr auto rank = MappingStride::extents_type::rank();
+     if constexpr (rank > 0)
+       for(size_t i = 0; i < rank; ++i)
+ 	VERIFY(actual.stride(i) == expected.stride(i));
+   }
+ 
+ constexpr bool
+ test_ctor_default_stride_all()
+ {
+   test_ctor_default_stride<
+     std::layout_stride::mapping<std::extents<int, 3>>>();
+ 
+   test_ctor_default_stride<
+     std::layout_stride::mapping<std::extents<int, 3, 5, 7>>>();
+ 
+   test_ctor_default_stride<
+     std::layout_stride::mapping<std::dextents<int, 3>>>();
+ 
+   test_ctor_default_stride<
+     std::layout_stride::mapping<std::extents<int, 0, 5, 7>>>();
+ 
+   test_ctor_default_stride<
+     std::layout_stride::mapping<std::extents<int, 3, dyn, dyn>>>();
+ 
+   test_ctor_default_stride<
+     std::layout_stride::mapping<std::extents<int, dyn, dyn, 3>>>();
+   return true;
+ }
+ 
+ struct IntLikeA
+ {
+   operator int()
+   { return 0; }
+ };
+ 
+ struct IntLikeB
+ {
+   operator int() noexcept
+   { return 0; }
+ };
+ 
+ struct NotIntLike
+ { };
+ 
+ template<typename E, typename E_arg, typename T, size_t N, bool Expected>
+ constexpr void
+ test_stride_constructible()
+ {
+   static_assert(std::is_nothrow_constructible_v<
+       std::layout_stride::mapping<E>, E_arg, std::span<T, N>> == Expected);
+   static_assert(std::is_nothrow_constructible_v<
+       std::layout_stride::mapping<E>, E_arg, std::array<T, N>> == Expected);
+   static_assert(!std::is_constructible_v<std::layout_stride::mapping<E>,
+ 					 E_arg>);
+ }
+ 
+ constexpr void
+ test_stride_constructible_all()
+ {
+   using E0 = std::extents<int>;
+   using E1 = std::extents<int, 2>;
+   using E2 = std::extents<int, dyn>;
+ 
+   test_stride_constructible<E0, E0, int, 0, true>();
+   test_stride_constructible<E0, E0, IntLikeA, 0, false>();
+   test_stride_constructible<E0, E0, IntLikeB, 0, true>();
+   test_stride_constructible<E0, E0, NotIntLike, 0, false>();
+   test_stride_constructible<E1, E1, int, 1, true>();
+   test_stride_constructible<E2, E1, int, 1, true>();
+   test_stride_constructible<E1, E1, int, 2, false>();
+   test_stride_constructible<E1, E0, int, 1, false>();
+ }
+ 
+ template<typename Extents, typename Shape>
+   constexpr void
+   test_ctor_shape_strides(Extents exts, Shape strides)
+   {
+     using M = std::layout_stride::mapping<Extents>;
+     M m(exts, strides);
+ 
+     if constexpr (Extents::rank() > 0)
+       for(size_t i = 0; i < exts.rank(); ++i)
+ 	{
+ 	  VERIFY(m.stride(i) == strides[i]);
+ 	  VERIFY(m.extents().extent(i) == exts.extent(i));
+ 	}
+   }
+ 
+ constexpr bool
+ test_ctor_shape_stride_all()
+ {
+   test_ctor_shape_strides(std::extents<int>{}, std::array<int, 0>{});
+   test_ctor_shape_strides(std::extents<int, 2>{}, std::array<int, 1>{3});
+   test_ctor_shape_strides(std::extents<int, 2, 4, 6>{},
+ 			  std::array<int, 3>{20, 5, 45});
+   return true;
+ }
+ 
+ template<typename Extents, std::array<bool, 2> Strided,
+ 	 std::array<bool, 2> Unique, std::array<bool, 2> Exhautive,
+ 	 typename Extents::index_type Offset = 0>
+   struct MappingLike
+   {
+     using extents_type = Extents;
+     using index_type = typename Extents::index_type;
+ 
+     constexpr
+     MappingLike(extents_type extents,
+ 		std::array<index_type, Extents::rank()> strides)
+       : _extents(extents), _strides(strides)
+     { }
+ 
+     static constexpr bool
+     is_always_strided() requires (Strided[0])
+     { return Strided[1]; }
+ 
+     static constexpr bool
+     is_always_unique() requires (Unique[0])
+     { return Unique[1]; }
+ 
+     static constexpr bool
+     is_always_exhaustive() requires (Exhautive[0])
+     { return Exhautive[1]; }
+ 
+     constexpr Extents
+     extents() const { return _extents; }
+ 
+     constexpr index_type
+     stride(size_t i) const { return _strides[i]; }
+ 
+     template<typename... Indices>
+       constexpr index_type
+       operator()(Indices... indices) const
+       {
+ 	if (empty())
+ 	  VERIFY(false);
+ 
+ 	std::array<index_type, Extents::rank()> ind_arr{indices...};
+ 	index_type ret = Offset;
+ 	for(size_t i = 0; i < Extents::rank(); ++i)
+ 	  ret += ind_arr[i]*_strides[i];
+ 	return ret;
+       }
+ 
+   private:
+     constexpr bool
+     empty() const
+     {
+       for (size_t i = 0; i < extents_type::rank(); ++i)
+ 	if (_extents.extent(i) == 0)
+ 	  return true;
+       return false;
+     }
+ 
+     Extents _extents;
+     std::array<index_type, Extents::rank()> _strides;
+   };
+ 
+ 
+ template<size_t Rank>
+ struct ExtentLike
+ {
+   using index_type = int;
+ 
+   static constexpr size_t
+   rank() { return Rank; }
+ };
+ 
+ 
+ template<typename E1>
+ constexpr void
+ test_mapping_like_constructible()
+ {
+   using M = std::layout_stride::mapping<E1>;
+   using E2 = std::dextents<typename E1::index_type, E1::rank()>;
+   using E3 = std::dextents<typename E1::index_type, E1::rank() + 1>;
+   using E4 = ExtentLike<E1::rank()>;
+ 
+   constexpr auto TT = std::array{true, true};
+   constexpr auto FT = std::array{false, true};
+   constexpr auto TF = std::array{true, false};
+ 
+   static_assert(std::is_constructible_v<M, MappingLike<E1, TT, TT, TT>>);
+   static_assert(std::is_constructible_v<M, MappingLike<E2, TT, TT, TT>>);
+   static_assert(!std::is_constructible_v<M, MappingLike<E3, TT, TT, TT>>);
+   static_assert(!std::is_constructible_v<M, MappingLike<E1, FT, TT, TT>>);
+   static_assert(!std::is_constructible_v<M, MappingLike<E1, TF, TT, TT>>);
+   static_assert(!std::is_constructible_v<M, MappingLike<E1, TT, FT, TT>>);
+   static_assert(!std::is_constructible_v<M, MappingLike<E1, TT, TF, TT>>);
+   static_assert(!std::is_constructible_v<M, MappingLike<E1, TT, TT, FT>>);
+   static_assert(std::is_constructible_v<M, MappingLike<E1, TT, TT, TF>>);
+   static_assert(!std::is_constructible_v<M, MappingLike<E4, TT, TT, TF>>);
+   static_assert(!std::is_constructible_v<M, MappingLike<E4, TT, TT, TT>>);
+ }
+ 
+ constexpr void
+ test_mapping_like_constructible_all()
+ {
+   test_mapping_like_constructible<std::extents<int>>();
+   test_mapping_like_constructible<std::extents<int, 2>>();
+   test_mapping_like_constructible<std::extents<int, 2, 3>>();
+ }
+ 
+ template<typename E1, typename E2>
+ constexpr void
+ test_mapping_like_convertible()
+ {
+   using M1 = std::layout_stride::mapping<E1>;
+   using M2 = std::layout_stride::mapping<E2>;
+   constexpr auto TT = std::array{true, true};
+ 
+   static_assert(!std::is_convertible_v<MappingLike<E1, TT, TT, TT>, M1>);
+   static_assert(!std::is_convertible_v<MappingLike<E2, TT, TT, TT>, M1>);
+   static_assert(!std::is_convertible_v<MappingLike<E1, TT, TT, TT>, M2>);
+ 
+   static_assert(std::is_convertible_v<std::layout_stride::mapping<E2>, M1>);
+   static_assert(std::is_convertible_v<std::layout_left::mapping<E2>, M1>);
+   static_assert(std::is_convertible_v<std::layout_right::mapping<E2>, M1>);
+ 
+   static_assert(!std::is_convertible_v<std::layout_stride::mapping<E1>, M2>);
+   static_assert(!std::is_convertible_v<std::layout_left::mapping<E1>, M2>);
+   static_assert(!std::is_convertible_v<std::layout_right::mapping<E1>, M2>);
+ }
+ 
+ constexpr void
+ test_mapping_like_convertible_all()
+ {
+   test_mapping_like_convertible<std::extents<unsigned int>,
+ 				std::extents<int>>();
+   test_mapping_like_convertible<std::extents<unsigned int, 2>,
+ 				std::extents<int, 2>>();
+   test_mapping_like_convertible<std::extents<int, dyn, 3>,
+ 				std::extents<int, 2, 3>>();
+ }
+ 
+ template<typename Extents>
+ constexpr void
+ test_ctor_stride_like(Extents exts, std::array<int, Extents::rank()> strides)
+ {
+   auto other_right = std::layout_right::mapping(exts);
+   auto other_left = std::layout_left::mapping(exts);
+   auto other_stride = std::layout_stride::mapping(exts, strides);
+ 
+   VERIFY(std::layout_stride::mapping<Extents>(other_right) == other_right);
+   VERIFY(std::layout_stride::mapping<Extents>(other_left) == other_left);
+   VERIFY(std::layout_stride::mapping<Extents>(other_stride) == other_stride);
+ }
+ 
+ constexpr void
+ test_ctor_stride_like_all()
+ {
+   using E1 = std::extents<int>;
+   auto s1 = std::array<int, 0>{};
+   test_ctor_stride_like(E1{}, s1);
+ 
+   using E2 = std::extents<int, 3>;
+   auto s2 = std::array<int, 1>{2};
+   test_ctor_stride_like(E2{}, s2);
+ 
+   using E3 = std::extents<int, 3, 5, 7>;
+   auto s3 = std::array<int, 3>{5, 1, 15};
+   test_ctor_stride_like(E3{}, s3);
+ }
+ 
+ constexpr bool
+ test_ctor_strides_all()
+ {
+   test_ctor_default_stride_all();
+   test_ctor_shape_stride_all();
+   test_ctor_stride_like_all();
+   return true;
+ }
+ 
+ // Check is_exhaustive.
+ template<typename Extents, typename Strides>
+   constexpr void
+   test_is_exhaustive(Extents extents, Strides strides, bool expected)
+   {
+     std::layout_stride::mapping<Extents> m(extents, strides);
+     VERIFY(m.is_exhaustive() == expected);
+ 
+     bool always_exhaustive = extents.rank() == 0 || m.required_span_size() == 0;
+     VERIFY(m.is_always_exhaustive() == always_exhaustive);
+   }
+ 
+ constexpr void
+ test_is_exhaustive_zero_1d()
+ {
+   std::extents<int, 0> extents;
+   test_is_exhaustive(extents, std::array{1}, true);
+   test_is_exhaustive(extents, std::array{2}, true);
+ }
+ 
+ constexpr void
+ test_is_exhaustive_zero_3d()
+ {
+   std::extents<int, 3, 0, 7> extents;
+ 
+   test_is_exhaustive(extents, std::array{1, 1, 1}, true);
+   test_is_exhaustive(extents, std::array{1, 2*21, 2*3}, true);
+   test_is_exhaustive(extents, std::array{7, 2*21, 1}, true);
+   test_is_exhaustive(extents, std::array{1, 21, 3}, true);
+   test_is_exhaustive(extents, std::array{7, 21, 1}, true);
+ }
+ 
+ constexpr void
+ test_is_exhaustive_0d()
+ {
+   std::extents<int> extents;
+   test_is_exhaustive(extents, std::array<int, 0>{}, true);
+ }
+ 
+ constexpr void
+ test_is_exhaustive_1d()
+ {
+   std::extents<int, 3> extents;
+   test_is_exhaustive(extents, std::array{1}, true);
+   test_is_exhaustive(extents, std::array{3}, false);
+ }
+ 
+ 
+ constexpr void
+ test_is_exhaustive_3d()
+ {
+   std::extents<int, 3, dyn, 7> extents(5);
+ 
+   test_is_exhaustive(extents, std::array{1, 3, 3*5}, true);
+   test_is_exhaustive(extents, std::array{5*7, 1, 5}, true);
+   test_is_exhaustive(extents, std::array{7, 3*7, 1}, true);
+ 
+   test_is_exhaustive(extents, std::array{1, 3, 2*3*5}, false);
+   test_is_exhaustive(extents, std::array{2*5*7, 1, 2*5}, false);
+   test_is_exhaustive(extents, std::array{2*7, 2*3*7, 2}, false);
+ }
+ 
+ constexpr void
+ test_is_exhaustive_ones()
+ {
+   std::extents<int, 1, 1, 3, 1> extents;
+   test_is_exhaustive(extents, std::array{1, 1, 1, 1}, true);
+   test_is_exhaustive(extents, std::array{1, 1, 1, 3}, true);
+   test_is_exhaustive(extents, std::array{3, 3, 1, 3}, true);
+   test_is_exhaustive(extents, std::array{3, 1, 1, 3}, true);
+ }
+ 
+ constexpr bool
+ test_is_exhaustive_all()
+ {
+   test_is_exhaustive_zero_1d();
+   test_is_exhaustive_zero_3d();
+   test_is_exhaustive_ones();
+   test_is_exhaustive_0d();
+   test_is_exhaustive_1d();
+   test_is_exhaustive_3d();
+   return true;
+ }
+ 
+ template<typename Extents, int Offset>
+   using OffsetMapping = MappingLike<Extents, {true, true}, {true, true},
+ 				    {true, false}, Offset>;
+ 
+ template<typename Extents>
+   constexpr void
+   test_eq(Extents exts,
+       std::array<typename Extents::index_type, Extents::rank()> left_strides,
+       std::array<typename Extents::index_type, Extents::rank()> right_strides,
+       std::array<typename Extents::index_type, Extents::rank()> padded_strides)
+   {
+     using DExtents = std::dextents<int, Extents::rank()>;
+ 
+     std::layout_left::mapping<Extents> ml;
+     std::layout_right::mapping<DExtents> mr(exts);
+ 
+     std::layout_stride::mapping<Extents> msd;
+     std::layout_stride::mapping<Extents> msl(exts, left_strides);
+     std::layout_stride::mapping<Extents> msr(exts, right_strides);
+     std::layout_stride::mapping<Extents> msp(exts, padded_strides);
+ 
+     OffsetMapping<Extents, 0> mor{exts, right_strides};
+     OffsetMapping<Extents, 0> mol{exts, left_strides};
+     OffsetMapping<Extents, 0> mop{exts, padded_strides};
+     OffsetMapping<Extents, 1> moo{exts, right_strides};
+ 
+     VERIFY(msd == mr);
+     VERIFY(msd == mor);
+     VERIFY(msd != msp);
+     VERIFY(msd != mop);
+ 
+     VERIFY(msl == ml);
+     VERIFY(msl == mol);
+     VERIFY(msd != msp);
+     VERIFY(msl != mop);
+ 
+     VERIFY(msp == mop);
+     VERIFY(msp != ml);
+     VERIFY(msp != mr);
+ 
+     VERIFY(msd != moo);
+   }
+ 
+ constexpr void
+ test_eq_0d()
+ {
+   using Extents = std::extents<int>;
+   Extents exts;
+   std::layout_left::mapping<Extents> ml;
+   std::layout_right::mapping<Extents> mr;
+   std::layout_stride::mapping<Extents> ms;
+   OffsetMapping<Extents, 0> mor{exts, {}};
+   OffsetMapping<Extents, 1> moo{exts, {}};
+ 
+   VERIFY(ms == ml);
+   VERIFY(ms == mr);
+   VERIFY(ms == mor);
+   VERIFY(ms != moo);
+ }
+ 
+ constexpr void
+ test_eq_1d()
+ {
+   using Extents = std::extents<int, 2>;
+   auto exhaustive_strides = std::array{1};
+   auto padded_strides = std::array{2};
+ 
+   test_eq(Extents{}, exhaustive_strides, exhaustive_strides, padded_strides);
+ }
+ 
+ constexpr void
+ test_eq_2d()
+ {
+   using Extents = std::extents<int, 1, 2>;
+   auto left_strides = std::array{1, 1};
+   auto right_strides = std::array{2, 1};
+   auto padded_strides = std::array{2, 8};
+ 
+   test_eq(Extents{}, left_strides, right_strides, padded_strides);
+ }
+ 
+ constexpr void
+ test_eq_zero()
+ {
+   using Extents = std::extents<int, 0, 2>;
+   using Mapping = std::layout_stride::mapping<Extents>;
+ 
+   Extents exts;
+   std::array<int, 2> sl{1, 5};
+   std::array<int, 2> sr{5, 1};
+ 
+   Mapping m1(exts, sl);
+   Mapping m2(exts, sl);
+   Mapping m3(exts, sr);
+   OffsetMapping<Extents, 0> m4(exts, sl);
+ 
+   VERIFY(m1 == m2);
+   VERIFY(m1 != m3);
+   VERIFY(m1 == m4);
+ 
+ }
+ 
+ constexpr bool
+ test_eq_all()
+ {
+   test_eq_0d();
+   test_eq_1d();
+   test_eq_2d();
+   test_eq_zero();
+   return true;
+ }
+ 
+ template<typename M1, typename M2>
+   concept has_op_eq = requires (M1 m1, M2 m2)
+   {
+     { m1 == m2 } -> std::same_as<bool>;
+     { m2 == m1 } -> std::same_as<bool>;
+     { m1 != m2 } -> std::same_as<bool>;
+     { m2 != m1 } -> std::same_as<bool>;
+   };
+ 
+ constexpr void
+ test_has_op_eq()
+ {
+   using E1 = std::extents<int>;
+   using E2 = std::extents<int, 2>;
+   using E3 = std::extents<int, 1, 2>;
+   constexpr auto FT = std::array{false, true};
+ 
+   static_assert(!has_op_eq<
+       std::layout_stride::mapping<E1>, MappingLike<E1, FT, FT, FT>>);
+ 
+   static_assert(!has_op_eq<
+       std::layout_stride::mapping<E2>, MappingLike<E2, FT, FT, FT>>);
+ 
+   static_assert(!has_op_eq<
+       std::layout_stride::mapping<E3>, MappingLike<E3, FT, FT, FT>>);
+ }
+ 
+ int
+ main()
+ {
+   test_ctor_strides_all();
+   static_assert(test_ctor_strides_all());
+   test_mapping_like_convertible_all();
+   test_mapping_like_constructible_all();
+   test_stride_constructible_all();
+   test_is_exhaustive_all();
+   static_assert(test_is_exhaustive_all());
+   test_eq_all();
+   static_assert(test_eq_all());
+   test_has_op_eq();
+   return 0;
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/23_containers/vector/bool/format.cc gcc-16-20250615/libstdc++-v3/testsuite/23_containers/vector/bool/format.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/23_containers/vector/bool/format.cc	Sun Jun  8 22:32:50 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/23_containers/vector/bool/format.cc	Sun Jun 15 22:33:59 2025
*************** is_format_string_for(const char* str, Ar
*** 21,27 ****
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
  void
  test_format_string()
--- 21,27 ----
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
  void
  test_format_string()
*************** test_format_string()
*** 34,44 ****
    VERIFY( !is_format_string_for("{:{}}", v[0], 1.0f) );
  }
  
! template<typename _CharT>
  void
  test_output()
  {
!   std::basic_string<_CharT> res;
    size_t size = 0;
    std::vector<bool> v{true, false};
  
--- 34,44 ----
    VERIFY( !is_format_string_for("{:{}}", v[0], 1.0f) );
  }
  
! template<typename CharT>
  void
  test_output()
  {
!   std::basic_string<CharT> res;
    size_t size = 0;
    std::vector<bool> v{true, false};
  
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc gcc-16-20250615/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc	Sun Jun  8 22:32:50 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc	Sun Jun 15 22:33:59 2025
*************** test02()
*** 43,53 ****
    std::vector<PrivateDtor> v;
  }
  
! // { dg-error "value type is destructible" "" { target *-*-* } 0 }
  
  // In Debug Mode the "required from here" errors come from <debug/vector>
  // { dg-error "required from here" "" { target *-*-* } 182 }
- 
- // Needed because of PR c++/92193
- // { dg-prune-output "deleted function" }
- // { dg-prune-output "private within this context" }
--- 43,50 ----
    std::vector<PrivateDtor> v;
  }
  
! // { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
! // { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
  
  // In Debug Mode the "required from here" errors come from <debug/vector>
  // { dg-error "required from here" "" { target *-*-* } 182 }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc gcc-16-20250615/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc	Sun Jun  8 22:32:50 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc	Sun Jun 15 22:33:59 2025
*************** test02()
*** 42,49 ****
    std::vector<PrivateDtor> v; // { dg-error "here" }
  }
  
! // { dg-error "value type is destructible" "" { target *-*-* } 0 }
! 
! // Needed because of PR c++/92193
! // { dg-prune-output "deleted function" }
! // { dg-prune-output "private within this context" }
--- 42,46 ----
    std::vector<PrivateDtor> v; // { dg-error "here" }
  }
  
! // { dg-error "deleted function .*DeletedDtor" "" { target *-*-* } 0 }
! // { dg-error "PrivateDtor.* is private" "" { target *-*-* } 0 }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/string_view.cc gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/string_view.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/string_view.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/string_view.cc	Sun Jun 15 22:33:59 2025
***************
*** 0 ****
--- 1,201 ----
+ // C++26 [istringstream.general]
+ 
+ // { dg-do run { target c++26 } }
+ 
+ #include <sstream>
+ #include <string>
+ #include <string_view>
+ #include <testsuite_allocator.h>
+ #include <testsuite_hooks.h>
+ 
+ // Check C++26 P2495 istringstream ctors and members str(s) that accept a
+ // string_view, or anything convertible to a string_view, in place of a
+ // string object. Mostly just verify plumbing.
+ 
+ #ifndef C
+ # define C char
+ # define L(a) a
+ #endif
+ 
+ using string = std::basic_string<C>;
+ using string_view = std::basic_string_view<C>;
+ using istringstream = std::basic_istringstream<C>;
+ 
+ struct convertible_to_string_view {
+   string s;
+   operator string_view() const { return s; }
+ };
+ 
+ const string str(L("This is a test string"));
+ convertible_to_string_view cstr{str};  // a copy
+ const convertible_to_string_view ccstr{str};  // another copy
+ 
+ template <typename istringstream = std::basic_istringstream<C>>
+ void
+ test01()
+ {
+   // Test C++26 constructor and str(s) taking a generalized string_view
+ 
+   static_assert(! requires { istringstream(1); },
+       "istringstream ctor should reject what cannot be converted to a string_view");
+   static_assert(! requires { istringstream().str(1); },
+       "istringstream::str(s) should reject what cannot be converted to a string_view");
+ 
+   static_assert(!std::is_convertible_v<string_view, istringstream>,
+       "istringstream(string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<const string_view, istringstream>,
+       "istringstream(string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<convertible_to_string_view, istringstream>,
+       "istringstream(convertible_to_string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<const convertible_to_string_view, istringstream>,
+       "istringstream(convertible_to_string_view, ios::openmode) is explicit");
+ 
+   {
+     istringstream istr(cstr);
+     VERIFY( istr.str() == cstr.s );
+     VERIFY( istr.get() == cstr.s[0] );
+   }
+   {
+     istringstream istr(ccstr);
+     VERIFY( istr.str() == ccstr.s );
+     VERIFY( istr.get() == ccstr.s[0] );
+   }
+   {
+     istringstream istr(cstr, std::ios_base::in);
+     VERIFY( istr.str() == cstr.s );
+     VERIFY( istr.get() == cstr.s[0] );
+     VERIFY( istr.rdbuf()->sputc('X') != 'X' );
+   }
+   {
+     istringstream istr(cstr, std::ios_base::out);
+     VERIFY( istr.str() == cstr.s );
+     VERIFY( istr.get() == cstr.s[0] );
+     VERIFY( istr.rdbuf()->sputc('X') == 'X' );
+   }
+ }
+ 
+ void
+ test02()
+ {
+   // Test various C++26 constructors taking string views
+   // and mix of other arguments
+ 
+   auto const mode = std::ios_base::in | std::ios_base::out;
+ 
+   {
+     // template <typename T>
+     // basic_istringstream(const T&, ios_base::openmode, const allocator_type&)
+ 
+     istringstream::allocator_type a;
+     {
+       istringstream istr(cstr, mode, a); // ={} checks for non-explicit ctor
+       VERIFY( istr.str() == cstr.s );
+     }
+     {
+       istringstream istr(cstr, std::ios::in, a);
+       VERIFY( istr.str() == cstr.s );
+       VERIFY( istr.get() == cstr.s[0] );
+       VERIFY( istr.rdbuf()->sputc('X') != 'X' );
+     }
+     {
+       istringstream istr(cstr, std::ios::out, a);
+       VERIFY( istr.str() == cstr.s );
+       VERIFY( istr.get() == cstr.s[0] );
+       VERIFY( istr.rdbuf()->sputc('X') == 'X' );
+     }
+   }
+ 
+   {
+     // template <typename T>
+     // basic_istringstream(const T&, ios_base::openmode)
+     {
+       istringstream istr(cstr, mode);
+       VERIFY( istr.str() == cstr.s );
+       VERIFY( istr.get() == cstr.s[0] );
+       VERIFY( istr.rdbuf()->sputc('X') == 'X' );
+     }
+     {
+       istringstream istr(cstr, std::ios::in);
+       VERIFY( istr.str() == cstr.s );
+       VERIFY( istr.get() == cstr.s[0] );
+       VERIFY( istr.rdbuf()->sputc('X') != 'X' );
+     }
+     {
+       istringstream istr(cstr, std::ios::out);
+       VERIFY( istr.str() == cstr.s );
+       VERIFY( istr.get() == cstr.s[0] );
+       VERIFY( istr.rdbuf()->sputc('X') == 'X' );
+     }
+   }
+ 
+   {
+     // template <typename T>
+     // explicit
+     // basic_istringstream(const T&, ios_base::openmode = ios_base::in)
+ 
+     istringstream istr(cstr);
+     VERIFY( istr.str() == cstr.s );
+     VERIFY( istr.get() == cstr.s[0] );
+     VERIFY( istr.rdbuf()->sputc('X') != 'X' );
+   }
+ }
+ 
+ using alloc_type = __gnu_test::uneq_allocator<C>;
+ 
+ template<typename Alloc, typename CC = typename Alloc::value_type>
+   using istringstream_with_alloc
+     = std::basic_istringstream<CC, std::char_traits<CC>, Alloc>;
+ 
+ void test03()
+ {
+   alloc_type a{1};
+   {
+     istringstream_with_alloc<alloc_type> istr(cstr, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( istr.rdbuf()->get_allocator() == a );
+ #endif
+     VERIFY( string_view{istr.str()} == cstr );
+     VERIFY( istr.get() == cstr.s[0] );
+   }
+   {
+     istringstream_with_alloc<alloc_type> istr(cstr, std::ios::in, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( istr.rdbuf()->get_allocator() == a );
+ #endif
+     VERIFY( string_view{istr.str()} == cstr );
+     VERIFY( istr.get() == cstr.s[0] );
+     VERIFY( istr.rdbuf()->sputc('X') != 'X' );
+   }
+   {
+     istringstream_with_alloc<alloc_type> istr(cstr, std::ios::out, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( istr.rdbuf()->get_allocator() == a );
+ #endif
+     VERIFY( string_view{istr.str()} == cstr );
+     VERIFY( istr.get() == cstr.s[0] );
+     VERIFY( istr.rdbuf()->sputc('X') == 'X' );
+   }
+ }
+ 
+ void test04()
+ {
+   {
+     istringstream istr;
+     istr.str( cstr );
+     VERIFY( istr.str() == cstr.s );
+   }
+   {
+     istringstream istr;
+     istr.str( ccstr );
+     VERIFY( istr.str() == ccstr.s );
+   }
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+   test04();
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_istringstream/cons/wchar_t/string_view.cc	Sun Jun 15 22:33:59 2025
***************
*** 0 ****
--- 1,6 ----
+ // C++26 [istringstream.general]
+ // { dg-do run { target c++26 } }
+ 
+ #define C wchar_t
+ #define L(a) L##a
+ #include "../char/string_view.cc"
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/string_view.cc gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/string_view.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/string_view.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/string_view.cc	Sun Jun 15 22:33:59 2025
***************
*** 0 ****
--- 1,200 ----
+ // C++26 [ostringstream.general]
+ 
+ // { dg-do run { target c++26 } }
+ 
+ #include <sstream>
+ #include <string>
+ #include <string_view>
+ #include <testsuite_allocator.h>
+ #include <testsuite_hooks.h>
+ 
+ // Check C++26 P2495 ostringstream ctors and members str(s) that accept a
+ // string_view, or anything convertible to a string_view, in place of a
+ // string object. Mostly just verify plumbing.
+ 
+ #ifndef C
+ # define C char
+ # define L(a) a
+ #endif
+ 
+ using string = std::basic_string<C>;
+ using string_view = std::basic_string_view<C>;
+ using ostringstream = std::basic_ostringstream<C>;
+ 
+ struct convertible_to_string_view {
+   string s;
+   operator string_view() const { return s; }
+ };
+ 
+ const string str(L("This is a test string"));
+ convertible_to_string_view cstr{str};  // a copy
+ const convertible_to_string_view ccstr{str};  // another copy
+ 
+ template <typename ostringstream = std::basic_ostringstream<C>>
+ void
+ test01()
+ {
+   // Test C++26 constructor and str(s) taking a generalized string_view
+ 
+   static_assert(! requires { ostringstream(1); },
+       "ostringstream ctor should reject what cannot be converted to a string_view");
+   static_assert(! requires { ostringstream().str(1); },
+       "ostringstream::str(s) should reject what cannot be converted to a string_view");
+ 
+   static_assert(!std::is_convertible_v<string_view, ostringstream>,
+       "ostringstream(string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<const string_view, ostringstream>,
+       "ostringstream(string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<convertible_to_string_view, ostringstream>,
+       "ostringstream(convertible_to_string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<const convertible_to_string_view, ostringstream>,
+       "ostringstream(convertible_to_string_view, ios::openmode) is explicit");
+ 
+   {
+     ostringstream ostrstr(cstr);
+     VERIFY( ostrstr.str() == cstr.s );
+     VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
+   }
+   {
+     ostringstream ostrstr(ccstr);
+     VERIFY( ostrstr.str() == ccstr.s );
+     VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
+   }
+   {
+     ostringstream ostrstr(cstr, std::ios_base::in);
+     VERIFY( ostrstr.str() == cstr.s );
+     VERIFY( ostrstr.rdbuf()->sgetc() == cstr.s[0]);
+     VERIFY( ostrstr.put('Y').rdstate() == ostrstr.goodbit );
+   }
+   {
+     ostringstream ostrstr(cstr, std::ios_base::out);
+     VERIFY( ostrstr.str() == cstr.s );
+     VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
+     VERIFY( ostrstr.put('Y').rdstate() == ostrstr.goodbit );
+   }
+ }
+ 
+ void
+ test02()
+ {
+   // Test plumbing of C++26 various constructors taking string views
+ 
+   auto const mode = std::ios_base::in | std::ios_base::out;
+ 
+   {
+     ostringstream::allocator_type a;
+     // template <typename T>
+     // basic_ostringstream(const T&, ios_base::openmode, const allocator_type&)
+     {
+       ostringstream ostrstr(cstr, mode, a); // ={} checks for non-explicit ctor
+       VERIFY( ostrstr.str() == cstr.s );
+     }
+     {
+       ostringstream ostrstr(cstr, std::ios::in, a);
+       VERIFY( ostrstr.str() == cstr.s );
+       VERIFY( ostrstr.rdbuf()->sgetc() == cstr.s[0]);
+       VERIFY( ostrstr.put('Y').rdstate() == ostrstr.goodbit );
+     }
+     {
+       ostringstream ostrstr(cstr, std::ios::out, a);
+       VERIFY( ostrstr.str() == cstr.s );
+       VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
+       VERIFY( ostrstr.put('Y').rdstate() == ostrstr.goodbit );
+     }
+   }
+ 
+   {
+     // template <typename T>
+     // basic_ostringstream(const T&, ios_base::openmode)
+     {
+       ostringstream ostrstr(cstr, mode);
+       VERIFY( ostrstr.str() == cstr.s );
+       VERIFY( ostrstr.rdbuf()->sgetc() == cstr.s[0]);
+       VERIFY( ostrstr.put('Y').good() );
+     }
+     {
+       ostringstream ostrstr(cstr, std::ios::in);
+       VERIFY( ostrstr.str() == cstr.s );
+       VERIFY( ostrstr.rdbuf()->sgetc() == cstr.s[0]);
+       VERIFY( ostrstr.put('X').good() );
+     }
+     {
+       ostringstream ostrstr(cstr, std::ios::out);
+       VERIFY( ostrstr.str() == cstr.s );
+       VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
+       VERIFY( ostrstr.put('Y').rdstate() == ostrstr.goodbit );
+     }
+   }
+ 
+   {
+     // template <typename T>
+     // explicit
+     // basic_ostringstream(const T&, ios_base::openmode = ios_base::out)
+ 
+     ostringstream ostrstr(cstr);
+     VERIFY( ostrstr.str() == cstr.s );
+     VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
+     VERIFY( ostrstr.put('Y').good() );
+   }
+ }
+ 
+ using alloc_type = __gnu_test::uneq_allocator<C>;
+ 
+ template<typename Alloc, typename CC = typename Alloc::value_type>
+   using ostringstream_with_alloc
+     = std::basic_ostringstream<CC, std::char_traits<CC>, Alloc>;
+ 
+ void test03()
+ {
+   alloc_type a{1};
+   {
+     ostringstream_with_alloc<alloc_type> ostrstr(cstr, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( ostrstr.rdbuf()->get_allocator() == a );
+ #endif
+     VERIFY( string_view{ostrstr.str()} == cstr );
+     VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
+     VERIFY( ostrstr.put('X').good() );
+   }
+   {
+     ostringstream_with_alloc<alloc_type> ostrstr(cstr, std::ios::in, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( ostrstr.rdbuf()->get_allocator() == a );
+ #endif
+     VERIFY( string_view{ostrstr.str()} == cstr );
+     VERIFY( ostrstr.rdbuf()->sgetc() == cstr.s[0]);
+     VERIFY( ostrstr.put('X').good() );
+   }
+   {
+     ostringstream_with_alloc<alloc_type> ostrstr(cstr, std::ios::out, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( ostrstr.rdbuf()->get_allocator() == a );
+ #endif
+     VERIFY( string_view{ostrstr.str()} == cstr );
+     VERIFY( ostrstr.rdbuf()->sgetc() == ostringstream::traits_type::eof() );
+     VERIFY( ostrstr.put('Y').rdstate() == ostrstr.goodbit );
+   }
+ }
+ 
+ void test04()
+ {
+   {
+     ostringstream ostrstr;
+     ostrstr.str(cstr);
+     VERIFY( ostrstr.str() == cstr.s );
+   }
+   {
+     ostringstream ostrstr;
+     ostrstr.str(ccstr);
+     VERIFY( ostrstr.str() == ccstr.s );
+   }
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+   test04();
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/string_view.cc	Sun Jun 15 22:33:59 2025
***************
*** 0 ****
--- 1,6 ----
+ // C++26 [ostringstream.general]
+ // { dg-do run { target c++26 } }
+ 
+ #define C wchar_t
+ #define L(a) L##a
+ #include "../char/string_view.cc"
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/string_view.cc gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/string_view.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/string_view.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/string_view.cc	Sun Jun 15 22:34:00 2025
***************
*** 0 ****
--- 1,211 ----
+ // C++26 31.8.2.1 [stringbuf.general]
+ 
+ // { dg-do run { target c++26 } }
+ 
+ #include <sstream>
+ #include <string>
+ #include <string_view>
+ #include <testsuite_allocator.h>
+ #include <testsuite_hooks.h>
+ 
+ // Check C++26 P2495 stringbuf ctors and members str(s) that accept a
+ // string_view, or anything convertible to a string_view, in place of a
+ // string object.
+ 
+ #ifndef C
+ # define C char
+ # define L(a) a
+ #endif
+ 
+ using string = std::basic_string<C>;
+ using string_view = std::basic_string_view<C>;
+ using stringbuf = std::basic_stringbuf<C>;
+ 
+ struct convertible_to_string_view {
+   string s;
+   operator string_view() const { return s; }
+ };
+ 
+ const string str(L("This is a test string"));
+ convertible_to_string_view cstr{str};  // a copy
+ const convertible_to_string_view ccstr{str};  // another copy
+ 
+ template <typename stringbuf = std::basic_stringbuf<C>>
+ void
+ test01()
+ {
+   // Test C++26 constructor and str(s) taking a generalized string_view
+ 
+   static_assert(! requires { stringbuf(1); },
+       "stringbuf ctor should reject what cannot be converted to a string_view");
+   static_assert(! requires { stringbuf().str(1); },
+       "stringbuf::str(s) should reject what cannot be converted to a string_view");
+ 
+   static_assert(!std::is_convertible_v<string_view, stringbuf>,
+       "stringbuf(string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<const string_view, stringbuf>,
+       "stringbuf(string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<convertible_to_string_view, stringbuf>,
+       "stringbuf(convertible_to_string_view, ios::openmode) is explicit");
+   static_assert(
+       !std::is_convertible_v<const convertible_to_string_view, stringbuf>,
+       "stringbuf(convertible_to_string_view, ios::openmode) is explicit");
+ 
+   {
+     stringbuf sbuf(cstr);
+     VERIFY( sbuf.str() == cstr.s );
+     VERIFY( sbuf.sgetc() == cstr.s[0] );
+   }
+   {
+     stringbuf sbuf(ccstr);
+     VERIFY( sbuf.str() == ccstr.s );
+     VERIFY( sbuf.sgetc() == ccstr.s[0] );
+   }
+   {
+     stringbuf sbuf(cstr, std::ios_base::in);
+     VERIFY( sbuf.str() == cstr.s );
+     VERIFY( sbuf.sgetc() == cstr.s[0] );
+     VERIFY( sbuf.sputc('X') == stringbuf::traits_type::eof() );
+   }
+   {
+     stringbuf sbuf(ccstr, std::ios_base::in);
+     VERIFY( sbuf.str() == ccstr.s );
+     VERIFY( sbuf.sgetc() == ccstr.s[0] );
+     VERIFY( sbuf.sputc('X') == stringbuf::traits_type::eof() );
+   }
+   {
+     stringbuf sbuf(cstr, std::ios_base::out);
+     VERIFY( sbuf.str() == cstr.s );
+     VERIFY( sbuf.sputc('Y') == 'Y' );
+     VERIFY( sbuf.sgetc() == stringbuf::traits_type::eof() );
+   }
+   {
+     stringbuf sbuf(ccstr, std::ios_base::out);
+     VERIFY( sbuf.str() == ccstr.s );
+     VERIFY( sbuf.sputc('Y') == 'Y' );
+     VERIFY( sbuf.sgetc() == stringbuf::traits_type::eof() );
+   }
+ }
+ 
+ void
+ test02()
+ {
+   // Test C++26 constructors taking string views using different allocators
+ 
+   auto const mode = std::ios_base::in | std::ios_base::out;
+ 
+   {
+     // template <typename T>
+     // basic_stringbuf(const T&, ios_base::openmode, const allocator_type&)
+ 
+     stringbuf::allocator_type a;
+     {
+       stringbuf sbuf(cstr, mode, a); // ={} checks for non-explicit ctor
+       VERIFY( sbuf.str() == cstr.s );
+     }
+     {
+       stringbuf sbuf(cstr, std::ios::in, a);
+       VERIFY( sbuf.str() == cstr.s );
+       VERIFY( sbuf.sgetc() == cstr.s[0] );
+       VERIFY( sbuf.sputc('X') == stringbuf::traits_type::eof() );
+     }
+ 
+     {
+       stringbuf sbuf(cstr, std::ios::out, a);
+       VERIFY( sbuf.str() == cstr.s );
+       VERIFY( sbuf.sputc('X') == 'X' );
+       VERIFY( sbuf.sgetc() == stringbuf::traits_type::eof() );
+     }
+   }
+ 
+   {
+     // template <typename T>
+     // basic_stringbuf(const T&, ios_base::openmode)
+     {
+       stringbuf sbuf(cstr, mode);
+       VERIFY( sbuf.str() == cstr.s );
+     }
+     {
+       stringbuf sbuf(cstr, std::ios::in);
+       VERIFY( sbuf.str() == cstr.s );
+       VERIFY( sbuf.sgetc() == cstr.s[0] );
+       VERIFY( sbuf.sputc('X') == stringbuf::traits_type::eof() );
+     }
+     {
+       stringbuf sbuf(cstr, std::ios::out);
+       VERIFY( sbuf.str() == cstr.s );
+       VERIFY( sbuf.sputc('X') == 'X' );
+       VERIFY( sbuf.sgetc() == stringbuf::traits_type::eof() );
+     }
+   }
+ 
+   {
+     // template <typename T>
+     // explicit
+     // basic_stringbuf(const T&, ios_base::openmode = ios_base::in|ios_base::out)
+ 
+     stringbuf sbuf(cstr);
+     VERIFY( sbuf.str() == cstr.s );
+     VERIFY( sbuf.sgetc() == cstr.s[0] );
+   }
+ }
+ 
+ using alloc_type = __gnu_test::uneq_allocator<C>;
+ 
+ template<typename Alloc, typename CC = typename Alloc::value_type>
+   using stringbuf_with_alloc
+     = std::basic_stringbuf<CC, std::char_traits<CC>, Alloc>;
+ 
+ void test03()
+ {
+   alloc_type a{1};
+   {
+     stringbuf_with_alloc<alloc_type> sbuf(cstr, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( sbuf.get_allocator() == a );
+ #endif
+     VERIFY( string_view{sbuf.str()} == cstr );
+     VERIFY( sbuf.sgetc() == cstr.s[0] );
+   }
+   {
+     stringbuf_with_alloc<alloc_type> sbuf(cstr, std::ios::in, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( sbuf.get_allocator() == a );
+ #endif
+     VERIFY( string_view{sbuf.str()} == cstr );
+     VERIFY( sbuf.sgetc() == cstr.s[0] );
+     VERIFY( sbuf.sputc('X') == stringbuf::traits_type::eof() );
+   }
+   {
+     stringbuf_with_alloc<alloc_type> sbuf(cstr, std::ios::out, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( sbuf.get_allocator() == a );
+ #endif
+     VERIFY( string_view{sbuf.str()} == cstr );
+     VERIFY( sbuf.sputc('X') == 'X' );
+     VERIFY( sbuf.sgetc() == stringbuf::traits_type::eof() );
+   }
+ }
+ 
+ void test04()
+ {
+   {
+     stringbuf sbuf;
+     sbuf.str(cstr);
+     VERIFY( sbuf.str() == cstr.s );
+   }
+   {
+     stringbuf sbuf;
+     sbuf.str(ccstr);
+     VERIFY( sbuf.str() == ccstr.s );
+   }
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+   test04();
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/string_view.cc	Sun Jun 15 22:34:00 2025
***************
*** 0 ****
--- 1,6 ----
+ // C++26 [stringbuf.general]
+ // { dg-do run { target c++26 } }
+ 
+ #define C wchar_t
+ #define L(a) L##a
+ #include "../char/string_view.cc"
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/string_view.cc gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/string_view.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/string_view.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/string_view.cc	Sun Jun 15 22:34:00 2025
***************
*** 0 ****
--- 1,210 ----
+ // C++26 31.8.2.1 [stringstream.general]
+ 
+ // { dg-do run { target c++26 } }
+ 
+ #include <sstream>
+ #include <string>
+ #include <string_view>
+ #include <testsuite_allocator.h>
+ #include <testsuite_hooks.h>
+ 
+ // Check C++26 P2495 stringstream ctors and members str(s) that accept a
+ // string_view, or anything convertible to a string_view, in place of a
+ // string object. Mostly just verify plumbing.
+ 
+ #ifndef C
+ # define C char
+ # define L(a) a
+ #endif
+ 
+ using string = std::basic_string<C>;
+ using string_view = std::basic_string_view<C>;
+ using stringstream = std::basic_stringstream<C>;
+ 
+ struct convertible_to_string_view {
+   string s;
+   operator string_view() const { return s; }
+ };
+ 
+ const string str(L("This is a test string"));
+ convertible_to_string_view cstr{str};  // a copy
+ const convertible_to_string_view ccstr{str};  // another copy
+ 
+ template <typename stringstream = std::basic_stringstream<C>>
+ void
+ test01()
+ {
+   // Test C++26 constructor and str(s) taking a generalized string_view
+ 
+   static_assert(! requires { stringstream(1); },
+       "stringstream ctor should reject what cannot be converted to a string_view");
+   static_assert(! requires { stringstream().str(1); },
+       "stringstream::str(s) should reject what cannot be converted to a string_view");
+ 
+   static_assert(!std::is_convertible_v<string_view, stringstream>,
+       "stringstream(string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<const string_view, stringstream>,
+       "stringstream(string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<convertible_to_string_view, stringstream>,
+       "stringstream(convertible_to_string_view, ios::openmode) is explicit");
+   static_assert(!std::is_convertible_v<const convertible_to_string_view, stringstream>,
+       "stringstream(convertible_to_string_view, ios::openmode) is explicit");
+ 
+   {
+     stringstream strstr(cstr);
+     VERIFY( strstr.str() == cstr.s );
+     VERIFY( strstr.get() == cstr.s[0] );
+   }
+   {
+     stringstream strstr(ccstr);
+     VERIFY( strstr.str() == ccstr.s );
+     VERIFY( strstr.get() == ccstr.s[0] );
+   }
+   {
+     stringstream strstr(cstr, std::ios_base::in);
+     VERIFY( strstr.str() == cstr.s );
+     VERIFY( strstr.get() == cstr.s[0] );
+     VERIFY( strstr.put('X').rdstate() == strstr.badbit );
+   }
+   {
+     stringstream strstr(cstr, std::ios_base::out);
+     VERIFY( strstr.str() == cstr.s );
+     VERIFY( strstr.put('Y').good() );
+     VERIFY( strstr.get() == stringstream::traits_type::eof());
+   }
+ }
+ 
+ void
+ test02()
+ {
+   // Test C++26 various constructors taking string views
+ 
+   auto const mode = std::ios_base::in | std::ios_base::out;
+ 
+   {
+     // template <typename T>
+     // basic_stringstream(const T&, ios_base::openmode, const allocator_type&)
+ 
+     stringstream::allocator_type a;
+     {
+       stringstream strstr(cstr, mode, a); // ={} checks for non-explicit ctor
+       VERIFY( strstr.str() == cstr.s );
+     }
+     {
+       stringstream strstr(cstr, std::ios::in, a);
+       VERIFY( strstr.str() == cstr.s );
+       VERIFY( strstr.get() == cstr.s[0] );
+       VERIFY( strstr.put('X').rdstate() == strstr.badbit );
+     }
+     {
+       stringstream strstr(cstr, std::ios::out, a);
+       VERIFY( strstr.str() == cstr.s );
+       VERIFY( strstr.put('X').good() );
+       VERIFY( strstr.get() == stringstream::traits_type::eof());
+     }
+   }
+ 
+   {
+     // template <typename T>
+     // basic_stringstream(const T&, ios_base::openmode)
+ 
+     {
+       stringstream strstr(cstr, mode);
+       VERIFY( strstr.str() == cstr.s );
+       VERIFY( strstr.get() == cstr.s[0] );
+       VERIFY( strstr.put('X').good() );
+     }
+     {
+       stringstream strstr(cstr, std::ios::in);
+       VERIFY( strstr.str() == cstr.s );
+       VERIFY( strstr.get() == cstr.s[0] );
+       VERIFY( strstr.put('X').rdstate() == strstr.badbit );
+     }
+     {
+       stringstream strstr(cstr, std::ios::out);
+       VERIFY( strstr.str() == cstr.s );
+       VERIFY( strstr.put('X').good() );
+       VERIFY( strstr.get() == stringstream::traits_type::eof());
+     }
+   }
+ 
+   {
+     // template <typename T>
+     // explicit
+     // basic_stringstream(const T&, ios_base::openmode = ios_base::in|ios_base::out)
+ 
+     stringstream strstr(cstr);
+     VERIFY( strstr.str() == cstr.s );
+     VERIFY( strstr.get() == cstr.s[0] );
+     VERIFY( strstr.put('X').good() );
+   }
+ }
+ 
+ // A minimal allocator with no default constructor
+ template<typename T>
+   struct NoDefaultCons : __gnu_test::SimpleAllocator<T>
+   {
+     using __gnu_test::SimpleAllocator<T>::SimpleAllocator;
+     NoDefaultCons() = delete;
+     NoDefaultCons(int) { }
+   };
+ 
+ using alloc_type = __gnu_test::uneq_allocator<C>;
+ 
+ template<typename Alloc, typename CC = typename Alloc::value_type>
+   using stringstream_with_alloc
+     = std::basic_stringstream<CC, std::char_traits<CC>, Alloc>;
+ 
+ void test03()
+ {
+   alloc_type a{1};
+   {
+     stringstream_with_alloc<alloc_type> strstr(cstr, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( strstr.rdbuf()->get_allocator() == a );
+ #endif
+     VERIFY( string_view{strstr.str()} == cstr );
+     VERIFY( strstr.get() == cstr.s[0] );
+   }
+   {
+     stringstream_with_alloc<alloc_type> strstr(cstr, std::ios::in, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( strstr.rdbuf()->get_allocator() == a );
+ #endif
+     VERIFY( string_view{strstr.str()} == cstr );
+     VERIFY( strstr.get() == cstr.s[0] );
+     VERIFY( strstr.put('X').rdstate() == strstr.badbit );
+   }
+   {
+     stringstream_with_alloc<alloc_type> strstr(cstr, std::ios::out, a);
+ #if _GLIBCXX_USE_CXX11_ABI
+     VERIFY( strstr.rdbuf()->get_allocator() == a );
+ #endif
+     VERIFY( string_view{strstr.str()} == cstr );
+     VERIFY( strstr.put('X').good() );
+     VERIFY( strstr.get() == stringstream::traits_type::eof());
+   }
+ }
+ 
+ void test04()
+ {
+   {
+     stringstream strstr;
+     strstr.str( cstr );
+     VERIFY( strstr.str() == cstr.s );
+   }
+   {
+     stringstream strstr;
+     strstr.str( ccstr );
+     VERIFY( strstr.str() == ccstr.s );
+   }
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+   test03();
+   test04();
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/27_io/basic_stringstream/cons/wchar_t/string_view.cc	Sun Jun 15 22:34:00 2025
***************
*** 0 ****
--- 1,6 ----
+ // C++26 [stringstream.general]
+ // { dg-do run { target c++26 } }
+ 
+ #define C wchar_t
+ #define L(a) L##a
+ #include "../char/string_view.cc"
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc	Sun Jun  8 22:32:51 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc	Sun Jun 15 22:34:00 2025
*************** using std::experimental::net::const_buff
*** 26,32 ****
  void
  test01()
  {
-   bool test __attribute__((unused)) = false;
    char c[4];
  
    mutable_buffer mb;
--- 26,31 ----
*************** test01()
*** 64,70 ****
  void
  test02()
  {
-   bool test __attribute__((unused)) = false;
    char c[4];
  
    const_buffer cb;
--- 63,68 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/buffer/const.cc gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/buffer/const.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/buffer/const.cc	Sun Jun  8 22:32:51 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/buffer/const.cc	Sun Jun 15 22:34:00 2025
*************** test01()
*** 50,56 ****
  void
  test02()
  {
-   bool test __attribute__((unused)) = false;
    char c[4];
  
    const_buffer b;
--- 50,55 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc	Sun Jun  8 22:32:51 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc	Sun Jun 15 22:34:00 2025
*************** test01()
*** 47,53 ****
  void
  test02()
  {
-   bool test __attribute__((unused)) = false;
    char c[4];
  
    mutable_buffer b;
--- 47,52 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/buffer/size.cc gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/buffer/size.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/buffer/size.cc	Sun Jun  8 22:32:51 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/buffer/size.cc	Sun Jun 15 22:34:00 2025
*************** using std::experimental::net::mutable_bu
*** 26,32 ****
  void
  test01()
  {
-   bool test __attribute__((unused)) = false;
    char c[4];
  
    mutable_buffer mb;
--- 26,31 ----
*************** test01()
*** 44,50 ****
  void
  test02()
  {
-   bool test __attribute__((unused)) = false;
    char c[32];
  
    std::vector<mutable_buffer> mv{ {c, 0}, {c, 32}, {c, 16}, {c, 3}, {c, 0} };
--- 43,48 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc	Sun Jun  8 22:32:51 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc	Sun Jun 15 22:34:00 2025
*************** using std::experimental::net::io_context
*** 27,34 ****
  void
  test01()
  {
-   bool test __attribute__((unused)) = false;
- 
    io_context ctx1, ctx2;
  
    system_timer timer1(ctx1);
--- 27,32 ----
*************** test01()
*** 54,61 ****
  void
  test02()
  {
-   bool test __attribute__((unused)) = false;
- 
    io_context ctx1, ctx2;
    auto t1 = system_timer::clock_type::now();
    auto t2 = t1 + system_timer::duration(10);
--- 52,57 ----
*************** test02()
*** 83,90 ****
  void
  test03()
  {
-   bool test __attribute__((unused)) = false;
- 
    io_context ctx1, ctx2;
    auto now = system_timer::clock_type::now();
    auto d1 = system_timer::duration(10);
--- 79,84 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc	Sun Jun  8 22:32:51 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc	Sun Jun 15 22:34:00 2025
*************** using std::experimental::net::io_context
*** 28,35 ****
  void
  test01()
  {
-   bool test __attribute__((unused)) = false;
- 
    std::error_code ec;
  
    io_context ctx;
--- 28,33 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc	Sun Jun  8 22:32:51 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc	Sun Jun 15 22:34:00 2025
*************** using std::error_code;
*** 29,36 ****
  void
  test01()
  {
-   bool test __attribute__((unused)) = false;
- 
    io_context ctx;
    error_code ec;
    bool complete = false;
--- 29,34 ----
*************** test01()
*** 57,64 ****
  void
  test02()
  {
-   bool test __attribute__((unused)) = false;
- 
    io_context ctx;
    error_code ec1, ec2;
  
--- 55,60 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc	Sun Jun 15 22:34:00 2025
*************** template<typename Ret, unsigned int Num>
*** 96,102 ****
    void
    test(const testcase_airy_ai<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 96,101 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc	Sun Jun 15 22:34:00 2025
*************** template<typename Ret, unsigned int Num>
*** 96,102 ****
    void
    test(const testcase_airy_bi<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 96,101 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc	Sun Jun 15 22:34:00 2025
*************** template<typename Ret, unsigned int Num>
*** 3820,3826 ****
    void
    test(const testcase_conf_hyperg<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 3820,3825 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc	Sun Jun 15 22:34:00 2025
*************** template<typename Ret, unsigned int Num>
*** 12293,12299 ****
    void
    test(const testcase_hyperg<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 12293,12298 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 2217,2223 ****
    void
    test(const testcase_assoc_laguerre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 2217,2222 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 1985,1991 ****
    void
    test(const testcase_assoc_legendre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 1985,1990 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc	Sun Jun 15 22:34:01 2025
*************** template<typename _Tp>
*** 37,43 ****
    void
    test_m_gt_l()
    {
-     bool test __attribute__((unused)) = true;
      for (auto l : {0u, 1u, 2u, 5u})
        for (auto m : {l + 1u, l + 2u})
  	for (auto i : {-2, -1, 0, 1, 2})
--- 37,42 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 261,267 ****
    void
    test(const testcase_beta<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 261,266 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 73,79 ****
    void
    test(const testcase_comp_ellint_1<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 73,78 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 73,79 ****
    void
    test(const testcase_comp_ellint_2<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 73,78 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 459,465 ****
    void
    test(const testcase_comp_ellint_3<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 459,464 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 702,708 ****
    void
    test(const testcase_cyl_bessel_i<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 702,707 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 735,741 ****
    void
    test(const testcase_cyl_bessel_j<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 735,740 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 746,752 ****
    void
    test(const testcase_cyl_bessel_k<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 746,751 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 779,785 ****
    void
    test(const testcase_cyl_neumann<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 779,784 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 459,465 ****
    void
    test(const testcase_ellint_1<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 459,464 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 459,465 ****
    void
    test(const testcase_ellint_2<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 459,464 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 6121,6127 ****
    void
    test(const testcase_ellint_3<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 6121,6126 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 168,174 ****
    void
    test(const testcase_expint<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 168,173 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 1904,1910 ****
    void
    test(const testcase_hermite<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 1904,1909 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 305,311 ****
    void
    test(const testcase_laguerre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 305,310 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 305,311 ****
    void
    test(const testcase_legendre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 305,310 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 273,279 ****
    void
    test(const testcase_riemann_zeta<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 273,278 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 504,510 ****
    void
    test(const testcase_sph_bessel<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 504,509 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 1985,1991 ****
    void
    test(const testcase_sph_legendre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 1985,1990 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc	Sun Jun 15 22:34:01 2025
*************** template<typename _Tp>
*** 37,43 ****
    void
    test_m_gt_l()
    {
-     bool test __attribute__((unused)) = true;
      for (auto l : {0u, 1u, 2u, 5u})
        for (auto m : {l + 1u, l + 2u})
  	for (auto i : {-2, -1, 0, 1, 2})
--- 37,42 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 554,560 ****
    void
    test(const testcase_sph_neumann<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 554,559 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/format/debug.cc gcc-16-20250615/libstdc++-v3/testsuite/std/format/debug.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/format/debug.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/format/debug.cc	Sun Jun 15 22:34:01 2025
*************** fdebug(std::wstring_view t)
*** 26,38 ****
  
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
! template<typename _CharT>
  void
  test_basic_escapes()
  {
!   std::basic_string<_CharT> res;
  
    const auto tab = WIDEN("\t");
    res = fdebug(tab);
--- 26,38 ----
  
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
! template<typename CharT>
  void
  test_basic_escapes()
  {
!   std::basic_string<CharT> res;
  
    const auto tab = WIDEN("\t");
    res = fdebug(tab);
*************** test_basic_escapes()
*** 71,81 ****
    VERIFY( res == WIDEN(R"('\'')") );
  }
  
! template<typename _CharT>
  void
  test_ascii_escapes()
  {
!   std::basic_string<_CharT> res;
  
    const auto in = WIDEN("\x10 abcde\x7f\t0123");
    res = fdebug(in);
--- 71,81 ----
    VERIFY( res == WIDEN(R"('\'')") );
  }
  
! template<typename CharT>
  void
  test_ascii_escapes()
  {
!   std::basic_string<CharT> res;
  
    const auto in = WIDEN("\x10 abcde\x7f\t0123");
    res = fdebug(in);
*************** test_ascii_escapes()
*** 88,98 ****
    VERIFY( res == WIDEN(R"('a')") );
  }
  
! template<typename _CharT>
  void
  test_extended_ascii()
  {
!   std::basic_string<_CharT> res;
  
    const auto in = WIDEN("Åëÿ");
    res = fdebug(in);
--- 88,98 ----
    VERIFY( res == WIDEN(R"('a')") );
  }
  
! template<typename CharT>
  void
  test_extended_ascii()
  {
!   std::basic_string<CharT> res;
  
    const auto in = WIDEN("Åëÿ");
    res = fdebug(in);
*************** test_extended_ascii()
*** 100,106 ****
  
    static constexpr bool __test_characters
  #if UNICODE_ENC
!     = sizeof(_CharT) >= 2;
  #else // ISO8859-1
      = true;
  #endif // UNICODE_ENC
--- 100,106 ----
  
    static constexpr bool __test_characters
  #if UNICODE_ENC
!     = sizeof(CharT) >= 2;
  #else // ISO8859-1
      = true;
  #endif // UNICODE_ENC
*************** test_extended_ascii()
*** 116,127 ****
    }
  }
  
! template<typename _CharT>
  void
  test_unicode_escapes()
  {
  #if UNICODE_ENC
!   std::basic_string<_CharT> res;
  
    const auto in = WIDEN(
      "\u008a"     // Cc, Control,             Line Tabulation Set,
--- 116,127 ----
    }
  }
  
! template<typename CharT>
  void
  test_unicode_escapes()
  {
  #if UNICODE_ENC
!   std::basic_string<CharT> res;
  
    const auto in = WIDEN(
      "\u008a"     // Cc, Control,             Line Tabulation Set,
*************** test_unicode_escapes()
*** 143,149 ****
    res = fdebug(in);
    VERIFY( res == out );
  
!   if constexpr (sizeof(_CharT) >= 2)
    {
      res = fdebug(in[0]);
      VERIFY( res == WIDEN(R"('\u{8a}')") );
--- 143,149 ----
    res = fdebug(in);
    VERIFY( res == out );
  
!   if constexpr (sizeof(CharT) >= 2)
    {
      res = fdebug(in[0]);
      VERIFY( res == WIDEN(R"('\u{8a}')") );
*************** test_unicode_escapes()
*** 157,163 ****
      VERIFY( res == WIDEN(R"('\u{2029}')") );
    }
  
!   if constexpr (sizeof(_CharT) >= 4)
    {
      res = fdebug(in[5]);
      VERIFY( res == WIDEN("'\U0001f984'") );
--- 157,163 ----
      VERIFY( res == WIDEN(R"('\u{2029}')") );
    }
  
!   if constexpr (sizeof(CharT) >= 4)
    {
      res = fdebug(in[5]);
      VERIFY( res == WIDEN("'\U0001f984'") );
*************** test_unicode_escapes()
*** 165,189 ****
  #endif // UNICODE_ENC
  }
  
! template<typename _CharT>
  void
  test_grapheme_extend()
  {
  #if UNICODE_ENC
!   std::basic_string<_CharT> res;
  
    const auto vin = WIDEN("o\u0302\u0323");
    res = fdebug(vin);
    VERIFY( res == WIDEN("\"o\u0302\u0323\"") );
  
!   std::basic_string_view<_CharT> in = WIDEN("\t\u0302\u0323");
    res = fdebug(in);
    VERIFY( res == WIDEN(R"("\t\u{302}\u{323}")") );
  
    res = fdebug(in.substr(1));
    VERIFY( res == WIDEN(R"("\u{302}\u{323}")") );
  
!   if constexpr (sizeof(_CharT) >= 2)
    {
      res = fdebug(in[1]);
      VERIFY( res == WIDEN(R"('\u{302}')") );
--- 165,189 ----
  #endif // UNICODE_ENC
  }
  
! template<typename CharT>
  void
  test_grapheme_extend()
  {
  #if UNICODE_ENC
!   std::basic_string<CharT> res;
  
    const auto vin = WIDEN("o\u0302\u0323");
    res = fdebug(vin);
    VERIFY( res == WIDEN("\"o\u0302\u0323\"") );
  
!   std::basic_string_view<CharT> in = WIDEN("\t\u0302\u0323");
    res = fdebug(in);
    VERIFY( res == WIDEN(R"("\t\u{302}\u{323}")") );
  
    res = fdebug(in.substr(1));
    VERIFY( res == WIDEN(R"("\u{302}\u{323}")") );
  
!   if constexpr (sizeof(CharT) >= 2)
    {
      res = fdebug(in[1]);
      VERIFY( res == WIDEN(R"('\u{302}')") );
*************** test_grapheme_extend()
*** 191,203 ****
  #endif // UNICODE_ENC
  }
  
! template<typename _CharT>
  void
  test_replacement_char()
  {
  #if UNICODE_ENC
!   std::basic_string<_CharT> repl = WIDEN("\uFFFD");
!   std::basic_string<_CharT> res = fdebug(repl);
    VERIFY( res == WIDEN("\"\uFFFD\"") );
  
    repl = WIDEN("\uFFFD\uFFFD");
--- 191,203 ----
  #endif // UNICODE_ENC
  }
  
! template<typename CharT>
  void
  test_replacement_char()
  {
  #if UNICODE_ENC
!   std::basic_string<CharT> repl = WIDEN("\uFFFD");
!   std::basic_string<CharT> res = fdebug(repl);
    VERIFY( res == WIDEN("\"\uFFFD\"") );
  
    repl = WIDEN("\uFFFD\uFFFD");
*************** test_ill_formed_utf32()
*** 268,280 ****
  #endif // UNICODE_ENC
  }
  
! template<typename _CharT>
  void
  test_fill()
  {
!   std::basic_string<_CharT> res;
  
!   std::basic_string_view<_CharT> in = WIDEN("a\t\x10\u00ad");
    res = std::format(WIDEN("{:10?}"), in.substr(0, 1));
    VERIFY( res == WIDEN(R"("a"       )") );
  
--- 268,280 ----
  #endif // UNICODE_ENC
  }
  
! template<typename CharT>
  void
  test_fill()
  {
!   std::basic_string<CharT> res;
  
!   std::basic_string_view<CharT> in = WIDEN("a\t\x10\u00ad");
    res = std::format(WIDEN("{:10?}"), in.substr(0, 1));
    VERIFY( res == WIDEN(R"("a"       )") );
  
*************** test_fill()
*** 299,309 ****
    VERIFY( res == WIDEN(R"(="\u{ad}"=)") );
  
    // width is 2
!   std::basic_string_view<_CharT> in2 = WIDEN("\u1100");
    res = std::format(WIDEN("{:*^10?}"), in2);
    VERIFY( res == WIDEN("***\"\u1100\"***") );
  
!   if constexpr (sizeof(_CharT) >= 2)
    {
      res = std::format(WIDEN("{:=^10?}"), in[3]);
      VERIFY( res == WIDEN(R"(='\u{ad}'=)") );
--- 299,309 ----
    VERIFY( res == WIDEN(R"(="\u{ad}"=)") );
  
    // width is 2
!   std::basic_string_view<CharT> in2 = WIDEN("\u1100");
    res = std::format(WIDEN("{:*^10?}"), in2);
    VERIFY( res == WIDEN("***\"\u1100\"***") );
  
!   if constexpr (sizeof(CharT) >= 2)
    {
      res = std::format(WIDEN("{:=^10?}"), in[3]);
      VERIFY( res == WIDEN(R"(='\u{ad}'=)") );
*************** test_fill()
*** 314,327 ****
  #endif // UNICODE_ENC
  }
  
! template<typename _CharT>
  void
  test_prec()
  {
!   std::basic_string<_CharT> res;
    // with ? escpaed presentation is copied to ouput, same as source
  
!   std::basic_string_view<_CharT> in = WIDEN("a\t\x10\u00ad");
    res = std::format(WIDEN("{:.2?}"), in.substr(0, 1));
    VERIFY( res == WIDEN(R"("a)") );
  
--- 314,327 ----
  #endif // UNICODE_ENC
  }
  
! template<typename CharT>
  void
  test_prec()
  {
!   std::basic_string<CharT> res;
    // with ? escpaed presentation is copied to ouput, same as source
  
!   std::basic_string_view<CharT> in = WIDEN("a\t\x10\u00ad");
    res = std::format(WIDEN("{:.2?}"), in.substr(0, 1));
    VERIFY( res == WIDEN(R"("a)") );
  
*************** test_prec()
*** 335,341 ****
    res = std::format(WIDEN("{:.10?}"), in.substr(3));
    VERIFY( res == WIDEN(R"("\u{ad}")") );
  
!   std::basic_string_view<_CharT> in2 = WIDEN("\u1100");
    res = std::format(WIDEN("{:.3?}"), in2);
    VERIFY( res == WIDEN("\"\u1100") );
  #endif // UNICODE_ENC
--- 335,341 ----
    res = std::format(WIDEN("{:.10?}"), in.substr(3));
    VERIFY( res == WIDEN(R"("\u{ad}")") );
  
!   std::basic_string_view<CharT> in2 = WIDEN("\u1100");
    res = std::format(WIDEN("{:.3?}"), in2);
    VERIFY( res == WIDEN("\"\u1100") );
  #endif // UNICODE_ENC
*************** private:
*** 759,796 ****
    std::formatter<T, CharT> under;
  };
  
! template<typename _CharT, typename StrT>
  void
  test_formatter_str()
  {
!   _CharT buf[]{ 'a', 'b', 'c', 0 };
    DebugWrapper<StrT> in{ buf };
!   std::basic_string<_CharT> res = std::format(WIDEN("{:?}"), in );
    VERIFY( res == WIDEN(R"("abc")") );
  }
  
! template<typename _CharT>
  void
  test_formatter_arr()
  {
!   std::basic_string<_CharT> res;
  
!   DebugWrapper<_CharT[3]> in3{ 'a', 'b', 'c' };
    res = std::format(WIDEN("{:?}"), in3 );
    VERIFY( res == WIDEN(R"("abc")") );
  
    // We print all characters, including null-terminator
!   DebugWrapper<_CharT[4]> in4{ 'a', 'b', 'c', 0 };
    res = std::format(WIDEN("{:?}"), in4 );
    VERIFY( res == WIDEN(R"("abc\u{0}")") );
  }
  
! template<typename _CharT, typename SrcT>
  void
  test_formatter_char()
  {
    DebugWrapper<SrcT> in{ 'a' };
!   std::basic_string<_CharT> res = std::format(WIDEN("{:?}"), in);
    VERIFY( res == WIDEN(R"('a')") );
  }
  
--- 759,796 ----
    std::formatter<T, CharT> under;
  };
  
! template<typename CharT, typename StrT>
  void
  test_formatter_str()
  {
!   CharT buf[]{ 'a', 'b', 'c', 0 };
    DebugWrapper<StrT> in{ buf };
!   std::basic_string<CharT> res = std::format(WIDEN("{:?}"), in );
    VERIFY( res == WIDEN(R"("abc")") );
  }
  
! template<typename CharT>
  void
  test_formatter_arr()
  {
!   std::basic_string<CharT> res;
  
!   DebugWrapper<CharT[3]> in3{ 'a', 'b', 'c' };
    res = std::format(WIDEN("{:?}"), in3 );
    VERIFY( res == WIDEN(R"("abc")") );
  
    // We print all characters, including null-terminator
!   DebugWrapper<CharT[4]> in4{ 'a', 'b', 'c', 0 };
    res = std::format(WIDEN("{:?}"), in4 );
    VERIFY( res == WIDEN(R"("abc\u{0}")") );
  }
  
! template<typename CharT, typename SrcT>
  void
  test_formatter_char()
  {
    DebugWrapper<SrcT> in{ 'a' };
!   std::basic_string<CharT> res = std::format(WIDEN("{:?}"), in);
    VERIFY( res == WIDEN(R"('a')") );
  }
  
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/format/formatter/120625.cc gcc-16-20250615/libstdc++-v3/testsuite/std/format/formatter/120625.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/format/formatter/120625.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/std/format/formatter/120625.cc	Sun Jun 15 22:34:01 2025
***************
*** 0 ****
--- 1,19 ----
+ // { dg-do compile { target c++20 } }
+ 
+ // Bug libstdc++/120625
+ // std::formatter<__disabled> specializations cause errors in user code
+ 
+ #include <format>
+ 
+ enum X { };
+ 
+ // A concept that cannot be used with incomplete types:
+ template<typename T>
+ concept is_X = !std::is_empty_v<T> && std::is_same_v<X, T>;
+ 
+ // A valid program-defined specialization:
+ template<typename T, typename C> requires is_X<T>
+ struct std::formatter<T, C> : std::formatter<int, C> { };
+ 
+ // Instantiate the program-defined formatter specialization:
+ auto s = sizeof(std::formatter<X, char>);
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/adaptors.cc gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/adaptors.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/adaptors.cc	Sun Jun 15 22:34:01 2025
*************** is_format_string_for(const char* str, Ar
*** 19,25 ****
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
  template<template<typename Tp> class Adaptor>
  void
--- 19,25 ----
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
  template<template<typename Tp> class Adaptor>
  void
*************** template<typename T>
*** 66,78 ****
  constexpr auto std::format_kind<NotFormattableCont<T>>
    = std::range_format::disabled;
  
! template<typename _CharT,
  	 template<typename Tp, typename Cont = std::vector<Tp>> class Adaptor>
  void
  test_output()
  {
    const std::vector<int> v{3, 2, 1};
!   std::basic_string<_CharT> res;
    Adaptor<int, std::vector<int>> q(std::from_range, v);
  
    res = std::format(WIDEN("{}"), q);
--- 66,78 ----
  constexpr auto std::format_kind<NotFormattableCont<T>>
    = std::range_format::disabled;
  
! template<typename CharT,
  	 template<typename Tp, typename Cont = std::vector<Tp>> class Adaptor>
  void
  test_output()
  {
    const std::vector<int> v{3, 2, 1};
!   std::basic_string<CharT> res;
    Adaptor<int, std::vector<int>> q(std::from_range, v);
  
    res = std::format(WIDEN("{}"), q);
*************** test_output()
*** 88,96 ****
    VERIFY( res == WIDEN("==[0x03, 0x02, 0x01]===") );
  
    // Sequence output is always used
!   Adaptor<_CharT, std::basic_string<_CharT>> qs(
      std::from_range,
!     std::basic_string_view<_CharT>(WIDEN("321")));
  
    res = std::format(WIDEN("{}"), qs);
    VERIFY( res == WIDEN("['3', '2', '1']") );
--- 88,96 ----
    VERIFY( res == WIDEN("==[0x03, 0x02, 0x01]===") );
  
    // Sequence output is always used
!   Adaptor<CharT, std::basic_string<CharT>> qs(
      std::from_range,
!     std::basic_string_view<CharT>(WIDEN("321")));
  
    res = std::format(WIDEN("{}"), qs);
    VERIFY( res == WIDEN("['3', '2', '1']") );
*************** test_output()
*** 114,126 ****
    res = std::format(WIDEN("{}"), mq);
    VERIFY( res == WIDEN("[3, 2, 1]") );
  
!   static_assert(!std::formattable<const Adaptor<MutFormat>, _CharT>);
  
!   static_assert(!std::formattable<Adaptor<NoFormat>, _CharT>);
!   static_assert(!std::formattable<const Adaptor<NoFormat>, _CharT>);
  
    // Formatter check if container is formattable, not container elements.
!   static_assert(!std::formattable<Adaptor<int, NotFormattableCont<int>>, _CharT>);
  }
  
  template<template<typename Tp, typename Cont = std::vector<Tp>> class Adaptor>
--- 114,126 ----
    res = std::format(WIDEN("{}"), mq);
    VERIFY( res == WIDEN("[3, 2, 1]") );
  
!   static_assert(!std::formattable<const Adaptor<MutFormat>, CharT>);
  
!   static_assert(!std::formattable<Adaptor<NoFormat>, CharT>);
!   static_assert(!std::formattable<const Adaptor<NoFormat>, CharT>);
  
    // Formatter check if container is formattable, not container elements.
!   static_assert(!std::formattable<Adaptor<int, NotFormattableCont<int>>, CharT>);
  }
  
  template<template<typename Tp, typename Cont = std::vector<Tp>> class Adaptor>
*************** test_adaptor()
*** 135,146 ****
    static_assert(!std::formattable<Adaptor<int>, char32_t>);
  }
  
! template<typename _CharT>
  void
  test_compare()
  {
    const std::vector<int> v{3, 2, 1};
!   std::basic_string<_CharT> res;
    std::priority_queue<int, std::vector<int>, std::greater<>> q(
       std::from_range, v);
  
--- 135,146 ----
    static_assert(!std::formattable<Adaptor<int>, char32_t>);
  }
  
! template<typename CharT>
  void
  test_compare()
  {
    const std::vector<int> v{3, 2, 1};
!   std::basic_string<CharT> res;
    std::priority_queue<int, std::vector<int>, std::greater<>> q(
       std::from_range, v);
  
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/formatter.cc gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/formatter.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/formatter.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/formatter.cc	Sun Jun 15 22:34:01 2025
***************
*** 6,12 ****
  #include <vector>
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
  template<typename T,
  	 template<typename, typename> class Formatter = std::range_formatter>
--- 6,12 ----
  #include <vector>
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
  template<typename T,
  	 template<typename, typename> class Formatter = std::range_formatter>
*************** struct std::formatter<MyVector<T, Format
*** 22,28 ****
  {
    constexpr formatter() noexcept
    {
-     using _CharT = CharT;
      _formatter.set_brackets(WIDEN("<"), WIDEN(">"));
      _formatter.set_separator(WIDEN("; "));
    }
--- 22,27 ----
*************** private:
*** 41,52 ****
    Formatter<T, CharT> _formatter;
  };
  
! template<typename _CharT, template<typename, typename> class Formatter>
  void
  test_default()
  {
    MyVector<int, Formatter> vec{1, 2, 3};
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{}"), vec);
    VERIFY( res == WIDEN("<1; 2; 3>") );
--- 40,51 ----
    Formatter<T, CharT> _formatter;
  };
  
! template<typename CharT, template<typename, typename> class Formatter>
  void
  test_default()
  {
    MyVector<int, Formatter> vec{1, 2, 3};
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{}"), vec);
    VERIFY( res == WIDEN("<1; 2; 3>") );
*************** test_default()
*** 93,105 ****
    VERIFY( res == WIDEN("< +1 ;  +2 ;  +3 >") );
  }
  
! template<typename _CharT, template<typename, typename> class Formatter>
  void
  test_override()
  {
!   MyVector<_CharT, Formatter> vc{'a', 'b', 'c', 'd'};
    MyVector<std::pair<int, int>, Formatter> vp{{1, 11}, {2, 21}};
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{:s}"), vc);
    VERIFY( res == WIDEN("abcd") );
--- 92,104 ----
    VERIFY( res == WIDEN("< +1 ;  +2 ;  +3 >") );
  }
  
! template<typename CharT, template<typename, typename> class Formatter>
  void
  test_override()
  {
!   MyVector<CharT, Formatter> vc{'a', 'b', 'c', 'd'};
    MyVector<std::pair<int, int>, Formatter> vp{{1, 11}, {2, 21}};
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{:s}"), vc);
    VERIFY( res == WIDEN("abcd") );
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/map.cc gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/map.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/map.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/map.cc	Sun Jun 15 22:34:01 2025
*************** bool is_range_formatter_spec_for(CharT c
*** 57,63 ****
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
  void
  test_format_string()
--- 57,63 ----
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
  void
  test_format_string()
*************** test_format_string()
*** 83,92 ****
    VERIFY( !is_format_string_for("{:{}m}", std::vector<std::pair<int, int>>(), 1.0f) );
  }
  
! template<typename _CharT, typename Range>
  void test_output(bool mapIsDefault)
  {
!   using Sv = std::basic_string_view<_CharT>;
    using Pt = std::ranges::range_value_t<Range>;
    using Ft = std::remove_cvref_t<std::tuple_element_t<0, Pt>>;
    using St = std::remove_cvref_t<std::tuple_element_t<1, Pt>>;
--- 83,92 ----
    VERIFY( !is_format_string_for("{:{}m}", std::vector<std::pair<int, int>>(), 1.0f) );
  }
  
! template<typename CharT, typename Range>
  void test_output(bool mapIsDefault)
  {
!   using Sv = std::basic_string_view<CharT>;
    using Pt = std::ranges::range_value_t<Range>;
    using Ft = std::remove_cvref_t<std::tuple_element_t<0, Pt>>;
    using St = std::remove_cvref_t<std::tuple_element_t<1, Pt>>;
*************** void test_output(bool mapIsDefault)
*** 94,100 ****
      return Range(s.data(), s.data() + s.size());
    };
  
!   std::basic_string<_CharT> res;
    size_t size = 0;
  
    Ft f1[]{1, 2, 3};
--- 94,100 ----
      return Range(s.data(), s.data() + s.size());
    };
  
!   std::basic_string<CharT> res;
    size_t size = 0;
  
    Ft f1[]{1, 2, 3};
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/sequence.cc gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/sequence.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/sequence.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/sequence.cc	Sun Jun 15 22:34:01 2025
*************** test_format_string()
*** 76,87 ****
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
! template<typename _CharT, typename Range, typename Storage>
  void test_output()
  {
!   using Sv = std::basic_string_view<_CharT>;
    using T = std::ranges::range_value_t<Range>;
    auto makeRange = [](Storage& s) -> Range {
      if constexpr (std::is_same_v<std::remove_cvref_t<Range>, Storage>)
--- 76,87 ----
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
! template<typename CharT, typename Range, typename Storage>
  void test_output()
  {
!   using Sv = std::basic_string_view<CharT>;
    using T = std::ranges::range_value_t<Range>;
    auto makeRange = [](Storage& s) -> Range {
      if constexpr (std::is_same_v<std::remove_cvref_t<Range>, Storage>)
*************** void test_output()
*** 91,97 ****
  		   std::ranges::data(s) + std::ranges::size(s));
    };
  
!   std::basic_string<_CharT> res;
    size_t size = 0;
  
    Storage v1{1, 2, 3};
--- 91,97 ----
  		   std::ranges::data(s) + std::ranges::size(s));
    };
  
!   std::basic_string<CharT> res;
    size_t size = 0;
  
    Storage v1{1, 2, 3};
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/string.cc gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/string.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/format/ranges/string.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/format/ranges/string.cc	Sun Jun 15 22:34:01 2025
*************** bool is_range_formatter_spec_for(CharT c
*** 48,54 ****
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
  void
  test_format_string()
--- 48,54 ----
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
  void
  test_format_string()
*************** test_format_string()
*** 81,94 ****
  template<typename Range>
  void test_output()
  {
!   using _CharT = std::ranges::range_value_t<Range>;
!   auto makeRange = [](std::basic_string<_CharT>& s) {
      return Range(s.data(), s.data() + s.size());
    };
!   std::basic_string<_CharT> res;
    size_t size = 0;
  
!   std::basic_string<_CharT> s1 = WIDEN("abcd");
    res = std::format(WIDEN("{}"), makeRange(s1));
    VERIFY( res == WIDEN("['a', 'b', 'c', 'd']") );
  
--- 81,94 ----
  template<typename Range>
  void test_output()
  {
!   using CharT = std::ranges::range_value_t<Range>;
!   auto makeRange = [](std::basic_string<CharT>& s) {
      return Range(s.data(), s.data() + s.size());
    };
!   std::basic_string<CharT> res;
    size_t size = 0;
  
!   std::basic_string<CharT> s1 = WIDEN("abcd");
    res = std::format(WIDEN("{}"), makeRange(s1));
    VERIFY( res == WIDEN("['a', 'b', 'c', 'd']") );
  
*************** void test_output()
*** 122,128 ****
    res = std::format(WIDEN("{:=^8s}"), makeRange(s1));
    VERIFY( res == WIDEN("==abcd==") );
  
!   std::basic_string<_CharT> s2(512, static_cast<_CharT>('a'));
    res = std::format(WIDEN("{:=^8s}"), makeRange(s2));
    VERIFY( res == s2 );
  
--- 122,128 ----
    res = std::format(WIDEN("{:=^8s}"), makeRange(s1));
    VERIFY( res == WIDEN("==abcd==") );
  
!   std::basic_string<CharT> s2(512, static_cast<CharT>('a'));
    res = std::format(WIDEN("{:=^8s}"), makeRange(s2));
    VERIFY( res == s2 );
  
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/format/tuple.cc gcc-16-20250615/libstdc++-v3/testsuite/std/format/tuple.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/format/tuple.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/format/tuple.cc	Sun Jun 15 22:34:01 2025
*************** is_format_string_for(const wchar_t* str,
*** 39,45 ****
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
  void
  test_format_string()
--- 39,45 ----
  }
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
  void
  test_format_string()
*************** test_format_string()
*** 62,74 ****
    VERIFY( !is_format_string_for("{:{}}", std::tuple<>(), 1.0f) );
  }
  
! template<typename _CharT>
  void test_multi()
  {
!   using Sv = std::basic_string_view<_CharT>;
!   using Str = std::basic_string<_CharT>;
  
!   std::basic_string<_CharT> res;
    std::size_t size = 0;
    std::tuple<int, Str, float> t1(1, WIDEN("test"), 2.1);
  
--- 62,74 ----
    VERIFY( !is_format_string_for("{:{}}", std::tuple<>(), 1.0f) );
  }
  
! template<typename CharT>
  void test_multi()
  {
!   using Sv = std::basic_string_view<CharT>;
!   using Str = std::basic_string<CharT>;
  
!   std::basic_string<CharT> res;
    std::size_t size = 0;
    std::tuple<int, Str, float> t1(1, WIDEN("test"), 2.1);
  
*************** void test_multi()
*** 122,131 ****
  
  }
  
! template<typename _CharT, typename Tuple>
  void test_empty()
  {
!   std::basic_string<_CharT> res;
  
    Tuple e1;
    res = std::format(WIDEN("{}"), e1);
--- 122,131 ----
  
  }
  
! template<typename CharT, typename Tuple>
  void test_empty()
  {
!   std::basic_string<CharT> res;
  
    Tuple e1;
    res = std::format(WIDEN("{}"), e1);
*************** void test_empty()
*** 141,153 ****
    VERIFY( res == WIDEN(R"(^^^^())") );
  }
  
! template<typename _CharT, typename Pair>
  void test_pair()
  {
    using Ft = std::remove_cvref_t<std::tuple_element_t<0, Pair>>;
    using St = std::remove_cvref_t<std::tuple_element_t<1, Pair>>;
  
!   std::basic_string<_CharT> res;
  
    Ft f1 = 1;
    St s1 = WIDEN("abc");
--- 141,153 ----
    VERIFY( res == WIDEN(R"(^^^^())") );
  }
  
! template<typename CharT, typename Pair>
  void test_pair()
  {
    using Ft = std::remove_cvref_t<std::tuple_element_t<0, Pair>>;
    using St = std::remove_cvref_t<std::tuple_element_t<1, Pair>>;
  
!   std::basic_string<CharT> res;
  
    Ft f1 = 1;
    St s1 = WIDEN("abc");
*************** struct std::formatter<MyPair<Pair>, Char
*** 187,193 ****
  {
    constexpr formatter() noexcept
    {
-     using _CharT = CharT;
      _formatter.set_brackets(WIDEN("<"), WIDEN(">"));
      _formatter.set_separator(WIDEN("; "));
    }
--- 187,192 ----
*************** private:
*** 206,216 ****
    std::formatter<Pair, CharT> _formatter;
  };
  
! template<typename _CharT, template<typename, typename> class PairT>
  void test_custom()
  {
!   std::basic_string<_CharT> res;
!   MyPair<PairT<int, const _CharT*>> c1(1, WIDEN("abc"));
  
    res = std::format(WIDEN("{}"), c1);
    VERIFY( res == WIDEN(R"(<1; "abc">)") );
--- 205,215 ----
    std::formatter<Pair, CharT> _formatter;
  };
  
! template<typename CharT, template<typename, typename> class PairT>
  void test_custom()
  {
!   std::basic_string<CharT> res;
!   MyPair<PairT<int, const CharT*>> c1(1, WIDEN("abc"));
  
    res = std::format(WIDEN("{}"), c1);
    VERIFY( res == WIDEN(R"(<1; "abc">)") );
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc gcc-16-20250615/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc	Sun Jun 15 22:34:01 2025
*************** static_assert(max_diff_t(max_size_t(1)
*** 400,405 ****
--- 400,412 ----
  			 << (numeric_limits<max_size_t>::digits-1))
  	      == numeric_limits<max_diff_t>::min());
  
+ // Verify that the types are structural types and can therefore be used
+ // as NTTP types.
+ template<max_size_t V> struct Su { static_assert(V*V == V+132); };
+ template<max_diff_t V> struct Ss { static_assert(V*V == V+132); };
+ template struct Su<12>;
+ template struct Ss<12>;
+ 
  int
  main()
  {
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/empty_spec.cc gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/empty_spec.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/empty_spec.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/empty_spec.cc	Sun Jun 15 22:34:01 2025
***************
*** 10,16 ****
  using namespace std::chrono;
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
  template<typename CharT, typename T>
  void
--- 10,16 ----
  using namespace std::chrono;
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
  template<typename CharT, typename T>
  void
*************** test_no_empty_spec()
*** 34,48 ****
    }
  }
  
! template<typename T, typename _CharT>
! void verify(const T& t, std::basic_string_view<_CharT> str)
  {
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{}"), t);
    VERIFY( res == str );
  
!   std::basic_stringstream<_CharT> os;
    os << t;
    res = std::move(os).str();
    VERIFY( res == str );
--- 34,48 ----
    }
  }
  
! template<typename T, typename CharT>
! void verify(const T& t, std::basic_string_view<CharT> str)
  {
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{}"), t);
    VERIFY( res == str );
  
!   std::basic_stringstream<CharT> os;
    os << t;
    res = std::move(os).str();
    VERIFY( res == str );
*************** template<typename T, typename CharT>
*** 52,62 ****
  void verify(const T& t, const CharT* str)
  { verify(t, std::basic_string_view<CharT>(str)); }
  
! template<typename _CharT>
  void
  test_padding()
  {
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{:5}"), day(2));
    VERIFY( res == WIDEN("02   ") );
--- 52,62 ----
  void verify(const T& t, const CharT* str)
  { verify(t, std::basic_string_view<CharT>(str)); }
  
! template<typename CharT>
  void
  test_padding()
  {
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{:5}"), day(2));
    VERIFY( res == WIDEN("02   ") );
*************** struct Rep
*** 114,122 ****
  
    friend auto operator<=>(Rep, Rep) = default;
  
!   template<typename _CharT>
!   friend std::basic_ostream<_CharT>&
!   operator<<(std::basic_ostream<_CharT>& os, const Rep& t)
    { return os << t.val << WIDEN("[via <<]"); }
  
    long val;
--- 114,122 ----
  
    friend auto operator<=>(Rep, Rep) = default;
  
!   template<typename CharT>
!   friend std::basic_ostream<CharT>&
!   operator<<(std::basic_ostream<CharT>& os, const Rep& t)
    { return os << t.val << WIDEN("[via <<]"); }
  
    long val;
*************** struct std::numeric_limits<Rep<Ret>>
*** 140,166 ****
    : std::numeric_limits<long>
  { };
  
! template<typename Ret, typename _CharT>
! struct std::formatter<Rep<Ret>, _CharT>
!   : std::formatter<long, _CharT>
  {
    template<typename Out>
!   typename std::basic_format_context<Out, _CharT>::iterator
!   format(const Rep<Ret>& t, std::basic_format_context<Out, _CharT>& ctx) const
    {
!     constexpr std::basic_string_view<_CharT> suffix = WIDEN("[via format]");
!     auto out = std::formatter<long, _CharT>::format(t.val, ctx);
      return std::ranges::copy(suffix, out).out;
    }
  };
  
  using deciseconds = duration<seconds::rep, std::deci>;
  
! template<typename _CharT>
  void
  test_duration()
  {
!   std::basic_string<_CharT> res;
  
    const milliseconds di(40);
    verify( di, WIDEN("40ms") );
--- 140,166 ----
    : std::numeric_limits<long>
  { };
  
! template<typename Ret, typename CharT>
! struct std::formatter<Rep<Ret>, CharT>
!   : std::formatter<long, CharT>
  {
    template<typename Out>
!   typename std::basic_format_context<Out, CharT>::iterator
!   format(const Rep<Ret>& t, std::basic_format_context<Out, CharT>& ctx) const
    {
!     constexpr std::basic_string_view<CharT> suffix = WIDEN("[via format]");
!     auto out = std::formatter<long, CharT>::format(t.val, ctx);
      return std::ranges::copy(suffix, out).out;
    }
  };
  
  using deciseconds = duration<seconds::rep, std::deci>;
  
! template<typename CharT>
  void
  test_duration()
  {
!   std::basic_string<CharT> res;
  
    const milliseconds di(40);
    verify( di, WIDEN("40ms") );
*************** test_duration()
*** 170,175 ****
--- 170,182 ----
    verify( -di, WIDEN("-40ms") );
    res = std::format(WIDEN("{:>6}"), -di);
    VERIFY( res == WIDEN(" -40ms") );
+ }
+ 
+ template<typename CharT>
+ void
+ test_duration_fp()
+ {
+   std::basic_string<CharT> res;
  
    const duration<double> df(11.22);
    verify( df, WIDEN("11.22s") );
*************** test_duration()
*** 179,191 ****
    verify( -df, WIDEN("-11.22s") );
    res = std::format(WIDEN("{:=^12}"), -df);
    VERIFY( res == WIDEN("==-11.22s===") );
  }
  
! template<typename _CharT>
  void
  test_duration_cust()
  {
!   std::basic_string<_CharT> res;
    const duration<char, std::ratio<1, 10>> charRep(123);
    verify( charRep, WIDEN("123ds") );
  
--- 186,202 ----
    verify( -df, WIDEN("-11.22s") );
    res = std::format(WIDEN("{:=^12}"), -df);
    VERIFY( res == WIDEN("==-11.22s===") );
+ 
+   // precision accepted but ignored
+   res = std::format(WIDEN("{:.6}"), df);
+   VERIFY( res == WIDEN("11.22s") );
  }
  
! template<typename CharT>
  void
  test_duration_cust()
  {
!   std::basic_string<CharT> res;
    const duration<char, std::ratio<1, 10>> charRep(123);
    verify( charRep, WIDEN("123ds") );
  
*************** hms(const duration<Rep, Period>& d)
*** 242,248 ****
    return hh_mm_ss<Dur>(duration_cast<Dur>(d));
  }
  
! template<typename _CharT>
  void
  test_hh_mm_ss()
  {
--- 253,259 ----
    return hh_mm_ss<Dur>(duration_cast<Dur>(d));
  }
  
! template<typename CharT>
  void
  test_hh_mm_ss()
  {
*************** test_hh_mm_ss()
*** 292,298 ****
  	  WIDEN("-14322:24:54.111222333") );
  }
  
! template<typename _CharT>
  void
  test_hh_mm_ss_cust()
  {
--- 303,347 ----
  	  WIDEN("-14322:24:54.111222333") );
  }
  
! template<typename CharT>
! void
! test_hh_mm_ss_fp()
! {
!   duration<double> dt = 22h + 24min + 54s + 111222333ns;
!   // period controls number of subseconds
!   verify( hms<nanoseconds>(dt),
! 	  WIDEN("22:24:54.111222333") );
!   verify( hms<microseconds>(dt),
! 	  WIDEN("22:24:54.111222") );
!   verify( hms<milliseconds>(dt),
! 	  WIDEN("22:24:54.111") );
!   verify( hms<deciseconds>(dt),
! 	  WIDEN("22:24:54.1") );
!   verify( hms<seconds>(dt),
! 	  WIDEN("22:24:54") );
!   verify( hms<nanoseconds>(-dt),
! 	  WIDEN("-22:24:54.111222333") );
!   verify( hms<microseconds>(-dt),
! 	  WIDEN("-22:24:54.111222") );
!   verify( hms<milliseconds>(-dt),
! 	  WIDEN("-22:24:54.111") );
!   verify( hms<deciseconds>(-dt),
! 	  WIDEN("-22:24:54.1") );
!   verify( hms<seconds>(-dt),
! 	  WIDEN("-22:24:54") );
! 
!   // but hour and minutes are preserved
!   verify( hms<minutes>(dt),
! 	  WIDEN("22:24:54") );
!   verify( hms<hours>(dt),
! 	  WIDEN("22:24:54") );
!   verify( hms<minutes>(-dt),
! 	  WIDEN("-22:24:54") );
!   verify( hms<hours>(-dt),
! 	  WIDEN("-22:24:54") );
! }
! 
! template<typename CharT>
  void
  test_hh_mm_ss_cust()
  {
*************** void
*** 339,351 ****
  test_durations()
  {
    test_duration<CharT>();
    test_duration_cust<CharT>();
  
    test_hh_mm_ss<CharT>();
    test_hh_mm_ss_cust<CharT>();
  }
  
! template<typename _CharT>
  void
  test_day()
  {
--- 388,402 ----
  test_durations()
  {
    test_duration<CharT>();
+   test_duration_fp<CharT>();
    test_duration_cust<CharT>();
  
    test_hh_mm_ss<CharT>();
+   test_hh_mm_ss_fp<CharT>();
    test_hh_mm_ss_cust<CharT>();
  }
  
! template<typename CharT>
  void
  test_day()
  {
*************** test_day()
*** 357,363 ****
    verify( day(255), WIDEN("255 is not a valid day") );
  }
  
! template<typename _CharT>
  void
  test_month()
  {
--- 408,414 ----
    verify( day(255), WIDEN("255 is not a valid day") );
  }
  
! template<typename CharT>
  void
  test_month()
  {
*************** test_month()
*** 371,377 ****
    verify( month(255), WIDEN("255 is not a valid month") );
  }
  
! template<typename _CharT>
  void
  test_year()
  {
--- 422,428 ----
    verify( month(255), WIDEN("255 is not a valid month") );
  }
  
! template<typename CharT>
  void
  test_year()
  {
*************** test_year()
*** 386,392 ****
    verify( year(32767),  WIDEN( "32767") );
  }
  
! template<typename _CharT>
  void
  test_weekday()
  {
--- 437,443 ----
    verify( year(32767),  WIDEN( "32767") );
  }
  
! template<typename CharT>
  void
  test_weekday()
  {
*************** test_weekday()
*** 400,406 ****
    verify( weekday(255), WIDEN("255 is not a valid weekday") );
  }
  
! template<typename _CharT>
  void
  test_weekday_indexed()
  {
--- 451,457 ----
    verify( weekday(255), WIDEN("255 is not a valid weekday") );
  }
  
! template<typename CharT>
  void
  test_weekday_indexed()
  {
*************** test_weekday_indexed()
*** 415,421 ****
    verify( weekday(32)[7],  WIDEN("32 is not a valid weekday[7 is not a valid index]") );
  }
  
! template<typename _CharT>
  void
  test_weekday_last()
  {
--- 466,472 ----
    verify( weekday(32)[7],  WIDEN("32 is not a valid weekday[7 is not a valid index]") );
  }
  
! template<typename CharT>
  void
  test_weekday_last()
  {
*************** test_weekday_last()
*** 423,429 ****
    verify( weekday(9)[last], WIDEN("9 is not a valid weekday[last]") );
  }
  
! template<typename _CharT>
  void
  test_month_day()
  {
--- 474,480 ----
    verify( weekday(9)[last], WIDEN("9 is not a valid weekday[last]") );
  }
  
! template<typename CharT>
  void
  test_month_day()
  {
*************** test_month_day()
*** 433,439 ****
    verify( month(13)/32, WIDEN("13 is not a valid month/32 is not a valid day") );
  }
  
! template<typename _CharT>
  void
  test_month_day_last()
  {
--- 484,490 ----
    verify( month(13)/32, WIDEN("13 is not a valid month/32 is not a valid day") );
  }
  
! template<typename CharT>
  void
  test_month_day_last()
  {
*************** test_month_day_last()
*** 441,447 ****
    verify( month(14)/last, WIDEN("14 is not a valid month/last") );
  }
  
! template<typename _CharT>
  void
  test_month_weekday()
  {
--- 492,498 ----
    verify( month(14)/last, WIDEN("14 is not a valid month/last") );
  }
  
! template<typename CharT>
  void
  test_month_weekday()
  {
*************** test_month_weekday()
*** 457,463 ****
  	  WIDEN("13 is not a valid month/130 is not a valid weekday[0 is not a valid index]") );
  }
  
! template<typename _CharT>
  void
  test_month_weekday_last()
  {
--- 508,514 ----
  	  WIDEN("13 is not a valid month/130 is not a valid weekday[0 is not a valid index]") );
  }
  
! template<typename CharT>
  void
  test_month_weekday_last()
  {
*************** test_month_weekday_last()
*** 471,477 ****
  	  WIDEN("13 is not a valid month/10 is not a valid weekday[last]") );
  }
  
! template<typename _CharT>
  void
  test_year_month()
  {
--- 522,528 ----
  	  WIDEN("13 is not a valid month/10 is not a valid weekday[last]") );
  }
  
! template<typename CharT>
  void
  test_year_month()
  {
*************** test_year_month()
*** 485,491 ****
  	  WIDEN("-32768 is not a valid year/0 is not a valid month") );
  }
  
! template<typename _CharT>
  void
  test_year_month_day()
  {
--- 536,542 ----
  	  WIDEN("-32768 is not a valid year/0 is not a valid month") );
  }
  
! template<typename CharT>
  void
  test_year_month_day()
  {
*************** test_year_month_day()
*** 505,511 ****
  	  WIDEN("-32768-14-55 is not a valid date") );
  }
  
! template<typename _CharT>
  void
  test_year_month_last()
  {
--- 556,562 ----
  	  WIDEN("-32768-14-55 is not a valid date") );
  }
  
! template<typename CharT>
  void
  test_year_month_last()
  {
*************** test_year_month_last()
*** 519,525 ****
  	  WIDEN("-32768 is not a valid year/0 is not a valid month/last") );
  }
  
! template<typename _CharT>
  void
  test_year_month_weekday()
  {
--- 570,576 ----
  	  WIDEN("-32768 is not a valid year/0 is not a valid month/last") );
  }
  
! template<typename CharT>
  void
  test_year_month_weekday()
  {
*************** test_year_month_weekday()
*** 535,541 ****
  	  WIDEN("-32768 is not a valid year/13 is not a valid month/130 is not a valid weekday[0 is not a valid index]") );
  }
  
! template<typename _CharT>
  void
  test_year_month_weekday_last()
  {
--- 586,592 ----
  	  WIDEN("-32768 is not a valid year/13 is not a valid month/130 is not a valid weekday[0 is not a valid index]") );
  }
  
! template<typename CharT>
  void
  test_year_month_weekday_last()
  {
*************** wall_cast(const local_time<Dur2>& tp)
*** 593,606 ****
  using decadays = duration<days::rep, std::ratio_multiply<std::deca, days::period>>;
  using kilodays = duration<days::rep, std::ratio_multiply<std::kilo, days::period>>;
  
! template<typename _CharT, typename Clock>
  void
  test_time_point(bool daysAsTime)
  {
!   std::basic_string<_CharT> res;
  
    const auto lt = local_days(2024y/March/22) + 13h + 24min + 54s + 111222333ns;
!   auto strip_time = [daysAsTime](std::basic_string_view<_CharT> sv)
    { return daysAsTime ? sv : sv.substr(0, 10); };
  
    verify( wall_cast<Clock, nanoseconds>(lt),
--- 644,657 ----
  using decadays = duration<days::rep, std::ratio_multiply<std::deca, days::period>>;
  using kilodays = duration<days::rep, std::ratio_multiply<std::kilo, days::period>>;
  
! template<typename CharT, typename Clock>
  void
  test_time_point(bool daysAsTime)
  {
!   std::basic_string<CharT> res;
  
    const auto lt = local_days(2024y/March/22) + 13h + 24min + 54s + 111222333ns;
!   auto strip_time = [daysAsTime](std::basic_string_view<CharT> sv)
    { return daysAsTime ? sv : sv.substr(0, 10); };
  
    verify( wall_cast<Clock, nanoseconds>(lt),
*************** test_time_point(bool daysAsTime)
*** 623,633 ****
  	  strip_time(WIDEN("2022-01-08 00:00:00")) );
  }
  
! template<typename _CharT>
  void
  test_leap_second()
  {
!   std::basic_string<_CharT> res;
  
    const auto st = sys_days(2012y/June/30) + 23h + 59min + 59s + 111222333ns;
    auto tp = clock_cast<utc_clock>(st);
--- 674,684 ----
  	  strip_time(WIDEN("2022-01-08 00:00:00")) );
  }
  
! template<typename CharT>
  void
  test_leap_second()
  {
!   std::basic_string<CharT> res;
  
    const auto st = sys_days(2012y/June/30) + 23h + 59min + 59s + 111222333ns;
    auto tp = clock_cast<utc_clock>(st);
*************** auto
*** 649,655 ****
  make_zoned(const sys_time<Dur2>& st, const time_zone* tz)
  { return zoned_time<Dur>(tz, floor<Dur>(st)); }
  
! template<typename _CharT>
  void
  test_zoned_time()
  {
--- 700,706 ----
  make_zoned(const sys_time<Dur2>& st, const time_zone* tz)
  { return zoned_time<Dur>(tz, floor<Dur>(st)); }
  
! template<typename CharT>
  void
  test_zoned_time()
  {
*************** auto
*** 683,693 ****
  local_fmt(const local_time<Dur2>& lt, std::string* zone)
  { return local_time_format(floor<Dur>(lt), zone); }
  
! template<typename _CharT>
  void
  test_local_time_format()
  {
!   std::basic_string<_CharT> res;
  
    std::string abbrev = "Zone";
    const auto lt = local_days(2024y/March/22) + 13h + 24min + 54s + 111222333ns;
--- 734,744 ----
  local_fmt(const local_time<Dur2>& lt, std::string* zone)
  { return local_time_format(floor<Dur>(lt), zone); }
  
! template<typename CharT>
  void
  test_local_time_format()
  {
!   std::basic_string<CharT> res;
  
    std::string abbrev = "Zone";
    const auto lt = local_days(2024y/March/22) + 13h + 24min + 54s + 111222333ns;
*************** test_time_points()
*** 733,739 ****
  }
  
  #if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI
! template<typename _CharT>
  void
  test_sys_info()
  {
--- 784,790 ----
  }
  
  #if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI
! template<typename CharT>
  void
  test_sys_info()
  {
*************** test_sys_info()
*** 745,757 ****
      15min,
      "Zone"
    };
!   const std::basic_string_view<_CharT> txt
      = WIDEN("[2024-03-22 02:00:00,2025-04-11 23:15:10,02:13:04,15min,Zone]");
  
    verify( si, txt );
  
!   std::basic_string<_CharT> res;
!   std::basic_string_view<_CharT> sv;
  
    sv = res = std::format(WIDEN("{:65}"), si);
    VERIFY( sv.ends_with(WIDEN("    ")) );
--- 796,808 ----
      15min,
      "Zone"
    };
!   const std::basic_string_view<CharT> txt
      = WIDEN("[2024-03-22 02:00:00,2025-04-11 23:15:10,02:13:04,15min,Zone]");
  
    verify( si, txt );
  
!   std::basic_string<CharT> res;
!   std::basic_string_view<CharT> sv;
  
    sv = res = std::format(WIDEN("{:65}"), si);
    VERIFY( sv.ends_with(WIDEN("    ")) );
*************** test_sys_info()
*** 766,776 ****
    VERIFY( sv == txt );
  }
  
! template<typename _CharT>
  void test_local_info()
  {
!   using String = std::basic_string<_CharT>;
!   using StringView = std::basic_string_view<_CharT>;
  
    const sys_info s1
    {
--- 817,827 ----
    VERIFY( sv == txt );
  }
  
! template<typename CharT>
  void test_local_info()
  {
!   using String = std::basic_string<CharT>;
!   using StringView = std::basic_string_view<CharT>;
  
    const sys_info s1
    {
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/pr117214.cc gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/pr117214.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/pr117214.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/pr117214.cc	Sun Jun 15 22:34:01 2025
***************
*** 7,16 ****
  
  #include <chrono>
  #include <locale>
  #include <testsuite_hooks.h>
  
  void
! test_c()
  {
    const char *test_locales[] = {
      "aa_DJ.UTF-8",
--- 7,20 ----
  
  #include <chrono>
  #include <locale>
+ #include <span>
  #include <testsuite_hooks.h>
  
+ 
+ template<typename ChronoType>
  void
! test_locale_formats(const ChronoType& t,
! 		    std::span<const char* const> test_specifiers)
  {
    const char *test_locales[] = {
      "aa_DJ.UTF-8",
*************** test_c()
*** 19,33 ****
      "az_IR.UTF-8",
      "my_MM.UTF-8",
    };
-   std::chrono::sys_seconds t{std::chrono::seconds{1}};
  
    for (auto locale_name : test_locales)
    {
!     auto s = std::format(std::locale(locale_name), "{:L%c}", t);
!     VERIFY( !s.empty() );
    }
  }
  
  #include <stdlib.h>
  #include <time.h>
  
--- 23,66 ----
      "az_IR.UTF-8",
      "my_MM.UTF-8",
    };
  
+   auto format_args = std::make_format_args(t);
    for (auto locale_name : test_locales)
    {
!     std::locale loc(locale_name);
!     for (auto specifier : test_specifiers)
!     {
!       auto s = std::vformat(loc, specifier, format_args);
!       VERIFY( !s.empty() );
!     }
    }
  }
  
+ void
+ test_locale_formats()
+ {
+   using namespace std::chrono;
+ 
+   const char* test_specifiers[] = {
+     "{:L%x}", "{:L%Ex}",
+     "{:L%c}", "{:L%Ec}",
+     "{:L%X}", "{:L%EX}",
+     "{:L%r}",
+   };
+   auto date_time_specifiers = std::span(test_specifiers);
+   auto date_specifiers = date_time_specifiers.subspan(0, 2);
+   auto time_specifiers = date_time_specifiers.subspan(4);
+ 
+   auto ymd = 2020y/November/12d;
+   test_locale_formats(ymd, date_specifiers);
+ 
+   auto tod = 25h + 10min + 12s;
+   test_locale_formats(tod, time_specifiers);
+ 
+   auto tp = sys_days(ymd) + tod;
+   test_locale_formats(tp, date_time_specifiers);
+ }
+ 
  #include <stdlib.h>
  #include <time.h>
  
*************** test_c_local()
*** 93,99 ****
  
  int main()
  {
!   test_c();
    test_c_zoned();
    test_c_local();
  }
--- 126,132 ----
  
  int main()
  {
!   test_locale_formats();
    test_c_zoned();
    test_c_local();
  }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/pr120114.cc gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/pr120114.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/pr120114.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/pr120114.cc	Sun Jun 15 22:34:01 2025
***************
*** 7,19 ****
  #include <testsuite_hooks.h>
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
! template<typename _CharT>
  void
  test_from_format_string()
  {
!   std::basic_string<_CharT> res;
    using namespace std::chrono_literals;
    auto date = 2025y/std::chrono::May/05d;
  
--- 7,19 ----
  #include <testsuite_hooks.h>
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
! template<typename CharT>
  void
  test_from_format_string()
  {
!   std::basic_string<CharT> res;
    using namespace std::chrono_literals;
    auto date = 2025y/std::chrono::May/05d;
  
*************** test_from_format_string()
*** 27,50 ****
    VERIFY( res == WIDEN("====2025-05-05\U0001f921====") );
  }
  
! template<typename _CharT>
  void
  test_formatted_value()
  {
    // Custom time_put facet which returns Ideographic Telegraph Symbol
    // for given month for Om.
!   struct TimePut : std::time_put<_CharT>
    {
!     using iter_type = std::time_put<_CharT>::iter_type;
!     using char_type = std::time_put<_CharT>::char_type;
  
      iter_type
      do_put(iter_type out, std::ios_base& io, char_type fill, const tm* t,
  	   char format, char modifier) const override
      {
        if (format != 'm' && modifier != 'm')
! 	return std::time_put<_CharT>::do_put(out, io, fill, t, format, modifier);
!       std::basic_string_view<_CharT> str;
        switch (t->tm_mon)
         {
  	 case 0:
--- 27,50 ----
    VERIFY( res == WIDEN("====2025-05-05\U0001f921====") );
  }
  
! template<typename CharT>
  void
  test_formatted_value()
  {
    // Custom time_put facet which returns Ideographic Telegraph Symbol
    // for given month for Om.
!   struct TimePut : std::time_put<CharT>
    {
!     using iter_type = std::time_put<CharT>::iter_type;
!     using char_type = std::time_put<CharT>::char_type;
  
      iter_type
      do_put(iter_type out, std::ios_base& io, char_type fill, const tm* t,
  	   char format, char modifier) const override
      {
        if (format != 'm' && modifier != 'm')
! 	return std::time_put<CharT>::do_put(out, io, fill, t, format, modifier);
!       std::basic_string_view<CharT> str;
        switch (t->tm_mon)
         {
  	 case 0:
*************** test_formatted_value()
*** 89,95 ****
    };
    const std::locale loc(std::locale::classic(), new TimePut);
  
!   std::basic_string<_CharT> res;
  
    res = std::format(loc, WIDEN("{:<1L%Om}"), std::chrono::January);
    VERIFY( res == WIDEN("\u32C0") );
--- 89,95 ----
    };
    const std::locale loc(std::locale::classic(), new TimePut);
  
!   std::basic_string<CharT> res;
  
    res = std::format(loc, WIDEN("{:<1L%Om}"), std::chrono::January);
    VERIFY( res == WIDEN("\u32C0") );
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/pr120481.cc gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/pr120481.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/pr120481.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/pr120481.cc	Sun Jun 15 22:34:01 2025
***************
*** 7,21 ****
  #include <testsuite_hooks.h>
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(_CharT, S)
  
  using namespace std::chrono;
  
! template<typename _CharT>
  void
  test_year()
  {
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{:%Y}"), year(0));
    VERIFY( res == WIDEN("0000") );
--- 7,21 ----
  #include <testsuite_hooks.h>
  
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
! #define WIDEN(S) WIDEN_(CharT, S)
  
  using namespace std::chrono;
  
! template<typename CharT>
  void
  test_year()
  {
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{:%Y}"), year(0));
    VERIFY( res == WIDEN("0000") );
*************** test_year()
*** 77,87 ****
    VERIFY( res == WIDEN("01") );
  }
  
! template<typename _CharT>
  void
  test_month()
  {
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{:%m}"), month(5));
    VERIFY( res == WIDEN("05") );
--- 77,87 ----
    VERIFY( res == WIDEN("01") );
  }
  
! template<typename CharT>
  void
  test_month()
  {
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{:%m}"), month(5));
    VERIFY( res == WIDEN("05") );
*************** test_month()
*** 93,103 ****
    VERIFY( res == WIDEN("254") );
  }
  
! template<typename _CharT>
  void
  test_day()
  {
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{:%d}"), day(3));
    VERIFY( res == WIDEN("03") );
--- 93,103 ----
    VERIFY( res == WIDEN("254") );
  }
  
! template<typename CharT>
  void
  test_day()
  {
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{:%d}"), day(3));
    VERIFY( res == WIDEN("03") );
*************** test_day()
*** 118,128 ****
    VERIFY( res == WIDEN("214") );
  }
  
! template<typename _CharT>
  void
  test_date()
  {
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{:%F}"), year(-22)/month(10)/day(20));
    VERIFY( res == WIDEN("-0022-10-20") );
--- 118,128 ----
    VERIFY( res == WIDEN("214") );
  }
  
! template<typename CharT>
  void
  test_date()
  {
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{:%F}"), year(-22)/month(10)/day(20));
    VERIFY( res == WIDEN("-0022-10-20") );
*************** test_date()
*** 145,155 ****
    VERIFY( res == WIDEN("220/100/00") );
  }
  
! template<typename _CharT>
  void
  test_weekday()
  {
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{:%w}"), weekday(0));
    VERIFY( res == WIDEN("0") );
--- 145,155 ----
    VERIFY( res == WIDEN("220/100/00") );
  }
  
! template<typename CharT>
  void
  test_weekday()
  {
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{:%w}"), weekday(0));
    VERIFY( res == WIDEN("0") );
*************** test_weekday()
*** 187,197 ****
    VERIFY( res == WIDEN("202") );
  }
  
! template<typename _CharT>
  void
  test_hour()
  {
!   std::basic_string<_CharT> res;
  
    res = std::format(WIDEN("{:%H}"), 0h + 5min + 6s);
    VERIFY( res == WIDEN("00") );
--- 187,197 ----
    VERIFY( res == WIDEN("202") );
  }
  
! template<typename CharT>
  void
  test_hour()
  {
!   std::basic_string<CharT> res;
  
    res = std::format(WIDEN("{:%H}"), 0h + 5min + 6s);
    VERIFY( res == WIDEN("00") );
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/precision.cc gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/precision.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/precision.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/precision.cc	Sun Jun 15 22:34:01 2025
***************
*** 0 ****
--- 1,107 ----
+ // { dg-do run { target c++20 } }
+ 
+ #include <chrono>
+ #include <ranges>
+ #include <testsuite_hooks.h>
+ 
+ using namespace std::chrono;
+ 
+ #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
+ #define WIDEN(S) WIDEN_(CharT, S)
+ 
+ template<typename CharT>
+ void
+ test_empty()
+ {
+   std::basic_string<CharT> res;
+ 
+   const duration<double> d(33.111222);
+   res = std::format(WIDEN("{:.3}"), d);
+   VERIFY( res == WIDEN("33.1112s") );
+   res = std::format(WIDEN("{:.6}"), d);
+   VERIFY( res == WIDEN("33.1112s") );
+   res = std::format(WIDEN("{:.9}"), d);
+   VERIFY( res == WIDEN("33.1112s") );
+ 
+   // Uses ostream operator<<
+   const duration<double, std::nano> nd = d;
+   res = std::format(WIDEN("{:.3}"), nd);
+   VERIFY( res == WIDEN("3.31112e+10ns") );
+   res = std::format(WIDEN("{:.6}"), nd);
+   VERIFY( res == WIDEN("3.31112e+10ns") );
+   res = std::format(WIDEN("{:.9}"), nd);
+   VERIFY( res == WIDEN("3.31112e+10ns") );
+ }
+ 
+ template<typename CharT>
+ void
+ test_Q()
+ {
+   std::basic_string<CharT> res;
+ 
+   const duration<double> d(7.111222);
+   res = std::format(WIDEN("{:.3%Q}"), d);
+   VERIFY( res == WIDEN("7.111222") );
+   res = std::format(WIDEN("{:.6%Q}"), d);
+   VERIFY( res == WIDEN("7.111222") );
+   res = std::format(WIDEN("{:.9%Q}"), d);
+   VERIFY( res == WIDEN("7.111222") );
+ 
+   const duration<double, std::nano> nd = d;
+   res = std::format(WIDEN("{:.3%Q}"), nd);
+   VERIFY( res == WIDEN("7111222000") );
+   res = std::format(WIDEN("{:.6%Q}"), nd);
+   VERIFY( res == WIDEN("7111222000") );
+   res = std::format(WIDEN("{:.9%Q}"), nd);
+   VERIFY( res == WIDEN("7111222000") );
+ }
+ 
+ template<typename CharT>
+ void
+ test_S()
+ {
+   std::basic_string<CharT> res;
+ 
+   // Precision is ignored, but period affects output
+   const duration<double> d(5.111222);
+   res = std::format(WIDEN("{:.3%S}"), d);
+   VERIFY( res == WIDEN("05") );
+   res = std::format(WIDEN("{:.6%S}"), d);
+   VERIFY( res == WIDEN("05") );
+   res = std::format(WIDEN("{:.9%S}"), d);
+   VERIFY( res == WIDEN("05") );
+ 
+   const duration<double, std::milli> md = d;
+   res = std::format(WIDEN("{:.3%S}"), md);
+   VERIFY( res == WIDEN("05.111") );
+   res = std::format(WIDEN("{:.6%S}"), md);
+   VERIFY( res == WIDEN("05.111") );
+   res = std::format(WIDEN("{:.9%S}"), md);
+   VERIFY( res == WIDEN("05.111") );
+ 
+   const duration<double, std::nano> nd = d;
+   res = std::format(WIDEN("{:.3%S}"), nd);
+   VERIFY( res == WIDEN("05.111222000") );
+   res = std::format(WIDEN("{:.6%S}"), nd);
+   VERIFY( res == WIDEN("05.111222000") );
+   res = std::format(WIDEN("{:.9%S}"), nd);
+   VERIFY( res == WIDEN("05.111222000") );
+ }
+ 
+ template<typename CharT>
+ void
+ test_all()
+ {
+   test_empty<CharT>();
+   test_Q<CharT>();
+   test_S<CharT>();
+ }
+ 
+ int main()
+ {
+   test_all<char>();
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   test_all<wchar_t>();
+ #endif // _GLIBCXX_USE_WCHAR_T
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/whitespace.cc gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/whitespace.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/std/time/format/whitespace.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250615/libstdc++-v3/testsuite/std/time/format/whitespace.cc	Sun Jun 15 22:34:01 2025
***************
*** 0 ****
--- 1,56 ----
+ // { dg-do run { target c++20 } }
+ 
+ #include <chrono>
+ #include <testsuite_hooks.h>
+ 
+ using namespace std::chrono;
+ 
+ #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
+ #define WIDEN(S) WIDEN_(_CharT, S)
+ 
+ template<typename _CharT, typename ChronoType>
+ void
+ test(const ChronoType& ct)
+ {
+   std::basic_string<_CharT> res;
+   
+   res = std::format(WIDEN("{:%% %t %n  more text}"), ct);
+   VERIFY( res == WIDEN("% \t \n  more text") );
+ 
+   res = std::format(WIDEN("{:7%% %t %n}"), ct);
+   VERIFY( res == WIDEN("% \t \n  ") );
+ 
+   res = std::format(WIDEN("{:>6%% %t %n}"), ct);
+   VERIFY( res == WIDEN(" % \t \n") );
+ 
+   res = std::format(WIDEN("{:+>7%% %t %n}"), ct);
+   VERIFY( res == WIDEN("++% \t \n") );
+ 
+   res = std::format(WIDEN("{:=^7%% %t %n}"), ct);
+   VERIFY( res == WIDEN("=% \t \n=") );
+ }
+ 
+ template<typename CharT>
+ void
+ test_all()
+ {
+   test<CharT>(20s);
+   test<CharT>(10d);
+   test<CharT>(Monday);
+   test<CharT>(2020y/January/8);
+   test<CharT>(local_days(2020y/January/8));
+   test<CharT>(sys_days(2020y/January/8) + 13h + 10min + 5s);
+ #if _GLIBCXX_USE_CXX11_ABI || ! _GLIBCXX_USE_DUAL_ABI
+   test<CharT>(sys_info());
+   test<CharT>(local_info());
+ #endif
+ }
+ 
+ int main()
+ {
+   test_all<char>();
+ 
+ #ifdef _GLIBCXX_USE_WCHAR_T
+   test_all<wchar_t>();
+ #endif // _GLIBCXX_USE_WCHAR_T
+ }
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 2217,2223 ****
    void
    test(const testcase_assoc_laguerre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 2217,2222 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 1985,1991 ****
    void
    test(const testcase_assoc_legendre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 1985,1990 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc	Sun Jun 15 22:34:01 2025
*************** template<typename _Tp>
*** 36,42 ****
    void
    test_m_gt_l()
    {
-     bool test __attribute__((unused)) = true;
      unsigned int larr[4] = {0u, 1u, 2u, 5u};
      for (unsigned int l = 0; l < 4; ++l)
        for (unsigned int m = larr[l] + 1u; m <= larr[l] + 2u; ++m)
--- 36,41 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 261,267 ****
    void
    test(const testcase_beta<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 261,266 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 73,79 ****
    void
    test(const testcase_comp_ellint_1<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 73,78 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 73,79 ****
    void
    test(const testcase_comp_ellint_2<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 73,78 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 459,465 ****
    void
    test(const testcase_comp_ellint_3<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 459,464 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 3819,3825 ****
    void
    test(const testcase_conf_hyperg<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 3819,3824 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 702,708 ****
    void
    test(const testcase_cyl_bessel_i<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 702,707 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 735,741 ****
    void
    test(const testcase_cyl_bessel_j<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 735,740 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 746,752 ****
    void
    test(const testcase_cyl_bessel_k<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 746,751 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 779,785 ****
    void
    test(const testcase_cyl_neumann<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 779,784 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 459,465 ****
    void
    test(const testcase_ellint_1<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 459,464 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 459,465 ****
    void
    test(const testcase_ellint_2<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 459,464 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 6121,6127 ****
    void
    test(const testcase_ellint_3<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 6121,6126 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 168,174 ****
    void
    test(const testcase_expint<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 168,173 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 1904,1910 ****
    void
    test(const testcase_hermite<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 1904,1909 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 12292,12298 ****
    void
    test(const testcase_hyperg<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 12292,12297 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 305,311 ****
    void
    test(const testcase_laguerre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 305,310 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 305,311 ****
    void
    test(const testcase_legendre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 305,310 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 273,279 ****
    void
    test(const testcase_riemann_zeta<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 273,278 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 504,510 ****
    void
    test(const testcase_sph_bessel<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 504,509 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 1985,1991 ****
    void
    test(const testcase_sph_legendre<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 1985,1990 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc	Sun Jun 15 22:34:01 2025
*************** template<typename _Tp>
*** 36,42 ****
    void
    test_m_gt_l()
    {
-     bool test __attribute__((unused)) = true;
      unsigned int larr[4] = {0u, 1u, 2u, 5u};
      for (unsigned int l = 0; l < 4; ++l)
        for (unsigned int m = larr[l] + 1u; m <= larr[l] + 2u; ++m)
--- 36,41 ----
diff -Nrcpad gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
*** gcc-16-20250608/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc	Sun Jun  8 22:32:52 2025
--- gcc-16-20250615/libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc	Sun Jun 15 22:34:01 2025
*************** template<typename Ret, unsigned int Num>
*** 554,560 ****
    void
    test(const testcase_sph_neumann<Ret> (&data)[Num], Ret toler)
    {
-     bool test __attribute__((unused)) = true;
      const Ret eps = std::numeric_limits<Ret>::epsilon();
      Ret max_abs_diff = -Ret(1);
      Ret max_abs_frac = -Ret(1);
--- 554,559 ----
