diff -Nrcpad gcc-16-20250907/LAST_UPDATED gcc-16-20250914/LAST_UPDATED
*** gcc-16-20250907/LAST_UPDATED	Sun Sep  7 22:35:26 2025
--- gcc-16-20250914/LAST_UPDATED	Sun Sep 14 22:33:08 2025
***************
*** 1 ****
! Obtained from git: master revision 7e1143abd32cd40d24479d4c536b610ea9aad2db
--- 1 ----
! Obtained from git: master revision 38666cbccff5114e2f23930fae180f03c385eb45
diff -Nrcpad gcc-16-20250907/MD5SUMS gcc-16-20250914/MD5SUMS
*** gcc-16-20250907/MD5SUMS	Sun Sep  7 22:35:46 2025
--- gcc-16-20250914/MD5SUMS	Sun Sep 14 22:33:12 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20250907.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-20250914.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
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 25,31 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 6a2ee5ae3fbfb179d0795209bc2f8417  LAST_UPDATED
  8e87c2f135d3885c0640f7f2229b11ae  MAINTAINERS
  95166ed050922b15d201d1fa647b5872  Makefile.def
  7dcc983bfbcda6838b504185562b60a3  Makefile.in
--- 25,31 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 6bd9bd24ddc9fafad37ce16cfcab4a02  LAST_UPDATED
  8e87c2f135d3885c0640f7f2229b11ae  MAINTAINERS
  95166ed050922b15d201d1fa647b5872  Makefile.def
  7dcc983bfbcda6838b504185562b60a3  Makefile.in
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 154,160 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  9d9c5508a65175be5f9e10721e55ebbc  configure
  82e46c5338f6449fa0a149b6adf12797  configure.ac
! b0c848665663dec4d9a5bba5d2b9f386  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
--- 154,160 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  9d9c5508a65175be5f9e10721e55ebbc  configure
  82e46c5338f6449fa0a149b6adf12797  configure.ac
! 8e119660b4042b770bce3c9e77e49e56  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
*************** b24307ade4ab54c9ef8b4b0739084998  contri
*** 173,179 ****
  b4b9188e090097e5889401ebf2b3fc04  contrib/compare-debug
  510ac61e91e8dd9a7158daacc2d15f81  contrib/compare-lto
  51679964e74224734e766c8bb5a5d497  contrib/compareSumTests3
! fc5d12bb94b4667b18df90dda451f776  contrib/compare_tests
  4688ffec8f146aa47298dec84f2cb5cf  contrib/compare_two_ftime_report_sets
  ff41beb85e232853543074466232e9c0  contrib/config-list.mk
  d575264f7a1cdc4afba872bdd7d2e2dd  contrib/dg-cmp-results.sh
--- 173,179 ----
  b4b9188e090097e5889401ebf2b3fc04  contrib/compare-debug
  510ac61e91e8dd9a7158daacc2d15f81  contrib/compare-lto
  51679964e74224734e766c8bb5a5d497  contrib/compareSumTests3
! 036122880600e04a6dc9e6c49fcd070c  contrib/compare_tests
  4688ffec8f146aa47298dec84f2cb5cf  contrib/compare_two_ftime_report_sets
  ff41beb85e232853543074466232e9c0  contrib/config-list.mk
  d575264f7a1cdc4afba872bdd7d2e2dd  contrib/dg-cmp-results.sh
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 516,522 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! a116db614cc21ac7a1439b832bafd88c  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
! 8a1c37c28e73051e4f14e9de53f05c98  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
! ad46fe05b7e47559aa8e83f69c7b8562  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
! cbd0f9e406424a2f8cdc4139f3d79464  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 565,571 ****
  23d99b5becf269aa690a91a6f95228b9  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 10e845a8aa8bae6f04a6cc58c449fca2  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 565,571 ----
  23d99b5becf269aa690a91a6f95228b9  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 98fb3d7cd7d2e7cb055f7f27c40d464e  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
  1ddbf3755fbef2d964b15c7104b9937d  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 3ade0c7d664404c6006c38dccaa83475  gcc/ada/Makefile.rtl
  38343dc270740eef23a38cd3c750dde1  gcc/ada/accessibility.adb
  fbd3226b85f1e1cc6eb250fa51de4be1  gcc/ada/accessibility.ads
  80867b66cbed2dba054564ea216b3c66  gcc/ada/ada_get_targ.adb
--- 594,600 ----
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  1ddbf3755fbef2d964b15c7104b9937d  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 51276efe7210705735bde242953c21a7  gcc/ada/Makefile.rtl
  38343dc270740eef23a38cd3c750dde1  gcc/ada/accessibility.adb
  fbd3226b85f1e1cc6eb250fa51de4be1  gcc/ada/accessibility.ads
  80867b66cbed2dba054564ea216b3c66  gcc/ada/ada_get_targ.adb
*************** a07518144c5203a421dbc45a7b16e04f  gcc/ad
*** 602,608 ****
  30e7387695692ce78b78ca8165fa9561  gcc/ada/adabkend.ads
  3d1fcc88d6e5624970030c0a00ed8653  gcc/ada/adadecode.c
  066612d3b34078e2a26c00cff399ed82  gcc/ada/adadecode.h
! b0cd87f97b5a146eb21cb1ffdda62ce0  gcc/ada/adaint.c
  f6a5ac54108a44c0cdc3ee5c49d836ae  gcc/ada/adaint.h
  760bb6cd65cc72294ad54f492d54d482  gcc/ada/affinity.c
  a22ae88618cb2fc05cb66a79ed80efb5  gcc/ada/ali-util.adb
--- 602,608 ----
  30e7387695692ce78b78ca8165fa9561  gcc/ada/adabkend.ads
  3d1fcc88d6e5624970030c0a00ed8653  gcc/ada/adadecode.c
  066612d3b34078e2a26c00cff399ed82  gcc/ada/adadecode.h
! accf7e9d7174fedb8b25677d5957bd67  gcc/ada/adaint.c
  f6a5ac54108a44c0cdc3ee5c49d836ae  gcc/ada/adaint.h
  760bb6cd65cc72294ad54f492d54d482  gcc/ada/affinity.c
  a22ae88618cb2fc05cb66a79ed80efb5  gcc/ada/ali-util.adb
*************** f8207765beac36c54d43698a11140afa  gcc/ad
*** 613,621 ****
  3150d7e2a4f0018bb92d065ed3aedcc0  gcc/ada/argv-lynxos178-raven-cert.c
  5470386a6301c0323b6ee66cf06c1e42  gcc/ada/argv.c
  f2493dd09ce42a8a76ba82606b9e20e3  gcc/ada/aspects.adb
! e2eaeeeffdac88a55132441a8de89c4a  gcc/ada/aspects.ads
! d3970e0239fad08abd145f22829980bf  gcc/ada/atree.adb
! 14d6b3ce6a60df74711e12144f5f85a2  gcc/ada/atree.ads
  1a5f952bcb9d3c3529147729f3c4ef61  gcc/ada/atree.h
  557d2d802d51833ba752f2b05e30c591  gcc/ada/aux-io.c
  3ebdc86e765e129f74ed1b9a39f9e4b9  gcc/ada/back_end.adb
--- 613,621 ----
  3150d7e2a4f0018bb92d065ed3aedcc0  gcc/ada/argv-lynxos178-raven-cert.c
  5470386a6301c0323b6ee66cf06c1e42  gcc/ada/argv.c
  f2493dd09ce42a8a76ba82606b9e20e3  gcc/ada/aspects.adb
! 5aadfd1c7c46b94fbae4ef5ea3f8c9fb  gcc/ada/aspects.ads
! dd61750c7da30497eea05e15d8c28e7b  gcc/ada/atree.adb
! e06413c30b21b3ef9529c9b89592cca6  gcc/ada/atree.ads
  1a5f952bcb9d3c3529147729f3c4ef61  gcc/ada/atree.h
  557d2d802d51833ba752f2b05e30c591  gcc/ada/aux-io.c
  3ebdc86e765e129f74ed1b9a39f9e4b9  gcc/ada/back_end.adb
*************** ae344bff4834b9e2ef3c07f6dd01b59b  gcc/ad
*** 655,661 ****
  530290230985903c593cb9d92f5b47c8  gcc/ada/cal.c
  2acfb74c50c4563afcbe6a1bca3912a3  gcc/ada/casing.adb
  c576df64e1d6a2ac70b389cc10a835e6  gcc/ada/casing.ads
! 8bd3e47c661fa4203435999b11409955  gcc/ada/checks.adb
  f963647952269416533799c6a5117ea3  gcc/ada/checks.ads
  4c0942bba88f786dffff9a3575759026  gcc/ada/cio.c
  10b93c3ec680bbe04e70ea0e2fb09ac7  gcc/ada/clean.adb
--- 655,661 ----
  530290230985903c593cb9d92f5b47c8  gcc/ada/cal.c
  2acfb74c50c4563afcbe6a1bca3912a3  gcc/ada/casing.adb
  c576df64e1d6a2ac70b389cc10a835e6  gcc/ada/casing.ads
! b7fba43a3736cbff21d66ebddbb4f20a  gcc/ada/checks.adb
  f963647952269416533799c6a5117ea3  gcc/ada/checks.ads
  4c0942bba88f786dffff9a3575759026  gcc/ada/cio.c
  10b93c3ec680bbe04e70ea0e2fb09ac7  gcc/ada/clean.adb
*************** f963647952269416533799c6a5117ea3  gcc/ad
*** 663,677 ****
  8c73593e7f221d2f965d45654a94a636  gcc/ada/comperr.adb
  b819ca6fd93695993d2656d2edc4cc8c  gcc/ada/comperr.ads
  7f9ac0dab1302fd2696f52755a30ca56  gcc/ada/config-lang.in
! 0738f6221f00e89a133066ef572b4111  gcc/ada/contracts.adb
  08509704a245c7fb15ecf43481261825  gcc/ada/contracts.ads
  09a5213fb46479fc00bc1e507f07c02d  gcc/ada/csets.adb
  c8fc2a7d00b9bdf2dfb05cf0fc1c945f  gcc/ada/csets.ads
! 8071ec98accf7b2c543aa3542ca5ff00  gcc/ada/cstand.adb
  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
--- 663,677 ----
  8c73593e7f221d2f965d45654a94a636  gcc/ada/comperr.adb
  b819ca6fd93695993d2656d2edc4cc8c  gcc/ada/comperr.ads
  7f9ac0dab1302fd2696f52755a30ca56  gcc/ada/config-lang.in
! 9a65410828be7a88078cee6c3eb744f5  gcc/ada/contracts.adb
  08509704a245c7fb15ecf43481261825  gcc/ada/contracts.ads
  09a5213fb46479fc00bc1e507f07c02d  gcc/ada/csets.adb
  c8fc2a7d00b9bdf2dfb05cf0fc1c945f  gcc/ada/csets.ads
! 8d28b50ecad95e5e409fd9a212c5d385  gcc/ada/cstand.adb
  d5cdeee41f4cce7791ad47380e922eac  gcc/ada/cstand.ads
  1812c1cc859b55d34f8be50223970490  gcc/ada/cstreams.c
  453f1af3f48533612fca76f44afc9122  gcc/ada/ctrl_c.c
! 3a318928391ad055311f7a0a7b51412d  gcc/ada/debug.adb
  c13504ec17d3c6cecfc69808385f8273  gcc/ada/debug.ads
  d5598c70c14c05fdc521df6eaab25b4c  gcc/ada/debug_a.adb
  af445affacf9cfc99e3eb8ee82b8b7f0  gcc/ada/debug_a.ads
*************** a012e0cb5df366014b5a4988036a509a  gcc/ad
*** 680,686 ****
  7559c05099cde820bf8bebbceabccc04  gcc/ada/doc/gnat_rm.rst
  5bf95a83da0a709f6bdf91751e65e01f  gcc/ada/doc/gnat_rm/about_this_guide.rst
  95f36013115a0d2964f52a340712b135  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 80abf921d2520d1f9c1d9675040d6c6f  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  ae3d832d67eb0561de58deff709050db  gcc/ada/doc/gnat_rm/implementation_advice.rst
  4ef0af28325df2c1534cc73b9f4ed108  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
--- 680,686 ----
  7559c05099cde820bf8bebbceabccc04  gcc/ada/doc/gnat_rm.rst
  5bf95a83da0a709f6bdf91751e65e01f  gcc/ada/doc/gnat_rm/about_this_guide.rst
  95f36013115a0d2964f52a340712b135  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! a65b1c2f40e476c59c8d97102cc8e08c  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  ae3d832d67eb0561de58deff709050db  gcc/ada/doc/gnat_rm/implementation_advice.rst
  4ef0af28325df2c1534cc73b9f4ed108  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
*************** c7da61a05156d50b4888cdfaae4241d0  gcc/ad
*** 717,730 ****
  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
! 22b295629c6dacd0ec2e5475a6c7b4e6  gcc/ada/einfo-utils.adb
! fdeb0b11ed378cc91d79b0c88e2d35a0  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! c4d6a308f607de241f2d4298028642e1  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
! 3ee454270bfb935945b73e4d5397b3ab  gcc/ada/env.c
  4c5dce869517fc9bf7fc787d64cc9f30  gcc/ada/env.h
  7160c7331da775e057d2022e905a0767  gcc/ada/err_vars.ads
  8675f538842020e261f2081f1c21c995  gcc/ada/errid.adb
--- 717,730 ----
  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
! bf442e3478574e268c5c8caa98f59095  gcc/ada/einfo-utils.adb
! 76b28b93a0162cb31366aec9f77d5717  gcc/ada/einfo-utils.ads
  4f882a8b5e78253d5838b1a83e4af5bb  gcc/ada/einfo.adb
! 771439734d0a2dd0575149de22bf639f  gcc/ada/einfo.ads
  9fb4fb23a55081d07dc554eeb3253f91  gcc/ada/elists.adb
  1d7f8772477453dee268f8697433a589  gcc/ada/elists.ads
  2d6cb36d45dda0bf32d01725709f0007  gcc/ada/elists.h
! 095c9d69b542d45d1d8cfa69a244752a  gcc/ada/env.c
  4c5dce869517fc9bf7fc787d64cc9f30  gcc/ada/env.h
  7160c7331da775e057d2022e905a0767  gcc/ada/err_vars.ads
  8675f538842020e261f2081f1c21c995  gcc/ada/errid.adb
*************** e51a9a19184b2a73f27bb944998177e6  gcc/ad
*** 745,755 ****
  8745064abd42114e7f2f12824abd58f8  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! 591f2188cdbdb7a1f30c3cf79954d5a7  gcc/ada/exp_aggr.adb
  738bfb6669a1b696ef62dbecd858300a  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! f92320098f3bfbdb28074146d81a0f7e  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 ----
  8745064abd42114e7f2f12824abd58f8  gcc/ada/eval_fat.adb
  04c8399e5b8f5b974be325af4fc5793b  gcc/ada/eval_fat.ads
  5062429d8789169d01db0423985a5e99  gcc/ada/exit.c
! cf8fe4e5bcf592ace46c0384a04086cd  gcc/ada/exp_aggr.adb
  738bfb6669a1b696ef62dbecd858300a  gcc/ada/exp_aggr.ads
  f5cfbe3c80cc2c7ded2440a52b2b9cf0  gcc/ada/exp_atag.adb
  17872534d797a09463e33092ff3c4b9c  gcc/ada/exp_atag.ads
! 6ad3fc2b918c470a287a98513b937138  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,786 ****
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
  d037443d1b61c02110e124f3c701b449  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! c8d1200221e8c4f8aac632eac7c76637  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! 5ed207f23c17d3b5d6d3569d9a37e46c  gcc/ada/exp_ch4.adb
  ef982b9647c35560ae7ff386e547bd16  gcc/ada/exp_ch4.ads
! d8ee1a2097135d84f7788fd2ece2f305  gcc/ada/exp_ch5.adb
  f0c7dc0ade3f9639e946e709a9288f31  gcc/ada/exp_ch5.ads
! 3532d419e14634f719ed9b561064eac8  gcc/ada/exp_ch6.adb
  54a1ff576d38d91bbd44c24ee1a6a5ff  gcc/ada/exp_ch6.ads
! 74b1c0c8de6d21525f546baf9d52d9c3  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  ff5f2710ba824ff8ef979c388663bac2  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
! 2b1d2d9d9511bebd24062412e9cf01c3  gcc/ada/exp_ch9.adb
  e26475f86b42d59910afddd6b59f6f2f  gcc/ada/exp_ch9.ads
  f47ce79d25dbb4d2f5cc6c375ee8c103  gcc/ada/exp_code.adb
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
  c5f46927bfde5cfdba7070186c0a3890  gcc/ada/exp_dbug.adb
  7d55b512bc6b963b537cd44b692b8a54  gcc/ada/exp_dbug.ads
! 51e31af76a3ea7f661ce619e1314fc98  gcc/ada/exp_disp.adb
  7151f16c23b394a2f2eef990ebee4e20  gcc/ada/exp_disp.ads
  f8d7c73c2eb136405382e9f889d15683  gcc/ada/exp_dist.adb
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
--- 762,786 ----
  c6728830f0888dc3385e474b5925c01f  gcc/ada/exp_ch13.ads
  d037443d1b61c02110e124f3c701b449  gcc/ada/exp_ch2.adb
  476e299ea88b583859604d0071046143  gcc/ada/exp_ch2.ads
! 91f6084f52d1f03a797c1205b67c475b  gcc/ada/exp_ch3.adb
  53e0d855cd76aedff48a9e6266db49e8  gcc/ada/exp_ch3.ads
! d3dd50b6eb5a1e22c3948b1d4de14045  gcc/ada/exp_ch4.adb
  ef982b9647c35560ae7ff386e547bd16  gcc/ada/exp_ch4.ads
! a6101b8ff6b37d2b8018d7081f04151a  gcc/ada/exp_ch5.adb
  f0c7dc0ade3f9639e946e709a9288f31  gcc/ada/exp_ch5.ads
! 8ac910aacf65c2011d5ed9c92df01a3e  gcc/ada/exp_ch6.adb
  54a1ff576d38d91bbd44c24ee1a6a5ff  gcc/ada/exp_ch6.ads
! c57a021ec5e6cc614c6092d2b1d41b56  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
  ff5f2710ba824ff8ef979c388663bac2  gcc/ada/exp_ch8.adb
  c1f464d28d24669bfe156f13cabe5fca  gcc/ada/exp_ch8.ads
! 768f9b1c43ef40d2645d3c44c892d48a  gcc/ada/exp_ch9.adb
  e26475f86b42d59910afddd6b59f6f2f  gcc/ada/exp_ch9.ads
  f47ce79d25dbb4d2f5cc6c375ee8c103  gcc/ada/exp_code.adb
  983664237ff0b38442a164f60d531514  gcc/ada/exp_code.ads
  c5f46927bfde5cfdba7070186c0a3890  gcc/ada/exp_dbug.adb
  7d55b512bc6b963b537cd44b692b8a54  gcc/ada/exp_dbug.ads
! cc3726d13e05b448f2aafd3e2d176496  gcc/ada/exp_disp.adb
  7151f16c23b394a2f2eef990ebee4e20  gcc/ada/exp_disp.ads
  f8d7c73c2eb136405382e9f889d15683  gcc/ada/exp_dist.adb
  116919038aa6e7d0ec9ce9ab609f0bc2  gcc/ada/exp_dist.ads
*************** c48a8396237679c48ceef2c507661e1a  gcc/ad
*** 792,798 ****
  923affd79668e065bae4808313b11bf9  gcc/ada/exp_intr.ads
  6161c718f4bd4f605642bedae6f6642f  gcc/ada/exp_pakd.adb
  0e4de6363c3876604fc8fa97e180ddcf  gcc/ada/exp_pakd.ads
! 5b7dff93ba872a742a11fc88058deae6  gcc/ada/exp_prag.adb
  b971e56ee00efc31bd07e4f49eb4e97e  gcc/ada/exp_prag.ads
  6983963a291a366b979e48c5a8edaf02  gcc/ada/exp_put_image.adb
  c0f39ee1d515a13193e5726a49291c99  gcc/ada/exp_put_image.ads
--- 792,798 ----
  923affd79668e065bae4808313b11bf9  gcc/ada/exp_intr.ads
  6161c718f4bd4f605642bedae6f6642f  gcc/ada/exp_pakd.adb
  0e4de6363c3876604fc8fa97e180ddcf  gcc/ada/exp_pakd.ads
! b854c252a817c2248929d37e459d3e76  gcc/ada/exp_prag.adb
  b971e56ee00efc31bd07e4f49eb4e97e  gcc/ada/exp_prag.ads
  6983963a291a366b979e48c5a8edaf02  gcc/ada/exp_put_image.adb
  c0f39ee1d515a13193e5726a49291c99  gcc/ada/exp_put_image.ads
*************** c545b78124b9df301cdeef2979c79209  gcc/ad
*** 808,814 ****
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  a55ae41c0e68be209828e4229c2bbae3  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! 7d09f69be735e84962feb8b42c74adf0  gcc/ada/exp_util.adb
  f38c33811ff4495921f4fab803f1b045  gcc/ada/exp_util.ads
  46d0480b64db4c72cf1f08b18e3c33cf  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
--- 808,814 ----
  52a5741c37559d0398594d7baa1c99ac  gcc/ada/exp_tss.ads
  a55ae41c0e68be209828e4229c2bbae3  gcc/ada/exp_unst.adb
  d2f34876e61000e49299ef9b2569cbbf  gcc/ada/exp_unst.ads
! f607907bc5477bc0d63a0f652f28734d  gcc/ada/exp_util.adb
  f38c33811ff4495921f4fab803f1b045  gcc/ada/exp_util.ads
  46d0480b64db4c72cf1f08b18e3c33cf  gcc/ada/expander.adb
  53bb0eb5c4feebf8b5fbef639f5827bd  gcc/ada/expander.ads
*************** fdb9382a8288a3a5b805910a0a3615e8  gcc/ad
*** 823,862 ****
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! 26901331fec65afaf064fe92c4a61b4a  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  78dfce82b053fc553450c7ce6ee486d2  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
! 4c71fe1c01f1248f7bc0a69b8a6315e6  gcc/ada/gcc-interface/Make-lang.in
  c9363baf654f7376690ac9ea9b9c33d3  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
! b5542229d5cce6dd4fff7dc4ba8e789b  gcc/ada/gcc-interface/ada-tree.h
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! a0abdb1069422335edc0615d7c7cb49e  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
  43e609e56eeb0ff4e57be465cd17ddbc  gcc/ada/gcc-interface/lang.opt
  9b5bb16ec797188515b64efd5c00378a  gcc/ada/gcc-interface/lang.opt.urls
! 267766beb94b2d6cae2c0fd0cec080c4  gcc/ada/gcc-interface/misc.cc
  a74b4504c5ad4ed4e963f0691c289b40  gcc/ada/gcc-interface/system.ads
  b350a6fd65cafe8bd47dc42192437310  gcc/ada/gcc-interface/targtyps.cc
! 033219403b29b721305185ec9f56138e  gcc/ada/gcc-interface/trans.cc
! 00d80a399c475dcde9c4b8291d7cc480  gcc/ada/gcc-interface/utils.cc
! 7b0d708fd189018a87468ef844fc3811  gcc/ada/gcc-interface/utils2.cc
! e7b7cbfb520ac605f983bf6b77e26f50  gcc/ada/gen_il-fields.ads
! c4674dab93a542b7b760fd90931d7d88  gcc/ada/gen_il-gen-gen_entities.adb
! 28a01a5fa281c27bced23a05b683c39d  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
! a4ef8df72ec73a9d208be64172da03c2  gcc/ada/gen_il-internals.adb
  df0beb95a99f054fd498bb3fc0b8fccc  gcc/ada/gen_il-internals.ads
  6f79de1a05bf91310c857e93030b71e6  gcc/ada/gen_il-main.adb
! 8e01eef966574a548d971c02ad5b66be  gcc/ada/gen_il-types.ads
  12828a99220130b97b0ca7738966ce08  gcc/ada/gen_il.adb
  bea2267faa84573ddab9d7c7f7068fb7  gcc/ada/gen_il.ads
  a1d2619ccca21c06754f3cdd326876e1  gcc/ada/generate_minimal_reproducer.adb
--- 823,862 ----
  576d7463667fc4c859a05f9e19146427  gcc/ada/fname-uf.ads
  ec7cf235c00294fe67198b9bf264f3d9  gcc/ada/fname.adb
  5ef403dc7e6540ad58ec4ccec10de65c  gcc/ada/fname.ads
! f86a2443c94f9794c10aa3b130605810  gcc/ada/freeze.adb
  0cfb73b82bc6277eb801329c392229d2  gcc/ada/freeze.ads
  78dfce82b053fc553450c7ce6ee486d2  gcc/ada/frontend.adb
  6f776be1d84e9d8c996b576c19a4349f  gcc/ada/frontend.ads
! 5febf852ffe2ba81709e97acc0e9d3be  gcc/ada/gcc-interface/Make-lang.in
  c9363baf654f7376690ac9ea9b9c33d3  gcc/ada/gcc-interface/Makefile.in
  b02134e55a04db5c49a710da26b19be1  gcc/ada/gcc-interface/ada-builtin-types.def
  bc1175cb4ea0b9cb5f8751b3f0da7f74  gcc/ada/gcc-interface/ada-builtins.def
  9671d558ad879f15e73993538906ebda  gcc/ada/gcc-interface/ada-tree.def
! d65508e5b536f55deb4de2fdc2856370  gcc/ada/gcc-interface/ada-tree.h
  9225a8cf7f4c37e1ac2c83d2916a1bdf  gcc/ada/gcc-interface/ada.h
  910c4ca7f1543916fa6923fa18e926e0  gcc/ada/gcc-interface/config-lang.in
  27a97efc2691bb0e500931269e932bee  gcc/ada/gcc-interface/cuintp.cc
! 6c0477d8edd9e0bb2a21998b385bb41b  gcc/ada/gcc-interface/decl.cc
  fa1feb51010fc73b933487acbdcf85e8  gcc/ada/gcc-interface/gadaint.h
! 94972108c40b178c2d98932c5567a1ff  gcc/ada/gcc-interface/gigi.h
  8c3391ec25d2f8a3e26b0553d537d3e2  gcc/ada/gcc-interface/lang-specs.h
  43e609e56eeb0ff4e57be465cd17ddbc  gcc/ada/gcc-interface/lang.opt
  9b5bb16ec797188515b64efd5c00378a  gcc/ada/gcc-interface/lang.opt.urls
! 290c4679447ac74af6882b61677cb0ec  gcc/ada/gcc-interface/misc.cc
  a74b4504c5ad4ed4e963f0691c289b40  gcc/ada/gcc-interface/system.ads
  b350a6fd65cafe8bd47dc42192437310  gcc/ada/gcc-interface/targtyps.cc
! 02c305fed7c93280c51c13b79ab6b533  gcc/ada/gcc-interface/trans.cc
! 0159b329bd9dd42886ea4604f01490dd  gcc/ada/gcc-interface/utils.cc
! a7b042b07a181e3c69fbfc1de98030b8  gcc/ada/gcc-interface/utils2.cc
! 6cabdcfe5118ea48a58229c6acf04fb9  gcc/ada/gen_il-fields.ads
! 0dc2bcba4378b6839cffdf6478647736  gcc/ada/gen_il-gen-gen_entities.adb
! 0c3266d94a13670e5638216a39aedc06  gcc/ada/gen_il-gen-gen_nodes.adb
  fa07e4c6240b8cfff6d7d98112fee236  gcc/ada/gen_il-gen.adb
  c979a98c6b57608c79d578871fa0c58a  gcc/ada/gen_il-gen.ads
! 46571b946dd81b69b575b6c3618032df  gcc/ada/gen_il-internals.adb
  df0beb95a99f054fd498bb3fc0b8fccc  gcc/ada/gen_il-internals.ads
  6f79de1a05bf91310c857e93030b71e6  gcc/ada/gen_il-main.adb
! 8c6b2242472f0e1b3a9a24b609a86723  gcc/ada/gen_il-types.ads
  12828a99220130b97b0ca7738966ce08  gcc/ada/gen_il.adb
  bea2267faa84573ddab9d7c7f7068fb7  gcc/ada/gen_il.ads
  a1d2619ccca21c06754f3cdd326876e1  gcc/ada/generate_minimal_reproducer.adb
*************** a1d2619ccca21c06754f3cdd326876e1  gcc/ad
*** 864,879 ****
  0930ee3acae3e581cd90b4ea71d36c46  gcc/ada/get_scos.ads
  c30d04e8e72b6ecb391a5f74ed43baa6  gcc/ada/get_targ.adb
  1033bc14018eca0ac6056a8955c8e228  gcc/ada/get_targ.ads
! af88f36df7deb1b438126a4adbde3925  gcc/ada/ghost.adb
! c51cf753b6030a84065c5ae3ff7b4212  gcc/ada/ghost.ads
  6f5b1925a8a5b030703dd62acb3e37cc  gcc/ada/gnat-style.texi
! ebef4e0f05d0f0094f32bcd32535d620  gcc/ada/gnat1drv.adb
  9ed317231a93f12d370f13f5070cdaab  gcc/ada/gnat1drv.ads
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! 09338805f4f4eeb77c19b6db7211c2ca  gcc/ada/gnat_rm.texi
! 81f45e97d2c16fe64085b67469c03a94  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  aef32d71626b4170f80d299f2304d737  gcc/ada/gnatchop.adb
--- 864,879 ----
  0930ee3acae3e581cd90b4ea71d36c46  gcc/ada/get_scos.ads
  c30d04e8e72b6ecb391a5f74ed43baa6  gcc/ada/get_targ.adb
  1033bc14018eca0ac6056a8955c8e228  gcc/ada/get_targ.ads
! 2609d4f401bdd3665c7aaed414ca79d1  gcc/ada/ghost.adb
! 5e2e8493c183a79bf1f225fdb7f60e0a  gcc/ada/ghost.ads
  6f5b1925a8a5b030703dd62acb3e37cc  gcc/ada/gnat-style.texi
! be98a1e6f04922fb22c79c4540070fe5  gcc/ada/gnat1drv.adb
  9ed317231a93f12d370f13f5070cdaab  gcc/ada/gnat1drv.ads
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! b1885e0c887f8df229c408fb567666a7  gcc/ada/gnat_rm.texi
! 29fa074d045ab737a99e1ad833ffbf8e  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  aef32d71626b4170f80d299f2304d737  gcc/ada/gnatchop.adb
*************** ea767dec8fd43eff8cefde339b3a7d04  gcc/ad
*** 909,915 ****
  8c188167519fcde228e7406b86ad3c4f  gcc/ada/indepsw.ads
  bba82adc9fdf0fc509eaae42d763da79  gcc/ada/init.c
  c45e7a63e33e0bdb85ff3e50d0220aa4  gcc/ada/initialize.c
! ccdd23e44dfe2e6b8e78198004c59b87  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
  bba82adc9fdf0fc509eaae42d763da79  gcc/ada/init.c
  c45e7a63e33e0bdb85ff3e50d0220aa4  gcc/ada/initialize.c
! 5f614782720be2032d0febb5642f4b70  gcc/ada/inline.adb
  91cdabaa5b703885dad7b8dc5df17446  gcc/ada/inline.ads
  8d71a48789cbec10ceabfe68770803c1  gcc/ada/itypes.adb
  f62835b6268c11341ad683753a9d7acd  gcc/ada/itypes.ads
*************** abb502e358163dc5e01633496a0013fc  gcc/ad
*** 929,935 ****
  b6ab6aa41e1a35af588f7ac62bd68af4  gcc/ada/lib-writ.ads
  d1852c8e168ded223730761c0854b44f  gcc/ada/lib-xref-spark_specific.adb
  ec836ec1d277ea32256e18e07e29b00f  gcc/ada/lib-xref.adb
! 2011d6e281dc4b4ce8a65a6fbc96b843  gcc/ada/lib-xref.ads
  e15b36c98a01c7093ce126c5b2a938e6  gcc/ada/lib.adb
  acdce12dbd25ab577720670c9d1732e9  gcc/ada/lib.ads
  2d8ce9872083b9f641e37150d0bb18f1  gcc/ada/libgnarl/a-astaco.adb
--- 929,935 ----
  b6ab6aa41e1a35af588f7ac62bd68af4  gcc/ada/lib-writ.ads
  d1852c8e168ded223730761c0854b44f  gcc/ada/lib-xref-spark_specific.adb
  ec836ec1d277ea32256e18e07e29b00f  gcc/ada/lib-xref.adb
! d4f360a3abffdbf0ea415e2631c58045  gcc/ada/lib-xref.ads
  e15b36c98a01c7093ce126c5b2a938e6  gcc/ada/lib.adb
  acdce12dbd25ab577720670c9d1732e9  gcc/ada/lib.ads
  2d8ce9872083b9f641e37150d0bb18f1  gcc/ada/libgnarl/a-astaco.adb
*************** f2529d7d954706cdf38dcf20a54542d7  gcc/ad
*** 954,960 ****
  e6a287a75df88defdff2658cd134b9d6  gcc/ada/libgnarl/a-interr.ads
  fbddf70376fbd8225b17e6121af83b06  gcc/ada/libgnarl/a-intnam.ads
  6eb7816f16a165ccbc4beb28d22ca047  gcc/ada/libgnarl/a-intnam__aix.ads
! 41169eae70ef05cdca7e32e4aa4ecbb7  gcc/ada/libgnarl/a-intnam__bsd.ads
  5e72dc91a6157317fa4e36c89f156243  gcc/ada/libgnarl/a-intnam__darwin.ads
  a85b0b69ffb06ebc672b1060975d4240  gcc/ada/libgnarl/a-intnam__dummy.ads
  c7cd44a70fce2c44aae5e911bbed05ee  gcc/ada/libgnarl/a-intnam__hpux.ads
--- 954,960 ----
  e6a287a75df88defdff2658cd134b9d6  gcc/ada/libgnarl/a-interr.ads
  fbddf70376fbd8225b17e6121af83b06  gcc/ada/libgnarl/a-intnam.ads
  6eb7816f16a165ccbc4beb28d22ca047  gcc/ada/libgnarl/a-intnam__aix.ads
! cb9e81214c10eab6ae5a2a820823334b  gcc/ada/libgnarl/a-intnam__bsd.ads
  5e72dc91a6157317fa4e36c89f156243  gcc/ada/libgnarl/a-intnam__darwin.ads
  a85b0b69ffb06ebc672b1060975d4240  gcc/ada/libgnarl/a-intnam__dummy.ads
  c7cd44a70fce2c44aae5e911bbed05ee  gcc/ada/libgnarl/a-intnam__hpux.ads
*************** b11be01de6f079f6e83c844e9fdaf759  gcc/ad
*** 1089,1095 ****
  4dea01d120792b0f35f1aec470e7fdfb  gcc/ada/libgnarl/s-taprop__linux.adb
  19097481817acd9d3de1ed84aa731c02  gcc/ada/libgnarl/s-taprop__mingw.adb
  139d97e773970f5955d60a4af95755cb  gcc/ada/libgnarl/s-taprop__posix.adb
! 0b2fc8f721a6a0bc01298150b1c53ce7  gcc/ada/libgnarl/s-taprop__qnx.adb
  eba7cc72920c9e16506a4955d48cb118  gcc/ada/libgnarl/s-taprop__rtems.adb
  104d07db999e099651f78090c1aba2aa  gcc/ada/libgnarl/s-taprop__solaris.adb
  b39ef266fae76cd2e0212f3614e5df15  gcc/ada/libgnarl/s-taprop__vxworks.adb
--- 1089,1095 ----
  4dea01d120792b0f35f1aec470e7fdfb  gcc/ada/libgnarl/s-taprop__linux.adb
  19097481817acd9d3de1ed84aa731c02  gcc/ada/libgnarl/s-taprop__mingw.adb
  139d97e773970f5955d60a4af95755cb  gcc/ada/libgnarl/s-taprop__posix.adb
! 4d54a3a29c5651e04fc461129e1eb163  gcc/ada/libgnarl/s-taprop__qnx.adb
  eba7cc72920c9e16506a4955d48cb118  gcc/ada/libgnarl/s-taprop__rtems.adb
  104d07db999e099651f78090c1aba2aa  gcc/ada/libgnarl/s-taprop__solaris.adb
  b39ef266fae76cd2e0212f3614e5df15  gcc/ada/libgnarl/s-taprop__vxworks.adb
*************** c144ddc5a265902a3bde5b45c59f5673  gcc/ad
*** 1196,1202 ****
  77ae402d871ed473b27ebd363a5f9752  gcc/ada/libgnat/a-cbsyqu.adb
  93c3a22500d5f5f8e7dbc2cbe5f106ed  gcc/ada/libgnat/a-cbsyqu.ads
  aec41d0dc8752a7e61ffd8dbf240eecc  gcc/ada/libgnat/a-cdlili.adb
! feafe0e787115ecf109db021f1f88398  gcc/ada/libgnat/a-cdlili.ads
  d6afdab007e928c0b08ae1b1a6c5f539  gcc/ada/libgnat/a-cfdlli.ads
  445e0235bde25da54d7d302057d5c9e0  gcc/ada/libgnat/a-cfhama.ads
  6762ef57046ecf66345ccba7a3361fdd  gcc/ada/libgnat/a-cfhase.ads
--- 1196,1202 ----
  77ae402d871ed473b27ebd363a5f9752  gcc/ada/libgnat/a-cbsyqu.adb
  93c3a22500d5f5f8e7dbc2cbe5f106ed  gcc/ada/libgnat/a-cbsyqu.ads
  aec41d0dc8752a7e61ffd8dbf240eecc  gcc/ada/libgnat/a-cdlili.adb
! 32e3a0a646baf5e9657410d0ec82a9ac  gcc/ada/libgnat/a-cdlili.ads
  d6afdab007e928c0b08ae1b1a6c5f539  gcc/ada/libgnat/a-cfdlli.ads
  445e0235bde25da54d7d302057d5c9e0  gcc/ada/libgnat/a-cfhama.ads
  6762ef57046ecf66345ccba7a3361fdd  gcc/ada/libgnat/a-cfhase.ads
*************** d1ae04dc56ccbba0038600f2e2bc41fe  gcc/ad
*** 1229,1247 ****
  5abcb34a79a11c10a83a03e029fff24d  gcc/ada/libgnat/a-chzla1.ads
  8ec7266ebf791f97610d4686129af100  gcc/ada/libgnat/a-chzla9.ads
  9698171820e08c7ac92aac12d641f438  gcc/ada/libgnat/a-cidlli.adb
! 6a76ada09f5f7342aa9c1b20bd90b014  gcc/ada/libgnat/a-cidlli.ads
  8798d5e055eea93eb70b98c62c3fe5c3  gcc/ada/libgnat/a-cihama.adb
! 87c5a25780ccd0405b36eb4ea6b936a7  gcc/ada/libgnat/a-cihama.ads
  b0299538595207b1e6ba4305c043e666  gcc/ada/libgnat/a-cihase.adb
! 85a998bd74a23113ca5d444836595b34  gcc/ada/libgnat/a-cihase.ads
  15c61d7220f581219c7b8ade1a0894c6  gcc/ada/libgnat/a-cimutr.adb
! 7494b000e700238e5c91db4432c9eac6  gcc/ada/libgnat/a-cimutr.ads
  662527cf8705f553c701a91ececa7159  gcc/ada/libgnat/a-ciorma.adb
! 0108a581adec1d13bc8d06a1860801a1  gcc/ada/libgnat/a-ciorma.ads
  798b14d8f6a90bf1279ca929ae95ea7f  gcc/ada/libgnat/a-ciormu.adb
! c9c0116cf4b58e1c591f4ef85dfe487c  gcc/ada/libgnat/a-ciormu.ads
  9385d5efb9d022151edf1aa7de2e8cc2  gcc/ada/libgnat/a-ciorse.adb
! d83ce64a8cd2a14d638b2f58efffd92c  gcc/ada/libgnat/a-ciorse.ads
  d10cc7fa24959985d0423591d14ade72  gcc/ada/libgnat/a-clrefi.adb
  bb9ecae44d7df045ef196aea619eb80d  gcc/ada/libgnat/a-clrefi.ads
  bb7aa2b8f3fb3f971a1cb27147b3b0a6  gcc/ada/libgnat/a-coboho.adb
--- 1229,1247 ----
  5abcb34a79a11c10a83a03e029fff24d  gcc/ada/libgnat/a-chzla1.ads
  8ec7266ebf791f97610d4686129af100  gcc/ada/libgnat/a-chzla9.ads
  9698171820e08c7ac92aac12d641f438  gcc/ada/libgnat/a-cidlli.adb
! 2bd6522ed7f80e0e43d8c9f021bde0de  gcc/ada/libgnat/a-cidlli.ads
  8798d5e055eea93eb70b98c62c3fe5c3  gcc/ada/libgnat/a-cihama.adb
! b18e96e35fcb925ca150d3a1b32e279c  gcc/ada/libgnat/a-cihama.ads
  b0299538595207b1e6ba4305c043e666  gcc/ada/libgnat/a-cihase.adb
! ca8a149112ba305fa8ee892f586746a6  gcc/ada/libgnat/a-cihase.ads
  15c61d7220f581219c7b8ade1a0894c6  gcc/ada/libgnat/a-cimutr.adb
! 8b1c496d15fa7c31acedf4db9c1df927  gcc/ada/libgnat/a-cimutr.ads
  662527cf8705f553c701a91ececa7159  gcc/ada/libgnat/a-ciorma.adb
! 26c4bbb8e43ebe9f47924cff66ecb85a  gcc/ada/libgnat/a-ciorma.ads
  798b14d8f6a90bf1279ca929ae95ea7f  gcc/ada/libgnat/a-ciormu.adb
! bca00649ca5725e1a13e42a00df06907  gcc/ada/libgnat/a-ciormu.ads
  9385d5efb9d022151edf1aa7de2e8cc2  gcc/ada/libgnat/a-ciorse.adb
! 1e80052a124aa9c8b027d726862f2765  gcc/ada/libgnat/a-ciorse.ads
  d10cc7fa24959985d0423591d14ade72  gcc/ada/libgnat/a-clrefi.adb
  bb9ecae44d7df045ef196aea619eb80d  gcc/ada/libgnat/a-clrefi.ads
  bb7aa2b8f3fb3f971a1cb27147b3b0a6  gcc/ada/libgnat/a-coboho.adb
*************** f9f0e3e0da83a4ca464cd5f614fc5a5f  gcc/ad
*** 1255,1270 ****
  7da09f2b2fa733ca057555298977a2e2  gcc/ada/libgnat/a-cogeso.adb
  e5cf8961ebded6ad1a98120dfed5e5aa  gcc/ada/libgnat/a-cogeso.ads
  cccaaa3bdf69bd2091446eba51233ef3  gcc/ada/libgnat/a-cohama.adb
! 1b2a05cda1439d090cbf363478f249b1  gcc/ada/libgnat/a-cohama.ads
  a665e69f5655bef17619a72bf297bfff  gcc/ada/libgnat/a-cohase.adb
! c713fe37aba62a92a697ed573323dc0f  gcc/ada/libgnat/a-cohase.ads
  8e2fa86f7c968581fd7eeb6a6d275ede  gcc/ada/libgnat/a-cohata.ads
  2a0cc1e29cefb760cf1677525a312641  gcc/ada/libgnat/a-coinho.adb
! 7a3b5b5597c579484f7bfb2cd3988cf2  gcc/ada/libgnat/a-coinho.ads
  b86e1d0840c66fa3fa373d678cb65a23  gcc/ada/libgnat/a-coinho__shared.adb
! 0fac69b52c6e92d497f8a90fb16fc496  gcc/ada/libgnat/a-coinho__shared.ads
  2e4fca0cbe872ef19db3ed05e4877243  gcc/ada/libgnat/a-coinve.adb
! 3fbf5912c68e758be395c51bbcd02879  gcc/ada/libgnat/a-coinve.ads
  6dbaac9b33ce68ee1f07cfd6294d1421  gcc/ada/libgnat/a-colien.adb
  7faea62ecdcda01e375bf62178021992  gcc/ada/libgnat/a-colien.ads
  63923dda082059b61686fe49267af1fa  gcc/ada/libgnat/a-colire.adb
--- 1255,1270 ----
  7da09f2b2fa733ca057555298977a2e2  gcc/ada/libgnat/a-cogeso.adb
  e5cf8961ebded6ad1a98120dfed5e5aa  gcc/ada/libgnat/a-cogeso.ads
  cccaaa3bdf69bd2091446eba51233ef3  gcc/ada/libgnat/a-cohama.adb
! 6a223dbad689bc5dc9e18dcb06fb7041  gcc/ada/libgnat/a-cohama.ads
  a665e69f5655bef17619a72bf297bfff  gcc/ada/libgnat/a-cohase.adb
! 628d9091add86743759a31f785331850  gcc/ada/libgnat/a-cohase.ads
  8e2fa86f7c968581fd7eeb6a6d275ede  gcc/ada/libgnat/a-cohata.ads
  2a0cc1e29cefb760cf1677525a312641  gcc/ada/libgnat/a-coinho.adb
! 64791368ded3b5f9c81e99ac5c26585f  gcc/ada/libgnat/a-coinho.ads
  b86e1d0840c66fa3fa373d678cb65a23  gcc/ada/libgnat/a-coinho__shared.adb
! 05281efc68e32a4d0d2fceedb1206de9  gcc/ada/libgnat/a-coinho__shared.ads
  2e4fca0cbe872ef19db3ed05e4877243  gcc/ada/libgnat/a-coinve.adb
! b0391354444679bfac18cce7aea1e885  gcc/ada/libgnat/a-coinve.ads
  6dbaac9b33ce68ee1f07cfd6294d1421  gcc/ada/libgnat/a-colien.adb
  7faea62ecdcda01e375bf62178021992  gcc/ada/libgnat/a-colien.ads
  63923dda082059b61686fe49267af1fa  gcc/ada/libgnat/a-colire.adb
*************** b86e1d0840c66fa3fa373d678cb65a23  gcc/ad
*** 1272,1289 ****
  a85935467cf30ff32bc26677c0bb63e2  gcc/ada/libgnat/a-comlin.adb
  16175445e74d542a497bea1c8d6a9ad4  gcc/ada/libgnat/a-comlin.ads
  ae97d474872fe60157fb2d45c33d1ca2  gcc/ada/libgnat/a-comutr.adb
! 7453a3b1ec560bd7f2b84733e1439332  gcc/ada/libgnat/a-comutr.ads
  39bdaf4aeeed37537b6c19275a89edf7  gcc/ada/libgnat/a-conhel.adb
  c1664afdaf6327fe46438712972cbd75  gcc/ada/libgnat/a-conhel.ads
  38baf99435420fa514890cac49ee9242  gcc/ada/libgnat/a-contai.ads
  1f06209e0798f824ef446a7ef8ff768f  gcc/ada/libgnat/a-convec.adb
! 4ae2c4f647648dff7fd5cf9fda8493de  gcc/ada/libgnat/a-convec.ads
  11d4052564ef60377710b3e7dd2112fc  gcc/ada/libgnat/a-coorma.adb
! 60f7f0d2c6cd2a32dc8a482cbcacc717  gcc/ada/libgnat/a-coorma.ads
  3d29cf2814c39758dd2eb4021a292a8c  gcc/ada/libgnat/a-coormu.adb
! 7893ad6f407973de9406055f93881c52  gcc/ada/libgnat/a-coormu.ads
  30e205887637465ebffd6709fc8c1292  gcc/ada/libgnat/a-coorse.adb
! 7007fffcc311e643383fd4b8ba020e9c  gcc/ada/libgnat/a-coorse.ads
  3e21304d42a27e0a9435f0028ce57520  gcc/ada/libgnat/a-coprnu.adb
  8d84ab325b993703126bdfcdcc246f24  gcc/ada/libgnat/a-coprnu.ads
  10c28e7b50958e4a543701ca34df692d  gcc/ada/libgnat/a-costso.adb
--- 1272,1289 ----
  a85935467cf30ff32bc26677c0bb63e2  gcc/ada/libgnat/a-comlin.adb
  16175445e74d542a497bea1c8d6a9ad4  gcc/ada/libgnat/a-comlin.ads
  ae97d474872fe60157fb2d45c33d1ca2  gcc/ada/libgnat/a-comutr.adb
! 0d7d222a6957753146cc9a2f38dab198  gcc/ada/libgnat/a-comutr.ads
  39bdaf4aeeed37537b6c19275a89edf7  gcc/ada/libgnat/a-conhel.adb
  c1664afdaf6327fe46438712972cbd75  gcc/ada/libgnat/a-conhel.ads
  38baf99435420fa514890cac49ee9242  gcc/ada/libgnat/a-contai.ads
  1f06209e0798f824ef446a7ef8ff768f  gcc/ada/libgnat/a-convec.adb
! 229625dc7d6921347149f85f031f5731  gcc/ada/libgnat/a-convec.ads
  11d4052564ef60377710b3e7dd2112fc  gcc/ada/libgnat/a-coorma.adb
! 9d24f79ea4fc98e1ebc82efb897cb125  gcc/ada/libgnat/a-coorma.ads
  3d29cf2814c39758dd2eb4021a292a8c  gcc/ada/libgnat/a-coormu.adb
! 311da6abf3b82c60281998e587790642  gcc/ada/libgnat/a-coormu.ads
  30e205887637465ebffd6709fc8c1292  gcc/ada/libgnat/a-coorse.adb
! d419576b8c43d2cd628005b563ff51ba  gcc/ada/libgnat/a-coorse.ads
  3e21304d42a27e0a9435f0028ce57520  gcc/ada/libgnat/a-coprnu.adb
  8d84ab325b993703126bdfcdcc246f24  gcc/ada/libgnat/a-coprnu.ads
  10c28e7b50958e4a543701ca34df692d  gcc/ada/libgnat/a-costso.adb
*************** d8ee5bd7d48dd3fa84b0f8f4365cd41a  gcc/ad
*** 1295,1301 ****
  42723a1e3a1402ed73119bcce29c7ed9  gcc/ada/libgnat/a-crbtgo.adb
  366efb9963bf1c9b1da806cf29751f3c  gcc/ada/libgnat/a-crbtgo.ads
  78abd98cd6baffd9c8a424ed597be9bc  gcc/ada/libgnat/a-crdlli.adb
! 2415bf2c24f1b5f47f1147dc70e23da1  gcc/ada/libgnat/a-crdlli.ads
  9b1a32f85ce6d4faa8f18a330b149ca5  gcc/ada/libgnat/a-csquin.ads
  1a991b51c6c9ba9594fd2b91cd51ba2b  gcc/ada/libgnat/a-cuprqu.adb
  a7f28d525a8ab9052a770722016188b7  gcc/ada/libgnat/a-cuprqu.ads
--- 1295,1301 ----
  42723a1e3a1402ed73119bcce29c7ed9  gcc/ada/libgnat/a-crbtgo.adb
  366efb9963bf1c9b1da806cf29751f3c  gcc/ada/libgnat/a-crbtgo.ads
  78abd98cd6baffd9c8a424ed597be9bc  gcc/ada/libgnat/a-crdlli.adb
! 70fa0c58e90b4ebe81fe0b1ad4a6d2cb  gcc/ada/libgnat/a-crdlli.ads
  9b1a32f85ce6d4faa8f18a330b149ca5  gcc/ada/libgnat/a-csquin.ads
  1a991b51c6c9ba9594fd2b91cd51ba2b  gcc/ada/libgnat/a-cuprqu.adb
  a7f28d525a8ab9052a770722016188b7  gcc/ada/libgnat/a-cuprqu.ads
*************** aadf6444a140a534f0c02420d9a27b68  gcc/ad
*** 1325,1331 ****
  e77a221e76c3e19394bf433277f04c0f  gcc/ada/libgnat/a-envvar.ads
  a28ab164c9315a2f99e5e7cdbcb088ce  gcc/ada/libgnat/a-excach.adb
  e8910a65082ca26081a0704629fe476a  gcc/ada/libgnat/a-except.adb
! 8458ba0772e508cedf90ff6af4060974  gcc/ada/libgnat/a-except.ads
  51066f40c6ed78f2f89ef1ff6e04f9e2  gcc/ada/libgnat/a-exctra.adb
  085c93c65b54cb02fe4980a58f91e0a7  gcc/ada/libgnat/a-exctra.ads
  76dd8bbe9707bbf5e7e179719fc30619  gcc/ada/libgnat/a-exexda.adb
--- 1325,1331 ----
  e77a221e76c3e19394bf433277f04c0f  gcc/ada/libgnat/a-envvar.ads
  a28ab164c9315a2f99e5e7cdbcb088ce  gcc/ada/libgnat/a-excach.adb
  e8910a65082ca26081a0704629fe476a  gcc/ada/libgnat/a-except.adb
! 7906cd44343149f9d6dd08e832e80288  gcc/ada/libgnat/a-except.ads
  51066f40c6ed78f2f89ef1ff6e04f9e2  gcc/ada/libgnat/a-exctra.adb
  085c93c65b54cb02fe4980a58f91e0a7  gcc/ada/libgnat/a-exctra.ads
  76dd8bbe9707bbf5e7e179719fc30619  gcc/ada/libgnat/a-exexda.adb
*************** b69a18d23ebf0feabb2efead89bddd14  gcc/ad
*** 1333,1339 ****
  67afee047f4b2adb3727024dbe969eba  gcc/ada/libgnat/a-exextr.adb
  4c7402fac37a5941c42b71455dc65f42  gcc/ada/libgnat/a-exstat.adb
  41fdce3d2f8e027b78067d65497c813a  gcc/ada/libgnat/a-finali.adb
! 2ee2871ad9a06b990b318b0f54f85b13  gcc/ada/libgnat/a-finali.ads
  b6ba93109a253e15591b1eefa685bc24  gcc/ada/libgnat/a-flteio.ads
  f7e337bf223b3a491d58fb6db81ef7b1  gcc/ada/libgnat/a-fwteio.ads
  2bf5d12193c278c4a482ae0dda1129a9  gcc/ada/libgnat/a-fzteio.ads
--- 1333,1339 ----
  67afee047f4b2adb3727024dbe969eba  gcc/ada/libgnat/a-exextr.adb
  4c7402fac37a5941c42b71455dc65f42  gcc/ada/libgnat/a-exstat.adb
  41fdce3d2f8e027b78067d65497c813a  gcc/ada/libgnat/a-finali.adb
! 666e509e33281af8495e9288d29b1f35  gcc/ada/libgnat/a-finali.ads
  b6ba93109a253e15591b1eefa685bc24  gcc/ada/libgnat/a-flteio.ads
  f7e337bf223b3a491d58fb6db81ef7b1  gcc/ada/libgnat/a-fwteio.ads
  2bf5d12193c278c4a482ae0dda1129a9  gcc/ada/libgnat/a-fzteio.ads
*************** bf618dc592da2c876e8c4dea2ae02005  gcc/ad
*** 1381,1387 ****
  e1ec6c63f08583982ce897634cbf9bf5  gcc/ada/libgnat/a-ngcoar.adb
  03d934454f8cbd5b382c05c95cd2a70a  gcc/ada/libgnat/a-ngcoar.ads
  f26a52f1a6f669dae0765bfac836b6dd  gcc/ada/libgnat/a-ngcoty.adb
! ac73ea5db807f510b48ed2db2f418512  gcc/ada/libgnat/a-ngcoty.ads
  1bf72aa33c679a59f57ea50dfe54248f  gcc/ada/libgnat/a-ngelfu.adb
  88711673621a9324fb36e3948569d5be  gcc/ada/libgnat/a-ngelfu.ads
  c39d7e9b845c5ddf841934f051c25f8f  gcc/ada/libgnat/a-ngrear.adb
--- 1381,1387 ----
  e1ec6c63f08583982ce897634cbf9bf5  gcc/ada/libgnat/a-ngcoar.adb
  03d934454f8cbd5b382c05c95cd2a70a  gcc/ada/libgnat/a-ngcoar.ads
  f26a52f1a6f669dae0765bfac836b6dd  gcc/ada/libgnat/a-ngcoty.adb
! 125ef5ce8c7af793d32951f2283531bd  gcc/ada/libgnat/a-ngcoty.ads
  1bf72aa33c679a59f57ea50dfe54248f  gcc/ada/libgnat/a-ngelfu.adb
  88711673621a9324fb36e3948569d5be  gcc/ada/libgnat/a-ngelfu.ads
  c39d7e9b845c5ddf841934f051c25f8f  gcc/ada/libgnat/a-ngrear.adb
*************** dccfc9d73f3ca06a3bfb1fa24e86ade7  gcc/ad
*** 1469,1497 ****
  31c88c099440bfcd3ca7d9a312c79599  gcc/ada/libgnat/a-storio.adb
  34175bb2f712422ab4cfd24b3e452b0d  gcc/ada/libgnat/a-storio.ads
  e93ee3681eede50800c3fa92d80c4241  gcc/ada/libgnat/a-strbou.adb
! 23bd2bd0b77512d8f798aa3f877f0d59  gcc/ada/libgnat/a-strbou.ads
  bdabeea0065dd948161bac7232bb2a65  gcc/ada/libgnat/a-stream.adb
! 9cae22519cbfeb4b6eebe8c68e2cc3b7  gcc/ada/libgnat/a-stream.ads
  110b633cf21b84f84c2eef2390d48795  gcc/ada/libgnat/a-strfix.adb
  772900c294bfa8ad09079e6ddbef7ae9  gcc/ada/libgnat/a-strfix.ads
  782da4ff715834a4204876023c4565b8  gcc/ada/libgnat/a-strhas.adb
  b0a210089b94e668314dbcff62c4c997  gcc/ada/libgnat/a-strhas.ads
  de0f93afe5feaf6819d5a9a2e09172e6  gcc/ada/libgnat/a-string.ads
  70746ce4f1739061f33f8300746487f0  gcc/ada/libgnat/a-strmap.adb
! fde87f914a0fb6921988804794d7e36d  gcc/ada/libgnat/a-strmap.ads
  f875ce11dbd0980e354cf6e0f40ace8d  gcc/ada/libgnat/a-strsea.adb
  2a5097c79ed0f127f2c1ed00c49e49a8  gcc/ada/libgnat/a-strsea.ads
  666d32ee01d180ac98d7063c3dce7b89  gcc/ada/libgnat/a-strsto.ads
  df0b259ef7a4a5b4a5ab3ecdaf05b00d  gcc/ada/libgnat/a-strsup.adb
  27164ee062a90101f4417f9519682b6e  gcc/ada/libgnat/a-strsup.ads
  1c4f67b098ee46e794d0c3a2fe19f206  gcc/ada/libgnat/a-strunb.adb
! ec39f56f954e99f14f687ed0ff26552d  gcc/ada/libgnat/a-strunb.ads
  aa88bcbf41d237d4c910e39e82ad93ea  gcc/ada/libgnat/a-strunb__shared.adb
! ecc2d659a7873d1afdf281494879f5c3  gcc/ada/libgnat/a-strunb__shared.ads
  d8ef923a285047286c910b75d5c2ee5d  gcc/ada/libgnat/a-ststbo.adb
  6999c77cdf8e7a03349dfff6fe06a9d4  gcc/ada/libgnat/a-ststbo.ads
  19b63e4da81a2d4211a4320ce3a81c91  gcc/ada/libgnat/a-ststio.adb
! a0c6247a9c476178aa1f87f90fc4c1f1  gcc/ada/libgnat/a-ststio.ads
  f332196b6e7cddd0512326983ce006af  gcc/ada/libgnat/a-ststun.adb
  04a6393cd83914b796b329768fb924cd  gcc/ada/libgnat/a-ststun.ads
  8d9e1d6dbecf60964003aae2f207c577  gcc/ada/libgnat/a-sttebu.adb
--- 1469,1497 ----
  31c88c099440bfcd3ca7d9a312c79599  gcc/ada/libgnat/a-storio.adb
  34175bb2f712422ab4cfd24b3e452b0d  gcc/ada/libgnat/a-storio.ads
  e93ee3681eede50800c3fa92d80c4241  gcc/ada/libgnat/a-strbou.adb
! b7f3f0e1cefc49d0bc0d8c195751ed63  gcc/ada/libgnat/a-strbou.ads
  bdabeea0065dd948161bac7232bb2a65  gcc/ada/libgnat/a-stream.adb
! dd8ceae31136c82ba2aadbd918196103  gcc/ada/libgnat/a-stream.ads
  110b633cf21b84f84c2eef2390d48795  gcc/ada/libgnat/a-strfix.adb
  772900c294bfa8ad09079e6ddbef7ae9  gcc/ada/libgnat/a-strfix.ads
  782da4ff715834a4204876023c4565b8  gcc/ada/libgnat/a-strhas.adb
  b0a210089b94e668314dbcff62c4c997  gcc/ada/libgnat/a-strhas.ads
  de0f93afe5feaf6819d5a9a2e09172e6  gcc/ada/libgnat/a-string.ads
  70746ce4f1739061f33f8300746487f0  gcc/ada/libgnat/a-strmap.adb
! bb2ac07e02ba4c3f4703fdb530a77bc3  gcc/ada/libgnat/a-strmap.ads
  f875ce11dbd0980e354cf6e0f40ace8d  gcc/ada/libgnat/a-strsea.adb
  2a5097c79ed0f127f2c1ed00c49e49a8  gcc/ada/libgnat/a-strsea.ads
  666d32ee01d180ac98d7063c3dce7b89  gcc/ada/libgnat/a-strsto.ads
  df0b259ef7a4a5b4a5ab3ecdaf05b00d  gcc/ada/libgnat/a-strsup.adb
  27164ee062a90101f4417f9519682b6e  gcc/ada/libgnat/a-strsup.ads
  1c4f67b098ee46e794d0c3a2fe19f206  gcc/ada/libgnat/a-strunb.adb
! 730668dd3c9bc892629093b3c38eccc6  gcc/ada/libgnat/a-strunb.ads
  aa88bcbf41d237d4c910e39e82ad93ea  gcc/ada/libgnat/a-strunb__shared.adb
! f4ec4682f09cb0f48c19b14e9337cefc  gcc/ada/libgnat/a-strunb__shared.ads
  d8ef923a285047286c910b75d5c2ee5d  gcc/ada/libgnat/a-ststbo.adb
  6999c77cdf8e7a03349dfff6fe06a9d4  gcc/ada/libgnat/a-ststbo.ads
  19b63e4da81a2d4211a4320ce3a81c91  gcc/ada/libgnat/a-ststio.adb
! 97d520bdef8772dc000affeaeaa4bfdf  gcc/ada/libgnat/a-ststio.ads
  f332196b6e7cddd0512326983ce006af  gcc/ada/libgnat/a-ststun.adb
  04a6393cd83914b796b329768fb924cd  gcc/ada/libgnat/a-ststun.ads
  8d9e1d6dbecf60964003aae2f207c577  gcc/ada/libgnat/a-sttebu.adb
*************** da4a8d13f76850d714a8213ada7477d2  gcc/ad
*** 1504,1540 ****
  21879cbc54cb6acb1984a59b500bab75  gcc/ada/libgnat/a-stuten.adb
  0f5fe8e890a5c8c46160b756ee5500f3  gcc/ada/libgnat/a-stuten.ads
  65709c42cccb21102458683b911678c0  gcc/ada/libgnat/a-stwibo.adb
! df504fbfcfa231bc13483c040a1b81a9  gcc/ada/libgnat/a-stwibo.ads
  e577710adb1ca147a6d4248d4b461897  gcc/ada/libgnat/a-stwifi.adb
  b0cf3f05e49e1640bf231034269cb951  gcc/ada/libgnat/a-stwifi.ads
  fb95478bf10a92d004addc6efefe8498  gcc/ada/libgnat/a-stwiha.adb
  3255ad19d07346032c9d005d6a27475f  gcc/ada/libgnat/a-stwiha.ads
  7e7bfc64dc0e2fec60b9f67450c905e2  gcc/ada/libgnat/a-stwima.adb
! e945e393a0fe2f13b4eefbc3a47e1bd6  gcc/ada/libgnat/a-stwima.ads
  35b6dee80743d9253ce0f38c7f7545b6  gcc/ada/libgnat/a-stwise.adb
  17d09294a902d13d57775e8517cc6bf9  gcc/ada/libgnat/a-stwise.ads
  c390939c77e3a0f8663f97de8506e6f7  gcc/ada/libgnat/a-stwisu.adb
  8119e9702b937471a8c99dc5d7c3bc26  gcc/ada/libgnat/a-stwisu.ads
  58d74ad76c30c9e35de3f08902cf507c  gcc/ada/libgnat/a-stwiun.adb
! a9d0860644b353e53a34ff8f1a9a2c87  gcc/ada/libgnat/a-stwiun.ads
  545b97c3318d2d54867271b3e875fe66  gcc/ada/libgnat/a-stwiun__shared.adb
! 8d4b174d18a374b1b96953857f4a13f4  gcc/ada/libgnat/a-stwiun__shared.ads
  7136ca9d23d95a4031c76841bdee83ad  gcc/ada/libgnat/a-stzbou.adb
! c891eef849a930cd3a26a0ecc087548c  gcc/ada/libgnat/a-stzbou.ads
  755318d4bdb172791ac462d8b68d5f0f  gcc/ada/libgnat/a-stzfix.adb
  f3ddc25c20b07c4072918c6c0ea20ff9  gcc/ada/libgnat/a-stzfix.ads
  844ac7a0c9f79c83b2515f19bc19f9ad  gcc/ada/libgnat/a-stzhas.adb
  41c71febbb354000bccca4ccd3a59c54  gcc/ada/libgnat/a-stzhas.ads
  12caa9f12fc813c0515d6578e631435a  gcc/ada/libgnat/a-stzmap.adb
! 6a637dcc4ddff32d46868aebf4a91372  gcc/ada/libgnat/a-stzmap.ads
  5c0f4fd060eb8b0e67d831c2f4385ad0  gcc/ada/libgnat/a-stzsea.adb
  d55d502a6a36904a7cd9e38161c25464  gcc/ada/libgnat/a-stzsea.ads
  b7623cbbc3cdee0a724d6b29450f7c2f  gcc/ada/libgnat/a-stzsup.adb
  4c10f504df8a2e33ed3e9bd57b131910  gcc/ada/libgnat/a-stzsup.ads
  613815a3a9c4c6bb07f7a1485622bdf4  gcc/ada/libgnat/a-stzunb.adb
! 7829bee7b68e11fdf7f2adcb25e4a61f  gcc/ada/libgnat/a-stzunb.ads
  1e4679365ae1f6fb8dcc0f8bdc5b53bc  gcc/ada/libgnat/a-stzunb__shared.adb
! 56f28386b5394a0b371d3b9aabe1d935  gcc/ada/libgnat/a-stzunb__shared.ads
  e108947880fb3d77a8d0b188b788a9db  gcc/ada/libgnat/a-suecin.adb
  33c512b32edc0a1de803a7a635cc23ea  gcc/ada/libgnat/a-suecin.ads
  f35ab2c769e794856ef1a63b0b7549f0  gcc/ada/libgnat/a-suenco.adb
--- 1504,1540 ----
  21879cbc54cb6acb1984a59b500bab75  gcc/ada/libgnat/a-stuten.adb
  0f5fe8e890a5c8c46160b756ee5500f3  gcc/ada/libgnat/a-stuten.ads
  65709c42cccb21102458683b911678c0  gcc/ada/libgnat/a-stwibo.adb
! 498c244fca7f40f9342a0183e5a80762  gcc/ada/libgnat/a-stwibo.ads
  e577710adb1ca147a6d4248d4b461897  gcc/ada/libgnat/a-stwifi.adb
  b0cf3f05e49e1640bf231034269cb951  gcc/ada/libgnat/a-stwifi.ads
  fb95478bf10a92d004addc6efefe8498  gcc/ada/libgnat/a-stwiha.adb
  3255ad19d07346032c9d005d6a27475f  gcc/ada/libgnat/a-stwiha.ads
  7e7bfc64dc0e2fec60b9f67450c905e2  gcc/ada/libgnat/a-stwima.adb
! 74e12ea8113781932fcd44a9694c00e5  gcc/ada/libgnat/a-stwima.ads
  35b6dee80743d9253ce0f38c7f7545b6  gcc/ada/libgnat/a-stwise.adb
  17d09294a902d13d57775e8517cc6bf9  gcc/ada/libgnat/a-stwise.ads
  c390939c77e3a0f8663f97de8506e6f7  gcc/ada/libgnat/a-stwisu.adb
  8119e9702b937471a8c99dc5d7c3bc26  gcc/ada/libgnat/a-stwisu.ads
  58d74ad76c30c9e35de3f08902cf507c  gcc/ada/libgnat/a-stwiun.adb
! 0250b9c4c437a50886d126167eaeb809  gcc/ada/libgnat/a-stwiun.ads
  545b97c3318d2d54867271b3e875fe66  gcc/ada/libgnat/a-stwiun__shared.adb
! e60036a00ffa6d907f559624d357f990  gcc/ada/libgnat/a-stwiun__shared.ads
  7136ca9d23d95a4031c76841bdee83ad  gcc/ada/libgnat/a-stzbou.adb
! efd51b92536640e93b7b399e953ae2b3  gcc/ada/libgnat/a-stzbou.ads
  755318d4bdb172791ac462d8b68d5f0f  gcc/ada/libgnat/a-stzfix.adb
  f3ddc25c20b07c4072918c6c0ea20ff9  gcc/ada/libgnat/a-stzfix.ads
  844ac7a0c9f79c83b2515f19bc19f9ad  gcc/ada/libgnat/a-stzhas.adb
  41c71febbb354000bccca4ccd3a59c54  gcc/ada/libgnat/a-stzhas.ads
  12caa9f12fc813c0515d6578e631435a  gcc/ada/libgnat/a-stzmap.adb
! d7dbdde485f3088a1a41ecf2449dbee1  gcc/ada/libgnat/a-stzmap.ads
  5c0f4fd060eb8b0e67d831c2f4385ad0  gcc/ada/libgnat/a-stzsea.adb
  d55d502a6a36904a7cd9e38161c25464  gcc/ada/libgnat/a-stzsea.ads
  b7623cbbc3cdee0a724d6b29450f7c2f  gcc/ada/libgnat/a-stzsup.adb
  4c10f504df8a2e33ed3e9bd57b131910  gcc/ada/libgnat/a-stzsup.ads
  613815a3a9c4c6bb07f7a1485622bdf4  gcc/ada/libgnat/a-stzunb.adb
! 491589bc645690d33827ecbd463f543c  gcc/ada/libgnat/a-stzunb.ads
  1e4679365ae1f6fb8dcc0f8bdc5b53bc  gcc/ada/libgnat/a-stzunb__shared.adb
! 814d7b8bf9adbab8070955f67148c865  gcc/ada/libgnat/a-stzunb__shared.ads
  e108947880fb3d77a8d0b188b788a9db  gcc/ada/libgnat/a-suecin.adb
  33c512b32edc0a1de803a7a635cc23ea  gcc/ada/libgnat/a-suecin.ads
  f35ab2c769e794856ef1a63b0b7549f0  gcc/ada/libgnat/a-suenco.adb
*************** a77570cab286822205ee31647d625966  gcc/ad
*** 1577,1583 ****
  720d282d8af0d55f18cbc360d1d4e596  gcc/ada/libgnat/a-szuzti.ads
  446d501a8c389e4424d987f6cf0c2c18  gcc/ada/libgnat/a-szuzti__shared.adb
  b4f8914cdfcfca484cf65104451520e9  gcc/ada/libgnat/a-tags.adb
! ea78bd12964b1dbc00309be1e636481e  gcc/ada/libgnat/a-tags.ads
  a4c59f622240d28aba0aad45bc867251  gcc/ada/libgnat/a-teioed.adb
  e89addfa8ee268683ba2c5b7b7a4ca5c  gcc/ada/libgnat/a-teioed.ads
  1dc0fed26f7217c217e8f14b172785ac  gcc/ada/libgnat/a-textio.adb
--- 1577,1583 ----
  720d282d8af0d55f18cbc360d1d4e596  gcc/ada/libgnat/a-szuzti.ads
  446d501a8c389e4424d987f6cf0c2c18  gcc/ada/libgnat/a-szuzti__shared.adb
  b4f8914cdfcfca484cf65104451520e9  gcc/ada/libgnat/a-tags.adb
! ee71f82431567a4ec5132b1e382009c9  gcc/ada/libgnat/a-tags.ads
  a4c59f622240d28aba0aad45bc867251  gcc/ada/libgnat/a-teioed.adb
  e89addfa8ee268683ba2c5b7b7a4ca5c  gcc/ada/libgnat/a-teioed.ads
  1dc0fed26f7217c217e8f14b172785ac  gcc/ada/libgnat/a-textio.adb
*************** e1d19b45765179c36403496818173fe1  gcc/ad
*** 1892,1899 ****
  8eafdb255d0eafa3f943efc1feff0e4e  gcc/ada/libgnat/g-shshco.adb
  afddbc4dfe9848ead2602333a601e647  gcc/ada/libgnat/g-shshco.ads
  906d456a919e6eb5a8c2607d82654e13  gcc/ada/libgnat/g-soccon.ads
! 7c7130575dfc4d69264cec1d23f5065a  gcc/ada/libgnat/g-socket.adb
! 380817e1240d7c23ab2c9fc61e0b0a34  gcc/ada/libgnat/g-socket.ads
  fa45db9b2f71318e55323cbb90bf74e8  gcc/ada/libgnat/g-socket__dummy.adb
  a1efda814643c7a15fe7c0b0aa7a1b9e  gcc/ada/libgnat/g-socket__dummy.ads
  77d2f1fc5b10883b1508620d2dcfe948  gcc/ada/libgnat/g-socpol.adb
--- 1892,1899 ----
  8eafdb255d0eafa3f943efc1feff0e4e  gcc/ada/libgnat/g-shshco.adb
  afddbc4dfe9848ead2602333a601e647  gcc/ada/libgnat/g-shshco.ads
  906d456a919e6eb5a8c2607d82654e13  gcc/ada/libgnat/g-soccon.ads
! 3a0e6d137f84283e44a4a57399769432  gcc/ada/libgnat/g-socket.adb
! 909561e3fa95d50d91dbac02d467b891  gcc/ada/libgnat/g-socket.ads
  fa45db9b2f71318e55323cbb90bf74e8  gcc/ada/libgnat/g-socket__dummy.adb
  a1efda814643c7a15fe7c0b0aa7a1b9e  gcc/ada/libgnat/g-socket__dummy.ads
  77d2f1fc5b10883b1508620d2dcfe948  gcc/ada/libgnat/g-socpol.adb
*************** d2b5ac22236fcd922870df00cdbf5223  gcc/ad
*** 1981,1987 ****
  9743df732b34e67af4fcde000156ef5a  gcc/ada/libgnat/i-cstrea.adb
  a1f59c1391e76bbb0c315c6ed89d7903  gcc/ada/libgnat/i-cstrea.ads
  edbdf6dabe4b49bac55eca482be73229  gcc/ada/libgnat/i-cstrin.adb
! f15ae7847900ba5b7bd86dd5b2b3d865  gcc/ada/libgnat/i-cstrin.ads
  7d8297675730ed588134246459d2f63d  gcc/ada/libgnat/i-fortra.adb
  fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/libgnat/i-fortra.ads
  6172ec3f6e14a699701cd6fecbe79259  gcc/ada/libgnat/i-pacdec.adb
--- 1981,1987 ----
  9743df732b34e67af4fcde000156ef5a  gcc/ada/libgnat/i-cstrea.adb
  a1f59c1391e76bbb0c315c6ed89d7903  gcc/ada/libgnat/i-cstrea.ads
  edbdf6dabe4b49bac55eca482be73229  gcc/ada/libgnat/i-cstrin.adb
! 09402214963dcf86993a8c9355a63a08  gcc/ada/libgnat/i-cstrin.ads
  7d8297675730ed588134246459d2f63d  gcc/ada/libgnat/i-fortra.adb
  fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/libgnat/i-fortra.ads
  6172ec3f6e14a699701cd6fecbe79259  gcc/ada/libgnat/i-pacdec.adb
*************** ecc80f4cd741053e2418b4327ff82b53  gcc/ad
*** 2008,2021 ****
  724ff50971da8241c356145fe188a716  gcc/ada/libgnat/s-aomoar.ads
  a0d854ff8c51d889d4edc2ac8232afde  gcc/ada/libgnat/s-aotase.adb
  6c7bd61842c36ac4ba72a9c5bf833419  gcc/ada/libgnat/s-aotase.ads
! a9fa9d6d21c4311b0a97722a9292523a  gcc/ada/libgnat/s-aridou.adb
! b20659e7ab9ac7bae8650efb12f1ec31  gcc/ada/libgnat/s-aridou.ads
! 3b300c1736793db3e5abd80c43b4d3b1  gcc/ada/libgnat/s-arit128.adb
! 82ce51a6fe5b6e7420447e3c9796731d  gcc/ada/libgnat/s-arit128.ads
  a32729d5623ecd38e9b42376efc0d593  gcc/ada/libgnat/s-arit32.adb
  fcde399ecd2cbcf72dd1f96062cac354  gcc/ada/libgnat/s-arit32.ads
! 5519a4e4b9c9510d52a1550e443559ac  gcc/ada/libgnat/s-arit64.adb
! d07a657c59acd746d1a909cbb43a7577  gcc/ada/libgnat/s-arit64.ads
  a46220114d084652d69bfc71cd853baf  gcc/ada/libgnat/s-assert.adb
  72f1da2c55710dcfe3a42776afa54b9b  gcc/ada/libgnat/s-assert.ads
  1f673d7d38937f7c6b6bee3c16980971  gcc/ada/libgnat/s-atacco.adb
--- 2008,2021 ----
  724ff50971da8241c356145fe188a716  gcc/ada/libgnat/s-aomoar.ads
  a0d854ff8c51d889d4edc2ac8232afde  gcc/ada/libgnat/s-aotase.adb
  6c7bd61842c36ac4ba72a9c5bf833419  gcc/ada/libgnat/s-aotase.ads
! caa3903e2521ab1007d8aefaae2b841d  gcc/ada/libgnat/s-aridou.adb
! 17862d1c9131abaf33e399012bbc076d  gcc/ada/libgnat/s-aridou.ads
! 793da1ba86c747f3a6dac03b083cb4f6  gcc/ada/libgnat/s-arit128.adb
! 3760eba3987f803554b629d2760dd5ff  gcc/ada/libgnat/s-arit128.ads
  a32729d5623ecd38e9b42376efc0d593  gcc/ada/libgnat/s-arit32.adb
  fcde399ecd2cbcf72dd1f96062cac354  gcc/ada/libgnat/s-arit32.ads
! ffe04661955bb545ea335160417c4660  gcc/ada/libgnat/s-arit64.adb
! cec385acc3456c0f6f593a2587d612ea  gcc/ada/libgnat/s-arit64.ads
  a46220114d084652d69bfc71cd853baf  gcc/ada/libgnat/s-assert.adb
  72f1da2c55710dcfe3a42776afa54b9b  gcc/ada/libgnat/s-assert.ads
  1f673d7d38937f7c6b6bee3c16980971  gcc/ada/libgnat/s-atacco.adb
*************** a0d778826462dc19672954a7788b4816  gcc/ad
*** 2087,2093 ****
  886fc855a472f3872522fe088287e2a3  gcc/ada/libgnat/s-conca9.ads
  b2700bc18d559f98a09523df589e2e35  gcc/ada/libgnat/s-crc32.adb
  448e6f6c90cd6ac5a2f0d9d75c683445  gcc/ada/libgnat/s-crc32.ads
! 0e42e99e5199b92517f25826fecdd824  gcc/ada/libgnat/s-crtl.ads
  9954732cf02e3893f5e906a819784d74  gcc/ada/libgnat/s-dfmkio.ads
  640145af1392b22ff81c9ce93ed552c6  gcc/ada/libgnat/s-dfmopr.ads
  3764e7399da4a9bbd1b205e531348d3b  gcc/ada/libgnat/s-dgmgop.ads
--- 2087,2095 ----
  886fc855a472f3872522fe088287e2a3  gcc/ada/libgnat/s-conca9.ads
  b2700bc18d559f98a09523df589e2e35  gcc/ada/libgnat/s-crc32.adb
  448e6f6c90cd6ac5a2f0d9d75c683445  gcc/ada/libgnat/s-crc32.ads
! d4d9bdfafd95e2d4033c6aaf96ac42c3  gcc/ada/libgnat/s-crtl.adb
! 7bee2c1b2602bc9a7fe55104d90b292e  gcc/ada/libgnat/s-crtl.ads
! dcf38f636091a25db962082864ff90f1  gcc/ada/libgnat/s-crtl__mingw.adb
  9954732cf02e3893f5e906a819784d74  gcc/ada/libgnat/s-dfmkio.ads
  640145af1392b22ff81c9ce93ed552c6  gcc/ada/libgnat/s-dfmopr.ads
  3764e7399da4a9bbd1b205e531348d3b  gcc/ada/libgnat/s-dgmgop.ads
*************** b15bb19c13bffede52de977ba4d3080c  gcc/ad
*** 2612,2620 ****
  bda6e6153863f28fe5e93d505727b03b  gcc/ada/libgnat/s-stoele.adb
  025b925122caa2aa5bbc931abccc32f1  gcc/ada/libgnat/s-stoele.ads
  0a0b6770f7babc248b2a2f27ab8b52bd  gcc/ada/libgnat/s-stopoo.adb
! 3adae9a9cfd5cb0dc6a87f30a41a32cc  gcc/ada/libgnat/s-stopoo.ads
  4ca21e4a3c1fea6cfa36b7bc6a6b66b7  gcc/ada/libgnat/s-stposu.adb
! 3de12659c89015b6d86300c9fd13f0c3  gcc/ada/libgnat/s-stposu.ads
  d37cb5009fbf6cc86d2d4380f5882ad9  gcc/ada/libgnat/s-stratt.adb
  ab6a28dbd6b37651186442d1595a4e9d  gcc/ada/libgnat/s-stratt.ads
  2e6c6d9ef14ea33da34b09de00160ed3  gcc/ada/libgnat/s-stratt__cheri.adb
--- 2614,2622 ----
  bda6e6153863f28fe5e93d505727b03b  gcc/ada/libgnat/s-stoele.adb
  025b925122caa2aa5bbc931abccc32f1  gcc/ada/libgnat/s-stoele.ads
  0a0b6770f7babc248b2a2f27ab8b52bd  gcc/ada/libgnat/s-stopoo.adb
! ab8076ad0a066bb0ba933bcc88fd663a  gcc/ada/libgnat/s-stopoo.ads
  4ca21e4a3c1fea6cfa36b7bc6a6b66b7  gcc/ada/libgnat/s-stposu.adb
! 8fafaa1105e5a56cc9b863a5d50b553a  gcc/ada/libgnat/s-stposu.ads
  d37cb5009fbf6cc86d2d4380f5882ad9  gcc/ada/libgnat/s-stratt.adb
  ab6a28dbd6b37651186442d1595a4e9d  gcc/ada/libgnat/s-stratt.ads
  2e6c6d9ef14ea33da34b09de00160ed3  gcc/ada/libgnat/s-stratt__cheri.adb
*************** d21d3fd6a60f34b05c327d101f8bca11  gcc/ad
*** 2731,2781 ****
  332e560a6eabc9c71ba4c886b22f315b  gcc/ada/libgnat/s-wwdwch.adb
  04d4f7bc9db792c546a576c852103a1f  gcc/ada/libgnat/s-wwdwch.ads
  0f4c21401ad2531f8c5d4010537dc6d2  gcc/ada/libgnat/sequenio.ads
! d44c7c1223d2738a5eba917a7cd5b684  gcc/ada/libgnat/system-aix.ads
! b2fe36cd62e861ffff51e051c5b969cd  gcc/ada/libgnat/system-darwin-arm.ads
! 09d84a25b3e15b5b0b4e9b3137bf330e  gcc/ada/libgnat/system-darwin-ppc.ads
! 5bd08190e2ce1bb50d6c76a516365bd0  gcc/ada/libgnat/system-darwin-x86.ads
! 084e5e256ddfbf3fcdd7abbbdd55c906  gcc/ada/libgnat/system-djgpp.ads
! 6561ec116b1b9c39c8f1719e9b0c5409  gcc/ada/libgnat/system-dragonfly-x86_64.ads
! 97874821ad40bd1cc079f77f348ae35d  gcc/ada/libgnat/system-freebsd.ads
! fdf8b1f34911be9db20f9c5462e8a18f  gcc/ada/libgnat/system-gnu.ads
! 0b0ade525b14a0ca939d6e61238d7772  gcc/ada/libgnat/system-hpux-ia64.ads
! 571a683ee455f94f2759e99dd7a34440  gcc/ada/libgnat/system-hpux.ads
! ca50c109ab873565785735a0fc7b519c  gcc/ada/libgnat/system-linux-alpha.ads
! 6e0df90c197a855b968fcbf7f3b75168  gcc/ada/libgnat/system-linux-arm.ads
! 46c7642eea429c4c381655f00aa89219  gcc/ada/libgnat/system-linux-hppa.ads
! 0ef39f058633550414ed85daf5b0176a  gcc/ada/libgnat/system-linux-ia64.ads
! 629fa89b2e492e788b8414313fb8a0fd  gcc/ada/libgnat/system-linux-loongarch.ads
! 01a608db32885c695a0b8e3d05ec33b5  gcc/ada/libgnat/system-linux-m68k.ads
! 2e6961fb9d192db0300eb43023c51c45  gcc/ada/libgnat/system-linux-mips.ads
! 33193af368f24333f1577b5b11768eb6  gcc/ada/libgnat/system-linux-ppc.ads
! 92bdb98f7542bfa0194fc957151b6360  gcc/ada/libgnat/system-linux-riscv.ads
! 411976034774247d3b8a92b0516bd0f7  gcc/ada/libgnat/system-linux-s390.ads
! 36e059ae7a396591250d878b544dacf8  gcc/ada/libgnat/system-linux-sh4.ads
! 6ba1abfcc8b32f22fd34265196c450da  gcc/ada/libgnat/system-linux-sparc.ads
! fca4509c88506ca0cfe9ba1667b094ab  gcc/ada/libgnat/system-linux-x86.ads
! 3c5fc74240c7c4b4d7a8ed47b7fa051c  gcc/ada/libgnat/system-lynxos178-ppc.ads
! 0dd706e7d0625f1d6c62c2e8007263f4  gcc/ada/libgnat/system-lynxos178-x86.ads
! f10f2cbd5b597081d27e5bcedd3a308f  gcc/ada/libgnat/system-mingw.ads
! ad930b45802d19b47309b670a7ed1459  gcc/ada/libgnat/system-qnx-arm.ads
! c0b158ca5f61ea4833fee6aff18085fc  gcc/ada/libgnat/system-rtems.ads
! 8aab0a699c568ef77d6bb9380ebe7d0b  gcc/ada/libgnat/system-solaris-sparc.ads
! 1e250472114bb4a497fad25e8c85df9c  gcc/ada/libgnat/system-solaris-x86.ads
! 14b2e8838ebde749eb4eb5b2b009662f  gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
! 691f6a5c63cd6a9fba1005dd02d49d9c  gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
! dab5d040270280bd930dd4a44d5992a7  gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
! b637a19b782fe20d3705d61e38553f7c  gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
! 97fc094b38e10f90d55b9699fb30e9e5  gcc/ada/libgnat/system-vxworks7-aarch64.ads
! d8c5108501d7a6e6feda341717b19206  gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
! 2e4bab2ccd0f7992d7a5040f8c2074b4  gcc/ada/libgnat/system-vxworks7-arm.ads
! c50a40d50cc7df2b8bdb525d8da5818b  gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
! faa0e8ae41e212b405545968966d1cfe  gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
! e84c862928872762c8d7e91742e00dfb  gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
! e20c936100098f86c4d9997b00caaca2  gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
! 05c1a1dca202ec90465adc44e7eba04c  gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
! 618afed845446c828d1aa81b8c137be4  gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
! 058334d5919592f62d11ced1c2523b7d  gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
! a2f320f7f0ef571e5f99d0d8f1efa686  gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
  5b5a0f33d6b1cd316c17c759b05d17b6  gcc/ada/libgnat/text_io.ads
  22a85f08e1699f308a9b60bf5ce4a6d0  gcc/ada/libgnat/unchconv.ads
  91a6872657c72c6647e2e8f6edb008ba  gcc/ada/libgnat/unchdeal.ads
--- 2733,2783 ----
  332e560a6eabc9c71ba4c886b22f315b  gcc/ada/libgnat/s-wwdwch.adb
  04d4f7bc9db792c546a576c852103a1f  gcc/ada/libgnat/s-wwdwch.ads
  0f4c21401ad2531f8c5d4010537dc6d2  gcc/ada/libgnat/sequenio.ads
! eebc9cdef7ab0787a12868d71419c570  gcc/ada/libgnat/system-aix.ads
! 0fe5dac4e1e788a96424e622dada6fe8  gcc/ada/libgnat/system-darwin-arm.ads
! 62928e2b7f25c7669a24237c5a5e0aec  gcc/ada/libgnat/system-darwin-ppc.ads
! 45a628fbaa2c17dffe707e754f2618b7  gcc/ada/libgnat/system-darwin-x86.ads
! 5ab027bc267e265ea5acdb5284b2b5af  gcc/ada/libgnat/system-djgpp.ads
! 4e4325f323c75306178d825791309982  gcc/ada/libgnat/system-dragonfly-x86_64.ads
! 5e68594cb224e795df6bba04f93a7f8a  gcc/ada/libgnat/system-freebsd.ads
! b0fff4e105b82f07f8e22de0403100eb  gcc/ada/libgnat/system-gnu.ads
! df580421303a68c83f3d0d91d2d5886a  gcc/ada/libgnat/system-hpux-ia64.ads
! ed961033bc26bf19aa257e515f341254  gcc/ada/libgnat/system-hpux.ads
! 6c123f9c5984f2daae62d2998ffe61cc  gcc/ada/libgnat/system-linux-alpha.ads
! 1a739268755cbf41b809bdd3ad9cb4f6  gcc/ada/libgnat/system-linux-arm.ads
! 498d791b5af356847de2cea576dba7b4  gcc/ada/libgnat/system-linux-hppa.ads
! 863586eabc31594a8da96be0ece42777  gcc/ada/libgnat/system-linux-ia64.ads
! 07567aea8d290c1898c9d602b3887446  gcc/ada/libgnat/system-linux-loongarch.ads
! 31dd73f03df825e14766ff2f754a8fe0  gcc/ada/libgnat/system-linux-m68k.ads
! be6629c1246e6d9f92008406107e316d  gcc/ada/libgnat/system-linux-mips.ads
! ccbb66178409b6c0adc740da89aa57ea  gcc/ada/libgnat/system-linux-ppc.ads
! 6b6c868e00fc7e1f353fb0082c790215  gcc/ada/libgnat/system-linux-riscv.ads
! 7ca3eaf5ca365b8430b99c2e902f909b  gcc/ada/libgnat/system-linux-s390.ads
! c6faa59d4973a2a101e2986dd37626bd  gcc/ada/libgnat/system-linux-sh4.ads
! ef18c02e73837e06dc195b9416a263ec  gcc/ada/libgnat/system-linux-sparc.ads
! 8fe03932817c6e6cab23580f357a2c0c  gcc/ada/libgnat/system-linux-x86.ads
! 4757c5551eaca9d420b10a4bc5ff8962  gcc/ada/libgnat/system-lynxos178-ppc.ads
! fa3c50881769cdd314f7af41f8b633de  gcc/ada/libgnat/system-lynxos178-x86.ads
! f033fbbf9b1fcd630e85b0979a538084  gcc/ada/libgnat/system-mingw.ads
! 7632e95f304ca1d84b3122fe7f6b6eb8  gcc/ada/libgnat/system-qnx-arm.ads
! e0e636ba8eff1b3cd07af5dab8c141a9  gcc/ada/libgnat/system-rtems.ads
! cf3055445855e9da82a41f0d1d7a8f8c  gcc/ada/libgnat/system-solaris-sparc.ads
! daa568b1e0b9067b5486a55027d04fda  gcc/ada/libgnat/system-solaris-x86.ads
! f97d1985b145ccee335d9b5a65dd43e5  gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
! a46e1dd21ef540bbee2845f2c54d9faa  gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
! 79f806dc9a64349acfb1127e0aa06abc  gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
! 74d2789538ace951f735ee639250eebe  gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
! 5f84f3dc6595ea1eded63b859c6ccb76  gcc/ada/libgnat/system-vxworks7-aarch64.ads
! 0bb7876992108f27965f86667e08a0fe  gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
! 72f130fa039dd7909c45d2b1b027e146  gcc/ada/libgnat/system-vxworks7-arm.ads
! e366528eb9bf8b17d442199d44cc76e1  gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
! b9b48161b2432d18906f33ad6c690f63  gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
! d9d483058efebf4c4493eaec576a2d4a  gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
! c11ba5374781e889a447a6e034154874  gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
! e7e3576352adfb4d8827ad1e67061e0b  gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
! 3e738c94e40c10a46ad7683f9a061b9d  gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
! 3f9900dde069b4dd876bcb6cc3d1a969  gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
! 8722177602501b336d2e2a74da475d7c  gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
  5b5a0f33d6b1cd316c17c759b05d17b6  gcc/ada/libgnat/text_io.ads
  22a85f08e1699f308a9b60bf5ce4a6d0  gcc/ada/libgnat/unchconv.ads
  91a6872657c72c6647e2e8f6edb008ba  gcc/ada/libgnat/unchdeal.ads
*************** cd6c342cc127610beca7bb72cbcc907a  gcc/ad
*** 2810,2816 ****
  aef70af2835279de8e33b52eb8375d45  gcc/ada/nlists.ads
  276eb125c0df313227d9ecfb3f38866d  gcc/ada/nlists.h
  9ce5e0762672a4136ff3130c472711ce  gcc/ada/opt.adb
! 0eea91a5fbfadbddde2f2594e7ed6de3  gcc/ada/opt.ads
  fcbd079f712fd349c109f5ecd640096b  gcc/ada/osint-b.adb
  2604c4a51297a9867c69ce9985c3fb8b  gcc/ada/osint-b.ads
  4f31614f93bd69a85fe6c1f144e04b37  gcc/ada/osint-c.adb
--- 2812,2818 ----
  aef70af2835279de8e33b52eb8375d45  gcc/ada/nlists.ads
  276eb125c0df313227d9ecfb3f38866d  gcc/ada/nlists.h
  9ce5e0762672a4136ff3130c472711ce  gcc/ada/opt.adb
! 982acd5470318de033fd069a5769f1e0  gcc/ada/opt.ads
  fcbd079f712fd349c109f5ecd640096b  gcc/ada/osint-b.adb
  2604c4a51297a9867c69ce9985c3fb8b  gcc/ada/osint-b.ads
  4f31614f93bd69a85fe6c1f144e04b37  gcc/ada/osint-c.adb
*************** fc92bd947be0bf674e13d13156f4d7d5  gcc/ad
*** 2837,2844 ****
  3d5733e116665c179c26e9939a59395e  gcc/ada/par-ch9.adb
  0f10c72440816216759b417e23acf069  gcc/ada/par-endh.adb
  6f12aeb2c6db21d91040dfb1bf2e74ce  gcc/ada/par-labl.adb
! c803fb1c38583722fc95714e14ad4da1  gcc/ada/par-load.adb
! 8113cc08a49b97128e8b42b9756bae35  gcc/ada/par-prag.adb
  ee1279472214ff7ca5b61685a2ada15f  gcc/ada/par-sync.adb
  47b402373c995a1c6df9226ae6e02ff2  gcc/ada/par-tchk.adb
  4604f1e5c60129438742f4320d848ce8  gcc/ada/par-util.adb
--- 2839,2846 ----
  3d5733e116665c179c26e9939a59395e  gcc/ada/par-ch9.adb
  0f10c72440816216759b417e23acf069  gcc/ada/par-endh.adb
  6f12aeb2c6db21d91040dfb1bf2e74ce  gcc/ada/par-labl.adb
! 43aa6209cff7b408262fff979f2f6699  gcc/ada/par-load.adb
! edca7d5bed3893390e3732eb691f2817  gcc/ada/par-prag.adb
  ee1279472214ff7ca5b61685a2ada15f  gcc/ada/par-sync.adb
  47b402373c995a1c6df9226ae6e02ff2  gcc/ada/par-tchk.adb
  4604f1e5c60129438742f4320d848ce8  gcc/ada/par-util.adb
*************** fcfa33c29572e4f892bd68b226e0184d  gcc/ad
*** 2859,2865 ****
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
  2068823632327326518141ecef478b56  gcc/ada/repinfo-input.ads
! ee42403c9984dd389a6e7c3046178b10  gcc/ada/repinfo.adb
  2b7ee770fce987fa4a536a7ff6f66d28  gcc/ada/repinfo.ads
  9f01bfb3f02044d2af9dd8653ff046c7  gcc/ada/repinfo.h
  3d4a1dc93d967d84654b6489aaf51b1b  gcc/ada/restrict.adb
--- 2861,2867 ----
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
  2068823632327326518141ecef478b56  gcc/ada/repinfo-input.ads
! ea76af17f6ce0dc8c7773ac07aebba2d  gcc/ada/repinfo.adb
  2b7ee770fce987fa4a536a7ff6f66d28  gcc/ada/repinfo.ads
  9f01bfb3f02044d2af9dd8653ff046c7  gcc/ada/repinfo.h
  3d4a1dc93d967d84654b6489aaf51b1b  gcc/ada/restrict.adb
*************** ee42403c9984dd389a6e7c3046178b10  gcc/ad
*** 2867,2877 ****
  9d12840e7f4b919f1f71a18a65b3463c  gcc/ada/rident.ads
  32312ab752a2a0382c9276e387b389e1  gcc/ada/rtfinal.c
  01263778e97af0ecb135164f1bbfd6ad  gcc/ada/rtinit.c
! 5b5f9b24729652540384b482515eccfa  gcc/ada/rtsfind.adb
! e4e5cf29682458c5890157bcbd67e0c1  gcc/ada/rtsfind.ads
  66e987f268458746a6afb190c151af7a  gcc/ada/runtime.h
! 3ba3797c77ab11da135266710dd26c4a  gcc/ada/s-oscons-tmplt.c
! a34bfe2b691bf488816cc77770321ff3  gcc/ada/s-pack.adb.tmpl
  769f019e3de5c30e3ae7534efbba17df  gcc/ada/s-pack.ads.tmpl
  f2b44210590da3ce7d60699034656b7f  gcc/ada/scans.adb
  4977672198cb113709dc518f67405d1b  gcc/ada/scans.ads
--- 2869,2879 ----
  9d12840e7f4b919f1f71a18a65b3463c  gcc/ada/rident.ads
  32312ab752a2a0382c9276e387b389e1  gcc/ada/rtfinal.c
  01263778e97af0ecb135164f1bbfd6ad  gcc/ada/rtinit.c
! 1e27242a4b1e6be20b3aee25a5d9b8d7  gcc/ada/rtsfind.adb
! 021f0664ba157ee8dd4a893d0ea1d039  gcc/ada/rtsfind.ads
  66e987f268458746a6afb190c151af7a  gcc/ada/runtime.h
! d69fc9536d6c6a2f3f2f5688e2ecd3e3  gcc/ada/s-oscons-tmplt.c
! 6c6bc69518c778cd3f35ca2095dc1ce1  gcc/ada/s-pack.adb.tmpl
  769f019e3de5c30e3ae7534efbba17df  gcc/ada/s-pack.ads.tmpl
  f2b44210590da3ce7d60699034656b7f  gcc/ada/scans.adb
  4977672198cb113709dc518f67405d1b  gcc/ada/scans.ads
*************** c34ee64559a764f063b49301a7504e82  gcc/ad
*** 2885,2921 ****
  cbf1143b39dba16ccff2bad507662b80  gcc/ada/scos.ads
  1e9843bd9ac3288c126ec7d6727ea8e6  gcc/ada/sdefault.ads
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
! b2bb1b9cca2ee7a53e385763a3ec4eee  gcc/ada/sem.adb
  852fbcc89a3ed10b6c00d4f9686d1405  gcc/ada/sem.ads
! 56077675be6cdea397a7c913a87672b6  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! 6edd60412567d4816d78ab61ea5d4b59  gcc/ada/sem_attr.adb
! 825e191d7eee72ea4718b1fc2ba02824  gcc/ada/sem_attr.ads
! cac7c47e492012f0e61000bebe5ae037  gcc/ada/sem_aux.adb
  e15b069fa2ff472febda85c8b9cacb81  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
! 68cb25721bb4d26c4ab49b158aaf355e  gcc/ada/sem_ch10.adb
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
  5b3f0861d9b65b02827da7373a639cb8  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! 486bc46649cac1475f2823c198e7357f  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 70d7bad2efbc828d887d189f7d5e974a  gcc/ada/sem_ch3.adb
! a9694f8bc09b47075cae226e570e02f0  gcc/ada/sem_ch3.ads
  904f36c9a9bf09c65759cab2728c22c7  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
! 36dc076d1e2c973e4ffd11d38fccafec  gcc/ada/sem_ch5.adb
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
! ca44af1398ff6d7cd7280e49d6ee9598  gcc/ada/sem_ch6.adb
! e243030a8b8486f145f0544a7e0d6f47  gcc/ada/sem_ch6.ads
! b44f28d35b10668afc610f16a7f068df  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
  7aca9207bf76039a345f39c73664adf9  gcc/ada/sem_ch8.adb
  f0b4e317e5d5515a6ec337bc5acf5fe0  gcc/ada/sem_ch8.ads
--- 2887,2923 ----
  cbf1143b39dba16ccff2bad507662b80  gcc/ada/scos.ads
  1e9843bd9ac3288c126ec7d6727ea8e6  gcc/ada/sdefault.ads
  3bf01e026b494a442389a5d3541785b8  gcc/ada/seh_init.c
! a424011f3e6f5e5a1163e2a9e1324779  gcc/ada/sem.adb
  852fbcc89a3ed10b6c00d4f9686d1405  gcc/ada/sem.ads
! 486e7e3521da672c20bea967001436f9  gcc/ada/sem_aggr.adb
  d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ada/sem_aggr.ads
! c5136d7eb780683d78e23736e7ccbab1  gcc/ada/sem_attr.adb
! 2a239613f39312b54ea82d1e690a3ea2  gcc/ada/sem_attr.ads
! 67c9535c9fd384cc23ba9aafbc93defb  gcc/ada/sem_aux.adb
  e15b069fa2ff472febda85c8b9cacb81  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
! 8e9c5489f33b5200e527d742c2333d14  gcc/ada/sem_ch10.adb
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
  5b3f0861d9b65b02827da7373a639cb8  gcc/ada/sem_ch12.adb
  b0a3315dce9de8e3bbbb3682c8b0e2ff  gcc/ada/sem_ch12.ads
! e0579ee7777ebf817485c31a4ba5b64b  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
  14326c522718c8cb8415b13a79c07972  gcc/ada/sem_ch2.adb
  2471d629be4739ff5135aa87a2ec9166  gcc/ada/sem_ch2.ads
! 532ca64246c2a8a473a98e126a2c9d89  gcc/ada/sem_ch3.adb
! 76abe89b089728c6eaca6f7593348732  gcc/ada/sem_ch3.ads
  904f36c9a9bf09c65759cab2728c22c7  gcc/ada/sem_ch4.adb
  adba03aae1f439b9e9db8cea05d8e03f  gcc/ada/sem_ch4.ads
! e8573b06cd7059d6bbde030175ab1a71  gcc/ada/sem_ch5.adb
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
! 33ee86ca2d196b23a9b64ad26ff8b6f0  gcc/ada/sem_ch6.adb
! 165c2ff9990d74ba204881b7983566c7  gcc/ada/sem_ch6.ads
! 3cdbde779c5450a7a707146b7e30ff64  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
  7aca9207bf76039a345f39c73664adf9  gcc/ada/sem_ch8.adb
  f0b4e317e5d5515a6ec337bc5acf5fe0  gcc/ada/sem_ch8.ads
*************** afc0c6c63f3b4af535cbedd72c00385e  gcc/ad
*** 2927,2933 ****
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
  8f677120e0bcecbdcfa5b9c4f44cb282  gcc/ada/sem_dist.adb
  a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ada/sem_dist.ads
! fb2845905c56e08b97d234bb3fa0e426  gcc/ada/sem_elab.adb
  c074ec7450863300eff2a21c036a624b  gcc/ada/sem_elab.ads
  1623b94463e7ca1496ecde7010db85fc  gcc/ada/sem_elim.adb
  c837e01542a712c622bac1cd152fc080  gcc/ada/sem_elim.ads
--- 2929,2935 ----
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
  8f677120e0bcecbdcfa5b9c4f44cb282  gcc/ada/sem_dist.adb
  a38c4ce4bc2936bd0a73c28ff1b0df61  gcc/ada/sem_dist.ads
! c2779e0f5c4cde184e5e2152bb8cb24a  gcc/ada/sem_elab.adb
  c074ec7450863300eff2a21c036a624b  gcc/ada/sem_elab.ads
  1623b94463e7ca1496ecde7010db85fc  gcc/ada/sem_elim.adb
  c837e01542a712c622bac1cd152fc080  gcc/ada/sem_elim.ads
*************** e8e79e2a818321d7816e27eed8d17404  gcc/ad
*** 2937,2945 ****
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! c92d715713f6b716f55c7d9d97bcc1f5  gcc/ada/sem_prag.adb
! 77d07a6ae20be77457587ee20ba32423  gcc/ada/sem_prag.ads
! a79509888717bcca5b84e0ba62619eb6  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
--- 2939,2947 ----
  66ccba8e3b77fa8d6e0e13f6368d804a  gcc/ada/sem_intr.ads
  4a954a685009a9b0bcf72a8517dc3bdf  gcc/ada/sem_mech.adb
  bcb22deebc83b966e7be367087d9fd7b  gcc/ada/sem_mech.ads
! cc9cb70efc7ef87a77c16e998a227635  gcc/ada/sem_prag.adb
! e916d988a0949fb165369669d8c6f717  gcc/ada/sem_prag.ads
! 47026d1fb6c93fb9bcf16620d1254d17  gcc/ada/sem_res.adb
  bb01f11ceaa352a8b99f95fcbcfe97d9  gcc/ada/sem_res.ads
  28d33ede4288814374d1909847798c7d  gcc/ada/sem_scil.adb
  db6f5a37bd59fd83ff3286e71ab985fe  gcc/ada/sem_scil.ads
*************** db6f5a37bd59fd83ff3286e71ab985fe  gcc/ad
*** 2947,2954 ****
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
  d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! a3d3aa0f6ee464924b504666e45655e7  gcc/ada/sem_util.adb
! dbfd621d6a1581e8338091bdfcbe9573  gcc/ada/sem_util.ads
  9668d6a37fe84f41a81a7ffcb66d5ecc  gcc/ada/sem_warn.adb
  441e0f80657ef72324e40dd20cebfc82  gcc/ada/sem_warn.ads
  239ca67ac9aa430abfe5120a8d4302d9  gcc/ada/set_targ.adb
--- 2949,2956 ----
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
  d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! ab4fd133f8a112cf4a52a6bc6f81f2a1  gcc/ada/sem_util.adb
! 19871a69122b711ae62ff59c06686d44  gcc/ada/sem_util.ads
  9668d6a37fe84f41a81a7ffcb66d5ecc  gcc/ada/sem_warn.adb
  441e0f80657ef72324e40dd20cebfc82  gcc/ada/sem_warn.ads
  239ca67ac9aa430abfe5120a8d4302d9  gcc/ada/set_targ.adb
*************** f32c4d3d5df9ad9663b4978f7f8a2573  gcc/ad
*** 2968,2974 ****
  5508690394c02353c472f15fdd05b280  gcc/ada/sinfo-utils.adb
  df1aa3814d8c5281deb3b526c99368fc  gcc/ada/sinfo-utils.ads
  e6d5c3ccb5893bb3943fbdf529b298d6  gcc/ada/sinfo.adb
! 7bb0ec1948d808ea803d59fd500b8ea9  gcc/ada/sinfo.ads
  ebb37a07fb72782f86b0c141d3f6077c  gcc/ada/sinput-c.adb
  ec9033e4caebeb446063de16e18918f4  gcc/ada/sinput-c.ads
  2fec6a5fbe7c9e765ea70c82814b0fd3  gcc/ada/sinput-d.adb
--- 2970,2976 ----
  5508690394c02353c472f15fdd05b280  gcc/ada/sinfo-utils.adb
  df1aa3814d8c5281deb3b526c99368fc  gcc/ada/sinfo-utils.ads
  e6d5c3ccb5893bb3943fbdf529b298d6  gcc/ada/sinfo.adb
! 93e317a9f2268babe8fe1b169fd2441a  gcc/ada/sinfo.ads
  ebb37a07fb72782f86b0c141d3f6077c  gcc/ada/sinput-c.adb
  ec9033e4caebeb446063de16e18918f4  gcc/ada/sinput-c.ads
  2fec6a5fbe7c9e765ea70c82814b0fd3  gcc/ada/sinput-d.adb
*************** f6ff4b8bae7d2f10bf04f58ae4efb096  gcc/ad
*** 2977,2991 ****
  69397f052fca6f376ab0c93aa830f6f5  gcc/ada/sinput-l.ads
  bb43802a54a3cfd9cb953188a875da3d  gcc/ada/sinput.adb
  ba7717c1c0a8bd7b1c3feee6580246e6  gcc/ada/sinput.ads
! 66e1d7dbeefd14b51758e17a022c2929  gcc/ada/snames.adb-tmpl
! f16f762fd285bf52b6d610189da527b6  gcc/ada/snames.ads-tmpl
! b5bad059d1da34b0f6f1f8e3b605f212  gcc/ada/snames.h-tmpl
  efc103042b1bc17447f48a276dc860ab  gcc/ada/socket.c
  8bdf1e57c628c071b503b49f5c5078f6  gcc/ada/spark_xrefs.adb
  2753ed3eddef50a315406d42f653c5d3  gcc/ada/spark_xrefs.ads
  1036fd7b697d46c21d8f46848c14bceb  gcc/ada/sprint.adb
  3e9a55e0b0a74656ccf4d6b370f9f3b9  gcc/ada/sprint.ads
! ec2c88d86fa3c44323427da53121cd94  gcc/ada/stand.ads
  995259a03fc6743547480930ff72b93a  gcc/ada/standard.ads.h
  ce066f80c720ae215f49407dbde3b813  gcc/ada/stringt.adb
  ceaa52edf6355622601cd30f7c096b06  gcc/ada/stringt.ads
--- 2979,2993 ----
  69397f052fca6f376ab0c93aa830f6f5  gcc/ada/sinput-l.ads
  bb43802a54a3cfd9cb953188a875da3d  gcc/ada/sinput.adb
  ba7717c1c0a8bd7b1c3feee6580246e6  gcc/ada/sinput.ads
! 45dd977b503b08503733b2a881ffc73a  gcc/ada/snames.adb-tmpl
! b6c2c8048a20845da038e67e918b8afc  gcc/ada/snames.ads-tmpl
! 0eae6e077005b627eacdbc0d53788ac6  gcc/ada/snames.h-tmpl
  efc103042b1bc17447f48a276dc860ab  gcc/ada/socket.c
  8bdf1e57c628c071b503b49f5c5078f6  gcc/ada/spark_xrefs.adb
  2753ed3eddef50a315406d42f653c5d3  gcc/ada/spark_xrefs.ads
  1036fd7b697d46c21d8f46848c14bceb  gcc/ada/sprint.adb
  3e9a55e0b0a74656ccf4d6b370f9f3b9  gcc/ada/sprint.ads
! ced5aeedc927cb85d789249204874ea1  gcc/ada/stand.ads
  995259a03fc6743547480930ff72b93a  gcc/ada/standard.ads.h
  ce066f80c720ae215f49407dbde3b813  gcc/ada/stringt.adb
  ceaa52edf6355622601cd30f7c096b06  gcc/ada/stringt.ads
*************** ceaa52edf6355622601cd30f7c096b06  gcc/ad
*** 3010,3029 ****
  66a18e98cd30d5801e1325734844df88  gcc/ada/table.adb
  e8d9b41a7175ccacacbfccec989ad758  gcc/ada/table.ads
  9f45bf3ee4cf0a6b06c0b5cc6a4830a7  gcc/ada/targext.c
! 452605cc8bfabb79cb2938ed48290217  gcc/ada/targparm.adb
  d9d7a0f9b8ac29d8f1e477d6b53076c1  gcc/ada/targparm.ads
! 0aa22862767f466615555fb4238ed5c8  gcc/ada/tbuild.adb
! 3820c42d29e72797dcd57daf35fe7e58  gcc/ada/tbuild.ads
  7180c008001620663d18e4ca13bb09d3  gcc/ada/tempdir.adb
  6f122fca818bdd0608fc8391dbb411ba  gcc/ada/tempdir.ads
  fb2dbb46dab058293bcd11b4ec94c26f  gcc/ada/terminals.c
  90388b2ce8b02dc01b5f589caaff07ec  gcc/ada/tracebak.c
! 3481ede86832043e7a78bbe06938e0ae  gcc/ada/treepr.adb
  fffc3c236eb600b5b36d78fbe10f489d  gcc/ada/treepr.ads
  6f3fd20323108cb95757cc42a1514191  gcc/ada/ttypes.ads
  e02948c9347a91c37c4f24e7d4356a02  gcc/ada/types.adb
  e65f5e6c67d816a67d60a18801ead601  gcc/ada/types.ads
! c765cf44323532d905ddb837cb8ed1da  gcc/ada/types.h
  84910d8cb8a78c95f71d4fb477098b2a  gcc/ada/uintp.adb
  0b30cdf1b20cec3012f43f473fec627b  gcc/ada/uintp.ads
  aa571047977f5d4eede1b3c590cfca1a  gcc/ada/uintp.h
--- 3012,3031 ----
  66a18e98cd30d5801e1325734844df88  gcc/ada/table.adb
  e8d9b41a7175ccacacbfccec989ad758  gcc/ada/table.ads
  9f45bf3ee4cf0a6b06c0b5cc6a4830a7  gcc/ada/targext.c
! 597006ac6d907cb7a626caa301c78f91  gcc/ada/targparm.adb
  d9d7a0f9b8ac29d8f1e477d6b53076c1  gcc/ada/targparm.ads
! 85f59f4bc929c8ec087c0e17153f0a80  gcc/ada/tbuild.adb
! 03e5b9b1656536438d1d92ddd3ce3082  gcc/ada/tbuild.ads
  7180c008001620663d18e4ca13bb09d3  gcc/ada/tempdir.adb
  6f122fca818bdd0608fc8391dbb411ba  gcc/ada/tempdir.ads
  fb2dbb46dab058293bcd11b4ec94c26f  gcc/ada/terminals.c
  90388b2ce8b02dc01b5f589caaff07ec  gcc/ada/tracebak.c
! c9ba3419b694441662c69e58af06ae07  gcc/ada/treepr.adb
  fffc3c236eb600b5b36d78fbe10f489d  gcc/ada/treepr.ads
  6f3fd20323108cb95757cc42a1514191  gcc/ada/ttypes.ads
  e02948c9347a91c37c4f24e7d4356a02  gcc/ada/types.adb
  e65f5e6c67d816a67d60a18801ead601  gcc/ada/types.ads
! 53a20911b164cec2c19acfc933c1ee14  gcc/ada/types.h
  84910d8cb8a78c95f71d4fb477098b2a  gcc/ada/uintp.adb
  0b30cdf1b20cec3012f43f473fec627b  gcc/ada/uintp.ads
  aa571047977f5d4eede1b3c590cfca1a  gcc/ada/uintp.h
*************** fe292df4b7f3e3ef7c0b8305084b6844  gcc/bi
*** 3185,3193 ****
  9a19defef3c48e371d4ffc9f79b15414  gcc/builtins.cc
  ffcb644f7e9f6080db34e56bb66567f5  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 62601b22468f01322b88f4212b48d971  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
  b0a3988bc562e15d99ab6207aee9a244  gcc/c-family/c-attribs.cc
  78c56cfdab4bb19086143ab771281aa3  gcc/c-family/c-common.cc
--- 3187,3195 ----
  9a19defef3c48e371d4ffc9f79b15414  gcc/builtins.cc
  ffcb644f7e9f6080db34e56bb66567f5  gcc/builtins.def
  bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 51cb77c55b5629dbdccbbe1b6b718806  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
! 9c7ff39ab2ffc5f0938f59efc3657201  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
  b0a3988bc562e15d99ab6207aee9a244  gcc/c-family/c-attribs.cc
  78c56cfdab4bb19086143ab771281aa3  gcc/c-family/c-common.cc
*************** a977ddda313933a15767f0f354618de3  gcc/c-
*** 3228,3238 ****
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 15a4f4b7e7a510479f749c2c61d1a64a  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! 97b022c248b0f29a76ee1a136108bbf8  gcc/c/c-decl.cc
  10e620f790089957c832097206d0d6d6  gcc/c/c-errors.cc
  837fc5f348c64d1c90a4430cc0fb3662  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
--- 3230,3240 ----
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! d6149183c6e37e66a8274ff022487ba4  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! 08441bc97a51cf0da58afd07c9c3b4e8  gcc/c/c-decl.cc
  10e620f790089957c832097206d0d6d6  gcc/c/c-errors.cc
  837fc5f348c64d1c90a4430cc0fb3662  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
*************** e0b7650de772103a6ae330552c1960bc  gcc/c/
*** 3242,3249 ****
  d1945edf86f67458bb923b9c7f24a1a4  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
! ccab0ae5b18f7ad73f9768439cbc5c02  gcc/c/c-tree.h
! f8baa92276353892edb22d9f237bbfc4  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  c169f2d94910060e76c333db12b960b9  gcc/c/gimple-parser.cc
--- 3244,3251 ----
  d1945edf86f67458bb923b9c7f24a1a4  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
! e61cde6629f6e6274d475cc7fcb76210  gcc/c/c-tree.h
! f1893704a00f6264ea5a96740e08426a  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  c169f2d94910060e76c333db12b960b9  gcc/c/gimple-parser.cc
*************** bbad65845fcf9cdbc5137d96f92eacab  gcc/cf
*** 3269,3275 ****
  1103c84ad5690bda0bd6e0c71ea46b93  gcc/cfgloop.cc
  5b21e1c152c74de1773a6cfb0c115604  gcc/cfgloop.h
  5064c16e8d6a47a0fc2a9a5c144bbc2d  gcc/cfgloopanal.cc
! 0a36fc8e64fdd79bb47a57fa94df4e3f  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
  86fd277253913430380bc5d51e4b395b  gcc/cfgrtl.cc
  132f0eb682ec622dc563cfc697da1fb8  gcc/cfgrtl.h
--- 3271,3277 ----
  1103c84ad5690bda0bd6e0c71ea46b93  gcc/cfgloop.cc
  5b21e1c152c74de1773a6cfb0c115604  gcc/cfgloop.h
  5064c16e8d6a47a0fc2a9a5c144bbc2d  gcc/cfgloopanal.cc
! 73dba7f2651c39976a2ac577410e10c3  gcc/cfgloopmanip.cc
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
  86fd277253913430380bc5d51e4b395b  gcc/cfgrtl.cc
  132f0eb682ec622dc563cfc697da1fb8  gcc/cfgrtl.h
*************** f55010fab8b9aabea82c3ac50d031028  gcc/co
*** 3340,3346 ****
  5d00831740184b5f4f8f133a3a1ffc16  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
  95c7c57adee1c62dc37896524df126b3  gcc/common.opt
! d5ce096fca8f0fb1ef19b8092a2a052b  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
--- 3342,3348 ----
  5d00831740184b5f4f8f133a3a1ffc16  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
  95c7c57adee1c62dc37896524df126b3  gcc/common.opt
! f587ac7e013706d1eebf50767c8be97f  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
*************** dff0f13281ab4dbd1ca026f971ee7553  gcc/co
*** 3351,3357 ****
  583d89cf5b4ff63572bfcd107bd598e1  gcc/common/config/alpha/alpha-common.cc
  c54d5f1066ada6f197004c84bc9e6a63  gcc/common/config/arc/arc-common.cc
  a2257a45385715383445b186a608b85d  gcc/common/config/arm/arm-common.cc
! b834ac8f2f7b5ad39cb3c24d5299c633  gcc/common/config/avr/avr-common.cc
  94fd737b0a4e5a33efec7b5a5e6ba9d1  gcc/common/config/bfin/bfin-common.cc
  539502c377f03b36d40016cfd9259d53  gcc/common/config/bpf/bpf-common.cc
  e278f87d704fd4b4533b822677f52229  gcc/common/config/c6x/c6x-common.cc
--- 3353,3359 ----
  583d89cf5b4ff63572bfcd107bd598e1  gcc/common/config/alpha/alpha-common.cc
  c54d5f1066ada6f197004c84bc9e6a63  gcc/common/config/arc/arc-common.cc
  a2257a45385715383445b186a608b85d  gcc/common/config/arm/arm-common.cc
! 408d2c0e35400fd0cfd5b1b00d8c879f  gcc/common/config/avr/avr-common.cc
  94fd737b0a4e5a33efec7b5a5e6ba9d1  gcc/common/config/bfin/bfin-common.cc
  539502c377f03b36d40016cfd9259d53  gcc/common/config/bpf/bpf-common.cc
  e278f87d704fd4b4533b822677f52229  gcc/common/config/c6x/c6x-common.cc
*************** a349e9ba39f96f10f6c9f5e13bb8b661  gcc/co
*** 3439,3445 ****
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  8f28d55d0c7fc64387352822e99a37ff  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! eda702336a39751d36ea028c29054315  gcc/config/aarch64/aarch64-simd.md
  6cdad67417683a468b18516d900945e4  gcc/config/aarch64/aarch64-sme.md
  fa6672290fdf9366d9919defcb7e41d7  gcc/config/aarch64/aarch64-speculation.cc
  9311f63fb41454e9c423862057e8eb6b  gcc/config/aarch64/aarch64-sve-builtins-base.cc
--- 3441,3447 ----
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  8f28d55d0c7fc64387352822e99a37ff  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! f54684432bab80c575e3c6e63969eb2e  gcc/config/aarch64/aarch64-simd.md
  6cdad67417683a468b18516d900945e4  gcc/config/aarch64/aarch64-sme.md
  fa6672290fdf9366d9919defcb7e41d7  gcc/config/aarch64/aarch64-speculation.cc
  9311f63fb41454e9c423862057e8eb6b  gcc/config/aarch64/aarch64-sve-builtins-base.cc
*************** d10a350a80f8f12ee435c64d236e2767  gcc/co
*** 3465,3471 ****
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
  f5392a2f3f5eb7a0e35fda438aa84c99  gcc/config/aarch64/aarch64.cc
  bbedb9dbb43d897f509e3d0c2debbfdb  gcc/config/aarch64/aarch64.h
! f3dce226cf5d0fd7e5f4d48e16f0178c  gcc/config/aarch64/aarch64.md
  ae13780a8296e9c52f9e9b8cd95dc312  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
--- 3467,3473 ----
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
  f5392a2f3f5eb7a0e35fda438aa84c99  gcc/config/aarch64/aarch64.cc
  bbedb9dbb43d897f509e3d0c2debbfdb  gcc/config/aarch64/aarch64.h
! 15c31fdfaa00774701901cfd34888f9e  gcc/config/aarch64/aarch64.md
  ae13780a8296e9c52f9e9b8cd95dc312  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
*************** e67c464c5291da429735ab3d29b461b6  gcc/co
*** 3965,3971 ****
  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
  e4f7b5b6f85b8d8e6a52d482115d3bc1  gcc/config/gcn/gcn-opts.h
--- 3967,3973 ----
  96050b4b2455697e8f797ff6286b6575  gcc/config/g.opt.urls
  9fd698fdcb393c697ca83182cde3834e  gcc/config/gcn/constraints.md
  e89c0c1a7b28f107b53b364765ee06a9  gcc/config/gcn/gcn-builtins.def
! 642bee7cee6df96dc92da173153d79aa  gcc/config/gcn/gcn-devices.def
  ff3ae1701a0dc72a48dd18a907796d2e  gcc/config/gcn/gcn-hsa.h
  491ab7557adb9ed61fba81e4f5b96dc2  gcc/config/gcn/gcn-modes.def
  e4f7b5b6f85b8d8e6a52d482115d3bc1  gcc/config/gcn/gcn-opts.h
*************** b395ed990d9e6d7c2698fdd602685d3f  gcc/co
*** 3975,3981 ****
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
  654b7f66a42c9d8a31a94dddbc21e69d  gcc/config/gcn/gcn-valu.md
! 57e9741957e2b9af66f99296cbd665f0  gcc/config/gcn/gcn.cc
  686d66a24f66638a6a8dc76ddae3acb6  gcc/config/gcn/gcn.h
  f736fc2e3a86be8105f7e8f77e5460c1  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
--- 3977,3983 ----
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
  654b7f66a42c9d8a31a94dddbc21e69d  gcc/config/gcn/gcn-valu.md
! 01ed228066750cacd884939126facb9e  gcc/config/gcn/gcn.cc
  686d66a24f66638a6a8dc76ddae3acb6  gcc/config/gcn/gcn.h
  f736fc2e3a86be8105f7e8f77e5460c1  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
*************** d3fb594d11281112ff8d8f304a000c4e  gcc/co
*** 4162,4168 ****
  a4a1a27264871bfba9de0f4fbdb4f3ac  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! e1035af0a912effd9cf416194308e727  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
  7c6ed0dee4ccb56d115ae98caeba7a81  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
--- 4164,4170 ----
  a4a1a27264871bfba9de0f4fbdb4f3ac  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! 7403712670fccbe903042e29efc1c75e  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
  7c6ed0dee4ccb56d115ae98caeba7a81  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
*************** af769e63b0f01ece7eccbbdb1687868a  gcc/co
*** 4176,4182 ****
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! 73dc124c105c7abde7cdaf9f4bfae6c4  gcc/config/i386/i386.cc
  c3dad483122ca944d97d1d46a6beccf4  gcc/config/i386/i386.h
  a09e6b5d7bccbe486409dda3aac21d1d  gcc/config/i386/i386.md
  38707ff756deaf312cfeca2c52f2954e  gcc/config/i386/i386.opt
--- 4178,4184 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! ff1152b8b73c88a6a94ccb515ebdcd41  gcc/config/i386/i386.cc
  c3dad483122ca944d97d1d46a6beccf4  gcc/config/i386/i386.h
  a09e6b5d7bccbe486409dda3aac21d1d  gcc/config/i386/i386.md
  38707ff756deaf312cfeca2c52f2954e  gcc/config/i386/i386.opt
*************** de4e89bc042c6bc7eb093bda5d33a266  gcc/co
*** 4241,4247 ****
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! 059029ab827594ba2e3643eac1f6ccfd  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
--- 4243,4249 ----
  380f2e50c7d803059b0e7617da00460f  gcc/config/i386/sm4intrin.h
  a24296639492577352dd1309b136bc9a  gcc/config/i386/smmintrin.h
  f98c4d94bf04187a2905e9f4ce7d589b  gcc/config/i386/sol2.h
! ef87b68bec39fd0531b406d89182f84e  gcc/config/i386/sse.md
  7c6ff828c11c2892168a2e450559dcb6  gcc/config/i386/ssemath.h
  7ada9f54207701e1d29fd03ea990e163  gcc/config/i386/stringop.def
  9f75a2e9a9bf20db0bef264cabe77a29  gcc/config/i386/subst.md
*************** d3ad067b1fa15bbce42fd3cc4499966e  gcc/co
*** 4412,4418 ****
  c72c4d71f42573934ede3a3fe4e132b1  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! eae4170428207e96ab78dabce7b0a170  gcc/config/loongarch/loongarch.cc
  d4fcc746efc8475a01557c5c09179c9a  gcc/config/loongarch/loongarch.h
  9fd9109f20f7dfce6de910d45b5dbc85  gcc/config/loongarch/loongarch.md
  7eb1817de89953d405ead07dfb2c5316  gcc/config/loongarch/loongarch.opt
--- 4414,4420 ----
  c72c4d71f42573934ede3a3fe4e132b1  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! f6ade76d2b651009425a004e44a4cfdf  gcc/config/loongarch/loongarch.cc
  d4fcc746efc8475a01557c5c09179c9a  gcc/config/loongarch/loongarch.h
  9fd9109f20f7dfce6de910d45b5dbc85  gcc/config/loongarch/loongarch.md
  7eb1817de89953d405ead07dfb2c5316  gcc/config/loongarch/loongarch.opt
*************** a1ceaab52de5f1950f6c6b63c5a718ea  gcc/co
*** 4422,4428 ****
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
  e357122938174e9f48e1036cb67c8a21  gcc/config/loongarch/predicates.md
  3d93d4fcfba1009a5c6603db8dbef8a0  gcc/config/loongarch/simd.md
! b7814df16af8921dc1260f5e28039fc3  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
  4143126e9ad08f12c1a4555c0f87948d  gcc/config/loongarch/t-loongarch
  b84e97ccf92009e96031fc2edb92dde5  gcc/config/loongarch/t-multilib
--- 4424,4430 ----
  5a232a75001e3db7ee3e491afdfae629  gcc/config/loongarch/musl.h
  e357122938174e9f48e1036cb67c8a21  gcc/config/loongarch/predicates.md
  3d93d4fcfba1009a5c6603db8dbef8a0  gcc/config/loongarch/simd.md
! 0e1638a9f434cbb353f1b31e3dc6683b  gcc/config/loongarch/sync.md
  e2aad9f2fd1ee2a4668948f381da109c  gcc/config/loongarch/t-linux
  4143126e9ad08f12c1a4555c0f87948d  gcc/config/loongarch/t-loongarch
  b84e97ccf92009e96031fc2edb92dde5  gcc/config/loongarch/t-multilib
*************** ccf120397e978f8cd4ed98cbe2c0d4f5  gcc/co
*** 4881,4889 ****
  96a9b8701199ede652cadbcdeec423d7  gcc/config/riscv/andes.md
  7444da2915b734a807ab2b707fe0fe35  gcc/config/riscv/andes_vector.h
  a8fac3d48de6ff4ff0829ddd27890d3c  gcc/config/riscv/arch-canonicalize
! b92a1b8bdb4e96a590b5cd6427bd0d33  gcc/config/riscv/autovec-opt.md
  0a8d3bb5c92b40519d869bae882cf263  gcc/config/riscv/autovec.md
! 40e0e0684e3c3a934587129211c4674c  gcc/config/riscv/bitmanip.md
  3d4917c0a2efee97aaca242060652e02  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
  d404c19d5b1a2aca0a73917bb692bd96  gcc/config/riscv/corev.md
--- 4883,4891 ----
  96a9b8701199ede652cadbcdeec423d7  gcc/config/riscv/andes.md
  7444da2915b734a807ab2b707fe0fe35  gcc/config/riscv/andes_vector.h
  a8fac3d48de6ff4ff0829ddd27890d3c  gcc/config/riscv/arch-canonicalize
! 98a5104b0eba6389462b44517cf2fd92  gcc/config/riscv/autovec-opt.md
  0a8d3bb5c92b40519d869bae882cf263  gcc/config/riscv/autovec.md
! 137855953782419214b0244ad3c8766e  gcc/config/riscv/bitmanip.md
  3d4917c0a2efee97aaca242060652e02  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
  d404c19d5b1a2aca0a73917bb692bd96  gcc/config/riscv/corev.md
*************** fdf40414be0404faa2f689ccff02d68d  gcc/co
*** 4899,4905 ****
  b7e955ddfed9efbb0296ef639c095e2a  gcc/config/riscv/generic.md
  874056dd8e21170d484da69c56e10c2e  gcc/config/riscv/genrvv-type-indexer.cc
  473ed80ccf8dc1ff43e427a45cca3a1e  gcc/config/riscv/gnu.h
! 425d246155422ab2638a5709917125c2  gcc/config/riscv/iterators.md
  85139511ec0cad0144207dc8efc0ed90  gcc/config/riscv/linux.h
  648db331f8cdbd06edc3e19c6dd794b3  gcc/config/riscv/mips-insn.md
  bffa0caedd7144aff55c80a16431d1a1  gcc/config/riscv/mips-p8700.md
--- 4901,4907 ----
  b7e955ddfed9efbb0296ef639c095e2a  gcc/config/riscv/generic.md
  874056dd8e21170d484da69c56e10c2e  gcc/config/riscv/genrvv-type-indexer.cc
  473ed80ccf8dc1ff43e427a45cca3a1e  gcc/config/riscv/gnu.h
! 50341916f4701f933b08ae0270e1afc4  gcc/config/riscv/iterators.md
  85139511ec0cad0144207dc8efc0ed90  gcc/config/riscv/linux.h
  648db331f8cdbd06edc3e19c6dd794b3  gcc/config/riscv/mips-insn.md
  bffa0caedd7144aff55c80a16431d1a1  gcc/config/riscv/mips-p8700.md
*************** b1bc6d82a24b7b0e658a43956a37419c  gcc/co
*** 4931,4943 ****
  2c59654f5f7fe2689efd370c0441b6bd  gcc/config/riscv/riscv-passes.def
  a74e7f8c5cb9995dff8a8d77c7bbd183  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
! 7a88fbbf6ce3f23037c77808a5e294f7  gcc/config/riscv/riscv-selftests.cc
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
  f565a42da3474d73faf1ea727e2d7dcb  gcc/config/riscv/riscv-string.cc
  3b52301e3425e6de33a2436af4de6bd8  gcc/config/riscv/riscv-subset.h
  4421697a26c0e7f7b9eac1623c99387c  gcc/config/riscv/riscv-target-attr.cc
! 6afac23d74b05a588acb01dd168ff4c1  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
  1d781df8fdb7dc0f6e332b3fe767ad85  gcc/config/riscv/riscv-vector-builtins-bases.cc
--- 4933,4945 ----
  2c59654f5f7fe2689efd370c0441b6bd  gcc/config/riscv/riscv-passes.def
  a74e7f8c5cb9995dff8a8d77c7bbd183  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
! 003d5626ce3adcac7ca55401c7dec2bc  gcc/config/riscv/riscv-selftests.cc
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
  f565a42da3474d73faf1ea727e2d7dcb  gcc/config/riscv/riscv-string.cc
  3b52301e3425e6de33a2436af4de6bd8  gcc/config/riscv/riscv-subset.h
  4421697a26c0e7f7b9eac1623c99387c  gcc/config/riscv/riscv-target-attr.cc
! 38acc6849c6d6e9c822754093796177b  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
  1d781df8fdb7dc0f6e332b3fe767ad85  gcc/config/riscv/riscv-vector-builtins-bases.cc
*************** f51037a9e437f8e9ce7215b2da5ad4e2  gcc/co
*** 4955,4961 ****
  5a1dc434073ed565843a91456f836a9a  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! cbfc9b4eaa81798c447a6b8ecf9c9891  gcc/config/riscv/riscv.cc
  0766a701a8c90815575fae86f92cc4a6  gcc/config/riscv/riscv.h
  464164f3b242382443bb440b81635224  gcc/config/riscv/riscv.md
  fec1c87bba727131a45d4ec4a9ae5490  gcc/config/riscv/riscv.opt
--- 4957,4963 ----
  5a1dc434073ed565843a91456f836a9a  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 5d2734ecde4b699dbe29f806fa3fc0bb  gcc/config/riscv/riscv.cc
  0766a701a8c90815575fae86f92cc4a6  gcc/config/riscv/riscv.h
  464164f3b242382443bb440b81635224  gcc/config/riscv/riscv.md
  fec1c87bba727131a45d4ec4a9ae5490  gcc/config/riscv/riscv.opt
*************** fe202105dd9e81b9ce8fdcc11d52c294  gcc/co
*** 4989,4999 ****
  bcf728ad2379630774fd5bb529d4ee86  gcc/config/riscv/thead-vector.md
  48f9dcd9a5cd1980bd2db7697cdb717a  gcc/config/riscv/thead.cc
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
! ed52e14731efd55e945dc45b7f087999  gcc/config/riscv/tt-ascalon-d8.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
  adcd359890ba21e0ab9c4ac4cf8251b8  gcc/config/riscv/vector-iterators.md
! 58c492f6b7fc2989a57d0e90315a6297  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
  36cba2444ae9c8f107fee34492bd0ed6  gcc/config/riscv/zicond.md
--- 4991,5001 ----
  bcf728ad2379630774fd5bb529d4ee86  gcc/config/riscv/thead-vector.md
  48f9dcd9a5cd1980bd2db7697cdb717a  gcc/config/riscv/thead.cc
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
! 77cbfbc9ab58a5e1e4112e275f18b317  gcc/config/riscv/tt-ascalon-d8.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
  adcd359890ba21e0ab9c4ac4cf8251b8  gcc/config/riscv/vector-iterators.md
! aad921b86850f284e3d6fd15eb5feb17  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  0f64aaa114ab62a1a46f7ac422d6a129  gcc/config/riscv/zc.md
  36cba2444ae9c8f107fee34492bd0ed6  gcc/config/riscv/zicond.md
*************** d7112093049d4abbc421609d032b7358  gcc/co
*** 5222,5229 ****
  87bca0c72260bdf7b32cbe797e607999  gcc/config/s390/s390-passes.def
  b6426b7457d4617875547be76bb5112d  gcc/config/s390/s390-protos.h
  6a43653c6812dd5cf0ea3353a8a6435b  gcc/config/s390/s390.cc
! f162b44703353c72956061efcbe580d7  gcc/config/s390/s390.h
! efc539f007c17be06ea605fd605e88a5  gcc/config/s390/s390.md
  fa4475320c7a3767bf9accfa736efcc6  gcc/config/s390/s390.opt
  a70af895ec82511886ce63dc841e63e1  gcc/config/s390/s390.opt.urls
  b9ecea5f97b2e15b60d770050a07f0d1  gcc/config/s390/s390intrin.h
--- 5224,5231 ----
  87bca0c72260bdf7b32cbe797e607999  gcc/config/s390/s390-passes.def
  b6426b7457d4617875547be76bb5112d  gcc/config/s390/s390-protos.h
  6a43653c6812dd5cf0ea3353a8a6435b  gcc/config/s390/s390.cc
! bbb55edbc0d661f963a9337be09039e2  gcc/config/s390/s390.h
! 96a4f00a37aec54de5beb71bdfa3967a  gcc/config/s390/s390.md
  fa4475320c7a3767bf9accfa736efcc6  gcc/config/s390/s390.opt
  a70af895ec82511886ce63dc841e63e1  gcc/config/s390/s390.opt.urls
  b9ecea5f97b2e15b60d770050a07f0d1  gcc/config/s390/s390intrin.h
*************** dfb9fde7c7559a50905b02c01b6d6ee8  gcc/co
*** 5236,5242 ****
  bc0fb519f0c53f7b5e44aadede6fbfad  gcc/config/s390/tpf.opt
  34c54b547202715f11db388829243402  gcc/config/s390/tpf.opt.urls
  d225211a59c66716b9cad3d9a2f13af4  gcc/config/s390/vecintrin.h
! d46adffe7654533008dfc34605a6ea8c  gcc/config/s390/vector.md
  b652dfbe055d93c2aaaccee4bd169ec5  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
  f9d87cd50e032287752597f9c084e3f5  gcc/config/sh/constraints.md
--- 5238,5244 ----
  bc0fb519f0c53f7b5e44aadede6fbfad  gcc/config/s390/tpf.opt
  34c54b547202715f11db388829243402  gcc/config/s390/tpf.opt.urls
  d225211a59c66716b9cad3d9a2f13af4  gcc/config/s390/vecintrin.h
! b9ffc669739724692286bdb5797d633a  gcc/config/s390/vector.md
  b652dfbe055d93c2aaaccee4bd169ec5  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
  f9d87cd50e032287752597f9c084e3f5  gcc/config/sh/constraints.md
*************** f3a2992c8e85b13e50b261e26924d83f  gcc/co
*** 5486,5492 ****
  c7be35a23fd70ac184dd9072319304c7  gcc/config/xtensa/xtensa-opts.h
  e20fad8bff9c459aaef3ea80a54e1973  gcc/config/xtensa/xtensa-protos.h
  92950369828e7e9323c0543cd126af05  gcc/config/xtensa/xtensa.cc
! f378c965e5e289a389bbf48d20867d48  gcc/config/xtensa/xtensa.h
  1cde9c01b4d75d9d8e8eccd725a9e44f  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
--- 5488,5494 ----
  c7be35a23fd70ac184dd9072319304c7  gcc/config/xtensa/xtensa-opts.h
  e20fad8bff9c459aaef3ea80a54e1973  gcc/config/xtensa/xtensa-protos.h
  92950369828e7e9323c0543cd126af05  gcc/config/xtensa/xtensa.cc
! d34c83a4daaaf6aa2e539c777ff21ec9  gcc/config/xtensa/xtensa.h
  1cde9c01b4d75d9d8e8eccd725a9e44f  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
*************** fa062fdcbed6412a676fa477d87ba334  gcc/co
*** 5501,5507 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 15462c409ef2b85c74d4b8184400e3ee  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5503,5509 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! fc3692b7c9f824fd0b8b2e800a295994  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** fce8de27014c109814b3f69be6a5d4f6  gcc/cp
*** 5543,5549 ****
  0414c494620e2ace88b96b92413b56d0  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  402d770bd9d5bfaaed8772abe0787b1b  gcc/cp/constexpr.cc
! 7cf0106de3accd773b289c02049d31ca  gcc/cp/constraint.cc
  b4452de3b42a36f42cdd92b905d201b6  gcc/cp/contracts.cc
  1e70d5eb4e7210b177ea2f5fa77983b8  gcc/cp/contracts.h
  de31e99c416f73448d9f45f50a7d4823  gcc/cp/coroutines.cc
--- 5545,5551 ----
  0414c494620e2ace88b96b92413b56d0  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  402d770bd9d5bfaaed8772abe0787b1b  gcc/cp/constexpr.cc
! d6cbf9f4441b7af5436e73a63106b11b  gcc/cp/constraint.cc
  b4452de3b42a36f42cdd92b905d201b6  gcc/cp/contracts.cc
  1e70d5eb4e7210b177ea2f5fa77983b8  gcc/cp/contracts.h
  de31e99c416f73448d9f45f50a7d4823  gcc/cp/coroutines.cc
*************** b7ae95468b0150bbe2b3cba351e96a2c  gcc/cp
*** 5563,5569 ****
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
  58bfdeb2e0c7b8dd6e87f47294c3b0fe  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! b1ada6eff8a17cff5649d4092eb9cea0  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
  3b0c8688648a0e18bad29a56b158fc3a  gcc/cp/error.cc
  856ffef082c6d62b43386d99e03e94b0  gcc/cp/except.cc
--- 5565,5571 ----
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
  58bfdeb2e0c7b8dd6e87f47294c3b0fe  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! 0684d974d6b3ca002e29615383665292  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
  3b0c8688648a0e18bad29a56b158fc3a  gcc/cp/error.cc
  856ffef082c6d62b43386d99e03e94b0  gcc/cp/except.cc
*************** e6309750e7888003d3c19108d433c340  gcc/cp
*** 5576,5601 ****
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
  b1fd7f71ea0372fd8228b79f373b9e51  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
! 29a766046df79e5751f079947e1f29b4  gcc/cp/mangle.cc
  5efd09b0532a0b524e859d61c942156d  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  0456b59fb105d3d30371131d063a685a  gcc/cp/method.cc
! 839c4d3f54f33d04c4615ebfa83e3bde  gcc/cp/module.cc
! 47491bc02d947c5466e7f4bc4387e3bf  gcc/cp/name-lookup.cc
  5a9aeceb329cf9c3d8c374b77f39f2b4  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  4e247010b8aa821446c1f2f62b45424d  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
! 1dc2f6ef47a852ccee64d8c28b25249b  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
  abdcc013c555522f91c53ed96690dbbe  gcc/cp/semantics.cc
  b58bf61fbfed45af179b7104e72a9486  gcc/cp/std-name-hint.gperf
  2425db76c32085977eff047c982cebab  gcc/cp/std-name-hint.h
! 067caebca8597843f76a13fd5126a2df  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
  efd06edefdaa485e12b0d677c6d6d2e6  gcc/cp/typeck.cc
  d5322228a4b4ea22ae20c897e9baaf69  gcc/cp/typeck2.cc
--- 5578,5603 ----
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
  b1fd7f71ea0372fd8228b79f373b9e51  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
! 2bc6c8244b905d3e4cc5ebceabcbfc36  gcc/cp/mangle.cc
  5efd09b0532a0b524e859d61c942156d  gcc/cp/mapper-client.cc
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  0456b59fb105d3d30371131d063a685a  gcc/cp/method.cc
! e885c60e868a727125d1d19a3d050143  gcc/cp/module.cc
! 552b0381f070c0ad8d92d57d098cd50f  gcc/cp/name-lookup.cc
  5a9aeceb329cf9c3d8c374b77f39f2b4  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  4e247010b8aa821446c1f2f62b45424d  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
! a4548048a4343da13c9b87d9e96cb9c4  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
  abdcc013c555522f91c53ed96690dbbe  gcc/cp/semantics.cc
  b58bf61fbfed45af179b7104e72a9486  gcc/cp/std-name-hint.gperf
  2425db76c32085977eff047c982cebab  gcc/cp/std-name-hint.h
! ee9192c187b31cc5519ead8ef2a2ed74  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
  efd06edefdaa485e12b0d677c6d6d2e6  gcc/cp/typeck.cc
  d5322228a4b4ea22ae20c897e9baaf69  gcc/cp/typeck2.cc
*************** db78b93a68a738fdb34ae6aa97fe35db  gcc/di
*** 5889,5895 ****
  51b5b20d6930ca3bac2a5915b6cc4985  gcc/diagnostic-global-context.cc
  ddb5e19e6f3ff8224aedd1a60eaad23e  gcc/diagnostic-highlight-colors.h
  03317dcb68edc20739a39d6cdd14723d  gcc/diagnostic.h
! e5c0a507efdbc3f4b46838590abf4cfb  gcc/diagnostics/buffering.cc
  47de19fd41c4322b6be98c4f8c0d4617  gcc/diagnostics/buffering.h
  40fd6d86656b819f4c830d0d493b0d88  gcc/diagnostics/changes.cc
  ff66e6baa4830cf18c7b97e2eb383ac5  gcc/diagnostics/changes.h
--- 5891,5897 ----
  51b5b20d6930ca3bac2a5915b6cc4985  gcc/diagnostic-global-context.cc
  ddb5e19e6f3ff8224aedd1a60eaad23e  gcc/diagnostic-highlight-colors.h
  03317dcb68edc20739a39d6cdd14723d  gcc/diagnostic.h
! 5b0e18f26cbf7cd3adf6f6e852bee3e2  gcc/diagnostics/buffering.cc
  47de19fd41c4322b6be98c4f8c0d4617  gcc/diagnostics/buffering.h
  40fd6d86656b819f4c830d0d493b0d88  gcc/diagnostics/changes.cc
  ff66e6baa4830cf18c7b97e2eb383ac5  gcc/diagnostics/changes.h
*************** c9250b15349fce5a608b769043f111e5  gcc/di
*** 5898,5904 ****
  d29ddcb032cf35e525663d8b857fe46b  gcc/diagnostics/color.h
  3e3d9b398652afcc049d57d6ebcb4d1b  gcc/diagnostics/column-options.h
  feea31e8e6eec9c1403f01df95d221d4  gcc/diagnostics/context-options.h
! 45e79d17cd811f8bb3f179862ad044f9  gcc/diagnostics/context.cc
  cbbbe0789e52cde3cf1f28f5b04c6d4f  gcc/diagnostics/context.h
  3f0f4bd88c2110afde540ec51f32ce6b  gcc/diagnostics/counters.h
  6eb2e40f405d950a9e9f3c089680a899  gcc/diagnostics/diagnostic-info.h
--- 5900,5906 ----
  d29ddcb032cf35e525663d8b857fe46b  gcc/diagnostics/color.h
  3e3d9b398652afcc049d57d6ebcb4d1b  gcc/diagnostics/column-options.h
  feea31e8e6eec9c1403f01df95d221d4  gcc/diagnostics/context-options.h
! 166ee78865d627c8072eec20128e7fe1  gcc/diagnostics/context.cc
  cbbbe0789e52cde3cf1f28f5b04c6d4f  gcc/diagnostics/context.h
  3f0f4bd88c2110afde540ec51f32ce6b  gcc/diagnostics/counters.h
  6eb2e40f405d950a9e9f3c089680a899  gcc/diagnostics/diagnostic-info.h
*************** cc65ae2ee101a218fd768c2fee83af6e  gcc/di
*** 5934,5940 ****
  cefbba8b03685fbfd838e1f457bb843a  gcc/diagnostics/paths-output.cc
  e60ad2d99ee160a6acce95a85c4f5884  gcc/diagnostics/paths.cc
  ab20f8a7e64efd9ea6670e6447014d6f  gcc/diagnostics/paths.h
! ff40bea7bb4cf51870386a8c333cca40  gcc/diagnostics/sarif-sink.cc
  2e5b6abdac74dd6e43e3985e6a54b648  gcc/diagnostics/sarif-sink.h
  ee068b3f8fd2d449eee5a70ef6dad518  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
--- 5936,5942 ----
  cefbba8b03685fbfd838e1f457bb843a  gcc/diagnostics/paths-output.cc
  e60ad2d99ee160a6acce95a85c4f5884  gcc/diagnostics/paths.cc
  ab20f8a7e64efd9ea6670e6447014d6f  gcc/diagnostics/paths.h
! f87cf798c1632ef27096c13fa48a77aa  gcc/diagnostics/sarif-sink.cc
  2e5b6abdac74dd6e43e3985e6a54b648  gcc/diagnostics/sarif-sink.h
  ee068b3f8fd2d449eee5a70ef6dad518  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
*************** acdfc663791e4321372e79932070d05d  gcc/do
*** 5971,5977 ****
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 10d702dfdef81da97ed5ef7b2bfe94ae  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
--- 5973,5979 ----
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 405b664169204a870507f988263f9d7c  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
*************** a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/do
*** 5979,5985 ****
  943006b46b746ef59c5c1ab4f334a241  gcc/doc/gcov-dump.texi
  50c3a263a50fc4688ac3be5e8e8744ba  gcc/doc/gcov-tool.texi
  8700253b7c491bd8902f580c7dcff6dc  gcc/doc/gcov.texi
! 028bc676c3b94f5ed5a5b167643ac62b  gcc/doc/generic.texi
  6dd13335166acce8e899b838ecbd04bd  gcc/doc/gimple.texi
  43808f9404edf4ea28b68479f495fa31  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
--- 5981,5987 ----
  943006b46b746ef59c5c1ab4f334a241  gcc/doc/gcov-dump.texi
  50c3a263a50fc4688ac3be5e8e8744ba  gcc/doc/gcov-tool.texi
  8700253b7c491bd8902f580c7dcff6dc  gcc/doc/gcov.texi
! 1bea8e2d0aad7d4a7283b3a4e2628663  gcc/doc/generic.texi
  6dd13335166acce8e899b838ecbd04bd  gcc/doc/gimple.texi
  43808f9404edf4ea28b68479f495fa31  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 5995,6003 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  840715392034007a3ef3fdebf22e2781  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! fdc4fc77885574f784249b2a1886d024  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
! 5200cc28a2ab912efe66f0944995c45b  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
  8258127c283eb86e07e4235453e8f336  gcc/doc/libgdiagnostics/conf.py
  ad0e2d047092c8659655e677a43966ee  gcc/doc/libgdiagnostics/index.rst
--- 5997,6005 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  840715392034007a3ef3fdebf22e2781  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 303fc10891d96b86d8a5e6aa2a1944cd  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
! 8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
  8258127c283eb86e07e4235453e8f336  gcc/doc/libgdiagnostics/conf.py
  ad0e2d047092c8659655e677a43966ee  gcc/doc/libgdiagnostics/index.rst
*************** a1f65f3aec3cc5d5b6505fb976d4c216  gcc/do
*** 6033,6039 ****
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
! 8aaabbc2a7d4ffe3a894e7e20a6c06a5  gcc/doc/md.texi
  8836b7001f069e8dead6a4643108258b  gcc/doc/objc.texi
  9673b2a6dd62d5ac08afb00421e98cdb  gcc/doc/optinfo.texi
  a7117c4fee8c54e338b967886f3b2dcb  gcc/doc/options.texi
--- 6035,6041 ----
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
! a58a85b76cefc772c78803e4beced39f  gcc/doc/md.texi
  8836b7001f069e8dead6a4643108258b  gcc/doc/objc.texi
  9673b2a6dd62d5ac08afb00421e98cdb  gcc/doc/optinfo.texi
  a7117c4fee8c54e338b967886f3b2dcb  gcc/doc/options.texi
*************** a44260feebffd50db9ea51aed431d69c  gcc/do
*** 6048,6054 ****
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
  7ace68f81059516a6c2c6cc8cd9fb830  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
! f7af133d6d9c479fbc981feb4ce72a82  gcc/doc/tm.texi
  4daf70f27425e03ecbb9f0fad3e8fb62  gcc/doc/tm.texi.in
  c4168f9f01adf4dd8adc647c04107142  gcc/doc/tree-ssa.texi
  5f62752970e47d350c8cbce47123d1cf  gcc/doc/trouble.texi
--- 6050,6056 ----
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
  7ace68f81059516a6c2c6cc8cd9fb830  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
! f42e743435ee8b98620d93a258360c66  gcc/doc/tm.texi
  4daf70f27425e03ecbb9f0fad3e8fb62  gcc/doc/tm.texi.in
  c4168f9f01adf4dd8adc647c04107142  gcc/doc/tree-ssa.texi
  5f62752970e47d350c8cbce47123d1cf  gcc/doc/trouble.texi
*************** e518c37d94908385da07142b92ea8cdb  gcc/dw
*** 6070,6076 ****
  7efb4f91e749cd2ecf8f4c740fdb13b0  gcc/dwarf2cfi.cc
  b21182651156de7779948fe8ca2c4160  gcc/dwarf2codeview.cc
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
! 252df5bb1a7e04dd7c8f06aac160aa04  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
  a1e3cbcc23801b6e056d3e8ac4d3cc1d  gcc/dwarf2out.cc
  7ff70632352b65c214e02360ed6d6aae  gcc/dwarf2out.h
--- 6072,6078 ----
  7efb4f91e749cd2ecf8f4c740fdb13b0  gcc/dwarf2cfi.cc
  b21182651156de7779948fe8ca2c4160  gcc/dwarf2codeview.cc
  186b01005d892edba3b03fc17bd0dc8f  gcc/dwarf2codeview.h
! d9680f52c4527d1c318703e2914d06c9  gcc/dwarf2ctf.cc
  1d0191caafac1774f50a47175d915ea0  gcc/dwarf2ctf.h
  a1e3cbcc23801b6e056d3e8ac4d3cc1d  gcc/dwarf2out.cc
  7ff70632352b65c214e02360ed6d6aae  gcc/dwarf2out.h
*************** de4a03cd382601071e81e57cc6c2a7e1  gcc/ex
*** 6089,6095 ****
  b5fa845ff578d70e8ceae655d6affc51  gcc/explow.h
  a4ee0bae47797ce73f05daef7a07edd4  gcc/expmed.cc
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
! e266b09e8dba3a9139dd84e825907c4c  gcc/expr.cc
  dfa85539f017784504ec3d884e09901f  gcc/expr.h
  7117d2d0dde87eaf1ab2853b5bfd62e2  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
--- 6091,6097 ----
  b5fa845ff578d70e8ceae655d6affc51  gcc/explow.h
  a4ee0bae47797ce73f05daef7a07edd4  gcc/expmed.cc
  dee0d85cc89e81b4cc185f1c3102811e  gcc/expmed.h
! bdfe394a9600210c353eaa357782b08d  gcc/expr.cc
  dfa85539f017784504ec3d884e09901f  gcc/expr.h
  7117d2d0dde87eaf1ab2853b5bfd62e2  gcc/ext-dce.cc
  2ecf474a8f5380e5027c5b7a745cd736  gcc/fibonacci_heap.cc
*************** ada0afb884a142f8214291990679be13  gcc/fo
*** 6108,6114 ****
  ab65c11488de8f259592eef4bca9338b  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 4d79f1c1c6005915d39914166104789d  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6110,6116 ----
  ab65c11488de8f259592eef4bca9338b  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 23e49f17c6f243545ffd5ab81f3bb49b  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** db21881c77a22fd3dbfe253c364af5ee  gcc/fo
*** 6138,6144 ****
  6b01ec523f3bee8e2469370d106896e3  gcc/fortran/arith.h
  1f47886d616538f880e240f661990624  gcc/fortran/array.cc
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
! 8ac8e1658280b822a4eaacb033977465  gcc/fortran/check.cc
  4cd50f78498dfdce8f3ba18b4639e2d6  gcc/fortran/class.cc
  aed3aedb6378a970055dff9e11eedc2d  gcc/fortran/coarray.cc
  6047324cb87b56ae23d2293c5ef13ddb  gcc/fortran/config-lang.in
--- 6140,6146 ----
  6b01ec523f3bee8e2469370d106896e3  gcc/fortran/arith.h
  1f47886d616538f880e240f661990624  gcc/fortran/array.cc
  59221f5e105887dce9d0c1b7694aa86f  gcc/fortran/bbt.cc
! a7c1f9d359b6b66b84bfc972f1f828f6  gcc/fortran/check.cc
  4cd50f78498dfdce8f3ba18b4639e2d6  gcc/fortran/class.cc
  aed3aedb6378a970055dff9e11eedc2d  gcc/fortran/coarray.cc
  6047324cb87b56ae23d2293c5ef13ddb  gcc/fortran/config-lang.in
*************** aed3aedb6378a970055dff9e11eedc2d  gcc/fo
*** 6149,6175 ****
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! 60a34207d9b14a1d9da6ac642b26b809  gcc/fortran/decl.cc
  c33e2c4c7527bec8a125dd093dc59f2a  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
! b6cce6988f87edda182aec1b6c3cd291  gcc/fortran/dump-parse-tree.cc
  0aa273bc8ec396d25bbd76d19dd7d226  gcc/fortran/error.cc
! 4e2b190489d6c866572528da54250bd2  gcc/fortran/expr.cc
  4951d066b4086c9dc1486fd5e2dbe2c2  gcc/fortran/f95-lang.cc
! e188a9b3cb73106cab46a15d36a12b66  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
! f01fb3931f9fe2be249b6112c46293a2  gcc/fortran/gfortran.h
  d29bb6813221f46b4cde9df77292c412  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  e4fe6ce0303cd182ebd328bdb0ae5743  gcc/fortran/interface.cc
  74d5cc035a8e6ee1fb5826c965c90532  gcc/fortran/intrinsic.cc
  47e0e62e0a6eaad27941f8e734cda2a2  gcc/fortran/intrinsic.h
! 46f301a921ea10f48c66cde1ded41776  gcc/fortran/intrinsic.texi
  d9adb34dd5debb7dc5853dbd9c099b8e  gcc/fortran/invoke.texi
  4a91f323761835f16a1a9b3995485379  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
! fd79207ab6491c890f9be301a1b291ed  gcc/fortran/iresolve.cc
  40087b4e405f3e0f17ebd4f0e9b63f48  gcc/fortran/iso-c-binding.def
  085e3672e4679e2b51b9f144b552caed  gcc/fortran/iso-fortran-env.def
  5c4523263ea0f1cd46baacba848e1fd5  gcc/fortran/lang-specs.h
--- 6151,6177 ----
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! a391fcfa5c30324b553f4c758f386200  gcc/fortran/decl.cc
  c33e2c4c7527bec8a125dd093dc59f2a  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
! 9f708de69558a334a8fec77d40a2a376  gcc/fortran/dump-parse-tree.cc
  0aa273bc8ec396d25bbd76d19dd7d226  gcc/fortran/error.cc
! b3beb0a8e06a71d205d3639a1bc35738  gcc/fortran/expr.cc
  4951d066b4086c9dc1486fd5e2dbe2c2  gcc/fortran/f95-lang.cc
! 7209bb6b200fb678d28513a056ab4455  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
! 354706dbb34726aa05bf11d77fc0a3aa  gcc/fortran/gfortran.h
  d29bb6813221f46b4cde9df77292c412  gcc/fortran/gfortran.texi
  af66ab40a5434219772b76ad10035e45  gcc/fortran/gfortranspec.cc
  e4fe6ce0303cd182ebd328bdb0ae5743  gcc/fortran/interface.cc
  74d5cc035a8e6ee1fb5826c965c90532  gcc/fortran/intrinsic.cc
  47e0e62e0a6eaad27941f8e734cda2a2  gcc/fortran/intrinsic.h
! 429eb49bcb0cb30dc19ef3aa3a032962  gcc/fortran/intrinsic.texi
  d9adb34dd5debb7dc5853dbd9c099b8e  gcc/fortran/invoke.texi
  4a91f323761835f16a1a9b3995485379  gcc/fortran/io.cc
  d2a28ef98f6f78d1608fb52204e013a5  gcc/fortran/ioparm.def
! 4d2d654877c2408059ea42ec970d9e6b  gcc/fortran/iresolve.cc
  40087b4e405f3e0f17ebd4f0e9b63f48  gcc/fortran/iso-c-binding.def
  085e3672e4679e2b51b9f144b552caed  gcc/fortran/iso-fortran-env.def
  5c4523263ea0f1cd46baacba848e1fd5  gcc/fortran/lang-specs.h
*************** fd79207ab6491c890f9be301a1b291ed  gcc/fo
*** 6178,6193 ****
  33cf77e4943bfb687d3a0bd5fa94ec58  gcc/fortran/libgfortran.h
  9fb964ee8c0ef3d4ffb8f95aa2ad3203  gcc/fortran/match.cc
  047778859aa899389e3b7e65c1439faa  gcc/fortran/match.h
! 8181d5e935b96288d9a51fb8138faefb  gcc/fortran/matchexp.cc
  763c37f838e32f5ed8ad600157a0d951  gcc/fortran/mathbuiltins.def
  6e89e2e347d7f6e1576cbda0e958b5bd  gcc/fortran/misc.cc
! df87a47795cf1aceec24416d89f4dc6e  gcc/fortran/module.cc
  8da1b859b4dc259b551a9531ad3eaa9f  gcc/fortran/openmp.cc
  5b63ee69316bceb14ed8172adcfedf6b  gcc/fortran/options.cc
  44ee980cc04645c25872621b20fc36fa  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
! 6af7a69df20b6ed8fae3858a2eb7f976  gcc/fortran/primary.cc
! 1e41e333dba3d1cb7ee3812d0abefd53  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  71190056d6f36d3d43d4b6ed27f23032  gcc/fortran/simplify.cc
--- 6180,6195 ----
  33cf77e4943bfb687d3a0bd5fa94ec58  gcc/fortran/libgfortran.h
  9fb964ee8c0ef3d4ffb8f95aa2ad3203  gcc/fortran/match.cc
  047778859aa899389e3b7e65c1439faa  gcc/fortran/match.h
! 672e1d4135f72ff6f083582ec84123b1  gcc/fortran/matchexp.cc
  763c37f838e32f5ed8ad600157a0d951  gcc/fortran/mathbuiltins.def
  6e89e2e347d7f6e1576cbda0e958b5bd  gcc/fortran/misc.cc
! cc253aa18378a960466507b449eb64b6  gcc/fortran/module.cc
  8da1b859b4dc259b551a9531ad3eaa9f  gcc/fortran/openmp.cc
  5b63ee69316bceb14ed8172adcfedf6b  gcc/fortran/options.cc
  44ee980cc04645c25872621b20fc36fa  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
! 5a809896860a322ebc1f0e101b39e979  gcc/fortran/primary.cc
! 7d5d4ee37a4196afbef5cbe6de069ea2  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  71190056d6f36d3d43d4b6ed27f23032  gcc/fortran/simplify.cc
*************** c1b40e866a8bbe611aa65278fe2508d3  gcc/fo
*** 6195,6208 ****
  7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 0cc6777a5ed1b528d7f2d375ecde014e  gcc/fortran/trans-array.cc
  682d93b7e921d709d88b7e5219a69d53  gcc/fortran/trans-array.h
  dfe1e1950e068389ed73663e9a11ad88  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
! 674805c3ef440048785038bc04884bc4  gcc/fortran/trans-decl.cc
! ae3ea5952282bf3e74ddafb1655deaa7  gcc/fortran/trans-expr.cc
! 3e27ef789bc1b3481029ba71ec30d943  gcc/fortran/trans-intrinsic.cc
  4a091b0b546257101e406582ece724f7  gcc/fortran/trans-io.cc
  27df041e4caff610df844e7a22e291e3  gcc/fortran/trans-openmp.cc
  ef3436c60285865c7e4a611b65ebca7d  gcc/fortran/trans-stmt.cc
--- 6197,6210 ----
  7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! f71b9f73bb493383cba909160da98ddd  gcc/fortran/trans-array.cc
  682d93b7e921d709d88b7e5219a69d53  gcc/fortran/trans-array.h
  dfe1e1950e068389ed73663e9a11ad88  gcc/fortran/trans-common.cc
  d555f911945a83db335013815934e941  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
! f79b89542b626c6f54fa944f3612dfd7  gcc/fortran/trans-decl.cc
! fa0e23cf32b2de51ec36efc52120c1df  gcc/fortran/trans-expr.cc
! 75dbdc3d489814fc18082a069cd7c3ab  gcc/fortran/trans-intrinsic.cc
  4a091b0b546257101e406582ece724f7  gcc/fortran/trans-io.cc
  27df041e4caff610df844e7a22e291e3  gcc/fortran/trans-openmp.cc
  ef3436c60285865c7e4a611b65ebca7d  gcc/fortran/trans-stmt.cc
*************** ef3436c60285865c7e4a611b65ebca7d  gcc/fo
*** 6210,6216 ****
  23c951c4924ba8a16582a8b9e5065a87  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  47d7a4f95fe5f62d3f8d58763509ad3d  gcc/fortran/trans.cc
! 8dbeba5c80acef1d2d30f9a3e998a9b2  gcc/fortran/trans.h
  6f893e67fc7e5f247079bd418e61d1e2  gcc/fortran/trigd_fe.inc
  2ddfa7f2ac232123d67959795d85aaa6  gcc/fortran/types.def
  f574663ce227d0be2e77015c008d708b  gcc/fp-test.cc
--- 6212,6218 ----
  23c951c4924ba8a16582a8b9e5065a87  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  47d7a4f95fe5f62d3f8d58763509ad3d  gcc/fortran/trans.cc
! 8a38c2ad1fcb6836d2f0f58ff2080f22  gcc/fortran/trans.h
  6f893e67fc7e5f247079bd418e61d1e2  gcc/fortran/trigd_fe.inc
  2ddfa7f2ac232123d67959795d85aaa6  gcc/fortran/types.def
  f574663ce227d0be2e77015c008d708b  gcc/fp-test.cc
*************** a0c225f8a1deb41873e5984a058b0f45  gcc/gi
*** 6313,6319 ****
  9d283d6d05cc10c386454e9c6a25e22a  gcc/gimple-loop-versioning.cc
  de516dc4a59882c258bf01584c25b2de  gcc/gimple-low.cc
  a507a70e7f4b0dd99e594d15a5a9a89b  gcc/gimple-low.h
! 93be6de2dfbd003a72732c89a297fc8f  gcc/gimple-lower-bitint.cc
  bb02db160d1eb3a985d3b5dfa8e0566c  gcc/gimple-lower-bitint.h
  0b6c89d0a615bf5016f4e84ab164a6ca  gcc/gimple-match-exports.cc
  144911a83796283e587e0c84378e118d  gcc/gimple-match-head.cc
--- 6315,6321 ----
  9d283d6d05cc10c386454e9c6a25e22a  gcc/gimple-loop-versioning.cc
  de516dc4a59882c258bf01584c25b2de  gcc/gimple-low.cc
  a507a70e7f4b0dd99e594d15a5a9a89b  gcc/gimple-low.h
! eef0e9bddb2d1be190859dce14b259a2  gcc/gimple-lower-bitint.cc
  bb02db160d1eb3a985d3b5dfa8e0566c  gcc/gimple-lower-bitint.h
  0b6c89d0a615bf5016f4e84ab164a6ca  gcc/gimple-match-exports.cc
  144911a83796283e587e0c84378e118d  gcc/gimple-match-head.cc
*************** bab40605909b2dfc01edcaa747fadd3e  gcc/ho
*** 6493,6499 ****
  260dd898f6b9809f71a292b793d67324  gcc/hw-doloop.h
  4769eb51982f8ccb12764424698b464f  gcc/hwint.cc
  8826410aae6a5efbb3d335e5e3dceed4  gcc/hwint.h
! e8e4cd46a35f3847ef63304c0831631b  gcc/ifcvt.cc
  1d252ebba03aa858df6822a8b59e1d4e  gcc/ifcvt.h
  55413f67957a351f7ca1b0a8a2f69a7c  gcc/inchash.cc
  f380ce65b15eedb6d55a9848beb1ec3b  gcc/inchash.h
--- 6495,6501 ----
  260dd898f6b9809f71a292b793d67324  gcc/hw-doloop.h
  4769eb51982f8ccb12764424698b464f  gcc/hwint.cc
  8826410aae6a5efbb3d335e5e3dceed4  gcc/hwint.h
! fb45151009d8fb2f049bceb3944e39c6  gcc/ifcvt.cc
  1d252ebba03aa858df6822a8b59e1d4e  gcc/ifcvt.h
  55413f67957a351f7ca1b0a8a2f69a7c  gcc/inchash.cc
  f380ce65b15eedb6d55a9848beb1ec3b  gcc/inchash.h
*************** ed81054ca33b28b1e20c8ccfb921eb10  gcc/in
*** 6506,6522 ****
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
  769443add1b7187045688cd8b1129647  gcc/int-vector-builder.h
  76df3f73b405209726466587252d27ce  gcc/internal-fn.cc
! 9f50a396585727515baa235ec39f1f04  gcc/internal-fn.def
  1a0765d6579bac8e055ff735b357f45d  gcc/internal-fn.h
  bcb802c64e78f80e8e46c799c7e449ad  gcc/intl.cc
  deb111e00b2b07aa631595045bce5003  gcc/intl.h
  47a65e558aff89879902e88b055c7b12  gcc/ipa-comdats.cc
! 588210bc45791eb781bb2b5373a32834  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  fa8e311233ba00f5613461330b7f36ea  gcc/ipa-devirt.cc
  0d19d962769ce2edd1bcfb39cf14e9b2  gcc/ipa-fnsummary.cc
  fef6f27045737cc29ebf2dbbd22dda02  gcc/ipa-fnsummary.h
! 622786ebb07c2d1849929c909e3eceab  gcc/ipa-free-lang-data.cc
  151286d02b3d36dcca2a63fe6ae51102  gcc/ipa-icf-gimple.cc
  9762b96eb0bd1d2d7968b5c2f51e8f43  gcc/ipa-icf-gimple.h
  005f3683b94c9cf2ef95442dcaaa8771  gcc/ipa-icf.cc
--- 6508,6524 ----
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
  769443add1b7187045688cd8b1129647  gcc/int-vector-builder.h
  76df3f73b405209726466587252d27ce  gcc/internal-fn.cc
! 1158b95ec9d7cf3397baafff01d80595  gcc/internal-fn.def
  1a0765d6579bac8e055ff735b357f45d  gcc/internal-fn.h
  bcb802c64e78f80e8e46c799c7e449ad  gcc/intl.cc
  deb111e00b2b07aa631595045bce5003  gcc/intl.h
  47a65e558aff89879902e88b055c7b12  gcc/ipa-comdats.cc
! 68fc102e7d4955f7b57d1852ba057623  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  fa8e311233ba00f5613461330b7f36ea  gcc/ipa-devirt.cc
  0d19d962769ce2edd1bcfb39cf14e9b2  gcc/ipa-fnsummary.cc
  fef6f27045737cc29ebf2dbbd22dda02  gcc/ipa-fnsummary.h
! a3882f8a9c03be47eb0deee0bd27e04d  gcc/ipa-free-lang-data.cc
  151286d02b3d36dcca2a63fe6ae51102  gcc/ipa-icf-gimple.cc
  9762b96eb0bd1d2d7968b5c2f51e8f43  gcc/ipa-icf-gimple.h
  005f3683b94c9cf2ef95442dcaaa8771  gcc/ipa-icf.cc
*************** d33136e7edecd120aa035f0e1ad240b0  gcc/ip
*** 6539,6545 ****
  62c7e947bcc30f9c3e539b08bba712d5  gcc/ipa-profile.cc
  be8b91a88b033749209c11844ab4ebd7  gcc/ipa-prop.cc
  444b35215f1c30938a9c7b34c8f51b7e  gcc/ipa-prop.h
! 33f941deca3150b6ccaa310cd69f68f2  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
  ee6c4ff9a86c5d0a68fa41c8da2b5c6f  gcc/ipa-ref.h
  e02101954d14c2f0b6a7667db7690ade  gcc/ipa-reference.cc
--- 6541,6547 ----
  62c7e947bcc30f9c3e539b08bba712d5  gcc/ipa-profile.cc
  be8b91a88b033749209c11844ab4ebd7  gcc/ipa-prop.cc
  444b35215f1c30938a9c7b34c8f51b7e  gcc/ipa-prop.h
! 1c585ae593227742840d2cccb610d475  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
  ee6c4ff9a86c5d0a68fa41c8da2b5c6f  gcc/ipa-ref.h
  e02101954d14c2f0b6a7667db7690ade  gcc/ipa-reference.cc
*************** b54054c495232a416b1cdea9032d1d9f  gcc/lo
*** 6687,6693 ****
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! 59453d363dea8462e92bbe1acae9b308  gcc/lra-constraints.cc
  ebe278d864d3a7e33fbcc46f02926248  gcc/lra-eliminations.cc
  c9f048755e3742fbe86e02e2b4b1eb6d  gcc/lra-int.h
  52ba28cd117bff034bd9a26fe150f692  gcc/lra-lives.cc
--- 6689,6695 ----
  05bf78e6d3e36587723b1177ffcd9c6e  gcc/lower-subreg.h
  755a196fed2cd7b5878159035d75b39b  gcc/lra-assigns.cc
  0232e051e662ebb7fd2fa507d9c581b8  gcc/lra-coalesce.cc
! cb8a8878d59beba7d0552408a9a2a0d3  gcc/lra-constraints.cc
  ebe278d864d3a7e33fbcc46f02926248  gcc/lra-eliminations.cc
  c9f048755e3742fbe86e02e2b4b1eb6d  gcc/lra-int.h
  52ba28cd117bff034bd9a26fe150f692  gcc/lra-lives.cc
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7689,7695 ****
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! ade42444980a103476912990f6e1f3f6  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
--- 7691,7697 ----
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! a161b307e52efe5b3b1bf0893389b736  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
*************** a1718f4e4de96a072fce29c3cef4017a  gcc/op
*** 7759,7765 ****
  933d872e7e60ed7a16f387f74cf5dcd7  gcc/optabs-tree.cc
  295bbec8fcdeeac30d6f914e52d4adc4  gcc/optabs-tree.h
  c9fef63de59454b93afa15203c1e321c  gcc/optabs.cc
! 08bf648f9dab3d3eecfab9a21adc35a6  gcc/optabs.def
  fe27687b66727b0800e152caad7a6829  gcc/optabs.h
  4b8341a8e70bcb44afdbe2e4be1dcc46  gcc/optc-gen.awk
  5c54b7f4a00895eb1ecfb4f8c209dcef  gcc/optc-save-gen.awk
--- 7761,7767 ----
  933d872e7e60ed7a16f387f74cf5dcd7  gcc/optabs-tree.cc
  295bbec8fcdeeac30d6f914e52d4adc4  gcc/optabs-tree.h
  c9fef63de59454b93afa15203c1e321c  gcc/optabs.cc
! 807000cbb143efac838499057d3a11dd  gcc/optabs.def
  fe27687b66727b0800e152caad7a6829  gcc/optabs.h
  4b8341a8e70bcb44afdbe2e4be1dcc46  gcc/optc-gen.awk
  5c54b7f4a00895eb1ecfb4f8c209dcef  gcc/optc-save-gen.awk
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8508,8519 ****
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
  84051f22ca8c9ee213931106395ac151  gcc/target-hooks-macros.h
  354306a484432bca2f94887455f25599  gcc/target-insns.def
! 2c18131ce2acc9e62b0e93cf4bc41c5b  gcc/target.def
  5e326cfe9b9871c8077b30f9a44e6663  gcc/target.h
  36518341b4945aa5d165121235c9e14f  gcc/targhooks.cc
  f0958b8c3fce1fd760a502da6e954283  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 0c35c06314f0dd1e6a8345b5cf16d2ed  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8510,8521 ----
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
  84051f22ca8c9ee213931106395ac151  gcc/target-hooks-macros.h
  354306a484432bca2f94887455f25599  gcc/target-insns.def
! 5d76e47656eeab889abf8256938b2e97  gcc/target.def
  5e326cfe9b9871c8077b30f9a44e6663  gcc/target.h
  36518341b4945aa5d165121235c9e14f  gcc/targhooks.cc
  f0958b8c3fce1fd760a502da6e954283  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 894401454de55ab436488bb19ee90d1a  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** f6d4bce8ba8df49a1c7315b135c3d5e0  gcc/te
*** 16546,16555 ****
  b26ffff4623ba2330c463463925f5247  gcc/testsuite/ada/acats-4/tests/cxa/cxai030.a
  3f9ada9ca43d632fda837d7f718e0cd7  gcc/testsuite/ada/acats-4/tests/cxa/cxai031.a
  097bfdc8930647a22747b2bdc8b7d141  gcc/testsuite/ada/acats-4/tests/cxa/cxai032.a
! d3055e7cce6588103985fbfbe4b90395  gcc/testsuite/ada/acats-4/tests/cxa/cxai033.a
! 63ab8aacc3a52716e5427c704b694acc  gcc/testsuite/ada/acats-4/tests/cxa/cxai034.a
! ce93a02b20cc46968316a829c7db9195  gcc/testsuite/ada/acats-4/tests/cxa/cxai035.a
! 466c6c8a8045366081c9fd24df4afb06  gcc/testsuite/ada/acats-4/tests/cxa/cxai036.a
  752fce74ef0e5c6390d38b7ad5ccf4b6  gcc/testsuite/ada/acats-4/tests/cxa/cxaia01.a
  caa672297960b6daf3215c83532dce37  gcc/testsuite/ada/acats-4/tests/cxa/cxaia02.a
  32f93f75ba46f2ca259c1a1fe4bbbf22  gcc/testsuite/ada/acats-4/tests/cxa/cxaia03.a
--- 16548,16557 ----
  b26ffff4623ba2330c463463925f5247  gcc/testsuite/ada/acats-4/tests/cxa/cxai030.a
  3f9ada9ca43d632fda837d7f718e0cd7  gcc/testsuite/ada/acats-4/tests/cxa/cxai031.a
  097bfdc8930647a22747b2bdc8b7d141  gcc/testsuite/ada/acats-4/tests/cxa/cxai032.a
! 408c9da0002837d911576eaf11cffa05  gcc/testsuite/ada/acats-4/tests/cxa/cxai033.a
! cae11ea8bfd30bc61203b4c474da5ae3  gcc/testsuite/ada/acats-4/tests/cxa/cxai034.a
! d54d1aa9f4301a29faadb75a8aea3edc  gcc/testsuite/ada/acats-4/tests/cxa/cxai035.a
! 3747e55eeabf74ed9ec853aa73a685c0  gcc/testsuite/ada/acats-4/tests/cxa/cxai036.a
  752fce74ef0e5c6390d38b7ad5ccf4b6  gcc/testsuite/ada/acats-4/tests/cxa/cxaia01.a
  caa672297960b6daf3215c83532dce37  gcc/testsuite/ada/acats-4/tests/cxa/cxaia02.a
  32f93f75ba46f2ca259c1a1fe4bbbf22  gcc/testsuite/ada/acats-4/tests/cxa/cxaia03.a
*************** d41d8cd98f00b204e9800998ecf8427e  gcc/te
*** 19600,19605 ****
--- 19602,19610 ----
  f963895d994b62510e687873776b4ef0  gcc/testsuite/c-c++-common/substring-location-PR-87562-1.c
  a05a712863ab77c00f035dbc3316dcf8  gcc/testsuite/c-c++-common/substring-location-PR-87721.c
  993f3902900220d0ab605caf29f79d05  gcc/testsuite/c-c++-common/taskloop-1.c
+ 5954df765528b3ac48d7c5a17f88a220  gcc/testsuite/c-c++-common/tls-attr-common.c
+ 870c519d9bdba9a9f38d1a458e552cc6  gcc/testsuite/c-c++-common/tls-attr-le-pic.c
+ 25693c785a14f8775324cf99cc5073d0  gcc/testsuite/c-c++-common/tls-attr-le-pie.c
  e3aa84ea02008121366d37e9c2eba817  gcc/testsuite/c-c++-common/tm/20100127.c
  b5356bca8211268199a255b3416bce8b  gcc/testsuite/c-c++-common/tm/20111206.c
  5a234c929abecaae0de0c8c8352206d7  gcc/testsuite/c-c++-common/tm/abort-1.c
*************** b1579268264426b91fb29ca4a7ae6672  gcc/te
*** 21078,21083 ****
--- 21083,21089 ----
  ed79cf5bf3c45230ee9187c4cf51338e  gcc/testsuite/g++.dg/abi/packed1.C
  a6094bf319c105760bebe41768865b66  gcc/testsuite/g++.dg/abi/param1.C
  dc8d04461395fe21c8df3c3ddc0eaefb  gcc/testsuite/g++.dg/abi/param2.C
+ c6ee91a6fae5891b271cf08faea94bc7  gcc/testsuite/g++.dg/abi/pr121801.C
  4f8a99ff3fb06bd92fa2824ba0222b0d  gcc/testsuite/g++.dg/abi/pr39188-1.h
  0b334e68ad96b9b585797769690bad26  gcc/testsuite/g++.dg/abi/pr39188-1a.C
  c96cb62975d4855a114a03ac254e17ce  gcc/testsuite/g++.dg/abi/pr39188-1b.C
*************** b0f94df77ae1f45f51ea4e2c6bb9691a  gcc/te
*** 27004,27009 ****
--- 27010,27017 ----
  2932dc127ada32f6fb144906d4c837c5  gcc/testsuite/g++.dg/cpp26/pack-indexing14.C
  42acddf57107ca62daf89ff86652698f  gcc/testsuite/g++.dg/cpp26/pack-indexing15.C
  36888ce54ce42641fb6e61af819e4031  gcc/testsuite/g++.dg/cpp26/pack-indexing16.C
+ 66ff6dfe6ddc544b4653391842e6eae8  gcc/testsuite/g++.dg/cpp26/pack-indexing17.C
+ 7b55370f3253f2eae6d541ae349b6268  gcc/testsuite/g++.dg/cpp26/pack-indexing17a.C
  72008855d5af1b25c44e1d4affa19785  gcc/testsuite/g++.dg/cpp26/pack-indexing2.C
  01e2e390b9329b3e619416e0bf8b3684  gcc/testsuite/g++.dg/cpp26/pack-indexing3.C
  8105a5f8078fd0ba5507cadc224b15ad  gcc/testsuite/g++.dg/cpp26/pack-indexing4.C
*************** ee36c7ebc03385f37bcba1c49e06c808  gcc/te
*** 27502,27507 ****
--- 27510,27516 ----
  c9a6ab7bc0f1947e843b9c7150ccb98c  gcc/testsuite/g++.dg/cpp2a/concepts-traits2.C
  a25a4c85f70241ed0e288dd36ade68a7  gcc/testsuite/g++.dg/cpp2a/concepts-traits3.C
  024b05cd463d21d4dec3d5089b33b061  gcc/testsuite/g++.dg/cpp2a/concepts-traits4.C
+ 7a21d9ffa8c304d56b68d16bdea51d55  gcc/testsuite/g++.dg/cpp2a/concepts-traits5.C
  427561cea6003909c32f28fbe3d276c7  gcc/testsuite/g++.dg/cpp2a/concepts-ttp1.C
  e9afe83f998c36b2fb7c1f09347d0bde  gcc/testsuite/g++.dg/cpp2a/concepts-ttp2.C
  61d4933dc5691f3ec1773e39ad6449b4  gcc/testsuite/g++.dg/cpp2a/concepts-ttp3.C
*************** bcf9b6873e48870b8f6014b5da708cd3  gcc/te
*** 29808,29813 ****
--- 29817,29823 ----
  8178424c28bf310e39866a3bc22ccb00  gcc/testsuite/g++.dg/ext/pr114409-2.C
  a17829a2880dfc08bbe88a800e8da670  gcc/testsuite/g++.dg/ext/pr114691.C
  8151d79e58fcd890533f5c325f86ae37  gcc/testsuite/g++.dg/ext/pr116545.C
+ 82346a2eb86bd9aa0f204ae959eb3b33  gcc/testsuite/g++.dg/ext/pr121678.C
  210171cdbd9571de1bfd894e6c809efa  gcc/testsuite/g++.dg/ext/pr17577.C
  d017f3273bbed79c882146d070c763a4  gcc/testsuite/g++.dg/ext/pr17577.h
  eb1830f7b92ca604956f6b57b3a6d3f4  gcc/testsuite/g++.dg/ext/pr27019.C
*************** a2b014e2e43329bb9803e683981e2a7c  gcc/te
*** 31616,31622 ****
  a1ec3c39e5a1beac0e1f9dbbc1635692  gcc/testsuite/g++.dg/lookup/operator-5a.C
  f5603b028cb5e4f040fc3af7776ea00e  gcc/testsuite/g++.dg/lookup/operator-6.C
  60fb08261559503592bcae8f4f347885  gcc/testsuite/g++.dg/lookup/operator-7.C
! 1d63b8dab73c84e20ebcf810602869f5  gcc/testsuite/g++.dg/lookup/operator-8.C
  ed588fcfdd755a45d961e507c96ba9e2  gcc/testsuite/g++.dg/lookup/pr21802.C
  2378e813c805e961b5f594f4a76ec56d  gcc/testsuite/g++.dg/lookup/pr60994.C
  e8c219b570d08e589efca8f832a6b0b3  gcc/testsuite/g++.dg/lookup/pr67074.C
--- 31626,31633 ----
  a1ec3c39e5a1beac0e1f9dbbc1635692  gcc/testsuite/g++.dg/lookup/operator-5a.C
  f5603b028cb5e4f040fc3af7776ea00e  gcc/testsuite/g++.dg/lookup/operator-6.C
  60fb08261559503592bcae8f4f347885  gcc/testsuite/g++.dg/lookup/operator-7.C
! 39473539be73f1fec8277d1351308d6a  gcc/testsuite/g++.dg/lookup/operator-8.C
! d4cc68c3b85ac22cfde7bacbae0bd6ce  gcc/testsuite/g++.dg/lookup/operator-8a.C
  ed588fcfdd755a45d961e507c96ba9e2  gcc/testsuite/g++.dg/lookup/pr21802.C
  2378e813c805e961b5f594f4a76ec56d  gcc/testsuite/g++.dg/lookup/pr60994.C
  e8c219b570d08e589efca8f832a6b0b3  gcc/testsuite/g++.dg/lookup/pr67074.C
*************** b4dd44f973b53dae3faddbc3dd5bd634  gcc/te
*** 31943,31950 ****
  366c09064796fa26fbf614a9a0354d57  gcc/testsuite/g++.dg/lto/odr-7_1.C
  cac1beb5973f2ae7f413286aea273726  gcc/testsuite/g++.dg/lto/odr-8_0.C
  06e1b3ad0dd33edf678d2cd0d58c62f0  gcc/testsuite/g++.dg/lto/odr-8_1.C
! 8b0aae3760bbbdbb56a12a24c02e7d7e  gcc/testsuite/g++.dg/lto/pr101396_0.C
! ac5555b4df88275d04e41aa95b0aca9a  gcc/testsuite/g++.dg/lto/pr101396_1.C
  57e4a1572912531a0ef7ae5e66a36910  gcc/testsuite/g++.dg/lto/pr105399_0.C
  6e7e7fc204b3df6d8de9823aac948376  gcc/testsuite/g++.dg/lto/pr107467_0.C
  0a39d2e9c16962015b5adf8bff3214c8  gcc/testsuite/g++.dg/lto/pr108772_0.C
--- 31954,31961 ----
  366c09064796fa26fbf614a9a0354d57  gcc/testsuite/g++.dg/lto/odr-7_1.C
  cac1beb5973f2ae7f413286aea273726  gcc/testsuite/g++.dg/lto/odr-8_0.C
  06e1b3ad0dd33edf678d2cd0d58c62f0  gcc/testsuite/g++.dg/lto/odr-8_1.C
! c5c8cccc47d1c38c5fcaf0b5019436c6  gcc/testsuite/g++.dg/lto/pr101396_0.C
! f009ccdcd68a9165d7d85f0d1a54ceb1  gcc/testsuite/g++.dg/lto/pr101396_1.C
  57e4a1572912531a0ef7ae5e66a36910  gcc/testsuite/g++.dg/lto/pr105399_0.C
  6e7e7fc204b3df6d8de9823aac948376  gcc/testsuite/g++.dg/lto/pr107467_0.C
  0a39d2e9c16962015b5adf8bff3214c8  gcc/testsuite/g++.dg/lto/pr108772_0.C
*************** f1d9eed0025353353019a54838c87ed9  gcc/te
*** 31958,31963 ****
--- 31969,31977 ----
  170fab8219ca5d2db78f5026f9bf82c8  gcc/testsuite/g++.dg/lto/pr119067_0.C
  c2fbc4281a4940f3ba50c956b391e55a  gcc/testsuite/g++.dg/lto/pr119067_1.C
  f8d194a431c9313cc0e794b5fcc15ac6  gcc/testsuite/g++.dg/lto/pr119614_0.C
+ fca1ecf794ece1959ac2707634e0c851  gcc/testsuite/g++.dg/lto/pr121831_0.C
+ 1e3973e8017bb39e0770b6c9334d9d09  gcc/testsuite/g++.dg/lto/pr121831_1.C
+ d15d49ffd84e37cdcbb1e23564c8c44e  gcc/testsuite/g++.dg/lto/pr121935_0.C
  ba9b686c163762488051ec4094a838b2  gcc/testsuite/g++.dg/lto/pr40818_0.C
  08a786b250f802e56e458c7d60a358fc  gcc/testsuite/g++.dg/lto/pr42987_0.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/lto/pr42987_1.C
*************** cb6fd3c7fff8631ed4460da9de6e631e  gcc/te
*** 32111,32116 ****
--- 32125,32132 ----
  3530117fb493e047e12aef4eb9b47cdb  gcc/testsuite/g++.dg/modules/access-1_c.C
  5d129e8bc113c7e51cafe5981b65f2b7  gcc/testsuite/g++.dg/modules/adhoc-1_a.C
  3317b0bbfaacf10662d5994de76ea820  gcc/testsuite/g++.dg/modules/adhoc-1_b.C
+ d27e4ee4f5f5e0db3eac539e5050b624  gcc/testsuite/g++.dg/modules/adl-10_a.C
+ d975bcfcc66f10d16ed8c046fec4ba04  gcc/testsuite/g++.dg/modules/adl-10_b.C
  9c824c1a28f6bcf79fd72186d79fe93c  gcc/testsuite/g++.dg/modules/adl-1_a.C
  3bb31e23ac383185d41cda2c5fcbdaf3  gcc/testsuite/g++.dg/modules/adl-1_b.C
  46103f57f3287176308fc33634d7da8e  gcc/testsuite/g++.dg/modules/adl-1_c.C
*************** a5dea2e74f2c8c8639f84dc0e84112a1  gcc/te
*** 32255,32261 ****
  843f2b9623af987c9a85bd4cc2de4466  gcc/testsuite/g++.dg/modules/cexpr-5_b.C
  9e8b6b97c14fc8ba72560634615d4fbe  gcc/testsuite/g++.dg/modules/circ-1_a.C
  98607f9dff6572a0baa9956e2dd1be8c  gcc/testsuite/g++.dg/modules/circ-1_b.C
! e7d806e1771c11cb72e41af12e6d57e4  gcc/testsuite/g++.dg/modules/circ-1_c.C
  cedd15f6c5ea2087db7309f8e58574a4  gcc/testsuite/g++.dg/modules/circ-1_d.C
  188cf637178b71d74de58bdbada43b0d  gcc/testsuite/g++.dg/modules/class-10_a.H
  de9e83ce6d7d5406399b3d0d434e98a7  gcc/testsuite/g++.dg/modules/class-10_b.C
--- 32271,32277 ----
  843f2b9623af987c9a85bd4cc2de4466  gcc/testsuite/g++.dg/modules/cexpr-5_b.C
  9e8b6b97c14fc8ba72560634615d4fbe  gcc/testsuite/g++.dg/modules/circ-1_a.C
  98607f9dff6572a0baa9956e2dd1be8c  gcc/testsuite/g++.dg/modules/circ-1_b.C
! 6a38e3629d2e571902a3d1d7d54905e4  gcc/testsuite/g++.dg/modules/circ-1_c.C
  cedd15f6c5ea2087db7309f8e58574a4  gcc/testsuite/g++.dg/modules/circ-1_d.C
  188cf637178b71d74de58bdbada43b0d  gcc/testsuite/g++.dg/modules/class-10_a.H
  de9e83ce6d7d5406399b3d0d434e98a7  gcc/testsuite/g++.dg/modules/class-10_b.C
*************** a016afd83ff8628a76ca1feb679ba84c  gcc/te
*** 32393,32399 ****
  88324748ff967fdba289a780d7a504a6  gcc/testsuite/g++.dg/modules/default-arg-3_a.H
  c33aa5d0342c08adc3d6989bf1a5008d  gcc/testsuite/g++.dg/modules/default-arg-3_b.C
  bba287daf0d821b16709aff8dae96606  gcc/testsuite/g++.dg/modules/default-arg-4_a.C
! 17d00b42bb974e7d57bc1342855ee907  gcc/testsuite/g++.dg/modules/default-arg-4_b.C
  ea68e74f44f4c82e8ae6f2c690b55c60  gcc/testsuite/g++.dg/modules/deferred-1.h
  57e2a4b0e73953c7ade22c1689af65d7  gcc/testsuite/g++.dg/modules/deferred-1_a.H
  3eb6987f167a4bbf09756b47c0721723  gcc/testsuite/g++.dg/modules/deferred-1_b.C
--- 32409,32415 ----
  88324748ff967fdba289a780d7a504a6  gcc/testsuite/g++.dg/modules/default-arg-3_a.H
  c33aa5d0342c08adc3d6989bf1a5008d  gcc/testsuite/g++.dg/modules/default-arg-3_b.C
  bba287daf0d821b16709aff8dae96606  gcc/testsuite/g++.dg/modules/default-arg-4_a.C
! 11533fcc305194804e434d9c9ba835fa  gcc/testsuite/g++.dg/modules/default-arg-4_b.C
  ea68e74f44f4c82e8ae6f2c690b55c60  gcc/testsuite/g++.dg/modules/deferred-1.h
  57e2a4b0e73953c7ade22c1689af65d7  gcc/testsuite/g++.dg/modules/deferred-1_a.H
  3eb6987f167a4bbf09756b47c0721723  gcc/testsuite/g++.dg/modules/deferred-1_b.C
*************** bf47d0291689c8a86ba720a7aebd052a  gcc/te
*** 32621,32626 ****
--- 32637,32645 ----
  b4d53c10532737d55c31b6daeea36cb7  gcc/testsuite/g++.dg/modules/import-1_f.C
  7cd03b6136521b0946018cd6213c0277  gcc/testsuite/g++.dg/modules/import-1_g.C
  750579c756e3c94a08cc23dcfda0b714  gcc/testsuite/g++.dg/modules/import-2.C
+ e774f3e5c1bf28f75ea3ebf9a9ae30ce  gcc/testsuite/g++.dg/modules/import-3_a.C
+ 3f2b89325965026e592898504f8b1f72  gcc/testsuite/g++.dg/modules/import-3_b.C
+ 1bf6d9c2a27f0a6ff2d1860eb895115b  gcc/testsuite/g++.dg/modules/import-3_c.C
  ff98048b9b36b54c9905a7a1eb0d5f49  gcc/testsuite/g++.dg/modules/inc-xlate-1.map
  b7927bd395b5232680f2db58be05462a  gcc/testsuite/g++.dg/modules/inc-xlate-1_a.H
  69660b6585b73f0ced702fb903e109c8  gcc/testsuite/g++.dg/modules/inc-xlate-1_b.H
*************** d5075b90a1d0dfe23d60cb4ab1413d7b  gcc/te
*** 32850,32855 ****
--- 32869,32876 ----
  39816ae89e53f3a7efa8b229509ef25c  gcc/testsuite/g++.dg/modules/lto-2_b.C
  1590072f5e6f147b1a0b412f0c3a37f9  gcc/testsuite/g++.dg/modules/lto-3_a.H
  9da9e8d56d8e1f9eeaf9a5d409c93b0b  gcc/testsuite/g++.dg/modules/lto-3_b.C
+ 0f59ad51956d4c99091da1599a8fa265  gcc/testsuite/g++.dg/modules/lto-4_a.C
+ 67b868867a2767bc6da6fc527d8c89f5  gcc/testsuite/g++.dg/modules/lto-4_b.C
  16c505e7ec3f958c4b72ee9779d716a2  gcc/testsuite/g++.dg/modules/macloc-1_a.C
  d5fee47db8f5a2cba3951a9d1bca86e8  gcc/testsuite/g++.dg/modules/macloc-1_b.C
  2a85bdb214d9bf838d19743ae52a8eb1  gcc/testsuite/g++.dg/modules/macloc-1_c.C
*************** b1edad776f663405432e237b01562da9  gcc/te
*** 32960,32968 ****
  386f61018ee7c77f24d006af7906190f  gcc/testsuite/g++.dg/modules/merge-9_b.C
  b81fed6364eb58ee2407877494605bcd  gcc/testsuite/g++.dg/modules/mod-decl-0-2a.C
  d18ea4b05b1e0f0d55713abe96ac2a67  gcc/testsuite/g++.dg/modules/mod-decl-0.C
! 183f57c1fd74b230d207e0a4271d18df  gcc/testsuite/g++.dg/modules/mod-decl-1.C
  2ab7e1970f6fdd4ecc60b34844bd2ce3  gcc/testsuite/g++.dg/modules/mod-decl-2_a.C
! b490c4db8daf8e9d41aeffc432a9e3f2  gcc/testsuite/g++.dg/modules/mod-decl-2_b.C
  659c2ac0c2c7658f7b01141e2c497180  gcc/testsuite/g++.dg/modules/mod-decl-2_c.C
  e9631cc2802ad91a3b7db2f86a6ceb02  gcc/testsuite/g++.dg/modules/mod-decl-3.C
  edf99b9cce0faf25cf9ad4ef1969818c  gcc/testsuite/g++.dg/modules/mod-decl-5_a.C
--- 32981,32989 ----
  386f61018ee7c77f24d006af7906190f  gcc/testsuite/g++.dg/modules/merge-9_b.C
  b81fed6364eb58ee2407877494605bcd  gcc/testsuite/g++.dg/modules/mod-decl-0-2a.C
  d18ea4b05b1e0f0d55713abe96ac2a67  gcc/testsuite/g++.dg/modules/mod-decl-0.C
! c0071e86f2256a84a36d91c76980a8bb  gcc/testsuite/g++.dg/modules/mod-decl-1.C
  2ab7e1970f6fdd4ecc60b34844bd2ce3  gcc/testsuite/g++.dg/modules/mod-decl-2_a.C
! be5eeeb154ea473699b2ad36025d37e5  gcc/testsuite/g++.dg/modules/mod-decl-2_b.C
  659c2ac0c2c7658f7b01141e2c497180  gcc/testsuite/g++.dg/modules/mod-decl-2_c.C
  e9631cc2802ad91a3b7db2f86a6ceb02  gcc/testsuite/g++.dg/modules/mod-decl-3.C
  edf99b9cce0faf25cf9ad4ef1969818c  gcc/testsuite/g++.dg/modules/mod-decl-5_a.C
*************** edf99b9cce0faf25cf9ad4ef1969818c  gcc/te
*** 32970,32975 ****
--- 32991,32997 ----
  546af556546895b3c543b80b12eba73f  gcc/testsuite/g++.dg/modules/mod-decl-6.C
  c1c449e221588ea7607436af471fcef1  gcc/testsuite/g++.dg/modules/mod-decl-7.C
  30d804005dedccc8094253a21fd112d6  gcc/testsuite/g++.dg/modules/mod-decl-8.C
+ 3c534a7a360248fbd1ed205a887dc49d  gcc/testsuite/g++.dg/modules/mod-decl-9.C
  7f70d1873bf472647d158f20402bd01c  gcc/testsuite/g++.dg/modules/mod-exp-1_a.C
  974215233d26b773e6a1ff1cfa4a376e  gcc/testsuite/g++.dg/modules/mod-exp-1_b.C
  618ce9aafa84ba02f10e1688dfda7ce4  gcc/testsuite/g++.dg/modules/mod-imp-1_a.C
*************** e957d0bb77992ee1df76972e1b650438  gcc/te
*** 33113,33118 ****
--- 33135,33144 ----
  b526eccf4125841f7887f3c52a4ad9c3  gcc/testsuite/g++.dg/modules/p1689-target-default.exp.ddi
  a3be9aad9d10fc377af4164832c226c3  gcc/testsuite/g++.dg/modules/pack-index-1_a.C
  7b28120ef6b48516bc33d430f719231f  gcc/testsuite/g++.dg/modules/pack-index-1_b.C
+ afab773c25b7dd1da9c63c46a8e56b96  gcc/testsuite/g++.dg/modules/part-10_a.C
+ 035af910866cb4d5ef467691a00390ef  gcc/testsuite/g++.dg/modules/part-10_b.C
+ 61c11bba6e9e0d2acb6c526bdf45a817  gcc/testsuite/g++.dg/modules/part-10_c.C
+ 45aaddfd6bcadefc6a897cad2f3c8bbb  gcc/testsuite/g++.dg/modules/part-10_d.C
  c05001e1ed1bc8701ae61710ad3585cd  gcc/testsuite/g++.dg/modules/part-1_a.C
  8cc6c00af73d534c5bcd66d9d7757f8c  gcc/testsuite/g++.dg/modules/part-1_b.C
  103cfc3318415410b659f66bfb16f1bf  gcc/testsuite/g++.dg/modules/part-1_c.C
*************** b203d4c40a623398d42b8317bb02be40  gcc/te
*** 33313,33319 ****
  fcd1d8752bf031b8281ba50f1df03921  gcc/testsuite/g++.dg/modules/pr99174-1_a.C
  f6ff77ccf9f6f071738a6e9b57b6c50c  gcc/testsuite/g++.dg/modules/pr99174-1_b.C
  c72f8c02b8850ae0ab3c120cd41906d9  gcc/testsuite/g++.dg/modules/pr99174-1_c.C
! 7b4190744054d7227b920ab111bb7e2f  gcc/testsuite/g++.dg/modules/pr99174.H
  9bd074c360bd29524e20b4eaa803a41f  gcc/testsuite/g++.dg/modules/pr99187.C
  9f93a8608e38c668198868d8ea01a717  gcc/testsuite/g++.dg/modules/pr99208_a.C
  bd48a321958cd7a20645f65f2d7dc5bb  gcc/testsuite/g++.dg/modules/pr99208_b.C
--- 33339,33345 ----
  fcd1d8752bf031b8281ba50f1df03921  gcc/testsuite/g++.dg/modules/pr99174-1_a.C
  f6ff77ccf9f6f071738a6e9b57b6c50c  gcc/testsuite/g++.dg/modules/pr99174-1_b.C
  c72f8c02b8850ae0ab3c120cd41906d9  gcc/testsuite/g++.dg/modules/pr99174-1_c.C
! ed12c375840353637924f6c1d37d2b9b  gcc/testsuite/g++.dg/modules/pr99174.H
  9bd074c360bd29524e20b4eaa803a41f  gcc/testsuite/g++.dg/modules/pr99187.C
  9f93a8608e38c668198868d8ea01a717  gcc/testsuite/g++.dg/modules/pr99208_a.C
  bd48a321958cd7a20645f65f2d7dc5bb  gcc/testsuite/g++.dg/modules/pr99208_b.C
*************** abc37af969d1e3eb6c154521bc4614aa  gcc/te
*** 37536,37541 ****
--- 37562,37568 ----
  7e8484ec05c7aa22b9de8e440eb62ad6  gcc/testsuite/g++.dg/tls/pr102642.C
  38dc881d7d74999fc87ed1a57cd80467  gcc/testsuite/g++.dg/tls/pr107393-1.C
  3e8b82ad37eda79842616d21d72f67db  gcc/testsuite/g++.dg/tls/pr107393-2.C
+ 4d0f6d5fd9dcc1027b43da5343e07659  gcc/testsuite/g++.dg/tls/pr121889.C
  abcd9d688bd97352cf2201ae04eb0bcd  gcc/testsuite/g++.dg/tls/pr66808.C
  5b67d09a03c0a87ddd8fb4065b354311  gcc/testsuite/g++.dg/tls/pr69000.C
  0ceb6a01aeecd4ce8dd293985c91a3de  gcc/testsuite/g++.dg/tls/pr77285-1.C
*************** f298eddbaaad3dfdc15f6cf9683ff08a  gcc/te
*** 37797,37802 ****
--- 37824,37830 ----
  9cede7e8b587157ccdf0f9f6667d6cc8  gcc/testsuite/g++.dg/torture/pr119778.C
  34ccf862a19942e4a76e7409c03669c6  gcc/testsuite/g++.dg/torture/pr120119-1.C
  a7a00125ef903c9e5ba25788e8c60eab  gcc/testsuite/g++.dg/torture/pr120721.C
+ 75b55c517ba9c0f47c83851f084cb294  gcc/testsuite/g++.dg/torture/pr121870.C
  161154ed9f6193a2a7da119e068c3f3f  gcc/testsuite/g++.dg/torture/pr27218.C
  a84e9fff95df4801f8e582fbc33303b8  gcc/testsuite/g++.dg/torture/pr30252.C
  e980bf95890544d46879b89f7aa98df6  gcc/testsuite/g++.dg/torture/pr30567.C
*************** d8ba4090976aa85f574f622bc3ac9d1f  gcc/te
*** 43421,43426 ****
--- 43449,43456 ----
  f23b91fd4df934b4b8cb89c14e082b05  gcc/testsuite/g++.target/i386/interference.C
  0ec10c6dd8c46db7332b15201fba84ba  gcc/testsuite/g++.target/i386/m128-check.h
  a1f73425439294ed2e5c470eb6a67f31  gcc/testsuite/g++.target/i386/m256-check.h
+ 938f3d3aa97c11e636572fd743ee72b6  gcc/testsuite/g++.target/i386/mangle-ldbl-1.C
+ fb6172109b269722e02aa230bd3522d8  gcc/testsuite/g++.target/i386/mangle-ldbl-2.C
  ae8574e23abf3d9af1504b3bec6f9ec6  gcc/testsuite/g++.target/i386/mangling-alias1.C
  93d56d0b4495ed65b837bce8186f4749  gcc/testsuite/g++.target/i386/memset-pr101366-1.C
  776f72fccf4d8af261b31189dad1c7ee  gcc/testsuite/g++.target/i386/memset-pr101366-2.C
*************** dfaa547e8fb7df38c4d964cefef4b708  gcc/te
*** 43643,43648 ****
--- 43673,43680 ----
  f13d97450413e73ef42096f6d86f33b9  gcc/testsuite/g++.target/loongarch/vect-copysign-negconst-run.C
  20d9436c682a4415acafb5c98046ba99  gcc/testsuite/g++.target/loongarch/vect-copysign-negconst.C
  e955a58000d134cabde59ec691f4da15  gcc/testsuite/g++.target/m68k/m68k.exp
+ 81632d210f253f0896365b822284f2fb  gcc/testsuite/g++.target/m68k/mangle-ldbl-1.C
+ 46b65ffac45b6dbad83a94dc6387d5b7  gcc/testsuite/g++.target/m68k/mangle-ldbl-2.C
  a1d5220e55816987e989ecef9b9914ad  gcc/testsuite/g++.target/m68k/pr116244.C
  0326a0afb833c5dbd49b5d623c8dd93b  gcc/testsuite/g++.target/mips/cxx17_empty_base.C
  473a68ed92689e2d9fa7d3386b6f5709  gcc/testsuite/g++.target/mips/mips.exp
*************** b4cc34b145ee2695a25e012a95c4991b  gcc/te
*** 48491,48496 ****
--- 48523,48530 ----
  617d532fb1eddbd793d9f4f0f742e63c  gcc/testsuite/gcc.dg/Wreturn-mismatch-4.c
  7aa7c48f8cb83fb4ebee162da3c9b985  gcc/testsuite/gcc.dg/Wreturn-mismatch-5.c
  efccecaeed935b96702d1ddfa3df8c13  gcc/testsuite/gcc.dg/Wreturn-mismatch-6.c
+ e3876d97f839271f4168ca208fff3b3e  gcc/testsuite/gcc.dg/Wreturn-nested-1.c
+ 895e2eb756376d6c5f90e07ac14679e9  gcc/testsuite/gcc.dg/Wreturn-nested-2.c
  6fe9a73749a8da4ecb255e790a1cc26f  gcc/testsuite/gcc.dg/Wreturn-type.c
  13346214a933b039e18e4797462ec5c7  gcc/testsuite/gcc.dg/Wreturn-type2.c
  1566816b16d321a8375c1a99ca768245  gcc/testsuite/gcc.dg/Wreturn-type3.c
*************** b3dd7695cafc782eb7786677833eb8d0  gcc/te
*** 48675,48680 ****
--- 48709,48716 ----
  8dda1d9f2869873526f33401a22c0fdd  gcc/testsuite/gcc.dg/Wtraditional-conversion-2.c
  a993425606a320dabd8cdab4291f3f58  gcc/testsuite/gcc.dg/Wtraditional-conversion-3.c
  d0cf5da873f60ffed04db27addaddbc2  gcc/testsuite/gcc.dg/Wtraditional-conversion.c
+ 0da3b70d18a2610bd3bf89011dd3445d  gcc/testsuite/gcc.dg/Wtrampolines-2.c
+ d895bf0f05a8d47f13c69801b67a7a08  gcc/testsuite/gcc.dg/Wtrampolines-3.c
  78aae72048361e8d0b7698f3eb592160  gcc/testsuite/gcc.dg/Wtrampolines.c
  2347d4bb7ee3bb8370c5d630037dad8c  gcc/testsuite/gcc.dg/Wtype-limits-Wextra.c
  5e19c5bcf607ee7e7a37111eb99adade  gcc/testsuite/gcc.dg/Wtype-limits-no.c
*************** f60c7b0f361b02f30b6eca3c14c7a5ed  gcc/te
*** 49279,49289 ****
  cc74ad07bc21697eab1ac4bdbb25f0f5  gcc/testsuite/gcc.dg/asm-hard-reg-6.c
  1a27715b4b755fb46b13300fd15e4690  gcc/testsuite/gcc.dg/asm-hard-reg-7.c
  518c17261bb078d2460f83de54b6ca4e  gcc/testsuite/gcc.dg/asm-hard-reg-8.c
! 6efc44e8421733f17459df29fad822ab  gcc/testsuite/gcc.dg/asm-hard-reg-error-1.c
  9db82ff602331dd327582c106428d7c7  gcc/testsuite/gcc.dg/asm-hard-reg-error-2.c
  b7d7ad2352b64cd5b5f59527de4a95d9  gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c
! 0ad9fe09c331698259e82b017fc2ad67  gcc/testsuite/gcc.dg/asm-hard-reg-error-4.c
! 48a03a36e0e3524536d964fce50cc8d7  gcc/testsuite/gcc.dg/asm-hard-reg-error-5.c
  6c3cba24c3d3fbf660605697935b9be5  gcc/testsuite/gcc.dg/asm-names.c
  9c3b7de14ce6ac49627b91e2808376e5  gcc/testsuite/gcc.dg/asm-pr24146.c
  bb1414d3448a4d73560e8bf9f884913a  gcc/testsuite/gcc.dg/asm-qual-1.c
--- 49315,49325 ----
  cc74ad07bc21697eab1ac4bdbb25f0f5  gcc/testsuite/gcc.dg/asm-hard-reg-6.c
  1a27715b4b755fb46b13300fd15e4690  gcc/testsuite/gcc.dg/asm-hard-reg-7.c
  518c17261bb078d2460f83de54b6ca4e  gcc/testsuite/gcc.dg/asm-hard-reg-8.c
! d91cbead950670110f9f5469da62fe7e  gcc/testsuite/gcc.dg/asm-hard-reg-error-1.c
  9db82ff602331dd327582c106428d7c7  gcc/testsuite/gcc.dg/asm-hard-reg-error-2.c
  b7d7ad2352b64cd5b5f59527de4a95d9  gcc/testsuite/gcc.dg/asm-hard-reg-error-3.c
! 524d418a9c4592d83ab9f5d9048f817c  gcc/testsuite/gcc.dg/asm-hard-reg-error-4.c
! a4862e2e0b5c04818a6438ae16091cec  gcc/testsuite/gcc.dg/asm-hard-reg-error-5.c
  6c3cba24c3d3fbf660605697935b9be5  gcc/testsuite/gcc.dg/asm-names.c
  9c3b7de14ce6ac49627b91e2808376e5  gcc/testsuite/gcc.dg/asm-pr24146.c
  bb1414d3448a4d73560e8bf9f884913a  gcc/testsuite/gcc.dg/asm-qual-1.c
*************** ceea17365edd23ebeee261b54fa830ff  gcc/te
*** 49303,49314 ****
  e02d18b933cd31187ef17173ef98db12  gcc/testsuite/gcc.dg/atomic-compare-exchange-2.c
  550a65284e1b6454e4da4c03ffb9cdb8  gcc/testsuite/gcc.dg/atomic-compare-exchange-3.c
  287e9415eadf96bfb96497defdc68310  gcc/testsuite/gcc.dg/atomic-compare-exchange-4.c
! 2c3b610a871fc5f2e3dcc453cf1d067b  gcc/testsuite/gcc.dg/atomic-compare-exchange-5.c
  63d32a9901a6b00e2c2e9d3bb76aace5  gcc/testsuite/gcc.dg/atomic-exchange-1.c
  289dc7bffd031ee0b3cbfe8e9e9f9474  gcc/testsuite/gcc.dg/atomic-exchange-2.c
  8fad7f08b6fee0ca4b76714770e57129  gcc/testsuite/gcc.dg/atomic-exchange-3.c
  12ba26ba6d9ca42590a7dc16bcd19c1a  gcc/testsuite/gcc.dg/atomic-exchange-4.c
! 249767b6183b7a0d00443f997f50f805  gcc/testsuite/gcc.dg/atomic-exchange-5.c
  692b1edce3ec7ca95a8ff1f3274c7c17  gcc/testsuite/gcc.dg/atomic-fence.c
  40f4c2530e3e7d01d27faab1d79d493a  gcc/testsuite/gcc.dg/atomic-fetch-bool.c
  b0ef609e3671be889eb71f25fd978656  gcc/testsuite/gcc.dg/atomic-flag.c
--- 49339,49350 ----
  e02d18b933cd31187ef17173ef98db12  gcc/testsuite/gcc.dg/atomic-compare-exchange-2.c
  550a65284e1b6454e4da4c03ffb9cdb8  gcc/testsuite/gcc.dg/atomic-compare-exchange-3.c
  287e9415eadf96bfb96497defdc68310  gcc/testsuite/gcc.dg/atomic-compare-exchange-4.c
! bb1c362c6b10b75a99b90f5ed06c8536  gcc/testsuite/gcc.dg/atomic-compare-exchange-5.c
  63d32a9901a6b00e2c2e9d3bb76aace5  gcc/testsuite/gcc.dg/atomic-exchange-1.c
  289dc7bffd031ee0b3cbfe8e9e9f9474  gcc/testsuite/gcc.dg/atomic-exchange-2.c
  8fad7f08b6fee0ca4b76714770e57129  gcc/testsuite/gcc.dg/atomic-exchange-3.c
  12ba26ba6d9ca42590a7dc16bcd19c1a  gcc/testsuite/gcc.dg/atomic-exchange-4.c
! 7a6e183425adbe93d2dcddbb0aa54456  gcc/testsuite/gcc.dg/atomic-exchange-5.c
  692b1edce3ec7ca95a8ff1f3274c7c17  gcc/testsuite/gcc.dg/atomic-fence.c
  40f4c2530e3e7d01d27faab1d79d493a  gcc/testsuite/gcc.dg/atomic-fetch-bool.c
  b0ef609e3671be889eb71f25fd978656  gcc/testsuite/gcc.dg/atomic-flag.c
*************** a7301ca78640eb0fd9f6dbfaba1a0d39  gcc/te
*** 49320,49326 ****
  b1998ee17242ce05e154d6665cbbe6e9  gcc/testsuite/gcc.dg/atomic-load-2.c
  089b633ec721221e134eb2a3453b1321  gcc/testsuite/gcc.dg/atomic-load-3.c
  2d61450adcac745207ef6b91c4b7f242  gcc/testsuite/gcc.dg/atomic-load-4.c
! b782a9319c78e4cd48d440f6571114fb  gcc/testsuite/gcc.dg/atomic-load-5.c
  54e0383156b91e89c615fee2f0e9685a  gcc/testsuite/gcc.dg/atomic-lockfree-aux.c
  672785de3be6eb365c5b5c7e699b8a5f  gcc/testsuite/gcc.dg/atomic-lockfree.c
  3915600ec7069639d41efde3f9c5015f  gcc/testsuite/gcc.dg/atomic-noinline-aux.c
--- 49356,49362 ----
  b1998ee17242ce05e154d6665cbbe6e9  gcc/testsuite/gcc.dg/atomic-load-2.c
  089b633ec721221e134eb2a3453b1321  gcc/testsuite/gcc.dg/atomic-load-3.c
  2d61450adcac745207ef6b91c4b7f242  gcc/testsuite/gcc.dg/atomic-load-4.c
! c0ad245906ede3c6ad6d0cc52fca8845  gcc/testsuite/gcc.dg/atomic-load-5.c
  54e0383156b91e89c615fee2f0e9685a  gcc/testsuite/gcc.dg/atomic-lockfree-aux.c
  672785de3be6eb365c5b5c7e699b8a5f  gcc/testsuite/gcc.dg/atomic-lockfree.c
  3915600ec7069639d41efde3f9c5015f  gcc/testsuite/gcc.dg/atomic-noinline-aux.c
*************** b782a9319c78e4cd48d440f6571114fb  gcc/te
*** 49329,49335 ****
  03a845cbf6612332113df329921b0f2d  gcc/testsuite/gcc.dg/atomic-op-2.c
  567237db781deb12b3e30ebd74cc0f98  gcc/testsuite/gcc.dg/atomic-op-3.c
  e7710598dce73052d83e8bc41ad3e45c  gcc/testsuite/gcc.dg/atomic-op-4.c
! 1d863d254d9240422285f0c9e26e523d  gcc/testsuite/gcc.dg/atomic-op-5.c
  871f2213830251361d9506ad9b05ab9c  gcc/testsuite/gcc.dg/atomic-op-6.c
  0c559132ac4793a69b667808c285dafb  gcc/testsuite/gcc.dg/atomic-op-optimize.c
  0eb08d386ca84b3bbfc6715587d8da62  gcc/testsuite/gcc.dg/atomic-param.c
--- 49365,49371 ----
  03a845cbf6612332113df329921b0f2d  gcc/testsuite/gcc.dg/atomic-op-2.c
  567237db781deb12b3e30ebd74cc0f98  gcc/testsuite/gcc.dg/atomic-op-3.c
  e7710598dce73052d83e8bc41ad3e45c  gcc/testsuite/gcc.dg/atomic-op-4.c
! fb39a474862cb957623e961c36f179c5  gcc/testsuite/gcc.dg/atomic-op-5.c
  871f2213830251361d9506ad9b05ab9c  gcc/testsuite/gcc.dg/atomic-op-6.c
  0c559132ac4793a69b667808c285dafb  gcc/testsuite/gcc.dg/atomic-op-optimize.c
  0eb08d386ca84b3bbfc6715587d8da62  gcc/testsuite/gcc.dg/atomic-param.c
*************** a461c4051aa09ddd6b2950b456a5e208  gcc/te
*** 49339,49346 ****
  545525b36d206ad84981240a7c2026ed  gcc/testsuite/gcc.dg/atomic-store-2.c
  b6d936bcef333630cc9629b477556dad  gcc/testsuite/gcc.dg/atomic-store-3.c
  cfbaa184996beeec40d054222582f88d  gcc/testsuite/gcc.dg/atomic-store-4.c
! 46ad754bc98b69bc0f3db1488d026dc2  gcc/testsuite/gcc.dg/atomic-store-5.c
! ce7e52f61e6fb003d8ae0bf9772503eb  gcc/testsuite/gcc.dg/atomic-store-6.c
  0d41954d5339fb75b9db1d26cd65fbe1  gcc/testsuite/gcc.dg/atomic/atomic.exp
  c341a56eb40ffc48dba93161f0413185  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-1.c
  fc7bfd846491d840116f75940e9fa4d5  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-2.c
--- 49375,49382 ----
  545525b36d206ad84981240a7c2026ed  gcc/testsuite/gcc.dg/atomic-store-2.c
  b6d936bcef333630cc9629b477556dad  gcc/testsuite/gcc.dg/atomic-store-3.c
  cfbaa184996beeec40d054222582f88d  gcc/testsuite/gcc.dg/atomic-store-4.c
! d18dbc72ab4cee689682b2e6743a36df  gcc/testsuite/gcc.dg/atomic-store-5.c
! 5a5c3085ac5542c9934508d99f345231  gcc/testsuite/gcc.dg/atomic-store-6.c
  0d41954d5339fb75b9db1d26cd65fbe1  gcc/testsuite/gcc.dg/atomic/atomic.exp
  c341a56eb40ffc48dba93161f0413185  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-1.c
  fc7bfd846491d840116f75940e9fa4d5  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-2.c
*************** d217543f954eb3f31e246355824f653a  gcc/te
*** 49709,49714 ****
--- 49745,49751 ----
  7d02ff9539e664bbbcfc85b464d916c1  gcc/testsuite/gcc.dg/bitint-123.c
  11e6d8eaf7b16f3f8aeaf1c2e626996f  gcc/testsuite/gcc.dg/bitint-124.c
  c446cf331d60d19eea3950d7f444f8b3  gcc/testsuite/gcc.dg/bitint-125.c
+ 240ade406c4daf5c641e5c4f0bdd5ef5  gcc/testsuite/gcc.dg/bitint-126.c
  aa6e262f1d508ec048e76ac4af6675a4  gcc/testsuite/gcc.dg/bitint-13.c
  e6db29256563268a3c327706e78c79a4  gcc/testsuite/gcc.dg/bitint-14.c
  c748706240385773f27caba61cbbcbd8  gcc/testsuite/gcc.dg/bitint-15.c
*************** cd00c6feebac836c0ec488202c21d6a7  gcc/te
*** 50142,50147 ****
--- 50179,50185 ----
  ad86091aa7960dc75364deba125beaee  gcc/testsuite/gcc.dg/c23-align-1.c
  b608d4025d1e8801c524fe26c24dd21a  gcc/testsuite/gcc.dg/c23-align-10.c
  7d97eccbea2d467efb88d5df79faefc5  gcc/testsuite/gcc.dg/c23-align-6.c
+ e4306708fae3682874b9f361ce349d27  gcc/testsuite/gcc.dg/c23-array-negative-1.c
  56a76c282330c2c4b41a50ff88a0fbe2  gcc/testsuite/gcc.dg/c23-attr-deprecated-1.c
  53adbd495ae22c30a0897a05151c5708  gcc/testsuite/gcc.dg/c23-attr-deprecated-2.c
  41f182ba922399f53fd715de3a0e37e4  gcc/testsuite/gcc.dg/c23-attr-deprecated-3.c
*************** b848314d57077287ea6ff193d8529161  gcc/te
*** 50332,50337 ****
--- 50370,50379 ----
  5c8791535515e3b1c795b799f05b12de  gcc/testsuite/gcc.dg/c23-qual-5.c
  bc1e9282cce3b4231a088bf436fc52ad  gcc/testsuite/gcc.dg/c23-qual-6.c
  012092bdf34bf023214876741a993409  gcc/testsuite/gcc.dg/c23-qual-7.c
+ fe5cf03d5905906d6478785f1bb66b67  gcc/testsuite/gcc.dg/c23-register-array-1.c
+ 3a0e63c991e6107de3d83513f63ed324  gcc/testsuite/gcc.dg/c23-register-array-2.c
+ e958a6c84b6c4bddff027d2eb58fa62f  gcc/testsuite/gcc.dg/c23-register-array-3.c
+ 8167a57e11166df1a20be8d56519b6e6  gcc/testsuite/gcc.dg/c23-register-array-4.c
  34d8438d87acaf8fa9206428b49e558e  gcc/testsuite/gcc.dg/c23-static-assert-1.c
  3b637fe4a5a85647b2b98c7a38f85d19  gcc/testsuite/gcc.dg/c23-static-assert-2.c
  e76c7613e08d9be9fd22a634a8e630c2  gcc/testsuite/gcc.dg/c23-static-assert-3.c
*************** f2a4898d3ca2464c3600e2f890f8307c  gcc/te
*** 50411,50416 ****
--- 50453,50459 ----
  0ed09c36b7f29978fac9dcb2332979a9  gcc/testsuite/gcc.dg/c23-version-2.c
  61a95731fffe1417c8142841180bafdf  gcc/testsuite/gcc.dg/c2y-align-1.c
  a3e9b1a0ce807ace8388f49427e9ce2e  gcc/testsuite/gcc.dg/c2y-align-2.c
+ a69498f454527d6b2d0970e2c516bd48  gcc/testsuite/gcc.dg/c2y-array-negative-1.c
  6e0a8941af72f8d447e2231ec0d5c8ee  gcc/testsuite/gcc.dg/c2y-byte-alias-1.c
  bc33f75b7f1800ec5ea5cb736ab1b650  gcc/testsuite/gcc.dg/c2y-byte-alias-2.c
  554f63fb011f73f9810c6958f04a6d55  gcc/testsuite/gcc.dg/c2y-byte-alias-3.c
*************** af5ca76c94efb603f97f680a99e2c6c4  gcc/te
*** 50418,50423 ****
--- 50461,50467 ----
  3ea866667ec9b0c47610e82703f851f1  gcc/testsuite/gcc.dg/c2y-complex-2.c
  7b04326f2e32f7eb21eef12ae77cd93b  gcc/testsuite/gcc.dg/c2y-digit-separators-1.c
  71ddc5448879ef67db87428dd3f8e299  gcc/testsuite/gcc.dg/c2y-digit-separators-2.c
+ ba9398946908672e05cf040d4a0a29e5  gcc/testsuite/gcc.dg/c2y-function-qual-1.c
  f2a473638b83447f8d1205f5d6251d92  gcc/testsuite/gcc.dg/c2y-generic-1.c
  33ed56b095cc441bd571917111dfb781  gcc/testsuite/gcc.dg/c2y-generic-2.c
  bd62c1a3c1c53d4d56eb3dfc2e6fe27c  gcc/testsuite/gcc.dg/c2y-generic-3.c
*************** e0c7fb6332e3fb8d44fbd96d709b0f77  gcc/te
*** 50444,50449 ****
--- 50488,50495 ----
  e29dfebcc91efb4a6141cc6831d3fb23  gcc/testsuite/gcc.dg/c2y-imaginary-constants-7.c
  28796811a466a9b84dc89c824a73962a  gcc/testsuite/gcc.dg/c2y-imaginary-constants-8.c
  9116eeb1193a8e8b6e721056e96f1ba0  gcc/testsuite/gcc.dg/c2y-imaginary-constants-9.c
+ 017d911a779988d341ef2fe9cff89c28  gcc/testsuite/gcc.dg/c2y-incomplete-1.c
+ 8445ec4e0665a4141a7afa27a0e6c095  gcc/testsuite/gcc.dg/c2y-inline-1.c
  f2024c93b6b3c3dea4d2faccbd83aa2e  gcc/testsuite/gcc.dg/c2y-named-loops-1.c
  46a3a94067e0f11e00c1bd23bc2786dd  gcc/testsuite/gcc.dg/c2y-named-loops-2.c
  34b7b4b191cc4cee19b53b5b78ec89c5  gcc/testsuite/gcc.dg/c2y-named-loops-4.c
*************** ae93aae7f7b6e46952f9aada1a846a03  gcc/te
*** 50454,50459 ****
--- 50500,50511 ----
  0fb86b403b879d89c2f8e529504192b3  gcc/testsuite/gcc.dg/c2y-octal-constants-1.c
  97003c946037ba2af991d25bbc61847a  gcc/testsuite/gcc.dg/c2y-octal-constants-2.c
  5c671034e5295261824f901786e5eb97  gcc/testsuite/gcc.dg/c2y-octal-constants-3.c
+ 274acfa89da9daf37a8a94e489cf5c1a  gcc/testsuite/gcc.dg/c2y-pointer-1.c
+ 71956a9335d91df7ca0b75edbc0375a8  gcc/testsuite/gcc.dg/c2y-register-array-1.c
+ 1d8585ebd75d9d65e8c701ca2c704a84  gcc/testsuite/gcc.dg/c2y-register-array-2.c
+ 6e588677d43bb7ff98d01a88480060fc  gcc/testsuite/gcc.dg/c2y-register-array-3.c
+ 01e04472b1c1f83f93ccb20602c5ddee  gcc/testsuite/gcc.dg/c2y-storage-class-1.c
+ a12d7d6a5d3610300ee36a0d18f2abf3  gcc/testsuite/gcc.dg/c2y-struct-empty-1.c
  7b91caa232dcb33030877f5bf290f5da  gcc/testsuite/gcc.dg/c2y-switch-1.c
  7c1a09cbecfd008dbe8308919ad52ff9  gcc/testsuite/gcc.dg/c2y-switch-2.c
  11574f2264dab8c604726d84b221eb44  gcc/testsuite/gcc.dg/c2y-switch-3.c
*************** ea3e1069a2acd8e148e4906ca26ae173  gcc/te
*** 51906,51911 ****
--- 51958,51964 ----
  b77d791a28ef5d0af46671c58409355e  gcc/testsuite/gcc.dg/debug/ctf/ctf-str-table-1.c
  c1be64540be9cfe2909b07831696618c  gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-1.c
  65b8ee1c1897762047de95af4287e494  gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-2.c
+ 87c0f5e153c942762d307689392cd8db  gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-3.c
  ea229c904eba75c54706af2f3c69fbbf  gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-array-1.c
  1968cb16e47a83d7c5abd48f8e51519e  gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-array-2.c
  9bbcc422ad724f07ae3292136bbac03e  gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-pointer-1.c
*************** bbb87d2a73c29d36f6bb6b3dec4a2b02  gcc/te
*** 52386,52395 ****
--- 52439,52453 ----
  8a92262e99815477a062c82d552896e8  gcc/testsuite/gcc.dg/extra-semi-3.c
  c54a3052ec2d03b003a96b460fc1509c  gcc/testsuite/gcc.dg/extract_recip_3.c
  426a2aa59ea6c60129fd2d8b0a70e0ac  gcc/testsuite/gcc.dg/extract_recip_4.c
+ 35f5cc84e689a31f5a9c0e3b12718126  gcc/testsuite/gcc.dg/fabs-plus-zero-1.c
+ 1058dac9688f459be05471df0301cf7d  gcc/testsuite/gcc.dg/fabs-plus-zero-2.c
  7185df85b1b68b5a6448c792f88d01fa  gcc/testsuite/gcc.dg/fail_always_inline.c
  635a708f0d3160a61cc28f440b7af0d5  gcc/testsuite/gcc.dg/fail_always_inline2.c
  65d997c1872a855cefb9e7177015a53a  gcc/testsuite/gcc.dg/falign-labels-1.c
  2bc0342a25d7d1e316ce2fb511a55ca2  gcc/testsuite/gcc.dg/fastmath-1.c
+ fba32def2172ff2492b932c3edefec3a  gcc/testsuite/gcc.dg/fatal-error-html.py
+ 7b5f81b070e3d174eccc61ceb522baef  gcc/testsuite/gcc.dg/fatal-error-sarif.py
+ f6296745cf7c1bfd8a80d1a938961849  gcc/testsuite/gcc.dg/fatal-error.c
  c87b8cb24b5597f6cb6c5620972b8083  gcc/testsuite/gcc.dg/fdata-sections-1.c
  4d70da06c50e6429d5febbbf7d8e42c7  gcc/testsuite/gcc.dg/fdata-sections-2.c
  b0e2b944c95704b8a92af8e96e46c10a  gcc/testsuite/gcc.dg/field-merge-1.c
*************** f3a876eb6a0816f6085df8f93e7edd6d  gcc/te
*** 52425,52431 ****
  4120724485645be638383c7fa28e9070  gcc/testsuite/gcc.dg/fixed-point/allop.c
  283593bbe1174a9581831a667120157a  gcc/testsuite/gcc.dg/fixed-point/binary.c
  0bea133ab644808fbf42aef7c37b38ac  gcc/testsuite/gcc.dg/fixed-point/bit-complement.c
! eb4355cdb898f6e0e82e0558a5136d23  gcc/testsuite/gcc.dg/fixed-point/bitint-1.c
  db2e33a998a710ce021678da0caa8f09  gcc/testsuite/gcc.dg/fixed-point/call-by-value.c
  283d6b07483b7a12d06e1477ed57ef1b  gcc/testsuite/gcc.dg/fixed-point/cast-bad.c
  c1539bf8d5fb4755eff7267143193524  gcc/testsuite/gcc.dg/fixed-point/composite-type.c
--- 52483,52489 ----
  4120724485645be638383c7fa28e9070  gcc/testsuite/gcc.dg/fixed-point/allop.c
  283593bbe1174a9581831a667120157a  gcc/testsuite/gcc.dg/fixed-point/binary.c
  0bea133ab644808fbf42aef7c37b38ac  gcc/testsuite/gcc.dg/fixed-point/bit-complement.c
! 6b8e85deed970065a5758c7bcc4b46ae  gcc/testsuite/gcc.dg/fixed-point/bitint-1.c
  db2e33a998a710ce021678da0caa8f09  gcc/testsuite/gcc.dg/fixed-point/call-by-value.c
  283d6b07483b7a12d06e1477ed57ef1b  gcc/testsuite/gcc.dg/fixed-point/cast-bad.c
  c1539bf8d5fb4755eff7267143193524  gcc/testsuite/gcc.dg/fixed-point/composite-type.c
*************** c8b296cff91e0dc2cbddba1d03bda22e  gcc/te
*** 55221,55229 ****
  98c8542823586860a335df8e4a87940b  gcc/testsuite/gcc.dg/plugin/crash-test-ice-in-header.h
  7ce38991ee9680f25520e34f0eb8e02c  gcc/testsuite/gcc.dg/plugin/crash-test-ice-sarif.c
  25e14555a1456447b35858de17d08ee9  gcc/testsuite/gcc.dg/plugin/crash-test-ice-stderr.c
! 3333d94ad6aeaef96f8f360fbb86bc40  gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-sarif.c
! 6a8964ce93ffc0bd30309c60194183b2  gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-stderr.c
! 07e231a98872197c9ea4f93a023099fe  gcc/testsuite/gcc.dg/plugin/crash_test_plugin.cc
  146ffa25d8a6444346ca2a51bfa748ec  gcc/testsuite/gcc.dg/plugin/diagnostic-group-test-1.c
  901114feb3fc4bc44a06034fc6abcbff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-1.c
  a0bce3f622c2549614e45f5a9afe9c88  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-2.c
--- 55279,55293 ----
  98c8542823586860a335df8e4a87940b  gcc/testsuite/gcc.dg/plugin/crash-test-ice-in-header.h
  7ce38991ee9680f25520e34f0eb8e02c  gcc/testsuite/gcc.dg/plugin/crash-test-ice-sarif.c
  25e14555a1456447b35858de17d08ee9  gcc/testsuite/gcc.dg/plugin/crash-test-ice-stderr.c
! 40152da94873a453612f018f2bedc6b9  gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-html.py
! 8ce7b57d4e70274d3fc06b4026c725ce  gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-sarif.py
! 33fa37cd40332b2344cccbffd9acb4dd  gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice.c
! 0ee119ef6c937ffd206dc1516e9ecc13  gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-html.py
! ea222b1a587131420a80aa2065e9b799  gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-sarif.py
! 291db98b71fd518cee0fe121d4d9bb47  gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null.c
! 3333d94ad6aeaef96f8f360fbb86bc40  gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-sarif.c
! 6a8964ce93ffc0bd30309c60194183b2  gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-stderr.c
! fe8b11287b636cbc97d256fbd9ee7e9f  gcc/testsuite/gcc.dg/plugin/crash_test_plugin.cc
  146ffa25d8a6444346ca2a51bfa748ec  gcc/testsuite/gcc.dg/plugin/diagnostic-group-test-1.c
  901114feb3fc4bc44a06034fc6abcbff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-1.c
  a0bce3f622c2549614e45f5a9afe9c88  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-2.c
*************** c323b7b4ac0cf2caa641c6bb31350375  gcc/te
*** 55343,55349 ****
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
! 72338b8a35dcb4d507380723c1451b56  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
--- 55407,55413 ----
  4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.cc
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
  91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.cc
! 6783535df722f5382a790961de26ab84  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
*************** f3420ae2cec7581a0ad483e1abb174f2  gcc/te
*** 56043,56048 ****
--- 56107,56113 ----
  7032b52dc2dd1e6cab514293c2d0b276  gcc/testsuite/gcc.dg/pr121322.c
  a0e82361440276cacba8161b406fa08c  gcc/testsuite/gcc.dg/pr121619.c
  4a0b062157a946d90ff3c34224ea0c66  gcc/testsuite/gcc.dg/pr121663.c
+ 596e137d1ef1fc5f142c61692ba512ae  gcc/testsuite/gcc.dg/pr121678.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** e7edbe5a2c71be83020688e5b9a6ae0d  gcc/te
*** 58343,58353 ****
  d41b90554eaa41690846ab199f065dea  gcc/testsuite/gcc.dg/simd-8.c
  fa16add828cb6d27e0fd5daa2be320ed  gcc/testsuite/gcc.dg/simulate-thread/README
  dc306abdb26503cdd9d945ecd7b449a4  gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int.c
! 45bdb5b0ebc706104bc5f4c73a6a6af5  gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c
  979b20dbfa5df3d9d525e2d06f2fe22b  gcc/testsuite/gcc.dg/simulate-thread/atomic-load-longlong.c
  14f348c1eebb98ff9d9cd563e33e6bd8  gcc/testsuite/gcc.dg/simulate-thread/atomic-load-short.c
  cdcbfe4963d2fb08c5ca3beee8988a3a  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int.c
! 2cef976581d9a7b739ab4028601cccef  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c
  dd9deecd35e329ea7c8b1a24c3721dfb  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-longlong.c
  bc0a90e6775aacab35294b814a4dc066  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-short.c
  d8961c21262582569be03f1df4b1955e  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp
--- 58408,58418 ----
  d41b90554eaa41690846ab199f065dea  gcc/testsuite/gcc.dg/simd-8.c
  fa16add828cb6d27e0fd5daa2be320ed  gcc/testsuite/gcc.dg/simulate-thread/README
  dc306abdb26503cdd9d945ecd7b449a4  gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int.c
! a31574d28aa0eaff1fc8c4bbccb6e38c  gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c
  979b20dbfa5df3d9d525e2d06f2fe22b  gcc/testsuite/gcc.dg/simulate-thread/atomic-load-longlong.c
  14f348c1eebb98ff9d9cd563e33e6bd8  gcc/testsuite/gcc.dg/simulate-thread/atomic-load-short.c
  cdcbfe4963d2fb08c5ca3beee8988a3a  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int.c
! 23a597c0870b162e131dfed969f7f63b  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c
  dd9deecd35e329ea7c8b1a24c3721dfb  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-longlong.c
  bc0a90e6775aacab35294b814a4dc066  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-short.c
  d8961c21262582569be03f1df4b1955e  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp
*************** f42b1c4e861e4207759994e34bbd715d  gcc/te
*** 59811,59816 ****
--- 59876,59883 ----
  65afbddf71e988e03a780ba874f578fb  gcc/testsuite/gcc.dg/torture/pr121656.c
  8c70b765139663212d50df6e388155b7  gcc/testsuite/gcc.dg/torture/pr121695-1.c
  0a7fe9f8201216f1c14d41d7e2b3175d  gcc/testsuite/gcc.dg/torture/pr121756.c
+ 457e3a0b9245c7c5a7794754dce78fe5  gcc/testsuite/gcc.dg/torture/pr121829.c
+ 949a4a95ad545289488a204b883b05d6  gcc/testsuite/gcc.dg/torture/pr121844.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** c6fde7f848ca518e02ad03f5144ebf9b  gcc/te
*** 61376,61385 ****
--- 61443,61459 ----
  59198687026b71e20daa9c05ddabba8b  gcc/testsuite/gcc.dg/tree-ssa/cabs-5.c
  0b38e6e3bc7c89e80c807ee91cabeb3c  gcc/testsuite/gcc.dg/tree-ssa/cabs-6.c
  e63ccfba7faa0464680f2aaeb88d32e9  gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c
+ 184e7b42b76ba805650b4d7e1a0d106f  gcc/testsuite/gcc.dg/tree-ssa/calloc-10.c
+ fa3af5bbfda93482f8ef1fa67a5c8887  gcc/testsuite/gcc.dg/tree-ssa/calloc-11.c
+ 33602208e0c3de2b6b93bb698eb1f34d  gcc/testsuite/gcc.dg/tree-ssa/calloc-12.c
  60199bed80e510c230537c5f4d852a5b  gcc/testsuite/gcc.dg/tree-ssa/calloc-2.c
  b5bac817fa7c7a456a8e73848dfde207  gcc/testsuite/gcc.dg/tree-ssa/calloc-3.c
  99ba8314164b834571c8f16cca8ac3fc  gcc/testsuite/gcc.dg/tree-ssa/calloc-4.c
  a4f18eca886b653efaca825607a6bfd3  gcc/testsuite/gcc.dg/tree-ssa/calloc-5.c
+ a33e3fab9975ed6a1ace55702b71f5fd  gcc/testsuite/gcc.dg/tree-ssa/calloc-6.c
+ 3f54f19a686c28b697193236f9ae52a7  gcc/testsuite/gcc.dg/tree-ssa/calloc-7.c
+ e4c3c7463d438f5af879471c4f547bc2  gcc/testsuite/gcc.dg/tree-ssa/calloc-8.c
+ df99a25b5f7628216c93de5ee8ddb6cb  gcc/testsuite/gcc.dg/tree-ssa/calloc-9.c
  bde2787a0a4de64c489ecf0193a51626  gcc/testsuite/gcc.dg/tree-ssa/cast-1.c
  32f4f6cf84e77191a9714a0865c8cf34  gcc/testsuite/gcc.dg/tree-ssa/cast-2.c
  54bcb44066a151328dc47685e4c00040  gcc/testsuite/gcc.dg/tree-ssa/cast-3.c
*************** e3e508292ca1590ab77169664af862ce  gcc/te
*** 64419,64424 ****
--- 64493,64499 ----
  d866824beb16c364d08cb67b007de602  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
  72076a525ae063dab9eb52662fd1fa9f  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
  d062d4d3b84fbec28d4d1580ea69bb21  gcc/testsuite/gcc.dg/vect/no-vfa-vect-dv-2.c
+ ba4c65d93bca5f5bbd763c4580e41f1a  gcc/testsuite/gcc.dg/vect/nodump-extractlast-1.c
  d122ac18b4a3ae4813e46562ff41d564  gcc/testsuite/gcc.dg/vect/nodump-forwprop-22.c
  ac90ad8f4383592387ff86cb8dbd78ce  gcc/testsuite/gcc.dg/vect/nodump-pr23073.c
  8bb8b8c5a5dd310d79c2ef7142ad2432  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c
*************** ccbd4ad0ec4d5c7d66ae8a17324026a8  gcc/te
*** 64472,64480 ****
  cd501eb39fb5991c37f6b640db11e4b9  gcc/testsuite/gcc.dg/vect/pr108608.c
  42e71f76f5fec72cddb8f569851aa595  gcc/testsuite/gcc.dg/vect/pr108950.c
  dcae540dc53cb2bda4de1cd8a0192e55  gcc/testsuite/gcc.dg/vect/pr109011-1.c
! 2b824b8ffe2736329cc277e41d3bf80a  gcc/testsuite/gcc.dg/vect/pr109011-2.c
  42b182a1a8b9c89fc2d121f68bfbc2c0  gcc/testsuite/gcc.dg/vect/pr109011-3.c
! 1cbc7677a3eac36970ad4d19add58130  gcc/testsuite/gcc.dg/vect/pr109011-4.c
  9ddaf2a27598e9b557b6df0fd66e5006  gcc/testsuite/gcc.dg/vect/pr109011-5.c
  4c3bfccc66bd917fd713c2ef21b62992  gcc/testsuite/gcc.dg/vect/pr109025.c
  bce13fdf2ea61a0bc1886470eed1bf60  gcc/testsuite/gcc.dg/vect/pr109473.c
--- 64547,64555 ----
  cd501eb39fb5991c37f6b640db11e4b9  gcc/testsuite/gcc.dg/vect/pr108608.c
  42e71f76f5fec72cddb8f569851aa595  gcc/testsuite/gcc.dg/vect/pr108950.c
  dcae540dc53cb2bda4de1cd8a0192e55  gcc/testsuite/gcc.dg/vect/pr109011-1.c
! 8eeb3ae9994a9e4f75cd002d56da68a5  gcc/testsuite/gcc.dg/vect/pr109011-2.c
  42b182a1a8b9c89fc2d121f68bfbc2c0  gcc/testsuite/gcc.dg/vect/pr109011-3.c
! 3c178b900b5708f37d58507e8712d2d6  gcc/testsuite/gcc.dg/vect/pr109011-4.c
  9ddaf2a27598e9b557b6df0fd66e5006  gcc/testsuite/gcc.dg/vect/pr109011-5.c
  4c3bfccc66bd917fd713c2ef21b62992  gcc/testsuite/gcc.dg/vect/pr109025.c
  bce13fdf2ea61a0bc1886470eed1bf60  gcc/testsuite/gcc.dg/vect/pr109473.c
*************** fe71df0cf859d65ae142b535f5c03b1d  gcc/te
*** 64578,64583 ****
--- 64653,64659 ----
  838c28f2e0f0090560a473c2cf5880a9  gcc/testsuite/gcc.dg/vect/pr121758.c
  6fcb6fd116ca771471e029793e00ac1a  gcc/testsuite/gcc.dg/vect/pr121767.c
  a235811cfa051b76b4dd21ee24e8cc63  gcc/testsuite/gcc.dg/vect/pr121768.c
+ f1a49246f84d8fbab3d2b6aa5c89949e  gcc/testsuite/gcc.dg/vect/pr121830.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  915cf38408eaa7fee5013d90ec1c3251  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** afaa45daeb6740febad38b149bba00f4  gcc/te
*** 65923,65930 ****
  c0dc4d999a9dd3a90639e4eb6b307722  gcc/testsuite/gcc.dg/vect/vect-reduc-8.c
  deb8ecbd7cdb913c066f7d366640b30b  gcc/testsuite/gcc.dg/vect/vect-reduc-9.c
  fce0445030bce66f8a90a92dd6df9f7b  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-1.c
! f41ca0a06ac24f646ee1c632b5d42f8e  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-2.c
! 02bf781a202197a7ac986160e008dfab  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-3.c
  a0fd49ab473516c9610de45e68c1d2a2  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-1.c
  0f4af0d0347b33a4fe5e55c707df1a5d  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-2.c
  190c8787f98acde286950b67d8a0e781  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-3.c
--- 65999,66006 ----
  c0dc4d999a9dd3a90639e4eb6b307722  gcc/testsuite/gcc.dg/vect/vect-reduc-8.c
  deb8ecbd7cdb913c066f7d366640b30b  gcc/testsuite/gcc.dg/vect/vect-reduc-9.c
  fce0445030bce66f8a90a92dd6df9f7b  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-1.c
! ef3d183d97032daec0ec4dd0412e62d6  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-2.c
! 2009b4262f91795d01c4086c784d480c  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-3.c
  a0fd49ab473516c9610de45e68c1d2a2  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-1.c
  0f4af0d0347b33a4fe5e55c707df1a5d  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-2.c
  190c8787f98acde286950b67d8a0e781  gcc/testsuite/gcc.dg/vect/vect-reduc-chain-dot-slp-3.c
*************** b1a43ba633267af53e035e52d824d83e  gcc/te
*** 68284,68290 ****
  c8f85510fcedfd5fda7fe58be4530841  gcc/testsuite/gcc.target/aarch64/pr65235_1.c
  5d760fe6744091dbc9b5e29939f63c7f  gcc/testsuite/gcc.target/aarch64/pr65491_1.c
  fe2dde4dc1496e201292c4be3d1995af  gcc/testsuite/gcc.target/aarch64/pr65624.c
! 0e68939beaa5d66be6a2a0761d2d841d  gcc/testsuite/gcc.target/aarch64/pr66462.c
  4ae80103de3fb651878fcd8edf496474  gcc/testsuite/gcc.target/aarch64/pr66776.c
  6184e08332c62fb090c99cfd6d2518c4  gcc/testsuite/gcc.target/aarch64/pr66912.c
  a134a225066dc537fbe378e60de12e5e  gcc/testsuite/gcc.target/aarch64/pr68102_1.c
--- 68360,68366 ----
  c8f85510fcedfd5fda7fe58be4530841  gcc/testsuite/gcc.target/aarch64/pr65235_1.c
  5d760fe6744091dbc9b5e29939f63c7f  gcc/testsuite/gcc.target/aarch64/pr65491_1.c
  fe2dde4dc1496e201292c4be3d1995af  gcc/testsuite/gcc.target/aarch64/pr65624.c
! ad07a37b008bebe88d872d4c4dbf04ca  gcc/testsuite/gcc.target/aarch64/pr66462.c
  4ae80103de3fb651878fcd8edf496474  gcc/testsuite/gcc.target/aarch64/pr66776.c
  6184e08332c62fb090c99cfd6d2518c4  gcc/testsuite/gcc.target/aarch64/pr66912.c
  a134a225066dc537fbe378e60de12e5e  gcc/testsuite/gcc.target/aarch64/pr68102_1.c
*************** ec1e7259ab590008de3be293d2d948c0  gcc/te
*** 68456,68462 ****
  cce0e0d17f23232b9c556c2da6266969  gcc/testsuite/gcc.target/aarch64/simd/addsub_1.c
  57c6fccec8c2043eb48a2c0c8d755d91  gcc/testsuite/gcc.target/aarch64/simd/addsub_2.c
  57e434af27228fcb7e2c9f0c3879026b  gcc/testsuite/gcc.target/aarch64/simd/armv9p5.c
! 75bb088332efbda09d2d687c5f3affd0  gcc/testsuite/gcc.target/aarch64/simd/bcax_d.c
  0ec852a5bebc92dc4db3c9cef0bf4621  gcc/testsuite/gcc.target/aarch64/simd/bic_orn_1.c
  16006fd02427e5686f254ac115ef7715  gcc/testsuite/gcc.target/aarch64/simd/eor3_d.c
  6aef5c8c46a252fab1f15291c3545ce4  gcc/testsuite/gcc.target/aarch64/simd/ext_f32.x
--- 68532,68538 ----
  cce0e0d17f23232b9c556c2da6266969  gcc/testsuite/gcc.target/aarch64/simd/addsub_1.c
  57c6fccec8c2043eb48a2c0c8d755d91  gcc/testsuite/gcc.target/aarch64/simd/addsub_2.c
  57e434af27228fcb7e2c9f0c3879026b  gcc/testsuite/gcc.target/aarch64/simd/armv9p5.c
! 72be1ebc64d79e94982f9d78b63cf762  gcc/testsuite/gcc.target/aarch64/simd/bcax_d.c
  0ec852a5bebc92dc4db3c9cef0bf4621  gcc/testsuite/gcc.target/aarch64/simd/bic_orn_1.c
  16006fd02427e5686f254ac115ef7715  gcc/testsuite/gcc.target/aarch64/simd/eor3_d.c
  6aef5c8c46a252fab1f15291c3545ce4  gcc/testsuite/gcc.target/aarch64/simd/ext_f32.x
*************** a8bd653ddae99985293ee04dc707de34  gcc/te
*** 75201,75211 ****
--- 75277,75292 ----
  150dad31fb1f398493599dab4ec3cc43  gcc/testsuite/gcc.target/aarch64/vect-abs.c
  20454cae5b2646ccb3f5b66c7d23be8f  gcc/testsuite/gcc.target/aarch64/vect-abs.x
  f5c728d57ec7b4ccd629be9ae3daa4e9  gcc/testsuite/gcc.target/aarch64/vect-add-sub-cond.c
+ d1048da76a8288fba979b423a69446fc  gcc/testsuite/gcc.target/aarch64/vect-addhn_1.c
  459f637ca04566f864e27fecd8292d26  gcc/testsuite/gcc.target/aarch64/vect-clz.c
  e17c8c4e15c789037c218893bf9161b8  gcc/testsuite/gcc.target/aarch64/vect-compile.c
  1c2584b79632ca3e23f0b3181d2e3616  gcc/testsuite/gcc.target/aarch64/vect-convert-1.c
  8689c2554e8b864529f3565bc73a3a83  gcc/testsuite/gcc.target/aarch64/vect-cse-codegen.c
  921eb3232364cb2927f013733b5a0473  gcc/testsuite/gcc.target/aarch64/vect-dotprod-twoway-hisi.c
+ abdce3709a72bca62c1e5456ca237dff  gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_1.c
+ 3b8e1c37010cf385f367822b8561c891  gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_2.c
+ e818a724f4c5260560b070d619a024d8  gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_3.c
+ ab08763b54762184a8ae8c80693773fc  gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_4.c
  9236bf16cd47adcb95dc6a0916ba183c  gcc/testsuite/gcc.target/aarch64/vect-early-break-cbranch.c
  d7d37bd9558713b30e8774cf2b0adc67  gcc/testsuite/gcc.target/aarch64/vect-faddv-compile.c
  561fb26098c56226b672e381ee1cfb4f  gcc/testsuite/gcc.target/aarch64/vect-faddv.c
*************** aaef10fa24c4bc67258e89962335eaed  gcc/te
*** 82039,82045 ****
  851dac1c7dd73efe6b05026da917342d  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c
  3f5fa6be90bc7c0bb2fc93906c9940b3  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c
  57127db2a957cc3b9075d912d2186d74  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c
! e7a323f0fdee8f7907cd7d1ceeec16ab  gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm.c
  0feb94f9968a5b27ad2447774a124af9  gcc/testsuite/gcc.target/i386/avx512-binop-1.h
  73f17c6e6c3de9b56b6c24f2ca95e8dc  gcc/testsuite/gcc.target/i386/avx512-binop-2.h
  7e80c283345b21a08008c43b6ba91fa4  gcc/testsuite/gcc.target/i386/avx512-binop-3.h
--- 82120,82130 ----
  851dac1c7dd73efe6b05026da917342d  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c
  3f5fa6be90bc7c0bb2fc93906c9940b3  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c
  57127db2a957cc3b9075d912d2186d74  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-7.c
! f9ef9d2f70301a0565d680658cc23ea7  gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-2.c
! 49265d04ee10b4e7181ad14bd41b80a7  gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-3.c
! f2390ce54cefc64e6a614f90cba7eb46  gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-4.c
! f6db673a0d2b4f29c01198a6212ea97e  gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-5.c
! 7aa7515e32b70ec6c02da2e71adfd933  gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm.c
  0feb94f9968a5b27ad2447774a124af9  gcc/testsuite/gcc.target/i386/avx512-binop-1.h
  73f17c6e6c3de9b56b6c24f2ca95e8dc  gcc/testsuite/gcc.target/i386/avx512-binop-2.h
  7e80c283345b21a08008c43b6ba91fa4  gcc/testsuite/gcc.target/i386/avx512-binop-3.h
*************** ddee045bf26d24bb3c8c4957af9831a0  gcc/te
*** 82213,82219 ****
  167461ae051833f02dbe65e6c16defe8  gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-1b.c
  ceeb85e9addcfe4b03eb11f284116f03  gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-2.c
  c98c741ace98c244bd47dbae09219719  gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-3.c
! 642ccfbc2b444966fb6f736f43a1365c  gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-4.c
  ac642c69450b2e9b0c33da8f5d6e1d9c  gcc/testsuite/gcc.target/i386/avx512bw-vpavgb-1.c
  af8b08f383c590cdbafafb5f76e3d6a5  gcc/testsuite/gcc.target/i386/avx512bw-vpavgb-2.c
  26895417270e5c34338d865bdcae4e13  gcc/testsuite/gcc.target/i386/avx512bw-vpavgw-1.c
--- 82298,82304 ----
  167461ae051833f02dbe65e6c16defe8  gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-1b.c
  ceeb85e9addcfe4b03eb11f284116f03  gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-2.c
  c98c741ace98c244bd47dbae09219719  gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-3.c
! 5680e6af22eb05fbd1fd1d9547e78a4a  gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-4.c
  ac642c69450b2e9b0c33da8f5d6e1d9c  gcc/testsuite/gcc.target/i386/avx512bw-vpavgb-1.c
  af8b08f383c590cdbafafb5f76e3d6a5  gcc/testsuite/gcc.target/i386/avx512bw-vpavgb-2.c
  26895417270e5c34338d865bdcae4e13  gcc/testsuite/gcc.target/i386/avx512bw-vpavgw-1.c
*************** ab3a898bef808da0e2077523142e653c  gcc/te
*** 84342,84348 ****
  f2229aac2fd4705b15642fbb038c1cf1  gcc/testsuite/gcc.target/i386/avx512vl-vpaddw-2.c
  6f550c16862cd1f08cb6e9bde3f061d7  gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-2.c
  f01e51af9b92f0458f9f655ec0aea54d  gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-3.c
! b691a111b99e5450681727e8c7759bde  gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-4.c
  4fed29f1f6572514acff14e5a5c0a94f  gcc/testsuite/gcc.target/i386/avx512vl-vpandd-1.c
  4b6687035c332ea06b0f7736d1ad374b  gcc/testsuite/gcc.target/i386/avx512vl-vpandd-2.c
  2f0c181096ab851fa9d2fa49bcb20f50  gcc/testsuite/gcc.target/i386/avx512vl-vpandnd-1.c
--- 84427,84433 ----
  f2229aac2fd4705b15642fbb038c1cf1  gcc/testsuite/gcc.target/i386/avx512vl-vpaddw-2.c
  6f550c16862cd1f08cb6e9bde3f061d7  gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-2.c
  f01e51af9b92f0458f9f655ec0aea54d  gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-3.c
! c112e852ea16b84f07177aaab85b16a1  gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-4.c
  4fed29f1f6572514acff14e5a5c0a94f  gcc/testsuite/gcc.target/i386/avx512vl-vpandd-1.c
  4b6687035c332ea06b0f7736d1ad374b  gcc/testsuite/gcc.target/i386/avx512vl-vpandd-2.c
  2f0c181096ab851fa9d2fa49bcb20f50  gcc/testsuite/gcc.target/i386/avx512vl-vpandnd-1.c
*************** b0e272e5b09d7d22e6b9a829085ecef5  gcc/te
*** 86843,86848 ****
--- 86928,86935 ----
  069d9d6f52f424f321e424a7b0cd8cb0  gcc/testsuite/gcc.target/i386/pr121699.c
  e17710962215b2fb5e88ba71ef85c9a1  gcc/testsuite/gcc.target/i386/pr121725-1a.c
  f9eebd6cace65460975a88f37b9e15eb  gcc/testsuite/gcc.target/i386/pr121725-1b.c
+ 5f918da94624837422839151fb9030bf  gcc/testsuite/gcc.target/i386/pr121861-1a.c
+ 2f572062e15d70ca97f9876842049bc9  gcc/testsuite/gcc.target/i386/pr121861-1b.c
  f99f88a6e994ad6e55e065e41bc58f8f  gcc/testsuite/gcc.target/i386/pr12329.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
*************** ca8ab2fdd097231be9dd3f7bfdcebb7b  gcc/te
*** 90113,90120 ****
  9c31e2b0b719536d37a3b720ea2be5ad  gcc/testsuite/gcc.target/loongarch/bytepick_combine.c
  828a53a834899f6cac56d99b1ec04d3b  gcc/testsuite/gcc.target/loongarch/bytepick_shift_128.c
  00fd27046cb10694212b8b3aa9811204  gcc/testsuite/gcc.target/loongarch/cas-acquire.c
! 07df4f30580de6fbe39974aaae4cfa05  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c
! 8b8540247ed71088dc38c31caa401102  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c
  d984aef61afc8f09af4c880507f6c6e6  gcc/testsuite/gcc.target/loongarch/cmodel-func-attr-1.c
  50ab91c6f8ea866c2cdb3d64e26052d2  gcc/testsuite/gcc.target/loongarch/cmodel-pragma-attr-1.c
  6c4891b18c6bd1154b7ea8237dc05a30  gcc/testsuite/gcc.target/loongarch/cmov_ii.c
--- 90200,90207 ----
  9c31e2b0b719536d37a3b720ea2be5ad  gcc/testsuite/gcc.target/loongarch/bytepick_combine.c
  828a53a834899f6cac56d99b1ec04d3b  gcc/testsuite/gcc.target/loongarch/bytepick_shift_128.c
  00fd27046cb10694212b8b3aa9811204  gcc/testsuite/gcc.target/loongarch/cas-acquire.c
! 866599c9e8b38ceef59bdaefc066abd5  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c
! 69239f6c22a4bce44a4b781091a5a1dc  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c
  d984aef61afc8f09af4c880507f6c6e6  gcc/testsuite/gcc.target/loongarch/cmodel-func-attr-1.c
  50ab91c6f8ea866c2cdb3d64e26052d2  gcc/testsuite/gcc.target/loongarch/cmodel-pragma-attr-1.c
  6c4891b18c6bd1154b7ea8237dc05a30  gcc/testsuite/gcc.target/loongarch/cmov_ii.c
*************** eb2a26811e189c046efddce2a403655a  gcc/te
*** 90175,90183 ****
  ff0e2aebfb4d1d5589a93141d243ada3  gcc/testsuite/gcc.target/loongarch/func-call-extreme-5.c
  4dfba11663b761b721dae15e3da8b055  gcc/testsuite/gcc.target/loongarch/func-call-extreme-6.c
  2a224d8ac2c945f49aabfa8e72480cdc  gcc/testsuite/gcc.target/loongarch/func-call-medium-1.c
! f6b7479169616c267e977f0e4b51f5e8  gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c
! 43e04457b33459e3eb8aaf53726aaad9  gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c
! eb1c2859a54e94bb4ffc91ace282a688  gcc/testsuite/gcc.target/loongarch/func-call-medium-4.c
  688abdafec41a13b5ed3e398a95c59a6  gcc/testsuite/gcc.target/loongarch/func-call-medium-5.c
  88d4d9f38daa1da73fd5c65a4d728df4  gcc/testsuite/gcc.target/loongarch/func-call-medium-6.c
  0821cc90410456526313b711771dd54e  gcc/testsuite/gcc.target/loongarch/func-call-medium-7.c
--- 90262,90269 ----
  ff0e2aebfb4d1d5589a93141d243ada3  gcc/testsuite/gcc.target/loongarch/func-call-extreme-5.c
  4dfba11663b761b721dae15e3da8b055  gcc/testsuite/gcc.target/loongarch/func-call-extreme-6.c
  2a224d8ac2c945f49aabfa8e72480cdc  gcc/testsuite/gcc.target/loongarch/func-call-medium-1.c
! 1969f1afb76a1ee1a23042d919bcb99f  gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c
! 92de0fba3a1e22e6d72202e7355e66b0  gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c
  688abdafec41a13b5ed3e398a95c59a6  gcc/testsuite/gcc.target/loongarch/func-call-medium-5.c
  88d4d9f38daa1da73fd5c65a4d728df4  gcc/testsuite/gcc.target/loongarch/func-call-medium-6.c
  0821cc90410456526313b711771dd54e  gcc/testsuite/gcc.target/loongarch/func-call-medium-7.c
*************** b0d8451f1600fb7ed044bb4afac6c54e  gcc/te
*** 90296,90303 ****
  1108f8672f288039b76dd7b0b71e7261  gcc/testsuite/gcc.target/loongarch/strict_align-pragma-attr-1.c
  c3b9c79f87c4206d38cd6acc05f5be9f  gcc/testsuite/gcc.target/loongarch/strict_align-pragma-attr-2.c
  5c59a0f71afe5e1247603961548ac0fc  gcc/testsuite/gcc.target/loongarch/switch-qi.c
! 7832a3e8dee4406e9a90696a4939bef8  gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c
! befd90e214441fef72ffe1fb266888d6  gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c
  d3511a1f030e8253dbf6b20c73d33105  gcc/testsuite/gcc.target/loongarch/tls-ie-extreme.c
  59f8afcb4e93c86d7da2ab3c90529db3  gcc/testsuite/gcc.target/loongarch/tls-ie-norelax.c
  2a0b997731ed1ae360413e97d22d1e5c  gcc/testsuite/gcc.target/loongarch/tls-ie-relax.c
--- 90382,90389 ----
  1108f8672f288039b76dd7b0b71e7261  gcc/testsuite/gcc.target/loongarch/strict_align-pragma-attr-1.c
  c3b9c79f87c4206d38cd6acc05f5be9f  gcc/testsuite/gcc.target/loongarch/strict_align-pragma-attr-2.c
  5c59a0f71afe5e1247603961548ac0fc  gcc/testsuite/gcc.target/loongarch/switch-qi.c
! 1ac501cd30db722f9955c498127b25bf  gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c
! d764570a061f9e358a8c312e0f52b532  gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c
  d3511a1f030e8253dbf6b20c73d33105  gcc/testsuite/gcc.target/loongarch/tls-ie-extreme.c
  59f8afcb4e93c86d7da2ab3c90529db3  gcc/testsuite/gcc.target/loongarch/tls-ie-norelax.c
  2a0b997731ed1ae360413e97d22d1e5c  gcc/testsuite/gcc.target/loongarch/tls-ie-relax.c
*************** d28b3e0cd4c8d88dfbd81c0049f4940d  gcc/te
*** 94682,94702 ****
  0745f2476ccbbc966b0ebd8b5fbf11ce  gcc/testsuite/gcc.target/riscv/addsiblt.c
  70613b0005dcedb224fe7dbf372effb4  gcc/testsuite/gcc.target/riscv/addsibltu.c
  7f5f81dedc0258852f700a537d380ce2  gcc/testsuite/gcc.target/riscv/addsibne.c
! bb8377cabf65608deb090aa105ea5ddf  gcc/testsuite/gcc.target/riscv/addsieq.c
! d2e3b9bfb3f83fc8b0dbd792001d4083  gcc/testsuite/gcc.target/riscv/addsifeq.c
! 39f1af6b6b9cad44e8cbd70e807a5ba1  gcc/testsuite/gcc.target/riscv/addsifge.c
! efc19f6299c79394f0903050707a0ec1  gcc/testsuite/gcc.target/riscv/addsifgt.c
! b5973355651f9e7cf8a876a1df5aa274  gcc/testsuite/gcc.target/riscv/addsifle.c
! 9d8054f80726199f39cc3133e886e84e  gcc/testsuite/gcc.target/riscv/addsiflt.c
! 4b93004c4f8b48f8d9f6bdb3c5b25aba  gcc/testsuite/gcc.target/riscv/addsifne.c
! 130e5fd27f3e1a93762c19c4966b469b  gcc/testsuite/gcc.target/riscv/addsige.c
! 2dc8cf4bcff98799ea166a277e984b16  gcc/testsuite/gcc.target/riscv/addsigeu.c
! ca13be10f3064b3d08dec4cc1b903098  gcc/testsuite/gcc.target/riscv/addsigt.c
! f765f533e85caffbe5f7dcf7d12b24d3  gcc/testsuite/gcc.target/riscv/addsigtu.c
! d91564be53c8794fa3671449d6c30996  gcc/testsuite/gcc.target/riscv/addsile.c
! 51f70262a6e62cc6659075bbb1110e68  gcc/testsuite/gcc.target/riscv/addsileu.c
! 25504ec81dd3fb8567e43f5deada1851  gcc/testsuite/gcc.target/riscv/addsilt.c
! 02d7374e9716cf2aa668067302d6a664  gcc/testsuite/gcc.target/riscv/addsiltu.c
  2573f08aa90200501175230090155ec0  gcc/testsuite/gcc.target/riscv/addsine.c
  28e8c5a694150961ecd7338eec04fd60  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-fence.c
  60c4dca054b6fc867b839a4510f4fc3a  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-load-acquire.c
--- 94768,94788 ----
  0745f2476ccbbc966b0ebd8b5fbf11ce  gcc/testsuite/gcc.target/riscv/addsiblt.c
  70613b0005dcedb224fe7dbf372effb4  gcc/testsuite/gcc.target/riscv/addsibltu.c
  7f5f81dedc0258852f700a537d380ce2  gcc/testsuite/gcc.target/riscv/addsibne.c
! 9148c08223d6389ea291148fa6166150  gcc/testsuite/gcc.target/riscv/addsieq.c
! e294a602f81cbc9bdb2c78b2adaddeb4  gcc/testsuite/gcc.target/riscv/addsifeq.c
! 42331ea95d7c3874b8e69f15f6f705ee  gcc/testsuite/gcc.target/riscv/addsifge.c
! 07051c34099a05a83e2f69890851fdd5  gcc/testsuite/gcc.target/riscv/addsifgt.c
! 57adde61cef6123261d5d7330f05ab82  gcc/testsuite/gcc.target/riscv/addsifle.c
! 3bd829fcff0880ebdcb3e9d2911a73e6  gcc/testsuite/gcc.target/riscv/addsiflt.c
! 3ec93f7d9e4dc5189d016767dfd2b6a9  gcc/testsuite/gcc.target/riscv/addsifne.c
! 35ee771567dbdbcc72bbafd38ba47644  gcc/testsuite/gcc.target/riscv/addsige.c
! e39dcafdb519eeeb870baff1c07113fc  gcc/testsuite/gcc.target/riscv/addsigeu.c
! 26695ab7be63b2558784d598fbb8407d  gcc/testsuite/gcc.target/riscv/addsigt.c
! 9bc05c2fd29680c1e39a420ede020583  gcc/testsuite/gcc.target/riscv/addsigtu.c
! b4b87bd3fb48e1e9186718cf54229d3e  gcc/testsuite/gcc.target/riscv/addsile.c
! 01bf5c16c88aa8fd786e5823b3971d75  gcc/testsuite/gcc.target/riscv/addsileu.c
! dd2a69827b362a49d563fade314835c6  gcc/testsuite/gcc.target/riscv/addsilt.c
! 98f3f8eeab3bdab67ea5844bd6855403  gcc/testsuite/gcc.target/riscv/addsiltu.c
  2573f08aa90200501175230090155ec0  gcc/testsuite/gcc.target/riscv/addsine.c
  28e8c5a694150961ecd7338eec04fd60  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-fence.c
  60c4dca054b6fc867b839a4510f4fc3a  gcc/testsuite/gcc.target/riscv/amo/a-rvwmo-load-acquire.c
*************** d8e76b4cd45daa82499151eedc966298  gcc/te
*** 95704,95709 ****
--- 95790,95796 ----
  6437d8ec53cc1530c20baacd9ca47eba  gcc/testsuite/gcc.target/riscv/pr121113.c
  25c459137bd9938c72fff727f3c7b5d4  gcc/testsuite/gcc.target/riscv/pr121160.c
  0b64699a31b25d6d22c6908dabe89a74  gcc/testsuite/gcc.target/riscv/pr121531.c
+ 052b9719ef24512ba3a9a1495eebcb2a  gcc/testsuite/gcc.target/riscv/pr121878.c
  37a08389ba95284cc27832767dfc1430  gcc/testsuite/gcc.target/riscv/pr43644.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
  c2ac0b53d6af56f5ec5bded3d252dddc  gcc/testsuite/gcc.target/riscv/pr93202.c
*************** e5794d88a1109065814ce4f8f2246087  gcc/te
*** 96528,96533 ****
--- 96615,96624 ----
  e7ca8fe6239410f9affbff1106fd2d15  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr119114.c
  446b0327be112ddedf3f8db6bc96d603  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr119224.c
  97a2ebde6fd6564be1fe7abc131eb066  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120356.c
+ 292706864e99c451e560a352aa01e688  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-1.c
+ f3a9ddca4f092e66d160c682c897eab0  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-2.c
+ 17dd3c0282d1ec39655b88b23d9407a0  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-3.c
+ 1eddb2cc7c5ba2d1d837f5842181cd73  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-4.c
  21cad2ea7a1a5a2e645eed965ace99dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120652-1.c
  600f9912922423684f29884007330d55  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120652-2.c
  b81941261eb74f03f85b72b205359f75  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120652-3.c
*************** a683300743c56e236d288fa13ea11c3c  gcc/te
*** 97766,97773 ****
  3f2ffb43c12de26613083945580971b7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/extract-1.c
  6fe03985d98850ddcda9f0d5d1c6840e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/extract-2.c
  aab11716eafff284c09fcb265c92b7d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-1.c
! 1e922b47bcf6f04f2301fbb55b813a0f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-2.c
! ca5f40ae383d5a40b39d9d039bbede0c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-3.c
  958d5ec738e78b1fae00ae61aa5624ec  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-div-1.c
  9a353e32cb9d5cf6c7af5e87b0dfc56b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-div-2.c
  ff57240ac36b402917240469534083e1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-div-3.c
--- 97857,97864 ----
  3f2ffb43c12de26613083945580971b7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/extract-1.c
  6fe03985d98850ddcda9f0d5d1c6840e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/extract-2.c
  aab11716eafff284c09fcb265c92b7d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-1.c
! 1b3b1ee94ec7dd3f8be81f3b326f88ae  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-2.c
! 464c0092a979bfb3e8a6cfc75d22a196  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-3.c
  958d5ec738e78b1fae00ae61aa5624ec  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-div-1.c
  9a353e32cb9d5cf6c7af5e87b0dfc56b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-div-2.c
  ff57240ac36b402917240469534083e1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-div-3.c
*************** ff5670e76438ca5c0014a46dd2388e8b  gcc/te
*** 97789,97796 ****
  716cb9a267638ed0eb1a14cb65ff8021  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnjx-1.c
  229001d194302d1195788b71e5d80f31  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnjx-2.c
  eb18a26d357fa5c90fbcac9da3b08316  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-1.c
! 505f015adea5779746d2b66c6d22f2b6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-2.c
! 6027dcd685624654da95d438dc7a2b9b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-3.c
  f0afd593f55cfc1c47f0ccf8b11aa7ae  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/fma-1.c
  b29b047741809e570aad0086779fb0b4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/fma-2.c
  b7aa88f7d555a716d28f50d341b6f9d4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/fma-3.c
--- 97880,97887 ----
  716cb9a267638ed0eb1a14cb65ff8021  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnjx-1.c
  229001d194302d1195788b71e5d80f31  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sgnjx-2.c
  eb18a26d357fa5c90fbcac9da3b08316  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-1.c
! 26bde7fc4b66da7f9c02aedd9c3d3d86  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-2.c
! 636e24b7d90c081f23a8a72833fee0e0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-3.c
  f0afd593f55cfc1c47f0ccf8b11aa7ae  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/fma-1.c
  b29b047741809e570aad0086779fb0b4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/fma-2.c
  b7aa88f7d555a716d28f50d341b6f9d4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/fma-3.c
*************** f95d4e0ecca41e722099be6b52b3efe7  gcc/te
*** 98034,98070 ****
  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
! 44944f52886b4d63dc2d51e41b6989dc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c
! 481ea338b45da04a0d566840614dae48  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c
! 0e0e858a2a43c9e704ea606c11408a81  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c
! 2b4909d372b1a973d69140b6c8d62a0a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c
! 95951aace7bd6fa335a20b3ab1afd1d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c
! 766c63531ece92e1ca50c06b43e01a84  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c
! b4f6b3d4e6c415dbabc2a86ae0c7e1b3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c
! af4afa75697ccfda5c73a1f40918d6fe  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c
! b177415f53940507878afa5eb657ad09  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c
! 923a99695277f6bc0184f4e33d0564c7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c
! 96d6040f6cfca4506c0ba649f1dab1c7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c
! 3186d90ae1a9e43d1a12c0e85d6aaf08  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c
! 7e7251e89ffba617c929fc3b295c5f4b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c
! 3b6d9ac21ddef3a0114850a5852bbaf0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c
! a86632cd7e467ef4e5f15174d2d41472  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c
! aa37ab3915741409f060642377966969  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c
! 3ab00fef2658f5687fd535ebe4937ae9  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c
! 67286731c4a64c8fa44a7c698b8c48f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c
! 309737e17ca3dc9167d05064eeacf851  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c
! 72cdbed23d19bd8a2a816ccba6f1779a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c
! 669449a08b0fbab88f488dc86666d551  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c
! 9b99b0478d4169cdc726bdccb4290fe8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c
! 27f129e34959663dd79c465f132229dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c
! 832fe7fb57dcc0cda468291873aed7a0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c
! 5c2457faa19b178154a994a1f3883b5f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h
! aa8b65606734213c26d6cca90d8e0713  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h
  8defdab5f95bd04f24f032b99346d64f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_run.h
  5ac387603c0d24689924b3d78ba4bbf9  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
  2714f0d833a302283af9fa8d888862ad  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h
  941e2ccb37cdbf0216c404d1a4cd6745  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_widen_run.h
  09d0368981957734f8c4ed4b287ce552  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmacc-run-1-f16.c
  7eb8dc7e69dd9f6638980e77cd6e6efe  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmacc-run-1-f32.c
  db6c9fd046686fdd17cc7ffc5fbfe33a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmacc-run-1-f64.c
--- 98125,98165 ----
  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
! 87849d7964143c9089fe644a1546804e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c
! 14ea824138979ca768c89701a4a54b0b  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c
! 34931a5dc109f7f5c69e4bc818a3b046  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c
! b870c5da78293f9343f0b46b523057fd  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c
! a560ff181b5a7c4464c79b272c360886  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c
! 4b36fff36b0dc58ad3ec35bab8e36bdc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c
! 664b59ca7f58f4f1c76395cc597527c2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c
! c0f325201d1414abb6902a095ec58fb6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c
! b9f831ebbca6c301e1fab41aba4975e7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c
! 0f6bae4aaf481ed935efdf93db5f65e3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c
! 1688960ad63b10d019febbd85cca0b74  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c
! 0927ecacaf1354fcbbea5b4047c662f8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c
! 6c326f2ef219232bd692592851dea36f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c
! 582b3946c2648a6fd77b44891678961d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c
! 61ddb108c385ba6d96b73dfcb9ee9b45  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c
! ab91d46cdc94442ba7a46dd05dbd587e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c
! 23d5f3132dfb8b1cda490dc14948565f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c
! 00a55aacb718a7144743cd350bdd5fd7  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c
! 7b3a2169c603e2ec971c79f015caf396  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c
! 482d903b96506830c0370d35bc581264  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c
! 393357d30bf65dd79fd7e35733fc0fb6  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c
! d7f82e3ac77f7fd1c8d2cc96cb720c0d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c
! e0e4bf2f9879e7573a6b687ff94a20d4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c
! 072abc7562c2dcb1ac75e746f40a8965  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c
! 47c87bc0103b0e785da83f97943b8f79  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h
! 9af4503c8568347b92545f1553fe6f63  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h
  8defdab5f95bd04f24f032b99346d64f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_run.h
+ 3dd5045edba818d381f9a75baffb6e4f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_widen_run.h
  5ac387603c0d24689924b3d78ba4bbf9  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
  2714f0d833a302283af9fa8d888862ad  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_run.h
  941e2ccb37cdbf0216c404d1a4cd6745  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_mulop_widen_run.h
+ cc2deaa4a8f5a676ee82e518d861ad8e  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f16.c
+ df17ded1813952e0dc26134bba5300f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f32.c
+ 7c020f2d9162f83679eee68ac3769a99  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f64.c
  09d0368981957734f8c4ed4b287ce552  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmacc-run-1-f16.c
  7eb8dc7e69dd9f6638980e77cd6e6efe  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmacc-run-1-f32.c
  db6c9fd046686fdd17cc7ffc5fbfe33a  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfmacc-run-1-f64.c
*************** dfc52616a58f523908e41a5a4e0f72b2  gcc/te
*** 98101,98114 ****
--- 98196,98225 ----
  c5a398684cc3097ee089765ed1c54ecc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f16.c
  b080bc38a76d40ca808fbf3333b77a9d  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f32.c
  46be4b470e57e94da0aff80cfd40faf5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrdiv-run-1-f64.c
+ 619437355f9c7be69b140f55a1b5af19  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f16.c
+ 1e74fd51e5a826c65d745f5b405b10cf  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f32.c
+ 3c441bec61c2bed97be0291c2e20e22f  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f64.c
+ d1c66aa9e4cc12b96c9e036e3ac168aa  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f16.c
+ f7584579007624e91e383029b4098dc4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f32.c
+ 1ce12273e99c9cca6a801b1f4b9ed2e1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f64.c
+ 4dc889668edfec6a81d565e59b4f8c02  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f16.c
+ ded4716aab0f77b043dcf334d75d8977  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f32.c
+ 8bc077f6f11a58d8f2c0d968d53dcbb2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f16.c
+ 689513c500d53ef70dea7ee8d6bd2755  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f32.c
  74c500447444b56fb97c54f48f041427  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmacc-run-1-f16.c
  3d2a7164ecf998191c3df62b3eb98cb0  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmacc-run-1-f32.c
  9503a935992e9ecaecb773b7e5f8851c  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmsac-run-1-f16.c
  c8ea40c4b9abb00be5f9636824cb84e2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmsac-run-1-f32.c
+ ed33abf9aab8c3dfc9a8ed27753b4be2  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f16.c
+ fd89b4773b8eedf6943915fc7e324ee3  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f32.c
  3c1d868422caee3c370aec6df6fcd5d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmacc-run-1-f16.c
  12dbee70f513595c141538484edde7ca  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmacc-run-1-f32.c
  19660cbbf3b61c67838e558f4b806c60  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmsac-run-1-f16.c
  99b2ebb0aea4ec8f59a77cce1a6130c5  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwnmsac-run-1-f32.c
+ f1ef6fa13c480640b814506c7de90cc4  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f16.c
+ 5d4615048131f4bf8808b05375d398e8  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c
+ 06ed78876e2ec7112f61e7ad4d7ca9ed  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c
+ 8964a9709f073f1429277aa175e9ac29  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c
  dd58b7a375ca415fa00dec0460c50c24  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c
  f8449da573246d363e4443b9f32f0f06  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c
  4abdc71a4d78eff367f15f9be04fb7fc  gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c
*************** a8b154f3ebc705a72dd58140a6419d33  gcc/te
*** 98405,98418 ****
  c4ce5811a887d193e1ff4f3353c39632  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-6.c
  8187bff72b496df98c214a34eb4957eb  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-7.c
  c3a6ba3dd89b27bf15bc5242257c3228  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-8.c
! 406ced79391c090487c50169c76abfa6  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-1.c
  526e5a62cb0908c681251c17247e28e9  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-2.c
  9e8ce3e7531b579d60705be38d675d10  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-3.c
  5bc7e93977e41e71ef2b5104d50d3ad5  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl1024b-1.c
  bb696bb70ba5d6a5cf32c3bc353b2245  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl128b-1.c
  77a0049927e216f53855d1654e96bf1b  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl128b-2.c
  4977551e9b49addfd8e8e4be79842ad2  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl2048b-1.c
! 005422d27b46987f97b39f2283c2de34  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c
  9c95fed71effdbc2f37f97fae11282b2  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl4096b-1.c
  6671a333c7d6186112a5915ed44213b1  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl512b-1.c
  c154a520867dfdc08eea575ce160e4a0  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x-1.c
--- 98516,98529 ----
  c4ce5811a887d193e1ff4f3353c39632  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-6.c
  8187bff72b496df98c214a34eb4957eb  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-7.c
  c3a6ba3dd89b27bf15bc5242257c3228  gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen_run_zvfh-8.c
! e3913554dd183888dbead2e30810963f  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-1.c
  526e5a62cb0908c681251c17247e28e9  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-2.c
  9e8ce3e7531b579d60705be38d675d10  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-3.c
  5bc7e93977e41e71ef2b5104d50d3ad5  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl1024b-1.c
  bb696bb70ba5d6a5cf32c3bc353b2245  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl128b-1.c
  77a0049927e216f53855d1654e96bf1b  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl128b-2.c
  4977551e9b49addfd8e8e4be79842ad2  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl2048b-1.c
! da73e0f0d3b0226590d73693b27b6e03  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c
  9c95fed71effdbc2f37f97fae11282b2  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl4096b-1.c
  6671a333c7d6186112a5915ed44213b1  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl512b-1.c
  c154a520867dfdc08eea575ce160e4a0  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x-1.c
*************** d5db82e84e090e7af1a8e302f7933759  gcc/te
*** 98422,98428 ****
  5788bfee296b1ead3262a21866b49a8f  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl128b-1.c
  64040c24c8d11cbac79e8ee90c1a8555  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl128b-2.c
  85d4ff61aa53dcdb909003374b62aa1d  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl2048b-1.c
! 1f10ce1b92f30dcaad1fab75e9adee08  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c
  abd8a3184e218e70a4a64ddd64e8be65  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl4096b-1.c
  7591e6439b1ce8bf6516a32d504618a5  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl512b-1.c
  5e6f7d6b6f640248df93a502d81ed96f  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64d-1.c
--- 98533,98539 ----
  5788bfee296b1ead3262a21866b49a8f  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl128b-1.c
  64040c24c8d11cbac79e8ee90c1a8555  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl128b-2.c
  85d4ff61aa53dcdb909003374b62aa1d  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl2048b-1.c
! c41b9a25857076a8b6c28a92df10b77d  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c
  abd8a3184e218e70a4a64ddd64e8be65  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl4096b-1.c
  7591e6439b1ce8bf6516a32d504618a5  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl512b-1.c
  5e6f7d6b6f640248df93a502d81ed96f  gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64d-1.c
*************** a80e25331725ae6098c3261099a7ef2b  gcc/te
*** 98485,98490 ****
--- 98596,98604 ----
  725fc9ba2f63002a2e6b4b64b7887ec4  gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-error-1.c
  7b78a7b679dd491d6c61de416b1fb27b  gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return-run.c
  ad97e8e89410a2adffa7e22838b725f1  gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-return.c
+ 818561775093434bd47685b5a83249e5  gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-1.c
+ 39dd3a50f30a057c886036aa16f2e34e  gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-2.c
+ 92698a9261b204d6754409365c7fcb3b  gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall.c
  f2945320582c6482ea04eaf56821d81c  gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc.c
  aa56594b41401e4642714ac3928eeb89  gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c
  cd01e7846635863c4b9682a16cace670  gcc/testsuite/gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c
*************** b3330bdc7e59d45053b22dc4e53f3689  gcc/te
*** 99767,99804 ****
  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
! b647582cd9dc0de6972a827cb982adba  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c
! 79da5e8585362f830b0279cb87cd86cf  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c
! a14efebddcfc6b0a9d4c17b00f32f295  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c
! 10c9300eb37e2ed89ecb1ddbb6dde8af  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfncvtbf16s.c
! fa31ff4308088ff4851de099379ad5e0  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadb.c
! d843d55f89407d32dbec01d1bb89e2d1  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadt.c
! 497cc7495f1411620d4b65c3f2251144  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfwcvtsbf16.c
! 3234527bad92340bd2ec5d19ca8e5f1d  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vln8.c
! 20cb8068ddc032bf6607b270beb664f5  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c
! 3c1f2b4bd0fe26c96d69b56142afc565  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c
! 988f3ea23d79774c8c370603b26497c5  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c
! 6f323fa360610a6346e3c76324d6dc81  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfncvtbf16s.c
! 6b5312143041315db5a0a2548ad0c4e4  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadb.c
! 941aa68b9bfb178373b9501c29b38820  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadt.c
! 5eb95f4e1b96b43718d9dea72dc8a82a  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfwcvtsbf16.c
! 7f8064b4e2fddae832742c343a36e390  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vln8.c
! 35a404379ab1a6bd6637393f9f581812  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c
! 14c9db176308854959599150383d388a  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c
! eb3b782e8e2588af92ddad2c39e30af5  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c
! 1c58ec68a4bc3ad80904596d493517cd  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfncvtbf16s.c
! 9fe3a8106e7c2925f29e1e3aa9dff62e  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadb.c
! 6d52772d3ae184e7cfac23c4cc3749ef  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadt.c
! 9b7fdfe02cd2cce1c4a67dd99ee426ca  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfwcvtsbf16.c
! ee8583c54f29fc6eb1029d9743121455  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vln8.c
! 5c4031ddf45e33ceec6f3d23c4ccdc1f  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c
! 324918d61561aa3a686ced0a875b393b  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c
! 360e171310012272f7e6a9872bd463aa  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c
! 13c907454172373baa663d768deb3439  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfncvtbf16s.c
! 61953a28bb8196966d0551ce3cd9b7a0  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadb.c
! a20f225a53f81fe6d2ae0bd7eb728f37  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadt.c
! 9b7fdfe02cd2cce1c4a67dd99ee426ca  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfwcvtsbf16.c
! 8b38b7cccb400924916bc1af9f18b676  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vln8.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
--- 99881,99918 ----
  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
! 637442de843d549714e205454bb6b13f  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c
! 77bc779cc75172943fb341dde833285a  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c
! 38d6296b6898dbac79c1f114d1bab5ba  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c
! eaa1674d3f2f945765ab614edd351881  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfncvtbf16s.c
! b194770c847e87f66757cb8c74b1baf6  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadb.c
! 2f063c9aae22303454f487dc35d7b467  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadt.c
! ca0e0650a1e68abc35ff65424e36e768  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfwcvtsbf16.c
! dd71f303834fa0446524d39d7ada0ea5  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vln8.c
! b631782b5d066b02a62d6d9cccdb0b8d  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c
! 4af974bf60f02ddec0ee98537d676cfb  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c
! 614150574b344362fdb32a1d3d9531bf  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c
! 89933a0f8682c08fd6f43f0d778b7107  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfncvtbf16s.c
! f5653e679edfa59449a4333976d8d5ea  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadb.c
! f4c14078aa2189a9153f32e2d6802840  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadt.c
! 0941e4f2c7ac9b8b8fc82a0ea48243bc  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfwcvtsbf16.c
! 9767e600e3e3d3df22eef0b3ccc89572  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vln8.c
! 1f18373dfc52f9f8770289f6ec3d851c  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c
! 15776a6883539ff6060f00fcce5c2b5b  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c
! 713b410e848f0bd24812ce83bf754b99  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c
! 84409e7c180a2e9bb47f82d977a576cd  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfncvtbf16s.c
! fdc22092b0a09327b1a3117277fd0560  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadb.c
! f0dd2e44836f9a55b93e0b678b2e077f  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadt.c
! 28ea0714cbfb57f229eab81073236d72  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfwcvtsbf16.c
! 50b866a484595cc300bae68ac03c37c8  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vln8.c
! fea40b0149ae4dde7dee336712697c30  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c
! 39dfad2fff0efbe9346bfd08d35042bb  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c
! ea619bdb61ec500565c7b25f7382e4d8  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c
! 5370ffafa1b25f38fb115113b1a63eb0  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfncvtbf16s.c
! b0313aa063c6b89c749f0bf083cffb23  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadb.c
! ea8e770cd4669b67ce8cefc0057168d3  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadt.c
! 28ea0714cbfb57f229eab81073236d72  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfwcvtsbf16.c
! c0de26fe3372b45983b9f17d17fb86ac  gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vln8.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
*************** e9490e711fc56b6a96c339184a7a19a5  gcc/te
*** 100750,100755 ****
--- 100864,100870 ----
  631834ee0d029b2cdbfa2459fe9543fc  gcc/testsuite/gcc.target/riscv/zbb-li-rotr.c
  3aa6b271c776af41bb52f19f6d2be52b  gcc/testsuite/gcc.target/riscv/zbb-min-max-02.c
  cc6086a551f06fe43ba1143dd3b45a0f  gcc/testsuite/gcc.target/riscv/zbb-min-max-03.c
+ ea1b6a61c1909e52158b60625a154098  gcc/testsuite/gcc.target/riscv/zbb-min-max-04.c
  034755623c7d07978a584f1f4a9fca31  gcc/testsuite/gcc.target/riscv/zbb-min-max.c
  3ef81d36e50eb61cd5acb30a75c2df00  gcc/testsuite/gcc.target/riscv/zbb-rol-ror-01.c
  ae2eedb5d93df4bf4c2298ef65fc68d4  gcc/testsuite/gcc.target/riscv/zbb-rol-ror-02.c
*************** c5136e0bb58277988b6c8fb48db7921f  gcc/te
*** 100990,100995 ****
--- 101105,101111 ----
  3df32b127f6505d5afe3b8ea351491f1  gcc/testsuite/gcc.target/s390/dwarfregtable-2.c
  e4935aebfbac92efa594724b44e77822  gcc/testsuite/gcc.target/s390/dwarfregtable-3.c
  a726659c2ae1fb309562a9b72e3c2160  gcc/testsuite/gcc.target/s390/fcall-saved.c
+ e94dcf472bccaf6bc8319b00c5dbfe57  gcc/testsuite/gcc.target/s390/ffs-1.c
  b76aabe27bc8e57b089f23dadbb05795  gcc/testsuite/gcc.target/s390/float_t-1.c
  893bc834068fdeaf65a05649de7ee1a1  gcc/testsuite/gcc.target/s390/float_t-2.c
  9d34a3245581ff3208ddbda615ef6617  gcc/testsuite/gcc.target/s390/flogr-1.c
*************** aa3e4f00345b3711bbfa1e907634ef21  gcc/te
*** 101510,101515 ****
--- 101626,101632 ----
  45d2bf3bb41134f98627857b16cb3af3  gcc/testsuite/gcc.target/s390/vector/vec-extend-3.c
  72dc5736e07f8fae137490b945aa10e8  gcc/testsuite/gcc.target/s390/vector/vec-extract-1.c
  eea8e6a3c052ed4eea4f064eb34a6934  gcc/testsuite/gcc.target/s390/vector/vec-extract-2.c
+ 8066e7e6cd84cf09bd4091bd61ca2068  gcc/testsuite/gcc.target/s390/vector/vec-extract-3.c
  b015126e7fb7ce82a8d5140428c4e192  gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c
  56c4b1af3959c56145108f2f9535cc8f  gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-2.c
  6e67081d0ff79468862afe5e9e976749  gcc/testsuite/gcc.target/s390/vector/vec-genmask-1.c
*************** eab3dd9c7afd97e9615ef7573877aeeb  gcc/te
*** 102074,102086 ****
  1ad9029fa8f72b834cb777bc3f6e165b  gcc/testsuite/gcc.target/sparc/sparc.exp
  36ce6bf50327f9b2f6c9980aea9830d2  gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c
  8e13d07524eb18b1e933aa690c21a993  gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c
! 90401ab94e60013a59a6ac6e4cec1305  gcc/testsuite/gcc.target/sparc/tls-ld-int16.c
! 63f97c81b5ef88bd6497971560c29064  gcc/testsuite/gcc.target/sparc/tls-ld-int32.c
! 2e3b09054a27c6d44a334e642e027c91  gcc/testsuite/gcc.target/sparc/tls-ld-int64.c
! c634d06c272c25fa6550810f208eddba  gcc/testsuite/gcc.target/sparc/tls-ld-int8.c
! f0e9d16094c76920832092e35248e76f  gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c
! 24952eba00ae9a85c398acf75f77cabb  gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c
! 78e912bc25a4aa96cb4b62633a44811e  gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c
  25b3fbaad3a2016e2d2b3cdf5fea854d  gcc/testsuite/gcc.target/sparc/ultrasp1.c
  d6162326dc1d13ceac299feecb9623b5  gcc/testsuite/gcc.target/sparc/ultrasp10.c
  ce12e4f274007d914a57153cf148abad  gcc/testsuite/gcc.target/sparc/ultrasp11.c
--- 102191,102203 ----
  1ad9029fa8f72b834cb777bc3f6e165b  gcc/testsuite/gcc.target/sparc/sparc.exp
  36ce6bf50327f9b2f6c9980aea9830d2  gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c
  8e13d07524eb18b1e933aa690c21a993  gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c
! 5d69e23986a330c5632e88c446563bf7  gcc/testsuite/gcc.target/sparc/tls-ld-int16.c
! aacbb54603a04293c4726975701e79e5  gcc/testsuite/gcc.target/sparc/tls-ld-int32.c
! f8f04155149d7e154ff020500de3846d  gcc/testsuite/gcc.target/sparc/tls-ld-int64.c
! cf1d390af6b698ab0105725934a96cf0  gcc/testsuite/gcc.target/sparc/tls-ld-int8.c
! 458fae1401e8a86ee3bb5140c465a875  gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c
! 680e790ef1525cd30fafd387876f6b4f  gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c
! c517847a8ded7a9a5488b6ba862f368d  gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c
  25b3fbaad3a2016e2d2b3cdf5fea854d  gcc/testsuite/gcc.target/sparc/ultrasp1.c
  d6162326dc1d13ceac299feecb9623b5  gcc/testsuite/gcc.target/sparc/ultrasp10.c
  ce12e4f274007d914a57153cf148abad  gcc/testsuite/gcc.target/sparc/ultrasp11.c
*************** d922e822af6878c17645657a31f3a9ee  gcc/te
*** 107259,107264 ****
--- 107376,107382 ----
  f082841753f64949d8329e00653460ec  gcc/testsuite/gfortran.dg/alloc_comp_assign_14.f08
  85b8ed4293af5c7bd2103a9d510c2d38  gcc/testsuite/gfortran.dg/alloc_comp_assign_15.f03
  ae9a8153879a562e6eaad8b096b2f86b  gcc/testsuite/gfortran.dg/alloc_comp_assign_16.f03
+ 24801c6979936a4bda1ff676ac369104  gcc/testsuite/gfortran.dg/alloc_comp_assign_17.f90
  552851693306221f925e1819ce51de3f  gcc/testsuite/gfortran.dg/alloc_comp_assign_2.f90
  42f08bf1aab342b9e46a1eca61a4eba8  gcc/testsuite/gfortran.dg/alloc_comp_assign_3.f90
  46cc93b771f780be474234fcd524c4e6  gcc/testsuite/gfortran.dg/alloc_comp_assign_4.f90
*************** d638b45296c13f0789f6ce82d511bb31  gcc/te
*** 109137,109142 ****
--- 109255,109269 ----
  6428b158457136009640e18a3e6db4a8  gcc/testsuite/gfortran.dg/complex_write.f90
  b9804b4b0a71d39afd82b778f0536a3e  gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_1.f90
  d57b192629fc2adfa507680ea3f866e8  gcc/testsuite/gfortran.dg/compliant_elemental_intrinsics_2.f90
+ aa47be36e7b12222522f8c7b9b1ba34f  gcc/testsuite/gfortran.dg/conditional_1.f90
+ c6e2c0baa0632a0f15563de4b8ace5ac  gcc/testsuite/gfortran.dg/conditional_2.f90
+ 687dffbcf917c61a8281febd55ecc702  gcc/testsuite/gfortran.dg/conditional_3.f90
+ cd2f1cf9ddb6225d44f0816af7153d68  gcc/testsuite/gfortran.dg/conditional_4.f90
+ 1836668643d261891e9d6217e1294a8c  gcc/testsuite/gfortran.dg/conditional_5.f90
+ 3a2eeebf33a3f31d42774affdc3fa979  gcc/testsuite/gfortran.dg/conditional_6.f90
+ a540ede6b4052d7248d7afe7976e7704  gcc/testsuite/gfortran.dg/conditional_7.f90
+ f30051f868ae3d54bb09f691d4ee4be9  gcc/testsuite/gfortran.dg/conditional_8.f90
+ 972d186aecbee599ccfe3c9a9ff30234  gcc/testsuite/gfortran.dg/conditional_9.f90
  b2591a1967b937b0841fc5fb3f73d5ce  gcc/testsuite/gfortran.dg/conflicts.f90
  64f1ee1dbe6f1744d125233e48c831fa  gcc/testsuite/gfortran.dg/conflicts_2.f90
  54782d6556ddbba18903dff6510de207  gcc/testsuite/gfortran.dg/constant_shape.f90
*************** edeec1fe2488c7117f56e10734af03dc  gcc/te
*** 111106,111112 ****
  697c52a53eea166cade44a3f935b8caf  gcc/testsuite/gfortran.dg/gomp/pr107214-7.f90
  1474c5a5881d7047f1212bc8cfb8ef92  gcc/testsuite/gfortran.dg/gomp/pr107214-8.f90
  3beded12a494129bebcc732d85089896  gcc/testsuite/gfortran.dg/gomp/pr107214.f90
! d224618c9ced5ecaa65436d3aeb48f1d  gcc/testsuite/gfortran.dg/gomp/pr107421.f90
  616305573acc701769497c1eee637edc  gcc/testsuite/gfortran.dg/gomp/pr114825.f90
  14e2080dbf20d40b1e1572419572cae5  gcc/testsuite/gfortran.dg/gomp/pr115103.f90
  7e57554851ec1cc8a84c063d08c5e85b  gcc/testsuite/gfortran.dg/gomp/pr118790.f90
--- 111233,111239 ----
  697c52a53eea166cade44a3f935b8caf  gcc/testsuite/gfortran.dg/gomp/pr107214-7.f90
  1474c5a5881d7047f1212bc8cfb8ef92  gcc/testsuite/gfortran.dg/gomp/pr107214-8.f90
  3beded12a494129bebcc732d85089896  gcc/testsuite/gfortran.dg/gomp/pr107214.f90
! 999f28c36a4332b9862398973c6f4c18  gcc/testsuite/gfortran.dg/gomp/pr107421.f90
  616305573acc701769497c1eee637edc  gcc/testsuite/gfortran.dg/gomp/pr114825.f90
  14e2080dbf20d40b1e1572419572cae5  gcc/testsuite/gfortran.dg/gomp/pr115103.f90
  7e57554851ec1cc8a84c063d08c5e85b  gcc/testsuite/gfortran.dg/gomp/pr118790.f90
*************** c8554a07d7f9f6deff3996dc8dd428e7  gcc/te
*** 112948,112953 ****
--- 113075,113081 ----
  332622c9d68e723173599ee918559f52  gcc/testsuite/gfortran.dg/pdt_42.f03
  26458fabdc3fb974b6ac96e29effd590  gcc/testsuite/gfortran.dg/pdt_43.f03
  c81eb638a36b687e5dc5d831b100a2ae  gcc/testsuite/gfortran.dg/pdt_44.f03
+ 21fba33fca53db94c9d9c501ea7a1a0d  gcc/testsuite/gfortran.dg/pdt_45.f03
  65d2ad728417ad3174fc1ce2b51a458d  gcc/testsuite/gfortran.dg/pdt_6.f03
  d2c9dae0c6e2385c5712aba8e12a70ba  gcc/testsuite/gfortran.dg/pdt_7.f03
  e21f38a2db39f95405441b61c12cf1e6  gcc/testsuite/gfortran.dg/pdt_8.f03
*************** c8b716cee316206a2cc9482d0e553937  gcc/te
*** 114755,114761 ****
  660cebcc8ffff86cb4ccb16d81f894fb  gcc/testsuite/gfortran.dg/spread_zerosize_1.f90
  3a0b66bd350086053b26eb6d89399496  gcc/testsuite/gfortran.dg/stat_1.f90
  3d99e8b3d3ffdc87f7cb331267201841  gcc/testsuite/gfortran.dg/stat_2.f90
! fd95bf33f7e44fecec20961473aa2f46  gcc/testsuite/gfortran.dg/stat_3.f90
  6fd4f51de0ba02b7c11c54cc3d2847c3  gcc/testsuite/gfortran.dg/statement_function_1.f90
  5fc47d7780848b7c842c444d94dc4eca  gcc/testsuite/gfortran.dg/statement_function_2.f90
  dbb65e9cc1aa2d7834531d84c81cb2d0  gcc/testsuite/gfortran.dg/statement_function_3.f
--- 114883,114890 ----
  660cebcc8ffff86cb4ccb16d81f894fb  gcc/testsuite/gfortran.dg/spread_zerosize_1.f90
  3a0b66bd350086053b26eb6d89399496  gcc/testsuite/gfortran.dg/stat_1.f90
  3d99e8b3d3ffdc87f7cb331267201841  gcc/testsuite/gfortran.dg/stat_2.f90
! 77ddf0f1deec155e2c90aa22e28e94a8  gcc/testsuite/gfortran.dg/stat_3.f90
! 3a9136e7aae8563f4e5c8eb4889853de  gcc/testsuite/gfortran.dg/stat_4.f90
  6fd4f51de0ba02b7c11c54cc3d2847c3  gcc/testsuite/gfortran.dg/statement_function_1.f90
  5fc47d7780848b7c842c444d94dc4eca  gcc/testsuite/gfortran.dg/statement_function_2.f90
  dbb65e9cc1aa2d7834531d84c81cb2d0  gcc/testsuite/gfortran.dg/statement_function_3.f
*************** a658e6e3511698723b87be3277ba706d  gcc/te
*** 122931,122937 ****
  450868d4f15f0faade8c693e132ee071  gcc/testsuite/lib/go.exp
  569a9bbf0bbca4b3648f90532f4b4b21  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
  b2d617c3a17f3ed4084a60722369c3a8  gcc/testsuite/lib/mike-gcc.exp
  bf783dcd14ad74babc1bf3e91cc46055  gcc/testsuite/lib/modules.exp
--- 123060,123066 ----
  450868d4f15f0faade8c693e132ee071  gcc/testsuite/lib/go.exp
  569a9bbf0bbca4b3648f90532f4b4b21  gcc/testsuite/lib/htmltest.py
  8699bdd60911dccd7ce56e96f4032646  gcc/testsuite/lib/hwasan-dg.exp
! 0fc3c9996c992caced4cf2071cceba21  gcc/testsuite/lib/lto.exp
  645e8af17b334c4e279636a7b47dacbe  gcc/testsuite/lib/mike-g++.exp
  b2d617c3a17f3ed4084a60722369c3a8  gcc/testsuite/lib/mike-gcc.exp
  bf783dcd14ad74babc1bf3e91cc46055  gcc/testsuite/lib/modules.exp
*************** eb1595e729e2eaac81c7ffe330d8f24e  gcc/te
*** 122969,122975 ****
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 99ec693aedc95eec9673db8111c68372  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
--- 123098,123104 ----
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 5c42eb749b1cd3120115cbae1bae3fb7  gcc/testsuite/lib/target-supports.exp
  cfe4a2f0a83382048de060dc6669cbb9  gcc/testsuite/lib/target-utils.exp
  e45ee1a35539730bd823a310ad306ded  gcc/testsuite/lib/timeout-dg.exp
  b755c82fb5ee43ef6c852f23fbdc8704  gcc/testsuite/lib/timeout.exp
*************** cf4bde43ab3b843eff45bac243d4116d  gcc/tr
*** 125616,125622 ****
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
  8caa648854a0f322f13d04563a559e87  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
! 9cce8a17ba6b687d346928cb6a482b63  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
  71ebf1f6c8d82b1fdbca6c7aa3bd14cb  gcc/tree-ssa-loop-manip.cc
  fbcc93539b376489c1256eb8cf2d4800  gcc/tree-ssa-loop-manip.h
--- 125745,125751 ----
  02e9a1bf25d500979aa57640611d72bc  gcc/tree-ssa-loop-ch.cc
  8caa648854a0f322f13d04563a559e87  gcc/tree-ssa-loop-im.cc
  21088fa37f899ccd0056bf3486157db9  gcc/tree-ssa-loop-ivcanon.cc
! ec0ea4b2fca8f29ceacc9fa4130673d0  gcc/tree-ssa-loop-ivopts.cc
  1f70c217ef5bd5f655512b9232754870  gcc/tree-ssa-loop-ivopts.h
  71ebf1f6c8d82b1fdbca6c7aa3bd14cb  gcc/tree-ssa-loop-manip.cc
  fbcc93539b376489c1256eb8cf2d4800  gcc/tree-ssa-loop-manip.h
*************** da72a60de8a6f51a635ead26120d3cc7  gcc/tr
*** 125634,125640 ****
  7932e23b35e7d0ecd4d4af27da96ad29  gcc/tree-ssa-phiopt.cc
  482f2356d81c3633ca476cd6628908b8  gcc/tree-ssa-phiprop.cc
  376705b97b4d04600605aebe5b8150ab  gcc/tree-ssa-pre.cc
! 207e8eba5552b33b5aae2de6e7c1f35d  gcc/tree-ssa-propagate.cc
  fc4f0e674e345822394ee5645ce22429  gcc/tree-ssa-propagate.h
  128e45b0a401ad495d13d7de1062bd6e  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
--- 125763,125769 ----
  7932e23b35e7d0ecd4d4af27da96ad29  gcc/tree-ssa-phiopt.cc
  482f2356d81c3633ca476cd6628908b8  gcc/tree-ssa-phiprop.cc
  376705b97b4d04600605aebe5b8150ab  gcc/tree-ssa-pre.cc
! bc94d7017980d97ff957feb308ae771c  gcc/tree-ssa-propagate.cc
  fc4f0e674e345822394ee5645ce22429  gcc/tree-ssa-propagate.h
  128e45b0a401ad495d13d7de1062bd6e  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
*************** fc4f0e674e345822394ee5645ce22429  gcc/tr
*** 125643,125649 ****
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
  e5d47aba2057e2eb8f826d03db55c697  gcc/tree-ssa-sink.cc
! 365bcf1d087266205020e3c1f480abc2  gcc/tree-ssa-strlen.cc
  817cd7b593b9ca11ac7464ee683d8f98  gcc/tree-ssa-strlen.h
  cdbaadcbac140f7877fb376bc71df9cd  gcc/tree-ssa-structalias.cc
  c55845e611a19b323a6c2debac84509e  gcc/tree-ssa-structalias.h
--- 125772,125778 ----
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
  e5d47aba2057e2eb8f826d03db55c697  gcc/tree-ssa-sink.cc
! 2cbfebeb2591a8cf12b712f5b98ad08d  gcc/tree-ssa-strlen.cc
  817cd7b593b9ca11ac7464ee683d8f98  gcc/tree-ssa-strlen.h
  cdbaadcbac140f7877fb376bc71df9cd  gcc/tree-ssa-structalias.cc
  c55845e611a19b323a6c2debac84509e  gcc/tree-ssa-structalias.h
*************** c98debbdc978c10e8934f3b4fb7e2504  gcc/tr
*** 125673,125690 ****
  2195dd84fccf985a9e012fb29c226e1c  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  f840a486e62fde7baf6f487e0c0912bb  gcc/tree-vect-loop-manip.cc
! 146b3531f4f40164fd62000787ef1810  gcc/tree-vect-loop.cc
! 35e411027fdd5a28872b73e7013a161e  gcc/tree-vect-patterns.cc
  f0e64752211e2caf975148f28e7b4caf  gcc/tree-vect-slp-patterns.cc
! 5c4389f39596b7c809c5cb84ebe74f7a  gcc/tree-vect-slp.cc
! 16e9549d26fa90ade6b33e8eb8e4726e  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  317f74f101effd03e454446f484bb840  gcc/tree-vectorizer.cc
! 30504f973f5cfd72f0c23423139c4dd2  gcc/tree-vectorizer.h
  1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! 26ee76264bd088fbd5554618377c1c97  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
  8928e1b061e537e34f6dccda9abc9c78  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
--- 125802,125819 ----
  2195dd84fccf985a9e012fb29c226e1c  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  f840a486e62fde7baf6f487e0c0912bb  gcc/tree-vect-loop-manip.cc
! b0a61a8437015d03a9c19780ad41d56e  gcc/tree-vect-loop.cc
! 7ee8dcefd015e579a263a22081671ddb  gcc/tree-vect-patterns.cc
  f0e64752211e2caf975148f28e7b4caf  gcc/tree-vect-slp-patterns.cc
! 3c7e6c406b9062377928583d5e65143b  gcc/tree-vect-slp.cc
! 7099dae8bd9116194da5834f1376d753  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  317f74f101effd03e454446f484bb840  gcc/tree-vectorizer.cc
! 9154116b276403cba93c03872ba44f49  gcc/tree-vectorizer.h
  1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! cf45c706bcbd4031970ce50abf182664  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
  8928e1b061e537e34f6dccda9abc9c78  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
*************** a50aaef4b803051d8c8de65277787205  libobj
*** 138104,138110 ****
  1529c9317f23aa02b19c43cda7528d66  libobjc/selector.c
  e48bb3c47cdcb1bfade3ef0007f5a149  libobjc/sendmsg.c
  06be35842165837797461a0db264aeea  libobjc/thr.c
! 88a8547736b0d14f7aef78dca5e4d016  libphobos/ChangeLog
  e188e263b43a1566b83ecb298034d491  libphobos/Makefile.am
  156e9416d3f91f179bb662effed69086  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
--- 138233,138239 ----
  1529c9317f23aa02b19c43cda7528d66  libobjc/selector.c
  e48bb3c47cdcb1bfade3ef0007f5a149  libobjc/sendmsg.c
  06be35842165837797461a0db264aeea  libobjc/thr.c
! 3eb5b6e2ececebfbaabd01a8019d945d  libphobos/ChangeLog
  e188e263b43a1566b83ecb298034d491  libphobos/Makefile.am
  156e9416d3f91f179bb662effed69086  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 139764,139770 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 1c539ff69b9e802e2ee1b4b5a3b4fde4  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 139893,139899 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 5fe62beedba088af01c738352988560e  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** abc6f4755fae8c6e8f45ce5fee798654  libstd
*** 139830,139836 ****
  6c165e7a2d80e986556ae6dc2bad3857  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
  2abf821a3eaae508ba83c8dfaa496ea4  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! 7d6bd28ad51821240a4927962ca6c055  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
  f48bfa11a1f6ebbba6b09b9618c997f2  libstdc++-v3/config/allocator/malloc_allocator_base.h
  229729de73da6f9ba6e1bf4c48f51f24  libstdc++-v3/config/allocator/new_allocator_base.h
--- 139959,139965 ----
  6c165e7a2d80e986556ae6dc2bad3857  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
  2abf821a3eaae508ba83c8dfaa496ea4  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! 178a579698147666128c8c4153bf9f0f  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
  f48bfa11a1f6ebbba6b09b9618c997f2  libstdc++-v3/config/allocator/malloc_allocator_base.h
  229729de73da6f9ba6e1bf4c48f51f24  libstdc++-v3/config/allocator/new_allocator_base.h
*************** ce7311d1399c1f0691cb38e3ad18717a  libstd
*** 139843,139849 ****
  50eab59a8838f846549defd66d5f70fa  libstdc++-v3/config/cpu/gcn/cpu_defines.h
  0ad9162550f3277362c643b1cf2a13b5  libstdc++-v3/config/cpu/generic/atomic_word.h
  3cd02cad74575fe3da00ef4d4360bff0  libstdc++-v3/config/cpu/generic/atomicity_builtins/atomicity.h
! 9e07866e5e947f0fe4cc598f7b42d8fc  libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
  3813a42a53e271357366c5b02417684e  libstdc++-v3/config/cpu/generic/cpu_defines.h
  1f5c854d94c000df1a564da988b7a46e  libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
  807032c4aff8e458fcf344530d4f0bff  libstdc++-v3/config/cpu/generic/opt/bits/opt_random.h
--- 139972,139978 ----
  50eab59a8838f846549defd66d5f70fa  libstdc++-v3/config/cpu/gcn/cpu_defines.h
  0ad9162550f3277362c643b1cf2a13b5  libstdc++-v3/config/cpu/generic/atomic_word.h
  3cd02cad74575fe3da00ef4d4360bff0  libstdc++-v3/config/cpu/generic/atomicity_builtins/atomicity.h
! d5b94cbb6c850eee86d57a1abec86f7f  libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
  3813a42a53e271357366c5b02417684e  libstdc++-v3/config/cpu/generic/cpu_defines.h
  1f5c854d94c000df1a564da988b7a46e  libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
  807032c4aff8e458fcf344530d4f0bff  libstdc++-v3/config/cpu/generic/opt/bits/opt_random.h
*************** d7249eb4d31bd107d0b09ea3c80cb723  libstd
*** 140085,140091 ****
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! 937f0f440bea9d4319e155cb51856882  libstdc++-v3/doc/html/index.html
  4e75c9ed55364b062b87405d233e6dd8  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
  e8962e30cf090d22cd4186a86105e4f3  libstdc++-v3/doc/html/manual/api.html
--- 140214,140220 ----
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! 428acfe2f4e5fcc5a4735d2bf0ff8742  libstdc++-v3/doc/html/index.html
  4e75c9ed55364b062b87405d233e6dd8  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
  e8962e30cf090d22cd4186a86105e4f3  libstdc++-v3/doc/html/manual/api.html
*************** c60c6ae778d5dedae24ac21abf948bdb  libstd
*** 140103,140109 ****
  6095fbb12cc581b2614870b42ad0e8b0  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
! 2bb7c0f8b8c4c8d632b4bb16d5c77345  libstdc++-v3/doc/html/manual/configure.html
  5328918ec42768cddb06c3e97ef4530c  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
  5905f8be24ae69bb804c3d5a6a4abf7d  libstdc++-v3/doc/html/manual/debug.html
--- 140232,140238 ----
  6095fbb12cc581b2614870b42ad0e8b0  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
! 6e1071c3830037b074f1c397f4e7a3e6  libstdc++-v3/doc/html/manual/configure.html
  5328918ec42768cddb06c3e97ef4530c  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
  5905f8be24ae69bb804c3d5a6a4abf7d  libstdc++-v3/doc/html/manual/debug.html
*************** ffd5e74a40bbf6623b8ccf687eb584d8  libstd
*** 140132,140140 ****
  76cac108e21e304b7607196fb5245e00  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! 67201056b7acbedcdacf039e774dcaab  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
! 17d07c26f60433c6f5bf7f55a785fb3f  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  89dd67b210011f646675fa2ede886305  libstdc++-v3/doc/html/manual/io_and_c.html
  32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
--- 140261,140269 ----
  76cac108e21e304b7607196fb5245e00  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! 174516641f92b7ed9a952010212df234  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
! 89f96b13d0525d86ec6cd96b462130cf  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  89dd67b210011f646675fa2ede886305  libstdc++-v3/doc/html/manual/io_and_c.html
  32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
*************** d973b7693c2b6c717784b81d549c61e5  libstd
*** 140164,140170 ****
  d0d45f15e189e6eac6d7b09d58e62126  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! 33b0d6191e95235f4a4fa8a3ea0db183  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  50160fa9f92780aaa6fc7a4ef13fc897  libstdc++-v3/doc/html/manual/streambufs.html
  3cb55f3f54e0a98471bffdf9f533a8a2  libstdc++-v3/doc/html/manual/strings.html
--- 140293,140299 ----
  d0d45f15e189e6eac6d7b09d58e62126  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! f3141eae208456e418ec0ae56625b9bf  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  50160fa9f92780aaa6fc7a4ef13fc897  libstdc++-v3/doc/html/manual/streambufs.html
  3cb55f3f54e0a98471bffdf9f533a8a2  libstdc++-v3/doc/html/manual/strings.html
*************** c39b927efcec5ac84139c1490c8ef320  libstd
*** 140178,140184 ****
  78aa5833e13335bccb9f831528294eb7  libstdc++-v3/doc/html/manual/using_concurrency.html
  f8898e59cc7155a01a17f15a3b853c30  libstdc++-v3/doc/html/manual/using_dual_abi.html
  11dd55e39edb8313b5563e53067c431e  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! 409ae6fe58c4a66ff5462e8ee0f62959  libstdc++-v3/doc/html/manual/using_exceptions.html
  91385600a9fbb5f8f29c666917403807  libstdc++-v3/doc/html/manual/using_headers.html
  3411d1e07939e0319750eceefff4b4c2  libstdc++-v3/doc/html/manual/using_macros.html
  e8b86abd99dc9893dfa1bb7533fdc23d  libstdc++-v3/doc/html/manual/using_namespaces.html
--- 140307,140313 ----
  78aa5833e13335bccb9f831528294eb7  libstdc++-v3/doc/html/manual/using_concurrency.html
  f8898e59cc7155a01a17f15a3b853c30  libstdc++-v3/doc/html/manual/using_dual_abi.html
  11dd55e39edb8313b5563e53067c431e  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! 32ab29fe9f7105ef061e7939409ea435  libstdc++-v3/doc/html/manual/using_exceptions.html
  91385600a9fbb5f8f29c666917403807  libstdc++-v3/doc/html/manual/using_headers.html
  3411d1e07939e0319750eceefff4b4c2  libstdc++-v3/doc/html/manual/using_macros.html
  e8b86abd99dc9893dfa1bb7533fdc23d  libstdc++-v3/doc/html/manual/using_namespaces.html
*************** b84cb983bda244285e1314327a420e66  libstd
*** 140382,140388 ****
  8f13cae7ea80bc018b87b4ff8de7e3cf  libstdc++-v3/doc/xml/manual/codecvt.xml
  af3361d0d0af961859ec0346c38ac8c8  libstdc++-v3/doc/xml/manual/concurrency.xml
  9da4610e32c81714e9188c6852c8dc93  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
! 1baba4ec8761c012c41a2ea967630fe1  libstdc++-v3/doc/xml/manual/configure.xml
  d7100469dfefd97836f3007f2682087d  libstdc++-v3/doc/xml/manual/containers.xml
  d08c687d9520b2f9d8dd6d973cca9e6a  libstdc++-v3/doc/xml/manual/ctype.xml
  0423695ef5d72eb026dfccb3b68e16ac  libstdc++-v3/doc/xml/manual/debug.xml
--- 140511,140517 ----
  8f13cae7ea80bc018b87b4ff8de7e3cf  libstdc++-v3/doc/xml/manual/codecvt.xml
  af3361d0d0af961859ec0346c38ac8c8  libstdc++-v3/doc/xml/manual/concurrency.xml
  9da4610e32c81714e9188c6852c8dc93  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
! 7ac1661f8bba0e715c24ddc063e48ee7  libstdc++-v3/doc/xml/manual/configure.xml
  d7100469dfefd97836f3007f2682087d  libstdc++-v3/doc/xml/manual/containers.xml
  d08c687d9520b2f9d8dd6d973cca9e6a  libstdc++-v3/doc/xml/manual/ctype.xml
  0423695ef5d72eb026dfccb3b68e16ac  libstdc++-v3/doc/xml/manual/debug.xml
*************** d7f222c42325cd44eadad2c59eef7e6f  libstd
*** 140410,140416 ****
  c9b4dfcbbb3aa2ab7b1e0df423f53f8f  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
  1e5265ce142bba4140e33ee4187dd0cd  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
  c3b7e65f376e0bce1a2242546f383d31  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
! dc08a5c57b082379df47d495ff2b840d  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
  6c161323ae7976408e2b3dbbf4464176  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  24e5c202f6a55504167ccc0c8395b881  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
--- 140539,140545 ----
  c9b4dfcbbb3aa2ab7b1e0df423f53f8f  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
  1e5265ce142bba4140e33ee4187dd0cd  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
  c3b7e65f376e0bce1a2242546f383d31  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
! 942f961666f55f04949d8c572d6b05d0  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
  6c161323ae7976408e2b3dbbf4464176  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
  24e5c202f6a55504167ccc0c8395b881  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
*************** bfd38fc5f1090656a5139c94c16ea163  libstd
*** 140420,140426 ****
  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
! fa91b214b510ff86a051cea040ae3c40  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  b820e3490221bb85cbf6bcdde0aa8150  libstdc++-v3/doc/xml/manual/utilities.xml
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
--- 140549,140555 ----
  1fe272dd10b83071f56d2956f94736d5  libstdc++-v3/doc/xml/manual/test.xml
  e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
  89a63a549c3438b3bee6bbf18f4c8b3e  libstdc++-v3/doc/xml/manual/using.xml
! 54d80aab470466c72f0346ca8fb52b6c  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  b820e3490221bb85cbf6bcdde0aa8150  libstdc++-v3/doc/xml/manual/utilities.xml
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
*************** bafd340e02d232fc7ced1eb5f68967ce  libstd
*** 140486,140492 ****
  ab0c92c57c5ec5cb9d0bfb3a7963d00c  libstdc++-v3/include/bits/invoke.h
  11d329b94f374c9cc8f95f7e5a958ee5  libstdc++-v3/include/bits/ios_base.h
  2bc5cac03f5593d9be1d3d99b4b8f3b3  libstdc++-v3/include/bits/istream.tcc
! 284ddcabfeb5cd7e5b71d141d433c250  libstdc++-v3/include/bits/iterator_concepts.h
  141c7da3c057e3f798bef5a54873d5cc  libstdc++-v3/include/bits/list.tcc
  07d6a764dc4604a32ea343700b3a5a95  libstdc++-v3/include/bits/locale_classes.h
  4c9c92e77c3450c6e65949fa769d4f93  libstdc++-v3/include/bits/locale_classes.tcc
--- 140615,140621 ----
  ab0c92c57c5ec5cb9d0bfb3a7963d00c  libstdc++-v3/include/bits/invoke.h
  11d329b94f374c9cc8f95f7e5a958ee5  libstdc++-v3/include/bits/ios_base.h
  2bc5cac03f5593d9be1d3d99b4b8f3b3  libstdc++-v3/include/bits/istream.tcc
! a63ce38f1a7add9247dbf486075308e8  libstdc++-v3/include/bits/iterator_concepts.h
  141c7da3c057e3f798bef5a54873d5cc  libstdc++-v3/include/bits/list.tcc
  07d6a764dc4604a32ea343700b3a5a95  libstdc++-v3/include/bits/locale_classes.h
  4c9c92e77c3450c6e65949fa769d4f93  libstdc++-v3/include/bits/locale_classes.tcc
*************** a0ff2aff5e6b290f02129d8fd5066f94  libstd
*** 140517,140525 ****
  053e1de38aef43bbaf1a9a4af1e3ad2f  libstdc++-v3/include/bits/random.h
  924981b1c29c7c7b010418607af71d7b  libstdc++-v3/include/bits/random.tcc
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
! f0bf67082e52af82bad37b514fecf634  libstdc++-v3/include/bits/ranges_algo.h
  603de5fc22f9ccbe5726390148fc3a09  libstdc++-v3/include/bits/ranges_algobase.h
! 0ebd2123d3d7429aa3e58f7aea66ef93  libstdc++-v3/include/bits/ranges_base.h
  586727039587b10b560a902b1c7008b1  libstdc++-v3/include/bits/ranges_cmp.h
  2eec8b6abbfa67c2a80da3caf7e0c2c3  libstdc++-v3/include/bits/ranges_uninitialized.h
  72d086ca35b36e2f1076b431ee799f15  libstdc++-v3/include/bits/ranges_util.h
--- 140646,140654 ----
  053e1de38aef43bbaf1a9a4af1e3ad2f  libstdc++-v3/include/bits/random.h
  924981b1c29c7c7b010418607af71d7b  libstdc++-v3/include/bits/random.tcc
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
! 6ee3b60b18052d3394ae974bf12e1a01  libstdc++-v3/include/bits/ranges_algo.h
  603de5fc22f9ccbe5726390148fc3a09  libstdc++-v3/include/bits/ranges_algobase.h
! b6d83aa40f63760f6b5a58810aabfae9  libstdc++-v3/include/bits/ranges_base.h
  586727039587b10b560a902b1c7008b1  libstdc++-v3/include/bits/ranges_cmp.h
  2eec8b6abbfa67c2a80da3caf7e0c2c3  libstdc++-v3/include/bits/ranges_uninitialized.h
  72d086ca35b36e2f1076b431ee799f15  libstdc++-v3/include/bits/ranges_util.h
*************** cffd73f057e9c37be8d8f13e0e97c5c0  libstd
*** 140541,140547 ****
  4b60aa9d5174c0de92a784ea26cc1cc1  libstdc++-v3/include/bits/semaphore_base.h
  ec9967579f5a56f1f687a745536eafea  libstdc++-v3/include/bits/shared_ptr.h
  23c0ae833e9a425540f0dd796ba1f1fb  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 5a4f32349d3d835ebe2a62a9bd29ce45  libstdc++-v3/include/bits/shared_ptr_base.h
  d050e025f60dc3eef08990d737b75085  libstdc++-v3/include/bits/slice_array.h
  67cd790795bafd7c20715ef4d1f9d2d3  libstdc++-v3/include/bits/specfun.h
  de3723b929f14af1731389010c14893b  libstdc++-v3/include/bits/sstream.tcc
--- 140670,140676 ----
  4b60aa9d5174c0de92a784ea26cc1cc1  libstdc++-v3/include/bits/semaphore_base.h
  ec9967579f5a56f1f687a745536eafea  libstdc++-v3/include/bits/shared_ptr.h
  23c0ae833e9a425540f0dd796ba1f1fb  libstdc++-v3/include/bits/shared_ptr_atomic.h
! aabf703d0701a294064c552fcf2ed3ff  libstdc++-v3/include/bits/shared_ptr_base.h
  d050e025f60dc3eef08990d737b75085  libstdc++-v3/include/bits/slice_array.h
  67cd790795bafd7c20715ef4d1f9d2d3  libstdc++-v3/include/bits/specfun.h
  de3723b929f14af1731389010c14893b  libstdc++-v3/include/bits/sstream.tcc
*************** de3723b929f14af1731389010c14893b  libstd
*** 140549,140561 ****
  c35a5da0369f3af2e9e202c9c8510914  libstdc++-v3/include/bits/std_function.h
  5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
! ba6b4286e0794c4aaff0334a22f0316c  libstdc++-v3/include/bits/stl_algo.h
! 1849c7c5fca6cf7f810e25ba44dbda45  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
  7f15896f0e815aaa22a610841ad076bd  libstdc++-v3/include/bits/stl_iterator.h
  0785a7212d2b637a0dcdad049af90133  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  54bf96df9d7600b71ab8d00f28c7e6de  libstdc++-v3/include/bits/stl_iterator_base_types.h
--- 140678,140690 ----
  c35a5da0369f3af2e9e202c9c8510914  libstdc++-v3/include/bits/std_function.h
  5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
! 47f320876ac9a6b9e293843fecadc1d8  libstdc++-v3/include/bits/stl_algo.h
! 161d5a3091624ba835db0849863091ac  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
! 2d1ceae672eb00b521fa6d8c7e03015f  libstdc++-v3/include/bits/stl_heap.h
  7f15896f0e815aaa22a610841ad076bd  libstdc++-v3/include/bits/stl_iterator.h
  0785a7212d2b637a0dcdad049af90133  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  54bf96df9d7600b71ab8d00f28c7e6de  libstdc++-v3/include/bits/stl_iterator_base_types.h
*************** bde7ef0245c6a48f1e86c1154662b9b3  libstd
*** 140585,140591 ****
  d4640a684d621320ba7676511ca49731  libstdc++-v3/include/bits/unicode.h
  e10663748871662214948efa4440ceaa  libstdc++-v3/include/bits/uniform_int_dist.h
  0d7174a622374816c75ac03f78148fc9  libstdc++-v3/include/bits/unique_lock.h
! 93a78bb35b2fe9f54d8df8c4c1669ad4  libstdc++-v3/include/bits/unique_ptr.h
  cc943715f9f524c3520028821de279b9  libstdc++-v3/include/bits/unordered_map.h
  23e3769341c471dd17aa42c532a2e463  libstdc++-v3/include/bits/unordered_set.h
  a29de34311f884bb0a7bb8854fe4ce34  libstdc++-v3/include/bits/uses_allocator.h
--- 140714,140720 ----
  d4640a684d621320ba7676511ca49731  libstdc++-v3/include/bits/unicode.h
  e10663748871662214948efa4440ceaa  libstdc++-v3/include/bits/uniform_int_dist.h
  0d7174a622374816c75ac03f78148fc9  libstdc++-v3/include/bits/unique_lock.h
! c5263518fe491607b28f907ed4390bf6  libstdc++-v3/include/bits/unique_ptr.h
  cc943715f9f524c3520028821de279b9  libstdc++-v3/include/bits/unordered_map.h
  23e3769341c471dd17aa42c532a2e463  libstdc++-v3/include/bits/unordered_set.h
  a29de34311f884bb0a7bb8854fe4ce34  libstdc++-v3/include/bits/uses_allocator.h
*************** a229b5c8ad2904a3b3173239225596c4  libstd
*** 140596,140603 ****
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  6adf2ccea897e9d5fc8e7650eceac96f  libstdc++-v3/include/bits/vector.tcc
! 003b825c234c8c58b78044aa9c8776fc  libstdc++-v3/include/bits/version.def
! ee8d68f46315f866cd71a18dbdd31407  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
--- 140725,140732 ----
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  6adf2ccea897e9d5fc8e7650eceac96f  libstdc++-v3/include/bits/vector.tcc
! 6762242aa129c2aa32818c24aca5c112  libstdc++-v3/include/bits/version.def
! 349d6d3166736ed75547d099814290c2  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
*************** e9a6f8cd8ef6adf87f31afd4454d5b4c  libstd
*** 140693,140699 ****
  a46e56be8a5c7864bcb2f77a72d54330  libstdc++-v3/include/c_std/cwctype
  68805c660b948571bc792c03bff11310  libstdc++-v3/include/debug/array
  194fe21cb1d17e540e307f40839dd3a0  libstdc++-v3/include/debug/assertions.h
! 6a548050d467f49c20ad4cf5f57b293f  libstdc++-v3/include/debug/bitset
  d04ab77d57ea4da4e9368ea91a58b0b9  libstdc++-v3/include/debug/debug.h
  315542f069d1f7281003b0e0ef35099a  libstdc++-v3/include/debug/deque
  4bfcb8801504f4255afc7240ed87193f  libstdc++-v3/include/debug/formatter.h
--- 140822,140828 ----
  a46e56be8a5c7864bcb2f77a72d54330  libstdc++-v3/include/c_std/cwctype
  68805c660b948571bc792c03bff11310  libstdc++-v3/include/debug/array
  194fe21cb1d17e540e307f40839dd3a0  libstdc++-v3/include/debug/assertions.h
! f13795ce096d89245c5cca9a1fd186ea  libstdc++-v3/include/debug/bitset
  d04ab77d57ea4da4e9368ea91a58b0b9  libstdc++-v3/include/debug/debug.h
  315542f069d1f7281003b0e0ef35099a  libstdc++-v3/include/debug/deque
  4bfcb8801504f4255afc7240ed87193f  libstdc++-v3/include/debug/formatter.h
*************** faf9f2ab717f81b1e1f120be7de31c23  libstd
*** 140792,140798 ****
  7da2b16ba42c2a096eafa6d90cd4935a  libstdc++-v3/include/ext/algorithm
  1e85d61b1ab664fe9e83e4d05536cf0c  libstdc++-v3/include/ext/aligned_buffer.h
  b538cf34d296f3161c57558eea3bca8b  libstdc++-v3/include/ext/alloc_traits.h
! 854b4d6287d544695fc53e4ef926b96b  libstdc++-v3/include/ext/atomicity.h
  cd7c7fb3fb3d1f59882fb99a31eee718  libstdc++-v3/include/ext/bitmap_allocator.h
  cc0f2a5daeafb6e08b62720e44d9bd80  libstdc++-v3/include/ext/cast.h
  9543d5277e2a8ea51632d885f21ed4fa  libstdc++-v3/include/ext/cmath
--- 140921,140927 ----
  7da2b16ba42c2a096eafa6d90cd4935a  libstdc++-v3/include/ext/algorithm
  1e85d61b1ab664fe9e83e4d05536cf0c  libstdc++-v3/include/ext/aligned_buffer.h
  b538cf34d296f3161c57558eea3bca8b  libstdc++-v3/include/ext/alloc_traits.h
! 0c4ceb2a349b35343bfa3ae67ca9cb8d  libstdc++-v3/include/ext/atomicity.h
  cd7c7fb3fb3d1f59882fb99a31eee718  libstdc++-v3/include/ext/bitmap_allocator.h
  cc0f2a5daeafb6e08b62720e44d9bd80  libstdc++-v3/include/ext/cast.h
  9543d5277e2a8ea51632d885f21ed4fa  libstdc++-v3/include/ext/cmath
*************** fcc955b62295ec860d3325dcc560c84d  libstd
*** 141053,141059 ****
  2cf343e6aa6c9958f694b82002cb0ebc  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
  88e49bb63ce2d7e0b660d8e6d42f380b  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  5a26ba93d8f758420b81f277bbf2b9ae  libstdc++-v3/include/ext/pod_char_traits.h
! c3b861479f216b935dce1631e21f1f40  libstdc++-v3/include/ext/pointer.h
  632b168bc3f59ee2f8d768f850477130  libstdc++-v3/include/ext/pool_allocator.h
  b322a22912e51ceadd84487a08225730  libstdc++-v3/include/ext/random
  d4823ad58701997da39ea15b0978cef0  libstdc++-v3/include/ext/random.tcc
--- 141182,141188 ----
  2cf343e6aa6c9958f694b82002cb0ebc  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
  88e49bb63ce2d7e0b660d8e6d42f380b  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
  5a26ba93d8f758420b81f277bbf2b9ae  libstdc++-v3/include/ext/pod_char_traits.h
! 4ad79df4aafab52a65d948cf79db6e77  libstdc++-v3/include/ext/pointer.h
  632b168bc3f59ee2f8d768f850477130  libstdc++-v3/include/ext/pool_allocator.h
  b322a22912e51ceadd84487a08225730  libstdc++-v3/include/ext/random
  d4823ad58701997da39ea15b0978cef0  libstdc++-v3/include/ext/random.tcc
*************** eb20df8190cb844a12f9fd68d043bcf0  libstd
*** 141116,141122 ****
  44d4d211c772a6d7858623a3153850b1  libstdc++-v3/include/parallel/types.h
  7997eb362a00f19f0f8e29fe72718fba  libstdc++-v3/include/parallel/unique_copy.h
  322d276913feb4b729019573db0593af  libstdc++-v3/include/parallel/workstealing.h
! 37ac2dd1c7910a98bcbb9619d27add88  libstdc++-v3/include/precompiled/extc++.h
  0828ac924be9bb5d3a1b7242ef3aaf85  libstdc++-v3/include/precompiled/stdc++.h
  a62eb60403f5499c2d4a096e6a68b92b  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
--- 141245,141251 ----
  44d4d211c772a6d7858623a3153850b1  libstdc++-v3/include/parallel/types.h
  7997eb362a00f19f0f8e29fe72718fba  libstdc++-v3/include/parallel/unique_copy.h
  322d276913feb4b729019573db0593af  libstdc++-v3/include/parallel/workstealing.h
! 1bef868830f6ae886926e0673e218c09  libstdc++-v3/include/precompiled/extc++.h
  0828ac924be9bb5d3a1b7242ef3aaf85  libstdc++-v3/include/precompiled/stdc++.h
  a62eb60403f5499c2d4a096e6a68b92b  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
*************** e52031cf939ea27e56877705f57f1bd6  libstd
*** 141136,141142 ****
  cdf493ace328837031dc6cd01975e318  libstdc++-v3/include/pstl/numeric_impl.h
  531b6552c2b0ded549ed9bc9b03bebf4  libstdc++-v3/include/pstl/parallel_backend.h
  c6ea5607259b8e63bb887db39136b942  libstdc++-v3/include/pstl/parallel_backend_serial.h
! eb7da829c52c944d7125a8a18352a312  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  688f2289e52048ec70461174eadd2efe  libstdc++-v3/include/pstl/parallel_impl.h
  f1cc3238df41adc204bc4f90accc63f3  libstdc++-v3/include/pstl/pstl_config.h
--- 141265,141271 ----
  cdf493ace328837031dc6cd01975e318  libstdc++-v3/include/pstl/numeric_impl.h
  531b6552c2b0ded549ed9bc9b03bebf4  libstdc++-v3/include/pstl/parallel_backend.h
  c6ea5607259b8e63bb887db39136b942  libstdc++-v3/include/pstl/parallel_backend_serial.h
! e7017931c30ac7c644b653a1a29fbd0a  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  688f2289e52048ec70461174eadd2efe  libstdc++-v3/include/pstl/parallel_impl.h
  f1cc3238df41adc204bc4f90accc63f3  libstdc++-v3/include/pstl/pstl_config.h
*************** d1730a41b18e21cbac0f5328aad2d223  libstd
*** 141154,141160 ****
  c961d014368e022c98c261e769fdc2aa  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
  489f1fa388f56f93420713f979711c6b  libstdc++-v3/include/std/complex
! c3c1dced3bd41cb17dfb1d65d089f9d3  libstdc++-v3/include/std/concepts
  4d4392c4b49029819ced576ee163366b  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
--- 141283,141289 ----
  c961d014368e022c98c261e769fdc2aa  libstdc++-v3/include/std/chrono
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
  489f1fa388f56f93420713f979711c6b  libstdc++-v3/include/std/complex
! 71f48e065b77e69f00dd2315c96b4e55  libstdc++-v3/include/std/concepts
  4d4392c4b49029819ced576ee163366b  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
*************** c7512fdd688111026ada39c2eff08f8e  libstd
*** 141164,141173 ****
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! ab1fd410ae5cfd04391233377f847161  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
! 0aa25471ab92e52b971602e730d27afd  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
  26d2e4ff32739cdce0f87c94a551c38c  libstdc++-v3/include/std/inplace_vector
--- 141293,141302 ----
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! b2dc74693534809200270f0cc6e4aabe  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
! b44cfa75dc5fc6e60ae23f8648774afb  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
  26d2e4ff32739cdce0f87c94a551c38c  libstdc++-v3/include/std/inplace_vector
*************** e8ef6ca7c551cefb5d53bde7cf7c1c75  libstd
*** 141182,141188 ****
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! 763a857bddbbc1f175ac41bc99548ee1  libstdc++-v3/include/std/mdspan
  0dd24dd9b5275d8876e90702c09a88e6  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
  96d4004072aee0df9b1cac29de7649c2  libstdc++-v3/include/std/mutex
--- 141311,141317 ----
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! c7b78db2858d54519f476912fb458f9a  libstdc++-v3/include/std/mdspan
  0dd24dd9b5275d8876e90702c09a88e6  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
  96d4004072aee0df9b1cac29de7649c2  libstdc++-v3/include/std/mutex
*************** a28bf4bed6789b61535d4b05ff48ba76  libstd
*** 141201,141207 ****
  9b8d5c4868a64371c6591ccd2d8ae5f0  libstdc++-v3/include/std/set
  ee32950ba29d7cda3e788de0776d8c16  libstdc++-v3/include/std/shared_mutex
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
! 64422a30806d4c44c044910b7d14be13  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
  1ffc378f8e8e686e82a35a2717c0da50  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
--- 141330,141336 ----
  9b8d5c4868a64371c6591ccd2d8ae5f0  libstdc++-v3/include/std/set
  ee32950ba29d7cda3e788de0776d8c16  libstdc++-v3/include/std/shared_mutex
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
! 522a5acff0bbc10f78a18d5e279f0cf6  libstdc++-v3/include/std/span
  148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
  1ffc378f8e8e686e82a35a2717c0da50  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
*************** ece7d2fc2f03efd22a5d6ce6dc618b1b  libstd
*** 141212,141223 ****
  56f8a72abc9e7160f18f9a373325a008  libstdc++-v3/include/std/streambuf
  905475b4fea23e39df3f56c178517ade  libstdc++-v3/include/std/string
  c5a4df8fdbbe4b3d33d0b52db500e16d  libstdc++-v3/include/std/string_view
! 362d06f047ef5267af7587a8d12e0c0d  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  69cb1e47f224bd1b5ecfe3d36600ebfc  libstdc++-v3/include/std/thread
  6ec655e7fd49c6ce8c2ddd38a3b6b9dc  libstdc++-v3/include/std/tuple
! 2d44ad936e0296b0496b56b9fd500290  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
--- 141341,141352 ----
  56f8a72abc9e7160f18f9a373325a008  libstdc++-v3/include/std/streambuf
  905475b4fea23e39df3f56c178517ade  libstdc++-v3/include/std/string
  c5a4df8fdbbe4b3d33d0b52db500e16d  libstdc++-v3/include/std/string_view
! b9cf79d1edae688927d40109f321047a  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
  608edef7344e2e25c7b00170df6fa9e6  libstdc++-v3/include/std/text_encoding
  69cb1e47f224bd1b5ecfe3d36600ebfc  libstdc++-v3/include/std/thread
  6ec655e7fd49c6ce8c2ddd38a3b6b9dc  libstdc++-v3/include/std/tuple
! 5ea768fa6c707d59799120d2c8762c2a  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
*************** b5033bc12fc1667581a589f0b0816848  libstd
*** 141294,141301 ****
  020e4ef309cbacb213e801b1cdc2e794  libstdc++-v3/include/tr2/dynamic_bitset.tcc
  7dd87c5c55dd5cc161e8bbde1bf48c0e  libstdc++-v3/include/tr2/ratio
  5e8b74468be045996135279f106b9cf0  libstdc++-v3/include/tr2/type_traits
! 4bf324c34b00c45bbb781f7864278dd4  libstdc++-v3/libsupc++/Makefile.am
! 89680042878a16ef20deacf944e7c75c  libstdc++-v3/libsupc++/Makefile.in
  0fe1047f2631852aac2f59f516cdf91a  libstdc++-v3/libsupc++/array_type_info.cc
  f86dfaba443201defcd622bf120d5cb2  libstdc++-v3/libsupc++/atexit_arm.cc
  c51642b22c737ba47db904e6e0534fd5  libstdc++-v3/libsupc++/atexit_thread.cc
--- 141423,141430 ----
  020e4ef309cbacb213e801b1cdc2e794  libstdc++-v3/include/tr2/dynamic_bitset.tcc
  7dd87c5c55dd5cc161e8bbde1bf48c0e  libstdc++-v3/include/tr2/ratio
  5e8b74468be045996135279f106b9cf0  libstdc++-v3/include/tr2/type_traits
! 00161500f1584e38dc5b83485c9cfed8  libstdc++-v3/libsupc++/Makefile.am
! 00fa28ea5345773656eecc22cfc827ce  libstdc++-v3/libsupc++/Makefile.in
  0fe1047f2631852aac2f59f516cdf91a  libstdc++-v3/libsupc++/array_type_info.cc
  f86dfaba443201defcd622bf120d5cb2  libstdc++-v3/libsupc++/atexit_arm.cc
  c51642b22c737ba47db904e6e0534fd5  libstdc++-v3/libsupc++/atexit_thread.cc
*************** fbb127f006c65ae37d591c627cc6235c  libstd
*** 141514,141525 ****
  85b9d2e407dc7113a97234b2c23e96dc  libstdc++-v3/src/c++17/ryu/ryu_generic_128.h
  e66e202fb59625eb933c316b0bf9ee34  libstdc++-v3/src/c++17/string-inst.cc
  6bbe101ec337afce54e0c8dee6fdd6d3  libstdc++-v3/src/c++17/uint128_t.h
! 1365c94f6279f312448afb4f276ee66f  libstdc++-v3/src/c++20/Makefile.am
! 458fbfef5680c2db982e68e970f868e5  libstdc++-v3/src/c++20/Makefile.in
  44b19f393472c9494f63f59cbe9fe25f  libstdc++-v3/src/c++20/atomic.cc
  ac664105ccfd50a2a092e98df11864a3  libstdc++-v3/src/c++20/clock.cc
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
  e9e89f4578e59d252e4caaf0b63d6dfb  libstdc++-v3/src/c++20/tzdata.zi
  e7b5fbbd5ee61bf8fbf8702b095de326  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
--- 141643,141655 ----
  85b9d2e407dc7113a97234b2c23e96dc  libstdc++-v3/src/c++17/ryu/ryu_generic_128.h
  e66e202fb59625eb933c316b0bf9ee34  libstdc++-v3/src/c++17/string-inst.cc
  6bbe101ec337afce54e0c8dee6fdd6d3  libstdc++-v3/src/c++17/uint128_t.h
! 4d414718915223bfe45a3a197501ea1d  libstdc++-v3/src/c++20/Makefile.am
! 15aa6a31c49989bd05e3a3b784a54e90  libstdc++-v3/src/c++20/Makefile.in
  44b19f393472c9494f63f59cbe9fe25f  libstdc++-v3/src/c++20/atomic.cc
  ac664105ccfd50a2a092e98df11864a3  libstdc++-v3/src/c++20/clock.cc
  94b3ab191e8fe566a951ac2b4f081c40  libstdc++-v3/src/c++20/format.cc
  939eb3ac7ce3c32a8b2aac493f053893  libstdc++-v3/src/c++20/sstream-inst.cc
+ 4ae5a188313674c3aa4f25f8fbc77046  libstdc++-v3/src/c++20/syncbuf.cc
  e9e89f4578e59d252e4caaf0b63d6dfb  libstdc++-v3/src/c++20/tzdata.zi
  e7b5fbbd5ee61bf8fbf8702b095de326  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
*************** d85f3a53465585d54b96880e79456c79  libstd
*** 141529,141535 ****
  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
! 1c74e385d6f1143be24c00827ad9d44b  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  757f1e829f27dedf5e8d7d83b358ad27  libstdc++-v3/src/c++26/Makefile.am
  3cdab153592c4a94c6607ed5cd536469  libstdc++-v3/src/c++26/Makefile.in
--- 141659,141665 ----
  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
! af6929dcc1a2ab5d6974fbf06043509e  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  757f1e829f27dedf5e8d7d83b358ad27  libstdc++-v3/src/c++26/Makefile.am
  3cdab153592c4a94c6607ed5cd536469  libstdc++-v3/src/c++26/Makefile.in
*************** a3b9ca97435d798fd3f8c7bb4032ebd9  libstd
*** 142072,142077 ****
--- 142202,142214 ----
  414f2d4aa5542289673f653f70daf19e  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
  7c993d1a79f9898222dd51d8ce772ec0  libstdc++-v3/testsuite/20_util/conditional/requirements/explicit_instantiation.cc
  d3dd0426932e9c536f4b38fbebb59b84  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
+ b4af9f744bcbb71828481c5c12037ea4  libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc
+ 5346b4cd3dbf6bdac9e9a84918a02798  libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc
+ a674e05ce6366fbdb9b577b9cc1c4694  libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
+ 4f883ef3e2bac1731295f2a289a4d6b3  libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc
+ 744be7f70859e1c16d4ff5fc2b45a6e6  libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc
+ 4493f844b98a725a7da7505a5eb5ec4b  libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
+ 0756c41fad3bcc603f1a78d29478fe15  libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
  404eb18749ec930755e24ae928ae99ee  libstdc++-v3/testsuite/20_util/copyable_function/call.cc
  09520df3df90b586a3cb13556948faa3  libstdc++-v3/testsuite/20_util/copyable_function/cons.cc
  d08c6d7092cbc05d4491a4d25574eea5  libstdc++-v3/testsuite/20_util/copyable_function/conv.cc
*************** da651dd004d0c17e3757b420f0f651be  libstd
*** 142237,142242 ****
--- 142374,142380 ----
  cf0e17bbd866d9cd26def3c1b550256c  libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
  927fc7212da895d9c6ec8127e5916b36  libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
  301115b4ac6059939af6a41b978b489a  libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc
+ 934613f8f3ada29d61e506f84d74b218  libstdc++-v3/testsuite/20_util/function_objects/121782.cc
  8f5e17f706249e407588401c4f4da0c4  libstdc++-v3/testsuite/20_util/function_objects/83607.cc
  2730a0bf441e209b7b0283acc7a1e230  libstdc++-v3/testsuite/20_util/function_objects/bind_back/1.cc
  a170197e1c15888e69e8f42454c4eb22  libstdc++-v3/testsuite/20_util/function_objects/bind_back/111327.cc
*************** fde3a218834ce1b1a4b072bd69bbbae6  libstd
*** 143420,143425 ****
--- 143558,143564 ----
  ee84c9c566056e33e070142ac43e90f8  libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
  a1d1d379d8c0c213b9058d05c9184434  libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
  6b897d033cb55ff130e351833c656265  libstdc++-v3/testsuite/20_util/weak_ptr/cons/self_move.cc
+ d474ab3de86472b091cb5e1eb977e148  libstdc++-v3/testsuite/20_util/weak_ptr/cons/virtual_bases.cc
  6fdd90819e8fbbf7973c9baf79dd26b3  libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
  81caf89f5d2508b4ffd2bbeeb2fcefa5  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
  2f3b9591e0251d9b1629799d582d140a  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_equal.cc
*************** ef8992fce519e4aeb10d10129736a163  libstd
*** 145122,145128 ****
  f0cede418772577badbb376161c38ebb  libstdc++-v3/testsuite/23_containers/mdspan/accessors/debug/aligned_offset_neg.cc
  c9be65e1a0cf8e0da83e4027b6ea3e64  libstdc++-v3/testsuite/23_containers/mdspan/accessors/default_neg.cc
  72240f7d2b9d3abcab8b06d4f0e67f65  libstdc++-v3/testsuite/23_containers/mdspan/accessors/generic.cc
! 22e0f5f9fb4bc8a3baf9b93c86b44573  libstdc++-v3/testsuite/23_containers/mdspan/class_mandate_neg.cc
  bb096ee6d5a81634a48634c6dda721a9  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
--- 145261,145267 ----
  f0cede418772577badbb376161c38ebb  libstdc++-v3/testsuite/23_containers/mdspan/accessors/debug/aligned_offset_neg.cc
  c9be65e1a0cf8e0da83e4027b6ea3e64  libstdc++-v3/testsuite/23_containers/mdspan/accessors/default_neg.cc
  72240f7d2b9d3abcab8b06d4f0e67f65  libstdc++-v3/testsuite/23_containers/mdspan/accessors/generic.cc
! e5c17ed95482174d37bf901a5f3dff37  libstdc++-v3/testsuite/23_containers/mdspan/class_mandate_neg.cc
  bb096ee6d5a81634a48634c6dda721a9  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
*************** e9e5cce5f41b3fcb25e00e9b6edb9a83  libstd
*** 145130,145136 ****
  f11430abfbf793c9117a6d498fc9e9d6  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_shape.cc
  56a0f5d5edaad1117cc988beafc16d5d  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
  669e44182af41d221acecffd45681dc9  libstdc++-v3/testsuite/23_containers/mdspan/extents/extents_mismatch_neg.cc
! cd679b437130cf20de1aa5b8680b73dd  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
  e941ac1789059834b40085a779a24d2e  libstdc++-v3/testsuite/23_containers/mdspan/int_like.h
  bead52db525471c98d26137e05743c97  libstdc++-v3/testsuite/23_containers/mdspan/layout_like.h
  09f60c1da783ed561b487e9441ae6882  libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
--- 145269,145275 ----
  f11430abfbf793c9117a6d498fc9e9d6  libstdc++-v3/testsuite/23_containers/mdspan/extents/ctor_shape.cc
  56a0f5d5edaad1117cc988beafc16d5d  libstdc++-v3/testsuite/23_containers/mdspan/extents/custom_integer.cc
  669e44182af41d221acecffd45681dc9  libstdc++-v3/testsuite/23_containers/mdspan/extents/extents_mismatch_neg.cc
! b156707a9c78c39d6425cbae7cb3f90a  libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
  e941ac1789059834b40085a779a24d2e  libstdc++-v3/testsuite/23_containers/mdspan/int_like.h
  bead52db525471c98d26137e05743c97  libstdc++-v3/testsuite/23_containers/mdspan/layout_like.h
  09f60c1da783ed561b487e9441ae6882  libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
*************** ea1a2f61fac46b6b55b9ff2c52289540  libstd
*** 145139,145145 ****
  dd7692786bb4cc01e8e54a11e77eef69  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
  a65c4b5056c3c06dc115e0ce959f26b4  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
  3f96813b92ac712ab8210f7eb24e7158  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
! de0ccc5f3275031f5c8109ac93a09046  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
  a1e2443fdfc824b4a97945b2d4aa84a0  libstdc++-v3/testsuite/23_containers/mdspan/version.cc
  351e436ffeeb8e47804c6992b75a81cb  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
--- 145278,145284 ----
  dd7692786bb4cc01e8e54a11e77eef69  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
  a65c4b5056c3c06dc115e0ce959f26b4  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
  3f96813b92ac712ab8210f7eb24e7158  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
! 94e1c258b4d0ee973edbc3f9311a7883  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
  a1e2443fdfc824b4a97945b2d4aa84a0  libstdc++-v3/testsuite/23_containers/mdspan/version.cc
  351e436ffeeb8e47804c6992b75a81cb  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
*************** abef8cc189d28e6cb89211d1b0abd4df  libstd
*** 145436,145442 ****
  3079136837b68baf200eeff8d2de46b2  libstdc++-v3/testsuite/23_containers/span/cons_1_assert_neg.cc
  bf42ecf9e224c05daf99ea1027024d94  libstdc++-v3/testsuite/23_containers/span/cons_2_assert_neg.cc
  cc85d356317e14c047bb3dc64f357b66  libstdc++-v3/testsuite/23_containers/span/contiguous_range_neg.cc
! fd41850a889c3c4ae69abb9835cf8e65  libstdc++-v3/testsuite/23_containers/span/deduction.cc
  1465ef02795ed098463db1e362b222c8  libstdc++-v3/testsuite/23_containers/span/everything.cc
  7e562b99a70f160b518dee3c848cf5b1  libstdc++-v3/testsuite/23_containers/span/explicit.cc
  2e8334b5c5bd86f2208c33e107c543e7  libstdc++-v3/testsuite/23_containers/span/first_2_assert_neg.cc
--- 145575,145581 ----
  3079136837b68baf200eeff8d2de46b2  libstdc++-v3/testsuite/23_containers/span/cons_1_assert_neg.cc
  bf42ecf9e224c05daf99ea1027024d94  libstdc++-v3/testsuite/23_containers/span/cons_2_assert_neg.cc
  cc85d356317e14c047bb3dc64f357b66  libstdc++-v3/testsuite/23_containers/span/contiguous_range_neg.cc
! 2f183f8b82ff0babc3ff45cd3728e2f1  libstdc++-v3/testsuite/23_containers/span/deduction.cc
  1465ef02795ed098463db1e362b222c8  libstdc++-v3/testsuite/23_containers/span/everything.cc
  7e562b99a70f160b518dee3c848cf5b1  libstdc++-v3/testsuite/23_containers/span/explicit.cc
  2e8334b5c5bd86f2208c33e107c543e7  libstdc++-v3/testsuite/23_containers/span/first_2_assert_neg.cc
*************** a7fdd4ef46d148c07b2306186a300c7e  libstd
*** 146331,146337 ****
  ccbbe51e2f862feaa3f4e717ef2f1cd6  libstdc++-v3/testsuite/24_iterators/range_generators/subrange.cc
  176a646a1b7559b26db737da71d00cd9  libstdc++-v3/testsuite/24_iterators/range_generators/synopsis.cc
  02f28e9c43d1c6870cb37adefe922b06  libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc
! 15713890df454c3323b70750ba44f7a5  libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
  cd26960c17e204b57f33cfd344c760f5  libstdc++-v3/testsuite/24_iterators/range_operations/advance_debug_neg.cc
  f3e9bd715fe13148d21f32ce807ccb06  libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.cc
  82cf546702856f1c245234aaea7e34de  libstdc++-v3/testsuite/24_iterators/range_operations/distance.cc
--- 146470,146476 ----
  ccbbe51e2f862feaa3f4e717ef2f1cd6  libstdc++-v3/testsuite/24_iterators/range_generators/subrange.cc
  176a646a1b7559b26db737da71d00cd9  libstdc++-v3/testsuite/24_iterators/range_generators/synopsis.cc
  02f28e9c43d1c6870cb37adefe922b06  libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc
! 5cbf58c7adc2c15f1617c8ae864e0224  libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
  cd26960c17e204b57f33cfd344c760f5  libstdc++-v3/testsuite/24_iterators/range_operations/advance_debug_neg.cc
  f3e9bd715fe13148d21f32ce807ccb06  libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.cc
  82cf546702856f1c245234aaea7e34de  libstdc++-v3/testsuite/24_iterators/range_operations/distance.cc
*************** c7b814f3a3013e1381d3a596a8aa9e0b  libstd
*** 146559,146564 ****
--- 146698,146704 ----
  fe4a3a324375fed9391472380a75a084  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/2_neg.cc
  d6aa10a5a345aeee3e4410caf3658526  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/3_neg.cc
  c4faf9c14b041d197dd925b1b143180d  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/4_neg.cc
+ a59caf2b2bebde2df17ea5d0a2a31fd8  libstdc++-v3/testsuite/25_algorithms/fill_n/diff_type.cc
  c69b037aba162499e03cf8e6fc1272e4  libstdc++-v3/testsuite/25_algorithms/fill_n/dr426.cc
  3d416671da63e9be28c25ba9cd1fdd7e  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/2.cc
  1642b85042c8b3a50538108945441f8f  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/pod.cc
*************** e7d81d19fa1701f4b7b239e8528e7f53  libstd
*** 146640,146646 ****
  2fc150610ded15046bfce4a02f56d4fe  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
  d5ead7d283c37eff914130974709f3a1  libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
  a23c605624d9254eeb17598e3e952e1c  libstdc++-v3/testsuite/25_algorithms/heap/1.cc
! 18247148bbe9135146a5d8115306cc69  libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc
  a345eb9266fc296ae4c7294a1ce6fd15  libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
  e58c80478bf02f0dd49e5b91c4326c0b  libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
  28140f2c7221373324ed1254c62f5aaa  libstdc++-v3/testsuite/25_algorithms/heap/vectorbool.cc
--- 146780,146786 ----
  2fc150610ded15046bfce4a02f56d4fe  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
  d5ead7d283c37eff914130974709f3a1  libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
  a23c605624d9254eeb17598e3e952e1c  libstdc++-v3/testsuite/25_algorithms/heap/1.cc
! 4c5c3e36cf19cb17525d34fdd026ef54  libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc
  a345eb9266fc296ae4c7294a1ce6fd15  libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
  e58c80478bf02f0dd49e5b91c4326c0b  libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
  28140f2c7221373324ed1254c62f5aaa  libstdc++-v3/testsuite/25_algorithms/heap/vectorbool.cc
*************** cc435e73205248f7798a7b0a1c988553  libstd
*** 146707,146712 ****
--- 146847,146853 ----
  5c445aad728e91c14a226df73c1f2dd6  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constexpr.cc
  dbf91f202774977633e2efb7288a1404  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constrained.cc
  f5aafea9ce0993e0fe2dcc4d707306c1  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc
+ d691daf06a10b68206bb7c1833e8a7c7  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/diff_type.cc
  f1c4cfebacea3a76855cc4f6359948ed  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/2.cc
  132775c06b88b4f4dabb26d9363b06e5  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/pod.cc
  2f74bd0c2563df2b65a1d763adc008c1  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/uchar.cc
*************** c8fa1a478b6af65fb5552f71888cd409  libstd
*** 146839,146869 ****
  14913d2c02e21a0bd1f0c157e6a0bb62  libstdc++-v3/testsuite/25_algorithms/nth_element/1.cc
  4196860d38c03d5f1796dc0333932786  libstdc++-v3/testsuite/25_algorithms/nth_element/2.cc
  bfc0fe0e2bf3a188298e2f8c59a11c25  libstdc++-v3/testsuite/25_algorithms/nth_element/3.cc
! fc5197743bd756be8a94ec05a75a66c5  libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
  de5bc2f064937a358af6a92925c84d25  libstdc++-v3/testsuite/25_algorithms/nth_element/check_type.cc
  91114d9c33183df2b667bbd7732c19a7  libstdc++-v3/testsuite/25_algorithms/nth_element/constexpr.cc
! 072b304030e409b5509ce81b192e039a  libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc
  34ef5373a87c5539aba797972da8db9b  libstdc++-v3/testsuite/25_algorithms/nth_element/moveable.cc
! 9d31960c54ebe92e93d690440cbbc57a  libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc
  421fe937ace4d92b749cc311dab19e35  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc
  272dd2fdc3294a37e8bff95ed27c213b  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/pod.cc
  ccb0169f47366f0d71d1221408607b0b  libstdc++-v3/testsuite/25_algorithms/partial_sort/1.cc
  64f412b409d5f991917af23e8e2a1d06  libstdc++-v3/testsuite/25_algorithms/partial_sort/2.cc
! 7bb9fddecb357ba1aeb4ca7e5bdd2b52  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc
  102e6bd75cd48b24effe37de90b3ac42  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_type.cc
  7520ea4c090ff5e4224374b13bb724af  libstdc++-v3/testsuite/25_algorithms/partial_sort/constexpr.cc
! 4d5b2675f5b9f6688f64cabf4e43bf69  libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc
  e04050bf9f656d70513c7b3e520d660a  libstdc++-v3/testsuite/25_algorithms/partial_sort/moveable.cc
! f3c9df835045953497a5a9f755321cd1  libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc
  0614da01e0a9f6ce77258d1ab7835874  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/2.cc
  4e8fa77d5cee69a0e6ad22bfb20c6385  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/pod.cc
  d569a9b798c0cf2b094a3854b298de1b  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/1.cc
  36fd18cbc296fbdcfc81c9a4fc3c05b0  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/2.cc
  a7180dfc1948ec155a45a6429110547f  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/check_type.cc
  9b2f2a0f8e54684c623a4661bc4eeb92  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constexpr.cc
! 1549eda83a287da0bfcf373b0e198cc3  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc
  6806ff18905f943ba5b7efb93a549397  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc
! a1f4bd78654896581dd28106fb7e00aa  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc
  53cd1ee806937caca001d0d0c280233e  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/2.cc
  149af51b61861f0c681c4a60b9de29ea  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/pod.cc
  88b0643dd97f7bddd3ab8ab92d0c8772  libstdc++-v3/testsuite/25_algorithms/partition/1.cc
--- 146980,147010 ----
  14913d2c02e21a0bd1f0c157e6a0bb62  libstdc++-v3/testsuite/25_algorithms/nth_element/1.cc
  4196860d38c03d5f1796dc0333932786  libstdc++-v3/testsuite/25_algorithms/nth_element/2.cc
  bfc0fe0e2bf3a188298e2f8c59a11c25  libstdc++-v3/testsuite/25_algorithms/nth_element/3.cc
! 30b210b0da4ee00ba3901c18ce30eea8  libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
  de5bc2f064937a358af6a92925c84d25  libstdc++-v3/testsuite/25_algorithms/nth_element/check_type.cc
  91114d9c33183df2b667bbd7732c19a7  libstdc++-v3/testsuite/25_algorithms/nth_element/constexpr.cc
! 8341d047692eefb2cc6066064849d3ca  libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc
  34ef5373a87c5539aba797972da8db9b  libstdc++-v3/testsuite/25_algorithms/nth_element/moveable.cc
! 7cc896a5f4ef74195c4789c013c64316  libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc
  421fe937ace4d92b749cc311dab19e35  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc
  272dd2fdc3294a37e8bff95ed27c213b  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/pod.cc
  ccb0169f47366f0d71d1221408607b0b  libstdc++-v3/testsuite/25_algorithms/partial_sort/1.cc
  64f412b409d5f991917af23e8e2a1d06  libstdc++-v3/testsuite/25_algorithms/partial_sort/2.cc
! 1dec301d0decbd07ff64dfd7d87a27d7  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc
  102e6bd75cd48b24effe37de90b3ac42  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_type.cc
  7520ea4c090ff5e4224374b13bb724af  libstdc++-v3/testsuite/25_algorithms/partial_sort/constexpr.cc
! cd8b49555fcc6fc91652d67a843228be  libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc
  e04050bf9f656d70513c7b3e520d660a  libstdc++-v3/testsuite/25_algorithms/partial_sort/moveable.cc
! 9fdf61c2eead47c5a6a77b613e055de3  libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc
  0614da01e0a9f6ce77258d1ab7835874  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/2.cc
  4e8fa77d5cee69a0e6ad22bfb20c6385  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/pod.cc
  d569a9b798c0cf2b094a3854b298de1b  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/1.cc
  36fd18cbc296fbdcfc81c9a4fc3c05b0  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/2.cc
  a7180dfc1948ec155a45a6429110547f  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/check_type.cc
  9b2f2a0f8e54684c623a4661bc4eeb92  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constexpr.cc
! c2ce61cc5fcf5711f90aeedbaf92329c  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc
  6806ff18905f943ba5b7efb93a549397  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc
! df9909a695236781b87142a7dbb79209  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc
  53cd1ee806937caca001d0d0c280233e  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/2.cc
  149af51b61861f0c681c4a60b9de29ea  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/pod.cc
  88b0643dd97f7bddd3ab8ab92d0c8772  libstdc++-v3/testsuite/25_algorithms/partition/1.cc
*************** fb9a94fdbc2173f208966fdc9c5c149a  libstd
*** 147021,147026 ****
--- 147162,147168 ----
  a491d331ad9a26245682da60b15e814b  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/2.cc
  30644a0af9574d32698dd049024db7de  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/pod.cc
  4fc56cc276502f56141a45539c066b24  libstdc++-v3/testsuite/25_algorithms/rotate/1.cc
+ b46d4df946f2a410785d20a9f6c457e5  libstdc++-v3/testsuite/25_algorithms/rotate/121913.cc
  7c7766e78eb5757dc57d0458abdb76f0  libstdc++-v3/testsuite/25_algorithms/rotate/90920.cc
  f03a100044eb6a8828fae0cd2c3d42ab  libstdc++-v3/testsuite/25_algorithms/rotate/check_type.cc
  2dc282def9ae5ab490a0d65707d78625  libstdc++-v3/testsuite/25_algorithms/rotate/constexpr.cc
*************** b2ea87e9205e641b5475df5f3f8d9ac7  libstd
*** 147088,147094 ****
  960464186034ba5de96696d8b4b40874  libstdc++-v3/testsuite/25_algorithms/shift_right/1.cc
  bfc3e968d9eeeab0a163fa931efba1f6  libstdc++-v3/testsuite/25_algorithms/shift_right/constrained.cc
  13fef40827fc69a1a6fa8ae8d2d22db6  libstdc++-v3/testsuite/25_algorithms/shuffle/1.cc
! 43f26af530f4768cc438502aa7ba12ea  libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc
  fdc8ebf89947b64544c3b407c7df39b9  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/2.cc
  ff217b553c3adffe4da34e77ba3308cb  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/pod.cc
  d76872375020f06b1b84a7b659a1e7f3  libstdc++-v3/testsuite/25_algorithms/sort/1.cc
--- 147230,147236 ----
  960464186034ba5de96696d8b4b40874  libstdc++-v3/testsuite/25_algorithms/shift_right/1.cc
  bfc3e968d9eeeab0a163fa931efba1f6  libstdc++-v3/testsuite/25_algorithms/shift_right/constrained.cc
  13fef40827fc69a1a6fa8ae8d2d22db6  libstdc++-v3/testsuite/25_algorithms/shuffle/1.cc
! 53f037d1518fa36ec39bfea216fcd0cb  libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc
  fdc8ebf89947b64544c3b407c7df39b9  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/2.cc
  ff217b553c3adffe4da34e77ba3308cb  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/pod.cc
  d76872375020f06b1b84a7b659a1e7f3  libstdc++-v3/testsuite/25_algorithms/sort/1.cc
*************** f859e29ec6cd7017c9d0abc60ed4b8ce  libstd
*** 150780,150785 ****
--- 150922,150928 ----
  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
+ 1b3b368898e00e27fc4de00e410402a1  libstdc++-v3/testsuite/std/format/pr121765.cc
  b6b9f91be9026a6afba65550474a2713  libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
  857552c77c29e3b58e4847f84fc27778  libstdc++-v3/testsuite/std/format/ranges/feature_test.cc
  970b8bb7949b0a609542bb298f4b4a77  libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
*************** b7854f4608d1d0feb88b4885cce489b4  libstd
*** 150849,150855 ****
  05868c1aaac909e8a76cc492a1d4b3b2  libstdc++-v3/testsuite/std/ranges/adaptors/conditionally_borrowed.cc
  d6f43aa2aa28ccf6f02960749550aac6  libstdc++-v3/testsuite/std/ranges/adaptors/counted.cc
  40721f1e30af6d3ae5a93d0f3326d89d  libstdc++-v3/testsuite/std/ranges/adaptors/detail/copyable_box.cc
! 6274dca506d8c9c1f7a277be7c410a6c  libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc
  00f2749a0f541f84b8c76fe5412d04d5  libstdc++-v3/testsuite/std/ranges/adaptors/drop_while.cc
  3f44f7941efe01ca6d9866ad6a152776  libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
  40e31845569daf0829a17a44a8ee56a0  libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc
--- 150992,150998 ----
  05868c1aaac909e8a76cc492a1d4b3b2  libstdc++-v3/testsuite/std/ranges/adaptors/conditionally_borrowed.cc
  d6f43aa2aa28ccf6f02960749550aac6  libstdc++-v3/testsuite/std/ranges/adaptors/counted.cc
  40721f1e30af6d3ae5a93d0f3326d89d  libstdc++-v3/testsuite/std/ranges/adaptors/detail/copyable_box.cc
! 7aa5980f4b8aa6a628d6ca0fc4157513  libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc
  00f2749a0f541f84b8c76fe5412d04d5  libstdc++-v3/testsuite/std/ranges/adaptors/drop_while.cc
  3f44f7941efe01ca6d9866ad6a152776  libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
  40e31845569daf0829a17a44a8ee56a0  libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc
*************** f3bc72e48f5192cf9f187425e1bc3ab2  libstd
*** 151001,151007 ****
  3f9fcbf0af1cdb5c5b503cef22cd9394  libstdc++-v3/testsuite/std/time/year_month_day/2.cc
  b7c64f232b54b107438e4d09b7a482a0  libstdc++-v3/testsuite/std/time/year_month_day/3.cc
  fb81614a5410f53328449fdd57e18a7a  libstdc++-v3/testsuite/std/time/year_month_day/4.cc
! d12b1ce84dd8aa47821e932aa1466dec  libstdc++-v3/testsuite/std/time/year_month_day/io.cc
  2bf8f80dc7da8604e27e6654433dd7ea  libstdc++-v3/testsuite/std/time/year_month_day_last/1.cc
  9aaae50fe881bb76fea156e9419bde1d  libstdc++-v3/testsuite/std/time/year_month_day_last/2.cc
  88d90bf0d08da6a2546594d62c819008  libstdc++-v3/testsuite/std/time/year_month_day_last/io.cc
--- 151144,151150 ----
  3f9fcbf0af1cdb5c5b503cef22cd9394  libstdc++-v3/testsuite/std/time/year_month_day/2.cc
  b7c64f232b54b107438e4d09b7a482a0  libstdc++-v3/testsuite/std/time/year_month_day/3.cc
  fb81614a5410f53328449fdd57e18a7a  libstdc++-v3/testsuite/std/time/year_month_day/4.cc
! b597635bbd22b3f5d50f097629012342  libstdc++-v3/testsuite/std/time/year_month_day/io.cc
  2bf8f80dc7da8604e27e6654433dd7ea  libstdc++-v3/testsuite/std/time/year_month_day_last/1.cc
  9aaae50fe881bb76fea156e9419bde1d  libstdc++-v3/testsuite/std/time/year_month_day_last/2.cc
  88d90bf0d08da6a2546594d62c819008  libstdc++-v3/testsuite/std/time/year_month_day_last/io.cc
*************** aa52b04bf095d0226a1314474cb5c3c4  libstd
*** 151730,151736 ****
  3d3f95e4c126c7714834db5c046f0867  libstdc++-v3/testsuite/util/testsuite_hooks.cc
  c08d7419962b291852dd827d7d78f678  libstdc++-v3/testsuite/util/testsuite_hooks.h
  2cc9d485ece15882c52d8b6a9c1094e8  libstdc++-v3/testsuite/util/testsuite_io.h
! c6b33c1381e9c6f8ffd5e787b3480a93  libstdc++-v3/testsuite/util/testsuite_iterators.h
  bb471f730bbdca73a1658e3b1e4295c0  libstdc++-v3/testsuite/util/testsuite_new_operators.h
  cb452b2ea9afe9f303a9f003d3d6412b  libstdc++-v3/testsuite/util/testsuite_performance.h
  9e7f7529d1423cbb841bf18d5251891d  libstdc++-v3/testsuite/util/testsuite_random.h
--- 151873,151879 ----
  3d3f95e4c126c7714834db5c046f0867  libstdc++-v3/testsuite/util/testsuite_hooks.cc
  c08d7419962b291852dd827d7d78f678  libstdc++-v3/testsuite/util/testsuite_hooks.h
  2cc9d485ece15882c52d8b6a9c1094e8  libstdc++-v3/testsuite/util/testsuite_io.h
! ba7ebea1dd36e6d7a9945f836f828353  libstdc++-v3/testsuite/util/testsuite_iterators.h
  bb471f730bbdca73a1658e3b1e4295c0  libstdc++-v3/testsuite/util/testsuite_new_operators.h
  cb452b2ea9afe9f303a9f003d3d6412b  libstdc++-v3/testsuite/util/testsuite_performance.h
  9e7f7529d1423cbb841bf18d5251891d  libstdc++-v3/testsuite/util/testsuite_random.h
diff -Nrcpad gcc-16-20250907/contrib/ChangeLog gcc-16-20250914/contrib/ChangeLog
*** gcc-16-20250907/contrib/ChangeLog	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/contrib/ChangeLog	Sun Sep 14 22:32:07 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-09-10  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* compare_tests: Improve non-unique tests report when testing
+ 	several configurations.
+ 
+ 2025-09-08  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* compare_tests: Report non-unique test names.
+ 
  2025-08-17  Filip Kastl  <fkastl@suse.cz>
  
  	* check-MAINTAINERS.py: Document the way the script sorts
diff -Nrcpad gcc-16-20250907/contrib/compare_tests gcc-16-20250914/contrib/compare_tests
*** gcc-16-20250907/contrib/compare_tests	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/contrib/compare_tests	Sun Sep 14 22:32:07 2025
*************** tmp1=$TMPDIR/$tool-testing.$$a
*** 41,46 ****
--- 41,48 ----
  tmp2=$TMPDIR/$tool-testing.$$b
  now_s=$TMPDIR/$tool-testing.$$d
  before_s=$TMPDIR/$tool-testing.$$e
+ now_u=$TMPDIR/$tool-uniq.$$d
+ before_u=$TMPDIR/$tool-uniq.$$e
  lst1=$TMPDIR/$tool-lst1.$$
  lst2=$TMPDIR/$tool-lst2.$$
  lst3=$TMPDIR/$tool-lst3.$$
*************** lst4=$TMPDIR/$tool-lst4.$$
*** 48,54 ****
  lst5=$TMPDIR/$tool-lst5.$$
  sum1=$TMPDIR/$tool-sum1.$$
  sum2=$TMPDIR/$tool-sum2.$$
! tmps="$tmp1 $tmp2 $now_s $before_s $lst1 $lst2 $lst3 $lst4 $lst5 $sum1 $sum2"
  
  [ "$1" = "-strict" ] && strict=$1 && shift
  [ "$1" = "-?" ] && usage
--- 50,56 ----
  lst5=$TMPDIR/$tool-lst5.$$
  sum1=$TMPDIR/$tool-sum1.$$
  sum2=$TMPDIR/$tool-sum2.$$
! tmps="$tmp1 $tmp2 $now_s $before_s $now_u $before_u $lst1 $lst2 $lst3 $lst4 $lst5 $sum1 $sum2"
  
  [ "$1" = "-strict" ] && strict=$1 && shift
  [ "$1" = "-?" ] && usage
*************** fi
*** 124,129 ****
--- 126,161 ----
  sort -t ':' $skip1 "$now" > "$now_s"
  sort -t ':' $skip1 "$before" > "$before_s"
  
+ # Report non-unique test names and print the diff between the two
+ # lists if they are different.
+ #
+ # If the results include several configurations (schedule of
+ # variations), we report duplicates several times with different
+ # target/tool prefixes because at this stage we do not know if the
+ # target and/or tool prefix was inserted.
+ # If we used the input files (so generally several times the same
+ # results in one section per target), we would incorreclty detect
+ # duplicates (as many as targets)
+ grep -E '^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|UNSUPPORTED|UNTESTED|ERROR):' "$now_s"    | uniq -cd > "$now_u"
+ grep -E '^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|UNSUPPORTED|UNTESTED|ERROR):' "$before_s" | uniq -cd > "$before_u"
+ 
+ same_uniq=" now"
+ cmp -s "$before_u" "$now_u" && same_uniq=""
+ 
+ if [ -s "$now_u" ]; then
+     echo "Non-unique test names$same_uniq: (Eeek!)"
+     cat "$now_u"
+     echo
+     exit_status=1
+ fi
+ 
+ if [ -s "$before_u" -a "x$same_uniq" != "x" ]; then
+     echo "Changes to non-unique test names:"
+     diff -u "$before_u" "$now_u" | grep -E '^[-\\+] '
+     echo
+     exit_status=1
+ fi
+ 
  grep '^FAIL:' "$now_s" | sed 's/^[^:]*:[ 	]//' >$tmp1
  grep '^PASS' "$before_s" | sed 's/^[^:]*:[ 	]//' | comm -12 $tmp1 - >$tmp2
  
diff -Nrcpad gcc-16-20250907/gcc/ChangeLog gcc-16-20250914/gcc/ChangeLog
*** gcc-16-20250907/gcc/ChangeLog	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ChangeLog	Sun Sep 14 22:32:07 2025
***************
*** 1,3 ****
--- 1,493 ----
+ 2025-09-13  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* target.def (dtors_from_cxa_atexit): Properly mark up
+ 	__cxa_atexit as code.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2025-09-13  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	PR rtl-optimization/121205
+ 	* lra-constraints.cc (curr_insn_transform): Stop processing on
+ 	error.
+ 
+ 2025-09-13  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/invoke.texi (Optimize Options): Editorial changes around
+ 	-fprofile-partial-training.
+ 
+ 2025-09-12  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* lra-constraints.cc (get_equiv): Bounds check before accessing
+ 	data in ira_reg_equiv.
+ 
+ 2025-09-12  Edwin Lu  <ewlu@rivosinc.com>
+ 
+ 	* match.pd: New NARROW_CLIP variant for SAT_TRUNC.
+ 	* tree-vect-patterns.cc (gimple_unsigned_integer_narrow_clip):
+ 	Add new decl for NARROW_CLIP.
+ 	(vect_recog_sat_trunc_pattern): Add NARROW_CLIP check.
+ 
+ 2025-09-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/120063
+ 	* diagnostics/context.cc (context::execution_failed_p): Also treat
+ 	any kind::fatal errors as leading to failed execution.
+ 	* diagnostics/sarif-sink.cc (maybe_get_sarif_level): Handle
+ 	kind::fatal as SARIF level "error".
+ 
+ 2025-09-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/121876
+ 	* diagnostics/buffering.cc (context::set_diagnostic_buffer): Add
+ 	early reject of the no-op case.
+ 
+ 2025-09-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/121865
+ 	* ipa-free-lang-data.cc (find_decls_types_r): Don't walk into
+ 	DECL_CHAIN for any DECL.
+ 
+ 2025-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* ipa-pure-const.cc (check_stmt): Minor formatting tweaks.
+ 	(pass_data_nothrow): Fix pasto in description.
+ 
+ 2025-09-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* internal-fn.def (VEC_TRUNC_ADD_HIGH): New.
+ 	* doc/generic.texi: Document it.
+ 	* optabs.def (vec_trunc_add_high): New.
+ 	* doc/md.texi: Document it.
+ 	* tree-vect-stmts.cc (vectorizable_early_exit): Use addhn if supported.
+ 
+ 2025-09-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (vec_addh_narrow<mode>): New.
+ 
+ 2025-09-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* tree-vect-loop.cc (vect_analyze_loop_1): If the unroll pragma was set
+ 	mark it as handled.
+ 	* doc/extend.texi (pragma GCC unroll): Update documentation.
+ 
+ 2025-09-11  Trevor Gross  <tmgross@umich.edu>
+ 
+ 	* doc/libgcc.texi (Comparison functions): Document functions as
+ 	returning CMPtype.
+ 
+ 2025-09-11  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	PR middle-end/66462
+ 	* config/aarch64/aarch64.md (isfinite<mode>2): Add new expander.
+ 
+ 2025-09-11  Matteo Nicoli  <matteo.nicoli001@gmail.com>
+ 
+ 	PR tree-optimization/121595
+ 	* match.pd (fabs(a + 0.0) -> fabs (a)): Optimization pattern limited to
+ 	the -fno-trapping-math case.
+ 
+ 2025-09-11  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/sync.md (atomic_compare_and_swapti_scq):
+ 	Require LSX.  Change the operands for the output, the memory,
+ 	and the expected value to LSX vector modes.  Add a FCCmode
+ 	output to indicate if CAS has written the desired value into
+ 	memory.  Use LSX to atomically load both words of the 16B value
+ 	in memory.
+ 	(atomic_compare_and_swapti): Pun the modes to satisify
+ 	the new atomic_compare_and_swapti_scq implementation.  Read the
+ 	bool return value from the FCC instead of performing a
+ 	comparision.
+ 
+ 2025-09-11  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_print_operand): Call
+ 	reg_or_0_operand for checking the sanity of %t.
+ 
+ 2025-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121703
+ 	* tree-vect-stmts.cc (vectorizable_store): Value-initialize ls.
+ 	(vectorizable_load): Likewise.
+ 
+ 2025-09-11  Tsukasa OI  <research_trasio@irq.a4lg.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_function_ok_for_sibcall):
+ 	Suppress cross calling convention sibcall optimization from
+ 	the vector calling convention variant.
+ 
+ 2025-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121829
+ 	* cfgloopmanip.cc (create_preheader): Ensure we can insert
+ 	at the end of a preheader.
+ 
+ 2025-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121870
+ 	* tree-ssa-propagate.cc
+ 	(substitute_and_fold_engine::substitute_and_fold): Skip
+ 	removed stmts from noreturn fixup.
+ 
+ 2025-09-11  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* config/riscv/bitmanip.md (*<bitmanip_minmax_cmp_insn>_cmp_<mode>3):
+ 	New min/max ifcvt pattern.
+ 	* config/riscv/iterators.md (minu): New iterator.
+ 	* config/riscv/riscv.cc (riscv_noce_conversion_profitable_p):
+ 	Remove riscv-specific adjustment.
+ 
+ 2025-09-11  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* ifcvt.cc (noce_convert_multiple_sets_1): Add use_cond_earliest
+ 	param.
+ 	(noce_convert_multiple_sets): Set use_cond_earliest.
+ 	(noce_process_if_block): Just use original cost.
+ 	(noce_find_if_block): Use insn_cost (jump_insn).
+ 
+ 2025-09-11  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-selftests.cc (riscv_run_selftests): Call
+ 	run_vectorize_related_mode_selftests.
+ 	(test_vectorize_related_mode): New function to test
+ 	vectorize_related_mode behavior.
+ 	(run_vectorize_related_mode_selftests): New function to run all
+ 	vectorize_related_mode tests.
+ 	(run_vectorize_related_mode_vla_selftests): New function to test
+ 	VLA modes.
+ 	(run_vectorize_related_mode_vls_rv64gcv_selftests): New function to
+ 	test VLS modes on rv64gcv.
+ 	(run_vectorize_related_mode_vls_rv32gc_zve32x_zvl256b_selftests):
+ 	New function to test VLS modes on rv32gc_zve32x_zvl256b.
+ 	(run_vectorize_related_mode_vls_selftests): New function to run all
+ 	VLS mode tests.
+ 	* config/riscv/riscv-v.cc (can_find_related_mode_p): Fix VLS type
+ 	handling by converting TARGET_MIN_VLEN from bits to bytes.
+ 
+ 2025-09-10  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/81540
+ 	PR target/49857
+ 	* common/config/avr/avr-common.cc: Disable -ftree-switch-conversion.
+ 
+ 2025-09-10  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.h (TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P):
+ 	Change "Xtrnase" in the comment to "Xtensa".
+ 
+ 2025-09-10  Peter Bergner  <bergner@tenstorrent.com>
+ 
+ 	PR target/121878
+ 	* config/riscv/tt-ascalon-d8.md (tt_ascalon_d8_vec_idiv_half): Test the
+ 	Selected Element Width (SEW) rather than the mode.
+ 	(tt_ascalon_d8_vec_idiv_single): Likewise.
+ 	(tt_ascalon_d8_vec_idiv_double): Likewise.
+ 	(tt_ascalon_d8_vec_float_divsqrt_half): Likewise.
+ 	(tt_ascalon_d8_vec_float_divsqrt_single): Likewise.
+ 	(tt_ascalon_d8_vec_float_divsqrt_double): Likewise.
+ 
+ 2025-09-10  Juergen Christ  <jchrist@linux.ibm.com>
+ 
+ 	* tree-vect-loop.cc (vectorizable_live_operation_1): Fix
+ 	load/store bias handling.
+ 
+ 2025-09-10  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfwsub_wf_<mode>): New pattern to
+ 	combine float_extend + vec_duplicate + vfsub.vv into vfwsub.wf.
+ 
+ 2025-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121828
+ 	* gimple-lower-bitint.cc (gimple_lower_bitint): For REALPART_EXPR
+ 	consumed by store in the same bb and with REALPART_EXPR from
+ 	optimizable_arith_overflow, don't add REALPART_EXPR lhs to
+ 	the m_names bitmap only if the cast from IMAGPART_EXPR doesn't
+ 	appear in between the REALPART_EXPR and the store.
+ 
+ 2025-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121831
+ 	* expr.cc (raw_data_cst_read_str): New function.
+ 	(store_constructor) <case ARRAY_TYPE>: Handle RAW_DATA_CST.
+ 
+ 2025-09-10  Juergen Christ  <jchrist@linux.ibm.com>
+ 
+ 	* config/s390/s390.h (CLZ_DEFINED_VALUE_AT_ZERO): Adjust and
+ 	return 2.
+ 	(CTZ_DEFINED_VALUE_AT_ZERO): Return 2.
+ 	* config/s390/s390.md (clzsi2): Implement.
+ 	(ctzsi2): Implement.
+ 
+ 2025-09-10  Maximilian Immanuel Brandtner  <maxbr@linux.ibm.com>
+ 
+ 	* config/s390/vector.md (*vec_extract<mode>_plus_zero_extend):
+ 	Fix define insn.
+ 
+ 2025-09-09  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* config/gcn/gcn-devices.def: Correct the Max ISA VGPRs counts for
+ 	GFX10 and GFX11 devices.
+ 	* config/gcn/gcn.cc (gcn_hsa_declare_function_name): Remove the wave64
+ 	VGPR count fudge.
+ 
+ 2025-09-09  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_expand_builtin_1): Enable the "mode" parameter
+ 	and ensure that "target" is a register for most of the builtins.
+ 
+ 2025-09-09  David Faust  <david.faust@oracle.com>
+ 
+ 	PR debug/121411
+ 	* dwarf2ctf.cc (ctf_get_AT_data_member_location) Use AT_unsigned
+ 	when fetching AT_bit_offset and AT_data_member_location.  Simplify.
+ 	(ctf_die_bitsize): Return unsigned HOST_WIDE_INT instead of
+ 	uint32_t.
+ 	(gen_ctf_base_type, gen_ctf_sou_type, gen_ctf_enumeration_type):
+ 	Adapt accordingly.
+ 
+ 2025-09-09  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfwsub_vf_<mode>): New pattern to
+ 	combine float_extend + vec_duplicate + vfwsub.vv into vfwsub.vf.
+ 
+ 2025-09-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121678
+ 	* tree.cc (staticp): Handle REALPART_EXPR and IMAGPART_EXPR.
+ 
+ 2025-09-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/invoke.texi (Warning Options): Note that an option
+ 	enabled by -Wextra is for C and ObjC only.
+ 
+ 2025-09-09  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfwadd_wf_<mode>): New pattern to
+ 	combine float_extend + vec_duplicate + vfadd.vv into vfwadd.wf.
+ 	* config/riscv/vector.md
+ 	(@pred_single_widen_<plus_minus:optab><mode>_scalar): Swap and reorder
+ 	operands to match the RTL emitted by expand.
+ 
+ 2025-09-09  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Revert:
+ 	2025-07-11  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (*bcaxqdi4): New
+ 	define_insn_and_split.
+ 
+ 2025-09-09  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Revert:
+ 	2025-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121829
+ 	* tree-vect-loop-manip.cc (vect_remove_forwarder): New
+ 	function.
+ 	(slpeel_tree_duplicate_loop_to_edge_cfg): Use it.
+ 
+ 2025-09-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121861
+ 	* config/i386/i386.cc (ix86_optab_supported_p): Drop
+ 	!flag_trapping_math check for floor_optab, ceil_optab and
+ 	btrunc_optab.
+ 
+ 2025-09-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386-expand.cc (expand_vec_perm_vpermil): Extend
+ 	to handle V8SImode.
+ 	* config/i386/i386.cc (avx_vpermilp_parallel): Extend to
+ 	handle vector integer modes with same vector size and same
+ 	component size.
+ 	* config/i386/sse.md
+ 	(<sse2_avx_avx512f>_vpermilp<mode><mask_name>): Ditto.
+ 	(V48_AVX): New mode iterator.
+ 	(ssefltmodesuffix): Extend for V16SI/V8DI/V16SF/V8DF.
+ 
+ 2025-09-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
+ 	Check permutation index for vec_perm, don't count it if we
+ 	know it's not a cross-lane permutation.
+ 
+ 2025-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107997
+ 	PR tree-optimization/121844
+ 	* tree-ssa-loop-ivopts.cc (allow_ip_end_pos_p): Do not allow
+ 	IP_END for latches ending with a control stmt.
+ 	(create_new_iv): Do not split the latch edge, instead assert
+ 	that's not necessary.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfwadd_vf_<mode>): New pattern to
+ 	combine float_extend + vec_duplicate + vfwadd.vv into vfwadd.vf.
+ 
+ 2025-09-08  Anton Blanchard  <antonb@tenstorrent.com>
+ 
+ 	* config/riscv/riscv.cc (tt_ascalon_d8_tune_info): Increase branch_cost
+ 	from 3 to 4.
+ 
+ 2025-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121830
+ 	* tree-vect-loop.cc (vect_analyze_scalar_cycles_1): Only
+ 	set STMT_VINFO_REDUC_DEF on reductions.
+ 	* tree-vect-slp.cc (vect_build_slp_tree_2): Identify reduction
+ 	PHIs by a set STMT_VINFO_REDUC_DEF instead of their def type.
+ 
+ 2025-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121829
+ 	* tree-vect-loop-manip.cc (vect_remove_forwarder): New
+ 	function.
+ 	(slpeel_tree_duplicate_loop_to_edge_cfg): Use it.
+ 
+ 2025-09-08  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR tree-optimization/114892
+ 	* doc/invoke.texi (Developer Options): Document -folding option
+ 	for -fdump-tree-*.
+ 
+ 2025-09-08  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* ipa-cp.cc (gather_count_of_non_rec_edges): Check count
+ 	initialization before adding to total.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfrsub_vf_<mode>): New pattern to
+ 	combine vec_duplicate + vfsub.vv into vfrsub.vf.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfsub_vf_<mode>): New pattern to
+ 	combine vec_duplicate + vfsub.vv into vfsub.vf.
+ 	* config/riscv/vector.md (@pred_<optab><mode>_scalar): Allow VLS modes.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfadd_vf_<mode>): New pattern to
+ 	combine vec_duplicate + vfadd.vv into vfadd.vf.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfwmul_vf_<mode>): New pattern to
+ 	combine float_extend + vec_duplicate + vfmul.vv into vfmul.vf.
+ 	* config/riscv/vector.md (*@pred_dual_widen_<optab><mode>_scalar):
+ 	Swap operands to match the RTL emitted by expand, i.e. first
+ 	float_extend then vec_duplicate.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vfmin_vf_ieee_<mode>): Rename into...
+ 	(*v<ieee_fmaxmin_op>_vf_<mode>): New pattern to combine vec_duplicate +
+ 	vf{max,min}.vv (unspec) into vf{max,min}.vf.
+ 
+ 2025-09-08  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/extend.texi (SH Function Attributes): Remove reference to
+ 	GNU Binutils 2.7 requirement.
+ 	(H8/300 Variable Attributes): Ditto.
+ 
+ 2025-09-08  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR tree-optimization/87900
+ 	* tree-ssa-strlen.cc  (strlen_pass::handle_assign): Add RHS argument.
+ 	For empty constructor RHS, see if can combine with a previous malloc into
+ 	a calloc.
+ 	(strlen_pass::check_and_optimize_call): Update call to handle_assign;
+ 	passing NULL_TREE for RHS.
+ 	(strlen_pass::check_and_optimize_stmt): Update call to handle_assign.
+ 
+ 2025-09-08  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR tree-optimization/83022
+ 	* tree-ssa-strlen.cc (last_stmt_ptr_check): New function.
+ 	(allow_memset_malloc_to_calloc): New function.
+ 	(strlen_pass::handle_builtin_memset): Check to see if it is a good
+ 	idea to do the malloc+memset->calloc optimization.
+ 	(printf_strlen_execute): Free post dom info.
+ 
+ 2025-09-08  Sam James  <sam@gentoo.org>
+ 
+ 	* common.opt.urls: Regenerate.
+ 
+ 2025-09-07  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121841
+ 	* tree-ssa-forwprop.cc (optimize_agr_copyprop_1): Allow
+ 	two different decls as bases as non-overlapping bases.
+ 
+ 2025-09-07  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* dep-fusion.cc: Mark clone, gate and execute methods as final.
+ 
+ 2025-09-07  Kuan-Lin Chen  <rufus@andestech.com>
+ 
+ 	* config/riscv/andes-vector-builtins-bases.cc (nds_vd4dot): New class.
+ 	(class nds_vd4dotsu): New class.
+ 	* config/riscv/andes-vector-builtins-bases.h: New def.
+ 	* config/riscv/andes-vector-builtins-functions.def (nds_vd4dots): Ditto.
+ 	(nds_vd4dotsu): Ditto.
+ 	(nds_vd4dotu): Ditto.
+ 	* config/riscv/andes-vector.md
+ 	(@pred_nds_vd4dot<su><mode>): New pattern.
+ 	(@pred_nds_vd4dotsu<mode>): New pattern.
+ 	* config/riscv/genrvv-type-indexer.cc (main): Modify sew of QUAD_FIX,
+ 	QUAD_FIX_SIGNED and QUAD_FIX_UNSIGNED.
+ 	* config/riscv/riscv-vector-builtins.cc
+ 	(qexti_vvvv_ops): New operand information.
+ 	(qexti_su_vvvv_ops): New operand information.
+ 	(qextu_vvvv_ops): New operand information.
+ 	* config/riscv/riscv-vector-builtins.h (XANDESVDOT_EXT): New def.
+ 	(required_ext_to_isa_name): Add case XANDESVDOT_EXT.
+ 	(required_extensions_specified): Ditto.
+ 	(struct function_group_info): Ditto.
+ 	* config/riscv/vector-iterators.md (NDS_QUAD_FIX): New iterator.
+ 
+ 2025-09-07  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv-opts.h (riscv_microarchitecture_type): Fix ordering.
+ 
+ 2025-09-07  Kuan-Lin Chen  <rufus@andestech.com>
+ 
+ 	* common/config/riscv/riscv-common.cc:
+ 	Turn on VECTOR_ELEN_FP_16 for XAndesvpackfph.
+ 	* config/riscv/andes-vector-builtins-bases.cc (nds_vfpmad): New class.
+ 	* config/riscv/andes-vector-builtins-bases.h: New def.
+ 	* config/riscv/andes-vector-builtins-functions.def (nds_vfpmadt): Ditto.
+ 	(nds_vfpmadb): Ditto.
+ 	(nds_vfpmadt_frm): Ditto.
+ 	(nds_vfpmadb_frm): Ditto.
+ 	* config/riscv/andes-vector.md (@pred_nds_vfpmad<nds_tb><mode>):
+ 	New pattern.
+ 	* config/riscv/riscv-vector-builtins-types.def
+ 	(DEF_RVV_F16_OPS): New def.
+ 	* config/riscv/riscv-vector-builtins.cc (f16_ops): Ditto
+ 	* config/riscv/riscv-vector-builtins.def (float32_type_node): Ditto.
+ 	* config/riscv/riscv-vector-builtins.h (XANDESVPACKFPH_EXT): Ditto.
+ 	(required_ext_to_isa_name): Add case XANDESVPACKFPH_EXT.
+ 	(required_extensions_specified): Ditto.
+ 	* config/riscv/vector-iterators.md (VHF): New iterator.
+ 
+ 2025-09-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/121794
+ 	* config/avr/avr.md (cmpqi3): Use cpi R,0 if possible.
+ 
+ 2025-09-07  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/autovec-opt.md (*vnmsac_vx_<mode>): Rename from.
+ 	(*mul_minus_vx_<mode>): Rename to and add nmsub support.
+ 	* config/riscv/vector.md (@pred_vnmsac_vx_<mode>): Rename from.
+ 	(@pred_mul_minus_vx_<mode>): Rename to and add nmsub support.
+ 	(*pred_nmsac_<mode>_scalar_undef): Rename from.
+ 	(*pred_mul_minus_vx<mode>_undef): Rename to and add nmsub support.
+ 
  2025-09-06  Sam James  <sam@gentoo.org>
  
  	* doc/generic.texi (TYPE_CANONICAL): Don't mention long-removed
diff -Nrcpad gcc-16-20250907/gcc/DATESTAMP gcc-16-20250914/gcc/DATESTAMP
*** gcc-16-20250907/gcc/DATESTAMP	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/DATESTAMP	Sun Sep 14 22:32:07 2025
***************
*** 1 ****
! 20250907
--- 1 ----
! 20250914
diff -Nrcpad gcc-16-20250907/gcc/ada/ChangeLog gcc-16-20250914/gcc/ada/ChangeLog
*** gcc-16-20250907/gcc/ada/ChangeLog	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/ChangeLog	Sun Sep 14 22:32:07 2025
***************
*** 1,3 ****
--- 1,796 ----
+ 2025-09-11  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* libgnat/g-socket.adb (Listen_Socket): Change default value.
+ 	* libgnat/g-socket.ads (Listen_Socket): Likewise.
+ 	* s-oscons-tmplt.c (BACKLOG_MAX): New.
+ 
+ 2025-09-11  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* env.c (__gnat_clearenv): Adjust comment.
+ 	* libgnarl/a-intnam__bsd.ads: Fix copyright date.
+ 
+ 2025-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Give a
+ 	warning for huge imported objects as well.
+ 
+ 2025-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/ada-tree.h (TYPE_ALIGN_OK): Delete.
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity): Do not set it.
+ 	* gcc-interface/gigi.h (standard_datatypes): Add ADT_tag_name_id.
+ 	(tag_name_id): New macro.
+ 	(type_is_tagged_or_cw_equivalent): New inline predicate.
+ 	* gcc-interface/trans.cc (gigi): Initialize tag_name_id.
+ 	(gnat_to_gnu) <N_Unchecked_Type_Conversion>: Replace tests on
+ 	TYPE_ALIGN_OK with calls to type_is_tagged_or_cw_equivalent.
+ 	(addressable_p): Likewise.
+ 	* gcc-interface/utils.cc (convert): Likewise.
+ 	* gcc-interface/utils2.cc (build_binary_op): Likewise.
+ 
+ 2025-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/misc.cc (gnat_get_array_descr_info): In the record
+ 	type case, bail out if the original array type cannot be retrieved.
+ 
+ 2025-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h (standard_datatypes): Add ADT_uns_mulv64_decl
+ 	and ADT_uns_mulv128_decl.
+ 	(uns_mulv64_decl): New macro.
+ 	(uns_mulv128_decl): Likewise.
+ 	* gcc-interface/trans.cc (gigi): Create the uns_mulv64_decl and
+ 	uns_mulv128_decl declarations.
+ 	(gnat_to_gnu) <N_Op_Add>: Perform an overflow check for unsigned
+ 	integer addition, subtraction and multiplication if required.
+ 	<N_Op_Minus>: Perform an overflow check for unsigned integer
+ 	negation if required.
+ 	(build_unary_op_trapv): Add support for unsigned types.
+ 	(build_binary_op_trapv): Likewise.
+ 	<MINUS_EXPR>: Perform the check if the LHS is zero in the signed
+ 	case as well.
+ 
+ 2025-09-11  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Actuals): After building the tree for a
+ 	predicate check, call Prepend_To instead of Append_To so that the
+ 	check is performed before, instead of after, the corresponding
+ 	parameter copy-back.
+ 
+ 2025-09-11  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_prag.adb: Create a ghost region for pragma annotate before
+ 	analyzing its arguments.
+ 
+ 2025-09-11  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Iterator_Specification): Check ghost context
+ 	of Iterable functions when handling iterator specifications with an
+ 	Iterable aspect.
+ 
+ 2025-09-11  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Policy): Update coding style.
+ 
+ 2025-09-11  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Policy): Avoid triggering a ghost
+ 	policy error if the policy is referenced within the Iterable
+ 	aspect.
+ 
+ 2025-09-11  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Is_OK_Statement): Check the levels of the
+ 	assignee with the levels of the entity are ghost level dependent.
+ 	(Check_Assignement_Levels): New function for checking the level
+ 	dependencies.
+ 
+ 2025-09-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.ads (Ghost_Assertion_Level): Fix comment.
+ 
+ 2025-09-11  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Mark_And_Set_Ghost_Assignment): Create a ghost region
+ 	for an assigment irregardless of whether the expander is active.
+ 	Relocate the Assignment validity checks from Is_OK_Statement to
+ 	this subprogram.
+ 
+ 2025-09-11  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Container_Aggr_Code.Build_Size_Expr): In the case
+ 	of an association with a single choice, only call Update_Choices when
+ 	the choice expression is nonstatic.
+ 
+ 2025-09-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb
+ 	(Expand_Assign_With_Target_Names.Replace_Target):
+ 	Remove code setting Entity to Empty.
+ 	* sinfo.ads (Has_Target_Names):
+ 	Improve comment: add "@" to clarify what "target name"
+ 	means, and remove the content-free phrase "and must
+ 	be expanded accordingly."
+ 
+ 2025-09-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo-utils.adb (Root_Type): Do not deal with missing Etype.
+ 
+ 2025-09-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo-utils.adb (Root_Type): Deal with missing Etype.
+ 	(Root_Type_If_Set): Likewise.
+ 
+ 2025-09-11  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Entity): Protect call to Associated_Storage_Pool
+ 	since it cannot be used when the Etype is not set.
+ 	* sem_ch3.adb (Access_Type_Declaration): Ditto.
+ 	* sem_aux.adb (Is_Derived_Type): Protect call to Root_Type since it
+ 	cannot be used when the Etype is not set.
+ 
+ 2025-09-11  Tonu Naks  <naks@adacore.com>
+ 
+ 	* libgnat/s-crtl.ads: define unsigned
+ 	* libgnat/s-crtl__mingw.adb (read, write): change arg type
+ 
+ 2025-09-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Entity): Change "=" to ">=" in
+ 	size comparison for Implicit_Packing mode.
+ 	Keep it as "=" for giving error messages.
+ 	* opt.ads (Implicit_Packing): Minor: correct obsolete
+ 	comment.
+ 
+ 2025-09-11  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_aggr.adb (Report_Null_Array_Constraint_Error): Adjust code
+ 	for reporting the error on enumeration types.
+ 	(Resolve_Null_Array_Aggregate): On multidimiensional arrays, avoid
+ 	reporting the same error several times. Flag the node as raising
+ 	constraint error when the bounds are known and some of them is
+ 	known to raise constraint error.
+ 
+ 2025-09-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* atree.ads (Node_To_Fetch_From_If_Set): Alternative to
+ 	Node_To_Fetch_From that returns Empty in error cases.
+ 	For use only in Treepr.
+ 	* treepr.adb (Print_Entity_Field): Avoid printing field
+ 	if Node_To_Fetch_From_If_Set returns Empty.
+ 	* einfo-utils.ads (Base_Type_If_Set): Alternative to
+ 	Base_Type that returns Empty in error cases.
+ 	(Implementation_Base_Type_If_Set): Likewise.
+ 	(Root_Type_If_Set): Likewise.
+ 	(Underlying_Type): Use more accurate result subtype.
+ 	* einfo-utils.adb (Base_Type): Add Asserts.
+ 	(Implementation_Base_Type): Add Assert; minor cleanup.
+ 	(Root_Type): Add Assert; minor cleanup. Remove Assert that
+ 	is redundant with predicate.
+ 	(Base_Type_If_Set): Body of new function.
+ 	(Implementation_Base_Type_If_Set): Body of new function.
+ 	(Root_Type_If_Set): Body of new function.
+ 
+ 2025-09-11  Johannes Kliemann  <kliemann@adacore.com>
+ 
+ 	* adaint.c: Add functions to disable and enable signals on QNX.
+ 	* libgnarl/s-taprop__qnx.adb (Create_Task): Disable
+ 	signals when calling pthread_create.
+ 
+ 2025-09-11  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Eq): Test for absence of user-defined
+ 	equality on type being compared (for both array and record types)
+ 	as a condition for checking for abstract equality on component
+ 	types. Add a "???" comment about current limitations on issuing
+ 	the new warning.
+ 	(Warn_On_Abstract_Equality_For_Component): Remove temporary disabling
+ 	of the warning. Improve comment on declaration.
+ 
+ 2025-09-11  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Process_Discriminants, Process_Full_View): Fix
+ 	comments.
+ 
+ 2025-09-11  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_attr.adb (Eval_Attribute): Remove strict analysis condition.
+ 
+ 2025-09-11  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* par-load.adb (Load): Better warning message.
+ 
+ 2025-09-11  Tucker Taft  <taft@adacore.com>
+ 
+ 	* exp_attr.adb
+ 	(Build_Array_VS_Func and Build_Record_VS_Func): Pass in the
+ 	Attr as the Related_Node parametr when calling
+ 	Make_Temporary for the Func_Id for the array and record
+ 	Valid_Scalars local functions.
+ 
+ 2025-09-11  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.ads (Find_Type_Name): Improve documentation comment.
+ 
+ 2025-09-11  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch4.adb (Warn_On_Abstract_Equality_For_Component): Temporarily
+ 	disable warning.
+ 
+ 2025-09-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/121885
+ 	* snames.ads-tmpl (Pragma_Id): Rename Unknown_Pragma to
+ 	Pragma_Unknown for the sake of XSnamesT.
+ 	* snames.adb-tmpl (Get_Pragma_Id): Adjust to above renaming.
+ 	* snames.h-tmpl (Attribute_Id): Change underlying type to Byte.
+ 	(Get_Attribute_Id): Use Byte as return value.
+ 	(Pragma_Id): Change underlying type to Word.
+ 	(Get_Pragma_Id): Use Word as return value.
+ 	* types.h (Word): New typedef.
+ 	* exp_prag.adb (Expand_N_Pragma): Remove useless comment.
+ 	* par-prag.adb (Prag): Adjust to above renaming.
+ 	* sem_prag.adb (Analyze_Pragma): Likewise.
+ 	(Sig_Flags): Likewise.
+ 
+ 2025-09-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Eq): Check for warning about call to
+ 	the abstract equality function of a component type, for both array
+ 	and record enclosing types.
+ 	(Warn_On_Abstract_Equality_For_Component): New procedure to issue
+ 	a warning when an abstract equality function of a component type
+ 	will be called and result in Program_Error.
+ 
+ 2025-09-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch5.adb (Make_Call): Mark generated nodes as coming from source.
+ 
+ 2025-09-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Incomplete_Type_Decl): Remove incorrect
+ 	comment.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Is_OK_Pragma): Use the
+ 	Suppressed_Ghost_Policy_Check_Pragma list for ignoring certain
+ 	pragmas.
+ 	* sem_prag.ads (Suppressed_Ghost_Policy_Check_Pragma): New variable
+ 	to store the pragmas that could be ignored when checking for
+ 	consitant ghost policy.
+ 
+ 2025-09-09  Tonu Naks  <naks@adacore.com>
+ 	    Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-crtl.ads (read, write): remove import
+ 	* libgnat/s-crtl__mingw.adb: body for windows
+ 	* libgnat/s-crtl.adb: body for all the other targets
+ 	* Makefile.rtl: configure s-crtl.adb/libgnat/s-crtl__mingw.adb
+ 	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Alphabetize.
+ 	(GNATBIND_OBJS): Add ada/libgnat/s-crtl.o.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* contracts.adb: Use the In_Codegen function instead.
+ 	* exp_ch3.adb: Likewise.
+ 	* exp_ch5.adb: Likewise.
+ 	* exp_ch6.adb: Likewise.
+ 	* exp_ch7.adb: Likewise.
+ 	* exp_ch9.adb: Likewise.
+ 	* exp_disp.adb: Likewise.
+ 	* exp_util.adb: Likewise.
+ 	* freeze.adb: Likewise.
+ 	* ghost.adb: Likewise.
+ 	* inline.adb: Likewise.
+ 	* repinfo.adb: Likewise.
+ 	* sem_ch10.adb: Likewise.
+ 	* sem_ch13.adb: Likewise.
+ 	* sem_ch3.adb: Likewise.
+ 	* sem_ch6.adb: Likewise.
+ 	* sem_elab.adb: Likewise.
+ 	* sem_res.adb: Likewise.
+ 	* sem_util.adb (Predicates_Ignored_In_Codegen): Add new function for
+ 	the Predicates_Ignored property.
+ 	(Predicates_Enabled): Use Predicates_Ignored_In_Codegen instead.
+ 	* sem_util.ads (Predicates_Ignored_In_Codegen): New function.
+ 	(Is_Ignored_In_Codegen): Add documentation on how _In_Codegen
+ 	functions should be used.
+ 
+ 2025-09-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Copy_And_Swap): Improve comments.
+ 
+ 2025-09-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (Needs_One_Actual): Add support for untagged record
+ 	types when the sources are compiled with Core Extensions allowed.
+ 
+ 2025-09-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Find_Type_Name): Fix comment.
+ 
+ 2025-09-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Nonoverridable_Aspects): Remove if statement.
+ 
+ 2025-09-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Nonoverridable_Aspects): Improve documentation
+ 	comment.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Completion): Add location info
+ 	to the policy messages.
+ 	(Check_Ghost_Policy): Likwise.
+ 
+ 2025-09-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_attr.adb (Rewrite_Attribute_Proc_Call): Add new parameter
+ 	to calls to Create_Extra_Formals.
+ 	(Expand_N_Attribute_Reference): Ditto.
+ 	* exp_ch3.adb (Expand_Freeze_Record_Type): Ditto.
+ 	* exp_ch6.adb (Expand_Call_Helper): Ditto.
+ 	* exp_disp.adb (Expand_Dispatching_Call): Ditto.
+ 	* freeze.adb (Check_Itype): Ditto.
+ 	(Freeze_Expression): Ditto.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Ditto.
+ 	(Create_Extra_Formals): Add new formal, and use it to determine
+ 	if the creation of the extra formals can be deferred. Add the
+ 	new parameter to calls to Create_Extra_Formals.
+ 	(Is_Unsupported_Extra_Actuals_Call): Adjust the code to improve
+ 	its performance when the result is known.
+ 	(Is_Unsupported_Extra_Formals_Entity): Ditto. Add new formal
+ 	* sem_ch6.ads (Create_Extra_Formals): Add new formal.
+ 	(Is_Unsupported_Extra_Formals_Entity): Ditto.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Indicate an out of
+ 	bounds index error also in the case of a missing index.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Definitions): Create a temporary
+ 	pragma for the non-task and access type cases.
+ 
+ 2025-09-09  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sem_ch7.adb (New_Private_Type): Remove useless statements.
+ 
+ 2025-09-09  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* targparm.adb (Get_Target_Parameters): Address type declaration doesn't
+ 	ends anymore with a semicolon.
+ 	* libgnat/a-cdlili.ads: Replace Preelaborable_Initialization.
+ 	* libgnat/a-cidlli.ads: Likewise.
+ 	* libgnat/a-cihama.ads: Likewise.
+ 	* libgnat/a-cihase.ads: Likewise.
+ 	* libgnat/a-cimutr.ads: Likewise.
+ 	* libgnat/a-ciorma.ads: Likewise.
+ 	* libgnat/a-ciormu.ads: Likewise.
+ 	* libgnat/a-ciorse.ads: Likewise.
+ 	* libgnat/a-cohama.ads: Likewise.
+ 	* libgnat/a-cohase.ads: Likewise.
+ 	* libgnat/a-coinho.ads: Likewise.
+ 	* libgnat/a-coinho__shared.ads: Likewise.
+ 	* libgnat/a-coinve.ads: Likewise.
+ 	* libgnat/a-comutr.ads: Likewise.
+ 	* libgnat/a-convec.ads: Likewise.
+ 	* libgnat/a-coorma.ads: Likewise.
+ 	* libgnat/a-coormu.ads: Likewise.
+ 	* libgnat/a-coorse.ads: Likewise.
+ 	* libgnat/a-crdlli.ads: Likewise.
+ 	* libgnat/a-except.ads: Likewise.
+ 	* libgnat/a-finali.ads: Likewise.
+ 	* libgnat/a-ngcoty.ads: Likewise.
+ 	* libgnat/a-strbou.ads: Likewise.
+ 	* libgnat/a-stream.ads: Likewise.
+ 	* libgnat/a-strmap.ads: Likewise.
+ 	* libgnat/a-strunb.ads: Likewise.
+ 	* libgnat/a-strunb__shared.ads: Likewise.
+ 	* libgnat/a-ststio.ads: Likewise.
+ 	* libgnat/a-stwibo.ads: Likewise.
+ 	* libgnat/a-stwima.ads: Likewise.
+ 	* libgnat/a-stwiun.ads: Likewise.
+ 	* libgnat/a-stwiun__shared.ads: Likewise.
+ 	* libgnat/a-stzbou.ads: Likewise.
+ 	* libgnat/a-stzmap.ads: Likewise.
+ 	* libgnat/a-stzunb.ads: Likewise.
+ 	* libgnat/a-stzunb__shared.ads: Likewise.
+ 	* libgnat/a-tags.ads: Likewise.
+ 	* libgnat/i-cstrin.ads: Likewise.
+ 	* libgnat/s-stopoo.ads: Likewise.
+ 	* libgnat/s-stposu.ads: Likewise.
+ 	* libgnat/system-aix.ads: Likewise.
+ 	* libgnat/system-darwin-arm.ads: Likewise.
+ 	* libgnat/system-darwin-ppc.ads: Likewise.
+ 	* libgnat/system-darwin-x86.ads: Likewise.
+ 	* libgnat/system-djgpp.ads: Likewise.
+ 	* libgnat/system-dragonfly-x86_64.ads: Likewise.
+ 	* libgnat/system-freebsd.ads: Likewise.
+ 	* libgnat/system-gnu.ads: Likewise.
+ 	* libgnat/system-hpux-ia64.ads: Likewise.
+ 	* libgnat/system-hpux.ads: Likewise.
+ 	* libgnat/system-linux-alpha.ads: Likewise.
+ 	* libgnat/system-linux-arm.ads: Likewise.
+ 	* libgnat/system-linux-hppa.ads: Likewise.
+ 	* libgnat/system-linux-ia64.ads: Likewise.
+ 	* libgnat/system-linux-loongarch.ads: Likewise.
+ 	* libgnat/system-linux-m68k.ads: Likewise.
+ 	* libgnat/system-linux-mips.ads: Likewise.
+ 	* libgnat/system-linux-ppc.ads: Likewise.
+ 	* libgnat/system-linux-riscv.ads: Likewise.
+ 	* libgnat/system-linux-s390.ads: Likewise.
+ 	* libgnat/system-linux-sh4.ads: Likewise.
+ 	* libgnat/system-linux-sparc.ads: Likewise.
+ 	* libgnat/system-linux-x86.ads: Likewise.
+ 	* libgnat/system-lynxos178-ppc.ads: Likewise.
+ 	* libgnat/system-lynxos178-x86.ads: Likewise.
+ 	* libgnat/system-mingw.ads: Likewise.
+ 	* libgnat/system-qnx-arm.ads: Likewise.
+ 	* libgnat/system-rtems.ads: Likewise.
+ 	* libgnat/system-solaris-sparc.ads: Likewise.
+ 	* libgnat/system-solaris-x86.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
+ 
+ 2025-09-09  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* s-pack.adb.tmpl: Typo fix in comment.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Set Mark_Ghost_Code individually
+ 	based on the semantics of each pragma.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Mark_Ghost_Declaration_Or_Body): Mark ghost
+ 	entity explicitly as ignored or checked.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Policy): ignore ghost policy changes
+ 	within instantiation statements.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Policy): Use the policy in affect for
+ 	the identifier at the current moment instead of the region
+ 	around it when checking a policy change for a procedure call.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Mark_And_Set_Ghost_Declaration): apply the
+ 	ghost policy and level from the declaration only if the declaration
+ 	has an explicit ghost aspect/pragma.
+ 
+ 2025-09-09  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_Nonoverridable_Aspect_Subprograms): Add the new
+ 	legality check in Check_Nonoverridable_Aspect_Subprograms for
+ 	nonoverridable aspects to check whether the denoted subprograms satisfy
+ 	MR 13.1.1(18.4/6), otherwise we emit an error. Fix spacing.
+ 	* sem_ch6.adb (New_Overloaded_Entity): Set Is_Primitive flag
+ 	for inherited primitives, and filter out homonym candidates without a
+ 	function specification as parents.
+ 
+ 2025-09-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Check_Interrupt_Or_Attach_Handler): Refine test for
+ 	protected procedures; fix typo in comment.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Is_OK_Pragma): mark the context of ignored ghost
+ 	pragmas as OK.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* ghost.adb (Assertion_Level_From_Arg): Ensure that assertion level
+ 	is stored as the entity for its reference.
+ 	(Enables_Ghostness): Derive the result from whether or not the
+ 	an argument indicated an assertion level.
+ 	* tbuild.adb (Make_Assertion_Level): ensure that assertion levels
+ 	have a standard scope.
+ 
+ 2025-09-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb (Make_Bignum_Block): Check restriction No_Secondary_Stack.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_util.adb (Policy_In_Effect): Add special handling
+ 	for Runtime and Static values.
+ 
+ 2025-09-09  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* exp_ch3.adb (Init_Formals): Remove the check on Global_No_Tasking.
+ 	* sem.adb: Fix typo.
+ 
+ 2025-09-09  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Container_Aggr_Code.To_Int): Replace existing
+ 	conditional expression with call to Expr_Value.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Specifications): add default
+ 	assertion level to assertion aspects.
+ 	* sem_prag.adb (Analyze_Pragma): Likewise.
+ 
+ 2025-09-09  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_ch6.adb (Check_BIP_Actuals, Process_Node): Disable checks.
+ 
+ 2025-09-09  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* aspects.ads (Aspect_Unsigned_Base_Range): New aspect.
+ 	* checks.adb (Determine_Range): Handle types with unsigned base range aspect.
+ 	(Enable_Overflow_Check): ditto
+ 	(Apply_Arithmetic_Overflow_Strict): ditto
+ 	* debug.adb (d_o): Document new usage.
+ 	* einfo.ads (Has_Unsigned_Base_Range_Aspect): New flag.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): No action since
+ 	it has been already handled at this stage.
+ 	* exp_ch4.adb (Expand_N_Op_Add): Generate aritmetic overflow check on
+ 	unsigned base range type operands.
+ 	(Expand_N_Op_Subtract): ditto
+ 	(Expand_N_Op_Multiply): ditto
+ 	(Expand_N_Op_Minus): ditto
+ 	* gen_il-fields.ads (Has_Unsigned_Base_Range_Aspect): New flag.
+ 	* gen_il-gen-gen_entities.adb (Has_Unsigned_Base_Range_Aspect): New flag.
+ 	* gen_il-internals.adb (Has_Unsigned_Base_Range_Aspect): New flag.
+ 	* gnat1drv.adb (Adjust_Global_Switches): Handle -gnatd_o
+ 	* par-prag.adb (Pragma_Unsigned_Base_Range): No action since it will
+ 	be entirely handled by the semantic analyzer.
+ 	* rtsfind.ads (RE_Id): Add RE_Uns_[Add|Subtract|Multiply]_With_ Ovflo_Check
+ 	* sem_attr.ads (Attribute_Unsigned_Base_Range): Added to the set of
+ 	implementation defined attributes.
+ 	* sem_attr.adb (Analyze_Attribute): Analyze attribute Unsigned_Base_Range.
+ 	(Eval_Attribute): Evaluate attribute Unsigned_Base_Range.
+ 	* sem_ch13.adb (Analyze_One_Aspect): Defer checks for this aspect to
+ 	the analysis of the corresponding pragma.
+ 	* sem_ch3.ads (Unsigned_Base_Range_Type_Declaration): New subprogram.
+ 	* sem_ch3.adb (Build_Derived_Numeric_Type): Inherit flag
+ 	Has_Unsigned_Base_Range_Aspect.
+ 	(Unsigned_Base_Range_Type_Declaration): New subprogram.
+ 	(Has_Pragma_Unsigned_Base_Range): New subprogram.
+ 	* sem_prag.adb (Analyze_Pragma): Handle Pragma_Unsigned_Base_Range.
+ 	* snames.adb-tmpl (Get_Pragma_Id): Handle Name_Unsigned_Base_Range.
+ 	(Is_Pragma_Name): ditto.
+ 	* snames.ads-tmpl (Name_Unsigned_Base_Range): New name.
+ 	(Attribute_Unsigned_Base_Range): New attribute.
+ 	(Pragma_Unsigned_Base_Range): New pragma.
+ 	* libgnat/s-aridou.ads (Add_With_Ovflo_Check): New routine for Double_Uns.
+ 	(Subtract_With_Ovflo_Check): ditto.
+ 	(Multiply_With_Ovflo_Check): ditto.
+ 	* libgnat/s-aridou.adb (Add_With_Ovflo_Check): ditto.
+ 	(Subtract_With_Ovflo_Check): ditto.
+ 	(Multiply_With_Ovflo_Check): ditto.
+ 	* libgnat/s-arit64.ads (Uns_Add_With_Ovflo_Check64): New subprogram.
+ 	(Uns_Subtract_With_Ovflo_Check64): ditto.
+ 	(Uns_Multiply_With_Ovflo_Check64): ditto.
+ 	* libgnat/s-arit64.adb (Uns_Add_With_Ovflo_Check64): New subprogram.
+ 	(Uns_Subtract_With_Ovflo_Check64): ditto.
+ 	(Uns_Multiply_With_Ovflo_Check64): ditto.
+ 	* libgnat/s-arit128.ads (Uns_Add_With_Ovflo_Check128): New subprogram.
+ 	(Uns_Subtract_With_Ovflo_Check128): ditto.
+ 	(Uns_Multiply_With_Ovflo_Check128): ditto.
+ 	* libgnat/s-arit128.adb (Uns_Add_With_Ovflo_Check128): New subprogram.
+ 	(Uns_Subtract_With_Ovflo_Check128): ditto.
+ 	(Uns_Multiply_With_Ovflo_Check128): ditto.
+ 	* doc/gnat_rm/gnat_language_extensions.rst: Document unsigned
+ 	base range.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-09-09  Viljar Indus  <indus@adacore.com>
+ 
+ 	* atree.adb (Mark_New_Ghost_Node): Store the assertion level on the
+ 	entity.
+ 	* contracts.adb (Analyze_Package_Contract): Add support for multiple
+ 	pragma Initial_Condition orginating from multiple assertion levels.
+ 	* cstand.adb (Make_Assertion_Level_Definition): New function that
+ 	creates a new Assertion_Level and adds it to the Assertion_Levels
+ 	table.
+ 	(Create_Standard): Add definitions for assertion levels defined in
+ 	Standard.
+ 	(Print_Standard): Add assertion level pragmas do the output.
+ 	* exp_ch6.adb (Check_Subprogram_Variant): Add support for multiple
+ 	Subprogram_Variant pragmas created by assertion levels.
+ 	* einfo.ads: add info for the new nodes and attributes.
+ 	* exp_prag.adb (Consequence_Error): Fix error message string
+ 	corruption caused by another call to the internal strings during
+ 	the call to Make_Procedure_Call_Statement.
+ 	(Expand_Pragma_Initial_Condition): Ensure all ghost related
+ 	attributes are copied to the new pragma.
+ 	(Expand_Pragma_Loop_Variant): Likewise.
+ 	(Expand_Pragma_Subprogram_Variant). Likewise. Additionally
+ 	create a new Subprogram_Variant function for each pragma associated
+ 	with an assertion level.
+ 	* exp_util.adb (Add_DIC_Check): Ensure all ghost related attributes
+ 	are copied to the new pragma.
+ 	(Build_DIC_Procedure_Body): Add support for mutliple DIC pragmas
+ 	created from assertion levels.
+ 	* gen_il-fields.ads:
+ 	(Aspect_Ghost_Assertion_Level): New field.
+ 	(Original_Aspect): New field.
+ 	(Original_Pragma): New field.
+ 	(Pragma_Ghost_Assertion_Level): New field.
+ 	(Child_Levels): New field.
+ 	(Ghost_Assertion_Level): New field.
+ 	(Parent_Levels): New field.
+ 	* gen_il-gen-gen_entities.adb:
+ 	Add Ghost_Assertion_Level field for all entities
+ 	Add new E_Assertion_Level entity for storing assertion levels.
+ 	* gen_il-gen-gen_nodes.adb:
+ 	Add Aspect_Ghost_Assertion_Level for N_Aspect to store the
+ 	assertion level associated with the aspect.
+ 	Add Original_Aspect to store the original aspect where the aspect
+ 	that was transformed from an aspect with an assertion level
+ 	origninated from.
+ 	Add Pragma_Ghost_Assertion_Level and Original_Pragma to store
+ 	the same information for N_Prama nodes.
+ 	* gen_il-types.ads: Add new entity kind E_Assertion_Level
+ 	* ghost.adb (Assertion_Level_Error_Msg): Create constant for
+ 	error messages using the same main error message.
+ 	(Ghost_Policy_Error_Msg): Likewise.
+ 	(Assertion_Level_To_Name): New subprogram.
+ 	(Check_Valid_Ghost_Declaration): New subprogram.
+ 	(Get_Ghost_Aspect): New subprogram.
+ 	(Get_Ghost_Assertion_Level): New subprogram.
+ 	(Ghost_Policy_In_Effect): New subprogram.
+ 	(Install_Ghost_Region): New subprogram.
+ 	(Mark_And_Set_Ghost_Region): New subprogram.
+ 	(Mark_Ghost_Declaration_Or_Body): Add new argument for assertion
+ 	levels.
+ 	(Check_Ghost_Completion): Update ghost policy calculation with
+ 	assertion levels. Refactor error message.
+ 	(Is_OK_Statement): Add new checks for valid assertion policies and
+ 	assertion levels.
+ 	(Is_OK_Pragma): Refactor the calculation of valid ghost pragmas.
+ 	(Check_Ghost_Policy): Make the checks ghost region based.
+ 	(Check_Ghost_Context): Refactor the order of checks.
+ 	(Check_Ghost_Formal_Procedure_Or_Package): Relax the checks for
+ 	overriding procedures. Now only ignored subprograms cannot be
+ 	overridden by checked or non-ghost subprograms.
+ 	(Check_Ghost_Primitive): Relax conditions for primitve operations.
+ 	Now only checked primitive subprograms are considered invalid for
+ 	ignored tagged types. Add assertion level compatibility checks.
+ 	(Check_Ghost_Refinement): Relax conditions for ghost refinements.
+ 	Add assertion level compatibility checks for refinements.
+ 	(Install_Ghost_Region): Store the current region and the assertion
+ 	for that region in the ghost config.
+ 	(Enables_Ghostness): Refactor implementation to support assertion
+ 	levels.
+ 	(Is_Subject_To_Ghost): Simplify implementation.
+ 	(Mark_And_Set_Ghost_Assignment): Refactor implementation.
+ 	(Mark_And_Set_Ghost_Body): Add support for assertion levels.
+ 	(Mark_And_Set_Ghost_Completion): Likewise.
+ 	(Mark_And_Set_Ghost_Declaration): Likwise.
+ 	(Mark_And_Set_Ghost_Instantiation): Likwise.
+ 	(Mark_And_Set_Ghost_Procedure_Call): Refactor implementation.
+ 	(Mark_Ghost_Declaration_Or_Body): Add support for assertion levels.
+ 	(Set_Ghost_Mode): Likwise.
+ 	* ghost.ads (Assertion_Level_From_Arg): New subprogram.
+ 	(Install_Ghost_Region): Add argument Level for assertrion levels.
+ 	(Is_Assertion_Level_Dependent): New subprogram.
+ 	* lib-xref.ads: Add new mapping for E_Assertion_Level entities.
+ 	* opt.ads (Ghost_Config_Type): Add new members Ghost_Assertion_Mode
+ 	and Current_Region to the structure.
+ 	* par-prag.adb (Prag): Add new pragma name Assertion_Level.
+ 	* rtsfind.adb (Load_RTU): Update the arguments for the call to
+ 	Install_Ghost_Region.
+ 	* sem.adb (Do_Analyze): Likewise.
+ 	* sem_ch13.adb (Convert_Aspect_With_Assertion_Levels): New
+ 	subprogram.
+ 	(Make_Aitem_Pragma): Copy ghost mode attributes from the aspect to
+ 	the pragma.
+ 	(Analyze_Aspect_Specifications): Convert aspects that have an
+ 	assertion level association in the aspects without the association
+ 	and the original supported syntax and with the assertion level
+ 	stored on the aspect node.
+ 	Updated duplicate detection to avoid duplicates being called on
+ 	aspects with assertion levels that orginated from the same aspect.
+ 	* sem_prag.adb (Apply_Check_Policy): New subprogram.
+ 	(Get_Applicable_Policy): New subprogram.
+ 	(Mark_Is_Checked): New subprogram.
+ 	(Mark_Is_Disabled): New subprogram.
+ 	(Mark_Is_Ignored): New subprgram.
+ 	(Check_Arg_Is_One_Of): Remove versions that had a specific number
+ 	of arguments and replace them with a list one.
+ 	(Create_Pragma_Without_Assertion_Level): New subprogram.
+ 	(Assertion_Level_Pragma_Comes_From_Source): New subprogram.
+ 	(Analyze_Pragma): Replace aspects that have an assertion level
+ 	with aspects without them where the level is stored on the pragma
+ 	node.
+ 	(Abstract_State): Add support for assertion levels in ghost
+ 	Abstract_State pragmas.
+ 	(Assert): Update argument handling for Assert like pragmas.
+ 	(Assertion_Level): Add a new section to support the analysis of
+ 	pragma Assertion_Level.
+ 	(Assertion_Policy): Add support for setting the policy for assertion
+ 	levels.
+ 	(Check): Update argument handling. Update the assertion policy
+ 	application process.
+ 	(Check_Policy): Add support for assertion levels. Add check_policy
+ 	pragmas for assertion_level dependencis also to the stack of
+ 	known Check_Policy pragmas.
+ 	(Default_Initial_Condition): Reject the use of DIC with assertion
+ 	levels. Update duplication checks.
+ 	(Ghost): Add support for assertion levels. Fix issue where
+ 	assertion levels with Ghost => False were treated as ghost.
+ 	(Predicate): Update the policy handling of Ghost_Predicate.
+ 	(Analyze_Refined_State_In_Decl_Part): Create a new ghost region
+ 	for analyzing Refined_State.
+ 	(Check_Applicable_Policy): Refactor the implementation. Break it
+ 	down to Get_Applicable_Policy and Apply_Check_Policy.
+ 	(Check_Kind): Removed. Replaced by Get_Applicable_Policy and
+ 	Apply_Check_Policy.
+ 	(Initialize): Initialize the table storing all know assertion
+ 	levels.
+ 	* sem_prag.ads (Find_Assertion_Level): New subprogram.
+ 	(Insert_Assertion_Level): New subprogram.
+ 	(Check_Applicable_Policy): Add new argument Level.
+ 	(Check_Kind): Removed. Merged with Get_Applicable_Policy.
+ 	(Get_Assertion_Level): New subprogram.
+ 	(Is_Valid_Assertion_Level): New subprogram.
+ 	* sem_util.adb (Copy_Assertion_Policy_Attributes): New function
+ 	for copying the ghost related attributes from one pragma to
+ 	another.
+ 	(Copy_Subprogram_Spec): Additionally copy the level from the spec.
+ 	(Depends_On_Level): New function for checking if one level depends
+ 	on another level.
+ 	(From_Same_Aspect): New function for checking whether the aspects
+ 	orignate from the same original aspect.
+ 	(From_Same_Pragma): New function for checking whether the pragmas
+ 	originate from the same original aspect or pragma.
+ 	(Get_Subprogram_Entity): Avoid crash when being called when the
+ 	entity has not been set for the subprogram.
+ 	(Has_Assertion_Level_Argument): New function for checking whether
+ 	the aspect or a pragma has an argument that is using an assertion
+ 	level association.
+ 	(Policy_In_Effect): add an additional argument for the level that
+ 	should be checked along with the assertion name.
+ 	* sem_util.ads (Copy_Assertion_Policy_Attributes): New function.
+ 	(Depends_On_Level): Likewise.
+ 	(From_Same_Aspect): Likewise.
+ 	(From_Same_Pragma): Likewise.
+ 	(Has_Assertion_Level_Argument): Likewise.
+ 	(Is_Same_Or_Depends_On_Level): Likewise.
+ 	(Policy_In_Effect): Add new argument Level.
+ 	* sinfo.ads: Add documentation for all the new attributes that
+ 	were added to the nodes and entities.
+ 	* snames.ads-tmpl: Add new entries for Name_Assertion_Level,
+ 	Name_uDefault_Assertion_Level and Pragma_Assertion_Level.
+ 	* stand.ads: Add new entities for the predefined assertion levels.
+ 	(Standard_Level_Static): Definition for the predefined Static
+ 	level that is always ignored.
+ 	(Standard_Level_Runtime): Defintion for the predefined Runtime
+ 	level that is always checked.
+ 	(Standard_Level_Default): Definition for the implicit Default
+ 	level that is given for ghost entities that were not associated
+ 	with an assertion level (e.g. Ghost => True).
+ 	* tbuild.adb (Make_Assertion_Level): New function for constructin
+ 	an assertion level.
+ 	* tbuild.ads (Make_Assertion_Level): Likewise.
+ 
  2025-08-04  Viljar Indus  <indus@adacore.com>
  
  	* contracts.adb: Use Is_Ignored_In_Codegen instead of just
diff -Nrcpad gcc-16-20250907/gcc/ada/Makefile.rtl gcc-16-20250914/gcc/ada/Makefile.rtl
*** gcc-16-20250907/gcc/ada/Makefile.rtl	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/Makefile.rtl	Sun Sep 14 22:32:07 2025
*************** ifeq ($(strip $(filter-out cygwin% mingw
*** 2261,2266 ****
--- 2261,2267 ----
    endif
    LIBGNAT_TARGET_PAIRS += \
    a-dirval.adb<libgnat/a-dirval__mingw.adb \
+   s-crtl.adb<libgnat/s-crtl__mingw.adb \
    s-gloloc.adb<libgnat/s-gloloc__mingw.adb \
    s-inmaop.adb<libgnarl/s-inmaop__dummy.adb \
    s-taspri.ads<libgnarl/s-taspri__mingw.ads \
diff -Nrcpad gcc-16-20250907/gcc/ada/adaint.c gcc-16-20250914/gcc/ada/adaint.c
*** gcc-16-20250907/gcc/ada/adaint.c	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/adaint.c	Sun Sep 14 22:32:07 2025
***************
*** 107,112 ****
--- 107,113 ----
  #ifdef __QNX__
  #include <sys/syspage.h>
  #include <sys/time.h>
+ #include <signal.h>
  #endif
  
  #ifdef IN_RTS
*************** void __gnat_killprocesstree (int pid, in
*** 3719,3724 ****
--- 3720,3787 ----
    */
  }
  
+ #if defined (__QNX__)
+ 
+ static __thread sigset_t set;
+ static __thread sigset_t oset;
+ static __thread int signals_disabled = 0;
+ 
+ int __gnat_disable_signals(void)
+ {
+     sigemptyset(&set);
+     sigaddset(&set, SIGHUP);
+     sigaddset(&set, SIGINT);
+     sigaddset(&set, SIGQUIT);
+     sigaddset(&set, SIGILL);
+     sigaddset(&set, SIGTRAP);
+     sigaddset(&set, SIGIOT);
+     sigaddset(&set, SIGABRT);
+     sigaddset(&set, SIGEMT);
+     sigaddset(&set, SIGDEADLK);
+     sigaddset(&set, SIGFPE);
+     sigaddset(&set, SIGKILL);
+     sigaddset(&set, SIGBUS);
+     sigaddset(&set, SIGSEGV);
+     sigaddset(&set, SIGSYS);
+     sigaddset(&set, SIGPIPE);
+     sigaddset(&set, SIGALRM);
+     sigaddset(&set, SIGTERM);
+     sigaddset(&set, SIGUSR1);
+     sigaddset(&set, SIGUSR2);
+     sigaddset(&set, SIGCHLD);
+     sigaddset(&set, SIGCLD);
+     sigaddset(&set, SIGPWR);
+     sigaddset(&set, SIGWINCH);
+     sigaddset(&set, SIGURG);
+     sigaddset(&set, SIGPOLL);
+     sigaddset(&set, SIGIO);
+     sigaddset(&set, SIGSTOP);
+     sigaddset(&set, SIGTSTP);
+     sigaddset(&set, SIGCONT);
+     sigaddset(&set, SIGTTIN);
+     sigaddset(&set, SIGTTOU);
+     sigaddset(&set, SIGVTALRM);
+     sigaddset(&set, SIGPROF);
+     sigaddset(&set, SIGXCPU);
+     sigaddset(&set, SIGXFSZ);
+     sigaddset(&set, SIGDOOM);
+ 
+     int ret = sigprocmask(SIG_BLOCK, &set, &oset);
+     signals_disabled = !ret;
+     return ret;
+ }
+ 
+ int __gnat_enable_signals(void)
+ {
+     if (!signals_disabled) {
+         return 0;
+     }
+     signals_disabled = 0;
+     return sigprocmask(SIG_SETMASK, &oset, 0);
+ }
+ 
+ #endif
+ 
  #ifdef __cplusplus
  }
  #endif
diff -Nrcpad gcc-16-20250907/gcc/ada/aspects.ads gcc-16-20250914/gcc/ada/aspects.ads
*** gcc-16-20250907/gcc/ada/aspects.ads	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/aspects.ads	Sun Sep 14 22:32:07 2025
*************** package Aspects is
*** 240,245 ****
--- 240,246 ----
        Aspect_Unmodified,                    -- GNAT
        Aspect_Unreferenced,                  -- GNAT
        Aspect_Unreferenced_Objects,          -- GNAT
+       Aspect_Unsigned_Base_Range,           -- GNAT
        Aspect_Volatile,
        Aspect_Volatile_Components,
        Aspect_Volatile_Full_Access,          -- GNAT
*************** package Aspects is
*** 358,363 ****
--- 359,365 ----
        Aspect_Unmodified                 => True,
        Aspect_Unreferenced               => True,
        Aspect_Unreferenced_Objects       => True,
+       Aspect_Unsigned_Base_Range        => True,
        Aspect_User_Aspect                => True,
        Aspect_Value_Size                 => True,
        Aspect_Volatile_Full_Access       => True,
*************** package Aspects is
*** 629,634 ****
--- 631,637 ----
        Aspect_Test_Case                    => False,
        Aspect_Type_Invariant               => False,
        Aspect_Unimplemented                => False,
+       Aspect_Unsigned_Base_Range          => True,
        Aspect_Unsuppress                   => False,
        Aspect_User_Aspect                  => False,
        Aspect_Value_Size                   => True,
*************** package Aspects is
*** 852,857 ****
--- 855,861 ----
        Aspect_Unmodified                   => Name_Unmodified,
        Aspect_Unreferenced                 => Name_Unreferenced,
        Aspect_Unreferenced_Objects         => Name_Unreferenced_Objects,
+       Aspect_Unsigned_Base_Range          => Name_Unsigned_Base_Range,
        Aspect_Unsuppress                   => Name_Unsuppress,
        Aspect_User_Aspect                  => Name_User_Aspect,
        Aspect_Value_Size                   => Name_Value_Size,
*************** package Aspects is
*** 1145,1150 ****
--- 1149,1155 ----
        Aspect_Size                         => Rep_Aspect,
        Aspect_Small                        => Rep_Aspect,
        Aspect_Storage_Size                 => Rep_Aspect,
+       Aspect_Unsigned_Base_Range          => Rep_Aspect,
        Aspect_Value_Size                   => Rep_Aspect,
        Aspect_Volatile                     => Rep_Aspect,
        Aspect_Volatile_Components          => Rep_Aspect,
diff -Nrcpad gcc-16-20250907/gcc/ada/atree.adb gcc-16-20250914/gcc/ada/atree.adb
*** gcc-16-20250907/gcc/ada/atree.adb	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/atree.adb	Sun Sep 14 22:32:07 2025
*************** package body Atree is
*** 1805,1815 ****
--- 1805,1819 ----
        if Ghost_Config.Ghost_Mode = Check then
           if Nkind (N) in N_Entity then
              Set_Is_Checked_Ghost_Entity (N);
+             Set_Ghost_Assertion_Level
+               (N, Ghost_Config.Ghost_Mode_Assertion_Level);
           end if;
  
        elsif Ghost_Config.Ghost_Mode = Ignore then
           if Nkind (N) in N_Entity then
              Set_Is_Ignored_Ghost_Entity (N);
+             Set_Ghost_Assertion_Level
+               (N, Ghost_Config.Ghost_Mode_Assertion_Level);
           end if;
  
           Set_Is_Ignored_Ghost_Node (N);
diff -Nrcpad gcc-16-20250907/gcc/ada/atree.ads gcc-16-20250914/gcc/ada/atree.ads
*** gcc-16-20250907/gcc/ada/atree.ads	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/atree.ads	Sun Sep 14 22:32:07 2025
*************** package Atree is
*** 651,656 ****
--- 651,670 ----
     --  similarly for the other two cases. This can return something other
     --  than N only if N is an Entity.
  
+    function Node_To_Fetch_From_If_Set
+      (N : Node_Or_Entity_Id; Field : Node_Or_Entity_Field)
+      return Node_Or_Entity_Id is
+       (case Field_Descriptors (Field).Type_Only is
+          when No_Type_Only => N,
+          when Base_Type_Only => Base_Type_If_Set (N),
+          when Impl_Base_Type_Only => Implementation_Base_Type_If_Set (N),
+          when Root_Type_Only => Root_Type_If_Set (N));
+    --  This is a more permissive version of Node_To_Fetch_From, which
+    --  returns the same value, except it returns Empty in cases where
+    --  Node_To_Fetch_From would crash because relevant fields are not yet
+    --  set. This is used in Treepr, to allow it to print half-baked nodes
+    --  without crashing.
+ 
     -----------------------------
     -- Private Part Subpackage --
     -----------------------------
diff -Nrcpad gcc-16-20250907/gcc/ada/checks.adb gcc-16-20250914/gcc/ada/checks.adb
*** gcc-16-20250907/gcc/ada/checks.adb	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/checks.adb	Sun Sep 14 22:32:07 2025
*************** package body Checks is
*** 970,984 ****
           --  we use a different approach, expanding to:
  
           --    typ (xxx_With_Ovflo_Check (Integer_NN (x), Integer_NN (y)))
  
           --  where xxx is Add, Multiply or Subtract as appropriate
  
           --  Find check type if one exists
  
           if Dsiz <= System_Max_Integer_Size then
!             Ctyp := Integer_Type_For (Dsiz, Uns => False);
  
!          --  No check type exists, use runtime call
  
           else
              if System_Max_Integer_Size = 64 then
--- 970,1030 ----
           --  we use a different approach, expanding to:
  
           --    typ (xxx_With_Ovflo_Check (Integer_NN (x), Integer_NN (y)))
+          --  or
+          --    typ (xxx_With_Ovflo_Check (Unsigned_NN (x), Unsigned_NN (y)))
  
           --  where xxx is Add, Multiply or Subtract as appropriate
  
           --  Find check type if one exists
  
           if Dsiz <= System_Max_Integer_Size then
!             Ctyp := Integer_Type_For (Dsiz,
!                       Uns => Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)));
  
!          --  No check type exists, and the type has the unsigned base range
!          --  aspect; use runtime call.
! 
!          elsif Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)) then
!             if System_Max_Integer_Size = 64 then
!                Ctyp := RTE (RE_Unsigned_64);
!             else
!                Ctyp := RTE (RE_Unsigned_128);
!             end if;
! 
!             if Nkind (N) = N_Op_Add then
!                if System_Max_Integer_Size = 64 then
!                   Cent := RE_Uns_Add_With_Ovflo_Check64;
!                else
!                   Cent := RE_Uns_Add_With_Ovflo_Check128;
!                end if;
! 
!             elsif Nkind (N) = N_Op_Subtract then
!                if System_Max_Integer_Size = 64 then
!                   Cent := RE_Uns_Subtract_With_Ovflo_Check64;
!                else
!                   Cent := RE_Uns_Subtract_With_Ovflo_Check128;
!                end if;
! 
!             else pragma Assert (Nkind (N) = N_Op_Multiply);
!                if System_Max_Integer_Size = 64 then
!                   Cent := RE_Uns_Multiply_With_Ovflo_Check64;
!                else
!                   Cent := RE_Uns_Multiply_With_Ovflo_Check128;
!                end if;
!             end if;
! 
!             Rewrite (N,
!               OK_Convert_To (Typ,
!                 Make_Function_Call (Loc,
!                   Name => New_Occurrence_Of (RTE (Cent), Loc),
!                   Parameter_Associations => New_List (
!                     OK_Convert_To (Ctyp, Left_Opnd  (N)),
!                     OK_Convert_To (Ctyp, Right_Opnd (N))))));
! 
!             Analyze_And_Resolve (N, Typ);
!             return;
! 
!          --  No check type exists, use runtime call (common case)
  
           else
              if System_Max_Integer_Size = 64 then
*************** package body Checks is
*** 5492,5498 ****
           --  bound, because that means the result could wrap.
           --  Same applies for the lower bound if it is negative.
  
!          if Is_Modular_Integer_Type (Typ) then
              if Lor > Lo and then Hir <= Hbound then
                 Lo := Lor;
              end if;
--- 5538,5546 ----
           --  bound, because that means the result could wrap.
           --  Same applies for the lower bound if it is negative.
  
!          if Is_Modular_Integer_Type (Typ)
!            and then not Has_Unsigned_Base_Range_Aspect (Btyp)
!          then
              if Lor > Lo and then Hir <= Hbound then
                 Lo := Lor;
              end if;
*************** package body Checks is
*** 6223,6229 ****
  
        --  Nothing to do for unsigned integer types, which do not overflow
  
!       elsif Is_Modular_Integer_Type (Typ) then
           return;
        end if;
  
--- 6271,6279 ----
  
        --  Nothing to do for unsigned integer types, which do not overflow
  
!       elsif Is_Modular_Integer_Type (Typ)
!         and then not Has_Unsigned_Base_Range_Aspect (Typ)
!       then
           return;
        end if;
  
*************** package body Checks is
*** 8114,8120 ****
  
        elsif Nkind (Expr) = N_Selected_Component
          and then Present (Component_Clause (Entity (Selector_Name (Expr))))
!         and then Is_Modular_Integer_Type (Typ)
          and then Modulus (Typ) = 2 ** Esize (Entity (Selector_Name (Expr)))
        then
           return;
--- 8164,8172 ----
  
        elsif Nkind (Expr) = N_Selected_Component
          and then Present (Component_Clause (Entity (Selector_Name (Expr))))
!         and then
!           (Is_Modular_Integer_Type (Typ)
!              and then not Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)))
          and then Modulus (Typ) = 2 ** Esize (Entity (Selector_Name (Expr)))
        then
           return;
*************** package body Checks is
*** 8896,8901 ****
--- 8948,8955 ----
     function Make_Bignum_Block (Loc : Source_Ptr) return Node_Id is
        M : constant Entity_Id := Make_Defining_Identifier (Loc, Name_uM);
     begin
+       Check_Restriction (No_Secondary_Stack, M);
+ 
        return
          Make_Block_Statement (Loc,
            Declarations               =>
diff -Nrcpad gcc-16-20250907/gcc/ada/contracts.adb gcc-16-20250914/gcc/ada/contracts.adb
*** gcc-16-20250907/gcc/ada/contracts.adb	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/contracts.adb	Sun Sep 14 22:32:07 2025
*************** package body Contracts is
*** 1278,1284 ****
           while Present (Prag) loop
              Prag_Nam := Pragma_Name (Prag);
  
!             if Prag_Nam = Name_Initial_Condition then
                 Init_Cond := Prag;
  
              elsif Prag_Nam = Name_Initializes then
--- 1278,1289 ----
           while Present (Prag) loop
              Prag_Nam := Pragma_Name (Prag);
  
!             --  When Assertion_Levels are used then the pacakage can have
!             --  multiple consecutive Initial_Condition pragmas.
!             --  Find the first one here and then iterate over all of them
!             --  later.
! 
!             if Prag_Nam = Name_Initial_Condition and then No (Init_Cond) then
                 Init_Cond := Prag;
  
              elsif Prag_Nam = Name_Initializes then
*************** package body Contracts is
*** 1295,1303 ****
              Analyze_Initializes_In_Decl_Part (Init);
           end if;
  
!          if Present (Init_Cond) then
              Analyze_Initial_Condition_In_Decl_Part (Init_Cond);
!          end if;
        end if;
  
        --  Restore the SPARK_Mode of the enclosing context after all delayed
--- 1300,1311 ----
              Analyze_Initializes_In_Decl_Part (Init);
           end if;
  
!          while Present (Init_Cond)
!            and then Pragma_Name (Init_Cond) = Name_Initial_Condition
!          loop
              Analyze_Initial_Condition_In_Decl_Part (Init_Cond);
!             Init_Cond := Next_Pragma (Init_Cond);
!          end loop;
        end if;
  
        --  Restore the SPARK_Mode of the enclosing context after all delayed
*************** package body Contracts is
*** 3274,3280 ****
        --  The contract of an ignored Ghost subprogram does not need expansion,
        --  because the subprogram and all calls to it will be removed.
  
!       elsif Is_Ignored_Ghost_Entity (Subp_Id) then
           return;
  
        --  No action needed for helpers and indirect-call wrapper built to
--- 3282,3288 ----
        --  The contract of an ignored Ghost subprogram does not need expansion,
        --  because the subprogram and all calls to it will be removed.
  
!       elsif Is_Ignored_Ghost_Entity_In_Codegen (Subp_Id) then
           return;
  
        --  No action needed for helpers and indirect-call wrapper built to
diff -Nrcpad gcc-16-20250907/gcc/ada/cstand.adb gcc-16-20250914/gcc/ada/cstand.adb
*** gcc-16-20250907/gcc/ada/cstand.adb	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/cstand.adb	Sun Sep 14 22:32:07 2025
*************** with Targparm;       use Targparm;
*** 41,46 ****
--- 41,47 ----
  with Tbuild;         use Tbuild;
  with Ttypes;         use Ttypes;
  with Sem_Mech;       use Sem_Mech;
+ with Sem_Prag;       use Sem_Prag;
  with Sem_Util;       use Sem_Util;
  with Sinfo;          use Sinfo;
  with Sinfo.Nodes;    use Sinfo.Nodes;
*************** package body CStand is
*** 456,461 ****
--- 457,467 ----
        procedure Make_Dummy_Index (E : Entity_Id);
        --  Called to provide a dummy index field value for Any_Array/Any_String
  
+       function Make_Assertion_Level_Definition
+         (Nam : Name_Id) return Entity_Id;
+       --  Create an Assertion_Level definition with the given name in the'
+       --  Sandard package.
+ 
        procedure Pack_String_Type (String_Type : Entity_Id);
        --  Generate proper tree for pragma Pack that applies to given type, and
        --  mark type as having the pragma.
*************** package body CStand is
*** 558,563 ****
--- 564,581 ----
           Set_First_Index (E, Index);
        end Make_Dummy_Index;
  
+       -------------------------------------
+       -- Make_Assertion_Level_Definition --
+       -------------------------------------
+ 
+       function Make_Assertion_Level_Definition (Nam : Name_Id) return Entity_Id
+       is
+          Level : constant Entity_Id := Make_Assertion_Level (Stloc, Nam);
+       begin
+          Insert_Assertion_Level (Level);
+          return Level;
+       end Make_Assertion_Level_Definition;
+ 
        ----------------------
        -- Pack_String_Type --
        ----------------------
*************** package body CStand is
*** 1494,1499 ****
--- 1512,1522 ----
           Set_Size_Known_At_Compile_Time (Standard_Duration);
        end Build_Duration;
  
+       Standard_Level_Static := Make_Assertion_Level_Definition (Name_Static);
+       Standard_Level_Runtime := Make_Assertion_Level_Definition (Name_Runtime);
+       Standard_Level_Default :=
+         Make_Assertion_Level_Definition (Name_uDefault_Assertion_Level);
+ 
        --  Build standard exception type. Note that the type name here is
        --  actually used in the generated code, so it must be set correctly.
        --  The type Standard_Exception_Type must be consistent with the type
*************** package body CStand is
*** 1935,1940 ****
--- 1958,1967 ----
        P ("--  characteristics of the Standard types for this compiler");
        Write_Eol;
  
+       P ("pragma Assertion_Level (Runtime);");
+       P ("pragma Assertion_Level (Static);");
+       Write_Eol;
+ 
        P ("package Standard is");
        P ("pragma Pure (Standard);");
        Write_Eol;
diff -Nrcpad gcc-16-20250907/gcc/ada/debug.adb gcc-16-20250914/gcc/ada/debug.adb
*** gcc-16-20250907/gcc/ada/debug.adb	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/debug.adb	Sun Sep 14 22:32:07 2025
*************** package body Debug is
*** 152,158 ****
     --  d_l  Disable strict alignment of array types with aliased component
     --  d_m  Run adareducer on crash
     --  d_n
!    --  d_o
     --  d_p  Ignore assertion pragmas for elaboration
     --  d_q  Do not enforce freezing for equality operator of boolean subtype
     --  d_r  Disable the use of the return slot in functions
--- 152,158 ----
     --  d_l  Disable strict alignment of array types with aliased component
     --  d_m  Run adareducer on crash
     --  d_n
!    --  d_o  Disable Backend_Overflow_Checks_On_Target; used for testing.
     --  d_p  Ignore assertion pragmas for elaboration
     --  d_q  Do not enforce freezing for equality operator of boolean subtype
     --  d_r  Disable the use of the return slot in functions
*************** package body Debug is
*** 995,1000 ****
--- 995,1003 ----
     --  d_l  The compiler does not enforce the strict alignment of array types
     --       that are declared with an aliased component.
  
+    --  d_o  The compiler disables Backend_Overflow_Checks_On_Target; used to
+    --       test the frontend support on targets without overflow checks.
+ 
     --  d_p  The compiler ignores calls to subprograms which verify the run-time
     --       semantics of invariants and postconditions in both the static and
     --       dynamic elaboration models.
diff -Nrcpad gcc-16-20250907/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst gcc-16-20250914/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
*** gcc-16-20250907/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sun Sep  7 22:32:52 2025
--- gcc-16-20250914/gcc/ada/doc/gnat_rm/gnat_language_extensions.rst	Sun Sep 14 22:32:07 2025
*************** Restricting the position of controlling
*** 581,586 ****
--- 581,609 ----
  
  * The result of a function is never a controlling result.
  
+ ``Unsigned_Base_Range`` aspect
+ ------------------------------
+ 
+ A new pragma/aspect, ``Unsigned_Base_Range``, is introduced to explicitly
+ enforce the use of an unsigned base type for signed integer types.
+ RM-3.5.4(9) mandates a symmetric base range for signed integer types. This
+ requirement often requires the use of larger data types for arithmetic
+ operations, potentially introducing undesirable run-time overhead and
+ performance penalties, particularly in embedded systems. For instance,
+ on a 64-bit architecture, a 64-bit multiplication can be performed with
+ a single hardware instruction, whereas a 128-bit multiplication requires
+ multiple instructions and intermediate steps.
+ 
+ Here is an example of this feature:
+ 
+ .. code-block:: ada
+ 
+   type Uns_64 is range 0 .. 2 ** 64 - 1
+     with Size => 64,
+          Unsigned_Base_Range => True;
+ 
+ It ensures that arithmetic operations of type ``Uns_64`` are carried
+ out using 64 bits.
  
  .. _Experimental_Language_Extensions:
  
diff -Nrcpad gcc-16-20250907/gcc/ada/einfo-utils.adb gcc-16-20250914/gcc/ada/einfo-utils.adb
*** gcc-16-20250907/gcc/ada/einfo-utils.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/einfo-utils.adb	Sun Sep 14 22:32:07 2025
*************** package body Einfo.Utils is
*** 669,674 ****
--- 669,676 ----
              Result := Id;
           else
              pragma Assert (Is_Type (Id));
+             --  ...because Is_Base_Type returns True for nontypes
+ 
              Result := Etype (Id);
              if False then
                 pragma Assert (Is_Base_Type (Result));
*************** package body Einfo.Utils is
*** 679,688 ****
--- 681,710 ----
                 --  expect.
              end if;
           end if;
+ 
+          --  pragma Assert (Result = Base_Type_If_Set (Id));
+          --  Disabled; too slow
        end return;
     end Base_Type;
  
     ----------------------
+    -- Base_Type_If_Set --
+    ----------------------
+ 
+    function Base_Type_If_Set (Id : E) return Opt_N_Entity_Id is
+    begin
+       return Result : Opt_N_Entity_Id do
+          if Is_Base_Type (Id) then
+             Result := Id;
+          elsif Field_Is_Initial_Zero (Id, F_Etype) then
+             Result := Empty;
+          else
+             Result := Etype (Id);
+          end if;
+       end return;
+    end Base_Type_If_Set;
+ 
+    ----------------------
     -- Declaration_Node --
     ----------------------
  
*************** package body Einfo.Utils is
*** 1374,1403 ****
     ------------------------------
  
     function Implementation_Base_Type (Id : E) return E is
-       Bastyp : Entity_Id;
        Imptyp : Entity_Id;
- 
     begin
!       Bastyp := Base_Type (Id);
! 
!       if Is_Incomplete_Or_Private_Type (Bastyp) then
!          Imptyp := Underlying_Type (Bastyp);
  
!          --  If we have an implementation type, then just return it,
!          --  otherwise we return the Base_Type anyway. This can only
!          --  happen in error situations and should avoid some error bombs.
  
!          if Present (Imptyp) then
!             return Base_Type (Imptyp);
!          else
!             return Bastyp;
           end if;
  
!       else
!          return Bastyp;
!       end if;
     end Implementation_Base_Type;
  
     -------------------------
     -- Invariant_Procedure --
     -------------------------
--- 1396,1438 ----
     ------------------------------
  
     function Implementation_Base_Type (Id : E) return E is
        Imptyp : Entity_Id;
     begin
!       return Result : E := Base_Type (Id) do
!          if Is_Incomplete_Or_Private_Type (Result) then
!             Imptyp := Underlying_Type (Result);
  
!             --  If we have an implementation type, return its Base_Type.
  
!             if Present (Imptyp) then
!                Result := Base_Type (Imptyp);
!             end if;
           end if;
  
!          --  pragma Assert (Result = Implementation_Base_Type_If_Set (Id));
!          --  Disabled; too slow
!       end return;
     end Implementation_Base_Type;
  
+    -------------------------------------
+    -- Implementation_Base_Type_If_Set --
+    -------------------------------------
+ 
+    function Implementation_Base_Type_If_Set (Id : E) return Opt_N_Entity_Id is
+       Imptyp : Entity_Id;
+    begin
+       return Result : Opt_N_Entity_Id := Base_Type_If_Set (Id) do
+          if Present (Result) and then Is_Incomplete_Or_Private_Type (Result)
+          then
+             Imptyp := Underlying_Type (Result);
+ 
+             if Present (Imptyp) then
+                Result := Base_Type_If_Set (Imptyp);
+             end if;
+          end if;
+       end return;
+    end Implementation_Base_Type_If_Set;
+ 
     -------------------------
     -- Invariant_Procedure --
     -------------------------
*************** package body Einfo.Utils is
*** 2540,2590 ****
     ---------------
  
     function Root_Type (Id : E) return E is
!       T, Etyp : Entity_Id;
  
     begin
!       pragma Assert (Nkind (Id) in N_Entity);
  
!       T := Base_Type (Id);
  
!       if Ekind (T) = E_Class_Wide_Type then
!          return Etype (T);
  
!       --  Other cases
  
!       else
!          loop
!             Etyp := Etype (T);
  
!             if T = Etyp then
!                return T;
  
!             --  Following test catches some error cases resulting from
!             --  previous errors.
  
!             elsif No (Etyp) then
!                Check_Error_Detected;
!                return T;
  
!             elsif Is_Private_Type (T) and then Etyp = Full_View (T) then
!                return T;
  
!             elsif Is_Private_Type (Etyp) and then Full_View (Etyp) = T then
!                return T;
!             end if;
  
!             T := Etyp;
  
!             --  Return if there is a circularity in the inheritance chain. This
!             --  happens in some error situations and we do not want to get
!             --  stuck in this loop.
  
!             if T = Base_Type (Id) then
!                return T;
!             end if;
!          end loop;
!       end if;
!    end Root_Type;
  
     ---------------------
     -- Safe_Emax_Value --
--- 2575,2648 ----
     ---------------
  
     function Root_Type (Id : E) return E is
!       Etyp : Entity_Id;
  
     begin
!       return T : E := Base_Type (Id) do
!          if Ekind (T) = E_Class_Wide_Type then
!             T := Etype (T);
!          else
!             loop
!                Etyp := Etype (T);
  
!                exit when T = Etyp
!                  or else
!                    (Is_Private_Type (T) and then Etyp = Full_View (T))
!                  or else
!                    (Is_Private_Type (Etyp) and then Full_View (Etyp) = T);
  
!                T := Etyp;
  
!                --  Quit if there is a circularity in the inheritance chain.
!                --  This happens in some error situations and we do not want
!                --  to get stuck in this loop.
  
!                if T = Base_Type (Id) then
!                   Check_Error_Detected;
!                   exit;
!                end if;
!             end loop;
!          end if;
  
!          --  pragma Assert (T = Root_Type_If_Set (Id));
!          --  Disabled; too slow
!       end return;
!    end Root_Type;
  
!    ----------------------
!    -- Root_Type_If_Set --
!    ----------------------
  
!    function Root_Type_If_Set (Id : E) return Opt_N_Entity_Id is
!       Etyp : Entity_Id;
  
!    begin
!       return T : Opt_N_Entity_Id := Base_Type_If_Set (Id) do
!          if Ekind (T) = E_Class_Wide_Type then
!             T := Etype (T);
!          else
!             loop
!                Etyp := Etype (T);
  
!                exit when No (Etyp) or else T = Etyp
!                  or else
!                    (Is_Private_Type (T) and then Etyp = Full_View (T))
!                  or else
!                    (Is_Private_Type (Etyp) and then Full_View (Etyp) = T);
  
!                T := Etyp;
  
!                --  Quit if there is a circularity in the inheritance chain.
!                --  This happens in some error situations and we do not want
!                --  to get stuck in this loop.
  
!                if T = Base_Type_If_Set (Id) then
!                   exit;
!                end if;
!             end loop;
!          end if;
!       end return;
!    end Root_Type_If_Set;
  
     ---------------------
     -- Safe_Emax_Value --
*************** package body Einfo.Utils is
*** 3010,3016 ****
     -- Underlying_Type --
     ---------------------
  
!    function Underlying_Type (Id : E) return Entity_Id is
     begin
        --  For record_with_private the underlying type is always the direct full
        --  view. Never try to take the full view of the parent it does not make
--- 3068,3074 ----
     -- Underlying_Type --
     ---------------------
  
!    function Underlying_Type (Id : E) return Opt_N_Entity_Id is
     begin
        --  For record_with_private the underlying type is always the direct full
        --  view. Never try to take the full view of the parent it does not make
diff -Nrcpad gcc-16-20250907/gcc/ada/einfo-utils.ads gcc-16-20250914/gcc/ada/einfo-utils.ads
*** gcc-16-20250907/gcc/ada/einfo-utils.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/einfo-utils.ads	Sun Sep 14 22:32:07 2025
*************** package Einfo.Utils is
*** 161,166 ****
--- 161,175 ----
     function First_Formal (Id : E) return Entity_Id;
     function First_Formal_With_Extras (Id : E) return Entity_Id;
  
+    function Base_Type_If_Set (Id : E) return Opt_N_Entity_Id;
+    function Implementation_Base_Type_If_Set (Id : E) return Opt_N_Entity_Id;
+    function Root_Type_If_Set (Id : E) return Opt_N_Entity_Id;
+    --  Base_Type_If_Set is a more permissive version of Base_Type, which
+    --  returns the same value, except it returns Empty in cases where Base_Type
+    --  would crash because relevant fields are not yet set. Likewise for the
+    --  other two. These are used in Treepr, to allow it to print half-baked
+    --  nodes without crashing.
+ 
     function Float_Rep
       (N : Entity_Id) return F with Inline, Pre =>
        N in E_Void_Id
*************** package Einfo.Utils is
*** 238,244 ****
     function Stream_Size_Clause (Id : E) return N with Inline;
     function Type_High_Bound (Id : E) return N with Inline;
     function Type_Low_Bound (Id : E) return N with Inline;
!    function Underlying_Type (Id : E) return Entity_Id;
  
     function Scope_Depth (Id : Scope_Kind_Id) return U with Inline;
     function Scope_Depth_Set (Id : Scope_Kind_Id) return B with Inline;
--- 247,253 ----
     function Stream_Size_Clause (Id : E) return N with Inline;
     function Type_High_Bound (Id : E) return N with Inline;
     function Type_Low_Bound (Id : E) return N with Inline;
!    function Underlying_Type (Id : E) return Opt_N_Entity_Id;
  
     function Scope_Depth (Id : Scope_Kind_Id) return U with Inline;
     function Scope_Depth_Set (Id : Scope_Kind_Id) return B with Inline;
diff -Nrcpad gcc-16-20250907/gcc/ada/einfo.ads gcc-16-20250914/gcc/ada/einfo.ads
*** gcc-16-20250907/gcc/ada/einfo.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/einfo.ads	Sun Sep 14 22:32:07 2025
*************** package Einfo is
*** 608,613 ****
--- 608,617 ----
  --       determine if there actually is an active Suppress or Unsuppress pragma
  --       that applies to the entity.
  
+ --    Child_Levels
+ --       Assrtion levels that depend on the given level are considered to be
+ --        the child levels of that level.
+ 
  --    Class_Postconditions
  --       Defined on subprogram entities. Set if the subprogram has class-wide
  --       postconditions. Denotes the (and-then) expression built by merging
*************** package Einfo is
*** 1461,1466 ****
--- 1465,1476 ----
  --       associates generic parameters with the corresponding instances, in
  --       those cases where the instance is an entity.
  
+ --    Ghost_Assertion_Level
+ --       Assertion level associated with the declaration of the entity. Its
+ --       value is either Empty for non-ghost entities, Standard_Level_Default
+ --       for Ghost entities without an assertion level, or a user-defined
+ --       assertion level.
+ 
  --    Has_Aliased_Components [implementation base type only]
  --       Defined in array type entities. Indicates that the component type
  --       of the array is aliased. Should this also be set for records to
*************** package Einfo is
*** 2164,2169 ****
--- 2174,2184 ----
  --       on the partial view, to ensure that discriminants are properly
  --       inherited in certain contexts.
  
+ --    Has_Unsigned_Base_Range_Aspect [base type only]
+ --       Defined in integer types. Set in the base type of an integer type for
+ --       which the type has an Unsigned_Base_Range of True (whether by an
+ --       aspect_specification, a pragma, or inheritance).
+ 
  --    Has_Visible_Refinement
  --       Defined in E_Abstract_State entities. Set when a state has at least
  --       one refinement constituent and analysis is in the region between
*************** package Einfo is
*** 4008,4013 ****
--- 4023,4032 ----
  --       used when obtaining the formal kind of a formal parameter (the result
  --       is one of E_[In/Out/In_Out]_Parameter).
  
+ --    Parent_Levels
+ --       Assrtion levels that the given level depends on are considered to be
+ --       parent levels of that level.
+ 
  --    Parent_Subtype [base type only]
  --       Defined in E_Record_Type. Set only for derived tagged types, in which
  --       case it points to the subtype of the parent type. This is the type
*************** package Einfo is
*** 5243,5248 ****
--- 5262,5271 ----
     --    Number_Dimensions                     (synth)
     --    (plus type attributes)
  
+    --  E_Assertion_Level
+    --    Child_Levels
+    --    Parent_Levels
+ 
     --  E_Block
     --    Renamed_Entity $$$
     --    Renamed_Object $$$
*************** package Einfo is
*** 6112,6117 ****
--- 6135,6141 ----
     --    Static_Discrete_Predicate
     --    Has_Biased_Representation
     --    Has_Shift_Operator                   (base type only)
+    --    Has_Unsigned_Base_Range_Aspect       (base type only)
     --    No_Predicate_On_Actual
     --    No_Dynamic_Predicate_On_Actual
     --    Type_Low_Bound                       (synth)
diff -Nrcpad gcc-16-20250907/gcc/ada/env.c gcc-16-20250914/gcc/ada/env.c
*** gcc-16-20250907/gcc/ada/env.c	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/env.c	Sun Sep 14 22:32:07 2025
*************** void __gnat_clearenv (void)
*** 229,235 ****
     || defined (__CYGWIN__) \
     || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__rtems__) \
     || defined (__DragonFly__) || defined (__DJGPP__)
!   /* On Windows, FreeBSD and MacOS there is no function to clean all the
       environment but there is a "clean" way to unset a variable. So go
       through the environ table and call __gnat_unsetenv on all entries */
    char **env = __gnat_environ ();
--- 229,236 ----
     || defined (__CYGWIN__) \
     || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__rtems__) \
     || defined (__DragonFly__) || defined (__DJGPP__)
!   /* On several platforms (e.g. Windows, FreeBSD, MacOS...)
!      there is no function to clean all the
       environment but there is a "clean" way to unset a variable. So go
       through the environ table and call __gnat_unsetenv on all entries */
    char **env = __gnat_environ ();
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_aggr.adb gcc-16-20250914/gcc/ada/exp_aggr.adb
*** gcc-16-20250907/gcc/ada/exp_aggr.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_aggr.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Aggr is
*** 6984,6990 ****
                 --  Choice is a single discrete value
  
                 elsif Is_Discrete_Type (Etype (Choice)) then
!                   Update_Choices (Choice, Choice);
  
                    Temp_Siz_Exp := Make_Integer_Literal (Loc, 1);
                    Set_Is_Static_Expression (Temp_Siz_Exp);
--- 6984,6992 ----
                 --  Choice is a single discrete value
  
                 elsif Is_Discrete_Type (Etype (Choice)) then
!                   if Is_Static_Expression (Choice) then
!                      Update_Choices (Choice, Choice);
!                   end if;
  
                    Temp_Siz_Exp := Make_Integer_Literal (Loc, 1);
                    Set_Is_Static_Expression (Temp_Siz_Exp);
*************** package body Exp_Aggr is
*** 7208,7220 ****
        -- To_Int --
        ------------
  
!       --  The bounds of the discrete range are integers or enumeration literals
  
        function To_Int (Expr : N_Subexpr_Id) return Int is
        begin
!          return UI_To_Int ((if Nkind (Expr) = N_Integer_Literal
!                             then Intval (Expr)
!                             else Enumeration_Pos (Entity (Expr))));
        end To_Int;
  
        --  Local variables
--- 7210,7220 ----
        -- To_Int --
        ------------
  
!       --  The bounds of the discrete range are static discrete values
  
        function To_Int (Expr : N_Subexpr_Id) return Int is
        begin
!          return UI_To_Int (Expr_Value (Expr));
        end To_Int;
  
        --  Local variables
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_attr.adb gcc-16-20250914/gcc/ada/exp_attr.adb
*** gcc-16-20250907/gcc/ada/exp_attr.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_attr.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Attr is
*** 479,485 ****
  
        --  Local variables
  
!       Func_Id : constant Entity_Id := Make_Temporary (Loc, 'V');
        Indexes : constant List_Id   := New_List;
        Obj_Id  : constant Entity_Id := Make_Temporary (Loc, 'A');
        Stmts   : List_Id;
--- 479,486 ----
  
        --  Local variables
  
!       Func_Id : constant Entity_Id := Make_Temporary (Loc, 'V',
!                                         Related_Node => Attr);
        Indexes : constant List_Id   := New_List;
        Obj_Id  : constant Entity_Id := Make_Temporary (Loc, 'A');
        Stmts   : List_Id;
*************** package body Exp_Attr is
*** 836,842 ****
  
        --  Local variables
  
!       Func_Id  : constant Entity_Id := Make_Temporary (Loc, 'V');
        Obj_Id   : constant Entity_Id := Make_Temporary (Loc, 'R');
        Comps    : Node_Id;
        Stmts    : List_Id;
--- 837,844 ----
  
        --  Local variables
  
!       Func_Id  : constant Entity_Id := Make_Temporary (Loc, 'V',
!                                          Related_Node => Attr);
        Obj_Id   : constant Entity_Id := Make_Temporary (Loc, 'R');
        Comps    : Node_Id;
        Stmts    : List_Id;
*************** package body Exp_Attr is
*** 2171,2177 ****
           --  that it has the necessary extra formals.
  
           if not Is_Frozen (Pname) then
!             Create_Extra_Formals (Pname);
           end if;
  
           --  And now rewrite the call
--- 2173,2179 ----
           --  that it has the necessary extra formals.
  
           if not Is_Frozen (Pname) then
!             Create_Extra_Formals (Pname, Related_Nod => N);
           end if;
  
           --  And now rewrite the call
*************** package body Exp_Attr is
*** 2648,2654 ****
                          Set_Extra_Formal (Extra, Empty);
                       end if;
  
!                      Create_Extra_Formals (Subp_Typ);
                       Set_Directly_Designated_Type (Typ, Subp_Typ);
                    end;
                 end if;
--- 2650,2656 ----
                          Set_Extra_Formal (Extra, Empty);
                       end if;
  
!                      Create_Extra_Formals (Subp_Typ, Related_Nod => N);
                       Set_Directly_Designated_Type (Typ, Subp_Typ);
                    end;
                 end if;
*************** package body Exp_Attr is
*** 2679,2691 ****
                 if not Is_Frozen (Entity (Pref))
                   or else From_Limited_With (Etype (Entity (Pref)))
                 then
!                   Create_Extra_Formals (Entity (Pref));
                 end if;
  
                 if not Is_Frozen (Btyp_DDT)
                   or else From_Limited_With (Etype (Btyp_DDT))
                 then
!                   Create_Extra_Formals (Btyp_DDT);
                 end if;
  
                 pragma Assert
--- 2681,2693 ----
                 if not Is_Frozen (Entity (Pref))
                   or else From_Limited_With (Etype (Entity (Pref)))
                 then
!                   Create_Extra_Formals (Entity (Pref), Related_Nod => N);
                 end if;
  
                 if not Is_Frozen (Btyp_DDT)
                   or else From_Limited_With (Etype (Btyp_DDT))
                 then
!                   Create_Extra_Formals (Btyp_DDT, Related_Nod => N);
                 end if;
  
                 pragma Assert
*************** package body Exp_Attr is
*** 8883,8888 ****
--- 8885,8891 ----
           | Attribute_Type_Key
           | Attribute_Unconstrained_Array
           | Attribute_Universal_Literal_String
+          | Attribute_Unsigned_Base_Range
           | Attribute_Wchar_T_Size
           | Attribute_Word_Size
        =>
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_ch3.adb gcc-16-20250914/gcc/ada/exp_ch3.adb
*** gcc-16-20250907/gcc/ada/exp_ch3.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_ch3.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Ch3 is
*** 2145,2151 ****
           end if;
  
           if Policy_In_Effect (Name_Assert) = Name_Check
!            and then not Predicates_Ignored (Etype (Discr))
           then
              Prepend_To (Res, Make_Predicate_Check (Typ, Val));
           end if;
--- 2145,2151 ----
           end if;
  
           if Policy_In_Effect (Name_Assert) = Name_Check
!            and then not Predicates_Ignored_In_Codegen (Etype (Discr))
           then
              Prepend_To (Res, Make_Predicate_Check (Typ, Val));
           end if;
*************** package body Exp_Ch3 is
*** 5878,5884 ****
        --  the subtype.
  
        if not No_Exception_Handlers_Set
!         and then not Predicates_Ignored (Typ)
        then
           Append_To (Lst,
             Make_Case_Statement_Alternative (Loc,
--- 5878,5884 ----
        --  the subtype.
  
        if not No_Exception_Handlers_Set
!         and then not Predicates_Ignored_In_Codegen (Typ)
        then
           Append_To (Lst,
             Make_Case_Statement_Alternative (Loc,
*************** package body Exp_Ch3 is
*** 6592,6598 ****
  
              Elmt := First_Elmt (Primitive_Operations (Typ));
              while Present (Elmt) loop
!                Create_Extra_Formals (Node (Elmt));
                 Next_Elmt (Elmt);
              end loop;
  
--- 6592,6598 ----
  
              Elmt := First_Elmt (Primitive_Operations (Typ));
              while Present (Elmt) loop
!                Create_Extra_Formals (Node (Elmt), Related_Nod => N);
                 Next_Elmt (Elmt);
              end loop;
  
*************** package body Exp_Ch3 is
*** 6609,6615 ****
                   and then Find_Dispatching_Type (E) = Typ
                   and then not Contains (Primitive_Operations (Typ), E)
                 then
!                   Create_Extra_Formals (E);
                 end if;
  
                 Next_Entity (E);
--- 6609,6615 ----
                   and then Find_Dispatching_Type (E) = Typ
                   and then not Contains (Primitive_Operations (Typ), E)
                 then
!                   Create_Extra_Formals (E, Related_Nod => N);
                 end if;
  
                 Next_Entity (E);
*************** package body Exp_Ch3 is
*** 10786,10796 ****
                         or else (Is_Record_Type (Typ)
                                   and then Is_Protected_Record_Type (Typ));
        With_Task  : constant Boolean :=
!                      not Global_No_Tasking
!                        and then
!                      (Has_Task (Typ)
!                         or else (Is_Record_Type (Typ)
!                                    and then Is_Task_Record_Type (Typ)));
        Formals : List_Id;
  
     begin
--- 10786,10794 ----
                         or else (Is_Record_Type (Typ)
                                   and then Is_Protected_Record_Type (Typ));
        With_Task  : constant Boolean :=
!                      Has_Task (Typ)
!                        or else (Is_Record_Type (Typ)
!                                  and then Is_Task_Record_Type (Typ));
        Formals : List_Id;
  
     begin
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_ch4.adb gcc-16-20250914/gcc/ada/exp_ch4.adb
*** gcc-16-20250907/gcc/ada/exp_ch4.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_ch4.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Ch4 is
*** 7870,7878 ****
           end if;
        end if;
  
!       --  Arithmetic overflow checks for signed integer/fixed point types
  
!       if Is_Signed_Integer_Type (Typ) or else Is_Fixed_Point_Type (Typ) then
           Apply_Arithmetic_Overflow_Check (N);
           return;
        end if;
--- 7870,7884 ----
           end if;
        end if;
  
!       --  Arithmetic overflow checks for signed integer/fixed point types,
!       --  and signed integer types with unsigned base range aspect.
  
!       if Is_Signed_Integer_Type (Typ)
!         or else Is_Fixed_Point_Type (Typ)
!         or else
!           (Is_Modular_Integer_Type (Typ)
!             and then Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)))
!       then
           Apply_Arithmetic_Overflow_Check (N);
           return;
        end if;
*************** package body Exp_Ch4 is
*** 8179,8184 ****
--- 8185,8195 ----
        --  Determines whether a type has a subcomponent of an unconstrained
        --  Unchecked_Union subtype. Typ is a record type.
  
+       procedure Warn_On_Abstract_Equality_For_Component
+         (Comp_Type : Entity_Id);
+       --  If Comp_Type is a record type with a user-defined abstract primitive
+       --  equality, then issue a warning that Program_Error will be raised.
+ 
        -------------------------
        -- Build_Equality_Call --
        -------------------------
*************** package body Exp_Ch4 is
*** 8403,8408 ****
--- 8414,8440 ----
               Unconstrained_UU_In_Component_List (Optional_Component_List);
        end Has_Unconstrained_UU_Component;
  
+       ---------------------------------------------
+       -- Warn_On_Abstract_Equality_For_Component --
+       ---------------------------------------------
+ 
+       procedure Warn_On_Abstract_Equality_For_Component
+         (Comp_Type : Entity_Id)
+       is
+          Eq : Entity_Id;
+       begin
+          if Is_Record_Type (Underlying_Type (Comp_Type)) then
+             Eq := Get_User_Defined_Equality (Comp_Type);
+ 
+             if Present (Eq) and then Is_Abstract_Subprogram (Eq) then
+                Error_Msg_Warn := SPARK_Mode /= On;
+                Error_Msg_NE ("call to abstract equality function of "
+                              & "component type &<<", N, Comp_Type);
+                Error_Msg_N ("\Program_Error [<<", N);
+             end if;
+          end if;
+       end Warn_On_Abstract_Equality_For_Component;
+ 
        --  Local variables
  
        Typl : Entity_Id;
*************** package body Exp_Ch4 is
*** 8471,8476 ****
--- 8503,8518 ----
  
        elsif Is_Array_Type (Typl) then
  
+          --  If the outer type doesn't have a user-defined equality operation,
+          --  check whether its component type has an abstract equality, and
+          --  warn if so. Such a component equality function will raise
+          --  Program_Error of objects of the outer type are compared using
+          --  predefined equality.
+ 
+          if not Present (Get_User_Defined_Equality (Typl)) then
+             Warn_On_Abstract_Equality_For_Component (Component_Type (Typl));
+          end if;
+ 
           --  If we are doing full validity checking, and it is possible for the
           --  array elements to be invalid then expand out array comparisons to
           --  make sure that we check the array elements.
*************** package body Exp_Ch4 is
*** 8540,8545 ****
--- 8582,8617 ----
  
        elsif Is_Record_Type (Typl) then
  
+          --  When outer type doesn't have a user-defined equality operation,
+          --  check whether any of its components' types have an abstract
+          --  equality, and warn if so. Such component equality functions will
+          --  raise Program_Error when objects of the outer type are compared
+          --  using predefined equality.
+ 
+          --  ??? Note that this warning is currently only issued in cases of
+          --  top-level components of the type and not for deeper subcomponents.
+          --  Those could be handled with more work, such as by adding a flag
+          --  on record type entities, but it's not clear that it would be
+          --  worth the effort. Another limitation is that the warning check
+          --  is not done for tagged types in some cases, because equality
+          --  comparisons for those can be changed to calls at an earlier point
+          --  during analysis and resolution, and do not reach this code (but in
+          --  many cases tagged equality comparisons do reach the code below).
+ 
+          if not Present (Get_User_Defined_Equality (Typl)) then
+             declare
+                Comp : Entity_Id := First_Component (Typl);
+             begin
+                while Present (Comp) loop
+                   if Chars (Comp) /= Name_uParent then
+                      Warn_On_Abstract_Equality_For_Component (Etype (Comp));
+                   end if;
+ 
+                   Next_Component (Comp);
+                end loop;
+             end;
+          end if;
+ 
           --  For tagged types, use the primitive "="
  
           if Is_Tagged_Type (Typl) then
*************** package body Exp_Ch4 is
*** 9387,9393 ****
        end if;
  
        if not Backend_Overflow_Checks_On_Target
!          and then Is_Signed_Integer_Type (Typ)
           and then Do_Overflow_Check (N)
        then
           --  Software overflow checking expands -expr into (0 - expr)
--- 9459,9469 ----
        end if;
  
        if not Backend_Overflow_Checks_On_Target
!          and then
!            (Is_Signed_Integer_Type (Typ)
!               or else
!                 (Is_Modular_Integer_Type (Typ)
!                    and then Has_Unsigned_Base_Range_Aspect (Base_Type (Typ))))
           and then Do_Overflow_Check (N)
        then
           --  Software overflow checking expands -expr into (0 - expr)
*************** package body Exp_Ch4 is
*** 9811,9817 ****
  
        --  Non-fixed point cases, check software overflow checking required
  
!       elsif Is_Signed_Integer_Type (Etype (N)) then
           Apply_Arithmetic_Overflow_Check (N);
        end if;
  
--- 9887,9897 ----
  
        --  Non-fixed point cases, check software overflow checking required
  
!       elsif Is_Signed_Integer_Type (Etype (N))
!         or else
!           (Is_Modular_Integer_Type (Typ)
!             and then Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)))
!       then
           Apply_Arithmetic_Overflow_Check (N);
        end if;
  
*************** package body Exp_Ch4 is
*** 10375,10383 ****
           return;
        end if;
  
!       --  Arithmetic overflow checks for signed integer/fixed point types
  
!       if Is_Signed_Integer_Type (Typ) or else Is_Fixed_Point_Type (Typ) then
           Apply_Arithmetic_Overflow_Check (N);
        end if;
  
--- 10455,10469 ----
           return;
        end if;
  
!       --  Arithmetic overflow checks for signed integer/fixed point types,
!       --  and signed integer types with unsigned base range aspect.
  
!       if Is_Signed_Integer_Type (Typ)
!         or else Is_Fixed_Point_Type (Typ)
!         or else
!           (Is_Modular_Integer_Type (Typ)
!             and then Has_Unsigned_Base_Range_Aspect (Base_Type (Typ)))
!       then
           Apply_Arithmetic_Overflow_Check (N);
        end if;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_ch5.adb gcc-16-20250914/gcc/ada/exp_ch5.adb
*** gcc-16-20250907/gcc/ada/exp_ch5.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_ch5.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Ch5 is
*** 2254,2260 ****
        function Replace_Target (N : Node_Id) return Traverse_Result;
        --  Replace occurrences of the target name by the proper entity: either
        --  the entity of the LHS in simple cases, or the formal of the
!       --  constructed procedure otherwise.
  
        --------------------
        -- Replace_Target --
--- 2254,2261 ----
        function Replace_Target (N : Node_Id) return Traverse_Result;
        --  Replace occurrences of the target name by the proper entity: either
        --  the entity of the LHS in simple cases, or the formal of the
!       --  constructed procedure otherwise. Mark all nodes as Analyzed=False
!       --  so reanalysis will occur.
  
        --------------------
        -- Replace_Target --
*************** package body Exp_Ch5 is
*** 2264,2283 ****
        begin
           if Nkind (N) = N_Target_Name then
              Rewrite (N, New_Occurrence_Of (Ent, Sloc (N)));
- 
-          --  The expression will be reanalyzed when the enclosing assignment
-          --  is reanalyzed, so reset the entity, which may be a temporary
-          --  created during analysis, e.g. a loop variable for an iterated
-          --  component association. However, if entity is callable then
-          --  resolution has established its proper identity (including in
-          --  rewritten prefixed calls) so we must preserve it.
- 
-          elsif Is_Entity_Name (N) then
-             if Present (Entity (N))
-               and then not Is_Overloadable (Entity (N))
-             then
-                Set_Entity (N, Empty);
-             end if;
           end if;
  
           Set_Analyzed (N, False);
--- 2265,2270 ----
*************** package body Exp_Ch5 is
*** 4118,4124 ****
  
        if Compile_Time_Known_Value (Expr)
          and then Has_Predicates (Etype (Expr))
!         and then not Predicates_Ignored (Etype (Expr))
          and then not Is_OK_Static_Expression (Expr)
        then
           Rewrite (N,
--- 4105,4111 ----
  
        if Compile_Time_Known_Value (Expr)
          and then Has_Predicates (Etype (Expr))
!         and then not Predicates_Ignored_In_Codegen (Etype (Expr))
          and then not Is_OK_Static_Expression (Expr)
        then
           Rewrite (N,
*************** package body Exp_Ch5 is
*** 4203,4209 ****
           --  generated case statements).
  
           if Validity_Check_Default
!            and then not Predicates_Ignored (Etype (Expr))
           then
              --  Recognize the simple case where Expr is an object reference
              --  and the case statement is directly preceded by an
--- 4190,4196 ----
           --  generated case statements).
  
           if Validity_Check_Default
!            and then not Predicates_Ignored_In_Codegen (Etype (Expr))
           then
              --  Recognize the simple case where Expr is an object reference
              --  and the case statement is directly preceded by an
*************** package body Exp_Ch5 is
*** 4378,4384 ****
              --  predicate, and there is no Others choice, Constraint_Error
              --  must be raised (RM 4.5.7 (21/3) and 5.4 (13)).
  
!             if Predicates_Ignored (Etype (Expr)) then
                 declare
                    Except  : constant Node_Id :=
                                Make_Raise_Constraint_Error (Loc,
--- 4365,4371 ----
              --  predicate, and there is no Others choice, Constraint_Error
              --  must be raised (RM 4.5.7 (21/3) and 5.4 (13)).
  
!             if Predicates_Ignored_In_Codegen (Etype (Expr)) then
                 declare
                    Except  : constant Node_Id :=
                                Make_Raise_Constraint_Error (Loc,
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_ch6.adb gcc-16-20250914/gcc/ada/exp_ch6.adb
*** gcc-16-20250907/gcc/ada/exp_ch6.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_ch6.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Ch6 is
*** 1423,1435 ****
        Formal : Entity_Id;
  
     begin
-       pragma Assert (Nkind (Subp_Call) in N_Entry_Call_Statement
-                                         | N_Function_Call
-                                         | N_Procedure_Call_Statement);
-       pragma Assert (Extra_Formals_Known (Subp_Id)
-         or else not Expander_Active
-         or else Is_Unsupported_Extra_Actuals_Call (Subp_Call, Subp_Id));
- 
        --  In CodePeer_Mode, the tree for `'Elab_Spec` procedures will be
        --  malformed because GNAT does not perform the usual expansion that
        --  results in the importation of external elaboration procedure symbols.
--- 1423,1428 ----
*************** package body Exp_Ch6 is
*** 1447,1452 ****
--- 1440,1452 ----
           return True;
        end if;
  
+       pragma Assert (Nkind (Subp_Call) in N_Entry_Call_Statement
+                                         | N_Function_Call
+                                         | N_Procedure_Call_Statement);
+       pragma Assert (Extra_Formals_Known (Subp_Id)
+         or else not Expander_Active
+         or else Is_Unsupported_Extra_Actuals_Call (Subp_Call, Subp_Id));
+ 
        Formal := First_Formal_With_Extras (Subp_Id);
        Actual := First_Actual (Subp_Call);
  
*************** package body Exp_Ch6 is
*** 2946,2952 ****
  
                   and then Predicate_Tests_On_Arguments (Subp)
                 then
!                   Append_To (Post_Call,
                      Make_Predicate_Check (Atyp, Actual));
                 end if;
              end By_Ref_Predicate_Check;
--- 2946,2956 ----
  
                   and then Predicate_Tests_On_Arguments (Subp)
                 then
!                   --  If Actual is a view conversion to a by-copy subtype
!                   --  that is subject to a predicate, then the predicate
!                   --  check must precede copy-back. So Prepend.
! 
!                   Prepend_To (Post_Call,
                      Make_Predicate_Check (Atyp, Actual));
                 end if;
              end By_Ref_Predicate_Check;
*************** package body Exp_Ch6 is
*** 4027,4033 ****
  
        procedure Check_Subprogram_Variant;
        --  Emit a call to the internally generated procedure with checks for
!       --  aspect Subprogram_Variant, if present and enabled.
  
        function Inherited_From_Formal (S : Entity_Id) return Entity_Id;
        --  Within an instance, a type derived from an untagged formal derived
--- 4031,4038 ----
  
        procedure Check_Subprogram_Variant;
        --  Emit a call to the internally generated procedure with checks for
!       --  aspect Subprogram_Variant, if present and enabled. Multiple calls are
!       --  added when the subprogram was using Assertion_Levels.
  
        function Inherited_From_Formal (S : Entity_Id) return Entity_Id;
        --  Within an instance, a type derived from an untagged formal derived
*************** package body Exp_Ch6 is
*** 4312,4318 ****
  
           --  Local variables
  
!          Variant_Prag : constant Node_Id :=
             Get_Pragma (Current_Scope, Pragma_Subprogram_Variant);
  
           New_Call     : Node_Id;
--- 4317,4323 ----
  
           --  Local variables
  
!          Variant_Prag : Node_Id :=
             Get_Pragma (Current_Scope, Pragma_Subprogram_Variant);
  
           New_Call     : Node_Id;
*************** package body Exp_Ch6 is
*** 4320,4327 ****
           Variant_Proc : Entity_Id;
  
        begin
!          if Present (Variant_Prag) and then Is_Checked (Variant_Prag) then
! 
              Pragma_Arg1 :=
                Expression (First (Pragma_Argument_Associations (Variant_Prag)));
  
--- 4325,4334 ----
           Variant_Proc : Entity_Id;
  
        begin
!          while Present (Variant_Prag)
!            and then Is_Checked (Variant_Prag)
!            and then Pragma_Name (Variant_Prag) = Name_Subprogram_Variant
!          loop
              Pragma_Arg1 :=
                Expression (First (Pragma_Argument_Associations (Variant_Prag)));
  
*************** package body Exp_Ch6 is
*** 4330,4341 ****
              --  run-time execution.
  
              if Nkind (Pragma_Arg1) = N_Aggregate then
!                pragma Assert
!                  (Chars
!                     (First
!                       (Choices
!                          (First (Component_Associations (Pragma_Arg1))))) =
!                   Name_Structural);
                 return;
              end if;
  
--- 4337,4349 ----
              --  run-time execution.
  
              if Nkind (Pragma_Arg1) = N_Aggregate then
!                pragma
!                  Assert
!                    (Chars
!                       (First
!                          (Choices
!                             (First (Component_Associations (Pragma_Arg1)))))
!                       = Name_Structural);
                 return;
              end if;
  
*************** package body Exp_Ch6 is
*** 4345,4351 ****
              Variant_Proc := Entity (Pragma_Arg1);
  
              New_Call :=
!               Make_Procedure_Call_Statement (Loc,
                   Name                   =>
                     New_Occurrence_Of (Variant_Proc, Loc),
                   Parameter_Associations =>
--- 4353,4360 ----
              Variant_Proc := Entity (Pragma_Arg1);
  
              New_Call :=
!               Make_Procedure_Call_Statement
!                 (Loc,
                   Name                   =>
                     New_Occurrence_Of (Variant_Proc, Loc),
                   Parameter_Associations =>
*************** package body Exp_Ch6 is
*** 4353,4361 ****
  
              Insert_Action (Call_Node, New_Call);
  
!             pragma Assert (Etype (New_Call) /= Any_Type
!               or else Serious_Errors_Detected > 0);
!          end if;
        end Check_Subprogram_Variant;
  
        ---------------------------
--- 4362,4374 ----
  
              Insert_Action (Call_Node, New_Call);
  
!             pragma
!               Assert
!                 (Etype (New_Call) /= Any_Type
!                    or else Serious_Errors_Detected > 0);
! 
!             Variant_Prag := Next_Pragma (Variant_Prag);
!          end loop;
        end Check_Subprogram_Variant;
  
        ---------------------------
*************** package body Exp_Ch6 is
*** 4707,4713 ****
        --  of init procs were added when they were built.
  
        if not Extra_Formals_Known (Subp) then
!          Create_Extra_Formals (Subp);
  
           --  If the previous call to Create_Extra_Formals could not add the
           --  extra formals, then we must defer adding the extra actuals of
--- 4720,4726 ----
        --  of init procs were added when they were built.
  
        if not Extra_Formals_Known (Subp) then
!          Create_Extra_Formals (Subp, Related_Nod => Call_Node);
  
           --  If the previous call to Create_Extra_Formals could not add the
           --  extra formals, then we must defer adding the extra actuals of
*************** package body Exp_Ch6 is
*** 4776,4782 ****
          and then Extra_Formals_Known (Subp)
          and then Present (Extra_Formals (Subp))
        then
!          Create_Extra_Actuals (N);
  
           --  Mark the call as an expanded build-in-place call; required
           --  to avoid adding the extra formals twice.
--- 4789,4795 ----
          and then Extra_Formals_Known (Subp)
          and then Present (Extra_Formals (Subp))
        then
!          Create_Extra_Actuals (Call_Node);
  
           --  Mark the call as an expanded build-in-place call; required
           --  to avoid adding the extra formals twice.
*************** package body Exp_Ch6 is
*** 5219,5228 ****
           null;
  
        elsif not Defer_Extra_Actuals then
!          Create_Extra_Formals (Subp);
  
           if Extra_Formals_Known (Subp) then
!             Create_Extra_Actuals (N);
           end if;
        end if;
  
--- 5232,5241 ----
           null;
  
        elsif not Defer_Extra_Actuals then
!          Create_Extra_Formals (Subp, Related_Nod => Call_Node);
  
           if Extra_Formals_Known (Subp) then
!             Create_Extra_Actuals (Call_Node);
           end if;
        end if;
  
*************** package body Exp_Ch6 is
*** 5238,5244 ****
        --  the current subprogram is called.
  
        if Is_Subprogram (Subp)
!         and then not Is_Ignored_Ghost_Entity (Subp)
          and then Same_Or_Aliased_Subprograms (Subp, Current_Scope)
        then
           Check_Subprogram_Variant;
--- 5251,5257 ----
        --  the current subprogram is called.
  
        if Is_Subprogram (Subp)
!         and then not Is_Ignored_Ghost_Entity_In_Codegen (Subp)
          and then Same_Or_Aliased_Subprograms (Subp, Current_Scope)
        then
           Check_Subprogram_Variant;
*************** package body Exp_Ch6 is
*** 7265,7271 ****
  
        elsif (not Needs_Secondary_Stack (R_Type)
                and then not Is_Secondary_Stack_Thunk (Scope_Id))
!         or else Is_Ignored_Ghost_Entity (Scope_Id)
        then
           --  Mutable records with variable-length components are not returned
           --  on the sec-stack, so we need to make sure that the back end will
--- 7278,7284 ----
  
        elsif (not Needs_Secondary_Stack (R_Type)
                and then not Is_Secondary_Stack_Thunk (Scope_Id))
!         or else Is_Ignored_Ghost_Entity_In_Codegen (Scope_Id)
        then
           --  Mutable records with variable-length components are not returned
           --  on the sec-stack, so we need to make sure that the back end will
*************** package body Exp_Ch6 is
*** 10265,10275 ****
                 begin
                    pragma Assert (Check_BIP_Actuals (Call_Node, Subp));
  
!                   --  Build-in-place function calls return their result by
!                   --  reference.
  
!                   pragma Assert (not Is_Build_In_Place_Function (Subp)
!                     or else Returns_By_Ref (Subp));
                 end;
  
              --  Skip generic bodies
--- 10278,10295 ----
                 begin
                    pragma Assert (Check_BIP_Actuals (Call_Node, Subp));
  
!                   --  Do not attempt to verify the return type in CodePeer_Mode
!                   --  as CodePeer_Mode is missing some expansion code that
!                   --  results in trees that would be considered malformed for
!                   --  GCC but aren't for GNAT2SCIL.
  
!                   if not CodePeer_Mode then
!                     --  Build-in-place function calls return their result by
!                     --  reference.
! 
!                      pragma Assert (not Is_Build_In_Place_Function (Subp)
!                        or else Returns_By_Ref (Subp));
!                   end if;
                 end;
  
              --  Skip generic bodies
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_ch7.adb gcc-16-20250914/gcc/ada/exp_ch7.adb
*** gcc-16-20250907/gcc/ada/exp_ch7.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_ch7.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Ch7 is
*** 2429,2435 ****
              --  Do not inspect an ignored Ghost package body because all
              --  code found within will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity (Defining_Entity (Decl)) then
                 null;
  
              elsif Ekind (Corresponding_Spec (Decl)) /= E_Generic_Package then
--- 2429,2435 ----
              --  Do not inspect an ignored Ghost package body because all
              --  code found within will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity_In_Codegen (Defining_Entity (Decl)) then
                 null;
  
              elsif Ekind (Corresponding_Spec (Decl)) /= E_Generic_Package then
*************** package body Exp_Ch7 is
*** 2507,2513 ****
                 --  Ignored Ghost types do not need any cleanup actions because
                 --  they will not appear in the final tree.
  
!                if Is_Ignored_Ghost_Entity (Typ) then
                    null;
  
                 elsif Is_Tagged_Type (Typ)
--- 2507,2513 ----
                 --  Ignored Ghost types do not need any cleanup actions because
                 --  they will not appear in the final tree.
  
!                if Is_Ignored_Ghost_Entity_In_Codegen (Typ) then
                    null;
  
                 elsif Is_Tagged_Type (Typ)
*************** package body Exp_Ch7 is
*** 2553,2559 ****
                 --  Ignored Ghost objects do not need any cleanup actions
                 --  because they will not appear in the final tree.
  
!                elsif Is_Ignored_Ghost_Entity (Obj_Id) then
                    null;
  
                 --  Conversely, if one of the above cases created a Master_Node,
--- 2553,2559 ----
                 --  Ignored Ghost objects do not need any cleanup actions
                 --  because they will not appear in the final tree.
  
!                elsif Is_Ignored_Ghost_Entity_In_Codegen (Obj_Id) then
                    null;
  
                 --  Conversely, if one of the above cases created a Master_Node,
*************** package body Exp_Ch7 is
*** 2655,2661 ****
                 --  Freeze nodes for ignored Ghost types do not need cleanup
                 --  actions because they will never appear in the final tree.
  
!                if Is_Ignored_Ghost_Entity (Typ) then
                    null;
  
                 elsif (Is_Access_Object_Type (Typ)
--- 2655,2661 ----
                 --  Freeze nodes for ignored Ghost types do not need cleanup
                 --  actions because they will never appear in the final tree.
  
!                if Is_Ignored_Ghost_Entity_In_Codegen (Typ) then
                    null;
  
                 elsif (Is_Access_Object_Type (Typ)
*************** package body Exp_Ch7 is
*** 2680,2686 ****
                 --  Do not inspect an ignored Ghost package because all code
                 --  found within will not appear in the final tree.
  
!                if Is_Ignored_Ghost_Entity (Pack_Id) then
                    null;
  
                 elsif Ekind (Pack_Id) /= E_Generic_Package then
--- 2680,2686 ----
                 --  Do not inspect an ignored Ghost package because all code
                 --  found within will not appear in the final tree.
  
!                if Is_Ignored_Ghost_Entity_In_Codegen (Pack_Id) then
                    null;
  
                 elsif Ekind (Pack_Id) /= E_Generic_Package then
*************** package body Exp_Ch7 is
*** 5281,5287 ****
              --  Ignored Ghost objects do not need any cleanup actions because
              --  they will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity (Obj_Id) then
                 return;
              end if;
  
--- 5281,5287 ----
              --  Ignored Ghost objects do not need any cleanup actions because
              --  they will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity_In_Codegen (Obj_Id) then
                 return;
              end if;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_ch9.adb gcc-16-20250914/gcc/ada/exp_ch9.adb
*** gcc-16-20250907/gcc/ada/exp_ch9.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_ch9.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Ch9 is
*** 4686,4692 ****
        --  by a missing activation chain entity; also skip generating it when
        --  it is a ghost entity.
  
!       if No (Chain) or else Is_Ignored_Ghost_Entity (Chain) then
           return;
  
        --  The availability of the activation chain entity does not ensure
--- 4686,4692 ----
        --  by a missing activation chain entity; also skip generating it when
        --  it is a ghost entity.
  
!       if No (Chain) or else Is_Ignored_Ghost_Entity_In_Codegen (Chain) then
           return;
  
        --  The availability of the activation chain entity does not ensure
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_disp.adb gcc-16-20250914/gcc/ada/exp_disp.adb
*** gcc-16-20250907/gcc/ada/exp_disp.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_disp.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Disp is
*** 971,977 ****
           pragma Assert (Is_Frozen (Typ));
  
           if Extra_Formals_Known (Subp) then
!             Create_Extra_Formals (Subp_Typ);
  
           --  Extra formals were previously deferred
  
--- 971,977 ----
           pragma Assert (Is_Frozen (Typ));
  
           if Extra_Formals_Known (Subp) then
!             Create_Extra_Formals (Subp_Typ, Related_Nod => Call_Node);
  
           --  Extra formals were previously deferred
  
*************** package body Exp_Disp is
*** 6056,6062 ****
                      --  Skip ignored Ghost subprograms as those will be removed
                      --  from the executable.
  
!                     and then not Is_Ignored_Ghost_Entity (E)
                    then
                       pragma Assert
                         (UI_To_Int (DT_Position (Prim)) <= Nb_Prim);
--- 6056,6062 ----
                      --  Skip ignored Ghost subprograms as those will be removed
                      --  from the executable.
  
!                     and then not Is_Ignored_Ghost_Entity_In_Codegen (E)
                    then
                       pragma Assert
                         (UI_To_Int (DT_Position (Prim)) <= Nb_Prim);
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_prag.adb gcc-16-20250914/gcc/ada/exp_prag.adb
*** gcc-16-20250907/gcc/ada/exp_prag.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_prag.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Prag is
*** 191,198 ****
           when Pragma_Suppress_Initialization =>
              Expand_Pragma_Suppress_Initialization (N);
  
!          --  All other pragmas need no expander action (includes
!          --  Unknown_Pragma).
  
           when others => null;
        end case;
--- 191,197 ----
           when Pragma_Suppress_Initialization =>
              Expand_Pragma_Suppress_Initialization (N);
  
!          --  All other pragmas need no expander action
  
           when others => null;
        end case;
*************** package body Exp_Prag is
*** 1520,1526 ****
        is
           Cond  : Node_Id;
           Error : Node_Id;
! 
        begin
           --  Generate:
           --    Flag and then not Conseq
--- 1519,1525 ----
        is
           Cond  : Node_Id;
           Error : Node_Id;
!          Str   : String_Id;
        begin
           --  Generate:
           --    Flag and then not Conseq
*************** package body Exp_Prag is
*** 1540,1551 ****
           Store_String_Chars ("failed contract case at ");
           Store_String_Chars (Build_Location_String (Sloc (Conseq)));
  
           Error :=
             Make_Procedure_Call_Statement (Loc,
               Name                   =>
                 New_Occurrence_Of (RTE (RE_Raise_Assert_Failure), Loc),
               Parameter_Associations => New_List (
!                Make_String_Literal (Loc, End_String)));
  
           if No (Checks) then
              Checks :=
--- 1539,1555 ----
           Store_String_Chars ("failed contract case at ");
           Store_String_Chars (Build_Location_String (Sloc (Conseq)));
  
+          --  Store the string value as the call to RTE can cause a new unit to
+          --  be loaded which causes new strings to be created.
+ 
+          Str := End_String;
+ 
           Error :=
             Make_Procedure_Call_Statement (Loc,
               Name                   =>
                 New_Occurrence_Of (RTE (RE_Raise_Assert_Failure), Loc),
               Parameter_Associations => New_List (
!                Make_String_Literal (Loc, Str)));
  
           if No (Checks) then
              Checks :=
*************** package body Exp_Prag is
*** 2516,2521 ****
--- 2520,2526 ----
        Call         : Node_Id;
        Call_List    : List_Id;
        Call_Loc     : Source_Ptr;
+       Check_Prag   : Node_Id;
        Expr         : Node_Id;
        Loc          : Source_Ptr;
        Proc_Body    : Node_Id;
*************** package body Exp_Prag is
*** 2604,2609 ****
--- 2609,2628 ----
        --       pragma Check (Initial_Condition, <Expr>);
        --    end <Pack_Id>Initial_Condition;
  
+       Check_Prag :=
+         Make_Pragma
+           (Loc,
+            Chars                        => Name_Check,
+            Pragma_Argument_Associations =>
+              New_List
+                (Make_Pragma_Argument_Association
+                   (Loc,
+                    Expression =>
+                      Make_Identifier (Loc, Name_Initial_Condition)),
+                 Make_Pragma_Argument_Association
+                   (Loc, Expression => New_Copy_Tree (Expr))));
+       Copy_Assertion_Policy_Attributes (Check_Prag, IC_Prag);
+ 
        Proc_Body :=
          Make_Subprogram_Body (Loc,
            Specification              =>
*************** package body Exp_Prag is
*** 2611,2625 ****
            Declarations               => Empty_List,
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc,
!               Statements => New_List (
!                 Make_Pragma (Loc,
!                   Chars                        => Name_Check,
!                   Pragma_Argument_Associations => New_List (
!                     Make_Pragma_Argument_Association (Loc,
!                       Expression =>
!                         Make_Identifier (Loc, Name_Initial_Condition)),
!                     Make_Pragma_Argument_Association (Loc,
!                       Expression => New_Copy_Tree (Expr)))))));
  
        Append_To (Body_List, Proc_Body);
  
--- 2630,2636 ----
            Declarations               => Empty_List,
            Handled_Statement_Sequence =>
              Make_Handled_Sequence_Of_Statements (Loc,
!               Statements => New_List (Check_Prag)));
  
        Append_To (Body_List, Proc_Body);
  
*************** package body Exp_Prag is
*** 2943,2948 ****
--- 2954,2960 ----
                       Typ      => Expr_Typ,
                       Curr_Val => New_Occurrence_Of (Curr_Id, Loc),
                       Old_Val  => New_Occurrence_Of (Old_Id, Loc)))));
+          Copy_Assertion_Policy_Attributes (Prag, N);
  
           --  Generate:
           --    if Curr /= Old then
*************** package body Exp_Prag is
*** 3221,3226 ****
--- 3233,3243 ----
        --  Prev_Decl and is stored in this parameter for a next call to this
        --  routine. Is_Last is True when there are no more variants to process.
  
+       function Variants_Function_Name (Prag : Node_Id) return Name_Id;
+       --  The name of the variants function is either
+       --  * _variants: if no assertion level was associated with the pragma.
+       --  * _variants_<Assertion_Level> otherwise.
+ 
        ----------------------
        -- Formal_Param_Map --
        ----------------------
*************** package body Exp_Prag is
*** 3264,3274 ****
           Expr_Typ : constant Entity_Id  := Etype (Expr);
           Loc      : constant Source_Ptr := Sloc (Expr);
  
!          Old_Id    : Entity_Id;
!          Old_Decl  : Node_Id;
!          Curr_Id   : Entity_Id;
!          Curr_Decl : Node_Id;
!          Prag      : Node_Id;
  
        begin
           --  Create temporaries that store the old values of the associated
--- 3281,3291 ----
           Expr_Typ : constant Entity_Id  := Etype (Expr);
           Loc      : constant Source_Ptr := Sloc (Expr);
  
!          Old_Id     : Entity_Id;
!          Old_Decl   : Node_Id;
!          Curr_Id    : Entity_Id;
!          Curr_Decl  : Node_Id;
!          Check_Prag : Node_Id;
  
        begin
           --  Create temporaries that store the old values of the associated
*************** package body Exp_Prag is
*** 3308,3314 ****
           --  Generate:
           --    pragma Check (Variant, Curr <|> Old);
  
!          Prag :=
             Make_Pragma (Loc,
               Chars                        => Name_Check,
               Pragma_Argument_Associations => New_List (
--- 3325,3331 ----
           --  Generate:
           --    pragma Check (Variant, Curr <|> Old);
  
!          Check_Prag :=
             Make_Pragma (Loc,
               Chars                        => Name_Check,
               Pragma_Argument_Associations => New_List (
*************** package body Exp_Prag is
*** 3323,3328 ****
--- 3340,3346 ----
                       Typ      => Expr_Typ,
                       Curr_Val => New_Occurrence_Of (Curr_Id, Loc),
                       Old_Val  => New_Occurrence_Of (Old_Id, Loc)))));
+          Copy_Assertion_Policy_Attributes (Check_Prag, Prag);
  
           --  Generate:
           --    if Curr /= Old then
*************** package body Exp_Prag is
*** 3335,3341 ****
              --  pragma.
  
              if Is_Last then
!                If_Stmt := Prag;
              else
                 If_Stmt :=
                   Make_If_Statement (Loc,
--- 3353,3359 ----
              --  pragma.
  
              if Is_Last then
!                If_Stmt := Check_Prag;
              else
                 If_Stmt :=
                   Make_If_Statement (Loc,
*************** package body Exp_Prag is
*** 3343,3349 ****
                       Make_Op_Ne (Loc,
                         Left_Opnd  => New_Occurrence_Of (Curr_Id, Loc),
                         Right_Opnd => New_Occurrence_Of (Old_Id, Loc)),
!                    Then_Statements => New_List (Prag));
              end if;
  
              --  Generate:
--- 3361,3367 ----
                       Make_Op_Ne (Loc,
                         Left_Opnd  => New_Occurrence_Of (Curr_Id, Loc),
                         Right_Opnd => New_Occurrence_Of (Old_Id, Loc)),
!                    Then_Statements => New_List (Check_Prag));
              end if;
  
              --  Generate:
*************** package body Exp_Prag is
*** 3352,3358 ****
              --    end if;
  
           elsif Is_Last then
!             Set_Else_Statements (If_Stmt, New_List (Prag));
  
              --  Generate:
              --    elsif Curr /= Old then
--- 3370,3376 ----
              --    end if;
  
           elsif Is_Last then
!             Set_Else_Statements (If_Stmt, New_List (Check_Prag));
  
              --  Generate:
              --    elsif Curr /= Old then
*************** package body Exp_Prag is
*** 3369,3378 ****
                Make_Op_Ne (Loc,
                  Left_Opnd  => New_Occurrence_Of (Curr_Id, Loc),
                  Right_Opnd => New_Occurrence_Of (Old_Id, Loc)),
!               Then_Statements => New_List (Prag)));
           end if;
        end Process_Variant;
  
        --  Local variables
  
        Loc : constant Source_Ptr := Sloc (Prag);
--- 3387,3416 ----
                Make_Op_Ne (Loc,
                  Left_Opnd  => New_Occurrence_Of (Curr_Id, Loc),
                  Right_Opnd => New_Occurrence_Of (Old_Id, Loc)),
!               Then_Statements => New_List (Check_Prag)));
           end if;
        end Process_Variant;
  
+       ----------------------------
+       -- Variants_Function_Name --
+       ----------------------------
+ 
+       function Variants_Function_Name (Prag : Node_Id) return Name_Id is
+       begin
+          if Present (Pragma_Ghost_Assertion_Level (Prag))
+            and then Pragma_Ghost_Assertion_Level (Prag)
+                     /= Standard_Level_Default
+          then
+             Get_Name_String (Name_uVariants);
+             Add_Str_To_Name_Buffer ("_");
+             Get_Name_String_And_Append
+               (Chars (Pragma_Ghost_Assertion_Level (Prag)));
+             return Name_Enter;
+          else
+             return Name_uVariants;
+          end if;
+       end Variants_Function_Name;
+ 
        --  Local variables
  
        Loc : constant Source_Ptr := Sloc (Prag);
*************** package body Exp_Prag is
*** 3386,3391 ****
--- 3424,3430 ----
        Proc_Bod     : Node_Id;
        Proc_Decl    : Node_Id;
        Proc_Id      : Entity_Id;
+       Proc_Nam     : Name_Id;
        Proc_Spec    : Node_Id;
        Variant      : Node_Id;
  
*************** package body Exp_Prag is
*** 3411,3417 ****
        --  variant expressions captured at the start of subprogram with their
        --  values at the recursive call of the subprogram.
  
!       Proc_Id := Make_Defining_Identifier (Loc, Name_uVariants);
  
        Proc_Spec :=
          Make_Procedure_Specification
--- 3450,3458 ----
        --  variant expressions captured at the start of subprogram with their
        --  values at the recursive call of the subprogram.
  
!       Proc_Nam := Variants_Function_Name (Prag);
! 
!       Proc_Id := Make_Defining_Identifier (Loc, Proc_Nam);
  
        Proc_Spec :=
          Make_Procedure_Specification
diff -Nrcpad gcc-16-20250907/gcc/ada/exp_util.adb gcc-16-20250914/gcc/ada/exp_util.adb
*** gcc-16-20250907/gcc/ada/exp_util.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/exp_util.adb	Sun Sep 14 22:32:07 2025
*************** package body Exp_Util is
*** 1893,1904 ****
        -------------------
  
        procedure Add_DIC_Check
!         (DIC_Prag : Node_Id;
!          DIC_Expr : Node_Id;
!          Stmts    : in out List_Id)
        is
!          Loc : constant Source_Ptr := Sloc (DIC_Prag);
!          Nam : constant Name_Id    := Original_Aspect_Pragma_Name (DIC_Prag);
  
        begin
           --  The DIC pragma is ignored, nothing left to do
--- 1893,1903 ----
        -------------------
  
        procedure Add_DIC_Check
!         (DIC_Prag : Node_Id; DIC_Expr : Node_Id; Stmts : in out List_Id)
        is
!          Loc  : constant Source_Ptr := Sloc (DIC_Prag);
!          Nam  : constant Name_Id := Original_Aspect_Pragma_Name (DIC_Prag);
!          Prag : Node_Id;
  
        begin
           --  The DIC pragma is ignored, nothing left to do
*************** package body Exp_Util is
*** 1908,1928 ****
  
           --  Otherwise the DIC expression must be checked at run time.
           --  Generate:
! 
           --    pragma Check (<Nam>, <DIC_Expr>);
  
           else
!             Append_New_To (Stmts,
!               Make_Pragma (Loc,
!                 Pragma_Identifier            =>
!                   Make_Identifier (Loc, Name_Check),
  
!                 Pragma_Argument_Associations => New_List (
!                   Make_Pragma_Argument_Association (Loc,
!                     Expression => Make_Identifier (Loc, Nam)),
  
!                   Make_Pragma_Argument_Association (Loc,
!                     Expression => DIC_Expr))));
           end if;
  
           --  Add the pragma to the list of processed pragmas
--- 1907,1931 ----
  
           --  Otherwise the DIC expression must be checked at run time.
           --  Generate:
!          --
           --    pragma Check (<Nam>, <DIC_Expr>);
  
           else
!             Prag :=
!               Make_Pragma
!                 (Loc,
!                  Pragma_Identifier            =>
!                    Make_Identifier (Loc, Name_Check),
!                  Pragma_Argument_Associations =>
!                    New_List
!                      (Make_Pragma_Argument_Association
!                         (Loc, Expression => Make_Identifier (Loc, Nam)),
!                       Make_Pragma_Argument_Association
!                         (Loc, Expression => DIC_Expr)));
  
!             Copy_Assertion_Policy_Attributes (Prag, DIC_Prag);
  
!             Append_New_To (Stmts, Prag);
           end if;
  
           --  Add the pragma to the list of processed pragmas
*************** package body Exp_Util is
*** 2318,2323 ****
--- 2321,2327 ----
        DIC_Typ      : Entity_Id;
        Dummy_1      : Entity_Id;
        Dummy_2      : Entity_Id;
+       Prag         : Node_Id;
        Proc_Body    : Node_Id;
        Proc_Body_Id : Entity_Id;
        Proc_Decl    : Node_Id;
*************** package body Exp_Util is
*** 2464,2475 ****
        if Partial_DIC then
           pragma Assert (Present (Priv_Typ));
  
!          if Has_Own_DIC (Work_Typ) then  -- If we're testing this then maybe
!             Add_Own_DIC        -- we shouldn't be calling Find_DIC_Typ above???
!               (DIC_Prag => DIC_Prag,
!                DIC_Typ  => DIC_Typ,  -- Should this just be Work_Typ???
!                Obj_Id   => Obj_Id,
!                Stmts    => Stmts);
           end if;
  
        --  Otherwise, the "full" DIC procedure verifies the DICs inherited from
--- 2468,2490 ----
        if Partial_DIC then
           pragma Assert (Present (Priv_Typ));
  
!          if Has_Own_DIC (Work_Typ) then
!             --  If we're testing this then maybe
! 
!             Prag := DIC_Prag;
!             while Present (Prag)
!               and then Nkind (Prag) = N_Pragma
!               and then Pragma_Name (Prag) = Name_Default_Initial_Condition
!               and then (Prag = DIC_Prag
!                         or else From_Same_Pragma (Prag, DIC_Prag))
!             loop
!                Add_Own_DIC    -- we shouldn't be calling Find_DIC_Typ above???
!                  (DIC_Prag => Prag,
!                   DIC_Typ  => DIC_Typ,  -- Should this just be Work_Typ???
!                   Obj_Id   => Obj_Id,
!                   Stmts    => Stmts);
!                Next_Rep_Item (Prag);
!             end loop;
           end if;
  
        --  Otherwise, the "full" DIC procedure verifies the DICs inherited from
*************** package body Exp_Util is
*** 3229,3236 ****
           Ploc    : constant Source_Ptr := Sloc (Prag);
           Str_Arg : constant Node_Id    := Next (Next (First (Args)));
  
!          Assoc : List_Id;
!          Str   : String_Id;
  
        begin
           --  The invariant is ignored, nothing left to do
--- 3244,3252 ----
           Ploc    : constant Source_Ptr := Sloc (Prag);
           Str_Arg : constant Node_Id    := Next (Next (First (Args)));
  
!          Assoc      : List_Id;
!          Check_Prag : Node_Id;
!          Str        : String_Id;
  
        begin
           --  The invariant is ignored, nothing left to do
*************** package body Exp_Util is
*** 3273,3282 ****
              --  Generate:
              --    pragma Check (<Nam>, <Expr>, <Str>);
  
!             Append_New_To (Checks,
                Make_Pragma (Ploc,
!                 Chars                        => Name_Check,
!                 Pragma_Argument_Associations => Assoc));
           end if;
  
           --  Output an info message when inheriting an invariant and the
--- 3289,3302 ----
              --  Generate:
              --    pragma Check (<Nam>, <Expr>, <Str>);
  
!             Check_Prag :=
                Make_Pragma (Ploc,
!                  Chars                        => Name_Check,
!                  Pragma_Argument_Associations => Assoc);
! 
!             Copy_Assertion_Policy_Attributes (Check_Prag, Prag);
! 
!             Append_New_To (Checks, Check_Prag);
           end if;
  
           --  Output an info message when inheriting an invariant and the
*************** package body Exp_Util is
*** 13478,13484 ****
              --  Ignored Ghost types do not need any cleanup actions because
              --  they will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity (Typ) then
                 null;
  
              elsif Is_Tagged_Type (Typ)
--- 13498,13504 ----
              --  Ignored Ghost types do not need any cleanup actions because
              --  they will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity_In_Codegen (Typ) then
                 null;
  
              elsif Is_Tagged_Type (Typ)
*************** package body Exp_Util is
*** 13524,13530 ****
              --  Ignored Ghost objects do not need any cleanup actions because
              --  they will not appear in the final tree.
  
!             elsif Is_Ignored_Ghost_Entity (Obj_Id) then
                 null;
  
              --  Conversely, if one of the above cases created a Master_Node,
--- 13544,13550 ----
              --  Ignored Ghost objects do not need any cleanup actions because
              --  they will not appear in the final tree.
  
!             elsif Is_Ignored_Ghost_Entity_In_Codegen (Obj_Id) then
                 null;
  
              --  Conversely, if one of the above cases created a Master_Node,
*************** package body Exp_Util is
*** 13620,13626 ****
              --  Freeze nodes for ignored Ghost types do not need cleanup
              --  actions because they will never appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity (Typ) then
                 null;
  
              elsif ((Is_Access_Object_Type (Typ)
--- 13640,13646 ----
              --  Freeze nodes for ignored Ghost types do not need cleanup
              --  actions because they will never appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity_In_Codegen (Typ) then
                 null;
  
              elsif ((Is_Access_Object_Type (Typ)
*************** package body Exp_Util is
*** 13643,13649 ****
              --  Do not inspect an ignored Ghost package because all code found
              --  within will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity (Pack_Id) then
                 null;
  
              elsif Ekind (Pack_Id) /= E_Generic_Package
--- 13663,13669 ----
              --  Do not inspect an ignored Ghost package because all code found
              --  within will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity_In_Codegen (Pack_Id) then
                 null;
  
              elsif Ekind (Pack_Id) /= E_Generic_Package
*************** package body Exp_Util is
*** 13660,13666 ****
              --  Do not inspect an ignored Ghost package body because all code
              --  found within will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity (Defining_Entity (Decl)) then
                 null;
  
              elsif Ekind (Corresponding_Spec (Decl)) /= E_Generic_Package
--- 13680,13686 ----
              --  Do not inspect an ignored Ghost package body because all code
              --  found within will not appear in the final tree.
  
!             if Is_Ignored_Ghost_Entity_In_Codegen (Defining_Entity (Decl)) then
                 null;
  
              elsif Ekind (Corresponding_Spec (Decl)) /= E_Generic_Package
diff -Nrcpad gcc-16-20250907/gcc/ada/freeze.adb gcc-16-20250914/gcc/ada/freeze.adb
*** gcc-16-20250907/gcc/ada/freeze.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/freeze.adb	Sun Sep 14 22:32:07 2025
*************** package body Freeze is
*** 4685,4691 ****
  
           --  Declaring too big an array in disabled ghost code is OK
  
!          if Is_Array_Type (Typ) and then not Is_Ignored_Ghost_Entity (E) then
              Check_Large_Modular_Array (Typ);
           end if;
        end Freeze_Object_Declaration;
--- 4685,4693 ----
  
           --  Declaring too big an array in disabled ghost code is OK
  
!          if Is_Array_Type (Typ)
!            and then not Is_Ignored_Ghost_Entity_In_Codegen (E)
!          then
              Check_Large_Modular_Array (Typ);
           end if;
        end Freeze_Object_Declaration;
*************** package body Freeze is
*** 5180,5186 ****
                and then Convention (Desig) /= Convention_Protected
              then
                 Set_Is_Frozen (Desig);
!                Create_Extra_Formals (Desig);
              end if;
           end Check_Itype;
  
--- 5182,5188 ----
                and then Convention (Desig) /= Convention_Protected
              then
                 Set_Is_Frozen (Desig);
!                Create_Extra_Formals (Desig, Related_Nod => Rec);
              end if;
           end Check_Itype;
  
*************** package body Freeze is
*** 7149,7179 ****
                          Next_Index (Indx);
                       end loop;
  
!                      --  What we are looking for here is the situation where
!                      --  the RM_Size given would be exactly right if there was
!                      --  a pragma Pack, resulting in the component size being
!                      --  the RM_Size of the component type.
! 
!                      if RM_Size (E) = Num_Elmts * Rsiz then
! 
!                         --  For implicit packing mode, just set the component
!                         --  size and Freeze_Array_Type will do the rest.
  
!                         if Implicit_Packing then
!                            Set_Component_Size (Btyp, Rsiz);
  
!                         --  Otherwise give an error message, except that if the
!                         --  specified Size is zero, there is no need for pragma
!                         --  Pack. Note that size zero is not considered
!                         --  Addressable.
  
!                         elsif RM_Size (E) /= Uint_0 then
!                            Error_Msg_NE
!                              ("size given for& too small", SZ, E);
!                            Error_Msg_N -- CODEFIX
!                              ("\use explicit pragma Pack or use pragma "
!                               & "Implicit_Packing", SZ);
!                         end if;
                       end if;
                    end if;
                 end;
--- 7151,7180 ----
                          Next_Index (Indx);
                       end loop;
  
!                      --  In Implicit_Packing mode, if the specified RM_Size
!                      --  would be big enough if there were a pragma Pack,
!                      --  then set the component size as if there were Pack,
!                      --  and Freeze_Array_Type will do the rest.
  
!                      if Implicit_Packing
!                        and then RM_Size (E) >= Num_Elmts * Rsiz
!                      then
!                         Set_Component_Size (Btyp, Rsiz);
  
!                      --  Otherwise, if pragma Pack would result in exactly the
!                      --  right size, give an error message suggesting packing,
!                      --  except that if the specified Size is zero, there is no
!                      --  need for pragma Pack. Note that size zero is not
!                      --  considered Addressable.
  
!                      elsif RM_Size (E) = Num_Elmts * Rsiz
!                        and then RM_Size (E) /= Uint_0
!                      then
!                         Error_Msg_NE
!                           ("size given for& too small", SZ, E);
!                         Error_Msg_N -- CODEFIX
!                           ("\use explicit pragma Pack or use pragma "
!                            & "Implicit_Packing", SZ);
                       end if;
                    end if;
                 end;
*************** package body Freeze is
*** 7749,7755 ****
  
              --  Check restriction for standard storage pool
  
!             if No (Associated_Storage_Pool (E)) then
                 Check_Restriction (No_Standard_Storage_Pools, E);
              end if;
  
--- 7750,7763 ----
  
              --  Check restriction for standard storage pool
  
!             --  Skip this check when Etype (T) is unknown, since attribute
!             --  Associated_Storage_Pool is only available in the root type
!             --  of E, and in such case it cannot not be computed (thus
!             --  causing spurious errors).
! 
!             if Present (Etype (E))
!               and then No (Associated_Storage_Pool (E))
!             then
                 Check_Restriction (No_Standard_Storage_Pools, E);
              end if;
  
*************** package body Freeze is
*** 8786,8792 ****
                and then Nkind (Parent (N)) = N_Function_Call
                and then not Has_Foreign_Convention (Nam)
              then
!                Create_Extra_Formals (Nam);
              end if;
  
           when others =>
--- 8794,8800 ----
                and then Nkind (Parent (N)) = N_Function_Call
                and then not Has_Foreign_Convention (Nam)
              then
!                Create_Extra_Formals (Nam, Related_Nod => N);
              end if;
  
           when others =>
diff -Nrcpad gcc-16-20250907/gcc/ada/gcc-interface/Make-lang.in gcc-16-20250914/gcc/ada/gcc-interface/Make-lang.in
*** gcc-16-20250907/gcc/ada/gcc-interface/Make-lang.in	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gcc-interface/Make-lang.in	Sun Sep 14 22:32:07 2025
*************** GNAT_ADA_OBJS+= \
*** 532,538 ****
   ada/libgnat/s-carun8.o	\
   ada/libgnat/s-casuti.o \
   ada/libgnat/s-cautns.o \
-  ada/libgnat/s-crtl.o	\
   ada/libgnat/s-conca2.o	\
   ada/libgnat/s-conca3.o	\
   ada/libgnat/s-conca4.o	\
--- 532,537 ----
*************** GNAT_ADA_OBJS+= \
*** 542,547 ****
--- 541,547 ----
   ada/libgnat/s-conca8.o	\
   ada/libgnat/s-conca9.o	\
   ada/libgnat/s-crc32.o	\
+  ada/libgnat/s-crtl.o	\
   ada/libgnat/s-excdeb.o	\
   ada/libgnat/s-except.o	\
   ada/libgnat/s-excmac.o	\
*************** GNATBIND_OBJS +=  \
*** 690,696 ****
   ada/libgnat/g-cstyin.o   \
   ada/libgnat/g-hesora.o   \
   ada/libgnat/g-htable.o   \
!  ada/libgnat/i-c.o	      \
   ada/libgnat/i-cstrin.o   \
   ada/libgnat/interfac.o   \
   ada/libgnat/s-addope.o   \
--- 690,696 ----
   ada/libgnat/g-cstyin.o   \
   ada/libgnat/g-hesora.o   \
   ada/libgnat/g-htable.o   \
!  ada/libgnat/i-c.o        \
   ada/libgnat/i-cstrin.o   \
   ada/libgnat/interfac.o   \
   ada/libgnat/s-addope.o   \
*************** GNATBIND_OBJS +=  \
*** 707,712 ****
--- 707,713 ----
   ada/libgnat/s-conca8.o   \
   ada/libgnat/s-conca9.o   \
   ada/libgnat/s-crc32.o    \
+  ada/libgnat/s-crtl.o     \
   ada/libgnat/s-excdeb.o   \
   ada/libgnat/s-except.o   \
   ada/libgnat/s-excmac.o   \
diff -Nrcpad gcc-16-20250907/gcc/ada/gcc-interface/ada-tree.h gcc-16-20250914/gcc/ada/gcc-interface/ada-tree.h
*** gcc-16-20250907/gcc/ada/gcc-interface/ada-tree.h	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gcc-interface/ada-tree.h	Sun Sep 14 22:32:07 2025
*************** do {							 \
*** 184,192 ****
  /* True for a dummy type if TYPE appears in a profile.  */
  #define TYPE_DUMMY_IN_PROFILE_P(NODE) TYPE_LANG_FLAG_6 (NODE)
  
- /* True if objects of this type are guaranteed to be properly aligned.  */
- #define TYPE_ALIGN_OK(NODE) TYPE_LANG_FLAG_7 (NODE)
- 
  /* True for types that implement a packed array and for original packed array
     types.  */
  #define TYPE_IMPL_PACKED_ARRAY_P(NODE) \
--- 184,189 ----
diff -Nrcpad gcc-16-20250907/gcc/ada/gcc-interface/decl.cc gcc-16-20250914/gcc/ada/gcc-interface/decl.cc
*** gcc-16-20250907/gcc/ada/gcc-interface/decl.cc	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gcc-interface/decl.cc	Sun Sep 14 22:32:07 2025
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1388,1403 ****
  	      }
  	  }
  
! 	/* If we are at top level and this object is of variable size,
! 	   make the actual type a hidden pointer to the real type and
! 	   make the initializer be a memory allocation and initialization.
! 	   Likewise for objects we aren't defining (presumed to be
! 	   external references from other packages), but there we do
! 	   not set up an initialization.
! 
! 	   If the object's size overflows, make an allocator too, so that
! 	   Storage_Error gets raised.  Note that we will never free
! 	   such memory, so we presume it never will get allocated.  */
  	if (!allocatable_size_p (TYPE_SIZE_UNIT (gnu_type),
  				 global_bindings_p ()
  				 || !definition
--- 1388,1402 ----
  	      }
  	  }
  
! 	/* If we are at top level and this object is of variable size, make
! 	   the actual type a reference to the real type and the initializer
! 	   be a memory allocation and initialization.  Likewise for an object
! 	   that we aren't defining or is imported (presumed to be an external
! 	   reference from another package), but in this case we do not set up
! 	   an initialization.  Likewise if the object's size is constant but
! 	   too large.  In either case, this will also cause Storage_Error to
! 	   be raised if the size ends up overflowing.  Note that we will never
! 	   free such memory, but it will be allocated only at top level.  */
  	if (!allocatable_size_p (TYPE_SIZE_UNIT (gnu_type),
  				 global_bindings_p ()
  				 || !definition
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1411,1416 ****
--- 1410,1438 ----
  					|| !definition
  					|| static_flag)))
  	  {
+ 	    /* Give a warning if the size is constant.  */
+ 	    if ((TREE_CODE (TYPE_SIZE_UNIT (gnu_type)) == INTEGER_CST
+ 		 || (gnu_size && TREE_CODE (gnu_size) == INTEGER_CST))
+ 		&& definition)
+ 	      {
+ 		if (imported_p)
+ 		  {
+ 		    post_error
+ 		      ("??too large object cannot be imported directly",
+ 		       gnat_entity);
+ 		    post_error ("\\??indirect import will be used instead",
+ 				gnat_entity);
+ 		  }
+ 		else if (global_bindings_p () || static_flag)
+ 		  {
+ 		    post_error
+ 		      ("??too large object cannot be allocated statically",
+ 		       gnat_entity);
+ 		    post_error ("\\??dynamic allocation will be used instead",
+ 				gnat_entity);
+ 		  }
+ 	      }
+ 
  	    if (volatile_flag && !TYPE_VOLATILE (gnu_type))
  	      gnu_type = change_qualified_type (gnu_type, TYPE_QUAL_VOLATILE);
  	    gnu_type = build_reference_type (gnu_type);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1453,1473 ****
  		  }
  
  		/* Give a warning if the size is constant but too large.  */
! 		if (TREE_CODE (TYPE_SIZE_UNIT (gnu_alloc_type)) == INTEGER_CST)
! 		  {
! 		    if (valid_constant_size_p (TYPE_SIZE_UNIT (gnu_alloc_type)))
! 		      {
! 			post_error
! 			  ("??too large object cannot be allocated statically",
! 			   gnat_entity);
! 			post_error ("\\??dynamic allocation will be used instead",
! 				    gnat_entity);
! 		      }
! 
! 		    else
! 		      post_error ("??Storage_Error will be raised at run time!",
! 				  gnat_entity);
! 		  }
  
  		gnu_expr
  		  = build_allocator (gnu_alloc_type, gnu_expr, gnu_type,
--- 1475,1484 ----
  		  }
  
  		/* Give a warning if the size is constant but too large.  */
! 		if (TREE_CODE (TYPE_SIZE_UNIT (gnu_alloc_type)) == INTEGER_CST
! 		    && !valid_constant_size_p (TYPE_SIZE_UNIT (gnu_alloc_type)))
! 		  post_error ("??Storage_Error will be raised at run time!",
! 			      gnat_entity);
  
  		gnu_expr
  		  = build_allocator (gnu_alloc_type, gnu_expr, gnu_type,
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4821,4834 ****
  	{
  	  bool align_clause;
  
- 	  /* Record the property that objects of tagged types are guaranteed to
- 	     be properly aligned.  This is necessary because conversions to the
- 	     class-wide type are translated into conversions to the root type,
- 	     which can be less aligned than some of its derived types.  */
- 	  if (Is_Tagged_Type (gnat_entity)
- 	      || Is_Class_Wide_Equivalent_Type (gnat_entity))
- 	    TYPE_ALIGN_OK (gnu_type) = 1;
- 
  	  /* Record whether the type is passed by reference.  */
  	  if (is_by_ref && !VOID_TYPE_P (gnu_type))
  	    TYPE_BY_REFERENCE_P (gnu_type) = 1;
--- 4832,4837 ----
diff -Nrcpad gcc-16-20250907/gcc/ada/gcc-interface/gigi.h gcc-16-20250914/gcc/ada/gcc-interface/gigi.h
*** gcc-16-20250907/gcc/ada/gcc-interface/gigi.h	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gcc-interface/gigi.h	Sun Sep 14 22:32:07 2025
*************** enum standard_datatypes
*** 388,402 ****
    /* Function declaration node for run-time reallocation function.  */
    ADT_realloc_decl,
  
!   /* Function decl node for 64-bit multiplication with overflow checking.  */
    ADT_mulv64_decl,
  
!   /* Function decl node for 128-bit multiplication with overflow checking.  */
    ADT_mulv128_decl,
  
    /* Identifier for the name of the _Parent field in tagged record types.  */
    ADT_parent_name_id,
  
    /* Identifier for the name of the Not_Handled_By_Others field.  */
    ADT_not_handled_by_others_name_id,
  
--- 388,407 ----
    /* Function declaration node for run-time reallocation function.  */
    ADT_realloc_decl,
  
!   /* Function decl nodes for 64-bit multiplication with overflow checking.  */
    ADT_mulv64_decl,
+   ADT_uns_mulv64_decl,
  
!   /* Function decl nodes for 128-bit multiplication with overflow checking.  */
    ADT_mulv128_decl,
+   ADT_uns_mulv128_decl,
  
    /* Identifier for the name of the _Parent field in tagged record types.  */
    ADT_parent_name_id,
  
+   /* Identifier for the name of the _Tag field in tagged record types.  */
+   ADT_tag_name_id,
+ 
    /* Identifier for the name of the Not_Handled_By_Others field.  */
    ADT_not_handled_by_others_name_id,
  
*************** extern GTY(()) tree gnat_raise_decls_ext
*** 455,462 ****
--- 460,470 ----
  #define free_decl gnat_std_decls[(int) ADT_free_decl]
  #define realloc_decl gnat_std_decls[(int) ADT_realloc_decl]
  #define mulv64_decl gnat_std_decls[(int) ADT_mulv64_decl]
+ #define uns_mulv64_decl gnat_std_decls[(int) ADT_uns_mulv64_decl]
  #define mulv128_decl gnat_std_decls[(int) ADT_mulv128_decl]
+ #define uns_mulv128_decl gnat_std_decls[(int) ADT_uns_mulv128_decl]
  #define parent_name_id gnat_std_decls[(int) ADT_parent_name_id]
+ #define tag_name_id gnat_std_decls[(int) ADT_tag_name_id]
  #define not_handled_by_others_name_id \
  	  gnat_std_decls[(int) ADT_not_handled_by_others_name_id]
  #define reraise_zcx_decl gnat_std_decls[(int) ADT_reraise_zcx_decl]
*************** call_is_atomic_load (tree exp)
*** 1120,1125 ****
--- 1128,1155 ----
    return BUILT_IN_ATOMIC_LOAD_N <= code && code <= BUILT_IN_ATOMIC_LOAD_16;
  }
  
+ /* Return true if TYPE is a tagged type or a CW-equivalent type.  */
+ 
+ static inline bool
+ type_is_tagged_or_cw_equivalent (tree type)
+ {
+   if (!RECORD_OR_UNION_TYPE_P (type))
+     return false;
+ 
+   tree field = TYPE_FIELDS (type);
+   if (!field)
+     return false;
+ 
+   /* The tag can be put into the REP part of a record type.  */
+   if (DECL_INTERNAL_P (field))
+     return type_is_tagged_or_cw_equivalent (TREE_TYPE (field));
+ 
+   tree name = DECL_NAME (field);
+ 
+   /* See Exp_Util.Make_CW_Equivalent_Type for the CW-equivalent case.  */
+   return name == tag_name_id || name == parent_name_id;
+ }
+ 
  /* Return true if TYPE is padding a self-referential type.  */
  
  static inline bool
diff -Nrcpad gcc-16-20250907/gcc/ada/gcc-interface/misc.cc gcc-16-20250914/gcc/ada/gcc-interface/misc.cc
*** gcc-16-20250907/gcc/ada/gcc-interface/misc.cc	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gcc-interface/misc.cc	Sun Sep 14 22:32:07 2025
*************** gnat_get_array_descr_info (const_tree co
*** 837,842 ****
--- 837,844 ----
        if (TYPE_IMPL_PACKED_ARRAY_P (array_type)
            && TYPE_ORIGINAL_PACKED_ARRAY (array_type))
          array_type = TYPE_ORIGINAL_PACKED_ARRAY (array_type);
+       if (TREE_CODE (array_type) != ARRAY_TYPE)
+ 	return false;
  
        /* Shift back the address to get the address of the template.  */
        tree shift_amount
diff -Nrcpad gcc-16-20250907/gcc/ada/gcc-interface/trans.cc gcc-16-20250914/gcc/ada/gcc-interface/trans.cc
*** gcc-16-20250907/gcc/ada/gcc-interface/trans.cc	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gcc-interface/trans.cc	Sun Sep 14 22:32:07 2025
*************** gigi (Node_Id gnat_root,
*** 319,325 ****
  {
    Node_Id gnat_iter;
    Entity_Id gnat_literal;
!   tree t, ftype, int64_type;
    struct elab_info *info;
    int i;
  
--- 319,325 ----
  {
    Node_Id gnat_iter;
    Entity_Id gnat_literal;
!   tree t, ftype;
    struct elab_info *info;
    int i;
  
*************** gigi (Node_Id gnat_root,
*** 466,472 ****
  			   false, NULL, Empty);
  
    /* This is used for 64-bit multiplication with overflow checking.  */
!   int64_type = gnat_type_for_size (64, 0);
    mulv64_decl
      = create_subprog_decl (get_identifier ("__gnat_mulv64"), NULL_TREE,
  			   build_function_type_list (int64_type, int64_type,
--- 466,472 ----
  			   false, NULL, Empty);
  
    /* This is used for 64-bit multiplication with overflow checking.  */
!   tree int64_type = gnat_type_for_size (64, 0);
    mulv64_decl
      = create_subprog_decl (get_identifier ("__gnat_mulv64"), NULL_TREE,
  			   build_function_type_list (int64_type, int64_type,
*************** gigi (Node_Id gnat_root,
*** 475,480 ****
--- 475,489 ----
  			   false, NULL, Empty);
    strub_make_callable (mulv64_decl);
  
+   tree uint64_type = gnat_type_for_size (64, 1);
+   uns_mulv64_decl
+     = create_subprog_decl (get_identifier ("__gnat_uns_mulv64"), NULL_TREE,
+ 			   build_function_type_list (uint64_type, uint64_type,
+ 						     uint64_type, NULL_TREE),
+ 			   NULL_TREE, is_default, true, true, true, false,
+ 			   false, NULL, Empty);
+   strub_make_callable (uns_mulv64_decl);
+ 
    if (Enable_128bit_Types)
      {
        tree int128_type = gnat_type_for_size (128, 0);
*************** gigi (Node_Id gnat_root,
*** 487,497 ****
--- 496,520 ----
  			       NULL_TREE, is_default, true, true, true, false,
  			       false, NULL, Empty);
        strub_make_callable (mulv128_decl);
+ 
+       tree uint128_type = gnat_type_for_size (128, 1);
+       uns_mulv128_decl
+ 	= create_subprog_decl (get_identifier ("__gnat_uns_mulv128"), NULL_TREE,
+ 			       build_function_type_list (uint128_type,
+ 							 uint128_type,
+ 							 uint128_type,
+ 							 NULL_TREE),
+ 			       NULL_TREE, is_default, true, true, true, false,
+ 			       false, NULL, Empty);
+       strub_make_callable (uns_mulv128_decl);
      }
  
    /* Name of the _Parent field in tagged record types.  */
    parent_name_id = get_identifier (Get_Name_String (Name_uParent));
  
+   /* Name of the _Tag field in tagged record types.  */
+   tag_name_id = get_identifier (Get_Name_String (Name_uTag));
+ 
    /* Name of the Not_Handled_By_Others field in exception record types.  */
    not_handled_by_others_name_id = get_identifier ("not_handled_by_others");
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7284,7290 ****
  	  tree gnu_obj_type = TREE_TYPE (gnu_result_type);
  	  unsigned int oalign = TYPE_ALIGN (gnu_obj_type);
  
! 	  if (align != 0 && align < oalign && !TYPE_ALIGN_OK (gnu_obj_type))
  	    post_error_ne_tree_2
  	      ("??source alignment (^) '< alignment of & (^)",
  	       gnat_node, Designated_Type (Etype (gnat_node)),
--- 7307,7318 ----
  	  tree gnu_obj_type = TREE_TYPE (gnu_result_type);
  	  unsigned int oalign = TYPE_ALIGN (gnu_obj_type);
  
! 	  /* Skip tagged types because conversions to the class-wide type are
! 	     translated into conversions to the root type, which may be less
! 	     aligned than some of its derived types.  */
! 	  if (align != 0
! 	      && align < oalign
! 	      && !type_is_tagged_or_cw_equivalent (gnu_obj_type))
  	    post_error_ne_tree_2
  	      ("??source alignment (^) '< alignment of & (^)",
  	       gnat_node, Designated_Type (Etype (gnat_node)),
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7504,7515 ****
  	      gnu_max_shift = convert (gnu_type, gnu_max_shift);
  	  }
  
! 	/* For signed integer addition, subtraction and multiplication, do an
  	   overflow check if required.  */
! 	if (Do_Overflow_Check (gnat_node)
! 	    && (code == PLUS_EXPR || code == MINUS_EXPR || code == MULT_EXPR)
! 	    && !TYPE_UNSIGNED (gnu_type)
! 	    && !FLOAT_TYPE_P (gnu_type))
  	  gnu_result
  	    = build_binary_op_trapv (code, gnu_type, gnu_lhs, gnu_rhs,
  				     gnat_node);
--- 7532,7542 ----
  	      gnu_max_shift = convert (gnu_type, gnu_max_shift);
  	  }
  
! 	/* For integer addition, subtraction and multiplication, perform an
  	   overflow check if required.  */
! 	if ((code == PLUS_EXPR || code == MINUS_EXPR || code == MULT_EXPR)
! 	    && !FLOAT_TYPE_P (gnu_type)
! 	    && Do_Overflow_Check (gnat_node))
  	  gnu_result
  	    = build_binary_op_trapv (code, gnu_type, gnu_lhs, gnu_rhs,
  				     gnat_node);
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7590,7600 ****
        gnu_expr = gnat_to_gnu (Right_Opnd (gnat_node));
        gnu_result_type = get_unpadded_type (Etype (gnat_node));
  
!       /* For signed integer negation and absolute value, do an overflow check
  	 if required.  */
!       if (Do_Overflow_Check (gnat_node)
! 	  && !TYPE_UNSIGNED (gnu_result_type)
! 	  && !FLOAT_TYPE_P (gnu_result_type))
  	gnu_result
  	  = build_unary_op_trapv (gnu_codes[kind], gnu_result_type, gnu_expr,
  				  gnat_node);
--- 7617,7627 ----
        gnu_expr = gnat_to_gnu (Right_Opnd (gnat_node));
        gnu_result_type = get_unpadded_type (Etype (gnat_node));
  
!       /* For integer negation and absolute value, perform an overflow check
  	 if required.  */
!       if ((gnu_codes[kind] == NEGATE_EXPR || gnu_codes[kind] == ABS_EXPR)
! 	  && !FLOAT_TYPE_P (gnu_result_type)
! 	  && Do_Overflow_Check (gnat_node))
  	gnu_result
  	  = build_unary_op_trapv (gnu_codes[kind], gnu_result_type, gnu_expr,
  				  gnat_node);
*************** build_unary_op_trapv (enum tree_code cod
*** 9959,9970 ****
  {
    gcc_assert (code == NEGATE_EXPR || code == ABS_EXPR);
  
    operand = gnat_protect_expr (operand);
  
!   return emit_check (build_binary_op (EQ_EXPR, boolean_type_node,
! 				      operand, TYPE_MIN_VALUE (gnu_type)),
! 		     build_unary_op (code, gnu_type, operand),
! 		     CE_Overflow_Check_Failed, gnat_node);
  }
  
  /* Make a binary operation of kind CODE using build_binary_op, but guard
--- 9986,10010 ----
  {
    gcc_assert (code == NEGATE_EXPR || code == ABS_EXPR);
  
+   tree gnu_expr, check;
+ 
    operand = gnat_protect_expr (operand);
  
!   gnu_expr = build_unary_op (code, gnu_type, operand);
! 
!   if (TYPE_UNSIGNED (gnu_type))
!     {
!       if (code == ABS_EXPR)
! 	return gnu_expr;
!       else
! 	check = build_binary_op (NE_EXPR, boolean_type_node,
! 				 operand, TYPE_MIN_VALUE (gnu_type));
!     }
!   else
!     check = build_binary_op (EQ_EXPR, boolean_type_node,
! 			     operand, TYPE_MIN_VALUE (gnu_type));
! 
!   return emit_check (check, gnu_expr, CE_Overflow_Check_Failed, gnat_node);
  }
  
  /* Make a binary operation of kind CODE using build_binary_op, but guard
*************** build_binary_op_trapv (enum tree_code co
*** 10017,10037 ****
        /* Never inline a 64-bit mult for a 32-bit target, it's way too long.  */
        if (code == MULT_EXPR && precision == 64 && BITS_PER_WORD < 64)
  	{
! 	  tree int64 = gnat_type_for_size (64, 0);
  	  Check_Restriction_No_Dependence_On_System (Name_Arith_64, gnat_node);
! 	  return convert (gnu_type, build_call_n_expr (mulv64_decl, 2,
! 						       convert (int64, lhs),
! 						       convert (int64, rhs)));
  	}
  
        /* Likewise for a 128-bit mult and a 64-bit target.  */
        else if (code == MULT_EXPR && precision == 128 && BITS_PER_WORD < 128)
  	{
! 	  tree int128 = gnat_type_for_size (128, 0);
  	  Check_Restriction_No_Dependence_On_System (Name_Arith_128, gnat_node);
! 	  return convert (gnu_type, build_call_n_expr (mulv128_decl, 2,
! 						       convert (int128, lhs),
! 						       convert (int128, rhs)));
  	}
  
        enum internal_fn icode;
--- 10057,10085 ----
        /* Never inline a 64-bit mult for a 32-bit target, it's way too long.  */
        if (code == MULT_EXPR && precision == 64 && BITS_PER_WORD < 64)
  	{
! 	  tree int64 = gnat_type_for_size (64, TYPE_UNSIGNED (gnu_type));
  	  Check_Restriction_No_Dependence_On_System (Name_Arith_64, gnat_node);
! 	  return
! 	    convert (gnu_type, build_call_n_expr (TYPE_UNSIGNED (gnu_type)
! 						  ? uns_mulv64_decl
! 						  : mulv64_decl,
! 						  2,
! 						  convert (int64, lhs),
! 						  convert (int64, rhs)));
  	}
  
        /* Likewise for a 128-bit mult and a 64-bit target.  */
        else if (code == MULT_EXPR && precision == 128 && BITS_PER_WORD < 128)
  	{
! 	  tree int128 = gnat_type_for_size (128, TYPE_UNSIGNED (gnu_type));
  	  Check_Restriction_No_Dependence_On_System (Name_Arith_128, gnat_node);
! 	  return
! 	    convert (gnu_type, build_call_n_expr (TYPE_UNSIGNED (gnu_type)
! 						  ? uns_mulv128_decl
! 						  : mulv128_decl,
! 						  2,
! 						  convert (int128, lhs),
! 						  convert (int128, rhs)));
  	}
  
        enum internal_fn icode;
*************** build_binary_op_trapv (enum tree_code co
*** 10065,10071 ****
     }
  
    /* If one operand is a constant, we expose the overflow condition to enable
!      a subsequent simplication or even elimination.  */
    switch (code)
      {
      case PLUS_EXPR:
--- 10113,10119 ----
     }
  
    /* If one operand is a constant, we expose the overflow condition to enable
!      a subsequent simplification or even elimination.  */
    switch (code)
      {
      case PLUS_EXPR:
*************** build_binary_op_trapv (enum tree_code co
*** 10085,10105 ****
        break;
  
      case MINUS_EXPR:
!       if (TREE_CODE (lhs) == INTEGER_CST)
  	{
  	  sgn = tree_int_cst_sgn (lhs);
! 	  if (sgn > 0)
! 	    /* When lhs > 0, overflow when rhs < lhs - type_max.  */
  	    check = build_binary_op (LT_EXPR, boolean_type_node, rhs,
  				     build_binary_op (MINUS_EXPR, gnu_type,
  						      lhs, type_max));
! 	  else if (sgn < 0)
  	    /* When lhs < 0, overflow when rhs > lhs - type_min.  */
  	    check = build_binary_op (GT_EXPR, boolean_type_node, rhs,
  				     build_binary_op (MINUS_EXPR, gnu_type,
  						      lhs, type_min));
- 	  else
- 	    return gnu_expr;
  	}
        else
  	{
--- 10133,10156 ----
        break;
  
      case MINUS_EXPR:
!       if (TREE_CODE (lhs) == INTEGER_CST && TYPE_UNSIGNED (gnu_type))
! 	/* In the unsigned case, overflow when rhs > lhs - type_min.  */
! 	check = build_binary_op (GT_EXPR, boolean_type_node, rhs,
! 				 build_binary_op (MINUS_EXPR, gnu_type,
! 						  lhs, type_min));
!       else if (TREE_CODE (lhs) == INTEGER_CST)
  	{
  	  sgn = tree_int_cst_sgn (lhs);
! 	  if (sgn >= 0)
! 	    /* When lhs >= 0, overflow when rhs < lhs - type_max.  */
  	    check = build_binary_op (LT_EXPR, boolean_type_node, rhs,
  				     build_binary_op (MINUS_EXPR, gnu_type,
  						      lhs, type_max));
! 	  else
  	    /* When lhs < 0, overflow when rhs > lhs - type_min.  */
  	    check = build_binary_op (GT_EXPR, boolean_type_node, rhs,
  				     build_binary_op (MINUS_EXPR, gnu_type,
  						      lhs, type_min));
  	}
        else
  	{
*************** addressable_p (tree gnu_expr, tree gnu_t
*** 10569,10576 ****
  		     && (!STRICT_ALIGNMENT
  			 || TYPE_ALIGN (type) <= TYPE_ALIGN (inner_type)
  			 || TYPE_ALIGN (inner_type) >= BIGGEST_ALIGNMENT
! 			 || TYPE_ALIGN_OK (type)
! 			 || TYPE_ALIGN_OK (inner_type))))
  		&& addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE,
  				  compg));
        }
--- 10620,10627 ----
  		     && (!STRICT_ALIGNMENT
  			 || TYPE_ALIGN (type) <= TYPE_ALIGN (inner_type)
  			 || TYPE_ALIGN (inner_type) >= BIGGEST_ALIGNMENT
! 			 || type_is_tagged_or_cw_equivalent (type)
! 			 || type_is_tagged_or_cw_equivalent (inner_type))))
  		&& addressable_p (TREE_OPERAND (gnu_expr, 0), NULL_TREE,
  				  compg));
        }
diff -Nrcpad gcc-16-20250907/gcc/ada/gcc-interface/utils.cc gcc-16-20250914/gcc/ada/gcc-interface/utils.cc
*** gcc-16-20250907/gcc/ada/gcc-interface/utils.cc	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gcc-interface/utils.cc	Sun Sep 14 22:32:07 2025
*************** convert (tree type, tree expr)
*** 5139,5145 ****
       But don't do it if we are just annotating types since tagged types
       aren't fully laid out in this mode.  */
    else if (ecode == RECORD_TYPE && code == RECORD_TYPE
! 	   && TYPE_ALIGN_OK (etype) && TYPE_ALIGN_OK (type)
  	   && !type_annotate_only)
      {
        tree child_etype = etype;
--- 5139,5146 ----
       But don't do it if we are just annotating types since tagged types
       aren't fully laid out in this mode.  */
    else if (ecode == RECORD_TYPE && code == RECORD_TYPE
! 	   && type_is_tagged_or_cw_equivalent (etype)
! 	   && type_is_tagged_or_cw_equivalent (type)
  	   && !type_annotate_only)
      {
        tree child_etype = etype;
diff -Nrcpad gcc-16-20250907/gcc/ada/gcc-interface/utils2.cc gcc-16-20250914/gcc/ada/gcc-interface/utils2.cc
*** gcc-16-20250907/gcc/ada/gcc-interface/utils2.cc	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gcc-interface/utils2.cc	Sun Sep 14 22:32:07 2025
*************** build_binary_op (enum tree_code op_code,
*** 1041,1049 ****
  	}
  
        /* If a class-wide type may be involved, force use of the RHS type.  */
!       if ((TREE_CODE (right_type) == RECORD_TYPE
! 	   || TREE_CODE (right_type) == UNION_TYPE)
! 	  && TYPE_ALIGN_OK (right_type))
  	operation_type = right_type;
  
        /* If we are copying between padded objects with compatible types, use
--- 1041,1047 ----
  	}
  
        /* If a class-wide type may be involved, force use of the RHS type.  */
!       if (type_is_tagged_or_cw_equivalent (right_type))
  	operation_type = right_type;
  
        /* If we are copying between padded objects with compatible types, use
*************** build_binary_op (enum tree_code op_code,
*** 1118,1124 ****
  			     == TREE_CODE (operand_type (result))
  			     && TYPE_MODE (restype)
  				== TYPE_MODE (operand_type (result))))
! 			   || TYPE_ALIGN_OK (restype))))
  	    result = TREE_OPERAND (result, 0);
  
  	  else if (TREE_CODE (result) == VIEW_CONVERT_EXPR)
--- 1116,1122 ----
  			     == TREE_CODE (operand_type (result))
  			     && TYPE_MODE (restype)
  				== TYPE_MODE (operand_type (result))))
! 			   || type_is_tagged_or_cw_equivalent (restype))))
  	    result = TREE_OPERAND (result, 0);
  
  	  else if (TREE_CODE (result) == VIEW_CONVERT_EXPR)
diff -Nrcpad gcc-16-20250907/gcc/ada/gen_il-fields.ads gcc-16-20250914/gcc/ada/gen_il-fields.ads
*** gcc-16-20250907/gcc/ada/gen_il-fields.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gen_il-fields.ads	Sun Sep 14 22:32:07 2025
*************** package Gen_IL.Fields is
*** 72,77 ****
--- 72,78 ----
        Ancestor_Part,
        Atomic_Sync_Required,
        Array_Aggregate,
+       Aspect_Ghost_Assertion_Level,
        Aspect_On_Partial_View,
        Aspect_Rep_Item,
        Aspect_Specifications,
*************** package Gen_IL.Fields is
*** 336,343 ****
--- 337,346 ----
        Null_Statement,
        Object_Definition,
        Of_Present,
+       Original_Aspect,
        Original_Discriminant,
        Original_Entity,
+       Original_Pragma,
        Others_Discrete_Choices,
        Out_Present,
        Parameter_Associations,
*************** package Gen_IL.Fields is
*** 347,352 ****
--- 350,356 ----
        Parent_With,
        Position,
        Pragma_Argument_Associations,
+       Pragma_Ghost_Assertion_Level,
        Pragma_Identifier,
        Pragmas_After,
        Pragmas_Before,
*************** package Gen_IL.Fields is
*** 463,468 ****
--- 467,473 ----
        Can_Never_Be_Null,
        Can_Use_Internal_Rep,
        Checks_May_Be_Suppressed,
+       Child_Levels,
        Class_Postconditions,
        Class_Preconditions,
        Class_Preconditions_Subprogram,
*************** package Gen_IL.Fields is
*** 557,562 ****
--- 562,568 ----
        Full_View,
        Generic_Homonym,
        Generic_Renamings,
+       Ghost_Assertion_Level,
        Has_Aliased_Components,
        Has_Alignment_Clause,
        Has_All_Calls_Remote,
*************** package Gen_IL.Fields is
*** 651,656 ****
--- 657,663 ----
        Has_Thunks,
        Has_Unchecked_Union,
        Has_Unknown_Discriminants,
+       Has_Unsigned_Base_Range_Aspect,
        Has_Visible_Refinement,
        Has_Volatile_Components,
        Has_Xref_Entry,
*************** package Gen_IL.Fields is
*** 860,865 ****
--- 867,873 ----
        Overridden_Operation,
        Package_Instantiation,
        Packed_Array_Impl_Type,
+       Parent_Levels,
        Parent_Subtype,
        Part_Of_Constituents,
        Part_Of_References,
diff -Nrcpad gcc-16-20250907/gcc/ada/gen_il-gen-gen_entities.adb gcc-16-20250914/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-16-20250907/gcc/ada/gen_il-gen-gen_entities.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gen_il-gen-gen_entities.adb	Sun Sep 14 22:32:07 2025
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 63,68 ****
--- 63,69 ----
          Sm (First_Rep_Item, Node_Id),
          Sm (Freeze_Node, Node_Id),
          Sm (From_Limited_With, Flag),
+         Sm (Ghost_Assertion_Level, Node_Id),
          Sm (Has_Aliased_Components, Flag, Impl_Base_Type_Only),
          Sm (Has_Alignment_Clause, Flag),
          Sm (Has_All_Calls_Remote, Flag),
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 496,501 ****
--- 497,504 ----
          Sm (Has_Static_Predicate, Flag),
          Sm (Has_Static_Predicate_Aspect, Flag),
          Sm (Has_Unknown_Discriminants, Flag),
+         Sm (Has_Unsigned_Base_Range_Aspect, Flag,
+             Pre => "Is_Type (N)"),
          Sm (Interface_Name, Node_Id),
          Sm (Is_Abstract_Type, Flag),
          Sm (Is_Actual_Subtype, Flag),
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 1344,1349 ****
--- 1347,1363 ----
          Sm (SPARK_Pragma, Node_Id),
          Sm (SPARK_Pragma_Inherited, Flag)));
  
+    Cc (E_Assertion_Level, Entity_Kind,
+        --  An assertion level. Used to associate a level indicator to an
+        --  assertion like construct. Constructs assigned with a certain level
+        --  can be disabled through pragma Assertion_Policy. Levels can form a
+        --  hierarchy. A declaration of a level can include a list of levels
+        --  this level depends on known as the Parent_Levels. An opposite list
+        --  is also kept to store all the levels that depend on it known as the
+        --  Child_Levels.
+        (Sm (Child_Levels, Elist_Id),
+         Sm (Parent_Levels, Elist_Id)));
+ 
     --  Union types. These don't fit into the normal parent/child hierarchy
     --  above.
  
diff -Nrcpad gcc-16-20250907/gcc/ada/gen_il-gen-gen_nodes.adb gcc-16-20250914/gcc/ada/gen_il-gen-gen_nodes.adb
*** gcc-16-20250907/gcc/ada/gen_il-gen-gen_nodes.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gen_il-gen-gen_nodes.adb	Sun Sep 14 22:32:07 2025
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1127,1132 ****
--- 1127,1133 ----
         (Sy (Identifier, Node_Id, Default_Empty),
          Sy (Expression, Node_Id, Default_Empty),
          Sy (Class_Present, Flag),
+         Sm (Aspect_Ghost_Assertion_Level, Node_Id),
          Sm (Aspect_On_Partial_View, Flag),
          Sm (Aspect_Rep_Item, Node_Id),
          Sm (Aspect_Subprograms, Elist_Id),
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1137,1143 ****
          Sm (Is_Delayed_Aspect, Flag),
          Sm (Is_Disabled, Flag),
          Sm (Is_Ignored, Flag),
!         Sm (Next_Rep_Item, Node_Id)));
  
     Cc (N_Call_Marker, Node_Kind,
         (Sm (Is_Declaration_Level_Node, Flag),
--- 1138,1145 ----
          Sm (Is_Delayed_Aspect, Flag),
          Sm (Is_Disabled, Flag),
          Sm (Is_Ignored, Flag),
!         Sm (Next_Rep_Item, Node_Id),
!         Sm (Original_Aspect, Node_Id)));
  
     Cc (N_Call_Marker, Node_Kind,
         (Sm (Is_Declaration_Level_Node, Flag),
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1444,1449 ****
--- 1446,1453 ----
          Sm (Is_Ignored_Ghost_Pragma, Flag),
          Sm (Next_Pragma, Node_Id),
          Sm (Next_Rep_Item, Node_Id),
+         Sm (Original_Pragma, Node_Id),
+         Sm (Pragma_Ghost_Assertion_Level, Node_Id),
          Sm (Uneval_Old_Accept, Flag),
          Sm (Uneval_Old_Warn, Flag)));
  
diff -Nrcpad gcc-16-20250907/gcc/ada/gen_il-internals.adb gcc-16-20250914/gcc/ada/gen_il-internals.adb
*** gcc-16-20250907/gcc/ada/gen_il-internals.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gen_il-internals.adb	Sun Sep 14 22:32:07 2025
*************** package body Gen_IL.Internals is
*** 291,296 ****
--- 291,298 ----
              return "Has_RACW";
           when Has_SP_Choice =>
              return "Has_SP_Choice";
+          when Has_Unsigned_Base_Range_Aspect =>
+             return "Has_Unsigned_Base_Range_Aspect";
           when Ignore_SPARK_Mode_Pragmas =>
              return "Ignore_SPARK_Mode_Pragmas";
           when Is_CPP_Class =>
diff -Nrcpad gcc-16-20250907/gcc/ada/gen_il-types.ads gcc-16-20250914/gcc/ada/gen_il-types.ads
*** gcc-16-20250907/gcc/ada/gen_il-types.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gen_il-types.ads	Sun Sep 14 22:32:07 2025
*************** package Gen_IL.Types is
*** 445,450 ****
--- 445,451 ----
        --  Concrete entity types:
  
        E_Void,
+       E_Assertion_Level,
        E_Component,
        E_Constant,
        E_Discriminant,
diff -Nrcpad gcc-16-20250907/gcc/ada/ghost.adb gcc-16-20250914/gcc/ada/ghost.adb
*** gcc-16-20250907/gcc/ada/ghost.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/ghost.adb	Sun Sep 14 22:32:07 2025
*************** with Sem_Aux;        use Sem_Aux;
*** 38,49 ****
  with Sem_Disp;       use Sem_Disp;
  with Sem_Eval;       use Sem_Eval;
  with Sem_Prag;       use Sem_Prag;
- with Sem_Res;        use Sem_Res;
  with Sem_Util;       use Sem_Util;
  with Sinfo;          use Sinfo;
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
  with Snames;         use Snames;
  with Table;
  
  package body Ghost is
--- 38,49 ----
  with Sem_Disp;       use Sem_Disp;
  with Sem_Eval;       use Sem_Eval;
  with Sem_Prag;       use Sem_Prag;
  with Sem_Util;       use Sem_Util;
  with Sinfo;          use Sinfo;
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
  with Snames;         use Snames;
+ with Stand;          use Stand;
  with Table;
  
  package body Ghost is
*************** package body Ghost is
*** 63,80 ****
       Table_Increment      => Alloc.Ignored_Ghost_Nodes_Increment,
       Table_Name           => "Ignored_Ghost_Nodes");
  
     -----------------------
     -- Local subprograms --
     -----------------------
  
!    procedure Install_Ghost_Mode (Mode : Ghost_Mode_Type);
!    pragma Inline (Install_Ghost_Mode);
!    --  Install Ghost mode Mode as the Ghost mode in effect
  
!    procedure Install_Ghost_Region (Mode : Name_Id; N : Node_Id);
     pragma Inline (Install_Ghost_Region);
     --  Install a Ghost region comprised of mode Mode and ignored region start
!    --  node N.
  
     function Is_Subject_To_Ghost (N : Node_Id) return Boolean;
     --  Determine whether declaration or body N is subject to aspect or pragma
--- 63,111 ----
       Table_Increment      => Alloc.Ignored_Ghost_Nodes_Increment,
       Table_Name           => "Ignored_Ghost_Nodes");
  
+    ---------------------
+    -- Local variables --
+    ---------------------
+ 
+    Assertion_Level_Error_Msg : constant String :=
+      "incompatible assertion levels in effect";
+ 
+    Ghost_Policy_Error_Msg : constant String :=
+      "incompatible ghost policies in effect";
+ 
     -----------------------
     -- Local subprograms --
     -----------------------
  
!    function Assertion_Level_To_Name (Level : Entity_Id) return Name_Id;
!    --  Returns No_Name if there is no Level or the name of the Level.
  
!    procedure Check_Valid_Ghost_Declaration (N : Node_Id);
!    --  Check that the declaration for a Ghost node N has a valid
!    --  Assertion_Policy and a valid Assertion_Level.
! 
!    function Get_Ghost_Aspect (N : Node_Id) return Node_Id;
!    --  Returns the Ghost aspect for a given node if it has one.
! 
!    function Get_Ghost_Pragma (N : Node_Id) return Node_Id;
!    --  Return the Ghost pragma following this node.
! 
!    function Get_Ghost_Assertion_Level (N : Node_Id) return Entity_Id;
!    --  Returns the Assertion_Level entity if the node has a Ghost aspect and
!    --  the Ghost aspect is using an Assertion_Level.
! 
!    function Ghost_Policy_In_Effect (Id : Entity_Id) return Name_Id;
!    --  Returns the first Assertion Policy in place for either Ghost or the
!    --  Assertion_Level associated with Ghost aspect on the the declaration node
!    --  Decl.
! 
!    procedure Install_Ghost_Region
!      (Mode  : Name_Id;
!       N     : Node_Id;
!       Level : Entity_Id);
     pragma Inline (Install_Ghost_Region);
     --  Install a Ghost region comprised of mode Mode and ignored region start
!    --  node N and Level as the Assertion_Level that was associated with it.
  
     function Is_Subject_To_Ghost (N : Node_Id) return Boolean;
     --  Determine whether declaration or body N is subject to aspect or pragma
*************** package body Ghost is
*** 82,98 ****
     --  been analyzed yet, but the context needs to establish the "ghostness"
     --  of N.
  
     procedure Mark_Ghost_Declaration_Or_Body
!      (N    : Node_Id;
!       Mode : Name_Id);
     --  Mark the defining entity of declaration or body N as Ghost depending on
     --  mode Mode. Mark all formals parameters when N denotes a subprogram or a
!    --  body.
  
     procedure Record_Ignored_Ghost_Node (N : Node_Or_Entity_Id);
     --  Save ignored Ghost node or entity N in table Ignored_Ghost_Nodes for
     --  later elimination.
  
     ----------------------------
     -- Check_Ghost_Completion --
     ----------------------------
--- 113,196 ----
     --  been analyzed yet, but the context needs to establish the "ghostness"
     --  of N.
  
+    procedure Mark_And_Set_Ghost_Region (N : Node_Id; Id : Entity_Id);
+    --  Install a new ghost region for N based on the active policy applied for
+    --  Id. Additionally if the policy is ignored mark and set the node as an
+    --  ignored ghost region.
+ 
     procedure Mark_Ghost_Declaration_Or_Body
!      (N     : Node_Id;
!       Mode  : Name_Id;
!       Level : Entity_Id);
     --  Mark the defining entity of declaration or body N as Ghost depending on
     --  mode Mode. Mark all formals parameters when N denotes a subprogram or a
!    --  body. Additionally set level as the Ghost_Assertion_Level for all of
!    --  them.
  
     procedure Record_Ignored_Ghost_Node (N : Node_Or_Entity_Id);
     --  Save ignored Ghost node or entity N in table Ignored_Ghost_Nodes for
     --  later elimination.
  
+    ------------------------------
+    -- Assertion_Level_From_Arg --
+    ------------------------------
+ 
+    function Assertion_Level_From_Arg (Arg : Node_Id) return Entity_Id is
+       Expr  : constant Node_Id := Get_Pragma_Arg (Arg);
+       Level : Entity_Id;
+ 
+    begin
+       --  Aspect Ghost without an expression uses Standard_Level_Default
+ 
+       if No (Expr) then
+          return Standard_Level_Default;
+       end if;
+ 
+       --  Check if the expression matches a static boolean expression first
+ 
+       Preanalyze_And_Resolve_Without_Errors (Expr);
+       if Is_OK_Static_Expression (Expr) then
+          if Is_True (Expr_Value (Expr)) then
+             return Standard_Level_Default;
+          else
+             --  Ghost => False is considered to be non-ghost
+ 
+             return Empty;
+          end if;
+       end if;
+ 
+       --  Alternatively the argument could be an Assertion_Level
+ 
+       if Nkind (Expr) = N_Identifier then
+          Level := Get_Assertion_Level (Chars (Expr));
+          if Present (Level) then
+             --  The identifier resolved to an assertion level. Override the
+             --  Any_Id from a failed resolution in pre-analysis.
+ 
+             Set_Entity (Expr, Level);
+             return Level;
+          end if;
+       end if;
+ 
+       --  We are dealing with a malformed ghost argument.
+       --  An error will be emitted when the pragma is analyzed.
+ 
+       return Empty;
+    end Assertion_Level_From_Arg;
+ 
+    -----------------------------
+    -- Assertion_Level_To_Name --
+    -----------------------------
+ 
+    function Assertion_Level_To_Name (Level : Entity_Id) return Name_Id is
+    begin
+       if No (Level) then
+          return No_Name;
+       end if;
+ 
+       return Chars (Level);
+    end Assertion_Level_To_Name;
+ 
     ----------------------------
     -- Check_Ghost_Completion --
     ----------------------------
*************** package body Ghost is
*** 101,133 ****
       (Prev_Id  : Entity_Id;
        Compl_Id : Entity_Id)
     is
!       Policy : constant Name_Id := Policy_In_Effect (Name_Ghost);
  
     begin
        --  Nothing to do if one of the views is missing
  
        if No (Prev_Id) or else No (Compl_Id) then
!          null;
  
        --  The Ghost policy in effect at the point of declaration and at the
        --  point of completion must match (SPARK RM 6.9(16)).
  
!       elsif Is_Checked_Ghost_Entity (Prev_Id)
          and then Policy = Name_Ignore
        then
           Error_Msg_Sloc := Sloc (Compl_Id);
- 
-          Error_Msg_N ("incompatible ghost policies in effect", Prev_Id);
-          Error_Msg_N ("\& declared with ghost policy `Check`", Prev_Id);
           Error_Msg_N ("\& completed # with ghost policy `Ignore`", Prev_Id);
  
        elsif Is_Ignored_Ghost_Entity (Prev_Id)
          and then Policy = Name_Check
        then
           Error_Msg_Sloc := Sloc (Compl_Id);
- 
-          Error_Msg_N ("incompatible ghost policies in effect", Prev_Id);
-          Error_Msg_N ("\& declared with ghost policy `Ignore`", Prev_Id);
           Error_Msg_N ("\& completed # with ghost policy `Check`", Prev_Id);
        end if;
     end Check_Ghost_Completion;
--- 199,234 ----
       (Prev_Id  : Entity_Id;
        Compl_Id : Entity_Id)
     is
!       Policy : Name_Id;
  
     begin
        --  Nothing to do if one of the views is missing
  
        if No (Prev_Id) or else No (Compl_Id) then
!          return;
!       end if;
! 
!       Policy := Ghost_Policy_In_Effect (Prev_Id);
  
        --  The Ghost policy in effect at the point of declaration and at the
        --  point of completion must match (SPARK RM 6.9(16)).
  
!       if Is_Checked_Ghost_Entity (Prev_Id)
          and then Policy = Name_Ignore
        then
+          Error_Msg_N (Ghost_Policy_Error_Msg, Prev_Id);
+          Error_Msg_Sloc := Sloc (Prev_Id);
+          Error_Msg_N ("\& declared # with ghost policy `Check`", Prev_Id);
           Error_Msg_Sloc := Sloc (Compl_Id);
           Error_Msg_N ("\& completed # with ghost policy `Ignore`", Prev_Id);
  
        elsif Is_Ignored_Ghost_Entity (Prev_Id)
          and then Policy = Name_Check
        then
+          Error_Msg_N (Ghost_Policy_Error_Msg, Prev_Id);
+          Error_Msg_Sloc := Sloc (Prev_Id);
+          Error_Msg_N ("\& declared # with ghost policy `Ignore`", Prev_Id);
           Error_Msg_Sloc := Sloc (Compl_Id);
           Error_Msg_N ("\& completed # with ghost policy `Check`", Prev_Id);
        end if;
     end Check_Ghost_Completion;
*************** package body Ghost is
*** 175,181 ****
           --
           --    * Contain a reference to a Ghost entity
  
!          function Is_OK_Statement (Stmt : Node_Id) return Boolean;
           --  Determine whether node Stmt is a suitable context for a reference
           --  to a Ghost entity. To qualify as such, Stmt must either
           --
--- 276,283 ----
           --
           --    * Contain a reference to a Ghost entity
  
!          function Is_OK_Statement
!            (Stmt : Node_Id; Id : Entity_Id; Call_Arg : Node_Id) return Boolean;
           --  Determine whether node Stmt is a suitable context for a reference
           --  to a Ghost entity. To qualify as such, Stmt must either
           --
*************** package body Ghost is
*** 309,327 ****
  
           function Is_OK_Pragma (Prag : Node_Id; Id : Entity_Id) return Boolean
           is
!             procedure Check_Policies (Prag_Nam : Name_Id);
              --  Verify that the Ghost policy in effect at the point of the
!             --  declaration of Ghost entity Id (if present) is the same as the
!             --  assertion policy for pragma name Prag_Nam. Emit an error if
!             --  this is not the case.
  
              --------------------
              -- Check_Policies --
              --------------------
  
!             procedure Check_Policies (Prag_Nam : Name_Id) is
!                AP : constant Name_Id := Check_Kind (Prag_Nam);
! 
              begin
                 --  If the Ghost policy in effect at the point of the
                 --  declaration of Ghost entity Id is Ignore, then the assertion
--- 411,427 ----
  
           function Is_OK_Pragma (Prag : Node_Id; Id : Entity_Id) return Boolean
           is
!             procedure Check_Policies;
              --  Verify that the Ghost policy in effect at the point of the
!             --  declaration of Ghost entity Id (if present) is the same as
!             --  the assertion policy for the pragma. Emit an error if this
!             --  is not the case.
  
              --------------------
              -- Check_Policies --
              --------------------
  
!             procedure Check_Policies is
              begin
                 --  If the Ghost policy in effect at the point of the
                 --  declaration of Ghost entity Id is Ignore, then the assertion
*************** package body Ghost is
*** 329,346 ****
  
                 if Present (Id)
                   and then not Is_Checked_Ghost_Entity (Id)
!                  and then AP /= Name_Ignore
                 then
!                   Error_Msg_N
!                     ("incompatible ghost policies in effect",
!                      Ghost_Ref);
                    Error_Msg_NE
                      ("\ghost entity & has policy `Ignore`",
                       Ghost_Ref, Ghost_Id);
- 
-                   Error_Msg_Name_1 := AP;
                    Error_Msg_N
!                     ("\assertion expression has policy %", Ghost_Ref);
                 end if;
              end Check_Policies;
  
--- 429,443 ----
  
                 if Present (Id)
                   and then not Is_Checked_Ghost_Entity (Id)
!                  and then not Is_Ignored (Prag)
                 then
!                   Error_Msg_N (Ghost_Policy_Error_Msg, Ghost_Ref);
                    Error_Msg_NE
                      ("\ghost entity & has policy `Ignore`",
                       Ghost_Ref, Ghost_Id);
                    Error_Msg_N
!                     ("\assertion expression has policy `Check`",
!                      Ghost_Ref);
                 end if;
              end Check_Policies;
  
*************** package body Ghost is
*** 352,404 ****
           --  Start of processing for Is_OK_Pragma
  
           begin
!             if Nkind (Prag) = N_Pragma then
!                Prag_Id  := Get_Pragma_Id (Prag);
!                Prag_Nam := Original_Aspect_Pragma_Name (Prag);
  
!                --  A pragma that applies to a Ghost construct or specifies an
!                --  aspect of a Ghost entity is a Ghost pragma (SPARK RM 6.9(3))
  
!                if Is_Ghost_Pragma (Prag) then
!                   return True;
  
!                --  A pragma may not be analyzed, so that its Ghost status is
!                --  not determined yet, but it is guaranteed to be Ghost when
!                --  referencing a Ghost entity.
  
!                elsif Prag_Nam in Name_Annotate
!                                | Name_Compile_Time_Error
!                                | Name_Compile_Time_Warning
!                                | Name_Unreferenced
!                then
!                   return True;
  
!                --  An assertion expression pragma is Ghost when it contains a
!                --  reference to a Ghost entity (SPARK RM 6.9(10)), except for
!                --  predicate pragmas (SPARK RM 6.9(11)).
  
!                elsif Assertion_Expression_Pragma (Prag_Id)
!                  and then Prag_Id /= Pragma_Predicate
!                then
!                   --  Ensure that the assertion policy and the Ghost policy are
!                   --  compatible (SPARK RM 6.9(20)).
  
!                   Check_Policies (Prag_Nam);
!                   return True;
  
!                --  Several pragmas that may apply to a non-Ghost entity are
!                --  treated as Ghost when they contain a reference to a Ghost
!                --  entity (SPARK RM 6.9(11)).
  
!                elsif Prag_Nam in Name_Global
!                                | Name_Depends
!                                | Name_Initializes
!                                | Name_Refined_Global
!                                | Name_Refined_Depends
!                                | Name_Refined_State
!                then
!                   return True;
!                end if;
              end if;
  
              return False;
--- 449,508 ----
           --  Start of processing for Is_OK_Pragma
  
           begin
!             if Nkind (Prag) /= N_Pragma then
!                return False;
!             end if;
  
!             --  if the entitiy associated with the pragma is ignored then we do
!             --  not need to analyze the pragma.
  
!             if Is_Ignored_Ghost_Pragma (Prag) then
!                return True;
!             end if;
  
!             Prag_Id  := Get_Pragma_Id (Prag);
!             Prag_Nam := Original_Aspect_Pragma_Name (Prag);
  
!             --  A pragma may not be analyzed, so that its Ghost status is
!             --  not determined yet, but it is guaranteed to be Ghost when
!             --  referencing a Ghost entity.
  
!             if Suppressed_Ghost_Policy_Check_Pragma (Prag_Id) then
!                return True;
  
!             --  An assertion expression pragma is Ghost when it contains a
!             --  reference to a Ghost entity (SPARK RM 6.9(10)), except for
!             --  predicate pragmas (SPARK RM 6.9(11)).
  
!             elsif Is_Valid_Assertion_Kind (Prag_Nam)
!               and then Assertion_Expression_Pragma (Prag_Id)
!               and then Prag_Id /= Pragma_Predicate
!             then
!                --  Ensure that the assertion policy and the Ghost policy are
!                --  compatible (SPARK RM 6.9(20)).
  
!                Check_Policies;
!                return True;
  
!             --  A pragma that applies to a Ghost construct or specifies an
!             --  aspect of a Ghost entity is a Ghost pragma (SPARK RM 6.9(3))
! 
!             elsif Is_Ghost_Pragma (Prag) then
!                return True;
! 
!             --  Several pragmas that may apply to a non-Ghost entity are
!             --  treated as Ghost when they contain a reference to a Ghost
!             --  entity (SPARK RM 6.9(11)).
! 
!             elsif Prag_Nam
!                   in Name_Global
!                    | Name_Depends
!                    | Name_Initializes
!                    | Name_Refined_Global
!                    | Name_Refined_Depends
!                    | Name_Refined_State
!             then
!                return True;
              end if;
  
              return False;
*************** package body Ghost is
*** 408,425 ****
           -- Is_OK_Statement --
           ---------------------
  
!          function Is_OK_Statement (Stmt : Node_Id) return Boolean is
           begin
              --  An assignment statement is Ghost when the target is a Ghost
              --  entity.
  
              if Nkind (Stmt) = N_Assignment_Statement then
!                return Is_Ghost_Assignment (Stmt);
  
              --  A procedure call is Ghost when it calls a Ghost procedure
  
              elsif Nkind (Stmt) = N_Procedure_Call_Statement then
!                return Is_Ghost_Procedure_Call (Stmt);
  
              --  Special cases
  
--- 512,673 ----
           -- Is_OK_Statement --
           ---------------------
  
!          function Is_OK_Statement
!            (Stmt : Node_Id; Id : Entity_Id; Call_Arg : Node_Id) return Boolean
!          is
!             procedure Check_Assignment_Levels (Assignee : Entity_Id);
!             --  Check that a ghost entity on the RHS of the assignment is
!             --  assertion level dependent on the LHS.
! 
!             procedure Check_Procedure_Call_Policies (Callee : Entity_Id);
!             --  Check that
!             --  * the a checked call argument is not modified by an ignored
!             --    procedure call.
!             --  * the level of the modified call argument depends on the level
!             --    of the call.
! 
!             function Is_Modified_By_Call
!               (Call : Node_Id; Call_Arg : Node_Id; Callee : Entity_Id)
!                return Boolean;
!             --  Check that Call_Arg was used in the call and that the formal
!             --  for that argument was either out or in-out.
! 
!             -----------------------------
!             -- Check_Assignment_Levels --
!             -----------------------------
! 
!             procedure Check_Assignment_Levels (Assignee : Entity_Id) is
!                Assignee_Level : constant Entity_Id :=
!                  Ghost_Assertion_Level (Assignee);
!                Id_Level       : constant Entity_Id :=
!                  Ghost_Assertion_Level (Id);
!             begin
!                --  SPARK RM 6.9 (13) A ghost entity E shall only be referenced
!                --  within an assignment statement whose target is a ghost
!                --  variable that is assertion-level-dependent on E.
! 
!                if not Is_Assertion_Level_Dependent (Id_Level, Assignee_Level)
!                then
!                   Error_Msg_Sloc := Sloc (Ghost_Ref);
! 
!                   Error_Msg_N (Assertion_Level_Error_Msg, Ghost_Ref);
!                   Error_Msg_Name_1 := Chars (Id_Level);
!                   Error_Msg_NE ("\& has assertion level %", Ghost_Ref, Id);
!                   Error_Msg_Name_1 := Chars (Assignee_Level);
!                   Error_Msg_Node_2 := Assignee;
!                   Error_Msg_NE
!                     ("\& is modifying & with %", Ghost_Ref, Id);
!                   Error_Msg_Name_1 := Chars (Assignee_Level);
!                   Error_Msg_NE
!                     ("\assertion level of & should depend on %",
!                      Ghost_Ref,
!                      Id);
!                end if;
!             end Check_Assignment_Levels;
! 
!             -----------------------------------
!             -- Check_Procedure_Call_Policies --
!             -----------------------------------
! 
!             procedure Check_Procedure_Call_Policies (Callee : Entity_Id) is
!                Id_Level  : constant Entity_Id := Ghost_Assertion_Level (Id);
!                Id_Policy : constant Name_Id := Ghost_Policy_In_Effect (Id);
! 
!                Call_Level  : Entity_Id;
!                Call_Policy : Name_Id;
!             begin
!                if No (Callee) then
!                   return;
!                end if;
! 
!                --  Checks apply only if we are processing a call argument that
!                --  is modified by the call.
! 
!                if No (Call_Arg)
!                  or else not Is_Modified_By_Call (Stmt, Call_Arg, Callee)
!                then
!                   return;
!                end if;
! 
!                Call_Policy := Ghost_Policy_In_Effect (Callee);
!                Call_Level := Ghost_Assertion_Level (Callee);
! 
!                if Id_Policy = Name_Check
!                  and then Call_Policy = Name_Ignore
!                then
!                   Error_Msg_Sloc := Sloc (Ghost_Ref);
!                   Error_Msg_N (Ghost_Policy_Error_Msg, Ghost_Ref);
!                   Error_Msg_NE ("\& has ghost policy `Check`", Ghost_Ref, Id);
!                   Error_Msg_NE
!                     ("\& is modified # by a procedure with `Ignore`",
!                      Ghost_Ref,
!                      Id);
!                end if;
! 
!                if not Is_Assertion_Level_Dependent (Id_Level, Call_Level) then
!                   Error_Msg_Sloc := Sloc (Ghost_Ref);
! 
!                   Error_Msg_N (Assertion_Level_Error_Msg, Ghost_Ref);
!                   Error_Msg_Name_1 := Chars (Id_Level);
!                   Error_Msg_NE ("\& has assertion level %", Ghost_Ref, Id);
!                   Error_Msg_Name_1 := Chars (Call_Level);
!                   Error_Msg_NE
!                     ("\& is modified # by a procedure with %", Ghost_Ref, Id);
!                   Error_Msg_Name_1 := Chars (Call_Level);
!                   Error_Msg_NE
!                     ("\assertion level of & should depend on %",
!                      Ghost_Ref,
!                      Id);
!                end if;
!             end Check_Procedure_Call_Policies;
! 
!             -------------------------
!             -- Is_Modified_By_Call --
!             -------------------------
! 
!             function Is_Modified_By_Call
!               (Call : Node_Id; Call_Arg : Node_Id; Callee : Entity_Id)
!                return Boolean
!             is
!                Form : Node_Id;
!                Act  : Node_Id;
!             begin
!                Act := First_Actual (Call);
!                Form := First_Formal (Callee);
! 
!                while Present (Form) and then Present (Act) loop
!                   if Act = Call_Arg then
!                      return
!                        Ekind (Form) in E_Out_Parameter | E_In_Out_Parameter;
!                   end if;
! 
!                   Next_Formal (Form);
!                   Next_Actual (Act);
!                end loop;
! 
!                return False;
!             end Is_Modified_By_Call;
! 
!          --  Start of processing for Is_OK_Statement
! 
           begin
              --  An assignment statement is Ghost when the target is a Ghost
              --  entity.
  
              if Nkind (Stmt) = N_Assignment_Statement then
!                if Is_Ghost_Assignment (Stmt) then
!                   Check_Assignment_Levels
!                     (Get_Enclosing_Ghost_Entity (Name (Stmt)));
!                   return True;
!                end if;
  
              --  A procedure call is Ghost when it calls a Ghost procedure
  
              elsif Nkind (Stmt) = N_Procedure_Call_Statement then
!                if Is_Ghost_Procedure_Call (Stmt) then
!                   Check_Procedure_Call_Policies (Get_Subprogram_Entity (Stmt));
!                   return True;
!                end if;
  
              --  Special cases
  
*************** package body Ghost is
*** 439,461 ****
  
           --  Local variables
  
!          Par : Node_Id;
  
        --  Start of processing for Is_OK_Ghost_Context
  
        begin
-          --  The context is Ghost when it appears within a Ghost package or
-          --  subprogram.
- 
-          if Ghost_Config.Ghost_Mode > None then
-             return True;
- 
           --  Routine Expand_Record_Extension creates a parent subtype without
           --  inserting it into the tree. There is no good way of recognizing
           --  this special case as there is no parent. Try to approximate the
           --  context.
  
!          elsif No (Parent (Context)) and then Is_Tagged_Type (Ghost_Id) then
              return True;
  
           --  Otherwise climb the parent chain looking for a suitable Ghost
--- 687,704 ----
  
           --  Local variables
  
!          Par  : Node_Id;
!          Prev : Node_Id;
  
        --  Start of processing for Is_OK_Ghost_Context
  
        begin
           --  Routine Expand_Record_Extension creates a parent subtype without
           --  inserting it into the tree. There is no good way of recognizing
           --  this special case as there is no parent. Try to approximate the
           --  context.
  
!          if No (Parent (Context)) and then Is_Tagged_Type (Ghost_Id) then
              return True;
  
           --  Otherwise climb the parent chain looking for a suitable Ghost
*************** package body Ghost is
*** 463,477 ****
  
           else
              Par := Context;
              while Present (Par) loop
-                if Is_Ignored_Ghost_Node (Par) then
-                   return True;
- 
                 --  It is not possible to check correct use of Ghost entities
                 --  in generic instantiations until after the generic has been
                 --  resolved. Postpone that verification to after resolution.
  
!                elsif Nkind (Par) = N_Generic_Association then
                    return True;
  
                 --  A reference to a Ghost entity can appear within an aspect
--- 706,718 ----
  
           else
              Par := Context;
+             Prev := Empty;
              while Present (Par) loop
                 --  It is not possible to check correct use of Ghost entities
                 --  in generic instantiations until after the generic has been
                 --  resolved. Postpone that verification to after resolution.
  
!                if Nkind (Par) = N_Generic_Association then
                    return True;
  
                 --  A reference to a Ghost entity can appear within an aspect
*************** package body Ghost is
*** 531,537 ****
                 elsif Is_OK_Pragma (Par, Ghost_Id) then
                    return True;
  
!                elsif Is_OK_Statement (Par) then
                    return True;
  
                 --  Prevent the search from going too far
--- 772,778 ----
                 elsif Is_OK_Pragma (Par, Ghost_Id) then
                    return True;
  
!                elsif Is_OK_Statement (Par, Ghost_Id, Prev) then
                    return True;
  
                 --  Prevent the search from going too far
*************** package body Ghost is
*** 540,545 ****
--- 781,787 ----
                    exit;
                 end if;
  
+                Prev := Par;
                 Par := Parent (Par);
              end loop;
  
*************** package body Ghost is
*** 565,592 ****
        ------------------------
  
        procedure Check_Ghost_Policy (Id : Entity_Id; Ref : Node_Id) is
!          Policy : constant Name_Id := Policy_In_Effect (Name_Ghost);
  
        begin
           --  The Ghost policy in effect a the point of declaration and at the
           --  point of use must match (SPARK RM 6.9(15)).
  
           if Is_Checked_Ghost_Entity (Id)
!            and then Policy = Name_Ignore
             and then Known_To_Be_Assigned (Ref)
           then
              Error_Msg_Sloc := Sloc (Ref);
  
!             Error_Msg_N  ("incompatible ghost policies in effect", Ref);
!             Error_Msg_NE ("\& declared with ghost policy `Check`", Ref, Id);
!             Error_Msg_NE ("\& used # with ghost policy `Ignore`",  Ref, Id);
  
!          elsif Is_Ignored_Ghost_Entity (Id) and then Policy = Name_Check then
!             Error_Msg_Sloc := Sloc (Ref);
  
!             Error_Msg_N  ("incompatible ghost policies in effect",  Ref);
!             Error_Msg_NE ("\& declared with ghost policy `Ignore`", Ref, Id);
!             Error_Msg_NE ("\& used # with ghost policy `Check`",    Ref, Id);
           end if;
        end Check_Ghost_Policy;
  
--- 807,897 ----
        ------------------------
  
        procedure Check_Ghost_Policy (Id : Entity_Id; Ref : Node_Id) is
!          function Is_From_Aspect_Iterable (Ref : Node_Id) return Boolean;
!          --  Returns true when the node is contained within an Iterable aspect.
! 
!          function Is_From_Aspect_Iterable (Ref : Node_Id) return Boolean is
!             P : Node_Id := Parent (Ref);
!          begin
!             while Present (P) loop
!                if Nkind (P) = N_Aspect_Specification then
!                   return Get_Aspect_Id (P) = Aspect_Iterable;
!                end if;
!                P := Parent (P);
!             end loop;
!             return False;
!          end Is_From_Aspect_Iterable;
! 
!          --  Local variables
! 
!          Applic_Policy : Ghost_Mode_Type := Ghost_Config.Ghost_Mode;
!          Ghost_Region  : constant Node_Id := Ghost_Config.Current_Region;
! 
!       --  Start of processing for Check_Ghost_Policy
  
        begin
+          --  The policy is allowed to change within renaming and instantiation
+          --  statements.
+ 
+          if No (Ghost_Region)
+            or else Nkind (Ghost_Region)
+                    in N_Object_Renaming_Declaration
+                     | N_Package_Instantiation
+                     | N_Procedure_Instantiation
+                     | N_Subprogram_Renaming_Declaration
+          then
+             return;
+          end if;
+ 
+          --  The applied policy for procedure calls is the policy in effect at
+          --  the moment of the call.
+ 
+          if Ekind (Id) in E_Procedure then
+             Applic_Policy := Name_To_Ghost_Mode (Ghost_Policy_In_Effect (Id));
+          end if;
+ 
           --  The Ghost policy in effect a the point of declaration and at the
           --  point of use must match (SPARK RM 6.9(15)).
  
           if Is_Checked_Ghost_Entity (Id)
!            and then Applic_Policy = Ignore
             and then Known_To_Be_Assigned (Ref)
           then
+             Error_Msg_N (Ghost_Policy_Error_Msg, Ref);
+             Error_Msg_Sloc := Sloc (Id);
+             Error_Msg_NE ("\& declared # with ghost policy `Check`", Ref, Id);
              Error_Msg_Sloc := Sloc (Ref);
+             Error_Msg_NE ("\& used # with ghost policy `Ignore`", Ref, Id);
+          end if;
  
!          --  A ghost entity E shall not be referenced within an aspect
!          --  specification [(including an aspect-specifying pragma)] which
!          --  specifies an aspect of an entity that is either non-ghost or not
!          --  assertion-level-dependent on E except in the following cases the
!          --  specified aspect is either Global, Depends, Refined_Global,
!          --  Refined_Depends, Initializes, Refined_State, or Iterable (SPARK RM
!          --  6.9(15)).
  
!          if No (Ghost_Region)
!            or else (Nkind (Ghost_Region) = N_Pragma
!                     and then Get_Pragma_Id (Ghost_Region)
!                              in Pragma_Global
!                               | Pragma_Depends
!                               | Pragma_Refined_Global
!                               | Pragma_Refined_Depends
!                               | Pragma_Initializes
!                               | Pragma_Refined_State)
!            or else Is_From_Aspect_Iterable (Ref)
!          then
!             return;
!          end if;
  
!          if Is_Ignored_Ghost_Entity (Id) and then Applic_Policy = Check then
!             Error_Msg_N (Ghost_Policy_Error_Msg, Ref);
!             Error_Msg_Sloc := Sloc (Id);
!             Error_Msg_NE ("\& declared # with ghost policy `Ignore`", Ref, Id);
!             Error_Msg_Sloc := Sloc (Ref);
!             Error_Msg_NE ("\& used # with ghost policy `Check`", Ref, Id);
           end if;
        end Check_Ghost_Policy;
  
*************** package body Ghost is
*** 643,661 ****
           return;
        end if;
  
!       --  Once it has been established that the reference to the Ghost entity
!       --  is within a suitable context, ensure that the policy at the point of
!       --  declaration and at the point of use match.
! 
!       if Is_OK_Ghost_Context (Ghost_Ref) then
!          if Present (Ghost_Id) then
!             Check_Ghost_Policy (Ghost_Id, Ghost_Ref);
!          end if;
! 
!       --  Otherwise the Ghost entity appears in a non-Ghost context and affects
        --  its behavior or value (SPARK RM 6.9(10,11)).
  
!       else
           Error_Msg_N ("ghost entity cannot appear in this context", Ghost_Ref);
  
           --  When the Ghost entity appears in a pragma Predicate, explain the
--- 948,957 ----
           return;
        end if;
  
!       --  If the Ghost entity appears in a non-Ghost context and affects
        --  its behavior or value (SPARK RM 6.9(10,11)).
  
!       if not Is_OK_Ghost_Context (Ghost_Ref) then
           Error_Msg_N ("ghost entity cannot appear in this context", Ghost_Ref);
  
           --  When the Ghost entity appears in a pragma Predicate, explain the
*************** package body Ghost is
*** 672,677 ****
--- 968,981 ----
                 & "or use a type invariant on a private type", Ghost_Ref);
           end if;
        end if;
+ 
+       --  Once it has been established that the reference to the Ghost entity
+       --  is within a suitable context, ensure that the policy at the point of
+       --  declaration and at the point of use match.
+ 
+       if Present (Ghost_Id) then
+          Check_Ghost_Policy (Ghost_Id, Ghost_Ref);
+       end if;
     end Check_Ghost_Context;
  
     ------------------------------------------------
*************** package body Ghost is
*** 732,737 ****
--- 1036,1115 ----
        end if;
     end Check_Ghost_Context_In_Generic_Association;
  
+    -----------------------------------
+    -- Check_Valid_Ghost_Declaration --
+    -----------------------------------
+ 
+    procedure Check_Valid_Ghost_Declaration (N : Node_Id) is
+       procedure Check_Valid_Assertion_Level (Id : Entity_Id; Ref : Node_Id);
+       --  Check that the the assertion level of the declared entity is
+       --  compatible with assertion level of the ghost region.
+ 
+       procedure Check_Valid_Ghost_Policy (Id : Entity_Id; Ref : Node_Id);
+       --  Check that the declared identifier does not have a Checked assertion
+       --  policy while being declared inside an ignored ghost region.
+ 
+       ---------------------------------
+       -- Check_Valid_Assertion_Level --
+       ---------------------------------
+ 
+       procedure Check_Valid_Assertion_Level (Id : Entity_Id; Ref : Node_Id) is
+          Id_Level     : constant Entity_Id := Ghost_Assertion_Level (Id);
+          Region_Level : constant Entity_Id :=
+            Ghost_Config.Ghost_Mode_Assertion_Level;
+       begin
+          --  This check is not applied for generic isntantiations
+ 
+          if Is_Generic_Instance (Id) then
+             return;
+          end if;
+ 
+          if not Is_Assertion_Level_Dependent (Id_Level, Region_Level) then
+             Error_Msg_Sloc := Sloc (Ref);
+ 
+             Error_Msg_N (Assertion_Level_Error_Msg, Ref);
+             Error_Msg_Name_1 := Chars (Id_Level);
+             Error_Msg_NE ("\& has assertion level %", Ref, Id);
+             Error_Msg_Name_1 := Chars (Region_Level);
+             Error_Msg_NE ("\& is declared within a region with %", Ref, Id);
+             Error_Msg_Name_1 := Chars (Region_Level);
+             Error_Msg_NE ("\assertion level of & should depend on %", Ref, Id);
+          end if;
+       end Check_Valid_Assertion_Level;
+ 
+       ------------------------------
+       -- Check_Valid_Ghost_Policy --
+       ------------------------------
+ 
+       procedure Check_Valid_Ghost_Policy (Id : Entity_Id; Ref : Node_Id) is
+          Policy : constant Name_Id := Ghost_Policy_In_Effect (Id);
+       begin
+          if Ghost_Config.Ghost_Mode = Ignore and then Policy = Name_Check
+          then
+             Error_Msg_Sloc := Sloc (Ref);
+ 
+             Error_Msg_N (Ghost_Policy_Error_Msg, Ref);
+             Error_Msg_NE ("\& has ghost policy `Check`", Ref, Id);
+             Error_Msg_NE
+               ("\& is declared # within ghost policy `Ignore`", Ref, Id);
+          end if;
+       end Check_Valid_Ghost_Policy;
+ 
+       --  Local variables
+ 
+       Id : constant Entity_Id := Defining_Entity (N);
+ 
+    --  Start of processing for Check_Valid_Ghost_Declaration
+    begin
+       if not Is_Ghost_Entity (Id) or else Ghost_Config.Ghost_Mode = None
+       then
+          return;
+       end if;
+ 
+       Check_Valid_Ghost_Policy (Id, N);
+       Check_Valid_Assertion_Level (Id, N);
+    end Check_Valid_Ghost_Declaration;
+ 
     ---------------------------------------------
     -- Check_Ghost_Formal_Procedure_Or_Package --
     ---------------------------------------------
*************** package body Ghost is
*** 808,936 ****
        Over_Subp : Entity_Id;
  
     begin
!       if Present (Subp) and then Present (Overridden_Subp) then
!          Over_Subp := Ultimate_Alias (Overridden_Subp);
!          Deriv_Typ := Find_Dispatching_Type (Subp);
  
!          --  A Ghost primitive of a non-Ghost type extension cannot override an
!          --  inherited non-Ghost primitive (SPARK RM 6.9(8)).
  
!          if Is_Ghost_Entity (Subp)
!            and then Present (Deriv_Typ)
!            and then not Is_Ghost_Entity (Deriv_Typ)
!            and then not Is_Ghost_Entity (Over_Subp)
!            and then not Is_Abstract_Subprogram (Over_Subp)
!          then
!             Error_Msg_N ("incompatible overriding in effect", Subp);
  
!             Error_Msg_Sloc := Sloc (Over_Subp);
!             Error_Msg_N ("\& declared # as non-ghost subprogram", Subp);
  
!             Error_Msg_Sloc := Sloc (Subp);
!             Error_Msg_N ("\overridden # with ghost subprogram", Subp);
!          end if;
  
!          --  A non-Ghost primitive of a type extension cannot override an
!          --  inherited Ghost primitive (SPARK RM 6.9(8)).
  
!          if Is_Ghost_Entity (Over_Subp)
!            and then not Is_Ghost_Entity (Subp)
!            and then not Is_Abstract_Subprogram (Subp)
!          then
!             Error_Msg_N ("incompatible overriding in effect", Subp);
  
!             Error_Msg_Sloc := Sloc (Over_Subp);
!             Error_Msg_N ("\& declared # as ghost subprogram", Subp);
  
!             Error_Msg_Sloc := Sloc (Subp);
!             Error_Msg_N ("\overridden # with non-ghost subprogram", Subp);
!          end if;
  
!          if Present (Deriv_Typ)
!            and then not Is_Ignored_Ghost_Entity (Deriv_Typ)
!          then
!             --  When a tagged type is either non-Ghost or checked Ghost and
!             --  one of its primitives overrides an inherited operation, the
!             --  overridden operation of the ancestor type must be ignored Ghost
!             --  if the primitive is ignored Ghost (SPARK RM 6.9(19)).
  
!             if Is_Ignored_Ghost_Entity (Subp) then
  
!                --  Both the parent subprogram and overriding subprogram are
!                --  ignored Ghost.
  
!                if Is_Ignored_Ghost_Entity (Over_Subp) then
!                   null;
  
!                --  The parent subprogram carries policy Check
  
!                elsif Is_Checked_Ghost_Entity (Over_Subp) then
!                   Error_Msg_N
!                     ("incompatible ghost policies in effect", Subp);
  
!                   Error_Msg_Sloc := Sloc (Over_Subp);
!                   Error_Msg_N
!                     ("\& declared # with ghost policy `Check`", Subp);
  
!                   Error_Msg_Sloc := Sloc (Subp);
!                   Error_Msg_N
!                     ("\overridden # with ghost policy `Ignore`", Subp);
  
!                --  The parent subprogram is non-Ghost
  
!                else
!                   Error_Msg_N
!                     ("incompatible ghost policies in effect", Subp);
  
!                   Error_Msg_Sloc := Sloc (Over_Subp);
!                   Error_Msg_N ("\& declared # as non-ghost subprogram", Subp);
  
!                   Error_Msg_Sloc := Sloc (Subp);
!                   Error_Msg_N
!                     ("\overridden # with ghost policy `Ignore`", Subp);
!                end if;
  
!             --  When a tagged type is either non-Ghost or checked Ghost and
!             --  one of its primitives overrides an inherited operation, the
!             --  the primitive of the tagged type must be ignored Ghost if the
!             --  overridden operation is ignored Ghost (SPARK RM 6.9(19)).
  
!             elsif Is_Ignored_Ghost_Entity (Over_Subp) then
  
!                --  Both the parent subprogram and the overriding subprogram are
!                --  ignored Ghost.
  
!                if Is_Ignored_Ghost_Entity (Subp) then
!                   null;
  
!                --  The overriding subprogram carries policy Check
  
!                elsif Is_Checked_Ghost_Entity (Subp) then
!                   Error_Msg_N
!                     ("incompatible ghost policies in effect", Subp);
  
!                   Error_Msg_Sloc := Sloc (Over_Subp);
!                   Error_Msg_N
!                     ("\& declared # with ghost policy `Ignore`", Subp);
  
!                   Error_Msg_Sloc := Sloc (Subp);
!                   Error_Msg_N
!                     ("\overridden # with Ghost policy `Check`", Subp);
  
!                --  The overriding subprogram is non-Ghost
  
!                else
!                   Error_Msg_N
!                     ("incompatible ghost policies in effect", Subp);
  
!                   Error_Msg_Sloc := Sloc (Over_Subp);
!                   Error_Msg_N
!                     ("\& declared # with ghost policy `Ignore`", Subp);
  
!                   Error_Msg_Sloc := Sloc (Subp);
!                   Error_Msg_N
!                     ("\overridden # with non-ghost subprogram", Subp);
!                end if;
              end if;
           end if;
        end if;
--- 1186,1312 ----
        Over_Subp : Entity_Id;
  
     begin
!       if No (Subp) or else No (Overridden_Subp) then
!          return;
!       end if;
  
!       Over_Subp := Ultimate_Alias (Overridden_Subp);
!       Deriv_Typ := Find_Dispatching_Type (Subp);
  
!       --  A Ghost primitive of a non-Ghost type extension cannot override an
!       --  inherited non-Ghost primitive (SPARK RM 6.9(8)).
  
!       if Is_Ghost_Entity (Subp)
!          and then Present (Deriv_Typ)
!          and then not Is_Ghost_Entity (Deriv_Typ)
!          and then not Is_Ghost_Entity (Over_Subp)
!          and then not Is_Abstract_Subprogram (Over_Subp)
!       then
!          Error_Msg_N ("incompatible overriding in effect", Subp);
  
!          Error_Msg_Sloc := Sloc (Over_Subp);
!          Error_Msg_N ("\& declared # as non-ghost subprogram", Subp);
  
!          Error_Msg_Sloc := Sloc (Subp);
!          Error_Msg_N ("\overridden # with ghost subprogram", Subp);
!       end if;
  
!       --  A non-Ghost primitive of a type extension cannot override an
!       --  inherited Ghost primitive (SPARK RM 6.9(8)).
  
!       if Is_Ghost_Entity (Over_Subp)
!         and then not Is_Ghost_Entity (Subp)
!         and then not Is_Abstract_Subprogram (Subp)
!       then
!          Error_Msg_N ("incompatible overriding in effect", Subp);
  
!          Error_Msg_Sloc := Sloc (Over_Subp);
!          Error_Msg_N ("\& declared # as ghost subprogram", Subp);
  
!          Error_Msg_Sloc := Sloc (Subp);
!          Error_Msg_N ("\overridden # with non-ghost subprogram", Subp);
!       end if;
  
!       if Present (Deriv_Typ)
!          and then not Is_Ignored_Ghost_Entity (Deriv_Typ)
!       then
!          --  When a tagged type is either non-Ghost or checked Ghost and
!          --  one of its primitives overrides an inherited operation, the
!          --  overridden operation of the ancestor type must be ignored Ghost
!          --  if the primitive is ignored Ghost (SPARK RM 6.9(19)).
  
!          if Is_Ignored_Ghost_Entity (Subp) then
  
!             --  Both the parent subprogram and overriding subprogram are
!             --  ignored Ghost.
  
!             if Is_Ignored_Ghost_Entity (Over_Subp) then
!                null;
  
!             --  The parent subprogram carries policy Check
  
!             elsif Is_Checked_Ghost_Entity (Over_Subp) then
!                Error_Msg_N (Ghost_Policy_Error_Msg, Subp);
  
!                Error_Msg_Sloc := Sloc (Over_Subp);
!                Error_Msg_N
!                   ("\& declared # with ghost policy `Check`", Subp);
  
!                Error_Msg_Sloc := Sloc (Subp);
!                Error_Msg_N
!                   ("\overridden # with ghost policy `Ignore`", Subp);
  
!             --  The parent subprogram is non-Ghost
  
!             else
!                Error_Msg_N (Ghost_Policy_Error_Msg, Subp);
  
!                Error_Msg_Sloc := Sloc (Over_Subp);
!                Error_Msg_N ("\& declared # as non-ghost subprogram", Subp);
  
!                Error_Msg_Sloc := Sloc (Subp);
!                Error_Msg_N
!                   ("\overridden # with ghost policy `Ignore`", Subp);
!             end if;
  
!          --  When a tagged type is either non-Ghost or checked Ghost and
!          --  one of its primitives overrides an inherited operation, the
!          --  the primitive of the tagged type must be ignored Ghost if the
!          --  overridden operation is ignored Ghost (SPARK RM 6.9(19)).
  
!          elsif Is_Ignored_Ghost_Entity (Over_Subp) then
  
!             --  Both the parent subprogram and the overriding subprogram are
!             --  ignored Ghost.
  
!             if Is_Ignored_Ghost_Entity (Subp) then
!                null;
  
!             --  The overriding subprogram carries policy Check
  
!             elsif Is_Checked_Ghost_Entity (Subp) then
!                Error_Msg_N (Ghost_Policy_Error_Msg, Subp);
  
!                Error_Msg_Sloc := Sloc (Over_Subp);
!                Error_Msg_N
!                   ("\& declared # with ghost policy `Ignore`", Subp);
  
!                Error_Msg_Sloc := Sloc (Subp);
!                Error_Msg_N
!                   ("\overridden # with Ghost policy `Check`", Subp);
  
!             --  The overriding subprogram is non-Ghost
  
!             else
!                Error_Msg_N (Ghost_Policy_Error_Msg, Subp);
  
!                Error_Msg_Sloc := Sloc (Over_Subp);
!                Error_Msg_N
!                   ("\& declared # with ghost policy `Ignore`", Subp);
! 
!                Error_Msg_Sloc := Sloc (Subp);
!                Error_Msg_N
!                   ("\overridden # with non-ghost subprogram", Subp);
              end if;
           end if;
        end if;
*************** package body Ghost is
*** 941,981 ****
     ---------------------------
  
     procedure Check_Ghost_Primitive (Prim : Entity_Id; Typ : Entity_Id) is
     begin
        --  The Ghost policy in effect at the point of declaration of a primitive
!       --  operation and a tagged type must match (SPARK RM 6.9(18)).
  
!       if Is_Tagged_Type (Typ) then
!          if Is_Checked_Ghost_Entity (Prim)
!            and then Is_Ignored_Ghost_Entity (Typ)
!          then
!             Error_Msg_N ("incompatible ghost policies in effect", Prim);
  
!             Error_Msg_Sloc := Sloc (Typ);
!             Error_Msg_NE
!               ("\tagged type & declared # with ghost policy `Ignore`",
!                Prim, Typ);
  
!             Error_Msg_Sloc := Sloc (Prim);
!             Error_Msg_N
!               ("\primitive subprogram & declared # with ghost policy `Check`",
!                Prim);
  
!          elsif Is_Ignored_Ghost_Entity (Prim)
!            and then Is_Checked_Ghost_Entity (Typ)
!          then
!             Error_Msg_N ("incompatible ghost policies in effect", Prim);
  
!             Error_Msg_Sloc := Sloc (Typ);
!             Error_Msg_NE
!               ("\tagged type & declared # with ghost policy `Check`",
!                Prim, Typ);
  
-             Error_Msg_Sloc := Sloc (Prim);
-             Error_Msg_N
-               ("\primitive subprogram & declared # with ghost policy `Ignore`",
-                Prim);
-          end if;
        end if;
     end Check_Ghost_Primitive;
  
--- 1317,1364 ----
     ---------------------------
  
     procedure Check_Ghost_Primitive (Prim : Entity_Id; Typ : Entity_Id) is
+       Prim_Level : Entity_Id;
+       Typ_Level : Entity_Id;
     begin
+       if not Is_Tagged_Type (Typ) then
+          return;
+       end if;
+ 
        --  The Ghost policy in effect at the point of declaration of a primitive
!       --  operation and a tagged type must match (SPARK RM 6.9(20)).
  
!       if Is_Checked_Ghost_Entity (Prim)
!         and then Is_Ignored_Ghost_Entity (Typ)
!       then
!          Error_Msg_N (Ghost_Policy_Error_Msg, Prim);
  
!          Error_Msg_Sloc := Sloc (Typ);
!          Error_Msg_NE
!             ("\tagged type & declared # with ghost policy `Ignore`",
!             Prim, Typ);
  
!          Error_Msg_Sloc := Sloc (Prim);
!          Error_Msg_N
!             ("\primitive subprogram & declared # with ghost policy `Check`",
!             Prim);
!       end if;
  
!       Prim_Level := Ghost_Assertion_Level (Prim);
!       Typ_Level := Ghost_Assertion_Level (Typ);
  
!       if not Is_Assertion_Level_Dependent (Prim_Level, Typ_Level) then
!          Error_Msg_N (Assertion_Level_Error_Msg, Prim);
!          Error_Msg_Name_1 := Chars (Typ_Level);
!          Error_Msg_Sloc := Sloc (Typ);
!          Error_Msg_NE ("\tagged type & declared # with %", Prim, Typ);
!          Error_Msg_Name_1 := Chars (Prim_Level);
!          Error_Msg_Sloc := Sloc (Prim);
!          Error_Msg_NE
!            ("\primitive subprogram & declared # with %", Prim, Prim);
!          Error_Msg_Name_1 := Chars (Typ_Level);
!          Error_Msg_NE
!            ("\assertion level of & should depend on %", Prim, Prim);
  
        end if;
     end Check_Ghost_Primitive;
  
*************** package body Ghost is
*** 989,1036 ****
        Constit    : Node_Id;
        Constit_Id : Entity_Id)
     is
     begin
!       if Is_Ghost_Entity (State_Id) then
!          if Is_Ghost_Entity (Constit_Id) then
  
!             --  The Ghost policy in effect at the point of abstract state
!             --  declaration and constituent must match (SPARK RM 6.9(17)).
  
!             if Is_Checked_Ghost_Entity (State_Id)
!               and then Is_Ignored_Ghost_Entity (Constit_Id)
!             then
!                Error_Msg_Sloc := Sloc (Constit);
!                SPARK_Msg_N ("incompatible ghost policies in effect", State);
  
!                SPARK_Msg_NE
!                  ("\abstract state & declared with ghost policy `Check`",
!                   State, State_Id);
!                SPARK_Msg_NE
!                  ("\constituent & declared # with ghost policy `Ignore`",
!                   State, Constit_Id);
  
!             elsif Is_Ignored_Ghost_Entity (State_Id)
!               and then Is_Checked_Ghost_Entity (Constit_Id)
!             then
!                Error_Msg_Sloc := Sloc (Constit);
!                SPARK_Msg_N ("incompatible ghost policies in effect", State);
  
!                SPARK_Msg_NE
!                  ("\abstract state & declared with ghost policy `Ignore`",
!                   State, State_Id);
!                SPARK_Msg_NE
!                  ("\constituent & declared # with ghost policy `Check`",
!                   State, Constit_Id);
!             end if;
  
!             --  A constituent of a Ghost abstract state must be a Ghost entity
!             --  (SPARK RM 7.2.2(12)).
  
-          else
-             SPARK_Msg_NE
-               ("constituent of ghost state & must be ghost",
-                Constit, State_Id);
-          end if;
        end if;
     end Check_Ghost_Refinement;
  
--- 1372,1427 ----
        Constit    : Node_Id;
        Constit_Id : Entity_Id)
     is
+       State_Level   : Entity_Id;
+       Constit_Level : Entity_Id;
     begin
!       --  Only check ghost states
  
!       if not Is_Ghost_Entity (State_Id) then
!          return;
!       end if;
  
!       --  A constituent of a Ghost abstract state must be a Ghost entity
!       --  (SPARK RM 7.2.2(12)).
  
!       if not Is_Ghost_Entity (Constit_Id) then
!          SPARK_Msg_NE
!             ("constituent of ghost state & must be ghost",
!             Constit, State_Id);
!       end if;
  
!       --  The Ghost policy in effect at the point of an ignored abstract state
!       --  cannot be check (SPARK RM 6.9(19)).
  
!       if Is_Ignored_Ghost_Entity (State_Id)
!         and then Is_Checked_Ghost_Entity (Constit_Id)
!       then
!          SPARK_Msg_N (Ghost_Policy_Error_Msg, State);
!          Error_Msg_Sloc := Sloc (State_Id);
!          SPARK_Msg_NE
!             ("\abstract state & declared # with ghost policy `Ignore`",
!             State, State_Id);
!          Error_Msg_Sloc := Sloc (Constit_Id);
!          SPARK_Msg_NE
!             ("\constituent & declared # with ghost policy `Check`",
!             State, Constit_Id);
!       end if;
  
!       State_Level := Ghost_Assertion_Level (State_Id);
!       Constit_Level := Ghost_Assertion_Level (Constit_Id);
! 
!       if not Is_Assertion_Level_Dependent (Constit_Level, State_Level) then
!          SPARK_Msg_N (Assertion_Level_Error_Msg, State);
!          Error_Msg_Name_1 := Chars (State_Level);
!          Error_Msg_Sloc := Sloc (State_Id);
!          SPARK_Msg_NE ("\abstract state & declared # with %", State, State_Id);
!          Error_Msg_Name_1 := Chars (Constit_Level);
!          Error_Msg_Sloc := Sloc (Constit_Id);
!          SPARK_Msg_NE ("\constituent & declared # with %", State, Constit_Id);
!          Error_Msg_Name_1 := Chars (State_Level);
!          SPARK_Msg_NE
!            ("\assertion level of & should depend on %", State, Constit_Id);
  
        end if;
     end Check_Ghost_Refinement;
  
*************** package body Ghost is
*** 1074,1079 ****
--- 1465,1574 ----
        end if;
     end Check_Ghost_Type;
  
+    ----------------------
+    -- Get_Ghost_Aspect --
+    ----------------------
+ 
+    function Get_Ghost_Aspect (N : Node_Id) return Node_Id is
+       Asp : Node_Id;
+    begin
+       if not Permits_Aspect_Specifications (N) then
+          return Empty;
+       end if;
+ 
+       Asp := First (Aspect_Specifications (N));
+       while Present (Asp) loop
+          if Chars (Identifier (Asp)) = Name_Ghost then
+             return Asp;
+          end if;
+ 
+          Next (Asp);
+       end loop;
+ 
+       return Empty;
+    end Get_Ghost_Aspect;
+ 
+    ----------------------
+    -- Get_Ghost_Pragma --
+    ----------------------
+ 
+    function Get_Ghost_Pragma (N : Node_Id) return Node_Id is
+       Decl : Node_Id := Empty;
+    begin
+       --  When the context is a [generic] package declaration, pragma Ghost
+       --  resides in the visible declarations.
+ 
+       if Nkind (N) in N_Generic_Package_Declaration | N_Package_Declaration
+       then
+          Decl := First (Visible_Declarations (Specification (N)));
+ 
+       --  When the context is a package or a subprogram body, pragma Ghost
+       --  resides in the declarative part.
+ 
+       elsif Nkind (N) in N_Package_Body | N_Subprogram_Body then
+          Decl := First (Declarations (N));
+ 
+       --  Otherwise pragma Ghost appears in the declarations following N
+ 
+       elsif Is_List_Member (N) then
+          Decl := Next (N);
+       end if;
+ 
+       while Present (Decl) loop
+          if Nkind (Decl) = N_Pragma
+            and then Pragma_Name (Decl) = Name_Ghost
+          then
+             return Decl;
+ 
+          --  A source construct ends the region where pragma Ghost may appear,
+          --  stop the traversal. Check the original node as source constructs
+          --  may be rewritten into something else by expansion.
+ 
+          elsif Comes_From_Source (Original_Node (Decl)) then
+             exit;
+          end if;
+ 
+          Next (Decl);
+       end loop;
+ 
+       return Empty;
+    end Get_Ghost_Pragma;
+ 
+    -------------------------------
+    -- Get_Ghost_Assertion_Level --
+    -------------------------------
+ 
+    function Get_Ghost_Assertion_Level (N : Node_Id) return Entity_Id is
+       Ghost_Asp  : constant Node_Id := Get_Ghost_Aspect (N);
+       Ghost_Prag : Node_Id;
+ 
+    begin
+       if Present (Ghost_Asp) then
+          return Assertion_Level_From_Arg (Expression (Ghost_Asp));
+       end if;
+ 
+       Ghost_Prag := Get_Ghost_Pragma (N);
+       if Present (Ghost_Prag) then
+          return
+            Assertion_Level_From_Arg
+              (First (Pragma_Argument_Associations (Ghost_Prag)));
+       end if;
+ 
+       return Empty;
+    end Get_Ghost_Assertion_Level;
+ 
+    ----------------------------
+    -- Ghost_Policy_In_Effect --
+    ----------------------------
+ 
+    function Ghost_Policy_In_Effect (Id : Entity_Id) return Name_Id is
+       Level     : constant Entity_Id := Ghost_Assertion_Level (Id);
+       Level_Nam : constant Name_Id :=
+         (if No (Level) then No_Name else Chars (Level));
+    begin
+       return Policy_In_Effect (Name_Ghost, Level_Nam);
+    end Ghost_Policy_In_Effect;
+ 
     --------------------------------
     -- Implements_Ghost_Interface --
     --------------------------------
*************** package body Ghost is
*** 1112,1131 ****
        Set_Ignored_Ghost_Recording_Proc (Record_Ignored_Ghost_Node'Access);
     end Initialize;
  
-    ------------------------
-    -- Install_Ghost_Mode --
-    ------------------------
- 
-    procedure Install_Ghost_Mode (Mode : Ghost_Mode_Type) is
-    begin
-       Install_Ghost_Region (Mode, Empty);
-    end Install_Ghost_Mode;
- 
     --------------------------
     -- Install_Ghost_Region --
     --------------------------
  
!    procedure Install_Ghost_Region (Mode : Ghost_Mode_Type; N : Node_Id) is
     begin
        --  The context is already within an ignored Ghost region. Maintain the
        --  start of the outermost ignored Ghost region.
--- 1607,1621 ----
        Set_Ignored_Ghost_Recording_Proc (Record_Ignored_Ghost_Node'Access);
     end Initialize;
  
     --------------------------
     -- Install_Ghost_Region --
     --------------------------
  
!    procedure Install_Ghost_Region
!      (Mode  : Ghost_Mode_Type;
!       N     : Node_Id;
!       Level : Entity_Id)
!    is
     begin
        --  The context is already within an ignored Ghost region. Maintain the
        --  start of the outermost ignored Ghost region.
*************** package body Ghost is
*** 1145,1159 ****
           Ghost_Config.Ignored_Ghost_Region := Empty;
        end if;
  
        Ghost_Config.Ghost_Mode := Mode;
     end Install_Ghost_Region;
  
!    procedure Install_Ghost_Region (Mode : Name_Id; N : Node_Id) is
     begin
!       Install_Ghost_Region (Name_To_Ghost_Mode (Mode), N);
     end Install_Ghost_Region;
  
     -------------------------
     -- Is_Ghost_Assignment --
     -------------------------
  
--- 1635,1669 ----
           Ghost_Config.Ignored_Ghost_Region := Empty;
        end if;
  
+       Ghost_Config.Current_Region := N;
        Ghost_Config.Ghost_Mode := Mode;
+       Ghost_Config.Ghost_Mode_Assertion_Level := Level;
     end Install_Ghost_Region;
  
!    procedure Install_Ghost_Region
!      (Mode  : Name_Id;
!       N     : Node_Id;
!       Level : Entity_Id) is
     begin
!       Install_Ghost_Region (Name_To_Ghost_Mode (Mode), N, Level);
     end Install_Ghost_Region;
  
     -------------------------
+    -- Is_Compatible_Level --
+    -------------------------
+ 
+    function Is_Assertion_Level_Dependent
+      (Self : Entity_Id; Other : Entity_Id) return Boolean
+    is
+    begin
+       return
+          Self = Standard_Level_Default
+          or else Other = Standard_Level_Default
+          or else Is_Same_Or_Depends_On_Level (Self, Other)
+          or else Is_Same_Or_Depends_On_Level (Self, Standard_Level_Static);
+    end Is_Assertion_Level_Dependent;
+ 
+    -------------------------
     -- Is_Ghost_Assignment --
     -------------------------
  
*************** package body Ghost is
*** 1262,1268 ****
  
        return
          Nkind (N) = N_Compilation_Unit
!           and then Is_Ignored_Ghost_Entity
                       (Defining_Entity (Ultimate_Original_Node (Unit (N))));
     end Is_Ignored_Ghost_Unit;
  
--- 1772,1778 ----
  
        return
          Nkind (N) = N_Compilation_Unit
!           and then Is_Ignored_Ghost_Entity_In_Codegen
                       (Defining_Entity (Ultimate_Original_Node (Unit (N))));
     end Is_Ignored_Ghost_Unit;
  
*************** package body Ghost is
*** 1279,1315 ****
        -----------------------
  
        function Enables_Ghostness (Arg : Node_Id) return Boolean is
-          Expr : Node_Id;
- 
        begin
!          Expr := Arg;
! 
!          if Nkind (Expr) = N_Pragma_Argument_Association then
!             Expr := Get_Pragma_Arg (Expr);
!          end if;
! 
!          --  Determine whether the expression of the aspect or pragma is static
!          --  and denotes True.
! 
!          if Present (Expr) then
!             Preanalyze_And_Resolve (Expr);
! 
!             return
!               Is_OK_Static_Expression (Expr)
!                 and then Is_True (Expr_Value (Expr));
! 
!          --  Otherwise Ghost defaults to True
  
!          else
!             return True;
!          end if;
        end Enables_Ghostness;
  
        --  Local variables
  
        Id      : constant Entity_Id := Defining_Entity (N);
        Asp     : Node_Id;
!       Decl    : Node_Id;
        Prev_Id : Entity_Id;
  
     --  Start of processing for Is_Subject_To_Ghost
--- 1789,1806 ----
        -----------------------
  
        function Enables_Ghostness (Arg : Node_Id) return Boolean is
        begin
!          --  Ghostness is enabled if the argument implies a default assertion
!          --  level or it is explicitly a reference to an assertion level.
  
!          return Present (Assertion_Level_From_Arg (Arg));
        end Enables_Ghostness;
  
        --  Local variables
  
        Id      : constant Entity_Id := Defining_Entity (N);
        Asp     : Node_Id;
!       Prag    : Node_Id;
        Prev_Id : Entity_Id;
  
     --  Start of processing for Is_Subject_To_Ghost
*************** package body Ghost is
*** 1342,1397 ****
  
        --  Examine the aspect specifications (if any) looking for aspect Ghost
  
!       if Permits_Aspect_Specifications (N) then
!          Asp := First (Aspect_Specifications (N));
!          while Present (Asp) loop
!             if Chars (Identifier (Asp)) = Name_Ghost then
!                return Enables_Ghostness (Expression (Asp));
!             end if;
  
!             Next (Asp);
!          end loop;
        end if;
  
!       Decl := Empty;
! 
!       --  When the context is a [generic] package declaration, pragma Ghost
!       --  resides in the visible declarations.
! 
!       if Nkind (N) in N_Generic_Package_Declaration | N_Package_Declaration
!       then
!          Decl := First (Visible_Declarations (Specification (N)));
! 
!       --  When the context is a package or a subprogram body, pragma Ghost
!       --  resides in the declarative part.
! 
!       elsif Nkind (N) in N_Package_Body | N_Subprogram_Body then
!          Decl := First (Declarations (N));
  
!       --  Otherwise pragma Ghost appears in the declarations following N
  
!       elsif Is_List_Member (N) then
!          Decl := Next (N);
        end if;
  
-       while Present (Decl) loop
-          if Nkind (Decl) = N_Pragma
-            and then Pragma_Name (Decl) = Name_Ghost
-          then
-             return
-               Enables_Ghostness (First (Pragma_Argument_Associations (Decl)));
- 
-          --  A source construct ends the region where pragma Ghost may appear,
-          --  stop the traversal. Check the original node as source constructs
-          --  may be rewritten into something else by expansion.
- 
-          elsif Comes_From_Source (Original_Node (Decl)) then
-             exit;
-          end if;
- 
-          Next (Decl);
-       end loop;
- 
        return False;
     end Is_Subject_To_Ghost;
  
--- 1833,1853 ----
  
        --  Examine the aspect specifications (if any) looking for aspect Ghost
  
!       Asp := Get_Ghost_Aspect (N);
  
!       if Present (Asp) then
!          return Enables_Ghostness (Expression (Asp));
        end if;
  
!       --  Examine the following pragmas for an applicable Ghost pragma
  
!       Prag := Get_Ghost_Pragma (N);
  
!       if Present (Prag) then
!          return
!            Enables_Ghostness (First (Pragma_Argument_Associations (Prag)));
        end if;
  
        return False;
     end Is_Subject_To_Ghost;
  
*************** package body Ghost is
*** 1416,1487 ****
        --  where P is a package, X is a record, and Comp is an array, we need
        --  to check the ghost flags of X.
  
!       Orig_Lhs : constant Node_Id := Name (N);
!    begin
!       --  Ghost assignments are irrelevant when the expander is inactive, and
!       --  processing them in that mode can lead to spurious errors.
  
!       if Expander_Active then
!          --  Cases where full analysis is needed, involving array indexing
!          --  which would otherwise be missing array-bounds checks:
  
!          if not Analyzed (Orig_Lhs)
!            and then
!              ((Nkind (Orig_Lhs) = N_Indexed_Component
!                 and then Nkind (Prefix (Orig_Lhs)) = N_Selected_Component
!                 and then Nkind (Prefix (Prefix (Orig_Lhs))) =
!                            N_Indexed_Component)
!               or else
!              (Nkind (Orig_Lhs) = N_Selected_Component
!               and then Nkind (Prefix (Orig_Lhs)) = N_Indexed_Component
!               and then Nkind (Prefix (Prefix (Orig_Lhs))) =
!                          N_Selected_Component
!               and then Nkind (Parent (N)) /= N_Loop_Statement))
           then
!             Analyze (Orig_Lhs);
           end if;
  
!          --  Make sure Lhs is at least preanalyzed, so we can tell whether
!          --  it denotes a ghost variable. In some cases we need to do a full
!          --  analysis, or else the back end gets confused. Note that in the
!          --  preanalysis case, we are preanalyzing a copy of the left-hand
!          --  side name, temporarily attached to the tree.
  
!          declare
!             Lhs : constant Node_Id :=
!               (if Analyzed (Orig_Lhs) then Orig_Lhs
!                else New_Copy_Tree (Orig_Lhs));
!          begin
!             if not Analyzed (Lhs) then
!                Set_Name   (N, Lhs);
!                Set_Parent (Lhs, N);
!                Preanalyze_Without_Errors (Lhs);
!                Set_Name (N, Orig_Lhs);
!             end if;
  
!             declare
!                Id : constant Entity_Id := Get_Enclosing_Ghost_Entity (Lhs);
!             begin
!                if Present (Id) then
!                   --  Left-hand side denotes a Checked ghost entity, so install
!                   --  the region.
  
!                   if Is_Checked_Ghost_Entity (Id) then
!                      Install_Ghost_Region (Check, N);
  
!                   --  Left-hand side denotes an Ignored ghost entity, so
!                   --  install the region, and mark the assignment statement as
!                   --  an ignored ghost assignment, so it will be removed later.
  
!                   elsif Is_Ignored_Ghost_Entity (Id) then
!                      Install_Ghost_Region (Ignore, N);
!                      Set_Is_Ignored_Ghost_Node (N);
!                      Record_Ignored_Ghost_Node (N);
!                   end if;
!                end if;
!             end;
!          end;
        end if;
     end Mark_And_Set_Ghost_Assignment;
  
     -----------------------------
--- 1872,1972 ----
        --  where P is a package, X is a record, and Comp is an array, we need
        --  to check the ghost flags of X.
  
!       procedure Check_Assignment_Policies (Assignee : Entity_Id);
!       --  Check that:
!       --  * A checked ghost assignment is not used in an ignored ghost
!       --    region.
!       --  * The level of the ghost region depends on the level of the
!       --    ghost assignment.
  
!       -------------------------------
!       -- Check_Assignment_Policies --
!       -------------------------------
  
!       procedure Check_Assignment_Policies (Assignee : Entity_Id) is
!          Assignee_Policy : constant Name_Id :=
!            Ghost_Policy_In_Effect (Assignee);
!          Assignee_Level  : constant Entity_Id :=
!            Ghost_Assertion_Level (Assignee);
!          Region_Policy   : constant Ghost_Mode_Type := Ghost_Config.Ghost_Mode;
!          Region_Level    : constant Entity_Id :=
!            Ghost_Config.Ghost_Mode_Assertion_Level;
!       begin
!          if Assignee_Policy = Name_Check and then Region_Policy = Ignore then
!             Error_Msg_N (Ghost_Policy_Error_Msg, N);
!             Error_Msg_NE ("\& has ghost policy `Check`", N, Assignee);
!             Error_Msg_NE
!               ("\& is modified in a region with `Ignore`", N, Assignee);
!          end if;
! 
!          if Present (Region_Level)
!            and then not Is_Assertion_Level_Dependent
!                           (Region_Level, Assignee_Level)
           then
!             Error_Msg_Sloc := Sloc (N);
! 
!             Error_Msg_N (Assertion_Level_Error_Msg, N);
!             Error_Msg_Name_1 := Chars (Assignee_Level);
!             Error_Msg_NE ("\& has assertion level %", N, Assignee);
!             Error_Msg_Name_1 := Chars (Region_Level);
!             Error_Msg_NE
!               ("\& is modified within a region with %", N, Assignee);
!             Error_Msg_Name_1 := Chars (Region_Level);
!             Error_Msg_NE
!               ("\assertion level of & should depend on %", N, Assignee);
           end if;
+       end Check_Assignment_Policies;
  
!       --  Local variables
  
!       Orig_Lhs : constant Node_Id := Name (N);
!       Id       : Entity_Id;
!       Lhs      : Node_Id;
  
!    --  Start of processing for Mark_And_Set_Ghost_Assignment
  
!    begin
!       --  Cases where full analysis is needed, involving array indexing
!       --  which would otherwise be missing array-bounds checks:
  
!       if not Analyzed (Orig_Lhs)
!          and then
!              ((Nkind (Orig_Lhs) = N_Indexed_Component
!                  and then Nkind (Prefix (Orig_Lhs)) = N_Selected_Component
!                  and then Nkind (Prefix (Prefix (Orig_Lhs))) =
!                           N_Indexed_Component)
!             or else
!               (Nkind (Orig_Lhs) = N_Selected_Component
!                  and then Nkind (Prefix (Orig_Lhs)) = N_Indexed_Component
!                  and then Nkind (Prefix (Prefix (Orig_Lhs))) =
!                           N_Selected_Component
!                  and then Nkind (Parent (N)) /= N_Loop_Statement))
!       then
!          Analyze (Orig_Lhs);
!       end if;
  
!       --  Make sure Lhs is at least preanalyzed, so we can tell whether
!       --  it denotes a ghost variable. In some cases we need to do a full
!       --  analysis, or else the back end gets confused. Note that in the
!       --  preanalysis case, we are preanalyzing a copy of the left-hand
!       --  side name, temporarily attached to the tree.
! 
!       Lhs :=
!         (if Analyzed (Orig_Lhs) then Orig_Lhs else New_Copy_Tree (Orig_Lhs));
!       if not Analyzed (Lhs) then
!          Set_Name   (N, Lhs);
!          Set_Parent (Lhs, N);
!          Preanalyze_Without_Errors (Lhs);
!          Set_Name (N, Orig_Lhs);
        end if;
+ 
+       Id := Get_Enclosing_Ghost_Entity (Lhs);
+ 
+       if Present (Id) and then Is_Ghost_Entity (Id) then
+          Check_Assignment_Policies (Id);
+       end if;
+ 
+       Mark_And_Set_Ghost_Region (N, Id);
     end Mark_And_Set_Ghost_Assignment;
  
     -----------------------------
*************** package body Ghost is
*** 1493,1514 ****
        Spec_Id : Entity_Id)
     is
        Body_Id : constant Entity_Id := Defining_Entity (N);
        Policy  : Name_Id := No_Name;
  
     begin
        --  A body becomes Ghost when it is subject to aspect or pragma Ghost
  
        if Is_Subject_To_Ghost (N) then
!          Policy := Policy_In_Effect (Name_Ghost);
  
        --  A body declared within a Ghost region is automatically Ghost
        --  (SPARK RM 6.9(2)).
  
        elsif Ghost_Config.Ghost_Mode = Check then
           Policy := Name_Check;
  
        elsif Ghost_Config.Ghost_Mode = Ignore then
           Policy := Name_Ignore;
  
        --  Inherit the "ghostness" of the previous declaration when the body
        --  acts as a completion.
--- 1978,2008 ----
        Spec_Id : Entity_Id)
     is
        Body_Id : constant Entity_Id := Defining_Entity (N);
+       Level   : Entity_Id := Empty;
        Policy  : Name_Id := No_Name;
  
     begin
        --  A body becomes Ghost when it is subject to aspect or pragma Ghost
  
        if Is_Subject_To_Ghost (N) then
!          if Present (Spec_Id) then
!             Policy := Ghost_Policy_In_Effect (Spec_Id);
!             Level  := Ghost_Assertion_Level (Spec_Id);
!          else
!             Policy := Ghost_Policy_In_Effect (Body_Id);
!             Level  := Ghost_Assertion_Level (Body_Id);
!          end if;
  
        --  A body declared within a Ghost region is automatically Ghost
        --  (SPARK RM 6.9(2)).
  
        elsif Ghost_Config.Ghost_Mode = Check then
           Policy := Name_Check;
+          Level  := Ghost_Config.Ghost_Mode_Assertion_Level;
  
        elsif Ghost_Config.Ghost_Mode = Ignore then
           Policy := Name_Ignore;
+          Level  := Ghost_Config.Ghost_Mode_Assertion_Level;
  
        --  Inherit the "ghostness" of the previous declaration when the body
        --  acts as a completion.
*************** package body Ghost is
*** 1520,1525 ****
--- 2014,2021 ----
           elsif Is_Ignored_Ghost_Entity (Spec_Id) then
              Policy := Name_Ignore;
           end if;
+ 
+          Level := Ghost_Assertion_Level (Spec_Id);
        end if;
  
        --  The Ghost policy in effect at the point of declaration and at the
*************** package body Ghost is
*** 1529,1541 ****
          (Prev_Id  => Spec_Id,
           Compl_Id => Body_Id);
  
        --  Mark the body as its formals as Ghost
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy);
  
        --  Install the appropriate Ghost region
  
!       Install_Ghost_Region (Policy, N);
     end Mark_And_Set_Ghost_Body;
  
     -----------------------------------
--- 2025,2041 ----
          (Prev_Id  => Spec_Id,
           Compl_Id => Body_Id);
  
+       if Present (Level) then
+          Set_Ghost_Assertion_Level (Body_Id, Level);
+       end if;
+ 
        --  Mark the body as its formals as Ghost
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy, Level);
  
        --  Install the appropriate Ghost region
  
!       Install_Ghost_Region (Policy, N, Level);
     end Mark_And_Set_Ghost_Body;
  
     -----------------------------------
*************** package body Ghost is
*** 1547,1552 ****
--- 2047,2053 ----
        Prev_Id : Entity_Id)
     is
        Compl_Id : constant Entity_Id := Defining_Entity (N);
+       Level    : Entity_Id := Empty;
        Policy   : Name_Id := No_Name;
  
     begin
*************** package body Ghost is
*** 1555,1572 ****
--- 2056,2077 ----
  
        if Ghost_Config.Ghost_Mode = Check then
           Policy := Name_Check;
+          Level  := Ghost_Config.Ghost_Mode_Assertion_Level;
  
        elsif Ghost_Config.Ghost_Mode = Ignore then
           Policy := Name_Ignore;
+          Level  := Ghost_Config.Ghost_Mode_Assertion_Level;
  
        --  The completion becomes Ghost when its initial declaration is also
        --  Ghost.
  
        elsif Is_Checked_Ghost_Entity (Prev_Id) then
           Policy := Name_Check;
+          Level  := Ghost_Assertion_Level (Prev_Id);
  
        elsif Is_Ignored_Ghost_Entity (Prev_Id) then
           Policy := Name_Ignore;
+          Level  := Ghost_Assertion_Level (Prev_Id);
        end if;
  
        --  The Ghost policy in effect at the point of declaration and at the
*************** package body Ghost is
*** 1578,1588 ****
  
        --  Mark the completion as Ghost
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy);
  
        --  Install the appropriate Ghost region
  
!       Install_Ghost_Region (Policy, N);
     end Mark_And_Set_Ghost_Completion;
  
     ------------------------------------
--- 2083,2093 ----
  
        --  Mark the completion as Ghost
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy, Level);
  
        --  Install the appropriate Ghost region
  
!       Install_Ghost_Region (Policy, N, Level);
     end Mark_And_Set_Ghost_Completion;
  
     ------------------------------------
*************** package body Ghost is
*** 1590,1595 ****
--- 2095,2101 ----
     ------------------------------------
  
     procedure Mark_And_Set_Ghost_Declaration (N : Node_Id) is
+       Level  : Entity_Id := Empty;
        Par_Id : Entity_Id;
        Policy : Name_Id := No_Name;
  
*************** package body Ghost is
*** 1597,1626 ****
        --  A declaration becomes Ghost when it is subject to aspect or pragma
        --  Ghost.
  
!       if Is_Subject_To_Ghost (N) then
!          Policy := Policy_In_Effect (Name_Ghost);
  
        --  A declaration elaborated in a Ghost region is automatically Ghost
        --  (SPARK RM 6.9(2)).
  
        elsif Ghost_Config.Ghost_Mode = Check then
           Policy := Name_Check;
  
        elsif Ghost_Config.Ghost_Mode = Ignore then
           Policy := Name_Ignore;
  
        --  A child package or subprogram declaration becomes Ghost when its
        --  parent is Ghost (SPARK RM 6.9(2)).
  
!       elsif Nkind (N) in N_Generic_Function_Renaming_Declaration
!                        | N_Generic_Package_Declaration
!                        | N_Generic_Package_Renaming_Declaration
!                        | N_Generic_Procedure_Renaming_Declaration
!                        | N_Generic_Subprogram_Declaration
!                        | N_Package_Declaration
!                        | N_Package_Renaming_Declaration
!                        | N_Subprogram_Declaration
!                        | N_Subprogram_Renaming_Declaration
          and then Present (Parent_Spec (N))
        then
           Par_Id := Defining_Entity (Unit (Parent_Spec (N)));
--- 2103,2143 ----
        --  A declaration becomes Ghost when it is subject to aspect or pragma
        --  Ghost.
  
!       Level := Get_Ghost_Assertion_Level (N);
! 
!       --  A valid assertion level from an explicit pragma or aspect ghost
!       --  indicates the explicit ghostlyness of the declaration. Otherwise the
!       --  ghostliness of the declaration should be handled by other means like
!       --  the region.
! 
!       if Present (Level) then
!          Policy :=
!            Policy_In_Effect (Name_Ghost, Assertion_Level_To_Name (Level));
  
        --  A declaration elaborated in a Ghost region is automatically Ghost
        --  (SPARK RM 6.9(2)).
  
        elsif Ghost_Config.Ghost_Mode = Check then
           Policy := Name_Check;
+          Level := Ghost_Config.Ghost_Mode_Assertion_Level;
  
        elsif Ghost_Config.Ghost_Mode = Ignore then
           Policy := Name_Ignore;
+          Level := Ghost_Config.Ghost_Mode_Assertion_Level;
  
        --  A child package or subprogram declaration becomes Ghost when its
        --  parent is Ghost (SPARK RM 6.9(2)).
  
!       elsif Nkind (N)
!             in N_Generic_Function_Renaming_Declaration
!              | N_Generic_Package_Declaration
!              | N_Generic_Package_Renaming_Declaration
!              | N_Generic_Procedure_Renaming_Declaration
!              | N_Generic_Subprogram_Declaration
!              | N_Package_Declaration
!              | N_Package_Renaming_Declaration
!              | N_Subprogram_Declaration
!              | N_Subprogram_Renaming_Declaration
          and then Present (Parent_Spec (N))
        then
           Par_Id := Defining_Entity (Unit (Parent_Spec (N)));
*************** package body Ghost is
*** 1631,1645 ****
           elsif Is_Ignored_Ghost_Entity (Par_Id) then
              Policy := Name_Ignore;
           end if;
        end if;
  
        --  Mark the declaration and its formals as Ghost
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy);
  
        --  Install the appropriate Ghost region
  
!       Install_Ghost_Region (Policy, N);
     end Mark_And_Set_Ghost_Declaration;
  
     --------------------------------------
--- 2148,2166 ----
           elsif Is_Ignored_Ghost_Entity (Par_Id) then
              Policy := Name_Ignore;
           end if;
+ 
+          Level := Ghost_Assertion_Level (Par_Id);
        end if;
  
        --  Mark the declaration and its formals as Ghost
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy, Level);
! 
!       Check_Valid_Ghost_Declaration (N);
  
        --  Install the appropriate Ghost region
  
!       Install_Ghost_Region (Policy, N, Level);
     end Mark_And_Set_Ghost_Declaration;
  
     --------------------------------------
*************** package body Ghost is
*** 1687,1729 ****
  
        --  Local variables
  
        Policy : Name_Id := No_Name;
  
     begin
        --  An instantiation becomes Ghost when it is subject to pragma Ghost
  
        if Is_Subject_To_Ghost (N) then
!          Policy := Policy_In_Effect (Name_Ghost);
  
        --  An instantiation declaration within a Ghost region is automatically
        --  Ghost (SPARK RM 6.9(2)).
  
        elsif Ghost_Config.Ghost_Mode = Check then
           Policy := Name_Check;
  
        elsif Ghost_Config.Ghost_Mode = Ignore then
           Policy := Name_Ignore;
  
        --  Inherit the "ghostness" of the generic unit, but the current Ghost
        --  policy is the relevant one for the instantiation.
  
!       elsif Is_Checked_Ghost_Entity (Gen_Id)
!         or else Is_Ignored_Ghost_Entity (Gen_Id)
!       then
!          Policy := Policy_In_Effect (Name_Ghost);
  
           if Policy = No_Name then
              Policy := Name_Ignore;
           end if;
        end if;
  
        --  Mark the instantiation as Ghost
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy);
  
        --  Install the appropriate Ghost region
  
!       Install_Ghost_Region (Policy, N);
  
        --  Check Ghost actuals. Given that this routine is unconditionally
        --  invoked with subprogram and package instantiations, this check
--- 2208,2253 ----
  
        --  Local variables
  
+       Level  : Entity_Id := Empty;
        Policy : Name_Id := No_Name;
  
     begin
        --  An instantiation becomes Ghost when it is subject to pragma Ghost
  
        if Is_Subject_To_Ghost (N) then
!          Policy := Ghost_Policy_In_Effect (Gen_Id);
  
        --  An instantiation declaration within a Ghost region is automatically
        --  Ghost (SPARK RM 6.9(2)).
  
        elsif Ghost_Config.Ghost_Mode = Check then
           Policy := Name_Check;
+          Level  := Ghost_Config.Ghost_Mode_Assertion_Level;
  
        elsif Ghost_Config.Ghost_Mode = Ignore then
           Policy := Name_Ignore;
+          Level  := Ghost_Config.Ghost_Mode_Assertion_Level;
  
        --  Inherit the "ghostness" of the generic unit, but the current Ghost
        --  policy is the relevant one for the instantiation.
  
!       elsif Is_Ghost_Entity (Gen_Id) then
!          Policy := Ghost_Policy_In_Effect (Gen_Id);
  
           if Policy = No_Name then
              Policy := Name_Ignore;
           end if;
+ 
+          Level := Ghost_Assertion_Level (Gen_Id);
        end if;
  
        --  Mark the instantiation as Ghost
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy, Level);
  
        --  Install the appropriate Ghost region
  
!       Install_Ghost_Region (Policy, N, Level);
  
        --  Check Ghost actuals. Given that this routine is unconditionally
        --  invoked with subprogram and package instantiations, this check
*************** package body Ghost is
*** 1739,1763 ****
  
     procedure Mark_And_Set_Ghost_Procedure_Call (N : Node_Id) is
        Id : Entity_Id;
- 
     begin
        --  A procedure call becomes Ghost when the procedure being invoked is
        --  Ghost. Install the Ghost mode of the procedure.
  
        Id := Get_Enclosing_Ghost_Entity (Name (N));
  
!       if Present (Id) then
!          if Is_Checked_Ghost_Entity (Id) then
!             Install_Ghost_Region (Check, N);
  
!          elsif Is_Ignored_Ghost_Entity (Id) then
!             Install_Ghost_Region (Ignore, N);
  
!             Set_Is_Ignored_Ghost_Node (N);
!             Record_Ignored_Ghost_Node (N);
!          end if;
        end if;
!    end Mark_And_Set_Ghost_Procedure_Call;
  
     -----------------------
     -- Mark_Ghost_Clause --
--- 2263,2301 ----
  
     procedure Mark_And_Set_Ghost_Procedure_Call (N : Node_Id) is
        Id : Entity_Id;
     begin
        --  A procedure call becomes Ghost when the procedure being invoked is
        --  Ghost. Install the Ghost mode of the procedure.
  
        Id := Get_Enclosing_Ghost_Entity (Name (N));
  
!       Mark_And_Set_Ghost_Region (N, Id);
!    end Mark_And_Set_Ghost_Procedure_Call;
  
!    -------------------------------
!    -- Mark_And_Set_Ghost_Region --
!    -------------------------------
  
!    procedure Mark_And_Set_Ghost_Region (N : Node_Id; Id : Entity_Id) is
!       Id_Policy : Name_Id;
!    begin
!       --  Nothing to do if we are not dealing with a ghost entity
! 
!       if No (Id) or else not Is_Ghost_Entity (Id) then
!          return;
        end if;
! 
!       Id_Policy := Ghost_Policy_In_Effect (Id);
! 
!       if Id_Policy = Name_Check then
!          Install_Ghost_Region (Check, N, Ghost_Assertion_Level (Id));
! 
!       elsif Id_Policy = Name_Ignore then
!          Install_Ghost_Region (Ignore, N, Ghost_Assertion_Level (Id));
!          Set_Is_Ignored_Ghost_Node (N);
!          Record_Ignored_Ghost_Node (N);
!       end if;
!    end Mark_And_Set_Ghost_Region;
  
     -----------------------
     -- Mark_Ghost_Clause --
*************** package body Ghost is
*** 1780,1786 ****
        if Present (Nam)
          and then Is_Entity_Name (Nam)
          and then Present (Entity (Nam))
!         and then Is_Ignored_Ghost_Entity (Entity (Nam))
        then
           Set_Is_Ignored_Ghost_Node (N);
           Record_Ignored_Ghost_Node (N);
--- 2318,2324 ----
        if Present (Nam)
          and then Is_Entity_Name (Nam)
          and then Present (Entity (Nam))
!         and then Is_Ignored_Ghost_Entity_In_Codegen (Entity (Nam))
        then
           Set_Is_Ignored_Ghost_Node (N);
           Record_Ignored_Ghost_Node (N);
*************** package body Ghost is
*** 1792,1799 ****
     ------------------------------------
  
     procedure Mark_Ghost_Declaration_Or_Body
!      (N    : Node_Id;
!       Mode : Name_Id)
     is
        Id : constant Entity_Id := Defining_Entity (N);
  
--- 2330,2338 ----
     ------------------------------------
  
     procedure Mark_Ghost_Declaration_Or_Body
!      (N     : Node_Id;
!       Mode  : Name_Id;
!       Level : Entity_Id)
     is
        Id : constant Entity_Id := Defining_Entity (N);
  
*************** package body Ghost is
*** 1801,1816 ****
        Param        : Node_Id;
        Param_Id     : Entity_Id;
  
     begin
!       --  Mark the related node and its entity
  
        if Mode = Name_Check then
           Mark_Formals := True;
!          Set_Is_Checked_Ghost_Entity (Id);
  
        elsif Mode = Name_Ignore then
           Mark_Formals := True;
!          Set_Is_Ignored_Ghost_Entity (Id);
           Set_Is_Ignored_Ghost_Node (N);
           Record_Ignored_Ghost_Node (N);
        end if;
--- 2340,2384 ----
        Param        : Node_Id;
        Param_Id     : Entity_Id;
  
+       procedure Mark_And_Set_Is_Checked_Ghost_Entity (E : Entity_Id);
+       --  Sets Is_Checked_Ghost_Entity, unsets Is_Ignored_Ghost_Entity
+ 
+       procedure Mark_And_Set_Is_Ignored_Ghost_Entity (E : Entity_Id);
+       --  Sets Is_Ignored_Ghost_Entity, unsets Is_Checked_Ghost_Entity
+ 
+       ------------------------------------------
+       -- Mark_And_Set_Is_Checked_Ghost_Entity --
+       ------------------------------------------
+ 
+       procedure Mark_And_Set_Is_Checked_Ghost_Entity (E : Entity_Id) is
+       begin
+          Set_Is_Checked_Ghost_Entity (E, True);
+          Set_Is_Ignored_Ghost_Entity (E, False);
+       end Mark_And_Set_Is_Checked_Ghost_Entity;
+ 
+       ------------------------------------------
+       -- Mark_And_Set_Is_Ignored_Ghost_Entity --
+       ------------------------------------------
+ 
+       procedure Mark_And_Set_Is_Ignored_Ghost_Entity (E : Entity_Id) is
+       begin
+          Set_Is_Checked_Ghost_Entity (E, False);
+          Set_Is_Ignored_Ghost_Entity (E, True);
+       end Mark_And_Set_Is_Ignored_Ghost_Entity;
+ 
+    --  Start of processing for Mark_Ghost_Declaration_Or_Body
+ 
     begin
!       Set_Ghost_Assertion_Level (Id, Level);
  
        if Mode = Name_Check then
           Mark_Formals := True;
!          Mark_And_Set_Is_Checked_Ghost_Entity (Id);
  
        elsif Mode = Name_Ignore then
           Mark_Formals := True;
!          Mark_And_Set_Is_Ignored_Ghost_Entity (Id);
! 
           Set_Is_Ignored_Ghost_Node (N);
           Record_Ignored_Ghost_Node (N);
        end if;
*************** package body Ghost is
*** 1835,1845 ****
           while Present (Param) loop
              Param_Id := Defining_Entity (Param);
  
              if Mode = Name_Check then
!                Set_Is_Checked_Ghost_Entity (Param_Id);
  
              elsif Mode = Name_Ignore then
!                Set_Is_Ignored_Ghost_Entity (Param_Id);
              end if;
  
              Next (Param);
--- 2403,2415 ----
           while Present (Param) loop
              Param_Id := Defining_Entity (Param);
  
+             Set_Ghost_Assertion_Level (Param_Id, Level);
+ 
              if Mode = Name_Check then
!                Mark_And_Set_Is_Checked_Ghost_Entity (Param_Id);
  
              elsif Mode = Name_Ignore then
!                Mark_And_Set_Is_Ignored_Ghost_Entity (Param_Id);
              end if;
  
              Next (Param);
*************** package body Ghost is
*** 1891,1897 ****
        Id : Entity_Id)
     is
        Policy : Name_Id := No_Name;
! 
     begin
        --  A renaming becomes Ghost when it renames a Ghost entity
  
--- 2461,2467 ----
        Id : Entity_Id)
     is
        Policy : Name_Id := No_Name;
!       Level  : constant Entity_Id := Ghost_Assertion_Level (Id);
     begin
        --  A renaming becomes Ghost when it renames a Ghost entity
  
*************** package body Ghost is
*** 1902,1908 ****
           Policy := Name_Ignore;
        end if;
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy);
     end Mark_Ghost_Renaming;
  
     ------------------------
--- 2472,2478 ----
           Policy := Name_Ignore;
        end if;
  
!       Mark_Ghost_Declaration_Or_Body (N, Policy, Level);
     end Mark_Ghost_Renaming;
  
     ------------------------
*************** package body Ghost is
*** 2036,2054 ****
        --------------------------------
  
        procedure Set_Ghost_Mode_From_Entity (Id : Entity_Id) is
        begin
           if Is_Checked_Ghost_Entity (Id) then
!             Install_Ghost_Mode (Check);
           elsif Is_Ignored_Ghost_Entity (Id) then
!             Install_Ghost_Mode (Ignore);
           else
!             Install_Ghost_Mode (None);
           end if;
        end Set_Ghost_Mode_From_Entity;
  
        --  Local variables
  
!       Id : Entity_Id;
  
     --  Start of processing for Set_Ghost_Mode
  
--- 2606,2626 ----
        --------------------------------
  
        procedure Set_Ghost_Mode_From_Entity (Id : Entity_Id) is
+          Level : constant Entity_Id := Ghost_Assertion_Level (Id);
        begin
           if Is_Checked_Ghost_Entity (Id) then
!             Install_Ghost_Region (Check, N, Level);
           elsif Is_Ignored_Ghost_Entity (Id) then
!             Install_Ghost_Region (Ignore, N, Level);
           else
!             Install_Ghost_Region (None, N, Level);
           end if;
        end Set_Ghost_Mode_From_Entity;
  
        --  Local variables
  
!       Id    : Entity_Id;
!       Level : Entity_Id;
  
     --  Start of processing for Set_Ghost_Mode
  
*************** package body Ghost is
*** 2084,2095 ****
        --  property is encoded in the pragma itself.
  
        elsif Nkind (N) = N_Pragma then
           if Is_Checked_Ghost_Pragma (N) then
!             Install_Ghost_Mode (Check);
           elsif Is_Ignored_Ghost_Pragma (N) then
!             Install_Ghost_Mode (Ignore);
           else
!             Install_Ghost_Mode (None);
           end if;
  
        --  The Ghost mode of a procedure call depends on the Ghost mode of the
--- 2656,2668 ----
        --  property is encoded in the pragma itself.
  
        elsif Nkind (N) = N_Pragma then
+          Level := Pragma_Ghost_Assertion_Level (N);
           if Is_Checked_Ghost_Pragma (N) then
!             Install_Ghost_Region (Check, N, Level);
           elsif Is_Ignored_Ghost_Pragma (N) then
!             Install_Ghost_Region (Ignore, N, Level);
           else
!             Install_Ghost_Region (None, N, Level);
           end if;
  
        --  The Ghost mode of a procedure call depends on the Ghost mode of the
*************** package body Ghost is
*** 2109,2115 ****
     -------------------------
  
     procedure Set_Is_Ghost_Entity (Id : Entity_Id) is
!       Policy : constant Name_Id := Policy_In_Effect (Name_Ghost);
     begin
        if Policy = Name_Check then
           Set_Is_Checked_Ghost_Entity (Id);
--- 2682,2688 ----
     -------------------------
  
     procedure Set_Is_Ghost_Entity (Id : Entity_Id) is
!       Policy : constant Name_Id := Ghost_Policy_In_Effect (Id);
     begin
        if Policy = Name_Check then
           Set_Is_Checked_Ghost_Entity (Id);
diff -Nrcpad gcc-16-20250907/gcc/ada/ghost.ads gcc-16-20250914/gcc/ada/ghost.ads
*** gcc-16-20250907/gcc/ada/ghost.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/ghost.ads	Sun Sep 14 22:32:07 2025
*************** with Types; use Types;
*** 32,37 ****
--- 32,47 ----
  
  package Ghost is
  
+    function Assertion_Level_From_Arg (Arg : Node_Id) return Entity_Id;
+    --  Returns the assertion level for the given pragma or aspect based on
+    --  the argument Arg. Which is either
+    --
+    --  * Standard_Level_Default if there was no argument or the argument
+    --    evaluated to True.
+    --  * Assertion_Level if the argument was referencing a user defined
+    --    Assertion_Level.
+    --  * Empty othrwise since we are not dealing with a ghost entity.
+ 
     procedure Check_Ghost_Completion
       (Prev_Id  : Entity_Id;
        Compl_Id : Entity_Id);
*************** package Ghost is
*** 90,96 ****
        Constit    : Node_Id;
        Constit_Id : Entity_Id);
     --  Verify that the Ghost policy of constituent Constit_Id is compatible
!    --  with the Ghost policy of abstract state State_I.
  
     procedure Check_Ghost_Type (Typ : Entity_Id);
     --  Verify that Ghost type Typ is neither concurrent, nor effectively
--- 100,108 ----
        Constit    : Node_Id;
        Constit_Id : Entity_Id);
     --  Verify that the Ghost policy of constituent Constit_Id is compatible
!    --  with the Ghost policy of abstract state State_Id.
!    --
!    --  Additionally verify that the Ghost_Assertion_Levels are compatible.
  
     procedure Check_Ghost_Type (Typ : Entity_Id);
     --  Verify that Ghost type Typ is neither concurrent, nor effectively
*************** package Ghost is
*** 102,112 ****
     procedure Initialize;
     --  Initialize internal tables
  
!    procedure Install_Ghost_Region (Mode : Ghost_Mode_Type; N : Node_Id);
     pragma Inline (Install_Ghost_Region);
     --  Install a Ghost region described by mode Mode and ignored region start
     --  node N.
  
     function Is_Ghost_Assignment (N : Node_Id) return Boolean;
     --  Determine whether arbitrary node N denotes an assignment statement whose
     --  target is a Ghost entity.
--- 114,136 ----
     procedure Initialize;
     --  Initialize internal tables
  
!    procedure Install_Ghost_Region
!      (Mode  : Ghost_Mode_Type;
!       N     : Node_Id;
!       Level : Entity_Id);
     pragma Inline (Install_Ghost_Region);
     --  Install a Ghost region described by mode Mode and ignored region start
     --  node N.
  
+    function Is_Assertion_Level_Dependent
+       (Self : Entity_Id; Other : Entity_Id) return Boolean;
+    --  Check that assertion level Self is assertion-level-dependent with Other.
+    --
+    --  According to SPARK RM 6.9(5) this means that
+    --  * Either Self or Other has the default assertion level.
+    --  * Self either is or depends on Other
+    --  * Self either is or depends on Static
+ 
     function Is_Ghost_Assignment (N : Node_Id) return Boolean;
     --  Determine whether arbitrary node N denotes an assignment statement whose
     --  target is a Ghost entity.
diff -Nrcpad gcc-16-20250907/gcc/ada/gnat1drv.adb gcc-16-20250914/gcc/ada/gnat1drv.adb
*** gcc-16-20250907/gcc/ada/gnat1drv.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gnat1drv.adb	Sun Sep 14 22:32:07 2025
*************** procedure Gnat1drv is
*** 175,180 ****
--- 175,186 ----
           Disable_ALI_File := True;
        end if;
  
+       --  -gnatd_o disables backend overflow checks on target; used for testing
+ 
+       if Debug_Flag_Underscore_O then
+          Backend_Overflow_Checks_On_Target := False;
+       end if;
+ 
        --  -gnatd.E sets Error_To_Warning mode, causing selected error messages
        --  to be treated as warnings instead of errors.
  
diff -Nrcpad gcc-16-20250907/gcc/ada/gnat_rm.texi gcc-16-20250914/gcc/ada/gnat_rm.texi
*** gcc-16-20250907/gcc/ada/gnat_rm.texi	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gnat_rm.texi	Sun Sep 14 22:32:07 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT Reference Manual , Jul 24, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT Reference Manual , Sep 05, 2025
  
  AdaCore
  
*************** Curated Extensions
*** 908,913 ****
--- 908,914 ----
  * Constrained attribute for generic objects:: 
  * Static aspect on intrinsic functions:: 
  * First Controlling Parameter:: 
+ * Unsigned_Base_Range aspect:: 
  
  Deep delta Aggregates
  
*************** Features activated via @code{-gnatX} or
*** 30513,30518 ****
--- 30514,30520 ----
  * Constrained attribute for generic objects:: 
  * Static aspect on intrinsic functions:: 
  * First Controlling Parameter:: 
+ * Unsigned_Base_Range aspect:: 
  
  @end menu
  
*************** The Ada 202x @code{Static} aspect can be
*** 31115,31121 ****
  and the compiler will evaluate some of these intrinsics statically, in
  particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
! @node First Controlling Parameter,,Static aspect on intrinsic functions,Curated Extensions
  @anchor{gnat_rm/gnat_language_extensions first-controlling-parameter}@anchor{457}
  @subsection First Controlling Parameter
  
--- 31117,31123 ----
  and the compiler will evaluate some of these intrinsics statically, in
  particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
! @node First Controlling Parameter,Unsigned_Base_Range aspect,Static aspect on intrinsic functions,Curated Extensions
  @anchor{gnat_rm/gnat_language_extensions first-controlling-parameter}@anchor{457}
  @subsection First Controlling Parameter
  
*************** overriding a primitive or creating new o
*** 31215,31222 ****
  The result of a function is never a controlling result.
  @end itemize
  
  @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6b}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{458}
  @section Experimental Language Extensions
  
  
--- 31217,31250 ----
  The result of a function is never a controlling result.
  @end itemize
  
+ @node Unsigned_Base_Range aspect,,First Controlling Parameter,Curated Extensions
+ @anchor{gnat_rm/gnat_language_extensions unsigned-base-range-aspect}@anchor{458}
+ @subsection @code{Unsigned_Base_Range} aspect
+ 
+ 
+ A new pragma/aspect, @code{Unsigned_Base_Range}, is introduced to explicitly
+ enforce the use of an unsigned base type for signed integer types.
+ RM-3.5.4(9) mandates a symmetric base range for signed integer types. This
+ requirement often requires the use of larger data types for arithmetic
+ operations, potentially introducing undesirable run-time overhead and
+ performance penalties, particularly in embedded systems. For instance,
+ on a 64-bit architecture, a 64-bit multiplication can be performed with
+ a single hardware instruction, whereas a 128-bit multiplication requires
+ multiple instructions and intermediate steps.
+ 
+ Here is an example of this feature:
+ 
+ @example
+ type Uns_64 is range 0 .. 2 ** 64 - 1
+   with Size => 64,
+        Unsigned_Base_Range => True;
+ @end example
+ 
+ It ensures that arithmetic operations of type @code{Uns_64} are carried
+ out using 64 bits.
+ 
  @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6b}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{459}
  @section Experimental Language Extensions
  
  
*************** Features activated via @code{-gnatX0} or
*** 31242,31248 ****
  @end menu
  
  @node Conditional when constructs,Implicit With,,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{459}
  @subsection Conditional when constructs
  
  
--- 31270,31276 ----
  @end menu
  
  @node Conditional when constructs,Implicit With,,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{45a}
  @subsection Conditional when constructs
  
  
*************** end;
*** 31311,31317 ****
  @end example
  
  @node Implicit With,Storage Model,Conditional when constructs,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions implicit-with}@anchor{45a}
  @subsection Implicit With
  
  
--- 31339,31345 ----
  @end example
  
  @node Implicit With,Storage Model,Conditional when constructs,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions implicit-with}@anchor{45b}
  @subsection Implicit With
  
  
*************** end;
*** 31328,31334 ****
  @end example
  
  @node Storage Model,Attribute Super,Implicit With,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{45b}
  @subsection Storage Model
  
  
--- 31356,31362 ----
  @end example
  
  @node Storage Model,Attribute Super,Implicit With,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{45c}
  @subsection Storage Model
  
  
*************** memory models, in particular to support
*** 31345,31351 ****
  @end menu
  
  @node Aspect Storage_Model_Type,Aspect Designated_Storage_Model,,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-storage-model-type}@anchor{45c}
  @subsubsection Aspect Storage_Model_Type
  
  
--- 31373,31379 ----
  @end menu
  
  @node Aspect Storage_Model_Type,Aspect Designated_Storage_Model,,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-storage-model-type}@anchor{45d}
  @subsubsection Aspect Storage_Model_Type
  
  
*************** end CUDA_Memory;
*** 31479,31485 ****
  @end example
  
  @node Aspect Designated_Storage_Model,Legacy Storage Pools,Aspect Storage_Model_Type,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-designated-storage-model}@anchor{45d}
  @subsubsection Aspect Designated_Storage_Model
  
  
--- 31507,31513 ----
  @end example
  
  @node Aspect Designated_Storage_Model,Legacy Storage Pools,Aspect Storage_Model_Type,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-designated-storage-model}@anchor{45e}
  @subsubsection Aspect Designated_Storage_Model
  
  
*************** begin
*** 31557,31563 ****
  @end example
  
  @node Legacy Storage Pools,,Aspect Designated_Storage_Model,Storage Model
! @anchor{gnat_rm/gnat_language_extensions legacy-storage-pools}@anchor{45e}
  @subsubsection Legacy Storage Pools
  
  
--- 31585,31591 ----
  @end example
  
  @node Legacy Storage Pools,,Aspect Designated_Storage_Model,Storage Model
! @anchor{gnat_rm/gnat_language_extensions legacy-storage-pools}@anchor{45f}
  @subsubsection Legacy Storage Pools
  
  
*************** type Acc is access Integer_Array with St
*** 31608,31614 ****
  can still be accepted as a shortcut for the new syntax.
  
  @node Attribute Super,Simpler Accessibility Model,Storage Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{45f}
  @subsection Attribute Super
  
  
--- 31636,31642 ----
  can still be accepted as a shortcut for the new syntax.
  
  @node Attribute Super,Simpler Accessibility Model,Storage Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{460}
  @subsection Attribute Super
  
  
*************** end;
*** 31643,31649 ****
  @end example
  
  @node Simpler Accessibility Model,Case pattern matching,Attribute Super,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{460}
  @subsection Simpler Accessibility Model
  
  
--- 31671,31677 ----
  @end example
  
  @node Simpler Accessibility Model,Case pattern matching,Attribute Super,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{461}
  @subsection Simpler Accessibility Model
  
  
*************** All of the refined rules are compatible
*** 31674,31680 ****
  @end menu
  
  @node Stand-alone objects,Subprogram parameters,,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions stand-alone-objects}@anchor{461}
  @subsubsection Stand-alone objects
  
  
--- 31702,31708 ----
  @end menu
  
  @node Stand-alone objects,Subprogram parameters,,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions stand-alone-objects}@anchor{462}
  @subsubsection Stand-alone objects
  
  
*************** of the RM 4.6 rule “The accessibility
*** 31722,31728 ****
  statically deeper than that of the target type …”.
  
  @node Subprogram parameters,Function results,Stand-alone objects,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions subprogram-parameters}@anchor{462}
  @subsubsection Subprogram parameters
  
  
--- 31750,31756 ----
  statically deeper than that of the target type …”.
  
  @node Subprogram parameters,Function results,Stand-alone objects,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions subprogram-parameters}@anchor{463}
  @subsubsection Subprogram parameters
  
  
*************** end;
*** 31815,31821 ****
  @end example
  
  @node Function results,,Subprogram parameters,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions function-results}@anchor{463}
  @subsubsection Function results
  
  
--- 31843,31849 ----
  @end example
  
  @node Function results,,Subprogram parameters,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions function-results}@anchor{464}
  @subsubsection Function results
  
  
*************** end;
*** 31943,31949 ****
  @end example
  
  @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler Accessibility Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{464}
  @subsection Case pattern matching
  
  
--- 31971,31977 ----
  @end example
  
  @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler Accessibility Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{465}
  @subsection Case pattern matching
  
  
*************** message generated in such cases is usual
*** 32073,32079 ****
  case statement with composite selector type”.
  
  @node Mutably Tagged Types with Size’Class Aspect,Generalized Finalization,Case pattern matching,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{465}
  @subsection Mutably Tagged Types with Size’Class Aspect
  
  
--- 32101,32107 ----
  case statement with composite selector type”.
  
  @node Mutably Tagged Types with Size’Class Aspect,Generalized Finalization,Case pattern matching,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{466}
  @subsection Mutably Tagged Types with Size’Class Aspect
  
  
*************** parameter exists (that is, before leavin
*** 32244,32250 ****
  This is analogous to the RM 6.4.1(18) rule about discriminated parameters.
  
  @node Generalized Finalization,No_Raise aspect,Mutably Tagged Types with Size’Class Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions generalized-finalization}@anchor{466}
  @subsection Generalized Finalization
  
  
--- 32272,32278 ----
  This is analogous to the RM 6.4.1(18) rule about discriminated parameters.
  
  @node Generalized Finalization,No_Raise aspect,Mutably Tagged Types with Size’Class Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions generalized-finalization}@anchor{467}
  @subsection Generalized Finalization
  
  
*************** in this case.
*** 32315,32321 ****
  
  @item 
  The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{467,,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
--- 32343,32349 ----
  
  @item 
  The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{468,,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
*************** end P;
*** 32376,32382 ****
  @end menu
  
  @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{468}
  @subsubsection Finalizable tagged types
  
  
--- 32404,32410 ----
  @end menu
  
  @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{469}
  @subsubsection Finalizable tagged types
  
  
*************** dispatching whenever it makes sense, i.e
*** 32386,32392 ****
  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{469}
  @subsubsection Composite types
  
  
--- 32414,32420 ----
  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{46a}
  @subsubsection Composite types
  
  
*************** in order to call the primitives of their
*** 32396,32402 ****
  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{46a}
  @subsubsection Interoperability with controlled types
  
  
--- 32424,32430 ----
  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{46b}
  @subsubsection Interoperability with controlled types
  
  
*************** versa, but the stricter dynamic semantic
*** 32406,32412 ****
  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{46b}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{467}
  @subsection No_Raise aspect
  
  
--- 32434,32440 ----
  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{46c}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{468}
  @subsection No_Raise aspect
  
  
*************** be raised during the execution of the su
*** 32416,32422 ****
  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{46c}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
--- 32444,32450 ----
  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{46d}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
*************** package Int_Array_Operations is new Arra
*** 32493,32499 ****
  @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
  
  
--- 32521,32527 ----
  @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{46e}
  @subsection External_Initialization Aspect
  
  
*************** The maximum size of loaded files is limi
*** 32534,32540 ****
  @end cartouche
  
  @node Finally construct,Continue statement,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{46e}
  @subsection Finally construct
  
  
--- 32562,32568 ----
  @end cartouche
  
  @node Finally construct,Continue statement,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{46f}
  @subsection Finally construct
  
  
*************** This feature is similar to the one with
*** 32551,32557 ****
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{46f}
  @subsubsection Syntax
  
  
--- 32579,32585 ----
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{470}
  @subsubsection Syntax
  
  
*************** handled_sequence_of_statements ::=
*** 32566,32572 ****
  @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
  
  
--- 32594,32600 ----
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{471}
  @subsubsection Legality Rules
  
  
*************** to be transferred outside the finally pa
*** 32576,32582 ****
  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
  
  
--- 32604,32610 ----
  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{472}
  @subsubsection Dynamic Semantics
  
  
*************** execution, that is the finally block mus
*** 32591,32597 ****
  aborted, or if the control is transferred out of the block.
  
  @node Continue statement,Destructors,Finally construct,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions continue-statement}@anchor{472}
  @subsection Continue statement
  
  
--- 32619,32625 ----
  aborted, or if the control is transferred out of the block.
  
  @node Continue statement,Destructors,Finally construct,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions continue-statement}@anchor{473}
  @subsection Continue statement
  
  
*************** Note that @code{continue} is a keyword b
*** 32609,32615 ****
  configuration that does not exist in standard Ada.
  
  @node Destructors,,Continue statement,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions destructors}@anchor{473}
  @subsection Destructors
  
  
--- 32637,32643 ----
  configuration that does not exist in standard Ada.
  
  @node Destructors,,Continue statement,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions destructors}@anchor{474}
  @subsection Destructors
  
  
*************** imposing that rule on outside types that
*** 32679,32685 ****
  type.
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{474}@anchor{gnat_rm/security_hardening_features id1}@anchor{475}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
--- 32707,32713 ----
  type.
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{475}@anchor{gnat_rm/security_hardening_features id1}@anchor{476}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
*************** change.
*** 32701,32707 ****
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{476}
  @section Register Scrubbing
  
  
--- 32729,32735 ----
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{477}
  @section Register Scrubbing
  
  
*************** programming languages, see @cite{Using t
*** 32737,32743 ****
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{477}
  @section Stack Scrubbing
  
  
--- 32765,32771 ----
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{478}
  @section Stack Scrubbing
  
  
*************** Bar_Callable_Ptr.
*** 32881,32887 ****
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{478}
  @section Hardened Conditionals
  
  
--- 32909,32915 ----
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{479}
  @section Hardened Conditionals
  
  
*************** be used with other programming languages
*** 32971,32977 ****
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{479}
  @section Hardened Booleans
  
  
--- 32999,33005 ----
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{47a}
  @section Hardened Booleans
  
  
*************** and more details on that attribute, see
*** 33032,33038 ****
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{47a}
  @section Control Flow Redundancy
  
  
--- 33060,33066 ----
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{47b}
  @section Control Flow Redundancy
  
  
*************** see @cite{Using the GNU Compiler Collect
*** 33200,33206 ****
  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{47b}@anchor{gnat_rm/obsolescent_features id1}@anchor{47c}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
--- 33228,33234 ----
  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{47c}@anchor{gnat_rm/obsolescent_features id1}@anchor{47d}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
*************** compatibility purposes.
*** 33219,33225 ****
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{47d}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{47e}
  @section pragma No_Run_Time
  
  
--- 33247,33253 ----
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{47e}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{47f}
  @section pragma No_Run_Time
  
  
*************** preferred usage is to use an appropriate
*** 33232,33238 ****
  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{47f}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{480}
  @section pragma Ravenscar
  
  
--- 33260,33266 ----
  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{480}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{481}
  @section pragma Ravenscar
  
  
*************** The pragma @code{Ravenscar} has exactly
*** 33241,33247 ****
  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{481}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{482}
  @section pragma Restricted_Run_Time
  
  
--- 33269,33275 ----
  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{482}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{483}
  @section pragma Restricted_Run_Time
  
  
*************** preferred since the Ada 2005 pragma @cod
*** 33251,33257 ****
  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{483}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{484}
  @section pragma Task_Info
  
  
--- 33279,33285 ----
  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{484}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{485}
  @section pragma Task_Info
  
  
*************** in the spec of package System.Task_Info
*** 33277,33283 ****
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{485}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{486}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
--- 33305,33311 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{486}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{487}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
*************** to support the @code{Task_Info} pragma.
*** 33287,33293 ****
  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{487}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{488}
  @chapter Compatibility and Porting Guide
  
  
--- 33315,33321 ----
  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{488}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{489}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 33309,33315 ****
  @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{489}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{48a}
  @section Writing Portable Fixed-Point Declarations
  
  
--- 33337,33343 ----
  @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{48a}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{48b}
  @section Writing Portable Fixed-Point Declarations
  
  
*************** If you follow this scheme you will be gu
*** 33431,33437 ****
  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{48b}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{48c}
  @section Compatibility with Ada 83
  
  
--- 33459,33465 ----
  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{48c}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{48d}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 33459,33465 ****
  @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{48d}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{48e}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
--- 33487,33493 ----
  @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{48e}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{48f}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** the fix is usually simply to add the @co
*** 33559,33565 ****
  @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{48f}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{490}
  @subsection More deterministic semantics
  
  
--- 33587,33593 ----
  @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{490}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{491}
  @subsection More deterministic semantics
  
  
*************** which open select branches are executed.
*** 33587,33593 ****
  @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{491}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{492}
  @subsection Changed semantics
  
  
--- 33615,33621 ----
  @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{492}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{493}
  @subsection Changed semantics
  
  
*************** covers only the restricted range.
*** 33629,33635 ****
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{493}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{494}
  @subsection Other language compatibility issues
  
  
--- 33657,33663 ----
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{494}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{495}
  @subsection Other language compatibility issues
  
  
*************** include @code{pragma Interface} and the
*** 33662,33668 ****
  @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{495}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{496}
  @section Compatibility between Ada 95 and Ada 2005
  
  
--- 33690,33696 ----
  @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{496}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{497}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** can declare a function returning a value
*** 33734,33740 ****
  @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{497}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{498}
  @section Implementation-dependent characteristics
  
  
--- 33762,33768 ----
  @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{498}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{499}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 33757,33763 ****
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{499}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{49a}
  @subsection Implementation-defined pragmas
  
  
--- 33785,33791 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{49a}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{49b}
  @subsection Implementation-defined pragmas
  
  
*************** avoiding compiler rejection of units tha
*** 33779,33785 ****
  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{49b}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{49c}
  @subsection Implementation-defined attributes
  
  
--- 33807,33813 ----
  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{49c}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{49d}
  @subsection Implementation-defined attributes
  
  
*************** Ada 83, GNAT supplies the attributes @co
*** 33793,33799 ****
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{49d}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{49e}
  @subsection Libraries
  
  
--- 33821,33827 ----
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{49e}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{49f}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 33822,33828 ****
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{49f}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{4a0}
  @subsection Elaboration order
  
  
--- 33850,33856 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{4a0}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{4a1}
  @subsection Elaboration order
  
  
*************** pragmas either globally (as an effect of
*** 33858,33864 ****
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{4a1}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4a2}
  @subsection Target-specific aspects
  
  
--- 33886,33892 ----
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{4a2}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4a3}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 33871,33880 ****
  Ada 2005, Ada 2012, and Ada 2022) 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{4a3,,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{4a4}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4a5}
  @section Compatibility with Other Ada Systems
  
  
--- 33899,33908 ----
  Ada 2005, Ada 2012, and Ada 2022) 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{4a4,,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{4a5}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4a6}
  @section Compatibility with Other Ada Systems
  
  
*************** far beyond this minimal set, as describe
*** 33917,33923 ****
  @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{4a6}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4a3}
  @section Representation Clauses
  
  
--- 33945,33951 ----
  @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{4a7}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4a4}
  @section Representation Clauses
  
  
*************** with thin pointers.
*** 34010,34016 ****
  @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{4a7}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4a8}
  @section Compatibility with HP Ada 83
  
  
--- 34038,34044 ----
  @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{4a8}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4a9}
  @section Compatibility with HP Ada 83
  
  
*************** extension of package System.
*** 34040,34046 ****
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4a9}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4aa}
  @chapter GNU Free Documentation License
  
  
--- 34068,34074 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4aa}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4ab}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-16-20250907/gcc/ada/gnat_ugn.texi gcc-16-20250914/gcc/ada/gnat_ugn.texi
*** gcc-16-20250907/gcc/ada/gnat_ugn.texi	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/gnat_ugn.texi	Sun Sep 14 22:32:07 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Jun 27, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Sep 05, 2025
  
  AdaCore
  
*************** to permit their use in free software.
*** 30297,30304 ****
  
  @printindex ge
  
- @anchor{d2}@w{                              }
  @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
  
  @c %**end of body
  @bye
--- 30297,30304 ----
  
  @printindex ge
  
  @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
+ @anchor{d2}@w{                              }
  
  @c %**end of body
  @bye
diff -Nrcpad gcc-16-20250907/gcc/ada/inline.adb gcc-16-20250914/gcc/ada/inline.adb
*** gcc-16-20250907/gcc/ada/inline.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/inline.adb	Sun Sep 14 22:32:07 2025
*************** package body Inline is
*** 1061,1067 ****
                 E : constant Subprogram_Kind_Id := Inlined.Table (Index).Name;
  
              begin
!                if Is_Called (E) and then not Is_Ignored_Ghost_Entity (E) then
                    Add_Inlined_Subprogram (E);
                 end if;
              end;
--- 1061,1069 ----
                 E : constant Subprogram_Kind_Id := Inlined.Table (Index).Name;
  
              begin
!                if Is_Called (E)
!                  and then not Is_Ignored_Ghost_Entity_In_Codegen (E)
!                then
                    Add_Inlined_Subprogram (E);
                 end if;
              end;
diff -Nrcpad gcc-16-20250907/gcc/ada/lib-xref.ads gcc-16-20250914/gcc/ada/lib-xref.ads
*** gcc-16-20250907/gcc/ada/lib-xref.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/lib-xref.ads	Sun Sep 14 22:32:07 2025
*************** package Lib.Xref is
*** 445,450 ****
--- 445,451 ----
        E_Anonymous_Access_Type                      => ' ',
        E_Array_Subtype                              => 'A',
        E_Array_Type                                 => 'A',
+       E_Assertion_Level                            => 'z',
        E_Block                                      => 'q',
        E_Class_Wide_Subtype                         => 'C',
        E_Class_Wide_Type                            => 'C',
*************** package Lib.Xref is
*** 547,553 ****
     --    w     protected object                protected type
     --    x     abstract procedure              exception
     --    y     abstract function               entry or entry family
!    --    z     generic formal parameter        (unused)
  
     ---------------------------------------------------
     -- Handling of Imported and Exported Subprograms --
--- 548,554 ----
     --    w     protected object                protected type
     --    x     abstract procedure              exception
     --    y     abstract function               entry or entry family
!    --    z     generic formal parameter        assertion level
  
     ---------------------------------------------------
     -- Handling of Imported and Exported Subprograms --
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnarl/a-intnam__bsd.ads gcc-16-20250914/gcc/ada/libgnarl/a-intnam__bsd.ads
*** gcc-16-20250907/gcc/ada/libgnarl/a-intnam__bsd.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnarl/a-intnam__bsd.ads	Sun Sep 14 22:32:07 2025
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2024, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2025, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnarl/s-taprop__qnx.adb gcc-16-20250914/gcc/ada/libgnarl/s-taprop__qnx.adb
*** gcc-16-20250907/gcc/ada/libgnarl/s-taprop__qnx.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnarl/s-taprop__qnx.adb	Sun Sep 14 22:32:07 2025
*************** package body System.Task_Primitives.Oper
*** 766,771 ****
--- 766,781 ----
        function Thread_Body_Access is new
          Ada.Unchecked_Conversion (System.Address, Thread_Body);
  
+       function Disable_Signals return Interfaces.C.int with
+         Import,
+         Convention    => C,
+         External_Name => "__gnat_disable_signals";
+ 
+       function Enable_Signals return Interfaces.C.int with
+         Import,
+         Convention    => C,
+         External_Name => "__gnat_enable_signals";
+ 
     begin
        Adjusted_Stack_Size :=
           Interfaces.C.size_t (Stack_Size + Alternate_Stack_Size);
*************** package body System.Task_Primitives.Oper
*** 840,849 ****
  
        pragma Assert (Result = 0);
  
!       --  Since the initial signal mask of a thread is inherited from the
!       --  creator, and the Environment task has all its signals masked, we
!       --  do not need to manipulate caller's signal mask at this point.
!       --  All tasks in RTS will have All_Tasks_Mask initially.
  
        --  The write to T.Common.LL.Thread is not racy with regard to the
        --  created thread because the created thread will not access it until
--- 850,860 ----
  
        pragma Assert (Result = 0);
  
!       --  (QMS3263) lists PR 2894086. This defect causes a memory leak when
!       --  pthread_create is interrupted by a signal and later resumed. To avoid
!       --  avoid such a leak the document suggests to disable signals while
!       --  calling pthread_create. The signal mask of the calling thread is
!       --  restored after the call to pthread_create.
  
        --  The write to T.Common.LL.Thread is not racy with regard to the
        --  created thread because the created thread will not access it until
*************** package body System.Task_Primitives.Oper
*** 851,856 ****
--- 862,869 ----
        --  Restricted.Stages is used). One can verify that by inspecting the
        --  Task_Wrapper procedures.
  
+       Result := Disable_Signals;
+       pragma Assert (Result = 0);
        Result := pthread_create
          (T.Common.LL.Thread'Access,
           Attributes'Access,
*************** package body System.Task_Primitives.Oper
*** 860,865 ****
--- 873,881 ----
  
        Succeeded := Result = 0;
  
+       Result := Enable_Signals;
+       pragma Assert (Result = 0);
+ 
        Result := pthread_attr_destroy (Attributes'Access);
        pragma Assert (Result = 0);
     end Create_Task;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-cdlili.ads gcc-16-20250914/gcc/ada/libgnat/a-cdlili.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-cdlili.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-cdlili.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 58,69 ****
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Append);
! 
!    pragma Preelaborable_Initialization (List);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_List : constant List;
  
--- 58,69 ----
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Append),
!       Preelaborable_Initialization;
  
!    type Cursor is private
!    with
!       Preelaborable_Initialization;
  
     Empty_List : constant List;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-cidlli.ads gcc-16-20250914/gcc/ada/libgnat/a-cidlli.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-cidlli.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-cidlli.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 57,68 ****
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Append);
! 
!    pragma Preelaborable_Initialization (List);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_List : constant List;
  
--- 57,67 ----
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Append),
!       Preelaborable_Initialization;
  
!    type Cursor is private with
!       Preelaborable_Initialization;
  
     Empty_List : constant List;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-cihama.ads gcc-16-20250914/gcc/ada/libgnat/a-cihama.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-cihama.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-cihama.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 59,70 ****
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert);
! 
!    pragma Preelaborable_Initialization (Map);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Map : constant Map;
     --  Map objects declared without an initialization expression are
--- 59,69 ----
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert),
!       Preelaborable_Initialization;
  
!    type Cursor is private with
!       Preelaborable_Initialization;
  
     Empty_Map : constant Map;
     --  Map objects declared without an initialization expression are
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-cihase.ads gcc-16-20250914/gcc/ada/libgnat/a-cihase.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-cihase.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-cihase.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 61,72 ****
            Default_Iterator  => Iterate,
            Iterator_Element  => Element_Type,
            Aggregate         => (Empty       => Empty,
!                                 Add_Unnamed => Include);
! 
!    pragma Preelaborable_Initialization (Set);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Set : constant Set;
     --  Set objects declared without an initialization expression are
--- 61,71 ----
            Default_Iterator  => Iterate,
            Iterator_Element  => Element_Type,
            Aggregate         => (Empty       => Empty,
!                                 Add_Unnamed => Include),
!           Preelaborable_Initialization;
  
!    type Cursor is private
!      with Preelaborable_Initialization;
  
     Empty_Set : constant Set;
     --  Set objects declared without an initialization expression are
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-cimutr.ads gcc-16-20250914/gcc/ada/libgnat/a-cimutr.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-cimutr.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-cimutr.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 54,65 ****
       with Constant_Indexing => Constant_Reference,
            Variable_Indexing => Reference,
            Default_Iterator  => Iterate,
!           Iterator_Element  => Element_Type;
! 
!    pragma Preelaborable_Initialization (Tree);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Tree : constant Tree;
  
--- 54,64 ----
       with Constant_Indexing => Constant_Reference,
            Variable_Indexing => Reference,
            Default_Iterator  => Iterate,
!           Iterator_Element  => Element_Type,
!           Preelaborable_Initialization;
  
!    type Cursor is private
!      with Preelaborable_Initialization;
  
     Empty_Tree : constant Tree;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-ciorma.ads gcc-16-20250914/gcc/ada/libgnat/a-ciorma.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-ciorma.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-ciorma.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 60,71 ****
          Default_Iterator  => Iterate,
          Iterator_Element  => Element_Type,
          Aggregate         => (Empty     => Empty,
!                               Add_Named => Insert);
! 
!    pragma Preelaborable_Initialization (Map);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Map : constant Map;
  
--- 60,70 ----
          Default_Iterator  => Iterate,
          Iterator_Element  => Element_Type,
          Aggregate         => (Empty     => Empty,
!                               Add_Named => Insert),
!         Preelaborable_Initialization;
  
!    type Cursor is private
!    with Preelaborable_Initialization;
  
     Empty_Map : constant Map;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-ciormu.ads gcc-16-20250914/gcc/ada/libgnat/a-ciormu.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-ciormu.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-ciormu.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 58,69 ****
     type Set is tagged private
     with Constant_Indexing => Constant_Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type;
! 
!    pragma Preelaborable_Initialization (Set);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Set : constant Set;
     --  The default value for set objects declared without an explicit
--- 58,68 ----
     type Set is tagged private
     with Constant_Indexing => Constant_Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type,
!         Preelaborable_Initialization;
  
!    type Cursor is private
!    with Preelaborable_Initialization;
  
     Empty_Set : constant Set;
     --  The default value for set objects declared without an explicit
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-ciorse.ads gcc-16-20250914/gcc/ada/libgnat/a-ciorse.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-ciorse.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-ciorse.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 59,70 ****
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Include);
! 
!    pragma Preelaborable_Initialization (Set);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Set : constant Set;
     function Empty  return Set;
--- 59,69 ----
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Include),
!       Preelaborable_Initialization;
  
!    type Cursor is private with
!       Preelaborable_Initialization;
  
     Empty_Set : constant Set;
     function Empty  return Set;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-cohama.ads gcc-16-20250914/gcc/ada/libgnat/a-cohama.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-cohama.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-cohama.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 103,114 ****
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert);
! 
!    pragma Preelaborable_Initialization (Map);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     function "=" (Left, Right : Cursor) return Boolean;
     --  The representation of cursors includes a component used to optimize
--- 103,114 ----
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert),
!       Preelaborable_Initialization;
  
!    type Cursor is private
!    with
!       Preelaborable_Initialization;
  
     function "=" (Left, Right : Cursor) return Boolean;
     --  The representation of cursors includes a component used to optimize
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-cohase.ads gcc-16-20250914/gcc/ada/libgnat/a-cohase.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-cohase.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-cohase.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 62,73 ****
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Include);
! 
!    pragma Preelaborable_Initialization (Set);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     function "=" (Left, Right : Cursor) return Boolean;
     --  The representation of cursors includes a component used to optimize
--- 62,73 ----
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty       => Empty,
!                             Add_Unnamed => Include),
!       Preelaborable_Initialization;
  
!    type Cursor is private
!    with
!       Preelaborable_Initialization;
  
     function "=" (Left, Right : Cursor) return Boolean;
     --  The representation of cursors includes a component used to optimize
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-coinho.ads gcc-16-20250914/gcc/ada/libgnat/a-coinho.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-coinho.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-coinho.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Containers.Indefinite_Holder
*** 42,49 ****
     pragma Preelaborate (Indefinite_Holders);
     pragma Remote_Types (Indefinite_Holders);
  
!    type Holder is tagged private;
!    pragma Preelaborable_Initialization (Holder);
  
     Empty_Holder : constant Holder;
  
--- 42,50 ----
     pragma Preelaborate (Indefinite_Holders);
     pragma Remote_Types (Indefinite_Holders);
  
!    type Holder is tagged private
!    with
!       Preelaborable_Initialization;
  
     Empty_Holder : constant Holder;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-coinho__shared.ads gcc-16-20250914/gcc/ada/libgnat/a-coinho__shared.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-coinho__shared.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-coinho__shared.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Containers.Indefinite_Holder
*** 47,54 ****
     pragma Preelaborate (Indefinite_Holders);
     pragma Remote_Types (Indefinite_Holders);
  
!    type Holder is tagged private;
!    pragma Preelaborable_Initialization (Holder);
  
     Empty_Holder : constant Holder;
  
--- 47,55 ----
     pragma Preelaborate (Indefinite_Holders);
     pragma Remote_Types (Indefinite_Holders);
  
!    type Holder is tagged private
!    with
!       Preelaborable_Initialization;
  
     Empty_Holder : constant Holder;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-coinve.ads gcc-16-20250914/gcc/ada/libgnat/a-coinve.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-coinve.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-coinve.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 66,77 ****
       Aggregate         => (Empty          => Empty,
                             Add_Unnamed    => Append,
                             New_Indexed    => New_Vector,
!                            Assign_Indexed => Replace_Element);
! 
!    pragma Preelaborable_Initialization (Vector);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Vector : constant Vector;
  
--- 66,77 ----
       Aggregate         => (Empty          => Empty,
                             Add_Unnamed    => Append,
                             New_Indexed    => New_Vector,
!                            Assign_Indexed => Replace_Element),
!      Preelaborable_Initialization;
  
!    type Cursor is private
!    with
!      Preelaborable_Initialization;
  
     Empty_Vector : constant Vector;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-comutr.ads gcc-16-20250914/gcc/ada/libgnat/a-comutr.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-comutr.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-comutr.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 54,64 ****
       with Constant_Indexing => Constant_Reference,
            Variable_Indexing => Reference,
            Default_Iterator  => Iterate,
!           Iterator_Element  => Element_Type;
!    pragma Preelaborable_Initialization (Tree);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Tree : constant Tree;
  
--- 54,64 ----
       with Constant_Indexing => Constant_Reference,
            Variable_Indexing => Reference,
            Default_Iterator  => Iterate,
!           Iterator_Element  => Element_Type,
!           Preelaborable_Initialization;
  
!    type Cursor is private
!      with Preelaborable_Initialization;
  
     Empty_Tree : constant Tree;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-convec.ads gcc-16-20250914/gcc/ada/libgnat/a-convec.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-convec.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-convec.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 97,111 ****
        Aggregate         => (Empty          => Empty,
                              Add_Unnamed    => Append,
                              New_Indexed    => New_Vector,
!                             Assign_Indexed => Replace_Element);
! 
!    pragma Preelaborable_Initialization (Vector);
     --  Vector type, to be instantiated by users of this package. If an object
     --  of type Vector is not otherwise initialized, it is initialized to
     --  Empty_Vector.
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
     --  Cursor pointing into an instance of vector. If an object of type Cursor
     --  is not otherwise initialized, it is initialized to No_Element
  
--- 97,111 ----
        Aggregate         => (Empty          => Empty,
                              Add_Unnamed    => Append,
                              New_Indexed    => New_Vector,
!                             Assign_Indexed => Replace_Element),
!       Preelaborable_Initialization;
     --  Vector type, to be instantiated by users of this package. If an object
     --  of type Vector is not otherwise initialized, it is initialized to
     --  Empty_Vector.
  
!    type Cursor is private
!    with
!       Preelaborable_Initialization;
     --  Cursor pointing into an instance of vector. If an object of type Cursor
     --  is not otherwise initialized, it is initialized to No_Element
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-coorma.ads gcc-16-20250914/gcc/ada/libgnat/a-coorma.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-coorma.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-coorma.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 60,70 ****
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert);
!    pragma Preelaborable_Initialization (Map);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Map : constant Map;
  
--- 60,71 ----
        Default_Iterator  => Iterate,
        Iterator_Element  => Element_Type,
        Aggregate         => (Empty     => Empty,
!                             Add_Named => Insert),
!       Preelaborable_Initialization;
  
!    type Cursor is private
!    with
!       Preelaborable_Initialization;
  
     Empty_Map : constant Map;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-coormu.ads gcc-16-20250914/gcc/ada/libgnat/a-coormu.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-coormu.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-coormu.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 57,68 ****
     type Set is tagged private
     with Constant_Indexing => Constant_Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type;
! 
!    pragma Preelaborable_Initialization (Set);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_Set : constant Set;
     --  The default value for set objects declared without an explicit
--- 57,67 ----
     type Set is tagged private
     with Constant_Indexing => Constant_Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type,
!         Preelaborable_Initialization;
  
!    type Cursor is private
!    with Preelaborable_Initialization;
  
     Empty_Set : constant Set;
     --  The default value for set objects declared without an explicit
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-coorse.ads gcc-16-20250914/gcc/ada/libgnat/a-coorse.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-coorse.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-coorse.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 59,70 ****
          Default_Iterator  => Iterate,
          Iterator_Element  => Element_Type,
          Aggregate         => (Empty       => Empty,
!                               Add_Unnamed => Include);
! 
!    pragma Preelaborable_Initialization (Set);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     function Has_Element (Position : Cursor) return Boolean;
  
--- 59,69 ----
          Default_Iterator  => Iterate,
          Iterator_Element  => Element_Type,
          Aggregate         => (Empty       => Empty,
!                               Add_Unnamed => Include),
!         Preelaborable_Initialization;
  
!    type Cursor is private
!    with Preelaborable_Initialization;
  
     function Has_Element (Position : Cursor) return Boolean;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-crdlli.ads gcc-16-20250914/gcc/ada/libgnat/a-crdlli.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-crdlli.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-crdlli.ads	Sun Sep 14 22:32:07 2025
*************** generic
*** 46,56 ****
  package Ada.Containers.Restricted_Doubly_Linked_Lists is
     pragma Pure;
  
!    type List (Capacity : Count_Type) is tagged limited private;
!    pragma Preelaborable_Initialization (List);
  
!    type Cursor is private;
!    pragma Preelaborable_Initialization (Cursor);
  
     Empty_List : constant List;
     --  The default value for list objects declared without an explicit
--- 46,56 ----
  package Ada.Containers.Restricted_Doubly_Linked_Lists is
     pragma Pure;
  
!    type List (Capacity : Count_Type) is tagged limited private
!    with Preelaborable_Initialization;
  
!    type Cursor is private
!    with Preelaborable_Initialization;
  
     Empty_List : constant List;
     --  The default value for list objects declared without an explicit
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-except.ads gcc-16-20250914/gcc/ada/libgnat/a-except.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-except.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-except.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Exceptions is
*** 45,57 ****
     pragma Preelaborate;
     --  In accordance with Ada 2005 AI-362.
  
!    type Exception_Id is private;
!    pragma Preelaborable_Initialization (Exception_Id);
  
     Null_Id : constant Exception_Id;
  
!    type Exception_Occurrence is limited private;
!    pragma Preelaborable_Initialization (Exception_Occurrence);
  
     type Exception_Occurrence_Access is access all Exception_Occurrence;
  
--- 45,57 ----
     pragma Preelaborate;
     --  In accordance with Ada 2005 AI-362.
  
!    type Exception_Id is private
!    with Preelaborable_Initialization;
  
     Null_Id : constant Exception_Id;
  
!    type Exception_Occurrence is limited private
!    with Preelaborable_Initialization;
  
     type Exception_Occurrence_Access is access all Exception_Occurrence;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-finali.ads gcc-16-20250914/gcc/ada/libgnat/a-finali.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-finali.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-finali.ads	Sun Sep 14 22:32:07 2025
*************** pragma Warnings (On);
*** 40,54 ****
  package Ada.Finalization is
     pragma Pure;
  
!    type Controlled is abstract tagged private;
!    pragma Preelaborable_Initialization (Controlled);
  
     procedure Initialize (Object : in out Controlled) is null;
     procedure Adjust     (Object : in out Controlled) is null;
     procedure Finalize   (Object : in out Controlled) is null;
  
!    type Limited_Controlled is abstract tagged limited private;
!    pragma Preelaborable_Initialization (Limited_Controlled);
  
     procedure Initialize (Object : in out Limited_Controlled) is null;
     procedure Finalize   (Object : in out Limited_Controlled) is null;
--- 40,54 ----
  package Ada.Finalization is
     pragma Pure;
  
!    type Controlled is abstract tagged private
!    with Preelaborable_Initialization;
  
     procedure Initialize (Object : in out Controlled) is null;
     procedure Adjust     (Object : in out Controlled) is null;
     procedure Finalize   (Object : in out Controlled) is null;
  
!    type Limited_Controlled is abstract tagged limited private
!    with Preelaborable_Initialization;
  
     procedure Initialize (Object : in out Limited_Controlled) is null;
     procedure Finalize   (Object : in out Limited_Controlled) is null;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-ngcoty.ads gcc-16-20250914/gcc/ada/libgnat/a-ngcoty.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-ngcoty.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-ngcoty.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Numerics.Generic_Complex_Typ
*** 45,52 ****
  
     pragma Complex_Representation (Complex);
  
!    type Imaginary is private;
!    pragma Preelaborable_Initialization (Imaginary);
  
     i : constant Imaginary;
     j : constant Imaginary;
--- 45,52 ----
  
     pragma Complex_Representation (Complex);
  
!    type Imaginary is private
!    with Preelaborable_Initialization;
  
     i : constant Imaginary;
     j : constant Imaginary;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-strbou.ads gcc-16-20250914/gcc/ada/libgnat/a-strbou.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-strbou.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-strbou.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 75,82 ****
  
        Max_Length : constant Positive := Max;
  
!       type Bounded_String is private;
!       pragma Preelaborable_Initialization (Bounded_String);
  
        Null_Bounded_String : constant Bounded_String;
        --  Null_Bounded_String represents the null string. If an object of type
--- 75,83 ----
  
        Max_Length : constant Positive := Max;
  
!       type Bounded_String is private
!       with
!         Preelaborable_Initialization;
  
        Null_Bounded_String : constant Bounded_String;
        --  Null_Bounded_String represents the null string. If an object of type
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-stream.ads gcc-16-20250914/gcc/ada/libgnat/a-stream.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-stream.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-stream.ads	Sun Sep 14 22:32:07 2025
***************
*** 36,43 ****
  package Ada.Streams is
     pragma Pure;
  
!    type Root_Stream_Type is abstract tagged limited private;
!    pragma Preelaborable_Initialization (Root_Stream_Type);
  
     type Stream_Element is mod 2 ** Standard'Storage_Unit;
  
--- 36,43 ----
  package Ada.Streams is
     pragma Pure;
  
!    type Root_Stream_Type is abstract tagged limited private
!    with Preelaborable_Initialization;
  
     type Stream_Element is mod 2 ** Standard'Storage_Unit;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-strmap.ads gcc-16-20250914/gcc/ada/libgnat/a-strmap.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-strmap.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-strmap.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 59,66 ****
     -- Character Set Declarations --
     --------------------------------
  
!    type Character_Set is private;
!    pragma Preelaborable_Initialization (Character_Set);
     --  An object of type Character_Set represents a set of characters.
  
     Null_Set : constant Character_Set;
--- 59,66 ----
     -- Character Set Declarations --
     --------------------------------
  
!    type Character_Set is private
!    with Preelaborable_Initialization;
     --  An object of type Character_Set represents a set of characters.
  
     Null_Set : constant Character_Set;
*************** is
*** 256,263 ****
     -- Character Mapping Declarations --
     ------------------------------------
  
!    type Character_Mapping is private;
!    pragma Preelaborable_Initialization (Character_Mapping);
     --  An object of type Character_Mapping represents a Character-to-Character
     --  mapping.
  
--- 256,263 ----
     -- Character Mapping Declarations --
     ------------------------------------
  
!    type Character_Mapping is private
!    with Preelaborable_Initialization;
     --  An object of type Character_Mapping represents a Character-to-Character
     --  mapping.
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-strunb.ads gcc-16-20250914/gcc/ada/libgnat/a-strunb.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-strunb.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-strunb.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 73,80 ****
     subtype String_1 is String (1 .. <>) with Ghost;  --  Type used in contracts
  
     type Unbounded_String is private with
!      Default_Initial_Condition => Length (Unbounded_String) = 0;
!    pragma Preelaborable_Initialization (Unbounded_String);
  
     Null_Unbounded_String : constant Unbounded_String;
     --  Represents the null String. If an object of type Unbounded_String is not
--- 73,80 ----
     subtype String_1 is String (1 .. <>) with Ghost;  --  Type used in contracts
  
     type Unbounded_String is private with
!      Default_Initial_Condition => Length (Unbounded_String) = 0,
!      Preelaborable_Initialization;
  
     Null_Unbounded_String : constant Unbounded_String;
     --  Represents the null String. If an object of type Unbounded_String is not
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-strunb__shared.ads gcc-16-20250914/gcc/ada/libgnat/a-strunb__shared.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-strunb__shared.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-strunb__shared.ads	Sun Sep 14 22:32:07 2025
*************** is
*** 103,110 ****
     subtype String_1 is String (1 .. <>) with Ghost;  --  Type used in contracts
  
     type Unbounded_String is private with
!      Default_Initial_Condition => Length (Unbounded_String) = 0;
!    pragma Preelaborable_Initialization (Unbounded_String);
  
     Null_Unbounded_String : constant Unbounded_String;
  
--- 103,110 ----
     subtype String_1 is String (1 .. <>) with Ghost;  --  Type used in contracts
  
     type Unbounded_String is private with
!      Default_Initial_Condition => Length (Unbounded_String) = 0,
!      Preelaborable_Initialization;
  
     Null_Unbounded_String : constant Unbounded_String;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-ststio.ads gcc-16-20250914/gcc/ada/libgnat/a-ststio.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-ststio.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-ststio.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Streams.Stream_IO is
*** 41,48 ****
  
     type Stream_Access is access all Root_Stream_Type'Class;
  
!    type File_Type is limited private with Default_Initial_Condition;
!    pragma Preelaborable_Initialization (File_Type);
  
     type File_Mode is (In_File, Out_File, Append_File);
  
--- 41,49 ----
  
     type Stream_Access is access all Root_Stream_Type'Class;
  
!    type File_Type is limited private
!    with Default_Initial_Condition,
!         Preelaborable_Initialization;
  
     type File_Mode is (In_File, Out_File, Append_File);
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-stwibo.ads gcc-16-20250914/gcc/ada/libgnat/a-stwibo.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-stwibo.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-stwibo.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Strings.Wide_Bounded is
*** 47,54 ****
  
        Max_Length : constant Positive := Max;
  
!       type Bounded_Wide_String is private;
!       pragma Preelaborable_Initialization (Bounded_Wide_String);
  
        Null_Bounded_Wide_String : constant Bounded_Wide_String;
  
--- 47,54 ----
  
        Max_Length : constant Positive := Max;
  
!       type Bounded_Wide_String is private
!       with Preelaborable_Initialization;
  
        Null_Bounded_Wide_String : constant Bounded_Wide_String;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-stwima.ads gcc-16-20250914/gcc/ada/libgnat/a-stwima.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-stwima.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-stwima.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Strings.Wide_Maps is
*** 42,49 ****
     -- Wide Character Set Declarations --
     -------------------------------------
  
!    type Wide_Character_Set is private;
!    pragma Preelaborable_Initialization (Wide_Character_Set);
     --  Representation for a set of Wide_Character values:
  
     Null_Set : constant Wide_Character_Set;
--- 42,49 ----
     -- Wide Character Set Declarations --
     -------------------------------------
  
!    type Wide_Character_Set is private
!    with Preelaborable_Initialization;
     --  Representation for a set of Wide_Character values:
  
     Null_Set : constant Wide_Character_Set;
*************** package Ada.Strings.Wide_Maps is
*** 120,127 ****
     -- Wide Character Mapping Declarations --
     -----------------------------------------
  
!    type Wide_Character_Mapping is private;
!    pragma Preelaborable_Initialization (Wide_Character_Mapping);
     --  Representation for a wide character to wide character mapping:
  
     function Value
--- 120,127 ----
     -- Wide Character Mapping Declarations --
     -----------------------------------------
  
!    type Wide_Character_Mapping is private
!    with Preelaborable_Initialization;
     --  Representation for a wide character to wide character mapping:
  
     function Value
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-stwiun.ads gcc-16-20250914/gcc/ada/libgnat/a-stwiun.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-stwiun.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-stwiun.ads	Sun Sep 14 22:32:07 2025
*************** with Ada.Finalization;
*** 39,46 ****
  package Ada.Strings.Wide_Unbounded is
     pragma Preelaborate;
  
!    type Unbounded_Wide_String is private;
!    pragma Preelaborable_Initialization (Unbounded_Wide_String);
  
     Null_Unbounded_Wide_String : constant Unbounded_Wide_String;
  
--- 39,46 ----
  package Ada.Strings.Wide_Unbounded is
     pragma Preelaborate;
  
!    type Unbounded_Wide_String is private
!    with Preelaborable_Initialization;
  
     Null_Unbounded_Wide_String : constant Unbounded_Wide_String;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-stwiun__shared.ads gcc-16-20250914/gcc/ada/libgnat/a-stwiun__shared.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-stwiun__shared.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-stwiun__shared.ads	Sun Sep 14 22:32:07 2025
*************** private with System.Atomic_Counters;
*** 48,55 ****
  package Ada.Strings.Wide_Unbounded is
     pragma Preelaborate;
  
!    type Unbounded_Wide_String is private;
!    pragma Preelaborable_Initialization (Unbounded_Wide_String);
  
     Null_Unbounded_Wide_String : constant Unbounded_Wide_String;
  
--- 48,55 ----
  package Ada.Strings.Wide_Unbounded is
     pragma Preelaborate;
  
!    type Unbounded_Wide_String is private
!    with Preelaborable_Initialization;
  
     Null_Unbounded_Wide_String : constant Unbounded_Wide_String;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-stzbou.ads gcc-16-20250914/gcc/ada/libgnat/a-stzbou.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-stzbou.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-stzbou.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Strings.Wide_Wide_Bounded is
*** 47,54 ****
  
        Max_Length : constant Positive := Max;
  
!       type Bounded_Wide_Wide_String is private;
!       pragma Preelaborable_Initialization (Bounded_Wide_Wide_String);
  
        Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String;
  
--- 47,54 ----
  
        Max_Length : constant Positive := Max;
  
!       type Bounded_Wide_Wide_String is private
!       with Preelaborable_Initialization;
  
        Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-stzmap.ads gcc-16-20250914/gcc/ada/libgnat/a-stzmap.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-stzmap.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-stzmap.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Strings.Wide_Wide_Maps is
*** 42,49 ****
     -- Wide_Wide_Character Set Declarations --
     ------------------------------------------
  
!    type Wide_Wide_Character_Set is private;
!    pragma Preelaborable_Initialization (Wide_Wide_Character_Set);
     --  Representation for a set of Wide_Wide_Character values:
  
     Null_Set : constant Wide_Wide_Character_Set;
--- 42,49 ----
     -- Wide_Wide_Character Set Declarations --
     ------------------------------------------
  
!    type Wide_Wide_Character_Set is private
!    with Preelaborable_Initialization;
     --  Representation for a set of Wide_Wide_Character values:
  
     Null_Set : constant Wide_Wide_Character_Set;
*************** package Ada.Strings.Wide_Wide_Maps is
*** 120,127 ****
     -- Wide_Wide_Character Mapping Declarations --
     ----------------------------------------------
  
!    type Wide_Wide_Character_Mapping is private;
!    pragma Preelaborable_Initialization (Wide_Wide_Character_Mapping);
     --  Representation for a wide character to wide character mapping:
  
     function Value
--- 120,127 ----
     -- Wide_Wide_Character Mapping Declarations --
     ----------------------------------------------
  
!    type Wide_Wide_Character_Mapping is private
!    with Preelaborable_Initialization;
     --  Representation for a wide character to wide character mapping:
  
     function Value
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-stzunb.ads gcc-16-20250914/gcc/ada/libgnat/a-stzunb.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-stzunb.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-stzunb.ads	Sun Sep 14 22:32:07 2025
*************** with Ada.Finalization;
*** 39,46 ****
  package Ada.Strings.Wide_Wide_Unbounded is
     pragma Preelaborate;
  
!    type Unbounded_Wide_Wide_String is private;
!    pragma Preelaborable_Initialization (Unbounded_Wide_Wide_String);
  
     Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String;
  
--- 39,46 ----
  package Ada.Strings.Wide_Wide_Unbounded is
     pragma Preelaborate;
  
!    type Unbounded_Wide_Wide_String is private
!    with Preelaborable_Initialization;
  
     Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-stzunb__shared.ads gcc-16-20250914/gcc/ada/libgnat/a-stzunb__shared.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-stzunb__shared.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-stzunb__shared.ads	Sun Sep 14 22:32:07 2025
*************** private with System.Atomic_Counters;
*** 48,55 ****
  package Ada.Strings.Wide_Wide_Unbounded is
     pragma Preelaborate;
  
!    type Unbounded_Wide_Wide_String is private;
!    pragma Preelaborable_Initialization (Unbounded_Wide_Wide_String);
  
     Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String;
  
--- 48,55 ----
  package Ada.Strings.Wide_Wide_Unbounded is
     pragma Preelaborate;
  
!    type Unbounded_Wide_Wide_String is private
!    with Preelaborable_Initialization;
  
     Null_Unbounded_Wide_Wide_String : constant Unbounded_Wide_Wide_String;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/a-tags.ads gcc-16-20250914/gcc/ada/libgnat/a-tags.ads
*** gcc-16-20250907/gcc/ada/libgnat/a-tags.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/a-tags.ads	Sun Sep 14 22:32:07 2025
*************** package Ada.Tags is
*** 71,78 ****
     pragma Preelaborate;
     --  In accordance with Ada 2005 AI-362
  
!    type Tag is private;
!    pragma Preelaborable_Initialization (Tag);
  
     No_Tag : constant Tag;
  
--- 71,78 ----
     pragma Preelaborate;
     --  In accordance with Ada 2005 AI-362
  
!    type Tag is private
!    with Preelaborable_Initialization;
  
     No_Tag : constant Tag;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/g-socket.adb gcc-16-20250914/gcc/ada/libgnat/g-socket.adb
*** gcc-16-20250907/gcc/ada/libgnat/g-socket.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/g-socket.adb	Sun Sep 14 22:32:08 2025
*************** package body GNAT.Sockets is
*** 1958,1964 ****
  
     procedure Listen_Socket
       (Socket : Socket_Type;
!       Length : Natural := 15)
     is
        Res : constant C.int := C_Listen (C.int (Socket), C.int (Length));
     begin
--- 1958,1964 ----
  
     procedure Listen_Socket
       (Socket : Socket_Type;
!       Length : Natural := SOSC.BACKLOG_MAX)
     is
        Res : constant C.int := C_Listen (C.int (Socket), C.int (Length));
     begin
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/g-socket.ads gcc-16-20250914/gcc/ada/libgnat/g-socket.ads
*** gcc-16-20250907/gcc/ada/libgnat/g-socket.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/g-socket.ads	Sun Sep 14 22:32:08 2025
*************** package GNAT.Sockets is
*** 1219,1225 ****
  
     procedure Listen_Socket
       (Socket : Socket_Type;
!       Length : Natural := 15);
     --  To accept connections, a socket is first created with Create_Socket,
     --  a willingness to accept incoming connections and a queue Length for
     --  incoming connections are specified. Raise Socket_Error on error.
--- 1219,1225 ----
  
     procedure Listen_Socket
       (Socket : Socket_Type;
!       Length : Natural := SOSC.BACKLOG_MAX);
     --  To accept connections, a socket is first created with Create_Socket,
     --  a willingness to accept incoming connections and a queue Length for
     --  incoming connections are specified. Raise Socket_Error on error.
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/i-cstrin.ads gcc-16-20250914/gcc/ada/libgnat/i-cstrin.ads
*** gcc-16-20250907/gcc/ada/libgnat/i-cstrin.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/i-cstrin.ads	Sun Sep 14 22:32:08 2025
*************** is
*** 62,69 ****
     --  coming from who knows where, it seems a good idea to turn off any
     --  strict aliasing assumptions for this type.
  
!    type chars_ptr is private;
!    pragma Preelaborable_Initialization (chars_ptr);
  
     type chars_ptr_array is array (size_t range <>) of aliased chars_ptr;
  
--- 62,70 ----
     --  coming from who knows where, it seems a good idea to turn off any
     --  strict aliasing assumptions for this type.
  
!    type chars_ptr is private
!    with
!      Preelaborable_Initialization;
  
     type chars_ptr_array is array (size_t range <>) of aliased chars_ptr;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-aridou.adb gcc-16-20250914/gcc/ada/libgnat/s-aridou.adb
*** gcc-16-20250907/gcc/ada/libgnat/s-aridou.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/s-aridou.adb	Sun Sep 14 22:32:08 2025
*************** is
*** 128,133 ****
--- 128,147 ----
        Raise_Error;
     end Add_With_Ovflo_Check;
  
+    --------------------------
+    -- Add_With_Ovflo_Check --
+    --------------------------
+ 
+    function Add_With_Ovflo_Check (X, Y : Double_Uns) return Double_Uns is
+       R : constant Double_Uns := X + Y;
+    begin
+       if R < X then
+          Raise_Error;
+       end if;
+ 
+       return R;
+    end Add_With_Ovflo_Check;
+ 
     -------------------
     -- Double_Divide --
     -------------------
*************** is
*** 336,341 ****
--- 350,398 ----
        end if;
     end Multiply_With_Ovflo_Check;
  
+    -------------------------------
+    -- Multiply_With_Ovflo_Check --
+    -------------------------------
+ 
+    function Multiply_With_Ovflo_Check (X, Y : Double_Uns) return Double_Uns is
+       Xhi : constant Single_Uns := Hi (X);
+       Xlo : constant Single_Uns := Lo (X);
+ 
+       Yhi : constant Single_Uns := Hi (Y);
+       Ylo : constant Single_Uns := Lo (Y);
+ 
+       T1, T2 : Double_Uns;
+ 
+    begin
+       if Xhi /= 0 then
+          if Yhi /= 0 then
+             Raise_Error;
+          else
+             T2 := Xhi * Ylo;
+          end if;
+ 
+       elsif Yhi /= 0 then
+          T2 := Xlo * Yhi;
+ 
+       else -- Yhi = Xhi = 0
+          T2 := 0;
+       end if;
+ 
+       --  Here we have T2 set to the contribution to the upper half of the
+       --  result from the upper halves of the input values.
+ 
+       T1 := Xlo * Ylo;
+       T2 := T2 + Hi (T1);
+ 
+       if Hi (T2) /= 0 then
+          Raise_Error;
+       end if;
+ 
+       T2 := Lo (T2) & Lo (T1);
+ 
+       return T2;
+    end Multiply_With_Ovflo_Check;
+ 
     -----------------
     -- Raise_Error --
     -----------------
*************** is
*** 655,660 ****
--- 712,731 ----
        Raise_Error;
     end Subtract_With_Ovflo_Check;
  
+    -------------------------------
+    -- Subtract_With_Ovflo_Check --
+    -------------------------------
+ 
+    function Subtract_With_Ovflo_Check (X, Y : Double_Uns) return Double_Uns is
+       R : constant Double_Uns := X - Y;
+    begin
+       if R > X then
+          Raise_Error;
+       end if;
+ 
+       return R;
+    end Subtract_With_Ovflo_Check;
+ 
     ----------------
     -- To_Neg_Int --
     ----------------
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-aridou.ads gcc-16-20250914/gcc/ada/libgnat/s-aridou.ads
*** gcc-16-20250907/gcc/ada/libgnat/s-aridou.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/s-aridou.ads	Sun Sep 14 22:32:08 2025
*************** generic
*** 53,58 ****
--- 53,62 ----
  package System.Arith_Double
    with Pure, SPARK_Mode
  is
+    ----------------
+    -- Double_Int --
+    ----------------
+ 
     function Add_With_Ovflo_Check (X, Y : Double_Int) return Double_Int;
     --  Raises Constraint_Error if sum of operands overflows Double_Int,
     --  otherwise returns this sum of operands as Double_Int.
*************** is
*** 145,148 ****
--- 149,184 ----
     --  Double_Uns division is then performed, the result is rounded, its sign
     --  is corrected, and then returned.
  
+    ----------------
+    -- Double_Uns --
+    ----------------
+ 
+    function Add_With_Ovflo_Check (X, Y : Double_Uns) return Double_Uns;
+    --  Raises Constraint_Error if sum of operands overflows Double_Uns,
+    --  otherwise returns this sum of operands as Double_Uns.
+    --
+    --  The sum of ``X`` and ``Y`` is first computed. If the result is
+    --  lower than the first operand, then an overflow occurred and the
+    --  exception *Constraint_Error* is raised; otherwise the result is
+    --  correct.
+ 
+    function Subtract_With_Ovflo_Check (X, Y : Double_Uns) return Double_Uns;
+    --  Raises Constraint_Error if difference of operands overflows Double_Uns,
+    --  otherwise returns this difference of operands as Double_Int.
+    --
+    --  The subtraction of ``X`` and ``Y`` is first computed. If the result
+    --  is greater than the first operand, then an overflow occurred and the
+    --  exception *Constraint_Error* is raised; otherwise the result is
+    --  correct.
+ 
+    function Multiply_With_Ovflo_Check (X, Y : Double_Uns) return Double_Uns
+    with Convention => C;
+    --  Raises Constraint_Error if product of operands overflows Double_Uns,
+    --  otherwise returns this product of operands as Double_Uns. The code
+    --  generator may also generate direct calls to this routine.
+    --
+    --  The multiplication is done using pencil and paper algorithm applied to
+    --  Single_Uns, then the correct Double_Uns value is returned. Overflow
+    --  check is performed by looking at higher digits.
+ 
  end System.Arith_Double;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-arit128.adb gcc-16-20250914/gcc/ada/libgnat/s-arit128.adb
*** gcc-16-20250907/gcc/ada/libgnat/s-arit128.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/s-arit128.adb	Sun Sep 14 22:32:08 2025
*************** with System.Arith_Double;
*** 34,40 ****
  package body System.Arith_128
    with SPARK_Mode
  is
-    subtype Uns128 is Interfaces.Unsigned_128;
     subtype Uns64  is Interfaces.Unsigned_64;
  
     use Interfaces;
--- 34,39 ----
*************** is
*** 62,65 ****
--- 61,73 ----
        Round   : Boolean)
       renames Impl.Double_Divide;
  
+    function Uns_Add_With_Ovflo_Check128 (X, Y : Uns128) return Uns128
+      renames Impl.Add_With_Ovflo_Check;
+ 
+    function Uns_Subtract_With_Ovflo_Check128 (X, Y : Uns128) return Uns128
+      renames Impl.Subtract_With_Ovflo_Check;
+ 
+    function Uns_Multiply_With_Ovflo_Check128 (X, Y : Uns128) return Uns128
+      renames Impl.Multiply_With_Ovflo_Check;
+ 
  end System.Arith_128;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-arit128.ads gcc-16-20250914/gcc/ada/libgnat/s-arit128.ads
*** gcc-16-20250907/gcc/ada/libgnat/s-arit128.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/s-arit128.ads	Sun Sep 14 22:32:08 2025
*************** with Interfaces;
*** 41,46 ****
--- 41,50 ----
  package System.Arith_128
    with Pure, SPARK_Mode
  is
+    ------------
+    -- Int128 --
+    ------------
+ 
     subtype Int128 is Interfaces.Integer_128;
  
     function Add_With_Ovflo_Check128 (X, Y : Int128) return Int128;
*************** is
*** 81,84 ****
--- 85,123 ----
     --  then Q is the rounded quotient. The remainder R is not affected by the
     --  setting of the Round flag.
  
+    ------------
+    -- Uns128 --
+    ------------
+ 
+    subtype Uns128 is Interfaces.Unsigned_128;
+ 
+    function Uns_Add_With_Ovflo_Check128 (X, Y : Uns128) return Uns128;
+    --  Raises Constraint_Error if sum of operands overflows 128 bits,
+    --  otherwise returns the 128-bit unsigned integer sum.
+    --
+    --  The sum of ``X`` and ``Y`` is first computed. If the result is
+    --  lower than the first operand, then an overflow occurred and the
+    --  exception *Constraint_Error* is raised; otherwise the result is
+    --  correct.
+ 
+    function Uns_Subtract_With_Ovflo_Check128 (X, Y : Uns128) return Uns128;
+    --  Raises Constraint_Error if difference of operands overflows 128 bits,
+    --  otherwise returns the 128-bit unsigned integer difference.
+    --
+    --  The subtraction of ``X`` and ``Y`` is first computed. If the result
+    --  is greater than the first operand, then an overflow occurred and the
+    --  exception *Constraint_Error* is raised; otherwise the result is
+    --  correct.
+ 
+    function Uns_Multiply_With_Ovflo_Check128 (X, Y : Uns128) return Uns128;
+    pragma Export (C, Uns_Multiply_With_Ovflo_Check128, "__gnat_uns_mulv128");
+    --  Raises Constraint_Error if product of operands overflows 128 bits,
+    --  otherwise returns the 128-bit signed integer product. The code
+    --  generator may also generate direct calls to this routine.
+    --
+    --  The multiplication is done using pencil and paper algorithm using base
+    --  2**32. The multiplication is done on unsigned values, then the correct
+    --  unsigned value is returned. Overflow check is performed by looking at
+    --  higher digits.
+ 
  end System.Arith_128;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-arit64.adb gcc-16-20250914/gcc/ada/libgnat/s-arit64.adb
*** gcc-16-20250907/gcc/ada/libgnat/s-arit64.adb	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/s-arit64.adb	Sun Sep 14 22:32:08 2025
*************** with System.Arith_Double;
*** 34,40 ****
  package body System.Arith_64
    with SPARK_Mode
  is
-    subtype Uns64 is Interfaces.Unsigned_64;
     subtype Uns32 is Interfaces.Unsigned_32;
  
     use Interfaces;
--- 34,39 ----
*************** is
*** 62,65 ****
--- 61,73 ----
        Round   : Boolean)
       renames Impl.Double_Divide;
  
+    function Uns_Add_With_Ovflo_Check64 (X, Y : Uns64) return Uns64
+      renames Impl.Add_With_Ovflo_Check;
+ 
+    function Uns_Subtract_With_Ovflo_Check64 (X, Y : Uns64) return Uns64
+      renames Impl.Subtract_With_Ovflo_Check;
+ 
+    function Uns_Multiply_With_Ovflo_Check64 (X, Y : Uns64) return Uns64
+      renames Impl.Multiply_With_Ovflo_Check;
+ 
  end System.Arith_64;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-arit64.ads gcc-16-20250914/gcc/ada/libgnat/s-arit64.ads
*** gcc-16-20250907/gcc/ada/libgnat/s-arit64.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/s-arit64.ads	Sun Sep 14 22:32:08 2025
*************** with Interfaces;
*** 41,46 ****
--- 41,50 ----
  package System.Arith_64
    with Pure, SPARK_Mode
  is
+    -----------
+    -- Int64 --
+    -----------
+ 
     subtype Int64 is Interfaces.Integer_64;
  
     function Add_With_Ovflo_Check64 (X, Y : Int64) return Int64;
*************** is
*** 147,150 ****
--- 151,191 ----
        Round   : Boolean) renames Double_Divide64;
     --  Renamed procedure to preserve compatibility with earlier versions
  
+    -----------
+    -- Uns64 --
+    -----------
+ 
+    subtype Uns64 is Interfaces.Unsigned_64;
+ 
+    function Uns_Add_With_Ovflo_Check64 (X, Y : Uns64) return Uns64;
+    --  Raises Constraint_Error if sum of operands overflows 64 bits,
+    --  otherwise returns the 64 bits unsigned integer sum.
+    --
+    --  The sum of ``X`` and ``Y`` is first computed. If the result is
+    --  lower than the first operand, then an overflow occurred and the
+    --  exception *Constraint_Error* is raised; otherwise the result is
+    --  correct.
+ 
+    function Uns_Subtract_With_Ovflo_Check64 (X, Y : Uns64) return Uns64;
+    --  Raises Constraint_Error if difference of operands overflows 64 bits,
+    --  otherwise returns the 64-bit unsigned integer difference.
+    --
+    --  The subtraction of ``X`` and ``Y`` is first computed using wrap-around
+    --  semantics.
+    --
+    --  If the sign of the result is negative, then an overflow occurred and
+    --  the exception *Constraint_Error* is raised; otherwise the result is
+    --  correct.
+ 
+    function Uns_Multiply_With_Ovflo_Check64 (X, Y : Uns64) return Uns64;
+    pragma Export (C, Uns_Multiply_With_Ovflo_Check64, "__gnat_uns_mulv64");
+    --  Raises Constraint_Error if product of operands overflows 64 bits,
+    --  otherwise returns the 64-bit signed integer product. The code
+    --  generator may also generate direct calls to this routine.
+    --
+    --  The multiplication is done using pencil and paper algorithm using base
+    --  2**32. The multiplication is done on unsigned values, then the correct
+    --  unsigned value is returned. Overflow check is performed by looking at
+    --  higher digits.
+ 
  end System.Arith_64;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-crtl.adb gcc-16-20250914/gcc/ada/libgnat/s-crtl.adb
*** gcc-16-20250907/gcc/ada/libgnat/s-crtl.adb	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/ada/libgnat/s-crtl.adb	Sun Sep 14 22:32:08 2025
***************
*** 0 ****
--- 1,60 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                        GNAT RUN-TIME COMPONENTS                          --
+ --                                                                          --
+ --                          S Y S T E M . C R T L                           --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2003-2025, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.CRTL is
+ 
+    ----------
+    -- read --
+    ----------
+ 
+    function read (fd : int; buffer : chars; count : size_t) return ssize_t
+    is
+       function read_raw
+         (fd : int; buffer : chars; count : size_t) return ssize_t;
+       pragma Import (C, read_raw, "read");
+    begin
+       return read_raw (fd, buffer, count);
+    end read;
+ 
+    -----------
+    -- write --
+    -----------
+ 
+    function write (fd : int; buffer : chars; count : size_t) return ssize_t
+    is
+       function write_raw
+         (fd : int; buffer : chars; count : size_t) return ssize_t;
+       pragma Import (C, write_raw, "write");
+    begin
+       return write_raw (fd, buffer, count);
+    end write;
+ 
+ end System.CRTL;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-crtl.ads gcc-16-20250914/gcc/ada/libgnat/s-crtl.ads
*** gcc-16-20250907/gcc/ada/libgnat/s-crtl.ads	Sun Sep  7 22:32:56 2025
--- gcc-16-20250914/gcc/ada/libgnat/s-crtl.ads	Sun Sep 14 22:32:08 2025
*************** package System.CRTL is
*** 50,55 ****
--- 50,58 ----
  
     subtype int is Integer;
  
+    type unsigned is mod 2 ** 32;
+    for unsigned'Size use 32;
+ 
     type long is range -(2 ** (System.Parameters.long_bits - 1))
                     .. +(2 ** (System.Parameters.long_bits - 1)) - 1;
  
*************** package System.CRTL is
*** 231,239 ****
     pragma Import (C, close, "close");
  
     function read (fd : int; buffer : chars; count : size_t) return ssize_t;
!    pragma Import (C, read, "read");
  
     function write (fd : int; buffer : chars; count : size_t) return ssize_t;
!    pragma Import (C, write, "write");
  
  end System.CRTL;
--- 234,244 ----
     pragma Import (C, close, "close");
  
     function read (fd : int; buffer : chars; count : size_t) return ssize_t;
!    pragma Inline (read);
!    --  Different return types on Windows and Posix, requires body
  
     function write (fd : int; buffer : chars; count : size_t) return ssize_t;
!    pragma Inline (write);
!    --  Different return types on Windows and Posix, requires body
  
  end System.CRTL;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-crtl__mingw.adb gcc-16-20250914/gcc/ada/libgnat/s-crtl__mingw.adb
*** gcc-16-20250907/gcc/ada/libgnat/s-crtl__mingw.adb	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/ada/libgnat/s-crtl__mingw.adb	Sun Sep 14 22:32:08 2025
***************
*** 0 ****
--- 1,62 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                        GNAT RUN-TIME COMPONENTS                          --
+ --                                                                          --
+ --                          S Y S T E M . C R T L                           --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2003-2025, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception under Section 7 of GPL version 3, you are granted --
+ -- additional permissions described in the GCC Runtime Library Exception,   --
+ -- version 3.1, as published by the Free Software Foundation.               --
+ --                                                                          --
+ -- You should have received a copy of the GNU General Public License and    --
+ -- a copy of the GCC Runtime Library Exception along with this program;     --
+ -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+ -- <http://www.gnu.org/licenses/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This is the Windows specific version of the System.CRTL
+ 
+ package body System.CRTL is
+ 
+    ----------
+    -- read --
+    ----------
+ 
+    function read (fd : int; buffer : chars; count : size_t) return ssize_t
+    is
+       function read_raw
+         (fd : int; buffer : chars; count : unsigned) return int;
+       pragma Import (C, read_raw, "read");
+    begin
+       return ssize_t (read_raw (fd, buffer, unsigned (count)));
+    end read;
+ 
+    -----------
+    -- write --
+    -----------
+ 
+    function write (fd : int; buffer : chars; count : size_t) return ssize_t
+    is
+       function write_raw
+         (fd : int; buffer : chars; count : unsigned) return int;
+       pragma Import (C, write_raw, "write");
+    begin
+       return ssize_t (write_raw (fd, buffer, unsigned (count)));
+    end write;
+ 
+ end System.CRTL;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-stopoo.ads gcc-16-20250914/gcc/ada/libgnat/s-stopoo.ads
*** gcc-16-20250907/gcc/ada/libgnat/s-stopoo.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/s-stopoo.ads	Sun Sep 14 22:32:08 2025
*************** package System.Storage_Pools
*** 40,47 ****
    with Pure
  is
     type Root_Storage_Pool is abstract
!      new Ada.Finalization.Limited_Controlled with private;
!    pragma Preelaborable_Initialization (Root_Storage_Pool);
  
     procedure Allocate
       (Pool                     : in out Root_Storage_Pool;
--- 40,48 ----
    with Pure
  is
     type Root_Storage_Pool is abstract
!      new Ada.Finalization.Limited_Controlled with private
!    with
!      Preelaborable_Initialization;
  
     procedure Allocate
       (Pool                     : in out Root_Storage_Pool;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/s-stposu.ads gcc-16-20250914/gcc/ada/libgnat/s-stposu.ads
*** gcc-16-20250907/gcc/ada/libgnat/s-stposu.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/s-stposu.ads	Sun Sep 14 22:32:08 2025
*************** package System.Storage_Pools.Subpools is
*** 41,55 ****
     pragma Preelaborate;
  
     type Root_Storage_Pool_With_Subpools is abstract
!      new Root_Storage_Pool with private;
!    pragma Preelaborable_Initialization (Root_Storage_Pool_With_Subpools);
     --  The base for all implementations of Storage_Pool_With_Subpools. This
     --  type is Limited_Controlled by derivation. To use subpools, an access
     --  type must be associated with an implementation descending from type
     --  Root_Storage_Pool_With_Subpools.
  
!    type Root_Subpool is abstract tagged limited private;
!    pragma Preelaborable_Initialization (Root_Subpool);
     --  The base for all implementations of Subpool. Objects of this type are
     --  managed by the pool_with_subpools.
  
--- 41,57 ----
     pragma Preelaborate;
  
     type Root_Storage_Pool_With_Subpools is abstract
!      new Root_Storage_Pool with private
!    with
!      Preelaborable_Initialization;
     --  The base for all implementations of Storage_Pool_With_Subpools. This
     --  type is Limited_Controlled by derivation. To use subpools, an access
     --  type must be associated with an implementation descending from type
     --  Root_Storage_Pool_With_Subpools.
  
!    type Root_Subpool is abstract tagged limited private
!    with
!      Preelaborable_Initialization;
     --  The base for all implementations of Subpool. Objects of this type are
     --  managed by the pool_with_subpools.
  
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-aix.ads gcc-16-20250914/gcc/ada/libgnat/system-aix.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-aix.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-aix.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-darwin-arm.ads gcc-16-20250914/gcc/ada/libgnat/system-darwin-arm.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-darwin-arm.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-darwin-arm.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-darwin-ppc.ads gcc-16-20250914/gcc/ada/libgnat/system-darwin-ppc.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-darwin-ppc.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-darwin-ppc.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-darwin-x86.ads gcc-16-20250914/gcc/ada/libgnat/system-darwin-x86.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-darwin-x86.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-darwin-x86.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-djgpp.ads gcc-16-20250914/gcc/ada/libgnat/system-djgpp.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-djgpp.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-djgpp.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-dragonfly-x86_64.ads gcc-16-20250914/gcc/ada/libgnat/system-dragonfly-x86_64.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-dragonfly-x86_64.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-dragonfly-x86_64.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-freebsd.ads gcc-16-20250914/gcc/ada/libgnat/system-freebsd.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-freebsd.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-freebsd.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-gnu.ads gcc-16-20250914/gcc/ada/libgnat/system-gnu.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-gnu.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-gnu.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-hpux-ia64.ads gcc-16-20250914/gcc/ada/libgnat/system-hpux-ia64.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-hpux-ia64.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-hpux-ia64.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-hpux.ads gcc-16-20250914/gcc/ada/libgnat/system-hpux.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-hpux.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-hpux.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-alpha.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-alpha.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-alpha.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-alpha.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-arm.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-arm.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-arm.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-arm.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-hppa.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-hppa.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-hppa.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-hppa.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-ia64.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-ia64.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-ia64.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-ia64.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-loongarch.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-loongarch.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-loongarch.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-loongarch.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-m68k.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-m68k.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-m68k.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-m68k.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-mips.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-mips.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-mips.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-mips.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-ppc.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-ppc.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-ppc.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-ppc.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-riscv.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-riscv.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-riscv.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-riscv.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-s390.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-s390.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-s390.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-s390.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-sh4.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-sh4.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-sh4.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-sh4.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-sparc.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-sparc.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-sparc.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-sparc.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-linux-x86.ads gcc-16-20250914/gcc/ada/libgnat/system-linux-x86.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-linux-x86.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-linux-x86.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-lynxos178-ppc.ads gcc-16-20250914/gcc/ada/libgnat/system-lynxos178-ppc.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-lynxos178-ppc.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-lynxos178-ppc.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-lynxos178-x86.ads gcc-16-20250914/gcc/ada/libgnat/system-lynxos178-x86.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-lynxos178-x86.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-lynxos178-x86.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-mingw.ads gcc-16-20250914/gcc/ada/libgnat/system-mingw.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-mingw.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-mingw.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-qnx-arm.ads gcc-16-20250914/gcc/ada/libgnat/system-qnx-arm.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-qnx-arm.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-qnx-arm.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-rtems.ads gcc-16-20250914/gcc/ada/libgnat/system-rtems.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-rtems.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-rtems.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 68,75 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := Standard'Storage_Unit;
--- 68,75 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := Standard'Storage_Unit;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-solaris-sparc.ads gcc-16-20250914/gcc/ada/libgnat/system-solaris-sparc.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-solaris-sparc.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-solaris-sparc.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-solaris-x86.ads gcc-16-20250914/gcc/ada/libgnat/system-solaris-x86.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-solaris-x86.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-solaris-x86.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 66,73 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 66,73 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 66,73 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 66,73 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 66,73 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 66,73 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-aarch64.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-aarch64.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-aarch64.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-aarch64.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 66,73 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 66,73 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 66,73 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 66,73 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-arm.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-arm.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-arm.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-arm.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 66,73 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 66,73 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 66,73 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 66,73 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 66,73 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 66,73 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
*** gcc-16-20250907/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads	Sun Sep 14 22:32:08 2025
*************** package System is
*** 64,71 ****
  
     --  Storage-related Declarations
  
!    type Address is private;
!    pragma Preelaborable_Initialization (Address);
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
--- 64,71 ----
  
     --  Storage-related Declarations
  
!    type Address is private
!    with Preelaborable_Initialization;
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
diff -Nrcpad gcc-16-20250907/gcc/ada/opt.ads gcc-16-20250914/gcc/ada/opt.ads
*** gcc-16-20250907/gcc/ada/opt.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/opt.ads	Sun Sep 14 22:32:08 2025
*************** package Opt is
*** 755,760 ****
--- 755,772 ----
        --  reflect the starting node of the outermost ignored Ghost region. If a
        --  nested ignored Ghost region is entered, the value must remain
        --  unchanged.
+ 
+       Ghost_Mode_Assertion_Level : Entity_Id := Empty;
+       --  The Assertion_Level that is applied to the current ghost region.
+       --  It is either:
+       --  * Empty - when there is no ghost region
+       --  * Assertion_Level - if the ghost aspect/pragama had an
+       --    Assertion_Levle associated with it.
+       --  * Standard_Default_Level - if the ghost aspect/pragama did not have
+       --    an Assertion_Level associated to it.
+ 
+       Current_Region : Node_Id := Empty;
+       --  Latest ghost region
     end record;
  
     Ghost_Config : Ghost_Config_Type;
*************** package Opt is
*** 823,831 ****
  
     Implicit_Packing : Boolean := False;
     --  GNAT
!    --  If set True, then a Size attribute clause on an array is allowed to
!    --  cause implicit packing instead of generating an error message. Set by
!    --  use of pragma Implicit_Packing.
  
     Init_Or_Norm_Scalars : Boolean := False;
     --  GNAT, GNATBIND
--- 835,843 ----
  
     Implicit_Packing : Boolean := False;
     --  GNAT
!    --  If set True, then a Size attribute clause on an array or record is
!    --  allowed to cause implicit packing instead of generating an error
!    --  message. Set by use of pragma Implicit_Packing.
  
     Init_Or_Norm_Scalars : Boolean := False;
     --  GNAT, GNATBIND
diff -Nrcpad gcc-16-20250907/gcc/ada/par-load.adb gcc-16-20250914/gcc/ada/par-load.adb
*** gcc-16-20250907/gcc/ada/par-load.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/par-load.adb	Sun Sep 14 22:32:08 2025
*************** procedure Load is
*** 117,122 ****
--- 117,145 ----
  
     end Same_File_Name_Except_For_Case;
  
+    function Actual_Name_Collides_With_Predefined_Unit_Name
+      (Actual_File_Name : File_Name_Type) return Boolean;
+    --  Given an actual file name, determine if it is a child unit whose parent
+    --  unit is a single letter that is a, g, i, or s. Such a name could create
+    --  confusion with predefined units and thus is required to use a tilde
+    --  instead of the minus as the second character.
+ 
+    ----------------------------------------------------
+    -- Actual_Name_Collides_With_Predefined_Unit_Name --
+    ----------------------------------------------------
+ 
+    function Actual_Name_Collides_With_Predefined_Unit_Name
+      (Actual_File_Name : File_Name_Type) return Boolean
+    is
+       N1 : Character;
+    begin
+       Get_Name_String (Actual_File_Name);
+       N1 := Name_Buffer (1);
+       return Name_Len > 1
+         and then Name_Buffer (2) = '-'
+         and then (N1 = 'a' or else N1 = 'g' or else N1 = 'i' or else N1 = 's');
+    end Actual_Name_Collides_With_Predefined_Unit_Name;
+ 
  --  Start of processing for Load
  
  begin
*************** begin
*** 163,170 ****
                           (File_Name, Unit_File_Name (Cur_Unum)))
     then
        Error_Msg_File_1 := File_Name;
!       Error_Msg
!         ("??file name does not match unit name, should be{", Sloc (Curunit));
     end if;
  
     --  For units other than the main unit, the expected unit name is set and
--- 186,203 ----
                           (File_Name, Unit_File_Name (Cur_Unum)))
     then
        Error_Msg_File_1 := File_Name;
!       if Actual_Name_Collides_With_Predefined_Unit_Name
!            (Unit_File_Name (Cur_Unum))
!       then
!          Error_Msg
!            ("??file name may conflict with predefined units, "
!             & "the expected file name for this unit is{",
!             Sloc (Curunit));
!       else
!          Error_Msg
!            ("??file name does not match unit name, should be{",
!             Sloc (Curunit));
!       end if;
     end if;
  
     --  For units other than the main unit, the expected unit name is set and
diff -Nrcpad gcc-16-20250907/gcc/ada/par-prag.adb gcc-16-20250914/gcc/ada/par-prag.adb
*** gcc-16-20250907/gcc/ada/par-prag.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/par-prag.adb	Sun Sep 14 22:32:08 2025
*************** begin
*** 305,311 ****
     --  it is a semantic error, not a syntactic one (we have already checked
     --  the syntax for the unrecognized pragma as required by (RM 2.8(11)).
  
!    if Prag_Id = Unknown_Pragma then
        return Pragma_Node;
     end if;
  
--- 305,311 ----
     --  it is a semantic error, not a syntactic one (we have already checked
     --  the syntax for the unrecognized pragma as required by (RM 2.8(11)).
  
!    if Prag_Id = Pragma_Unknown then
        return Pragma_Node;
     end if;
  
*************** begin
*** 1394,1399 ****
--- 1394,1400 ----
           | Pragma_Annotate
           | Pragma_Assert
           | Pragma_Assert_And_Cut
+          | Pragma_Assertion_Level
           | Pragma_Assertion_Policy
           | Pragma_Assume
           | Pragma_Assume_No_Invalid_Values
*************** begin
*** 1607,1612 ****
--- 1608,1614 ----
           | Pragma_Unreferenced
           | Pragma_Unreferenced_Objects
           | Pragma_Unreserve_All_Interrupts
+          | Pragma_Unsigned_Base_Range
           | Pragma_Unsuppress
           | Pragma_Unused
           | Pragma_Use_VADS_Size
*************** begin
*** 1620,1631 ****
           null;
  
        --------------------
!       -- Unknown_Pragma --
        --------------------
  
        --  Should be impossible, since we excluded this case earlier on
  
!       when Unknown_Pragma =>
           raise Program_Error;
  
     end case;
--- 1622,1633 ----
           null;
  
        --------------------
!       -- Pragma_Unknown --
        --------------------
  
        --  Should be impossible, since we excluded this case earlier on
  
!       when Pragma_Unknown =>
           raise Program_Error;
  
     end case;
diff -Nrcpad gcc-16-20250907/gcc/ada/repinfo.adb gcc-16-20250914/gcc/ada/repinfo.adb
*** gcc-16-20250907/gcc/ada/repinfo.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/repinfo.adb	Sun Sep 14 22:32:08 2025
*************** package body Repinfo is
*** 455,461 ****
  
        if Present (Ent)
          and then Nkind (Declaration_Node (Ent)) not in N_Renaming_Declaration
!         and then not Is_Ignored_Ghost_Entity (Ent)
        then
           --  If entity is a subprogram and we are listing mechanisms,
           --  then we need to list mechanisms for this entity. We skip this
--- 455,461 ----
  
        if Present (Ent)
          and then Nkind (Declaration_Node (Ent)) not in N_Renaming_Declaration
!         and then not Sem_Util.Is_Ignored_Ghost_Entity_In_Codegen (Ent)
        then
           --  If entity is a subprogram and we are listing mechanisms,
           --  then we need to list mechanisms for this entity. We skip this
diff -Nrcpad gcc-16-20250907/gcc/ada/rtsfind.adb gcc-16-20250914/gcc/ada/rtsfind.adb
*** gcc-16-20250907/gcc/ada/rtsfind.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/rtsfind.adb	Sun Sep 14 22:32:08 2025
*************** package body Rtsfind is
*** 1114,1120 ****
        --  Provide a clean environment for the unit
  
        Ignore_SPARK_Mode_Pragmas_In_Instance := False;
!       Install_Ghost_Region (None, Empty);
        Install_SPARK_Mode   (None, Empty);
  
        --  Otherwise we need to load the unit, First build unit name from the
--- 1114,1120 ----
        --  Provide a clean environment for the unit
  
        Ignore_SPARK_Mode_Pragmas_In_Instance := False;
!       Install_Ghost_Region (None, Empty, Empty);
        Install_SPARK_Mode   (None, Empty);
  
        --  Otherwise we need to load the unit, First build unit name from the
diff -Nrcpad gcc-16-20250907/gcc/ada/rtsfind.ads gcc-16-20250914/gcc/ada/rtsfind.ads
*** gcc-16-20250907/gcc/ada/rtsfind.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/rtsfind.ads	Sun Sep 14 22:32:08 2025
*************** package Rtsfind is
*** 773,784 ****
--- 773,792 ----
       RE_Scaled_Divide64,                 -- System.Arith_64
       RE_Subtract_With_Ovflo_Check64,     -- System.Arith_64
  
+      RE_Uns_Add_With_Ovflo_Check64,      -- System.Arith_64
+      RE_Uns_Multiply_With_Ovflo_Check64, -- System.Arith_64
+      RE_Uns_Subtract_With_Ovflo_Check64, -- System.Arith_64
+ 
       RE_Add_With_Ovflo_Check128,         -- System.Arith_128
       RE_Double_Divide128,                -- System.Arith_128
       RE_Multiply_With_Ovflo_Check128,    -- System.Arith_128
       RE_Subtract_With_Ovflo_Check128,    -- System.Arith_128
       RE_Scaled_Divide128,                -- System.Arith_128
  
+      RE_Uns_Add_With_Ovflo_Check128,      -- System.Arith_128
+      RE_Uns_Multiply_With_Ovflo_Check128, -- System.Arith_128
+      RE_Uns_Subtract_With_Ovflo_Check128, -- System.Arith_128
+ 
       RE_Assert_Failure,                  -- System.Assertions
       RE_Raise_Assert_Failure,            -- System.Assertions
  
*************** package Rtsfind is
*** 2421,2432 ****
--- 2429,2448 ----
       RE_Scaled_Divide64                  => System_Arith_64,
       RE_Subtract_With_Ovflo_Check64      => System_Arith_64,
  
+      RE_Uns_Add_With_Ovflo_Check64       => System_Arith_64,
+      RE_Uns_Multiply_With_Ovflo_Check64  => System_Arith_64,
+      RE_Uns_Subtract_With_Ovflo_Check64  => System_Arith_64,
+ 
       RE_Add_With_Ovflo_Check128          => System_Arith_128,
       RE_Double_Divide128                 => System_Arith_128,
       RE_Multiply_With_Ovflo_Check128     => System_Arith_128,
       RE_Subtract_With_Ovflo_Check128     => System_Arith_128,
       RE_Scaled_Divide128                 => System_Arith_128,
  
+      RE_Uns_Add_With_Ovflo_Check128      => System_Arith_128,
+      RE_Uns_Multiply_With_Ovflo_Check128 => System_Arith_128,
+      RE_Uns_Subtract_With_Ovflo_Check128 => System_Arith_128,
+ 
       RE_Assert_Failure                   => System_Assertions,
       RE_Raise_Assert_Failure             => System_Assertions,
  
diff -Nrcpad gcc-16-20250907/gcc/ada/s-oscons-tmplt.c gcc-16-20250914/gcc/ada/s-oscons-tmplt.c
*** gcc-16-20250907/gcc/ada/s-oscons-tmplt.c	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/s-oscons-tmplt.c	Sun Sep 14 22:32:08 2025
*************** struct sockaddr_un {
*** 1791,1796 ****
--- 1791,1799 ----
  #define SIZEOF_sockaddr_un (sizeof (struct sockaddr_un))
  CND(SIZEOF_sockaddr_un, "struct sockaddr_un")
  
+ #define BACKLOG_MAX 15
+ CND(BACKLOG_MAX, "number of outstanding connections in the socket's listen queue")
+ 
  #define SIZEOF_fd_set (sizeof (fd_set))
  CND(SIZEOF_fd_set, "fd_set")
  CND(FD_SETSIZE, "Max fd value")
diff -Nrcpad gcc-16-20250907/gcc/ada/s-pack.adb.tmpl gcc-16-20250914/gcc/ada/s-pack.adb.tmpl
*** gcc-16-20250907/gcc/ada/s-pack.adb.tmpl	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/s-pack.adb.tmpl	Sun Sep 14 22:32:08 2025
*************** package body System.Pack_@@ is
*** 37,43 ****
  
     --  The high-level idea of the implementation is to overlay a record
     --  containing components of the same size as that of the component
!    --  of the array, in order words @@ bits, and to access the indexed
     --  component of the array through the appropriate selected component
     --  of the record.
  
--- 37,43 ----
  
     --  The high-level idea of the implementation is to overlay a record
     --  containing components of the same size as that of the component
!    --  of the array, in other words @@ bits, and to access the indexed
     --  component of the array through the appropriate selected component
     --  of the record.
  
diff -Nrcpad gcc-16-20250907/gcc/ada/sem.adb gcc-16-20250914/gcc/ada/sem.adb
*** gcc-16-20250907/gcc/ada/sem.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem is
*** 1460,1466 ****
  
           --  Set up a clean environment before analyzing
  
!          Install_Ghost_Region (None, Empty);
           Ignore_SPARK_Mode_Pragmas_In_Instance := False;
  
           Outer_Generic_Scope := Empty;
--- 1460,1466 ----
  
           --  Set up a clean environment before analyzing
  
!          Install_Ghost_Region (None, Empty, Empty);
           Ignore_SPARK_Mode_Pragmas_In_Instance := False;
  
           Outer_Generic_Scope := Empty;
*************** package body Sem is
*** 1562,1568 ****
  
        --  Compile predefined units with GNAT_Mode set to True, to properly
        --  process the categorization stuff. However, do not set GNAT_Mode
!       --  to True for the renamings units (Text_IO, IO_Exceptions, Direct_IO,
        --  Sequential_IO) as this would prevent pragma Extend_System from being
        --  taken into account, for example when Text_IO is renaming DEC.Text_IO.
  
--- 1562,1568 ----
  
        --  Compile predefined units with GNAT_Mode set to True, to properly
        --  process the categorization stuff. However, do not set GNAT_Mode
!       --  to True for the renaming units (Text_IO, IO_Exceptions, Direct_IO,
        --  Sequential_IO) as this would prevent pragma Extend_System from being
        --  taken into account, for example when Text_IO is renaming DEC.Text_IO.
  
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_aggr.adb gcc-16-20250914/gcc/ada/sem_aggr.adb
*** gcc-16-20250907/gcc/ada/sem_aggr.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_aggr.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Aggr is
*** 1139,1145 ****
        if Is_Modular_Integer_Type (Index_Typ) then
           Error_Msg_N
             ("null array aggregate indexed by a modular type<<", N);
!       else
           Error_Msg_N
             ("null array aggregate indexed by an enumeration type<<", N);
        end if;
--- 1139,1146 ----
        if Is_Modular_Integer_Type (Index_Typ) then
           Error_Msg_N
             ("null array aggregate indexed by a modular type<<", N);
! 
!       elsif Is_Enumeration_Type (Index_Typ) then
           Error_Msg_N
             ("null array aggregate indexed by an enumeration type<<", N);
        end if;
*************** package body Sem_Aggr is
*** 3331,3336 ****
--- 3332,3355 ----
                       --  Not needed if others, since missing impossible.
  
                       if No (Others_N) then
+                         --  We are dealing with a gap in the indicies. However
+                         --  we should also check for an out of bounds error. If
+                         --  there exists an out of bounds error then we should
+                         --  not be suggesting that the user should add the
+                         --  missing indices but rather remove the ones that are
+                         --  out of bounds.
+ 
+                         Aggr_Low := Table (1).Lo;
+                         Aggr_High := Table (Nb_Discrete_Choices).Hi;
+ 
+                         Check_Bounds
+                           (Index_Typ_Low, Index_Typ_High, Aggr_Low, Aggr_High);
+                         Check_Bounds
+                           (Index_Base_Low,
+                            Index_Base_High,
+                            Aggr_Low,
+                            Aggr_High);
+ 
                          for J in 2 .. Nb_Discrete_Choices loop
                             Lo_Val := Expr_Value (Table (J).Lo);
                             Hi_Val := Table (J - 1).Highest;
*************** package body Sem_Aggr is
*** 3358,3368 ****
                                   if Hi_Val + 1 = Lo_Val - 1 then
                                      Error_Msg_N
                                        ("missing index value "
!                                        & "in array aggregate!", Error_Node);
                                   else
                                      Error_Msg_N
                                        ("missing index values "
!                                        & "in array aggregate!", Error_Node);
                                   end if;
  
                                   Output_Bad_Choices
--- 3377,3389 ----
                                   if Hi_Val + 1 = Lo_Val - 1 then
                                      Error_Msg_N
                                        ("missing index value "
!                                        & "in array aggregate!",
!                                        Error_Node);
                                   else
                                      Error_Msg_N
                                        ("missing index values "
!                                        & "in array aggregate!",
!                                        Error_Node);
                                   end if;
  
                                   Output_Bad_Choices
*************** package body Sem_Aggr is
*** 5443,5450 ****
  
              Hi := New_Copy_Tree (Lo);
  
!             Report_Null_Array_Constraint_Error (N, Index_Typ);
!             Set_Raises_Constraint_Error (N);
  
           else
              --  The upper bound is the predecessor of the lower bound
--- 5464,5476 ----
  
              Hi := New_Copy_Tree (Lo);
  
!             --  On multidimiensional arrays, avoid reporting the same error
!             --  several times.
! 
!             if not Raises_Constraint_Error (N) then
!                Report_Null_Array_Constraint_Error (N, Index_Typ);
!                Set_Raises_Constraint_Error (N);
!             end if;
  
           else
              --  The upper bound is the predecessor of the lower bound
*************** package body Sem_Aggr is
*** 5458,5463 ****
--- 5484,5498 ----
           Append (Make_Range (Loc, New_Copy_Tree (Lo), Hi), Constr);
           Analyze_And_Resolve (Last (Constr), Etype (Index));
  
+          if Known_Bounds
+            and then
+              (Nkind (High_Bound (Last (Constr))) = N_Raise_Constraint_Error
+                 or else
+               Nkind (Low_Bound (Last (Constr))) = N_Raise_Constraint_Error)
+          then
+             Set_Raises_Constraint_Error (N);
+          end if;
+ 
           Next_Index (Index);
        end loop;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_attr.adb gcc-16-20250914/gcc/ada/sem_attr.adb
*** gcc-16-20250907/gcc/ada/sem_attr.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_attr.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Attr is
*** 7190,7195 ****
--- 7190,7216 ----
  
           Analyze_Access_Attribute;
  
+       -------------------------
+       -- Unsigned_Base_Range --
+       -------------------------
+ 
+       --  GNAT core extension. The prefix of 'Unsigned_Base_Range must be a
+       --  signed integer type. The static result is a boolean that indicates
+       --  whether the base range is unsigned.
+ 
+       when Attribute_Unsigned_Base_Range =>
+          Check_E0;
+          Check_Integer_Type;
+          Check_Not_Incomplete_Type;
+          Set_Etype (N, Standard_Boolean);
+          Set_Is_Static_Expression (N, True);
+ 
+          if not Core_Extensions_Allowed then
+             Error_Msg_GNAT_Extension
+               ("'Unsigned_'Base_'Range", Sloc (N),
+                Is_Core_Extension => True);
+          end if;
+ 
        ------------
        -- Update --
        ------------
*************** package body Sem_Attr is
*** 8174,8186 ****
  
        if Nkind (N) /= N_Attribute_Reference then
           return;
- 
-       --  No evaluation required under strict preanalysis because locating
-       --  static expressions is not needed; this also minimizes making tree
-       --  modifications during strict preanalysis.
- 
-       elsif In_Strict_Preanalysis then
-          return;
        end if;
  
        Aname := Attribute_Name (N);
--- 8195,8200 ----
*************** package body Sem_Attr is
*** 10685,10690 ****
--- 10699,10724 ----
           Set_Is_Static_Expression (N, True);
        end Unconstrained_Array;
  
+       -------------------------
+       -- Unsigned_Base_Range --
+       -------------------------
+ 
+       when Attribute_Unsigned_Base_Range => Unsigned_Base_Range : declare
+       begin
+          Rewrite (N, New_Occurrence_Of (
+            Boolean_Literals (
+              Is_Integer_Type (P_Type)
+                and then
+                  Has_Unsigned_Base_Range_Aspect (P_Base_Type)), Loc));
+ 
+          --  Analyze and resolve as boolean, note that this attribute is
+          --  a static attribute in GNAT.
+ 
+          Analyze_And_Resolve (N, Standard_Boolean);
+          Static := True;
+          Set_Is_Static_Expression (N, True);
+       end Unsigned_Base_Range;
+ 
        --  Attribute Update is never static
  
        when Attribute_Update =>
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_attr.ads gcc-16-20250914/gcc/ada/sem_attr.ads
*** gcc-16-20250907/gcc/ada/sem_attr.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_attr.ads	Sun Sep 14 22:32:08 2025
*************** package Sem_Attr is
*** 539,544 ****
--- 539,553 ----
        --  yields a value that can be called as long as the subprogram is in
        --  scope (normal Ada 95 accessibility rules restrict this usage).
  
+       -------------------------
+       -- Unsigned_Base_Range --
+       -------------------------
+ 
+       Attribute_Unsigned_Base_Range => True,
+       --  GNAT core extension. The prefix of 'Unsigned_Base_Range must be a
+       --  signed integer type. The static result is a boolean that indicates
+       --  whether the base range is unsigned.
+ 
        ---------------
        -- VADS_Size --
        ---------------
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_aux.adb gcc-16-20250914/gcc/ada/sem_aux.adb
*** gcc-16-20250907/gcc/ada/sem_aux.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_aux.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Aux is
*** 959,964 ****
--- 959,965 ----
  
     begin
        if Is_Type (Ent)
+         and then Present (Etype (Ent))
          and then Base_Type (Ent) /= Root_Type (Ent)
          and then not Is_Class_Wide_Type (Ent)
  
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_ch10.adb gcc-16-20250914/gcc/ada/sem_ch10.adb
*** gcc-16-20250907/gcc/ada/sem_ch10.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_ch10.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Ch10 is
*** 1494,1500 ****
  
                  --  No checked needed for ignored ghost units
  
!                 or else Is_Ignored_Ghost_Entity (Spec_Id)
                )
              then
                 --  This is a case where we only need the entity for checking to
--- 1494,1500 ----
  
                  --  No checked needed for ignored ghost units
  
!                 or else Is_Ignored_Ghost_Entity_In_Codegen (Spec_Id)
                )
              then
                 --  This is a case where we only need the entity for checking to
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_ch13.adb gcc-16-20250914/gcc/ada/sem_ch13.adb
*** gcc-16-20250907/gcc/ada/sem_ch13.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_ch13.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Ch13 is
*** 1002,1007 ****
--- 1002,1018 ----
        --  aspect has the proper profile. If the name is overloaded, check that
        --  some interpretation is legal.
  
+       procedure Check_Nonoverridable_Aspect_Subprograms
+         (ASN      : Node_Id;
+          E        : Entity_Id;
+          Original : Entity_Id := Empty);
+       --  RM 13.1.1(18.4/6) requires checking that if any of the subprograms
+       --  denoted by a nonoverridable aspect ASN has a parameter or result of
+       --  either type E or access E, then all denoted subprograms are
+       --  primitive. If missing, Original is initialized with ASN and will not
+       --  change during the recursive exploration of aggregate aspects, it is
+       --  used to improve the error message.
+ 
        procedure Make_Pragma_From_Boolean_Aspect (ASN : Node_Id);
        --  Given an aspect specification node ASN whose expression is an
        --  optional Boolean, this routines creates the corresponding pragma
*************** package body Sem_Ch13 is
*** 1205,1210 ****
--- 1216,1415 ----
           end if;
        end Check_Indexing_Functions;
  
+       ---------------------------------------------
+       -- Check_Nonoverridable_Aspect_Subprograms --
+       ---------------------------------------------
+ 
+       procedure Check_Nonoverridable_Aspect_Subprograms
+         (ASN      : Node_Id;
+          E        : Entity_Id;
+          Original : Node_Id := Empty)
+       is
+          Expr : constant Node_Id   := Expression (ASN);
+          Kind : constant Node_Kind := Nkind (Expr);
+ 
+          function Required_To_Be_Primitive (Subp : Entity_Id) return Boolean;
+          --  This function returns True if Subp, belonging to a nonoverridable
+          --  aspect of the entity E, is required to be a primitive operation.
+          --  Specifically, whenever either its return type or any of its
+          --  formals are of either type E or access E.
+ 
+          function Required_To_Be_Primitive (Subp : Entity_Id) return Boolean is
+             Return_Typ  : constant Entity_Id := Etype (Subp);
+             Last_Formal : constant Entity_Id := Last_Entity (Subp);
+             Cursor      : Entity_Id          := First_Entity (Subp);
+          begin
+             if Return_Typ = E
+               or else (Ekind (Return_Typ) in Access_Kind
+                         and then Directly_Designated_Type (Return_Typ) = E)
+             then
+                return True;
+ 
+             elsif Present (Cursor) then
+                loop
+                   if Etype (Cursor) = E
+                     or else (Ekind (Cursor) in Access_Kind
+                               and then Directly_Designated_Type (Cursor) = E)
+                   then
+                      return True;
+                   end if;
+ 
+                   exit when Cursor = Last_Formal;
+ 
+                   Cursor := Next_Entity (Cursor);
+                end loop;
+             end if;
+ 
+             return False;
+          end Required_To_Be_Primitive;
+ 
+          --  Local Variables
+ 
+          Valid   : Boolean   := True;
+          Problem : Entity_Id := Empty;
+ 
+       --  Start of processing for Check_Nonoverridable_Aspect_Subprograms
+ 
+       begin
+          --  If the aspect specification was effectively inherited from the
+          --  parent type (so constructed anew by analysis), then no point
+          --  in validating.
+ 
+          if not Comes_From_Source (ASN) then
+             return;
+          end if;
+ 
+          --  If the expression is neither an aggregate nor a node denoting an
+          --  entity, then also no point in validating.
+ 
+          if Kind not in N_Aggregate | N_Has_Entity then
+             return;
+          end if;
+ 
+          --  Original should point to ASN if this is the first recursive call
+ 
+          if No (Original) then
+             Check_Nonoverridable_Aspect_Subprograms
+               (ASN => ASN,
+                E => E,
+                Original => ASN);
+             return;
+          end if;
+ 
+          if Kind = N_Aggregate then
+             declare
+                Aggregate_List : constant List_Id :=
+                  Component_Associations (Expr);
+                Current : Node_Id := First (Aggregate_List);
+             begin
+                --  Each component association must be checked separately
+ 
+                while Present (Current) loop
+ 
+                   Check_Nonoverridable_Aspect_Subprograms
+                     (ASN      => Current,
+                      E        => E,
+                      Original => Original);
+ 
+                   Next (Current);
+                end loop;
+             end;
+ 
+          else
+             --  Some expressions may be unanalyzed, as some nonoverridable
+             --  aspects allow forward references. For instance, when the type E
+             --  is defined inside a package body.
+ 
+             if No (Entity (Expr)) then
+                Analyze (Expr);
+             end if;
+ 
+             declare
+                Subp : constant Entity_Id := Entity (Expr);
+             begin
+ 
+                --  No point in validating a node that does not represent a
+                --  subprogram here.
+ 
+                if not Is_Subprogram (Subp) then
+                   return;
+                end if;
+ 
+                if not Is_Overloaded (Expr) then
+                   Valid := (if Required_To_Be_Primitive (Subp)
+                              then Is_Primitive (Subp));
+ 
+                   Problem := Subp;
+ 
+                else
+                   declare
+                      Found : Boolean := False;
+                      I     : Interp_Index;
+                      It    : Interp;
+                   begin
+                      --  Check whether there is at least one interpretation
+                      --  that is required to be primitive. We iterate over all
+                      --  possible interpretations, as some may be removed.
+ 
+                      Get_First_Interp (Expr, I, It);
+                      while Present (It.Nam) loop
+ 
+                         --  If the current interpretation is not declared
+                         --  within the scope of E, then it should not be
+                         --  considered, see RM 13.1.1(8/6).
+ 
+                         if not Within_Scope (It.Nam, Scope (E)) then
+                            Remove_Interp (I);
+ 
+                         else
+                            Found := Found
+                              or else Required_To_Be_Primitive (It.Nam);
+                         end if;
+ 
+                         Get_Next_Interp (I, It);
+                      end loop;
+ 
+                      if Found then
+ 
+                         --  To satisfy the legality rule in RM 13.1.1(18.2/5),
+                         --  if there's at least one interpretation that's
+                         --  primitive, then all of them must be primitive;
+                         --  otherwise we emit an error.
+ 
+                         Get_First_Interp (Expr, I, It);
+                         pragma Warnings (Off, Valid); -- Valid not always True
+                         while Valid and then Present (It.Nam) loop
+ 
+                            Valid := Valid and then Is_Primitive (It.Nam);
+                            Problem := It.Nam;
+ 
+                            Get_Next_Interp (I, It);
+                         end loop;
+                      end if;
+                   end;
+                end if;
+             end;
+          end if;
+ 
+          if not Valid then
+             declare
+                Operation_Kind : constant String :=
+                  (if Comes_From_Source (Problem)
+                    then "declared"
+                    else "inherited");
+             begin
+                Error_Msg_Name_1 := Chars (Identifier (Original));
+                Error_Msg_Name_2 := Chars (E);
+                Error_Msg_Name_3 := Chars (Problem);
+                Error_Msg_Sloc := Sloc (Problem);
+                Error_Msg_N ("nonoverridable aspect % of type % requires % "
+                             & Operation_Kind
+                             & "# to be a primitive operation",
+                             Original);
+             end;
+          end if;
+       end Check_Nonoverridable_Aspect_Subprograms;
+ 
        -------------------------------------
        -- Make_Pragma_From_Boolean_Aspect --
        -------------------------------------
*************** package body Sem_Ch13 is
*** 1548,1553 ****
--- 1753,1766 ----
                 if Present (Ritem) then
                    Analyze (Ritem);
                 end if;
+ 
+                --  All nonoverriding aspects need further legality checks
+ 
+                if A_Id in Nonoverridable_Aspect_Id
+                  and then Ada_Version >= Ada_2022
+                then
+                   Check_Nonoverridable_Aspect_Subprograms (ASN, E);
+                end if;
              end if;
           end if;
  
*************** package body Sem_Ch13 is
*** 1960,1965 ****
--- 2173,2186 ----
              --  expression is allowed. Includes checking that the expression
              --  does not raise Constraint_Error.
  
+             procedure Convert_Aspect_With_Assertion_Levels (Aspect : Node_Id);
+             --  If an Aspect is using an association with an Assertion_Level
+             --  analyze the aspect with the level and convert it into an aspect
+             --  without the Assertion_Level. In the case the aspect has
+             --  associations with Assertion_Levels then multiple aspects are
+             --  created and each one will point to the original aspect that
+             --  they were created from in the Original_Aspect field.
+ 
              function Directly_Specified
                (Id : Entity_Id; A : Aspect_Id) return Boolean;
              --  Returns True if the given aspect is directly (as opposed to
*************** package body Sem_Ch13 is
*** 3114,3119 ****
--- 3335,3407 ----
                 end case;
              end Check_Expr_Is_OK_Static_Expression;
  
+             ------------------------------------------
+             -- Convert_Aspect_With_Assertion_Levels --
+             ------------------------------------------
+ 
+             procedure Convert_Aspect_With_Assertion_Levels (Aspect : Node_Id)
+             is
+                Assoc      : Node_Id;
+                Assocs     : List_Id;
+                Choice     : Node_Id;
+                Level      : Entity_Id;
+                Sub_Expr   : Node_Id;
+                New_Aspect : Node_Id;
+             begin
+                Assocs := Component_Associations (Expression (Aspect));
+                Assoc := First (Assocs);
+ 
+                if Present (Expressions (Expression (Aspect))) then
+                   Error_Msg_N
+                     ("wrong syntax for argument of %", Expression (Aspect));
+                   Error_Msg_N
+                     ("\aspect with Assertion_Level can only contain "
+                      & "contain Assertion_Level associations",
+                      Expression (Aspect));
+                end if;
+ 
+                while Present (Assoc) loop
+                   if List_Length (Choices (Assoc)) > 1 then
+                      Error_Msg_Name_1 := Nam;
+                      Error_Msg_N ("wrong syntax for argument of %", Assoc);
+                      Error_Msg_N
+                        ("\only one Assertion_Level can be associated "
+                         & "with an expression",
+                         Assoc);
+                   end if;
+ 
+                   Choice := First (Choices (Assoc));
+ 
+                   if Nkind (Choice) /= N_Identifier then
+                      Error_Msg_N ("wrong syntax for argument of %", Assoc);
+                      Error_Msg_N
+                        ("\association must denote an Assertion_Level", Assoc);
+                   end if;
+ 
+                   Level := Get_Assertion_Level (Chars (Choice));
+ 
+                   Sub_Expr := Expression (Assoc);
+                   New_Aspect :=
+                     Make_Aspect_Specification
+                       (Sloc       => Sloc (Assoc),
+                        Identifier => New_Copy_Tree (Id),
+                        Expression => Sub_Expr);
+ 
+                   Check_Applicable_Policy (New_Aspect, Level);
+ 
+                   Set_Aspect_Ghost_Assertion_Level (New_Aspect, Level);
+ 
+                   Insert_After (Aspect, New_Aspect);
+ 
+                   --  Store the Original_Aspect for the detection of
+                   --  duplicates.
+ 
+                   Set_Original_Aspect (New_Aspect, Aspect);
+ 
+                   Next (Assoc);
+                end loop;
+             end Convert_Aspect_With_Assertion_Levels;
+ 
              ------------------------
              -- Directly_Specified --
              ------------------------
*************** package body Sem_Ch13 is
*** 3160,3170 ****
  
                 --  Set additional semantic fields
  
!                if Is_Ignored (Aspect) then
!                   Set_Is_Ignored (Aitem);
!                elsif Is_Checked (Aspect) then
!                   Set_Is_Checked (Aitem);
!                end if;
  
                 Set_Corresponding_Aspect (Aitem, Aspect);
                 Set_From_Aspect_Specification (Aitem);
--- 3448,3457 ----
  
                 --  Set additional semantic fields
  
!                Set_Is_Checked (Aitem, Is_Checked (Aspect));
!                Set_Is_Ignored (Aitem, Is_Ignored (Aspect));
!                Set_Pragma_Ghost_Assertion_Level
!                   (Aitem, Aspect_Ghost_Assertion_Level (Aspect));
  
                 Set_Corresponding_Aspect (Aitem, Aspect);
                 Set_From_Aspect_Specification (Aitem);
*************** package body Sem_Ch13 is
*** 3185,3191 ****
              --  as such for later reference in the tree. This also sets the
              --  Is_Ignored and Is_Checked flags appropriately.
  
!             Check_Applicable_Policy (Aspect);
  
              if Is_Disabled (Aspect) then
                 goto Continue;
--- 3472,3495 ----
              --  as such for later reference in the tree. This also sets the
              --  Is_Ignored and Is_Checked flags appropriately.
  
!             if Is_Valid_Assertion_Kind (Nam) then
!                if Is_Checked (Aspect) or else Is_Ignored (Aspect) then
!                   null;
! 
!                --  If the Aspect has at least one Assertion_Level argument
!                --  then split the original Aspect into multiple aspects each
!                --  with an associated Assertion_Level.
! 
!                elsif Has_Assertion_Level_Argument (Aspect) then
!                   Convert_Aspect_With_Assertion_Levels (Aspect);
!                   goto Continue;
!                else
!                   Check_Applicable_Policy (Aspect);
!                   Set_Aspect_Ghost_Assertion_Level
!                     (Aspect, Standard_Level_Default);
!                end if;
! 
!             end if;
  
              if Is_Disabled (Aspect) then
                 goto Continue;
*************** package body Sem_Ch13 is
*** 3249,3256 ****
              if No_Duplicates_Allowed (A_Id) then
                 Anod := First (L);
                 while Anod /= Aspect loop
!                   if Comes_From_Source (Aspect)
!                     and then Same_Aspect (A_Id, Get_Aspect_Id (Anod))
                    then
                       Error_Msg_Name_1 := Nam;
                       Error_Msg_Sloc := Sloc (Anod);
--- 3553,3563 ----
              if No_Duplicates_Allowed (A_Id) then
                 Anod := First (L);
                 while Anod /= Aspect loop
! 
!                   if (Comes_From_Source (Aspect)
!                      or else (Original_Aspect (Aspect) /= Anod
!                               and then not From_Same_Aspect (Aspect, Anod)))
!                      and then Same_Aspect (A_Id, Get_Aspect_Id (Anod))
                    then
                       Error_Msg_Name_1 := Nam;
                       Error_Msg_Sloc := Sloc (Anod);
*************** package body Sem_Ch13 is
*** 3260,3271 ****
                       if Class_Present (Anod) = Class_Present (Aspect) then
                          if not Class_Present (Anod) then
                             Error_Msg_NE
!                              ("aspect% for & previously given#",
!                               Id, E);
                          else
                             Error_Msg_NE
                               ("aspect `%''Class` for & previously given#",
!                               Id, E);
                          end if;
                       end if;
                    end if;
--- 3567,3578 ----
                       if Class_Present (Anod) = Class_Present (Aspect) then
                          if not Class_Present (Anod) then
                             Error_Msg_NE
!                              ("aspect% for & previously given#", Id, E);
                          else
                             Error_Msg_NE
                               ("aspect `%''Class` for & previously given#",
!                               Id,
!                               E);
                          end if;
                       end if;
                    end if;
*************** package body Sem_Ch13 is
*** 4796,4802 ****
                    if Class_Present (Aspect)
                      and then A_Id in Aspect_Pre | Aspect_Post
                      and then Is_Subprogram (E)
!                     and then not Is_Ignored_Ghost_Entity (E)
                    then
                       if A_Id = Aspect_Pre then
                          if Is_Ignored_In_Codegen (Aspect) then
--- 5103,5109 ----
                    if Class_Present (Aspect)
                      and then A_Id in Aspect_Pre | Aspect_Post
                      and then Is_Subprogram (E)
!                     and then not Is_Ignored_Ghost_Entity_In_Codegen (E)
                    then
                       if A_Id = Aspect_Pre then
                          if Is_Ignored_In_Codegen (Aspect) then
*************** package body Sem_Ch13 is
*** 5101,5106 ****
--- 5408,5419 ----
                       Analyze_Aspect_Static;
                       goto Continue;
  
+                   --  GNAT Core Extension: Checks for this aspect are performed
+                   --  when the corresponding pragma is analyzed.
+ 
+                   elsif A_Id = Aspect_Unsigned_Base_Range then
+                      null;
+ 
                    --  Ada 2022 (AI12-0279)
  
                    elsif A_Id = Aspect_Yield then
*************** package body Sem_Ch13 is
*** 5280,5293 ****
                          goto Continue;
                       end;
  
!                   --  All other cases, generate attribute definition
  
!                   else
                       Aitem :=
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
                           Chars      => Name_Storage_Size,
                           Expression => Relocate_Node (Expr));
                    end if;
  
                 when Aspect_External_Initialization =>
--- 5593,5620 ----
                          goto Continue;
                       end;
  
!                   --  Generate an attribute definition for access types
  
!                   elsif Is_Access_Type (E) then
                       Aitem :=
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
                           Chars      => Name_Storage_Size,
                           Expression => Relocate_Node (Expr));
+ 
+                   --  This is likely a misplaced aspect. Create a pragma to
+                   --  emit the actual error.
+ 
+                   else
+                      Aitem :=
+                        Make_Aitem_Pragma
+                          (Pragma_Argument_Associations =>
+                             New_List
+                               (Make_Pragma_Argument_Association
+                                  (Loc, Expression => Relocate_Node (Expr))),
+                           Pragma_Name                  => Name_Storage_Size);
+                      Insert_Pragma (Aitem);
+                      goto Continue;
                    end if;
  
                 when Aspect_External_Initialization =>
*************** package body Sem_Ch13 is
*** 12513,12520 ****
        elsif No (Next_Formal (First_Formal (Subp))) then
           Error_Msg_Sloc := Sloc (Subp);
           Illegal_Indexing
!             ("at least two parameters required for indexing function "
!              & "defined #");
           return;
  
        elsif not Subp_Is_Dispatching_Op_Of_Typ
--- 12840,12847 ----
        elsif No (Next_Formal (First_Formal (Subp))) then
           Error_Msg_Sloc := Sloc (Subp);
           Illegal_Indexing
!            ("at least two parameters required for indexing function "
!             & "defined #");
           return;
  
        elsif not Subp_Is_Dispatching_Op_Of_Typ
*************** package body Sem_Ch13 is
*** 12525,12531 ****
        then
           Illegal_Indexing
             ("indexing aspect requires function with first formal "
!              & "applying to type& or its class-wide type");
           return;
  
        elsif Aspect = Aspect_Constant_Indexing
--- 12852,12858 ----
        then
           Illegal_Indexing
             ("indexing aspect requires function with first formal "
!             & "applying to type& or its class-wide type");
           return;
  
        elsif Aspect = Aspect_Constant_Indexing
*************** package body Sem_Ch13 is
*** 12534,12540 ****
        then
           Illegal_Indexing
             ("Constant_Indexing must apply to function with "
!              & "access-to-constant formal");
           return;
        end if;
  
--- 12861,12867 ----
        then
           Illegal_Indexing
             ("Constant_Indexing must apply to function with "
!             & "access-to-constant formal");
           return;
        end if;
  
*************** package body Sem_Ch13 is
*** 12543,12550 ****
        if Aspect = Aspect_Variable_Indexing then
           if not Has_Implicit_Dereference (Ret_Type) then
              Illegal_Indexing
!                ("function for Variable_Indexing must return "
!                 & "a reference type");
              return;
  
           elsif Is_Access_Constant
--- 12870,12877 ----
        if Aspect = Aspect_Variable_Indexing then
           if not Has_Implicit_Dereference (Ret_Type) then
              Illegal_Indexing
!               ("function for Variable_Indexing must return "
!                & "a reference type");
              return;
  
           elsif Is_Access_Constant
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_ch3.adb gcc-16-20250914/gcc/ada/sem_ch3.adb
*** gcc-16-20250907/gcc/ada/sem_ch3.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_ch3.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Ch3 is
*** 1476,1484 ****
        --  This reset is performed in most cases except where the access type
        --  has been created for the purposes of allocating or deallocating a
        --  build-in-place object. Such access types have explicitly set pools
!       --  and finalization collections.
  
!       if No (Associated_Storage_Pool (T)) then
           Set_Finalization_Collection (T, Empty);
        end if;
  
--- 1476,1490 ----
        --  This reset is performed in most cases except where the access type
        --  has been created for the purposes of allocating or deallocating a
        --  build-in-place object. Such access types have explicitly set pools
!       --  and finalization collections. It is also skipped when Etype (T) is
!       --  unknown, since attribute Associated_Storage_Pool is only available
!       --  in the root type of T, and in such case it cannot not be computed
!       --  (thus causing spurious errors). Etype (T) is unknown when errors
!       --  have been previously reported on T.
  
!       if Present (Etype (T))
!         and then No (Associated_Storage_Pool (T))
!       then
           Set_Finalization_Collection (T, Empty);
        end if;
  
*************** package body Sem_Ch3 is
*** 2898,2909 ****
           --  private type from a library unit, otherwise premature freezing of
           --  the private type will occur.
  
!          elsif not Analyzed (Next_Decl) and then Is_Body (Next_Decl)
             and then ((Nkind (Next_Decl) /= N_Subprogram_Body
!                        or else not Was_Expression_Function (Next_Decl))
!                       or else (not Is_Ignored_Ghost_Entity (Current_Scope)
!                                 and then not Contains_Lib_Incomplete_Type
!                                                (Current_Scope)))
           then
              --  When a controlled type is frozen, the expander generates stream
              --  and controlled-type support routines. If the freeze is caused
--- 2904,2917 ----
           --  private type from a library unit, otherwise premature freezing of
           --  the private type will occur.
  
!          elsif not Analyzed (Next_Decl)
!            and then Is_Body (Next_Decl)
             and then ((Nkind (Next_Decl) /= N_Subprogram_Body
!                       or else not Was_Expression_Function (Next_Decl))
!                      or else (not Is_Ignored_Ghost_Entity_In_Codegen
!                                     (Current_Scope)
!                               and then not Contains_Lib_Incomplete_Type
!                                              (Current_Scope)))
           then
              --  When a controlled type is frozen, the expander generates stream
              --  and controlled-type support routines. If the freeze is caused
*************** package body Sem_Ch3 is
*** 3034,3041 ****
                                       or else In_Package_Body (Current_Scope));
  
        procedure Check_Nonoverridable_Aspects;
!       --  Apply the rule in RM 13.1.1(18.4/4) on iterator aspects that cannot
!       --  be overridden, and can only be confirmed on derivation.
  
        procedure Check_Ops_From_Incomplete_Type;
        --  If there is a tagged incomplete partial view of the type, traverse
--- 3042,3051 ----
                                       or else In_Package_Body (Current_Scope));
  
        procedure Check_Nonoverridable_Aspects;
!       --  Apply rules for nonoverridable aspects on types with partial views
!       --  described in RM 13.1.1 (18.6/6). This procedure must only be called
!       --  in the partial view completion case, i.e. when T points to the
!       --  full view and Def_Id points to the partial view.
  
        procedure Check_Ops_From_Incomplete_Type;
        --  If there is a tagged incomplete partial view of the type, traverse
*************** package body Sem_Ch3 is
*** 3081,3104 ****
  
           --  Local variables
  
!          Prev_Aspects   : constant List_Id :=
!                             Aspect_Specifications (Parent (Def_Id));
!          Par_Type       : Entity_Id;
!          Prev_Aspect    : Node_Id;
  
        --  Start of processing for Check_Nonoverridable_Aspects
  
        begin
-          --  Get parent type of derived type. Note that Prev is the entity in
-          --  the partial declaration, but its contents are now those of full
-          --  view, while Def_Id reflects the partial view.
- 
-          if Is_Private_Type (Def_Id) then
-             Par_Type := Etype (Full_View (Def_Id));
-          else
-             Par_Type := Etype (Def_Id);
-          end if;
- 
           --  If there is an inherited Implicit_Dereference, verify that it is
           --  made explicit in the partial view.
  
--- 3091,3104 ----
  
           --  Local variables
  
!          Prev_Aspects : constant List_Id :=
!            Aspect_Specifications (Parent (Def_Id));
!          Prev_Aspect  : Node_Id;
!          Par_Type     : constant Entity_Id := Etype (T);
  
        --  Start of processing for Check_Nonoverridable_Aspects
  
        begin
           --  If there is an inherited Implicit_Dereference, verify that it is
           --  made explicit in the partial view.
  
*************** package body Sem_Ch3 is
*** 3191,3199 ****
--- 3191,3219 ----
           end if;
        end Check_Ops_From_Incomplete_Type;
  
+       --  Local variables
+ 
+       Is_Unsigned_Base_Range_Type_Decl : Boolean := False;
+ 
     --  Start of processing for Analyze_Full_Type_Declaration
  
     begin
+       if Present (Aspect_Specifications (Parent (Def))) then
+          declare
+             Asp : Node_Id;
+          begin
+             Asp := First (Aspect_Specifications (Parent (Def)));
+             while Present (Asp) loop
+                if Chars (Identifier (Asp)) = Name_Unsigned_Base_Range then
+                   Is_Unsigned_Base_Range_Type_Decl := True;
+                   exit;
+                end if;
+ 
+                Next (Asp);
+             end loop;
+          end;
+       end if;
+ 
        Prev := Find_Type_Name (N);
  
        --  The full view, if present, now points to the current type. If there
*************** package body Sem_Ch3 is
*** 3329,3335 ****
                 Ordinary_Fixed_Point_Type_Declaration (T, Def);
  
              when N_Signed_Integer_Type_Definition =>
!                Signed_Integer_Type_Declaration (T, Def);
  
              when N_Modular_Type_Definition =>
                 Modular_Type_Declaration (T, Def);
--- 3349,3359 ----
                 Ordinary_Fixed_Point_Type_Declaration (T, Def);
  
              when N_Signed_Integer_Type_Definition =>
!                if Is_Unsigned_Base_Range_Type_Decl then
!                   Unsigned_Base_Range_Type_Declaration (T, Def);
!                else
!                   Signed_Integer_Type_Declaration (T, Def);
!                end if;
  
              when N_Modular_Type_Definition =>
                 Modular_Type_Declaration (T, Def);
*************** package body Sem_Ch3 is
*** 3590,3600 ****
        Generate_Definition (Defining_Identifier (N));
  
        --  Process an incomplete declaration. The identifier must not have been
!       --  declared already in the scope. However, an incomplete declaration may
!       --  appear in the private part of a package, for a private type that has
!       --  already been declared.
! 
!       --  In this case, the discriminants (if any) must match
  
        T := Find_Type_Name (N);
  
--- 3614,3620 ----
        Generate_Definition (Defining_Identifier (N));
  
        --  Process an incomplete declaration. The identifier must not have been
!       --  declared already in the scope.
  
        T := Find_Type_Name (N);
  
*************** package body Sem_Ch3 is
*** 8235,8240 ****
--- 8255,8262 ----
        if Is_Integer_Type (Parent_Type) then
           Set_Has_Shift_Operator
             (Implicit_Base, Has_Shift_Operator (Parent_Type));
+          Set_Has_Unsigned_Base_Range_Aspect
+            (Implicit_Base, Has_Unsigned_Base_Range_Aspect (Parent_Base));
        end if;
  
        --  The type of the bounds is that of the parent type, and they
*************** package body Sem_Ch3 is
*** 15626,15636 ****
        --  Initialize new full declaration entity by copying the pertinent
        --  fields of the corresponding private declaration entity.
  
!       --  We temporarily set Ekind to a value appropriate for a type to
!       --  avoid assert failures in Einfo from checking for setting type
!       --  attributes on something that is not a type. Ekind (Priv) is an
!       --  appropriate choice, since it allowed the attributes to be set
!       --  in the first place. This Ekind value will be modified later.
  
        Mutate_Ekind (Full, Ekind (Priv));
  
--- 15648,15658 ----
        --  Initialize new full declaration entity by copying the pertinent
        --  fields of the corresponding private declaration entity.
  
!       --  We temporarily set Ekind to a value appropriate for a type to avoid
!       --  assert failures in Einfo from checking for setting type fields on
!       --  something that is not a type. Ekind (Priv) is an appropriate choice,
!       --  since it allowed the fields to be set in the first place. This Ekind
!       --  value will be modified later.
  
        Mutate_Ekind (Full, Ekind (Priv));
  
*************** package body Sem_Ch3 is
*** 15640,15646 ****
  
        Set_Etype (Full, Any_Type);
  
!       --  Now start copying attributes
  
        Set_Has_Discriminants          (Full, Has_Discriminants       (Priv));
  
--- 15662,15668 ----
  
        Set_Etype (Full, Any_Type);
  
!       --  Now start copying fields
  
        Set_Has_Discriminants          (Full, Has_Discriminants       (Priv));
  
*************** package body Sem_Ch3 is
*** 15695,15706 ****
              Access_Types_To_Process (Freeze_Node (Priv)));
        end if;
  
!       --  Swap the two entities. Now Private is the full type entity and Full
!       --  is the private one. They will be swapped back at the end of the
!       --  private part. This swapping ensures that the entity that is visible
!       --  in the private part is the full declaration.
  
        Exchange_Entities (Priv, Full);
        Set_Is_Not_Self_Hidden (Priv);
        Append_Entity (Full, Scope (Full));
     end Copy_And_Swap;
--- 15717,15731 ----
              Access_Types_To_Process (Freeze_Node (Priv)));
        end if;
  
!       --  Swap the two entities
  
        Exchange_Entities (Priv, Full);
+ 
+       --  Now the slot Priv points to contains the full type entity and the
+       --  slot Full points to contains the private one. They will be swapped
+       --  back at the end of the private part. This swapping ensures that the
+       --  entity that is visible in the private part is the full declaration.
+ 
        Set_Is_Not_Self_Hidden (Priv);
        Append_Entity (Full, Scope (Full));
     end Copy_And_Swap;
*************** package body Sem_Ch3 is
*** 18729,18735 ****
              Enter_Name (Id);
              New_Id := Id;
  
!          --  Check invalid completion of private or incomplete type
  
           elsif Nkind (N) not in N_Full_Type_Declaration
                                | N_Task_Type_Declaration
--- 18754,18764 ----
              Enter_Name (Id);
              New_Id := Id;
  
!          --  Check invalid completion of private or incomplete type. The
!          --  completion of an incomplete view must be a non-incomplete type
!          --  declaration (RM 3.10.1 (3/3)) and the completion of a partial view
!          --  must be a full type declaration (RM 7.3 (4)). Before Ada 2012, a
!          --  full type declaration is needed in the two cases.
  
           elsif Nkind (N) not in N_Full_Type_Declaration
                                | N_Task_Type_Declaration
*************** package body Sem_Ch3 is
*** 18740,18747 ****
                 or else Nkind (N) not in N_Private_Type_Declaration
                                        | N_Private_Extension_Declaration)
           then
-             --  Completion must be a full type declarations (RM 7.3(4))
- 
              Error_Msg_Sloc := Sloc (Prev);
              Error_Msg_NE ("invalid completion of }", Id, Prev);
  
--- 18769,18774 ----
*************** package body Sem_Ch3 is
*** 21557,21563 ****
        Set_Stored_Constraint (Current_Scope, No_Elist);
  
        --  Default expressions must be provided either for all or for none
!       --  of the discriminants of a discriminant part. (RM 3.7.1)
  
        if Default_Present and then Default_Not_Present then
           Error_Msg_N
--- 21584,21590 ----
        Set_Stored_Constraint (Current_Scope, No_Elist);
  
        --  Default expressions must be provided either for all or for none
!       --  of the discriminants of a discriminant part (RM 3.7 (9.1/3)).
  
        if Default_Present and then Default_Not_Present then
           Error_Msg_N
*************** package body Sem_Ch3 is
*** 21948,21955 ****
  
        else
           --  For untagged types, verify that a type without discriminants is
!          --  not completed with an unconstrained type. A separate error message
!          --  is produced if the full type has defaulted discriminants.
  
           if Is_Definite_Subtype (Priv_T)
             and then not Is_Definite_Subtype (Full_T)
--- 21975,21981 ----
  
        else
           --  For untagged types, verify that a type without discriminants is
!          --  not completed with an indefinite type.
  
           if Is_Definite_Subtype (Priv_T)
             and then not Is_Definite_Subtype (Full_T)
*************** package body Sem_Ch3 is
*** 23688,23693 ****
--- 23714,23722 ----
        --  Check bound to make sure it is integral and static. If not, post
        --  appropriate error message and set Errs flag
  
+       function Has_Pragma_Unsigned_Base_Range return Boolean;
+       --  Determine if type T has pragma Unsigned_Base_Range
+ 
        ---------------------
        -- Can_Derive_From --
        ---------------------
*************** package body Sem_Ch3 is
*** 23732,23737 ****
--- 23761,23799 ----
           end if;
        end Check_Bound;
  
+       ------------------------------------
+       -- Has_Pragma_Unsigned_Base_Range --
+       ------------------------------------
+ 
+       function Has_Pragma_Unsigned_Base_Range return Boolean is
+          Type_Decl  : constant Node_Id := Parent (Def);
+          Nod        : Node_Id := Next (Type_Decl);
+          Pragma_Arg : Node_Id;
+ 
+       begin
+          while Present (Nod) loop
+             if Nkind (Nod) = N_Pragma
+               and then Chars (Pragma_Identifier (Nod))
+                          = Name_Unsigned_Base_Range
+             then
+                Pragma_Arg := First (Pragma_Argument_Associations (Nod));
+ 
+                --  Given that we are processing the full type declaration
+                --  of T, we cannot analyze yet the reference to the type
+                --  given in the pragma because it would be reported as
+                --  premature usage. Hence we rely on the name of the type.
+ 
+                if Chars (Expression (Pragma_Arg)) = Chars (T) then
+                   return True;
+                end if;
+             end if;
+ 
+             Next (Nod);
+          end loop;
+ 
+          return False;
+       end Has_Pragma_Unsigned_Base_Range;
+ 
     --  Start of processing for Signed_Integer_Type_Declaration
  
     begin
*************** package body Sem_Ch3 is
*** 23791,23796 ****
--- 23853,23874 ----
              Check_Restriction (No_Long_Long_Integers, Def);
              Base_Typ := Base_Type (Standard_Long_Long_Long_Integer);
  
+          --  For performance reasons, we defer checking pragma unsigned base
+          --  range until we have this case with bounds out of range (since
+          --  there is no need to perform this check for all signed integer
+          --  type declarations).
+ 
+          --  When the bounds of the integer type declaration are smaller,
+          --  and Unsigned_Base_Range is specified by means of a pragma, the
+          --  frontend handles the declaration as a regular signed integer
+          --  type declaration, and the base type is later adjusted (when the
+          --  pragma is processed); however, when the bounds are out of range
+          --  for the largest integer type we must handle it explicitly now.
+ 
+          elsif Has_Pragma_Unsigned_Base_Range then
+             Unsigned_Base_Range_Type_Declaration (T, Def);
+             return;
+ 
           else
              Base_Typ := Base_Type (Standard_Long_Long_Long_Integer);
              Error_Msg_N ("integer type definition bounds out of range", Def);
*************** package body Sem_Ch3 is
*** 23830,23835 ****
--- 23908,24077 ----
        Set_Is_Constrained     (T);
     end Signed_Integer_Type_Declaration;
  
+    ------------------------------------------
+    -- Unsigned_Base_Range_Type_Declaration --
+    ------------------------------------------
+ 
+    procedure Unsigned_Base_Range_Type_Declaration
+      (T   : Entity_Id;
+       Def : Node_Id)
+    is
+       Implicit_Base : Entity_Id;
+       Base_Typ      : Entity_Id;
+       Lo_Val        : Uint;
+       Hi_Val        : Uint;
+       Errs          : Boolean := False;
+       Lo            : Node_Id;
+       Hi            : Node_Id;
+ 
+       function Can_Derive_From (E : Entity_Id) return Boolean;
+       --  Determine whether given bounds allow derivation from specified type
+ 
+       procedure Check_Bound (Expr : Node_Id);
+       --  Check bound to make sure it is integral and static. If not, post
+       --  appropriate error message and set Errs flag
+ 
+       ---------------------
+       -- Can_Derive_From --
+       ---------------------
+ 
+       --  Note we check both bounds against both end values, to deal with
+       --  strange types like ones with a range of 0 .. -12341234.
+ 
+       function Can_Derive_From (E : Entity_Id) return Boolean is
+          Lo : constant Uint := Expr_Value (Type_Low_Bound (E));
+          Hi : constant Uint := Expr_Value (Type_High_Bound (E));
+       begin
+          return Lo <= Lo_Val and then Lo_Val <= Hi
+                   and then
+                 Lo <= Hi_Val and then Hi_Val <= Hi;
+       end Can_Derive_From;
+ 
+       -----------------
+       -- Check_Bound --
+       -----------------
+ 
+       procedure Check_Bound (Expr : Node_Id) is
+       begin
+          --  If a range constraint is used as an integer type definition, each
+          --  bound of the range must be defined by a static expression of some
+          --  integer type, but the two bounds need not have the same integer
+          --  type (Negative bounds are allowed.) (RM 3.5.4)
+ 
+          if not Is_Integer_Type (Etype (Expr)) then
+             Error_Msg_N
+               ("integer type definition bounds must be of integer type", Expr);
+             Errs := True;
+ 
+          elsif not Is_OK_Static_Expression (Expr) then
+             Flag_Non_Static_Expr
+               ("non-static expression used for integer type bound!", Expr);
+             Errs := True;
+ 
+          --  Otherwise the bounds are folded into literals
+ 
+          elsif Is_Entity_Name (Expr) then
+             Fold_Uint (Expr, Expr_Value (Expr), True);
+          end if;
+       end Check_Bound;
+ 
+    --  Start of processing for Unsigned_Base_Range_Type_Declaration
+ 
+    begin
+       --  Create an anonymous base type
+ 
+       Implicit_Base :=
+         Create_Itype (E_Modular_Integer_Type, Parent (Def), T, 'B');
+ 
+       --  Analyze and check the bounds, they can be of any integer type
+ 
+       Lo := Low_Bound (Def);
+       Hi := High_Bound (Def);
+ 
+       --  Arbitrarily use Integer as the type if either bound had an error
+ 
+       if Hi = Error or else Lo = Error then
+          Base_Typ := Any_Integer;
+          Set_Error_Posted (T, True);
+          Errs := True;
+ 
+       --  Here both bounds are OK expressions
+ 
+       else
+          Analyze_And_Resolve (Lo, Any_Integer);
+          Analyze_And_Resolve (Hi, Any_Integer);
+ 
+          Check_Bound (Lo);
+          Check_Bound (Hi);
+ 
+          if Errs then
+             Hi := Type_High_Bound (Standard_Long_Long_Long_Integer);
+             Lo := Type_Low_Bound  (Standard_Long_Long_Long_Integer);
+          end if;
+ 
+          --  Find type to derive from
+ 
+          Lo_Val := Expr_Value (Lo);
+          Hi_Val := Expr_Value (Hi);
+ 
+          if Can_Derive_From (Standard_Short_Short_Unsigned) then
+             Base_Typ := Base_Type (Standard_Short_Short_Unsigned);
+ 
+          elsif Can_Derive_From (Standard_Short_Unsigned) then
+             Base_Typ := Base_Type (Standard_Short_Unsigned);
+ 
+          elsif Can_Derive_From (Standard_Unsigned) then
+             Base_Typ := Base_Type (Standard_Unsigned);
+ 
+          elsif Can_Derive_From (Standard_Long_Unsigned) then
+             Base_Typ := Base_Type (Standard_Long_Unsigned);
+ 
+          elsif Can_Derive_From (Standard_Long_Long_Unsigned) then
+             Base_Typ := Base_Type (Standard_Long_Long_Unsigned);
+ 
+          elsif Can_Derive_From (Standard_Long_Long_Long_Unsigned) then
+             Base_Typ := Base_Type (Standard_Long_Long_Long_Unsigned);
+ 
+          else
+             Base_Typ := Base_Type (Standard_Long_Long_Long_Unsigned);
+             Error_Msg_N ("unsigned type base range bounds out of range", Def);
+             Hi := Type_High_Bound (Standard_Long_Long_Long_Unsigned);
+             Lo := Type_Low_Bound  (Standard_Long_Long_Long_Unsigned);
+          end if;
+       end if;
+ 
+       --  Set the type of the bounds to the implicit base: we cannot set it to
+       --  the new type, because this would be a forward reference for the code
+       --  generator and, if the original type is user-defined, this could even
+       --  lead to spurious semantic errors. Furthermore we do not set it to be
+       --  universal, because this could make it much larger than needed here.
+ 
+       if not Errs then
+          Set_Etype (Lo, Implicit_Base);
+          Set_Etype (Hi, Implicit_Base);
+       end if;
+ 
+       --  Complete both implicit base and declared first subtype entities. The
+       --  inheritance of the rep item chain ensures that SPARK-related pragmas
+       --  are not clobbered when the signed integer type acts as a full view of
+       --  a private type.
+ 
+       Set_Etype          (Implicit_Base,                 Base_Typ);
+       Set_Size_Info      (Implicit_Base,                 Base_Typ);
+       Set_RM_Size        (Implicit_Base, RM_Size        (Base_Typ));
+       Set_First_Rep_Item (Implicit_Base, First_Rep_Item (Base_Typ));
+       Set_Scalar_Range   (Implicit_Base, Scalar_Range   (Base_Typ));
+       Set_Modulus        (Implicit_Base, Modulus        (Base_Typ));
+ 
+       Mutate_Ekind           (T, E_Signed_Integer_Subtype);
+       Set_Etype              (T, Implicit_Base);
+       Set_Size_Info          (T, Implicit_Base);
+       Inherit_Rep_Item_Chain (T, Implicit_Base);
+       Set_Scalar_Range       (T, Def);
+       Set_RM_Size            (T, UI_From_Int (Minimum_Size (T)));
+       Set_Is_Constrained     (T);
+    end Unsigned_Base_Range_Type_Declaration;
+ 
     -------------------------------------
     -- Warn_On_Inherently_Limited_Type --
     -------------------------------------
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_ch3.ads gcc-16-20250914/gcc/ada/sem_ch3.ads
*** gcc-16-20250907/gcc/ada/sem_ch3.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_ch3.ads	Sun Sep 14 22:32:08 2025
*************** package Sem_Ch3 is
*** 165,176 ****
     --  node or a plain N_Identifier), find the type of the subtype mark.
  
     function Find_Type_Name (N : Node_Id) return Entity_Id;
!    --  Enter the identifier in a type definition, or find the entity already
!    --  declared, in the case of the full declaration of an incomplete or
!    --  private type. If the previous declaration is tagged then the class-wide
!    --  entity is propagated to the identifier to prevent multiple incompatible
!    --  class-wide types that may be created for self-referential anonymous
!    --  access components.
  
     function Get_Discriminant_Value
       (Discriminant       : Entity_Id;
--- 165,189 ----
     --  node or a plain N_Identifier), find the type of the subtype mark.
  
     function Find_Type_Name (N : Node_Id) return Entity_Id;
!    --  N must be a type declaration. The declared view can be incomplete,
!    --  partial, or full. The behavior of this function depends on what
!    --  declaration, if there is one, N completes:
!    --
!    --  - If N is not a completion, the function enters the entity of N in the
!    --    name table and returns that entity.
!    --  - If N completes an incomplete view, the function sets the entity of N
!    --    as the full view of the incomplete view and returns the incomplete
!    --    view.
!    --  - If N completes a partial view, the function "swaps" the partial view
!    --    and the full view (see Copy_And_Swap) and returns the Entity_Id that,
!    --    on exit, points to the full view. The value that
!    --    Defining_Identifier (N) had on entry points to the partial view on
!    --    exit.
!    --
!    --  If the previous declaration is tagged then the class-wide entity is
!    --  propagated to the identifier to prevent multiple incompatible class-wide
!    --  types that may be created for self-referential anonymous access
!    --  components.
  
     function Get_Discriminant_Value
       (Discriminant       : Entity_Id;
*************** package Sem_Ch3 is
*** 337,340 ****
--- 350,359 ----
     --  as referenced. Warnings on unused entities, if needed, go on the
     --  partial view.
  
+    procedure Unsigned_Base_Range_Type_Declaration
+      (T   : Entity_Id;
+       Def : Node_Id);
+    --  Create a new unsigned integer entity, and apply the constraint to obtain
+    --  the required first named subtype of this type.
+ 
  end Sem_Ch3;
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_ch5.adb gcc-16-20250914/gcc/ada/sem_ch5.adb
*** gcc-16-20250907/gcc/ada/sem_ch5.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_ch5.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Ch5 is
*** 1696,1705 ****
        --  interpretation of N.
  
        function Make_Call return N_Procedure_Call_Statement_Id is
        begin
!          return
!            Make_Procedure_Call_Statement
!              (Loc, Make_Identifier (Loc, Name_Continue));
        end Make_Call;
  
        function Make_Stmt return N_Continue_Statement_Id is
--- 1696,1710 ----
        --  interpretation of N.
  
        function Make_Call return N_Procedure_Call_Statement_Id is
+          Id : constant Node_Id := Make_Identifier (Loc, Name_Continue);
+          X : constant N_Procedure_Call_Statement_Id :=
+            Make_Procedure_Call_Statement (Loc, Id);
        begin
!          --  If we settle for the procedure call interpretation, we set
!          --  Comes_From_Source since the user did type out the call explicitly.
!          Set_Comes_From_Source (Id);
!          Set_Comes_From_Source (X);
!          return X;
        end Make_Call;
  
        function Make_Stmt return N_Continue_Statement_Id is
*************** package body Sem_Ch5 is
*** 2155,2161 ****
--- 2160,2169 ----
        Loc       : constant Source_Ptr := Sloc (N);
        Subt      : constant Node_Id    := Subtype_Indication (N);
  
+       Assoc : Node_Id;
        Bas : Entity_Id := Empty;  -- initialize to prevent warning
+       Iter_Asp  : Node_Id;
+       Iter_Func : Node_Id;
        Typ : Entity_Id;
  
        procedure Check_Reverse_Iteration (Typ : Entity_Id);
*************** package body Sem_Ch5 is
*** 2865,2876 ****
              --  in the container package. We obtain it by name for a predefined
              --  container, or through the Iterable aspect for a formal one.
  
!             if Has_Aspect (Typ, Aspect_Iterable) then
!                Set_Etype (Def_Id,
!                  Get_Cursor_Type
!                    (Parent (Find_Value_Of_Aspect (Typ, Aspect_Iterable)),
!                     Typ));
! 
              else
                 Set_Etype (Def_Id, Get_Cursor_Type (Typ));
                 Check_Reverse_Iteration (Etype (Iter_Name));
--- 2873,2881 ----
              --  in the container package. We obtain it by name for a predefined
              --  container, or through the Iterable aspect for a formal one.
  
!             Iter_Asp := Find_Aspect (Typ, Aspect_Iterable);
!             if Present (Iter_Asp) then
!                Set_Etype (Def_Id, Get_Cursor_Type (Iter_Asp, Typ));
              else
                 Set_Etype (Def_Id, Get_Cursor_Type (Typ));
                 Check_Reverse_Iteration (Etype (Iter_Name));
*************** package body Sem_Ch5 is
*** 2879,2884 ****
--- 2884,2908 ----
           end if;
        end if;
  
+       --  Validate the ghost context of he iterator function used for the
+       --  iterable aspect.
+ 
+       Iter_Asp := Find_Aspect (Typ, Aspect_Iterable);
+       if Present (Iter_Asp) then
+          Assoc := First (Component_Associations (Expression (Iter_Asp)));
+          while Present (Assoc) loop
+             Iter_Func := Expression (Assoc);
+             if Nkind (Iter_Func) in N_Has_Entity
+                and then Present (Entity (Iter_Func))
+                and then Is_Ghost_Entity (Entity (Iter_Func))
+             then
+                Check_Ghost_Context (Entity (Iter_Func), Parent (N));
+             end if;
+ 
+             Next (Assoc);
+          end loop;
+       end if;
+ 
        --  Preanalyze the filter. Expansion will take place when enclosing
        --  loop is expanded.
  
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_ch6.adb gcc-16-20250914/gcc/ada/sem_ch6.adb
*** gcc-16-20250907/gcc/ada/sem_ch6.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_ch6.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Ch6 is
*** 581,587 ****
           --  Ghost subprogram.
  
           if Inside_A_Generic then
!             Set_Has_Completion (Def_Id, not Is_Ignored_Ghost_Entity (Def_Id));
              Push_Scope (Def_Id);
              Install_Formals (Def_Id);
              Preanalyze_And_Resolve_Spec_Expression (Expr, Typ);
--- 581,588 ----
           --  Ghost subprogram.
  
           if Inside_A_Generic then
!             Set_Has_Completion
!               (Def_Id, not Is_Ignored_Ghost_Entity_In_Codegen (Def_Id));
              Push_Scope (Def_Id);
              Install_Formals (Def_Id);
              Preanalyze_And_Resolve_Spec_Expression (Expr, Typ);
*************** package body Sem_Ch6 is
*** 3864,3870 ****
        --  Separate spec is not present
  
        if No (Spec_Id) then
!          Create_Extra_Formals (Body_Id);
  
        --  Separate spec is present; deal with freezing issues
  
--- 3865,3871 ----
        --  Separate spec is not present
  
        if No (Spec_Id) then
!          Create_Extra_Formals (Body_Id, Related_Nod => N);
  
        --  Separate spec is present; deal with freezing issues
  
*************** package body Sem_Ch6 is
*** 3883,3889 ****
             and then Is_Build_In_Place_Function (Spec_Id)
             and then not Has_BIP_Formals (Spec_Id)
           then
!             Create_Extra_Formals (Spec_Id);
              pragma Assert (not Expander_Active
                or else Extra_Formals_Known (Spec_Id));
              Compute_Returns_By_Ref (Spec_Id);
--- 3884,3890 ----
             and then Is_Build_In_Place_Function (Spec_Id)
             and then not Has_BIP_Formals (Spec_Id)
           then
!             Create_Extra_Formals (Spec_Id, Related_Nod => N);
              pragma Assert (not Expander_Active
                or else Extra_Formals_Known (Spec_Id));
              Compute_Returns_By_Ref (Spec_Id);
*************** package body Sem_Ch6 is
*** 3907,3913 ****
             and then Serious_Errors_Detected = 0
             and then (Expander_Active
                        or else Operating_Mode = Check_Semantics
!                       or else Is_Ignored_Ghost_Entity (Spec_Id))
           then
              --  The body generated for an expression function that is not a
              --  completion is a freeze point neither for the profile nor for
--- 3908,3914 ----
             and then Serious_Errors_Detected = 0
             and then (Expander_Active
                        or else Operating_Mode = Check_Semantics
!                       or else Is_Ignored_Ghost_Entity_In_Codegen (Spec_Id))
           then
              --  The body generated for an expression function that is not a
              --  completion is a freeze point neither for the profile nor for
*************** package body Sem_Ch6 is
*** 3933,3939 ****
             and then Serious_Errors_Detected = 0
           then
              Set_Has_Delayed_Freeze (Spec_Id);
!             Create_Extra_Formals (Spec_Id);
              Freeze_Before (N, Spec_Id);
           end if;
        end if;
--- 3934,3940 ----
             and then Serious_Errors_Detected = 0
           then
              Set_Has_Delayed_Freeze (Spec_Id);
!             Create_Extra_Formals (Spec_Id, Related_Nod => N);
              Freeze_Before (N, Spec_Id);
           end if;
        end if;
*************** package body Sem_Ch6 is
*** 7752,7757 ****
--- 7753,7759 ----
                or else not Is_Dispatching_Operation (Subp)
                or else No (Find_Dispatching_Type (Subp))
                or else not Is_Interface (Find_Dispatching_Type (Subp))
+               or else Parent (Subp) not in N_Subprogram_Specification_Id
              then
                 null;
  
*************** package body Sem_Ch6 is
*** 8549,8555 ****
     -- Create_Extra_Formals --
     --------------------------
  
!    procedure Create_Extra_Formals (E : Entity_Id) is
        First_Extra : Entity_Id := Empty;
        Formal      : Entity_Id;
        Last_Extra  : Entity_Id := Empty;
--- 8551,8560 ----
     -- Create_Extra_Formals --
     --------------------------
  
!    procedure Create_Extra_Formals
!      (E           : Entity_Id;
!       Related_Nod : Node_Id := Empty)
!    is
        First_Extra : Entity_Id := Empty;
        Formal      : Entity_Id;
        Last_Extra  : Entity_Id := Empty;
*************** package body Sem_Ch6 is
*** 8823,8829 ****
        use Deferred_Extra_Formals_Support;
  
        Can_Be_Deferred  : constant Boolean :=
!                            not Is_Unsupported_Extra_Formals_Entity (E);
        Alias_Formal     : Entity_Id := Empty;
        Alias_Subp       : Entity_Id := Empty;
        Formal_Type      : Entity_Id;
--- 8828,8835 ----
        use Deferred_Extra_Formals_Support;
  
        Can_Be_Deferred  : constant Boolean :=
!                            not Is_Unsupported_Extra_Formals_Entity (E,
!                                  Related_Nod);
        Alias_Formal     : Entity_Id := Empty;
        Alias_Subp       : Entity_Id := Empty;
        Formal_Type      : Entity_Id;
*************** package body Sem_Ch6 is
*** 8906,8912 ****
           pragma Assert (Is_Generic_Instance (E)
             = Is_Generic_Instance (Ultimate_Alias (E)));
  
!          Create_Extra_Formals (Ultimate_Alias (E));
           pragma Assert (not Expander_Active
             or else Extra_Formals_Known (Ultimate_Alias (E)));
  
--- 8912,8918 ----
           pragma Assert (Is_Generic_Instance (E)
             = Is_Generic_Instance (Ultimate_Alias (E)));
  
!          Create_Extra_Formals (Ultimate_Alias (E), Related_Nod);
           pragma Assert (not Expander_Active
             or else Extra_Formals_Known (Ultimate_Alias (E)));
  
*************** package body Sem_Ch6 is
*** 9079,9085 ****
           --  function Parent_Subprogram).
  
           if Ultimate_Alias (Parent_Subp) /= Ref_E then
!             Create_Extra_Formals (Parent_Subp);
           end if;
  
           Parent_Formal := First_Formal (Parent_Subp);
--- 9085,9091 ----
           --  function Parent_Subprogram).
  
           if Ultimate_Alias (Parent_Subp) /= Ref_E then
!             Create_Extra_Formals (Parent_Subp, Related_Nod);
           end if;
  
           Parent_Formal := First_Formal (Parent_Subp);
*************** package body Sem_Ch6 is
*** 9114,9120 ****
        --  Ensure that the ultimate alias has all its extra formals
  
        elsif Present (Alias_Subp) then
!          Create_Extra_Formals (Alias_Subp);
           Alias_Formal := First_Formal (Alias_Subp);
        end if;
  
--- 9120,9126 ----
        --  Ensure that the ultimate alias has all its extra formals
  
        elsif Present (Alias_Subp) then
!          Create_Extra_Formals (Alias_Subp, Related_Nod);
           Alias_Formal := First_Formal (Alias_Subp);
        end if;
  
*************** package body Sem_Ch6 is
*** 11772,11787 ****
           Is_Primitive := False;
  
           if not Comes_From_Source (S) then
  
!             --  Add an inherited primitive for an untagged derived type to
!             --  Derived_Type's list of primitives. Tagged primitives are
!             --  dealt with in Check_Dispatching_Operation. Do this even when
!             --  Extensions_Allowed is False to issue better error messages.
  
!             if Present (Derived_Type)
!               and then not Is_Tagged_Type (Derived_Type)
!             then
!                Append_Unique_Elmt (S, Primitive_Operations (Derived_Type));
              end if;
  
           --  If subprogram is at library level, it is not primitive operation
--- 11778,11795 ----
           Is_Primitive := False;
  
           if not Comes_From_Source (S) then
+             if Present (Derived_Type) then
  
!                --  Add an inherited primitive for an untagged derived type to
!                --  Derived_Type's list of primitives. Tagged primitives are
!                --  dealt with in Check_Dispatching_Operation. Do this even when
!                --  Extensions_Allowed is False to issue better error messages.
  
!                if not Is_Tagged_Type (Derived_Type) then
!                   Append_Unique_Elmt (S, Primitive_Operations (Derived_Type));
!                end if;
! 
!                Set_Is_Primitive (S);
              end if;
  
           --  If subprogram is at library level, it is not primitive operation
*************** package body Sem_Ch6 is
*** 13111,13118 ****
                       --  formals of the enclosing scope are available before
                       --  adding the extra actuals of this call.
  
!                      Create_Extra_Formals (Scop_Id);
!                      Create_Extra_Formals (Call_Id);
  
                       pragma Assert (Extra_Formals_Known (Scop_Id));
                       pragma Assert (Extra_Formals_Known (Call_Id));
--- 13119,13126 ----
                       --  formals of the enclosing scope are available before
                       --  adding the extra actuals of this call.
  
!                      Create_Extra_Formals (Scop_Id, Related_Nod => Call_Node);
!                      Create_Extra_Formals (Call_Id, Related_Nod => Call_Node);
  
                       pragma Assert (Extra_Formals_Known (Scop_Id));
                       pragma Assert (Extra_Formals_Known (Call_Id));
*************** package body Sem_Ch6 is
*** 13285,13292 ****
        is
           Comp_Unit : constant Entity_Id :=
                         Cunit_Entity (Get_Source_Unit (Call_Node));
        begin
!          return not Underlying_Types_Available (Id)
             and then Is_Compilation_Unit (Comp_Unit)
             and then Ekind (Comp_Unit) in E_Package
                                         | E_Package_Body
--- 13293,13303 ----
        is
           Comp_Unit : constant Entity_Id :=
                         Cunit_Entity (Get_Source_Unit (Call_Node));
+ 
        begin
!          return Expander_Active
!            and then not Extra_Formals_Known (Id)
!            and then not Underlying_Types_Available (Id)
             and then Is_Compilation_Unit (Comp_Unit)
             and then Ekind (Comp_Unit) in E_Package
                                         | E_Package_Body
*************** package body Sem_Ch6 is
*** 13305,13316 ****
        --  (AI05-0151-1/08).
  
        function Is_Unsupported_Extra_Formals_Entity
!         (Id : Entity_Id) return Boolean
        is
           Comp_Unit : constant Entity_Id :=
!                        Cunit_Entity (Get_Source_Unit (Id));
        begin
!          return not Underlying_Types_Available (Id)
             and then Is_Compilation_Unit (Comp_Unit)
             and then Ekind (Comp_Unit) in E_Package_Body
                                         | E_Subprogram_Body;
--- 13316,13333 ----
        --  (AI05-0151-1/08).
  
        function Is_Unsupported_Extra_Formals_Entity
!         (Id          : Entity_Id;
!          Related_Nod : Node_Id := Empty) return Boolean
        is
+          Ref_Node  : constant Node_Id := (if Present (Related_Nod) then
+                                              Related_Nod
+                                           else Id);
           Comp_Unit : constant Entity_Id :=
!                        Cunit_Entity (Get_Source_Unit (Ref_Node));
        begin
!          return Expander_Active
!            and then not Extra_Formals_Known (Id)
!            and then not Underlying_Types_Available (Id)
             and then Is_Compilation_Unit (Comp_Unit)
             and then Ekind (Comp_Unit) in E_Package_Body
                                         | E_Subprogram_Body;
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_ch6.ads gcc-16-20250914/gcc/ada/sem_ch6.ads
*** gcc-16-20250907/gcc/ada/sem_ch6.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_ch6.ads	Sun Sep 14 22:32:08 2025
*************** package Sem_Ch6 is
*** 160,172 ****
     --  True when this is a check against a formal access-to-subprogram type,
     --  indicating that mapping of types is needed.
  
!    procedure Create_Extra_Formals (E : Entity_Id);
     --  For each parameter of a subprogram or entry that requires an additional
     --  formal (such as for access parameters and indefinite discriminated
     --  parameters), creates the appropriate formal and attach it to its
     --  associated parameter. Each extra formal will also be appended to
     --  the end of Subp's parameter list (with each subsequent extra formal
     --  being attached to the preceding extra formal).
  
     function Extra_Formals_Match_OK
       (E     : Entity_Id;
--- 160,182 ----
     --  True when this is a check against a formal access-to-subprogram type,
     --  indicating that mapping of types is needed.
  
!    procedure Create_Extra_Formals
!      (E           : Entity_Id;
!       Related_Nod : Node_Id := Empty);
     --  For each parameter of a subprogram or entry that requires an additional
     --  formal (such as for access parameters and indefinite discriminated
     --  parameters), creates the appropriate formal and attach it to its
     --  associated parameter. Each extra formal will also be appended to
     --  the end of Subp's parameter list (with each subsequent extra formal
     --  being attached to the preceding extra formal).
+    --
+    --  Related_Nod is the node motivating the frontend call to create the
+    --  extra formals; it is not passed when the node causing the call is E
+    --  (for example, as part of freezing E). Related_Nod provides the context
+    --  where the extra formals are created, and it is used to determine if
+    --  the creation of the extra formals can be deferred when the underlying
+    --  type of some formal (or its return type) is not available, and thus
+    --  improve the support for AI05-0151-1/08.
  
     function Extra_Formals_Match_OK
       (E     : Entity_Id;
*************** package Sem_Ch6 is
*** 432,443 ****
        --  been registered to defer the addition of its extra formals.
  
        function Is_Unsupported_Extra_Formals_Entity
!         (Id : Entity_Id) return Boolean;
        --  Id is a subprogram, subprogram type, or entry. Return True if Id is
        --  unsupported for deferring the addition of its extra formals; that is,
        --  it is defined in a compilation unit that is a package body or a
        --  subprogram body, and the underlying type of some of its parameters
!       --  or result type is not available.
        --
        --  The context for this case is an unsupported case of AI05-0151-1/08
        --  that allows incomplete tagged types as parameter and result types.
--- 442,456 ----
        --  been registered to defer the addition of its extra formals.
  
        function Is_Unsupported_Extra_Formals_Entity
!         (Id          : Entity_Id;
!          Related_Nod : Node_Id := Empty) return Boolean;
        --  Id is a subprogram, subprogram type, or entry. Return True if Id is
        --  unsupported for deferring the addition of its extra formals; that is,
        --  it is defined in a compilation unit that is a package body or a
        --  subprogram body, and the underlying type of some of its parameters
!       --  or result type is not available. Related_Nod is the node where this
!       --  check is performed (it is generally a subprogram call); if it is not
!       --  available then the location of entity Id is used as its related node.
        --
        --  The context for this case is an unsupported case of AI05-0151-1/08
        --  that allows incomplete tagged types as parameter and result types.
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_ch7.adb gcc-16-20250914/gcc/ada/sem_ch7.adb
*** gcc-16-20250907/gcc/ada/sem_ch7.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_ch7.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Ch7 is
*** 2758,2766 ****
  
        Set_Is_Tagged_Type (Id, Tagged_Present (Def));
  
-       Set_Discriminant_Constraint (Id, No_Elist);
-       Set_Stored_Constraint (Id, No_Elist);
- 
        if Present (Discriminant_Specifications (N)) then
           Push_Scope (Id);
           Process_Discriminants (N);
--- 2758,2763 ----
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_elab.adb gcc-16-20250914/gcc/ada/sem_elab.adb
*** gcc-16-20250907/gcc/ada/sem_elab.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_elab.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Elab is
*** 11199,11205 ****
          (Id : Entity_Id) return Extended_Ghost_Mode
        is
        begin
!          return To_Ghost_Mode (Is_Ignored_Ghost_Entity (Id));
        end Ghost_Mode_Of_Entity;
  
        ------------------------
--- 11199,11205 ----
          (Id : Entity_Id) return Extended_Ghost_Mode
        is
        begin
!          return To_Ghost_Mode (Is_Ignored_Ghost_Entity_In_Codegen (Id));
        end Ghost_Mode_Of_Entity;
  
        ------------------------
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_prag.adb gcc-16-20250914/gcc/ada/sem_prag.adb
*** gcc-16-20250907/gcc/ada/sem_prag.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_prag.adb	Sun Sep 14 22:32:08 2025
*************** with System.Case_Util;
*** 101,106 ****
--- 101,221 ----
  
  package body Sem_Prag is
  
+    ----------------------------------
+    -- Handling of Assertion Levels --
+    ----------------------------------
+ 
+    --  Assertion levels are special entities declared using pragma
+    --  Assertion_Level. Assertion levels can be used in most Assertion_Kind
+    --  pragmas to associate a given level with a given list of existing
+    --  arguments. E.g.
+    --
+    --     pragma Assert (Level1 => (Expr1, "Msg1"),
+    --                    Level2 => (Expr2, "Msg2"));
+    --
+    --  Assertion levels can also be used in pragma Assertion_Policy and
+    --  Check_Policy as a valid policy name. E.g.
+    --
+    --  pragma Assertion_Policy (Level1 => Check);
+ 
+    --------------------------------
+    -- Declaring Assertion Levels --
+    --------------------------------
+ 
+    --  Assertion levels are declared using configuration level pragma
+    --  Assertion_Level. We create a new E_Assertion_Level entity for each
+    --  pragma and add each unique level to the Assertion_Levels table.
+    --
+    --  A pragma can be declared with dependencies. e.g.
+    --
+    --     pragma Assertion_Level (L1);
+    --     pragma Assertion_Level (L2, Depends => L1);
+    --     pragma Assertion_Level (L3, Depends => L2);
+    --
+    --  Levels that a level depends are called parent levels. Levels that depend
+    --  on a given level are called child levels. These dependencies are stored
+    --  in an E_Assertion_Level entity as attributes Parent_Levels and
+    --  Child_Levels.
+    --
+    --  When a pragma with the same level name is declared, we check that the
+    --  assertion level is declared with the same dependencies as the existing
+    --  level. Otherwise an error is raised.
+ 
+    package Assertion_Levels is new Table.Table (
+      Table_Component_Type => Entity_Id,
+      Table_Index_Type     => Nat,
+      Table_Low_Bound      => 1,
+      Table_Initial        => 30,
+      Table_Increment      => 200,
+      Table_Name           => "Assertion_Levels");
+ 
+    -------------------------------------------
+    -- Applying Policies to Assertion Levels --
+    -------------------------------------------
+ 
+    --  When a policy is applied to an assertion level, all assertions
+    --  associated with that level are subjected to the same policy. Depending
+    --  on the policy value, the same policy is applied to its dependencies.
+    --
+    --  Consider the following assertion levels:
+    --
+    --     pragma Assertion_Level (L1);
+    --     pragma Assertion_Level (L2, Depends => L1);
+    --     pragma Assertion_Level (L3, Depends => L2);
+    --
+    --  When policy Check (or On) is applied to an assertion level, it is also
+    --  applied to all of its transitive parent levels. For example
+    --
+    --      pragma Assertion_Policy (L3 => Check);
+    --
+    --  applies policy Check to L2 and L1.
+    --
+    --  When policy Ignore (or Off) is applied to an assertion level, it is also
+    --  applied to all of its transitive child levels. For example
+    --
+    --     pragma Assertion_Policy (L1 => Ignore);
+    --
+    --  applies the policy Ignore for L2 and L3.
+    --
+    --  Note that assertion levels are not allowed to have the same name as any
+    --  other Assertion_Kind defined in the RM in order to avoid unintentional
+    --  name overloading.
+ 
+    --------------------------------------------------
+    -- Handling of Assertions with Assertion Levels --
+    --------------------------------------------------
+ 
+    --  Each Assertion pragma (see Is_Valid_Assertion) supports a new syntax
+    --  where the existing arguments can be associated with an assertion level.
+    --
+    --  Each association is converted into a new pragma with the same name but
+    --  without the level argument, and the old pragma is rewritten as N_Null.
+    --  An applicable policy for those pragmas is calculated by looking at the
+    --  first active Check_Policy that either matches the pragma name or the
+    --  name of the Assertion_Level. The following policy-based attributes are
+    --  set for the given pramga:
+    --
+    --  * Is_Checked - Based on the policy
+    --  * Is_Ignored - Based on the policy
+    --  * Is_Disabled - Based on the policy
+    --  * Pragma_Ghost_Assertion_Level - level associated with the assertion.
+    --  * Original_Pragma - reference to the original pragma that had the
+    --    Assertion_Levels.
+    --
+    --  For example, the following pragma:
+    --
+    --     pragma Assert (L1 => (Expr1, "Msg1"),
+    --                    L2 => (Expr2, "Msg2"));
+    --
+    --  is rewritten as:
+    --
+    --     null; -- The original pragma
+    --     pragma Assert (Expr1, "Msg1");
+    --     pragma Assert (Expr2, "Msg2");
+    --
+    --  Each of the new pragmas is analyzed according to its existing semantic
+    --  rules.
+ 
     ----------------------------------------------
     -- Common Handling of Import-Export Pragmas --
     ----------------------------------------------
*************** package body Sem_Prag is
*** 212,217 ****
--- 327,340 ----
     --  Query whether a particular item appears in a mixed list of nodes and
     --  entities. It is assumed that all nodes in the list have entities.
  
+    procedure Apply_Check_Policy (N : Node_Id; Policy : Name_Id);
+    --  Set the Is_Checked, Is_Ignored, Is_Disabled attributes on node N
+    --  based on the Policy. e.g.
+    --
+    --  * When Name_Ignore (or Name_Off) is used the node is marked as ignored.
+    --  * When Name_Check (or Name_On) is used the node is marked as checked.
+    --  * When Name_Disable is used the node is marked as disabled.
+ 
     procedure Check_Postcondition_Use_In_Inlined_Subprogram
       (Prag    : Node_Id;
        Spec_Id : Entity_Id);
*************** package body Sem_Prag is
*** 266,271 ****
--- 389,399 ----
     --  set, the routine reports duplicate pragmas. The routine returns Empty
     --  when reaching the start of the node chain.
  
+    function Get_Applicable_Policy
+      (Nam : Name_Id; Level : Entity_Id) return Name_Id;
+    --  Return the name of the Check_Policy applied to the name or the level
+    --  associated with the node.
+ 
     function Get_Base_Subprogram (Def_Id : Entity_Id) return Entity_Id;
     --  If Def_Id refers to a renamed subprogram, then the base subprogram (the
     --  original one, following the renaming chain) is returned. Otherwise the
*************** package body Sem_Prag is
*** 281,286 ****
--- 409,423 ----
     --  Determine whether dependency clause Clause is surrounded by extra
     --  parentheses. If this is the case, issue an error message.
  
+    procedure Mark_Is_Checked (N : Node_Id);
+    --  Sets Is_Checked and unsets Is_Ignored
+ 
+    procedure Mark_Is_Disabled (N : Node_Id);
+    --  Sets Is_Disabled and Is_Ignored and unsets Is_Checked
+ 
+    procedure Mark_Is_Ignored (N : Node_Id);
+    --  Sets Is_Ignored and unsets Is_Checked
+ 
     procedure Record_Possible_Body_Reference
       (State_Id : Entity_Id;
        Ref      : Node_Id);
*************** package body Sem_Prag is
*** 4830,4845 ****
          (Arg                : Node_Id;
           N1, N2             : Name_Id);
        procedure Check_Arg_Is_One_Of
!         (Arg                : Node_Id;
!          N1, N2, N3         : Name_Id);
!       procedure Check_Arg_Is_One_Of
!         (Arg                : Node_Id;
!          N1, N2, N3, N4     : Name_Id);
!       procedure Check_Arg_Is_One_Of
!         (Arg                : Node_Id;
!          N1, N2, N3, N4, N5 : Name_Id);
        --  Check the specified argument Arg to make sure that it is an
!       --  identifier whose name matches either N1 or N2 (or N3, N4, N5 if
        --  present). If not then give error and raise Pragma_Exit.
  
        procedure Check_Arg_Is_Queuing_Policy (Arg : Node_Id);
--- 4967,4976 ----
          (Arg                : Node_Id;
           N1, N2             : Name_Id);
        procedure Check_Arg_Is_One_Of
!         (Arg   : Node_Id;
!          Names : Name_List);
        --  Check the specified argument Arg to make sure that it is an
!       --  identifier whose name matches either N1 or N2 (or a list of names is
        --  present). If not then give error and raise Pragma_Exit.
  
        procedure Check_Arg_Is_Queuing_Policy (Arg : Node_Id);
*************** package body Sem_Prag is
*** 4995,5000 ****
--- 5126,5136 ----
        --  presence of at least one component. UU_Typ is the related Unchecked_
        --  Union type.
  
+       function Create_Pragma_Without_Assertion_Level
+         (Expr : Node_Id) return Node_Id;
+       --  Creates a new pragma from an Assertion_Level association argument
+       --  with the same name as the orignal pragma.
+ 
        procedure Ensure_Aggregate_Form (Arg : Node_Id);
        --  Subsidiary routine to the processing of pragmas Abstract_State,
        --  Contract_Cases, Depends, Exceptional_Cases, Global, Initializes,
*************** package body Sem_Prag is
*** 5450,5455 ****
--- 5586,5604 ----
           --  a class-wide precondition only if one of its ancestors has an
           --  explicit class-wide precondition.
  
+          function Assertion_Level_Pragma_Comes_From_Source
+            (N : Node_Id) return Boolean
+          is (Present (Original_Pragma (N))
+              and then Present (Original_Node (Original_Pragma (N)))
+              and then Comes_From_Source (Original_Node (Original_Pragma (N))));
+          --  Determine whether a pragma was originally from source and used an
+          --  assertion level.
+          --
+          --  When the pragma was using an Assertion_Level it was replaced by
+          --  a new pragma where the Original_Pragma points to the original
+          --  pragma node which was removed from the tree and replaced by a
+          --  null node.
+ 
           -----------------------------
           -- Inherits_Class_Wide_Pre --
           -----------------------------
*************** package body Sem_Prag is
*** 5543,5549 ****
           --  rewriting the pragma identifier. This allows the retrieval of the
           --  original pragma name by routine Original_Aspect_Pragma_Name.
  
!          if Comes_From_Source (N) then
              if Pname in Name_Pre | Name_Pre_Class then
                 Is_Pre_Post := True;
                 Set_Class_Present (N, Pname = Name_Pre_Class);
--- 5692,5700 ----
           --  rewriting the pragma identifier. This allows the retrieval of the
           --  original pragma name by routine Original_Aspect_Pragma_Name.
  
!          if Comes_From_Source (N)
!            or else Assertion_Level_Pragma_Comes_From_Source (N)
!          then
              if Pname in Name_Pre | Name_Pre_Class then
                 Is_Pre_Post := True;
                 Set_Class_Present (N, Pname = Name_Pre_Class);
*************** package body Sem_Prag is
*** 6445,6489 ****
        end Check_Arg_Is_One_Of;
  
        procedure Check_Arg_Is_One_Of
!         (Arg        : Node_Id;
!          N1, N2, N3 : Name_Id)
!       is
!          Argx : constant Node_Id := Get_Pragma_Arg (Arg);
! 
!       begin
!          Check_Arg_Is_Identifier (Argx);
! 
!          if Chars (Argx) not in N1 | N2 | N3 then
!             Error_Pragma_Arg ("invalid argument for pragma%", Argx);
!          end if;
!       end Check_Arg_Is_One_Of;
! 
!       procedure Check_Arg_Is_One_Of
!         (Arg                : Node_Id;
!          N1, N2, N3, N4     : Name_Id)
        is
           Argx : constant Node_Id := Get_Pragma_Arg (Arg);
- 
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if Chars (Argx) not in N1 | N2 | N3 | N4 then
!             Error_Pragma_Arg ("invalid argument for pragma%", Argx);
           end if;
-       end Check_Arg_Is_One_Of;
- 
-       procedure Check_Arg_Is_One_Of
-         (Arg                : Node_Id;
-          N1, N2, N3, N4, N5 : Name_Id)
-       is
-          Argx : constant Node_Id := Get_Pragma_Arg (Arg);
- 
-       begin
-          Check_Arg_Is_Identifier (Argx);
  
!          if Chars (Argx) not in N1 | N2 | N3 | N4 | N5 then
!             Error_Pragma_Arg ("invalid argument for pragma%", Argx);
!          end if;
        end Check_Arg_Is_One_Of;
  
        ---------------------------------
--- 6596,6613 ----
        end Check_Arg_Is_One_Of;
  
        procedure Check_Arg_Is_One_Of
!         (Arg   : Node_Id;
!          Names : Name_List)
        is
           Argx : constant Node_Id := Get_Pragma_Arg (Arg);
        begin
           Check_Arg_Is_Identifier (Argx);
  
!          if (for some Name of Names => Chars (Argx) = Name) then
!             return;
           end if;
  
!          Error_Pragma_Arg ("invalid argument for pragma%", Argx);
        end Check_Arg_Is_One_Of;
  
        ---------------------------------
*************** package body Sem_Prag is
*** 6899,6910 ****
           Handler_Proc := Find_Unique_Parameterless_Procedure (Arg1_X, Arg1);
           Proc_Scope := Scope (Handler_Proc);
  
!          if Ekind (Proc_Scope) /= E_Protected_Type then
              Error_Pragma_Arg
                ("argument of pragma% must be protected procedure", Arg1);
           end if;
  
!          --  For pragma case (as opposed to access case), check placement.
           --  We don't need to do that for aspects, because we have the
           --  check that they aspect applies an appropriate procedure.
  
--- 7023,7036 ----
           Handler_Proc := Find_Unique_Parameterless_Procedure (Arg1_X, Arg1);
           Proc_Scope := Scope (Handler_Proc);
  
!          if Nkind (Parent (Subprogram_Spec (Handler_Proc))) /=
!            N_Protected_Definition
!          then
              Error_Pragma_Arg
                ("argument of pragma% must be protected procedure", Arg1);
           end if;
  
!          --  For pragma case (as opposed to aspect case), check placement.
           --  We don't need to do that for aspects, because we have the
           --  check that they aspect applies an appropriate procedure.
  
*************** package body Sem_Prag is
*** 7602,7607 ****
--- 7728,7841 ----
           end loop;
        end Check_Variant;
  
+       -------------------------------------------
+       -- Create_Pragma_Without_Assertion_Level --
+       -------------------------------------------
+ 
+       function Create_Pragma_Without_Assertion_Level
+         (Expr : Node_Id) return Node_Id
+       is
+          function Aggregate_To_Associations (N : Node_Id) return List_Id;
+          --  Converts an Aggregate into a list of
+          --  Pragma_Argument_Associations.
+ 
+          procedure Validate_Assertion_Level_Aggregate (N : Node_Id);
+          --  Handle invalid syntax scenarios for an Aggregate containing
+          --  Assertion_Levels.
+ 
+          -------------------------------
+          -- Aggregate_To_Associations --
+          -------------------------------
+ 
+          function Aggregate_To_Associations (N : Node_Id) return List_Id is
+             Args      : constant List_Id := New_List;
+             Comp_Assn : Node_Id;
+             Comp_Expr : Node_Id;
+             Comp_Expr_Repl : Node_Id;
+             Choice    : Node_Id;
+          begin
+             pragma Assert (Nkind (N) = N_Aggregate);
+             Validate_Assertion_Level_Aggregate (N);
+ 
+             Comp_Expr := First (Expressions (N));
+             while Present (Comp_Expr) loop
+                --  Remove the expression from the list so that it can be
+                --  inserted into the new Pragma_Argument_Association.
+ 
+                Comp_Expr_Repl := Comp_Expr;
+                Next (Comp_Expr);
+                Remove (Comp_Expr_Repl);
+                Append_To
+                  (Args,
+                   Make_Pragma_Argument_Association
+                     (Sloc (Comp_Expr_Repl),
+                      Expression => Comp_Expr_Repl));
+             end loop;
+ 
+             Comp_Assn := First (Component_Associations (N));
+             while Present (Comp_Assn) loop
+                Choice := First (Choices (Comp_Assn));
+                Append_To
+                  (Args,
+                   Make_Pragma_Argument_Association
+                     (Sloc (Comp_Assn),
+                      Chars      => Chars (Choice),
+                      Expression => Expression (Comp_Assn)));
+                Next (Comp_Assn);
+             end loop;
+             return Args;
+          end Aggregate_To_Associations;
+ 
+          ----------------------------------------
+          -- Validate_Assertion_Level_Aggregate --
+          ----------------------------------------
+ 
+          procedure Validate_Assertion_Level_Aggregate (N : Node_Id) is
+             Comp_Assn : Node_Id;
+             Choice    : Node_Id;
+          begin
+             Comp_Assn := First (Component_Associations (N));
+             while Present (Comp_Assn) loop
+                if List_Length (Choices (Comp_Assn)) /= 1 then
+                   Error_Pragma_Arg
+                     ("only one Assertion_Level can be associated "
+                      & "with an expression",
+                      Comp_Assn);
+                end if;
+ 
+                Choice := First (Choices (Comp_Assn));
+ 
+                if Nkind (Choice) /= N_Identifier then
+                   Error_Pragma_Arg
+                     ("\association must denote an Assertion_Level", Comp_Assn);
+                end if;
+                Next (Comp_Assn);
+             end loop;
+          end Validate_Assertion_Level_Aggregate;
+ 
+          --  Local variables
+ 
+          Args : List_Id;
+ 
+       --  Start of proessing for Create_Pragma_Without_Assertion_Level
+ 
+       begin
+          if Nkind (Expr) in N_Aggregate then
+             Validate_Assertion_Level_Aggregate (Expr);
+             Args := Aggregate_To_Associations (Expr);
+          else
+             Args :=
+               New_List
+                 (Make_Pragma_Argument_Association (Sloc (Expr),
+                    Expression => Expr));
+          end if;
+ 
+          return
+            Make_Pragma (Sloc (N),
+               Chars                        => Pname,
+               Pragma_Argument_Associations => Args);
+       end Create_Pragma_Without_Assertion_Level;
+ 
        ---------------------------
        -- Ensure_Aggregate_Form --
        ---------------------------
*************** package body Sem_Prag is
*** 8531,8536 ****
--- 8765,8772 ----
           Check_Arg_Is_OK_Static_Expression (Arg2, Standard_String);
           Analyze_And_Resolve (Arg1x, Standard_Boolean);
  
+          Mark_Ghost_Pragma (N, Current_Scope);
+ 
           if CodePeer_Mode then
              Rewrite (N, Make_Null_Statement (Loc));
              return;
*************** package body Sem_Prag is
*** 12336,12341 ****
--- 12572,12584 ----
  
        end Set_Ravenscar_Profile;
  
+       --  Local variables
+ 
+       Assoc     : Node_Id;
+       Last_Prag : Node_Id;
+       Level     : Entity_Id;
+       Sub_Prag  : Node_Id;
+ 
     --  Start of processing for Analyze_Pragma
  
     begin
*************** package body Sem_Prag is
*** 12429,12436 ****
        elsif Is_Rewrite_Substitution (N)
          and then Nkind (Original_Node (N)) = N_Pragma
        then
!          Set_Is_Ignored (N, Is_Ignored (Original_Node (N)));
!          Set_Is_Checked (N, Is_Checked (Original_Node (N)));
  
        --  Skip querying the applicable policy at this point for dynamic
        --  predicate checks since they rely on the policy applicable in
--- 12672,12678 ----
        elsif Is_Rewrite_Substitution (N)
          and then Nkind (Original_Node (N)) = N_Pragma
        then
!          Set_Pragma_Ghost_Assertion_Level (N, Original_Node (N));
  
        --  Skip querying the applicable policy at this point for dynamic
        --  predicate checks since they rely on the policy applicable in
*************** package body Sem_Prag is
*** 12446,12467 ****
  
        --  Otherwise query the applicable policy at this point
  
!       else
!          Check_Applicable_Policy (N);
  
!          --  If pragma is disabled, rewrite as NULL and skip analysis
  
-          if Is_Disabled (N) then
              Rewrite (N, Make_Null_Statement (Loc));
              Analyze (N);
              raise Pragma_Exit;
           end if;
        end if;
  
!       --  Mark assertion pragmas as Ghost depending on their enclosing context
  
!       if Assertion_Expression_Pragma (Prag_Id) then
!          Mark_Ghost_Pragma (N, Current_Scope);
        end if;
  
        --  Preset arguments
--- 12688,12754 ----
  
        --  Otherwise query the applicable policy at this point
  
!       elsif Is_Valid_Assertion_Kind (Pname) then
!          --  If the pragma is using Assertion_Level associations, analyze the
!          --  applicable policies for that pragma and then convert it into a
!          --  pragma without assertion levels. Analyze the new pragma with
!          --  policy-related attributes (Is_Checked/Is_Ignored/Is_Disabled)
!          --  already set.
  
!          if Has_Assertion_Level_Argument (N) then
!             Assoc := First (Pragma_Argument_Associations (N));
!             Last_Prag := N;
!             while Present (Assoc) loop
!                Level := Get_Assertion_Level (Chars (Assoc));
!                Sub_Prag :=
!                   Create_Pragma_Without_Assertion_Level (Expression (Assoc));
! 
!                --  Set policy based attributes based on the pragma name and the
!                --  assertion level.
! 
!                Check_Applicable_Policy (Sub_Prag, Level);
! 
!                --  Store the Level on the pragma node for easier access
! 
!                Set_Pragma_Ghost_Assertion_Level (Sub_Prag, Level);
! 
!                --  Store the Original_Pragma for the detection of
!                --  duplicates.
! 
!                Set_Original_Pragma (Sub_Prag, N);
! 
!                --  Insert the created pragmas in the same order after the
!                --  original pragma and analyze them later.
! 
!                Insert_After (Last_Prag, Sub_Prag);
!                Last_Prag := Sub_Prag;
! 
!                Next (Assoc);
!             end loop;
! 
!             --  Remove the original pragma and continue processing all
!             --  of the new sub-pragmas.
  
              Rewrite (N, Make_Null_Statement (Loc));
              Analyze (N);
              raise Pragma_Exit;
+ 
+          --  Otherwise apply the policy based attributes based on the pragma
+          --  name.
+ 
+          else
+             Check_Applicable_Policy (N, Empty);
+             Set_Pragma_Ghost_Assertion_Level
+               (N, Standard_Level_Default);
           end if;
        end if;
  
!       --  If the pragma is disabled, rewrite it as NULL and skip its analysis
  
!       if Is_Disabled (N) then
!          Rewrite (N, Make_Null_Statement (Loc));
!          Analyze (N);
!          raise Pragma_Exit;
        end if;
  
        --  Preset arguments
*************** package body Sem_Prag is
*** 13090,13095 ****
--- 13377,13388 ----
  
                             if Present (State_Id) then
                                Set_Is_Ghost_Entity (State_Id);
+ 
+                               --  Amend the Assertion_Level coming from the
+                               --  package.
+ 
+                               Set_Ghost_Assertion_Level
+                                  (State_Id, Standard_Level_Default);
                             end if;
  
                          --  Synchronous
*************** package body Sem_Prag is
*** 13170,13176 ****
--- 13463,13488 ----
  
                          elsif Chars (Opt_Nam) = Name_Part_Of then
                             Analyze_Part_Of_Option (Opt);
+                         elsif Chars (Opt_Nam) = Name_Ghost then
+                            Check_Duplicate_Option (Opt, Ghost_Seen);
+                            Check_Ghost_Synchronous;
+ 
+                            if Present (State_Id) then
+                               Set_Is_Ghost_Entity (State_Id);
+ 
+                               --  Amend the Assertion_Level coming from the
+                               --  package.
  
+                               if Nkind (Expression (Opt)) /= N_Identifier then
+                                  Error_Pragma_Arg
+                                    ("level name must be an identifier", N);
+                               end if;
+ 
+                               Set_Ghost_Assertion_Level
+                                 (State_Id,
+                                  Get_Assertion_Level
+                                    (Chars (Expression (Opt))));
+                            end if;
                          else
                             SPARK_Msg_N ("invalid state option", Opt);
                          end if;
*************** package body Sem_Prag is
*** 13837,13842 ****
--- 14149,14157 ----
              Expr    : Node_Id;
              Nam_Arg : Node_Id;
  
+             Saved_Ghost_Config : constant Ghost_Config_Type := Ghost_Config;
+             --  Save the Ghost-related attributes to restore on exit
+ 
              --------------------------
              -- Inferred_String_Type --
              --------------------------
*************** package body Sem_Prag is
*** 13914,13919 ****
--- 14229,14238 ----
                 end if;
              end if;
  
+             --  Set the ghost mode before analyzing all of the arguments
+ 
+             Set_Ghost_Mode (N);
+ 
              --  Continue the processing with last argument removed for now
  
              Check_Arg_Is_Identifier (Arg1);
*************** package body Sem_Prag is
*** 13959,13964 ****
--- 14278,14285 ----
                    Next (Arg);
                 end loop;
              end if;
+ 
+             Restore_Ghost_Region (Saved_Ghost_Config);
           end Annotate;
  
           -------------------------------------------------
*************** package body Sem_Prag is
*** 14022,14029 ****
  
              --  Local variables
  
!             Expr     : Node_Id;
!             New_Args : List_Id;
  
           --  Start of processing for Assert
  
--- 14343,14355 ----
  
              --  Local variables
  
!             Args        : Args_List (1 .. 2);
!             Arg_Check   : Node_Id renames Args (1);
!             Arg_Message : Node_Id renames Args (2);
!             Check_Prag  : Node_Id;
!             New_Args    : List_Id;
!             Names       : constant Name_List (1 .. 2) :=
!                (Name_Check, Name_Message);
  
           --  Start of processing for Assert
  
*************** package body Sem_Prag is
*** 14041,14065 ****
  
              Check_At_Least_N_Arguments (1);
              Check_At_Most_N_Arguments (2);
!             Check_Arg_Order ((Name_Check, Name_Message));
!             Check_Optional_Identifier (Arg1, Name_Check);
!             Expr := Get_Pragma_Arg (Arg1);
  
              --  Special processing for Loop_Invariant, Loop_Variant or for
              --  other cases where a Loop_Entry attribute is present. If the
              --  assertion pragma contains attribute Loop_Entry, ensure that
              --  the related pragma is within a loop.
  
!             if        Prag_Id = Pragma_Loop_Invariant
                or else Prag_Id = Pragma_Loop_Variant
!               or else Contains_Loop_Entry (Expr)
              then
                 Check_Loop_Pragma_Placement;
  
                 --  Perform preanalysis to deal with embedded Loop_Entry
                 --  attributes.
  
!                Preanalyze_And_Resolve_Assert_Expression (Expr, Any_Boolean);
              end if;
  
              --  Implement Assert[_And_Cut]/Assume/Loop_Invariant by generating
--- 14367,14392 ----
  
              Check_At_Least_N_Arguments (1);
              Check_At_Most_N_Arguments (2);
!             Gather_Associations (Names, Args);
!             Check_Arg_Order (Names);
!             Mark_Ghost_Pragma (N, Current_Scope);
  
              --  Special processing for Loop_Invariant, Loop_Variant or for
              --  other cases where a Loop_Entry attribute is present. If the
              --  assertion pragma contains attribute Loop_Entry, ensure that
              --  the related pragma is within a loop.
  
!             if Prag_Id = Pragma_Loop_Invariant
                or else Prag_Id = Pragma_Loop_Variant
!               or else Contains_Loop_Entry (Arg_Check)
              then
                 Check_Loop_Pragma_Placement;
  
                 --  Perform preanalysis to deal with embedded Loop_Entry
                 --  attributes.
  
!                Preanalyze_And_Resolve_Assert_Expression
!                   (Arg_Check, Any_Boolean);
              end if;
  
              --  Implement Assert[_And_Cut]/Assume/Loop_Invariant by generating
*************** package body Sem_Prag is
*** 14079,14108 ****
              New_Args := New_List (
                Make_Pragma_Argument_Association (Loc,
                  Expression => Make_Identifier (Loc, Pname)),
!               Make_Pragma_Argument_Association (Sloc (Expr),
!                 Expression => Expr));
  
!             if Arg_Count > 1 then
!                Check_Optional_Identifier (Arg2, Name_Message);
  
                 --  Provide semantic annotations for optional argument, for
                 --  ASIS use, before rewriting.
                 --  Is this still needed???
  
!                Preanalyze_And_Resolve (Expression (Arg2), Standard_String);
                 Append_To (New_Args, New_Copy_Tree (Arg2));
              end if;
  
              --  Rewrite as Check pragma
  
!             Rewrite (N,
!               Make_Pragma (Loc,
!                 Chars                        => Name_Check,
!                 Pragma_Argument_Associations => New_Args));
  
              Analyze (N);
           end Assert;
  
           ----------------------
           -- Assertion_Policy --
           ----------------------
--- 14406,14591 ----
              New_Args := New_List (
                Make_Pragma_Argument_Association (Loc,
                  Expression => Make_Identifier (Loc, Pname)),
!               Make_Pragma_Argument_Association (Sloc (Arg_Check),
!                 Expression => Arg_Check));
  
!             if Present (Arg_Message) then
  
                 --  Provide semantic annotations for optional argument, for
                 --  ASIS use, before rewriting.
                 --  Is this still needed???
  
!                Preanalyze_And_Resolve (Arg_Message, Standard_String);
                 Append_To (New_Args, New_Copy_Tree (Arg2));
              end if;
  
              --  Rewrite as Check pragma
  
!             Check_Prag :=
!                Make_Pragma
!                  (Loc,
!                   Chars                        => Name_Check,
!                   Pragma_Argument_Associations => New_Args);
!             Copy_Assertion_Policy_Attributes (Check_Prag, N);
!             Rewrite (N, Check_Prag);
  
              Analyze (N);
           end Assert;
  
+          ---------------------
+          -- Assertion_Level --
+          ---------------------
+ 
+          --  pragma Assertion_Level (LEVEL_IDENTIFIER
+          --                          [, depends => DEPENDENCY_DESCRIPTOR]);
+          --
+          --  DEPENDENCY_DESCRIPTOR ::= LEVEL_IDENTIFIER | LEVEL_IDENTIFIER_LIST
+          --
+          --  LEVEL_IDENTIFIER_LIST ::= '[' LEVEL_IDENTIFIER
+          --                             {, LEVEL_IDENTIFIER} ']'
+ 
+          when Pragma_Assertion_Level => Assertion_Level : declare
+             procedure Add_Dependencies
+                (Level : Entity_Id; Parent_Level : Entity_Id);
+             --  Adds the following dependencies:
+             --  * Adds Parent_Level to the Parent_Levels of Level
+             --  * Adds Level to the Child_Levels of Parent_Level
+ 
+             procedure Check_Known_Level_Name
+                (Level : Entity_Id; Ref : Node_Id);
+             --  Raise an error if the level has not be declared before
+ 
+             procedure Check_Valid_Level_Name (Nam : Name_Id);
+             --  Raise an error if the name matches a valid assertion kind.
+             --
+             --  This is to avoid the ambigiouty in Assertion_Policy if either
+             --  the level or the assertion kind is affected by the policy.
+ 
+             procedure Check_Valid_Level_Node (N : Node_Id);
+             --  Raise an error if the node is not a simple identifier
+ 
+             ----------------------
+             -- Add_Dependencies --
+             ----------------------
+ 
+             procedure Add_Dependencies
+                (Level : Entity_Id; Parent_Level : Entity_Id)
+             is
+                Parent_Level_List : Elist_Id;
+                Child_Levels_List : Elist_Id;
+             begin
+                if No (Parent_Levels (Level)) then
+                   Set_Parent_Levels (Level, New_Elmt_List);
+                end if;
+                Parent_Level_List := Parent_Levels (Level);
+                Append_Elmt (Parent_Level, Parent_Level_List);
+ 
+                if No (Child_Levels (Parent_Level)) then
+                   Set_Child_Levels (Parent_Level, New_Elmt_List);
+                end if;
+                Child_Levels_List := Child_Levels (Parent_Level);
+                Append_Elmt (Level, Child_Levels_List);
+             end Add_Dependencies;
+ 
+             ----------------------------
+             -- Check_Known_Level_Name --
+             ----------------------------
+ 
+             procedure Check_Known_Level_Name
+                (Level : Entity_Id; Ref : Node_Id) is
+             begin
+                if No (Level) then
+                   Error_Msg_Name_1 := Chars (Ref);
+                   Error_Msg_N ("unknown assertion level &", Ref);
+                   raise Pragma_Exit;
+                end if;
+             end Check_Known_Level_Name;
+ 
+             ----------------------------
+             -- Check_Valid_Level_Name --
+             ----------------------------
+ 
+             procedure Check_Valid_Level_Name (Nam : Name_Id) is
+             begin
+                if Is_Valid_Assertion_Kind (Nam) then
+                   Error_Pragma_Arg
+                      ("level name cannot match an assertion kind", Arg1);
+                end if;
+             end Check_Valid_Level_Name;
+ 
+             ----------------------------
+             -- Check_Valid_Level_Node --
+             ----------------------------
+ 
+             procedure Check_Valid_Level_Node (N : Node_Id) is
+             begin
+                if Nkind (N) /= N_Identifier then
+                   Error_Pragma_Arg ("level name must be an identifier", N);
+                end if;
+             end Check_Valid_Level_Node;
+ 
+             --  Local variables
+ 
+             Dep       : Node_Id;
+             Dep_Id    : Entity_Id;
+             Dep_Arg   : Node_Id;
+             Level_Arg : Node_Id;
+             Level_Id  : Entity_Id;
+             Level_Nam : Name_Id;
+ 
+          --  Start of processing for Pragma_Assertion_Level
+ 
+          begin
+             GNAT_Pragma;
+             Check_Valid_Configuration_Pragma;
+             Check_At_Least_N_Arguments (1);
+             Check_At_Most_N_Arguments (2);
+ 
+             Check_No_Identifier (Arg1);
+ 
+             Level_Arg := Expression (Arg1);
+             Check_Valid_Level_Node (Level_Arg);
+ 
+             Level_Nam := Chars (Level_Arg);
+             Check_Valid_Level_Name (Level_Nam);
+ 
+             Level_Id := Make_Assertion_Level (Loc, Level_Nam);
+ 
+             Set_Parent (Level_Id, Level_Arg);
+             Set_Entity (Level_Arg, Level_Id);
+ 
+             if Arg_Count = 2 then
+                Check_Identifier (Arg2, Name_Depends);
+ 
+                Dep_Arg := Expression (Arg2);
+ 
+                if Nkind (Dep_Arg) = N_Identifier then
+                   Dep_Id := Get_Assertion_Level (Chars (Dep_Arg));
+                   Check_Known_Level_Name (Dep_Id, Dep_Arg);
+                   Add_Dependencies (Level_Id, Dep_Id);
+                elsif Nkind (Dep_Arg) = N_Aggregate then
+                   Dep := First (Expressions (Dep_Arg));
+                   while Present (Dep) loop
+                      Check_Valid_Level_Node (Dep);
+                      Dep_Id := Get_Assertion_Level (Chars (Dep));
+                      Check_Known_Level_Name (Dep_Id, Dep);
+                      Add_Dependencies (Level_Id, Dep_Id);
+ 
+                      Next (Dep);
+                   end loop;
+                else
+                   Error_Pragma_Arg
+                     ("depends argument must be either "
+                      & "an identifier or "
+                      & "an aggregate of identifiers", Dep_Arg);
+                end if;
+             end if;
+ 
+             --  Register the new Assertion_Level
+ 
+             Insert_Assertion_Level (Level_Id);
+          end Assertion_Level;
+ 
           ----------------------
           -- Assertion_Policy --
           ----------------------
*************** package body Sem_Prag is
*** 14115,14121 ****
           --      ASSERTION_KIND => POLICY_IDENTIFIER
           --   {, ASSERTION_KIND => POLICY_IDENTIFIER});
  
!          --  ASSERTION_KIND ::= RM_ASSERTION_KIND | ID_ASSERTION_KIND
  
           --  RM_ASSERTION_KIND ::= Assert                     |
           --                        Static_Predicate           |
--- 14598,14606 ----
           --      ASSERTION_KIND => POLICY_IDENTIFIER
           --   {, ASSERTION_KIND => POLICY_IDENTIFIER});
  
!          --  ASSERTION_KIND ::= RM_ASSERTION_KIND |
!          --                     ID_ASSERTION_KIND |
!          --                     LEVEL_IDENTIFIER
  
           --  RM_ASSERTION_KIND ::= Assert                     |
           --                        Static_Predicate           |
*************** package body Sem_Prag is
*** 14194,14201 ****
--- 14679,14691 ----
  
              --  Local variables
  
+             Policy_Names : constant Name_List :=
+               (Name_Check, Name_Disable, Name_Ignore, Name_Suppressible);
+ 
              Arg    : Node_Id;
+             Id     : Node_Id;
              Kind   : Name_Id;
+             Level  : Entity_Id;
              LocP   : Source_Ptr;
              Policy : Node_Id;
  
*************** package body Sem_Prag is
*** 14222,14229 ****
                and then (Nkind (Arg1) /= N_Pragma_Argument_Association
                           or else Chars (Arg1) = No_Name)
              then
!                Check_Arg_Is_One_Of (Arg1,
!                  Name_Check, Name_Disable, Name_Ignore, Name_Suppressible);
  
                 Resolve_Suppressible (Arg1);
  
--- 14712,14718 ----
                and then (Nkind (Arg1) /= N_Pragma_Argument_Association
                           or else Chars (Arg1) = No_Name)
              then
!                Check_Arg_Is_One_Of (Arg1, Policy_Names);
  
                 Resolve_Suppressible (Arg1);
  
*************** package body Sem_Prag is
*** 14272,14286 ****
                    --  Check Kind and Policy have allowed forms
  
                    Kind   := Chars (Arg);
                    Policy := Get_Pragma_Arg (Arg);
  
                    if not Is_Valid_Assertion_Kind (Kind) then
!                      Error_Pragma_Arg
!                        ("invalid assertion kind for pragma%", Arg);
                    end if;
  
!                   Check_Arg_Is_One_Of (Arg,
!                     Name_Check, Name_Disable, Name_Ignore, Name_Suppressible);
  
                    Resolve_Suppressible (Arg);
  
--- 14761,14782 ----
                    --  Check Kind and Policy have allowed forms
  
                    Kind   := Chars (Arg);
+                   Id := Make_Identifier (LocP, Kind);
                    Policy := Get_Pragma_Arg (Arg);
  
                    if not Is_Valid_Assertion_Kind (Kind) then
!                      Set_Entity (Id, Get_Assertion_Level (Kind));
!                      Level := Entity (Id);
!                      if No (Level)
!                        or else Ekind (Level) /= E_Assertion_Level
!                      then
!                         Error_Pragma_Arg
!                            ("invalid assertion kind for pragma%",
!                            Arg);
!                      end if;
                    end if;
  
!                   Check_Arg_Is_One_Of (Arg, Policy_Names);
  
                    Resolve_Suppressible (Arg);
  
*************** package body Sem_Prag is
*** 14321,14327 ****
                        Chars                        => Name_Check_Policy,
                        Pragma_Argument_Associations => New_List (
                           Make_Pragma_Argument_Association (LocP,
!                            Expression => Make_Identifier (LocP, Kind)),
                           Make_Pragma_Argument_Association (LocP,
                             Expression => Policy))));
  
--- 14817,14823 ----
                        Chars                        => Name_Check_Policy,
                        Pragma_Argument_Associations => New_List (
                           Make_Pragma_Argument_Association (LocP,
!                            Expression => Id),
                           Make_Pragma_Argument_Association (LocP,
                             Expression => Policy))));
  
*************** package body Sem_Prag is
*** 14864,14875 ****
                 pragma Assert (Has_Dynamic_Predicate_Aspect (Typ));
  
                 if not Predicates_Ignored (Typ) then
!                   Set_Is_Checked (N, True);
!                   Set_Is_Ignored (N, False);
  
                 else
!                   Set_Is_Checked (N, False);
!                   Set_Is_Ignored (N, True);
  
                 end if;
              end Handle_Dynamic_Predicate_Check;
--- 15360,15369 ----
                 pragma Assert (Has_Dynamic_Predicate_Aspect (Typ));
  
                 if not Predicates_Ignored (Typ) then
!                   Mark_Is_Checked (N);
  
                 else
!                   Mark_Is_Ignored (N);
  
                 end if;
              end Handle_Dynamic_Predicate_Check;
*************** package body Sem_Prag is
*** 14879,14889 ****
              Saved_Ghost_Config : constant Ghost_Config_Type := Ghost_Config;
              --  Save the Ghost-related attributes to restore on exit
  
              Cname : Name_Id;
              Eloc  : Source_Ptr;
-             Expr  : Node_Id;
-             Str   : Node_Id;
-             pragma Warnings (Off, Str);
  
           --  Start of processing for Pragma_Check
  
--- 15373,15388 ----
              Saved_Ghost_Config : constant Ghost_Config_Type := Ghost_Config;
              --  Save the Ghost-related attributes to restore on exit
  
+             Names : constant Name_List (1 .. 3) :=
+                (Name_Name, Name_Check, Name_Message);
+ 
+             Args        : Args_List (1 .. 3);
+             Arg_Name    : Node_Id renames Args (1);
+             Arg_Check   : Node_Id renames Args (2);
+             Arg_Message : Node_Id renames Args (3);
+ 
              Cname : Name_Id;
              Eloc  : Source_Ptr;
  
           --  Start of processing for Pragma_Check
  
*************** package body Sem_Prag is
*** 14892,14913 ****
              --  the mode now to ensure that any nodes generated during analysis
              --  and expansion are marked as Ghost.
  
              Set_Ghost_Mode (N);
  
              GNAT_Pragma;
              Check_At_Least_N_Arguments (2);
              Check_At_Most_N_Arguments (3);
-             Check_Optional_Identifier (Arg1, Name_Name);
-             Check_Optional_Identifier (Arg2, Name_Check);
  
!             if Arg_Count = 3 then
!                Check_Optional_Identifier (Arg3, Name_Message);
!                Str := Get_Pragma_Arg (Arg3);
!             end if;
  
!             Rewrite_Assertion_Kind (Get_Pragma_Arg (Arg1));
!             Check_Arg_Is_Identifier (Arg1);
!             Cname := Chars (Get_Pragma_Arg (Arg1));
  
              --  Check forbidden name Assertions or Statement_Assertions
  
--- 15391,15409 ----
              --  the mode now to ensure that any nodes generated during analysis
              --  and expansion are marked as Ghost.
  
+             Mark_Ghost_Pragma (N, Current_Scope);
+ 
              Set_Ghost_Mode (N);
  
              GNAT_Pragma;
              Check_At_Least_N_Arguments (2);
              Check_At_Most_N_Arguments (3);
  
!             Gather_Associations (Names, Args);
  
!             Rewrite_Assertion_Kind (Arg_Name);
!             Check_Arg_Is_Identifier (Arg_Name);
!             Cname := Chars (Arg_Name);
  
              --  Check forbidden name Assertions or Statement_Assertions
  
*************** package body Sem_Prag is
*** 14915,14926 ****
                 when Name_Assertions =>
                    Error_Pragma_Arg
                      ("""Assertions"" is not allowed as a check kind for "
!                      & "pragma%", Arg1);
  
                 when Name_Statement_Assertions =>
                    Error_Pragma_Arg
                      ("""Statement_Assertions"" is not allowed as a check kind "
!                      & "for pragma%", Arg1);
  
                 when others =>
                    null;
--- 15411,15422 ----
                 when Name_Assertions =>
                    Error_Pragma_Arg
                      ("""Assertions"" is not allowed as a check kind for "
!                      & "pragma%", Arg_Name);
  
                 when Name_Statement_Assertions =>
                    Error_Pragma_Arg
                      ("""Statement_Assertions"" is not allowed as a check kind "
!                      & "for pragma%", Arg_Name);
  
                 when others =>
                    null;
*************** package body Sem_Prag is
*** 14938,14945 ****
              elsif Is_Rewrite_Substitution (N)
                and then Nkind (Original_Node (N)) = N_Pragma
              then
!                Set_Is_Ignored (N, Is_Ignored (Original_Node (N)));
!                Set_Is_Checked (N, Is_Checked (Original_Node (N)));
  
              --  Internally added dynamic predicate checks require checking the
              --  applicable policy at the point of the type declaration of their
--- 15434,15440 ----
              elsif Is_Rewrite_Substitution (N)
                and then Nkind (Original_Node (N)) = N_Pragma
              then
!                Copy_Assertion_Policy_Attributes (N, Original_Node (N));
  
              --  Internally added dynamic predicate checks require checking the
              --  applicable policy at the point of the type declaration of their
*************** package body Sem_Prag is
*** 14954,14987 ****
              --  Otherwise query the applicable policy at this point
  
              else
!                case Check_Kind (Cname) is
!                   when Name_Ignore =>
!                      Set_Is_Ignored (N, True);
!                      Set_Is_Checked (N, False);
! 
!                   when Name_Check =>
!                      Set_Is_Ignored (N, False);
!                      Set_Is_Checked (N, True);
! 
!                   --  For disable, rewrite pragma as null statement and skip
!                   --  rest of the analysis of the pragma.
! 
!                   when Name_Disable =>
!                      Rewrite (N, Make_Null_Statement (Loc));
!                      Analyze (N);
!                      raise Pragma_Exit;
  
!                   --  No other possibilities
  
!                   when others =>
!                      raise Program_Error;
!                end case;
              end if;
  
-             --  If check kind was not Disable, then continue pragma analysis
- 
-             Expr := Get_Pragma_Arg (Arg2);
- 
              --  Mark the pragma (or, if rewritten from an aspect, the original
              --  aspect) as enabled. Nothing to do for an internally generated
              --  check for a dynamic predicate.
--- 15449,15466 ----
              --  Otherwise query the applicable policy at this point
  
              else
!                Apply_Check_Policy (N, Get_Applicable_Policy (Cname, Empty));
  
!                --  For disable, rewrite pragma as null statement and skip
!                --  rest of the analysis of the pragma.
  
!                if Is_Disabled (N) then
!                   Rewrite (N, Make_Null_Statement (Loc));
!                   Analyze (N);
!                   raise Pragma_Exit;
!                end if;
              end if;
  
              --  Mark the pragma (or, if rewritten from an aspect, the original
              --  aspect) as enabled. Nothing to do for an internally generated
              --  check for a dynamic predicate.
*************** package body Sem_Prag is
*** 15005,15012 ****
              --  expression is only evaluated if the check fails and
              --  Assertion_Error is to be raised.
  
!             if Arg_Count = 3 then
!                Preanalyze_And_Resolve (Str, Standard_String);
              end if;
  
              --  Now you might think we could just do the same with the Boolean
--- 15484,15491 ----
              --  expression is only evaluated if the check fails and
              --  Assertion_Error is to be raised.
  
!             if Present (Arg_Message) then
!                Preanalyze_And_Resolve (Arg_Message, Standard_String);
              end if;
  
              --  Now you might think we could just do the same with the Boolean
*************** package body Sem_Prag is
*** 15035,15048 ****
              --  warning when we delete the if statement.
  
              if Expander_Active and Is_Ignored_In_Codegen (N) then
!                Eloc := Sloc (Expr);
  
                 Rewrite (N,
                   Make_If_Statement (Eloc,
                     Condition =>
                       Make_And_Then (Eloc,
                         Left_Opnd  => Make_Identifier (Eloc, Name_False),
!                        Right_Opnd => Expr),
                     Then_Statements => New_List (
                       Make_Null_Statement (Eloc))));
  
--- 15514,15527 ----
              --  warning when we delete the if statement.
  
              if Expander_Active and Is_Ignored_In_Codegen (N) then
!                Eloc := Sloc (Arg_Check);
  
                 Rewrite (N,
                   Make_If_Statement (Eloc,
                     Condition =>
                       Make_And_Then (Eloc,
                         Left_Opnd  => Make_Identifier (Eloc, Name_False),
!                        Right_Opnd => Arg_Check),
                     Then_Statements => New_List (
                       Make_Null_Statement (Eloc))));
  
*************** package body Sem_Prag is
*** 15083,15089 ****
  
              else
                 In_Assertion_Expr := In_Assertion_Expr + 1;
!                Analyze_And_Resolve (Expr, Any_Boolean);
                 In_Assertion_Expr := In_Assertion_Expr - 1;
              end if;
  
--- 15562,15568 ----
  
              else
                 In_Assertion_Expr := In_Assertion_Expr + 1;
!                Analyze_And_Resolve (Arg_Check, Any_Boolean);
                 In_Assertion_Expr := In_Assertion_Expr - 1;
              end if;
  
*************** package body Sem_Prag is
*** 15157,15163 ****
           --  new form syntax.
  
           when Pragma_Check_Policy => Check_Policy : declare
!             Kind : Node_Id;
  
           begin
              GNAT_Pragma;
--- 15636,15725 ----
           --  new form syntax.
  
           when Pragma_Check_Policy => Check_Policy : declare
!             procedure Get_All_Child_Levels
!                (Level : Entity_Id;
!                 Deps  : in out Elist_Id);
!             --  Add all of the transitive children of the given Level to the
!             --  Deps list.
! 
!             procedure Get_All_Parent_Levels
!                (Level : Entity_Id;
!                 Deps  : in out Elist_Id);
!             --  Add all of the transitive parents of the given Level to the
!             --  Deps list.
! 
!             --------------------------
!             -- Get_All_Child_Levels --
!             --------------------------
! 
!             procedure Get_All_Child_Levels
!                (Level : Entity_Id;
!                 Deps : in out Elist_Id)
!             is
!                It : Elmt_Id;
!                Child_Lvl : Entity_Id;
!             begin
!                if No (Child_Levels (Level)) then
!                   return;
!                end if;
! 
!                It := First_Elmt (Child_Levels (Level));
!                while Present (It) loop
!                   Child_Lvl := Node (It);
!                   if not Contains (Deps, Child_Lvl) then
!                      Append_New_Elmt (Child_Lvl, Deps);
!                      Get_All_Child_Levels (Child_Lvl, Deps);
!                   end if;
! 
!                   Next_Elmt (It);
!                end loop;
!             end Get_All_Child_Levels;
! 
!             ---------------------------
!             -- Get_All_Parent_Levels --
!             ---------------------------
! 
!             procedure Get_All_Parent_Levels
!                (Level : Entity_Id;
!                 Deps : in out Elist_Id)
!             is
!                It : Elmt_Id;
!                D : Entity_Id;
!             begin
!                if No (Parent_Levels (Level)) then
!                   return;
!                end if;
! 
!                It := First_Elmt (Parent_Levels (Level));
!                while Present (It) loop
!                   D := Node (It);
! 
!                   if not Contains (Deps, D) then
!                      Append_New_Elmt (D, Deps);
!                      Get_All_Parent_Levels (D, Deps);
!                   end if;
! 
!                   Next_Elmt (It);
!                end loop;
!             end Get_All_Parent_Levels;
! 
!             --  Local variables
! 
!             Policy_Names : constant Name_List :=
!               (Name_On, Name_Off, Name_Check, Name_Disable, Name_Ignore);
! 
!             Affected_Levels   : Elist_Id := New_Elmt_List;
!             Depends_On_Static : Boolean := False;
! 
!             Kind       : Node_Id;
!             Level      : Entity_Id;
!             L          : Entity_Id;
!             L_It       : Elmt_Id;
!             L_Id       : Node_Id;
!             New_P      : Node_Id;
!             Policy_Nam : Name_Id;
! 
!          --  Start of processing for Pragma Check_Policy
  
           begin
              GNAT_Pragma;
*************** package body Sem_Prag is
*** 15199,15213 ****
                 --  Check policy
  
                 Check_Optional_Identifier (Arg2, Name_Policy);
!                Check_Arg_Is_One_Of
!                  (Arg2,
!                   Name_On, Name_Off, Name_Check, Name_Disable, Name_Ignore);
  
                 --  And chain pragma on the Check_Policy_List for search
  
                 Set_Next_Pragma (N, Opt.Check_Policy_List);
                 Opt.Check_Policy_List := N;
  
              --  For the new syntax, what we do is to convert each argument to
              --  an old syntax equivalent. We do that because we want to chain
              --  old style Check_Policy pragmas for the search (we don't want
--- 15761,15852 ----
                 --  Check policy
  
                 Check_Optional_Identifier (Arg2, Name_Policy);
!                Check_Arg_Is_One_Of (Arg2, Policy_Names);
! 
!                Policy_Nam := Chars (Get_Pragma_Arg (Arg2));
  
                 --  And chain pragma on the Check_Policy_List for search
  
                 Set_Next_Pragma (N, Opt.Check_Policy_List);
                 Opt.Check_Policy_List := N;
  
+                --  For Assertion_Levels create new policies for all of the
+                --  level dependencies.
+ 
+                if Present (Entity (Kind))
+                  and then Ekind (Entity (Kind)) = E_Assertion_Level
+                then
+                   Level := Entity (Kind);
+ 
+                   Depends_On_Static :=
+                     Depends_On_Level (Level, Standard_Level_Static);
+ 
+                   if Policy_Nam in Name_On | Name_Check then
+                      if Level = Standard_Level_Static then
+                         Error_Pragma_Arg
+                           ("policy for `Static` cannot be changed to `Check`",
+                            Arg1);
+                      elsif Depends_On_Static then
+                         Error_Pragma_Arg
+                           ("Policy for a level that depends on `Static` "
+                            & "cannot be changed to `Check`",
+                            Arg1);
+                      end if;
+                   end if;
+ 
+                   if Policy_Nam in Name_Off | Name_Ignore
+                      and then Level = Standard_Level_Runtime
+                   then
+                      Error_Pragma_Arg
+                         ("policy for `Runtime` cannot be changed to `Ignore`",
+                         Arg1);
+                   end if;
+ 
+                   --  For Assertion_Levels create new policyies for all of the
+                   --  level dependencies.
+ 
+                   if Policy_Nam in Name_On | Name_Check then
+ 
+                      --  Activating a level activates all levels that it
+                      --  depends on (Parent_Levels).
+ 
+                      Get_All_Parent_Levels (Level, Affected_Levels);
+                   elsif Policy_Nam in Name_Off | Name_Ignore then
+ 
+                      --  Deactivating a level deactivates all levels that
+                      --  depend on it (Child_Levels)
+ 
+                      Get_All_Child_Levels (Level, Affected_Levels);
+                   end if;
+ 
+                   L_It := First_Elmt (Affected_Levels);
+                   while Present (L_It) loop
+                      L := Node (L_It);
+                      L_Id := Make_Identifier (Sloc (Arg1), Chars (L));
+                      Set_Entity (L_Id, L);
+                      New_P :=
+                        Make_Pragma (Sloc (N),
+                          Chars                        => Name_Check_Policy,
+                          Pragma_Argument_Associations => New_List (
+                            Make_Pragma_Argument_Association (Sloc (Arg1),
+                              Expression => L_Id),
+                            Make_Pragma_Argument_Association (Sloc (Arg2),
+                              Expression =>
+                                New_Copy_Tree (Get_Pragma_Arg (Arg2)))));
+ 
+                      --  We have collected the unique list of all transitive
+                      --  Parent_Levels or Child_Levels. Avoid calculating
+                      --  them again.
+ 
+                      Set_Analyzed (New_P);
+ 
+                      Set_Next_Pragma (New_P, Opt.Check_Policy_List);
+                      Opt.Check_Policy_List := New_P;
+ 
+                      Next_Elmt (L_It);
+                   end loop;
+                end if;
+ 
              --  For the new syntax, what we do is to convert each argument to
              --  an old syntax equivalent. We do that because we want to chain
              --  old style Check_Policy pragmas for the search (we don't want
*************** package body Sem_Prag is
*** 15218,15225 ****
                    Arg   : Node_Id;
                    Argx  : Node_Id;
                    LocP  : Source_Ptr;
-                   New_P : Node_Id;
- 
                 begin
                    Arg := Arg1;
                    while Present (Arg) loop
--- 15857,15862 ----
*************** package body Sem_Prag is
*** 16362,16367 ****
--- 16999,17019 ----
              Check_No_Identifiers;
              Check_At_Most_N_Arguments (2);  -- Accounts for implicit type arg
  
+             --  The value "null" cannot be associated with an assertion level
+             --  as it has no runtime semantics.
+ 
+             if Present (Pragma_Ghost_Assertion_Level (N))
+                and then Pragma_Ghost_Assertion_Level (N)
+                         /= Standard_Level_Default
+                and then Present (Arg1)
+                and then Nkind (Get_Pragma_Arg (Arg1)) = N_Null
+             then
+                Error_Pragma_Arg
+                   ("null argument cannot be used together "
+                   & "with assertion levels",
+                   Arg1);
+             end if;
+ 
              Typ  := Empty;
              Stmt := Prev (N);
              while Present (Stmt) loop
*************** package body Sem_Prag is
*** 16369,16375 ****
                 --  Skip prior pragmas, but check for duplicates
  
                 if Nkind (Stmt) = N_Pragma then
!                   if Pragma_Name (Stmt) = Pname then
                       Duplication_Error
                         (Prag => N,
                          Prev => Stmt);
--- 17021,17029 ----
                 --  Skip prior pragmas, but check for duplicates
  
                 if Nkind (Stmt) = N_Pragma then
!                   if Pragma_Name (Stmt) = Pname
!                      and then not From_Same_Pragma (N, Stmt)
!                   then
                       Duplication_Error
                         (Prag => N,
                          Prev => Stmt);
*************** package body Sem_Prag is
*** 18020,18026 ****
              GNAT_Pragma;
              Check_Arg_Count (1);
              Check_No_Identifiers;
!             Check_Arg_Is_One_Of (Arg1, Name_On, Name_Off, Name_All_Extensions);
  
              if Chars (Get_Pragma_Arg (Arg1)) = Name_On then
                 Ada_Version := Ada_With_Core_Extensions;
--- 18674,18681 ----
              GNAT_Pragma;
              Check_Arg_Count (1);
              Check_No_Identifiers;
!             Check_Arg_Is_One_Of
!               (Arg1, (Name_On, Name_Off, Name_All_Extensions));
  
              if Chars (Get_Pragma_Arg (Arg1)) = Name_On then
                 Ada_Version := Ada_With_Core_Extensions;
*************** package body Sem_Prag is
*** 18225,18231 ****
  
              if Arg_Count = 2 then
                 Check_Arg_Is_One_Of
!                  (Arg2, Name_As_Is, Name_Uppercase, Name_Lowercase);
  
                 case Chars (Get_Pragma_Arg (Arg2)) is
                    when Name_As_Is     =>
--- 18880,18886 ----
  
              if Arg_Count = 2 then
                 Check_Arg_Is_One_Of
!                  (Arg2, (Name_As_Is, Name_Uppercase, Name_Lowercase));
  
                 case Chars (Get_Pragma_Arg (Arg2)) is
                    when Name_As_Is     =>
*************** package body Sem_Prag is
*** 18470,18481 ****
           -- Ghost --
           -----------
  
!          --  pragma Ghost [ (static_boolean_EXPRESSION) ];
  
           when Pragma_Ghost => Ghost : declare
              Context   : Node_Id;
              Expr      : Node_Id;
              Id        : Entity_Id;
              Orig_Stmt : Node_Id;
              Prev_Id   : Entity_Id;
              Stmt      : Node_Id;
--- 19125,19139 ----
           -- Ghost --
           -----------
  
!          --  pragma Ghost [ (static_boolean_EXPRESSION
!          --                  | Assertion_Level) ];
  
           when Pragma_Ghost => Ghost : declare
              Context   : Node_Id;
              Expr      : Node_Id;
              Id        : Entity_Id;
+             Is_Ghost  : Boolean := True;
+             Level     : Entity_Id;
              Orig_Stmt : Node_Id;
              Prev_Id   : Entity_Id;
              Stmt      : Node_Id;
*************** package body Sem_Prag is
*** 18699,18728 ****
              if Present (Arg1) then
                 Expr := Get_Pragma_Arg (Arg1);
  
!                Analyze_And_Resolve (Expr, Standard_Boolean);
! 
!                if Is_OK_Static_Expression (Expr) then
! 
!                   --  "Ghostness" cannot be turned off once enabled within a
!                   --  region (SPARK RM 6.9(6)).
  
!                   if Is_False (Expr_Value (Expr))
!                      and then Ghost_Config.Ghost_Mode > None
!                   then
!                      Error_Pragma
!                        ("pragma % with value False cannot appear in enabled "
!                         & "ghost region");
                    end if;
  
!                --  Otherwise the expression is not static
  
!                else
!                   Error_Pragma_Arg
!                     ("expression of pragma % must be static", Expr);
                 end if;
              end if;
  
!             Set_Is_Ghost_Entity (Id);
           end Ghost;
  
           ------------
--- 19357,19404 ----
              if Present (Arg1) then
                 Expr := Get_Pragma_Arg (Arg1);
  
!                if Nkind (Expr) /= N_Identifier
!                  or else No (Get_Assertion_Level (Chars (Expr)))
!                then
!                   Analyze_And_Resolve (Expr, Standard_Boolean);
  
!                   if not Is_OK_Static_Expression (Expr) then
!                      Error_Pragma_Arg
!                         ("expression of pragma % must be static", Expr);
                    end if;
  
!                   if Is_False (Expr_Value (Expr)) then
!                      Is_Ghost := False;
  
!                      --  "Ghostness" cannot be turned off once enabled within a
!                      --  region (SPARK RM 6.9(6)).
! 
!                      if Ghost_Config.Ghost_Mode > None  then
!                         Error_Pragma
!                           ("pragma % with value False cannot appear in enabled"
!                           & " ghost region");
!                      end if;
!                   end if;
                 end if;
              end if;
  
!             Level := Assertion_Level_From_Arg (Arg1);
! 
!             --  Associate the assertion level before determing the kind of
!             --  ghost entity we should mark the entity as.
! 
!             Set_Ghost_Assertion_Level (Id, Level);
! 
!             --  Store it on the pragma node as well
! 
!             Set_Pragma_Ghost_Assertion_Level (N, Level);
! 
!             --  Mark it as a Ghost entity unless it was explicitly marked with
!             --  pragma Ghost (False).
! 
!             if Is_Ghost then
!                Set_Is_Ghost_Entity (Id);
!             end if;
           end Ghost;
  
           ------------
*************** package body Sem_Prag is
*** 18943,18959 ****
              Proc_Id : Entity_Id;
              Typ     : Entity_Id;
  
           begin
              Ada_2012_Pragma;
              Check_Arg_Count (2);
              Check_No_Identifiers;
              Check_Arg_Is_Identifier (Arg1);
              Check_Arg_Is_Local_Name (Arg1);
!             Check_Arg_Is_One_Of (Arg2,
!               Name_By_Any,
!               Name_By_Entry,
!               Name_By_Protected_Procedure,
!               Name_Optional);
  
              --  Extract the name of the local procedure
  
--- 19619,19635 ----
              Proc_Id : Entity_Id;
              Typ     : Entity_Id;
  
+             Impl_Names : constant Name_List := (Name_By_Any,
+                Name_By_Entry,
+                Name_By_Protected_Procedure,
+                Name_Optional);
           begin
              Ada_2012_Pragma;
              Check_Arg_Count (2);
              Check_No_Identifiers;
              Check_Arg_Is_Identifier (Arg1);
              Check_Arg_Is_Local_Name (Arg1);
!             Check_Arg_Is_One_Of (Arg2, Impl_Names);
  
              --  Extract the name of the local procedure
  
*************** package body Sem_Prag is
*** 20875,20880 ****
--- 21551,21561 ----
           when Pragma_Loop_Optimize => Loop_Optimize : declare
              Hint : Node_Id;
  
+             Hint_Names : constant Name_List := (Name_Ivdep,
+                                                 Name_No_Unroll,
+                                                 Name_Unroll,
+                                                 Name_No_Vector,
+                                                 Name_Vector);
           begin
              GNAT_Pragma;
              Check_At_Least_N_Arguments (1);
*************** package body Sem_Prag is
*** 20882,20892 ****
  
              Hint := First (Pragma_Argument_Associations (N));
              while Present (Hint) loop
!                Check_Arg_Is_One_Of (Hint, Name_Ivdep,
!                                           Name_No_Unroll,
!                                           Name_Unroll,
!                                           Name_No_Vector,
!                                           Name_Vector);
                 Next (Hint);
              end loop;
  
--- 21563,21569 ----
  
              Hint := First (Pragma_Argument_Associations (N));
              while Present (Hint) loop
!                Check_Arg_Is_One_Of (Hint, Hint_Names);
                 Next (Hint);
              end loop;
  
*************** package body Sem_Prag is
*** 20911,20916 ****
--- 21588,21594 ----
              GNAT_Pragma;
              Check_At_Least_N_Arguments (1);
              Check_Loop_Pragma_Placement;
+             Mark_Ghost_Pragma (N, Current_Scope);
  
              --  Process all increasing / decreasing expressions
  
*************** package body Sem_Prag is
*** 22238,22244 ****
           when Pragma_Optimize =>
              Check_No_Identifiers;
              Check_Arg_Count (1);
!             Check_Arg_Is_One_Of (Arg1, Name_Time, Name_Space, Name_Off);
  
           ------------------------
           -- Optimize_Alignment --
--- 22916,22922 ----
           when Pragma_Optimize =>
              Check_No_Identifiers;
              Check_Arg_Count (1);
!             Check_Arg_Is_One_Of (Arg1, (Name_Time, Name_Space, Name_Off));
  
           ------------------------
           -- Optimize_Alignment --
*************** package body Sem_Prag is
*** 23158,23169 ****
              --  removal of ignored Ghost code.
  
              if From_Aspect_Specification (N)
!               and then Get_Aspect_Id
!                          (Chars (Identifier (Corresponding_Aspect (N))))
!                 = Aspect_Ghost_Predicate
              then
!                Mark_Ghost_Pragma
!                  (N, Name_To_Ghost_Mode (Policy_In_Effect (Name_Ghost)));
              else
                 Mark_Ghost_Pragma (N, Typ);
              end if;
--- 23836,23853 ----
              --  removal of ignored Ghost code.
  
              if From_Aspect_Specification (N)
!               and then Get_Aspect_Id (Corresponding_Aspect (N))
!                        = Aspect_Ghost_Predicate
              then
!                --  For Ghost_Predicate we have already analyzed the applicable
!                --  ghost policy already and set the policy using Is_Checked and
!                --  Is_Ignored.
! 
!                if Is_Ignored (N) then
!                   Mark_Ghost_Pragma (N, Opt.Ignore);
!                else
!                   Mark_Ghost_Pragma (N, Opt.Check);
!                end if;
              else
                 Mark_Ghost_Pragma (N, Typ);
              end if;
*************** package body Sem_Prag is
*** 25675,25681 ****
              --  Check the legality of the mode (no argument = ON)
  
              if Arg_Count = 1 then
!                Check_Arg_Is_One_Of (Arg1, Name_Auto, Name_On, Name_Off);
                 Mode := Chars (Get_Pragma_Arg (Arg1));
              else
                 Mode := Name_On;
--- 26359,26365 ----
              --  Check the legality of the mode (no argument = ON)
  
              if Arg_Count = 1 then
!                Check_Arg_Is_One_Of (Arg1, (Name_Auto, Name_On, Name_Off));
                 Mode := Chars (Get_Pragma_Arg (Arg1));
              else
                 Mode := Name_On;
*************** package body Sem_Prag is
*** 27145,27151 ****
              GNAT_Pragma;
              Check_Arg_Count (1);
              Check_No_Identifiers;
!             Check_Arg_Is_One_Of (Arg1, Name_Error, Name_Warn, Name_Allow);
  
              --  Suppress/Unsuppress can appear as a configuration pragma, or in
              --  a declarative part or a package spec.
--- 27829,27835 ----
              GNAT_Pragma;
              Check_Arg_Count (1);
              Check_No_Identifiers;
!             Check_Arg_Is_One_Of (Arg1, (Name_Error, Name_Warn, Name_Allow));
  
              --  Suppress/Unsuppress can appear as a configuration pragma, or in
              --  a declarative part or a package spec.
*************** package body Sem_Prag is
*** 27342,27347 ****
--- 28026,28094 ----
                 Unreserve_All_Interrupts := True;
              end if;
  
+          --------------------------------
+          -- Pragma_Unsigned_Base_Range --
+          --------------------------------
+ 
+          when Pragma_Unsigned_Base_Range => Unsigned_Base_Range : declare
+             Arg       : Node_Id;
+             E         : Entity_Id := Empty;
+             Expr      : Node_Id := Empty;
+ 
+          begin
+             GNAT_Pragma;
+             Check_At_Least_N_Arguments (1);
+             Check_At_Most_N_Arguments  (2);
+ 
+             Arg := Get_Pragma_Arg (Arg1);
+             Check_Arg_Is_Identifier (Arg);
+ 
+             Analyze (Arg);
+             E := Entity (Arg);
+ 
+             if Present (Arg2) then
+                Check_Arg_Is_OK_Static_Expression (Arg2, Standard_Boolean);
+                Expr := Get_Pragma_Arg (Arg2);
+                Analyze_And_Resolve (Expr, Standard_Boolean);
+             end if;
+ 
+             if not Core_Extensions_Allowed then
+                Error_Msg_GNAT_Extension
+                  ("'Unsigned_'Base_'Range", Sloc (N),
+                   Is_Core_Extension => True);
+                return;
+ 
+             elsif not Is_Integer_Type (E)
+               or else Is_Modular_Integer_Type (E)
+             then
+                Error_Pragma_Arg
+                  ("cannot apply pragma %",
+                   "\& is not a signed integer type",
+                   Arg1);
+ 
+             elsif Is_Derived_Type (E) then
+                Error_Pragma_Arg
+                  ("pragma % cannot apply to derived type", Arg1);
+             end if;
+ 
+             Check_First_Subtype (Arg1);
+ 
+             --  Create the new unsigned integer base type entity, and apply
+             --  the constraint to create the first subtype of E.
+ 
+             Unsigned_Base_Range_Type_Declaration (E,
+               Def => Type_Definition (Parent (E)));
+ 
+             Set_Direct_Primitive_Operations (Base_Type (E), New_Elmt_List);
+             Set_Direct_Primitive_Operations (E,
+               Direct_Primitive_Operations (Base_Type (E)));
+             Ensure_Freeze_Node (Base_Type (E));
+             Set_First_Subtype_Link (Freeze_Node (Base_Type (E)), E);
+             Set_Has_Delayed_Freeze (E);
+ 
+             Set_Has_Unsigned_Base_Range_Aspect (Base_Type (E));
+          end Unsigned_Base_Range;
+ 
           ----------------
           -- Unsuppress --
           ----------------
*************** package body Sem_Prag is
*** 28177,28189 ****
              null;
  
           --------------------
!          -- Unknown_Pragma --
           --------------------
  
           --  Should be impossible, since the case of an unknown pragma is
           --  separately processed before the case statement is entered.
  
!          when Unknown_Pragma =>
              raise Program_Error;
        end case;
  
--- 28924,28936 ----
              null;
  
           --------------------
!          -- Pragma_Unknown --
           --------------------
  
           --  Should be impossible, since the case of an unknown pragma is
           --  separately processed before the case statement is entered.
  
!          when Pragma_Unknown =>
              raise Program_Error;
        end case;
  
*************** package body Sem_Prag is
*** 30875,30880 ****
--- 31622,31630 ----
        --  A list that contains all refined states processed so far. The list is
        --  used to detect duplicate refinements.
  
+       Saved_Ghost_Config : constant Ghost_Config_Type := Ghost_Config;
+       --  Ghost configuration before starting to process this pragma
+ 
        procedure Analyze_Refinement_Clause (Clause : Node_Id);
        --  Perform full analysis of a single refinement clause
  
*************** package body Sem_Prag is
*** 31634,31639 ****
--- 32384,32393 ----
           return;
        end if;
  
+       --  Get the Ghost context from the pragma before analyzing its parts
+ 
+       Set_Ghost_Mode (N);
+ 
        --  Save the scenario for examination by the ABE Processing phase
  
        Record_Elaboration_Scenario (N);
*************** package body Sem_Prag is
*** 31677,31682 ****
--- 32431,32438 ----
        Report_Unrefined_States (Available_States);
  
        Set_Is_Analyzed_Pragma (N);
+ 
+       Restore_Ghost_Region (Saved_Ghost_Config);
     end Analyze_Refined_State_In_Decl_Part;
  
     ---------------------------------------------
*************** package body Sem_Prag is
*** 32002,32007 ****
--- 32758,32787 ----
        return False;
     end Appears_In;
  
+    ------------------------
+    -- Apply_Check_Policy --
+    ------------------------
+ 
+    procedure Apply_Check_Policy (N : Node_Id; Policy : Name_Id) is
+    begin
+       case Policy is
+          when Name_Ignore | Name_Off =>
+             Mark_Is_Ignored (N);
+ 
+          when Name_Check | Name_On =>
+             Mark_Is_Checked (N);
+ 
+          when Name_Disable =>
+             Mark_Is_Disabled (N);
+ 
+          --  That should be exhaustive, the null here is a defence
+          --  against a malformed tree from previous errors.
+ 
+          when others =>
+             null;
+       end case;
+    end Apply_Check_Policy;
+ 
     -----------------------------------
     -- Build_Pragma_Check_Equivalent --
     -----------------------------------
*************** package body Sem_Prag is
*** 32142,32225 ****
     -- Check_Applicable_Policy --
     -----------------------------
  
!    procedure Check_Applicable_Policy (N : Node_Id) is
!       PP     : Node_Id;
!       Policy : Name_Id;
! 
!       Ename : constant Name_Id := Original_Aspect_Pragma_Name (N);
  
     begin
        --  No effect if not valid assertion kind name
  
!       if not Is_Valid_Assertion_Kind (Ename) then
           return;
        end if;
  
!       --  Loop through entries in check policy list
! 
!       PP := Opt.Check_Policy_List;
!       while Present (PP) loop
!          declare
!             PPA : constant List_Id := Pragma_Argument_Associations (PP);
!             Pnm : constant Name_Id := Chars (Get_Pragma_Arg (First (PPA)));
! 
!          begin
!             if Ename = Pnm
!               or else Pnm = Name_Assertion
!               or else (Pnm = Name_Statement_Assertions
!                         and then Ename in Name_Assert
!                                         | Name_Assert_And_Cut
!                                         | Name_Assume
!                                         | Name_Loop_Invariant
!                                         | Name_Loop_Variant)
!             then
!                Policy := Chars (Get_Pragma_Arg (Last (PPA)));
! 
!                case Policy is
!                   when Name_Ignore
!                      | Name_Off
!                   =>
!                      Set_Is_Checked (N, False);
!                      Set_Is_Ignored (N, True);
! 
!                   when Name_Check
!                      | Name_On
!                   =>
!                      Set_Is_Checked (N, True);
!                      Set_Is_Ignored (N, False);
! 
!                   when Name_Disable =>
!                      Set_Is_Ignored  (N, True);
!                      Set_Is_Checked  (N, False);
!                      Set_Is_Disabled (N, True);
! 
!                   --  That should be exhaustive, the null here is a defence
!                   --  against a malformed tree from previous errors.
! 
!                   when others =>
!                      null;
!                end case;
! 
!                return;
!             end if;
! 
!             PP := Next_Pragma (PP);
!          end;
!       end loop;
! 
!       --  If there are no specific entries that matched, then we let the
!       --  setting of assertions govern. Note that this provides the needed
!       --  compatibility with the RM for the cases of assertion, invariant,
!       --  precondition, predicate, and postcondition. Note also that
!       --  Assertions_Enabled is forced in CodePeer mode and GNATprove mode.
! 
!       if Assertions_Enabled then
!          Set_Is_Checked (N, True);
!          Set_Is_Ignored (N, False);
!       else
!          Set_Is_Checked (N, False);
!          Set_Is_Ignored (N, True);
!       end if;
     end Check_Applicable_Policy;
  
     -------------------------------
--- 32922,32939 ----
     -- Check_Applicable_Policy --
     -----------------------------
  
!    procedure Check_Applicable_Policy (N : Node_Id; Level : Entity_Id := Empty)
!    is
!       Nam : constant Name_Id := Original_Aspect_Pragma_Name (N);
  
     begin
        --  No effect if not valid assertion kind name
  
!       if not Is_Valid_Assertion_Kind (Nam) then
           return;
        end if;
  
!       Apply_Check_Policy (N, Get_Applicable_Policy (Nam, Level));
     end Check_Applicable_Policy;
  
     -------------------------------
*************** package body Sem_Prag is
*** 32267,32335 ****
           Item);
     end Check_External_Properties;
  
-    ----------------
-    -- Check_Kind --
-    ----------------
- 
-    function Check_Kind (Nam : Name_Id) return Name_Id is
-       PP : Node_Id;
- 
-    begin
-       --  Loop through entries in check policy list
- 
-       PP := Opt.Check_Policy_List;
-       while Present (PP) loop
-          declare
-             PPA : constant List_Id := Pragma_Argument_Associations (PP);
-             Pnm : constant Name_Id := Chars (Get_Pragma_Arg (First (PPA)));
- 
-          begin
-             if Nam = Pnm
-               or else (Pnm = Name_Assertion
-                         and then Is_Valid_Assertion_Kind (Nam))
-               or else (Pnm = Name_Statement_Assertions
-                         and then Nam in Name_Assert
-                                       | Name_Assert_And_Cut
-                                       | Name_Assume
-                                       | Name_Loop_Invariant
-                                       | Name_Loop_Variant)
-             then
-                case Chars (Get_Pragma_Arg (Last (PPA))) is
-                   when Name_Check
-                      | Name_On
-                   =>
-                      return Name_Check;
- 
-                   when Name_Ignore
-                      | Name_Off
-                   =>
-                      return Name_Ignore;
- 
-                   when Name_Disable =>
-                      return Name_Disable;
- 
-                   when others =>
-                      raise Program_Error;
-                end case;
- 
-             else
-                PP := Next_Pragma (PP);
-             end if;
-          end;
-       end loop;
- 
-       --  If there are no specific entries that matched, then we let the
-       --  setting of assertions govern. Note that this provides the needed
-       --  compatibility with the RM for the cases of assertion, invariant,
-       --  precondition, predicate, and postcondition.
- 
-       if Assertions_Enabled then
-          return Name_Check;
-       else
-          return Name_Ignore;
-       end if;
-    end Check_Kind;
- 
     ---------------------------
     -- Check_Missing_Part_Of --
     ---------------------------
--- 32981,32986 ----
*************** package body Sem_Prag is
*** 33047,33052 ****
--- 33698,33718 ----
        end if;
     end Duplication_Error;
  
+    --------------------------
+    -- Find_Assertion_Level --
+    --------------------------
+ 
+    function Find_Assertion_Level (Nam : Name_Id) return Entity_Id is
+    begin
+       for J in Assertion_Levels.First .. Assertion_Levels.Last loop
+          if Chars (Assertion_Levels.Table (J)) = Nam then
+             return Assertion_Levels.Table (J);
+          end if;
+       end loop;
+ 
+       return Empty;
+    end Find_Assertion_Level;
+ 
     ------------------------------
     -- Find_Encapsulating_State --
     ------------------------------
*************** package body Sem_Prag is
*** 33195,33204 ****
           if Nkind (Stmt) = N_Pragma then
              if Do_Checks
                and then Original_Aspect_Pragma_Name (Stmt) = Prag_Nam
              then
!                Duplication_Error
!                  (Prag => Prag,
!                   Prev => Stmt);
              end if;
  
           --  Emit an error when a refinement pragma appears on an expression
--- 33861,33869 ----
           if Nkind (Stmt) = N_Pragma then
              if Do_Checks
                and then Original_Aspect_Pragma_Name (Stmt) = Prag_Nam
+               and then not From_Same_Pragma (Prag, Stmt)
              then
!                Duplication_Error (Prag => Prag, Prev => Stmt);
              end if;
  
           --  Emit an error when a refinement pragma appears on an expression
*************** package body Sem_Prag is
*** 33361,33370 ****
           --  Skip prior pragmas, but check for duplicates
  
           if Nkind (Stmt) = N_Pragma then
!             if Do_Checks and then Pragma_Name (Stmt) = Prag_Nam then
!                Duplication_Error
!                  (Prag => Prag,
!                   Prev => Stmt);
              end if;
  
           --  Skip internally generated code
--- 34026,34036 ----
           --  Skip prior pragmas, but check for duplicates
  
           if Nkind (Stmt) = N_Pragma then
!             if Do_Checks
!               and then Pragma_Name (Stmt) = Prag_Nam
!               and then not From_Same_Pragma (Prag, Stmt)
!             then
!                Duplication_Error (Prag => Prag, Prev => Stmt);
              end if;
  
           --  Skip internally generated code
*************** package body Sem_Prag is
*** 33430,33435 ****
--- 34096,34175 ----
        end if;
     end Find_Related_Package_Or_Body;
  
+    ---------------------------
+    -- Get_Applicable_Policy --
+    ---------------------------
+ 
+    function Get_Applicable_Policy
+      (Nam : Name_Id; Level : Entity_Id) return Name_Id
+    is
+       function Is_Statement_Assertion (Nam : Name_Id) return Boolean
+       is (Nam
+           in Name_Assert
+            | Name_Assert_And_Cut
+            | Name_Assume
+            | Name_Loop_Invariant
+            | Name_Loop_Variant);
+ 
+       --  Local variables
+ 
+       Assocs      : List_Id;
+       P_Arg       : Node_Id;
+       P_Nam       : Name_Id;
+       Policy_Prag : Node_Id;
+ 
+    --  Start of processing for Get_Applicable_Policy
+ 
+    begin
+       --  Runtime level should always be checked irregardless of other
+       --  policies that are applied.
+ 
+       if Level = Standard_Level_Runtime then
+          return Name_Check;
+ 
+       --  Static level or levels that depend on Static should never be
+       --  checked irregardless of other policies that are applied.
+ 
+       elsif Level = Standard_Level_Static
+         or else Depends_On_Level (Level, Standard_Level_Static)
+       then
+          return Name_Ignore;
+       end if;
+ 
+       --  Loop through entries in check policy list
+ 
+       Policy_Prag := Opt.Check_Policy_List;
+       while Present (Policy_Prag) loop
+          Assocs := Pragma_Argument_Associations (Policy_Prag);
+          P_Arg := Get_Pragma_Arg (First (Assocs));
+          P_Nam := Chars (P_Arg);
+ 
+          if P_Nam = Nam
+            or else P_Nam = Name_Assertion
+            or else (P_Nam = Name_Statement_Assertions
+                     and then Is_Statement_Assertion (Nam))
+            or else (Present (Level) and then Entity (P_Arg) = Level)
+          then
+             return Chars (Get_Pragma_Arg (Last (Assocs)));
+          end if;
+ 
+          Policy_Prag := Next_Pragma (Policy_Prag);
+       end loop;
+ 
+       --  If there are no specific entries that matched, then we let the
+       --  setting of assertions govern. Note that this provides the
+       --  needed compatibility with the RM for the cases of assertion,
+       --  invariant, precondition, predicate, and postcondition. Note
+       --  also that Assertions_Enabled is forced in CodePeer mode and
+       --  GNATprove mode.
+ 
+       if Assertions_Enabled then
+          return Name_Check;
+       else
+          return Name_Ignore;
+       end if;
+    end Get_Applicable_Policy;
+ 
     ------------------
     -- Get_Argument --
     ------------------
*************** package body Sem_Prag is
*** 33463,33468 ****
--- 34203,34221 ----
     end Get_Argument;
  
     -------------------------
+    -- Get_Assertion_Level --
+    -------------------------
+ 
+    function Get_Assertion_Level (Nam : Name_Id) return Entity_Id is
+    begin
+       if Nam = No_Name then
+          return Empty;
+       end if;
+ 
+       return Find_Assertion_Level (Nam);
+    end Get_Assertion_Level;
+ 
+    -------------------------
     -- Get_Base_Subprogram --
     -------------------------
  
*************** package body Sem_Prag is
*** 33602,33607 ****
--- 34355,34361 ----
     begin
        Externals.Init;
        Compile_Time_Warnings_Errors.Init;
+       Assertion_Levels.Init;
     end Initialize;
  
     --------
*************** package body Sem_Prag is
*** 33613,33618 ****
--- 34367,34445 ----
        Dummy := Dummy + 1;
     end ip;
  
+    ----------------------------
+    -- Insert_Assertion_Level --
+    ----------------------------
+ 
+    procedure Insert_Assertion_Level (Level : Entity_Id) is
+       Nam : constant Name_Id := Chars (Level);
+ 
+       Dupl : constant Entity_Id := Find_Assertion_Level (Nam);
+ 
+       function Same_Dependencies (Self, Other : Entity_Id) return Boolean;
+       --  Check that both levels have the same number of dependencies and the
+       --  names of the dependencies match.
+ 
+       -----------------------
+       -- Same_Dependencies --
+       -----------------------
+ 
+       function Same_Dependencies (Self, Other : Entity_Id) return Boolean is
+          Other_El    : Elmt_Id;
+          Other_Level : Entity_Id;
+          Self_El     : Elmt_Id;
+          Self_Level  : Entity_Id;
+ 
+       begin
+          pragma Assert (Ekind (Self) = E_Assertion_Level);
+          pragma Assert (Ekind (Other) = E_Assertion_Level);
+ 
+          if List_Length (Parent_Levels (Self))
+            /= List_Length (Parent_Levels (Other))
+          then
+             return False;
+          end if;
+ 
+          if No (Parent_Levels (Self)) then
+             return True;
+          end if;
+ 
+          --  Check that dependencies match.
+          --  Note that we are checking for positional and element matching.
+          --  The positional part could be relaxed.
+ 
+          Self_El := First_Elmt (Parent_Levels (Self));
+          Other_El := First_Elmt (Parent_Levels (Other));
+          while Present (Self_El) loop
+             Self_Level := Node (Self_El);
+             Other_Level := Node (Other_El);
+ 
+             if Chars (Self_Level) /= Chars (Other_Level) then
+                return False;
+             end if;
+ 
+             Next_Elmt (Self_El);
+             Next_Elmt (Other_El);
+          end loop;
+ 
+          return True;
+       end Same_Dependencies;
+ 
+    --  Start of processing for Insert_Assertion_Level
+ 
+    begin
+       if No (Dupl) then
+          Assertion_Levels.Append (Level);
+       else
+          if not Same_Dependencies (Level, Dupl) then
+             Error_Msg_N
+               ("conflicting Assertion_Level definition for &", Level);
+             Error_Msg_Sloc := Sloc (Dupl);
+             Error_Msg_NE ("\differs from existing definition #", Level, Dupl);
+          end if;
+       end if;
+    end Insert_Assertion_Level;
+ 
     -----------------------------
     -- Is_Config_Static_String --
     -----------------------------
*************** package body Sem_Prag is
*** 33753,33758 ****
--- 34580,34586 ----
        Pragma_Annotate                       => 93,
        Pragma_Assert                         => -1,
        Pragma_Assert_And_Cut                 => -1,
+       Pragma_Assertion_Level                =>  0,
        Pragma_Assertion_Policy               =>  0,
        Pragma_Assume                         => -1,
        Pragma_Assume_No_Invalid_Values       =>  0,
*************** package body Sem_Prag is
*** 33978,33983 ****
--- 34806,34812 ----
        Pragma_Unreferenced                   =>  0,
        Pragma_Unreferenced_Objects           =>  0,
        Pragma_Unreserve_All_Interrupts       =>  0,
+       Pragma_Unsigned_Base_Range            =>  0,
        Pragma_Unsuppress                     =>  0,
        Pragma_Unused                         =>  0,
        Pragma_Use_VADS_Size                  =>  0,
*************** package body Sem_Prag is
*** 33991,33997 ****
        Pragma_Warnings                       =>  0,
        Pragma_Weak_External                  =>  0,
        Pragma_Wide_Character_Encoding        =>  0,
!       Unknown_Pragma                        =>  0);
  
     function Is_Non_Significant_Pragma_Reference (N : Node_Id) return Boolean is
        Id : Pragma_Id;
--- 34820,34826 ----
        Pragma_Warnings                       =>  0,
        Pragma_Weak_External                  =>  0,
        Pragma_Wide_Character_Encoding        =>  0,
!       Pragma_Unknown                        =>  0);
  
     function Is_Non_Significant_Pragma_Reference (N : Node_Id) return Boolean is
        Id : Pragma_Id;
*************** package body Sem_Prag is
*** 34207,34212 ****
--- 35036,35050 ----
        end case;
     end Is_Valid_Assertion_Kind;
  
+    ------------------------------
+    -- Is_Valid_Assertion_Level --
+    ------------------------------
+ 
+    function Is_Valid_Assertion_Level (Nam : Name_Id) return Boolean is
+    begin
+       return Present (Get_Assertion_Level (Nam));
+    end Is_Valid_Assertion_Level;
+ 
     --------------------------------------
     -- Process_Compilation_Unit_Pragmas --
     --------------------------------------
*************** package body Sem_Prag is
*** 34375,34380 ****
--- 35213,35249 ----
        end if;
     end Validate_Compile_Time_Warning_Or_Error;
  
+    ---------------------
+    -- Mark_Is_Checked --
+    ---------------------
+ 
+    procedure Mark_Is_Checked (N : Node_Id) is
+    begin
+       Set_Is_Checked (N, True);
+       Set_Is_Ignored (N, False);
+    end Mark_Is_Checked;
+ 
+    ----------------------
+    -- Mark_Is_Disabled --
+    ----------------------
+ 
+    procedure Mark_Is_Disabled (N : Node_Id) is
+    begin
+       Set_Is_Ignored (N, True);
+       Set_Is_Checked (N, False);
+       Set_Is_Disabled (N, True);
+    end Mark_Is_Disabled;
+ 
+    ---------------------
+    -- Mark_Is_Ignored --
+    ---------------------
+ 
+    procedure Mark_Is_Ignored (N : Node_Id) is
+    begin
+       Set_Is_Checked (N, False);
+       Set_Is_Ignored (N, True);
+    end Mark_Is_Ignored;
+ 
     ------------------------------------
     -- Record_Possible_Body_Reference --
     ------------------------------------
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_prag.ads gcc-16-20250914/gcc/ada/sem_prag.ads
*** gcc-16-20250907/gcc/ada/sem_prag.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_prag.ads	Sun Sep 14 22:32:08 2025
*************** package Sem_Prag is
*** 253,258 ****
--- 253,324 ----
       (Pragma_Extensions_Visible => True,
        others                    => False);
  
+    --  List of pragmas where the ghost policy checks have been disabled.
+    --
+    --  There is an analysis circularity issue here. These pragmas are marked as
+    --  Ghost based on the ghostness of the entity in their argument. We need to
+    --  analyze the argument to determine the ghostness of the pragma. However
+    --  if we are analyzing a ghost argument we need to validate its context and
+    --  for that we need to mark the ghostness of the pragma beforehand.
+    --
+    --  We suppress the checks for these pragmas in order to break that loop. We
+    --  do not need to emit an error since if the argument was ghost that means
+    --  that the pragma was ghost as well.
+ 
+    Suppressed_Ghost_Policy_Check_Pragma :
+      constant array (Pragma_Id) of Boolean :=
+        (Pragma_All_Calls_Remote             => True,
+         Pragma_Annotate                     => True,
+         Pragma_Asynchronous                 => True,
+         Pragma_Atomic_Components            => True,
+         Pragma_Compile_Time_Error           => True,
+         Pragma_Compile_Time_Warning         => True,
+         Pragma_Convention                   => True,
+         Pragma_Default_Storage_Pool         => True,
+         Pragma_Discard_Names                => True,
+         Pragma_Elaborate_Body               => True,
+         Pragma_Export                       => True,
+         Pragma_Extended_Access              => True,
+         Pragma_External                     => True,
+         Pragma_Favor_Top_Level              => True,
+         Pragma_Import                       => True,
+         Pragma_Independent_Components       => True,
+         Pragma_Interface                    => True,
+         Pragma_No_Return                    => True,
+         Pragma_Obsolescent                  => True,
+         Pragma_Pack                         => True,
+         Pragma_Persistent_BSS               => True,
+         Pragma_Preelaborable_Initialization => True,
+         Pragma_Preelaborate                 => True,
+         Pragma_Pure                         => True,
+         Pragma_Pure_Function                => True,
+         Pragma_Remote_Access_Type           => True,
+         Pragma_Remote_Call_Interface        => True,
+         Pragma_Remote_Types                 => True,
+         Pragma_Shared_Passive               => True,
+         Pragma_Simple_Storage_Pool_Type     => True,
+         Pragma_Suppress                     => True,
+         Pragma_Suppress_Debug_Info          => True,
+         Pragma_Suppress_Initialization      => True,
+         Pragma_Thread_Local_Storage         => True,
+         Pragma_Unchecked_Union              => True,
+         Pragma_Universal_Aliasing           => True,
+         Pragma_Unreferenced                 => True,
+         Pragma_Unreferenced_Objects         => True,
+         Pragma_Unsuppress                   => True,
+         Pragma_Unused                       => True,
+         Pragma_Volatile_Components          => True,
+         others                              => False);
+ 
+    function Find_Assertion_Level (Nam : Name_Id) return Entity_Id;
+    --  Find an existing definition with the given name that has been inserted
+    --  into the Assertion_Levels table.
+ 
+    procedure Insert_Assertion_Level (Level : Entity_Id);
+    --  Insert a new level into the Assertion_Levels table. If there is already
+    --  an entry with the same name check that it has the same dependencies as
+    --  the level you are trying to insert. Raises an error otherwise.
+ 
     -----------------
     -- Subprograms --
     -----------------
*************** package Sem_Prag is
*** 377,383 ****
     --  in fact of the same kind as the source pragma Prag. This is used
     --  in GNATprove_Mode to generate the inherited pre- and postconditions.
  
!    procedure Check_Applicable_Policy (N : Node_Id);
     --  N is either an N_Aspect or an N_Pragma node. There are two cases. If
     --  the name of the aspect or pragma is not one of those recognized as
     --  an assertion kind by an Assertion_Policy pragma, then the call has
--- 443,449 ----
     --  in fact of the same kind as the source pragma Prag. This is used
     --  in GNATprove_Mode to generate the inherited pre- and postconditions.
  
!    procedure Check_Applicable_Policy (N : Node_Id; Level : Entity_Id := Empty);
     --  N is either an N_Aspect or an N_Pragma node. There are two cases. If
     --  the name of the aspect or pragma is not one of those recognized as
     --  an assertion kind by an Assertion_Policy pragma, then the call has
*************** package Sem_Prag is
*** 410,434 ****
     --  is the related variable or state. Ensure legality of the combination and
     --  issue an error for an illegal combination.
  
-    function Check_Kind (Nam : Name_Id) return Name_Id;
-    --  This function is used in connection with pragmas Assert, Check,
-    --  and assertion aspects and pragmas, to determine if Check pragmas
-    --  (or corresponding assertion aspects or pragmas) are currently active
-    --  as determined by the presence of -gnata on the command line (which
-    --  sets the default), and the appearance of pragmas Check_Policy and
-    --  Assertion_Policy as configuration pragmas either in a configuration
-    --  pragma file, or at the start of the current unit, or locally given
-    --  Check_Policy and Assertion_Policy pragmas that are currently active.
-    --
-    --  The value returned is one of the names Check, Ignore, Disable (On
-    --  returns Check, and Off returns Ignore).
-    --
-    --  Note: for assertion kinds Pre'Class, Post'Class, Invariant'Class,
-    --  and Type_Invariant'Class, the name passed is Name_uPre, Name_uPost,
-    --  Name_uInvariant, or Name_uType_Invariant, which corresponds to _Pre,
-    --  _Post, _Invariant, or _Type_Invariant, which are special names used
-    --  in identifiers to represent these attribute references.
- 
     procedure Check_Missing_Part_Of (Item_Id : Entity_Id);
     --  Determine whether the placement within the state space of an abstract
     --  state, variable or package instantiation denoted by Item_Id requires the
--- 476,481 ----
*************** package Sem_Prag is
*** 533,538 ****
--- 580,588 ----
     --  Context denotes the entity of the function, package or procedure where
     --  Prag resides.
  
+    function Get_Assertion_Level (Nam : Name_Id) return Entity_Id;
+    --  Returns the entity of a known Assertion_Level name
+ 
     function Get_SPARK_Mode_From_Annotation
       (N : Node_Id) return SPARK_Mode_Type;
     --  Given an aspect or pragma SPARK_Mode node, return corresponding mode id
*************** package Sem_Prag is
*** 599,604 ****
--- 649,658 ----
     --  Name_uInvariant, and Name_uType_Invariant (_Pre, _Post, _Invariant,
     --  and _Type_Invariant).
  
+    function Is_Valid_Assertion_Level (Nam : Name_Id) return Boolean;
+    --  Return True if Nam is one of the Assertion_Levels declared in the
+    --  current context.
+ 
     procedure Process_Compilation_Unit_Pragmas (N : Node_Id);
     --  Called at the start of processing compilation unit N to deal with any
     --  special issues regarding pragmas. In particular, we have to deal with
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_res.adb gcc-16-20250914/gcc/ada/sem_res.adb
*** gcc-16-20250907/gcc/ada/sem_res.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_res.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Res is
*** 6954,6960 ****
                    --  checkable, the case of calling an immediately containing
                    --  subprogram is easy to catch.
  
!                   if not Is_Ignored_Ghost_Entity (Nam) then
                       Check_Restriction (No_Recursion, N);
                    end if;
  
--- 6954,6960 ----
                    --  checkable, the case of calling an immediately containing
                    --  subprogram is easy to catch.
  
!                   if not Is_Ignored_Ghost_Entity_In_Codegen (Nam) then
                       Check_Restriction (No_Recursion, N);
                    end if;
  
*************** package body Sem_Res is
*** 7092,7098 ****
          and then Ekind (Nam) in E_Function | E_Subprogram_Type
          and then Requires_Transient_Scope (Etype (Nam))
          and then not Is_Intrinsic_Subprogram (Nam)
!         and then not Is_Ignored_Ghost_Entity (Nam)
          and then not Is_Build_In_Place_Function (Nam)
          and then not Is_Inlinable_Expression_Function (Nam)
          and then not (Is_Inlined (Nam)
--- 7092,7098 ----
          and then Ekind (Nam) in E_Function | E_Subprogram_Type
          and then Requires_Transient_Scope (Etype (Nam))
          and then not Is_Intrinsic_Subprogram (Nam)
!         and then not Is_Ignored_Ghost_Entity_In_Codegen (Nam)
          and then not Is_Build_In_Place_Function (Nam)
          and then not Is_Inlinable_Expression_Function (Nam)
          and then not (Is_Inlined (Nam)
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_util.adb gcc-16-20250914/gcc/ada/sem_util.adb
*** gcc-16-20250907/gcc/ada/sem_util.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_util.adb	Sun Sep 14 22:32:08 2025
*************** package body Sem_Util is
*** 2016,2022 ****
        --  Elaboration entity is never a ghost object, regardless of the context
        --  in which this routine is called.
  
!       Install_Ghost_Region (None, N);
  
        --  Here we need the elaboration entity
  
--- 2016,2022 ----
        --  Elaboration entity is never a ghost object, regardless of the context
        --  in which this routine is called.
  
!       Install_Ghost_Region (None, N, Empty);
  
        --  Here we need the elaboration entity
  
*************** package body Sem_Util is
*** 6202,6207 ****
--- 6202,6219 ----
        end if;
     end Conditional_Delay;
  
+    --------------------------------------
+    -- Copy_Assertion_Policy_Attributes --
+    --------------------------------------
+ 
+    procedure Copy_Assertion_Policy_Attributes (New_Prag, Old_Prag : Node_Id) is
+    begin
+       Set_Is_Checked (New_Prag, Is_Checked (Old_Prag));
+       Set_Is_Ignored (New_Prag, Is_Ignored (Old_Prag));
+       Set_Pragma_Ghost_Assertion_Level
+         (New_Prag, Pragma_Ghost_Assertion_Level (Old_Prag));
+    end Copy_Assertion_Policy_Attributes;
+ 
     -------------------------
     -- Copy_Component_List --
     -------------------------
*************** package body Sem_Util is
*** 6316,6321 ****
--- 6328,6334 ----
        Def_Id      : Node_Id;
        Formal_Spec : Node_Id;
        Result      : Node_Id;
+       Level       : Entity_Id;
  
     begin
        --  The structure of the original tree must be replicated without any
*************** package body Sem_Util is
*** 6334,6339 ****
--- 6347,6353 ----
        --  Create a new entity for the defining unit name
  
        Def_Id := Defining_Unit_Name (Result);
+       Level := Ghost_Assertion_Level (Def_Id);
  
        case Nkind (Def_Id) is
           when N_Defining_Identifier =>
*************** package body Sem_Util is
*** 6344,6349 ****
--- 6358,6367 ----
           when others => raise Program_Error;
        end case;
  
+       --  Copy the relevant Ghost Assertion_Level
+ 
+       Set_Ghost_Assertion_Level (Def_Id, Level);
+ 
        Set_Defining_Unit_Name (Result, Def_Id);
  
        --  Create new entities for the formal parameters
*************** package body Sem_Util is
*** 7199,7204 ****
--- 7217,7258 ----
        return Is_Variable (N) and then Paren_Count (N) = 0;
     end Denotes_Variable;
  
+    ----------------------
+    -- Depends_On_Level --
+    ----------------------
+ 
+    function Depends_On_Level
+      (Self : Entity_Id; Other : Entity_Id) return Boolean
+    is
+       Elm : Elmt_Id;
+       Dep : Entity_Id;
+    begin
+       if No (Self) then
+          return False;
+       elsif No (Other) then
+          return False;
+       end if;
+ 
+       pragma Assert (Ekind (Self) = E_Assertion_Level);
+       pragma Assert (Ekind (Other) = E_Assertion_Level);
+ 
+       if No (Parent_Levels (Self)) then
+          return False;
+       end if;
+ 
+       Elm := First_Elmt (Parent_Levels (Self));
+       while Present (Elm) loop
+          Dep := Node (Elm);
+          if Dep = Other or else Depends_On_Level (Dep, Other) then
+             return True;
+          end if;
+ 
+          Next_Elmt (Elm);
+       end loop;
+ 
+       return False;
+    end Depends_On_Level;
+ 
     -----------------------------
     -- Depends_On_Discriminant --
     -----------------------------
*************** package body Sem_Util is
*** 9642,9647 ****
--- 9696,9730 ----
            and then In_Open_Scopes (Scope (Pack));
     end From_Nested_Package;
  
+    ----------------------
+    -- From_Same_Aspect --
+    ----------------------
+ 
+    function From_Same_Aspect (Self, Other : Node_Id) return Boolean is
+    begin
+       return
+         Present (Original_Aspect (Self))
+         and then Present (Original_Aspect (Other))
+         and then Original_Aspect (Self) = Original_Aspect (Other);
+    end From_Same_Aspect;
+ 
+    ----------------------
+    -- From_Same_Pragma --
+    ----------------------
+ 
+    function From_Same_Pragma (Self, Other : Node_Id) return Boolean is
+    begin
+       return
+         (Present (Original_Pragma (Self))
+          and then Present (Original_Pragma (Other))
+          and then Original_Pragma (Self) = Original_Pragma (Other))
+         or else (From_Aspect_Specification (Self)
+                  and then From_Aspect_Specification (Other)
+                  and then From_Same_Aspect
+                             (Corresponding_Aspect (Self),
+                              Corresponding_Aspect (Other)));
+    end From_Same_Pragma;
+ 
     -----------------------
     -- Gather_Components --
     -----------------------
*************** package body Sem_Util is
*** 11088,11093 ****
--- 11171,11180 ----
        if Is_Entity_Name (Subp) then
           Subp_Id := Entity (Subp);
  
+          if No (Subp_Id) then
+             return Empty;
+          end if;
+ 
           if Ekind (Subp_Id) = E_Access_Subprogram_Type then
              Subp_Id := Directly_Designated_Type (Subp_Id);
           end if;
*************** package body Sem_Util is
*** 11216,11221 ****
--- 11303,11348 ----
        end if;
     end Get_Views;
  
+    ----------------------------------
+    -- Has_Assertion_Level_Argument --
+    ----------------------------------
+ 
+    function Has_Assertion_Level_Argument (N : Node_Id) return Boolean is
+       Assocs : List_Id;
+       Assoc  : Node_Id;
+       Choice : Node_Id;
+    begin
+       if Nkind (N) = N_Aspect_Specification then
+          if Nkind (Expression (N)) /= N_Aggregate then
+             return False;
+          end if;
+ 
+          Assocs := Component_Associations (Expression (N));
+ 
+          if No (Assocs) then
+             return False;
+          end if;
+ 
+          Assoc := First (Assocs);
+          Choice := First (Choices (Assoc));
+ 
+          if Nkind (Choice) = N_Identifier then
+             return Present (Get_Assertion_Level (Chars (Choice)));
+          end if;
+ 
+          return False;
+       else
+          pragma Assert (Nkind (N) = N_Pragma);
+          Assocs := Pragma_Argument_Associations (N);
+          Assoc := First (Assocs);
+          if Present (Assoc) and then Chars (Assoc) /= No_Name then
+             return Present (Get_Assertion_Level (Chars (Assoc)));
+          end if;
+ 
+          return False;
+       end if;
+    end Has_Assertion_Level_Argument;
+ 
     ------------------------------
     -- Has_Compatible_Alignment --
     ------------------------------
*************** package body Sem_Util is
*** 23027,23033 ****
     begin
        --  Ada 2005 or later, and formals present. The first formal must be
        --  of a type that supports prefix notation: a controlling argument,
!       --  a class-wide type, or an access to such.
  
        if Ada_Version >= Ada_2005
          and then Present (First_Formal (E))
--- 23154,23161 ----
     begin
        --  Ada 2005 or later, and formals present. The first formal must be
        --  of a type that supports prefix notation: a controlling argument,
!       --  a class-wide type, an access to such, or an untagged record type
!       --  (when compiling with Core_Extensions allowed).
  
        if Ada_Version >= Ada_2005
          and then Present (First_Formal (E))
*************** package body Sem_Util is
*** 23035,23041 ****
          and then
            (Is_Controlling_Formal (First_Formal (E))
              or else Is_Class_Wide_Type (Etype (First_Formal (E)))
!             or else Is_Anonymous_Access_Type (Etype (First_Formal (E))))
        then
           Formal := Next_Formal (First_Formal (E));
           while Present (Formal) loop
--- 23163,23171 ----
          and then
            (Is_Controlling_Formal (First_Formal (E))
              or else Is_Class_Wide_Type (Etype (First_Formal (E)))
!             or else Is_Anonymous_Access_Type (Etype (First_Formal (E)))
!             or else (Core_Extensions_Allowed
!                        and then Is_Record_Type (Etype (First_Formal (E)))))
        then
           Formal := Next_Formal (First_Formal (E));
           while Present (Formal) loop
*************** package body Sem_Util is
*** 26405,26411 ****
     -- Policy_In_Effect --
     ----------------------
  
!    function Policy_In_Effect (Policy : Name_Id) return Name_Id is
        function Policy_In_List (List : Node_Id) return Name_Id;
        --  Determine the mode of a policy in a N_Pragma list
  
--- 26535,26544 ----
     -- Policy_In_Effect --
     ----------------------
  
!    function Policy_In_Effect
!      (Policy : Name_Id;
!       Level  : Name_Id := No_Name) return Name_Id
!    is
        function Policy_In_List (List : Node_Id) return Name_Id;
        --  Determine the mode of a policy in a N_Pragma list
  
*************** package body Sem_Util is
*** 26430,26436 ****
              --  The current Check_Policy pragma matches the requested policy or
              --  appears in the single argument form (Assertion, policy_id).
  
!             if Chars (Arg1) in Name_Assertion | Policy then
                 return Chars (Arg2);
              end if;
  
--- 26563,26569 ----
              --  The current Check_Policy pragma matches the requested policy or
              --  appears in the single argument form (Assertion, policy_id).
  
!             if Chars (Arg1) in Name_Assertion | Policy | Level then
                 return Chars (Arg2);
              end if;
  
*************** package body Sem_Util is
*** 26444,26449 ****
--- 26577,26584 ----
  
        Kind : Name_Id;
  
+       Level_Id : Entity_Id;
+ 
     --  Start of processing for Policy_In_Effect
  
     begin
*************** package body Sem_Util is
*** 26451,26456 ****
--- 26586,26606 ----
           raise Program_Error;
        end if;
  
+       if Present (Level) then
+          Level_Id := Get_Assertion_Level (Level);
+          if No (Level_Id) then
+             raise Program_Error;
+          end if;
+ 
+          if Level_Id = Standard_Level_Runtime then
+             return Name_Check;
+          elsif Level_Id = Standard_Level_Static
+            or else Depends_On_Level (Level_Id, Standard_Level_Static)
+          then
+             return Name_Ignore;
+          end if;
+       end if;
+ 
        --  Inspect all policy pragmas that appear within scopes (if any)
  
        Kind := Policy_In_List (Check_Policy_List);
*************** package body Sem_Util is
*** 26508,26516 ****
     begin
        return
          Present (Predicate_Function (Typ))
!         and then (GNATprove_Mode
!                   or else (not Predicates_Ignored (Typ)
!                            and then not Predicate_Checks_Suppressed (Empty)));
     end Predicate_Enabled;
  
     ----------------------------------
--- 26658,26665 ----
     begin
        return
          Present (Predicate_Function (Typ))
!         and then not Predicates_Ignored_In_Codegen (Typ)
!         and then not Predicate_Checks_Suppressed (Empty);
     end Predicate_Enabled;
  
     ----------------------------------
*************** package body Sem_Util is
*** 26576,26581 ****
--- 26725,26742 ----
        return Empty;
     end Predicate_Failure_Expression;
  
+    -----------------------------------
+    -- Predicates_Ignored_In_Codegen --
+    -----------------------------------
+ 
+    function Predicates_Ignored_In_Codegen (N : Node_Id) return Boolean is
+    begin
+       return
+         Predicates_Ignored (N)
+         and then not CodePeer_Mode
+         and then not GNATprove_Mode;
+    end Predicates_Ignored_In_Codegen;
+ 
     ----------------------------------
     -- Predicate_Tests_On_Arguments --
     ----------------------------------
*************** package body Sem_Util is
*** 28013,28019 ****
        --  Nothing to do for an ignored Ghost entity because the entity will be
        --  eliminated from the tree.
  
!       elsif Is_Ignored_Ghost_Entity (T) then
           return;
  
        --  Nothing to do if entity comes from a predefined file. Library files
--- 28174,28180 ----
        --  Nothing to do for an ignored Ghost entity because the entity will be
        --  eliminated from the tree.
  
!       elsif Is_Ignored_Ghost_Entity_In_Codegen (T) then
           return;
  
        --  Nothing to do if entity comes from a predefined file. Library files
diff -Nrcpad gcc-16-20250907/gcc/ada/sem_util.ads gcc-16-20250914/gcc/ada/sem_util.ads
*** gcc-16-20250907/gcc/ada/sem_util.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sem_util.ads	Sun Sep 14 22:32:08 2025
*************** package Sem_Util is
*** 560,565 ****
--- 560,569 ----
     --  of Old_Ent is set and Old_Ent has not yet been Frozen (i.e. Is_Frozen is
     --  False).
  
+    procedure Copy_Assertion_Policy_Attributes (New_Prag, Old_Prag : Node_Id);
+    --  Copy Is_Checked, Is_Ignored and Ghost_Assertion_Level attributes from
+    --  Old_Node.
+ 
     function Copy_Component_List
       (R_Typ : Entity_Id;
        Loc   : Source_Ptr) return List_Id;
*************** package Sem_Util is
*** 707,712 ****
--- 711,721 ----
     function Denotes_Variable (N : Node_Id) return Boolean;
     --  Returns True if node N denotes a single variable without parentheses
  
+    function Depends_On_Level
+      (Self : Entity_Id; Other : Entity_Id) return Boolean;
+    --  Check if Assertion_Level Self depends on the Assertion_Level Other
+    --  either directly or transitively.
+ 
     function Depends_On_Discriminant (N : Node_Id) return Boolean;
     --  Returns True if N denotes a discriminant or if N is a range, a subtype
     --  indication or a scalar subtype where one of the bounds is a
*************** package Sem_Util is
*** 1055,1060 ****
--- 1064,1076 ----
     --  to entities local to the nested package. In that case the package must
     --  be installed on the scope stack to prevent spurious visibility errors.
  
+    function From_Same_Aspect (Self, Other : Node_Id) return Boolean;
+    --  True if aspects Self and Other have the same Orginal_Aspect.
+ 
+    function From_Same_Pragma (Self, Other : Node_Id) return Boolean;
+    --  True if pragmas Self and Other have the same Original Pragma or
+    --  they are from the same aspect.
+ 
     procedure Gather_Components
       (Typ                   : Entity_Id;
        Comp_List             : Node_Id;
*************** package Sem_Util is
*** 1343,1348 ****
--- 1359,1368 ----
     --  Result of Has_Compatible_Alignment test, description found below. Note
     --  that the values are arranged in increasing order of problematicness.
  
+    function Has_Assertion_Level_Argument (N : Node_Id) return Boolean;
+    --  Returns true if the first argument of a pragma or an aspect is using
+    --  an Assertion_Level association.
+ 
     function Has_Compatible_Alignment
       (Obj         : Entity_Id;
        Expr        : Node_Id;
*************** package Sem_Util is
*** 2082,2095 ****
--- 2102,2143 ----
     function Is_Ignored_Ghost_Entity_In_Codegen (N : Node_Id) return Boolean;
     --  True if N Is_Ignored_Ghost_Entity and GNATProve_mode and Codepeer_Mode
     --  are not active.
+    --
+    --  See Is_Ignored_In_Codegen for instructions on when this function should
+    --  be used.
  
     function Is_Ignored_Ghost_Pragma_In_Codegen (N : Node_Id) return Boolean;
     --  True if N Is_Ignored_Ghost_Pragma and GNATProve_mode and Codepeer_Mode
     --  are not active.
+    --
+    --  See Is_Ignored_In_Codegen for instructions on when this function should
+    --  be used.
  
     function Is_Ignored_In_Codegen (N : Node_Id) return Boolean;
     --  True if N Is_Ignored and GNATProve_mode and Codepeer_Mode are not
     --  active.
+    --
+    --  Tools like GNATProve and Codepeer that use the frontend to get the
+    --  representation of the source code along with all of the code generated
+    --  for assertions. This includes even the ones that are ignored. The
+    --  frontend normally avoids the generation of such assertions and ghost
+    --  code if marked as ignored. However we should still enable the generation
+    --  when working in one of those tool modes. In most cases this means that
+    --  we should ignore the fact the given node is marked as ignored and behave
+    --  as if it was not. This involves checking attributes such as Is_Ignored
+    --  along with these tool modes.
+    --
+    --  This function (and similar _In_Codegen functions) behaves as a wrapper
+    --  for such conditions. We should use this functions in scenarios where we
+    --  would normally stop the code generation for such ignored nodes. For
+    --  example in the expander where we normally transform non-ignored nodes.
+    --  Not doing so may lead to a partially expanded tree for those tools.
+    --
+    --  On the other hand we should use these attributes directly when
+    --  propagating the Is_Ignored or other similar property related values
+    --  between nodes. Additionally we should be using the original attributes
+    --  when checking for the compatibility of the checked/ignored properties
+    --  between nodes.
  
     function Is_EVF_Expression (N : Node_Id) return Boolean;
     --  Determine whether node N denotes a reference to a formal parameter of
*************** package Sem_Util is
*** 2259,2264 ****
--- 2307,2317 ----
     --  legal. They will need to be checked again after subprogram call has
     --  been resolved.
  
+    function Is_Same_Or_Depends_On_Level
+      (Self : Entity_Id; Other : Entity_Id) return Boolean
+    is (Self = Other or else Depends_On_Level (Self, Other));
+    --  Check if Assertion_Level Self is or depends on the Assertion_Level Other
+ 
     function Is_Package_Contract_Annotation (Item : Node_Id) return Boolean;
     --  Determine whether aspect specification or pragma Item is one of the
     --  following package contract annotations:
*************** package Sem_Util is
*** 2913,2919 ****
     --  of the corresponding formal entity, otherwise returns Empty. Also
     --  handles the case of references to renamings of formals.
  
!    function Policy_In_Effect (Policy : Name_Id) return Name_Id;
     --  Given a policy, return the policy identifier associated with it. If no
     --  such policy is in effect, the value returned is No_Name.
  
--- 2966,2975 ----
     --  of the corresponding formal entity, otherwise returns Empty. Also
     --  handles the case of references to renamings of formals.
  
!    function Policy_In_Effect
!      (Policy : Name_Id;
!       Level  : Name_Id := No_Name)
!       return Name_Id;
     --  Given a policy, return the policy identifier associated with it. If no
     --  such policy is in effect, the value returned is No_Name.
  
*************** package Sem_Util is
*** 2931,2936 ****
--- 2987,2999 ----
     --  returns the result of recursing on the ancestor subtype.
     --  Otherwise, returns Empty.
  
+    function Predicates_Ignored_In_Codegen (N : Node_Id) return Boolean;
+    --  True if N Predicates_Ignored is set and GNATProve_mode and Codepeer_Mode
+    --  are not active.
+    --
+    --  See Is_Ignored_In_Codegen for instructions on when this function should
+    --  be used.
+ 
     function Predicate_Function_Needs_Membership_Parameter (Typ : Entity_Id)
       return Boolean is
       (Present (Predicate_Failure_Expression (Typ, Inherited_OK => True)));
diff -Nrcpad gcc-16-20250907/gcc/ada/sinfo.ads gcc-16-20250914/gcc/ada/sinfo.ads
*** gcc-16-20250907/gcc/ada/sinfo.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/sinfo.ads	Sun Sep 14 22:32:08 2025
*************** package Sinfo is
*** 798,803 ****
--- 798,809 ----
     --    ancestor of the type of the aggregate in a generic context, if any,
     --    when the type is a derived tagged type. Otherwise Empty.
  
+    --  Aspect_Ghost_Assertion_Level
+    --     Assertion_Level that was originally used in the assertion level
+    --     associations of its arguments. These aspects are transformed to new
+    --     aspects with the associated arguments and the original assertion
+    --     level is stored in this attribute.
+ 
     --  Aspect_On_Partial_View
     --    Present on an N_Aspect_Specification node. For an aspect that applies
     --    to a type entity, indicates whether the specification appears on the
*************** package Sinfo is
*** 1470,1476 ****
  
     --  Has_Target_Names
     --    Present in assignment statements. Indicates that the RHS contains
!    --    target names (see AI12-0125-3) and must be expanded accordingly.
  
     --  Has_Wide_Character
     --    Present in string literals, set if any wide character (i.e. character
--- 1476,1482 ----
  
     --  Has_Target_Names
     --    Present in assignment statements. Indicates that the RHS contains
!    --    target names ("@" -- see AI12-0125-3).
  
     --  Has_Wide_Character
     --    Present in string literals, set if any wide character (i.e. character
*************** package Sinfo is
*** 2122,2127 ****
--- 2128,2139 ----
     --    indication carries a null-exclusion indicator, which is distinct from
     --    the null-exclusion indicator that may precede the access keyword.
  
+    --  Original_Pragma
+    --    When aspects with assertion level associations are transformed in to
+    --    individual aspects without the assertion level we store the original
+    --    aspect in this attribute. This is used to avoid duplicate detection on
+    --    these aspects.
+ 
     --  Original_Discriminant
     --    Present in identifiers. Used in references to discriminants that
     --    appear in generic units. Because the names of the discriminants may be
*************** package Sinfo is
*** 2138,2143 ****
--- 2150,2161 ----
     --    interferes with the Entity field, making it impossible to preserve the
     --    original entity at the point of instantiation.
  
+    --  Original_Pragma
+    --    When pragmas with assertion level associations are transformed in to
+    --    individual pragmas without the assertion level we store the original
+    --    prama in this attribute. This is used to avoid duplicate detection on
+    --    these pragmas.
+ 
     --  Others_Discrete_Choices
     --    When a case statement or variant is analyzed, the semantic checks
     --    determine the actual list of choices that correspond to an others
*************** package Sinfo is
*** 2166,2171 ****
--- 2184,2195 ----
     --    type, a subsequently generated error message indicates the position
     --    of its full declaration.
  
+    --  Pragma_Ghost_Assertion_Level
+    --     Assertion_Level that was originally used in the assertion level
+    --     associations of its arguments. These pragmas are transformed to new
+    --     pragmas with the associated arguments and the original assertion
+    --     level is stored in this attribute.
+ 
     --  Present_Expr
     --    Present in an N_Variant node. This has a meaningful value only after
     --    Gigi has back annotated the tree with representation information. At
*************** package Sinfo is
*** 2705,2710 ****
--- 2729,2736 ----
        --  Is_Delayed_Aspect
        --  Is_Disabled
        --  Import_Interface_Present
+       --  Original_Pragma
+       --  Pragma_Ghost_Assertion_Level
        --  Uneval_Old_Warn
  
        --  Note: we should have a section on what pragmas are passed on to
*************** package Sinfo is
*** 7627,7633 ****
--- 7653,7661 ----
        --  Is_Delayed_Aspect
        --  Is_Disabled
        --  Is_Boolean_Aspect
+       --  Aspect_Ghost_Assertion_Level
        --  Aspect_On_Partial_View
+       --  Original_Aspect
  
        --  Note: Aspect_Specification is an Ada 2012 feature
  
diff -Nrcpad gcc-16-20250907/gcc/ada/snames.adb-tmpl gcc-16-20250914/gcc/ada/snames.adb-tmpl
*** gcc-16-20250907/gcc/ada/snames.adb-tmpl	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/snames.adb-tmpl	Sun Sep 14 22:32:08 2025
*************** package body Snames is
*** 281,290 ****
              return Pragma_Storage_Size;
           when Name_Storage_Unit                     =>
              return Pragma_Storage_Unit;
           when First_Pragma_Name .. Last_Pragma_Name =>
              return Pragma_Id'Val (N - First_Pragma_Name);
           when others                                =>
!             return Unknown_Pragma;
        end case;
     end Get_Pragma_Id;
  
--- 281,292 ----
              return Pragma_Storage_Size;
           when Name_Storage_Unit                     =>
              return Pragma_Storage_Unit;
+          when Name_Unsigned_Base_Range              =>
+             return Pragma_Unsigned_Base_Range;
           when First_Pragma_Name .. Last_Pragma_Name =>
              return Pragma_Id'Val (N - First_Pragma_Name);
           when others                                =>
!             return Pragma_Unknown;
        end case;
     end Get_Pragma_Id;
  
*************** package body Snames is
*** 508,514 ****
          or else N = Name_Priority
          or else N = Name_Secondary_Stack_Size
          or else N = Name_Storage_Size
!         or else N = Name_Storage_Unit;
     end Is_Pragma_Name;
  
     ---------------------------------
--- 510,517 ----
          or else N = Name_Priority
          or else N = Name_Secondary_Stack_Size
          or else N = Name_Storage_Size
!         or else N = Name_Storage_Unit
!         or else N = Name_Unsigned_Base_Range;
     end Is_Pragma_Name;
  
     ---------------------------------
diff -Nrcpad gcc-16-20250907/gcc/ada/snames.ads-tmpl gcc-16-20250914/gcc/ada/snames.ads-tmpl
*** gcc-16-20250907/gcc/ada/snames.ads-tmpl	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/snames.ads-tmpl	Sun Sep 14 22:32:08 2025
*************** package Snames is
*** 424,429 ****
--- 424,430 ----
     Name_Aggregate_Individually_Assign  : constant Name_Id := N + $; -- GNAT
     Name_Allow_Integer_Address          : constant Name_Id := N + $; -- GNAT
     Name_Annotate                       : constant Name_Id := N + $; -- GNAT
+    Name_Assertion_Level                : constant Name_Id := N + $; -- GNAT
     Name_Assertion_Policy               : constant Name_Id := N + $; -- Ada 05
     Name_Assume_No_Invalid_Values       : constant Name_Id := N + $; -- GNAT
     Name_C_Pass_By_Copy                 : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 573,579 ****
     Name_Extensions_Visible             : constant Name_Id := N + $; -- GNAT
     Name_External                       : constant Name_Id := N + $; -- GNAT
     Name_Finalize_Storage_Only          : constant Name_Id := N + $; -- GNAT
!    Name_First_Controlling_Parameter    : constant Name_Id := N + $;
     Name_Ghost                          : constant Name_Id := N + $; -- GNAT
     Name_Global                         : constant Name_Id := N + $; -- GNAT
     Name_Ident                          : constant Name_Id := N + $; -- GNAT
--- 574,580 ----
     Name_Extensions_Visible             : constant Name_Id := N + $; -- GNAT
     Name_External                       : constant Name_Id := N + $; -- GNAT
     Name_Finalize_Storage_Only          : constant Name_Id := N + $; -- GNAT
!    Name_First_Controlling_Parameter    : constant Name_Id := N + $; -- GNAT
     Name_Ghost                          : constant Name_Id := N + $; -- GNAT
     Name_Global                         : constant Name_Id := N + $; -- GNAT
     Name_Ident                          : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 721,726 ****
--- 722,734 ----
     Name_Unreferenced                   : constant Name_Id := N + $; -- GNAT
     Name_Unreferenced_Objects           : constant Name_Id := N + $; -- GNAT
     Name_Unreserve_All_Interrupts       : constant Name_Id := N + $; -- GNAT
+ 
+    --  Note: Unsigned_Base_Range is not in this list because its name matches
+    --  the name of the corresponding attribute. However, it is included in the
+    --  definition of the type Pragma_Id and the functions Get_Pragma_Id and
+    --  Is_Pragma_Name correctly recognize and process Unsigned_Base_Range.
+    --  Unsigned_Base_Range is a Core Extension pragma.
+ 
     Name_Unused                         : constant Name_Id := N + $; -- GNAT
     Name_Volatile                       : constant Name_Id := N + $;
     Name_Volatile_Components            : constant Name_Id := N + $;
*************** package Snames is
*** 1056,1061 ****
--- 1064,1070 ----
     Name_Unconstrained_Array            : constant Name_Id := N + $; -- GNAT
     Name_Universal_Literal_String       : constant Name_Id := N + $; -- GNAT
     Name_Unrestricted_Access            : constant Name_Id := N + $; -- GNAT
+    Name_Unsigned_Base_Range            : constant Name_Id := N + $; -- GNAT
     Name_Update                         : constant Name_Id := N + $; -- GNAT
     Name_VADS_Size                      : constant Name_Id := N + $; -- GNAT
     Name_Val                            : constant Name_Id := N + $;
*************** package Snames is
*** 1409,1414 ****
--- 1418,1427 ----
     Name_Reference_Control_Type           : constant Name_Id := N + $;
     Name_Get_Element_Access               : constant Name_Id := N + $;
  
+    --  Names used to implement Assertion_Levels
+ 
+    Name_uDefault_Assertion_Level          : constant Name_Id := N + $;
+ 
     --  Names for Ada 202x Aggregate aspect. Name_Aggregate is already
     --  present for gprbuild.
  
*************** package Snames is
*** 1595,1600 ****
--- 1608,1614 ----
        Attribute_Unconstrained_Array,
        Attribute_Universal_Literal_String,
        Attribute_Unrestricted_Access,
+       Attribute_Unsigned_Base_Range,
        Attribute_Update,
        Attribute_VADS_Size,
        Attribute_Val,
*************** package Snames is
*** 1773,1778 ****
--- 1787,1793 ----
        Pragma_Aggregate_Individually_Assign,
        Pragma_Allow_Integer_Address,
        Pragma_Annotate,
+       Pragma_Assertion_Level,
        Pragma_Assertion_Policy,
        Pragma_Assume_No_Invalid_Values,
        Pragma_C_Pass_By_Copy,
*************** package Snames is
*** 2027,2036 ****
        Pragma_Secondary_Stack_Size,
        Pragma_Storage_Size,
        Pragma_Storage_Unit,
  
        --  The value to represent an unknown or unrecognized pragma
  
!       Unknown_Pragma);
  
     -----------------------------------
     -- Queuing Policy ID definitions --
--- 2042,2052 ----
        Pragma_Secondary_Stack_Size,
        Pragma_Storage_Size,
        Pragma_Storage_Unit,
+       Pragma_Unsigned_Base_Range,
  
        --  The value to represent an unknown or unrecognized pragma
  
!       Pragma_Unknown);
  
     -----------------------------------
     -- Queuing Policy ID definitions --
*************** package Snames is
*** 2151,2157 ****
     --  to call this function with a name that is not the name of a check.
  
     function Get_Pragma_Id (N : Name_Id) return Pragma_Id;
!    --  Returns Id of pragma corresponding to given name. Returns Unknown_Pragma
     --  if N is not a name of a known (Ada defined or GNAT-specific) pragma.
     --  Note that the function also works correctly for names of pragmas that
     --  are not included in the main list of pragma Names (e.g. Name_CPU returns
--- 2167,2173 ----
     --  to call this function with a name that is not the name of a check.
  
     function Get_Pragma_Id (N : Name_Id) return Pragma_Id;
!    --  Returns Id of pragma corresponding to given name. Returns Pragma_Unknown
     --  if N is not a name of a known (Ada defined or GNAT-specific) pragma.
     --  Note that the function also works correctly for names of pragmas that
     --  are not included in the main list of pragma Names (e.g. Name_CPU returns
diff -Nrcpad gcc-16-20250907/gcc/ada/snames.h-tmpl gcc-16-20250914/gcc/ada/snames.h-tmpl
*** gcc-16-20250907/gcc/ada/snames.h-tmpl	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/snames.h-tmpl	Sun Sep 14 22:32:08 2025
*************** enum Name_Id : Int
*** 35,41 ****
  
  /* Define the numeric values for attributes.  */
  
! enum Attribute_Id : unsigned char
  {
    Attr_ !! TEMPLATE INSERTION POINT
  };
--- 35,41 ----
  
  /* Define the numeric values for attributes.  */
  
! enum Attribute_Id : Byte
  {
    Attr_ !! TEMPLATE INSERTION POINT
  };
*************** enum Attribute_Id : unsigned char
*** 46,52 ****
  static inline Attribute_Id
  Get_Attribute_Id (int id)
  {
!   extern unsigned char snames__get_attribute_id (int);
    return (Attribute_Id) snames__get_attribute_id (id);
  }
  
--- 46,52 ----
  static inline Attribute_Id
  Get_Attribute_Id (int id)
  {
!   extern Byte snames__get_attribute_id (int);
    return (Attribute_Id) snames__get_attribute_id (id);
  }
  
*************** extern Boolean Is_Pragma_Name (Name_Id);
*** 64,70 ****
  
  /* Define the numeric values for the pragmas. */
  
! enum Pragma_Id : Byte
  {
    Pragma_ !! TEMPLATE_INSERTION_POINT
  };
--- 64,70 ----
  
  /* Define the numeric values for the pragmas. */
  
! enum Pragma_Id : Word
  {
    Pragma_ !! TEMPLATE_INSERTION_POINT
  };
*************** enum Pragma_Id : Byte
*** 75,81 ****
  static inline Pragma_Id
  Get_Pragma_Id (int id)
  {
!   extern unsigned char snames__get_pragma_id (int);
    return (Pragma_Id) snames__get_pragma_id (id);
  }
  
--- 75,81 ----
  static inline Pragma_Id
  Get_Pragma_Id (int id)
  {
!   extern Word snames__get_pragma_id (int);
    return (Pragma_Id) snames__get_pragma_id (id);
  }
  
diff -Nrcpad gcc-16-20250907/gcc/ada/stand.ads gcc-16-20250914/gcc/ada/stand.ads
*** gcc-16-20250907/gcc/ada/stand.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/stand.ads	Sun Sep 14 22:32:08 2025
*************** package Stand is
*** 484,487 ****
--- 484,499 ----
     Standard_Op_Shift_Right_Arithmetic : Entity_Id;
     --  These entities are used for shift operators generated by the expander
  
+    Standard_Level_Static  : Entity_Id;
+    --  Assertion_Level that indicates that the associated entity is never
+    --  checked.
+ 
+    Standard_Level_Runtime : Entity_Id;
+    --  Assertion_Level that indicates that the associated entity is always
+    --  checked.
+ 
+    Standard_Level_Default : Entity_Id;
+    --  A special internally defined Assertion_Level that is applied to entities
+    --  that were not using Assertion_Levels syntactically.
+ 
  end Stand;
diff -Nrcpad gcc-16-20250907/gcc/ada/targparm.adb gcc-16-20250914/gcc/ada/targparm.adb
*** gcc-16-20250907/gcc/ada/targparm.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/targparm.adb	Sun Sep 14 22:32:08 2025
*************** package body Targparm is
*** 307,313 ****
  
           --  Test for type Address is private
  
!          elsif Looking_At_Skip ("   type Address is private;") then
              Opt.Address_Is_Private := True;
              goto Line_Loop_Continue;
  
--- 307,313 ----
  
           --  Test for type Address is private
  
!          elsif Looking_At_Skip ("   type Address is private") then
              Opt.Address_Is_Private := True;
              goto Line_Loop_Continue;
  
diff -Nrcpad gcc-16-20250907/gcc/ada/tbuild.adb gcc-16-20250914/gcc/ada/tbuild.adb
*** gcc-16-20250907/gcc/ada/tbuild.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/tbuild.adb	Sun Sep 14 22:32:08 2025
*************** package body Tbuild is
*** 151,156 ****
--- 151,171 ----
        null;
     end Discard_Node;
  
+    --------------------------
+    -- Make_Assertion_Level --
+    --------------------------
+ 
+    function Make_Assertion_Level
+      (Loc : Source_Ptr; Nam : Name_Id) return Entity_Id
+    is
+       Level : constant Entity_Id := Make_Defining_Identifier (Loc, Nam);
+    begin
+       Mutate_Ekind (Level, E_Assertion_Level);
+       Set_Etype (Level, Standard_Void_Type);
+       Set_Scope (Level, Standard_Standard);
+       return Level;
+    end Make_Assertion_Level;
+ 
     -------------------------------------------
     -- Make_Byte_Aligned_Attribute_Reference --
     -------------------------------------------
diff -Nrcpad gcc-16-20250907/gcc/ada/tbuild.ads gcc-16-20250914/gcc/ada/tbuild.ads
*** gcc-16-20250907/gcc/ada/tbuild.ads	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/tbuild.ads	Sun Sep 14 22:32:08 2025
*************** package Tbuild is
*** 60,65 ****
--- 60,69 ----
     --  effect (e.g. a call to the parser to parse a list of compilation
     --  units), but the List_Id value is not required.
  
+    function Make_Assertion_Level
+      (Loc : Source_Ptr; Nam : Name_Id) return Entity_Id;
+    --  Create a new Defining_Identifier node for an Assertion_Level
+ 
     function Make_Byte_Aligned_Attribute_Reference
       (Sloc           : Source_Ptr;
        Prefix         : Node_Id;
diff -Nrcpad gcc-16-20250907/gcc/ada/treepr.adb gcc-16-20250914/gcc/ada/treepr.adb
*** gcc-16-20250907/gcc/ada/treepr.adb	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/treepr.adb	Sun Sep 14 22:32:08 2025
*************** package body Treepr is
*** 1047,1055 ****
        FD     : Field_Descriptor;
        Format : UI_Format := Auto)
     is
!       NN : constant Node_Id := Node_To_Fetch_From (N, Field);
     begin
!       if not Field_Is_Initial_Zero (N, Field) then
           Print_Field (Prefix, Image (Field), NN, FD, Format);
        end if;
     end Print_Entity_Field;
--- 1047,1057 ----
        FD     : Field_Descriptor;
        Format : UI_Format := Auto)
     is
!       NN : constant Node_Id := Node_To_Fetch_From_If_Set (N, Field);
!       --  If NN is Empty, it means that we cannot compute the
!       --  Node_To_Fetch_From, so we simply skip this field.
     begin
!       if Present (NN) and then not Field_Is_Initial_Zero (N, Field) then
           Print_Field (Prefix, Image (Field), NN, FD, Format);
        end if;
     end Print_Entity_Field;
diff -Nrcpad gcc-16-20250907/gcc/ada/types.h gcc-16-20250914/gcc/ada/types.h
*** gcc-16-20250907/gcc/ada/types.h	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/ada/types.h	Sun Sep 14 22:32:08 2025
*************** typedef Int Pos;
*** 57,62 ****
--- 57,65 ----
  /* 8-bit unsigned integer */
  typedef unsigned char Byte;
  
+ /* 16-bit unsigned integer */
+ typedef unsigned short Word;
+ 
  /* 8-Bit Character and String Types:  */
  
  /* 8-bit character type */
diff -Nrcpad gcc-16-20250907/gcc/c/ChangeLog gcc-16-20250914/gcc/c/ChangeLog
*** gcc-16-20250907/gcc/c/ChangeLog	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/c/ChangeLog	Sun Sep 14 22:32:08 2025
***************
*** 1,3 ****
--- 1,38 ----
+ 2025-09-13  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* c-typeck.cc (c_mark_addressable): New parameter
+ 	override_register.
+ 	(build_array_ref): Update calls to c_mark_addressable.  Give error
+ 	in C2Y mode for negative array indices when array expression is an
+ 	array not a pointer.  Use pedwarn_c23 for subscripting register
+ 	array; diagnose that also for register compound literal.
+ 	* c-tree.h (c_mark_addressable): Update prototype.
+ 
+ 2025-09-10  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	* c-tree.h: Add new macro C_DECL_NONLOCAL_CONTEXT and prototype
+ 	for mark_decl_used.
+ 	* c-typeck.cc (mark_decl_used): New function.
+ 	(function_to_pointer_conversion): Mark exempt functions.
+ 	(record_maybe_used_decl): Add `address' parameter.
+ 	(build_external_ref): Change to mark_decl_used.
+ 	(pop_maybe_used): Call mark_decl_used.
+ 	(c_mark_addressable): Ditto.
+ 	(c_finish_goto_label): Ditto.
+ 	(c_finish_return): Add warning.
+ 	* c-decl.cc (declspecs_add_type): Ditto.
+ 	(grokdeclarator): Don't set C_DECL_REGISTER on function
+ 	declarators.
+ 
+ 2025-09-08  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c/107419
+ 	* c-decl.cc (c_decl_attributes): Update TLS model with the
+ 	default TLS access model if the default TLS access model is
+ 	stronger.
+ 	(grokdeclarator): Set a tentative TLS model which will be
+ 	updated by c_decl_attributes later.
+ 
  2025-09-05  Jakub Jelinek  <jakub@redhat.com>
  
  	* c-decl.cc (pushtag): Remove ()s around string literal
diff -Nrcpad gcc-16-20250907/gcc/c/c-decl.cc gcc-16-20250914/gcc/c/c-decl.cc
*** gcc-16-20250907/gcc/c/c-decl.cc	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/c/c-decl.cc	Sun Sep 14 22:32:08 2025
*************** c_decl_attributes (tree *node, tree attr
*** 5582,5588 ****
    tree last_decl = lookup_last_decl (*node);
    if (last_decl == error_mark_node)
      last_decl = NULL_TREE;
!   return decl_attributes (node, attributes, flags, last_decl);
  }
  
  
--- 5582,5597 ----
    tree last_decl = lookup_last_decl (*node);
    if (last_decl == error_mark_node)
      last_decl = NULL_TREE;
!   tree attr = decl_attributes (node, attributes, flags, last_decl);
!   if (VAR_P (*node) && DECL_THREAD_LOCAL_P (*node))
!     {
!       // tls_model attribute can set a stronger TLS access model.
!       tls_model model = DECL_TLS_MODEL (*node);
!       tls_model default_model = decl_default_tls_model (*node);
!       if (default_model > model)
! 	set_decl_tls_model (*node, default_model);
!     }
!   return attr;
  }
  
  
*************** grokdeclarator (const struct c_declarato
*** 8181,8188 ****
  	    TREE_PUBLIC (decl) = extern_ref;
  	  }
  
  	if (threadp)
! 	  set_decl_tls_model (decl, decl_default_tls_model (decl));
        }
  
      if ((storage_class == csc_extern
--- 8190,8200 ----
  	    TREE_PUBLIC (decl) = extern_ref;
  	  }
  
+ 	// NB: Set a tentative TLS model to avoid tls_model attribute
+ 	// warnings due to lack of thread storage duration.  It will
+ 	// be updated by c_decl_attributes later.
  	if (threadp)
! 	  set_decl_tls_model (decl, TLS_MODEL_REAL);
        }
  
      if ((storage_class == csc_extern
*************** grokdeclarator (const struct c_declarato
*** 8219,8225 ****
      /* Record `register' declaration for warnings on &
         and in case doing stupid register allocation.  */
  
!     if (storage_class == csc_register)
        {
  	C_DECL_REGISTER (decl) = 1;
  	DECL_REGISTER (decl) = 1;
--- 8231,8238 ----
      /* Record `register' declaration for warnings on &
         and in case doing stupid register allocation.  */
  
!     if (storage_class == csc_register
! 	&& TREE_CODE (type) != FUNCTION_TYPE)
        {
  	C_DECL_REGISTER (decl) = 1;
  	DECL_REGISTER (decl) = 1;
*************** declspecs_add_type (location_t loc, stru
*** 12815,12820 ****
--- 12828,12834 ----
      error_at (loc, "two or more data types in declaration specifiers");
    else if (TREE_CODE (type) == TYPE_DECL)
      {
+       mark_decl_used (type, false);
        specs->type = TREE_TYPE (type);
        if (TREE_TYPE (type) != error_mark_node)
  	{
diff -Nrcpad gcc-16-20250907/gcc/c/c-tree.h gcc-16-20250914/gcc/c/c-tree.h
*** gcc-16-20250907/gcc/c/c-tree.h	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/c/c-tree.h	Sun Sep 14 22:32:08 2025
*************** along with GCC; see the file COPYING3.
*** 80,85 ****
--- 80,90 ----
  /* For a PARM_DECL, nonzero if it was declared as an array.  */
  #define C_ARRAY_PARAMETER(NODE) DECL_LANG_FLAG_0 (NODE)
  
+ /* For FUNCTION_DECLs, evaluates true if the decl is a nested
+    function that requires a non-local context.  */
+ #define C_FUNC_NONLOCAL_CONTEXT(EXP)		\
+   DECL_LANG_FLAG_4 (FUNCTION_DECL_CHECK (EXP))
+ 
  /* For FUNCTION_DECLs, evaluates true if the decl is built-in but has
     been declared.  */
  #define C_DECL_DECLARED_BUILTIN(EXP)		\
*************** along with GCC; see the file COPYING3.
*** 111,117 ****
  /* Record whether a decl was declared register.  This is strictly a
     front-end flag, whereas DECL_REGISTER is used for code generation;
     they may differ for structures with volatile fields.  */
! #define C_DECL_REGISTER(EXP) DECL_LANG_FLAG_4 (EXP)
  
  /* Record whether a decl was used in an expression anywhere except an
     unevaluated operand of sizeof / typeof / alignof.  This is only
--- 116,123 ----
  /* Record whether a decl was declared register.  This is strictly a
     front-end flag, whereas DECL_REGISTER is used for code generation;
     they may differ for structures with volatile fields.  */
! #define C_DECL_REGISTER(EXP) \
!   DECL_LANG_FLAG_4 (TREE_NOT_CHECK (EXP, FUNCTION_DECL))
  
  /* Record whether a decl was used in an expression anywhere except an
     unevaluated operand of sizeof / typeof / alignof.  This is only
*************** extern bool comptypes_same_p (tree, tree
*** 807,813 ****
  extern bool comptypes_equiv_p (tree, tree);
  extern int comptypes_check_different_types (tree, tree, bool *);
  extern int comptypes_check_enum_int (tree, tree, bool *);
! extern bool c_mark_addressable (tree, bool = false);
  extern void c_incomplete_type_error (location_t, const_tree, const_tree);
  extern tree c_type_promotes_to (tree);
  extern struct c_expr default_function_array_conversion (location_t,
--- 813,819 ----
  extern bool comptypes_equiv_p (tree, tree);
  extern int comptypes_check_different_types (tree, tree, bool *);
  extern int comptypes_check_enum_int (tree, tree, bool *);
! extern bool c_mark_addressable (tree, bool = false, bool = false);
  extern void c_incomplete_type_error (location_t, const_tree, const_tree);
  extern tree c_type_promotes_to (tree);
  extern struct c_expr default_function_array_conversion (location_t,
*************** extern tree build_array_ref (location_t,
*** 827,832 ****
--- 833,839 ----
  extern tree build_omp_array_section (location_t, tree, tree, tree);
  extern tree build_external_ref (location_t, tree, bool, tree *);
  extern void pop_maybe_used (bool);
+ extern void mark_decl_used (tree, bool);
  extern struct c_expr c_expr_sizeof_expr (location_t, struct c_expr);
  extern struct c_expr c_expr_sizeof_type (location_t, struct c_type_name *);
  extern struct c_expr c_expr_countof_expr (location_t, struct c_expr);
diff -Nrcpad gcc-16-20250907/gcc/c/c-typeck.cc gcc-16-20250914/gcc/c/c-typeck.cc
*** gcc-16-20250907/gcc/c/c-typeck.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/c/c-typeck.cc	Sun Sep 14 22:32:08 2025
*************** static void set_nonincremental_init_from
*** 133,139 ****
  static tree find_init_member (tree, struct obstack *);
  static void readonly_warning (tree, enum lvalue_use);
  static int lvalue_or_else (location_t, const_tree, enum lvalue_use);
! 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);
--- 133,139 ----
  static tree find_init_member (tree, struct obstack *);
  static void readonly_warning (tree, enum lvalue_use);
  static int lvalue_or_else (location_t, const_tree, enum lvalue_use);
! static void record_maybe_used_decl (tree, bool address);
  static bool comptypes_internal (const_tree, const_tree,
  				struct comptypes_data *data);
  static bool comptypes_check_for_composite (tree t1, tree t2);
*************** function_to_pointer_conversion (location
*** 2328,2334 ****
  
    copy_warning (exp, orig_exp);
  
!   return build_unary_op (loc, ADDR_EXPR, exp, false);
  }
  
  /* Mark EXP as read, not just set, for set but not used -Wunused
--- 2328,2342 ----
  
    copy_warning (exp, orig_exp);
  
!   tree exp2 = build_unary_op (loc, ADDR_EXPR, exp, false);
! 
!   /* If the function is defined and known to not to require a non-local
!      context, make sure no trampoline is generated.  */
!   if (TREE_CODE (exp) == FUNCTION_DECL
!       && DECL_INITIAL (exp) && !C_FUNC_NONLOCAL_CONTEXT (exp))
!    TREE_NO_TRAMPOLINE (exp2) = 1;
! 
!   return exp2;
  }
  
  /* Mark EXP as read, not just set, for set but not used -Wunused
*************** build_array_ref (location_t loc, tree ar
*** 3519,3525 ****
  	  || (COMPLETE_TYPE_P (TREE_TYPE (TREE_TYPE (array)))
  	      && TREE_CODE (TYPE_SIZE (TREE_TYPE (TREE_TYPE (array)))) != INTEGER_CST))
  	{
! 	  if (!c_mark_addressable (array, true))
  	    return error_mark_node;
  	}
        /* An array that is indexed by a constant value which is not within
--- 3527,3533 ----
  	  || (COMPLETE_TYPE_P (TREE_TYPE (TREE_TYPE (array)))
  	      && TREE_CODE (TYPE_SIZE (TREE_TYPE (TREE_TYPE (array)))) != INTEGER_CST))
  	{
! 	  if (!c_mark_addressable (array, true, true))
  	    return error_mark_node;
  	}
        /* An array that is indexed by a constant value which is not within
*************** build_array_ref (location_t loc, tree ar
*** 3530,3548 ****
  	  && TYPE_DOMAIN (TREE_TYPE (array))
  	  && !int_fits_type_p (index, TYPE_DOMAIN (TREE_TYPE (array))))
  	{
! 	  if (!c_mark_addressable (array))
  	    return error_mark_node;
  	}
  
!       if ((pedantic || warn_c90_c99_compat)
  	  && ! was_vector)
  	{
  	  tree foo = array;
  	  while (TREE_CODE (foo) == COMPONENT_REF)
  	    foo = TREE_OPERAND (foo, 0);
! 	  if (VAR_P (foo) && C_DECL_REGISTER (foo))
! 	    pedwarn (loc, OPT_Wpedantic,
! 		     "ISO C forbids subscripting %<register%> array");
  	  else if (!lvalue_p (foo))
  	    pedwarn_c90 (loc, OPT_Wpedantic,
  			 "ISO C90 forbids subscripting non-lvalue "
--- 3538,3565 ----
  	  && TYPE_DOMAIN (TREE_TYPE (array))
  	  && !int_fits_type_p (index, TYPE_DOMAIN (TREE_TYPE (array))))
  	{
! 	  if (!c_mark_addressable (array, false, true))
  	    return error_mark_node;
+ 	  /* ISO C2Y disallows a negative integer constant expression index
+ 	     when array subscripting has an operand of array type.  */
+ 	  if (flag_isoc2y
+ 	      && !TREE_OVERFLOW (index)
+ 	      && tree_int_cst_sgn (index) < 0)
+ 	    error_at (loc, "array subscript is negative");
  	}
  
!       if ((pedantic || warn_c90_c99_compat || warn_c23_c2y_compat)
  	  && ! was_vector)
  	{
  	  tree foo = array;
  	  while (TREE_CODE (foo) == COMPONENT_REF)
  	    foo = TREE_OPERAND (foo, 0);
! 	  if ((VAR_P (foo) && C_DECL_REGISTER (foo))
! 	      || (TREE_CODE (foo) == COMPOUND_LITERAL_EXPR
! 		  && C_DECL_REGISTER (COMPOUND_LITERAL_EXPR_DECL (foo))))
! 	    pedwarn_c23 (loc, OPT_Wpedantic,
! 			 "ISO C forbids subscripting %<register%> array "
! 			 "before C2Y");
  	  else if (!lvalue_p (foo))
  	    pedwarn_c90 (loc, OPT_Wpedantic,
  			 "ISO C90 forbids subscripting non-lvalue "
*************** build_omp_array_section (location_t loc,
*** 3641,3646 ****
--- 3658,3748 ----
    return build3_loc (loc, OMP_ARRAY_SECTION, sectype, array, index, length);
  }
  
+ 
+ /* Record that REF is used.  This is relevant for undeclared static
+    function and declarations referenced from a non-local context.
+    ADDRESS indicates whether the address is taken.  */
+ 
+ void
+ mark_decl_used (tree ref, bool address)
+ {
+   if (!ref || !DECL_P (ref) || in_alignof)
+     return;
+ 
+   /* Non-file-scope and non-local reference in nested function.  */
+   bool nonloc_p = current_function_decl && DECL_CONTEXT (ref)
+ 		  && DECL_CONTEXT (current_function_decl)
+ 		  && DECL_CONTEXT (ref) != current_function_decl;
+ 
+   /* An undeclared static function.  */
+   bool static_p = TREE_CODE (ref) == FUNCTION_DECL
+ 		  && DECL_INITIAL (ref) == NULL_TREE
+ 		  && DECL_EXTERNAL (ref)
+ 		  && !TREE_PUBLIC (ref);
+ 
+   if (!static_p && !nonloc_p)
+     return;
+ 
+   /* If we may be in an unevaluated context, delay the decision.  */
+   if (in_sizeof || in_typeof || in_countof)
+     return record_maybe_used_decl (ref, address);
+ 
+   if (static_p)
+     C_DECL_USED (ref) = 1;
+ 
+   if (nonloc_p)
+     DECL_NONLOCAL (ref) = 1;
+ 
+   /* Nothing to do anymore.  */
+   if (!nonloc_p || C_FUNC_NONLOCAL_CONTEXT (current_function_decl))
+     return;
+ 
+   /* Filter out the cases where referencing a non-local variable does not
+      require a non-local context passed via the static chain.  */
+   if (!C_TYPE_VARIABLY_MODIFIED (TREE_TYPE (ref)))
+     switch (TREE_CODE (ref))
+       {
+       case FUNCTION_DECL:
+ 	/* Use of another local function that requires no context is ok.  */
+ 	if (!C_FUNC_NONLOCAL_CONTEXT (ref) && DECL_INITIAL (ref))
+ 	  return;
+ 	break;
+       case VAR_DECL:
+ 	/* Static variables and constexpr are ok, but for the later only
+ 	   when the address is not taken.  */
+ 	if (TREE_STATIC (ref) || (C_DECL_DECLARED_CONSTEXPR (ref) && !address))
+ 	  return;
+ 	break;
+       case TYPE_DECL:
+ 	/* A typedef is ok when not for a variably-modified type. */
+ 	return;
+       case CONST_DECL:
+ 	/* An enumeration constant is ok. */
+ 	return;
+       case PARM_DECL:
+ 	break;
+       case LABEL_DECL:
+ 	break;
+       default:
+ 	gcc_unreachable ();
+     }
+ 
+   /* Mark all parent functions up to the nesting level of the variable as
+      as needing the non-local context.  */
+   for (tree cont = current_function_decl; cont; cont = DECL_CONTEXT (cont))
+     {
+       if (cont == DECL_CONTEXT (ref))
+ 	break;
+ 
+       /* There should not be any other type of context used for function
+ 	 except TRANSLATION_UNIT_DECL which we should be able to reach.  */
+       gcc_checking_assert (TREE_CODE (cont) == FUNCTION_DECL);
+ 
+       if (TREE_CODE (cont) == FUNCTION_DECL)
+ 	C_FUNC_NONLOCAL_CONTEXT (cont) = 1;
+     }
+ }
+ 
  
  /* Build an external reference to identifier ID.  FUN indicates
     whether this will be used for a function call.  LOC is the source
*************** build_external_ref (location_t loc, tree
*** 3698,3712 ****
        TREE_USED (ref) = 1;
      }
  
!   if (TREE_CODE (ref) == FUNCTION_DECL && !in_alignof)
!     {
!       if (!in_sizeof && !in_typeof && !in_countof)
! 	C_DECL_USED (ref) = 1;
!       else if (DECL_INITIAL (ref) == NULL_TREE
! 	       && DECL_EXTERNAL (ref)
! 	       && !TREE_PUBLIC (ref))
! 	record_maybe_used_decl (ref);
!     }
  
    if (TREE_CODE (ref) == CONST_DECL)
      {
--- 3800,3806 ----
        TREE_USED (ref) = 1;
      }
  
!   mark_decl_used (ref, false);
  
    if (TREE_CODE (ref) == CONST_DECL)
      {
*************** build_external_ref (location_t loc, tree
*** 3725,3740 ****
        ref = DECL_INITIAL (ref);
        TREE_CONSTANT (ref) = 1;
      }
-   else if (current_function_decl != NULL_TREE
- 	   && !DECL_FILE_SCOPE_P (current_function_decl)
- 	   && (VAR_OR_FUNCTION_DECL_P (ref)
- 	       || TREE_CODE (ref) == PARM_DECL))
-     {
-       tree context = decl_function_context (ref);
- 
-       if (context != NULL_TREE && context != current_function_decl)
- 	DECL_NONLOCAL (ref) = 1;
-     }
    /* C99 6.7.4p3: An inline definition of a function with external
       linkage ... shall not contain a reference to an identifier with
       internal linkage.  */
--- 3819,3824 ----
*************** struct maybe_used_decl
*** 3758,3780 ****
    tree decl;
    /* The level seen at (in_sizeof + in_typeof + in_countof).  */
    int level;
    /* The next one at this level or above, or NULL.  */
    struct maybe_used_decl *next;
  };
  
  static struct maybe_used_decl *maybe_used_decls;
  
! /* Record that DECL, an undefined static function reference seen
!    inside sizeof or typeof, might be used if the operand of sizeof is
!    a VLA type or the operand of typeof is a variably modified
!    type.  */
  
  static void
! record_maybe_used_decl (tree decl)
  {
    struct maybe_used_decl *t = XOBNEW (&parser_obstack, struct maybe_used_decl);
    t->decl = decl;
    t->level = in_sizeof + in_typeof + in_countof;
    t->next = maybe_used_decls;
    maybe_used_decls = t;
  }
--- 3842,3866 ----
    tree decl;
    /* The level seen at (in_sizeof + in_typeof + in_countof).  */
    int level;
+   /* Seen in address-of.  */
+   bool address;
    /* The next one at this level or above, or NULL.  */
    struct maybe_used_decl *next;
  };
  
  static struct maybe_used_decl *maybe_used_decls;
  
! /* Record that DECL, a reference seen inside sizeof or typeof, might be used
!    if the operand of sizeof is a VLA type or the operand of typeof is a variably
!    modified type.  */
  
  static void
! record_maybe_used_decl (tree decl, bool address)
  {
    struct maybe_used_decl *t = XOBNEW (&parser_obstack, struct maybe_used_decl);
    t->decl = decl;
    t->level = in_sizeof + in_typeof + in_countof;
+   t->address = address;
    t->next = maybe_used_decls;
    maybe_used_decls = t;
  }
*************** pop_maybe_used (bool used)
*** 3794,3800 ****
        if (used)
  	{
  	  if (cur_level == 0)
! 	    C_DECL_USED (p->decl) = 1;
  	  else
  	    p->level = cur_level;
  	}
--- 3880,3886 ----
        if (used)
  	{
  	  if (cur_level == 0)
! 	    mark_decl_used (p->decl, p->address);
  	  else
  	    p->level = cur_level;
  	}
*************** lvalue_or_else (location_t loc, const_tr
*** 6180,6189 ****
     is for ARRAY_REF construction - in that case we don't want
     to look through VIEW_CONVERT_EXPR from VECTOR_TYPE to ARRAY_TYPE,
     it is fine to use ARRAY_REFs for vector subscripts on vector
!    register variables.  */
  
  bool
! c_mark_addressable (tree exp, bool array_ref_p)
  {
    tree x = exp;
  
--- 6266,6276 ----
     is for ARRAY_REF construction - in that case we don't want
     to look through VIEW_CONVERT_EXPR from VECTOR_TYPE to ARRAY_TYPE,
     it is fine to use ARRAY_REFs for vector subscripts on vector
!    register variables.  If OVERRIDE_REGISTER, clear DECL_REGISTER rather
!    than producing an error for taking the address of a register.  */
  
  bool
! c_mark_addressable (tree exp, bool array_ref_p, bool override_register)
  {
    tree x = exp;
  
*************** c_mark_addressable (tree exp, bool array
*** 6216,6223 ****
        case COMPOUND_LITERAL_EXPR:
  	if (C_DECL_REGISTER (COMPOUND_LITERAL_EXPR_DECL (x)))
  	  {
! 	    error ("address of register compound literal requested");
! 	    return false;
  	  }
  	TREE_ADDRESSABLE (x) = 1;
  	TREE_ADDRESSABLE (COMPOUND_LITERAL_EXPR_DECL (x)) = 1;
--- 6303,6315 ----
        case COMPOUND_LITERAL_EXPR:
  	if (C_DECL_REGISTER (COMPOUND_LITERAL_EXPR_DECL (x)))
  	  {
! 	    if (override_register)
! 	      DECL_REGISTER (COMPOUND_LITERAL_EXPR_DECL (x)) = 0;
! 	    else
! 	      {
! 		error ("address of register compound literal requested");
! 		return false;
! 	      }
  	  }
  	TREE_ADDRESSABLE (x) = 1;
  	TREE_ADDRESSABLE (COMPOUND_LITERAL_EXPR_DECL (x)) = 1;
*************** c_mark_addressable (tree exp, bool array
*** 6246,6251 ****
--- 6338,6350 ----
  	  {
  	    if (TREE_PUBLIC (x) || is_global_var (x))
  	      error ("address of global register variable %qD requested", x);
+ 	    else if (override_register && !DECL_HARD_REGISTER (x))
+ 	      {
+ 		DECL_REGISTER (x) = 0;
+ 		TREE_ADDRESSABLE (x) = 1;
+ 		mark_decl_used (x, true);
+ 		return true;
+ 	      }
  	    else
  	      error ("address of register variable %qD requested", x);
  	    return false;
*************** c_mark_addressable (tree exp, bool array
*** 6254,6259 ****
--- 6353,6359 ----
  	/* FALLTHRU */
        case FUNCTION_DECL:
  	TREE_ADDRESSABLE (x) = 1;
+ 	mark_decl_used (x, true);
  	/* FALLTHRU */
        default:
  	return true;
*************** c_finish_goto_label (location_t loc, tre
*** 13015,13020 ****
--- 13115,13121 ----
    if (!decl)
      return NULL_TREE;
    TREE_USED (decl) = 1;
+   mark_decl_used (decl, false);
    {
      add_stmt (build_predict_expr (PRED_GOTO, NOT_TAKEN));
      tree t = build1 (GOTO_EXPR, void_type_node, decl);
*************** c_finish_return (location_t loc, tree re
*** 13190,13203 ****
  
  	      if (DECL_P (inner)
  		  && !DECL_EXTERNAL (inner)
- 		  && !TREE_STATIC (inner)
  		  && DECL_CONTEXT (inner) == current_function_decl
  		  && POINTER_TYPE_P (TREE_TYPE (TREE_TYPE (current_function_decl))))
  		{
  		  if (TREE_CODE (inner) == LABEL_DECL)
  		    warning_at (loc, OPT_Wreturn_local_addr,
  				"function returns address of label");
! 		  else
  		    {
  		      warning_at (loc, OPT_Wreturn_local_addr,
  				  "function returns address of local variable");
--- 13291,13310 ----
  
  	      if (DECL_P (inner)
  		  && !DECL_EXTERNAL (inner)
  		  && DECL_CONTEXT (inner) == current_function_decl
  		  && POINTER_TYPE_P (TREE_TYPE (TREE_TYPE (current_function_decl))))
  		{
  		  if (TREE_CODE (inner) == LABEL_DECL)
  		    warning_at (loc, OPT_Wreturn_local_addr,
  				"function returns address of label");
! 		  else if (TREE_CODE (inner) == FUNCTION_DECL
! 			   && (C_FUNC_NONLOCAL_CONTEXT (inner)
! 			       || !DECL_INITIAL (inner)))
! 		    warning_at (loc, OPT_Wreturn_local_addr,
! 				"function returns address of nested function "
! 				"referencing local context");
! 		  else if (TREE_CODE (inner) != FUNCTION_DECL
! 			   && !TREE_STATIC (inner))
  		    {
  		      warning_at (loc, OPT_Wreturn_local_addr,
  				  "function returns address of local variable");
diff -Nrcpad gcc-16-20250907/gcc/c-family/ChangeLog gcc-16-20250914/gcc/c-family/ChangeLog
*** gcc-16-20250907/gcc/c-family/ChangeLog	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/c-family/ChangeLog	Sun Sep 14 22:32:08 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/121544
+ 	* c-ada-spec.cc (dump_ada_node) <POINTER_TYPE>: Dump the name of
+ 	anonymous tagged pointed-to types specially.
+ 	(dump_nested_type) <POINTER_TYPE>: Recurse on anonymous pointed-to
+ 	types declared in the same file.
+ 	Set TREE_VISITED on the underlying DECL of the field type, if any.
+ 
  2025-08-27  Jakub Jelinek  <jakub@redhat.com>
  
  	PR target/121520
diff -Nrcpad gcc-16-20250907/gcc/c-family/c-ada-spec.cc gcc-16-20250914/gcc/c-family/c-ada-spec.cc
*** gcc-16-20250907/gcc/c-family/c-ada-spec.cc	Sun Sep  7 22:32:57 2025
--- gcc-16-20250914/gcc/c-family/c-ada-spec.cc	Sun Sep 14 22:32:08 2025
*************** dump_ada_node (pretty_printer *pp, tree
*** 2442,2449 ****
  			  break;
  		      }
  
! 		  dump_ada_node (pp, ref_type, ref_type, spc, is_access,
! 				 true);
  		}
  	    }
  	}
--- 2442,2455 ----
  			  break;
  		      }
  
! 		  /* Dump anonymous tagged types specially.  */
! 		  if (TYPE_NAME (ref_type)
! 		      || (!RECORD_OR_UNION_TYPE_P (ref_type)
! 			  && TREE_CODE (ref_type) != ENUMERAL_TYPE))
! 		    dump_ada_node (pp, ref_type, ref_type, spc, is_access,
! 				   true);
! 		  else
! 		    dump_anonymous_type_name (pp, ref_type);
  		}
  	    }
  	}
*************** dump_nested_type (pretty_printer *pp, tr
*** 2699,2705 ****
      {
      case POINTER_TYPE:
        tmp = TREE_TYPE (field_type);
!       dump_forward_type (pp, tmp, t, spc);
        break;
  
      case ARRAY_TYPE:
--- 2705,2720 ----
      {
      case POINTER_TYPE:
        tmp = TREE_TYPE (field_type);
!       decl = get_underlying_decl (tmp);
!       if (TYPE_NAME (tmp) || !decl || DECL_NAME (decl))
! 	dump_forward_type (pp, tmp, t, spc);
!       else if (DECL_SOURCE_FILE (decl) == DECL_SOURCE_FILE (t)
! 	       && !TREE_VISITED (decl))
! 	{
! 	  /* Generate full declaration.  */
! 	  dump_nested_type (pp, decl, t, spc);
! 	  TREE_VISITED (decl) = 1;
! 	}
        break;
  
      case ARRAY_TYPE:
*************** dump_nested_type (pretty_printer *pp, tr
*** 2773,2778 ****
--- 2788,2798 ----
      default:
        break;
      }
+ 
+   /* Make sure not to output the nested type twice in C++.  */
+   decl = get_underlying_decl (field_type);
+   if (decl)
+     TREE_VISITED (decl) = 1;
  }
  
  /* Hash table of overloaded names that we cannot support.  It is needed even
diff -Nrcpad gcc-16-20250907/gcc/cfgloopmanip.cc gcc-16-20250914/gcc/cfgloopmanip.cc
*** gcc-16-20250907/gcc/cfgloopmanip.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/cfgloopmanip.cc	Sun Sep 14 22:32:08 2025
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 32,39 ----
  #include "tree-ssa-loop-manip.h"
  #include "dumpfile.h"
  #include "sreal.h"
+ #include "tree-cfg.h"
+ #include "tree-pass.h"
  
  static void copy_loops_to (class loop **, int,
  			   class loop *);
*************** create_preheader (class loop *loop, int
*** 1615,1621 ****
  	     just a single successor and a normal edge.  */
            if ((flags & CP_SIMPLE_PREHEADERS)
  	      && ((single_entry->flags & EDGE_COMPLEX)
! 		  || !single_succ_p (single_entry->src)))
              need_forwarder_block = true;
            /* If we want fallthru preheaders, also create forwarder block when
               preheader ends with a jump or has predecessors from loop.  */
--- 1617,1631 ----
  	     just a single successor and a normal edge.  */
            if ((flags & CP_SIMPLE_PREHEADERS)
  	      && ((single_entry->flags & EDGE_COMPLEX)
! 		  || !single_succ_p (single_entry->src)
! 		  /* We document LOOPS_HAVE_PREHEADERS as to forming a
! 		     natural place to move code outside of the loop, so it
! 		     should not end with a control instruction.  */
! 		  /* ???  This, and below JUMP_P check needs to be a new
! 		     CFG hook.  */
! 		  || (cfun->curr_properties & PROP_gimple
! 		      && !gsi_end_p (gsi_last_bb (single_entry->src))
! 		      && stmt_ends_bb_p (*gsi_last_bb (single_entry->src)))))
              need_forwarder_block = true;
            /* If we want fallthru preheaders, also create forwarder block when
               preheader ends with a jump or has predecessors from loop.  */
diff -Nrcpad gcc-16-20250907/gcc/common/config/avr/avr-common.cc gcc-16-20250914/gcc/common/config/avr/avr-common.cc
*** gcc-16-20250907/gcc/common/config/avr/avr-common.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/common/config/avr/avr-common.cc	Sun Sep 14 22:32:08 2025
***************
*** 29,34 ****
--- 29,41 ----
  /* Implement TARGET_OPTION_OPTIMIZATION_TABLE.  */
  static const struct default_options avr_option_optimization_table[] =
    {
+     // The lookup table from tree-swicth-conversion.cc lives in .rodata
+     // and hence consumes RAM on almost all devices.  As PR49857 has
+     // been rejected several times for non-technical reasons, just
+     // disable -ftree-switch-conversion by default.  But even with PR49857
+     // in place there remains PR81540, which cannot be filtered out since
+     // the pass has no way to hook in.
+     { OPT_LEVELS_ALL, OPT_ftree_switch_conversion, NULL, 0 },
      // The only effect of -fcaller-saves might be that it triggers
      // a frame without need when it tries to be smart around calls.
      { OPT_LEVELS_ALL, OPT_fcaller_saves, NULL, 0 },
diff -Nrcpad gcc-16-20250907/gcc/common.opt.urls gcc-16-20250914/gcc/common.opt.urls
*** gcc-16-20250907/gcc/common.opt.urls	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/common.opt.urls	Sun Sep 14 22:32:08 2025
*************** UrlSuffix(gcc/Code-Gen-Options.html#inde
*** 553,558 ****
--- 553,561 ----
  fdelete-null-pointer-checks
  UrlSuffix(gcc/Optimize-Options.html#index-fdelete-null-pointer-checks)
  
+ fdep-fusion
+ UrlSuffix(gcc/Optimize-Options.html#index-fdep-fusion)
+ 
  fdevirtualize-at-ltrans
  UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-at-ltrans)
  
diff -Nrcpad gcc-16-20250907/gcc/config/aarch64/aarch64-simd.md gcc-16-20250914/gcc/config/aarch64/aarch64-simd.md
*** gcc-16-20250907/gcc/config/aarch64/aarch64-simd.md	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/aarch64/aarch64-simd.md	Sun Sep 14 22:32:08 2025
***************
*** 949,954 ****
--- 949,965 ----
    }
  )
  
+ (define_expand "vec_trunc_add_high<mode>"
+   [(set (match_operand:<VNARROWQ> 0 "register_operand")
+ 	(plus:VQN (match_operand:VQN 1 "register_operand")
+ 		  (match_operand:VQN 2 "register_operand")))]
+   "TARGET_SIMD"
+   {
+     emit_insn (gen_aarch64_addhn<mode> (operands[0], operands[1], operands[2]));
+     DONE;
+   }
+ )
+ 
  (define_insn "aarch64_<su>abal<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
  	(plus:<VWIDE>
***************
*** 9263,9297 ****
    [(set_attr "type" "crypto_sha3")]
  )
  
- (define_insn_and_split "*bcaxqdi4"
-   [(set (match_operand:DI 0 "register_operand")
- 	(xor:DI
- 	  (and:DI
- 	    (not:DI (match_operand:DI 3 "register_operand"))
- 	    (match_operand:DI 2 "register_operand"))
- 	  (match_operand:DI 1 "register_operand")))]
-   "TARGET_SHA3"
-   {@ [ cons: =0, 1, 2 , 3  ; attrs: type ]
-      [ w       , w, w , w  ; crypto_sha3 ] bcax\t%0.16b, %1.16b, %2.16b, %3.16b
-      [ &r      , r, r0, r0 ; multiple    ] #
-   }
-   "&& REG_P (operands[0]) && GP_REGNUM_P (REGNO (operands[0]))"
-   [(set (match_dup 4)
- 	(and:DI (not:DI (match_dup 3))
- 		(match_dup 2)))
-    (set (match_dup 0)
- 	(xor:DI (match_dup 4)
- 		(match_dup 1)))]
-   {
-     if (reload_completed)
-       operands[4] = operands[0];
-     else if (can_create_pseudo_p ())
-       operands[4] = gen_reg_rtx (DImode);
-     else
-       FAIL;
-   }
- )
- 
  ;; SM3
  
  (define_insn "aarch64_sm3ss1qv4si"
--- 9274,9279 ----
diff -Nrcpad gcc-16-20250907/gcc/config/aarch64/aarch64.md gcc-16-20250914/gcc/config/aarch64/aarch64.md
*** gcc-16-20250907/gcc/config/aarch64/aarch64.md	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/aarch64/aarch64.md	Sun Sep 14 22:32:08 2025
***************
*** 7706,7711 ****
--- 7706,7727 ----
  }
  )
  
+ (define_expand "isfinite<mode>2"
+  [(match_operand:SI 0 "register_operand")
+   (match_operand:GPF 1 "register_operand")]
+  "TARGET_FLOAT"
+ {
+   rtx op = force_lowpart_subreg (<V_INT_EQUIV>mode, operands[1], <MODE>mode);
+   rtx tmp = gen_reg_rtx (<V_INT_EQUIV>mode);
+   emit_move_insn (tmp, GEN_INT (HOST_WIDE_INT_M1U << (<mantissa_bits> + 1)));
+   rtx cc_reg = gen_rtx_REG (CC_SWPmode, CC_REGNUM);
+   emit_insn (gen_cmp_swp_lsl_reg<v_int_equiv> (op, GEN_INT (1), tmp));
+   rtx cmp = gen_rtx_fmt_ee (LTU, SImode, cc_reg, const0_rtx);
+   emit_insn (gen_aarch64_cstoresi (operands[0], cmp, cc_reg));
+   DONE;
+ }
+ )
+ 
  ;; -------------------------------------------------------------------
  ;; Reload support
  ;; -------------------------------------------------------------------
diff -Nrcpad gcc-16-20250907/gcc/config/gcn/gcn-devices.def gcc-16-20250914/gcc/config/gcn/gcn-devices.def
*** gcc-16-20250907/gcc/config/gcn/gcn-devices.def	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/gcn/gcn-devices.def	Sun Sep 14 22:32:08 2025
*************** GCN_DEVICE(gfx1030, GFX1030, 0x36, ISA_R
*** 222,228 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
--- 222,228 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
*************** GCN_DEVICE(gfx1031, GFX1031, 0x37, ISA_R
*** 233,239 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
--- 233,239 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
*************** GCN_DEVICE(gfx1032, GFX1032, 0x38, ISA_R
*** 244,250 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
--- 244,250 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
*************** GCN_DEVICE(gfx1033, GFX1033, 0x39, ISA_R
*** 255,261 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
--- 255,261 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
*************** GCN_DEVICE(gfx1034, GFX1034, 0x3e, ISA_R
*** 266,272 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
--- 266,272 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
*************** GCN_DEVICE(gfx1035, GFX1035, 0x3d, ISA_R
*** 277,283 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
--- 277,283 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
*************** GCN_DEVICE(gfx1036, GFX1036, 0x45, ISA_R
*** 288,294 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
--- 288,294 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ GFX10_3_GENERIC
*************** GCN_DEVICE(gfx10-3-generic, GFX10_3_GENE
*** 299,305 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512, /* 512 SIMD32 = 256 wavefrontsize64.  */
  	   /* Generic code obj version */ 1,
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ NONE
--- 299,305 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 1,
  	   /* Architecture Family */ GFX10,
  	   /* Generic Name */ NONE
*************** GCN_DEVICE(gfx1100, GFX1100, 0x41, ISA_R
*** 312,318 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 1536, /* 1536 SIMD32 = 768 wavefrontsize64.  */
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
--- 312,318 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 768,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
*************** GCN_DEVICE(gfx1101, GFX1101, 0x46, ISA_R
*** 323,329 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 1536,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
--- 323,329 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 768,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
*************** GCN_DEVICE(gfx1102, GFX1102, 0x47, ISA_R
*** 334,340 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 1536,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
--- 334,340 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
*************** GCN_DEVICE(gfx1103, GFX1103, 0x44, ISA_R
*** 345,351 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 1536,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
--- 345,351 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
*************** GCN_DEVICE(gfx1150, GFX1150, 0x43, ISA_R
*** 356,362 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 1536,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
--- 356,362 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
*************** GCN_DEVICE(gfx1151, GFX1151, 0x4a, ISA_R
*** 367,373 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 1536,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
--- 367,373 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 768,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
*************** GCN_DEVICE(gfx1152, GFX1152, 0x55, ISA_R
*** 378,384 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 1536,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
--- 378,384 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
*************** GCN_DEVICE(gfx1153, GFX1153, 0x58, ISA_R
*** 389,395 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 1536,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
--- 389,395 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ GFX11_GENERIC
*************** GCN_DEVICE(gfx11-generic, GFX11_GENERIC,
*** 400,406 ****
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 1536,
  	   /* Generic code obj version */ 1,
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ NONE
--- 400,406 ----
  	   /* SRAM_ECC default */ HSACO_ATTR_UNSUPPORTED,
  	   /* WAVE64 mode */ HSACO_ATTR_ON,
  	   /* CU mode */ HSACO_ATTR_ON,
! 	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 1,
  	   /* Architecture Family */ GFX11,
  	   /* Generic Name */ NONE
diff -Nrcpad gcc-16-20250907/gcc/config/gcn/gcn.cc gcc-16-20250914/gcc/config/gcn/gcn.cc
*** gcc-16-20250907/gcc/config/gcn/gcn.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/gcn/gcn.cc	Sun Sep 14 22:32:08 2025
*************** gcn_expand_cmp_swap (tree exp, rtx targe
*** 4528,4534 ****
  
  static rtx
  gcn_expand_builtin_1 (tree exp, rtx target, rtx /*subtarget */ ,
! 		      machine_mode /*mode */ , int ignore,
  		      struct gcn_builtin_description *)
  {
    tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
--- 4528,4534 ----
  
  static rtx
  gcn_expand_builtin_1 (tree exp, rtx target, rtx /*subtarget */ ,
! 		      machine_mode mode, int ignore,
  		      struct gcn_builtin_description *)
  {
    tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4620,4625 ****
--- 4620,4627 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (V64SFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64SFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4631,4636 ****
--- 4633,4640 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (SFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  SFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4642,4647 ****
--- 4646,4653 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (V64SFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64SFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4653,4658 ****
--- 4659,4666 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (V64DFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64DFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4664,4669 ****
--- 4672,4679 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (V64SFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64SFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4675,4680 ****
--- 4685,4692 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (V64DFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64DFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4686,4691 ****
--- 4698,4705 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg1 = force_reg (V64SFmode,
  			      expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					   V64SFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4701,4706 ****
--- 4715,4722 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg1 = force_reg (V64DFmode,
  			      expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					   V64DFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4716,4721 ****
--- 4732,4739 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (V64SFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64SFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4727,4732 ****
--- 4745,4752 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (V64SFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64SFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4738,4743 ****
--- 4758,4765 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (V64DFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64DFmode,
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 4749,4754 ****
--- 4771,4778 ----
        {
  	if (ignore)
  	  return target;
+ 	if (!REG_P (target))
+ 	  target = gen_reg_rtx (mode);
  	rtx arg = force_reg (V64DFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64DFmode,
*************** gcn_hsa_declare_function_name (FILE *fil
*** 6763,6772 ****
  	avgpr = MAX_NORMAL_AVGPR_COUNT;
      }
  
-   /* SIMD32 devices count double in wavefront64 mode.  */
-   if (TARGET_WAVE64_COMPAT)
-     vgpr *= 2;
- 
    /* Round up to the allocation block size.  */
    int vgpr_block_size = TARGET_VGPR_GRANULARITY;
    if (vgpr % vgpr_block_size)
--- 6787,6792 ----
diff -Nrcpad gcc-16-20250907/gcc/config/i386/i386-expand.cc gcc-16-20250914/gcc/config/i386/i386-expand.cc
*** gcc-16-20250907/gcc/config/i386/i386-expand.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/i386/i386-expand.cc	Sun Sep 14 22:32:08 2025
*************** expand_vec_perm_vpermil (struct expand_v
*** 20826,20832 ****
    rtx rperm[8], vperm;
    unsigned i;
  
!   if (!TARGET_AVX || d->vmode != V8SFmode || !d->one_operand_p)
      return false;
  
    /* We can only permute within the 128-bit lane.  */
--- 20826,20833 ----
    rtx rperm[8], vperm;
    unsigned i;
  
!   if (!TARGET_AVX || !d->one_operand_p
!       || (d->vmode != V8SImode && d->vmode != V8SFmode))
      return false;
  
    /* We can only permute within the 128-bit lane.  */
*************** expand_vec_perm_vpermil (struct expand_v
*** 20856,20862 ****
  
    vperm = gen_rtx_CONST_VECTOR (V8SImode, gen_rtvec_v (8, rperm));
    vperm = force_reg (V8SImode, vperm);
!   emit_insn (gen_avx_vpermilvarv8sf3 (d->target, d->op0, vperm));
  
    return true;
  }
--- 20857,20871 ----
  
    vperm = gen_rtx_CONST_VECTOR (V8SImode, gen_rtvec_v (8, rperm));
    vperm = force_reg (V8SImode, vperm);
!   rtx target = d->target;
!   rtx op0 = d->op0;
!   if (d->vmode == V8SImode)
!     {
!       target = lowpart_subreg (V8SFmode, target, V8SImode);
!       op0 = lowpart_subreg (V8SFmode, op0, V8SImode);
!     }
! 
!   emit_insn (gen_avx_vpermilvarv8sf3 (target, op0, vperm));
  
    return true;
  }
diff -Nrcpad gcc-16-20250907/gcc/config/i386/i386.cc gcc-16-20250914/gcc/config/i386/i386.cc
*** gcc-16-20250907/gcc/config/i386/i386.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/i386/i386.cc	Sun Sep 14 22:32:08 2025
*************** avx_vpermilp_parallel (rtx par, machine_
*** 20603,20608 ****
--- 20603,20609 ----
    switch (mode)
      {
      case E_V8DFmode:
+     case E_V8DImode:
        /* In the 512-bit DFmode case, we can only move elements within
           a 128-bit lane.  First fill the second part of the mask,
  	 then fallthru.  */
*************** avx_vpermilp_parallel (rtx par, machine_
*** 20621,20626 ****
--- 20622,20628 ----
        /* FALLTHRU */
  
      case E_V4DFmode:
+     case E_V4DImode:
        /* In the 256-bit DFmode case, we can only move elements within
           a 128-bit lane.  */
        for (i = 0; i < 2; ++i)
*************** avx_vpermilp_parallel (rtx par, machine_
*** 20638,20643 ****
--- 20640,20646 ----
        break;
  
      case E_V16SFmode:
+     case E_V16SImode:
        /* In 512 bit SFmode case, permutation in the upper 256 bits
  	 must mirror the permutation in the lower 256-bits.  */
        for (i = 0; i < 8; ++i)
*************** avx_vpermilp_parallel (rtx par, machine_
*** 20646,20651 ****
--- 20649,20655 ----
        /* FALLTHRU */
  
      case E_V8SFmode:
+     case E_V8SImode:
        /* In 256 bit SFmode case, we have full freedom of
           movement within the low 128-bit lane, but the high 128-bit
           lane must mirror the exact same pattern.  */
*************** avx_vpermilp_parallel (rtx par, machine_
*** 20656,20662 ****
--- 20660,20668 ----
        /* FALLTHRU */
  
      case E_V2DFmode:
+     case E_V2DImode:
      case E_V4SFmode:
+     case E_V4SImode:
        /* In the 128-bit case, we've full freedom in the placement of
  	 the elements from the source operand.  */
        for (i = 0; i < nelt; ++i)
*************** ix86_vector_costs::add_stmt_cost (int co
*** 26392,26399 ****
      stmt_cost = ix86_default_vector_cost (kind, mode);
  
    if (kind == vec_perm && vectype
!       && GET_MODE_SIZE (TYPE_MODE (vectype)) == 32)
!     m_num_avx256_vec_perm[where]++;
  
    /* Penalize DFmode vector operations for Bonnell.  */
    if (TARGET_CPU_P (BONNELL) && kind == vector_stmt
--- 26398,26460 ----
      stmt_cost = ix86_default_vector_cost (kind, mode);
  
    if (kind == vec_perm && vectype
!       && GET_MODE_SIZE (TYPE_MODE (vectype)) == 32
!       /* BIT_FIELD_REF <vect_**, 64, 0> 0 times vec_perm costs 0 in body.  */
!       && count != 0)
!     {
!       bool real_perm = true;
!       unsigned nunits = TYPE_VECTOR_SUBPARTS (vectype);
! 
!       if (node
! 	  && SLP_TREE_LOAD_PERMUTATION (node).exists ()
! 	  /* Loop vectorization will have 4 times vec_perm
! 	     with index as {0, 0, 0, 0}.
! 	     But it actually generates
! 	     vec_perm_expr <vect, vect, 0, 0, 0, 0>
! 	     vec_perm_expr <vect, vect, 1, 1, 1, 1>
! 	     vec_perm_expr <vect, vect, 2, 2, 2, 2>
! 	     Need to be handled separately.  */
! 	  && is_a <bb_vec_info> (m_vinfo))
! 	{
! 	  unsigned half = nunits / 2;
! 	  unsigned i = 0;
! 	  bool allsame = true;
! 	  unsigned first = SLP_TREE_LOAD_PERMUTATION (node)[0];
! 	  bool cross_lane_p = false;
! 	  for (i = 0 ; i != SLP_TREE_LANES (node); i++)
! 	    {
! 	      unsigned tmp = SLP_TREE_LOAD_PERMUTATION (node)[i];
! 	      /* allsame is just a broadcast.  */
! 	      if (tmp != first)
! 		allsame = false;
! 
! 	      /* 4 times vec_perm with number of lanes multiple of nunits.  */
! 	      tmp = tmp & (nunits - 1);
! 	      unsigned index = i & (nunits - 1);
! 	      if ((index < half && tmp >= half)
! 		  || (index >= half && tmp < half))
! 		cross_lane_p = true;
! 
! 	      if (!allsame && cross_lane_p)
! 		break;
! 	    }
! 
! 	  if (i == SLP_TREE_LANES (node))
! 	    real_perm = false;
! 	}
! 
!       if (real_perm)
! 	{
! 	  m_num_avx256_vec_perm[where] += count;
! 	  if (dump_file && (dump_flags & TDF_DETAILS))
! 	    {
! 	      fprintf (dump_file, "Detected avx256 cross-lane permutation: ");
! 	      if (stmt_info)
! 		print_gimple_expr (dump_file, stmt_info->stmt, 0, TDF_SLIM);
! 	      fprintf (dump_file, " \n");
! 	    }
! 	}
!     }
  
    /* Penalize DFmode vector operations for Bonnell.  */
    if (TARGET_CPU_P (BONNELL) && kind == vector_stmt
*************** ix86_optab_supported_p (int op, machine_
*** 27189,27199 ****
      case floor_optab:
      case ceil_optab:
      case btrunc_optab:
!       if (((SSE_FLOAT_MODE_P (mode1)
! 	    && TARGET_SSE_MATH
! 	    && TARGET_SSE4_1)
! 	   || mode1 == HFmode)
! 	  && !flag_trapping_math)
  	return true;
        return opt_type == OPTIMIZE_FOR_SPEED;
  
--- 27250,27259 ----
      case floor_optab:
      case ceil_optab:
      case btrunc_optab:
!       if ((SSE_FLOAT_MODE_P (mode1)
! 	   && TARGET_SSE_MATH
! 	   && TARGET_SSE4_1)
! 	  || mode1 == HFmode)
  	return true;
        return opt_type == OPTIMIZE_FOR_SPEED;
  
diff -Nrcpad gcc-16-20250907/gcc/config/i386/sse.md gcc-16-20250914/gcc/config/i386/sse.md
*** gcc-16-20250907/gcc/config/i386/sse.md	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/i386/sse.md	Sun Sep 14 22:32:08 2025
***************
*** 302,307 ****
--- 302,313 ----
     V16SF (V8SF "TARGET_AVX512VL")
     V8DF (V4DF "TARGET_AVX512VL")])
  
+ (define_mode_iterator V48_AVX
+   [(V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX") V4SI
+    (V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX") (V2DI "TARGET_SSE2")
+    (V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
+    (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2")])
+ 
  ;; All AVX-512{F,VL} vector modes. Supposed TARGET_AVX512F baseline.
  (define_mode_iterator V48H_AVX512VL
    [V16SI (V8SI "TARGET_AVX512VL") (V4SI "TARGET_AVX512VL")
***************
*** 1428,1433 ****
--- 1434,1443 ----
  (define_mode_attr DOUBLEMASKMODE
    [(HI "SI") (SI "DI")])
  
+ ;; Float mode suffix used for instructions like vpermilpd with integer modes.
+ (define_mode_attr ssefltmodesuffix
+   [(V2DI "pd") (V4DI "pd") (V8DI "pd") (V4SI "ps") (V8SI "ps") (V16SI "ps")
+    (V2DF "pd") (V4DF "pd") (V8DF "pd") (V4SF "ps") (V8SF "ps") (V16SF "ps")])
  
  ;; Include define_subst patterns for instructions with mask
  (include "subst.md")
***************
*** 23655,23664 ****
     (set_attr "btver2_decode" "vector,vector,vector")
     (set_attr "mode" "<MODE>")])
  
- (define_mode_attr ssefltmodesuffix
-   [(V2DI "pd") (V4DI "pd") (V4SI "ps") (V8SI "ps")
-    (V2DF "pd") (V4DF "pd") (V4SF "ps") (V8SF "ps")])
- 
  (define_mode_attr ssefltvecmode
    [(V2DI "V2DF") (V4DI "V4DF") (V4SI "V4SF") (V8SI "V8SF")])
  
--- 23665,23670 ----
***************
*** 27615,27623 ****
  ;; being a subset of what vpermp* can do), but vpermilp* has shorter
  ;; latency as it never crosses lanes.
  (define_insn "*<sse2_avx_avx512f>_vpermilp<mode><mask_name>"
!   [(set (match_operand:VF 0 "register_operand" "=v")
! 	(vec_select:VF
! 	  (match_operand:VF 1 "nonimmediate_operand" "vm")
  	  (match_parallel 2 ""
  	    [(match_operand 3 "const_int_operand")])))]
    "TARGET_AVX && <mask_mode512bit_condition>
--- 27621,27629 ----
  ;; being a subset of what vpermp* can do), but vpermilp* has shorter
  ;; latency as it never crosses lanes.
  (define_insn "*<sse2_avx_avx512f>_vpermilp<mode><mask_name>"
!   [(set (match_operand:V48_AVX 0 "register_operand" "=v")
! 	(vec_select:V48_AVX
! 	  (match_operand:V48_AVX 1 "nonimmediate_operand" "vm")
  	  (match_parallel 2 ""
  	    [(match_operand 3 "const_int_operand")])))]
    "TARGET_AVX && <mask_mode512bit_condition>
***************
*** 27625,27631 ****
  {
    int mask = avx_vpermilp_parallel (operands[2], <MODE>mode) - 1;
    operands[2] = GEN_INT (mask);
!   return "vpermil<ssemodesuffix>\t{%2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2}";
  }
    [(set_attr "type" "sselog")
     (set_attr "prefix_extra" "1")
--- 27631,27637 ----
  {
    int mask = avx_vpermilp_parallel (operands[2], <MODE>mode) - 1;
    operands[2] = GEN_INT (mask);
!   return "vpermil<ssefltmodesuffix>\t{%2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2}";
  }
    [(set_attr "type" "sselog")
     (set_attr "prefix_extra" "1")
diff -Nrcpad gcc-16-20250907/gcc/config/loongarch/loongarch.cc gcc-16-20250914/gcc/config/loongarch/loongarch.cc
*** gcc-16-20250907/gcc/config/loongarch/loongarch.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/loongarch/loongarch.cc	Sun Sep 14 22:32:08 2025
*************** loongarch_print_operand (FILE *file, rtx
*** 6495,6502 ****
        break;
  
      case 't':
!       if (GET_MODE (op) != TImode
! 	  || (op != CONST0_RTX (TImode) && code != REG))
  	{
  	  output_operand_lossage ("invalid use of '%%%c'", letter);
  	  break;
--- 6495,6501 ----
        break;
  
      case 't':
!       if (!reg_or_0_operand (op, TImode))
  	{
  	  output_operand_lossage ("invalid use of '%%%c'", letter);
  	  break;
diff -Nrcpad gcc-16-20250907/gcc/config/loongarch/sync.md gcc-16-20250914/gcc/config/loongarch/sync.md
*** gcc-16-20250907/gcc/config/loongarch/sync.md	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/loongarch/sync.md	Sun Sep 14 22:32:08 2025
***************
*** 682,702 ****
  })
  
  (define_insn "atomic_compare_and_swapti_scq"
!   [(set (match_operand:TI 0 "register_operand" "=&r")
! 	(match_operand:TI 1 "memory_operand"   "+ZB"))
     (set (match_dup 1)
! 	(unspec_volatile:TI [(match_operand:TI 2 "reg_or_0_operand" "rJ")
! 			     (match_operand:TI 3 "reg_or_0_operand" "rJ")
! 			     (match_operand:SI 4 "const_int_operand")]  ;; mod_f
! 	 UNSPEC_COMPARE_AND_SWAP))
!    (clobber (match_scratch:DI 5 "=&r"))]
!   "TARGET_64BIT && ISA_HAS_SCQ"
  {
    output_asm_insn ("1:", operands);
-   output_asm_insn ("ll.d\t%0,%1", operands);
  
!   /* Compare the low word */
!   output_asm_insn ("bne\t%0,%z2,2f", operands);
  
    /* Don't reorder the load of high word before ll.d.  As the TImode
       must be aligned in the memory, the high and low words must be in
--- 682,706 ----
  })
  
  (define_insn "atomic_compare_and_swapti_scq"
!   [(set (match_operand:V2DI 0 "register_operand" "=&f")
! 	(match_operand:V2DI 1 "memory_operand"   "+m"))
     (set (match_dup 1)
! 	(unspec_volatile:V2DI
! 	  [(match_operand:V2DI 2 "reg_or_0_operand" "fJ")
! 	   (match_operand:TI   3 "reg_or_0_operand" "rJ")
! 	   (match_operand:SI   4 "const_int_operand")]
! 	  UNSPEC_COMPARE_AND_SWAP))
!    (set (match_operand:FCC 5 "register_operand" "=z")
! 	(ne:FCC (match_dup 1) (match_dup 2)))
!    (clobber (match_scratch:V2DI 6 "=&f"))
!    (clobber (match_scratch:DI   7 "=&r"))]
!   "TARGET_64BIT && ISA_HAS_SCQ && ISA_HAS_LSX"
  {
    output_asm_insn ("1:", operands);
  
!   /* The loaded value in %7 will just be discarded, this instruction is
!      only intended to raise the LL bit.  Should we use %. instead??  */
!   output_asm_insn ("ll.d\t%7,%1", operands);
  
    /* Don't reorder the load of high word before ll.d.  As the TImode
       must be aligned in the memory, the high and low words must be in
***************
*** 704,726 ****
    if (!ISA_HAS_LD_SEQ_SA)
      output_asm_insn ("dbar\t0x700", operands);
  
!   /* Now load the high word.  As the high and low words are in the same
!      cacheline, in case another core has clobbered the high word before the
!      sc.q instruction is executed, the LL bit for the low word will be
!      cleared.  Thus a normal load is sufficient.  */
!   output_asm_insn ("ld.d\t%t0,%b1,8", operands);
  
!   /* Compare the high word.  */
!   output_asm_insn ("bne\t%t0,%t2,2f", operands);
  
    /* Copy the low word of the new value as it'll be clobbered by sc.q.  */
!   output_asm_insn ("move\t%5,%z3", operands);
  
    /* Store both words if LL bit is still set.  */
!   output_asm_insn ("sc.q\t%5,%t3,%1", operands);
  
    /* Check if sc.q has done the store.  */
!   output_asm_insn ("beqz\t%5,1b", operands);
  
    /* Jump over the mod_f barrier if sc.q has succeeded.  */
    output_asm_insn ("%T4b\t3f", operands);
--- 708,738 ----
    if (!ISA_HAS_LD_SEQ_SA)
      output_asm_insn ("dbar\t0x700", operands);
  
!   /* Load the word pair altogether.  We cannot just load the high word
!      alone: doing so will need to rely on sc.q to ensure no other threads
!      have updated the memory between two loads, but issuing an sc.q when
!      original != expected will cause a page fault with a "valid" (well, at
!      least the standard implies it's valid) use of
!      atomic_compare_and_exchange on a const _Atomic object.  See
!      https://gcc.gnu.org/PR80878#c1.  */
!   output_asm_insn ("vld\t%w0,%1", operands);
  
!   /* Compare the word pair.  */
!   if (const_0_operand (operands[2], V1TImode))
!     operands[7] = operands[0];
!   else
!     output_asm_insn ("vxor.v\t%w6,%w0,%w2", operands);
!   output_asm_insn ("vseteqz.v\t%5,%w6", operands);
!   output_asm_insn ("bceqz\t%5,2f", operands);
  
    /* Copy the low word of the new value as it'll be clobbered by sc.q.  */
!   output_asm_insn ("move\t%7,%z3", operands);
  
    /* Store both words if LL bit is still set.  */
!   output_asm_insn ("sc.q\t%7,%t3,%1", operands);
  
    /* Check if sc.q has done the store.  */
!   output_asm_insn ("beqz\t%7,1b", operands);
  
    /* Jump over the mod_f barrier if sc.q has succeeded.  */
    output_asm_insn ("%T4b\t3f", operands);
***************
*** 732,738 ****
    output_asm_insn ("3:", operands);
    return "";
  }
!   [(set_attr "length" "40")])
  
  (define_expand "atomic_compare_and_swapti"
    [(match_operand:SI 0 "register_operand" "")   ;; bool output
--- 744,750 ----
    output_asm_insn ("3:", operands);
    return "";
  }
!   [(set_attr "length" "44")])
  
  (define_expand "atomic_compare_and_swapti"
    [(match_operand:SI 0 "register_operand" "")   ;; bool output
***************
*** 743,772 ****
     (match_operand:SI 5 "const_int_operand" "")  ;; is_weak
     (match_operand:SI 6 "const_int_operand" "")  ;; mod_s
     (match_operand:SI 7 "const_int_operand" "")] ;; mod_f
!   "TARGET_64BIT && ISA_HAS_SCQ"
  {
!   emit_insn (gen_atomic_compare_and_swapti_scq (operands[1], operands[2],
! 						operands[3], operands[4],
! 						operands[7]));
! 
!   rtx t[2];
  
!   for (int i = 0; i < 2; i++)
      {
!       rtx compare = loongarch_subword (operands[1], i);
!       rtx expect = loongarch_subword (operands[3], i);
! 
!       t[i] = gen_reg_rtx (DImode);
  
!       if (expect != const0_rtx)
! 	emit_insn (gen_xordi3 (t[i], compare, expect));
!       else
! 	emit_move_insn (t[i], compare);
      }
  
!   emit_insn (gen_iordi3 (t[0], t[0], t[1]));
!   emit_insn (gen_rtx_SET (operands[0],
! 			  gen_rtx_EQ (SImode, t[0], const0_rtx)));
    DONE;
  })
  
--- 755,794 ----
     (match_operand:SI 5 "const_int_operand" "")  ;; is_weak
     (match_operand:SI 6 "const_int_operand" "")  ;; mod_s
     (match_operand:SI 7 "const_int_operand" "")] ;; mod_f
!   "TARGET_64BIT && ISA_HAS_SCQ && ISA_HAS_LSX"
  {
!   rtx fcc = gen_reg_rtx (FCCmode);
!   rtx gpr = gen_reg_rtx (DImode);
!   rtx vr = gen_reg_rtx (V2DImode);
!   rtx mem = gen_rtx_MEM (V2DImode, XEXP (operands[2], 0));
  
!   if (const_0_operand (operands[3], TImode))
!     operands[3] = CONST0_RTX (V2DImode);
!   else
      {
!       rtvec v = rtvec_alloc (2);
!       for (int i = 0; i < 2; i++)
! 	RTVEC_ELT (v, i) = loongarch_subword (operands[3], i);
  
!       operands[3] = gen_reg_rtx (V2DImode);
!       emit_insn (gen_vec_initv2didi (operands[3],
! 				     gen_rtx_PARALLEL (V2DImode, v)));
      }
  
!   emit_insn (gen_atomic_compare_and_swapti_scq (vr, mem, operands[3],
! 						operands[4], operands[7],
! 						fcc));
! 
!   for (int i = 0; i < 2; i++)
!     emit_insn (
!       gen_lsx_vpickve2gr_d (loongarch_subword (operands[1], i), vr,
! 			    GEN_INT (i)));
! 
!   emit_insn (gen_fcc_to_di (gpr, fcc));
!   gpr = gen_lowpart (SImode, gpr);
!   SUBREG_PROMOTED_VAR_P (gpr) = 1;
!   SUBREG_PROMOTED_SET (gpr, SRP_SIGNED);
!   emit_move_insn (operands[0], gpr);
    DONE;
  })
  
diff -Nrcpad gcc-16-20250907/gcc/config/riscv/autovec-opt.md gcc-16-20250914/gcc/config/riscv/autovec-opt.md
*** gcc-16-20250907/gcc/config/riscv/autovec-opt.md	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/riscv/autovec-opt.md	Sun Sep 14 22:32:08 2025
***************
*** 2107,2146 ****
    [(set_attr "type" "vfminmax")]
  )
  
! (define_insn_and_split "*vfmin_vf_ieee_<mode>"
    [(set (match_operand:V_VLSF 0 "register_operand")
      (unspec:V_VLSF [
        (vec_duplicate:V_VLSF
  	(match_operand:<VEL> 2 "register_operand"))
        (match_operand:V_VLSF 1 "register_operand")
!       ] UNSPEC_VFMIN))]
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode) && can_create_pseudo_p ()"
    "#"
    "&& 1"
    [(const_int 0)]
    {
!     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (UNSPEC_VFMIN, <MODE>mode),
  				   riscv_vector::BINARY_OP, operands);
      DONE;
    }
    [(set_attr "type" "vfminmax")]
  )
  
! (define_insn_and_split "*vfmin_vf_ieee_<mode>"
    [(set (match_operand:V_VLSF 0 "register_operand")
      (unspec:V_VLSF [
        (match_operand:V_VLSF 1 "register_operand")
        (vec_duplicate:V_VLSF
  	(match_operand:<VEL> 2 "register_operand"))
!       ] UNSPEC_VFMIN))]
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode) && can_create_pseudo_p ()"
    "#"
    "&& 1"
    [(const_int 0)]
    {
!     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (UNSPEC_VFMIN, <MODE>mode),
  				   riscv_vector::BINARY_OP, operands);
      DONE;
    }
    [(set_attr "type" "vfminmax")]
  )
--- 2107,2319 ----
    [(set_attr "type" "vfminmax")]
  )
  
! (define_insn_and_split "*v<ieee_fmaxmin_op>_vf_<mode>"
    [(set (match_operand:V_VLSF 0 "register_operand")
      (unspec:V_VLSF [
        (vec_duplicate:V_VLSF
  	(match_operand:<VEL> 2 "register_operand"))
        (match_operand:V_VLSF 1 "register_operand")
!       ] UNSPEC_VFMAXMIN))]
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode) && can_create_pseudo_p ()"
    "#"
    "&& 1"
    [(const_int 0)]
    {
!     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (<IEEE_FMAXMIN_OP>,
! 							 <MODE>mode),
  				   riscv_vector::BINARY_OP, operands);
      DONE;
    }
    [(set_attr "type" "vfminmax")]
  )
  
! (define_insn_and_split "*v<ieee_fmaxmin_op>_vf_<mode>"
    [(set (match_operand:V_VLSF 0 "register_operand")
      (unspec:V_VLSF [
        (match_operand:V_VLSF 1 "register_operand")
        (vec_duplicate:V_VLSF
  	(match_operand:<VEL> 2 "register_operand"))
!       ] UNSPEC_VFMAXMIN))]
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode) && can_create_pseudo_p ()"
    "#"
    "&& 1"
    [(const_int 0)]
    {
!     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (<IEEE_FMAXMIN_OP>,
! 							 <MODE>mode),
  				   riscv_vector::BINARY_OP, operands);
      DONE;
    }
    [(set_attr "type" "vfminmax")]
  )
+ 
+ ;; vfwmul.vf
+ (define_insn_and_split "*vfwmul_vf_<mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand")
+     (mult:VWEXTF
+       (float_extend:VWEXTF
+ 	(match_operand:<V_DOUBLE_TRUNC> 1 "register_operand"))
+       (vec_duplicate:VWEXTF
+ 	(float_extend:<VEL>
+ 	  (match_operand:<VSUBEL> 2 "register_operand")))))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_dual_widen_scalar (MULT,
+ 								    <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+ 
+     DONE;
+   }
+   [(set_attr "type" "vfwmul")]
+ )
+ 
+ ;; vfwadd.vf
+ (define_insn_and_split "*vfwadd_vf_<mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand")
+     (plus:VWEXTF
+       (float_extend:VWEXTF
+ 	(match_operand:<V_DOUBLE_TRUNC> 1 "register_operand"))
+       (vec_duplicate:VWEXTF
+ 	(float_extend:<VEL>
+ 	  (match_operand:<VSUBEL> 2 "register_operand")))))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_dual_widen_scalar (PLUS,
+ 								    <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+ 
+     DONE;
+   }
+   [(set_attr "type" "vfwalu")]
+ )
+ 
+ ;; vfwadd.wf
+ (define_insn_and_split "*vfwadd_wf_<mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand")
+     (plus:VWEXTF
+       (vec_duplicate:VWEXTF
+ 	(float_extend:<VEL>
+ 	  (match_operand:<VSUBEL> 2 "register_operand")))
+       (match_operand:VWEXTF 1 "register_operand")))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_single_widen_scalar (PLUS,
+ 								    <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+ 
+     DONE;
+   }
+   [(set_attr "type" "vfwalu")]
+ )
+ 
+ ;; vfwsub.vf
+ (define_insn_and_split "*vfwsub_vf_<mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand")
+     (minus:VWEXTF
+       (float_extend:VWEXTF
+ 	(match_operand:<V_DOUBLE_TRUNC> 1 "register_operand"))
+       (vec_duplicate:VWEXTF
+ 	(float_extend:<VEL>
+ 	  (match_operand:<VSUBEL> 2 "register_operand")))))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_dual_widen_scalar (MINUS,
+ 								    <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+ 
+     DONE;
+   }
+   [(set_attr "type" "vfwalu")]
+ )
+ 
+ ;; vfwsub.wf
+ (define_insn_and_split "*vfwsub_wf_<mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand")
+     (minus:VWEXTF
+       (match_operand:VWEXTF 1 "register_operand")
+       (vec_duplicate:VWEXTF
+ 	(float_extend:<VEL>
+ 	  (match_operand:<VSUBEL> 2 "register_operand")))))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_single_widen_scalar (MINUS,
+ 								      <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+ 
+     DONE;
+   }
+   [(set_attr "type" "vfwalu")]
+ )
+ 
+ ;; vfadd.vf
+ (define_insn_and_split "*vfadd_vf_<mode>"
+   [(set (match_operand:V_VLSF 0 "register_operand")
+     (plus:V_VLSF
+       (vec_duplicate:V_VLSF
+         (match_operand:<VEL> 2 "register_operand"))
+       (match_operand:V_VLSF 1 "register_operand")))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (PLUS, <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+     DONE;
+   }
+   [(set_attr "type" "vfalu")]
+ )
+ 
+ ;; vfsub.vf
+ (define_insn_and_split "*vfsub_vf_<mode>"
+   [(set (match_operand:V_VLSF 0 "register_operand")
+     (minus:V_VLSF
+       (match_operand:V_VLSF 1 "register_operand")
+       (vec_duplicate:V_VLSF
+         (match_operand:<VEL> 2 "register_operand"))))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_scalar (MINUS, <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+     DONE;
+   }
+   [(set_attr "type" "vfalu")]
+ )
+ 
+ ;; vfrsub.vf
+ (define_insn_and_split "*vfrsub_vf_<mode>"
+   [(set (match_operand:V_VLSF 0 "register_operand")
+     (minus:V_VLSF
+       (vec_duplicate:V_VLSF
+         (match_operand:<VEL> 2 "register_operand"))
+       (match_operand:V_VLSF 1 "register_operand")))]
+   "TARGET_VECTOR && can_create_pseudo_p ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+   {
+     riscv_vector::emit_vlmax_insn (code_for_pred_reverse_scalar (MINUS,
+ 								 <MODE>mode),
+ 				   riscv_vector::BINARY_OP_FRM_DYN, operands);
+     DONE;
+   }
+   [(set_attr "type" "vfalu")]
+ )
diff -Nrcpad gcc-16-20250907/gcc/config/riscv/bitmanip.md gcc-16-20250914/gcc/config/riscv/bitmanip.md
*** gcc-16-20250907/gcc/config/riscv/bitmanip.md	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/riscv/bitmanip.md	Sun Sep 14 22:32:08 2025
***************
*** 553,558 ****
--- 553,571 ----
    "<bitmanip_insn>\t%0,%1,%z2"
    [(set_attr "type" "<bitmanip_insn>")])
  
+ ;; Provide a minmax pattern for ifcvt to match.
+ (define_insn "*<bitmanip_minmax_cmp_insn>_cmp_<mode>3"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	(if_then_else:X
+ 	    (bitmanip_minmax_cmp_op
+ 		(match_operand:X 1 "register_operand" "r")
+ 		(match_operand:X 2 "register_operand" "r"))
+ 	    (match_dup 1)
+ 	    (match_dup 2)))]
+   "TARGET_ZBB"
+   "<bitmanip_minmax_cmp_insn>\t%0,%1,%z2"
+   [(set_attr "type" "<bitmanip_minmax_cmp_insn>")])
+ 
  ;; Optimize the common case of a SImode min/max against a constant
  ;; that is safe both for sign- and zero-extension.
  (define_split
diff -Nrcpad gcc-16-20250907/gcc/config/riscv/iterators.md gcc-16-20250914/gcc/config/riscv/iterators.md
*** gcc-16-20250907/gcc/config/riscv/iterators.md	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/riscv/iterators.md	Sun Sep 14 22:32:08 2025
***************
*** 264,269 ****
--- 264,277 ----
  
  (define_code_iterator bitmanip_minmax [smin umin smax umax])
  
+ (define_code_iterator bitmanip_minmax_cmp_op [lt ltu le leu ge geu gt gtu])
+ 
+ ; Map a comparison operator to a min or max.
+ (define_code_attr bitmanip_minmax_cmp_insn [(lt "min") (ltu "minu")
+ 					    (le "min") (leu "minu")
+ 					    (ge "max") (geu "maxu")
+ 					    (gt "max") (gtu "maxu")])
+ 
  (define_code_iterator clz_ctz_pcnt [clz ctz popcount])
  
  (define_code_iterator bitmanip_rotate [rotate rotatert])
diff -Nrcpad gcc-16-20250907/gcc/config/riscv/riscv-selftests.cc gcc-16-20250914/gcc/config/riscv/riscv-selftests.cc
*** gcc-16-20250907/gcc/config/riscv/riscv-selftests.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/riscv/riscv-selftests.cc	Sun Sep 14 22:32:08 2025
*************** run_broadcast_selftests (void)
*** 367,372 ****
--- 367,528 ----
    BROADCAST_TEST (MODE_VECTOR_FLOAT)
  }
  
+ static void
+ test_vectorize_related_mode (machine_mode vec_mode, scalar_mode ele_mode,
+ 			     machine_mode expected)
+ {
+   opt_machine_mode result = riscv_vector::vectorize_related_mode (vec_mode,
+ 								  ele_mode, 0);
+   machine_mode result_mode = result.else_void ();
+   ASSERT_TRUE (result_mode == expected);
+ }
+ 
+ static void
+ run_vectorize_related_mode_vla_selftests (void)
+ {
+   riscv_selftest_arch_abi_setter rv ("rv64imafdcv", ABI_LP64D);
+   enum rvv_max_lmul_enum backup_rvv_max_lmul = rvv_max_lmul;
+   rvv_max_lmul = RVV_M1;
+ 
+   test_vectorize_related_mode (RVVM1QImode, SImode, RVVM1SImode);
+   test_vectorize_related_mode (RVVM2QImode, SImode, RVVM1SImode);
+   test_vectorize_related_mode (RVVM4QImode, SImode, RVVM1SImode);
+   test_vectorize_related_mode (RVVM8QImode, SImode, RVVM1SImode);
+   test_vectorize_related_mode (RVVM8QImode, DImode, RVVM1DImode);
+   test_vectorize_related_mode (RVVM8QImode, QImode, RVVM1QImode);
+   test_vectorize_related_mode (RVVM8QImode, HImode, RVVM1HImode);
+ 
+   rvv_max_lmul = RVV_M2;
+ 
+   test_vectorize_related_mode (RVVM1QImode, SImode, RVVM2SImode);
+   test_vectorize_related_mode (RVVM2QImode, SImode, RVVM2SImode);
+   test_vectorize_related_mode (RVVM4QImode, SImode, RVVM2SImode);
+   test_vectorize_related_mode (RVVM8QImode, SImode, RVVM2SImode);
+   test_vectorize_related_mode (RVVM8QImode, DImode, RVVM2DImode);
+   test_vectorize_related_mode (RVVM8QImode, QImode, RVVM2QImode);
+   test_vectorize_related_mode (RVVM8QImode, HImode, RVVM2HImode);
+ 
+   rvv_max_lmul = RVV_M4;
+ 
+   test_vectorize_related_mode (RVVM1QImode, SImode, RVVM4SImode);
+   test_vectorize_related_mode (RVVM2QImode, SImode, RVVM4SImode);
+   test_vectorize_related_mode (RVVM4QImode, SImode, RVVM4SImode);
+   test_vectorize_related_mode (RVVM8QImode, SImode, RVVM4SImode);
+   test_vectorize_related_mode (RVVM8QImode, DImode, RVVM4DImode);
+   test_vectorize_related_mode (RVVM8QImode, QImode, RVVM4QImode);
+   test_vectorize_related_mode (RVVM8QImode, HImode, RVVM4HImode);
+ 
+   rvv_max_lmul = RVV_M8;
+ 
+   test_vectorize_related_mode (RVVM1QImode, SImode, RVVM4SImode);
+   test_vectorize_related_mode (RVVM2QImode, SImode, RVVM8SImode);
+   test_vectorize_related_mode (RVVM4QImode, SImode, RVVM8SImode);
+   test_vectorize_related_mode (RVVM8QImode, SImode, RVVM8SImode);
+   test_vectorize_related_mode (RVVM8QImode, DImode, RVVM8DImode);
+   test_vectorize_related_mode (RVVM8QImode, QImode, RVVM8QImode);
+   test_vectorize_related_mode (RVVM8QImode, HImode, RVVM8HImode);
+ 
+   rvv_max_lmul = backup_rvv_max_lmul;
+ }
+ 
+ static void
+ run_vectorize_related_mode_vls_rv64gcv_selftests ()
+ {
+   enum rvv_vector_bits_enum backup_rvv_vector_bits = rvv_vector_bits;
+   rvv_vector_bits = RVV_VECTOR_BITS_SCALABLE;
+   riscv_selftest_arch_abi_setter rv ("rv64imafdcv", ABI_LP64D);
+   enum rvv_max_lmul_enum backup_rvv_max_lmul = rvv_max_lmul;
+   rvv_max_lmul = RVV_M1;
+ 
+   test_vectorize_related_mode (  V16QImode, QImode,   V16QImode);
+   test_vectorize_related_mode (  V16QImode, HImode,    V8HImode);
+   test_vectorize_related_mode (  V16QImode, SImode,    V4SImode);
+   test_vectorize_related_mode (  V16QImode, DImode,    V2DImode);
+ 
+   rvv_max_lmul = RVV_M2;
+ 
+   test_vectorize_related_mode (  V32QImode, QImode,   V32QImode);
+   test_vectorize_related_mode (  V32QImode, HImode,   V16HImode);
+   test_vectorize_related_mode (  V32QImode, SImode,    V8SImode);
+   test_vectorize_related_mode (  V32QImode, DImode,    V4DImode);
+ 
+   rvv_max_lmul = RVV_M4;
+ 
+   test_vectorize_related_mode (  V64QImode, QImode,   V64QImode);
+   test_vectorize_related_mode (  V64QImode, HImode,   V32HImode);
+   test_vectorize_related_mode (  V64QImode, SImode,   V16SImode);
+   test_vectorize_related_mode (  V64QImode, DImode,    V8DImode);
+ 
+   rvv_max_lmul = RVV_M8;
+ 
+   test_vectorize_related_mode ( V128QImode, QImode,  V128QImode);
+   test_vectorize_related_mode ( V128QImode, HImode,   V64HImode);
+   test_vectorize_related_mode ( V128QImode, SImode,   V32SImode);
+   test_vectorize_related_mode ( V128QImode, DImode,   V16DImode);
+ 
+   rvv_vector_bits = backup_rvv_vector_bits;
+   rvv_max_lmul = backup_rvv_max_lmul;
+ }
+ 
+ static void
+ run_vectorize_related_mode_vls_rv32gc_zve32x_zvl256b_selftests ()
+ {
+   enum rvv_vector_bits_enum backup_rvv_vector_bits = rvv_vector_bits;
+   rvv_vector_bits = RVV_VECTOR_BITS_SCALABLE;
+   riscv_selftest_arch_abi_setter rv ("rv32gc_zve32x_zvl256b", ABI_ILP32D);
+   enum rvv_max_lmul_enum backup_rvv_max_lmul = rvv_max_lmul;
+   rvv_max_lmul = RVV_M1;
+ 
+   test_vectorize_related_mode (  V32QImode, QImode,   V32QImode);
+   test_vectorize_related_mode (  V32QImode, HImode,   V16HImode);
+   test_vectorize_related_mode (  V32QImode, SImode,    V8SImode);
+   test_vectorize_related_mode (  V32QImode, DImode,    VOIDmode);
+ 
+   test_vectorize_related_mode (  V16QImode, QImode,   V16QImode);
+   test_vectorize_related_mode (  V16QImode, HImode,   V16HImode);
+   test_vectorize_related_mode (  V16QImode, SImode,    V8SImode);
+   test_vectorize_related_mode (  V16QImode, DImode,    VOIDmode);
+ 
+   rvv_max_lmul = RVV_M2;
+ 
+   test_vectorize_related_mode (  V32QImode, QImode,   V32QImode);
+   test_vectorize_related_mode (  V32QImode, HImode,   V32HImode);
+   test_vectorize_related_mode (  V32QImode, SImode,   V16SImode);
+   test_vectorize_related_mode (  V32QImode, DImode,    VOIDmode);
+ 
+   rvv_max_lmul = RVV_M4;
+ 
+   test_vectorize_related_mode ( V128QImode, QImode,  V128QImode);
+   test_vectorize_related_mode ( V128QImode, HImode,   V64HImode);
+   test_vectorize_related_mode ( V128QImode, SImode,   V32SImode);
+   test_vectorize_related_mode ( V128QImode, DImode,    VOIDmode);
+ 
+   rvv_max_lmul = RVV_M8;
+ 
+   test_vectorize_related_mode ( V128QImode, QImode,  V128QImode);
+   test_vectorize_related_mode ( V128QImode, HImode,  V128HImode);
+   test_vectorize_related_mode ( V128QImode, SImode,   V64SImode);
+   test_vectorize_related_mode ( V128QImode, DImode,    VOIDmode);
+ 
+   rvv_vector_bits = backup_rvv_vector_bits;
+   rvv_max_lmul = backup_rvv_max_lmul;
+ 
+ }
+ 
+ static void
+ run_vectorize_related_mode_vls_selftests (void)
+ {
+   run_vectorize_related_mode_vls_rv64gcv_selftests ();
+   run_vectorize_related_mode_vls_rv32gc_zve32x_zvl256b_selftests ();
+ }
+ 
+ static void
+ run_vectorize_related_mode_selftests (void)
+ {
+   run_vectorize_related_mode_vla_selftests ();
+   run_vectorize_related_mode_vls_selftests ();
+ }
+ 
  namespace selftest {
  /* Run all target-specific selftests.  */
  void
*************** riscv_run_selftests (void)
*** 387,392 ****
--- 543,549 ----
      run_poly_int_selftests ();
    run_const_vector_selftests ();
    run_broadcast_selftests ();
+   run_vectorize_related_mode_selftests ();
  }
  } // namespace selftest
  #endif /* #if CHECKING_P */
diff -Nrcpad gcc-16-20250907/gcc/config/riscv/riscv-v.cc gcc-16-20250914/gcc/config/riscv/riscv-v.cc
*** gcc-16-20250907/gcc/config/riscv/riscv-v.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/riscv/riscv-v.cc	Sun Sep 14 22:32:08 2025
*************** can_find_related_mode_p (machine_mode ve
*** 3064,3070 ****
  		     GET_MODE_SIZE (element_mode), nunits))
      return true;
    if (riscv_v_ext_vls_mode_p (vector_mode)
!       && multiple_p (TARGET_MIN_VLEN * TARGET_MAX_LMUL,
  		     GET_MODE_SIZE (element_mode), nunits))
      return true;
    return false;
--- 3064,3070 ----
  		     GET_MODE_SIZE (element_mode), nunits))
      return true;
    if (riscv_v_ext_vls_mode_p (vector_mode)
!       && multiple_p ((TARGET_MIN_VLEN * TARGET_MAX_LMUL) / BITS_PER_UNIT,
  		     GET_MODE_SIZE (element_mode), nunits))
      return true;
    return false;
diff -Nrcpad gcc-16-20250907/gcc/config/riscv/riscv.cc gcc-16-20250914/gcc/config/riscv/riscv.cc
*** gcc-16-20250907/gcc/config/riscv/riscv.cc	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/riscv/riscv.cc	Sun Sep 14 22:32:08 2025
*************** static const struct riscv_tune_param tt_
*** 659,665 ****
    {COSTS_N_INSNS (3), COSTS_N_INSNS (3)},	/* int_mul */
    {COSTS_N_INSNS (13), COSTS_N_INSNS (13)},	/* int_div */
    8,						/* issue_rate */
!   3,						/* branch_cost */
    4,						/* memory_cost */
    4,						/* fmv_cost */
    false,					/* slow_unaligned_access */
--- 659,665 ----
    {COSTS_N_INSNS (3), COSTS_N_INSNS (3)},	/* int_mul */
    {COSTS_N_INSNS (13), COSTS_N_INSNS (13)},	/* int_div */
    8,						/* issue_rate */
!   4,						/* branch_cost */
    4,						/* memory_cost */
    4,						/* fmv_cost */
    false,					/* slow_unaligned_access */
*************** riscv_noce_conversion_profitable_p (rtx_
*** 4641,4649 ****
  {
    struct noce_if_info riscv_if_info = *if_info;
  
-   riscv_if_info.original_cost -= COSTS_N_INSNS (2);
-   riscv_if_info.original_cost += insn_cost (if_info->jump, if_info->speed_p);
- 
    /* Hack alert!  When `noce_try_store_flag_mask' uses `cstore<mode>4'
       to emit a conditional set operation on DImode output it comes up
       with a sequence such as:
--- 4641,4646 ----
*************** riscv_function_ok_for_sibcall (tree decl
*** 11997,12002 ****
--- 11994,12005 ----
    if (cfun->machine->interrupt_handler_p)
      return false;
  
+   /* Don't use sibcall if a non-vector CC function is being called
+      from a vector CC function.  */
+   if ((riscv_cc) crtl->abi->id () == RISCV_CC_V
+       && (riscv_cc) expr_callee_abi (exp).id () != RISCV_CC_V)
+     return false;
+ 
    /* Don't use sibcalls in the large model, because a sibcall instruction
       expanding and a epilogue expanding both use RISCV_PROLOGUE_TEMP
       register.  */
diff -Nrcpad gcc-16-20250907/gcc/config/riscv/tt-ascalon-d8.md gcc-16-20250914/gcc/config/riscv/tt-ascalon-d8.md
*** gcc-16-20250907/gcc/config/riscv/tt-ascalon-d8.md	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/riscv/tt-ascalon-d8.md	Sun Sep 14 22:32:08 2025
***************
*** 285,322 ****
  (define_insn_reservation "tt_ascalon_d8_vec_idiv_half" 16
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vidiv")
!        (eq_attr "mode" "HF"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  (define_insn_reservation "tt_ascalon_d8_vec_idiv_single" 13
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vidiv")
!        (eq_attr "mode" "SF"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  (define_insn_reservation "tt_ascalon_d8_vec_idiv_double" 20
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vidiv")
!        (eq_attr "mode" "DF"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  ;; Vector float divisions and sqrt
  (define_insn_reservation "tt_ascalon_d8_vec_float_divsqrt_half" 11
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vfdiv,vfsqrt")
!        (eq_attr "mode" "HF"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  (define_insn_reservation "tt_ascalon_d8_vec_float_divsqrt_single" 10
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vfdiv,vfsqrt")
!        (eq_attr "mode" "SF"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  (define_insn_reservation "tt_ascalon_d8_vec_float_divsqrt_double" 17
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vfdiv,vfsqrt")
!        (eq_attr "mode" "DF"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  ;; Vector mask operations.
--- 285,322 ----
  (define_insn_reservation "tt_ascalon_d8_vec_idiv_half" 16
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vidiv")
!        (eq_attr "sew" "16"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  (define_insn_reservation "tt_ascalon_d8_vec_idiv_single" 13
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vidiv")
!        (eq_attr "sew" "32"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  (define_insn_reservation "tt_ascalon_d8_vec_idiv_double" 20
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vidiv")
!        (eq_attr "sew" "64"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  ;; Vector float divisions and sqrt
  (define_insn_reservation "tt_ascalon_d8_vec_float_divsqrt_half" 11
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vfdiv,vfsqrt")
!        (eq_attr "sew" "16"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  (define_insn_reservation "tt_ascalon_d8_vec_float_divsqrt_single" 10
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vfdiv,vfsqrt")
!        (eq_attr "sew" "32"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  (define_insn_reservation "tt_ascalon_d8_vec_float_divsqrt_double" 17
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vfdiv,vfsqrt")
!        (eq_attr "sew" "64"))
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  ;; Vector mask operations.
diff -Nrcpad gcc-16-20250907/gcc/config/riscv/vector.md gcc-16-20250914/gcc/config/riscv/vector.md
*** gcc-16-20250907/gcc/config/riscv/vector.md	Sun Sep  7 22:32:58 2025
--- gcc-16-20250914/gcc/config/riscv/vector.md	Sun Sep 14 22:32:08 2025
***************
*** 6441,6448 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_<optab><mode>_scalar"
!   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
! 	(if_then_else:VF
  	  (unspec:<VM>
  	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
  	     (match_operand 5 "vector_length_operand"    "rvl,rvl,rvl,rvl")
--- 6441,6448 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "@pred_<optab><mode>_scalar"
!   [(set (match_operand:V_VLSF 0 "register_operand"           "=vd, vd, vr, vr")
! 	(if_then_else:V_VLSF
  	  (unspec:<VM>
  	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
  	     (match_operand 5 "vector_length_operand"    "rvl,rvl,rvl,rvl")
***************
*** 6453,6463 ****
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)
  	     (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE)
! 	  (non_commutative_float_binop:VF
! 	    (match_operand:VF 3 "register_operand"       " vr, vr, vr, vr")
! 	    (vec_duplicate:VF
  	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f")))
! 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vf<insn>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "<float_insn_type>")
--- 6453,6463 ----
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)
  	     (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE)
! 	  (non_commutative_float_binop:V_VLSF
! 	    (match_operand:V_VLSF 3 "register_operand"       " vr, vr, vr, vr")
! 	    (vec_duplicate:V_VLSF
  	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f")))
! 	  (match_operand:V_VLSF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vf<insn>.vf\t%0,%3,%4%p1"
    [(set_attr "type" "<float_insn_type>")
***************
*** 7250,7257 ****
  	  (any_widen_binop:VWEXTF
  	    (float_extend:VWEXTF
  	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
! 	    (float_extend:VWEXTF
! 	      (vec_duplicate:<V_DOUBLE_TRUNC>
  		(match_operand:<VSUBEL> 4 "register_operand"       "    f,    f"))))
  	  (match_operand:VWEXTF 2 "vector_merge_operand"           "   vu,    0")))]
    "TARGET_VECTOR"
--- 7250,7257 ----
  	  (any_widen_binop:VWEXTF
  	    (float_extend:VWEXTF
  	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
! 	    (vec_duplicate:VWEXTF
! 	      (float_extend:<VEL>
  		(match_operand:<VSUBEL> 4 "register_operand"       "    f,    f"))))
  	  (match_operand:VWEXTF 2 "vector_merge_operand"           "   vu,    0")))]
    "TARGET_VECTOR"
***************
*** 7325,7334 ****
  	     (reg:SI VTYPE_REGNUM)
  	     (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE)
  	  (plus_minus:VWEXTF
! 	    (match_operand:VWEXTF 3 "register_operand"            " vr, vr, vr, vr")
! 	    (float_extend:VWEXTF
! 	      (vec_duplicate:<V_DOUBLE_TRUNC>
! 		(match_operand:<VSUBEL> 4 "register_operand"      "  f,  f,  f,  f"))))
  	  (match_operand:VWEXTF 2 "vector_merge_operand"          " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vfw<insn>.wf\t%0,%3,%4%p1"
--- 7325,7334 ----
  	     (reg:SI VTYPE_REGNUM)
  	     (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE)
  	  (plus_minus:VWEXTF
! 	    (vec_duplicate:VWEXTF
! 	      (float_extend:<VEL>
! 		(match_operand:<VSUBEL> 4 "register_operand"      "  f,  f,  f,  f")))
! 	    (match_operand:VWEXTF 3 "register_operand"            " vr, vr, vr, vr"))
  	  (match_operand:VWEXTF 2 "vector_merge_operand"          " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vfw<insn>.wf\t%0,%3,%4%p1"
diff -Nrcpad gcc-16-20250907/gcc/config/s390/s390.h gcc-16-20250914/gcc/config/s390/s390.h
*** gcc-16-20250907/gcc/config/s390/s390.h	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/config/s390/s390.h	Sun Sep 14 22:32:08 2025
*************** do {									\
*** 1001,1010 ****
  #define FUNCTION_MODE QImode
  
  /* Specify the value which is used when clz operand is zero.  */
! #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 64, 1)
  
  /* Specify the value which is used when ctz operand is zero.  */
! #define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 64, 1)
  
  /* Machine-specific symbol_ref flags.  */
  #define SYMBOL_FLAG_ALIGN_SHIFT	  SYMBOL_FLAG_MACH_DEP_SHIFT
--- 1001,1010 ----
  #define FUNCTION_MODE QImode
  
  /* Specify the value which is used when clz operand is zero.  */
! #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = GET_MODE_PRECISION (MODE), 2)
  
  /* Specify the value which is used when ctz operand is zero.  */
! #define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = 64, 2)
  
  /* Machine-specific symbol_ref flags.  */
  #define SYMBOL_FLAG_ALIGN_SHIFT	  SYMBOL_FLAG_MACH_DEP_SHIFT
diff -Nrcpad gcc-16-20250907/gcc/config/s390/s390.md gcc-16-20250914/gcc/config/s390/s390.md
*** gcc-16-20250907/gcc/config/s390/s390.md	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/config/s390/s390.md	Sun Sep 14 22:32:08 2025
***************
*** 9738,9743 ****
--- 9738,9756 ----
    "flogr\t%0,%1"
    [(set_attr "op_type"  "RRE")])
  
+ (define_expand "clzsi2"
+   [(match_operand:SI 0 "register_operand" "")
+    (match_operand:SI 1 "register_operand" "")]
+   "TARGET_EXTIMM && TARGET_ZARCH"
+ {
+   rtx extreg = gen_reg_rtx (DImode);
+   rtx clzreg = gen_reg_rtx (DImode);
+   emit_insn (gen_zero_extendsidi2 (extreg, operands[1]));
+   emit_insn (gen_clzdi2 (clzreg, extreg));
+   rtx truncreg = gen_lowpart (SImode, clzreg);
+   emit_insn (gen_addsi3 (operands[0], truncreg, GEN_INT (-32)));
+   DONE;
+ })
  
  ;;
  ;; Count Trailing Zeros.
***************
*** 9750,9755 ****
--- 9763,9778 ----
    "ctzg\t%0,%1"
    [(set_attr "op_type" "RRE")])
  
+ (define_expand "ctzsi2"
+   [(set (match_dup 2)
+ 	(zero_extend:DI (match_operand:SI 1 "register_operand" "")))
+    (set (match_dup 3) (ctz:DI (match_dup 2)))
+    (set (match_operand:SI 0 "register_operand" "") (subreg:SI (match_dup 3) 4))]
+   "TARGET_Z17 && TARGET_64BIT"
+ {
+   operands[2] = gen_reg_rtx (DImode);
+   operands[3] = gen_reg_rtx (DImode);
+ })
  
  ;;
  ;;- Rotate instructions.
diff -Nrcpad gcc-16-20250907/gcc/config/s390/vector.md gcc-16-20250914/gcc/config/s390/vector.md
*** gcc-16-20250907/gcc/config/s390/vector.md	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/config/s390/vector.md	Sun Sep 14 22:32:08 2025
***************
*** 697,709 ****
  
  ; vlgvb, vlgvh, vlgvf, vlgvg
  (define_insn "*vec_extract<mode>_plus"
!   [(set (match_operand:<non_vec>       0 "nonimmediate_operand" "=d")
  	(vec_select:<non_vec>
! 	 (match_operand:V              1 "register_operand"      "v")
! 	 (plus:SI (match_operand:SI    2 "nonmemory_operand"     "a")
! 	  (parallel [(match_operand:SI 3 "const_int_operand"     "n")]))))]
!   "TARGET_VX"
!   "vlgv<bhfgq>\t%0,%v1,%Y3(%2)"
    [(set_attr "op_type" "VRS")])
  
  (define_expand "vec_init<mode><non_vec_l>"
--- 697,711 ----
  
  ; vlgvb, vlgvh, vlgvf, vlgvg
  (define_insn "*vec_extract<mode>_plus"
!   [(set (match_operand:<non_vec>  0 "register_operand" "=d")
  	(vec_select:<non_vec>
! 	  (match_operand:V        1 "register_operand"  "v")
! 	    (parallel
! 	      [(plus:SI
! 		(match_operand:SI 2 "register_operand"  "a")
! 		(match_operand:SI 3 "const_int_operand" "J"))])))]
!   "TARGET_VX && UINTVAL (operands[3]) < 4096"
!   "vlgv<bhfgq>\t%0,%v1,%3(%2)"
    [(set_attr "op_type" "VRS")])
  
  (define_expand "vec_init<mode><non_vec_l>"
***************
*** 751,756 ****
--- 753,771 ----
    [(set_attr "op_type" "VRS")
     (set_attr "mnemonic" "vlgv<bhfgq>")])
  
+ (define_insn "*vec_extract<mode>_plus_zero_extend"
+   [(set (match_operand:DI           0 "register_operand" "=d")
+ 	(zero_extend:DI
+ 	  (vec_select:<non_vec>
+ 	    (match_operand:VLGV_DI  1 "register_operand"  "v")
+ 	      (parallel
+ 		[(plus:SI
+ 		  (match_operand:SI 2 "register_operand"  "a")
+ 		  (match_operand:SI 3 "const_int_operand" "J"))]))))]
+   "TARGET_VX && UINTVAL (operands[3]) < 4096"
+   "vlgv<bhfgq>\t%0,%v1,%3(%2)"
+   [(set_attr "op_type" "VRS")])
+ 
  (define_insn "*vec_vllezlf<mode>"
    [(set (match_operand:V_HW_4              0 "register_operand" "=v")
  	(vec_concat:V_HW_4
diff -Nrcpad gcc-16-20250907/gcc/config/xtensa/xtensa.h gcc-16-20250914/gcc/config/xtensa/xtensa.h
*** gcc-16-20250907/gcc/config/xtensa/xtensa.h	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/config/xtensa/xtensa.h	Sun Sep 14 22:32:08 2025
*************** enum reg_class
*** 401,407 ****
  #define INDEX_REG_CLASS NO_REGS
  
  /* The small_register_classes_for_mode_p hook must always return true for
!    Xtrnase, because all of the 16 AR registers may be explicitly used in
     the RTL, as either incoming or outgoing arguments.  */
  #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P hook_bool_mode_true
  
--- 401,407 ----
  #define INDEX_REG_CLASS NO_REGS
  
  /* The small_register_classes_for_mode_p hook must always return true for
!    Xtensa, because all of the 16 AR registers may be explicitly used in
     the RTL, as either incoming or outgoing arguments.  */
  #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P hook_bool_mode_true
  
diff -Nrcpad gcc-16-20250907/gcc/cp/ChangeLog gcc-16-20250914/gcc/cp/ChangeLog
*** gcc-16-20250907/gcc/cp/ChangeLog	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/cp/ChangeLog	Sun Sep 14 22:32:08 2025
***************
*** 1,3 ****
--- 1,92 ----
+ 2025-09-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121795
+ 	* pt.cc (unify) <case PACK_INDEX_TYPE>: New non-deduced context
+ 	case.
+ 
+ 2025-09-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/121893
+ 	* name-lookup.cc (name_lookup::adl_namespace_fns): Unwrap the
+ 	STAT_HACK also when on_inst_path.
+ 
+ 2025-09-11  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c++/121889
+ 	* decl2.cc (cplus_decl_attributes): Don't upgrade TLS model if
+ 	TLS model isn't set yet.
+ 
+ 2025-09-10  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/121859
+ 	* constraint.cc (maybe_diagnose_standard_trait): Check if expr
+ 	is non-null.
+ 
+ 2025-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* mangle.cc (write_real_cst): Mangle Intel/Motorola extended
+ 	80-bit formats using 20 hex digits instead of 24 or 32.
+ 
+ 2025-09-09  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/99682
+ 	PR c++/121808
+ 	* module.cc (class module_state): Add comment to 'parent'.
+ 	(module_state::check_not_purview): Rename to...
+ 	(module_state::check_circular_import): ...this.  Only handle
+ 	interface dependencies, adjust diagnostic message.
+ 	(module_state::read_imports): Use new function.  Pass location
+ 	of import as from_loc instead of the module location.
+ 	(module_state::do_import): Set module_p when importing the
+ 	primary interface for the current module.
+ 	(import_module): Split out check for imports in own unit.
+ 	Remove incorrect assertion.
+ 	(preprocess_module): Don't overwrite module-decl location with
+ 	later import.
+ 
+ 2025-09-09  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	* module.cc (this_module): New function.
+ 	(import_entity_module): Use it.
+ 	(trees_out::decl_node): Likewise.
+ 	(get_module): Likewise.
+ 	(module_state::check_not_purview): Likewise.
+ 	(module_state::read_imports): Likewise.
+ 	(module_state::read_using_directives): Likewise.
+ 	(module_state::read_initial): Likewise.
+ 	(get_import_bitmap): Likewise.
+ 	(module_may_redeclare): Likewise.
+ 	(direct_import): Likewise.
+ 	(declare_module): Likewise.
+ 	(name_pending_imports): Likewise.
+ 	(preprocess_module): Likewise.
+ 	(finish_module_processing): Likewise.
+ 	(late_finish_module): Likewise.
+ 
+ 2025-09-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121779
+ 	* tree.cc (build_min_non_dep_op_overload): Handle comparison
+ 	operator expressions rewritten from a <=> that returns a
+ 	non-class type.
+ 
+ 2025-09-09  Matthias Kretz  <m.kretz@gsi.de>
+ 
+ 	PR c++/121801
+ 	* mangle.cc (write_real_cst): Handle 16-bit real and assert
+ 	that reals have 16 bits or a multiple of 32 bits.
+ 
+ 2025-09-07  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c++/107393
+ 	* decl.cc (grokvardecl): Set a tentative TLS model which will be
+ 	updated by cplus_decl_attributes later.
+ 	* decl2.cc (cplus_decl_attributes): Update TLS model with the
+ 	default TLS access model if the default TLS access model is
+ 	stronger.
+ 	* pt.cc (tsubst_decl): Set TLS model only after processing a
+ 	variable.
+ 
  2025-09-06  Nathaniel Shead  <nathanieloshead@gmail.com>
  
  	PR c++/121702
diff -Nrcpad gcc-16-20250907/gcc/cp/constraint.cc gcc-16-20250914/gcc/cp/constraint.cc
*** gcc-16-20250907/gcc/cp/constraint.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/cp/constraint.cc	Sun Sep 14 22:32:08 2025
*************** maybe_diagnose_standard_trait (location_
*** 3360,3366 ****
  	}
      }
  
!   if (TREE_CODE (expr) == TRAIT_EXPR)
      {
        diagnose_trait_expr (loc, expr, args);
        return true;
--- 3360,3366 ----
  	}
      }
  
!   if (expr && TREE_CODE (expr) == TRAIT_EXPR)
      {
        diagnose_trait_expr (loc, expr, args);
        return true;
diff -Nrcpad gcc-16-20250907/gcc/cp/decl2.cc gcc-16-20250914/gcc/cp/decl2.cc
*** gcc-16-20250907/gcc/cp/decl2.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/cp/decl2.cc	Sun Sep 14 22:32:08 2025
*************** cplus_decl_attributes (tree *decl, tree
*** 2018,2026 ****
      {
        // tls_model attribute can set a stronger TLS access model.
        tls_model model = DECL_TLS_MODEL (*decl);
!       tls_model default_model = decl_default_tls_model (*decl);
!       if (default_model > model)
! 	set_decl_tls_model (*decl, default_model);
      }
  }
  
--- 2018,2030 ----
      {
        // tls_model attribute can set a stronger TLS access model.
        tls_model model = DECL_TLS_MODEL (*decl);
!       // Don't upgrade TLS model if TLS model isn't set yet.
!       if (model != TLS_MODEL_NONE)
! 	{
! 	  tls_model default_model = decl_default_tls_model (*decl);
! 	  if (default_model > model)
! 	    set_decl_tls_model (*decl, default_model);
! 	}
      }
  }
  
diff -Nrcpad gcc-16-20250907/gcc/cp/mangle.cc gcc-16-20250914/gcc/cp/mangle.cc
*** gcc-16-20250907/gcc/cp/mangle.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/cp/mangle.cc	Sun Sep 14 22:32:08 2025
*************** write_real_cst (const tree value)
*** 2176,2186 ****
    int i, limit, dir;
  
    tree type = TREE_TYPE (value);
!   int words = GET_MODE_BITSIZE (SCALAR_FLOAT_TYPE_MODE (type)) / 32;
  
    real_to_target (target_real, &TREE_REAL_CST (value),
  		  TYPE_MODE (type));
  
    /* The value in target_real is in the target word order,
       so we must write it out backward if that happens to be
       little-endian.  write_number cannot be used, it will
--- 2176,2199 ----
    int i, limit, dir;
  
    tree type = TREE_TYPE (value);
!   int bits = GET_MODE_BITSIZE (SCALAR_FLOAT_TYPE_MODE (type));
!   int words = bits / 32;
  
    real_to_target (target_real, &TREE_REAL_CST (value),
  		  TYPE_MODE (type));
  
+   if (words == 0)
+     {
+       /* _Float16 and std::bfloat16_t are the only supported types smaller than
+          32 bits.  */
+       gcc_assert (bits == 16);
+       sprintf (buffer, "%04lx", (unsigned long) target_real[0]);
+       write_chars (buffer, 4);
+       return;
+     }
+ 
+   gcc_assert (bits % 32 == 0);
+ 
    /* The value in target_real is in the target word order,
       so we must write it out backward if that happens to be
       little-endian.  write_number cannot be used, it will
*************** write_real_cst (const tree value)
*** 2190,2195 ****
--- 2203,2231 ----
    else
      i = words - 1, limit = -1, dir = -1;
  
+   if (GET_MODE_PRECISION (SCALAR_FLOAT_TYPE_MODE (type)) == 80
+       && abi_check (21))
+     {
+       /* For -fabi-version=21 and above mangle
+ 	 Intel/Motorola extended format 1.0L as
+ 	 3fff8000000000000000
+ 	 rather than the previous
+ 	 0000000000003fff8000000000000000 (x86_64)
+ 	 00003fff8000000000000000 (ia32)
+ 	 3fff00008000000000000000 (m68k -mc68020)
+ 	 i.e. without any embedded padding bits.  */
+       if (words == 4)
+ 	i += dir;
+       else
+ 	gcc_assert (words == 3);
+       unsigned long val = (unsigned long) target_real[i];
+       if (REAL_MODE_FORMAT (SCALAR_FLOAT_TYPE_MODE (type))->signbit_ro == 95)
+ 	val >>= 16;
+       sprintf (buffer, "%04lx", val);
+       write_chars (buffer, 4);
+       i += dir;
+     }
+ 
    for (; i != limit; i += dir)
      {
        sprintf (buffer, "%08lx", (unsigned long) target_real[i]);
diff -Nrcpad gcc-16-20250907/gcc/cp/module.cc gcc-16-20250914/gcc/cp/module.cc
*** gcc-16-20250907/gcc/cp/module.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/cp/module.cc	Sun Sep 14 22:32:08 2025
*************** class GTY((chain_next ("%h.parent"), for
*** 3667,3674 ****
    bitmap imports;	/* Transitive modules we're importing.  */
    bitmap exports;	/* Subset of that, that we're exporting.  */
  
    module_state *parent;
!   tree name;		/* Name of the module.  */
  
    slurping *slurp;	/* Data for loading.  */
  
--- 3667,3678 ----
    bitmap imports;	/* Transitive modules we're importing.  */
    bitmap exports;	/* Subset of that, that we're exporting.  */
  
+   /* For a named module interface A.B, parent is A and name is B.
+      For a partition M:P, parent is M and name is P.
+      For an implementation unit I, parent is I's interface and name is NULL.
+      Otherwise parent is NULL and name will be the flatname.  */
    module_state *parent;
!   tree name;
  
    slurping *slurp;	/* Data for loading.  */
  
*************** class GTY((chain_next ("%h.parent"), for
*** 3782,3788 ****
    }
  
   public:
!   bool check_not_purview (location_t loc);
  
   public:
    void mangle (bool include_partition);
--- 3786,3792 ----
    }
  
   public:
!   bool check_circular_import (location_t loc);
  
   public:
    void mangle (bool include_partition);
*************** static unsigned lazy_hard_limit; /* Hard
*** 4097,4102 ****
--- 4101,4113 ----
     current TU; imports start at 1.  */
  static GTY(()) vec<module_state *, va_gc> *modules;
  
+ /* Get the module state for the current TU's module.  */
+ 
+ static module_state *
+ this_module() {
+   return (*modules)[0];
+ }
+ 
  /* Hash of module state, findable by {name, parent}. */
  static GTY(()) hash_table<module_state_hash> *modules_hash;
  
*************** import_entity_module (unsigned index)
*** 4247,4253 ****
  {
    if (index > ~(~0u >> 1))
      /* This is an index for an exported entity.  */
!     return (*modules)[0];
  
    /* Do not include the current TU (not an off-by-one error).  */
    unsigned pos = 1;
--- 4258,4264 ----
  {
    if (index > ~(~0u >> 1))
      /* This is an index for an exported entity.  */
!     return this_module ();
  
    /* Do not include the current TU (not an off-by-one error).  */
    unsigned pos = 1;
*************** trees_out::decl_node (tree decl, walk_ki
*** 9394,9400 ****
    if (streaming_p () && dump (dumper::TREE))
      {
        char const *kind = "import";
!       module_state *from = (*modules)[0];
        if (dep->is_import ())
  	/* Rediscover the unremapped index.  */
  	from = import_entity_module (import_entity_index (decl));
--- 9405,9411 ----
    if (streaming_p () && dump (dumper::TREE))
      {
        char const *kind = "import";
!       module_state *from = this_module ();
        if (dep->is_import ())
  	/* Rediscover the unremapped index.  */
  	from = import_entity_module (import_entity_index (decl));
*************** get_module (tree name, module_state *par
*** 15890,15896 ****
    if (partition)
      {
        if (!parent)
! 	parent = get_primary ((*modules)[0]);
  
        if (!parent->is_partition () && !parent->flatname)
  	parent->set_flatname ();
--- 15901,15907 ----
    if (partition)
      {
        if (!parent)
! 	parent = get_primary (this_module ());
  
        if (!parent->is_partition () && !parent->flatname)
  	parent->set_flatname ();
*************** recursive_lazy (unsigned snum = ~0u)
*** 15989,16008 ****
    return false;
  }
  
! /* If THIS is the current purview, issue an import error and return false.  */
  
  bool
! module_state::check_not_purview (location_t from)
  {
!   module_state *imp = (*modules)[0];
!   if (imp && !imp->name)
!     imp = imp->parent;
!   if (imp == this)
      {
        /* Cannot import the current module.  */
        auto_diagnostic_group d;
!       error_at (from, "cannot import module in its own purview");
!       inform (loc, "module %qs declared here", get_flatname ());
        return false;
      }
    return true;
--- 16000,16018 ----
    return false;
  }
  
! /* If THIS has an interface dependency on itself, report an error and
!    return false.  */
  
  bool
! module_state::check_circular_import (location_t from)
  {
!   if (this == this_module ())
      {
        /* Cannot import the current module.  */
        auto_diagnostic_group d;
!       error_at (from, "module %qs depends on itself", get_flatname ());
!       if (!header_module_p ())
! 	inform (loc, "module %qs declared here", get_flatname ());
        return false;
      }
    return true;
*************** module_state::read_imports (bytes_in &se
*** 16295,16301 ****
  	 module as this TU.  */
        if (imp && imp->is_partition () &&
  	  (!named_module_p ()
! 	   || (get_primary ((*modules)[0]) != get_primary (imp))))
  	imp = NULL;
  
        if (!imp)
--- 16305,16311 ----
  	 module as this TU.  */
        if (imp && imp->is_partition () &&
  	  (!named_module_p ()
! 	   || (get_primary (this_module ()) != get_primary (imp))))
  	imp = NULL;
  
        if (!imp)
*************** module_state::read_imports (bytes_in &se
*** 16313,16319 ****
  	  if (sec.get_overrun ())
  	    break;
  
! 	  if (!imp->check_not_purview (loc))
  	    continue;
  
  	  if (imp->loadedness == ML_NONE)
--- 16323,16329 ----
  	  if (sec.get_overrun ())
  	    break;
  
! 	  if (!imp->check_circular_import (floc))
  	    continue;
  
  	  if (imp->loadedness == ML_NONE)
*************** module_state::write_using_directives (el
*** 17327,17333 ****
  bool
  module_state::read_using_directives (unsigned num)
  {
!   if (!bitmap_bit_p ((*modules)[0]->imports, mod))
      {
        dump () && dump ("Ignoring using-directives because module %M "
  		       "is not visible in this TU", this);
--- 17337,17343 ----
  bool
  module_state::read_using_directives (unsigned num)
  {
!   if (!bitmap_bit_p (this_module ()->imports, mod))
      {
        dump () && dump ("Ignoring using-directives because module %M "
  		       "is not visible in this TU", this);
*************** module_state::read_initial (cpp_reader *
*** 20550,20556 ****
  
    /* Determine the module's number.  */
    gcc_checking_assert (mod == MODULE_UNKNOWN);
!   gcc_checking_assert (this != (*modules)[0]);
  
    {
      /* Allocate space in the entities array now -- that array must be
--- 20560,20566 ----
  
    /* Determine the module's number.  */
    gcc_checking_assert (mod == MODULE_UNKNOWN);
!   gcc_checking_assert (this != this_module ());
  
    {
      /* Allocate space in the entities array now -- that array must be
*************** module_name (unsigned ix, bool header_ok
*** 20901,20907 ****
  bitmap
  get_import_bitmap ()
  {
!   return (*modules)[0]->imports;
  }
  
  /* Return the visible imports and path of instantiation for an
--- 20911,20917 ----
  bitmap
  get_import_bitmap ()
  {
!   return this_module ()->imports;
  }
  
  /* Return the visible imports and path of instantiation for an
*************** module_may_redeclare (tree olddecl, tree
*** 21141,21147 ****
      // FIXME: Should we be checking this in more places on the scope chain?
      return true;
  
!   module_state *old_mod = (*modules)[0];
    module_state *new_mod = old_mod;
  
    tree old_origin = get_originating_module_decl (decl);
--- 21151,21157 ----
      // FIXME: Should we be checking this in more places on the scope chain?
      return true;
  
!   module_state *old_mod = this_module ();
    module_state *new_mod = old_mod;
  
    tree old_origin = get_originating_module_decl (decl);
*************** module_state::do_import (cpp_reader *rea
*** 21528,21533 ****
--- 21538,21549 ----
  {
    gcc_assert (global_namespace == current_scope () && loadedness == ML_NONE);
  
+   /* If this TU is a partition of the module we're importing,
+      that module is the primary module interface.  */
+   if (this_module ()->is_partition ()
+       && this == get_primary (this_module ()))
+     module_p = true;
+ 
    loc = linemap_module_loc (line_table, loc, get_flatname ());
  
    if (lazy_open >= lazy_limit)
*************** direct_import (module_state *import, cpp
*** 21781,21787 ****
      if (!import->do_import (reader, true))
        gcc_unreachable ();
  
!   (*modules)[0]->set_import (import, import->exported_p);
  
    if (import->loadedness < ML_LANGUAGE)
      {
--- 21797,21803 ----
      if (!import->do_import (reader, true))
        gcc_unreachable ();
  
!   this_module ()->set_import (import, import->exported_p);
  
    if (import->loadedness < ML_LANGUAGE)
      {
*************** void
*** 21800,21806 ****
  import_module (module_state *import, location_t from_loc, bool exporting_p,
  	       tree, cpp_reader *reader)
  {
!   if (!import->check_not_purview (from_loc))
      return;
  
    if (!import->is_header () && current_lang_depth ())
--- 21816,21832 ----
  import_module (module_state *import, location_t from_loc, bool exporting_p,
  	       tree, cpp_reader *reader)
  {
!   /* A non-partition implementation unit has no name.  */
!   if (!this_module ()->name && this_module ()->parent == import)
!     {
!       auto_diagnostic_group d;
!       error_at (from_loc, "import of %qs within its own implementation unit",
! 		import->get_flatname());
!       inform (import->loc, "module declared here");
!       return;
!     }
! 
!   if (!import->check_circular_import (from_loc))
      return;
  
    if (!import->is_header () && current_lang_depth ())
*************** import_module (module_state *import, loc
*** 21822,21828 ****
        from_loc = ordinary_loc_of (line_table, from_loc);
        linemap_module_reparent (line_table, import->loc, from_loc);
      }
!   gcc_checking_assert (!import->module_p);
    gcc_checking_assert (import->is_direct () && import->has_location ());
  
    direct_import (import, reader);
--- 21848,21854 ----
        from_loc = ordinary_loc_of (line_table, from_loc);
        linemap_module_reparent (line_table, import->loc, from_loc);
      }
! 
    gcc_checking_assert (import->is_direct () && import->has_location ());
  
    direct_import (import, reader);
*************** declare_module (module_state *module, lo
*** 21837,21843 ****
  {
    gcc_assert (global_namespace == current_scope ());
  
!   module_state *current = (*modules)[0];
    if (module_purview_p () || module->loadedness > ML_CONFIG)
      {
        auto_diagnostic_group d;
--- 21863,21869 ----
  {
    gcc_assert (global_namespace == current_scope ());
  
!   module_state *current = this_module ();
    if (module_purview_p () || module->loadedness > ML_CONFIG)
      {
        auto_diagnostic_group d;
*************** declare_module (module_state *module, lo
*** 21853,21859 ****
        return;
      }
  
!   gcc_checking_assert (module->module_p);
    gcc_checking_assert (module->is_direct () && module->has_location ());
  
    /* Yer a module, 'arry.  */
--- 21879,21885 ----
        return;
      }
  
!   gcc_checking_assert (module->is_module ());
    gcc_checking_assert (module->is_direct () && module->has_location ());
  
    /* Yer a module, 'arry.  */
*************** name_pending_imports (cpp_reader *reader
*** 22225,22232 ****
        gcc_checking_assert (module->is_direct ());
        if (!module->filename && !module->visited_p)
  	{
! 	  bool export_p = (module->module_p
! 			   && (module->is_partition () || module->exported_p));
  
  	  Cody::Flags flags = Cody::Flags::None;
  	  if (flag_preprocess_only
--- 22251,22259 ----
        gcc_checking_assert (module->is_direct ());
        if (!module->filename && !module->visited_p)
  	{
! 	  bool export_p = (module->is_module ()
! 			   && (module->is_partition ()
! 			       || module->is_exported ()));
  
  	  Cody::Flags flags = Cody::Flags::None;
  	  if (flag_preprocess_only
*************** preprocess_module (module_state *module,
*** 22314,22320 ****
  	linemap_module_reparent (line_table, module->loc, from_loc);
        else
  	{
! 	  module->loc = from_loc;
  	  if (!module->flatname)
  	    module->set_flatname ();
  	}
--- 22341,22350 ----
  	linemap_module_reparent (line_table, module->loc, from_loc);
        else
  	{
! 	  /* Don't overwrite the location if we're importing ourselves
! 	     after already having seen a module-declaration.  */
! 	  if (!(is_import && module->is_module ()))
! 	    module->loc = from_loc;
  	  if (!module->flatname)
  	    module->set_flatname ();
  	}
*************** preprocess_module (module_state *module,
*** 22357,22364 ****
  	  for (unsigned ix = 0; ix != pending_imports->length (); ix++)
  	    {
  	      auto *import = (*pending_imports)[ix];
! 	      if (!(import->module_p
! 		    && (import->is_partition () || import->exported_p))
  		  && import->loadedness == ML_NONE
  		  && (import->is_header () || !flag_preprocess_only))
  		{
--- 22387,22394 ----
  	  for (unsigned ix = 0; ix != pending_imports->length (); ix++)
  	    {
  	      auto *import = (*pending_imports)[ix];
! 	      if (!(import->is_module ()
! 		    && (import->is_partition () || import->is_exported ()))
  		  && import->loadedness == ML_NONE
  		  && (import->is_header () || !flag_preprocess_only))
  		{
*************** finish_module_processing (cpp_reader *re
*** 22757,22763 ****
    if (header_module_p ())
      module_kind &= ~MK_EXPORTING;
  
!   if (!modules || !(*modules)[0]->name)
      {
        if (flag_module_only)
  	warning (0, "%<-fmodule-only%> used for non-interface");
--- 22787,22793 ----
    if (header_module_p ())
      module_kind &= ~MK_EXPORTING;
  
!   if (!modules || !this_module ()->name)
      {
        if (flag_module_only)
  	warning (0, "%<-fmodule-only%> used for non-interface");
*************** finish_module_processing (cpp_reader *re
*** 22776,22782 ****
        /* We write to a tmpname, and then atomically rename.  */
        char *cmi_name = NULL;
        char *tmp_name = NULL;
!       module_state *state = (*modules)[0];
  
        unsigned n = dump.push (state);
        state->announce ("creating");
--- 22806,22812 ----
        /* We write to a tmpname, and then atomically rename.  */
        char *cmi_name = NULL;
        char *tmp_name = NULL;
!       module_state *state = this_module ();
  
        unsigned n = dump.push (state);
        state->announce ("creating");
*************** late_finish_module (cpp_reader *reader,
*** 22860,22866 ****
  {
    timevar_start (TV_MODULE_EXPORT);
  
!   module_state *state = (*modules)[0];
    unsigned n = dump.push (state);
    state->announce ("finishing");
  
--- 22890,22896 ----
  {
    timevar_start (TV_MODULE_EXPORT);
  
!   module_state *state = this_module ();
    unsigned n = dump.push (state);
    state->announce ("finishing");
  
diff -Nrcpad gcc-16-20250907/gcc/cp/name-lookup.cc gcc-16-20250914/gcc/cp/name-lookup.cc
*** gcc-16-20250907/gcc/cp/name-lookup.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/cp/name-lookup.cc	Sun Sep 14 22:32:08 2025
*************** name_lookup::adl_namespace_fns (tree sco
*** 1306,1312 ****
  		    /* For lookups on the instantiation path we can see any
  		       module-linkage declaration; otherwise we should only
  		       see exported decls.  */
! 		    if (!on_inst_path)
  		      bind = STAT_VISIBLE (bind);
  		  }
  
--- 1306,1314 ----
  		    /* For lookups on the instantiation path we can see any
  		       module-linkage declaration; otherwise we should only
  		       see exported decls.  */
! 		    if (on_inst_path)
! 		      bind = STAT_DECL (bind);
! 		    else
  		      bind = STAT_VISIBLE (bind);
  		  }
  
diff -Nrcpad gcc-16-20250907/gcc/cp/pt.cc gcc-16-20250914/gcc/cp/pt.cc
*** gcc-16-20250907/gcc/cp/pt.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/cp/pt.cc	Sun Sep 14 22:32:08 2025
*************** unify (tree tparms, tree targs, tree par
*** 26301,26308 ****
      case TYPEOF_TYPE:
      case DECLTYPE_TYPE:
      case TRAIT_TYPE:
!       /* Cannot deduce anything from TYPEOF_TYPE, DECLTYPE_TYPE,
! 	 or TRAIT_TYPE nodes.  */
        return unify_success (explain_p);
  
      case ERROR_MARK:
--- 26301,26308 ----
      case TYPEOF_TYPE:
      case DECLTYPE_TYPE:
      case TRAIT_TYPE:
!     case PACK_INDEX_TYPE:
!       /* These are non-deduced contexts.  */
        return unify_success (explain_p);
  
      case ERROR_MARK:
diff -Nrcpad gcc-16-20250907/gcc/cp/tree.cc gcc-16-20250914/gcc/cp/tree.cc
*** gcc-16-20250907/gcc/cp/tree.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/cp/tree.cc	Sun Sep 14 22:32:08 2025
*************** build_min_non_dep_op_overload (enum tree
*** 3730,3736 ****
  	     rebuild the <=>.  Note that both OVERLOAD and the provided arguments
  	     in this case already correspond to the selected operator<=>.  */
  
! 	  tree spaceship_non_dep = CALL_EXPR_ARG (non_dep, reversed ? 1 : 0);
  	  gcc_checking_assert (TREE_CODE (spaceship_non_dep) == CALL_EXPR);
  	  tree spaceship_op0 = va_arg (p, tree);
  	  tree spaceship_op1 = va_arg (p, tree);
--- 3730,3738 ----
  	     rebuild the <=>.  Note that both OVERLOAD and the provided arguments
  	     in this case already correspond to the selected operator<=>.  */
  
! 	  tree spaceship_non_dep = (TREE_CODE (non_dep) == CALL_EXPR
! 				    ? CALL_EXPR_ARG (non_dep, reversed ? 1 : 0)
! 				    : TREE_OPERAND (non_dep, reversed ? 1 : 0));
  	  gcc_checking_assert (TREE_CODE (spaceship_non_dep) == CALL_EXPR);
  	  tree spaceship_op0 = va_arg (p, tree);
  	  tree spaceship_op1 = va_arg (p, tree);
*************** build_min_non_dep_op_overload (enum tree
*** 3744,3751 ****
  						    TREE_VALUE (overload),
  						    spaceship_op0,
  						    spaceship_op1);
! 	  tree op1 = CALL_EXPR_ARG (non_dep, reversed ? 0 : 1);
  	  gcc_checking_assert (integer_zerop (op1));
  	  vec_safe_push (args, op0);
  	  vec_safe_push (args, op1);
  	  overload = CALL_EXPR_FN (non_dep);
--- 3746,3764 ----
  						    TREE_VALUE (overload),
  						    spaceship_op0,
  						    spaceship_op1);
! 	  tree op1 = (TREE_CODE (non_dep) == CALL_EXPR
! 		      ? CALL_EXPR_ARG (non_dep, reversed ? 0 : 1)
! 		      : TREE_OPERAND (non_dep, reversed ? 0 : 1));
  	  gcc_checking_assert (integer_zerop (op1));
+ 
+ 	  if (TREE_CODE (non_dep) != CALL_EXPR)
+ 	    {
+ 	      gcc_checking_assert (COMPARISON_CLASS_P (non_dep));
+ 	      if (reversed)
+ 		std::swap (op0, op1);
+ 	      return build_min_non_dep (TREE_CODE (non_dep), non_dep, op0, op1);
+ 	    }
+ 
  	  vec_safe_push (args, op0);
  	  vec_safe_push (args, op1);
  	  overload = CALL_EXPR_FN (non_dep);
diff -Nrcpad gcc-16-20250907/gcc/diagnostics/buffering.cc gcc-16-20250914/gcc/diagnostics/buffering.cc
*** gcc-16-20250907/gcc/diagnostics/buffering.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/diagnostics/buffering.cc	Sun Sep 14 22:32:08 2025
*************** namespace diagnostics {
*** 39,44 ****
--- 39,49 ----
  void
  context::set_diagnostic_buffer (buffer *buffer_)
  {
+   /* Early reject of no-op (to avoid recursively crashing when handling an
+      ICE when inside a nested diagnostics; see PR diagnostics/121876).  */
+   if (buffer_ == m_diagnostic_buffer)
+     return;
+ 
    /* We don't allow changing buffering within a diagnostic group
       (to simplify handling of buffered diagnostics within the
       diagnostic_format implementations).  */
diff -Nrcpad gcc-16-20250907/gcc/diagnostics/context.cc gcc-16-20250914/gcc/diagnostics/context.cc
*** gcc-16-20250907/gcc/diagnostics/context.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/diagnostics/context.cc	Sun Sep 14 22:32:08 2025
*************** context::dump (FILE *outfile, int indent
*** 463,471 ****
  bool
  context::execution_failed_p () const
  {
!   /* Equivalent to (seen_error () || werrorcount), but on
!      this context, rather than global_dc.  */
!   return (diagnostic_count (kind::error)
  	  || diagnostic_count (kind::sorry)
  	  || diagnostic_count (kind::werror));
  }
--- 463,470 ----
  bool
  context::execution_failed_p () const
  {
!   return (diagnostic_count (kind::fatal)
! 	  || diagnostic_count (kind::error)
  	  || diagnostic_count (kind::sorry)
  	  || diagnostic_count (kind::werror));
  }
diff -Nrcpad gcc-16-20250907/gcc/diagnostics/sarif-sink.cc gcc-16-20250914/gcc/diagnostics/sarif-sink.cc
*** gcc-16-20250907/gcc/diagnostics/sarif-sink.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/diagnostics/sarif-sink.cc	Sun Sep 14 22:32:08 2025
*************** maybe_get_sarif_level (enum kind diag_ki
*** 1980,1985 ****
--- 1980,1986 ----
      {
      case kind::warning:
        return "warning";
+     case kind::fatal:
      case kind::error:
        return "error";
      case kind::note:
diff -Nrcpad gcc-16-20250907/gcc/doc/extend.texi gcc-16-20250914/gcc/doc/extend.texi
*** gcc-16-20250907/gcc/doc/extend.texi	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/doc/extend.texi	Sun Sep 14 22:32:08 2025
*************** accordingly to point to the start of the
*** 5904,5911 ****
  this attribute are invoked.  Usually a good place to do the initialization is
  the startup routine.  The TBR relative vector table can have at max 256 function
  entries.  The jumps to these functions are generated using a SH2A specific,
! non delayed branch instruction JSR/N @@(disp8,TBR).  You must use GAS and GLD
! from GNU binutils version 2.7 or later for this attribute to work correctly.
  
  In an application, for a function being called once, this attribute
  saves at least 8 bytes of code; and if other successive calls are being
--- 5904,5910 ----
  this attribute are invoked.  Usually a good place to do the initialization is
  the startup routine.  The TBR relative vector table can have at max 256 function
  entries.  The jumps to these functions are generated using a SH2A specific,
! non delayed branch instruction JSR/N @@(disp8,TBR).
  
  In an application, for a function being called once, this attribute
  saves at least 8 bytes of code; and if other successive calls are being
*************** The compiler generates more efficient co
*** 7925,7933 ****
  on data in the eight-bit data area.  Note the eight-bit data area is limited to
  256 bytes of data.
  
- You must use GAS and GLD from GNU binutils version 2.7 or later for
- this attribute to work correctly.
- 
  @cindex @code{tiny_data} variable attribute, H8/300
  @cindex tiny data section on the H8/300H and H8S
  @item tiny_data
--- 7924,7929 ----
*************** loop or a @code{#pragma GCC ivdep}, and
*** 10451,10460 ****
  @var{n} is an integer constant expression specifying the unrolling factor.
  The values of @math{0} and @math{1} block any unrolling of the loop.
  
! If the loop was vectorized the unroll factor specified will be used to seed the
! vectorizer unroll factor.  Whether the loop is unrolled or not will be
! determined by target costing.  The resulting vectorized loop may still be
! unrolled more in later passes depending on the target costing.
  
  @end table
  
--- 10447,10457 ----
  @var{n} is an integer constant expression specifying the unrolling factor.
  The values of @math{0} and @math{1} block any unrolling of the loop.
  
! If the loop is vectorized the vectorizer considers extra unrolling to honor the
! unroll factor.  After vectorizing a loop the pragma is dropped.  Whether the
! loop is unrolled or not will be determined by target costing.  The resulting
! vectorized loop may still be unrolled more in later passes depending on the
! target costing.
  
  @end table
  
diff -Nrcpad gcc-16-20250907/gcc/doc/generic.texi gcc-16-20250914/gcc/doc/generic.texi
*** gcc-16-20250907/gcc/doc/generic.texi	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/doc/generic.texi	Sun Sep 14 22:32:08 2025
*************** a value from @code{enum annot_expr_kind}
*** 1833,1838 ****
--- 1833,1839 ----
  @tindex IFN_VEC_WIDEN_MINUS_LO
  @tindex IFN_VEC_WIDEN_MINUS_EVEN
  @tindex IFN_VEC_WIDEN_MINUS_ODD
+ @tindex IFN_VEC_TRUNC_ADD_HIGH
  @tindex VEC_UNPACK_HI_EXPR
  @tindex VEC_UNPACK_LO_EXPR
  @tindex VEC_UNPACK_FLOAT_HI_EXPR
*************** vector of @code{N/2} subtractions.  In t
*** 1955,1960 ****
--- 1956,1979 ----
  vector are subtracted from the odd @code{N/2} of the first to produce the
  vector of @code{N/2} subtractions.
  
+ @item IFN_VEC_TRUNC_ADD_HIGH
+ This internal function performs an addition of two input vectors,
+ then extracts the most significant half of each result element and
+ narrows it to elements of half the original width.
+ 
+ Concretely, it computes:
+ @code{(bits(a)/2)((a + b) >> bits(a)/2)}
+ 
+ where @code{bits(a)} is the width in bits of each input element.
+ 
+ Its operands are vectors containing the same number of elements (@code{N})
+ of the same integral type.  The result is a vector of length @code{N}, with
+ elements of an integral type whose size is half that of the input element
+ type.
+ 
+ This operation currently only used for early break result compression when the
+ result of a vector boolean can be represented as 0 or -1.
+ 
  @item VEC_UNPACK_HI_EXPR
  @itemx VEC_UNPACK_LO_EXPR
  These nodes represent unpacking of the high and low parts of the input vector,
diff -Nrcpad gcc-16-20250907/gcc/doc/invoke.texi gcc-16-20250914/gcc/doc/invoke.texi
*** gcc-16-20250907/gcc/doc/invoke.texi	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/doc/invoke.texi	Sun Sep 14 22:32:08 2025
*************** name is still supported, but the newer n
*** 6690,6696 ****
  -Wstring-compare
  -Wtype-limits
  -Wuninitialized
! -Wunterminated-string-initialization
  -Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}
  -Wunused-but-set-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}}
  
--- 6690,6696 ----
  -Wstring-compare
  -Wtype-limits
  -Wuninitialized
! -Wunterminated-string-initialization @r{(C/ObjC only)}
  -Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}
  -Wunused-but-set-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}}
  
*************** This option is enabled by @option{-fauto
*** 15592,15607 ****
  
  @opindex fprofile-partial-training
  @item -fprofile-partial-training
! With @code{-fprofile-use} all portions of programs not executed during train
! run are optimized aggressively for size rather than speed.  In some cases it is
! not practical to train all possible hot paths in the program. (For
! example, program may contain functions specific for a given hardware and
! training may not cover all hardware configurations program is run on.)  With
! @code{-fprofile-partial-training} profile feedback is ignored for all
! functions not executed during the train run, leading them to be optimized as if
! they were compiled without profile feedback. This leads to better performance
! when train run is not representative but also leads to significantly bigger
! code.
  
  @opindex fprofile-use
  @item -fprofile-use
--- 15592,15607 ----
  
  @opindex fprofile-partial-training
  @item -fprofile-partial-training
! With @code{-fprofile-use} all portions of programs not executed during
! training runs are optimized aggressively for size rather than speed.
! In some cases it is not practical to train all possible hot paths in
! the program. (For example, it may contain functions specific to a
! given hardware and training may not cover all hardware configurations
! the program later runs on.)  With @code{-fprofile-partial-training}
! profile feedback is ignored for all functions not executed during the
! training runs, causing them to be optimized as if they were compiled
! without profile feedback. This leads to better performance when the
! training is not representative at the cost of significantly bigger code.
  
  @opindex fprofile-use
  @item -fprofile-use
*************** passes).
*** 21275,21280 ****
--- 21275,21283 ----
  @item note
  Enable other detailed optimization information (only available in
  certain passes).
+ @item folding
+ Enable dumping information about match-and-simplify (match.pd) patterns,
+ when they are applied.
  @item all
  Turn on all options, except @option{raw}, @option{slim}, @option{verbose}
  and @option{lineno}.
diff -Nrcpad gcc-16-20250907/gcc/doc/libgcc.texi gcc-16-20250914/gcc/doc/libgcc.texi
*** gcc-16-20250907/gcc/doc/libgcc.texi	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/doc/libgcc.texi	Sun Sep 14 22:32:08 2025
*************** otherwise from signed bit-precise intege
*** 454,462 ****
  
  There are two sets of basic comparison functions.
  
! @deftypefn {Runtime Function} int __cmpsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} int __cmpdf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} int __cmptf2 (long double @var{a}, long double @var{b})
  These functions calculate @math{a <=> b}.  That is, if @var{a} is less
  than @var{b}, they return @minus{}1; if @var{a} is greater than @var{b}, they
  return 1; and if @var{a} and @var{b} are equal they return 0.  If
--- 454,462 ----
  
  There are two sets of basic comparison functions.
  
! @deftypefn {Runtime Function} CMPtype __cmpsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} CMPtype __cmpdf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} CMPtype __cmptf2 (long double @var{a}, long double @var{b})
  These functions calculate @math{a <=> b}.  That is, if @var{a} is less
  than @var{b}, they return @minus{}1; if @var{a} is greater than @var{b}, they
  return 1; and if @var{a} and @var{b} are equal they return 0.  If
*************** if NaN is a possibility, use one of the
*** 465,473 ****
  functions.
  @end deftypefn
  
! @deftypefn {Runtime Function} int __unordsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} int __unorddf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} int __unordtf2 (long double @var{a}, long double @var{b})
  These functions return a nonzero value if either argument is NaN, otherwise 0.
  @end deftypefn
  
--- 465,473 ----
  functions.
  @end deftypefn
  
! @deftypefn {Runtime Function} CMPtype __unordsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} CMPtype __unorddf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} CMPtype __unordtf2 (long double @var{a}, long double @var{b})
  These functions return a nonzero value if either argument is NaN, otherwise 0.
  @end deftypefn
  
*************** NaN@.  Thus, the meaning of the return v
*** 489,537 ****
  Do not rely on this implementation; only the semantics documented
  below are guaranteed.
  
! @deftypefn {Runtime Function} int __eqsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} int __eqdf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} int __eqtf2 (long double @var{a}, long double @var{b})
  These functions return zero if neither argument is NaN, and @var{a} and
  @var{b} are equal.
  @end deftypefn
  
! @deftypefn {Runtime Function} int __nesf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} int __nedf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} int __netf2 (long double @var{a}, long double @var{b})
  These functions return a nonzero value if either argument is NaN, or
  if @var{a} and @var{b} are unequal.
  @end deftypefn
  
! @deftypefn {Runtime Function} int __gesf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} int __gedf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} int __getf2 (long double @var{a}, long double @var{b})
  These functions return a value greater than or equal to zero if
  neither argument is NaN, and @var{a} is greater than or equal to
  @var{b}.
  @end deftypefn
  
! @deftypefn {Runtime Function} int __ltsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} int __ltdf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} int __lttf2 (long double @var{a}, long double @var{b})
  These functions return a value less than zero if neither argument is
  NaN, and @var{a} is strictly less than @var{b}.
  @end deftypefn
  
! @deftypefn {Runtime Function} int __lesf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} int __ledf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} int __letf2 (long double @var{a}, long double @var{b})
  These functions return a value less than or equal to zero if neither
  argument is NaN, and @var{a} is less than or equal to @var{b}.
  @end deftypefn
  
! @deftypefn {Runtime Function} int __gtsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} int __gtdf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} int __gttf2 (long double @var{a}, long double @var{b})
  These functions return a value greater than zero if neither argument
  is NaN, and @var{a} is strictly greater than @var{b}.
  @end deftypefn
  
  @subsection Other floating-point functions
  
  @deftypefn {Runtime Function} float __powisf2 (float @var{a}, int @var{b})
--- 489,543 ----
  Do not rely on this implementation; only the semantics documented
  below are guaranteed.
  
! @deftypefn {Runtime Function} CMPtype __eqsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} CMPtype __eqdf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} CMPtype __eqtf2 (long double @var{a}, long double @var{b})
  These functions return zero if neither argument is NaN, and @var{a} and
  @var{b} are equal.
  @end deftypefn
  
! @deftypefn {Runtime Function} CMPtype __nesf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} CMPtype __nedf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} CMPtype __netf2 (long double @var{a}, long double @var{b})
  These functions return a nonzero value if either argument is NaN, or
  if @var{a} and @var{b} are unequal.
  @end deftypefn
  
! @deftypefn {Runtime Function} CMPtype __gesf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} CMPtype __gedf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} CMPtype __getf2 (long double @var{a}, long double @var{b})
  These functions return a value greater than or equal to zero if
  neither argument is NaN, and @var{a} is greater than or equal to
  @var{b}.
  @end deftypefn
  
! @deftypefn {Runtime Function} CMPtype __ltsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} CMPtype __ltdf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} CMPtype __lttf2 (long double @var{a}, long double @var{b})
  These functions return a value less than zero if neither argument is
  NaN, and @var{a} is strictly less than @var{b}.
  @end deftypefn
  
! @deftypefn {Runtime Function} CMPtype __lesf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} CMPtype __ledf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} CMPtype __letf2 (long double @var{a}, long double @var{b})
  These functions return a value less than or equal to zero if neither
  argument is NaN, and @var{a} is less than or equal to @var{b}.
  @end deftypefn
  
! @deftypefn {Runtime Function} CMPtype __gtsf2 (float @var{a}, float @var{b})
! @deftypefnx {Runtime Function} CMPtype __gtdf2 (double @var{a}, double @var{b})
! @deftypefnx {Runtime Function} CMPtype __gttf2 (long double @var{a}, long double @var{b})
  These functions return a value greater than zero if neither argument
  is NaN, and @var{a} is strictly greater than @var{b}.
  @end deftypefn
  
+ Comparison functions return a @code{CMPtype} which is a signed integer of
+ target-dependent size.  Typically @code{CMPtype} will be word-sized, but
+ other backends may override this with the @code{TARGET_LIBGCC_CMP_RETURN_MODE}
+ hook.  Of note, AArch64 uses an single-int as the return type, and AVR uses
+ a quarter-int.
+ 
  @subsection Other floating-point functions
  
  @deftypefn {Runtime Function} float __powisf2 (float @var{a}, int @var{b})
diff -Nrcpad gcc-16-20250907/gcc/doc/md.texi gcc-16-20250914/gcc/doc/md.texi
*** gcc-16-20250907/gcc/doc/md.texi	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/doc/md.texi	Sun Sep 14 22:32:08 2025
*************** vectors with N signed/unsigned elements
*** 6087,6092 ****
--- 6087,6111 ----
  difference between operands 1 and 2 and widen the resulting elements.
  Put the N/2 results of size 2*S in the output vector (operand 0).
  
+ @cindex @code{vec_trunc_add_high@var{m}} instruction pattern
+ @item @samp{vec_trunc_add_high@var{m}}
+ Signed or unsigned addition of two input integer vectors of mode @var{m}, then
+ extracts the most significant half of each result element and narrows it to
+ elements of half the original width.
+ 
+ Concretely, it computes:
+ @code{(bits(a)/2)((a + b) >> bits(a)/2)}
+ 
+ where @code{bits(a)} is the width in bits of each input element.
+ 
+ Operand 1 and 2 are of integer vector mode @var{m} containing the same number
+ of signed or unsigned integral elements.  The result (operand @code{0}) is of an
+ integer vector mode with the same number of elements but elements of half of the
+ width of those of mode @var{m}.
+ 
+ This operation currently only used for early break result compression when the
+ result of a vector boolean can be represented as 0 or -1.
+ 
  @cindex @code{vec_addsub@var{m}3} instruction pattern
  @item @samp{vec_addsub@var{m}3}
  Alternating subtract, add with even lanes doing subtract and odd
diff -Nrcpad gcc-16-20250907/gcc/doc/tm.texi gcc-16-20250914/gcc/doc/tm.texi
*** gcc-16-20250907/gcc/doc/tm.texi	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/doc/tm.texi	Sun Sep 14 22:32:08 2025
*************** It is false if we must use @command{coll
*** 9579,9587 ****
  
  @deftypevr {Target Hook} bool TARGET_DTORS_FROM_CXA_ATEXIT
  This value is true if the target wants destructors to be queued to be
! run from __cxa_atexit.  If this is the case then, for each priority level,
! a new constructor will be entered that registers the destructors for that
! level with __cxa_atexit (and there will be no destructors emitted).
  It is false the method implied by @code{have_ctors_dtors} is used.
  @end deftypevr
  
--- 9579,9588 ----
  
  @deftypevr {Target Hook} bool TARGET_DTORS_FROM_CXA_ATEXIT
  This value is true if the target wants destructors to be queued to be
! run from @code{__cxa_atexit}.  If this is the case then, for each
! priority level, a new constructor will be entered that registers the
! destructors for that level with @code{__cxa_atexit} (and there will be
! no destructors emitted).
  It is false the method implied by @code{have_ctors_dtors} is used.
  @end deftypevr
  
diff -Nrcpad gcc-16-20250907/gcc/dwarf2ctf.cc gcc-16-20250914/gcc/dwarf2ctf.cc
*** gcc-16-20250907/gcc/dwarf2ctf.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/dwarf2ctf.cc	Sun Sep 14 22:32:08 2025
*************** ctf_get_AT_data_member_location (dw_die_
*** 87,94 ****
    /* The field location (in bits) can be determined from
       either a DW_AT_data_member_location attribute or a
       DW_AT_data_bit_offset attribute.  */
!   if (get_AT (die, DW_AT_data_bit_offset))
!     field_location = get_AT_unsigned (die, DW_AT_data_bit_offset);
    else
      {
        attr = get_AT (die, DW_AT_data_member_location);
--- 87,94 ----
    /* The field location (in bits) can be determined from
       either a DW_AT_data_member_location attribute or a
       DW_AT_data_bit_offset attribute.  */
!   if ((attr = get_AT (die, DW_AT_data_bit_offset)))
!     field_location = AT_unsigned (attr);
    else
      {
        attr = get_AT (die, DW_AT_data_member_location);
*************** ctf_get_AT_data_member_location (dw_die_
*** 102,117 ****
  		      == dw_val_class_unsigned_const);
  	  field_location = descr->dw_loc_oprnd1.v.val_unsigned * 8;
  	}
!       else
! 	{
! 	  attr = get_AT (die, DW_AT_data_member_location);
! 	  if (attr && AT_class (attr) == dw_val_class_const)
! 	    field_location = AT_int (attr) * 8;
! 	  else
! 	    field_location = (get_AT_unsigned (die,
! 					   DW_AT_data_member_location)
! 			      * 8);
! 	}
      }
  
    return field_location;
--- 102,113 ----
  		      == dw_val_class_unsigned_const);
  	  field_location = descr->dw_loc_oprnd1.v.val_unsigned * 8;
  	}
!       else if (attr && AT_class (attr) == dw_val_class_const)
! 	field_location = AT_int (attr) * 8;
!       else if (attr)
! 	field_location = AT_unsigned (attr) * 8;
! 
!       /* Otherwise the location is non-existant, e.g. for union members.  */
      }
  
    return field_location;
*************** gen_ctf_unknown_type (ctf_container_ref
*** 199,205 ****
     If no DW_AT_byte_size nor DW_AT_bit_size are defined, this function
     returns 0.  */
  
! static uint32_t
  ctf_die_bitsize (dw_die_ref die)
  {
    dw_attr_node *attr_byte_size = get_AT (die, DW_AT_byte_size);
--- 195,201 ----
     If no DW_AT_byte_size nor DW_AT_bit_size are defined, this function
     returns 0.  */
  
! static unsigned HOST_WIDE_INT
  ctf_die_bitsize (dw_die_ref die)
  {
    dw_attr_node *attr_byte_size = get_AT (die, DW_AT_byte_size);
*************** gen_ctf_base_type (ctf_container_ref ctf
*** 225,231 ****
    ctf_encoding_t ctf_encoding = {0, 0, 0};
  
    unsigned int encoding = get_AT_unsigned (type, DW_AT_encoding);
!   unsigned int bit_size = ctf_die_bitsize (type);
    const char * name_string = get_AT_string (type, DW_AT_name);
  
    switch (encoding)
--- 221,229 ----
    ctf_encoding_t ctf_encoding = {0, 0, 0};
  
    unsigned int encoding = get_AT_unsigned (type, DW_AT_encoding);
!   /* Bit size for the base types handled here should never be extremely large
!      (BITSIZE_MAXWIDTH at the upper end for _BitInt).  */
!   unsigned int bit_size = (unsigned int) ctf_die_bitsize (type);
    const char * name_string = get_AT_string (type, DW_AT_name);
  
    switch (encoding)
*************** gen_ctf_modifier_type (ctf_container_ref
*** 514,520 ****
  static ctf_dtdef_ref
  gen_ctf_sou_type (ctf_container_ref ctfc, dw_die_ref sou, uint32_t kind)
  {
!   uint32_t bit_size = ctf_die_bitsize (sou);
    int declaration_p = get_AT_flag (sou, DW_AT_declaration);
    const char *sou_name = get_AT_string (sou, DW_AT_name);
  
--- 512,518 ----
  static ctf_dtdef_ref
  gen_ctf_sou_type (ctf_container_ref ctfc, dw_die_ref sou, uint32_t kind)
  {
!   unsigned HOST_WIDE_INT bit_size = ctf_die_bitsize (sou);
    int declaration_p = get_AT_flag (sou, DW_AT_declaration);
    const char *sou_name = get_AT_string (sou, DW_AT_name);
  
*************** gen_ctf_sou_type (ctf_container_ref ctfc
*** 564,570 ****
  	    {
  	      dw_attr_node *attr;
  	      HOST_WIDE_INT bitpos = 0;
! 	      HOST_WIDE_INT bitsize = ctf_die_bitsize (c);
  	      HOST_WIDE_INT bit_offset;
  
  	      /* The bit offset is given in bits and it may be
--- 562,568 ----
  	    {
  	      dw_attr_node *attr;
  	      HOST_WIDE_INT bitpos = 0;
! 	      unsigned HOST_WIDE_INT bitsize = ctf_die_bitsize (c);
  	      HOST_WIDE_INT bit_offset;
  
  	      /* The bit offset is given in bits and it may be
*************** gen_ctf_sou_type (ctf_container_ref ctfc
*** 581,587 ****
  		    bitpos = field_location + bit_offset;
  		  else
  		    {
! 		      HOST_WIDE_INT bit_size;
  
  		      attr = get_AT (c, DW_AT_byte_size);
  		      if (attr)
--- 579,585 ----
  		    bitpos = field_location + bit_offset;
  		  else
  		    {
! 		      unsigned HOST_WIDE_INT bit_size;
  
  		      attr = get_AT (c, DW_AT_byte_size);
  		      if (attr)
*************** static ctf_dtdef_ref
*** 730,736 ****
  gen_ctf_enumeration_type (ctf_container_ref ctfc, dw_die_ref enumeration)
  {
    const char *enum_name = get_AT_string (enumeration, DW_AT_name);
!   unsigned int bit_size = ctf_die_bitsize (enumeration);
    unsigned int signedness = get_AT_unsigned (enumeration, DW_AT_encoding);
    int declaration_p = get_AT_flag (enumeration, DW_AT_declaration);
  
--- 728,734 ----
  gen_ctf_enumeration_type (ctf_container_ref ctfc, dw_die_ref enumeration)
  {
    const char *enum_name = get_AT_string (enumeration, DW_AT_name);
!   unsigned HOST_WIDE_INT bit_size = ctf_die_bitsize (enumeration);
    unsigned int signedness = get_AT_unsigned (enumeration, DW_AT_encoding);
    int declaration_p = get_AT_flag (enumeration, DW_AT_declaration);
  
diff -Nrcpad gcc-16-20250907/gcc/expr.cc gcc-16-20250914/gcc/expr.cc
*** gcc-16-20250907/gcc/expr.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/expr.cc	Sun Sep 14 22:32:08 2025
*************** string_cst_read_str (void *data, void *,
*** 6533,6538 ****
--- 6533,6563 ----
    return c_readstr (TREE_STRING_POINTER (str) + offset, mode, false);
  }
  
+ /* Helper function for store_expr storing of RAW_DATA_CST.  */
+ 
+ static rtx
+ raw_data_cst_read_str (void *data, void *, HOST_WIDE_INT offset,
+ 		       fixed_size_mode mode)
+ {
+   tree cst = (tree) data;
+ 
+   gcc_assert (offset >= 0);
+   if (offset >= RAW_DATA_LENGTH (cst))
+     return const0_rtx;
+ 
+   if ((unsigned HOST_WIDE_INT) offset + GET_MODE_SIZE (mode)
+       > (unsigned HOST_WIDE_INT) RAW_DATA_LENGTH (cst))
+     {
+       char *p = XALLOCAVEC (char, GET_MODE_SIZE (mode));
+       size_t l = RAW_DATA_LENGTH (cst) - offset;
+       memcpy (p, RAW_DATA_POINTER (cst) + offset, l);
+       memset (p + l, '\0', GET_MODE_SIZE (mode) - l);
+       return c_readstr (p, mode, false);
+     }
+ 
+   return c_readstr (RAW_DATA_POINTER (cst) + offset, mode, false);
+ }
+ 
  /* Generate code for computing expression EXP,
     and storing the value into TARGET.
  
*************** store_constructor (tree exp, rtx target,
*** 7630,7636 ****
      case ARRAY_TYPE:
        {
  	tree value, index;
! 	unsigned HOST_WIDE_INT i;
  	bool need_to_clear;
  	tree domain;
  	tree elttype = TREE_TYPE (type);
--- 7655,7661 ----
      case ARRAY_TYPE:
        {
  	tree value, index;
! 	unsigned HOST_WIDE_INT i, j = 0;
  	bool need_to_clear;
  	tree domain;
  	tree elttype = TREE_TYPE (type);
*************** store_constructor (tree exp, rtx target,
*** 7692,7697 ****
--- 7717,7724 ----
  		    this_node_count = (tree_to_uhwi (hi_index)
  				       - tree_to_uhwi (lo_index) + 1);
  		  }
+ 		else if (TREE_CODE (value) == RAW_DATA_CST)
+ 		  this_node_count = RAW_DATA_LENGTH (value);
  		else
  		  this_node_count = 1;
  
*************** store_constructor (tree exp, rtx target,
*** 7734,7740 ****
  	    rtx xtarget = target;
  
  	    if (cleared && initializer_zerop (value))
! 	      continue;
  
  	    mode = TYPE_MODE (elttype);
  	    if (mode != BLKmode)
--- 7761,7771 ----
  	    rtx xtarget = target;
  
  	    if (cleared && initializer_zerop (value))
! 	      {
! 		if (TREE_CODE (value) == RAW_DATA_CST)
! 		  j += RAW_DATA_LENGTH (value) - 1;
! 		continue;
! 	      }
  
  	    mode = TYPE_MODE (elttype);
  	    if (mode != BLKmode)
*************** store_constructor (tree exp, rtx target,
*** 7750,7755 ****
--- 7781,7788 ----
  		unsigned HOST_WIDE_INT lo, hi, count;
  		tree offset;
  
+ 		gcc_assert (TREE_CODE (value) != RAW_DATA_CST);
+ 
  		/* If the range is constant and "small", unroll the loop.  */
  		if (const_bounds_p
  		    && tree_fits_uhwi_p (lo_index)
*************** store_constructor (tree exp, rtx target,
*** 7846,7858 ****
  	      {
  		tree offset;
  
  		if (index)
  		  offset = fold_build2 (MINUS_EXPR,
  					TREE_TYPE (index),
  					index,
  					TYPE_MIN_VALUE (domain));
  		else
! 		  offset = size_int (i);
  
  		offset = size_binop (MULT_EXPR,
  				     fold_convert (sizetype, offset),
--- 7879,7892 ----
  	      {
  		tree offset;
  
+ 		gcc_assert (TREE_CODE (value) != RAW_DATA_CST);
  		if (index)
  		  offset = fold_build2 (MINUS_EXPR,
  					TREE_TYPE (index),
  					index,
  					TYPE_MIN_VALUE (domain));
  		else
! 		  offset = size_int (i + j);
  
  		offset = size_binop (MULT_EXPR,
  				     fold_convert (sizetype, offset),
*************** store_constructor (tree exp, rtx target,
*** 7869,7875 ****
  		  bitpos = ((tree_to_uhwi (index) - minelt)
  			    * tree_to_uhwi (TYPE_SIZE (elttype)));
  		else
! 		  bitpos = (i * tree_to_uhwi (TYPE_SIZE (elttype)));
  
  		if (MEM_P (target) && !MEM_KEEP_ALIAS_SET_P (target)
  		    && TREE_CODE (type) == ARRAY_TYPE
--- 7903,7909 ----
  		  bitpos = ((tree_to_uhwi (index) - minelt)
  			    * tree_to_uhwi (TYPE_SIZE (elttype)));
  		else
! 		  bitpos = ((i + j) * tree_to_uhwi (TYPE_SIZE (elttype)));
  
  		if (MEM_P (target) && !MEM_KEEP_ALIAS_SET_P (target)
  		    && TREE_CODE (type) == ARRAY_TYPE
*************** store_constructor (tree exp, rtx target,
*** 7878,7887 ****
  		    target = copy_rtx (target);
  		    MEM_KEEP_ALIAS_SET_P (target) = 1;
  		  }
! 		store_constructor_field (target, bitsize, bitpos, 0,
! 					 bitregion_end, mode, value,
! 					 cleared, get_alias_set (elttype),
! 					 reverse);
  	      }
  	  }
  	break;
--- 7912,7961 ----
  		    target = copy_rtx (target);
  		    MEM_KEEP_ALIAS_SET_P (target) = 1;
  		  }
! 		if (TREE_CODE (value) != RAW_DATA_CST)
! 		  store_constructor_field (target, bitsize, bitpos, 0,
! 					   bitregion_end, mode, value,
! 					   cleared, get_alias_set (elttype),
! 					   reverse);
! 		else
! 		  {
! 		    j += RAW_DATA_LENGTH (value) - 1;
! 		    gcc_assert (known_eq (bitsize, BITS_PER_UNIT));
! 		    rtx to_rtx = adjust_address (target, mode,
! 						 bitpos / BITS_PER_UNIT);
! 
! 		    if (to_rtx == target)
! 		      to_rtx = copy_rtx (to_rtx);
! 
! 		    if (!MEM_KEEP_ALIAS_SET_P (to_rtx)
! 			&& MEM_ALIAS_SET (to_rtx) != 0)
! 		      set_mem_alias_set (to_rtx, get_alias_set (elttype));
! 
! 		    if (can_store_by_pieces (RAW_DATA_LENGTH (value),
! 					     raw_data_cst_read_str,
! 					     (void *) value,
! 					     MEM_ALIGN (target), false))
! 		      {
! 			store_by_pieces (target, RAW_DATA_LENGTH (value),
! 					 raw_data_cst_read_str, (void *) value,
! 					 MEM_ALIGN (target), false,
! 					 RETURN_BEGIN);
! 			continue;
! 		      }
! 
! 		    elttype
! 		      = build_array_type_nelts (TREE_TYPE (value),
! 						RAW_DATA_LENGTH (value));
! 		    tree ctor = build_constructor_single (elttype, NULL_TREE,
! 							  value);
! 		    ctor = tree_output_constant_def (ctor);
! 		    mode = TYPE_MODE (type);
! 		    store_constructor_field (target,
! 					     bitsize * RAW_DATA_LENGTH (value),
! 					     bitpos, 0, bitregion_end, mode,
! 					     ctor, cleared,
! 					     get_alias_set (elttype), reverse);
! 		  }
  	      }
  	  }
  	break;
diff -Nrcpad gcc-16-20250907/gcc/fortran/ChangeLog gcc-16-20250914/gcc/fortran/ChangeLog
*** gcc-16-20250907/gcc/fortran/ChangeLog	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/ChangeLog	Sun Sep 14 22:32:09 2025
***************
*** 1,3 ****
--- 1,50 ----
+ 2025-09-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121616
+ 	* primary.cc (gfc_variable_attr): Properly set dimension attribute
+ 	from a component ref.
+ 
+ 2025-09-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	* trans-intrinsic.cc (conv_intrinsic_fstat_lstat_stat_sub): Init
+ 	some variables.
+ 
+ 2025-09-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/82480
+ 	* check.cc (error_unsupported_kind): Helper function to report an
+ 	unsupported kind of an argument.
+ 	(check_minrange4): Helper function to report if an integer variable
+ 	does not have a decimal range of at least four.
+ 	(gfc_check_fstat): Adjust checks for generalization of instrinsic
+ 	function FSTAT.
+ 	(gfc_check_fstat_sub): Likewise for subroutine FSTAT.
+ 	(gfc_check_stat): Likewise for functio STAT.
+ 	(gfc_check_stat_sub): Likewise for subroutine STAT.
+ 	* intrinsic.texi: Document generalized versions of intrinsics
+ 	STAT/LSTAT/FSTAT.
+ 	* iresolve.cc (gfc_resolve_stat): STAT function result shall have
+ 	the same kind as the VALUES argument.
+ 	(gfc_resolve_lstat): Likewise for LSTAT.
+ 	(gfc_resolve_fstat): Likewise for FSTAT.
+ 	(gfc_resolve_stat_sub): Resolve proper library subroutine for STAT.
+ 	(gfc_resolve_lstat_sub): Likewise for LSTAT.
+ 	* trans-decl.cc (gfc_build_intrinsic_function_decls): Declare
+ 	fndecls for required subroutines in runtine library.
+ 	* trans-intrinsic.cc (conv_intrinsic_fstat_lstat_stat_sub): Emit
+ 	runtime wrapper code for the library functions, taking care of
+ 	possible kind conversion of the optional STATUS argument of the
+ 	subroutine versions of the intrinsics.
+ 	(gfc_conv_intrinsic_subroutine): Use it.
+ 	* trans.h (GTY): Declare prototypes.
+ 
+ 2025-09-08  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/84008
+ 	* decl.cc (insert_parameter_exprs): Correct the typespec of new
+ 	variable declarations, where the type is set to BT_PROCEDURE as
+ 	a precaution for resolution of the whole program unit.
+ 
  2025-09-06  Paul Thomas  <pault@gcc.gnu.org>
  
  	PR fortran/84119
diff -Nrcpad gcc-16-20250907/gcc/fortran/check.cc gcc-16-20250914/gcc/fortran/check.cc
*** gcc-16-20250907/gcc/fortran/check.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/check.cc	Sun Sep 14 22:32:09 2025
*************** kind_value_check (gfc_expr *e, int n, in
*** 1107,1112 ****
--- 1107,1142 ----
  }
  
  
+ /* Error message for an actual argument with an unsupported kind value.  */
+ 
+ static void
+ error_unsupported_kind (gfc_expr *e, int n)
+ {
+   gfc_error ("Not supported: %qs argument of %qs intrinsic at %L with kind %d",
+ 	     gfc_current_intrinsic_arg[n]->name,
+ 	     gfc_current_intrinsic, &e->where, e->ts.kind);
+   return;
+ }
+ 
+ 
+ /* Check if the decimal exponent range of an integer variable is at least four
+    so that it is large enough to e.g. hold errno values and the values of
+    LIBERROR_* from libgfortran.h.  */
+ 
+ static bool
+ check_minrange4 (gfc_expr *e, int n)
+ {
+   if (e->ts.kind >= 2)
+     return true;
+ 
+   gfc_error ("%qs argument of %qs intrinsic at %L must have "
+ 	     "a decimal exponent range of at least four",
+ 	     gfc_current_intrinsic_arg[n]->name,
+ 	     gfc_current_intrinsic, &e->where);
+   return false;
+ }
+ 
+ 
  /* Make sure an expression is a variable.  */
  
  static bool
*************** gfc_check_fstat (gfc_expr *unit, gfc_exp
*** 6574,6583 ****
    if (!scalar_check (unit, 0))
      return false;
  
!   if (!type_check (values, 1, BT_INTEGER)
!       || !kind_value_check (unit, 0, gfc_default_integer_kind))
      return false;
  
    if (!array_check (values, 1))
      return false;
  
--- 6604,6618 ----
    if (!scalar_check (unit, 0))
      return false;
  
!   if (!type_check (values, 1, BT_INTEGER))
      return false;
  
+   if (values->ts.kind != 4 && values->ts.kind != 8)
+     {
+       error_unsupported_kind (values, 1);
+       return false;
+     }
+ 
    if (!array_check (values, 1))
      return false;
  
*************** gfc_check_fstat_sub (gfc_expr *unit, gfc
*** 6601,6607 ****
      return true;
  
    if (!type_check (status, 2, BT_INTEGER)
!       || !kind_value_check (status, 2, gfc_default_integer_kind))
      return false;
  
    if (!scalar_check (status, 2))
--- 6636,6642 ----
      return true;
  
    if (!type_check (status, 2, BT_INTEGER)
!       || !check_minrange4 (status, 2))
      return false;
  
    if (!scalar_check (status, 2))
*************** gfc_check_stat (gfc_expr *name, gfc_expr
*** 6654,6663 ****
    if (!kind_value_check (name, 0, gfc_default_character_kind))
      return false;
  
!   if (!type_check (values, 1, BT_INTEGER)
!       || !kind_value_check (values, 1, gfc_default_integer_kind))
      return false;
  
    if (!array_check (values, 1))
      return false;
  
--- 6689,6703 ----
    if (!kind_value_check (name, 0, gfc_default_character_kind))
      return false;
  
!   if (!type_check (values, 1, BT_INTEGER))
      return false;
  
+   if (values->ts.kind != 4 && values->ts.kind != 8)
+     {
+       error_unsupported_kind (values, 1);
+       return false;
+     }
+ 
    if (!array_check (values, 1))
      return false;
  
*************** gfc_check_stat_sub (gfc_expr *name, gfc_
*** 6681,6687 ****
      return true;
  
    if (!type_check (status, 2, BT_INTEGER)
!       || !kind_value_check (status, 2, gfc_default_integer_kind))
      return false;
  
    if (!scalar_check (status, 2))
--- 6721,6727 ----
      return true;
  
    if (!type_check (status, 2, BT_INTEGER)
!       || !check_minrange4 (status, 2))
      return false;
  
    if (!scalar_check (status, 2))
diff -Nrcpad gcc-16-20250907/gcc/fortran/decl.cc gcc-16-20250914/gcc/fortran/decl.cc
*** gcc-16-20250907/gcc/fortran/decl.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/decl.cc	Sun Sep 14 22:32:09 2025
*************** insert_parameter_exprs (gfc_expr* e, gfc
*** 3817,3822 ****
--- 3817,3825 ----
  	  copy = gfc_copy_expr (param->expr);
  	  *e = *copy;
  	  free (copy);
+ 	  /* Catch variables declared without a value expression.  */
+ 	  if (e->expr_type == EXPR_VARIABLE && e->ts.type == BT_PROCEDURE)
+ 	    e->ts = e->symtree->n.sym->ts;
  	}
      }
  
diff -Nrcpad gcc-16-20250907/gcc/fortran/dump-parse-tree.cc gcc-16-20250914/gcc/fortran/dump-parse-tree.cc
*** gcc-16-20250907/gcc/fortran/dump-parse-tree.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/dump-parse-tree.cc	Sun Sep 14 22:32:09 2025
*************** show_expr (gfc_expr *p)
*** 767,772 ****
--- 767,782 ----
  
        break;
  
+     case EXPR_CONDITIONAL:
+       fputc ('(', dumpfile);
+       show_expr (p->value.conditional.condition);
+       fputs (" ? ", dumpfile);
+       show_expr (p->value.conditional.true_expr);
+       fputs (" : ", dumpfile);
+       show_expr (p->value.conditional.false_expr);
+       fputc (')', dumpfile);
+       break;
+ 
      case EXPR_COMPCALL:
        show_compcall (p);
        break;
diff -Nrcpad gcc-16-20250907/gcc/fortran/expr.cc gcc-16-20250914/gcc/fortran/expr.cc
*** gcc-16-20250907/gcc/fortran/expr.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/expr.cc	Sun Sep 14 22:32:09 2025
*************** gfc_get_operator_expr (locus *where, gfc
*** 116,121 ****
--- 116,140 ----
    return e;
  }
  
+ /* Get a new expression node that is an conditional expression node.  */
+ 
+ gfc_expr *
+ gfc_get_conditional_expr (locus *where, gfc_expr *condition,
+ 			  gfc_expr *true_expr, gfc_expr *false_expr)
+ {
+   gfc_expr *e;
+ 
+   e = gfc_get_expr ();
+   e->expr_type = EXPR_CONDITIONAL;
+   e->value.conditional.condition = condition;
+   e->value.conditional.true_expr = true_expr;
+   e->value.conditional.false_expr = false_expr;
+ 
+   if (where)
+     e->where = *where;
+ 
+   return e;
+ }
  
  /* Get a new expression node that is an structure constructor
     of given type and kind.  */
*************** gfc_copy_expr (gfc_expr *p)
*** 393,398 ****
--- 412,426 ----
  
        break;
  
+     case EXPR_CONDITIONAL:
+       q->value.conditional.condition
+ 	= gfc_copy_expr (p->value.conditional.condition);
+       q->value.conditional.true_expr
+ 	= gfc_copy_expr (p->value.conditional.true_expr);
+       q->value.conditional.false_expr
+ 	= gfc_copy_expr (p->value.conditional.false_expr);
+       break;
+ 
      case EXPR_FUNCTION:
        q->value.function.actual =
  	gfc_copy_actual_arglist (p->value.function.actual);
*************** free_expr0 (gfc_expr *e)
*** 502,507 ****
--- 530,541 ----
  	gfc_free_expr (e->value.op.op2);
        break;
  
+     case EXPR_CONDITIONAL:
+       gfc_free_expr (e->value.conditional.condition);
+       gfc_free_expr (e->value.conditional.true_expr);
+       gfc_free_expr (e->value.conditional.false_expr);
+       break;
+ 
      case EXPR_FUNCTION:
        gfc_free_actual_arglist (e->value.function.actual);
        break;
*************** gfc_is_constant_expr (gfc_expr *e)
*** 1083,1088 ****
--- 1117,1127 ----
  	      && (e->value.op.op2 == NULL
  		  || gfc_is_constant_expr (e->value.op.op2)));
  
+     case EXPR_CONDITIONAL:
+       return gfc_is_constant_expr (e->value.conditional.condition)
+ 	     && gfc_is_constant_expr (e->value.conditional.true_expr)
+ 	     && gfc_is_constant_expr (e->value.conditional.false_expr);
+ 
      case EXPR_VARIABLE:
        /* The only context in which this can occur is in a parameterized
  	 derived type declaration, so returning true is OK.  */
*************** simplify_intrinsic_op (gfc_expr *p, int
*** 1354,1359 ****
--- 1393,1435 ----
    return true;
  }
  
+ /* Try to collapse conditional expressions.  */
+ 
+ static bool
+ simplify_conditional (gfc_expr *p, int type)
+ {
+   gfc_expr *condition, *true_expr, *false_expr;
+ 
+   condition = p->value.conditional.condition;
+   true_expr = p->value.conditional.true_expr;
+   false_expr = p->value.conditional.false_expr;
+ 
+   if (!gfc_simplify_expr (condition, type)
+       || !gfc_simplify_expr (true_expr, type)
+       || !gfc_simplify_expr (false_expr, type))
+     return false;
+ 
+   if (!gfc_is_constant_expr (condition))
+     return true;
+ 
+   p->value.conditional.condition = NULL;
+   p->value.conditional.true_expr = NULL;
+   p->value.conditional.false_expr = NULL;
+ 
+   if (condition->value.logical)
+     {
+       gfc_replace_expr (p, true_expr);
+       gfc_free_expr (false_expr);
+     }
+   else
+     {
+       gfc_replace_expr (p, false_expr);
+       gfc_free_expr (true_expr);
+     }
+   gfc_free_expr (condition);
+ 
+   return true;
+ }
  
  /* Subroutine to simplify constructor expressions.  Mutually recursive
     with gfc_simplify_expr().  */
*************** gfc_simplify_expr (gfc_expr *p, int type
*** 2459,2464 ****
--- 2535,2545 ----
  	return false;
        break;
  
+     case EXPR_CONDITIONAL:
+       if (!simplify_conditional (p, type))
+ 	return false;
+       break;
+ 
      case EXPR_VARIABLE:
        /* Only substitute array parameter variables if we are in an
  	 initialization expression, or we want a subsection.  */
*************** gfc_check_init_expr (gfc_expr *e)
*** 3133,3138 ****
--- 3214,3233 ----
  
        break;
  
+     case EXPR_CONDITIONAL:
+       t = gfc_check_init_expr (e->value.conditional.condition);
+       if (!t)
+ 	break;
+       t = gfc_check_init_expr (e->value.conditional.true_expr);
+       if (!t)
+ 	break;
+       t = gfc_check_init_expr (e->value.conditional.false_expr);
+       if (t)
+ 	t = gfc_simplify_expr (e, 0);
+       else
+ 	t = false;
+       break;
+ 
      case EXPR_FUNCTION:
        t = false;
  
*************** check_restricted (gfc_expr *e)
*** 3609,3614 ****
--- 3704,3723 ----
  
        break;
  
+     case EXPR_CONDITIONAL:
+       t = check_restricted (e->value.conditional.condition);
+       if (!t)
+ 	break;
+       t = check_restricted (e->value.conditional.true_expr);
+       if (!t)
+ 	break;
+       t = check_restricted (e->value.conditional.false_expr);
+       if (t)
+ 	t = gfc_simplify_expr (e, 0);
+       else
+ 	t = false;
+       break;
+ 
      case EXPR_FUNCTION:
        if (e->value.function.esym)
  	{
*************** gfc_traverse_expr (gfc_expr *expr, gfc_s
*** 5700,5705 ****
--- 5809,5823 ----
  	return true;
        break;
  
+     case EXPR_CONDITIONAL:
+       if (gfc_traverse_expr (expr->value.conditional.condition, sym, func, f))
+ 	return true;
+       if (gfc_traverse_expr (expr->value.conditional.true_expr, sym, func, f))
+ 	return true;
+       if (gfc_traverse_expr (expr->value.conditional.false_expr, sym, func, f))
+ 	return true;
+       break;
+ 
      default:
        gcc_unreachable ();
        break;
diff -Nrcpad gcc-16-20250907/gcc/fortran/frontend-passes.cc gcc-16-20250914/gcc/fortran/frontend-passes.cc
*** gcc-16-20250907/gcc/fortran/frontend-passes.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/frontend-passes.cc	Sun Sep 14 22:32:09 2025
*************** gfc_expr_walker (gfc_expr **e, walk_expr
*** 5218,5223 ****
--- 5218,5228 ----
  	    for (a = (*e)->value.function.actual; a; a = a->next)
  	      WALK_SUBEXPR (a->expr);
  	    break;
+ 	  case EXPR_CONDITIONAL:
+ 	    WALK_SUBEXPR ((*e)->value.conditional.condition);
+ 	    WALK_SUBEXPR ((*e)->value.conditional.true_expr);
+ 	    WALK_SUBEXPR ((*e)->value.conditional.false_expr);
+ 	    break;
  	  case EXPR_COMPCALL:
  	  case EXPR_PPC:
  	    WALK_SUBEXPR ((*e)->value.compcall.base_object);
diff -Nrcpad gcc-16-20250907/gcc/fortran/gfortran.h gcc-16-20250914/gcc/fortran/gfortran.h
*** gcc-16-20250907/gcc/fortran/gfortran.h	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/gfortran.h	Sun Sep 14 22:32:09 2025
*************** enum gfc_source_form
*** 176,183 ****
  
  /* Expression node types.  */
  enum expr_t
!   { EXPR_UNKNOWN = 0, EXPR_OP = 1, EXPR_FUNCTION, EXPR_CONSTANT, EXPR_VARIABLE,
!   EXPR_SUBSTRING, EXPR_STRUCTURE, EXPR_ARRAY, EXPR_NULL, EXPR_COMPCALL, EXPR_PPC
  };
  
  /* Array types.  */
--- 176,194 ----
  
  /* Expression node types.  */
  enum expr_t
! {
!   EXPR_UNKNOWN = 0,
!   EXPR_OP = 1,
!   EXPR_FUNCTION,
!   EXPR_CONSTANT,
!   EXPR_VARIABLE,
!   EXPR_SUBSTRING,
!   EXPR_STRUCTURE,
!   EXPR_ARRAY,
!   EXPR_NULL,
!   EXPR_COMPCALL,
!   EXPR_PPC,
!   EXPR_CONDITIONAL,
  };
  
  /* Array types.  */
*************** typedef struct gfc_expr
*** 2809,2816 ****
      character;
  
      gfc_constructor_base constructor;
!   }
!   value;
  
    /* Used to store PDT expression lists associated with expressions.  */
    gfc_actual_arglist *param_list;
--- 2820,2833 ----
      character;
  
      gfc_constructor_base constructor;
! 
!     struct
!     {
!       struct gfc_expr *condition;
!       struct gfc_expr *true_expr;
!       struct gfc_expr *false_expr;
!     } conditional;
!   } value;
  
    /* Used to store PDT expression lists associated with expressions.  */
    gfc_actual_arglist *param_list;
*************** bool gfc_is_ptr_fcn (gfc_expr *);
*** 3925,3931 ****
  gfc_expr *gfc_get_expr (void);
  gfc_expr *gfc_get_array_expr (bt type, int kind, locus *);
  gfc_expr *gfc_get_null_expr (locus *);
! gfc_expr *gfc_get_operator_expr (locus *, gfc_intrinsic_op,gfc_expr *, gfc_expr *);
  gfc_expr *gfc_get_structure_constructor_expr (bt, int, locus *);
  gfc_expr *gfc_get_constant_expr (bt, int, locus *);
  gfc_expr *gfc_get_character_expr (int, locus *, const char *, gfc_charlen_t len);
--- 3942,3951 ----
  gfc_expr *gfc_get_expr (void);
  gfc_expr *gfc_get_array_expr (bt type, int kind, locus *);
  gfc_expr *gfc_get_null_expr (locus *);
! gfc_expr *gfc_get_operator_expr (locus *, gfc_intrinsic_op, gfc_expr *,
! 				 gfc_expr *);
! gfc_expr *gfc_get_conditional_expr (locus *, gfc_expr *, gfc_expr *,
! 				    gfc_expr *);
  gfc_expr *gfc_get_structure_constructor_expr (bt, int, locus *);
  gfc_expr *gfc_get_constant_expr (bt, int, locus *);
  gfc_expr *gfc_get_character_expr (int, locus *, const char *, gfc_charlen_t len);
diff -Nrcpad gcc-16-20250907/gcc/fortran/intrinsic.texi gcc-16-20250914/gcc/fortran/intrinsic.texi
*** gcc-16-20250907/gcc/fortran/intrinsic.texi	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/intrinsic.texi	Sun Sep 14 22:32:09 2025
*************** GNU extension
*** 6992,6998 ****
  @end multitable
  
  @item @emph{Description}:
! @code{FSTAT} is identical to @ref{STAT}, except that information about an 
  already opened file is obtained.
  
  The elements in @code{VALUES} are the same as described by @ref{STAT}.
--- 6992,6998 ----
  @end multitable
  
  @item @emph{Description}:
! @code{FSTAT} is identical to @ref{STAT}, except that information about an
  already opened file is obtained.
  
  The elements in @code{VALUES} are the same as described by @ref{STAT}.
*************** Subroutine, function
*** 7007,7015 ****
  @multitable @columnfractions .15 .70
  @item @var{UNIT}   @tab An open I/O unit number of type @code{INTEGER}.
  @item @var{VALUES} @tab The type shall be @code{INTEGER, DIMENSION(13)}
! of the default kind.
  @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}
! of the default kind.
  Returns 0 on success and a system specific error code otherwise.
  @end multitable
  
--- 7007,7015 ----
  @multitable @columnfractions .15 .70
  @item @var{UNIT}   @tab An open I/O unit number of type @code{INTEGER}.
  @item @var{VALUES} @tab The type shall be @code{INTEGER, DIMENSION(13)}
! of either kind 4 or kind 8.
  @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}
! of kind 2 or larger.
  Returns 0 on success and a system specific error code otherwise.
  @end multitable
  
*************** Subroutine, function
*** 10314,10322 ****
  @item @var{NAME}   @tab The type shall be @code{CHARACTER} of the default
  kind, a valid path within the file system.
  @item @var{VALUES} @tab The type shall be @code{INTEGER, DIMENSION(13)}
! of the default kind.
  @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}
! of the default kind.
  Returns 0 on success and a system specific error code otherwise.
  @end multitable
  
--- 10314,10322 ----
  @item @var{NAME}   @tab The type shall be @code{CHARACTER} of the default
  kind, a valid path within the file system.
  @item @var{VALUES} @tab The type shall be @code{INTEGER, DIMENSION(13)}
! of either kind 4 or kind 8.
  @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}
! of kind 2 or larger.
  Returns 0 on success and a system specific error code otherwise.
  @end multitable
  
*************** GNU extension
*** 14440,14467 ****
  @end multitable
  
  @item @emph{Description}:
! This function returns information about a file. No permissions are required on 
! the file itself, but execute (search) permission is required on all of the 
  directories in path that lead to the file.
  
  The elements that are obtained and stored in the array @code{VALUES}:
  @multitable @columnfractions .15 .70
! @item @code{VALUES(1)}   @tab  Device ID 
! @item @code{VALUES(2)}   @tab  Inode number 
! @item @code{VALUES(3)}   @tab  File mode 
! @item @code{VALUES(4)}   @tab  Number of links 
! @item @code{VALUES(5)}   @tab  Owner's uid 
! @item @code{VALUES(6)}   @tab  Owner's gid 
! @item @code{VALUES(7)}   @tab  ID of device containing directory entry for file (0 if not available) 
! @item @code{VALUES(8)}   @tab  File size (bytes) 
! @item @code{VALUES(9)}   @tab  Last access time 
! @item @code{VALUES(10)}  @tab  Last modification time 
! @item @code{VALUES(11)}  @tab  Last file status change time 
! @item @code{VALUES(12)}  @tab  Preferred I/O block size (-1 if not available) 
  @item @code{VALUES(13)}  @tab  Number of blocks allocated (-1 if not available)
  @end multitable
  
! Not all these elements are relevant on all systems. 
  If an element is not relevant, it is returned as 0.
  If the value of an element would overflow the range of default integer,
  a -1 is returned instead.
--- 14440,14467 ----
  @end multitable
  
  @item @emph{Description}:
! This function returns information about a file. No permissions are required on
! the file itself, but execute (search) permission is required on all of the
  directories in path that lead to the file.
  
  The elements that are obtained and stored in the array @code{VALUES}:
  @multitable @columnfractions .15 .70
! @item @code{VALUES(1)}   @tab  Device ID
! @item @code{VALUES(2)}   @tab  Inode number
! @item @code{VALUES(3)}   @tab  File mode
! @item @code{VALUES(4)}   @tab  Number of links
! @item @code{VALUES(5)}   @tab  Owner's uid
! @item @code{VALUES(6)}   @tab  Owner's gid
! @item @code{VALUES(7)}   @tab  ID of device containing directory entry for file (0 if not available)
! @item @code{VALUES(8)}   @tab  File size (bytes)
! @item @code{VALUES(9)}   @tab  Last access time
! @item @code{VALUES(10)}  @tab  Last modification time
! @item @code{VALUES(11)}  @tab  Last file status change time
! @item @code{VALUES(12)}  @tab  Preferred I/O block size (-1 if not available)
  @item @code{VALUES(13)}  @tab  Number of blocks allocated (-1 if not available)
  @end multitable
  
! Not all these elements are relevant on all systems.
  If an element is not relevant, it is returned as 0.
  If the value of an element would overflow the range of default integer,
  a -1 is returned instead.
*************** Subroutine, function
*** 14477,14485 ****
  @item @var{NAME}   @tab The type shall be @code{CHARACTER}, of the
  default kind and a valid path within the file system.
  @item @var{VALUES} @tab The type shall be @code{INTEGER, DIMENSION(13)}
! of the default kind.
  @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}
! of the default kind.
  Returns 0 on success and a system specific error code otherwise.
  @end multitable
  
--- 14477,14485 ----
  @item @var{NAME}   @tab The type shall be @code{CHARACTER}, of the
  default kind and a valid path within the file system.
  @item @var{VALUES} @tab The type shall be @code{INTEGER, DIMENSION(13)}
! of either kind 4 or kind 8.
  @item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}
! of kind 2 or larger.
  Returns 0 on success and a system specific error code otherwise.
  @end multitable
  
diff -Nrcpad gcc-16-20250907/gcc/fortran/iresolve.cc gcc-16-20250914/gcc/fortran/iresolve.cc
*** gcc-16-20250907/gcc/fortran/iresolve.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/iresolve.cc	Sun Sep 14 22:32:09 2025
*************** gfc_resolve_sqrt (gfc_expr *f, gfc_expr
*** 3000,3029 ****
  /* Resolve the g77 compatibility function STAT AND FSTAT.  */
  
  void
! gfc_resolve_stat (gfc_expr *f, gfc_expr *n ATTRIBUTE_UNUSED,
! 		  gfc_expr *a ATTRIBUTE_UNUSED)
  {
    f->ts.type = BT_INTEGER;
!   f->ts.kind = gfc_default_integer_kind;
    f->value.function.name = gfc_get_string (PREFIX ("stat_i%d"), f->ts.kind);
  }
  
  
  void
! gfc_resolve_lstat (gfc_expr *f, gfc_expr *n ATTRIBUTE_UNUSED,
! 		   gfc_expr *a ATTRIBUTE_UNUSED)
  {
    f->ts.type = BT_INTEGER;
!   f->ts.kind = gfc_default_integer_kind;
    f->value.function.name = gfc_get_string (PREFIX ("lstat_i%d"), f->ts.kind);
  }
  
  
  void
! gfc_resolve_fstat (gfc_expr *f, gfc_expr *n, gfc_expr *a ATTRIBUTE_UNUSED)
  {
    f->ts.type = BT_INTEGER;
!   f->ts.kind = gfc_default_integer_kind;
    if (n->ts.kind != f->ts.kind)
      gfc_convert_type (n, &f->ts, 2);
  
--- 3000,3027 ----
  /* Resolve the g77 compatibility function STAT AND FSTAT.  */
  
  void
! gfc_resolve_stat (gfc_expr *f, gfc_expr *n ATTRIBUTE_UNUSED, gfc_expr *a)
  {
    f->ts.type = BT_INTEGER;
!   f->ts.kind = a->ts.kind;
    f->value.function.name = gfc_get_string (PREFIX ("stat_i%d"), f->ts.kind);
  }
  
  
  void
! gfc_resolve_lstat (gfc_expr *f, gfc_expr *n ATTRIBUTE_UNUSED, gfc_expr *a)
  {
    f->ts.type = BT_INTEGER;
!   f->ts.kind = a->ts.kind;
    f->value.function.name = gfc_get_string (PREFIX ("lstat_i%d"), f->ts.kind);
  }
  
  
  void
! gfc_resolve_fstat (gfc_expr *f, gfc_expr *n, gfc_expr *a)
  {
    f->ts.type = BT_INTEGER;
!   f->ts.kind = a->ts.kind;
    if (n->ts.kind != f->ts.kind)
      gfc_convert_type (n, &f->ts, 2);
  
*************** void
*** 4159,4165 ****
  gfc_resolve_stat_sub (gfc_code *c)
  {
    const char *name;
!   name = gfc_get_string (PREFIX ("stat_i%d_sub"), gfc_default_integer_kind);
    c->resolved_sym = gfc_get_intrinsic_sub_symbol (name);
  }
  
--- 4157,4165 ----
  gfc_resolve_stat_sub (gfc_code *c)
  {
    const char *name;
!   gfc_typespec *ts;
!   ts = &c->ext.actual->next->expr->ts;
!   name = gfc_get_string (PREFIX ("stat_i%d_sub"), ts->kind);
    c->resolved_sym = gfc_get_intrinsic_sub_symbol (name);
  }
  
*************** void
*** 4168,4174 ****
  gfc_resolve_lstat_sub (gfc_code *c)
  {
    const char *name;
!   name = gfc_get_string (PREFIX ("lstat_i%d_sub"), gfc_default_integer_kind);
    c->resolved_sym = gfc_get_intrinsic_sub_symbol (name);
  }
  
--- 4168,4176 ----
  gfc_resolve_lstat_sub (gfc_code *c)
  {
    const char *name;
!   gfc_typespec *ts;
!   ts = &c->ext.actual->next->expr->ts;
!   name = gfc_get_string (PREFIX ("lstat_i%d_sub"), ts->kind);
    c->resolved_sym = gfc_get_intrinsic_sub_symbol (name);
  }
  
diff -Nrcpad gcc-16-20250907/gcc/fortran/matchexp.cc gcc-16-20250914/gcc/fortran/matchexp.cc
*** gcc-16-20250907/gcc/fortran/matchexp.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/matchexp.cc	Sun Sep 14 22:32:09 2025
*************** gfc_get_parentheses (gfc_expr *e)
*** 138,143 ****
--- 138,202 ----
    return e2;
  }
  
+ /* Match a conditional expression.  */
+ 
+ static match
+ match_conditional (gfc_expr **result)
+ {
+   gfc_expr *condition, *true_expr, *false_expr;
+   locus where;
+   match m;
+ 
+   where = gfc_current_locus;
+ 
+   m = gfc_match_expr (&condition);
+   if (m != MATCH_YES)
+     {
+       gfc_error (expression_syntax);
+       return MATCH_ERROR;
+     }
+ 
+   m = gfc_match_char ('?');
+   if (m != MATCH_YES)
+     {
+       *result = condition;
+       return MATCH_YES;
+     }
+   else if (!gfc_notify_std (GFC_STD_F2023, "Conditional expression at %L",
+ 			    &where))
+     {
+       gfc_free_expr (condition);
+       return MATCH_ERROR;
+     }
+ 
+   gfc_gobble_whitespace ();
+   m = gfc_match_expr (&true_expr);
+   if (m != MATCH_YES)
+     {
+       gfc_free_expr (condition);
+       return m;
+     }
+ 
+   m = gfc_match_char (':');
+   if (m != MATCH_YES)
+     {
+       gfc_error ("Expected ':' in conditional expression at %C");
+       gfc_free_expr (condition);
+       gfc_free_expr (true_expr);
+       return MATCH_ERROR;
+     }
+ 
+   m = match_conditional (&false_expr);
+   if (m != MATCH_YES)
+     {
+       gfc_free_expr (condition);
+       gfc_free_expr (true_expr);
+       return m;
+     }
+ 
+   *result = gfc_get_conditional_expr (&where, condition, true_expr, false_expr);
+   return MATCH_YES;
+ }
  
  /* Match a primary expression.  */
  
*************** match_primary (gfc_expr **result)
*** 163,182 ****
    if (gfc_match_char ('(') != MATCH_YES)
      return MATCH_NO;
  
!   m = gfc_match_expr (&e);
!   if (m == MATCH_NO)
!     goto syntax;
!   if (m == MATCH_ERROR)
      return m;
  
    m = gfc_match_char (')');
    if (m == MATCH_NO)
      gfc_error ("Expected a right parenthesis in expression at %C");
  
!   /* Now we have the expression inside the parentheses, build the
!      expression pointing to it. By 7.1.7.2, any expression in
!      parentheses shall be treated as a data entity.  */
!   *result = gfc_get_parentheses (e);
  
    if (m != MATCH_YES)
      {
--- 222,241 ----
    if (gfc_match_char ('(') != MATCH_YES)
      return MATCH_NO;
  
!   m = match_conditional (&e);
!   if (m != MATCH_YES)
      return m;
  
    m = gfc_match_char (')');
    if (m == MATCH_NO)
      gfc_error ("Expected a right parenthesis in expression at %C");
  
!   /* Now we have the expression inside the parentheses, build the expression
!      pointing to it. By 7.1.7.2, any expression in parentheses shall be treated
!      as a data entity.
!      Note that if the expression is a conditional expression, we will omit the
!      extra parentheses.  */
!   *result = e->expr_type == EXPR_CONDITIONAL ? e : gfc_get_parentheses (e);
  
    if (m != MATCH_YES)
      {
*************** match_primary (gfc_expr **result)
*** 185,194 ****
      }
  
    return MATCH_YES;
- 
- syntax:
-   gfc_error (expression_syntax);
-   return MATCH_ERROR;
  }
  
  
--- 244,249 ----
diff -Nrcpad gcc-16-20250907/gcc/fortran/module.cc gcc-16-20250914/gcc/fortran/module.cc
*** gcc-16-20250907/gcc/fortran/module.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/module.cc	Sun Sep 14 22:32:09 2025
*************** static const mstring expr_types[] = {
*** 3622,3628 ****
      minit ("ARRAY", EXPR_ARRAY),
      minit ("NULL", EXPR_NULL),
      minit ("COMPCALL", EXPR_COMPCALL),
!     minit (NULL, -1)
  };
  
  /* INTRINSIC_ASSIGN is missing because it is used as an index for
--- 3622,3630 ----
      minit ("ARRAY", EXPR_ARRAY),
      minit ("NULL", EXPR_NULL),
      minit ("COMPCALL", EXPR_COMPCALL),
!     minit ("PPC", EXPR_PPC),
!     minit ("CONDITIONAL", EXPR_CONDITIONAL),
!     minit (NULL, -1),
  };
  
  /* INTRINSIC_ASSIGN is missing because it is used as an index for
*************** mio_expr (gfc_expr **ep)
*** 3843,3848 ****
--- 3845,3856 ----
  
        break;
  
+     case EXPR_CONDITIONAL:
+       mio_expr (&e->value.conditional.condition);
+       mio_expr (&e->value.conditional.true_expr);
+       mio_expr (&e->value.conditional.false_expr);
+       break;
+ 
      case EXPR_FUNCTION:
        mio_symtree_ref (&e->symtree);
        mio_actual_arglist (&e->value.function.actual, false);
diff -Nrcpad gcc-16-20250907/gcc/fortran/primary.cc gcc-16-20250914/gcc/fortran/primary.cc
*** gcc-16-20250907/gcc/fortran/primary.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/primary.cc	Sun Sep 14 22:32:09 2025
*************** gfc_variable_attr (gfc_expr *expr, gfc_t
*** 3057,3068 ****
--- 3057,3070 ----
  
  	if (comp->ts.type == BT_CLASS)
  	  {
+ 	    dimension = CLASS_DATA (comp)->attr.dimension;
  	    codimension = CLASS_DATA (comp)->attr.codimension;
  	    pointer = CLASS_DATA (comp)->attr.class_pointer;
  	    allocatable = CLASS_DATA (comp)->attr.allocatable;
  	  }
  	else
  	  {
+ 	    dimension = comp->attr.dimension;
  	    codimension = comp->attr.codimension;
  	    if (expr->ts.type == BT_CLASS && strcmp (comp->name, "_data") == 0)
  	      pointer = comp->attr.class_pointer;
diff -Nrcpad gcc-16-20250907/gcc/fortran/resolve.cc gcc-16-20250914/gcc/fortran/resolve.cc
*** gcc-16-20250907/gcc/fortran/resolve.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/resolve.cc	Sun Sep 14 22:32:09 2025
*************** simplify_op:
*** 4989,4994 ****
--- 4989,5061 ----
    return t;
  }
  
+ static bool
+ resolve_conditional (gfc_expr *expr)
+ {
+   gfc_expr *condition, *true_expr, *false_expr;
+ 
+   condition = expr->value.conditional.condition;
+   true_expr = expr->value.conditional.true_expr;
+   false_expr = expr->value.conditional.false_expr;
+ 
+   if (!gfc_resolve_expr (condition) || !gfc_resolve_expr (true_expr)
+       || !gfc_resolve_expr (false_expr))
+     return false;
+ 
+   if (condition->ts.type != BT_LOGICAL || condition->rank != 0)
+     {
+       gfc_error (
+ 	"Condition in conditional expression must be a scalar logical at %L",
+ 	&condition->where);
+       return false;
+     }
+ 
+   if (true_expr->ts.type != false_expr->ts.type)
+     {
+       gfc_error ("expr at %L and expr at %L in conditional expression "
+ 		 "must have the same declared type",
+ 		 &true_expr->where, &false_expr->where);
+       return false;
+     }
+ 
+   if (true_expr->ts.kind != false_expr->ts.kind)
+     {
+       gfc_error ("expr at %L and expr at %L in conditional expression "
+ 		 "must have the same kind parameter",
+ 		 &true_expr->where, &false_expr->where);
+       return false;
+     }
+ 
+   if (true_expr->rank != false_expr->rank)
+     {
+       gfc_error ("expr at %L and expr at %L in conditional expression "
+ 		 "must have the same rank",
+ 		 &true_expr->where, &false_expr->where);
+       return false;
+     }
+ 
+   /* TODO: support more data types for conditional expressions  */
+   if (true_expr->ts.type != BT_INTEGER && true_expr->ts.type != BT_LOGICAL
+       && true_expr->ts.type != BT_REAL && true_expr->ts.type != BT_COMPLEX)
+     {
+       gfc_error ("Sorry, only integer, logical, real and complex types "
+ 		 "are currently supported for conditional expressions at %L",
+ 		 &expr->where);
+       return false;
+     }
+ 
+   if (true_expr->rank > 0)
+     {
+       gfc_error ("Sorry, array is currently unsupported for conditional "
+ 		 "expressions at %L",
+ 		 &expr->where);
+       return false;
+     }
+ 
+   expr->ts = true_expr->ts;
+   expr->rank = true_expr->rank;
+   return true;
+ }
  
  /************** Array resolution subroutines **************/
  
*************** gfc_resolve_expr (gfc_expr *e)
*** 8040,8045 ****
--- 8107,8116 ----
        t = resolve_operator (e);
        break;
  
+     case EXPR_CONDITIONAL:
+       t = resolve_conditional (e);
+       break;
+ 
      case EXPR_FUNCTION:
      case EXPR_VARIABLE:
  
diff -Nrcpad gcc-16-20250907/gcc/fortran/trans-array.cc gcc-16-20250914/gcc/fortran/trans-array.cc
*** gcc-16-20250907/gcc/fortran/trans-array.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/trans-array.cc	Sun Sep 14 22:32:09 2025
*************** gfc_walk_op_expr (gfc_ss * ss, gfc_expr
*** 12713,12718 ****
--- 12713,12727 ----
    return head2;
  }
  
+ static gfc_ss *
+ gfc_walk_conditional_expr (gfc_ss *ss, gfc_expr *expr)
+ {
+   gfc_ss *head;
+ 
+   head = gfc_walk_subexpr (ss, expr->value.conditional.true_expr);
+   head = gfc_walk_subexpr (head, expr->value.conditional.false_expr);
+   return head;
+ }
  
  /* Reverse a SS chain.  */
  
*************** gfc_walk_subexpr (gfc_ss * ss, gfc_expr
*** 12985,12990 ****
--- 12994,13003 ----
        head = gfc_walk_op_expr (ss, expr);
        return head;
  
+     case EXPR_CONDITIONAL:
+       head = gfc_walk_conditional_expr (ss, expr);
+       return head;
+ 
      case EXPR_FUNCTION:
        head = gfc_walk_function_expr (ss, expr);
        return head;
diff -Nrcpad gcc-16-20250907/gcc/fortran/trans-decl.cc gcc-16-20250914/gcc/fortran/trans-decl.cc
*** gcc-16-20250907/gcc/fortran/trans-decl.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/trans-decl.cc	Sun Sep 14 22:32:09 2025
*************** tree gfor_fndecl_iargc;
*** 225,230 ****
--- 225,236 ----
  tree gfor_fndecl_kill;
  tree gfor_fndecl_kill_sub;
  tree gfor_fndecl_is_contiguous0;
+ tree gfor_fndecl_fstat_i4_sub;
+ tree gfor_fndecl_fstat_i8_sub;
+ tree gfor_fndecl_lstat_i4_sub;
+ tree gfor_fndecl_lstat_i8_sub;
+ tree gfor_fndecl_stat_i4_sub;
+ tree gfor_fndecl_stat_i8_sub;
  
  
  /* Intrinsic functions implemented in Fortran.  */
*************** gfc_build_intrinsic_function_decls (void
*** 3910,3915 ****
--- 3916,3949 ----
  	gfc_int4_type_node, 1, pvoid_type_node);
    DECL_PURE_P (gfor_fndecl_is_contiguous0) = 1;
    TREE_NOTHROW (gfor_fndecl_is_contiguous0) = 1;
+ 
+   gfor_fndecl_fstat_i4_sub = gfc_build_library_function_decl (
+ 	get_identifier (PREFIX ("fstat_i4_sub")), void_type_node,
+ 	3, gfc_pint4_type_node, gfc_pint4_type_node, gfc_pint4_type_node);
+ 
+   gfor_fndecl_fstat_i8_sub = gfc_build_library_function_decl (
+ 	get_identifier (PREFIX ("fstat_i8_sub")), void_type_node,
+ 	3, gfc_pint8_type_node, gfc_pint8_type_node, gfc_pint8_type_node);
+ 
+   gfor_fndecl_lstat_i4_sub = gfc_build_library_function_decl (
+ 	get_identifier (PREFIX ("lstat_i4_sub")), void_type_node,
+ 	4, pchar_type_node, gfc_pint4_type_node, gfc_pint4_type_node,
+ 	gfc_charlen_type_node);
+ 
+   gfor_fndecl_lstat_i8_sub = gfc_build_library_function_decl (
+ 	get_identifier (PREFIX ("lstat_i8_sub")), void_type_node,
+ 	4, pchar_type_node, gfc_pint8_type_node, gfc_pint8_type_node,
+ 	gfc_charlen_type_node);
+ 
+   gfor_fndecl_stat_i4_sub = gfc_build_library_function_decl (
+ 	get_identifier (PREFIX ("stat_i4_sub")), void_type_node,
+ 	4, pchar_type_node, gfc_pint4_type_node, gfc_pint4_type_node,
+ 	gfc_charlen_type_node);
+ 
+   gfor_fndecl_stat_i8_sub = gfc_build_library_function_decl (
+ 	get_identifier (PREFIX ("stat_i8_sub")), void_type_node,
+ 	4, pchar_type_node, gfc_pint8_type_node, gfc_pint8_type_node,
+ 	gfc_charlen_type_node);
  }
  
  
diff -Nrcpad gcc-16-20250907/gcc/fortran/trans-expr.cc gcc-16-20250914/gcc/fortran/trans-expr.cc
*** gcc-16-20250907/gcc/fortran/trans-expr.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/trans-expr.cc	Sun Sep 14 22:32:09 2025
*************** gfc_conv_expr_op (gfc_se * se, gfc_expr
*** 4368,4373 ****
--- 4368,4425 ----
    gfc_add_block_to_block (&se->post, &lse.post);
  }
  
+ static void
+ gfc_conv_conditional_expr (gfc_se *se, gfc_expr *expr)
+ {
+   gfc_se cond_se, true_se, false_se;
+   tree condition, true_val, false_val;
+   tree type;
+ 
+   gfc_init_se (&cond_se, se);
+   gfc_init_se (&true_se, se);
+   gfc_init_se (&false_se, se);
+ 
+   gfc_conv_expr (&cond_se, expr->value.conditional.condition);
+   gfc_add_block_to_block (&se->pre, &cond_se.pre);
+   condition = gfc_evaluate_now (cond_se.expr, &se->pre);
+ 
+   true_se.want_pointer = se->want_pointer;
+   gfc_conv_expr (&true_se, expr->value.conditional.true_expr);
+   true_val = true_se.expr;
+   false_se.want_pointer = se->want_pointer;
+   gfc_conv_expr (&false_se, expr->value.conditional.false_expr);
+   false_val = false_se.expr;
+ 
+   if (true_se.pre.head != NULL_TREE || false_se.pre.head != NULL_TREE)
+     gfc_add_expr_to_block (
+       &se->pre,
+       fold_build3_loc (input_location, COND_EXPR, void_type_node, condition,
+ 		       true_se.pre.head != NULL_TREE
+ 			 ? gfc_finish_block (&true_se.pre)
+ 			 : build_empty_stmt (input_location),
+ 		       false_se.pre.head != NULL_TREE
+ 			 ? gfc_finish_block (&false_se.pre)
+ 			 : build_empty_stmt (input_location)));
+ 
+   if (true_se.post.head != NULL_TREE || false_se.post.head != NULL_TREE)
+     gfc_add_expr_to_block (
+       &se->post,
+       fold_build3_loc (input_location, COND_EXPR, void_type_node, condition,
+ 		       true_se.post.head != NULL_TREE
+ 			 ? gfc_finish_block (&true_se.post)
+ 			 : build_empty_stmt (input_location),
+ 		       false_se.post.head != NULL_TREE
+ 			 ? gfc_finish_block (&false_se.post)
+ 			 : build_empty_stmt (input_location)));
+ 
+   type = gfc_typenode_for_spec (&expr->ts);
+   if (se->want_pointer)
+     type = build_pointer_type (type);
+ 
+   se->expr = fold_build3_loc (input_location, COND_EXPR, type, condition,
+ 			      true_val, false_val);
+ }
+ 
  /* If a string's length is one, we convert it to a single character.  */
  
  tree
*************** gfc_apply_interface_mapping_to_expr (gfc
*** 5317,5322 ****
--- 5369,5381 ----
        gfc_apply_interface_mapping_to_expr (mapping, expr->value.op.op2);
        break;
  
+     case EXPR_CONDITIONAL:
+       gfc_apply_interface_mapping_to_expr (mapping,
+ 					   expr->value.conditional.true_expr);
+       gfc_apply_interface_mapping_to_expr (mapping,
+ 					   expr->value.conditional.false_expr);
+       break;
+ 
      case EXPR_FUNCTION:
        for (actual = expr->value.function.actual; actual; actual = actual->next)
  	gfc_apply_interface_mapping_to_expr (mapping, actual->expr);
*************** gfc_conv_expr (gfc_se * se, gfc_expr * e
*** 10464,10469 ****
--- 10523,10532 ----
        gfc_conv_expr_op (se, expr);
        break;
  
+     case EXPR_CONDITIONAL:
+       gfc_conv_conditional_expr (se, expr);
+       break;
+ 
      case EXPR_FUNCTION:
        gfc_conv_function_expr (se, expr);
        break;
*************** gfc_conv_expr_reference (gfc_se * se, gf
*** 10607,10612 ****
--- 10670,10682 ----
        return;
      }
  
+   if (expr->expr_type == EXPR_CONDITIONAL)
+     {
+       se->want_pointer = 1;
+       gfc_conv_expr (se, expr);
+       return;
+     }
+ 
    if (expr->expr_type == EXPR_FUNCTION
        && ((expr->value.function.esym
  	   && expr->value.function.esym->result
diff -Nrcpad gcc-16-20250907/gcc/fortran/trans-intrinsic.cc gcc-16-20250914/gcc/fortran/trans-intrinsic.cc
*** gcc-16-20250907/gcc/fortran/trans-intrinsic.cc	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/trans-intrinsic.cc	Sun Sep 14 22:32:09 2025
*************** gfc_conv_intrinsic_findloc (gfc_se *se,
*** 5871,5876 ****
--- 5871,5996 ----
  
  }
  
+ /* Emit code for fstat, lstat and stat intrinsic subroutines.  */
+ 
+ static tree
+ conv_intrinsic_fstat_lstat_stat_sub (gfc_code *code)
+ {
+   stmtblock_t block;
+   gfc_se se, se_stat;
+   tree unit = NULL_TREE;
+   tree name = NULL_TREE;
+   tree slen = NULL_TREE;
+   tree vals;
+   tree arg3 = NULL_TREE;
+   tree stat = NULL_TREE ;
+   tree present = NULL_TREE;
+   tree tmp;
+   int kind;
+ 
+   gfc_init_block (&block);
+   gfc_init_se (&se, NULL);
+ 
+   switch (code->resolved_isym->id)
+     {
+     case GFC_ISYM_FSTAT:
+       /* Deal with the UNIT argument.  */
+       gfc_conv_expr (&se, code->ext.actual->expr);
+       gfc_add_block_to_block (&block, &se.pre);
+       unit = gfc_evaluate_now (se.expr, &block);
+       unit = gfc_build_addr_expr (NULL_TREE, unit);
+       gfc_add_block_to_block (&block, &se.post);
+       break;
+ 
+     case GFC_ISYM_LSTAT:
+     case GFC_ISYM_STAT:
+       /* Deal with the NAME argument.  */
+       gfc_conv_expr (&se, code->ext.actual->expr);
+       gfc_conv_string_parameter (&se);
+       gfc_add_block_to_block (&block, &se.pre);
+       name = se.expr;
+       slen = se.string_length;
+       gfc_add_block_to_block (&block, &se.post);
+       break;
+ 
+     default:
+       gcc_unreachable ();
+     }
+ 
+   /* Deal with the VALUES argument.  */
+   gfc_init_se (&se, NULL);
+   gfc_conv_expr_descriptor (&se, code->ext.actual->next->expr);
+   vals = gfc_build_addr_expr (NULL_TREE, se.expr);
+   gfc_add_block_to_block (&block, &se.pre);
+   gfc_add_block_to_block (&block, &se.post);
+   kind = code->ext.actual->next->expr->ts.kind;
+ 
+   /* Deal with an optional STATUS.  */
+   if (code->ext.actual->next->next->expr)
+     {
+       gfc_init_se (&se_stat, NULL);
+       gfc_conv_expr (&se_stat, code->ext.actual->next->next->expr);
+       stat = gfc_create_var (gfc_get_int_type (kind), "_stat");
+       arg3 = gfc_build_addr_expr (NULL_TREE, stat);
+ 
+       /* Handle case of status being an optional dummy.  */
+       gfc_symbol *sym = code->ext.actual->next->next->expr->symtree->n.sym;
+       if (sym->attr.dummy && sym->attr.optional)
+ 	{
+ 	  present = gfc_conv_expr_present (sym);
+ 	  arg3 = fold_build3_loc (input_location, COND_EXPR,
+ 				  TREE_TYPE (arg3), present, arg3,
+ 				  fold_convert (TREE_TYPE (arg3),
+ 						null_pointer_node));
+ 	}
+     }
+ 
+   /* Call library function depending on KIND of VALUES argument.  */
+   switch (code->resolved_isym->id)
+     {
+     case GFC_ISYM_FSTAT:
+       tmp = (kind == 4 ? gfor_fndecl_fstat_i4_sub : gfor_fndecl_fstat_i8_sub);
+       break;
+     case GFC_ISYM_LSTAT:
+       tmp = (kind == 4 ? gfor_fndecl_lstat_i4_sub : gfor_fndecl_lstat_i8_sub);
+       break;
+     case GFC_ISYM_STAT:
+       tmp = (kind == 4 ? gfor_fndecl_stat_i4_sub : gfor_fndecl_stat_i8_sub);
+       break;
+     default:
+       gcc_unreachable ();
+     }
+ 
+   if (code->resolved_isym->id == GFC_ISYM_FSTAT)
+     tmp = build_call_expr_loc (input_location, tmp, 3, unit, vals,
+ 			       stat ? arg3 : null_pointer_node);
+   else
+     tmp = build_call_expr_loc (input_location, tmp, 4, name, vals,
+ 			       stat ? arg3 : null_pointer_node, slen);
+   gfc_add_expr_to_block (&block, tmp);
+ 
+   /* Handle kind conversion of status.  */
+   if (stat && stat != se_stat.expr)
+     {
+       stmtblock_t block2;
+ 
+       gfc_init_block (&block2);
+       gfc_add_modify (&block2, se_stat.expr,
+ 		      fold_convert (TREE_TYPE (se_stat.expr), stat));
+ 
+       if (present)
+ 	{
+ 	  tmp = build3_v (COND_EXPR, present, gfc_finish_block (&block2),
+ 			  build_empty_stmt (input_location));
+ 	  gfc_add_expr_to_block (&block, tmp);
+ 	}
+       else
+ 	gfc_add_block_to_block (&block, &block2);
+     }
+ 
+   return gfc_finish_block (&block);
+ }
+ 
  /* Emit code for minval or maxval intrinsic.  There are many different cases
     we need to handle.  For performance reasons we sometimes create two
     loops instead of one, where the second one is much simpler.
*************** gfc_conv_intrinsic_subroutine (gfc_code
*** 13352,13357 ****
--- 13472,13483 ----
        res = conv_intrinsic_free (code);
        break;
  
+     case GFC_ISYM_FSTAT:
+     case GFC_ISYM_LSTAT:
+     case GFC_ISYM_STAT:
+       res = conv_intrinsic_fstat_lstat_stat_sub (code);
+       break;
+ 
      case GFC_ISYM_RANDOM_INIT:
        res = conv_intrinsic_random_init (code);
        break;
diff -Nrcpad gcc-16-20250907/gcc/fortran/trans.h gcc-16-20250914/gcc/fortran/trans.h
*** gcc-16-20250907/gcc/fortran/trans.h	Sun Sep  7 22:32:59 2025
--- gcc-16-20250914/gcc/fortran/trans.h	Sun Sep 14 22:32:09 2025
*************** extern GTY(()) tree gfor_fndecl_iargc;
*** 983,988 ****
--- 983,994 ----
  extern GTY(()) tree gfor_fndecl_kill;
  extern GTY(()) tree gfor_fndecl_kill_sub;
  extern GTY(()) tree gfor_fndecl_is_contiguous0;
+ extern GTY(()) tree gfor_fndecl_fstat_i4_sub;
+ extern GTY(()) tree gfor_fndecl_fstat_i8_sub;
+ extern GTY(()) tree gfor_fndecl_lstat_i4_sub;
+ extern GTY(()) tree gfor_fndecl_lstat_i8_sub;
+ extern GTY(()) tree gfor_fndecl_stat_i4_sub;
+ extern GTY(()) tree gfor_fndecl_stat_i8_sub;
  
  /* Implemented in Fortran.  */
  extern GTY(()) tree gfor_fndecl_sc_kind;
diff -Nrcpad gcc-16-20250907/gcc/gimple-lower-bitint.cc gcc-16-20250914/gcc/gimple-lower-bitint.cc
*** gcc-16-20250907/gcc/gimple-lower-bitint.cc	Sun Sep  7 22:33:00 2025
--- gcc-16-20250914/gcc/gimple-lower-bitint.cc	Sun Sep 14 22:32:09 2025
*************** gimple_lower_bitint (void)
*** 7232,7246 ****
  	      if (is_gimple_assign (SSA_NAME_DEF_STMT (s)))
  		switch (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (s)))
  		  {
  		  case IMAGPART_EXPR:
  		    {
! 		      tree rhs1 = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (s));
  		      rhs1 = TREE_OPERAND (rhs1, 0);
  		      if (TREE_CODE (rhs1) == SSA_NAME)
  			{
  			  gimple *g = SSA_NAME_DEF_STMT (rhs1);
  			  if (optimizable_arith_overflow (g))
! 			    continue;
  			}
  		    }
  		    /* FALLTHRU */
--- 7232,7293 ----
  	      if (is_gimple_assign (SSA_NAME_DEF_STMT (s)))
  		switch (gimple_assign_rhs_code (SSA_NAME_DEF_STMT (s)))
  		  {
+ 		  case REALPART_EXPR:
  		  case IMAGPART_EXPR:
  		    {
! 		      gimple *ds = SSA_NAME_DEF_STMT (s);
! 		      tree rhs1 = gimple_assign_rhs1 (ds);
  		      rhs1 = TREE_OPERAND (rhs1, 0);
  		      if (TREE_CODE (rhs1) == SSA_NAME)
  			{
  			  gimple *g = SSA_NAME_DEF_STMT (rhs1);
  			  if (optimizable_arith_overflow (g))
! 			    {
! 			      if (gimple_assign_rhs_code (ds) == IMAGPART_EXPR)
! 				continue;
! 			      if (gimple_store_p (use_stmt))
! 				{
! 				  /* Punt if the cast use of IMAGPART_EXPR stmt
! 				     appears before the store use_stmt, because
! 				     optimizable arith overflow can't be
! 				     lowered at the store location in that case.
! 				     See PR121828.  */
! 				  gimple_stmt_iterator gsi
! 				    = gsi_for_stmt (use_stmt);
! 				  unsigned int cnt = 0;
! 				  do
! 				    {
! 				      gsi_prev_nondebug (&gsi);
! 				      if (gsi_end_p (gsi))
! 					break;
! 				      gimple *g2 = gsi_stmt (gsi);
! 				      if (g2 == ds)
! 					break;
! 				      if (++cnt == 64)
! 					break;
! 				      if (!gimple_assign_cast_p (g2))
! 					continue;
! 				      tree rhs2 = gimple_assign_rhs1 (g2);
! 				      if (TREE_CODE (rhs2) != SSA_NAME)
! 					continue;
! 				      gimple *g3 = SSA_NAME_DEF_STMT (rhs2);
! 				      if (!is_gimple_assign (g3))
! 					continue;
! 				      if (gimple_assign_rhs_code (g3)
! 					  != IMAGPART_EXPR)
! 					continue;
! 				      rhs2 = gimple_assign_rhs1 (g3);
! 				      rhs2 = TREE_OPERAND (rhs2, 0);
! 				      if (rhs2 != rhs1)
! 					continue;
! 				      cnt = 64;
! 				      break;
! 				    }
! 				  while (1);
! 				  if (cnt == 64)
! 				    break;
! 				}
! 			    }
  			}
  		    }
  		    /* FALLTHRU */
*************** gimple_lower_bitint (void)
*** 7251,7257 ****
  		  case EXACT_DIV_EXPR:
  		  case TRUNC_MOD_EXPR:
  		  case FIX_TRUNC_EXPR:
- 		  case REALPART_EXPR:
  		    if (gimple_store_p (use_stmt)
  			&& is_gimple_assign (use_stmt)
  			&& !gimple_has_volatile_ops (use_stmt)
--- 7298,7303 ----
diff -Nrcpad gcc-16-20250907/gcc/ifcvt.cc gcc-16-20250914/gcc/ifcvt.cc
*** gcc-16-20250907/gcc/ifcvt.cc	Sun Sep  7 22:33:00 2025
--- gcc-16-20250914/gcc/ifcvt.cc	Sun Sep 14 22:32:09 2025
*************** static rtx_insn *block_has_only_trap (ba
*** 101,107 ****
  static void init_noce_multiple_sets_info (basic_block,
    auto_delete_vec<noce_multiple_sets_info> &);
  static bool noce_convert_multiple_sets_1 (struct noce_if_info *,
!   auto_delete_vec<noce_multiple_sets_info> &, int *);
  
  /* Count the number of non-jump active insns in BB.  */
  
--- 101,107 ----
  static void init_noce_multiple_sets_info (basic_block,
    auto_delete_vec<noce_multiple_sets_info> &);
  static bool noce_convert_multiple_sets_1 (struct noce_if_info *,
!   auto_delete_vec<noce_multiple_sets_info> &, int *, bool *);
  
  /* Count the number of non-jump active insns in BB.  */
  
*************** noce_convert_multiple_sets (struct noce_
*** 3697,3724 ****
  
    int last_needs_comparison = -1;
  
    bool ok = noce_convert_multiple_sets_1
!     (if_info, insn_info, &last_needs_comparison);
    if (!ok)
        return false;
  
!   /* If there are insns that overwrite part of the initial
!      comparison, we can still omit creating temporaries for
!      the last of them.
!      As the second try will always create a less expensive,
!      valid sequence, we do not need to compare and can discard
!      the first one.  */
!   if (last_needs_comparison != -1)
!     {
!       end_sequence ();
!       start_sequence ();
!       ok = noce_convert_multiple_sets_1
! 	(if_info, insn_info, &last_needs_comparison);
!       /* Actually we should not fail anymore if we reached here,
! 	 but better still check.  */
!       if (!ok)
! 	  return false;
!     }
  
    /* We must have seen some sort of insn to insert, otherwise we were
       given an empty BB to convert, and we can't handle that.  */
--- 3697,3723 ----
  
    int last_needs_comparison = -1;
  
+   bool use_cond_earliest = false;
+ 
    bool ok = noce_convert_multiple_sets_1
!     (if_info, insn_info, &last_needs_comparison, &use_cond_earliest);
    if (!ok)
        return false;
  
!   /* Always perform a second attempt that uses information gathered in the
!      first.  At least we can omit creating temporaries until we definitely
!      need them.  The sequence created in the second attempt is never worse
!      than the first.  */
! 
!   end_sequence ();
!   start_sequence ();
!   ok = noce_convert_multiple_sets_1
!     (if_info, insn_info, &last_needs_comparison, &use_cond_earliest);
! 
!   /* Actually we should not fail anymore if we reached here,
!      but better still check.  */
!   if (!ok)
!     return false;
  
    /* We must have seen some sort of insn to insert, otherwise we were
       given an empty BB to convert, and we can't handle that.  */
*************** noce_convert_multiple_sets (struct noce_
*** 3746,3757 ****
--- 3745,3766 ----
    /* Actually emit the sequence if it isn't too expensive.  */
    rtx_insn *seq = get_insns ();
  
+   /* If the created sequence does not use cond_earliest (but the jump
+      does) add its cost to the original_cost before comparing costs.  */
+   unsigned int original_cost = if_info->original_cost;
+   if (if_info->jump != if_info->cond_earliest && !use_cond_earliest)
+     if_info->original_cost += insn_cost (if_info->cond_earliest,
+ 					 if_info->speed_p);
+ 
    if (!targetm.noce_conversion_profitable_p (seq, if_info))
      {
        end_sequence ();
        return false;
      }
  
+   /* Restore the original cost in case we do not succeed below.  */
+   if_info->original_cost = original_cost;
+ 
    for (insn = seq; insn; insn = NEXT_INSN (insn))
      set_used_flags (insn);
  
*************** noce_convert_multiple_sets (struct noce_
*** 3805,3811 ****
  static bool
  noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
  			      auto_delete_vec<noce_multiple_sets_info> &insn_info,
! 			      int *last_needs_comparison)
  {
    basic_block then_bb = if_info->then_bb;
    rtx_insn *jump = if_info->jump;
--- 3814,3821 ----
  static bool
  noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
  			      auto_delete_vec<noce_multiple_sets_info> &insn_info,
! 			      int *last_needs_comparison,
! 			      bool *use_cond_earliest)
  {
    basic_block then_bb = if_info->then_bb;
    rtx_insn *jump = if_info->jump;
*************** noce_convert_multiple_sets_1 (struct noc
*** 3824,3829 ****
--- 3834,3840 ----
    rtx_insn *insn;
    int count = 0;
    bool second_try = *last_needs_comparison != -1;
+   *use_cond_earliest = false;
  
    FOR_BB_INSNS (then_bb, insn)
      {
*************** noce_convert_multiple_sets_1 (struct noc
*** 4000,4005 ****
--- 4011,4017 ----
  	  temp_dest = temp_dest2;
  	  if (!second_try && read_comparison)
  	    *last_needs_comparison = count;
+ 	  *use_cond_earliest = true;
  	}
        else
  	{
*************** noce_process_if_block (struct noce_if_in
*** 4229,4244 ****
       to calculate a value for x.
       ??? For future expansion, further expand the "multiple X" rules.  */
  
!   /* First look for multiple SETS.  The original costs already include
!      a base cost of COSTS_N_INSNS (2): one instruction for the compare
!      (which we will be needing either way) and one instruction for the
!      branch.  When comparing costs we want to use the branch instruction
!      cost and the sets vs. the cmovs generated here.  Therefore subtract
!      the costs of the compare before checking.
!      ??? Actually, instead of the branch instruction costs we might want
!      to use COSTS_N_INSNS (BRANCH_COST ()) as in other places.  */
  
!   unsigned potential_cost = if_info->original_cost - COSTS_N_INSNS (1);
    unsigned old_cost = if_info->original_cost;
    if (!else_bb
        && HAVE_conditional_move
--- 4241,4253 ----
       to calculate a value for x.
       ??? For future expansion, further expand the "multiple X" rules.  */
  
!   /* First look for multiple SETS.
!      The original costs already include costs for the jump insn as well
!      as for a CC comparison if there is any.
!      If a target re-uses the existing CC comparison we keep track of that
!      and add the costs before default noce_conversion_profitable_p.  */
  
!   unsigned potential_cost = if_info->original_cost;
    unsigned old_cost = if_info->original_cost;
    if (!else_bb
        && HAVE_conditional_move
*************** noce_find_if_block (basic_block test_bb,
*** 4920,4930 ****
      = targetm.max_noce_ifcvt_seq_cost (then_edge);
    /* We'll add in the cost of THEN_BB and ELSE_BB later, when we check
       that they are valid to transform.  We can't easily get back to the insn
!      for COND (and it may not exist if we had to canonicalize to get COND),
!      and jump_insns are always given a cost of 1 by seq_cost, so treat
!      both instructions as having cost COSTS_N_INSNS (1).  */
!   if_info.original_cost = COSTS_N_INSNS (2);
! 
  
    /* Do the real work.  */
  
--- 4929,4938 ----
      = targetm.max_noce_ifcvt_seq_cost (then_edge);
    /* We'll add in the cost of THEN_BB and ELSE_BB later, when we check
       that they are valid to transform.  We can't easily get back to the insn
!      for COND (and it may not exist if we had to canonicalize to get COND).
!      It is assumed that the costs of a jump insn are dependent on the
!      branch costs.  */
!   if_info.original_cost += insn_cost (if_info.jump, if_info.speed_p);
  
    /* Do the real work.  */
  
diff -Nrcpad gcc-16-20250907/gcc/internal-fn.def gcc-16-20250914/gcc/internal-fn.def
*** gcc-16-20250907/gcc/internal-fn.def	Sun Sep  7 22:33:00 2025
--- gcc-16-20250914/gcc/internal-fn.def	Sun Sep 14 22:32:09 2025
*************** DEF_INTERNAL_OPTAB_FN (COMPLEX_ADD_ROT27
*** 422,427 ****
--- 422,429 ----
  DEF_INTERNAL_OPTAB_FN (COMPLEX_MUL, ECF_CONST, cmul, binary)
  DEF_INTERNAL_OPTAB_FN (COMPLEX_MUL_CONJ, ECF_CONST, cmul_conj, binary)
  DEF_INTERNAL_OPTAB_FN (VEC_ADDSUB, ECF_CONST, vec_addsub, binary)
+ DEF_INTERNAL_OPTAB_FN (VEC_TRUNC_ADD_HIGH, ECF_CONST | ECF_NOTHROW,
+ 		       vec_trunc_add_high, binary)
  DEF_INTERNAL_WIDENING_OPTAB_FN (VEC_WIDEN_PLUS,
  				ECF_CONST | ECF_NOTHROW,
  				first,
diff -Nrcpad gcc-16-20250907/gcc/ipa-cp.cc gcc-16-20250914/gcc/ipa-cp.cc
*** gcc-16-20250907/gcc/ipa-cp.cc	Sun Sep  7 22:33:00 2025
--- gcc-16-20250914/gcc/ipa-cp.cc	Sun Sep 14 22:32:09 2025
*************** gather_count_of_non_rec_edges (cgraph_no
*** 4555,4561 ****
    gather_other_count_struct *desc = (gather_other_count_struct *) data;
    for (cgraph_edge *cs = node->callers; cs; cs = cs->next_caller)
      if (cs->caller != desc->orig && cs->caller->clone_of != desc->orig)
!       desc->other_count += cs->count.ipa ();
    return false;
  }
  
--- 4555,4562 ----
    gather_other_count_struct *desc = (gather_other_count_struct *) data;
    for (cgraph_edge *cs = node->callers; cs; cs = cs->next_caller)
      if (cs->caller != desc->orig && cs->caller->clone_of != desc->orig)
!       if (cs->count.ipa ().initialized_p ())
! 	desc->other_count += cs->count.ipa ();
    return false;
  }
  
diff -Nrcpad gcc-16-20250907/gcc/ipa-free-lang-data.cc gcc-16-20250914/gcc/ipa-free-lang-data.cc
*** gcc-16-20250907/gcc/ipa-free-lang-data.cc	Sun Sep  7 22:33:00 2025
--- gcc-16-20250914/gcc/ipa-free-lang-data.cc	Sun Sep 14 22:32:09 2025
*************** find_decls_types_r (tree *tp, int *ws, v
*** 735,741 ****
  
        if (TREE_CODE (t) == FUNCTION_DECL)
  	{
! 	  fld_worklist_push (DECL_ARGUMENTS (t), fld);
  	  fld_worklist_push (DECL_RESULT (t), fld);
  	}
        else if (TREE_CODE (t) == FIELD_DECL)
--- 735,742 ----
  
        if (TREE_CODE (t) == FUNCTION_DECL)
  	{
! 	  for (tree arg = DECL_ARGUMENTS (t); arg; arg = DECL_CHAIN (arg))
! 	    fld_worklist_push (arg, fld);
  	  fld_worklist_push (DECL_RESULT (t), fld);
  	}
        else if (TREE_CODE (t) == FIELD_DECL)
*************** find_decls_types_r (tree *tp, int *ws, v
*** 750,758 ****
  	  && DECL_HAS_VALUE_EXPR_P (t))
  	fld_worklist_push (DECL_VALUE_EXPR (t), fld);
  
-       if (TREE_CODE (t) != FIELD_DECL
- 	  && TREE_CODE (t) != TYPE_DECL)
- 	fld_worklist_push (TREE_CHAIN (t), fld);
        *ws = 0;
      }
    else if (TYPE_P (t))
--- 751,756 ----
diff -Nrcpad gcc-16-20250907/gcc/ipa-pure-const.cc gcc-16-20250914/gcc/ipa-pure-const.cc
*** gcc-16-20250907/gcc/ipa-pure-const.cc	Sun Sep  7 22:33:00 2025
--- gcc-16-20250914/gcc/ipa-pure-const.cc	Sun Sep 14 22:32:09 2025
*************** check_stmt (gimple_stmt_iterator *gsip,
*** 771,778 ****
        print_gimple_stmt (dump_file, stmt, 0);
      }
  
!   if (gimple_has_volatile_ops (stmt)
!       && !gimple_clobber_p (stmt))
      {
        local->pure_const_state = IPA_NEITHER;
        if (dump_file)
--- 771,777 ----
        print_gimple_stmt (dump_file, stmt, 0);
      }
  
!   if (gimple_has_volatile_ops (stmt) && !gimple_clobber_p (stmt))
      {
        local->pure_const_state = IPA_NEITHER;
        if (dump_file)
*************** check_stmt (gimple_stmt_iterator *gsip,
*** 781,791 ****
  
    /* Look for loads and stores.  */
    walk_stmt_load_store_ops (stmt, local,
! 			    ipa ? check_ipa_load : check_load,
! 			    ipa ? check_ipa_store :  check_store);
  
!   if (gimple_code (stmt) != GIMPLE_CALL
!       && stmt_could_throw_p (cfun, stmt))
      {
        if (cfun->can_throw_non_call_exceptions)
  	{
--- 780,789 ----
  
    /* Look for loads and stores.  */
    walk_stmt_load_store_ops (stmt, local,
! 			    ipa ? check_ipa_load  : check_load,
! 			    ipa ? check_ipa_store : check_store);
  
!   if (gimple_code (stmt) != GIMPLE_CALL && stmt_could_throw_p (cfun, stmt))
      {
        if (cfun->can_throw_non_call_exceptions)
  	{
*************** make_pass_warn_function_noreturn (gcc::c
*** 2310,2316 ****
    return new pass_warn_function_noreturn (ctxt);
  }
  
! /* Simple local pass for pure const discovery reusing the analysis from
     ipa_pure_const.   This pass is effective when executed together with
     other optimization passes in early optimization pass queue.  */
  
--- 2308,2314 ----
    return new pass_warn_function_noreturn (ctxt);
  }
  
! /* Simple local pass for nothrow discovery reusing the analysis from
     ipa_pure_const.   This pass is effective when executed together with
     other optimization passes in early optimization pass queue.  */
  
diff -Nrcpad gcc-16-20250907/gcc/lra-constraints.cc gcc-16-20250914/gcc/lra-constraints.cc
*** gcc-16-20250907/gcc/lra-constraints.cc	Sun Sep  7 22:33:00 2025
--- gcc-16-20250914/gcc/lra-constraints.cc	Sun Sep 14 22:32:09 2025
*************** get_equiv (rtx x)
*** 542,547 ****
--- 542,548 ----
    rtx res;
  
    if (! REG_P (x) || (regno = REGNO (x)) < FIRST_PSEUDO_REGISTER
+       || regno >= ira_reg_equiv_len
        || ! ira_reg_equiv[regno].defined_p
        || ! ira_reg_equiv[regno].profitable_p
        || lra_get_regno_hard_regno (regno) >= 0)
*************** curr_insn_transform (bool check_only_p)
*** 4929,4935 ****
        if (asm_noperands (PATTERN (curr_insn)) >= 0
  	  && ++curr_id->asm_reloads_num >= FIRST_PSEUDO_REGISTER)
  	/* Most probably there are no enough registers to satisfy asm insn: */
! 	lra_asm_insn_error (curr_insn);
      }
    if (goal_alt_out_sp_reload_p)
      {
--- 4930,4939 ----
        if (asm_noperands (PATTERN (curr_insn)) >= 0
  	  && ++curr_id->asm_reloads_num >= FIRST_PSEUDO_REGISTER)
  	/* Most probably there are no enough registers to satisfy asm insn: */
! 	{
! 	  lra_asm_insn_error (curr_insn);
! 	  return change_p;
! 	}
      }
    if (goal_alt_out_sp_reload_p)
      {
diff -Nrcpad gcc-16-20250907/gcc/match.pd gcc-16-20250914/gcc/match.pd
*** gcc-16-20250907/gcc/match.pd	Sun Sep  7 22:33:02 2025
--- gcc-16-20250914/gcc/match.pd	Sun Sep 14 22:32:09 2025
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2045,2050 ****
--- 2045,2059 ----
   (abs (negate @0))
   (abs @0))
  
+ /* fabs(x + 0.0) -> fabs(x), safe even with signed zeros when -fno-trapping-math.
+    With non-default exception handling denormal + 0.0 might trap.
+    Otherwise !HONOR_SNANS would be sufficient here.  */
+ (for op (plus minus)
+  (simplify
+   (abs (op @0 real_zerop@1))
+   (if (!flag_trapping_math)
+    (abs @0))))
+ 
  (simplify
   (absu (negate @0))
   (absu @0))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3360,3365 ****
--- 3369,3400 ----
      }
      (if (wi::eq_p (sum, wi::uhwi (0, precision))))))))
  
+ (if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type))
+  (match (unsigned_integer_narrow_clip @0)
+   /* SAT_U_TRUNC<NT>(MAX (0, X)) =
+ 	     (UT)X & ~(NT)(-1) ? (-X) >> TYPE_PRECISION(X) - 1 : X
+ 
+      The gimple representation uses X > ~(NT)(-1) instead of
+      using & so match on gt instead of bit_and.  */
+   (convert (cond^ (gt (nop_convert? @0) INTEGER_CST@1)
+ 	 (rshift:s (nop_convert? (negate (nop_convert? @0))) INTEGER_CST@2)
+ 	 @0))
+   (if (! TYPE_UNSIGNED (TREE_TYPE (@0)))
+    (with
+     {
+      unsigned itype_precision = TYPE_PRECISION (TREE_TYPE (@0));
+      unsigned otype_precision = TYPE_PRECISION (type);
+      wide_int trunc_max = wi::mask (otype_precision, false, itype_precision);
+      wide_int int_cst_1 = wi::to_wide (@1, itype_precision);
+      wide_int int_cst_2 = wi::to_wide (@2, itype_precision);
+      wide_int shift_amount = wi::uhwi (itype_precision - 1,
+ 				  itype_precision); // AKA itype_bits - 1
+      int cmp = 0;
+      cmp = wi::cmp (int_cst_2, shift_amount, TYPE_SIGN (TREE_TYPE (@0)));
+     }
+     (if (otype_precision < itype_precision && wi::eq_p (trunc_max,
+     int_cst_1) && (cmp >= 0)))))))
+ 
  /* Saturation truncate for unsigned integer.  */
  (if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type))
   (match (unsigned_integer_sat_trunc @0)
diff -Nrcpad gcc-16-20250907/gcc/optabs.def gcc-16-20250914/gcc/optabs.def
*** gcc-16-20250907/gcc/optabs.def	Sun Sep  7 22:33:02 2025
--- gcc-16-20250914/gcc/optabs.def	Sun Sep 14 22:32:09 2025
*************** OPTAB_D (vec_widen_uabd_hi_optab, "vec_w
*** 493,498 ****
--- 493,499 ----
  OPTAB_D (vec_widen_uabd_lo_optab, "vec_widen_uabd_lo_$a")
  OPTAB_D (vec_widen_uabd_odd_optab, "vec_widen_uabd_odd_$a")
  OPTAB_D (vec_widen_uabd_even_optab, "vec_widen_uabd_even_$a")
+ OPTAB_D (vec_trunc_add_high_optab, "vec_trunc_add_high$a")
  OPTAB_D (vec_addsub_optab, "vec_addsub$a3")
  OPTAB_D (vec_fmaddsub_optab, "vec_fmaddsub$a4")
  OPTAB_D (vec_fmsubadd_optab, "vec_fmsubadd$a4")
diff -Nrcpad gcc-16-20250907/gcc/target.def gcc-16-20250914/gcc/target.def
*** gcc-16-20250907/gcc/target.def	Sun Sep  7 22:33:02 2025
--- gcc-16-20250914/gcc/target.def	Sun Sep 14 22:32:09 2025
*************** It is false if we must use @command{coll
*** 7238,7246 ****
  DEFHOOKPOD
  (dtors_from_cxa_atexit,
   "This value is true if the target wants destructors to be queued to be\n\
! run from __cxa_atexit.  If this is the case then, for each priority level,\n\
! a new constructor will be entered that registers the destructors for that\n\
! level with __cxa_atexit (and there will be no destructors emitted).\n\
  It is false the method implied by @code{have_ctors_dtors} is used.",
   bool, false)
  
--- 7238,7247 ----
  DEFHOOKPOD
  (dtors_from_cxa_atexit,
   "This value is true if the target wants destructors to be queued to be\n\
! run from @code{__cxa_atexit}.  If this is the case then, for each\n\
! priority level, a new constructor will be entered that registers the\n\
! destructors for that level with @code{__cxa_atexit} (and there will be\n\
! no destructors emitted).\n\
  It is false the method implied by @code{have_ctors_dtors} is used.",
   bool, false)
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/ChangeLog gcc-16-20250914/gcc/testsuite/ChangeLog
*** gcc-16-20250907/gcc/testsuite/ChangeLog	Sun Sep  7 22:33:02 2025
--- gcc-16-20250914/gcc/testsuite/ChangeLog	Sun Sep 14 22:32:09 2025
***************
*** 1,3 ****
--- 1,730 ----
+ 2025-09-13  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* gcc.dg/asm-hard-reg-error-1.c: Enable test for PRU, and define
+ 	registers for PRU.
+ 	* gcc.dg/asm-hard-reg-error-4.c: Define hard regs for PRU.
+ 	* gcc.dg/asm-hard-reg-error-5.c: Ditto.
+ 
+ 2025-09-13  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* gcc.dg/c23-array-negative-1.c, gcc.dg/c23-register-array-1.c,
+ 	gcc.dg/c23-register-array-2.c, gcc.dg/c23-register-array-3.c,
+ 	gcc.dg/c23-register-array-4.c, gcc.dg/c2y-array-negative-1.c,
+ 	gcc.dg/c2y-register-array-2.c, gcc.dg/c2y-register-array-3.c: New
+ 	tests.
+ 
+ 2025-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/121532
+ 	* ada/acats-4/tests/cxa/cxai034.a: Use Long_Switch_To_New_Task
+ 	constant instead of Switch_To_New_Task in delay statements.
+ 	* ada/acats-4/tests/cxa/cxai035.a: Likewise.
+ 	* ada/acats-4/tests/cxa/cxai036.a: Likewise.
+ 
+ 2025-09-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121795
+ 	* g++.dg/cpp26/pack-indexing17.C: New test.
+ 	* g++.dg/cpp26/pack-indexing17a.C: New test.
+ 
+ 2025-09-12  Edwin Lu  <ewlu@rivosinc.com>
+ 
+ 	PR target/120378
+ 	* gcc.target/riscv/rvv/autovec/pr120378-1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/pr120378-2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/pr120378-3.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/pr120378-4.c: New test.
+ 
+ 2025-09-12  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/121888
+ 	* gcc.target/sparc/tls-ld-int16.c: Compile with -fPIC.
+ 	* gcc.target/sparc/tls-ld-int32.c: Likewise.
+ 	* gcc.target/sparc/tls-ld-int64.c: Likewise.
+ 	* gcc.target/sparc/tls-ld-int8.c: Likewise.
+ 	* gcc.target/sparc/tls-ld-uint16.c: Likewise.
+ 	* gcc.target/sparc/tls-ld-uint32.c: Likewise.
+ 	* gcc.target/sparc/tls-ld-uint8.c: Likewise.
+ 
+ 2025-09-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/120063
+ 	* gcc.dg/fatal-error.c: New test.
+ 	* gcc.dg/fatal-error-html.py: New test.
+ 	* gcc.dg/fatal-error-sarif.py: New test.
+ 
+ 2025-09-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/121876
+ 	* gcc.dg/plugin/crash-test-nested-ice-html.py: New test.
+ 	* gcc.dg/plugin/crash-test-nested-ice-sarif.py: New test.
+ 	* gcc.dg/plugin/crash-test-nested-ice.c: New test.
+ 	* gcc.dg/plugin/crash-test-nested-write-through-null-html.py: New test.
+ 	* gcc.dg/plugin/crash-test-nested-write-through-null-sarif.py: New test.
+ 	* gcc.dg/plugin/crash-test-nested-write-through-null.c: New test.
+ 	* gcc.dg/plugin/crash_test_plugin.cc: Add "nested" argument, and when
+ 	set, inject the problem within a nested diagnostic.
+ 	* gcc.dg/plugin/plugin.exp: Add crash-test-nested-ice.c and
+ 	crash-test-nested-write-through-null.c.
+ 
+ 2025-09-12  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* gcc.dg/plugin/crash-test-write-though-null-sarif.c: Rename to...
+ 	* gcc.dg/plugin/crash-test-write-through-null-sarif.c: ...this.
+ 	* gcc.dg/plugin/crash-test-write-though-null-stderr.c: Rename to...
+ 	* gcc.dg/plugin/crash-test-write-through-null-stderr.c: ...this.
+ 	* gcc.dg/plugin/plugin.exp: Update for above renamings.  Sort the
+ 	test files for crash_test_plugin.cc alphabetically.
+ 
+ 2025-09-12  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c:
+ 	Adjust ABI specification.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfncvtbf16s.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadb.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadt.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfwcvtsbf16.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vln8.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfncvtbf16s.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadb.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadt.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfwcvtsbf16.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vln8.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfncvtbf16s.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadb.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadt.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfwcvtsbf16.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vln8.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfncvtbf16s.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadb.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadt.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfwcvtsbf16.c:
+ 	Likewise.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vln8.c:
+ 	Likewise.
+ 
+ 2025-09-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/121893
+ 	* g++.dg/modules/adl-10_a.C: New test.
+ 	* g++.dg/modules/adl-10_b.C: New test.
+ 
+ 2025-09-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/121865
+ 	* g++.dg/lto/pr101396_0.C: Ensure A will be walked into (and
+ 	isn't constant-folded out of the GIMPLE for the function).
+ 	* g++.dg/lto/pr101396_1.C: Add message.
+ 	* g++.dg/modules/lto-4_a.C: New test.
+ 	* g++.dg/modules/lto-4_b.C: New test.
+ 
+ 2025-09-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* gcc.target/aarch64/vect-early-break-addhn_1.c: New test.
+ 	* gcc.target/aarch64/vect-early-break-addhn_2.c: New test.
+ 	* gcc.target/aarch64/vect-early-break-addhn_3.c: New test.
+ 	* gcc.target/aarch64/vect-early-break-addhn_4.c: New test.
+ 
+ 2025-09-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* gcc.target/aarch64/vect-addhn_1.c: New test.
+ 
+ 2025-09-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121616
+ 	* gfortran.dg/alloc_comp_assign_17.f90: New test.
+ 
+ 2025-09-11  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR fortran/107421
+ 	PR testsuite/121848
+ 	* gfortran.dg/gomp/pr107421.f90: Require PIE and pass -fPIE for
+ 	non-x86 targets.
+ 
+ 2025-09-11  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c/107419
+ 	PR c++/107393
+ 	* c-c++-common/tls-attr-common.c: New test.
+ 	* c-c++-common/tls-attr-le-pic.c: Likewise.
+ 	* c-c++-common/tls-attr-le-pie.c: Likewise.
+ 
+ 2025-09-11  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c++/121889
+ 	* g++.dg/tls/pr121889.C: New test.
+ 
+ 2025-09-11  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	PR middle-end/66462
+ 	* gcc.target/aarch64/pr66462.c: Add tests for isfinite.
+ 
+ 2025-09-11  Matteo Nicoli  <matteo.nicoli001@gmail.com>
+ 
+ 	PR tree-optimization/121595
+ 	* gcc.dg/fabs-plus-zero-1.c: New testcase.
+ 	* gcc.dg/fabs-plus-zero-2.c: Likewise.
+ 
+ 2025-09-11  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* lib/target-supports.exp
+ 	(check_effective_target_loongarch_scq_hw): New.
+ 	(check_effective_target_sync_int_128_runtime): Return 1 on
+ 	loongarch64-*-* if hardware supports both LSX and SCQ.
+ 	* gcc.dg/atomic-compare-exchange-5.c: Pass -mlsx -mscq for
+ 	loongarch64-*-*.
+ 	* gcc.dg/atomic-exchange-5.c: Likewise.
+ 	* gcc.dg/atomic-load-5.c: Likewise.
+ 	* gcc.dg/atomic-op-5.c: Likewise.
+ 	* gcc.dg/atomic-store-5.c: Likewise.
+ 	* gcc.dg/atomic-store-6.c: Likewise.
+ 	* gcc.dg/simulate-thread/atomic-load-int128.c: Likewise.
+ 	* gcc.dg/simulate-thread/atomic-other-int128.c: Likewise.
+ 	(dg-final): xfail on loongarch64-*-* because  gdb does not
+ 	handle sc.q properly yet.
+ 
+ 2025-09-11  Tsukasa OI  <research_trasio@irq.a4lg.com>
+ 
+ 	* gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall.c: New test.
+ 	* gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-1.c: Ditto.
+ 	* gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-2.c: Ditto.
+ 
+ 2025-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121829
+ 	* gcc.dg/torture/pr121829.c: New testcase.
+ 
+ 2025-09-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121870
+ 	* g++.dg/torture/pr121870.C: New testcase.
+ 
+ 2025-09-11  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/zbb-min-max-04.c: New test.
+ 
+ 2025-09-11  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* gcc.target/riscv/addsieq.c: Remove xfail and expect conversion
+ 	through noce_convert_multiple_sets.
+ 	* gcc.target/riscv/addsifeq.c: Ditto.
+ 	* gcc.target/riscv/addsifge.c: Ditto.
+ 	* gcc.target/riscv/addsifgt.c: Ditto.
+ 	* gcc.target/riscv/addsifle.c: Ditto.
+ 	* gcc.target/riscv/addsiflt.c: Ditto.
+ 	* gcc.target/riscv/addsifne.c: Ditto.
+ 	* gcc.target/riscv/addsige.c: Ditto.
+ 	* gcc.target/riscv/addsigeu.c: Ditto.
+ 	* gcc.target/riscv/addsigt.c: Ditto.
+ 	* gcc.target/riscv/addsigtu.c: Ditto.
+ 	* gcc.target/riscv/addsile.c: Ditto.
+ 	* gcc.target/riscv/addsileu.c: Ditto.
+ 	* gcc.target/riscv/addsilt.c: Ditto.
+ 	* gcc.target/riscv/addsiltu.c: Ditto.
+ 
+ 2025-09-11  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* gcc.dg/asm-hard-reg-error-4.c: Limit the test to LRA targets.
+ 	Use registers r20 and r21 for hppa.  Likewise, for AVR use r20
+ 	and r24 instead.
+ 	* gcc.dg/asm-hard-reg-error-5.c: Ditto.
+ 
+ 2025-09-11  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/zve32f-1.c: Update expected
+ 	vectorization count from 2 to 3.
+ 	* gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c: Add
+ 	-mrvv-max-lmul=m2 option.
+ 	* gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c: Add
+ 	-mrvv-max-lmul=m2 option.
+ 
+ 2025-09-11  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* gcc.target/loongarch/cmodel-extreme-1.c: Add -fPIC.
+ 	* gcc.target/loongarch/cmodel-extreme-2.c: Likewise.
+ 	* gcc.target/loongarch/tls-gd-noplt.c: Likewise.
+ 	* gcc.target/loongarch/tls-extreme-macro.c: Likewise.
+ 	* gcc.target/loongarch/func-call-medium-2.c: Modify.
+ 	* gcc.target/loongarch/func-call-medium-3.c: Modify.
+ 	* gcc.target/loongarch/func-call-medium-4.c: Removed.
+ 
+ 2025-09-10  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* gcc.dg/c2y-function-qual-1.c, gcc.dg/c2y-incomplete-1.c,
+ 	gcc.dg/c2y-inline-1.c, gcc.dg/c2y-pointer-1.c,
+ 	gcc.dg/c2y-register-array-1.c, gcc.dg/c2y-storage-class-1.c,
+ 	gcc.dg/c2y-struct-empty-1.c: New tests.
+ 
+ 2025-09-10  Peter Bergner  <bergner@tenstorrent.com>
+ 
+ 	PR target/121878
+ 	* gcc.target/riscv/pr121878.c: New test.
+ 
+ 2025-09-10  Juergen Christ  <jchrist@linux.ibm.com>
+ 
+ 	* gcc.dg/vect/nodump-extractlast-1.c: New test.
+ 
+ 2025-09-10  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	* gcc.dg/Wreturn-nested-1.c: New test.
+ 	* gcc.dg/Wreturn-nested-2.c: New test.
+ 	* gcc.dg/Wtrampolines-2.c: New test.
+ 	* gcc.dg/Wtrampolines-3.c: New test.
+ 
+ 2025-09-10  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfwsub.wf.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.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-3-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.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_binop.h
+ 	(DEF_VF_BINOP_WIDEN_CASE_2, DEF_VF_BINOP_WIDEN_CASE_3): Swap operands.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c: New test.
+ 
+ 2025-09-10  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/121859
+ 	* g++.dg/cpp2a/concepts-traits5.C: New test.
+ 
+ 2025-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* lib/lto.exp (lto-execute-1): Search for _1.* etc. files
+ 	only with a list of known extensions.
+ 
+ 2025-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121828
+ 	* gcc.dg/bitint-126.c: New test.
+ 
+ 2025-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/121831
+ 	* g++.dg/lto/pr121831_0.C: New test.
+ 	* g++.dg/lto/pr121831_1.C: New test.
+ 
+ 2025-09-10  Juergen Christ  <jchrist@linux.ibm.com>
+ 
+ 	* gcc.dg/vect/pr109011-2.c: Fix expected outcome.
+ 	* gcc.dg/vect/pr109011-4.c: Fix expected outcome.
+ 	* gcc.target/s390/ffs-1.c: New test.
+ 
+ 2025-09-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.target/i386/mangle-ldbl-1.C: New test.
+ 	* g++.target/i386/mangle-ldbl-2.C: New test.
+ 	* g++.target/m68k/mangle-ldbl-1.C: New test.
+ 	* g++.target/m68k/mangle-ldbl-2.C: New test.
+ 
+ 2025-09-10  Maximilian Immanuel Brandtner  <maxbr@linux.ibm.com>
+ 
+ 	* gcc.target/s390/vector/vec-extract-3.c: New test.
+ 
+ 2025-09-09  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/99682
+ 	PR c++/121808
+ 	* g++.dg/modules/circ-1_c.C: Adjust diagnostic.
+ 	* g++.dg/modules/mod-decl-1.C: Likewise.
+ 	* g++.dg/modules/mod-decl-2_b.C: Likewise.
+ 	* g++.dg/modules/pr99174.H: Likewise.
+ 	* g++.dg/modules/import-3_a.C: New test.
+ 	* g++.dg/modules/import-3_b.C: New test.
+ 	* g++.dg/modules/import-3_c.C: New test.
+ 	* g++.dg/modules/mod-decl-9.C: New test.
+ 	* g++.dg/modules/part-10_a.C: New test.
+ 	* g++.dg/modules/part-10_b.C: New test.
+ 	* g++.dg/modules/part-10_c.C: New test.
+ 	* g++.dg/modules/part-10_d.C: New test.
+ 
+ 2025-09-09  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR testsuite/121872
+ 	* g++.dg/modules/default-arg-4_b.C: Change run to compile.
+ 
+ 2025-09-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121779
+ 	* g++.dg/lookup/operator-8.C: Remove outdated comment about
+ 	this test failing.
+ 	* g++.dg/lookup/operator-8a.C: New test.
+ 
+ 2025-09-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/82480
+ 	* gfortran.dg/stat_3.f90: Extend argument checking.
+ 	* gfortran.dg/stat_4.f90: New test.
+ 
+ 2025-09-09  David Faust  <david.faust@oracle.com>
+ 
+ 	PR debug/121411
+ 	* gcc.dg/debug/ctf/ctf-struct-3.c: New test.
+ 
+ 2025-09-09  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfwsub.vf.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.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-3-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.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_binop.h
+ 	(DEF_VF_BINOP_WIDEN_CASE_0, DEF_VF_BINOP_WIDEN_CASE_1): Swap operands.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_widen_run.h: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c: New test.
+ 
+ 2025-09-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/121678
+ 	* g++.dg/ext/pr121678.C: New test.
+ 	* gcc.dg/pr121678.c: New test.
+ 
+ 2025-09-09  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfwadd.wf.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.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-3-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.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_binop.h: Add support for single
+ 	widening variants.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_widen_run.h: Add support
+ 	for single widening variants.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f32.c: New test.
+ 
+ 2025-09-09  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Revert:
+ 	2025-09-09  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/simd/bcax_d.c: Add tests for DImode arguments.
+ 
+ 2025-09-09  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Revert:
+ 	2025-09-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121829
+ 	* gcc.dg/torture/pr121829.c: New testcase.
+ 
+ 2025-09-09  Matthias Kretz  <m.kretz@gsi.de>
+ 
+ 	PR c++/121801
+ 	* g++.dg/abi/pr121801.C: New test.
+ 
+ 2025-09-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/121861
+ 	* gcc.target/i386/pr121861-1a.c: New file.
+ 	* gcc.target/i386/pr121861-1b.c: Likewise.
+ 
+ 2025-09-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/avx256_avoid_vec_perm-3.c: New test.
+ 	* gcc.target/i386/avx256_avoid_vec_perm-4.c: New test.
+ 	* gcc.target/i386/avx512bw-vpalignr-4.c: Adjust testcase.
+ 	* gcc.target/i386/avx512vl-vpalignr-4.c: Ditto.
+ 
+ 2025-09-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* gcc.target/i386/avx256_avoid_vec_perm.c: Adjust testcase.
+ 	* gcc.target/i386/avx256_avoid_vec_perm-2.c: New test.
+ 	* gcc.target/i386/avx256_avoid_vec_perm-5.c: New test.
+ 
+ 2025-09-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/121532
+ 	* ada/acats-4/tests/cxa/cxai033.a: Use Long_Switch_To_New_Task
+ 	constant instead of Switch_To_New_Task in delay statements.
+ 
+ 2025-09-08  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* gcc.dg/fixed-point/bitint-1.c (dg-options): Use -std=gnu23
+ 	instead of -std=c23.
+ 
+ 2025-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107997
+ 	PR tree-optimization/121844
+ 	* gcc.dg/torture/pr121844.c: New testcase.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfwadd.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.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-3-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.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_binop.h
+ 	(DEF_VF_BINOP_WIDEN_CASE_0): Fix OP.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f32.c: New test.
+ 
+ 2025-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121830
+ 	* gcc.dg/vect/pr121830.c: New testcase.
+ 
+ 2025-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/121829
+ 	* gcc.dg/torture/pr121829.c: New testcase.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfrsub.
+ 	* 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_binop_data.h: Add data for
+ 	vfrsub.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f64.c: New test.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vls/floating-point-sub-2.c: Adjust scan
+ 	dumps.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfsub.
+ 	* 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_binop_data.h: Add data for
+ 	vfsub.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f64.c: New test.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vls/floating-point-add-2.c: Adjust scan
+ 	dump.
+ 	* gcc.target/riscv/rvv/autovec/vls/floating-point-add-3.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vls/floating-point-sub-3.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfadd.
+ 	* 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_binop_data.h: Add data for
+ 	vfadd.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f64.c: New test.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c: Add vfwmul.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.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-3-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.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_binop.h: Add support for
+ 	widening variants.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_widen_run.h: New test
+ 	helper.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f32.c: New test.
+ 
+ 2025-09-08  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c: Add vfmax.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c: Add vfmax. Also add
+ 	missing -fno-fast-math.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c: Likewise.
+ 
+ 2025-09-08  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/84008
+ 	* gfortran.dg/pdt_45.f03: New test.
+ 
+ 2025-09-08  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR tree-optimization/87900
+ 	* gcc.dg/tree-ssa/calloc-10.c: New test.
+ 	* gcc.dg/tree-ssa/calloc-11.c: New test.
+ 	* gcc.dg/tree-ssa/calloc-12.c: New test.
+ 
+ 2025-09-08  Andrew Pinski  <quic_apinski@quicinc.com>
+ 
+ 	PR tree-optimization/83022
+ 	* gcc.dg/tree-ssa/calloc-6.c: New test.
+ 	* gcc.dg/tree-ssa/calloc-7.c: New test.
+ 	* gcc.dg/tree-ssa/calloc-8.c: New test.
+ 	* gcc.dg/tree-ssa/calloc-9.c: New test.
+ 
+ 2025-09-07  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121841
+ 	* gcc.dg/tree-ssa/copy-prop-aggregate-struct-1.c: New test.
+ 
+ 2025-09-07  Kuan-Lin Chen  <rufus@andestech.com>
+ 
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c: New test.
+ 
+ 2025-09-07  Kuan-Lin Chen  <rufus@andestech.com>
+ 
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadb.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadt.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadb.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadt.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadb.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadt.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadb.c: New test.
+ 	* gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadt.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vls/J: New file.
+ 
+ 2025-09-07  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR c++/107393
+ 	* g++.dg/tls/pr107393-1.C: New test.
+ 	* g++.dg/tls/pr107393-2.C: Likewise.
+ 
+ 2025-09-07  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: Add asm check
+ 	for vnmsub.vx.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsub-run-1-u16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsub-run-1-u32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsub-run-1-u64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsub-run-1-u8.c: New test.
+ 
+ 2025-09-07  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i16.c: Add asm check
+ 	for vnmsub.vx.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-1-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-2-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i16.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i32.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i64.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx-3-i8.c: Ditto.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary.h: Add test
+ 	helper macros.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_ternary_data.h: Add test
+ 	data for run test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsub-run-1-i16.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsub-run-1-i32.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsub-run-1-i64.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/vx_vf/vx_vnmsub-run-1-i8.c: New test.
+ 
  2025-09-06  Kuan-Lin Chen  <rufus@andestech.com>
  
  	* gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vln8.c: New test.
diff -Nrcpad gcc-16-20250907/gcc/testsuite/ada/acats-4/tests/cxa/cxai033.a gcc-16-20250914/gcc/testsuite/ada/acats-4/tests/cxa/cxai033.a
*** gcc-16-20250907/gcc/testsuite/ada/acats-4/tests/cxa/cxai033.a	Sun Sep  7 22:33:04 2025
--- gcc-16-20250914/gcc/testsuite/ada/acats-4/tests/cxa/cxai033.a	Sun Sep 14 22:32:10 2025
*************** begin
*** 116,122 ****
  
     -- Give time for Reader_1 to activate.
  
!    delay Impdef.Switch_To_New_Task;
  
     if not Reader_1_Blocked then
  
--- 116,122 ----
  
     -- Give time for Reader_1 to activate.
  
!    delay Impdef.Long_Switch_To_New_Task;
  
     if not Reader_1_Blocked then
  
*************** begin
*** 145,151 ****
  
        -- Give time for Writer_1 to activate;
  
!       delay Impdef.Switch_To_New_Task;
  
        if Reader_1_Blocked then
  
--- 145,151 ----
  
        -- Give time for Writer_1 to activate;
  
!       delay Impdef.Long_Switch_To_New_Task;
  
        if Reader_1_Blocked then
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/ada/acats-4/tests/cxa/cxai034.a gcc-16-20250914/gcc/testsuite/ada/acats-4/tests/cxa/cxai034.a
*** gcc-16-20250907/gcc/testsuite/ada/acats-4/tests/cxa/cxai034.a	Sun Sep  7 22:33:04 2025
--- gcc-16-20250914/gcc/testsuite/ada/acats-4/tests/cxa/cxai034.a	Sun Sep 14 22:32:10 2025
*************** begin
*** 143,149 ****
  
     -- Give time for Reader_1 to activate.
  
!    delay Impdef.Switch_To_New_Task;
  
     if not Reader_1_Blocked then
  
--- 143,149 ----
  
     -- Give time for Reader_1 to activate.
  
!    delay Impdef.Long_Switch_To_New_Task;
  
     if not Reader_1_Blocked then
  
*************** begin
*** 172,178 ****
  
        -- Give time for Writer_1 to activate;
  
!       delay Impdef.Switch_To_New_Task;
  
        if Reader_1_Blocked then
  
--- 172,178 ----
  
        -- Give time for Writer_1 to activate;
  
!       delay Impdef.Long_Switch_To_New_Task;
  
        if Reader_1_Blocked then
  
*************** begin
*** 187,193 ****
  
     -- Give time for Writer_3 to activate.
  
!    delay Impdef.Switch_To_New_Task;
  
     if not Writer_3_Blocked then
  
--- 187,193 ----
  
     -- Give time for Writer_3 to activate.
  
!    delay Impdef.Long_Switch_To_New_Task;
  
     if not Writer_3_Blocked then
  
*************** begin
*** 216,222 ****
  
        -- Give time for Reader_3 to activate;
  
!       delay Impdef.Switch_To_New_Task;
  
        if Writer_3_Blocked then
  
--- 216,222 ----
  
        -- Give time for Reader_3 to activate;
  
!       delay Impdef.Long_Switch_To_New_Task;
  
        if Writer_3_Blocked then
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/ada/acats-4/tests/cxa/cxai035.a gcc-16-20250914/gcc/testsuite/ada/acats-4/tests/cxa/cxai035.a
*** gcc-16-20250907/gcc/testsuite/ada/acats-4/tests/cxa/cxai035.a	Sun Sep  7 22:33:04 2025
--- gcc-16-20250914/gcc/testsuite/ada/acats-4/tests/cxa/cxai035.a	Sun Sep 14 22:32:10 2025
*************** begin
*** 163,169 ****
  
     -- Give time for Reader_1 to activate.
  
!    delay Impdef.Switch_To_New_Task;
  
     if not Reader_1_Blocked then
  
--- 163,169 ----
  
     -- Give time for Reader_1 to activate.
  
!    delay Impdef.Long_Switch_To_New_Task;
  
     if not Reader_1_Blocked then
  
*************** begin
*** 192,198 ****
  
        -- Give time for Writer_1 to activate;
  
!       delay Impdef.Switch_To_New_Task;
  
        if Reader_1_Blocked then
  
--- 192,198 ----
  
        -- Give time for Writer_1 to activate;
  
!       delay Impdef.Long_Switch_To_New_Task;
  
        if Reader_1_Blocked then
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/ada/acats-4/tests/cxa/cxai036.a gcc-16-20250914/gcc/testsuite/ada/acats-4/tests/cxa/cxai036.a
*** gcc-16-20250907/gcc/testsuite/ada/acats-4/tests/cxa/cxai036.a	Sun Sep  7 22:33:04 2025
--- gcc-16-20250914/gcc/testsuite/ada/acats-4/tests/cxa/cxai036.a	Sun Sep 14 22:32:10 2025
*************** begin
*** 190,196 ****
  
     -- Give time for Reader_1 to activate.
  
!    delay Impdef.Switch_To_New_Task;
  
     if not Reader_1_Blocked then
  
--- 190,196 ----
  
     -- Give time for Reader_1 to activate.
  
!    delay Impdef.Long_Switch_To_New_Task;
  
     if not Reader_1_Blocked then
  
*************** begin
*** 219,225 ****
  
        -- Give time for Writer_1 to activate;
  
!       delay Impdef.Switch_To_New_Task;
  
        if Reader_1_Blocked then
  
--- 219,225 ----
  
        -- Give time for Writer_1 to activate;
  
!       delay Impdef.Long_Switch_To_New_Task;
  
        if Reader_1_Blocked then
  
*************** begin
*** 234,240 ****
  
     -- Give time for Writer_3 to activate.
  
!    delay Impdef.Switch_To_New_Task;
  
     if not Writer_3_Blocked then
  
--- 234,240 ----
  
     -- Give time for Writer_3 to activate.
  
!    delay Impdef.Long_Switch_To_New_Task;
  
     if not Writer_3_Blocked then
  
*************** begin
*** 263,269 ****
  
        -- Give time for Reader_3 to activate;
  
!       delay Impdef.Switch_To_New_Task;
  
        if Writer_3_Blocked then
  
--- 263,269 ----
  
        -- Give time for Reader_3 to activate;
  
!       delay Impdef.Long_Switch_To_New_Task;
  
        if Writer_3_Blocked then
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/c-c++-common/tls-attr-common.c gcc-16-20250914/gcc/testsuite/c-c++-common/tls-attr-common.c
*** gcc-16-20250907/gcc/testsuite/c-c++-common/tls-attr-common.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/c-c++-common/tls-attr-common.c	Sun Sep 14 22:32:10 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target pie } */
+ /* { dg-require-effective-target tls } */
+ /* { dg-options "-O2 -fdump-ipa-whole-program" } */
+ /* Add -fPIE or -mno-direct-extern-access to disable direct access to
+    external symbol from executable.  */
+ /* { dg-additional-options "-fPIE" { target { ! { i?86-*-* x86_64-*-* } } } } */
+ /* { dg-additional-options "-mno-direct-extern-access" { target { i?86-*-* x86_64-*-* } } } */
+ 
+ __attribute__((common))
+ __thread int i;
+ 
+ int *
+ foo (void)
+ {
+   return &i;
+ }
+ 
+ /* tls_model should be tls-initial-exec due to common attribute.  */
+ /* { dg-final { scan-ipa-dump "Varpool flags: tls-initial-exec" "whole-program" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/c-c++-common/tls-attr-le-pic.c gcc-16-20250914/gcc/testsuite/c-c++-common/tls-attr-le-pic.c
*** gcc-16-20250907/gcc/testsuite/c-c++-common/tls-attr-le-pic.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/c-c++-common/tls-attr-le-pic.c	Sun Sep 14 22:32:10 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target fpic } */
+ /* { dg-require-effective-target tls } */
+ /* { dg-options "-O2 -fpic -fdump-ipa-whole-program" } */
+ 
+ __attribute__ ((tls_model ("local-exec"))) __thread int i;
+ 
+ int *
+ foo (void)
+ {
+   return &i;
+ }
+ 
+ /* tls_model should be local-exec due to tls_model attribute.  */
+ /* { dg-final { scan-ipa-dump "Varpool flags: tls-local-exec" "whole-program" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/c-c++-common/tls-attr-le-pie.c gcc-16-20250914/gcc/testsuite/c-c++-common/tls-attr-le-pie.c
*** gcc-16-20250907/gcc/testsuite/c-c++-common/tls-attr-le-pie.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/c-c++-common/tls-attr-le-pie.c	Sun Sep 14 22:32:10 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile { target { tls && pie } } } */
+ /* { dg-options "-O2 -fPIE -fdump-ipa-whole-program" } */
+ 
+ extern const int afoo[3];
+ 
+ __thread const int *pfoo __attribute__ ((tls_model ("initial-exec"))) = afoo;
+ 
+ const int **
+ ppfoo (void)
+ {
+   return &pfoo;
+ }
+ 
+ /* tls_model should be local-exec due to -fPIE.  */
+ /* { dg-final { scan-ipa-dump "Varpool flags: initialized tls-local-exec" "whole-program" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/abi/pr121801.C gcc-16-20250914/gcc/testsuite/g++.dg/abi/pr121801.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/abi/pr121801.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/abi/pr121801.C	Sun Sep 14 22:32:10 2025
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/121801
+ // { dg-do compile { target { c++20 && float16 } } }
+ // { dg-add-options float16 }
+ 
+ template<_Float16 T> void f() {}
+ 
+ void uses() {
+   f<_Float16(1)>();
+   f<_Float16(2)>();
+ }
+ 
+ // { dg-final { scan-assembler "_Z1fILDF16_3c00EEvv" } }
+ // { dg-final { scan-assembler "_Z1fILDF16_4000EEvv" } }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/cpp26/pack-indexing17.C gcc-16-20250914/gcc/testsuite/g++.dg/cpp26/pack-indexing17.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/cpp26/pack-indexing17.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/cpp26/pack-indexing17.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/121795
+ // { dg-do compile { target c++26 } }
+ 
+ template<class T, class... Ts>
+ struct A;
+ 
+ template<class... Ts>
+ struct A<Ts...[sizeof...(Ts)-1], Ts...> { };
+ 
+ A<int, int> x;
+ A<char, int> y; // { dg-error "incomplete" }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/cpp26/pack-indexing17a.C gcc-16-20250914/gcc/testsuite/g++.dg/cpp26/pack-indexing17a.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/cpp26/pack-indexing17a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/cpp26/pack-indexing17a.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/121795
+ // A version of pack-indexing17.C using a nontype pack.
+ // { dg-do compile { target c++26 } }
+ 
+ template<int N, int... Ns>
+ struct A;
+ 
+ template<int... Ns>
+ struct A<Ns...[sizeof...(Ns)-1], Ns...> { };
+ 
+ A<0, 0> x;
+ A<0, 1> y; // { dg-error "incomplete" }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/cpp2a/concepts-traits5.C gcc-16-20250914/gcc/testsuite/g++.dg/cpp2a/concepts-traits5.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/cpp2a/concepts-traits5.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/cpp2a/concepts-traits5.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/121859
+ // { dg-do compile { target c++20 } }
+ 
+ template <typename T>
+ struct S {
+   template <typename U>
+   static constexpr bool foo = sizeof(T) == sizeof(U);
+ };
+ 
+ template <typename U> void bar(U x) requires S<char>::foo<U> {}
+ 
+ int main() {
+   bar(double{});  // { dg-error "no matching function" }
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/ext/pr121678.C gcc-16-20250914/gcc/testsuite/g++.dg/ext/pr121678.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/ext/pr121678.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/ext/pr121678.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/121678
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" }
+ 
+ static constexpr _Complex double a = 1.0;
+ static constexpr double *r = &__real__ a;
+ static constexpr double *i = &__imag__ a;
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/lookup/operator-8.C gcc-16-20250914/gcc/testsuite/g++.dg/lookup/operator-8.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/lookup/operator-8.C	Sun Sep  7 22:33:13 2025
--- gcc-16-20250914/gcc/testsuite/g++.dg/lookup/operator-8.C	Sun Sep 14 22:32:11 2025
***************
*** 1,9 ****
  // Verify phase 1 lookup works properly for rewritten non-dependent conditional
  // operator expressions.
  
- // This test currently fails due to build_min_non_dep_op_overload not knowing
- // how to handle rewritten operator expressions; see the FIXME in build_new_op.
- 
  // { dg-do compile { target c++20 } }
  
  #include <compare>
--- 1,6 ----
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/lookup/operator-8a.C gcc-16-20250914/gcc/testsuite/g++.dg/lookup/operator-8a.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/lookup/operator-8a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/lookup/operator-8a.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,40 ----
+ // PR c++/121779
+ // A version of operator-8.C where the operator<=> return type is int.
+ 
+ // { dg-do compile { target c++20 } }
+ 
+ struct A {
+   bool operator==(int);
+   int operator<=>(int);
+ };
+ 
+ template<class T>
+ void f() {
+   A a;
+   (void)(a != 0);
+   (void)(0 != a);
+   (void)(a < 0);
+   (void)(0 < a);
+   (void)(a <= 0);
+   (void)(0 <= a);
+   (void)(a > 0);
+   (void)(0 > a);
+   (void)(a >= 0);
+   (void)(0 >= a);
+ }
+ 
+ // These later-declared namespace-scope overloads shouldn't be considered
+ // when instantiating f<int>.
+ bool operator!=(A, int) = delete;
+ bool operator<(A, int) = delete;
+ bool operator<=(A, int) = delete;
+ bool operator>(A, int) = delete;
+ bool operator>=(A, int) = delete;
+ 
+ bool operator!=(int, A) = delete;
+ bool operator<(int, A) = delete;
+ bool operator<=(int, A) = delete;
+ bool operator>(int, A) = delete;
+ bool operator>=(int, A) = delete;
+ 
+ template void f<int>();
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr101396_0.C gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr101396_0.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr101396_0.C	Sun Sep  7 22:33:13 2025
--- gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr101396_0.C	Sun Sep 14 22:32:11 2025
*************** enum A : __UINT32_TYPE__ { // { dg-lto-w
*** 6,12 ****
    c
  };
  
! int main()
  {
!   return (int) A::a;
  }
--- 6,14 ----
    c
  };
  
! int g(enum A x)
  {
!   return (int) x;
  }
+ 
+ int main() {}
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr101396_1.C gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr101396_1.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr101396_1.C	Sun Sep  7 22:33:13 2025
--- gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr101396_1.C	Sun Sep 14 22:32:11 2025
***************
*** 1,4 ****
--- 1,5 ----
  enum A : __UINT64_TYPE__ { // { dg-lto-note "6: an enum with different value name is defined in another translation unit" }
+   // { dg-lto-note "6: a type with different precision is defined in another translation unit" "" { target *-*-* } .-1 }
    a, // { dg-lto-note "3: mismatching definition" }
    b,
    c
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr121831_0.C gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr121831_0.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr121831_0.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr121831_0.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,17 ----
+ /* PR middle-end/121831 */
+ /* { dg-lto-do run } */
+ /* { dg-lto-options { { -O2 -flto } } } */
+ 
+ struct S { unsigned char s[256]; };
+ S a;
+ extern const S b[1];
+ struct T { unsigned char t[2048]; };
+ T c;
+ extern const T d[1];
+ 
+ __attribute__((noipa)) void
+ foo ()
+ {
+   a = b[0];
+   c = d[0];
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr121831_1.C gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr121831_1.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr121831_1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr121831_1.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,64 ----
+ struct S { unsigned char s[256]; };
+ extern S a;
+ struct T { unsigned char t[2048]; };
+ extern T c;
+ extern const T d[1];
+ extern void foo ();
+ 
+ extern const S b[1] {
+   { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+     65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+     81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+     97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+     113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+     129, 0 }
+ };
+ extern const T d[1] {
+   { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+     65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+     81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+     97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+     113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+     1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+     65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+     81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+     97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+     113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+     1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+     65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+     81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+     97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+     113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+     1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+     17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+     33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+     49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+     65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+     81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+     97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+     113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128 }
+ };
+ 
+ int
+ main ()
+ {
+   foo ();
+   for (int i = 0; i < 256; ++i)
+     if (a.s[i] != (i < 129 ? i + 1 : 0))
+       __builtin_abort ();
+   for (int i = 0; i < 2048; ++i)
+     if (c.t[i] != (i < 512 ? (i & 127) + 1 : 0))
+       __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr121935_0.C gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr121935_0.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/lto/pr121935_0.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/lto/pr121935_0.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,13 ----
+ // { dg-lto-do assemble }
+ // { dg-lto-options {{-flto -Wno-return-type}} }
+ 
+ struct a {
+   static int b;
+ };
+ template <int> struct c {
+   struct d {
+     d e(unsigned, unsigned, bool, bool, bool, unsigned, a);
+   };
+ };
+ template <>
+ c<2>::d c<2>::d::e(unsigned, unsigned, bool, bool, bool, unsigned, const a) { }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/adl-10_a.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/adl-10_a.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/adl-10_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/adl-10_a.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,23 ----
+ // PR c++/121893
+ // { dg-additional-options "-fmodules -Wno-global-module" }
+ // { dg-module-cmi M }
+ 
+ module;
+ namespace ns {
+   struct S {};
+ 
+   struct F {
+     template <typename T> void operator()(T) {}
+   };
+   inline constexpr F foo{};
+ }
+ 
+ export module M;
+ 
+ namespace ns {
+   export using ns::S;
+   export using ns::foo;
+ }
+ 
+ template <typename T> void foo(T) {}
+ export template <typename T> void go(T t) { foo(t); }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/adl-10_b.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/adl-10_b.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/adl-10_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/adl-10_b.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/121893
+ // { dg-additional-options "-fmodules" }
+ 
+ import M;
+ int main() {
+   ::go(ns::S{});
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/circ-1_c.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/circ-1_c.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/circ-1_c.C	Sun Sep  7 22:33:13 2025
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/circ-1_c.C	Sun Sep 14 22:32:11 2025
*************** export module Bob; // { dg-message "decl
*** 4,9 ****
  
  import Kevin;
  // { dg-error "failed to read" "" { target *-*-* } 0 }
! // { dg-error "cannot import module" "" { target *-*-* } 0 }
  // { dg-prune-output "fatal error:" }
  // { dg-prune-output "compilation terminated" }
--- 4,9 ----
  
  import Kevin;
  // { dg-error "failed to read" "" { target *-*-* } 0 }
! // { dg-error "depends on itself" "" { target *-*-* } 0 }
  // { dg-prune-output "fatal error:" }
  // { dg-prune-output "compilation terminated" }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/default-arg-4_b.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/default-arg-4_b.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/default-arg-4_b.C	Sun Sep  7 22:33:13 2025
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/default-arg-4_b.C	Sun Sep 14 22:32:11 2025
***************
*** 1,5 ****
  // C++20 P1766R1 - Mitigating minor modules maladies
! // { dg-module-do run }
  // { dg-additional-options "-fmodules-ts" }
  
  import M;
--- 1,6 ----
  // C++20 P1766R1 - Mitigating minor modules maladies
! // FIXME mark as run once we no longer xfail below.
! // { dg-module-do compile }
  // { dg-additional-options "-fmodules-ts" }
  
  import M;
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/import-3_a.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/import-3_a.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/import-3_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/import-3_a.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/99682
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi foo }
+ 
+ export module foo;
+ export void foo();
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/import-3_b.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/import-3_b.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/import-3_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/import-3_b.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/99682
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi bar }
+ 
+ export module bar;
+ import foo;
+ 
+ export void bar();
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/import-3_c.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/import-3_c.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/import-3_c.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/import-3_c.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/99682
+ // { dg-additional-options "-fmodules" }
+ 
+ module foo;
+ import bar;  // not an interface dependency
+ import bar;  // double import is not an error either
+ 
+ void test() {
+   foo();
+   bar();
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/lto-4_a.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/lto-4_a.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/lto-4_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/lto-4_a.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/121865
+ // { dg-require-effective-target lto }
+ // { dg-additional-options "-fmodules -flto" }
+ 
+ export module M;
+ export template <typename T> struct S;
+ export template <typename T> void foo(S<T>) {}
+ template <typename T> struct S {
+   friend void foo<>(S);
+ };
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/lto-4_b.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/lto-4_b.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/lto-4_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/lto-4_b.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/121865
+ // { dg-module-do link }
+ // { dg-require-effective-target lto }
+ // { dg-additional-options "-fmodules -flto" }
+ 
+ import M;
+ template struct S<int>;
+ int main() {}
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/mod-decl-1.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/mod-decl-1.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/mod-decl-1.C	Sun Sep  7 22:33:13 2025
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/mod-decl-1.C	Sun Sep 14 22:32:11 2025
***************
*** 1,10 ****
  // { dg-additional-options "-fmodules-ts" }
  module;
  
! export module frist;
  // { dg-module-cmi "!frist" }
  
! import frist; // { dg-error {cannot import module.* in its own purview} }
  
  module foo.second; // { dg-error "only permitted as" }
  
--- 1,10 ----
  // { dg-additional-options "-fmodules-ts" }
  module;
  
! export module frist;  // { dg-message "declared here" }
  // { dg-module-cmi "!frist" }
  
! import frist; // { dg-error {module 'frist' depends on itself} }
  
  module foo.second; // { dg-error "only permitted as" }
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/mod-decl-2_b.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/mod-decl-2_b.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/mod-decl-2_b.C	Sun Sep  7 22:33:13 2025
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/mod-decl-2_b.C	Sun Sep 14 22:32:11 2025
***************
*** 1,7 ****
  // { dg-additional-options "-fmodules-ts" }
  module bob;
  
! import bob; // { dg-error "cannot import module.* in its own purview" }
  
  // module linkage
  void Baz ()
--- 1,7 ----
  // { dg-additional-options "-fmodules-ts" }
  module bob;
  
! import bob; // { dg-error "import of 'bob' within its own" }
  
  // module linkage
  void Baz ()
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/mod-decl-9.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/mod-decl-9.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/mod-decl-9.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/mod-decl-9.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/121808
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi !foo }
+ 
+ void test();
+ 
+ export module foo;  // { dg-error "module-declaration" }
+ 
+ import foo;
+ // { dg-error "failed to read compiled module" "" { target *-*-* } 0 }
+ 
+ // { dg-prune-output "fatal error:" }
+ // { dg-prune-output "compilation terminated" }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/part-10_a.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/part-10_a.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/part-10_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/part-10_a.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,5 ----
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi foo }
+ 
+ export module foo;
+ void foo();
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/part-10_b.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/part-10_b.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/part-10_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/part-10_b.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,9 ----
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi foo:part }
+ 
+ module foo:part;
+ import foo;
+ 
+ void part() {
+   foo();
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/part-10_c.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/part-10_c.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/part-10_c.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/part-10_c.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,10 ----
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi foo:trans }
+ 
+ module foo:trans;
+ import :part;
+ 
+ void trans() {
+   foo();
+   part();
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/part-10_d.C gcc-16-20250914/gcc/testsuite/g++.dg/modules/part-10_d.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/part-10_d.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/part-10_d.C	Sun Sep 14 22:32:11 2025
***************
*** 0 ****
--- 1,10 ----
+ // { dg-additional-options "-fmodules" }
+ 
+ module foo;
+ import :trans;
+ 
+ void impl() {
+   foo();
+   part();
+   trans();
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/modules/pr99174.H gcc-16-20250914/gcc/testsuite/g++.dg/modules/pr99174.H
*** gcc-16-20250907/gcc/testsuite/g++.dg/modules/pr99174.H	Sun Sep  7 22:33:13 2025
--- gcc-16-20250914/gcc/testsuite/g++.dg/modules/pr99174.H	Sun Sep 14 22:32:11 2025
***************
*** 1,3 ****
  // { dg-additional-options -fmodule-header }
  // { dg-module-cmi !{} }
! import "pr99174.H"; // { dg-error "cannot import" }
--- 1,3 ----
  // { dg-additional-options -fmodule-header }
  // { dg-module-cmi !{} }
! import "pr99174.H"; // { dg-error "depends on itself" }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/tls/pr121889.C gcc-16-20250914/gcc/testsuite/g++.dg/tls/pr121889.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/tls/pr121889.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/tls/pr121889.C	Sun Sep 14 22:32:12 2025
***************
*** 0 ****
--- 1,9 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-require-effective-target tls }
+ // { dg-options "-O2" }
+ // { dg-add-options tls }
+ 
+ extern void pthread_key_create();
+ static __typeof(pthread_key_create) __gthrw___pthread_key_create
+     __attribute__((__weakref__("")));
+ template <class> void zeta_imp_odd_integer() { thread_local int digits; }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.dg/torture/pr121870.C gcc-16-20250914/gcc/testsuite/g++.dg/torture/pr121870.C
*** gcc-16-20250907/gcc/testsuite/g++.dg/torture/pr121870.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.dg/torture/pr121870.C	Sun Sep 14 22:32:12 2025
***************
*** 0 ****
--- 1,20 ----
+ __attribute__((noreturn)) void f1(void)
+ {
+     while(true) {}
+ }
+ static void (*fptr)(void) = f1;
+ struct s1
+ {
+     ~s1() {
+         fptr();
+     }
+     void DoInner() {
+         fptr();
+     }
+ };
+ 
+ void f()
+ {
+     s1 xxx;
+     xxx.DoInner();
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.target/i386/mangle-ldbl-1.C gcc-16-20250914/gcc/testsuite/g++.target/i386/mangle-ldbl-1.C
*** gcc-16-20250907/gcc/testsuite/g++.target/i386/mangle-ldbl-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.target/i386/mangle-ldbl-1.C	Sun Sep 14 22:32:13 2025
***************
*** 0 ****
--- 1,8 ----
+ // { dg-do compile { target { c++20 && { x86_64-*-linux* i?86-*-linux* } } } }
+ // { dg-final { scan-assembler "_Z3fooILe3fff8000000000000000EEiv" } }
+ // { dg-final { scan-assembler "_Z3fooILe40008000000000000000EEiv" } }
+ 
+ template <long double a>
+ int foo () { return 0; }
+ 
+ int bar () { return foo <1.0L> () + foo <2.0L> (); }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.target/i386/mangle-ldbl-2.C gcc-16-20250914/gcc/testsuite/g++.target/i386/mangle-ldbl-2.C
*** gcc-16-20250907/gcc/testsuite/g++.target/i386/mangle-ldbl-2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.target/i386/mangle-ldbl-2.C	Sun Sep 14 22:32:13 2025
***************
*** 0 ****
--- 1,11 ----
+ // { dg-do compile { target { c++20 && { x86_64-*-linux* i?86-*-linux* } } } }
+ // { dg-additional-options "-fabi-version=20" }
+ // { dg-final { scan-assembler "_Z3fooILe0000000000003fff8000000000000000EEiv" { target { ! ia32 } } } }
+ // { dg-final { scan-assembler "_Z3fooILe00000000000040008000000000000000EEiv" { target { ! ia32 } } } }
+ // { dg-final { scan-assembler "_Z3fooILe00003fff8000000000000000EEiv" { target ia32 } } }
+ // { dg-final { scan-assembler "_Z3fooILe000040008000000000000000EEiv" { target ia32 } } }
+ 
+ template <long double a>
+ int foo () { return 0; }
+ 
+ int bar () { return foo <1.0L> () + foo <2.0L> (); }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.target/m68k/mangle-ldbl-1.C gcc-16-20250914/gcc/testsuite/g++.target/m68k/mangle-ldbl-1.C
*** gcc-16-20250907/gcc/testsuite/g++.target/m68k/mangle-ldbl-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.target/m68k/mangle-ldbl-1.C	Sun Sep 14 22:32:13 2025
***************
*** 0 ****
--- 1,9 ----
+ // { dg-do compile { target { c++20 && { m68k*-*-linux* } } } }
+ // { dg-additional-options "-m68020" }
+ // { dg-final { scan-assembler "_Z3fooILe3fff8000000000000000EEiv" } }
+ // { dg-final { scan-assembler "_Z3fooILe40008000000000000000EEiv" } }
+ 
+ template <long double a>
+ int foo () { return 0; }
+ 
+ int bar () { return foo <1.0L> () + foo <2.0L> (); }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/g++.target/m68k/mangle-ldbl-2.C gcc-16-20250914/gcc/testsuite/g++.target/m68k/mangle-ldbl-2.C
*** gcc-16-20250907/gcc/testsuite/g++.target/m68k/mangle-ldbl-2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/g++.target/m68k/mangle-ldbl-2.C	Sun Sep 14 22:32:13 2025
***************
*** 0 ****
--- 1,9 ----
+ // { dg-do compile { target { c++20 && { m68k*-*-linux* } } } }
+ // { dg-additional-options "-m68020 -fabi-version=20" }
+ // { dg-final { scan-assembler "_Z3fooILe3fff00008000000000000000EEiv" } }
+ // { dg-final { scan-assembler "_Z3fooILe400000008000000000000000EEiv" } }
+ 
+ template <long double a>
+ int foo () { return 0; }
+ 
+ int bar () { return foo <1.0L> () + foo <2.0L> (); }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/Wreturn-nested-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/Wreturn-nested-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/Wreturn-nested-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/Wreturn-nested-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,56 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Wreturn-local-addr" } */
+ 
+ typedef int (*fun_t)();
+ 
+ fun_t foo()
+ {
+ 	int bar() { return 1; }
+ 	return bar;
+ }
+ 
+ fun_t foo0(int n)
+ {
+ 	int bar() { return sizeof(n); }
+ 	return bar;
+ }
+ 
+ fun_t foo1()
+ {
+ 	constexpr int i = 1;
+ 	int bar() { return i; }
+ 	return bar;
+ }
+ 
+ fun_t foo2()
+ {
+ 	static int i = 1;
+ 	int bar() { return i; }
+ 	return bar;
+ }
+ 
+ fun_t foo3()
+ {
+ 	static int i = 1;
+ 	int bar() { return i; }
+ 	int bar2() { return bar(); }
+ 	return bar2;
+ }
+ 
+ fun_t foo4()
+ {
+ 	enum { E = 1 };
+ 	int bar() { return E; }
+ 	return bar;
+ }
+ 
+ fun_t foo5()
+ {
+ 	int bar() {
+ 		int n = 3;
+ 		int foo() { return n; };
+ 		return foo();
+ 	}
+ 	return bar;
+ }
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/Wreturn-nested-2.c gcc-16-20250914/gcc/testsuite/gcc.dg/Wreturn-nested-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/Wreturn-nested-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/Wreturn-nested-2.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,81 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target trampolines } */
+ /* { dg-options "-Wreturn-local-addr" } */
+ /* { dg-skip-if "" { *-*-darwin2* } } */
+ 
+ typedef int (*fun_t)();
+ 
+ fun_t foo4(int n)
+ {
+ 	typedef int a[n];
+ 	int bar() { return sizeof(a); }		
+ 	return bar;				/* { dg-warning "address of nested function" } */
+ }
+ 
+ fun_t foo5(int n)
+ {
+ 	int a[n];
+ 	int bar() { return sizeof(a); }
+ 	return bar;				/* { dg-warning "address of nested function" } */
+ }
+ 
+ fun_t foo6(int n)
+ {
+ 	typedef int a[n];
+ 	int bar() { a x; return 1; }
+ 	return bar;				/* { dg-warning "address of nested function" } */
+ }
+ 
+ fun_t foo7(int n)
+ {
+ 	typedef int a[n];
+ 	int bar() { (a*)nullptr; return 1; }
+ 	return bar;				/* { dg-warning "address of nested function" } */
+ }
+ 
+ fun_t foo8(int n)
+ {
+ 	auto int bar();
+ 	return bar;				/* { dg-warning "address of nested function" } */
+ 	int bar() { return n; }
+ }
+ 
+ fun_t foo9(int n)
+ {
+ 	int bar() { return n; }
+ 	int bar2() { return bar(); }
+ 	return bar2;				/* { dg-warning "address of nested function" } */
+ }
+ 
+ fun_t foo10(int n)
+ {
+ 	int bar()
+ 	{
+ 		int bar2() { return n; }
+ 		return bar2();
+ 	}
+ 	return bar;				/* { dg-warning "address of nested function" } */
+ }
+ 
+ fun_t foo11()
+ {
+ 	constexpr int a = 1;
+ 	int bar() { const int *ap = &a; return *ap; }
+ 	return bar;				/* { dg-warning "address of nested function" } */
+ }
+ 
+ fun_t foo12(int n)
+ {
+ 	static int (*a)[n];
+ 	int bar() { typeof(a) b; return sizeof *b; }
+ 	return bar;				/* { dg-warning "address of nested function" } */
+ }
+ 
+ fun_t foo13(int n)
+ {
+ 	int (*bar())[n] { return nullptr; }
+ 	int bar2() { return sizeof *(*bar)(); }
+ 	return bar2;				/* { dg-warning "address of nested function" } */
+ }
+ 
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/Wtrampolines-2.c gcc-16-20250914/gcc/testsuite/gcc.dg/Wtrampolines-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/Wtrampolines-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/Wtrampolines-2.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,62 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target trampolines } */
+ /* { dg-options "-O0 -Wtrampolines" } */
+ /* { dg-skip-if "" { *-*-darwin2* } } */
+ 
+ 
+ 
+ // Test that we do not create a trampoline even without optimization.
+ 
+ void g(int (*)());
+ 
+ void foo()
+ {
+ 	int bar() { return 1; }
+ 	g(bar);
+ }
+ 
+ void foo0(int n)
+ {
+ 	int bar() { return sizeof(n); }
+ 	g(bar);	
+ }
+ 
+ void foo1()
+ {
+ 	constexpr int i = 1;
+ 	int bar() { return i; }
+ 	g(bar);	
+ }
+ 
+ void foo2()
+ {
+ 	static int i = 1;
+ 	int bar() { return i; }
+ 	g(bar);	
+ }
+ 
+ void foo3()
+ {
+ 	static int i = 1;
+ 	int bar() { return i; }
+ 	int bar2() { return bar(); }
+ 	g(bar2);	
+ }
+ 
+ void foo4()
+ {
+ 	enum { E = 1 };
+ 	int bar() { return E; }
+ 	g(bar);
+ }
+ 
+ void foo5()
+ {
+ 	int bar() {
+ 		int n = 3;
+ 		int foo() { return n; };
+ 		return foo();
+ 	}
+ 	g(bar);
+ }
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/Wtrampolines-3.c gcc-16-20250914/gcc/testsuite/gcc.dg/Wtrampolines-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/Wtrampolines-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/Wtrampolines-3.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,88 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target trampolines } */
+ /* { dg-options "-Wtrampolines" } */
+ /* { dg-skip-if "" { *-*-darwin2* } } */
+ 
+ 
+ // Test that we do generate trampolines where this is required.
+ 
+ void g(int (*)());
+ 
+ void foo4(int n)
+ {
+ 	typedef int a[n];
+ 	int bar() { return sizeof(a); }		/* { dg-warning "trampoline generated" } */
+ 	g(bar);	
+ }
+ 
+ void foo5(int n)
+ {
+ 	int a[n];
+ 	int bar() { return sizeof(a); }		/* { dg-warning "trampoline generated" } */
+ 	g(bar);	
+ }
+ 
+ void foo6(int n)
+ {
+ 	typedef int a[n];
+ 	int bar() { a x; return 1; }		/* { dg-warning "trampoline generated" } */
+ 	g(bar);	
+ }
+ 
+ void foo7(int n)
+ {
+ 	typedef int a[n];
+ 	int bar() { (a*)nullptr; return 1; }	/* { dg-warning "trampoline generated" } */
+ 	g(bar);	
+ }
+ 
+ void foo8(int n)
+ {
+ 	auto int bar();
+ 	g(bar);	
+ 	int bar() { return n; }			/* { dg-warning "trampoline generated" } */
+ }
+ 
+ void foo9(int n)
+ {
+ 	int bar() { return n; }
+ 	int bar2() { return bar(); }		/* { dg-warning "trampoline generated" } */
+ 	g(bar2);
+ }
+ 
+ void foo10(int n)
+ {
+ 	int bar()				/* { dg-warning "trampoline generated" } */
+ 	{
+ 		int bar2() { return n; }
+ 		return bar2();
+ 	}
+ 	g(bar);			
+ }
+ 
+ void foo11()
+ {
+ 	constexpr int a = 1;
+ 	int bar()				/* { dg-warning "trampoline generated" } */
+ 	{
+ 		const int *ap = &a;
+ 		return *ap; 
+ 	}
+ 	g(bar);
+ }
+ 
+ void foo12(int n)
+ {
+ 	static int (*a)[n];
+ 	int bar() { typeof(a) b; return sizeof *b; }	/* { dg-warning "trampoline generated" } */
+ 	g(bar);	
+ }
+ 
+ void foo13(int n)
+ {
+ 	int (*bar())[n] { return nullptr; }
+ 	int bar2() { return sizeof *(*bar)(); }		/* { dg-warning "trampoline generated" } */
+ 	g(bar2);
+ }
+ 
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/asm-hard-reg-error-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/asm-hard-reg-error-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/asm-hard-reg-error-1.c	Sun Sep  7 22:33:20 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/asm-hard-reg-error-1.c	Sun Sep 14 22:32:14 2025
***************
*** 1,4 ****
! /* { dg-do compile { target aarch64*-*-* arm*-*-* i?86-*-* powerpc*-*-* riscv*-*-* s390*-*-* x86_64-*-* } } */
  
  #if defined (__aarch64__)
  # define GPR1_RAW "x0"
--- 1,4 ----
! /* { dg-do compile { target aarch64*-*-* arm*-*-* i?86-*-* powerpc*-*-* pru*-*-* riscv*-*-* s390*-*-* x86_64-*-* } } */
  
  #if defined (__aarch64__)
  # define GPR1_RAW "x0"
***************
*** 20,25 ****
--- 20,30 ----
  # define GPR2 "{r5}"
  # define GPR3 "{r6}"
  # define INVALID_GPR_A "{r33}"
+ #elif defined (__PRU__)
+ # define GPR1_RAW "r20"
+ # define GPR2 "{r21}"
+ # define GPR3 "{r22}"
+ # define INVALID_GPR_A "{r34}"
  #elif defined (__riscv)
  # define GPR1_RAW "t4"
  # define GPR2 "{t5}"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/asm-hard-reg-error-4.c gcc-16-20250914/gcc/testsuite/gcc.dg/asm-hard-reg-error-4.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/asm-hard-reg-error-4.c	Sun Sep  7 22:33:20 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/asm-hard-reg-error-4.c	Sun Sep 14 22:32:14 2025
***************
*** 1,21 ****
! /* { dg-do compile } */
  
  /* Verify output operands.  */
  
  int
  test (void)
  {
    int x;
!   register int y __asm__ ("0");
  
    /* Preserve status quo and don't error out.  */
    __asm__ ("" : "=r" (x), "=r" (x));
  
    /* Be more strict for hard register constraints and error out.  */
!   __asm__ ("" : "={0}" (x), "={1}" (x)); /* { dg-error "multiple outputs to lvalue 'x'" } */
  
    /* Still error out in case of a mixture.  */
!   __asm__ ("" : "=r" (x), "={1}" (x)); /* { dg-error "multiple outputs to lvalue 'x'" } */
  
    return x + y;
  }
--- 1,35 ----
! /* { dg-do compile { target lra } } */
  
  /* Verify output operands.  */
  
+ #if defined __hppa__
+ # define R0 "20"
+ # define R1 "21"
+ #elif defined __AVR__
+ # define R0 "20"
+ # define R1 "24"
+ #elif defined __PRU__
+ # define R0 "0"
+ # define R1 "4"
+ #else
+ # define R0 "0"
+ # define R1 "1"
+ #endif
+ 
  int
  test (void)
  {
    int x;
!   register int y __asm__ (R0);
  
    /* Preserve status quo and don't error out.  */
    __asm__ ("" : "=r" (x), "=r" (x));
  
    /* Be more strict for hard register constraints and error out.  */
!   __asm__ ("" : "={"R0"}" (x), "={"R1"}" (x)); /* { dg-error "multiple outputs to lvalue 'x'" } */
  
    /* Still error out in case of a mixture.  */
!   __asm__ ("" : "=r" (x), "={"R1"}" (x)); /* { dg-error "multiple outputs to lvalue 'x'" } */
  
    return x + y;
  }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/asm-hard-reg-error-5.c gcc-16-20250914/gcc/testsuite/gcc.dg/asm-hard-reg-error-5.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/asm-hard-reg-error-5.c	Sun Sep  7 22:33:20 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/asm-hard-reg-error-5.c	Sun Sep 14 22:32:14 2025
***************
*** 1,13 ****
! /* { dg-do compile } */
  
  /* Test clobbers.
     See asm-hard-reg-error-{2,3}.c for tests involving register pairs.  */
  
  int
  test (void)
  {
    int x, y;
!   __asm__ ("" : "={0}" (x), "={1}" (y) : : "1"); /* { dg-error "hard register constraint for output 1 conflicts with 'asm' clobber list" } */
!   __asm__ ("" : "={0}" (x) : "{0}" (y), "{1}" (y) : "1"); /* { dg-error "hard register constraint for input 1 conflicts with 'asm' clobber list" } */
    return x + y;
  }
--- 1,27 ----
! /* { dg-do compile { target lra } } */
  
  /* Test clobbers.
     See asm-hard-reg-error-{2,3}.c for tests involving register pairs.  */
  
+ #if defined __hppa__
+ # define R0 "20"
+ # define R1 "21"
+ #elif defined __AVR__
+ # define R0 "20"
+ # define R1 "24"
+ #elif defined __PRU__
+ # define R0 "0"
+ # define R1 "4"
+ #else
+ # define R0 "0"
+ # define R1 "1"
+ #endif
+ 
  int
  test (void)
  {
    int x, y;
!   __asm__ ("" : "={"R0"}" (x), "={"R1"}" (y) : : R1); /* { dg-error "hard register constraint for output 1 conflicts with 'asm' clobber list" } */
!   __asm__ ("" : "={"R0"}" (x) : "{"R0"}" (y), "{"R1"}" (y) : R1); /* { dg-error "hard register constraint for input 1 conflicts with 'asm' clobber list" } */
    return x + y;
  }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-compare-exchange-5.c gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-compare-exchange-5.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-compare-exchange-5.c	Sun Sep  7 22:33:20 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-compare-exchange-5.c	Sun Sep 14 22:32:14 2025
***************
*** 3,8 ****
--- 3,9 ----
  /* { dg-do run } */
  /* { dg-require-effective-target sync_int_128_runtime } */
  /* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-options "-mlsx -mscq" { target { loongarch64-*-* } } } */
  
  /* Test the execution of __atomic_compare_exchange_n builtin for an int_128.  */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-exchange-5.c gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-exchange-5.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-exchange-5.c	Sun Sep  7 22:33:20 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-exchange-5.c	Sun Sep 14 22:32:14 2025
***************
*** 3,8 ****
--- 3,9 ----
  /* { dg-do run } */
  /* { dg-require-effective-target sync_int_128_runtime } */
  /* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-options "-mlsx -mscq" { target { loongarch64-*-* } } } */
  
  /* Test the execution of the __atomic_X builtin for a 16 byte value.  */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-load-5.c gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-load-5.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-load-5.c	Sun Sep  7 22:33:20 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-load-5.c	Sun Sep 14 22:32:14 2025
***************
*** 3,8 ****
--- 3,9 ----
  /* { dg-do run } */
  /* { dg-require-effective-target sync_int_128_runtime } */
  /* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-options "-mlsx -mscq" { target { loongarch64-*-* } } } */
  
  extern void abort(void);
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-op-5.c gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-op-5.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-op-5.c	Sun Sep  7 22:33:20 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-op-5.c	Sun Sep 14 22:32:14 2025
***************
*** 3,8 ****
--- 3,9 ----
  /* { dg-do run } */
  /* { dg-require-effective-target sync_int_128_runtime } */
  /* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-options "-mlsx -mscq" { target { loongarch64-*-* } } } */
  
  /* Test the execution of the __atomic_*OP builtin routines for an int_128.  */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-store-5.c gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-store-5.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-store-5.c	Sun Sep  7 22:33:20 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-store-5.c	Sun Sep 14 22:32:14 2025
***************
*** 3,8 ****
--- 3,9 ----
  /* { dg-do run } */
  /* { dg-require-effective-target sync_int_128_runtime } */
  /* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-options "-mlsx -mscq" { target { loongarch64-*-* } } } */
  
  /* Test the execution of the __atomic_store_n builtin for a 16 byte value.  */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-store-6.c gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-store-6.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/atomic-store-6.c	Sun Sep  7 22:33:20 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/atomic-store-6.c	Sun Sep 14 22:32:14 2025
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do run } */
  /* { dg-require-effective-target sync_int_128_runtime } */
  /* { dg-options "-mcx16" { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-options "-mlsx -mscq" { target { loongarch64-*-* } } } */
  
  __int128_t i;
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/bitint-126.c gcc-16-20250914/gcc/testsuite/gcc.dg/bitint-126.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/bitint-126.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/bitint-126.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,26 ----
+ /* PR middle-end/121828 */
+ /* { dg-do compile { target bitint } } */
+ /* { dg-options "-std=c23 -O2" } */
+ 
+ void baz (int);
+ #if __BITINT_MAXWIDTH__ >= 255
+ unsigned _BitInt(255) a;
+ 
+ void
+ foo (int x, int y)
+ {
+   unsigned _BitInt(255) b;
+   int t = __builtin_sub_overflow (y, x, &b);
+   baz (t);
+   a = b;
+ }
+ 
+ void
+ bar (int x, int y)
+ {
+   unsigned _BitInt(255) b;
+   bool t = __builtin_sub_overflow (y, x, &b);
+   a = b;
+   baz (t);
+ }
+ #endif
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c23-array-negative-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c23-array-negative-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c23-array-negative-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c23-array-negative-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,46 ----
+ /* Test C2y constraint against negative array indices does not apply in
+    C23.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c23 -pedantic-errors" } */
+ 
+ int a[1], b[10];
+ struct s { int a[2]; } x;
+ void *p;
+ 
+ void
+ f ()
+ {
+   (void) a[0];
+   (void) a[1];
+   (void) a[12345];
+   (void) a[-1];
+   (void) a[-__LONG_LONG_MAX__];
+   (void) b[0];
+   (void) b[10];
+   (void) b[12345];
+   (void) b[-1];
+   (void) b[-__LONG_LONG_MAX__];
+   (void) x.a[0];
+   (void) x.a[1];
+   (void) x.a[12345];
+   (void) x.a[-1];
+   (void) x.a[-__LONG_LONG_MAX__];
+   int c[1];
+   (void) c[0];
+   (void) c[1];
+   (void) c[12345];
+   (void) c[-1];
+   (void) c[-__LONG_LONG_MAX__];
+   (void) (*(int (*)[1]) p)[0];
+   (void) (*(int (*)[1]) p)[1];
+   (void) (*(int (*)[1]) p)[12345];
+   (void) (*(int (*)[1]) p)[-1];
+   (void) (*(int (*)[1]) p)[-__LONG_LONG_MAX__];
+   /* This index is not an integer constant expression, so the constraint
+      against negative indices does not apply even in C2y.  */
+   (void) a[__LONG_LONG_MAX__ + 2];
+   /* { dg-warning "integer overflow in expression" "overflow" { target *-*-* } .-1 } */
+   /* Likewise, this is only an arithmetic constant expression, not an integer
+      constant expression.  */
+   (void) a[(int)-1.0];
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c23-register-array-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c23-register-array-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c23-register-array-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c23-register-array-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,48 ----
+ /* Test C2y register array element access: not in C23.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c23 -pedantic-errors" } */
+ 
+ extern void abort ();
+ extern void exit (int);
+ 
+ struct s { int a[10]; };
+ 
+ int
+ main ()
+ {
+   int n = 10;
+   register int a[1], b[20], c[n];
+   register struct s v;
+   a[0] = 0; /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < n; i++)
+     c[i] = i; /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < 20; i++)
+     b[i] = i; /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < 10; i++)
+     v.a[i] = i; /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < n; i++)
+     if (c[i] != i) /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   for (int i = 0; i < 20; i++)
+     if (b[i] != i) /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   for (int i = 0; i < 10; i++)
+     if (v.a[i] != i) /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   if (a[0] != 0) /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if ((register int[2]) { 2, 3 }[n / 10] != 3) /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if ((register struct s) { 1, 2 }.a[n / 10] != 2) /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if (false)
+     (void) a[12345]; /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+   if (false)
+     (void) b[23456]; /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+   if (false)
+     /* This index is not an integer constant expression, so the constraint
+        against negative indices does not apply.  */
+     (void) a[__INT_MAX__ + 2]; /* { dg-error "ISO C forbids subscripting 'register' array before C2Y" } */
+   /* { dg-warning "integer overflow in expression" "overflow" { target *-*-* } .-1 } */
+   exit (0);
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c23-register-array-2.c gcc-16-20250914/gcc/testsuite/gcc.dg/c23-register-array-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c23-register-array-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c23-register-array-2.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,48 ----
+ /* Test C2y register array element access: C23 warning with -pedantic.  */
+ /* { dg-do run } */
+ /* { dg-options "-std=c23 -pedantic" } */
+ 
+ extern void abort ();
+ extern void exit (int);
+ 
+ struct s { int a[10]; };
+ 
+ int
+ main ()
+ {
+   int n = 10;
+   register int a[1], b[20], c[n];
+   register struct s v;
+   a[0] = 0; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < n; i++)
+     c[i] = i; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < 20; i++)
+     b[i] = i; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < 10; i++)
+     v.a[i] = i; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < n; i++)
+     if (c[i] != i) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   for (int i = 0; i < 20; i++)
+     if (b[i] != i) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   for (int i = 0; i < 10; i++)
+     if (v.a[i] != i) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   if (a[0] != 0) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if ((register int[2]) { 2, 3 }[n / 10] != 3) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if ((register struct s) { 1, 2 }.a[n / 10] != 2) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if (false)
+     (void) a[12345]; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   if (false)
+     (void) b[23456]; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   if (false)
+     /* This index is not an integer constant expression, so the constraint
+        against negative indices does not apply.  */
+     (void) a[__INT_MAX__ + 2]; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   /* { dg-warning "integer overflow in expression" "overflow" { target *-*-* } .-1 } */
+   exit (0);
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c23-register-array-3.c gcc-16-20250914/gcc/testsuite/gcc.dg/c23-register-array-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c23-register-array-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c23-register-array-3.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,49 ----
+ /* Test C2y register array element access: C23 warning with
+    -Wc23-c2y-compat.  */
+ /* { dg-do run } */
+ /* { dg-options "-std=c23 -Wc23-c2y-compat" } */
+ 
+ extern void abort ();
+ extern void exit (int);
+ 
+ struct s { int a[10]; };
+ 
+ int
+ main ()
+ {
+   int n = 10;
+   register int a[1], b[20], c[n];
+   register struct s v;
+   a[0] = 0; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < n; i++)
+     c[i] = i; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < 20; i++)
+     b[i] = i; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < 10; i++)
+     v.a[i] = i; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < n; i++)
+     if (c[i] != i) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   for (int i = 0; i < 20; i++)
+     if (b[i] != i) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   for (int i = 0; i < 10; i++)
+     if (v.a[i] != i) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   if (a[0] != 0) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if ((register int[2]) { 2, 3 }[n / 10] != 3) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if ((register struct s) { 1, 2 }.a[n / 10] != 2) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if (false)
+     (void) a[12345]; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   if (false)
+     (void) b[23456]; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   if (false)
+     /* This index is not an integer constant expression, so the constraint
+        against negative indices does not apply.  */
+     (void) a[__INT_MAX__ + 2]; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   /* { dg-warning "integer overflow in expression" "overflow" { target *-*-* } .-1 } */
+   exit (0);
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c23-register-array-4.c gcc-16-20250914/gcc/testsuite/gcc.dg/c23-register-array-4.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c23-register-array-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c23-register-array-4.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,49 ----
+ /* Test C2y register array element access: no warning in C23 mode with
+    -Wno-c23-c2y-compat.  */
+ /* { dg-do run } */
+ /* { dg-options "-std=c23 -pedantic-errors -Wno-c23-c2y-compat" } */
+ 
+ extern void abort ();
+ extern void exit (int);
+ 
+ struct s { int a[10]; };
+ 
+ int
+ main ()
+ {
+   int n = 10;
+   register int a[1], b[20], c[n];
+   register struct s v;
+   a[0] = 0;
+   for (int i = 0; i < n; i++)
+     c[i] = i;
+   for (int i = 0; i < 20; i++)
+     b[i] = i;
+   for (int i = 0; i < 10; i++)
+     v.a[i] = i;
+   for (int i = 0; i < n; i++)
+     if (c[i] != i)
+       abort ();
+   for (int i = 0; i < 20; i++)
+     if (b[i] != i)
+       abort ();
+   for (int i = 0; i < 10; i++)
+     if (v.a[i] != i)
+       abort ();
+   if (a[0] != 0)
+     abort ();
+   if ((register int[2]) { 2, 3 }[n / 10] != 3)
+     abort ();
+   if ((register struct s) { 1, 2 }.a[n / 10] != 2)
+     abort ();
+   if (false)
+     (void) a[12345];
+   if (false)
+     (void) b[23456];
+   if (false)
+     /* This index is not an integer constant expression, so the constraint
+        against negative indices does not apply.  */
+     (void) a[__INT_MAX__ + 2];
+   /* { dg-warning "integer overflow in expression" "overflow" { target *-*-* } .-1 } */
+   exit (0);
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-array-negative-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-array-negative-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-array-negative-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-array-negative-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,45 ----
+ /* Test C2y constraint against negative array indices.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ int a[1], b[10];
+ struct s { int a[2]; } x;
+ void *p;
+ 
+ void
+ f ()
+ {
+   (void) a[0];
+   (void) a[1];
+   (void) a[12345];
+   (void) a[-1]; /* { dg-error "array subscript is negative" } */
+   (void) a[-__LONG_LONG_MAX__]; /* { dg-error "array subscript is negative" } */
+   (void) b[0];
+   (void) b[10];
+   (void) b[12345];
+   (void) b[-1]; /* { dg-error "array subscript is negative" } */
+   (void) b[-__LONG_LONG_MAX__]; /* { dg-error "array subscript is negative" } */
+   (void) x.a[0];
+   (void) x.a[1];
+   (void) x.a[12345];
+   (void) x.a[-1]; /* { dg-error "array subscript is negative" } */
+   (void) x.a[-__LONG_LONG_MAX__]; /* { dg-error "array subscript is negative" } */
+   int c[1];
+   (void) c[0];
+   (void) c[1];
+   (void) c[12345];
+   (void) c[-1]; /* { dg-error "array subscript is negative" } */
+   (void) c[-__LONG_LONG_MAX__]; /* { dg-error "array subscript is negative" } */
+   (void) (*(int (*)[1]) p)[0];
+   (void) (*(int (*)[1]) p)[1];
+   (void) (*(int (*)[1]) p)[12345];
+   (void) (*(int (*)[1]) p)[-1]; /* { dg-error "array subscript is negative" } */
+   (void) (*(int (*)[1]) p)[-__LONG_LONG_MAX__]; /* { dg-error "array subscript is negative" } */
+   /* This index is not an integer constant expression, so the constraint
+      against negative indices does not apply.  */
+   (void) a[__LONG_LONG_MAX__ + 2];
+   /* { dg-warning "integer overflow in expression" "overflow" { target *-*-* } .-1 } */
+   /* Likewise, this is only an arithmetic constant expression, not an integer
+      constant expression.  */
+   (void) a[(int)-1.0];
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-function-qual-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-function-qual-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-function-qual-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-function-qual-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,13 ----
+ /* Test qualified function types: implementation-defined in C2y, undefined
+    behavior previously.  GCC has an extension here, but does not allow it in
+    pedantic mode.  _Atomic and restrict are constraint violations here.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ typedef void FUNC (void);
+ 
+ const FUNC f1; /* { dg-error "ISO C forbids qualified function types" } */
+ volatile FUNC f2; /* { dg-error "ISO C forbids qualified function types" } */
+ restrict FUNC f3; /* { dg-error "ISO C forbids qualified function types" } */
+ /* { dg-error "invalid use of 'restrict'" "restrict" { target *-*-* } .-1 } */
+ _Atomic FUNC f4; /* { dg-error "'_Atomic'-qualified function type" } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-incomplete-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-incomplete-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-incomplete-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-incomplete-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,20 ----
+ /* Test C2y constraint for incomplete types of objects with no linkage.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ struct s1;
+ 
+ void
+ f ()
+ {
+   struct s1 a; /* { dg-error "storage size" } */
+   int b[]; /* { dg-error "array size missing" } */
+   static struct s1 c; /* { dg-error "storage size" } */
+   static int d[]; /* { dg-error "array size missing" } */
+   struct s2;
+   struct s2 e; /* { dg-error "storage size" } */
+   static struct s2 g; /* { dg-error "storage size" } */
+   struct s2 { int i; };
+ }
+ 
+ struct s1 { int j; };
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-inline-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-inline-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-inline-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-inline-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,7 ----
+ /* Test C2y constraint that inline functions with external linkage must be
+    defined in same translation unit.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ inline void f (); /* { dg-error "declared but never defined" } */
+ extern inline void g(); /* { dg-error "declared but never defined" } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-pointer-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-pointer-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-pointer-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-pointer-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,53 ----
+ /* Test C2y constraints on pointer conversions.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ #include <stddef.h>
+ #include <stdint.h>
+ 
+ void *p1;
+ struct s { int a; } s1;
+ struct sp { void *p; } s2;
+ union t { int b; } t1;
+ union tp { void *p; } t2;
+ 
+ void
+ f ()
+ {
+   (double) p1; /* { dg-error "pointer value used where a floating-point was expected" } */
+   (struct s) p1; /* { dg-error "conversion to non-scalar type requested" } */
+   (union t) p1; /* { dg-error "cast to union type from type not present in union" } */
+   (struct sp) p1; /* { dg-error "conversion to non-scalar type requested" } */
+   (union tp) p1; /* { dg-error "ISO C forbids casts to union type" } */
+   (nullptr_t) p1; /* { dg-error "conversion" } */
+   /* { dg-message "or a null pointer constant can be converted" "conversion note" { target *-*-* } .-1 } */
+   (intptr_t) p1;
+   (int *) p1;
+   (void) p1;
+   (void *) 0.0; /* { dg-error "cannot convert to a pointer type" } */
+   (void *) s1; /* { dg-error "cannot convert to a pointer type" } */
+   (void *) t1; /* { dg-error "cannot convert to a pointer type" } */
+   (void *) s2; /* { dg-error "cannot convert to a pointer type" } */
+   (void *) t2; /* { dg-error "cannot convert to a pointer type" } */
+   (void *) nullptr;
+   (void *) 0;
+   (void *) (int *) 0;
+   (void *) (void) p1; /* { dg-error "invalid use of void expression" } */
+ }
+ 
+ void
+ g ()
+ {
+   double d = p1; /* { dg-error "incompatible types" } */
+   s1 = p1; /* { dg-error "incompatible types" } */
+   t1 = p1; /* { dg-error "incompatible types" } */
+   s2 = p1; /* { dg-error "incompatible types" } */
+   t2 = p1; /* { dg-error "incompatible types" } */
+   nullptr_t np = p1; /* { dg-error "incompatible types" } */
+   p1 = 0.0; /* { dg-error "incompatible types" } */
+   p1 = s1; /* { dg-error "incompatible types" } */
+   p1 = t1; /* { dg-error "incompatible types" } */
+   p1 = s2; /* { dg-error "incompatible types" } */
+   p1 = t2; /* { dg-error "incompatible types" } */
+   p1 = (void) p1; /* { dg-error "invalid use of void expression" } */
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-register-array-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-register-array-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-register-array-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-register-array-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,21 ----
+ /* Test implicit conversion of register arrays to pointers:
+    implementation-defined in C2y, undefined behavior previously.  GCC disallows
+    this conversion (the case of array element access changed in C2y no longer
+    to involve the implicit conversion to a pointer).  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ void
+ f ()
+ {
+   register int a[1];
+   constexpr register int b[1] = { 1 };
+   a; /* { dg-error "address of register variable" } */
+   b; /* { dg-error "address of register variable" } */
+   (void) a; /* { dg-error "address of register variable" } */
+   (void) b; /* { dg-error "address of register variable" } */
+   *a; /* { dg-error "address of register variable" } */
+   *b; /* { dg-error "address of register variable" } */
+   a + 0; /* { dg-error "address of register variable" } */
+   b + 0; /* { dg-error "address of register variable" } */
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-register-array-2.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-register-array-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-register-array-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-register-array-2.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,48 ----
+ /* Test C2y register array element access.  Execution tests.  */
+ /* { dg-do run } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ extern void abort ();
+ extern void exit (int);
+ 
+ struct s { int a[10]; };
+ 
+ int
+ main ()
+ {
+   int n = 10;
+   register int a[1], b[20], c[n];
+   register struct s v;
+   a[0] = 0;
+   for (int i = 0; i < n; i++)
+     c[i] = i;
+   for (int i = 0; i < 20; i++)
+     b[i] = i;
+   for (int i = 0; i < 10; i++)
+     v.a[i] = i;
+   for (int i = 0; i < n; i++)
+     if (c[i] != i)
+       abort ();
+   for (int i = 0; i < 20; i++)
+     if (b[i] != i)
+       abort ();
+   for (int i = 0; i < 10; i++)
+     if (v.a[i] != i)
+       abort ();
+   if (a[0] != 0)
+     abort ();
+   if ((register int[2]) { 2, 3 }[n / 10] != 3)
+     abort ();
+   if ((register struct s) { 1, 2 }.a[n / 10] != 2)
+     abort ();
+   if (false)
+     (void) a[12345];
+   if (false)
+     (void) b[23456];
+   if (false)
+     /* This index is not an integer constant expression, so the constraint
+        against negative indices does not apply.  */
+     (void) a[__INT_MAX__ + 2];
+   /* { dg-warning "integer overflow in expression" "overflow" { target *-*-* } .-1 } */
+   exit (0);
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-register-array-3.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-register-array-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-register-array-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-register-array-3.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,49 ----
+ /* Test C2y register array element access.  Test warnings with
+    -Wc23-c2y-compat.  */
+ /* { dg-do run } */
+ /* { dg-options "-std=c2y -pedantic-errors -Wc23-c2y-compat" } */
+ 
+ extern void abort ();
+ extern void exit (int);
+ 
+ struct s { int a[10]; };
+ 
+ int
+ main ()
+ {
+   int n = 10;
+   register int a[1], b[20], c[n];
+   register struct s v;
+   a[0] = 0; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < n; i++)
+     c[i] = i; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < 20; i++)
+     b[i] = i; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < 10; i++)
+     v.a[i] = i; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   for (int i = 0; i < n; i++)
+     if (c[i] != i) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   for (int i = 0; i < 20; i++)
+     if (b[i] != i) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   for (int i = 0; i < 10; i++)
+     if (v.a[i] != i) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+       abort ();
+   if (a[0] != 0) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if ((register int[2]) { 2, 3 }[n / 10] != 3) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if ((register struct s) { 1, 2 }.a[n / 10] != 2) /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+     abort ();
+   if (false)
+     (void) a[12345]; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   if (false)
+     (void) b[23456]; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   if (false)
+     /* This index is not an integer constant expression, so the constraint
+        against negative indices does not apply.  */
+     (void) a[__INT_MAX__ + 2]; /* { dg-warning "ISO C forbids subscripting 'register' array before C2Y" } */
+   /* { dg-warning "integer overflow in expression" "overflow" { target *-*-* } .-1 } */
+   exit (0);
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-storage-class-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-storage-class-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-storage-class-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-storage-class-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,18 ----
+ /* Test C2y constraint on storage-class specifiers for block-scope identifiers
+    for functions.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ void
+ f ()
+ {
+   auto void g1 (); /* { dg-error "invalid storage class for function" } */
+   /* { dg-error "nested function" "nested" { target *-*-* } .-1 } */
+   constexpr void g2 (); /* { dg-error "requires an initialized data declaration" } */
+   extern void g3 ();
+   register void g4 (); /* { dg-error "invalid storage class for function" } */
+   static void g5 (); /* { dg-error "invalid storage class for function" } */
+   thread_local void g6 (); /* { dg-error "implicitly auto and declared" } */
+   static thread_local void g7 (); /* { dg-error "invalid storage class for function" } */
+   /* { dg-error "nested function" "nested" { target *-*-* } .-1 } */
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-struct-empty-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-struct-empty-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/c2y-struct-empty-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/c2y-struct-empty-1.c	Sun Sep 14 22:32:14 2025
***************
*** 0 ****
--- 1,10 ----
+ /* Test structures and unions without named members: implementation-defined in
+    C2y, undefined behavior previously.  GCC has an extension here, but does not
+    allow it in pedantic mode.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ struct s1 { }; /* { dg-error "struct has no members" } */
+ union u1 { }; /* { dg-error "union has no members" } */
+ struct s2 { struct { }; }; /* { dg-error "struct has no members" } */
+ struct s3 { int : 3; int : 4; }; /* { dg-error "struct has no named members" } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-3.c gcc-16-20250914/gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/debug/ctf/ctf-struct-3.c	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,32 ----
+ /* PR debug/121411.
+    Test for compilation of very large struct types.
+    The ctt_size for the struct shall encode CTF_LSIZE_SENT to indicate the
+    large struct encoding is used.  */
+ 
+ /* { dg-do compile { target { lp64 || llp64 } } } */
+ /* { dg-options "-O0 -gctf -dA" } */
+ 
+ struct huge
+ {                               /* bit offset  */
+   unsigned char a1[0xffffffff]; /*          0  */
+   unsigned char a2[0xffffffff]; /*  7fffffff8  */
+   char x;                       /*  ffffffff0  */
+   char y;                       /*  ffffffff8  */
+   char z;                       /* 1000000000  */
+ };
+ 
+ struct huge v;
+ 
+ /* Verify struct is encoded with large type encoding format.  */
+ /* { dg-final { scan-assembler-times "0x1a000005\[\t \]+\[^\n\]*ctt_info" 1 } } */
+ /* { dg-final { scan-assembler-times "0xffffffff\[\t \]+\[^\n\]*ctt_size" 1 } } */
+ /* { dg-final { scan-assembler-times "0x2\[\t \]+\[^\n\]*ctt_lsizehi" 1 } } */
+ /* { dg-final { scan-assembler-times "ctt_lsizelo" 1 } } */
+ 
+ /* Verify member offsets are correct for large offsets.  */
+ /* { dg-final { scan-assembler-times "0x7\[\t \]+\[^\n\]*ctlm_offsethi" 1 } } */
+ /* { dg-final { scan-assembler-times "0xf\[\t \]+\[^\n\]*ctlm_offsethi" 2 } } */
+ /* { dg-final { scan-assembler-times "0x10\[\t \]+\[^\n\]*ctlm_offsethi" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "0xfffffff8\[\t \]+\[^\n\]*ctlm_offsetlo" 2 } } */
+ /* { dg-final { scan-assembler-times "0xfffffff0\[\t \]+\[^\n\]*ctlm_offsetlo" 1 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/fabs-plus-zero-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/fabs-plus-zero-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/fabs-plus-zero-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/fabs-plus-zero-1.c	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,9 ----
+ /* With trapping-math enabled (default behavior), GCC must preserve the +0.0 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ double f(double a)
+ {
+   return __builtin_fabs(a + 0.0);
+ }
+ /* { dg-final { scan-tree-dump-times "\\+ 0\\.0" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/fabs-plus-zero-2.c gcc-16-20250914/gcc/testsuite/gcc.dg/fabs-plus-zero-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/fabs-plus-zero-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/fabs-plus-zero-2.c	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,10 ----
+ /* With -fno-trapping-math it is safe to fold away (+/-)0.0  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-trapping-math -fdump-tree-optimized" } */
+ 
+ double f1(double a) { return __builtin_fabs(a + 0.0); }
+ double f2(double a) { return __builtin_fabs(a + -0.0); }
+ double f3(double a) { return __builtin_fabs(a - 0.0); }
+ double f4(double a) { return __builtin_fabs(a - -0.0); }
+ 
+ /* { dg-final { scan-tree-dump-not "\\+ 0\\.0" "optimized" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/fatal-error-html.py gcc-16-20250914/gcc/testsuite/gcc.dg/fatal-error-html.py
*** gcc-16-20250907/gcc/testsuite/gcc.dg/fatal-error-html.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/fatal-error-html.py	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,28 ----
+ from htmltest import *
+ 
+ import pytest
+ 
+ @pytest.fixture(scope='function', autouse=True)
+ def html_tree():
+     return html_tree_from_env()
+ 
+ def test_results(html_tree):
+     root = html_tree.getroot ()
+     assert root.tag == make_tag('html')
+ 
+     head = root.find('xhtml:head', ns)
+     assert head is not None
+ 
+     body = root.find('xhtml:body', ns)
+     assert body is not None
+ 
+     diag_list = body.find("./xhtml:div[@class='gcc-diagnostic-list']", ns)
+     assert len(diag_list)
+ 
+     diag = diag_list.find('xhtml:div[@id="gcc-diag-0"]', ns)
+     assert diag is not None
+     message = diag.find("./xhtml:div[@class='gcc-message']", ns)
+     assert message is not None
+     assert message[0].tag == make_tag('strong')
+     assert message[0].text == 'fatal error: '
+     assert message[0].tail.startswith(' this-does-not-exist.h:')
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/fatal-error-sarif.py gcc-16-20250914/gcc/testsuite/gcc.dg/fatal-error-sarif.py
*** gcc-16-20250907/gcc/testsuite/gcc.dg/fatal-error-sarif.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/fatal-error-sarif.py	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,29 ----
+ from sarif import *
+ 
+ import pytest
+ 
+ @pytest.fixture(scope='function', autouse=True)
+ def sarif():
+     return sarif_from_env()
+ 
+ def test_execution_unsuccessful(sarif):
+     runs = sarif['runs']
+     run = runs[0]
+ 
+     invocations = run['invocations']
+     assert len(invocations) == 1
+     invocation = invocations[0]
+ 
+     # We expect the fatal error to make executionSuccessful be false
+     assert invocation['executionSuccessful'] == False
+ 
+ def test_fatal_error(sarif):
+     runs = sarif['runs']
+     run = runs[0]
+     results = run['results']
+ 
+     assert len(results) == 1
+     
+     result = results[0]
+     assert result['level'] == 'error'
+     assert result['message']['text'] == "this-does-not-exist.h: No such file or directory"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/fatal-error.c gcc-16-20250914/gcc/testsuite/gcc.dg/fatal-error.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/fatal-error.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/fatal-error.c	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fdiagnostics-add-output=sarif" } */
+ /* { dg-additional-options "-fdiagnostics-add-output=experimental-html:javascript=no" } */
+ 
+ #include "this-does-not-exist.h"
+ 
+ /* { dg-prune-output "fatal error:" }
+    { dg-prune-output "compilation terminated" }
+    { dg-final { verify-sarif-file } }
+    { dg-final { run-sarif-pytest fatal-error.c "fatal-error-sarif.py" } }
+    { dg-final { run-html-pytest fatal-error.c "fatal-error-html.py" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/fixed-point/bitint-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/fixed-point/bitint-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/fixed-point/bitint-1.c	Sun Sep  7 22:33:21 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/fixed-point/bitint-1.c	Sun Sep 14 22:32:15 2025
***************
*** 1,6 ****
  /* PR c/102989 */
  /* { dg-do compile { target bitint } } */
! /* { dg-options "-std=c23" } */
  
  void
  foo (void)
--- 1,6 ----
  /* PR c/102989 */
  /* { dg-do compile { target bitint } } */
! /* { dg-options "-std=gnu23" } */
  
  void
  foo (void)
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-html.py gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-html.py
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-html.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-html.py	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,42 ----
+ from htmltest import *
+ 
+ import pytest
+ 
+ @pytest.fixture(scope='function', autouse=True)
+ def html_tree():
+     return html_tree_from_env()
+ 
+ def test_results(html_tree):
+     root = html_tree.getroot ()
+     assert root.tag == make_tag('html')
+ 
+     head = root.find('xhtml:head', ns)
+     assert head is not None
+ 
+     body = root.find('xhtml:body', ns)
+     assert body is not None
+ 
+     diag_list = body.find("./xhtml:div[@class='gcc-diagnostic-list']", ns)
+     assert len(diag_list)
+ 
+     # Currently the ICE appears nested within the parent error
+     diag = diag_list.find('xhtml:div', ns)
+     assert diag is not None
+     assert diag.attrib['class'] == 'alert alert-danger'
+ 
+     icon = diag.find('xhtml:span', ns)
+     assert icon.attrib['class'] == 'pficon pficon-error-circle-o'
+ 
+     # The message line for the parent error:
+     message = diag.find("./xhtml:div[@class='gcc-message']", ns)
+     assert message is not None
+     assert message[0].tag == make_tag('strong')
+     assert message[0].text == 'error: '
+     assert message[0].tail == " placeholder"
+ 
+     # The ICE
+     ice = diag.find('.//xhtml:div[@class="gcc-diagnostic"]', ns)
+     assert ice is not None
+     ice_msg = ice.find("./xhtml:div[@class='gcc-message']", ns)
+     assert ice_msg is not None
+     assert ice_msg.text == "I'm sorry Dave, I'm afraid I can't do that"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-sarif.py gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-sarif.py
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-sarif.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice-sarif.py	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,47 ----
+ from sarif import *
+ 
+ import pytest
+ 
+ @pytest.fixture(scope='function', autouse=True)
+ def sarif():
+     return sarif_from_env()
+ 
+ def test_execution_failed(sarif):
+     runs = sarif['runs']
+     run = runs[0]
+ 
+     invocations = run['invocations']
+     assert len(invocations) == 1
+     invocation = invocations[0]
+ 
+     assert invocation['executionSuccessful'] == False
+ 
+ def test_notification(sarif):
+     # We expect an execution notification for the ICE in the invocation
+     runs = sarif['runs']
+     run = runs[0]
+ 
+     invocations = run['invocations']
+     assert len(invocations) == 1
+     invocation = invocations[0]
+ 
+     assert invocation['executionSuccessful'] == False
+ 
+     notifications = invocation['toolExecutionNotifications']
+     assert len(notifications) == 1
+ 
+     notification = notifications[0]
+ 
+     assert notification['message']['text'] == "I'm sorry Dave, I'm afraid I can't do that"
+     assert notification['level'] == 'error'
+ 
+     loc0 = notification['locations'][0]
+     assert get_location_artifact_uri(loc0).endswith('crash-test-nested-ice.c')
+     assert 'inject_ice ();' in get_location_snippet_text(loc0)
+ 
+     # We may have backtrace information
+     if 'properties' in notification:
+         backtrace = notification['properties']['gcc/backtrace']
+         assert 'frames' in backtrace
+         # Ideally we should have a frame for pass_crash_test::execute(function*)
+         # but we can't rely on this.
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice.c gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-ice.c	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fno-report-bug" } */
+ /* { dg-additional-options "-fplugin-arg-crash_test_plugin-nested" } */
+ /* { dg-additional-options "-fdiagnostics-add-output=sarif" } */
+ /* { dg-additional-options "-fdiagnostics-add-output=experimental-html:javascript=no" } */
+ 
+ extern void inject_ice (void);
+ 
+ void test_1 (void)
+ {
+   inject_ice ();   /* { dg-ice "I'm sorry Dave, I'm afraid I can't do that" } */
+   /* { dg-error "placeholder" "" { target *-*-* } .-1 } */
+   /* { dg-regexp "during GIMPLE pass: crash_test" } */
+ }
+ 
+ /* Verify that some JSON was written to a file with the expected name.  */
+ /* { dg-final { verify-sarif-file } } */
+ 
+ /* Use a Python script to verify various properties about the generated
+    .sarif file:
+    { dg-final { run-sarif-pytest crash-test-nested-ice.c "crash-test-nested-ice-sarif.py" } } */
+ 
+ /* Use a Python script to verify various properties about the generated
+    .html file:
+    { dg-final { run-html-pytest crash-test-nested-ice.c "crash-test-nested-ice-html.py" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-html.py gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-html.py
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-html.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-html.py	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,42 ----
+ from htmltest import *
+ 
+ import pytest
+ 
+ @pytest.fixture(scope='function', autouse=True)
+ def html_tree():
+     return html_tree_from_env()
+ 
+ def test_results(html_tree):
+     root = html_tree.getroot ()
+     assert root.tag == make_tag('html')
+ 
+     head = root.find('xhtml:head', ns)
+     assert head is not None
+ 
+     body = root.find('xhtml:body', ns)
+     assert body is not None
+ 
+     diag_list = body.find("./xhtml:div[@class='gcc-diagnostic-list']", ns)
+     assert len(diag_list)
+ 
+     # Currently the ICE appears nested within the parent error
+     diag = diag_list.find('xhtml:div', ns)
+     assert diag is not None
+     assert diag.attrib['class'] == 'alert alert-danger'
+ 
+     icon = diag.find('xhtml:span', ns)
+     assert icon.attrib['class'] == 'pficon pficon-error-circle-o'
+ 
+     # The message line for the parent error:
+     message = diag.find("./xhtml:div[@class='gcc-message']", ns)
+     assert message is not None
+     assert message[0].tag == make_tag('strong')
+     assert message[0].text == 'error: '
+     assert message[0].tail == " placeholder"
+ 
+     # The ICE
+     ice = diag.find('.//xhtml:div[@class="gcc-diagnostic"]', ns)
+     assert ice is not None
+     ice_msg = ice.find("./xhtml:div[@class='gcc-message']", ns)
+     assert ice_msg is not None
+     assert ice_msg.text == "Segmentation fault"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-sarif.py gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-sarif.py
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-sarif.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null-sarif.py	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,47 ----
+ from sarif import *
+ 
+ import pytest
+ 
+ @pytest.fixture(scope='function', autouse=True)
+ def sarif():
+     return sarif_from_env()
+ 
+ def test_execution_failed(sarif):
+     runs = sarif['runs']
+     run = runs[0]
+ 
+     invocations = run['invocations']
+     assert len(invocations) == 1
+     invocation = invocations[0]
+ 
+     assert invocation['executionSuccessful'] == False
+ 
+ def test_notification(sarif):
+     # We expect an execution notification for the ICE in the invocation
+     runs = sarif['runs']
+     run = runs[0]
+ 
+     invocations = run['invocations']
+     assert len(invocations) == 1
+     invocation = invocations[0]
+ 
+     assert invocation['executionSuccessful'] == False
+ 
+     notifications = invocation['toolExecutionNotifications']
+     assert len(notifications) == 1
+ 
+     notification = notifications[0]
+ 
+     assert notification['message']['text'] == "Segmentation fault"
+     assert notification['level'] == 'error'
+ 
+     loc0 = notification['locations'][0]
+     assert get_location_artifact_uri(loc0).endswith('crash-test-nested-write-through-null.c')
+     assert 'inject_write_through_null ();' in get_location_snippet_text(loc0)
+ 
+     # We may have backtrace information
+     if 'properties' in notification:
+         backtrace = notification['properties']['gcc/backtrace']
+         assert 'frames' in backtrace
+         # Ideally we should have a frame for pass_crash_test::execute(function*)
+         # but we can't rely on this.
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null.c gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-nested-write-through-null.c	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fno-report-bug" } */
+ /* { dg-additional-options "-fplugin-arg-crash_test_plugin-nested" } */
+ /* { dg-additional-options "-fdiagnostics-add-output=sarif" } */
+ /* { dg-additional-options "-fdiagnostics-add-output=experimental-html:javascript=no" } */
+ 
+ extern void inject_write_through_null (void);
+ 
+ void test_inject_write_through_null (void)
+ {
+   inject_write_through_null (); /* { dg-ice "Segmentation fault" } */ 
+   /* { dg-error "placeholder" "" { target *-*-* } .-1 } */
+   /* { dg-regexp "during GIMPLE pass: crash_test" } */
+ }
+ 
+ /* Verify that some JSON was written to a file with the expected name.  */
+ /* { dg-final { verify-sarif-file } } */
+ 
+ /* Use a Python script to verify various properties about the generated
+    .sarif file:
+    { dg-final { run-sarif-pytest crash-test-nested-write-through-null.c "crash-test-nested-write-through-null-sarif.py" } } */
+ 
+ /* Use a Python script to verify various properties about the generated
+    .html file:
+    { dg-final { run-html-pytest crash-test-nested-write-through-null.c "crash-test-nested-write-through-null-html.py" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-sarif.c gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-sarif.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-sarif.c	Sun Sep  7 22:33:22 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-sarif.c	Thu Jan  1 00:00:00 1970
***************
*** 1,64 ****
- /* { dg-do compile } */
- /* { dg-options "-fdiagnostics-format=sarif-file" } */
- /* { dg-additional-options "-fno-report-bug" } */
- 
- extern void inject_write_through_null (void);
- 
- void test_inject_write_through_null (void)
- {
-   inject_write_through_null (); /* { dg-ice "" } */
-   /* { dg-regexp "during GIMPLE pass: crash_test" } */
- }
- 
- /* Verify that some JSON was written to a file with the expected name.  */
- /* { dg-final { verify-sarif-file } } */
- 
- /* We expect various properties.
-    The indentation here reflects the expected hierarchy, though these tests
-    don't check for that, merely the string fragments we expect.
- 
-    { dg-final { scan-sarif-file "\"version\": \"2.1.0\"" } }
-    { dg-final { scan-sarif-file "\"runs\": \\\[" } }
-      { dg-final { scan-sarif-file "\"artifacts\": \\\[" } } 
-        { dg-final { scan-sarif-file "\"location\": " } }
-          { dg-final { scan-sarif-file "\"uri\": " } }
- 
-        { dg-final { scan-sarif-file "\"sourceLanguage\": \"c\"" { target c } } }
-        { dg-final { scan-sarif-file "\"sourceLanguage\": \"cplusplus\"" { target c++ } } }
- 
-        { dg-final { scan-sarif-file "\"contents\": " } }
-          { dg-final { scan-sarif-file "\"text\": " } }
-      { dg-final { scan-sarif-file "\"tool\": " } }
-        { dg-final { scan-sarif-file "\"driver\": " } }
-          { dg-final { scan-sarif-file "\"name\": \"GNU C" } }
-          { dg-final { scan-sarif-file "\"fullName\": \"GNU C" } }
-          { dg-final { scan-sarif-file "\"informationUri\": \"" } }
-        { dg-final { scan-sarif-file "\"extensions\": \\\[" } }
-          { dg-final { scan-sarif-file "\"name\": \"crash_test_plugin\"" } }
- 
-      We expect no results:
-      { dg-final { scan-sarif-file "\"results\": \\\[\\\]" } }
- 
-      but instead should have an invocations array...
- 
-      { dg-final { scan-sarif-file "\"invocations\": \\\[" } }
- 
-      ...containing this:
-        { dg-final { scan-sarif-file "\"executionSuccessful\": false" } }
-        { dg-final { scan-sarif-file "\"toolExecutionNotifications\": \\\[" } }
- 
-        ...containing this notification:
-          { dg-final { scan-sarif-file "\"level\": \"error\"" } }
-          { dg-final { scan-sarif-file "\"locations\": \\\[" } }
-            { dg-final { scan-sarif-file "\"logicalLocations\": \\\[" } }
-              { dg-final { scan-sarif-file "\"kind\": \"function\"" } }
-              { dg-final { scan-sarif-file "\"name\": \"test_inject_write_through_null\"" } }
-            { dg-final { scan-sarif-file "\"physicalLocation\": " } }
-              { dg-final { scan-sarif-file "\"contextRegion\": " } }
-              { dg-final { scan-sarif-file "\"artifactLocation\": " } }
-              { dg-final { scan-sarif-file "\"region\": " } }
-                { dg-final { scan-sarif-file "\"startLine\": 9" } }
-                { dg-final { scan-sarif-file "\"startColumn\": 3" } }
-                { dg-final { scan-sarif-file "\"endColumn\": 31" } }
-          { dg-final { scan-sarif-file "\"message\": " } }
-            { dg-final { scan-sarif-file "\"text\": \"Segmentation \[Ff\]ault" } } */
--- 0 ----
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-stderr.c gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-stderr.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-stderr.c	Sun Sep  7 22:33:22 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-stderr.c	Thu Jan  1 00:00:00 1970
***************
*** 1,10 ****
- /* { dg-do compile } */
- /* { dg-additional-options "-fno-report-bug" } */
- 
- extern void inject_write_through_null (void);
- 
- void test_inject_write_through_null (void)
- {
-   inject_write_through_null (); /* { dg-ice "Segmentation fault" } */ 
-   /* { dg-regexp "during GIMPLE pass: crash_test" } */
- }
--- 0 ----
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-sarif.c gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-sarif.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-sarif.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-sarif.c	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,64 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fdiagnostics-format=sarif-file" } */
+ /* { dg-additional-options "-fno-report-bug" } */
+ 
+ extern void inject_write_through_null (void);
+ 
+ void test_inject_write_through_null (void)
+ {
+   inject_write_through_null (); /* { dg-ice "" } */
+   /* { dg-regexp "during GIMPLE pass: crash_test" } */
+ }
+ 
+ /* Verify that some JSON was written to a file with the expected name.  */
+ /* { dg-final { verify-sarif-file } } */
+ 
+ /* We expect various properties.
+    The indentation here reflects the expected hierarchy, though these tests
+    don't check for that, merely the string fragments we expect.
+ 
+    { dg-final { scan-sarif-file "\"version\": \"2.1.0\"" } }
+    { dg-final { scan-sarif-file "\"runs\": \\\[" } }
+      { dg-final { scan-sarif-file "\"artifacts\": \\\[" } } 
+        { dg-final { scan-sarif-file "\"location\": " } }
+          { dg-final { scan-sarif-file "\"uri\": " } }
+ 
+        { dg-final { scan-sarif-file "\"sourceLanguage\": \"c\"" { target c } } }
+        { dg-final { scan-sarif-file "\"sourceLanguage\": \"cplusplus\"" { target c++ } } }
+ 
+        { dg-final { scan-sarif-file "\"contents\": " } }
+          { dg-final { scan-sarif-file "\"text\": " } }
+      { dg-final { scan-sarif-file "\"tool\": " } }
+        { dg-final { scan-sarif-file "\"driver\": " } }
+          { dg-final { scan-sarif-file "\"name\": \"GNU C" } }
+          { dg-final { scan-sarif-file "\"fullName\": \"GNU C" } }
+          { dg-final { scan-sarif-file "\"informationUri\": \"" } }
+        { dg-final { scan-sarif-file "\"extensions\": \\\[" } }
+          { dg-final { scan-sarif-file "\"name\": \"crash_test_plugin\"" } }
+ 
+      We expect no results:
+      { dg-final { scan-sarif-file "\"results\": \\\[\\\]" } }
+ 
+      but instead should have an invocations array...
+ 
+      { dg-final { scan-sarif-file "\"invocations\": \\\[" } }
+ 
+      ...containing this:
+        { dg-final { scan-sarif-file "\"executionSuccessful\": false" } }
+        { dg-final { scan-sarif-file "\"toolExecutionNotifications\": \\\[" } }
+ 
+        ...containing this notification:
+          { dg-final { scan-sarif-file "\"level\": \"error\"" } }
+          { dg-final { scan-sarif-file "\"locations\": \\\[" } }
+            { dg-final { scan-sarif-file "\"logicalLocations\": \\\[" } }
+              { dg-final { scan-sarif-file "\"kind\": \"function\"" } }
+              { dg-final { scan-sarif-file "\"name\": \"test_inject_write_through_null\"" } }
+            { dg-final { scan-sarif-file "\"physicalLocation\": " } }
+              { dg-final { scan-sarif-file "\"contextRegion\": " } }
+              { dg-final { scan-sarif-file "\"artifactLocation\": " } }
+              { dg-final { scan-sarif-file "\"region\": " } }
+                { dg-final { scan-sarif-file "\"startLine\": 9" } }
+                { dg-final { scan-sarif-file "\"startColumn\": 3" } }
+                { dg-final { scan-sarif-file "\"endColumn\": 31" } }
+          { dg-final { scan-sarif-file "\"message\": " } }
+            { dg-final { scan-sarif-file "\"text\": \"Segmentation \[Ff\]ault" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-stderr.c gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-stderr.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-stderr.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash-test-write-through-null-stderr.c	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fno-report-bug" } */
+ 
+ extern void inject_write_through_null (void);
+ 
+ void test_inject_write_through_null (void)
+ {
+   inject_write_through_null (); /* { dg-ice "Segmentation fault" } */ 
+   /* { dg-regexp "during GIMPLE pass: crash_test" } */
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash_test_plugin.cc gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash_test_plugin.cc
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/crash_test_plugin.cc	Sun Sep  7 22:33:22 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/crash_test_plugin.cc	Sun Sep 14 22:32:15 2025
*************** const pass_data pass_data_crash_test =
*** 50,63 ****
  class pass_crash_test : public gimple_opt_pass
  {
  public:
!   pass_crash_test(gcc::context *ctxt)
!     : gimple_opt_pass(pass_data_crash_test, ctxt)
    {}
  
    /* opt_pass methods: */
    bool gate (function *) final override { return true; }
    unsigned int execute (function *) final override;
  
  }; // class pass_test_groups
  
  /* Determine if STMT is a call to a function named FUNCNAME.
--- 50,69 ----
  class pass_crash_test : public gimple_opt_pass
  {
  public:
!   pass_crash_test (gcc::context *ctxt, bool nested)
!   : gimple_opt_pass (pass_data_crash_test, ctxt),
!     m_nested (nested)
    {}
  
    /* opt_pass methods: */
    bool gate (function *) final override { return true; }
    unsigned int execute (function *) final override;
  
+ private:
+   /* If true, inject the crash whilst within a nested diagnostic
+      (PR diagnostics/121876).  */
+   bool m_nested;
+ 
  }; // class pass_test_groups
  
  /* Determine if STMT is a call to a function named FUNCNAME.
*************** pass_crash_test::execute (function *fun)
*** 94,108 ****
--- 100,138 ----
  	gimple *stmt = gsi_stmt (gsi);
  	if (gcall *call = check_for_named_call (stmt, "inject_ice"))
  	  {
+ 	    auto_diagnostic_group d;
+ 	    if (m_nested)
+ 	      {
+ 		error_at (stmt->location, "placeholder");
+ 		global_dc->push_nesting_level ();
+ 	      }
+ 
  	    input_location = stmt->location;
  	    internal_error ("I'm sorry Dave, I'm afraid I can't do that");
+ 
+ 	    if (m_nested)
+ 	      {
+ 		global_dc->pop_nesting_level ();
+ 	      }
  	  }
  	if (gcall *call = check_for_named_call (stmt,
  						"inject_write_through_null"))
  	  {
+ 	    auto_diagnostic_group d;
+ 	    if (m_nested)
+ 	      {
+ 		error_at (stmt->location, "placeholder");
+ 		global_dc->push_nesting_level ();
+ 	      }
+ 
  	    input_location = stmt->location;
  	    int *p = NULL;
  	    *p = 42;
+ 
+ 	    if (m_nested)
+ 	      {
+ 		global_dc->pop_nesting_level ();
+ 	      }
  	  }
        }
  
*************** plugin_init (struct plugin_name_args *pl
*** 124,130 ****
    if (!plugin_default_version_check (version, &gcc_version))
      return 1;
  
!   pass_info.pass = new pass_crash_test (g);
    pass_info.reference_pass_name = "*warn_function_noreturn";
    pass_info.ref_pass_instance_number = 1;
    pass_info.pos_op = PASS_POS_INSERT_AFTER;
--- 154,168 ----
    if (!plugin_default_version_check (version, &gcc_version))
      return 1;
  
!   bool nested = false;
! 
!   for (int i = 0; i < argc; i++)
!     {
!       if (!strcmp (argv[i].key, "nested"))
! 	nested = true;
!     }
! 
!   pass_info.pass = new pass_crash_test (g, nested);
    pass_info.reference_pass_name = "*warn_function_noreturn";
    pass_info.ref_pass_instance_number = 1;
    pass_info.pos_op = PASS_POS_INSERT_AFTER;
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/plugin.exp gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/plugin.exp
*** gcc-16-20250907/gcc/testsuite/gcc.dg/plugin/plugin.exp	Sun Sep  7 22:33:22 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/plugin/plugin.exp	Sun Sep 14 22:32:15 2025
*************** set plugin_test_list [list \
*** 70,81 ****
      { poly-int-06_plugin.cc poly-int-test-1.c } \
      { poly-int-07_plugin.cc poly-int-test-1.c } \
      { crash_test_plugin.cc \
- 	  crash-test-ice-stderr.c \
- 	  crash-test-write-though-null-stderr.c \
- 	  crash-test-ice-sarif.c \
  	  crash-test-ice-in-header-sarif-2.1.c \
  	  crash-test-ice-in-header-sarif-2.2.c \
! 	  crash-test-write-though-null-sarif.c } \
      { diagnostic_group_plugin.cc \
  	  diagnostic-group-test-1.c } \
      { diagnostic_plugin_test_show_locus.cc \
--- 70,83 ----
      { poly-int-06_plugin.cc poly-int-test-1.c } \
      { poly-int-07_plugin.cc poly-int-test-1.c } \
      { crash_test_plugin.cc \
  	  crash-test-ice-in-header-sarif-2.1.c \
  	  crash-test-ice-in-header-sarif-2.2.c \
! 	  crash-test-ice-sarif.c \
! 	  crash-test-ice-stderr.c \
! 	  crash-test-nested-ice.c \
! 	  crash-test-nested-write-through-null.c \
! 	  crash-test-write-through-null-sarif.c \
! 	  crash-test-write-through-null-stderr.c } \
      { diagnostic_group_plugin.cc \
  	  diagnostic-group-test-1.c } \
      { diagnostic_plugin_test_show_locus.cc \
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/pr121678.c gcc-16-20250914/gcc/testsuite/gcc.dg/pr121678.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/pr121678.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/pr121678.c	Sun Sep 14 22:32:15 2025
***************
*** 0 ****
--- 1,7 ----
+ /* PR c++/121678 */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ static const _Complex double a = 1.0;
+ static const double *const r = &__real__ a;
+ static const double *const i = &__imag__ a;
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c gcc-16-20250914/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c	Sun Sep  7 22:33:22 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/simulate-thread/atomic-load-int128.c	Sun Sep 14 22:32:16 2025
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do link } */
  /* { dg-require-effective-target sync_int_128_runtime } */
  /* { dg-options "-mcx16" { target { x86_64-*-* i?86-*-* } } } */
+ /* { dg-options "-mlsx -mscq" { target { loongarch64-*-* } } } */
  /* { dg-final { simulate-thread } } */
  
  #include <stdio.h>
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c gcc-16-20250914/gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c	Sun Sep  7 22:33:22 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c	Sun Sep 14 22:32:16 2025
***************
*** 1,7 ****
  /* { dg-do link } */
  /* { dg-require-effective-target sync_int_128_runtime } */
  /* { dg-options "-mcx16" { target { x86_64-*-* i?86-*-* } } } */
! /* { dg-final { simulate-thread } } */
  
  #include <stdio.h>
  #include "simulate-thread.h"
--- 1,12 ----
  /* { dg-do link } */
  /* { dg-require-effective-target sync_int_128_runtime } */
  /* { dg-options "-mcx16" { target { x86_64-*-* i?86-*-* } } } */
! /* { dg-options "-mlsx -mscq" { target { loongarch64-*-* } } } */
! 
! /* xfail on loongarch64 until the new GDB versions with
!    https://sourceware.org/pipermail/gdb-patches/2025-August/220034.html
!    is widely used by distros.  */
! /* { dg-final { simulate-thread { xfail loongarch64-*-* } } } */
  
  #include <stdio.h>
  #include "simulate-thread.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/torture/pr121829.c gcc-16-20250914/gcc/testsuite/gcc.dg/torture/pr121829.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/torture/pr121829.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/torture/pr121829.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ 
+ int a[1][1];
+ int *b(int *);
+ int c() {
+   int *d[4];
+   int **e = &d[3];
+   int f;
+   for (; f; f++)
+     d[f] = &a[1][0];
+   b(*e);
+ }
+ int *b(int *g) {
+   asm goto("" : : : : h);
+   int i[9];
+ h:
+   int f;
+   for (f = 0; f < 9; f++)
+     i[f] = 1;
+   *g = i[4];
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/torture/pr121844.c gcc-16-20250914/gcc/testsuite/gcc.dg/torture/pr121844.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/torture/pr121844.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/torture/pr121844.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ 
+ typedef unsigned long a;
+ int b[] = {};
+ int **c;
+ short d(a *e, int f)
+ {
+   *c = &f;
+   for (;;)
+     asm goto("" : : : : g);
+   for (; f; f--) {
+     asm goto("" : : : : g);
+   g:
+     *e ^= b[f + 1];
+   }
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-10.c gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-10.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-10.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-10.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* PR tree-optimization/87900 */
+ 
+ /* zeroing out via a CONSTRUCTOR should be treated similarly as a msmet and
+    be combined with the malloc below.  */
+ 
+ struct S { int a[1024]; };
+ struct S *foo ()
+ {
+   struct S *p = (struct S *)__builtin_malloc (sizeof (struct S));
+   *p = (struct S){};
+   return p;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "calloc " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "malloc " "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "memset " "optimized" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-11.c gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-11.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-11.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-11.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* PR tree-optimization/87900 */
+ 
+ /* zeroing out via a CONSTRUCTOR should be treated similarly as a msmet and
+    be combined with the malloc below.  */
+ typedef int type;
+ 
+ #define size (1025)
+ type *foo ()
+ {
+   type *p = (type *)__builtin_malloc (size*sizeof(type));
+   type tmp[size] = {};
+   __builtin_memcpy(p,tmp,sizeof(tmp));
+   return p;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "calloc " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "malloc " "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "memset " "optimized" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-12.c gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-12.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-12.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-12.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* PR tree-optimization/87900 */
+ 
+ /* zeroing out via a CONSTRUCTOR should be treated similarly as a msmet and
+    be combined with the malloc below.  */
+ 
+ struct S { int a[1024]; };
+ struct S *foo ()
+ {
+   struct S *p = (struct S *)__builtin_malloc (sizeof (struct S));
+   if (p)
+     *p = (struct S){};
+   return p;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "calloc " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "malloc " "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "memset " "optimized" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-6.c gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-6.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-6.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* PR tree-optimization/83022 */
+ 
+ void* f(int n, int *q)
+ {
+   int *p = __builtin_malloc (n);
+   for(int i = 0; i < n; i++)
+     q[i] = i;
+   if (p)
+     __builtin_memset (p, 0, n);
+   return p;
+ }
+ 
+ void* g(int n, int *q)
+ {
+   int *p = __builtin_malloc (n);
+   for(int i = 0; i < n; i++)
+     q[i] = i;
+   __builtin_memset (p, 0, n);
+   return p;
+ }
+ 
+ /* These 2 should be converted to calloc as the memset is
+    always executed or is conditional on the ptr nullness.  */
+ 
+ /* { dg-final { scan-tree-dump-times "calloc" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "malloc" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "memset" "optimized" } } */
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-7.c gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-7.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-7.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* PR tree-optimization/83022 */
+ 
+ void* f(int n, int *q, int t)
+ {
+   int *p = __builtin_malloc (n);
+   for(int i = 0; i < n; i++)
+     q[i] = i;
+   if (t)
+     __builtin_memset (p, 0, n);
+   return p;
+ }
+ 
+ void* g(int n, int *q, int t)
+ {
+   int *p = __builtin_malloc (n);
+   if (t)
+     __builtin_memset (p, 0, n);
+   return p;
+ }
+ 
+ /* These 2 should not be converted into calloc as the memset is not
+    conditionalized on the pointer being checked for nullness. */
+ 
+ /* { dg-final { scan-tree-dump-not "calloc" "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "malloc" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "memset" 2 "optimized" } } */
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-8.c gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-8.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-8.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* PR tree-optimization/83022 */
+ 
+ void *combine_alt (int s, bool c, bool *a)
+ {
+   void *r = __builtin_malloc (s);
+   if (!r)  return 0;
+   if (a) *a = r != 0;
+   __builtin_memset (r, 0, s);
+   return r;
+ }
+ 
+ /* These one  should be converted to calloc as the memset is
+    is conditional on the ptr nullness.  */
+ 
+ /* { dg-final { scan-tree-dump-times "calloc" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "malloc" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "memset" "optimized" } } */
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-9.c gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-9.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/tree-ssa/calloc-9.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/tree-ssa/calloc-9.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ /* PR tree-optimization/83022 */
+ 
+ void *m (int s, int c)
+ {
+   void *r = __builtin_malloc (s);
+   if (r && c)
+     __builtin_memset (r, 0, s);
+   return r;
+ }
+ 
+ /* This one should not be converted into calloc as the memset is not
+    conditionalized on the pointer being checked for nullness. */
+ 
+ /* { dg-final { scan-tree-dump-not "calloc" "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "malloc" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "memset" 1 "optimized" } } */
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/vect/nodump-extractlast-1.c gcc-16-20250914/gcc/testsuite/gcc.dg/vect/nodump-extractlast-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/vect/nodump-extractlast-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/vect/nodump-extractlast-1.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,21 ----
+ /* Check for a bung in the treatment of LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS when
+    using VEC_EXTRACT.  */
+ /* { dg-require-effective-target vect_int } */
+ 
+ char c = 4;
+ 
+ __attribute__((noipa))
+ int
+ foo ()
+ {
+   for ( ; c > 3; c -= 3);
+   return c - 1;
+ }
+ 
+ int
+ main ()
+ {
+   if (foo() != 0)
+     __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/vect/pr109011-2.c gcc-16-20250914/gcc/testsuite/gcc.dg/vect/pr109011-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/vect/pr109011-2.c	Sun Sep  7 22:33:23 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/vect/pr109011-2.c	Sun Sep 14 22:32:16 2025
*************** baz (int *p, int *q)
*** 31,35 ****
  
  /* { dg-final { scan-tree-dump-times " = \.CLZ \\\(vect" 3 "optimized" { target { { { { i?86-*-* x86_64-*-* } && avx512cd } && lzcnt } && bmi } } } } */
  /* { dg-final { scan-tree-dump-times " = \.CTZ \\\(vect" 3 "optimized" { target powerpc_vsx } } } */
! /* { dg-final { scan-tree-dump-times " = \.CTZ \\\(vect" 2 "optimized" { target s390_vx } } } */
! /* { dg-final { scan-tree-dump-times " = \.POPCOUNT \\\(vect" 1 "optimized" { target s390_vx } } } */
--- 31,34 ----
  
  /* { dg-final { scan-tree-dump-times " = \.CLZ \\\(vect" 3 "optimized" { target { { { { i?86-*-* x86_64-*-* } && avx512cd } && lzcnt } && bmi } } } } */
  /* { dg-final { scan-tree-dump-times " = \.CTZ \\\(vect" 3 "optimized" { target powerpc_vsx } } } */
! /* { dg-final { scan-tree-dump-times " = \.CTZ \\\(vect" 3 "optimized" { target s390_vx } } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/vect/pr109011-4.c gcc-16-20250914/gcc/testsuite/gcc.dg/vect/pr109011-4.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/vect/pr109011-4.c	Sun Sep  7 22:33:23 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/vect/pr109011-4.c	Sun Sep 14 22:32:16 2025
*************** baz (long long *p, long long *q)
*** 31,35 ****
  
  /* { dg-final { scan-tree-dump-times " = \.CLZ \\\(vect" 3 "optimized" { target { { { { i?86-*-* x86_64-*-* } && avx512cd } && lzcnt } && bmi } } } } */
  /* { dg-final { scan-tree-dump-times " = \.CTZ \\\(vect" 3 "optimized" { target powerpc_vsx } } } */
! /* { dg-final { scan-tree-dump-times " = \.CTZ \\\(vect" 2 "optimized" { target s390_vx } } } */
! /* { dg-final { scan-tree-dump-times " = \.POPCOUNT \\\(vect" 1 "optimized" { target s390_vx } } } */
--- 31,34 ----
  
  /* { dg-final { scan-tree-dump-times " = \.CLZ \\\(vect" 3 "optimized" { target { { { { i?86-*-* x86_64-*-* } && avx512cd } && lzcnt } && bmi } } } } */
  /* { dg-final { scan-tree-dump-times " = \.CTZ \\\(vect" 3 "optimized" { target powerpc_vsx } } } */
! /* { dg-final { scan-tree-dump-times " = \.CTZ \\\(vect" 3 "optimized" { target s390_vx } } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/vect/pr121830.c gcc-16-20250914/gcc/testsuite/gcc.dg/vect/pr121830.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/vect/pr121830.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.dg/vect/pr121830.c	Sun Sep 14 22:32:16 2025
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ 
+ int a, b;
+ short c;
+ short d(short e) { return e - 1; }
+ int main() {
+   for (; c; c++)
+     for (a = 2; a != 0; a = d(a)) {
+       int *i = &b;
+       *i &= a;
+     }
+   return 0;
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-2.c gcc-16-20250914/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-2.c	Sun Sep  7 22:33:24 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-2.c	Sun Sep 14 22:32:17 2025
*************** main (void)
*** 74,79 ****
  }
  
  /* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" "vect" } } */
! /* { dg-final { scan-tree-dump "vectorizing statement: \\S+ = DOT_PROD_EXPR" "vect" { target { vect_sdot_qi } } } } */
! /* { dg-final { scan-tree-dump "vectorizing statement: \\S+ = DOT_PROD_EXPR" "vect" { target { vect_udot_qi } } } } */
! /* { dg-final { scan-tree-dump "vectorizing statement: \\S+ = DOT_PROD_EXPR" "vect" { target { vect_sdot_hi } } } } */
--- 74,79 ----
  }
  
  /* { dg-final { scan-tree-dump "vect_recog_dot_prod_pattern: detected" "vect" } } */
! /* { dg-final { scan-tree-dump "vectorizing SLP node starting from: \\S+ = DOT_PROD_EXPR" "vect" { target { vect_sdot_qi } } } } */
! /* { dg-final { scan-tree-dump "vectorizing SLP node starting from: \\S+ = DOT_PROD_EXPR" "vect" { target { vect_udot_qi } } } } */
! /* { dg-final { scan-tree-dump "vectorizing SLP node starting from: \\S+ = DOT_PROD_EXPR" "vect" { target { vect_sdot_hi } } } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-3.c gcc-16-20250914/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-3.c	Sun Sep  7 22:33:24 2025
--- gcc-16-20250914/gcc/testsuite/gcc.dg/vect/vect-reduc-chain-3.c	Sun Sep 14 22:32:17 2025
*************** main (void)
*** 64,68 ****
      __builtin_abort ();
  }
  
! /* { dg-final { scan-tree-dump "vectorizing statement: \\S+ = SAD_EXPR" "vect" { target vect_udot_qi } } } */
! /* { dg-final { scan-tree-dump "vectorizing statement: \\S+ = DOT_PROD_EXPR" "vect" { target vect_sdot_hi } } } */
--- 64,68 ----
      __builtin_abort ();
  }
  
! /* { dg-final { scan-tree-dump "vectorizing SLP node starting from: \\S+ = SAD_EXPR" "vect" { target vect_udot_qi } } } */
! /* { dg-final { scan-tree-dump "vectorizing SLP node starting from: \\S+ = DOT_PROD_EXPR" "vect" { target vect_sdot_hi } } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/pr66462.c gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/pr66462.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/pr66462.c	Sun Sep  7 22:33:25 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/pr66462.c	Sun Sep 14 22:32:28 2025
*************** static void t_inf (double x, bool res)
*** 24,29 ****
--- 24,49 ----
      __builtin_abort ();
  }
  
+ static void t_finf (float x, bool res)
+ {
+   if (__builtin_isfinite (x) != res)
+     __builtin_abort ();
+   if (__builtin_isfinite (-x) != res)
+     __builtin_abort ();
+   if (fetestexcept (FE_INVALID))
+     __builtin_abort ();
+ }
+ 
+ static void t_fin (double x, bool res)
+ {
+   if (__builtin_isfinite (x) != res)
+     __builtin_abort ();
+   if (__builtin_isfinite (-x) != res)
+     __builtin_abort ();
+   if (fetestexcept (FE_INVALID))
+     __builtin_abort ();
+ }
+ 
  int
  main ()
  {
*************** main ()
*** 41,45 ****
--- 61,77 ----
    t_inf (__builtin_nans (""), 0);
    t_inf (__builtin_nan (""), 0);
  
+   t_finf (0.0f, 1);
+   t_finf (1.0f, 1);
+   t_finf (__builtin_inff (), 0);
+   t_finf (__builtin_nansf (""), 0);
+   t_finf (__builtin_nanf (""), 0);
+ 
+   t_fin (0.0, 1);
+   t_fin (1.0, 1);
+   t_fin (__builtin_inf (), 0);
+   t_fin (__builtin_nans (""), 0);
+   t_fin (__builtin_nan (""), 0);
+ 
    return 0;
  }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/simd/bcax_d.c gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/simd/bcax_d.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/simd/bcax_d.c	Sun Sep  7 22:33:25 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/simd/bcax_d.c	Sun Sep 14 22:32:28 2025
***************
*** 7,19 ****
  
  #define BCAX(x,y,z)  ((x) ^ ((y) & ~(z)))
  
- /* When the inputs come from GP regs don't form a BCAX.  */
- uint64_t bcax_d_gp (uint64_t a, uint64_t b, uint64_t c) { return BCAX (a, b, c); }
- 
- uint64x1_t bcax_d (uint64x1_t a, uint64x1_t b, uint64x1_t c) { return BCAX (a, b, c); }
  uint32x2_t bcax_s (uint32x2_t a, uint32x2_t b, uint32x2_t c) { return BCAX (a, b, c); }
  uint16x4_t bcax_h (uint16x4_t a, uint16x4_t b, uint16x4_t c) { return BCAX (a, b, c); }
  uint8x8_t bcax_b (uint8x8_t a, uint8x8_t b, uint8x8_t c) { return BCAX (a, b, c); }
  
! /* { dg-final { scan-assembler-times {bcax\tv0.16b, v0.16b, v1.16b, v2.16b} 4 } } */
  
--- 7,15 ----
  
  #define BCAX(x,y,z)  ((x) ^ ((y) & ~(z)))
  
  uint32x2_t bcax_s (uint32x2_t a, uint32x2_t b, uint32x2_t c) { return BCAX (a, b, c); }
  uint16x4_t bcax_h (uint16x4_t a, uint16x4_t b, uint16x4_t c) { return BCAX (a, b, c); }
  uint8x8_t bcax_b (uint8x8_t a, uint8x8_t b, uint8x8_t c) { return BCAX (a, b, c); }
  
! /* { dg-final { scan-assembler-times {bcax\tv0.16b, v0.16b, v1.16b, v2.16b} 3 } } */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-addhn_1.c gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-addhn_1.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-addhn_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-addhn_1.c	Sun Sep 14 22:32:29 2025
***************
*** 0 ****
--- 1,86 ----
+ /* { dg-require-effective-target vect_int } */
+ /* { dg-options "-O3 -std=c99" } */
+ 
+ #include <stdint.h>
+ #include <stdio.h>
+ 
+ #define N 1000
+ #define CHECK_ERROR(cond, fmt, ...) \
+   do { if (cond) { printf(fmt "\n", ##__VA_ARGS__); __builtin_abort (); } } while (0)
+ 
+ // Generates all test components for a given type combo
+ #define TEST_COMBO(A_TYPE, C_TYPE, CAST_TYPE, SHIFT)                                  \
+   A_TYPE a_##A_TYPE##_##C_TYPE[N];                                                    \
+   A_TYPE b_##A_TYPE##_##C_TYPE[N];                                                    \
+   C_TYPE c_##A_TYPE##_##C_TYPE[N];                                                    \
+   C_TYPE ref_##A_TYPE##_##C_TYPE[N];                                                  \
+                                                                                       \
+   void init_##A_TYPE##_##C_TYPE() {                                                   \
+     _Pragma ("GCC novector")							      \
+     for (int i = 0; i < N; i++) {                                                     \
+       a_##A_TYPE##_##C_TYPE[i] = (A_TYPE)(i * 3);                                     \
+       b_##A_TYPE##_##C_TYPE[i] = (A_TYPE)(i * 7);                                     \
+     }                                                                                 \
+   }                                                                                   \
+                                                                                       \
+   void foo_##A_TYPE##_##C_TYPE() {                                                    \
+     for (int i = 0; i < N; i++)                                                       \
+       c_##A_TYPE##_##C_TYPE[i] =                                                      \
+         ((CAST_TYPE)a_##A_TYPE##_##C_TYPE[i] +                                        \
+          (CAST_TYPE)b_##A_TYPE##_##C_TYPE[i]) >> SHIFT;                               \
+   }                                                                                   \
+                                                                                       \
+   void ref_##A_TYPE##_##C_TYPE##_compute() {                                          \
+     _Pragma ("GCC novector")							      \
+     for (int i = 0; i < N; i++)                                                       \
+       ref_##A_TYPE##_##C_TYPE[i] =                                                    \
+         ((CAST_TYPE)a_##A_TYPE##_##C_TYPE[i] +                                        \
+          (CAST_TYPE)b_##A_TYPE##_##C_TYPE[i]) >> SHIFT;                               \
+   }                                                                                   \
+                                                                                       \
+   void validate_##A_TYPE##_##C_TYPE(const char* variant_name) {                       \
+     _Pragma ("GCC novector")							      \
+     for (int i = 0; i < N; i++) {                                                     \
+       if (c_##A_TYPE##_##C_TYPE[i] != ref_##A_TYPE##_##C_TYPE[i]) {                   \
+         printf("FAIL [%s]: Index %d: got %lld, expected %lld\n",                      \
+                variant_name, i,                                                       \
+                (long long)c_##A_TYPE##_##C_TYPE[i],                                   \
+                (long long)ref_##A_TYPE##_##C_TYPE[i]);                                \
+         __builtin_abort ();                                                           \
+       }                                                                               \
+     }                                                                                 \
+   }
+ 
+ // Runs the test for one combo with name output
+ #define RUN_COMBO(A_TYPE, C_TYPE)                          \
+   do {                                                     \
+     init_##A_TYPE##_##C_TYPE();                            \
+     foo_##A_TYPE##_##C_TYPE();                             \
+     ref_##A_TYPE##_##C_TYPE##_compute();                   \
+     validate_##A_TYPE##_##C_TYPE(#A_TYPE " -> " #C_TYPE);  \
+   } while (0)
+ 
+ // Instantiate all valid combinations
+ TEST_COMBO(int16_t, int8_t, int32_t, 8)
+ TEST_COMBO(uint16_t, uint8_t, uint32_t, 8)
+ TEST_COMBO(int32_t, int16_t, int64_t, 16)
+ TEST_COMBO(uint32_t, uint16_t, uint64_t, 16)
+ #if defined(__aarch64__)
+ TEST_COMBO(int64_t, int32_t, __int128_t, 32)
+ TEST_COMBO(uint64_t, uint32_t, unsigned __int128, 32)
+ #endif
+ 
+ int main() {
+ 
+   RUN_COMBO(int16_t, int8_t);
+   RUN_COMBO(uint16_t, uint8_t);
+   RUN_COMBO(int32_t, int16_t);
+   RUN_COMBO(uint32_t, uint16_t);
+ #if defined(__aarch64__)
+   RUN_COMBO(int64_t, int32_t);
+   RUN_COMBO(uint64_t, uint32_t);
+ #endif
+ 
+   return 0;
+ }
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_1.c gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_1.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_1.c	Sun Sep 14 22:32:29 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O3 -fdump-tree-vect-details -std=c99" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define TYPE int
+ #define N 800
+ 
+ #pragma GCC target "+nosve"
+ 
+ TYPE a[N];
+ 
+ /*
+ ** foo:
+ **	...
+ **	ldp	q[0-9]+, q[0-9]+, \[x[0-9]+\], 32
+ **	cmeq	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s
+ **	cmeq	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s
+ **	addhn	v[0-9]+.4h, v[0-9]+.4s, v[0-9]+.4s
+ **	fmov	x[0-9]+, d[0-9]+
+ **	...
+ */
+ 
+ int foo ()
+ {
+ #pragma GCC unroll 8
+   for (int i = 0; i < N; i++)
+     if (a[i] == 124)
+       return 1;
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "VEC_TRUNC_ADD_HIGH" "vect" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_2.c gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_2.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_2.c	Sun Sep 14 22:32:29 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O3 -fdump-tree-vect-details -std=c99" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define TYPE long long
+ #define N 800
+ 
+ #pragma GCC target "+nosve"
+ 
+ TYPE a[N];
+ 
+ /*
+ ** foo:
+ **	...
+ **	ldp	q[0-9]+, q[0-9]+, \[x[0-9]+\], 32
+ **	cmeq	v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d
+ **	cmeq	v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d
+ **	addhn	v[0-9]+.2s, v[0-9]+.2d, v[0-9]+.2d
+ **	fmov	x[0-9]+, d[0-9]+
+ **	...
+ */
+ 
+ int foo ()
+ {
+ #pragma GCC unroll 4
+   for (int i = 0; i < N; i++)
+     if (a[i] == 124)
+       return 1;
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "VEC_TRUNC_ADD_HIGH" "vect" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_3.c gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_3.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_3.c	Sun Sep 14 22:32:29 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O3 -fdump-tree-vect-details -std=c99" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #define TYPE short
+ #define N 800
+ 
+ #pragma GCC target "+nosve"
+ 
+ TYPE a[N];
+ 
+ /*
+ ** foo:
+ **	...
+ **	ldp	q[0-9]+, q[0-9]+, \[x[0-9]+\], 32
+ **	cmeq	v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h
+ **	cmeq	v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h
+ **	addhn	v[0-9]+.8b, v[0-9]+.8h, v[0-9]+.8h
+ **	fmov	x[0-9]+, d[0-9]+
+ **	...
+ */
+ 
+ int foo ()
+ {
+ #pragma GCC unroll 16
+   for (int i = 0; i < N; i++)
+     if (a[i] == 124)
+       return 1;
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump "VEC_TRUNC_ADD_HIGH" "vect" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_4.c gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_4.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_4.c	Sun Sep 14 22:32:29 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O3 -fdump-tree-vect-details -std=c99" } */
+ 
+ #define TYPE char
+ #define N 800
+ 
+ #pragma GCC target "+nosve"
+ 
+ TYPE a[N];
+ 
+ int foo ()
+ {
+ #pragma GCC unroll 32
+   for (int i = 0; i < N; i++)
+     if (a[i] == 124)
+       return 1;
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "VEC_TRUNC_ADD_HIGH" "vect" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-2.c gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-2.c	Sun Sep 14 22:32:29 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=sierraforest -O2 -fdump-tree-slp-details" } */
+ /* { dg-final { scan-tree-dump-times {(?n)Detected avx256 cross-lane permutation} 1 "slp2" } } */
+ 
+ void
+ foo (double* a, double* __restrict b, int c, int n)
+ {
+   a[0] = b[100] * b[2];
+   a[1] = b[100] * b[3];
+   a[2] = b[100] * b[0];
+   a[3] = b[100] * b[1];
+ }
+ 
+ void
+ foo1 (double* a, double* __restrict b, int c, int n)
+ {
+   a[0] = b[100] * b[0];
+   a[1] = b[100] * b[1];
+   a[2] = b[100] * b[3];
+   a[3] = b[100] * b[2];
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-3.c gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-3.c	Sun Sep 14 22:32:29 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=sierraforest -fdump-tree-vect-details" } */
+ /* { dg-final { scan-tree-dump "loop vectorized using 32 byte vectors" "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-assembler "vpermilps" { xfail *-*-* } } } */
+ /* { dg-final { scan-assembler-not "vpermd" } } */
+ 
+ int a[256], b[256];
+ 
+ void __attribute__((noinline))
+ foo (void)
+ {
+   int i;
+   for (i = 0; i < 32; ++i)
+     {
+       b[i*8+0] = a[i*8+0];
+       b[i*8+1] = a[i*8+0];
+       b[i*8+2] = a[i*8+3];
+       b[i*8+3] = a[i*8+3];
+       b[i*8+4] = a[i*8+4];
+       b[i*8+5] = a[i*8+6];
+       b[i*8+6] = a[i*8+4];
+       b[i*8+7] = a[i*8+6];
+     }
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-4.c gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-4.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-4.c	Sun Sep 14 22:32:29 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mavx2 -O2" } */
+ /* { dg-final { scan-assembler-times {(?n)vpermilp[ds]} 2} } */
+ /* { dg-final { scan-assembler-not {(?n)vperm[dq]} } } */
+ 
+ 
+ typedef long long v4di __attribute__((vector_size(32)));
+ typedef int v8si __attribute__((vector_size(32)));
+ 
+ v4di
+ foo (v4di a)
+ {
+   return __builtin_shufflevector (a, a, 1, 0, 3, 2);
+ }
+ 
+ v8si
+ foo1 (v8si a)
+ {
+   return __builtin_shufflevector (a, a, 1, 0, 3, 2, 7, 6, 5, 4);
+ }
+ 
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-5.c gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-5.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm-5.c	Sun Sep 14 22:32:29 2025
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=sierraforest -Ofast" } */
+ /* { dg-final { scan-assembler-not {(?n)vpermpd.*%ymm} } } */
+ 
+ typedef struct {
+   unsigned short m1, m2, m3, m4;
+ } the_struct_t;
+ typedef struct {
+   double m1, m2, m3, m4, m5;
+ } the_struct2_t;
+ 
+ double bar1 (the_struct2_t*);
+ 
+ double foo (double* k, unsigned int n, the_struct_t* the_struct) {
+   unsigned int u;
+   the_struct2_t result;
+   for (u=0; u < n; u++, k--) {
+     result.m1 += (*k)*the_struct[u].m1;
+     result.m2 += (*k)*the_struct[u].m2;
+     result.m3 += (*k)*the_struct[u].m3;
+     result.m4 += (*k)*the_struct[u].m4;
+   }
+   return bar1 (&result);
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm.c gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm.c	Sun Sep  7 22:33:32 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx256_avoid_vec_perm.c	Sun Sep 14 22:32:29 2025
*************** foo (void)
*** 13,19 ****
        b[i*8+0] = a[i*8+0];
        b[i*8+1] = a[i*8+0];
        b[i*8+2] = a[i*8+3];
!       b[i*8+3] = a[i*8+3];
        b[i*8+4] = a[i*8+4];
        b[i*8+5] = a[i*8+6];
        b[i*8+6] = a[i*8+4];
--- 13,19 ----
        b[i*8+0] = a[i*8+0];
        b[i*8+1] = a[i*8+0];
        b[i*8+2] = a[i*8+3];
!       b[i*8+3] = a[i*8+5];
        b[i*8+4] = a[i*8+4];
        b[i*8+5] = a[i*8+6];
        b[i*8+6] = a[i*8+4];
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-4.c gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-4.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-4.c	Sun Sep  7 22:33:32 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx512bw-vpalignr-4.c	Sun Sep 14 22:32:30 2025
*************** f4 (V4 x)
*** 55,62 ****
    asm volatile ("" : "+v" (a));
  }
  
- /* { dg-final { scan-assembler-times "vpalignr\[^\n\r]*\\\$8\[^\n\r]*%xmm16\[^\n\r]*%xmm16\[^\n\r]*%xmm16" 1 } } */
- 
  typedef float V5 __attribute__((vector_size (16)));
  
  void
--- 55,60 ----
*************** f6 (V6 x)
*** 83,86 ****
    asm volatile ("" : "+v" (a));
  }
  
! /* { dg-final { scan-assembler-times "vpermilpd\[^\n\r]*\\\$1\[^\n\r]*%xmm16\[^\n\r]*%xmm16" 1 } } */
--- 81,84 ----
    asm volatile ("" : "+v" (a));
  }
  
! /* { dg-final { scan-assembler-times "vpermilpd\[^\n\r]*\\\$1\[^\n\r]*%xmm16\[^\n\r]*%xmm16" 2 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-4.c gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-4.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-4.c	Sun Sep  7 22:33:32 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/i386/avx512vl-vpalignr-4.c	Sun Sep 14 22:32:30 2025
*************** f6 (V6 x)
*** 83,86 ****
    asm volatile ("" : "+v" (a));
  }
  
! /* { dg-final { scan-assembler-times "vpermilpd\[^\n\r]*\\\$1\[^\n\r]*%xmm16\[^\n\r]*%xmm16" 1 } } */
--- 83,86 ----
    asm volatile ("" : "+v" (a));
  }
  
! /* { dg-final { scan-assembler-times "vpermilpd\[^\n\r]*\\\$1\[^\n\r]*%xmm16\[^\n\r]*%xmm16" 2 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/i386/pr121861-1a.c gcc-16-20250914/gcc/testsuite/gcc.target/i386/pr121861-1a.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/i386/pr121861-1a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/i386/pr121861-1a.c	Sun Sep 14 22:32:30 2025
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -mfpmath=sse -mno-avx -msse4.1" } */
+ 
+ #include <math.h>
+ 
+ float
+ cf (float x)
+ {
+   return ceilf (x);
+ }
+ 
+ float
+ ff (float x)
+ {
+   return floorf (x);
+ }
+ 
+ float
+ tf (float x)
+ {
+   return truncf (x);
+ }
+ 
+ double
+ c (double x)
+ {
+   return ceil (x);
+ }
+ 
+ double
+ f (double x)
+ {
+   return floor (x);
+ }
+ 
+ double
+ t (double x)
+ {
+   return trunc (x);
+ }
+ 
+ /* { dg-final { scan-assembler-times "roundss" 3 } } */
+ /* { dg-final { scan-assembler-times "roundsd" 3 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/i386/pr121861-1b.c gcc-16-20250914/gcc/testsuite/gcc.target/i386/pr121861-1b.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/i386/pr121861-1b.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/i386/pr121861-1b.c	Sun Sep 14 22:32:30 2025
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -mfpmath=sse -mno-avx512f -mavx" } */
+ 
+ #include "pr121861-1a.c"
+ 
+ /* { dg-final { scan-assembler-times "vroundss" 3 } } */
+ /* { dg-final { scan-assembler-times "vroundsd" 3 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c	Sun Sep  7 22:33:34 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c	Sun Sep 14 22:32:30 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=loongarch64 -mabi=lp64d -O2 -mcmodel=extreme -mtls-dialect=trad -fno-plt -mexplicit-relocs=always -fdump-rtl-final" } */
  
  int a;
  extern int b;
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=loongarch64 -mabi=lp64d -O2 -mcmodel=extreme -mtls-dialect=trad -fno-plt -mexplicit-relocs=always -fdump-rtl-final -fPIC" } */
  
  int a;
  extern int b;
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c	Sun Sep  7 22:33:34 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c	Sun Sep 14 22:32:30 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=loongarch64 -mabi=lp64d -O2 -mcmodel=extreme -mtls-dialect=trad -fno-plt -mexplicit-relocs=auto -fdump-rtl-final" } */
  
  #include "cmodel-extreme-1.c"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=loongarch64 -mabi=lp64d -O2 -mcmodel=extreme -mtls-dialect=trad -fno-plt -mexplicit-relocs=auto -fdump-rtl-final -fPIC" } */
  
  #include "cmodel-extreme-1.c"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c	Sun Sep  7 22:33:34 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c	Sun Sep 14 22:32:30 2025
***************
*** 1,41 ****
  /* { dg-do compile } */
! /* { dg-options "-mabi=lp64d -O0 -fno-pic -fplt -mno-explicit-relocs -mtls-dialect=trad -mcmodel=medium" } */
! /* { dg-final { scan-assembler "test:.*la\.global\t.*g\n\tjirl" } } */
! /* { dg-final { scan-assembler "test1:.*la\.local\t.*f\n\tjirl" } } */
! /* { dg-final { scan-assembler "test2:.*la\.local\t.*l\n\tjirl" } } */
! /* { dg-final { scan-assembler "test3:.*la\.global\t.*\_\_tls\_get\_addr" { target tls_native } } } */
  
  extern void g (void);
! void
  f (void)
  {}
  
! static void
  l (void)
  {}
  
  void
  test (void)
  {
    g ();
  }
  
  void
  test1 (void)
  {
    f ();
  }
  
  void
  test2 (void)
  {
    l ();
  }
- 
- __attribute__ ((tls_model ("global-dynamic"))) __thread int a;
- 
- void
- test3 (void)
- {
-   a = 10;
- }
--- 1,45 ----
  /* { dg-do compile } */
! /* { dg-options "-mabi=lp64d -O2 -fno-pic -fplt -mno-explicit-relocs -mtls-dialect=trad -mcmodel=medium" } */
! /* { dg-final { check-function-bodies "**" "" } } */
  
  extern void g (void);
! void __attribute__ ((noipa,noinline))
  f (void)
  {}
  
! static void __attribute__ ((noipa,noinline))
  l (void)
  {}
  
+ /*
+ ** test:
+ ** 	la.global	(\$r[0-9]+),g
+ ** 	jr	(\$r[0-9]+)
+ */
  void
  test (void)
  {
    g ();
  }
  
+ /*
+ ** test1:
+ ** 	la.local	(\$r[0-9]+),f
+ ** 	jr	(\$r[0-9]+)
+ */
  void
  test1 (void)
  {
    f ();
  }
  
+ /*
+ ** test2:
+ ** 	la.local	(\$r[0-9]+),l
+ ** 	jr	(\$r[0-9]+)
+ */
  void
  test2 (void)
  {
    l ();
  }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c	Sun Sep  7 22:33:34 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c	Sun Sep 14 22:32:30 2025
***************
*** 1,31 ****
  /* { dg-do compile } */
! /* { dg-options "-mabi=lp64d -O0 -fpic -fno-plt -mno-explicit-relocs -mtls-dialect=trad -mcmodel=medium" } */
! /* { dg-final { scan-assembler "test:.*la\.global\t.*g\n\tjirl" } } */
! /* { dg-final { scan-assembler "test1:.*la\.global\t.*f\n\tjirl" } } */
! /* { dg-final { scan-assembler "test2:.*la\.local\t.*l\n\tjirl" } } */
! /* { dg-final { scan-assembler "test3:.*la\.global\t.*\_\_tls\_get\_addr" { target tls_native } } } */
  
  extern void g (void);
! void
  f (void)
  {}
  
! static void
  l (void)
  {}
  
  void
  test (void)
  {
    g ();
  }
  
  void
  test1 (void)
  {
    f ();
  }
  
  void
  test2 (void)
  {
--- 1,43 ----
  /* { dg-do compile } */
! /* { dg-options "-mabi=lp64d -O2 -fpic -fno-plt -mno-explicit-relocs -mtls-dialect=trad -mcmodel=medium" } */
! /* { dg-final { check-function-bodies "**" "" } } */
  
  extern void g (void);
! void __attribute__ ((noinline))
  f (void)
  {}
  
! static void __attribute__ ((noipa,noinline))
  l (void)
  {}
  
+ /*
+ ** test:
+ ** 	la.global	(\$r[0-9]+),g
+ ** 	jr	(\$r[0-9]+)
+ */
  void
  test (void)
  {
    g ();
  }
  
+ /*
+ ** test1:
+ ** 	la.global	(\$r[0-9]+),f
+ ** 	jr	(\$r[0-9]+)
+ */
  void
  test1 (void)
  {
    f ();
  }
  
+ /*
+ ** test2:
+ ** 	la.local	(\$r[0-9]+),l
+ ** 	jr	(\$r[0-9]+)
+ */
  void
  test2 (void)
  {
*************** test3 (void)
*** 39,41 ****
--- 51,54 ----
  {
    a = 10;
  }
+ /* { dg-final { scan-assembler "test3:.*la\.global\t.*\_\_tls\_get\_addr" { target tls_native } } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/func-call-medium-4.c gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/func-call-medium-4.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/func-call-medium-4.c	Sun Sep  7 22:33:34 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/func-call-medium-4.c	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- /* { dg-do compile } */
- /* { dg-options "-mabi=lp64d -O0 -fno-pic -fno-plt -mno-explicit-relocs -mtls-dialect=trad -mcmodel=medium" } */
- /* { dg-final { scan-assembler "test:.*la\.global\t.*g\n\tjirl" } } */
- /* { dg-final { scan-assembler "test1:.*la\.local\t.*f\n\tjirl" } } */
- /* { dg-final { scan-assembler "test2:.*la\.local\t.*l\n\tjirl" } } */
- /* { dg-final { scan-assembler "test3:.*la\.global\t.*\_\_tls\_get\_addr" { target tls_native } } } */
- 
- extern void g (void);
- void
- f (void)
- {}
- 
- static void
- l (void)
- {}
- 
- void
- test (void)
- {
-   g ();
- }
- 
- void
- test1 (void)
- {
-   f ();
- }
- 
- void
- test2 (void)
- {
-   l ();
- }
- 
- __attribute__ ((tls_model ("global-dynamic"))) __thread int a;
- 
- void
- test3 (void)
- {
-   a = 10;
- }
--- 0 ----
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c	Sun Sep  7 22:33:34 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/tls-extreme-macro.c	Sun Sep 14 22:32:30 2025
***************
*** 1,9 ****
  /* { dg-do compile } */
! /* { dg-options "-march=loongarch64 -mabi=lp64d -O2 -mcmodel=extreme -mtls-dialect=trad -fno-plt -mexplicit-relocs=none" } */
! /* { dg-final { scan-assembler "test_le:.*la.tls.le\t\\\$r\[0-9\]+,\\\.L" { target tls_native } } } */
! /* { dg-final { scan-assembler "test_ie:.*la.tls.ie\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,\\\.L" { target tls_native } } } */
! /* { dg-final { scan-assembler "test_ld:.*la.tls.ld\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,\\\.L.*la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,__tls_get_addr" { target tls_native } } } */
! /* { dg-final { scan-assembler "test_le:.*la.tls.gd\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,\\\.L.*la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,__tls_get_addr" { target tls_native } } } */
  
  __thread int c __attribute__ ((tls_model ("local-exec")));
  __thread int d __attribute__ ((tls_model ("initial-exec")));
--- 1,9 ----
  /* { dg-do compile } */
! /* { dg-options "-march=loongarch64 -mabi=lp64d -O2 -mcmodel=extreme -mtls-dialect=trad -fno-plt -mexplicit-relocs=none -fPIC" } */
! /* { dg-final { scan-assembler "test_le:.*la.tls.le\t\\\$r\[0-9\]+,c" { target tls_native } } } */
! /* { dg-final { scan-assembler "test_ie:.*la.tls.ie\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,d" { target tls_native } } } */
! /* { dg-final { scan-assembler "test_ld:.*la.tls.ld\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,e.*la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,__tls_get_addr" { target tls_native } } } */
! /* { dg-final { scan-assembler "test_le:.*la.tls.gd\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,f.*la.global\t\\\$r\[0-9\]+,\\\$r\[0-9\]+,__tls_get_addr" { target tls_native } } } */
  
  __thread int c __attribute__ ((tls_model ("local-exec")));
  __thread int d __attribute__ ((tls_model ("initial-exec")));
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c	Sun Sep  7 22:33:34 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c	Sun Sep 14 22:32:30 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O0 -fno-plt -mcmodel=normal -mtls-dialect=trad -mexplicit-relocs" } */
  /* { dg-final { scan-assembler "pcalau12i\t.*%got_pc_hi20\\(__tls_get_addr\\)\n\tld\.d.*%got_pc_lo12\\(__tls_get_addr\\)" { target tls_native } } } */
  
  __attribute__ ((tls_model ("global-dynamic"))) __thread int a;
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O0 -fno-plt -mcmodel=normal -mtls-dialect=trad -mexplicit-relocs -fPIC" } */
  /* { dg-final { scan-assembler "pcalau12i\t.*%got_pc_hi20\\(__tls_get_addr\\)\n\tld\.d.*%got_pc_lo12\\(__tls_get_addr\\)" { target tls_native } } } */
  
  __attribute__ ((tls_model ("global-dynamic"))) __thread int a;
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsieq.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsieq.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsieq.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsieq.c	Sun Sep 14 22:32:30 2025
*************** addsieq (int_t w, int_t x, int_t y, int_
*** 20,27 ****
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sub|subw)\\s" 1 { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:seqz|snez)\\s" 1 { xfail rv64 } } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" { xfail rv64 } } } */
--- 20,28 ----
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sub|subw)\\s" 1 } } */
! /* { dg-final { scan-assembler-times "\\s(?:seqz|snez)\\s" 1 } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifeq.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifeq.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifeq.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifeq.c	Sun Sep 14 22:32:30 2025
*************** addsifeq (double w, double x, int_t y, i
*** 19,26 ****
  	add[w]	a0,a5,a0
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
  /* { dg-final { scan-assembler-times "\\sfeq\\.d\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a5,a0
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
  /* { dg-final { scan-assembler-times "\\sfeq\\.d\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifge.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifge.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifge.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifge.c	Sun Sep 14 22:32:30 2025
*************** addsifge (double w, double x, int_t y, i
*** 19,26 ****
  	add[w]	a0,a5,a0
   */
  
! /* { /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
  /* { dg-final { scan-assembler-times "\\s(?:fge\\.d|fgt\\.d|fle\\.d|flt\\.d)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a5,a0
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
  /* { dg-final { scan-assembler-times "\\s(?:fge\\.d|fgt\\.d|fle\\.d|flt\\.d)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifgt.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifgt.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifgt.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifgt.c	Sun Sep 14 22:32:30 2025
*************** addsifgt (double w, double x, int_t y, i
*** 19,26 ****
  	add[w]	a0,a5,a0
   */
  
! /* { /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
  /* { dg-final { scan-assembler-times "\\s(?:fge\\.d|fgt\\.d|fle\\.d|flt\\.d)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a5,a0
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
  /* { dg-final { scan-assembler-times "\\s(?:fge\\.d|fgt\\.d|fle\\.d|flt\\.d)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifle.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifle.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifle.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifle.c	Sun Sep 14 22:32:30 2025
*************** addsifle (double w, double x, int_t y, i
*** 19,26 ****
  	add[w]	a0,a5,a0
   */
  
! /* { /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
  /* { dg-final { scan-assembler-times "\\s(?:fge\\.d|fgt\\.d|fle\\.d|flt\\.d)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a5,a0
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
  /* { dg-final { scan-assembler-times "\\s(?:fge\\.d|fgt\\.d|fle\\.d|flt\\.d)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsiflt.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsiflt.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsiflt.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsiflt.c	Sun Sep 14 22:32:30 2025
*************** addsiflt (double w, double x, int_t y, i
*** 19,26 ****
  	add[w]	a0,a5,a0
   */
  
! /* { /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
  /* { dg-final { scan-assembler-times "\\s(?:fge\\.d|fgt\\.d|fle\\.d|flt\\.d)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a5,a0
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
  /* { dg-final { scan-assembler-times "\\s(?:fge\\.d|fgt\\.d|fle\\.d|flt\\.d)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifne.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifne.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsifne.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsifne.c	Sun Sep 14 22:32:30 2025
*************** addsifne (double w, double x, int_t y, i
*** 19,26 ****
  	add[w]	a0,a5,a0
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
  /* { dg-final { scan-assembler-times "\\sfeq\\.d\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a5,a0
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
  /* { dg-final { scan-assembler-times "\\sfeq\\.d\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:beq|bne)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsige.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsige.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsige.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsige.c	Sun Sep 14 22:32:30 2025
*************** addsige (int_t w, int_t x, int_t y, int_
*** 19,26 ****
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgt|slt)\\s" 1 { xfail rv64 } } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bge|bgt|ble|blt)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { DG-Final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgt|slt)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bge|bgt|ble|blt)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsigeu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsigeu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsigeu.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsigeu.c	Sun Sep 14 22:32:30 2025
*************** addsigeu (int_t w, int_t x, int_t y, int
*** 19,26 ****
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgtu|sltu)\\s" 1 { xfail rv64 } } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bgeu|bgtu|bleu|bltu)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgtu|sltu)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bgeu|bgtu|bleu|bltu)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsigt.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsigt.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsigt.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsigt.c	Sun Sep 14 22:32:30 2025
*************** addsigt (int_t w, int_t x, int_t y, int_
*** 19,26 ****
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgt|slt)\\s" 1 { xfail rv64 } } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bge|bgt|ble|blt)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgt|slt)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bge|bgt|ble|blt)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsigtu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsigtu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsigtu.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsigtu.c	Sun Sep 14 22:32:30 2025
*************** addsigtu (int_t w, int_t x, int_t y, int
*** 19,26 ****
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgtu|sltu)\\s" 1 { xfail rv64 } } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bgeu|bgtu|bleu|bltu)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgtu|sltu)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bgeu|bgtu|bleu|bltu)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsile.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsile.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsile.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsile.c	Sun Sep 14 22:32:30 2025
*************** addsile (int_t w, int_t x, int_t y, int_
*** 19,26 ****
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgt|slt)\\s" 1 { xfail rv64 } } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bge|bgt|ble|blt)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgt|slt)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bge|bgt|ble|blt)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsileu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsileu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsileu.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsileu.c	Sun Sep 14 22:32:30 2025
*************** addsileu (int_t w, int_t x, int_t y, int
*** 19,26 ****
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgtu|sltu)\\s" 1 { xfail rv64 } } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bgeu|bgtu|bleu|bltu)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgtu|sltu)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bgeu|bgtu|bleu|bltu)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsilt.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsilt.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsilt.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsilt.c	Sun Sep 14 22:32:30 2025
*************** addsilt (int_t w, int_t x, int_t y, int_
*** 19,26 ****
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgt|slt)\\s" 1 { xfail rv64 } } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bge|bgt|ble|blt)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgt|slt)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bge|bgt|ble|blt)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsiltu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsiltu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/addsiltu.c	Sun Sep  7 22:34:05 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/addsiltu.c	Sun Sep 14 22:32:30 2025
*************** addsiltu (int_t w, int_t x, int_t y, int
*** 19,26 ****
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { xfail rv64 } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgtu|sltu)\\s" 1 { xfail rv64 } } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bgeu|bgtu|bleu|bltu)\\s" { xfail rv64 } } } */
--- 19,27 ----
  	add[w]	a0,a1,a2
   */
  
! /* { dg-final { scan-rtl-dump-times "Conversion succeeded on pass 1\\." 1 "ce1" } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_addcc" 1 "ce1" { target { rv32 } } } } */
! /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" { target { rv64 } } } } */
! /* { dg-final { scan-assembler-times "\\s(?:sgtu|sltu)\\s" 1 } } */
  /* { dg-final { scan-assembler-not "\\s(?:seqz|snez)\\s" } } */
! /* { dg-final { scan-assembler-not "\\s(?:bgeu|bgtu|bleu|bltu)\\s" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/pr121878.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/pr121878.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/pr121878.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/pr121878.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-mcpu=tt-ascalon-d8 -mtune=tt-ascalon-d8" } */
+ 
+ /* Verify we don't ICE on the following test case.  */
+ 
+ typedef int __attribute__((__vector_size__ (32))) vec;
+ vec
+ foo (vec x, vec y)
+ {
+   return x / y;
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-1.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-1.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+ 
+ #include <stdint.h>
+ 
+ inline uint8_t
+ clip_uint8 (int x)
+ {
+   return x & (~255) ? (-x) >> 31 : x;
+ }
+ 
+ void __attribute__ ((noipa))
+ clip_loop (uint8_t *res, int *x, int w)
+ {
+   for (int i = 0; i < w; i++)
+     res[i] = clip_uint8 (x[i]);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_TRUNC " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "MAX_EXPR " 1 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vnclipu\.wi} 2 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-2.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-2.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+ 
+ #include <stdint.h>
+ 
+ inline uint16_t
+ clip_uint16 (int x)
+ {
+   return x & (~65535) ? (-x) >> 31 : x;
+ }
+ 
+ void __attribute__ ((noipa))
+ clip_loop (uint16_t *res, int *x, int w)
+ {
+   for (int i = 0; i < w; i++)
+     res[i] = clip_uint16 (x[i]);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_TRUNC " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "MAX_EXPR " 1 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vnclipu\.wi} 1 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-3.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-3.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+ 
+ #include <stdint.h>
+ 
+ inline uint8_t
+ clip_uint8 (int64_t x)
+ {
+   return x & (~255) ? (-x) >> 63 : x;
+ }
+ 
+ void __attribute__ ((noipa))
+ clip_loop (uint8_t *res, int64_t *x, int w)
+ {
+   for (int i = 0; i < w; i++)
+     res[i] = clip_uint8 (x[i]);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_TRUNC " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "MAX_EXPR " 1 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vnclipu\.wi} 3 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-4.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-4.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr120378-4.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+ 
+ #include <stdint.h>
+ 
+ inline uint16_t
+ clip_uint16 (int64_t x)
+ {
+   return x & (~65535) ? (-x) >> 63 : x;
+ }
+ 
+ void __attribute__ ((noipa))
+ clip_loop (uint16_t *res, int64_t *x, int w)
+ {
+   for (int i = 0; i < w; i++)
+     res[i] = clip_uint16 (x[i]);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_TRUNC " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "MAX_EXPR " 1 "optimized" } } */
+ /* { dg-final { scan-assembler-times {vnclipu\.wi} 2 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-2.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-2.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-2.c	Sun Sep 14 22:32:31 2025
*************** DEF_OP_VX (add, 128, double, +)
*** 39,43 ****
  DEF_OP_VX (add, 256, double, +)
  DEF_OP_VX (add, 512, double, +)
  
! /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
--- 39,43 ----
  DEF_OP_VX (add, 256, double, +)
  DEF_OP_VX (add, 512, double, +)
  
! /* { dg-final { scan-assembler-times {vfadd\.vf\s+v[0-9]+,\s*v[0-9]+,\s*f[ast]?[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-3.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-3.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-add-3.c	Sun Sep 14 22:32:31 2025
*************** DEF_OP_VI_15 (add, 128, double, +)
*** 39,43 ****
  DEF_OP_VI_15 (add, 256, double, +)
  DEF_OP_VI_15 (add, 512, double, +)
  
! /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
--- 39,43 ----
  DEF_OP_VI_15 (add, 256, double, +)
  DEF_OP_VI_15 (add, 512, double, +)
  
! /* { dg-final { scan-assembler-times {vfadd\.vf\s+v[0-9]+,\s*v[0-9]+,\s*f[ast]?[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-2.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-2.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-2.c	Sun Sep 14 22:32:31 2025
*************** DEF_OP_VX (sub, 128, double, -)
*** 39,43 ****
  DEF_OP_VX (sub, 256, double, -)
  DEF_OP_VX (sub, 512, double, -)
  
! /* { dg-final { scan-assembler-times {vfsub\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
--- 39,43 ----
  DEF_OP_VX (sub, 256, double, -)
  DEF_OP_VX (sub, 512, double, -)
  
! /* { dg-final { scan-assembler-times {vfsub\.vf\s+v[0-9]+,\s*v[0-9]+,\s*f[ast]?[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-3.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-3.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/floating-point-sub-3.c	Sun Sep 14 22:32:31 2025
*************** DEF_OP_VI_15 (sub, 128, double, -)
*** 39,43 ****
  DEF_OP_VI_15 (sub, 256, double, -)
  DEF_OP_VI_15 (sub, 512, double, -)
  
! /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
--- 39,43 ----
  DEF_OP_VI_15 (sub, 256, double, -)
  DEF_OP_VI_15 (sub, 512, double, -)
  
! /* { dg-final { scan-assembler-times {vfadd\.vf\s+v[0-9]+,\s*v[0-9]+,\s*f[ast]?[0-9]+} 30 } } */
  /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f16.c	Sun Sep 14 22:32:31 2025
*************** DEF_VF_MULOP_WIDEN_CASE_0 (_Float16, flo
*** 17,27 ****
--- 17,35 ----
  DEF_VF_MULOP_WIDEN_CASE_0 (_Float16, float, +, -, nacc)
  DEF_VF_MULOP_WIDEN_CASE_0 (_Float16, float, -, -, nsac)
  DEF_VF_BINOP_CASE_0 (_Float16, *, mul)
+ DEF_VF_BINOP_CASE_0 (_Float16, +, add)
+ DEF_VF_BINOP_CASE_0 (_Float16, -, sub)
  DEF_VF_BINOP_REVERSE_CASE_0 (_Float16, /, rdiv)
+ DEF_VF_BINOP_REVERSE_CASE_0 (_Float16, -, rsub)
  DEF_VF_BINOP_CASE_2_WRAP (_Float16, MIN_FUNC_0_WRAP (_Float16), min)
  DEF_VF_BINOP_CASE_2_WRAP (_Float16, MIN_FUNC_1_WRAP (_Float16), min)
  DEF_VF_BINOP_CASE_2_WRAP (_Float16, MAX_FUNC_0_WRAP (_Float16), max)
  DEF_VF_BINOP_CASE_2_WRAP (_Float16, MAX_FUNC_1_WRAP (_Float16), max)
+ DEF_VF_BINOP_WIDEN_CASE_0 (_Float16, float, *, mul)
+ DEF_VF_BINOP_WIDEN_CASE_0 (_Float16, float, +, add)
+ DEF_VF_BINOP_WIDEN_CASE_0 (_Float16, float, -, sub)
+ DEF_VF_BINOP_WIDEN_CASE_2 (_Float16, float, +, add)
+ DEF_VF_BINOP_WIDEN_CASE_2 (_Float16, float, -, sub)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
*************** DEF_VF_BINOP_CASE_2_WRAP (_Float16, MAX_
*** 36,41 ****
--- 44,57 ----
  /* { dg-final { scan-assembler-times {vfwnmacc.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfwnmsac.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmul.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfadd.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfsub.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfrdiv.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfrsub.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmin.vf} 2 } } */
  /* { dg-final { scan-assembler-times {vfmax.vf} 2 } } */
+ /* { dg-final { scan-assembler-times {vfwmul.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfwadd.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfwsub.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfwadd.wf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfwsub.wf} 1 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f32.c	Sun Sep 14 22:32:31 2025
*************** DEF_VF_MULOP_WIDEN_CASE_0 (float, double
*** 17,27 ****
--- 17,35 ----
  DEF_VF_MULOP_WIDEN_CASE_0 (float, double, +, -, nacc)
  DEF_VF_MULOP_WIDEN_CASE_0 (float, double, -, -, nsac)
  DEF_VF_BINOP_CASE_0 (float, *, mul)
+ DEF_VF_BINOP_CASE_0 (float, +, add)
+ DEF_VF_BINOP_CASE_0 (float, -, sub)
  DEF_VF_BINOP_REVERSE_CASE_0 (float, /, rdiv)
+ DEF_VF_BINOP_REVERSE_CASE_0 (float, -, rsub)
  DEF_VF_BINOP_CASE_2_WRAP (float, MIN_FUNC_0_WRAP (float), min)
  DEF_VF_BINOP_CASE_2_WRAP (float, MIN_FUNC_1_WRAP (float), min)
  DEF_VF_BINOP_CASE_2_WRAP (float, MAX_FUNC_0_WRAP (float), max)
  DEF_VF_BINOP_CASE_2_WRAP (float, MAX_FUNC_1_WRAP (float), max)
+ DEF_VF_BINOP_WIDEN_CASE_0 (float, double, *, mul)
+ DEF_VF_BINOP_WIDEN_CASE_0 (float, double, +, add)
+ DEF_VF_BINOP_WIDEN_CASE_0 (float, double, -, sub)
+ DEF_VF_BINOP_WIDEN_CASE_2 (float, double, +, add)
+ DEF_VF_BINOP_WIDEN_CASE_2 (float, double, -, sub)
  
  /* { dg-final { scan-assembler-times {vfmadd.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmsub.vf} 1 } } */
*************** DEF_VF_BINOP_CASE_2_WRAP (float, MAX_FUN
*** 36,41 ****
--- 44,57 ----
  /* { dg-final { scan-assembler-times {vfwnmacc.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfwnmsac.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmul.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfadd.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfsub.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfrdiv.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfrsub.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmin.vf} 2 } } */
  /* { dg-final { scan-assembler-times {vfmax.vf} 2 } } */
+ /* { dg-final { scan-assembler-times {vfwmul.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfwadd.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfwsub.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfwadd.wf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfwsub.wf} 1 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-1-f64.c	Sun Sep 14 22:32:31 2025
*************** DEF_VF_MULOP_ACC_CASE_0 (double, -, +, s
*** 13,19 ****
--- 13,22 ----
  DEF_VF_MULOP_ACC_CASE_0 (double, +, -, nacc)
  DEF_VF_MULOP_ACC_CASE_0 (double, -, -, nsac)
  DEF_VF_BINOP_CASE_0 (double, *, mul)
+ DEF_VF_BINOP_CASE_0 (double, +, add)
+ DEF_VF_BINOP_CASE_0 (double, -, sub)
  DEF_VF_BINOP_REVERSE_CASE_0 (double, /, rdiv)
+ DEF_VF_BINOP_REVERSE_CASE_0 (double, -, rsub)
  DEF_VF_BINOP_CASE_2_WRAP (double, MIN_FUNC_0_WRAP (double), min)
  DEF_VF_BINOP_CASE_2_WRAP (double, MIN_FUNC_1_WRAP (double), min)
  DEF_VF_BINOP_CASE_2_WRAP (double, MAX_FUNC_0_WRAP (double), max)
*************** DEF_VF_BINOP_CASE_2_WRAP (double, MAX_FU
*** 28,33 ****
--- 31,39 ----
  /* { dg-final { scan-assembler-times {vfnmacc.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfnmsac.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmul.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfadd.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfsub.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfrdiv.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfrsub.vf} 1 } } */
  /* { dg-final { scan-assembler-times {vfmin.vf} 2 } } */
  /* { dg-final { scan-assembler-times {vfmax.vf} 2 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 16,22 ****
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfmul.vf} } } */
  /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-not {vfmax.vf} } } */
! /* { dg-final { scan-assembler-times {fcvt.s.h} 4 } } */
--- 16,30 ----
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-not {vfmax.vf} } } */
! /* { dg-final { scan-assembler-not {vfwmul.vf} } } */
! /* { dg-final { scan-assembler-not {vfwadd.vf} } } */
! /* { dg-final { scan-assembler-not {vfwsub.vf} } } */
! /* { dg-final { scan-assembler-not {vfwadd.wf} } } */
! /* { dg-final { scan-assembler-not {vfwsub.wf} } } */
! /* { dg-final { scan-assembler-times {fcvt.s.h} 9 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 16,22 ****
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfmul.vf} } } */
  /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-not {vfmax.vf} } } */
! /* { dg-final { scan-assembler-times {fcvt.d.s} 4 } } */
--- 16,30 ----
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-not {vfmax.vf} } } */
! /* { dg-final { scan-assembler-not {vfwmul.vf} } } */
! /* { dg-final { scan-assembler-not {vfwadd.vf} } } */
! /* { dg-final { scan-assembler-not {vfwsub.vf} } } */
! /* { dg-final { scan-assembler-not {vfwadd.wf} } } */
! /* { dg-final { scan-assembler-not {vfwsub.wf} } } */
! /* { dg-final { scan-assembler-times {fcvt.d.s} 9 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-2-f64.c	Sun Sep 14 22:32:31 2025
***************
*** 12,17 ****
--- 12,20 ----
  /* { dg-final { scan-assembler-not {vfnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfnmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-not {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f16.c	Sun Sep 14 22:32:31 2025
*************** DEF_VF_MULOP_WIDEN_CASE_1 (_Float16, flo
*** 17,23 ****
--- 17,26 ----
  DEF_VF_MULOP_WIDEN_CASE_1 (_Float16, float, +, -, nacc)
  DEF_VF_MULOP_WIDEN_CASE_1 (_Float16, float, -, -, nsac)
  DEF_VF_BINOP_CASE_1 (_Float16, *, mul, VF_BINOP_BODY_X128)
+ DEF_VF_BINOP_CASE_1 (_Float16, +, add, VF_BINOP_BODY_X128)
+ DEF_VF_BINOP_CASE_1 (_Float16, -, sub, VF_BINOP_BODY_X128)
  DEF_VF_BINOP_REVERSE_CASE_1 (_Float16, /, rdiv, VF_BINOP_REVERSE_BODY_X128)
+ DEF_VF_BINOP_REVERSE_CASE_1 (_Float16, -, rsub, VF_BINOP_REVERSE_BODY_X128)
  DEF_VF_BINOP_CASE_3_WRAP (_Float16, MIN_FUNC_0_WRAP (_Float16), min,
  			  VF_BINOP_FUNC_BODY_X128)
  DEF_VF_BINOP_CASE_3_WRAP (_Float16, MIN_FUNC_1_WRAP (_Float16), min,
*************** DEF_VF_BINOP_CASE_3_WRAP (_Float16, MAX_
*** 26,31 ****
--- 29,39 ----
  			  VF_BINOP_FUNC_BODY_X128)
  DEF_VF_BINOP_CASE_3_WRAP (_Float16, MAX_FUNC_1_WRAP (_Float16), max,
  			  VF_BINOP_FUNC_BODY_X128)
+ DEF_VF_BINOP_WIDEN_CASE_1 (_Float16, float, *, mul)
+ DEF_VF_BINOP_WIDEN_CASE_1 (_Float16, float, +, add)
+ DEF_VF_BINOP_WIDEN_CASE_1 (_Float16, float, -, sub)
+ DEF_VF_BINOP_WIDEN_CASE_3 (_Float16, float, +, add)
+ DEF_VF_BINOP_WIDEN_CASE_3 (_Float16, float, -, sub)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
*************** DEF_VF_BINOP_CASE_3_WRAP (_Float16, MAX_
*** 40,45 ****
--- 48,61 ----
  /* { dg-final { scan-assembler {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler {vfmul.vf} } } */
+ /* { dg-final { scan-assembler {vfadd.vf} } } */
+ /* { dg-final { scan-assembler {vfsub.vf} } } */
  /* { dg-final { scan-assembler {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler {vfrsub.vf} } } */
  /* { dg-final { scan-assembler {vfmin.vf} } } */
  /* { dg-final { scan-assembler {vfmax.vf} } } */
+ /* { dg-final { scan-assembler {vfwmul.vf} } } */
+ /* { dg-final { scan-assembler {vfwadd.vf} } } */
+ /* { dg-final { scan-assembler {vfwsub.vf} } } */
+ /* { dg-final { scan-assembler {vfwadd.wf} } } */
+ /* { dg-final { scan-assembler {vfwsub.wf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f32.c	Sun Sep 14 22:32:31 2025
*************** DEF_VF_MULOP_WIDEN_CASE_1 (float, double
*** 17,23 ****
--- 17,26 ----
  DEF_VF_MULOP_WIDEN_CASE_1 (float, double, +, -, nacc)
  DEF_VF_MULOP_WIDEN_CASE_1 (float, double, -, -, nsac)
  DEF_VF_BINOP_CASE_1 (float, *, mul, VF_BINOP_BODY_X128)
+ DEF_VF_BINOP_CASE_1 (float, +, add, VF_BINOP_BODY_X128)
+ DEF_VF_BINOP_CASE_1 (float, -, sub, VF_BINOP_BODY_X128)
  DEF_VF_BINOP_REVERSE_CASE_1 (float, /, rdiv, VF_BINOP_REVERSE_BODY_X128)
+ DEF_VF_BINOP_REVERSE_CASE_1 (float, -, rsub, VF_BINOP_REVERSE_BODY_X128)
  DEF_VF_BINOP_CASE_3_WRAP (float, MIN_FUNC_0_WRAP (float), min,
  			  VF_BINOP_FUNC_BODY_X128)
  DEF_VF_BINOP_CASE_3_WRAP (float, MIN_FUNC_1_WRAP (float), min,
*************** DEF_VF_BINOP_CASE_3_WRAP (float, MAX_FUN
*** 26,31 ****
--- 29,39 ----
  			  VF_BINOP_FUNC_BODY_X128)
  DEF_VF_BINOP_CASE_3_WRAP (float, MAX_FUNC_1_WRAP (float), max,
  			  VF_BINOP_FUNC_BODY_X128)
+ DEF_VF_BINOP_WIDEN_CASE_1 (float, double, *, mul)
+ DEF_VF_BINOP_WIDEN_CASE_1 (float, double, +, add)
+ DEF_VF_BINOP_WIDEN_CASE_1 (float, double, -, sub)
+ DEF_VF_BINOP_WIDEN_CASE_3 (float, double, +, add)
+ DEF_VF_BINOP_WIDEN_CASE_3 (float, double, -, sub)
  
  /* { dg-final { scan-assembler {vfmadd.vf} } } */
  /* { dg-final { scan-assembler {vfmsub.vf} } } */
*************** DEF_VF_BINOP_CASE_3_WRAP (float, MAX_FUN
*** 40,45 ****
--- 48,61 ----
  /* { dg-final { scan-assembler {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler {vfmul.vf} } } */
+ /* { dg-final { scan-assembler {vfadd.vf} } } */
+ /* { dg-final { scan-assembler {vfsub.vf} } } */
  /* { dg-final { scan-assembler {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler {vfrsub.vf} } } */
  /* { dg-final { scan-assembler {vfmin.vf} } } */
  /* { dg-final { scan-assembler {vfmax.vf} } } */
+ /* { dg-final { scan-assembler {vfwmul.vf} } } */
+ /* { dg-final { scan-assembler {vfwadd.vf} } } */
+ /* { dg-final { scan-assembler {vfwsub.vf} } } */
+ /* { dg-final { scan-assembler {vfwadd.wf} } } */
+ /* { dg-final { scan-assembler {vfwsub.wf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-3-f64.c	Sun Sep 14 22:32:31 2025
*************** DEF_VF_MULOP_ACC_CASE_1 (double, -, +, s
*** 13,19 ****
--- 13,22 ----
  DEF_VF_MULOP_ACC_CASE_1 (double, +, -, nacc, VF_MULOP_ACC_BODY_X128)
  DEF_VF_MULOP_ACC_CASE_1 (double, -, -, nsac, VF_MULOP_ACC_BODY_X128)
  DEF_VF_BINOP_CASE_1 (double, *, mul, VF_BINOP_BODY_X128)
+ DEF_VF_BINOP_CASE_1 (double, +, add, VF_BINOP_BODY_X128)
+ DEF_VF_BINOP_CASE_1 (double, -, sub, VF_BINOP_BODY_X128)
  DEF_VF_BINOP_REVERSE_CASE_1 (double, /, rdiv, VF_BINOP_REVERSE_BODY_X128)
+ DEF_VF_BINOP_REVERSE_CASE_1 (double, -, rsub, VF_BINOP_REVERSE_BODY_X128)
  DEF_VF_BINOP_CASE_3_WRAP (double, MIN_FUNC_0_WRAP (double), min,
  			  VF_BINOP_FUNC_BODY_X128)
  DEF_VF_BINOP_CASE_3_WRAP (double, MIN_FUNC_1_WRAP (double), min,
*************** DEF_VF_BINOP_CASE_3_WRAP (double, MAX_FU
*** 32,37 ****
--- 35,43 ----
  /* { dg-final { scan-assembler {vfnmacc.vf} } } */
  /* { dg-final { scan-assembler {vfnmsac.vf} } } */
  /* { dg-final { scan-assembler {vfmul.vf} } } */
+ /* { dg-final { scan-assembler {vfadd.vf} } } */
+ /* { dg-final { scan-assembler {vfsub.vf} } } */
  /* { dg-final { scan-assembler {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler {vfrsub.vf} } } */
  /* { dg-final { scan-assembler {vfmin.vf} } } */
  /* { dg-final { scan-assembler {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 16,22 ****
--- 16,30 ----
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-not {vfmax.vf} } } */
+ /* { dg-final { scan-assembler-not {vfwmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfwadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfwsub.vf} } } */
+ /* { dg-final { scan-assembler-not {vfwadd.wf} } } */
+ /* { dg-final { scan-assembler-not {vfwsub.wf} } } */
  /* { dg-final { scan-assembler {fcvt.s.h} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 16,22 ****
--- 16,30 ----
  /* { dg-final { scan-assembler-not {vfwnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfwnmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-not {vfmax.vf} } } */
+ /* { dg-final { scan-assembler-not {vfwmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfwadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfwsub.vf} } } */
+ /* { dg-final { scan-assembler-not {vfwadd.wf} } } */
+ /* { dg-final { scan-assembler-not {vfwsub.wf} } } */
  /* { dg-final { scan-assembler {fcvt.d.s} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-4-f64.c	Sun Sep 14 22:32:31 2025
***************
*** 12,17 ****
--- 12,20 ----
  /* { dg-final { scan-assembler-not {vfnmacc.vf} } } */
  /* { dg-final { scan-assembler-not {vfnmsac.vf} } } */
  /* { dg-final { scan-assembler-not {vfmul.vf} } } */
+ /* { dg-final { scan-assembler-not {vfadd.vf} } } */
+ /* { dg-final { scan-assembler-not {vfsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfrdiv.vf} } } */
+ /* { dg-final { scan-assembler-not {vfrsub.vf} } } */
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
  /* { dg-final { scan-assembler-not {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 4,8 ****
--- 4,10 ----
  #include "vf_binop.h"
  
  DEF_VF_BINOP_CASE_2_WRAP (_Float16, __builtin_fminf16, min)
+ DEF_VF_BINOP_CASE_2_WRAP (_Float16, __builtin_fmaxf16, max)
  
  /* { dg-final { scan-assembler-times {vfmin.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfmax.vf} 1 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 4,8 ****
--- 4,10 ----
  #include "vf_binop.h"
  
  DEF_VF_BINOP_CASE_2_WRAP (float, __builtin_fminf, min)
+ DEF_VF_BINOP_CASE_2_WRAP (float, __builtin_fmaxf, max)
  
  /* { dg-final { scan-assembler-times {vfmin.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfmax.vf} 1 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-5-f64.c	Sun Sep 14 22:32:31 2025
***************
*** 4,8 ****
--- 4,10 ----
  #include "vf_binop.h"
  
  DEF_VF_BINOP_CASE_2_WRAP (double, __builtin_fmin, min)
+ DEF_VF_BINOP_CASE_2_WRAP (double, __builtin_fmax, max)
  
  /* { dg-final { scan-assembler-times {vfmin.vf} 1 } } */
+ /* { dg-final { scan-assembler-times {vfmax.vf} 1 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 4,6 ****
--- 4,7 ----
  #include "vf-5-f16.c"
  
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 4,6 ****
--- 4,7 ----
  #include "vf-5-f32.c"
  
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-6-f64.c	Sun Sep 14 22:32:31 2025
***************
*** 4,6 ****
--- 4,7 ----
  #include "vf-5-f64.c"
  
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 3,8 ****
  
  #include "vf_binop.h"
  
! DEF_VF_BINOP_CASE_3_WRAP (_Float16, __builtin_fminf16, min, VF_BINOP_FUNC_BODY_X128)
  
  /* { dg-final { scan-assembler {vfmin.vf} } } */
--- 3,12 ----
  
  #include "vf_binop.h"
  
! DEF_VF_BINOP_CASE_3_WRAP (_Float16, __builtin_fminf16, min,
! 			  VF_BINOP_FUNC_BODY_X128)
! DEF_VF_BINOP_CASE_3_WRAP (_Float16, __builtin_fmaxf16, max,
! 			  VF_BINOP_FUNC_BODY_X128)
  
  /* { dg-final { scan-assembler {vfmin.vf} } } */
+ /* { dg-final { scan-assembler {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 4,8 ****
--- 4,10 ----
  #include "vf_binop.h"
  
  DEF_VF_BINOP_CASE_3_WRAP (float, __builtin_fminf, min, VF_BINOP_FUNC_BODY_X128)
+ DEF_VF_BINOP_CASE_3_WRAP (float, __builtin_fmaxf, max, VF_BINOP_FUNC_BODY_X128)
  
  /* { dg-final { scan-assembler {vfmin.vf} } } */
+ /* { dg-final { scan-assembler {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-7-f64.c	Sun Sep 14 22:32:31 2025
***************
*** 4,8 ****
--- 4,10 ----
  #include "vf_binop.h"
  
  DEF_VF_BINOP_CASE_3_WRAP (double, __builtin_fmin, min, VF_BINOP_FUNC_BODY_X128)
+ DEF_VF_BINOP_CASE_3_WRAP (double, __builtin_fmax, max, VF_BINOP_FUNC_BODY_X128)
  
  /* { dg-final { scan-assembler {vfmin.vf} } } */
+ /* { dg-final { scan-assembler {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d --param=fpr2vr-cost=4" } */
  
  #include "vf-7-f16.c"
  
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
--- 1,7 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv_zvfh -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=4" } */
  
  #include "vf-7-f16.c"
  
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64d --param=fpr2vr-cost=4" } */
  
  #include "vf-7-f32.c"
  
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
--- 1,7 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=4" } */
  
  #include "vf-7-f32.c"
  
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf-8-f64.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64d --param=fpr2vr-cost=4" } */
  
  #include "vf-7-f64.c"
  
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
--- 1,7 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64d -fno-fast-math --param=fpr2vr-cost=4" } */
  
  #include "vf-7-f64.c"
  
  /* { dg-final { scan-assembler-not {vfmin.vf} } } */
+ /* { dg-final { scan-assembler-not {vfmax.vf} } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop.h	Sun Sep 14 22:32:31 2025
***************
*** 31,36 ****
--- 31,51 ----
  #define RUN_VF_BINOP_REVERSE_CASE_0_WRAP(T, NAME, out, in, f, n)               \
    RUN_VF_BINOP_REVERSE_CASE_0 (T, NAME, out, in, f, n)
  
+ #define DEF_VF_BINOP_WIDEN_CASE_0(T1, T2, OP, NAME)                            \
+   void test_vf_binop_widen_##NAME##_##T1##_case_0 (T2 *restrict out,           \
+ 						   T1 *restrict in, T1 f,      \
+ 						   unsigned n)                 \
+   {                                                                            \
+     for (unsigned i = 0; i < n; i++)                                           \
+       out[i] = (T2) in[i] OP (T2) f;                                           \
+   }
+ #define DEF_VF_BINOP_WIDEN_CASE_0_WRAP(T1, T2, OP, NAME)                       \
+   DEF_VF_BINOP_WIDEN_CASE_0 (T1, T2, OP, NAME)
+ #define RUN_VF_BINOP_WIDEN_CASE_0(T1, T2, NAME, out, in, f, n)                 \
+   test_vf_binop_widen_##NAME##_##T1##_case_0 (out, in, f, n)
+ #define RUN_VF_BINOP_WIDEN_CASE_0_WRAP(T1, T2, NAME, out, in, f, n)            \
+   RUN_VF_BINOP_WIDEN_CASE_0 (T1, T2, NAME, out, in, f, n)
+ 
  #define VF_BINOP_BODY(op)                                                      \
    out[k + 0] = in[k + 0] op tmp;                                               \
    out[k + 1] = in[k + 1] op tmp;                                               \
***************
*** 122,129 ****
  #define DEF_VF_BINOP_REVERSE_CASE_1_WRAP(T, OP, NAME, BODY)                    \
    DEF_VF_BINOP_REVERSE_CASE_1 (T, OP, NAME, BODY)
  
- #endif
- 
  #define DEF_MIN_0(T)                                                           \
    static inline T test_##T##_min_0 (T a, T b) { return a > b ? b : a; }
  
--- 137,142 ----
*************** DEF_MAX_1 (double)
*** 224,226 ****
--- 237,286 ----
  #define VF_BINOP_FUNC_BODY_X128(op)                                            \
    VF_BINOP_FUNC_BODY_X64 (op)                                                  \
    VF_BINOP_FUNC_BODY_X64 (op)
+ 
+ #define DEF_VF_BINOP_WIDEN_CASE_1(TYPE1, TYPE2, OP, NAME)                      \
+   void test_vf_binop_widen_##NAME##_##TYPE1##_##TYPE2##_case_1 (               \
+     TYPE2 *__restrict dst, TYPE2 *__restrict dst2, TYPE2 *__restrict dst3,     \
+     TYPE2 *__restrict dst4, TYPE1 *__restrict a, TYPE1 *__restrict b,          \
+     TYPE1 *__restrict a2, TYPE1 *__restrict b2, int n)                         \
+   {                                                                            \
+     for (int i = 0; i < n; i++)                                                \
+       {                                                                        \
+ 	dst[i] = (TYPE2) b[i] OP (TYPE2) * a;                                  \
+ 	dst2[i] = (TYPE2) b[i] OP (TYPE2) * a2;                                \
+ 	dst3[i] = (TYPE2) a[i] OP (TYPE2) * a2;                                \
+ 	dst4[i] = (TYPE2) b2[i] OP (TYPE2) * a;                                \
+       }                                                                        \
+   }
+ 
+ #define DEF_VF_BINOP_WIDEN_CASE_2(T1, T2, OP, NAME)                            \
+   void test_vf_binop_widen_##NAME##_##T1##_case_2 (T2 *restrict out,           \
+ 						   T2 *restrict in, T1 f,      \
+ 						   unsigned n)                 \
+   {                                                                            \
+     for (unsigned i = 0; i < n; i++)                                           \
+       out[i] = in[i] OP (T2) f;                                                \
+   }
+ #define DEF_VF_BINOP_WIDEN_CASE_2_WRAP(T1, T2, OP, NAME)                       \
+   DEF_VF_BINOP_WIDEN_CASE_2 (T1, T2, OP, NAME)
+ #define RUN_VF_BINOP_WIDEN_CASE_2(T1, T2, NAME, out, in, f, n)                 \
+   test_vf_binop_widen_##NAME##_##T1##_case_2 (out, in, f, n)
+ #define RUN_VF_BINOP_WIDEN_CASE_2_WRAP(T1, T2, NAME, out, in, f, n)            \
+   RUN_VF_BINOP_WIDEN_CASE_2 (T1, T2, NAME, out, in, f, n)
+ 
+ #define DEF_VF_BINOP_WIDEN_CASE_3(TYPE1, TYPE2, OP, NAME)                      \
+   void test_vf_binop_widen_##NAME##_##TYPE1##_##TYPE2##_case_3 (               \
+     TYPE2 *__restrict dst, TYPE2 *__restrict dst2, TYPE2 *__restrict dst3,     \
+     TYPE2 *__restrict dst4, TYPE1 *__restrict a, TYPE2 *__restrict b,          \
+     TYPE1 *__restrict a2, TYPE2 *__restrict b2, int n)                         \
+   {                                                                            \
+     for (int i = 0; i < n; i++)                                                \
+       {                                                                        \
+ 	dst[i] = b[i] OP (TYPE2) * a;                                          \
+ 	dst2[i] = b[i] OP (TYPE2) * a2;                                        \
+ 	dst3[i] = b2[i] OP (TYPE2) * a2;                                       \
+ 	dst4[i] = b2[i] OP (TYPE2) * a;                                        \
+       }                                                                        \
+   }
+ 
+ #endif
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_data.h	Sun Sep 14 22:32:31 2025
*************** double TEST_BINOP_DATA(double, mul)[][4]
*** 154,159 ****
--- 154,452 ----
    },
  };
  
+ _Float16 TEST_BINOP_DATA(_Float16, add)[][4][N] =
+ {
+   {
+     { 0x1.0000000000000p+0f16 },
+     {
+     0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16,
+     0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16,
+     0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16,
+     0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16,
+     },
+     {
+     0x1.9fc0000000000p+4f16, 0x1.9fc0000000000p+4f16, 0x1.9fc0000000000p+4f16, 0x1.9fc0000000000p+4f16,
+     0x1.bc80000000000p+6f16, 0x1.bc80000000000p+6f16, 0x1.bc80000000000p+6f16, 0x1.bc80000000000p+6f16,
+     0x1.acc0000000000p+5f16, 0x1.acc0000000000p+5f16, 0x1.acc0000000000p+5f16, 0x1.acc0000000000p+5f16,
+     0x1.7f80000000000p+4f16, 0x1.7f80000000000p+4f16, 0x1.7f80000000000p+4f16, 0x1.7f80000000000p+4f16,
+     },
+   },
+   {
+     { 0x1.9000000000000p+6f16 },
+     {
+     -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16,
+     0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16,
+     -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16,
+     -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16,
+     },
+     {
+     0x1.cc40000000000p+5f16, 0x1.cc40000000000p+5f16, 0x1.cc40000000000p+5f16, 0x1.cc40000000000p+5f16,
+     0x1.a980000000000p+7f16, 0x1.a980000000000p+7f16, 0x1.a980000000000p+7f16, 0x1.a980000000000p+7f16,
+     -0x1.37c0000000000p+7f16, -0x1.37c0000000000p+7f16, -0x1.37c0000000000p+7f16, -0x1.37c0000000000p+7f16,
+     -0x1.2800000000000p+0f16, -0x1.2800000000000p+0f16, -0x1.2800000000000p+0f16, -0x1.2800000000000p+0f16,
+     },
+   },
+   {
+     { -0x1.9000000000000p+6f16 },
+     {
+     -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16,
+     -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16,
+     0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16,
+     -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16,
+     },
+     {
+     -0x1.0980000000000p+7f16, -0x1.0980000000000p+7f16, -0x1.0980000000000p+7f16, -0x1.0980000000000p+7f16,
+     -0x1.5680000000000p+8f16, -0x1.5680000000000p+8f16, -0x1.5680000000000p+8f16, -0x1.5680000000000p+8f16,
+     -0x1.2a40000000000p+6f16, -0x1.2a40000000000p+6f16, -0x1.2a40000000000p+6f16, -0x1.2a40000000000p+6f16,
+     -0x1.0a40000000000p+7f16, -0x1.0a40000000000p+7f16, -0x1.0a40000000000p+7f16, -0x1.0a40000000000p+7f16,
+     },
+   },
+ };
+ 
+ float TEST_BINOP_DATA(float, add)[][4][N] =
+ {
+   {
+     { 0x1.fffffe0000000p+63f },
+     {
+     0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f,
+     0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f,
+     0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f,
+     0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f,
+     },
+     {
+     0x1.18fe140000000p+64f, 0x1.18fe140000000p+64f, 0x1.18fe140000000p+64f, 0x1.18fe140000000p+64f,
+     0x1.6e2d4c0000000p+64f, 0x1.6e2d4c0000000p+64f, 0x1.6e2d4c0000000p+64f, 0x1.6e2d4c0000000p+64f,
+     0x1.349d660000000p+64f, 0x1.349d660000000p+64f, 0x1.349d660000000p+64f, 0x1.349d660000000p+64f,
+     0x1.16faec0000000p+64f, 0x1.16faec0000000p+64f, 0x1.16faec0000000p+64f, 0x1.16faec0000000p+64f,
+     },
+   },
+   {
+     { 0x1.bc16d60000000p+59f },
+     {
+     -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f,
+     0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f,
+     -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f,
+     -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f,
+     },
+     {
+     -0x1.c9b60a0000000p+60f, -0x1.c9b60a0000000p+60f, -0x1.c9b60a0000000p+60f, -0x1.c9b60a0000000p+60f,
+     0x1.fabc560000000p+62f, 0x1.fabc560000000p+62f, 0x1.fabc560000000p+62f, 0x1.fabc560000000p+62f,
+     -0x1.e420960000000p+63f, -0x1.e420960000000p+63f, -0x1.e420960000000p+63f, -0x1.e420960000000p+63f,
+     -0x1.5d4fcc0000000p+62f, -0x1.5d4fcc0000000p+62f, -0x1.5d4fcc0000000p+62f, -0x1.5d4fcc0000000p+62f,
+     },
+   },
+   {
+     { -0x1.5af1d80000000p+66f },
+     {
+     -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f,
+     -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f,
+     0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f,
+     -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f,
+     },
+     {
+     -0x1.63232a0000000p+66f, -0x1.63232a0000000p+66f, -0x1.63232a0000000p+66f, -0x1.63232a0000000p+66f,
+     -0x1.97a04a0000000p+66f, -0x1.97a04a0000000p+66f, -0x1.97a04a0000000p+66f, -0x1.97a04a0000000p+66f,
+     -0x1.5496800000000p+66f, -0x1.5496800000000p+66f, -0x1.5496800000000p+66f, -0x1.5496800000000p+66f,
+     -0x1.6339320000000p+66f, -0x1.6339320000000p+66f, -0x1.6339320000000p+66f, -0x1.6339320000000p+66f,
+     },
+   },
+ };
+ 
+ double TEST_BINOP_DATA(double, add)[][4][N] =
+ {
+   {
+     { 0x1.317e5ef3ab327p+508 },
+     {
+     0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508,
+     0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510,
+     0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509,
+     0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508,
+     },
+     {
+     0x1.60afdaa95eed0p+509, 0x1.60afdaa95eed0p+509, 0x1.60afdaa95eed0p+509, 0x1.60afdaa95eed0p+509,
+     0x1.028a65ca864cap+511, 0x1.028a65ca864cap+511, 0x1.028a65ca864cap+511, 0x1.028a65ca864cap+511,
+     0x1.1ed532988d1f4p+510, 0x1.1ed532988d1f4p+510, 0x1.1ed532988d1f4p+510, 0x1.1ed532988d1f4p+510,
+     0x1.50969d2ba0938p+509, 0x1.50969d2ba0938p+509, 0x1.50969d2ba0938p+509, 0x1.50969d2ba0938p+509,
+     },
+   },
+   {
+     { 0x1.317e5ef3ab327p+508 },
+     {
+     -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509,
+     0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510,
+     -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511,
+     -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510,
+     },
+     {
+     -0x1.7643190f36ca9p+508, -0x1.7643190f36ca9p+508, -0x1.7643190f36ca9p+508, -0x1.7643190f36ca9p+508,
+     0x1.07cc8a55d3706p+511, 0x1.07cc8a55d3706p+511, 0x1.07cc8a55d3706p+511, 0x1.07cc8a55d3706p+511,
+     -0x1.d9b238912437ep+511, -0x1.d9b238912437ep+511, -0x1.d9b238912437ep+511, -0x1.d9b238912437ep+511,
+     -0x1.487311435414ep+510, -0x1.487311435414ep+510, -0x1.487311435414ep+510, -0x1.487311435414ep+510,
+     },
+   },
+   {
+     { -0x1.317e5ef3ab327p+508 },
+     {
+     -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509,
+     -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511,
+     0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508,
+     -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509,
+     },
+     {
+     -0x1.9ee9651b12854p+509, -0x1.9ee9651b12854p+509, -0x1.9ee9651b12854p+509, -0x1.9ee9651b12854p+509,
+     -0x1.05d1b1f39c559p+512, -0x1.05d1b1f39c559p+512, -0x1.05d1b1f39c559p+512, -0x1.05d1b1f39c559p+512,
+     0x1.955d935b3ac44p+506, 0x1.955d935b3ac44p+506, 0x1.955d935b3ac44p+506, 0x1.955d935b3ac44p+506,
+     -0x1.a1aa9281a490cp+509, -0x1.a1aa9281a490cp+509, -0x1.a1aa9281a490cp+509, -0x1.a1aa9281a490cp+509,
+     },
+   },
+ };
+ _Float16 TEST_BINOP_DATA(_Float16, sub)[][4][N] =
+ {
+   {
+     { 0x1.0000000000000p+0f16 },
+     {
+     0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16,
+     0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16,
+     0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16,
+     0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16,
+     },
+     {
+     0x1.7fc0000000000p+4f16, 0x1.7fc0000000000p+4f16, 0x1.7fc0000000000p+4f16, 0x1.7fc0000000000p+4f16,
+     0x1.b480000000000p+6f16, 0x1.b480000000000p+6f16, 0x1.b480000000000p+6f16, 0x1.b480000000000p+6f16,
+     0x1.9cc0000000000p+5f16, 0x1.9cc0000000000p+5f16, 0x1.9cc0000000000p+5f16, 0x1.9cc0000000000p+5f16,
+     0x1.5f80000000000p+4f16, 0x1.5f80000000000p+4f16, 0x1.5f80000000000p+4f16, 0x1.5f80000000000p+4f16,
+     },
+   },
+   {
+     { 0x1.9000000000000p+6f16 },
+     {
+     -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16,
+     0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16,
+     -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16,
+     -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16,
+     },
+     {
+     -0x1.1d00000000000p+7f16, -0x1.1d00000000000p+7f16, -0x1.1d00000000000p+7f16, -0x1.1d00000000000p+7f16,
+     0x1.9800000000000p+3f16, 0x1.9800000000000p+3f16, 0x1.9800000000000p+3f16, 0x1.9800000000000p+3f16,
+     -0x1.63c0000000000p+8f16, -0x1.63c0000000000p+8f16, -0x1.63c0000000000p+8f16, -0x1.63c0000000000p+8f16,
+     -0x1.9240000000000p+7f16, -0x1.9240000000000p+7f16, -0x1.9240000000000p+7f16, -0x1.9240000000000p+7f16,
+     },
+   },
+   {
+     { -0x1.9000000000000p+6f16 },
+     {
+     -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16,
+     -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16,
+     0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16,
+     -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16,
+     },
+     {
+     0x1.0d00000000000p+6f16, 0x1.0d00000000000p+6f16, 0x1.0d00000000000p+6f16, 0x1.0d00000000000p+6f16,
+     -0x1.1d40000000000p+7f16, -0x1.1d40000000000p+7f16, -0x1.1d40000000000p+7f16, -0x1.1d40000000000p+7f16,
+     0x1.f5c0000000000p+6f16, 0x1.f5c0000000000p+6f16, 0x1.f5c0000000000p+6f16, 0x1.f5c0000000000p+6f16,
+     0x1.0b80000000000p+6f16, 0x1.0b80000000000p+6f16, 0x1.0b80000000000p+6f16, 0x1.0b80000000000p+6f16,
+     },
+   },
+ };
+ 
+ float TEST_BINOP_DATA(float, sub)[][4][N] =
+ {
+   {
+     { 0x1.1c37940000000p+53f },
+     {
+     0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f,
+     0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f,
+     0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f,
+     0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f,
+     },
+     {
+     0x1.8da8e60000000p+60f, 0x1.8da8e60000000p+60f, 0x1.8da8e60000000p+60f, 0x1.8da8e60000000p+60f,
+     0x1.b827160000000p+62f, 0x1.b827160000000p+62f, 0x1.b827160000000p+62f, 0x1.b827160000000p+62f,
+     0x1.a3cefc0000000p+61f, 0x1.a3cefc0000000p+61f, 0x1.a3cefc0000000p+61f, 0x1.a3cefc0000000p+61f,
+     0x1.6d766a0000000p+60f, 0x1.6d766a0000000p+60f, 0x1.6d766a0000000p+60f, 0x1.6d766a0000000p+60f,
+     },
+   },
+   {
+     { 0x1.158e460000000p+63f },
+     {
+     -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f,
+     0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f,
+     -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f,
+     -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f,
+     },
+     {
+     -0x1.6a86740000000p+63f, -0x1.6a86740000000p+63f, -0x1.6a86740000000p+63f, -0x1.6a86740000000p+63f,
+     -0x1.9f8c440000000p+60f, -0x1.9f8c440000000p+60f, -0x1.9f8c440000000p+60f, -0x1.9f8c440000000p+60f,
+     -0x1.8ab8240000000p+64f, -0x1.8ab8240000000p+64f, -0x1.8ab8240000000p+64f, -0x1.8ab8240000000p+64f,
+     -0x1.dff79a0000000p+63f, -0x1.dff79a0000000p+63f, -0x1.dff79a0000000p+63f, -0x1.dff79a0000000p+63f,
+     },
+   },
+   {
+     { -0x1.158e460000000p+63f },
+     {
+     -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f,
+     0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f,
+     -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f,
+     -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f,
+     },
+     {
+     0x1.812c2e0000000p+62f, 0x1.812c2e0000000p+62f, 0x1.812c2e0000000p+62f, 0x1.812c2e0000000p+62f,
+     0x1.f72b040000000p+63f, 0x1.f72b040000000p+63f, 0x1.f72b040000000p+63f, 0x1.f72b040000000p+63f,
+     -0x1.d4a7780000000p+62f, -0x1.d4a7780000000p+62f, -0x1.d4a7780000000p+62f, -0x1.d4a7780000000p+62f,
+     0x1.2c93ca0000000p+61f, 0x1.2c93ca0000000p+61f, 0x1.2c93ca0000000p+61f, 0x1.2c93ca0000000p+61f,
+     },
+   },
+ };
+ 
+ double TEST_BINOP_DATA(double, sub)[][4][N] =
+ {
+   {
+     { 0x1.12f1bbdb4d470p+508 },
+     {
+     0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508,
+     0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510,
+     0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509,
+     0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508,
+     },
+     {
+     0x1.f3be6a0f15820p+506, 0x1.f3be6a0f15820p+506, 0x1.f3be6a0f15820p+506, 0x1.f3be6a0f15820p+506,
+     0x1.73f8c4e14e7aep+510, 0x1.73f8c4e14e7aep+510, 0x1.73f8c4e14e7aep+510, 0x1.73f8c4e14e7aep+510,
+     0x1.1b7257c99e01cp+509, 0x1.1b7257c99e01cp+509, 0x1.1b7257c99e01cp+509, 0x1.1b7257c99e01cp+509,
+     0x1.72f47e2122b60p+506, 0x1.72f47e2122b60p+506, 0x1.72f47e2122b60p+506, 0x1.72f47e2122b60p+506,
+     },
+   },
+   {
+     { 0x1.57ae2ad22098cp+511 },
+     {
+     -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509,
+     0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510,
+     -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511,
+     -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510,
+     },
+     {
+     -0x1.aca659d27cd86p+511, -0x1.aca659d27cd86p+511, -0x1.aca659d27cd86p+511, -0x1.aca659d27cd86p+511,
+     -0x1.d845b16b0a3acp+509, -0x1.d845b16b0a3acp+509, -0x1.d845b16b0a3acp+509, -0x1.d845b16b0a3acp+509,
+     -0x1.abc817a0dd1b8p+512, -0x1.abc817a0dd1b8p+512, -0x1.abc817a0dd1b8p+512, -0x1.abc817a0dd1b8p+512,
+     -0x1.110bbfa92004cp+512, -0x1.110bbfa92004cp+512, -0x1.110bbfa92004cp+512, -0x1.110bbfa92004cp+512,
+     },
+   },
+   {
+     { -0x1.57ae2ad22098cp+511 },
+     {
+     -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509,
+     -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511,
+     0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508,
+     -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509,
+     },
+     {
+     0x1.16239d69d15dcp+511, 0x1.16239d69d15dcp+511, 0x1.16239d69d15dcp+511, 0x1.16239d69d15dcp+511,
+     -0x1.1b8ada6d45582p+510, -0x1.1b8ada6d45582p+510, -0x1.1b8ada6d45582p+510, -0x1.1b8ada6d45582p+510,
+     0x1.8a88e34b6fd53p+511, 0x1.8a88e34b6fd53p+511, 0x1.8a88e34b6fd53p+511, 0x1.8a88e34b6fd53p+511,
+     0x1.157352102cdaep+511, 0x1.157352102cdaep+511, 0x1.157352102cdaep+511, 0x1.157352102cdaep+511,
+     },
+   },
+ };
+ 
  _Float16 TEST_BINOP_DATA(_Float16, rdiv)[][4][N] =
  {
    {
*************** double TEST_BINOP_DATA(double, rdiv)[][4
*** 300,305 ****
--- 593,745 ----
      },
    },
  };
+ 
+ _Float16 TEST_BINOP_DATA(_Float16, rsub)[][4][N] =
+ {
+   {
+     { 0x1.fd40000000000p+6f16 },
+     {
+     0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16, 0x1.8fc0000000000p+4f16,
+     0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16, 0x1.b880000000000p+6f16,
+     0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16, 0x1.a4c0000000000p+5f16,
+     0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16, 0x1.6f80000000000p+4f16,
+     },
+     {
+     0x1.9940000000000p+6f16, 0x1.9940000000000p+6f16, 0x1.9940000000000p+6f16, 0x1.9940000000000p+6f16,
+     0x1.12c0000000000p+4f16, 0x1.12c0000000000p+4f16, 0x1.12c0000000000p+4f16, 0x1.12c0000000000p+4f16,
+     0x1.2ac0000000000p+6f16, 0x1.2ac0000000000p+6f16, 0x1.2ac0000000000p+6f16, 0x1.2ac0000000000p+6f16,
+     0x1.a140000000000p+6f16, 0x1.a140000000000p+6f16, 0x1.a140000000000p+6f16, 0x1.a140000000000p+6f16,
+     },
+   },
+   {
+     { 0x1.fd40000000000p+6f16 },
+     {
+     -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16, -0x1.53c0000000000p+5f16,
+     0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16, 0x1.c300000000000p+6f16,
+     -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16, -0x1.ffc0000000000p+7f16,
+     -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16, -0x1.94c0000000000p+6f16,
+     },
+     {
+     0x1.5380000000000p+7f16, 0x1.5380000000000p+7f16, 0x1.5380000000000p+7f16, 0x1.5380000000000p+7f16,
+     0x1.d180000000000p+3f16, 0x1.d180000000000p+3f16, 0x1.d180000000000p+3f16, 0x1.d180000000000p+3f16,
+     0x1.7f00000000000p+8f16, 0x1.7f00000000000p+8f16, 0x1.7f00000000000p+8f16, 0x1.7f00000000000p+8f16,
+     0x1.c900000000000p+7f16, 0x1.c900000000000p+7f16, 0x1.c900000000000p+7f16, 0x1.c900000000000p+7f16,
+     },
+   },
+   {
+     { -0x1.fd40000000000p+6f16 },
+     {
+     -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16, -0x1.0600000000000p+5f16,
+     -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16, -0x1.e540000000000p+7f16,
+     0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16, 0x1.96c0000000000p+4f16,
+     -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16, -0x1.08c0000000000p+5f16,
+     },
+     {
+     -0x1.7a40000000000p+6f16, -0x1.7a40000000000p+6f16, -0x1.7a40000000000p+6f16, -0x1.7a40000000000p+6f16,
+     0x1.cd40000000000p+6f16, 0x1.cd40000000000p+6f16, 0x1.cd40000000000p+6f16, 0x1.cd40000000000p+6f16,
+     -0x1.3180000000000p+7f16, -0x1.3180000000000p+7f16, -0x1.3180000000000p+7f16, -0x1.3180000000000p+7f16,
+     -0x1.78c0000000000p+6f16, -0x1.78c0000000000p+6f16, -0x1.78c0000000000p+6f16, -0x1.78c0000000000p+6f16,
+     },
+   },
+ };
+ 
+ float TEST_BINOP_DATA(float, rsub)[][4][N] =
+ {
+   {
+     { 0x1.05bc2e0000000p+63f },
+     {
+     0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f, 0x1.8fe1540000000p+60f,
+     0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f, 0x1.b8b5320000000p+62f,
+     0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f, 0x1.a4eb340000000p+61f,
+     0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f, 0x1.6faeda0000000p+60f,
+     },
+     {
+     0x1.a780060000000p+62f, 0x1.a780060000000p+62f, 0x1.a780060000000p+62f, 0x1.a780060000000p+62f,
+     0x1.4b0ca80000000p+60f, 0x1.4b0ca80000000p+60f, 0x1.4b0ca80000000p+60f, 0x1.4b0ca80000000p+60f,
+     0x1.3902c20000000p+62f, 0x1.3902c20000000p+62f, 0x1.3902c20000000p+62f, 0x1.3902c20000000p+62f,
+     0x1.af8ca60000000p+62f, 0x1.af8ca60000000p+62f, 0x1.af8ca60000000p+62f, 0x1.af8ca60000000p+62f,
+     }
+   },
+   {
+     { 0x1.3d86160000000p+60f },
+     {
+     -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f, -0x1.53e0ba0000000p+61f,
+     0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f, 0x1.c3397c0000000p+62f,
+     -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f, -0x1.ffe2020000000p+63f,
+     -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f, -0x1.94d2a80000000p+62f,
+     },
+     {
+     0x1.f2a3c60000000p+61f, 0x1.f2a3c60000000p+61f, 0x1.f2a3c60000000p+61f, 0x1.f2a3c60000000p+61f,
+     -0x1.73d7f60000000p+62f, -0x1.73d7f60000000p+62f, -0x1.73d7f60000000p+62f, -0x1.73d7f60000000p+62f,
+     0x1.13c9620000000p+64f, 0x1.13c9620000000p+64f, 0x1.13c9620000000p+64f, 0x1.13c9620000000p+64f,
+     0x1.e4342e0000000p+62f, 0x1.e4342e0000000p+62f, 0x1.e4342e0000000p+62f, 0x1.e4342e0000000p+62f,
+     },
+   },
+   {
+     { -0x1.3d86160000000p+60f },
+     {
+     -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f, -0x1.062a340000000p+61f,
+     -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f, -0x1.e573960000000p+63f,
+     0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f, 0x1.96d5c20000000p+60f,
+     -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f, -0x1.08eb620000000p+61f,
+     },
+     {
+     0x1.9d9ca40000000p+59f, 0x1.9d9ca40000000p+59f, 0x1.9d9ca40000000p+59f, 0x1.9d9ca40000000p+59f,
+     0x1.bdc2d40000000p+63f, 0x1.bdc2d40000000p+63f, 0x1.bdc2d40000000p+63f, 0x1.bdc2d40000000p+63f,
+     -0x1.6a2dec0000000p+61f, -0x1.6a2dec0000000p+61f, -0x1.6a2dec0000000p+61f, -0x1.6a2dec0000000p+61f,
+     0x1.a8a15a0000000p+59f, 0x1.a8a15a0000000p+59f, 0x1.a8a15a0000000p+59f, 0x1.a8a15a0000000p+59f,
+     },
+   },
+ };
+ 
+ double TEST_BINOP_DATA(double, rsub)[][4][N] =
+ {
+   {
+     { 0x1.ca3d8e6d80cbbp+510 },
+     {
+     0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508, 0x1.8fe1565f12a78p+508,
+     0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510, 0x1.b8b533d821ccap+510,
+     0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509, 0x1.a4eb35b744a54p+509,
+     0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508, 0x1.6faedb6395f48p+508,
+     },
+     {
+     0x1.664538d5bc21dp+510, 0x1.664538d5bc21dp+510, 0x1.664538d5bc21dp+510, 0x1.664538d5bc21dp+510,
+     0x1.1885a955eff10p+506, 0x1.1885a955eff10p+506, 0x1.1885a955eff10p+506, 0x1.1885a955eff10p+506,
+     0x1.ef8fe723bcf22p+509, 0x1.ef8fe723bcf22p+509, 0x1.ef8fe723bcf22p+509, 0x1.ef8fe723bcf22p+509,
+     0x1.6e51d7949b4e9p+510, 0x1.6e51d7949b4e9p+510, 0x1.6e51d7949b4e9p+510, 0x1.6e51d7949b4e9p+510,
+     },
+   },
+   {
+     { 0x1.ca3d8e6d80cbbp+510 },
+     {
+     -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509, -0x1.53e0bc0170fe8p+509,
+     0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510, 0x1.c3397ceebc142p+510,
+     -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511, -0x1.ffe2046f999e3p+511,
+     -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510, -0x1.94d2a9003ee18p+510,
+     },
+     {
+     0x1.3a16f6371ca58p+511, 0x1.3a16f6371ca58p+511, 0x1.3a16f6371ca58p+511, 0x1.3a16f6371ca58p+511,
+     0x1.c1045fb12de40p+504, 0x1.c1045fb12de40p+504, 0x1.c1045fb12de40p+504, 0x1.c1045fb12de40p+504,
+     0x1.728065d32d020p+512, 0x1.728065d32d020p+512, 0x1.728065d32d020p+512, 0x1.728065d32d020p+512,
+     0x1.af881bb6dfd6ap+511, 0x1.af881bb6dfd6ap+511, 0x1.af881bb6dfd6ap+511, 0x1.af881bb6dfd6ap+511,
+     },
+   },
+   {
+     { -0x1.ca3d8e6d80cbbp+510 },
+     {
+     -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509, -0x1.062a35a13cec0p+509,
+     -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511, -0x1.e5739808c344dp+511,
+     0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508, 0x1.96d5c3ca79e38p+508,
+     -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509, -0x1.08eb6307cef78p+509,
+     },
+     {
+     -0x1.4728739ce255bp+510, -0x1.4728739ce255bp+510, -0x1.4728739ce255bp+510, -0x1.4728739ce255bp+510,
+     0x1.0054d0d202df0p+511, 0x1.0054d0d202df0p+511, 0x1.0054d0d202df0p+511, 0x1.0054d0d202df0p+511,
+     -0x1.17f97fb00fa24p+511, -0x1.17f97fb00fa24p+511, -0x1.17f97fb00fa24p+511, -0x1.17f97fb00fa24p+511,
+     -0x1.45c7dce9994ffp+510, -0x1.45c7dce9994ffp+510, -0x1.45c7dce9994ffp+510, -0x1.45c7dce9994ffp+510,
+     },
+   },
+ };
  
  _Float16 TEST_BINOP_DATA(_Float16, min)[][4][N] =
  {
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_widen_run.h gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_widen_run.h
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_widen_run.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_binop_widen_run.h	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,36 ----
+ #ifndef HAVE_DEFINED_VF_BINOP_WIDEN_RUN_H
+ #define HAVE_DEFINED_VF_BINOP_WIDEN_RUN_H
+ 
+ #include <assert.h>
+ 
+ #define N 512
+ 
+ #ifdef SINGLE
+ #define TIN T2
+ #else
+ #define TIN T1
+ #endif
+ 
+ int main ()
+ {
+   T1 f;
+   TIN in[N];
+   T2 out[N];
+ 
+   f = LIMIT % 8723;
+   for (int i = 0; i < N; i++) 
+     {
+       in[i] = LIMIT + i & 1964;
+       out[i] = LIMIT + i & 628;
+       asm volatile ("" ::: "memory");
+     }
+ 
+   TEST_RUN (T1, T2, NAME, out, in, f, N);
+ 
+   for (int i = 0; i < N; i++)
+     assert (out[i] == ((T2) in[i] OP (T2) f));
+ 
+   return 0;
+ }
+ 
+ #endif
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    _Float16
+ #define NAME add
+ 
+ DEF_VF_BINOP_CASE_0_WRAP (T, +, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    float
+ #define NAME add
+ 
+ DEF_VF_BINOP_CASE_0_WRAP (T, +, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfadd-run-1-f64.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    double
+ #define NAME add
+ 
+ DEF_VF_BINOP_CASE_0_WRAP (T, +, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    _Float16
+ #define NAME rsub
+ 
+ DEF_VF_BINOP_REVERSE_CASE_0_WRAP (T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_REVERSE_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    float
+ #define NAME rsub
+ 
+ DEF_VF_BINOP_REVERSE_CASE_0_WRAP (T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_REVERSE_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfrsub-run-1-f64.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    double
+ #define NAME rsub
+ 
+ DEF_VF_BINOP_REVERSE_CASE_0_WRAP (T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_REVERSE_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    _Float16
+ #define NAME sub
+ 
+ DEF_VF_BINOP_CASE_0_WRAP (T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    float
+ #define NAME sub
+ 
+ DEF_VF_BINOP_CASE_0_WRAP (T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f64.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfsub-run-1-f64.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ #include "vf_binop_data.h"
+ 
+ #define T    double
+ #define NAME sub
+ 
+ DEF_VF_BINOP_CASE_0_WRAP (T, -, NAME)
+ 
+ #define TEST_DATA                        TEST_BINOP_DATA_WRAP(T, NAME)
+ #define TEST_RUN(T, NAME, out, in, f, n) RUN_VF_BINOP_CASE_0_WRAP(T, NAME, out, in, f, n)
+ 
+ #include "vf_binop_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    _Float16
+ #define T2    float
+ #define NAME add
+ #define OP +
+ 
+ DEF_VF_BINOP_WIDEN_CASE_0_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_0_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -32768
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-1-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    float
+ #define T2    double
+ #define NAME add
+ #define OP +
+ 
+ DEF_VF_BINOP_WIDEN_CASE_0_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_0_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -2147483648
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    _Float16
+ #define T2    float
+ #define NAME add
+ #define OP +
+ 
+ DEF_VF_BINOP_WIDEN_CASE_2_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_2_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -32768
+ #define SINGLE
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwadd-run-2-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    float
+ #define T2    double
+ #define NAME add
+ #define OP +
+ 
+ DEF_VF_BINOP_WIDEN_CASE_2_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_2_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -2147483648
+ #define SINGLE
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    _Float16
+ #define T2    float
+ #define NAME mul
+ #define OP *
+ 
+ DEF_VF_BINOP_WIDEN_CASE_0_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_0_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -32768
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwmul-run-1-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    float
+ #define T2    double
+ #define NAME mul
+ #define OP *
+ 
+ DEF_VF_BINOP_WIDEN_CASE_0_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_0_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -2147483648
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    _Float16
+ #define T2    float
+ #define NAME sub
+ #define OP -
+ 
+ DEF_VF_BINOP_WIDEN_CASE_0_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_0_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -32768
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-1-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    float
+ #define T2    double
+ #define NAME sub
+ #define OP -
+ 
+ DEF_VF_BINOP_WIDEN_CASE_0_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_0_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -2147483648
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f16.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-require-effective-target riscv_zvfh_ok } */
+ /* { dg-add-options "riscv_v" } */
+ /* { dg-add-options "riscv_zvfh" } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    _Float16
+ #define T2    float
+ #define NAME sub
+ #define OP -
+ 
+ DEF_VF_BINOP_WIDEN_CASE_2_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_2_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -32768
+ #define SINGLE
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/vx_vf/vf_vfwsub-run-2-f32.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do run { target { riscv_v } } } */
+ /* { dg-additional-options "--param=fpr2vr-cost=0" } */
+ 
+ #include "vf_binop.h"
+ 
+ #define T1    float
+ #define T2    double
+ #define NAME sub
+ #define OP -
+ 
+ DEF_VF_BINOP_WIDEN_CASE_2_WRAP (T1, T2, OP, NAME)
+ 
+ #define TEST_RUN(T1, T2, NAME, out, in, f, n) RUN_VF_BINOP_WIDEN_CASE_2_WRAP(T1, T2, NAME, out, in, f, n)
+ #define LIMIT -2147483648
+ #define SINGLE
+ 
+ #include "vf_binop_widen_run.h"
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-1.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-1.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-1.c	Sun Sep 14 22:32:31 2025
***************
*** 3,6 ****
  
  #include "template-1.h"
  
! /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 2 "vect" } } */
--- 3,6 ----
  
  #include "template-1.h"
  
! /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 3 "vect" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl256b-1.c	Sun Sep 14 22:32:31 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv32gc_zve32f_zvl256b -mabi=ilp32d -mrvv-vector-bits=scalable -fdump-tree-vect-details" } */
  
  #include "template-1.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv32gc_zve32f_zvl256b -mabi=ilp32d -mrvv-vector-bits=scalable -mrvv-max-lmul=m2 -fdump-tree-vect-details" } */
  
  #include "template-1.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c	Sun Sep  7 22:34:08 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl256b-1.c	Sun Sep 14 22:32:31 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv32gc_zve32x_zvl256b -mabi=ilp32d -mrvv-vector-bits=scalable -fdump-tree-vect-details" } */
  
  #include "template-1.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv32gc_zve32x_zvl256b -mabi=ilp32d -mrvv-vector-bits=scalable -mrvv-max-lmul=m2 -fdump-tree-vect-details" } */
  
  #include "template-1.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-1.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-1.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O2" } */
+ 
+ void __attribute__((riscv_vector_cc))
+ f_try_sibcall_v2v_indirect (void __attribute__((riscv_vector_cc))
+ 			    (*func) (void))
+ {
+   func ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_try_sibcall_v2v_indirect\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tjr\ta0\n" 1 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-2.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-2.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall-indirect-2.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O2" } */
+ 
+ void __attribute__((riscv_vector_cc))
+ f_try_sibcall_v2n_indirect (void (*func) (void))
+ {
+   func ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_try_sibcall_v2n_indirect\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tjalr\ta0\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tjr\tra\n" 1 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/base/abi-call-variant_cc-sibcall.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O2" } */
+ 
+ void f_ext_n2n (void);
+ void f_ext_v2n (void);
+ void __attribute__((riscv_vector_cc)) f_ext_n2v (void);
+ void __attribute__((riscv_vector_cc)) f_ext_v2v (void);
+ 
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_ext_n2n\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_ext_v2n\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_ext_n2v\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_ext_v2v\n" 1 } } */
+ 
+ void
+ f_try_sibcall_n2n (void)
+ {
+   f_ext_n2n ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_try_sibcall_n2n\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\ttail\tf_ext_n2n\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tcall\tf_ext_n2n\n" 0 } } */
+ 
+ void
+ f_try_sibcall_n2v (void)
+ {
+   f_ext_n2v ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_try_sibcall_n2v\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\ttail\tf_ext_n2v\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tcall\tf_ext_n2v\n" 0 } } */
+ 
+ void __attribute__((riscv_vector_cc))
+ f_try_sibcall_v2n (void)
+ {
+   /* Vector to normal: sibling call optimization shall be
+      suppressed to preserve caller's registers: v1-v7 and v24-v31.  */
+   f_ext_v2n ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_try_sibcall_v2n\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\ttail\tf_ext_v2n\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\tcall\tf_ext_v2n\n" 1 } } */
+ 
+ void __attribute__((riscv_vector_cc))
+ f_try_sibcall_v2v (void)
+ {
+   f_ext_v2v ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\\.variant_cc\tf_try_sibcall_v2v\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\ttail\tf_ext_v2v\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\tcall\tf_ext_v2v\n" 0 } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dots.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotsu.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vd4dotu.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfncvtbf16s.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfncvtbf16s.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfncvtbf16s.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfncvtbf16s.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadb.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadb.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadb.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadb.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadt.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadt.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadt.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfpmadt.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfwcvtsbf16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfwcvtsbf16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfwcvtsbf16.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vfwcvtsbf16.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vln8.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vln8.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vln8.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/non-overloaded/nds_vln8.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvsintload -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvsintload -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvsintload -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvsintload -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dots.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotsu.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vd4dotu.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfncvtbf16s.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfncvtbf16s.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfncvtbf16s.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfncvtbf16s.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadb.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadb.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadb.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadb.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadt.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadt.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadt.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfpmadt.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfwcvtsbf16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfwcvtsbf16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfwcvtsbf16.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vfwcvtsbf16.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vln8.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vln8.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vln8.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/non-policy/overloaded/nds_vln8.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvsintload -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvsintload -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvsintload -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvsintload -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dots.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotsu.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vd4dotu.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfncvtbf16s.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfncvtbf16s.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfncvtbf16s.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfncvtbf16s.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadb.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadb.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadb.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadb.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadt.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadt.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadt.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfpmadt.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfwcvtsbf16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfwcvtsbf16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfwcvtsbf16.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vfwcvtsbf16.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vln8.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vln8.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vln8.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/non-overloaded/nds_vln8.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvsintload -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvsintload -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvsintload -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvsintload -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dots.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotsu.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vd4dotu.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvdot -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvdot -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfncvtbf16s.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfncvtbf16s.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfncvtbf16s.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfncvtbf16s.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadb.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadb.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadb.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadb.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadt.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadt.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadt.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfpmadt.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_zvfh_xandesvpackfph -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_zvfh_xandesvpackfph -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfwcvtsbf16.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfwcvtsbf16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfwcvtsbf16.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vfwcvtsbf16.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvbfhcvt -mabi=ilp32 -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvbfhcvt -mabi=lp64d -O3 -fno-schedule-insns -fno-schedule-insns2" { target { rv64 } } } */
  
  #include <andes_vector.h>
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vln8.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vln8.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vln8.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/rvv/xandesvector/policy/overloaded/nds_vln8.c	Sun Sep 14 22:32:31 2025
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvsintload -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvsintload -O3 -mabi=lp64" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-march=rv32gv_xandesvsintload -O3 -mabi=ilp32" { target { rv32 } } } */
! /* { dg-options "-march=rv64gv_xandesvsintload -O3 -mabi=lp64d" { target { rv64 } } } */
  
  #include "andes_vector.h"
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/riscv/zbb-min-max-04.c gcc-16-20250914/gcc/testsuite/gcc.target/riscv/zbb-min-max-04.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/riscv/zbb-min-max-04.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/riscv/zbb-min-max-04.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,45 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=rv64gc_zicond_zbb -mabi=lp64d" } */
+ /* { dg-skip-if "" { *-*-* } { "-finline-functions" "-funroll-loops" "-ftracer" } } */
+ 
+ int
+ remove_one_fast (int *move_ordering, const int num_moves, int mark)
+ {
+   int i, best = -1000000;
+   int tmp = 0;
+ 
+   for (i = mark; i < num_moves; i++)
+     {
+       if (move_ordering[i] > best)
+         {
+           best = move_ordering[i];
+           tmp = i;
+         }
+     }
+ 
+   return tmp;
+ }
+ 
+ /* { dg-final { scan-assembler-times "max\t" 1 } }  */
+ /* { dg-final { scan-assembler-times "czero.nez" 2 } }  */
+ /* { dg-final { scan-assembler-times "czero.eqz" 2 } }  */
+ 
+ int
+ remove_one_fast2 (int *move_ordering, const int num_moves, int mark)
+ {
+   int i, best = -1000000;
+   int tmp = 0;
+ 
+   for (i = mark; i < num_moves; i++)
+     {
+       if (move_ordering[i] < best)
+         {
+           best = move_ordering[i];
+           tmp = i;
+         }
+     }
+ 
+   return tmp;
+ }
+ 
+ /* { dg-final { scan-assembler-times "min\t" 1 } }  */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/s390/ffs-1.c gcc-16-20250914/gcc/testsuite/gcc.target/s390/ffs-1.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/s390/ffs-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/s390/ffs-1.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,18 ----
+ /* Check that __builtin_ffs does not expand to libcall.  This is required by
+    Linux kernel code since libcalls are not present there.  */
+ /* { dg-do compile } */
+ /* { dg-options "-march=z10" } */
+ 
+ long
+ fool (long x)
+ {
+   return __builtin_ffsl (x);
+ }
+ 
+ int
+ foo (int x)
+ {
+   return __builtin_ffs (x);
+ }
+ 
+ /* { dg-final { scan-assembler-not "brasl" } } */
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/s390/vector/vec-extract-3.c gcc-16-20250914/gcc/testsuite/gcc.target/s390/vector/vec-extract-3.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/s390/vector/vec-extract-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gcc.target/s390/vector/vec-extract-3.c	Sun Sep 14 22:32:31 2025
***************
*** 0 ****
--- 1,141 ----
+ /* { dg-do compile { target lp64 } } */
+ /* { dg-options "-O2 -march=z13 -mzarch" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ typedef unsigned char uv16qi __attribute__ ((vector_size (16)));
+ typedef signed char v16qi __attribute__ ((vector_size (16)));
+ typedef unsigned short uv8hi __attribute__ ((vector_size (16)));
+ typedef signed short v8hi __attribute__ ((vector_size (16)));
+ typedef unsigned int uv4si __attribute__ ((vector_size (16)));
+ typedef signed int v4si __attribute__ ((vector_size (16)));
+ typedef unsigned long uv2di __attribute__ ((vector_size (16)));
+ typedef signed long v2di __attribute__ ((vector_size (16)));
+ typedef float v4sf __attribute__ ((vector_size (16)));
+ typedef double v2df __attribute__ ((vector_size (16)));
+ 
+ /*
+ ** extractnthuchar:
+ **	vlgvb	%r2,%v24,3\(%r2\)
+ **	br	%r14
+ */
+ unsigned char
+ extractnthuchar (uv16qi in, int n)
+ {
+   return in[n + 3];
+ }
+ 
+ /*
+ ** extractnthchar:
+ **	vlgvb	%r2,%v24,3\(%r2\)
+ **	lgbr	%r2,%r2
+ **	br	%r14
+ */
+ signed char
+ extractnthchar (v16qi in, int n)
+ {
+   return in[n + 3];
+ }
+ 
+ /*
+ ** extractnthushort:
+ **	vlgvh	%r2,%v24,3\(%r2\)
+ **	br	%r14
+ */
+ unsigned short
+ extractnthushort (uv8hi in, int n)
+ {
+   return in[n + 3];
+ }
+ 
+ /*
+ ** extractnthshort:
+ **	vlgvh	%r2,%v24,3\(%r2\)
+ **	lghr	%r2,%r2
+ **	br	%r14
+ */
+ short
+ extractnthshort (v8hi in, int n)
+ {
+   return in[n + 3];
+ }
+ 
+ /*
+ ** extractnthuint:
+ **	vlgvf	%r2,%v24,3\(%r2\)
+ **	br	%r14
+ */
+ unsigned int
+ extractnthuint (uv4si in, int n)
+ {
+   return in[n + 3];
+ }
+ 
+ /*
+ ** extractnthint:
+ **	vlgvf	%r2,%v24,3\(%r2\)
+ **	lgfr	%r2,%r2
+ **	br	%r14
+ */
+ int
+ extractnthint (v4si in, int n)
+ {
+   return in[n + 3];
+ }
+ 
+ /*
+ ** extractnthulong:
+ **	vlgvg	%r2,%v24,1\(%r2\)
+ **	br	%r14
+ */
+ unsigned long
+ extractnthulong (uv2di in, int n)
+ {
+   return in[n + 1];
+ }
+ 
+ /*
+ ** extractnthlong:
+ **	vlgvg	%r2,%v24,1\(%r2\)
+ **	br	%r14
+ */
+ long
+ extractnthlong (v2di in, int n)
+ {
+   return in[n + 1];
+ }
+ 
+ /*
+ ** extractnthfloat:
+ **	vlgvf	%r1,%v24,3\(%r2\)
+ **	vlvgf	%v0,%r1,0
+ **	br	%r14
+ */
+ float
+ extractnthfloat (v4sf in, int n)
+ {
+   return in[n + 3];
+ }
+ 
+ /*
+ ** extractnthdouble:
+ **	vlgvg	%r1,%v24,1\(%r2\)
+ **	ldgr	%f0,%r1
+ **	br	%r14
+ */
+ double
+ extractnthdouble (v2df in, int n)
+ {
+   return in[n + 1];
+ }
+ 
+ /*
+ ** extractnthuintm1displacement:
+ **	ahi	%r2,-1
+ **	vlgvf	%r2,%v24,0\(%r2\)
+ **	br	%r14
+ */
+ unsigned int
+ extractnthuintm1displacement (uv4si in, int n)
+ {
+   return in[n - 1];
+ }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-int16.c gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-int16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-int16.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-int16.c	Sun Sep 14 22:32:31 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fPIC" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-int32.c gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-int32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-int32.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-int32.c	Sun Sep 14 22:32:31 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fPIC" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-int64.c gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-int64.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-int64.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-int64.c	Sun Sep 14 22:32:31 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" }
  /* { dg-add-options tls } */
  /* { dg-require-effective-target lp64 } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fPIC" }
  /* { dg-add-options tls } */
  /* { dg-require-effective-target lp64 } */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-int8.c gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-int8.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-int8.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-int8.c	Sun Sep 14 22:32:31 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fPIC" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-uint16.c	Sun Sep 14 22:32:31 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fPIC" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-uint32.c	Sun Sep 14 22:32:31 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fPIC" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c
*** gcc-16-20250907/gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c	Sun Sep  7 22:34:09 2025
--- gcc-16-20250914/gcc/testsuite/gcc.target/sparc/tls-ld-uint8.c	Sun Sep 14 22:32:31 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fPIC" }
  /* { dg-add-options tls } */
  /* { dg-skip-if "native tls expected" { tls_emulated } } */
  
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/alloc_comp_assign_17.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/alloc_comp_assign_17.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/alloc_comp_assign_17.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/alloc_comp_assign_17.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,96 ----
+ ! { dg-do run }
+ ! PR fortran/121616
+ !
+ ! Test fix for intrinsic assignment to allocatable scalar polymorphic component
+ 
+ program p
+   call pr121616 ()
+   call test_ts  ()
+ end
+ 
+ ! Derived from original PR (contributed by Jean Vézina)
+ subroutine pr121616 ()
+   implicit none
+   integer :: i
+   type general
+      class(*), allocatable :: x
+   end type general
+   type(general) :: a(4), b(4)
+   ! Intrinsic assignment to a variable of unlimited polymorphic type
+   a(1)%x = 1
+   a(2)%x = 3.14
+   a(3)%x = .true.
+   a(4)%x = 'abc'
+   ! The workaround was to use a structure constructor
+   b(1) = general(1)
+   b(2) = general(3.14)
+   b(3) = general(.true.)
+   b(4) = general('abc') 
+   do i = 1, 4
+      if (.not. allocated (a(i)%x)) stop 10+i
+      if (.not. allocated (b(i)%x)) stop 20+i
+      call prt (a(i)%x, b(i)%x)
+   end do
+   do i = 1, 4
+      deallocate (a(i)%x, b(i)%x)
+   end do
+ contains
+   subroutine prt (x, y)
+     class(*), intent(in) :: x, y
+     select type (v=>x)
+     type is (integer)
+        print *,v
+     type is (real)
+        print *,v
+     type is (logical)
+        print *,v
+     type is (character(*))
+        print *,v
+     class default
+        error stop 99
+     end select
+     if (.not. same_type_as (x, y)) stop 30+i
+   end subroutine prt
+ end
+ 
+ ! Contributed by a friend (private communication)
+ subroutine test_ts ()
+   implicit none
+ 
+   type :: t_inner
+     integer :: i
+   end type
+ 
+   type :: t_outer
+     class(t_inner), allocatable :: inner
+   end type
+ 
+   class(t_inner), allocatable :: inner
+   type(t_outer),  allocatable :: outer(:)
+   integer :: i
+ 
+   allocate(t_inner :: inner)
+   inner% i = 0
+ 
+   !------------------------------------------------
+   ! Size of outer must be > 1 for the bug to appear
+   !------------------------------------------------
+   allocate(outer(2))
+ 
+   !------------------------------
+   ! Loop is necessary for the bug
+   !------------------------------
+   do i = 1, size(outer)
+     write(*,*) i
+     !----------------------------------------------------
+     ! Expect intrinsic assignment to polymorphic variable
+     !----------------------------------------------------
+     outer(i)% inner = inner
+     deallocate (outer(i)% inner)
+   end do
+ 
+   write(*,*) 'Loop DONE'
+   deallocate(outer)
+   deallocate(inner)
+   write(*,*) 'Dellocation DONE'
+ end
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_1.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_1.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_1.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,32 ----
+ ! { dg-do run }
+ ! { dg-options "-std=f2023" }
+ program conditional_simple
+   implicit none
+   integer :: i = 42
+   logical :: l = .true.
+   real(4) :: r1 = 1.e-4, r2 = 1.e-5
+   complex :: z = (3.0, 4.0)
+ 
+   i = (i > 0 ? 1 : -1)
+   if (i /= 1) stop 1
+ 
+   i = 0
+   i = (i > 0 ? 1 : i < 0 ? -1 : 0)
+   if (i /= 0) stop 2
+ 
+   i = 0
+   i = (i > 0 ? 1 : (i < 0 ? -1 : 0))
+   if (i /= 0) stop 3
+ 
+   i = 0
+   i = (l .eqv. .false. ? 1 : 0)
+   if (i /= 0) stop 4
+ 
+   i = 0
+   i = (r1 /= r2 ? 0 : 1)
+   if (i /= 0) stop 5
+ 
+   i = 0
+   z = (i /= 0 ? z : (-3.0, -4.0))
+   if (z /= (-3.0, -4.0)) stop 6
+ end program conditional_simple
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_2.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_2.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_2.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do run }
+ ! { dg-options "-std=f2023" }
+ program conditional_constant
+   implicit none
+   integer :: i = 42
+ 
+   i = (.true. ? 1 : -1)
+   if (i /= 1) stop 1
+ 
+   i = 0
+   i = (i > 0 ? 1 : .false. ? -1 : 0)
+   if (i /= 0) stop 2
+ end program conditional_constant
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_3.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_3.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_3.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f2023" }
+ program conditional_syntax
+   implicit none
+   integer :: i = 42
+ 
+   i = i > 0 ? 1 : -1 ! { dg-error "Unclassifiable statement at" }
+   i = (i > 0 ? 1 -1) ! { dg-error "Expected ':' in conditional expression" }
+ end program conditional_syntax
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_4.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_4.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_4.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f2023" }
+ program conditional_resolve
+   implicit none
+   integer :: i = 42
+   integer, parameter :: ucs4 = selected_char_kind('ISO_10646')
+   character(kind=1) :: k1 = "k1"
+   character(kind=ucs4) :: k4 = "k4"
+   integer, dimension(1) :: a_1d
+   integer, dimension(1, 1) :: a_2d
+   logical :: l1(2)
+   integer :: i1(2)
+ 
+   i = (l1 ? 1 : -1) ! { dg-error "Condition in conditional expression must be a scalar logical" }
+   i = (i ? 1 : -1) ! { dg-error "Condition in conditional expression must be a scalar logical" }
+   i = (i /= 0 ? 1 : "oh no") ! { dg-error "must have the same declared type" }
+   i = (i /= 0 ? k1 : k4) ! { dg-error "must have the same kind parameter" }
+   i = (i /= 0 ? a_1d : a_2d) ! { dg-error "must have the same rank" }
+   k1 = (i /= 0 ? k1 : k1) ! { dg-error "Sorry, only integer, logical, real and complex types are currently supported for conditional expressions" }
+   i1 = (i /= 0 ? i1 : i1 + 1) ! { dg-error "Sorry, array is currently unsupported for conditional expressions" }
+ end program conditional_resolve
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_5.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_5.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_5.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f2018" }
+ program conditional_std
+   implicit none
+   integer :: i = 42
+   i = (i > 0 ? 1 : -1) ! { dg-error "Fortran 2023: Conditional expression at" }
+ end program conditional_std
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_6.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_6.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_6.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_6.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do run }
+ ! { dg-options "-std=f2023" }
+ program conditional_arg
+   implicit none
+   integer :: a = 4
+   integer :: b = 5
+   call five((a < 5 ? a : b))
+   if (a /= 5) stop 1
+ contains
+   subroutine five(x)
+     integer, optional :: x
+     if (present(x)) then
+       x = 5
+     end if
+   end subroutine five
+ end program conditional_arg
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_7.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_7.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_7.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f2023" }
+ module m
+   contains
+     function f(n) result(str)
+       integer, value :: n
+       character(len=(n > 5 ? n : 5)) :: str
+       str = ""
+       str(1:5) = "abcde"
+     end
+ end
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_8.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_8.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_8.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_8.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do run }
+ ! { dg-options "-std=f2023" }
+ implicit none
+ integer :: aa(2)
+ aa = [1, 2]
+ 
+ print *, (aa(1) > 0 ? aa(2) : g())
+ contains
+ integer function g()
+   allocatable :: g
+   error stop "should not be called"
+   g = 3
+ end
+ end
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_9.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_9.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/conditional_9.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/conditional_9.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f2023" }
+ implicit none
+ integer :: i, j
+ do concurrent (i=(j > 1 ? 0 : 1) : 5) local(j) ! { dg-error "must not appear in LOCAL locality-spec at" }
+ end do
+ do concurrent (i=(.true. ? j : 1) : 5) local(j) ! { dg-error "must not appear in LOCAL locality-spec at" }
+ end do
+ do concurrent (i=(.false. ? 1 : j) : 5) local(j) ! { dg-error "must not appear in LOCAL locality-spec at" }
+ end do
+ end
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/gomp/pr107421.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/gomp/pr107421.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/gomp/pr107421.f90	Sun Sep  7 22:34:31 2025
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/gomp/pr107421.f90	Sun Sep 14 22:32:32 2025
***************
*** 1,4 ****
--- 1,8 ----
+ ! { dg-require-effective-target pie }
  ! { dg-additional-options "-fdump-ipa-whole-program" }
+ ! Add -fPIE or -mno-direct-extern-access to disable direct access to
+ ! external symbol from executable.
+ ! { dg-additional-options "-fPIE" { target { ! { i?86-*-* x86_64-*-* } } } }
  ! { dg-additional-options "-mno-direct-extern-access" { target { i?86-*-* x86_64-*-* } } }
  
  integer :: i
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/pdt_45.f03 gcc-16-20250914/gcc/testsuite/gfortran.dg/pdt_45.f03
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/pdt_45.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/pdt_45.f03	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,29 ----
+ ! { dg-do compile }
+ !
+ ! Contributed by Steve Kargl  <kargl@gcc.gnu.org>
+ !
+ module mod
+ 
+    type :: objects(k1,l1)
+       integer, kind :: k1 = selected_int_kind(4)
+       integer, len :: l1
+       integer(k1) :: p(l1+1)
+    end type
+ 
+    contains
+       subroutine foo(n)
+          integer n
+          type(objects(l1=n)) :: x
+          ! Any of these lines caused an ICE in compilation.
+          if (x%k1 /= selected_int_kind(4)) stop 1
+          if (x%l1 /= n) stop 2
+          if (size(x%p) /= x%l1+1) stop 3
+       end subroutine
+ 
+ end module
+ 
+ program p
+    use mod
+    type(objects(1,30)) :: x
+    call foo(3)
+ end program p
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/stat_3.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/stat_3.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/stat_3.f90	Sun Sep  7 22:34:46 2025
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/stat_3.f90	Sun Sep 14 22:32:32 2025
*************** subroutine sub2 ()
*** 44,46 ****
--- 44,59 ----
    call lstat (name, status=perr, values= pbuf)
    call fstat (unit, status=perr, values= pbuf)
  end
+ 
+ subroutine sub3 ()
+   implicit none
+   integer(1)          :: ierr1, unit1 = 10
+   integer(2)          :: buff2(13)
+   integer(4)          :: buff4(13)
+   integer(8)          :: buff8(13)
+   character(len=32)   :: name = "/etc/passwd"
+   ierr1 = stat (name,values=buff2)               ! { dg-error "with kind 2" }
+   call fstat (unit1, values=buff2)               ! { dg-error "with kind 2" }
+   call fstat (unit1, values=buff4, status=ierr1) ! { dg-error "at least four" }
+   call lstat (name,  values=buff8, status=ierr1) ! { dg-error "at least four" }
+ end
diff -Nrcpad gcc-16-20250907/gcc/testsuite/gfortran.dg/stat_4.f90 gcc-16-20250914/gcc/testsuite/gfortran.dg/stat_4.f90
*** gcc-16-20250907/gcc/testsuite/gfortran.dg/stat_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/gcc/testsuite/gfortran.dg/stat_4.f90	Sun Sep 14 22:32:32 2025
***************
*** 0 ****
--- 1,94 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-fdump-tree-original" }
+ ! PR fortran/82480 - make STAT/LSTAT/FSTAT generic
+ 
+ subroutine fstat_sub_wrapper (unit, values8, status, opt_status4, opt_status8)
+   implicit none
+   integer(1), intent(in)            :: unit
+   integer(8), intent(out)           :: values8(:)
+   integer(2), intent(out)           :: status
+   integer(4), intent(out), optional :: opt_status4
+   integer(8), intent(out), optional :: opt_status8
+   call fstat (unit, values8, status)
+   call fstat (unit, values8, opt_status4)
+   call fstat (unit, values8, opt_status8)
+ end
+ 
+ subroutine stat_sub_wrapper (name, values4, status, opt_status4, opt_status8)
+   implicit none
+   character(*), intent(in)            :: name
+   integer(4),   intent(out)           :: values4(:)
+   integer(2),   intent(out)           :: status
+   integer(4),   intent(out), optional :: opt_status4
+   integer(8),   intent(out), optional :: opt_status8
+   call stat  (name, values4, status)
+   call lstat (name, values4, status)
+   call stat  (name, values4, opt_status4)
+   call lstat (name, values4, opt_status4)
+   call stat  (name, values4, opt_status8)
+   call lstat (name, values4, opt_status8)
+ end
+ 
+ subroutine sub1 ()
+   implicit none
+   character(len=32)   :: name = "/etc/passwd"
+   integer(1)          :: unit1 = 10
+   integer(4)          :: unit4 = 10, buff4(13)
+   integer(8)          :: unit8 = 10, buff8(13)
+   integer             :: ierr
+   ierr = fstat (unit1, values=buff4)
+   ierr = fstat (unit1, values=buff8)
+   ierr = fstat (unit4, values=buff4)
+   ierr = fstat (unit4, values=buff8)
+   ierr = fstat (unit8, values=buff4)
+   ierr = fstat (unit8, values=buff8)
+   ierr = stat  (name,  values=buff4)
+   ierr = stat  (name,  values=buff8)
+   ierr = lstat (name,  values=buff4)
+   ierr = lstat (name,  values=buff8)
+ end
+ 
+ subroutine sub2 ()
+   implicit none
+   integer(2)          :: ierr2, unit2 = 10
+   integer(4)          :: ierr4, unit4 = 10, buff4(13)
+   integer(8)          :: ierr8, unit8 = 10, buff8(13)
+   character(len=32)   :: name = "/etc/passwd"
+   call fstat (unit2, values=buff4)
+   call fstat (unit2, values=buff8)
+   call fstat (unit4, values=buff4)
+   call fstat (unit4, values=buff8)
+   call fstat (unit8, values=buff4)
+   call fstat (unit8, values=buff8)
+   call stat  (name,  values=buff4)
+   call lstat (name,  values=buff4)
+   call stat  (name,  values=buff8)
+   call lstat (name,  values=buff8)
+   call fstat (unit4, values=buff4, status=ierr2)
+   call fstat (unit4, values=buff4, status=ierr4)
+   call fstat (unit4, values=buff4, status=ierr8)
+   call fstat (unit4, values=buff8, status=ierr2)
+   call fstat (unit4, values=buff8, status=ierr4)
+   call fstat (unit4, values=buff8, status=ierr8)
+   call stat  (name,  values=buff4, status=ierr4)
+   call lstat (name,  values=buff4, status=ierr4)
+   call stat  (name,  values=buff4, status=ierr8)
+   call lstat (name,  values=buff4, status=ierr8)
+   call stat  (name,  values=buff8, status=ierr4)
+   call lstat (name,  values=buff8, status=ierr4)
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "_gfortran_fstat_i4_sub" 6 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_lstat_i4_sub" 6 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_stat_i4_sub" 6 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_fstat_i8_sub" 9 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_lstat_i8_sub" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_stat_i8_sub" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_fstat_i4 " 3 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_fstat_i8 " 3 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_lstat_i4 " 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_lstat_i8 " 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_stat_i4 " 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_stat_i8 " 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "opt_status4" 11 "original" } }
+ ! { dg-final { scan-tree-dump-times "opt_status8" 11 "original" } }
diff -Nrcpad gcc-16-20250907/gcc/testsuite/lib/lto.exp gcc-16-20250914/gcc/testsuite/lib/lto.exp
*** gcc-16-20250907/gcc/testsuite/lib/lto.exp	Sun Sep  7 22:34:52 2025
--- gcc-16-20250914/gcc/testsuite/lib/lto.exp	Sun Sep 14 22:32:33 2025
*************** proc lto-execute-1 { src1 sid } {
*** 659,667 ****
      set i 1
      set done 0
      while { !$done } {
! 	set names [glob -nocomplain -types f -- "${dir}/${base}_${i}.*"]
  	if { [llength ${names}] > 1 } {
! 	    warning "lto-execute: more than one file matched ${dir}/${base}_${i}.*"
  	}
  	if { [llength ${names}] == 1 } {
  	    lappend src_list [lindex ${names} 0]
--- 659,667 ----
      set i 1
      set done 0
      while { !$done } {
! 	set names [glob -nocomplain -types f -- "${dir}/${base}_${i}.{c,C,ii,\[fF\]{,90,95,03,08},d,m,mm}"]
  	if { [llength ${names}] > 1 } {
! 	    warning "lto-execute: more than one file matched ${dir}/${base}_${i}.{c,C,ii,\[fF\]{,90,95,03,08},d,m,mm}"
  	}
  	if { [llength ${names}] == 1 } {
  	    lappend src_list [lindex ${names} 0]
diff -Nrcpad gcc-16-20250907/gcc/testsuite/lib/target-supports.exp gcc-16-20250914/gcc/testsuite/lib/target-supports.exp
*** gcc-16-20250907/gcc/testsuite/lib/target-supports.exp	Sun Sep  7 22:34:52 2025
--- gcc-16-20250914/gcc/testsuite/lib/target-supports.exp	Sun Sep 14 22:32:33 2025
*************** proc check_effective_target_sync_int_128
*** 10053,10059 ****
  # This requires support for both compare-and-swap and true atomic loads.
  
  proc check_effective_target_sync_int_128_runtime { } {
!     return 0
  }
  
  # Return 1 if the target supports atomic operations on "long long".
--- 10053,10065 ----
  # This requires support for both compare-and-swap and true atomic loads.
  
  proc check_effective_target_sync_int_128_runtime { } {
!     if { [istarget loongarch64-*-*]
! 	 && [check_effective_target_loongarch_sx_hw]
! 	 && [check_effective_target_loongarch_scq_hw] } {
! 	return 1
!     } else {
! 	return 0
!     }
  }
  
  # Return 1 if the target supports atomic operations on "long long".
*************** proc check_effective_target_loongarch_as
*** 14314,14319 ****
--- 14320,14337 ----
      } "-mlasx"]
  }
  
+ proc check_effective_target_loongarch_scq_hw { } {
+     return [check_runtime loongarch_scq_hw {
+ 	#include <larchintrin.h>
+ 	int main (void)
+ 	{
+ 	  if (__cpucfg (2) & (1 << 30))
+ 	    return 0;
+ 	  __builtin_trap ();
+ 	}
+     } ""]
+ }
+ 
  # Check whether LoongArch binutils supports call36 relocation.
  proc check_effective_target_loongarch_call36_support { } {
    return [check_no_compiler_messages loongarch_call36_support object {
diff -Nrcpad gcc-16-20250907/gcc/tree-ssa-loop-ivopts.cc gcc-16-20250914/gcc/tree-ssa-loop-ivopts.cc
*** gcc-16-20250907/gcc/tree-ssa-loop-ivopts.cc	Sun Sep  7 22:34:53 2025
--- gcc-16-20250914/gcc/tree-ssa-loop-ivopts.cc	Sun Sep 14 22:32:34 2025
*************** add_candidate_1 (struct ivopts_data *dat
*** 3200,3205 ****
--- 3200,3211 ----
  static bool
  allow_ip_end_pos_p (class loop *loop)
  {
+   /* Do not allow IP_END when creating the IV would need to split the
+      latch edge as that makes all IP_NORMAL invalid.  */
+   auto pos = gsi_last_bb (ip_end_pos (loop));
+   if (!gsi_end_p (pos) && stmt_ends_bb_p (*pos))
+     return false;
+ 
    if (!ip_normal_pos (loop))
      return true;
  
*************** create_new_iv (struct ivopts_data *data,
*** 7222,7233 ****
      case IP_END:
        incr_pos = gsi_last_bb (ip_end_pos (data->current_loop));
        after = true;
!       if (!gsi_end_p (incr_pos) && stmt_ends_bb_p (gsi_stmt (incr_pos)))
! 	{
! 	  edge e = find_edge (gsi_bb (incr_pos), data->current_loop->header);
! 	  incr_pos = gsi_after_labels (split_edge (e));
! 	  after = false;
! 	}
        break;
  
      case IP_AFTER_USE:
--- 7228,7234 ----
      case IP_END:
        incr_pos = gsi_last_bb (ip_end_pos (data->current_loop));
        after = true;
!       gcc_assert (gsi_end_p (incr_pos) || !stmt_ends_bb_p (*incr_pos));
        break;
  
      case IP_AFTER_USE:
diff -Nrcpad gcc-16-20250907/gcc/tree-ssa-propagate.cc gcc-16-20250914/gcc/tree-ssa-propagate.cc
*** gcc-16-20250907/gcc/tree-ssa-propagate.cc	Sun Sep  7 22:34:53 2025
--- gcc-16-20250914/gcc/tree-ssa-propagate.cc	Sun Sep 14 22:32:34 2025
*************** substitute_and_fold_engine::substitute_a
*** 1019,1024 ****
--- 1019,1026 ----
    while (!walker.stmts_to_fixup.is_empty ())
      {
        gimple *stmt = walker.stmts_to_fixup.pop ();
+       if (!gimple_bb (stmt))
+ 	continue;
        if (dump_file && dump_flags & TDF_DETAILS)
  	{
  	  fprintf (dump_file, "Fixing up noreturn call ");
diff -Nrcpad gcc-16-20250907/gcc/tree-ssa-strlen.cc gcc-16-20250914/gcc/tree-ssa-strlen.cc
*** gcc-16-20250907/gcc/tree-ssa-strlen.cc	Sun Sep  7 22:34:53 2025
--- gcc-16-20250914/gcc/tree-ssa-strlen.cc	Sun Sep 14 22:32:34 2025
*************** public:
*** 249,255 ****
  
    bool check_and_optimize_stmt (bool *cleanup_eh);
    bool check_and_optimize_call (bool *zero_write);
!   bool handle_assign (tree lhs, bool *zero_write);
    bool handle_store (bool *zero_write);
    void handle_pointer_plus ();
    void handle_builtin_strlen ();
--- 249,255 ----
  
    bool check_and_optimize_stmt (bool *cleanup_eh);
    bool check_and_optimize_call (bool *zero_write);
!   bool handle_assign (tree lhs, tree rhs, bool *zero_write);
    bool handle_store (bool *zero_write);
    void handle_pointer_plus ();
    void handle_builtin_strlen ();
*************** strlen_pass::handle_alloc_call (built_in
*** 3785,3790 ****
--- 3785,3854 ----
    si->dont_invalidate = true;
  }
  
+ /* Returns true of the last statement of the bb is a conditional
+    that checks ptr for null-ness. */
+ static bool
+ last_stmt_ptr_check (tree ptr, basic_block bb)
+ {
+   gimple_stmt_iterator gsi = gsi_last_nondebug_bb (bb);
+   gcond *cstmt = dyn_cast <gcond *>(gsi_stmt (gsi));
+   if (!cstmt)
+     return false;
+   if (gimple_cond_code (cstmt) != EQ_EXPR && gimple_cond_code (cstmt) != NE_EXPR)
+     return false;
+   if (!integer_zerop (gimple_cond_rhs (cstmt)))
+     return false;
+   if (!operand_equal_p (gimple_cond_lhs (cstmt), ptr))
+     return false;
+   return true;
+ }
+ 
+ /* Check if doing a malloc+memset to calloc is a good idea. PTR is the
+    return value of the malloc/where the memset happens. MALLOC_BB is
+    the basic block of the malloc. MEMSET_BB is basic block of the memset.  */
+ 
+ static bool
+ allow_memset_malloc_to_calloc (tree ptr, basic_block malloc_bb,
+ 			       basic_block memset_bb)
+ {
+   /* If the malloc and memset are in the same block, then always
+      allow the transformation. Don't need post dominator calculation. */
+   if (malloc_bb == memset_bb)
+     return true;
+ 
+   if (!dom_info_available_p (cfun, CDI_POST_DOMINATORS))
+     calculate_dominance_info (CDI_POST_DOMINATORS);
+ 
+   /* If the memset is always executed after the malloc, then allow
+       to optimize to calloc. */
+   if (dominated_by_p (CDI_POST_DOMINATORS, malloc_bb, memset_bb))
+     return true;
+ 
+   /* If the malloc bb ends in a ptr check, then we need to check if
+      either successor is post dominated by the memset bb.  */
+   if (last_stmt_ptr_check (ptr, malloc_bb))
+     {
+       if (dominated_by_p (CDI_POST_DOMINATORS, EDGE_SUCC (malloc_bb, 0)->dest, memset_bb))
+ 	return true;
+       if (dominated_by_p (CDI_POST_DOMINATORS, EDGE_SUCC (malloc_bb, 1)->dest, memset_bb))
+ 	return true;
+     }
+ 
+   /* At this point we want to only handle:
+      malloc();
+      ...
+      if (ptr)  goto memset_bb; */
+   if (!single_pred_p (memset_bb))
+     return false;
+ 
+   /* If the predecessor of the memset bb is not post dominated by malloc, then the memset is
+      conditionalized by something more than just the checking if ptr is non-null.  */
+   if (!dominated_by_p (CDI_POST_DOMINATORS, malloc_bb, single_pred_edge (memset_bb)->src))
+     return false;
+ 
+   return last_stmt_ptr_check (ptr, single_pred_edge (memset_bb)->src);
+ }
+ 
  /* Handle a call to memset.
     After a call to calloc, memset(,0,) is unnecessary.
     memset(malloc(n),0,n) is calloc(n,1).
*************** strlen_pass::handle_builtin_memset (bool
*** 3870,3875 ****
--- 3934,3941 ----
    enum built_in_function code1 = DECL_FUNCTION_CODE (callee1);
    if (code1 == BUILT_IN_CALLOC)
      /* Not touching alloc_stmt */ ;
+   else if (!allow_memset_malloc_to_calloc (ptr, gimple_bb (si1->stmt), gimple_bb (memset_stmt)))
+      return false;
    else if (code1 == BUILT_IN_MALLOC
  	   && operand_equal_p (memset_size, alloc_size, 0))
      {
*************** strlen_pass::check_and_optimize_call (bo
*** 5399,5405 ****
  	}
  
        if (tree lhs = gimple_call_lhs (stmt))
! 	handle_assign (lhs, zero_write);
  
        /* Proceed to handle user-defined formatting functions.  */
      }
--- 5465,5471 ----
  	}
  
        if (tree lhs = gimple_call_lhs (stmt))
! 	handle_assign (lhs, NULL_TREE, zero_write);
  
        /* Proceed to handle user-defined formatting functions.  */
      }
*************** strlen_pass::handle_integral_assign (boo
*** 5614,5628 ****
  }
  
  /* Handle assignment statement at *GSI to LHS.  Set *ZERO_WRITE if
!    the assignment stores all zero bytes.  */
  
  bool
! strlen_pass::handle_assign (tree lhs, bool *zero_write)
  {
    tree type = TREE_TYPE (lhs);
    if (TREE_CODE (type) == ARRAY_TYPE)
      type = TREE_TYPE (type);
  
    bool is_char_store = is_char_type (type);
    if (!is_char_store && TREE_CODE (lhs) == MEM_REF)
      {
--- 5680,5740 ----
  }
  
  /* Handle assignment statement at *GSI to LHS.  Set *ZERO_WRITE if
!    the assignment stores all zero bytes. RHS is the rhs of the
!    statement if not a call.  */
  
  bool
! strlen_pass::handle_assign (tree lhs, tree rhs, bool *zero_write)
  {
    tree type = TREE_TYPE (lhs);
    if (TREE_CODE (type) == ARRAY_TYPE)
      type = TREE_TYPE (type);
  
+   if (rhs && TREE_CODE (rhs) == CONSTRUCTOR
+       && TREE_CODE (lhs) == MEM_REF
+       && TREE_CODE (TREE_OPERAND (lhs, 0)) == SSA_NAME
+       && integer_zerop (TREE_OPERAND (lhs, 1)))
+     {
+       /* Set to the non-constant offset added to PTR.  */
+       wide_int offrng[2];
+       gcc_assert (CONSTRUCTOR_NELTS (rhs) == 0);
+       tree ptr = TREE_OPERAND (lhs, 0);
+       tree len = TYPE_SIZE_UNIT (TREE_TYPE (lhs));
+       int idx1 = get_stridx (ptr, gsi_stmt (m_gsi), offrng, ptr_qry.rvals);
+       if (idx1 > 0)
+ 	{
+ 	  strinfo *si1 = get_strinfo (idx1);
+ 	  if (si1 && si1->stmt
+ 	      && si1->alloc && is_gimple_call (si1->alloc)
+ 	      && valid_builtin_call (si1->stmt)
+ 	      && offrng[0] == 0 && offrng[1] == 0)
+ 	    {
+ 	      gimple *malloc_stmt = si1->stmt;
+ 	      basic_block malloc_bb = gimple_bb (malloc_stmt);
+ 	      if ((DECL_FUNCTION_CODE (gimple_call_fndecl (malloc_stmt))
+ 		   == BUILT_IN_MALLOC)
+ 		  && operand_equal_p (len, gimple_call_arg (malloc_stmt, 0), 0)
+ 		  && allow_memset_malloc_to_calloc (ptr, malloc_bb,
+ 						    gsi_bb (m_gsi)))
+ 		{
+ 		  tree alloc_size = gimple_call_arg (malloc_stmt, 0);
+ 		  gimple_stmt_iterator gsi1 = gsi_for_stmt (malloc_stmt);
+ 		  tree calloc_decl = builtin_decl_implicit (BUILT_IN_CALLOC);
+ 		  update_gimple_call (&gsi1, calloc_decl, 2, alloc_size,
+ 				      build_one_cst (size_type_node));
+ 		  si1->nonzero_chars = build_int_cst (size_type_node, 0);
+ 		  si1->full_string_p = true;
+ 		  si1->stmt = gsi_stmt (gsi1);
+ 		  gimple *stmt = gsi_stmt (m_gsi);
+ 		  unlink_stmt_vdef (stmt);
+ 		  gsi_remove (&m_gsi, true);
+ 		  release_defs (stmt);
+ 		  return false;
+ 		}
+ 	    }
+ 	}
+     }
+ 
    bool is_char_store = is_char_type (type);
    if (!is_char_store && TREE_CODE (lhs) == MEM_REF)
      {
*************** strlen_pass::check_and_optimize_stmt (bo
*** 5698,5704 ****
  	/* Handle assignment to a character.  */
  	handle_integral_assign (cleanup_eh);
        else if (TREE_CODE (lhs) != SSA_NAME && !TREE_SIDE_EFFECTS (lhs))
! 	if (!handle_assign (lhs, &zero_write))
  	  return false;
      }
    else if (gcond *cond = dyn_cast<gcond *> (stmt))
--- 5810,5816 ----
  	/* Handle assignment to a character.  */
  	handle_integral_assign (cleanup_eh);
        else if (TREE_CODE (lhs) != SSA_NAME && !TREE_SIDE_EFFECTS (lhs))
! 	if (!handle_assign (lhs, gimple_assign_rhs1 (stmt), &zero_write))
  	  return false;
      }
    else if (gcond *cond = dyn_cast<gcond *> (stmt))
*************** printf_strlen_execute (function *fun, bo
*** 5942,5947 ****
--- 6054,6060 ----
    disable_ranger (fun);
    scev_finalize ();
    loop_optimizer_finalize ();
+   free_dominance_info (CDI_POST_DOMINATORS);
  
    return walker.m_cleanup_cfg ? TODO_cleanup_cfg : 0;
  }
diff -Nrcpad gcc-16-20250907/gcc/tree-vect-loop.cc gcc-16-20250914/gcc/tree-vect-loop.cc
*** gcc-16-20250907/gcc/tree-vect-loop.cc	Sun Sep  7 22:34:53 2025
--- gcc-16-20250914/gcc/tree-vect-loop.cc	Sun Sep 14 22:32:34 2025
*************** vect_analyze_scalar_cycles_1 (loop_vec_i
*** 460,467 ****
  	}
        else if (reduc_stmt_info)
  	{
- 	  STMT_VINFO_REDUC_DEF (stmt_vinfo) = reduc_stmt_info;
- 	  STMT_VINFO_REDUC_DEF (reduc_stmt_info) = stmt_vinfo;
  	  if (loop != LOOP_VINFO_LOOP (loop_vinfo))
  	    {
  	      if (dump_enabled_p ())
--- 460,465 ----
*************** vect_analyze_scalar_cycles_1 (loop_vec_i
*** 472,477 ****
--- 470,477 ----
  	    }
  	  else
  	    {
+ 	      STMT_VINFO_REDUC_DEF (stmt_vinfo) = reduc_stmt_info;
+ 	      STMT_VINFO_REDUC_DEF (reduc_stmt_info) = stmt_vinfo;
  	      if (dump_enabled_p ())
  		dump_printf_loc (MSG_NOTE, vect_location,
  				 "Detected reduction.\n");
*************** vect_analyze_loop_1 (class loop *loop, v
*** 2932,2942 ****
  	      {
  		delete loop_vinfo;
  		loop_vinfo = unroll_vinfo;
- 		LOOP_VINFO_USER_UNROLL (loop_vinfo) = user_unroll > 1;
  	      }
  	    else
  	      delete unroll_vinfo;
  	  }
      }
  
    /* Remember the autodetected vector mode.  */
--- 2932,2944 ----
  	      {
  		delete loop_vinfo;
  		loop_vinfo = unroll_vinfo;
  	      }
  	    else
  	      delete unroll_vinfo;
  	  }
+ 
+ 	/* Record that we have honored a user unroll factor.  */
+ 	LOOP_VINFO_USER_UNROLL (loop_vinfo) = user_unroll > 1;
      }
  
    /* Remember the autodetected vector mode.  */
*************** vectorizable_live_operation_1 (loop_vec_
*** 10029,10038 ****
      {
        /* Emit:
  
! 	 SCALAR_RES = VEC_EXTRACT <VEC_LHS, LEN + BIAS - 1>
  
! 	 where VEC_LHS is the vectorized live-out result and MASK is
! 	 the loop mask for the final iteration.  */
        gcc_assert (SLP_TREE_LANES (slp_node) == 1);
        gimple_seq tem = NULL;
        gimple_stmt_iterator gsi = gsi_last (tem);
--- 10031,10042 ----
      {
        /* Emit:
  
! 	 SCALAR_RES = VEC_EXTRACT <VEC_LHS, LEN - (BIAS + 1)>
  
! 	 where VEC_LHS is the vectorized live-out result, LEN is the length of
! 	 the vector, BIAS is the load-store bias.  The bias should not be used
! 	 at all since we are not using load/store operations, but LEN will be
! 	 REALLEN + BIAS, so subtract it to get to the correct position.  */
        gcc_assert (SLP_TREE_LANES (slp_node) == 1);
        gimple_seq tem = NULL;
        gimple_stmt_iterator gsi = gsi_last (tem);
*************** vectorizable_live_operation_1 (loop_vec_
*** 10041,10058 ****
  				    1, vectype, 0, 1);
        gimple_seq_add_seq (&stmts, tem);
  
!       /* BIAS - 1.  */
        signed char biasval = LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS (loop_vinfo);
!       tree bias_minus_one
! 	= int_const_binop (MINUS_EXPR,
  			   build_int_cst (TREE_TYPE (len), biasval),
  			   build_one_cst (TREE_TYPE (len)));
  
!       /* LAST_INDEX = LEN + (BIAS - 1).  */
!       tree last_index = gimple_build (&stmts, PLUS_EXPR, TREE_TYPE (len),
! 				     len, bias_minus_one);
  
!       /* SCALAR_RES = VEC_EXTRACT <VEC_LHS, LEN + BIAS - 1>.  */
        tree scalar_res
  	= gimple_build (&stmts, CFN_VEC_EXTRACT, TREE_TYPE (vectype),
  			vec_lhs_phi, last_index);
--- 10045,10062 ----
  				    1, vectype, 0, 1);
        gimple_seq_add_seq (&stmts, tem);
  
!       /* BIAS + 1.  */
        signed char biasval = LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS (loop_vinfo);
!       tree bias_plus_one
! 	= int_const_binop (PLUS_EXPR,
  			   build_int_cst (TREE_TYPE (len), biasval),
  			   build_one_cst (TREE_TYPE (len)));
  
!       /* LAST_INDEX = LEN - (BIAS + 1).  */
!       tree last_index = gimple_build (&stmts, MINUS_EXPR, TREE_TYPE (len),
! 				     len, bias_plus_one);
  
!       /* SCALAR_RES = VEC_EXTRACT <VEC_LHS, LEN - (BIAS + 1)>.  */
        tree scalar_res
  	= gimple_build (&stmts, CFN_VEC_EXTRACT, TREE_TYPE (vectype),
  			vec_lhs_phi, last_index);
diff -Nrcpad gcc-16-20250907/gcc/tree-vect-patterns.cc gcc-16-20250914/gcc/tree-vect-patterns.cc
*** gcc-16-20250907/gcc/tree-vect-patterns.cc	Sun Sep  7 22:34:53 2025
--- gcc-16-20250914/gcc/tree-vect-patterns.cc	Sun Sep 14 22:32:34 2025
*************** extern bool gimple_unsigned_integer_sat_
*** 4538,4543 ****
--- 4538,4545 ----
  extern bool gimple_unsigned_integer_sat_sub (tree, tree*, tree (*)(tree));
  extern bool gimple_unsigned_integer_sat_trunc (tree, tree*, tree (*)(tree));
  
+ extern bool gimple_unsigned_integer_narrow_clip (tree, tree*, tree (*)(tree));
+ 
  extern bool gimple_signed_integer_sat_add (tree, tree*, tree (*)(tree));
  extern bool gimple_signed_integer_sat_sub (tree, tree*, tree (*)(tree));
  extern bool gimple_signed_integer_sat_trunc (tree, tree*, tree (*)(tree));
*************** vect_recog_sat_trunc_pattern (vec_info *
*** 4772,4777 ****
--- 4774,4809 ----
    tree lhs = gimple_assign_lhs (last_stmt);
    tree otype = TREE_TYPE (lhs);
  
+   if ((gimple_unsigned_integer_narrow_clip (lhs, ops, NULL))
+        && type_has_mode_precision_p (otype))
+     {
+       tree itype = TREE_TYPE (ops[0]);
+       tree v_itype = get_vectype_for_scalar_type (vinfo, itype);
+       tree v_otype = get_vectype_for_scalar_type (vinfo, otype);
+       internal_fn fn = IFN_SAT_TRUNC;
+ 
+       if (v_itype != NULL_TREE && v_otype != NULL_TREE
+ 	&& direct_internal_fn_supported_p (fn, tree_pair (v_otype, v_itype),
+ 					   OPTIMIZE_FOR_BOTH))
+ 	{
+ 	  tree temp = vect_recog_temp_ssa_var (itype, NULL);
+ 	  gimple * max_stmt = gimple_build_assign (temp, build2 (MAX_EXPR, itype, build_zero_cst(itype), ops[0]));
+ 	  append_pattern_def_seq (vinfo, stmt_vinfo, max_stmt, v_itype);
+ 
+ 	  gcall *call = gimple_build_call_internal (fn, 1, temp);
+ 	  tree out_ssa = vect_recog_temp_ssa_var (otype, NULL);
+ 
+ 	  gimple_call_set_lhs (call, out_ssa);
+ 	  gimple_call_set_nothrow (call, /* nothrow_p */ false);
+ 	  gimple_set_location (call, gimple_location (last_stmt));
+ 
+ 	  *type_out = v_otype;
+ 
+ 	  return call;
+ 	}
+ 
+     }
+ 
    if ((gimple_unsigned_integer_sat_trunc (lhs, ops, NULL)
         || gimple_signed_integer_sat_trunc (lhs, ops, NULL))
        && type_has_mode_precision_p (otype))
diff -Nrcpad gcc-16-20250907/gcc/tree-vect-slp.cc gcc-16-20250914/gcc/tree-vect-slp.cc
*** gcc-16-20250907/gcc/tree-vect-slp.cc	Sun Sep  7 22:34:53 2025
--- gcc-16-20250914/gcc/tree-vect-slp.cc	Sun Sep 14 22:32:34 2025
*************** static bool vect_transform_slp_perm_load
*** 64,71 ****
  static int vectorizable_slp_permutation_1 (vec_info *, gimple_stmt_iterator *,
  					   slp_tree, lane_permutation_t &,
  					   vec<slp_tree> &, bool);
- static bool vectorizable_slp_permutation (vec_info *, gimple_stmt_iterator *,
- 					  slp_tree, stmt_vector_for_cost *);
  static void vect_print_slp_tree (dump_flags_t, dump_location_t, slp_tree);
  static bool vect_slp_can_convert_to_external (const vec<stmt_vec_info> &);
  
--- 64,69 ----
*************** out:
*** 2832,2838 ****
  
        /* See which SLP operand a reduction chain continues on.  We want
  	 to chain even PHIs but not backedges.  */
!       if (VECTORIZABLE_CYCLE_DEF (oprnd_info->first_dt)
  	  || STMT_VINFO_REDUC_IDX (oprnd_info->def_stmts[0]) != -1)
  	{
  	  if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_nested_cycle)
--- 2830,2836 ----
  
        /* See which SLP operand a reduction chain continues on.  We want
  	 to chain even PHIs but not backedges.  */
!       if (STMT_VINFO_REDUC_DEF (oprnd_info->def_stmts[0])
  	  || STMT_VINFO_REDUC_IDX (oprnd_info->def_stmts[0]) != -1)
  	{
  	  if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_nested_cycle)
*************** vect_slp_analyze_node_operations_1 (vec_
*** 8072,8077 ****
--- 8070,8076 ----
  					       false, cost_vec))
  	    return false;
  	}
+       SLP_TREE_TYPE (node) = permute_info_type;
        return true;
      }
  
*************** vectorizable_slp_permutation_1 (vec_info
*** 11359,11365 ****
       [ { 0, 2 }, { 0, 3 } ]
     Where currently only a subset is supported by code generating below.  */
  
! static bool
  vectorizable_slp_permutation (vec_info *vinfo, gimple_stmt_iterator *gsi,
  			      slp_tree node, stmt_vector_for_cost *cost_vec)
  {
--- 11358,11364 ----
       [ { 0, 2 }, { 0, 3 } ]
     Where currently only a subset is supported by code generating below.  */
  
! bool
  vectorizable_slp_permutation (vec_info *vinfo, gimple_stmt_iterator *gsi,
  			      slp_tree node, stmt_vector_for_cost *cost_vec)
  {
*************** vect_schedule_slp_node (vec_info *vinfo,
*** 11596,11632 ****
  	}
      }
  
!   /* Handle purely internal nodes.  */
!   if (SLP_TREE_PERMUTE_P (node))
!     {
!       if (dump_enabled_p ())
! 	dump_printf_loc (MSG_NOTE, vect_location,
! 			 "------>vectorizing SLP permutation node\n");
!       /* ???  the transform kind was stored to STMT_VINFO_TYPE which might
! 	 be shared with different SLP nodes (but usually it's the same
! 	 operation apart from the case the stmt is only there for denoting
! 	 the actual scalar lane defs ...).  So do not call vect_transform_stmt
! 	 but open-code it here (partly).  */
!       bool done = vectorizable_slp_permutation (vinfo, &si, node, NULL);
!       gcc_assert (done);
!       stmt_vec_info slp_stmt_info;
!       unsigned int i;
!       FOR_EACH_VEC_ELT (SLP_TREE_SCALAR_STMTS (node), i, slp_stmt_info)
! 	if (slp_stmt_info && STMT_VINFO_LIVE_P (slp_stmt_info))
! 	  {
! 	    done = vectorizable_live_operation (vinfo, slp_stmt_info, node,
! 						instance, i, true, NULL);
! 	    gcc_assert (done);
! 	  }
!     }
!   else
      {
!       if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location,
  			 "------>vectorizing SLP node starting from: %G",
  			 stmt_info->stmt);
!       vect_transform_stmt (vinfo, stmt_info, &si, node, instance);
      }
  }
  
  /* Replace scalar calls from SLP node NODE with setting of their lhs to zero.
--- 11595,11614 ----
  	}
      }
  
!   if (dump_enabled_p ())
      {
!       if (stmt_info)
  	dump_printf_loc (MSG_NOTE, vect_location,
  			 "------>vectorizing SLP node starting from: %G",
  			 stmt_info->stmt);
!       else
! 	{
! 	  dump_printf_loc (MSG_NOTE, vect_location,
! 			   "------>vectorizing SLP node:\n");
! 	  vect_print_slp_tree (MSG_NOTE, vect_location, node);
! 	}
      }
+   vect_transform_stmt (vinfo, stmt_info, &si, node, instance);
  }
  
  /* Replace scalar calls from SLP node NODE with setting of their lhs to zero.
diff -Nrcpad gcc-16-20250907/gcc/tree-vect-stmts.cc gcc-16-20250914/gcc/tree-vect-stmts.cc
*** gcc-16-20250907/gcc/tree-vect-stmts.cc	Sun Sep  7 22:34:53 2025
--- gcc-16-20250914/gcc/tree-vect-stmts.cc	Sun Sep 14 22:32:34 2025
*************** get_load_store_type (vec_info  *vinfo, s
*** 2026,2031 ****
--- 2026,2032 ----
       without permutation.  */
    if (! SLP_TREE_LOAD_PERMUTATION (slp_node).exists ())
      first_dr_info = STMT_VINFO_DR_INFO (SLP_TREE_SCALAR_STMTS (slp_node)[0]);
+ 
    if (STMT_VINFO_STRIDED_P (first_stmt_info))
      /* Try to use consecutive accesses of as many elements as possible,
         separated by the stride, until we have a complete vector.
*************** get_load_store_type (vec_info  *vinfo, s
*** 2089,2103 ****
  		(vinfo, stmt_info, vectype, vls_type, 1,
  		 &neg_ldst_offset);
  	  else
! 	    {
! 	      /* Try to use consecutive accesses of DR_GROUP_SIZE elements,
! 		 separated by the stride, until we have a complete vector.
! 		 Fall back to scalar accesses if that isn't possible.  */
! 	      if (multiple_p (nunits, group_size))
! 		*memory_access_type = VMAT_STRIDED_SLP;
! 	      else
! 		*memory_access_type = VMAT_ELEMENTWISE;
! 	    }
  	}
        else if (cmp == 0 && loop_vinfo)
  	{
--- 2090,2099 ----
  		(vinfo, stmt_info, vectype, vls_type, 1,
  		 &neg_ldst_offset);
  	  else
! 	    /* We can fall back to VMAT_STRIDED_SLP since that does
! 	       not care whether the stride between the group instances
! 	       is positive or negative.  */
! 	    *memory_access_type = VMAT_STRIDED_SLP;
  	}
        else if (cmp == 0 && loop_vinfo)
  	{
*************** vectorizable_store (vec_info *vinfo,
*** 7881,7887 ****
    if (!STMT_VINFO_DATA_REF (stmt_info))
      return false;
  
!   vect_load_store_data _ls_data;
    vect_load_store_data &ls = slp_node->get_data (_ls_data);
    if (cost_vec
        && !get_load_store_type (vinfo, stmt_info, vectype, slp_node, mask_node,
--- 7877,7883 ----
    if (!STMT_VINFO_DATA_REF (stmt_info))
      return false;
  
!   vect_load_store_data _ls_data{};
    vect_load_store_data &ls = slp_node->get_data (_ls_data);
    if (cost_vec
        && !get_load_store_type (vinfo, stmt_info, vectype, slp_node, mask_node,
*************** vectorizable_load (vec_info *vinfo,
*** 9451,9457 ****
    else
      group_size = 1;
  
!   vect_load_store_data _ls_data;
    vect_load_store_data &ls = slp_node->get_data (_ls_data);
    if (cost_vec
        && !get_load_store_type (vinfo, stmt_info, vectype, slp_node, mask_node,
--- 9447,9453 ----
    else
      group_size = 1;
  
!   vect_load_store_data _ls_data{};
    vect_load_store_data &ls = slp_node->get_data (_ls_data);
    if (cost_vec
        && !get_load_store_type (vinfo, stmt_info, vectype, slp_node, mask_node,
*************** vectorizable_load (vec_info *vinfo,
*** 9478,9483 ****
--- 9474,9480 ----
  
    /* ???  The following checks should really be part of
       get_load_store_type.  */
+   unsigned n_perms = -1U;
    if (SLP_TREE_LOAD_PERMUTATION (slp_node).exists ()
        && !((memory_access_type == VMAT_ELEMENTWISE
  	    || mat_gather_scatter_p (memory_access_type))
*************** vectorizable_load (vec_info *vinfo,
*** 9485,9491 ****
      {
        slp_perm = true;
  
!       if (!loop_vinfo)
  	{
  	  /* In BB vectorization we may not actually use a loaded vector
  	     accessing elements in excess of DR_GROUP_SIZE.  */
--- 9482,9488 ----
      {
        slp_perm = true;
  
!       if (!loop_vinfo && cost_vec)
  	{
  	  /* In BB vectorization we may not actually use a loaded vector
  	     accessing elements in excess of DR_GROUP_SIZE.  */
*************** vectorizable_load (vec_info *vinfo,
*** 9508,9524 ****
  	    }
  	}
  
!       auto_vec<tree> tem;
!       unsigned n_perms;
!       if (!vect_transform_slp_perm_load (vinfo, slp_node, tem, NULL, vf,
! 					 true, &n_perms))
  	{
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_MISSED_OPTIMIZATION,
! 			     vect_location,
! 			     "unsupported load permutation\n");
! 	  return false;
  	}
      }
  
    if (slp_node->ldst_lanes
--- 9505,9525 ----
  	    }
  	}
  
!       if (cost_vec)
  	{
! 	  if (!vect_transform_slp_perm_load (vinfo, slp_node, vNULL, NULL, vf,
! 					     true, &n_perms))
! 	    {
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION,
! 				 vect_location,
! 				 "unsupported load permutation\n");
! 	      return false;
! 	    }
! 	  ls.n_perms = n_perms;
  	}
+       else
+ 	n_perms = ls.n_perms;
      }
  
    if (slp_node->ldst_lanes
*************** vectorizable_load (vec_info *vinfo,
*** 9989,10006 ****
  	}
        if (slp_perm)
  	{
- 	  unsigned n_perms;
  	  if (costing_p)
  	    {
! 	      unsigned n_loads;
! 	      vect_transform_slp_perm_load (vinfo, slp_node, vNULL, NULL, vf,
! 					    true, &n_perms, &n_loads);
  	      inside_cost += record_stmt_cost (cost_vec, n_perms, vec_perm,
  					       slp_node, 0, vect_body);
  	    }
  	  else
! 	    vect_transform_slp_perm_load (vinfo, slp_node, dr_chain, gsi, vf,
! 					  false, &n_perms);
  	}
  
        if (costing_p)
--- 9990,10008 ----
  	}
        if (slp_perm)
  	{
  	  if (costing_p)
  	    {
! 	      gcc_assert (n_perms != -1U);
  	      inside_cost += record_stmt_cost (cost_vec, n_perms, vec_perm,
  					       slp_node, 0, vect_body);
  	    }
  	  else
! 	    {
! 	      unsigned n_perms2;
! 	      vect_transform_slp_perm_load (vinfo, slp_node, dr_chain, gsi, vf,
! 					    false, &n_perms2);
! 	      gcc_assert (n_perms == n_perms2);
! 	    }
  	}
  
        if (costing_p)
*************** vectorizable_load (vec_info *vinfo,
*** 11378,11402 ****
  
    if (slp_perm)
      {
-       unsigned n_perms;
        /* For SLP we know we've seen all possible uses of dr_chain so
  	 direct vect_transform_slp_perm_load to DCE the unused parts.
  	 ???  This is a hack to prevent compile-time issues as seen
  	 in PR101120 and friends.  */
        if (costing_p)
  	{
! 	  vect_transform_slp_perm_load (vinfo, slp_node, vNULL, nullptr, vf,
! 					true, &n_perms, nullptr);
  	  if (n_perms != 0)
  	    inside_cost = record_stmt_cost (cost_vec, n_perms, vec_perm,
  					    slp_node, 0, vect_body);
  	}
        else
  	{
  	  bool ok = vect_transform_slp_perm_load (vinfo, slp_node, dr_chain,
! 						  gsi, vf, false, &n_perms,
  						  nullptr, true);
! 	  gcc_assert (ok);
  	}
        dr_chain.release ();
      }
--- 11380,11403 ----
  
    if (slp_perm)
      {
        /* For SLP we know we've seen all possible uses of dr_chain so
  	 direct vect_transform_slp_perm_load to DCE the unused parts.
  	 ???  This is a hack to prevent compile-time issues as seen
  	 in PR101120 and friends.  */
        if (costing_p)
  	{
! 	  gcc_assert (n_perms != -1U);
  	  if (n_perms != 0)
  	    inside_cost = record_stmt_cost (cost_vec, n_perms, vec_perm,
  					    slp_node, 0, vect_body);
  	}
        else
  	{
+ 	  unsigned n_perms2;
  	  bool ok = vect_transform_slp_perm_load (vinfo, slp_node, dr_chain,
! 						  gsi, vf, false, &n_perms2,
  						  nullptr, true);
! 	  gcc_assert (ok && n_perms == n_perms2);
  	}
        dr_chain.release ();
      }
*************** vectorizable_early_exit (loop_vec_info l
*** 12336,12342 ****
    gimple *orig_stmt = STMT_VINFO_STMT (vect_orig_stmt (stmt_info));
    gcond *cond_stmt = as_a <gcond *>(orig_stmt);
  
!   tree cst = build_zero_cst (vectype);
    auto bb = gimple_bb (cond_stmt);
    edge exit_true_edge = EDGE_SUCC (bb, 0);
    if (exit_true_edge->flags & EDGE_FALSE_VALUE)
--- 12337,12343 ----
    gimple *orig_stmt = STMT_VINFO_STMT (vect_orig_stmt (stmt_info));
    gcond *cond_stmt = as_a <gcond *>(orig_stmt);
  
!   tree vectype_out = vectype;
    auto bb = gimple_bb (cond_stmt);
    edge exit_true_edge = EDGE_SUCC (bb, 0);
    if (exit_true_edge->flags & EDGE_FALSE_VALUE)
*************** vectorizable_early_exit (loop_vec_info l
*** 12353,12362 ****
    bool flipped = flow_bb_inside_loop_p (LOOP_VINFO_LOOP (loop_vinfo),
  					exit_true_edge->dest);
  
    /* Analyze only.  */
    if (cost_vec)
      {
!       if (direct_optab_handler (cbranch_optab, mode) == CODE_FOR_nothing)
  	{
  	  if (dump_enabled_p ())
  	      dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
--- 12354,12390 ----
    bool flipped = flow_bb_inside_loop_p (LOOP_VINFO_LOOP (loop_vinfo),
  					exit_true_edge->dest);
  
+   /* See if we support ADDHN and use that for the reduction.  */
+   internal_fn ifn = IFN_VEC_TRUNC_ADD_HIGH;
+   bool addhn_supported_p
+     = direct_internal_fn_supported_p (ifn, vectype, OPTIMIZE_FOR_BOTH);
+   tree narrow_type = NULL_TREE;
+   if (addhn_supported_p)
+     {
+       /* Calculate the narrowing type for the result.  */
+       auto halfprec = TYPE_PRECISION (TREE_TYPE (vectype)) / 2;
+       auto unsignedp = TYPE_UNSIGNED (TREE_TYPE (vectype));
+       tree itype = build_nonstandard_integer_type (halfprec, unsignedp);
+       tree tmp_type = build_vector_type (itype, TYPE_VECTOR_SUBPARTS (vectype));
+       narrow_type = truth_type_for (tmp_type);
+ 
+       if (direct_optab_handler (cbranch_optab, TYPE_MODE (narrow_type))
+ 	  == CODE_FOR_nothing)
+ 	{
+ 	  if (dump_enabled_p ())
+ 	      dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 			       "can't use ADDHN reduction because cbranch for "
+ 			       "the narrowed type is not supported by the "
+ 			       "target.\n");
+ 	  addhn_supported_p = false;
+ 	}
+     }
+ 
    /* Analyze only.  */
    if (cost_vec)
      {
!       if (!addhn_supported_p
! 	  && direct_optab_handler (cbranch_optab, mode) == CODE_FOR_nothing)
  	{
  	  if (dump_enabled_p ())
  	      dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
*************** vectorizable_early_exit (loop_vec_info l
*** 12462,12471 ****
  
        while (workset.length () > 1)
  	{
- 	  new_temp = make_temp_ssa_name (vectype, NULL, "vexit_reduc");
  	  tree arg0 = workset.pop ();
  	  tree arg1 = workset.pop ();
! 	  new_stmt = gimple_build_assign (new_temp, BIT_IOR_EXPR, arg0, arg1);
  	  vect_finish_stmt_generation (loop_vinfo, stmt_info, new_stmt,
  				       &cond_gsi);
  	  workset.quick_insert (0, new_temp);
--- 12490,12511 ----
  
        while (workset.length () > 1)
  	{
  	  tree arg0 = workset.pop ();
  	  tree arg1 = workset.pop ();
! 	  if (addhn_supported_p && workset.length () == 0)
! 	    {
! 	      new_stmt = gimple_build_call_internal (ifn, 2, arg0, arg1);
! 	      vectype_out = narrow_type;
! 	      new_temp = make_temp_ssa_name (vectype_out, NULL, "vexit_reduc");
! 	      gimple_call_set_lhs (as_a <gcall *> (new_stmt), new_temp);
! 	      gimple_call_set_nothrow (as_a <gcall *> (new_stmt), true);
! 	    }
! 	  else
! 	    {
! 	      new_temp = make_temp_ssa_name (vectype_out, NULL, "vexit_reduc");
! 	      new_stmt
! 		= gimple_build_assign (new_temp, BIT_IOR_EXPR, arg0, arg1);
! 	    }
  	  vect_finish_stmt_generation (loop_vinfo, stmt_info, new_stmt,
  				       &cond_gsi);
  	  workset.quick_insert (0, new_temp);
*************** vectorizable_early_exit (loop_vec_info l
*** 12488,12493 ****
--- 12528,12534 ----
  
    gcc_assert (new_temp);
  
+   tree cst = build_zero_cst (vectype_out);
    gimple_cond_set_condition (cond_stmt, NE_EXPR, new_temp, cst);
    update_stmt (orig_stmt);
  
*************** vect_transform_stmt (vec_info *vinfo,
*** 12690,12700 ****
  
    gcc_assert (slp_node);
  
!   if (dump_enabled_p ())
!     dump_printf_loc (MSG_NOTE, vect_location,
! 		     "------>vectorizing statement: %G", stmt_info->stmt);
! 
!   STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
  
    switch (SLP_TREE_TYPE (slp_node))
      {
--- 12731,12738 ----
  
    gcc_assert (slp_node);
  
!   if (stmt_info)
!     STMT_VINFO_VECTYPE (stmt_info) = NULL_TREE;
  
    switch (SLP_TREE_TYPE (slp_node))
      {
*************** vect_transform_stmt (vec_info *vinfo,
*** 12804,12809 ****
--- 12842,12852 ----
        gcc_assert (done);
        break;
  
+     case permute_info_type:
+       done = vectorizable_slp_permutation (vinfo, gsi, slp_node, NULL);
+       gcc_assert (done);
+       break;
+ 
      default:
        if (!STMT_VINFO_LIVE_P (stmt_info))
  	{
diff -Nrcpad gcc-16-20250907/gcc/tree-vectorizer.h gcc-16-20250914/gcc/tree-vectorizer.h
*** gcc-16-20250907/gcc/tree-vectorizer.h	Sun Sep  7 22:34:53 2025
--- gcc-16-20250914/gcc/tree-vectorizer.h	Sun Sep 14 22:32:34 2025
*************** enum stmt_vec_info_type {
*** 242,248 ****
    lc_phi_info_type,
    phi_info_type,
    recurr_info_type,
!   loop_exit_ctrl_vec_info_type
  };
  
  /************************************************************************
--- 242,249 ----
    lc_phi_info_type,
    phi_info_type,
    recurr_info_type,
!   loop_exit_ctrl_vec_info_type,
!   permute_info_type
  };
  
  /************************************************************************
*************** struct vect_load_store_data : vect_data
*** 288,293 ****
--- 289,295 ----
    } gs;
    tree strided_offset_vectype; // VMAT_GATHER_SCATTER_IFN, originally strided
    auto_vec<int> elsvals;
+   unsigned n_perms; // SLP_TREE_LOAD_PERMUTATION
  };
  
  /* A computation tree of an SLP instance.  Each node corresponds to a group of
*************** extern bool vect_transform_slp_perm_load
*** 2754,2759 ****
--- 2756,2763 ----
  					  gimple_stmt_iterator *, poly_uint64,
  					  bool, unsigned *,
  					  unsigned * = nullptr, bool = false);
+ extern bool vectorizable_slp_permutation (vec_info *, gimple_stmt_iterator *,
+ 					  slp_tree, stmt_vector_for_cost *);
  extern bool vect_slp_analyze_operations (vec_info *);
  extern void vect_schedule_slp (vec_info *, const vec<slp_instance> &);
  extern opt_result vect_analyze_slp (vec_info *, unsigned, bool);
diff -Nrcpad gcc-16-20250907/gcc/tree.cc gcc-16-20250914/gcc/tree.cc
*** gcc-16-20250907/gcc/tree.cc	Sun Sep  7 22:34:53 2025
--- gcc-16-20250914/gcc/tree.cc	Sun Sep 14 22:32:34 2025
*************** staticp (tree arg)
*** 3935,3940 ****
--- 3935,3944 ----
        else
  	return NULL;
  
+     case REALPART_EXPR:
+     case IMAGPART_EXPR:
+       return staticp (TREE_OPERAND (arg, 0));
+ 
      case COMPOUND_LITERAL_EXPR:
        return TREE_STATIC (COMPOUND_LITERAL_EXPR_DECL (arg)) ? arg : NULL;
  
diff -Nrcpad gcc-16-20250907/libphobos/ChangeLog gcc-16-20250914/libphobos/ChangeLog
*** gcc-16-20250907/libphobos/ChangeLog	Sun Sep  7 22:34:59 2025
--- gcc-16-20250914/libphobos/ChangeLog	Sun Sep 14 22:32:37 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-09-07  Sam James  <sam@gentoo.org>
+ 
+ 	* configure.tgt: Add hppa[12]*-*-linux* as a supported target.
+ 
+ 2025-09-07  Matthias Klose  <doko@ubuntu.com>
+ 
+ 	* configure.tgt: Add powerpc64le-linux-gnu as a supported target
+ 	when configured with --with-long-double-format=ieee.
+ 
  2025-09-02  Iain Sandoe  <iain@sandoe.co.uk>
  
  	* libdruntime/core/thread/osthread.d: Use PPC_THREAD_STATE
diff -Nrcpad gcc-16-20250907/libstdc++-v3/ChangeLog gcc-16-20250914/libstdc++-v3/ChangeLog
*** gcc-16-20250907/libstdc++-v3/ChangeLog	Sun Sep  7 22:35:00 2025
--- gcc-16-20250914/libstdc++-v3/ChangeLog	Sun Sep 14 22:32:38 2025
***************
*** 1,3 ****
--- 1,303 ----
+ 2025-09-13  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/121917
+ 	* include/bits/ranges_algo.h (__shuffle_fn::operator()): Only
+ 	consider the two-at-a-time PRNG optimization if the range is
+ 	sized.
+ 	* testsuite/25_algorithms/shuffle/constrained.cc (test03): New
+ 	test.
+ 
+ 2025-09-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/121913
+ 	* include/bits/ranges_algo.h (__rotate_fn::operator()): Use
+ 	ranges::iter_move(it) instead of std::move(*it).
+ 	* testsuite/25_algorithms/rotate/121913.cc: New test.
+ 
+ 2025-09-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/121890
+ 	* include/bits/ranges_algo.h (ranges::rotate, ranges::shuffle)
+ 	(__insertion_sort, __unguarded_partition_pivot, __introselect):
+ 	Use ranges::next to advance iterators. Use local variables in
+ 	rotate to avoid duplicate expressions.
+ 	(ranges::push_heap, ranges::pop_heap, ranges::partial_sort)
+ 	(ranges::partial_sort_copy): Use ranges::prev.
+ 	(__final_insertion_sort): Use iter_difference_t<Iter>
+ 	for operand of operator+ on iterator.
+ 	* include/bits/ranges_base.h (ranges::advance): Use iterator's
+ 	difference_type for all iterator arithmetic.
+ 	* include/bits/stl_algo.h (__search_n_aux, __rotate)
+ 	(__insertion_sort, __unguarded_partition_pivot, __introselect)
+ 	(__final_insertion_sort, for_each_n, random_shuffle): Likewise.
+ 	Use local variables in __rotate to avoid duplicate expressions.
+ 	* include/bits/stl_algobase.h (__fill_n_a, __lc_rai::__newlast1):
+ 	Likewise.
+ 	* include/bits/stl_heap.h (push_heap): Likewise.
+ 	(__is_heap_until): Add static_assert.
+ 	(__is_heap): Convert distance to difference_type.
+ 	* include/std/functional (boyer_moore_searcher::operator()): Use
+ 	iterator's difference_type for iterator arithmetic.
+ 	* testsuite/util/testsuite_iterators.h
+ 	(random_access_iterator_wrapper): Add deleted overloads of
+ 	operators that should be called with difference_type.
+ 	* testsuite/24_iterators/range_operations/advance.cc: Use
+ 	ranges::next.
+ 	* testsuite/25_algorithms/heap/constrained.cc: Use ranges::next
+ 	and ranges::prev.
+ 	* testsuite/25_algorithms/nth_element/58800.cc: Use std::next.
+ 	* testsuite/25_algorithms/nth_element/constrained.cc: Use
+ 	ptrdiff_t for loop variable.
+ 	* testsuite/25_algorithms/nth_element/random_test.cc: Use
+ 	iterator's difference_type instead of int.
+ 	* testsuite/25_algorithms/partial_sort/check_compare_by_value.cc:
+ 	Use std::next.
+ 	* testsuite/25_algorithms/partial_sort/constrained.cc: Use
+ 	ptrdiff_t for loop variable.
+ 	* testsuite/25_algorithms/partial_sort/random_test.cc: Use
+ 	iterator's difference_type instead of int.
+ 	* testsuite/25_algorithms/partial_sort_copy/constrained.cc:
+ 	Use ptrdiff_t for loop variable.
+ 	* testsuite/25_algorithms/partial_sort_copy/random_test.cc:
+ 	Use iterator's difference_type instead of int.
+ 	* testsuite/std/ranges/adaptors/drop.cc: Use ranges::next.
+ 	* testsuite/25_algorithms/fill_n/diff_type.cc: New test.
+ 	* testsuite/25_algorithms/lexicographical_compare/diff_type.cc:
+ 	New test.
+ 
+ 2025-09-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/117276
+ 	* include/pstl/parallel_backend_tbb.h (__func_task::finalize):
+ 	Make deallocation unconditional.
+ 
+ 2025-09-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/121046
+ 	* include/debug/bitset (bitset(const CharT*, ...)): Add
+ 	constraints on CharT type.
+ 
+ 2025-09-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* config/cpu/generic/atomicity_mutex/atomicity.h
+ 	(__exchange_and_add): Use const_cast to remove volatile.
+ 
+ 2025-09-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/71945
+ 	* include/bits/shared_ptr_base.h (_Sp_counted_base::_S_chk):
+ 	Trap if a reference count cannot be incremented any higher.
+ 	(_Sp_counted_base::_M_add_ref_copy): Use _S_chk.
+ 	(_Sp_counted_base::_M_add_weak_ref): Likewise.
+ 	(_Sp_counted_base<_S_mutex>::_M_add_ref_lock_nothrow): Likewise.
+ 	(_Sp_counted_base<_S_atomic>::_M_add_ref_lock_nothrow): Likewise.
+ 	(_Sp_counted_base<_S_single>::_M_add_ref_copy): Use _S_chk.
+ 
+ 2025-09-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/71945
+ 	* include/bits/shared_ptr_base.h
+ 	(_Sp_counted_base::_M_get_use_count): Cast _M_use_count to
+ 	unsigned before returning as long.
+ 	(_Sp_counted_base<_S_single>::_M_add_ref_copy): Use atomic
+ 	helper function to adjust ref count using unsigned arithmetic.
+ 	(_Sp_counted_base<_S_single>::_M_weak_release): Likewise.
+ 	(_Sp_counted_base<_S_single>::_M_get_use_count): Cast
+ 	_M_use_count to unsigned before returning as long.
+ 	(_Sp_counted_base<_S_single>::_M_add_ref_lock_nothrow): Use
+ 	_M_add_ref_copy to do increment using unsigned arithmetic.
+ 	(_Sp_counted_base<_S_single>::_M_release): Use atomic helper and
+ 	_M_weak_release to do decrements using unsigned arithmetic.
+ 	(_Sp_counted_base<_S_mutex>::_M_release): Add comment.
+ 	(_Sp_counted_base<_S_single>::_M_weak_add_ref): Remove
+ 	specialization.
+ 
+ 2025-09-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/121148
+ 	* config/cpu/generic/atomicity_mutex/atomicity.h
+ 	(__exchange_and_add): Call __exchange_and_add_single.
+ 	* include/ext/atomicity.h (__exchange_and_add_single): Use an
+ 	unsigned type for the addition.
+ 	* libsupc++/Makefile.am (atomicity.o): Compile with -fwrapv.
+ 	* libsupc++/Makefile.in: Regenerate.
+ 
+ 2025-09-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/iterator_concepts.h (_IterMove::_S_noexcept)
+ 	(_IterSwap::_S_noexcept): Change constexpr to consteval.
+ 	* include/bits/ranges_base.h (_Begin::_S_noexcept)
+ 	(_End::_S_noexcept, _RBegin::_S_noexcept, _REnd::_S_noexcept)
+ 	(_Size::_S_noexcept, _Empty::_S_noexcept, _Data::_S_noexcept):
+ 	Likewise.
+ 	* include/std/concepts (_Swap::_S_noexcept): Likewise.
+ 
+ 2025-09-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/ranges_base.h (__detail::__to_unsigned_like)
+ 	(__access::__possible_const_range, __access::__as_const)
+ 	(__distance_fn::operator(), __next_fn::operator())
+ 	(__prev_fn::operator()): Add always_inline attribute.
+ 	(_Begin::operator(), _End::operator(), _RBegin::operator())
+ 	(_REnd::operator(), _Size::operator(), _SSize::operator())
+ 	(_Empty::operator(), _Data::operator(), _SSize::operator()):
+ 	Likewise. Move nodiscard attribute to start of declaration.
+ 
+ 2025-09-11  Giuseppe D'Angelo  <giuseppe.dangelo@kdab.com>
+ 
+ 	* include/bits/shared_ptr_base.h (__weak_ptr): Avoid calling
+ 	lock() when converting or assigning a weak_ptr<Derived> to
+ 	a weak_ptr<Base> in case Base is not a virtual base of Derived.
+ 	This logic is centralized in _S_safe_upcast, called by the
+ 	various converting constructors/assignment operators.
+ 	(_S_safe_upcast): New helper function.
+ 	* testsuite/20_util/weak_ptr/cons/virtual_bases.cc: New test.
+ 
+ 2025-09-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/syncstream: Remove trailing whitespace.
+ 
+ 2025-09-11  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/std/time/year_month_day/io.cc: Additional tests.
+ 
+ 2025-09-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/unique_ptr.h: Remove blank line.
+ 
+ 2025-09-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/functional (boyer_moore_searcher::operator()): Add
+ 	static_assert.
+ 	(boyer_moore_horspool_searcher::operator()): Likewise.
+ 	* testsuite/20_util/function_objects/121782.cc: New test.
+ 
+ 2025-09-10  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan (_ExtentsStorage::_Base): New name for
+ 	_S_base.
+ 	(_ExtentsStorage::_Storage): New name for _S_storage.
+ 	(extents::_Storage): New name for _S_storage.
+ 	(layout_stride::mapping::_Strides): New name for
+ 	_S_stries_t.
+ 	* testsuite/23_containers/mdspan/class_mandate_neg.cc: Update
+ 	test to the new error message.
+ 
+ 2025-09-10  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/span (__integral_constant_like): Use
+ 	remove_cvref_t before checking if _Tp::value is boolean.
+ 	* testsuite/23_containers/mdspan/extents/misc.cc: Update test.
+ 	* testsuite/23_containers/mdspan/mdspan.cc: Ditto.
+ 	* testsuite/23_containers/span/deduction.cc: Ditto.
+ 
+ 2025-09-10  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/121765
+ 	* include/std/format (__format::_Drop_iter): Define.
+ 	(_Iter_for_t::type): Change alias to _Drop_iter.
+ 	(__format::__format_padded): Return __fc.out() for
+ 	_Drop_iter.
+ 	* testsuite/std/format/pr121765.cc: New test.
+ 
+ 2025-09-10  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* doc/html/manual/status.html: Regenerate.
+ 	* doc/xml/manual/status_cxx2020.xml: Add more entires.
+ 
+ 2025-09-10  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* doc/html/index.html: Regenerated.
+ 	* doc/html/manual/index.html: Regenerated.
+ 	* doc/html/manual/intro.html: Regenerated.
+ 	* doc/html/manual/status.html: Regenatered.
+ 	* doc/xml/manual/status_cxx2020.xml: Add iso.2020.specific
+ 	section with atomic_ref documentation.
+ 
+ 2025-09-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/type_traits (_CwFixedValue::_S_type): Rename to
+ 	__type.
+ 	(constant_wrapper): Rename template parameter in declaration to
+ 	match later definition.
+ 
+ 2025-09-09  Arsen Arsenović  <arsen@aarsen.me>
+ 
+ 	* doc/xml/manual/using_exceptions.xml: Replace "Tunables" link
+ 	with one that does not have an anchor.
+ 	* doc/html/manual/using_exceptions.html: Regenerate.
+ 
+ 2025-09-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/type_traits (constant_wrapper): Rename template
+ 	parameter to avoid BADNAME.
+ 
+ 2025-09-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/120698
+ 	* doc/xml/manual/configure.xml: Do not claim that vtv is enabled
+ 	by default.
+ 	* doc/html/manual/configure.html: Regenerate.
+ 
+ 2025-09-08  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	* src/c++20/Makefile.in: Mention syncbuf.lo.
+ 
+ 2025-09-08  Nathan Myers  <ncm@cantrip.org>
+ 
+ 	* include/std/syncstream: (syncbuf<>::__mutex) Remove _S_get_mutex,
+ 	use extern function instead.
+ 	* src/c++20/syncbuf.cc: Define global __syncbuf_get_mutex.
+ 	* src/c++20/Makefile.am: Mention syncbuf.cc.
+ 	* src/c++20/Makefile.in: Regenerate.
+ 	* config/abi/pre/gnu.ver: Mention mangled __syncbuf_get_mutex.
+ 
+ 2025-09-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libstdc++/121827
+ 	* include/precompiled/extc++.h: Don't include ext/cast.h which is an
+ 	internal header.
+ 	* include/ext/pointer.h: Include bits/c++config.h before
+ 	#if _GLIBCXX_HOSTED.
+ 
+ 2025-09-08  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/xml/manual/using_exceptions.xml: Update link to "Tunables"
+ 	section in the Glibc manual.
+ 	* doc/html/manual/using_exceptions.html: Regenerate.
+ 
+ 2025-09-08  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/span (__integral_constant_like): Allow the member
+ 	`value` of a constant wrapping type to be a const reference of
+ 	an integer.
+ 	* testsuite/23_containers/mdspan/extents/misc.cc: Add test for
+ 	cw and constant_wrapper.
+ 	* testsuite/23_containers/mdspan/mdspan.cc: Ditto.
+ 	* testsuite/23_containers/span/deduction.cc: Ditto.
+ 
+ 2025-09-08  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 	    Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/version.def (constant_wrapper): Add.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/type_traits (_CwFixedValue): New class.
+ 	(_IndexSequence): New struct.
+ 	(_BuildIndexSequence): New struct.
+ 	(_ConstExprParam): New concept.
+ 	(_CwOperators): New struct.
+ 	(constant_wrapper): New struct.
+ 	(cw): New global constant.
+ 	* src/c++23/std.cc.in (constant_wrapper): Add.
+ 	(cw): Add.
+ 	* testsuite/20_util/constant_wrapper/adl.cc: New test.
+ 	* testsuite/20_util/constant_wrapper/ex.cc: New test.
+ 	* testsuite/20_util/constant_wrapper/generic.cc: New test.
+ 	* testsuite/20_util/constant_wrapper/instantiate.cc: New test.
+ 	* testsuite/20_util/constant_wrapper/op_comma_neg.cc: New test.
+ 	* testsuite/20_util/constant_wrapper/version.cc: New test.
+ 	* testsuite/20_util/constant_wrapper/other_wrappers.cc: New file.
+ 
  2025-09-05  Patrick Palka  <ppalka@redhat.com>
  
  	PR libstdc++/121804
diff -Nrcpad gcc-16-20250907/libstdc++-v3/config/abi/pre/gnu.ver gcc-16-20250914/libstdc++-v3/config/abi/pre/gnu.ver
*** gcc-16-20250907/libstdc++-v3/config/abi/pre/gnu.ver	Sun Sep  7 22:35:00 2025
--- gcc-16-20250914/libstdc++-v3/config/abi/pre/gnu.ver	Sun Sep 14 22:32:38 2025
*************** GLIBCXX_3.4.35 {
*** 2559,2564 ****
--- 2559,2567 ----
      _ZNSt6chrono9gps_clock3nowEv;
      _ZNSt6chrono9tai_clock3nowEv;
  
+     # mutex& __syncbuf_get_mutex(void*)
+     _ZSt19__syncbuf_get_mutexPv;
+ 
      # __gnu_debug::_Safe_iterator_base and _Safe_sequence_base const
      _ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPKNS_19_Safe_sequence_baseEb;
      _ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPKNS_19_Safe_sequence_baseEb;
diff -Nrcpad gcc-16-20250907/libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h gcc-16-20250914/libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
*** gcc-16-20250907/libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h	Sun Sep  7 22:35:00 2025
--- gcc-16-20250914/libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h	Sun Sep 14 22:32:38 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 44,53 ****
    __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
    {
      __gnu_cxx::__scoped_lock sentry(get_atomic_mutex());
!     _Atomic_word __result;
!     __result = *__mem;
!     *__mem += __val;
!     return __result;
    }
  
    void
--- 44,53 ----
    __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
    {
      __gnu_cxx::__scoped_lock sentry(get_atomic_mutex());
!     // The volatile qualification is meaningless. All changes to the memory
!     // location happen while this mutex is locked so it's not volatile at all.
!     auto __mem2 = const_cast<_Atomic_word*>(__mem);
!     return __gnu_cxx::__exchange_and_add_single(__mem2, __val);
    }
  
    void
diff -Nrcpad gcc-16-20250907/libstdc++-v3/doc/html/index.html gcc-16-20250914/libstdc++-v3/doc/html/index.html
*** gcc-16-20250907/libstdc++-v3/doc/html/index.html	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/doc/html/index.html	Sun Sep 14 22:32:38 2025
***************
*** 23,29 ****
      </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="book"><a href="manual/index.html">The GNU C++ Library Manual</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I. 
    Introduction
    
! </a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="manual/status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2020">C++ 2020</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="section"><a href="manual/make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="manual/using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.alloc">Memory allocation</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="manual/debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="manual/debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="manual/debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/std_contents.html">II. 
      Standard Contents
    </a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/support.html">4. 
    Support
--- 23,29 ----
      </p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="book"><a href="manual/index.html">The GNU C++ Library Manual</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I. 
    Introduction
    
! </a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="manual/status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2020">C++ 2020</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.2020.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="manual/status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="manual/status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="section"><a href="manual/make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="manual/using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="manual/using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.alloc">Memory allocation</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="manual/using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="manual/debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="manual/debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="manual/debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/std_contents.html">II. 
      Standard Contents
    </a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/support.html">4. 
    Support
diff -Nrcpad gcc-16-20250907/libstdc++-v3/doc/html/manual/configure.html gcc-16-20250914/libstdc++-v3/doc/html/manual/configure.html
*** gcc-16-20250907/libstdc++-v3/doc/html/manual/configure.html	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/doc/html/manual/configure.html	Sun Sep 14 22:32:38 2025
***************
*** 268,274 ****
          operations (e.g. the library is configured for armv7 and then code
          is compiled with <code class="option">-march=armv5t</code>) then the program
          might rely on support in libgcc to provide the atomics.
!     </p></dd><dt><span class="term"><code class="code">--enable-vtable-verify</code>[default]</span></dt><dd><p>Use <code class="code">-fvtable-verify=std</code> to compile the C++
      runtime with instrumentation for vtable verification. All virtual
      functions in the standard library will be verified at runtime.
      Types impacted include <code class="classname">locale</code> and
--- 268,274 ----
          operations (e.g. the library is configured for armv7 and then code
          is compiled with <code class="option">-march=armv5t</code>) then the program
          might rely on support in libgcc to provide the atomics.
!     </p></dd><dt><span class="term"><code class="code">--enable-vtable-verify</code></span></dt><dd><p>Use <code class="code">-fvtable-verify=std</code> to compile the C++
      runtime with instrumentation for vtable verification. All virtual
      functions in the standard library will be verified at runtime.
      Types impacted include <code class="classname">locale</code> and
diff -Nrcpad gcc-16-20250907/libstdc++-v3/doc/html/manual/index.html gcc-16-20250914/libstdc++-v3/doc/html/manual/index.html
*** gcc-16-20250907/libstdc++-v3/doc/html/manual/index.html	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/doc/html/manual/index.html	Sun Sep 14 22:32:38 2025
***************
*** 4,10 ****
      </p></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="part"><a href="intro.html">I. 
    Introduction
    
! </a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dt><span class="section"><a href="status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.alloc">Memory allocation</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="std_contents.html">II. 
      Standard Contents
    </a></span></dt><dd><dl><dt><span class="chapter"><a href="support.html">4. 
    Support
--- 4,10 ----
      </p></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="part"><a href="intro.html">I. 
    Introduction
    
! </a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2020.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.alloc">Memory allocation</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="std_contents.html">II. 
      Standard Contents
    </a></span></dt><dd><dl><dt><span class="chapter"><a href="support.html">4. 
    Support
diff -Nrcpad gcc-16-20250907/libstdc++-v3/doc/html/manual/intro.html gcc-16-20250914/libstdc++-v3/doc/html/manual/intro.html
*** gcc-16-20250907/libstdc++-v3/doc/html/manual/intro.html	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/doc/html/manual/intro.html	Sun Sep 14 22:32:38 2025
***************
*** 5,8 ****
  </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td width="20%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr></table><hr /></div><div class="part"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"></a>Part I. 
    Introduction
    <a id="id-1.3.3.1.1.1" class="indexterm"></a>
! </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dt><span class="section"><a href="status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.alloc">Memory allocation</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Manual </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
\ No newline at end of file
--- 5,8 ----
  </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library Manual</th><td width="20%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr></table><hr /></div><div class="part"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"></a>Part I. 
    Introduction
    <a id="id-1.3.3.1.1.1" class="indexterm"></a>
! </h1></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2020.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="configure.html">Configure</a></span></dt><dt><span class="section"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="section"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="section"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="section"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="section"><a href="using_macros.html">Macros</a></span></dt><dt><span class="section"><a href="using_dual_abi.html">Dual ABI</a></span></dt><dd><dl><dt><span class="section"><a href="using_dual_abi.html#manual.intro.using.abi.trouble">Troubleshooting</a></span></dt></dl></dd><dt><span class="section"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="section"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="section"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt><dt><span class="section"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.experimental">Experimental Library Extensions</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dd><dl><dt><span class="section"><a href="using_concurrency.html#concurrency.io.structure">Structure</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.defaults">Defaults</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.future">Future</a></span></dt><dt><span class="section"><a href="using_concurrency.html#concurrency.io.alt">Alternatives</a></span></dt></dl></dd><dt><span class="section"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="section"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.alloc">Memory allocation</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="section"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt><dd><dl><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.c">With <code class="literal">C</code></a></span></dt><dt><span class="section"><a href="using_exceptions.html#using.exception.compat.posix">With <code class="literal">POSIX</code> thread cancellation</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="section"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="section"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dd><dl><dt><span class="section"><a href="debug.html#debug.memory.mtalloc">Non-memory leaks in Pool and MT allocators</a></span></dt></dl></dd><dt><span class="section"><a href="debug.html#debug.races">Data Race Hunting</a></span></dt><dt><span class="section"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="section"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="section"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Manual </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html>
\ No newline at end of file
diff -Nrcpad gcc-16-20250907/libstdc++-v3/doc/html/manual/status.html gcc-16-20250914/libstdc++-v3/doc/html/manual/status.html
*** gcc-16-20250907/libstdc++-v3/doc/html/manual/status.html	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/doc/html/manual/status.html	Sun Sep 14 22:32:38 2025
***************
*** 2,8 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="intro.html" title="Part I.  Introduction" /><link rel="next" href="license.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. 
    Introduction
    
! </th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dt><span class="section"><a href="status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
  This status table is based on the table of contents of ISO/IEC 14882:2003.
  </p><p>
  This section describes the C++ support in
--- 2,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 1. Status</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><meta name="keywords" content="ISO C++, library" /><meta name="keywords" content="ISO C++, runtime, library" /><link rel="home" href="../index.html" title="The GNU C++ Library" /><link rel="up" href="intro.html" title="Part I.  Introduction" /><link rel="prev" href="intro.html" title="Part I.  Introduction" /><link rel="next" href="license.html" title="License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Status</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td><th width="60%" align="center">Part I. 
    Introduction
    
! </th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.par2ts">Parallelism 2 TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2020.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2023">C++ 2023</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
  This status table is based on the table of contents of ISO/IEC 14882:2003.
  </p><p>
  This section describes the C++ support in
*************** Note 1: This feature is supported in old
*** 1759,1765 ****
  Note 2: The C++20 calendar types are supported since 11.1,
  time zones and UTC are supported since 13.1,
  and <code class="function">chrono::parse</code> is supported since 14.1.
! </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2023"></a>C++ 2023</h3></div></div></div><p>
  In this implementation the <code class="literal">-std=gnu++23</code> or
  <code class="literal">-std=c++23</code> flag must be used to enable language
  and library
--- 1759,1823 ----
  Note 2: The C++20 calendar types are supported since 11.1,
  time zones and UTC are supported since 13.1,
  and <code class="function">chrono::parse</code> is supported since 14.1.
! </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.2020.specific"></a>Implementation Specific Behavior</h4></div></div></div><p>For behaviour which is also specified by previous standards,
!       see <a class="link" href="status.html#iso.1998.specific" title="Implementation Specific Behavior">C++ 1998/2003 Implementation
!       Specific Behavior</a>, <a class="link" href="status.html#iso.2011.specific" title="Implementation Specific Behavior">C++
!       2011 Implementation Specific Behavior</a>, and
!       <a class="link" href="status.html#iso.2017.specific" title="Implementation Specific Behavior">C++ 2017 Implementation Specific
!       Behavior</a>. This section only documents behaviour which is new in
!       the 2020 standard.
!    </p><p>
!       <span class="emphasis"><em>16.4.2.4 [compliance]</em></span> The implementation is
!       freestanding if the <code class="code">-ffreestanding</code> compiler flag is used, 
!       and hosted otherwise.
!    </p><p>
!       <span class="emphasis"><em>16.4.2.4 [compliance]</em></span>
!       The support for always lock-free integral atomic types and presence of
!       <code class="code">atomic_signed_lock_free</code> and
!       <code class="code">atomic_unsigned_lock_free</code> type aliases depends on the
!       target.
!    </p><p>
!       <span class="emphasis"><em>27.5.11 [time.duration.io]</em></span>
!       The <code class="literal">"μs"</code> (<code class="literal">"\u00b5\u0073"</code>) is used
!       for <code class="code">std::micro</code> <code class="code">Period::type</code> if the macro
!       <code class="code">_GLIBCXX_USE_ALT_MICROSECONDS_SUFFIX</code> is defined to a value
!       other than zero before inclusion of the <code class="code">chrono</code> header,
!       <code class="literal">"us"</code> is used otherwise.
!    </p><p>
!       <span class="emphasis"><em>29.8.2.2 [stringbuf.cons]</em></span> Sequence pointers are
!       initialized to null pointers by the
!       <code class="code">basic_stringbuf(ios_base::openmode)</code> constructor.
!    </p><p>
!       <span class="emphasis"><em>31.7.1 [atomics.ref.generic.general]</em></span>,
!       <span class="emphasis"><em>31.7.3 [atomics.ref.int]</em></span>,
!       <span class="emphasis"><em>31.7.4 [atomics.ref.float]</em></span>,
!       <span class="emphasis"><em>31.7.5 [atomics.ref.pointer]</em></span>
!       The values of <code class="code">is_always_lock_free</code> members depend on the
!       target and cannot be listed here.
!    </p><p>
!       <span class="emphasis"><em>31.7.1 [atomics.ref.generic.general]</em></span>
!       If <code class="code">sizeof(T)</code> is equal to either <code class="code">1</code>,
!       <code class="code">2</code>, <code class="code">4</code>, <code class="code">8</code>, or <code class="code">16</code>,
!       then the value of <code class="code">required_alignment</code> member is equal to
!       the maximum of <code class="code">alignof(T)</code> and <code class="code">sizeof(T)</code>.
!       Otherwise <code class="code">required_alignment</code> value is <code class="code">alignof(T)</code>.
!    </p><p>
!       <span class="emphasis"><em>31.7.3 [atomics.ref.int]</em></span>
!       The value of <code class="code">required_alignment</code> member is equal to the
!       maximum of <code class="code">alignof(value_type)</code> and
!       <code class="code">sizeof(value_type)</code>.
!    </p><p>
!       <span class="emphasis"><em>31.7.4 [atomics.ref.float]</em></span>,
!       <span class="emphasis"><em>31.7.5 [atomics.ref.pointer]</em></span>
!       The value of <code class="code">required_alignment</code> member is equal to
!       <code class="code">alignof(value_type)</code>.
!    </p><p>
!       <span class="emphasis"><em>32.7.3 [thread.sema.cnt]</em></span> The value of default
!       argument for the <code class="code">least_max_value</code> parameter depends on the
!       target operating system and platform, however the value of
!       <code class="code">counting_semaphore&lt;&gt;::max()</code> is greater than or equal
!       to <code class="code">numeric_limits&lt;int&gt;::max()</code>.
!    </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.2023"></a>C++ 2023</h3></div></div></div><p>
  In this implementation the <code class="literal">-std=gnu++23</code> or
  <code class="literal">-std=c++23</code> flag must be used to enable language
  and library
diff -Nrcpad gcc-16-20250907/libstdc++-v3/doc/html/manual/using_exceptions.html gcc-16-20250914/libstdc++-v3/doc/html/manual/using_exceptions.html
*** gcc-16-20250907/libstdc++-v3/doc/html/manual/using_exceptions.html	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/doc/html/manual/using_exceptions.html	Sun Sep 14 22:32:38 2025
*************** is called.
*** 366,372 ****
        GCC Bug 25191: exception_defines.h #defines try/catch
  	</a>
        </em>. </span></p></div><div class="biblioentry"><a id="id-1.3.3.4.9.10.10"></a><p><span class="title"><em>
! 	<a class="link" href="https://www.gnu.org/software/libc/manual/html_node/Tunables.html" target="_top">
        Tunables, The GNU C Library
  	</a>
        </em>. </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html>
\ No newline at end of file
--- 366,372 ----
        GCC Bug 25191: exception_defines.h #defines try/catch
  	</a>
        </em>. </span></p></div><div class="biblioentry"><a id="id-1.3.3.4.9.10.10"></a><p><span class="title"><em>
! 	<a class="link" href="https://sourceware.org/glibc/manual/latest/html_node/Tunables.html" target="_top">
        Tunables, The GNU C Library
  	</a>
        </em>. </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../index.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html>
\ No newline at end of file
diff -Nrcpad gcc-16-20250907/libstdc++-v3/doc/xml/manual/configure.xml gcc-16-20250914/libstdc++-v3/doc/xml/manual/configure.xml
*** gcc-16-20250907/libstdc++-v3/doc/xml/manual/configure.xml	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/doc/xml/manual/configure.xml	Sun Sep 14 22:32:38 2025
***************
*** 438,444 ****
      </para>
   </listitem></varlistentry>
  
!  <varlistentry><term><code>--enable-vtable-verify</code>[default]</term>
   <listitem>
      <para>Use <code>-fvtable-verify=std</code> to compile the C++
      runtime with instrumentation for vtable verification. All virtual
--- 438,444 ----
      </para>
   </listitem></varlistentry>
  
!  <varlistentry><term><code>--enable-vtable-verify</code></term>
   <listitem>
      <para>Use <code>-fvtable-verify=std</code> to compile the C++
      runtime with instrumentation for vtable verification. All virtual
diff -Nrcpad gcc-16-20250907/libstdc++-v3/doc/xml/manual/status_cxx2020.xml gcc-16-20250914/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
*** gcc-16-20250907/libstdc++-v3/doc/xml/manual/status_cxx2020.xml	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/doc/xml/manual/status_cxx2020.xml	Sun Sep 14 22:32:38 2025
*************** time zones and UTC are supported since 1
*** 1453,1456 ****
--- 1453,1538 ----
  and <function>chrono::parse</function> is supported since 14.1.
  </para>
  
+ <section xml:id="iso.2020.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info>
+ 
+    <para>For behaviour which is also specified by previous standards,
+       see <link linkend="iso.1998.specific">C++ 1998/2003 Implementation
+       Specific Behavior</link>, <link linkend="iso.2011.specific">C++
+       2011 Implementation Specific Behavior</link>, and
+       <link linkend="iso.2017.specific">C++ 2017 Implementation Specific
+       Behavior</link>. This section only documents behaviour which is new in
+       the 2020 standard.
+    </para>
+ 
+    <para>
+       <emphasis>16.4.2.4 [compliance]</emphasis> The implementation is
+       freestanding if the <code>-ffreestanding</code> compiler flag is used, 
+       and hosted otherwise.
+    </para>
+ 
+    <para>
+       <emphasis>16.4.2.4 [compliance]</emphasis>
+       The support for always lock-free integral atomic types and presence of
+       <code>atomic_signed_lock_free</code> and
+       <code>atomic_unsigned_lock_free</code> type aliases depends on the
+       target.
+    </para>
+ 
+    <para>
+       <emphasis>27.5.11 [time.duration.io]</emphasis>
+       The <literal>"μs"</literal> (<literal>"\u00b5\u0073"</literal>) is used
+       for <code>std::micro</code> <code>Period::type</code> if the macro
+       <code>_GLIBCXX_USE_ALT_MICROSECONDS_SUFFIX</code> is defined to a value
+       other than zero before inclusion of the <code>chrono</code> header,
+       <literal>"us"</literal> is used otherwise.
+    </para>
+ 
+    <para>
+       <emphasis>29.8.2.2 [stringbuf.cons]</emphasis> Sequence pointers are
+       initialized to null pointers by the
+       <code>basic_stringbuf(ios_base::openmode)</code> constructor.
+    </para>
+ 
+    <para>
+       <emphasis>31.7.1 [atomics.ref.generic.general]</emphasis>,
+       <emphasis>31.7.3 [atomics.ref.int]</emphasis>,
+       <emphasis>31.7.4 [atomics.ref.float]</emphasis>,
+       <emphasis>31.7.5 [atomics.ref.pointer]</emphasis>
+       The values of <code>is_always_lock_free</code> members depend on the
+       target and cannot be listed here.
+    </para>
+ 
+    <para>
+       <emphasis>31.7.1 [atomics.ref.generic.general]</emphasis>
+       If <code>sizeof(T)</code> is equal to either <code>1</code>,
+       <code>2</code>, <code>4</code>, <code>8</code>, or <code>16</code>,
+       then the value of <code>required_alignment</code> member is equal to
+       the maximum of <code>alignof(T)</code> and <code>sizeof(T)</code>.
+       Otherwise <code>required_alignment</code> value is <code>alignof(T)</code>.
+    </para>
+ 
+    <para>
+       <emphasis>31.7.3 [atomics.ref.int]</emphasis>
+       The value of <code>required_alignment</code> member is equal to the
+       maximum of <code>alignof(value_type)</code> and
+       <code>sizeof(value_type)</code>.
+    </para>
+ 
+    <para>
+       <emphasis>31.7.4 [atomics.ref.float]</emphasis>,
+       <emphasis>31.7.5 [atomics.ref.pointer]</emphasis>
+       The value of <code>required_alignment</code> member is equal to
+       <code>alignof(value_type)</code>.
+    </para>
+ 
+    <para>
+       <emphasis>32.7.3 [thread.sema.cnt]</emphasis> The value of default
+       argument for the <code>least_max_value</code> parameter depends on the
+       target operating system and platform, however the value of
+       <code>counting_semaphore&lt;&gt;::max()</code> is greater than or equal
+       to <code>numeric_limits&lt;int&gt;::max()</code>.
+    </para>
+ 
+ </section>
+ 
  </section>
diff -Nrcpad gcc-16-20250907/libstdc++-v3/doc/xml/manual/using_exceptions.xml gcc-16-20250914/libstdc++-v3/doc/xml/manual/using_exceptions.xml
*** gcc-16-20250907/libstdc++-v3/doc/xml/manual/using_exceptions.xml	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/doc/xml/manual/using_exceptions.xml	Sun Sep 14 22:32:38 2025
*************** is called.
*** 622,628 ****
    <biblioentry>
        <title>
  	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	      xlink:href="https://www.gnu.org/software/libc/manual/html_node/Tunables.html">
        Tunables, The GNU C Library
  	</link>
        </title>
--- 622,628 ----
    <biblioentry>
        <title>
  	<link xmlns:xlink="http://www.w3.org/1999/xlink"
! 	      xlink:href="https://sourceware.org/glibc/manual/latest/html_node/Tunables.html">
        Tunables, The GNU C Library
  	</link>
        </title>
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/iterator_concepts.h gcc-16-20250914/libstdc++-v3/include/bits/iterator_concepts.h
*** gcc-16-20250907/libstdc++-v3/include/bits/iterator_concepts.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/iterator_concepts.h	Sun Sep 14 22:32:38 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 148,154 ****
  	  };
  
  	template<typename _Tp>
! 	  static constexpr bool
  	  _S_noexcept()
  	  {
  	    if constexpr (__adl_imove<_Tp>)
--- 148,154 ----
  	  };
  
  	template<typename _Tp>
! 	  static consteval bool
  	  _S_noexcept()
  	  {
  	    if constexpr (__adl_imove<_Tp>)
*************** namespace ranges
*** 884,890 ****
      {
      private:
        template<typename _Tp, typename _Up>
! 	static constexpr bool
  	_S_noexcept()
  	{
  	  if constexpr (__adl_iswap<_Tp, _Up>)
--- 884,890 ----
      {
      private:
        template<typename _Tp, typename _Up>
! 	static consteval bool
  	_S_noexcept()
  	{
  	  if constexpr (__adl_iswap<_Tp, _Up>)
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/ranges_algo.h gcc-16-20250914/libstdc++-v3/include/bits/ranges_algo.h
*** gcc-16-20250907/libstdc++-v3/include/bits/ranges_algo.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/ranges_algo.h	Sun Sep 14 22:32:38 2025
*************** namespace ranges
*** 1683,1691 ****
  		    if constexpr (__is_pod(iter_value_t<_Iter>))
  		      if (__k == 1)
  			{
! 			  auto __t = std::move(*__p);
! 			  ranges::move(__p + 1, __p + __n, __p);
! 			  *(__p + __n - 1) = std::move(__t);
  			  return {std::move(__ret), std::move(__lasti)};
  			}
  		    auto __q = __p + __k;
--- 1683,1693 ----
  		    if constexpr (__is_pod(iter_value_t<_Iter>))
  		      if (__k == 1)
  			{
! 			  auto __mid = ranges::next(__p, __n - 1);
! 			  auto __end = ranges::next(__mid);
! 			  auto __t = ranges::iter_move(__p);
! 			  ranges::move(ranges::next(__p), __end, __p);
! 			  *__mid = std::move(__t);
  			  return {std::move(__ret), std::move(__lasti)};
  			}
  		    auto __q = __p + __k;
*************** namespace ranges
*** 1709,1716 ****
  		    if constexpr (__is_pod(iter_value_t<_Iter>))
  		      if (__k == 1)
  			{
! 			  auto __t = std::move(*(__p + __n - 1));
! 			  ranges::move_backward(__p, __p + __n - 1, __p + __n);
  			  *__p = std::move(__t);
  			  return {std::move(__ret), std::move(__lasti)};
  			}
--- 1711,1720 ----
  		    if constexpr (__is_pod(iter_value_t<_Iter>))
  		      if (__k == 1)
  			{
! 			  auto __mid = ranges::next(__p, __n - 1);
! 			  auto __end = ranges::next(__mid);
! 			  auto __t = ranges::iter_move(__mid);
! 			  ranges::move_backward(__p, __mid, __end);
  			  *__p = std::move(__t);
  			  return {std::move(__ret), std::move(__lasti)};
  			}
*************** namespace ranges
*** 1964,2010 ****
  	using __uc_type
  	  = common_type_t<typename remove_reference_t<_Gen>::result_type, __ud_type>;
  
! 	const __uc_type __urngrange = __g.max() - __g.min();
! 	const __uc_type __urange = __uc_type(__last - __first);
! 
! 	if (__urngrange / __urange >= __urange)
! 	  // I.e. (__urngrange >= __urange * __urange) but without wrap issues.
  	  {
! 	    _Iter __i = __first + 1;
! 
! 	    // Since we know the range isn't empty, an even number of elements
! 	    // means an uneven number of elements /to swap/, in which case we
! 	    // do the first one up front:
  
! 	    if ((__urange % 2) == 0)
  	      {
! 		__distr_type __d{0, 1};
! 		ranges::iter_swap(__i++, __first + __d(__g));
! 	      }
  
! 	    // Now we know that __last - __i is even, so we do the rest in pairs,
! 	    // using a single distribution invocation to produce swap positions
! 	    // for two successive elements at a time:
  
! 	    while (__i != __last)
! 	      {
! 		const __uc_type __swap_range = __uc_type(__i - __first) + 1;
  
! 		const pair<__uc_type, __uc_type> __pospos =
! 		  __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g);
  
! 		ranges::iter_swap(__i++, __first + __pospos.first);
! 		ranges::iter_swap(__i++, __first + __pospos.second);
! 	      }
  
! 	    return __i;
  	  }
  
  	__distr_type __d;
  
! 	_Iter __i = __first + 1;
  	for (; __i != __last; ++__i)
! 	  ranges::iter_swap(__i, __first + __d(__g, __p_type(0, __i - __first)));
  
  	return __i;
        }
--- 1968,2019 ----
  	using __uc_type
  	  = common_type_t<typename remove_reference_t<_Gen>::result_type, __ud_type>;
  
! 	if constexpr (sized_sentinel_for<_Sent, _Iter>)
  	  {
! 	    const __uc_type __urngrange = __g.max() - __g.min();
! 	    const __uc_type __urange = __uc_type(__last - __first);
  
! 	    if (__urngrange / __urange >= __urange)
! 	      // I.e. (__urngrange >= __urange * __urange) but without wrap issues.
  	      {
! 		_Iter __i = ranges::next(__first);
  
! 		// Since we know the range isn't empty, an even number of elements
! 		// means an uneven number of elements /to swap/, in which case we
! 		// do the first one up front:
  
! 		if ((__urange % 2) == 0)
! 		  {
! 		    __distr_type __d{0, 1};
! 		    ranges::iter_swap(__i++, ranges::next(__first, __d(__g)));
! 		  }
  
! 		// Now we know that __last - __i is even, so we do the rest in pairs,
! 		// using a single distribution invocation to produce swap positions
! 		// for two successive elements at a time:
  
! 		while (__i != __last)
! 		  {
! 		    const __uc_type __swap_range = __uc_type(__i - __first) + 1;
  
! 		    const pair<_DistanceType, _DistanceType> __pospos =
! 		      __gen_two_uniform_ints(__swap_range, __swap_range + 1, __g);
! 
! 		    ranges::iter_swap(__i++, ranges::next(__first, __pospos.first));
! 		    ranges::iter_swap(__i++, ranges::next(__first, __pospos.second));
! 		  }
! 
! 		return __i;
! 	      }
  	  }
  
  	__distr_type __d;
  
! 	_Iter __i = ranges::next(__first);
  	for (; __i != __last; ++__i)
! 	  ranges::iter_swap(__i,
! 			    ranges::next(__first,
! 					 __d(__g, __p_type(0, __i - __first))));
  
  	return __i;
        }
*************** namespace ranges
*** 2015,2022 ****
        borrowed_iterator_t<_Range>
        operator()(_Range&& __r, _Gen&& __g) const
        {
! 	return (*this)(ranges::begin(__r), ranges::end(__r),
! 		       std::forward<_Gen>(__g));
        }
    };
  
--- 2024,2038 ----
        borrowed_iterator_t<_Range>
        operator()(_Range&& __r, _Gen&& __g) const
        {
! 	if constexpr (sized_range<_Range>
! 		      && !sized_sentinel_for<sentinel_t<_Range>,
! 					     iterator_t<_Range>>)
! 	  return (*this)(ranges::begin(__r),
! 			 ranges::begin(__r) + ranges::size(__r),
! 			 std::forward<_Gen>(__g));
! 	else
! 	  return (*this)(ranges::begin(__r), ranges::end(__r),
! 			 std::forward<_Gen>(__g));
        }
    };
  
*************** namespace ranges
*** 2060,2066 ****
  	  {
  	    auto __comp_proj = __detail::__make_comp_proj(__comp, __proj);
  	    __detail::__push_heap(__first, (__last - __first) - 1,
! 				  0, ranges::iter_move(__last - 1),
  				  __comp_proj);
  	    return __last;
  	  }
--- 2076,2082 ----
  	  {
  	    auto __comp_proj = __detail::__make_comp_proj(__comp, __proj);
  	    __detail::__push_heap(__first, (__last - __first) - 1,
! 				  0, ranges::iter_move(ranges::prev(__last)),
  				  __comp_proj);
  	    return __last;
  	  }
*************** namespace ranges
*** 2137,2144 ****
  	  {
  	    if (__last - __first > 1)
  	      {
  		auto __comp_proj = __detail::__make_comp_proj(__comp, __proj);
! 		__detail::__pop_heap(__first, __last - 1, __last - 1, __comp_proj);
  	      }
  	    return __last;
  	  }
--- 2153,2161 ----
  	  {
  	    if (__last - __first > 1)
  	      {
+ 		auto __back = ranges::prev(__last);
  		auto __comp_proj = __detail::__make_comp_proj(__comp, __proj);
! 		__detail::__pop_heap(__first, __back, __back, __comp_proj);
  	      }
  	    return __last;
  	  }
*************** namespace ranges
*** 2356,2367 ****
  	if (__first == __last)
  	  return;
  
! 	for (_Iter __i = __first + 1; __i != __last; ++__i)
  	  {
  	    if (__comp(*__i, *__first))
  	      {
  		iter_value_t<_Iter> __val = ranges::iter_move(__i);
! 		ranges::move_backward(__first, __i, __i + 1);
  		*__first = std::move(__val);
  	      }
  	    else
--- 2373,2384 ----
  	if (__first == __last)
  	  return;
  
! 	for (_Iter __i = ranges::next(__first); __i != __last; ++__i)
  	  {
  	    if (__comp(*__i, *__first))
  	      {
  		iter_value_t<_Iter> __val = ranges::iter_move(__i);
! 		ranges::move_backward(__first, __i, ranges::next(__i));
  		*__first = std::move(__val);
  	      }
  	    else
*************** namespace ranges
*** 2383,2392 ****
        constexpr void
        __final_insertion_sort(_Iter __first, _Iter __last, _Comp __comp)
        {
! 	if (__last - __first > __sort_threshold)
  	  {
! 	    __detail::__insertion_sort(__first, __first + __sort_threshold, __comp);
! 	    __detail::__unguarded_insertion_sort(__first + __sort_threshold, __last,
  						 __comp);
  	  }
  	else
--- 2400,2410 ----
        constexpr void
        __final_insertion_sort(_Iter __first, _Iter __last, _Comp __comp)
        {
! 	constexpr iter_difference_t<_Iter> __threshold = __sort_threshold;
! 	if (__last - __first > __threshold)
  	  {
! 	    __detail::__insertion_sort(__first, __first + __threshold, __comp);
! 	    __detail::__unguarded_insertion_sort(__first + __threshold, __last,
  						 __comp);
  	  }
  	else
*************** namespace ranges
*** 2416,2423 ****
        __unguarded_partition_pivot(_Iter __first, _Iter __last, _Comp __comp)
        {
  	_Iter __mid = __first + (__last - __first) / 2;
! 	__detail::__move_median_to_first(__first, __first + 1, __mid, __last - 1, __comp);
! 	return __detail::__unguarded_partition(__first + 1, __last, __first, __comp);
        }
  
      template<typename _Iter, typename _Comp>
--- 2434,2443 ----
        __unguarded_partition_pivot(_Iter __first, _Iter __last, _Comp __comp)
        {
  	_Iter __mid = __first + (__last - __first) / 2;
! 	__detail::__move_median_to_first(__first, ranges::next(__first), __mid,
! 					 ranges::prev(__last), __comp);
! 	return __detail::__unguarded_partition(ranges::next(__first), __last,
! 					       __first, __comp);
        }
  
      template<typename _Iter, typename _Comp>
*************** namespace ranges
*** 2745,2751 ****
  			    std::__invoke(__proj, *__first)))
  	    {
  	      ranges::pop_heap(__first, __middle, __comp, __proj);
! 	      ranges::iter_swap(__middle-1, __i);
  	      ranges::push_heap(__first, __middle, __comp, __proj);
  	    }
  	ranges::sort_heap(__first, __middle, __comp, __proj);
--- 2765,2771 ----
  			    std::__invoke(__proj, *__first)))
  	    {
  	      ranges::pop_heap(__first, __middle, __comp, __proj);
! 	      ranges::iter_swap(std::prev(__middle), __i);
  	      ranges::push_heap(__first, __middle, __comp, __proj);
  	    }
  	ranges::sort_heap(__first, __middle, __comp, __proj);
*************** namespace ranges
*** 2812,2818 ****
  	    {
  	      ranges::pop_heap(__result_first, __result_real_last,
  			       __comp, __proj2);
! 	      *(__result_real_last-1) = *__first;
  	      ranges::push_heap(__result_first, __result_real_last,
  				__comp, __proj2);
  	    }
--- 2832,2838 ----
  	    {
  	      ranges::pop_heap(__result_first, __result_real_last,
  			       __comp, __proj2);
! 	      *ranges::prev(__result_real_last) = *__first;
  	      ranges::push_heap(__result_first, __result_real_last,
  				__comp, __proj2);
  	    }
*************** namespace ranges
*** 2924,2930 ****
  	  {
  	    if (__depth_limit == 0)
  	      {
! 		__detail::__heap_select(__first, __nth + 1, __last, __comp);
  		// Place the nth largest element in its final position.
  		ranges::iter_swap(__first, __nth);
  		return;
--- 2944,2951 ----
  	  {
  	    if (__depth_limit == 0)
  	      {
! 		__detail::__heap_select(__first, ranges::next(__nth), __last,
! 					__comp);
  		// Place the nth largest element in its final position.
  		ranges::iter_swap(__first, __nth);
  		return;
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/ranges_base.h gcc-16-20250914/libstdc++-v3/include/bits/ranges_base.h
*** gcc-16-20250907/libstdc++-v3/include/bits/ranges_base.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/ranges_base.h	Sun Sep 14 22:32:38 2025
*************** namespace ranges
*** 68,82 ****
--- 68,85 ----
  
    namespace __detail
    {
+     [[__gnu__::__always_inline__]]
      constexpr __max_size_type
      __to_unsigned_like(__max_size_type __t) noexcept
      { return __t; }
  
+     [[__gnu__::__always_inline__]]
      constexpr __max_size_type
      __to_unsigned_like(__max_diff_type __t) noexcept
      { return __max_size_type(__t); }
  
      template<integral _Tp>
+       [[__gnu__::__always_inline__]]
        constexpr auto
        __to_unsigned_like(_Tp __t) noexcept
        { return static_cast<make_unsigned_t<_Tp>>(__t); }
*************** namespace ranges
*** 103,109 ****
      {
      private:
        template<typename _Tp>
! 	static constexpr bool
  	_S_noexcept()
  	{
  	  if constexpr (is_array_v<remove_reference_t<_Tp>>)
--- 106,112 ----
      {
      private:
        template<typename _Tp>
! 	static consteval bool
  	_S_noexcept()
  	{
  	  if constexpr (is_array_v<remove_reference_t<_Tp>>)
*************** namespace ranges
*** 118,125 ****
        template<__maybe_borrowed_range _Tp>
  	requires is_array_v<remove_reference_t<_Tp>> || __member_begin<_Tp>
  	  || __adl_begin<_Tp>
  	constexpr auto
! 	operator()[[nodiscard]](_Tp&& __t) const noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (is_array_v<remove_reference_t<_Tp>>)
  	    {
--- 121,129 ----
        template<__maybe_borrowed_range _Tp>
  	requires is_array_v<remove_reference_t<_Tp>> || __member_begin<_Tp>
  	  || __adl_begin<_Tp>
+ 	[[nodiscard, __gnu__::__always_inline__]]
  	constexpr auto
! 	operator()(_Tp&& __t) const noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (is_array_v<remove_reference_t<_Tp>>)
  	    {
*************** namespace ranges
*** 153,159 ****
      {
      private:
        template<typename _Tp>
! 	static constexpr bool
  	_S_noexcept()
  	{
  	  if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
--- 157,163 ----
      {
      private:
        template<typename _Tp>
! 	static consteval bool
  	_S_noexcept()
  	{
  	  if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
*************** namespace ranges
*** 168,175 ****
        template<__maybe_borrowed_range _Tp>
  	requires is_bounded_array_v<remove_reference_t<_Tp>>
  	  || __member_end<_Tp> || __adl_end<_Tp>
  	constexpr auto
! 	operator()[[nodiscard]](_Tp&& __t) const noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
  	    {
--- 172,180 ----
        template<__maybe_borrowed_range _Tp>
  	requires is_bounded_array_v<remove_reference_t<_Tp>>
  	  || __member_end<_Tp> || __adl_end<_Tp>
+ 	[[nodiscard, __gnu__::__always_inline__]]
  	constexpr auto
! 	operator()(_Tp&& __t) const noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
  	    {
*************** namespace ranges
*** 209,215 ****
      {
      private:
        template<typename _Tp>
! 	static constexpr bool
  	_S_noexcept()
  	{
  	  if constexpr (__member_rbegin<_Tp>)
--- 214,220 ----
      {
      private:
        template<typename _Tp>
! 	static consteval bool
  	_S_noexcept()
  	{
  	  if constexpr (__member_rbegin<_Tp>)
*************** namespace ranges
*** 232,239 ****
      public:
        template<__maybe_borrowed_range _Tp>
  	requires __member_rbegin<_Tp> || __adl_rbegin<_Tp> || __reversable<_Tp>
  	constexpr auto
! 	operator()[[nodiscard]](_Tp&& __t) const
  	noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (__member_rbegin<_Tp>)
--- 237,245 ----
      public:
        template<__maybe_borrowed_range _Tp>
  	requires __member_rbegin<_Tp> || __adl_rbegin<_Tp> || __reversable<_Tp>
+ 	[[nodiscard, __gnu__::__always_inline__]]
  	constexpr auto
! 	operator()(_Tp&& __t) const
  	noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (__member_rbegin<_Tp>)
*************** namespace ranges
*** 266,272 ****
      {
      private:
        template<typename _Tp>
! 	static constexpr bool
  	_S_noexcept()
  	{
  	  if constexpr (__member_rend<_Tp>)
--- 272,278 ----
      {
      private:
        template<typename _Tp>
! 	static consteval bool
  	_S_noexcept()
  	{
  	  if constexpr (__member_rend<_Tp>)
*************** namespace ranges
*** 289,296 ****
      public:
        template<__maybe_borrowed_range _Tp>
  	requires __member_rend<_Tp> || __adl_rend<_Tp> || __reversable<_Tp>
  	constexpr auto
! 	operator()[[nodiscard]](_Tp&& __t) const
  	noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (__member_rend<_Tp>)
--- 295,303 ----
      public:
        template<__maybe_borrowed_range _Tp>
  	requires __member_rend<_Tp> || __adl_rend<_Tp> || __reversable<_Tp>
+ 	[[nodiscard, __gnu__::__always_inline__]]
  	constexpr auto
! 	operator()(_Tp&& __t) const
  	noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (__member_rend<_Tp>)
*************** namespace ranges
*** 335,341 ****
      {
      private:
        template<typename _Tp>
! 	static constexpr bool
  	_S_noexcept()
  	{
  	  if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
--- 342,348 ----
      {
      private:
        template<typename _Tp>
! 	static consteval bool
  	_S_noexcept()
  	{
  	  if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
*************** namespace ranges
*** 353,360 ****
        template<typename _Tp>
  	requires is_bounded_array_v<remove_reference_t<_Tp>>
  	  || __member_size<_Tp> || __adl_size<_Tp> || __sentinel_size<_Tp>
  	constexpr auto
! 	operator()[[nodiscard]](_Tp&& __t) const noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
  	    return extent_v<remove_reference_t<_Tp>>;
--- 360,368 ----
        template<typename _Tp>
  	requires is_bounded_array_v<remove_reference_t<_Tp>>
  	  || __member_size<_Tp> || __adl_size<_Tp> || __sentinel_size<_Tp>
+ 	[[nodiscard, __gnu__::__always_inline__]]
  	constexpr auto
! 	operator()(_Tp&& __t) const noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (is_bounded_array_v<remove_reference_t<_Tp>>)
  	    return extent_v<remove_reference_t<_Tp>>;
*************** namespace ranges
*** 373,380 ****
        // 3403. Domain of ranges::ssize(E) doesn't match ranges::size(E)
        template<typename _Tp>
  	requires requires (_Tp& __t) { _Size{}(__t); }
  	constexpr auto
! 	operator()[[nodiscard]](_Tp&& __t) const noexcept(noexcept(_Size{}(__t)))
  	{
  	  auto __size = _Size{}(__t);
  	  using __size_type = decltype(__size);
--- 381,389 ----
        // 3403. Domain of ranges::ssize(E) doesn't match ranges::size(E)
        template<typename _Tp>
  	requires requires (_Tp& __t) { _Size{}(__t); }
+ 	[[nodiscard, __gnu__::__always_inline__]]
  	constexpr auto
! 	operator()(_Tp&& __t) const noexcept(noexcept(_Size{}(__t)))
  	{
  	  auto __size = _Size{}(__t);
  	  using __size_type = decltype(__size);
*************** namespace ranges
*** 413,419 ****
      {
      private:
        template<typename _Tp>
! 	static constexpr bool
  	_S_noexcept()
  	{
  	  if constexpr (__member_empty<_Tp>)
--- 422,428 ----
      {
      private:
        template<typename _Tp>
! 	static consteval bool
  	_S_noexcept()
  	{
  	  if constexpr (__member_empty<_Tp>)
*************** namespace ranges
*** 429,436 ****
        template<typename _Tp>
  	requires __member_empty<_Tp> || __size0_empty<_Tp>
  	  || __eq_iter_empty<_Tp>
  	constexpr bool
! 	operator()[[nodiscard]](_Tp&& __t) const noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (__member_empty<_Tp>)
  	    return bool(__t.empty());
--- 438,446 ----
        template<typename _Tp>
  	requires __member_empty<_Tp> || __size0_empty<_Tp>
  	  || __eq_iter_empty<_Tp>
+ 	[[nodiscard, __gnu__::__always_inline__]]
  	constexpr bool
! 	operator()(_Tp&& __t) const noexcept(_S_noexcept<_Tp&>())
  	{
  	  if constexpr (__member_empty<_Tp>)
  	    return bool(__t.empty());
*************** namespace ranges
*** 458,464 ****
      {
      private:
        template<typename _Tp>
! 	static constexpr bool
  	_S_noexcept()
  	{
  	  if constexpr (__member_data<_Tp>)
--- 468,474 ----
      {
      private:
        template<typename _Tp>
! 	static consteval bool
  	_S_noexcept()
  	{
  	  if constexpr (__member_data<_Tp>)
*************** namespace ranges
*** 470,477 ****
      public:
        template<__maybe_borrowed_range _Tp>
  	requires __member_data<_Tp> || __begin_data<_Tp>
  	constexpr auto
! 	operator()[[nodiscard]](_Tp&& __t) const noexcept(_S_noexcept<_Tp>())
  	{
  	  if constexpr (__member_data<_Tp>)
  	    return __t.data();
--- 480,488 ----
      public:
        template<__maybe_borrowed_range _Tp>
  	requires __member_data<_Tp> || __begin_data<_Tp>
+ 	[[nodiscard, __gnu__::__always_inline__]]
  	constexpr auto
! 	operator()(_Tp&& __t) const noexcept(_S_noexcept<_Tp>())
  	{
  	  if constexpr (__member_data<_Tp>)
  	    return __t.data();
*************** namespace ranges
*** 632,637 ****
--- 643,649 ----
    {
  #if __glibcxx_ranges_as_const // >= C++23
      template<input_range _Range>
+       [[__gnu__::__always_inline__]]
        constexpr auto&
        __possibly_const_range(_Range& __r) noexcept
        {
*************** namespace ranges
*** 645,650 ****
--- 657,663 ----
  #else
      // If _To is an lvalue-reference, return const _Tp&, otherwise const _Tp&&.
      template<typename _To, typename _Tp>
+       [[__gnu__::__always_inline__]]
        constexpr decltype(auto)
        __as_const(_Tp& __t) noexcept
        {
*************** namespace ranges
*** 887,893 ****
  		if constexpr (assignable_from<_It&, _Sent>)
  		  __it = std::move(__bound);
  		else if constexpr (random_access_iterator<_It>)
! 		  __it += 0;
  		return __n;
  	      }
  	    else if (__diff > 0 ? __n >= __diff : __n <= __diff)
--- 900,906 ----
  		if constexpr (assignable_from<_It&, _Sent>)
  		  __it = std::move(__bound);
  		else if constexpr (random_access_iterator<_It>)
! 		  __it += iter_difference_t<_It>(0);
  		return __n;
  	      }
  	    else if (__diff > 0 ? __n >= __diff : __n <= __diff)
*************** namespace ranges
*** 907,913 ****
  	      {
  		// inline any possible side effects of advance(it, n)
  		if constexpr (random_access_iterator<_It>)
! 		  __it += 0;
  		return 0;
  	      }
  	  }
--- 920,926 ----
  	      {
  		// inline any possible side effects of advance(it, n)
  		if constexpr (random_access_iterator<_It>)
! 		  __it += iter_difference_t<_It>(0);
  		return 0;
  	      }
  	  }
*************** namespace ranges
*** 967,979 ****
        }
  
      template<typename _It, sized_sentinel_for<decay_t<_It>> _Sent>
!       [[nodiscard]]
        constexpr iter_difference_t<decay_t<_It>>
        operator()(_It&& __first, _Sent __last) const
        { return __last - static_cast<const decay_t<_It>&>(__first); }
  
      template<range _Range>
!       [[nodiscard]]
        constexpr range_difference_t<_Range>
        operator()(_Range&& __r) const
        {
--- 980,992 ----
        }
  
      template<typename _It, sized_sentinel_for<decay_t<_It>> _Sent>
!       [[nodiscard, __gnu__::__always_inline__]]
        constexpr iter_difference_t<decay_t<_It>>
        operator()(_It&& __first, _Sent __last) const
        { return __last - static_cast<const decay_t<_It>&>(__first); }
  
      template<range _Range>
!       [[nodiscard, __gnu__::__always_inline__]]
        constexpr range_difference_t<_Range>
        operator()(_Range&& __r) const
        {
*************** namespace ranges
*** 991,997 ****
    struct __next_fn final
    {
      template<input_or_output_iterator _It>
!       [[nodiscard]]
        constexpr _It
        operator()(_It __x) const
        {
--- 1004,1010 ----
    struct __next_fn final
    {
      template<input_or_output_iterator _It>
!       [[nodiscard, __gnu__::__always_inline__]]
        constexpr _It
        operator()(_It __x) const
        {
*************** namespace ranges
*** 1000,1006 ****
        }
  
      template<input_or_output_iterator _It>
!       [[nodiscard]]
        constexpr _It
        operator()(_It __x, iter_difference_t<_It> __n) const
        {
--- 1013,1019 ----
        }
  
      template<input_or_output_iterator _It>
!       [[nodiscard, __gnu__::__always_inline__]]
        constexpr _It
        operator()(_It __x, iter_difference_t<_It> __n) const
        {
*************** namespace ranges
*** 1009,1015 ****
        }
  
      template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!       [[nodiscard]]
        constexpr _It
        operator()(_It __x, _Sent __bound) const
        {
--- 1022,1028 ----
        }
  
      template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!       [[nodiscard, __gnu__::__always_inline__]]
        constexpr _It
        operator()(_It __x, _Sent __bound) const
        {
*************** namespace ranges
*** 1018,1024 ****
        }
  
      template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!       [[nodiscard]]
        constexpr _It
        operator()(_It __x, iter_difference_t<_It> __n, _Sent __bound) const
        {
--- 1031,1037 ----
        }
  
      template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!       [[nodiscard, __gnu__::__always_inline__]]
        constexpr _It
        operator()(_It __x, iter_difference_t<_It> __n, _Sent __bound) const
        {
*************** namespace ranges
*** 1034,1040 ****
    struct __prev_fn final
    {
      template<bidirectional_iterator _It>
!       [[nodiscard]]
        constexpr _It
        operator()(_It __x) const
        {
--- 1047,1053 ----
    struct __prev_fn final
    {
      template<bidirectional_iterator _It>
!       [[nodiscard, __gnu__::__always_inline__]]
        constexpr _It
        operator()(_It __x) const
        {
*************** namespace ranges
*** 1043,1049 ****
        }
  
      template<bidirectional_iterator _It>
!       [[nodiscard]]
        constexpr _It
        operator()(_It __x, iter_difference_t<_It> __n) const
        {
--- 1056,1062 ----
        }
  
      template<bidirectional_iterator _It>
!       [[nodiscard, __gnu__::__always_inline__]]
        constexpr _It
        operator()(_It __x, iter_difference_t<_It> __n) const
        {
*************** namespace ranges
*** 1052,1058 ****
        }
  
      template<bidirectional_iterator _It>
!       [[nodiscard]]
        constexpr _It
        operator()(_It __x, iter_difference_t<_It> __n, _It __bound) const
        {
--- 1065,1071 ----
        }
  
      template<bidirectional_iterator _It>
!       [[nodiscard, __gnu__::__always_inline__]]
        constexpr _It
        operator()(_It __x, iter_difference_t<_It> __n, _It __bound) const
        {
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/shared_ptr_base.h gcc-16-20250914/libstdc++-v3/include/bits/shared_ptr_base.h
*** gcc-16-20250907/libstdc++-v3/include/bits/shared_ptr_base.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/shared_ptr_base.h	Sun Sep 14 22:32:38 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 148,154 ****
        // Increment the use count (used when the count is greater than zero).
        void
        _M_add_ref_copy()
!       { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); }
  
        // Increment the use count if it is non-zero, throw otherwise.
        void
--- 148,154 ----
        // Increment the use count (used when the count is greater than zero).
        void
        _M_add_ref_copy()
!       { _S_chk(__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1)); }
  
        // Increment the use count if it is non-zero, throw otherwise.
        void
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 200,206 ****
        // Increment the weak count.
        void
        _M_weak_add_ref() noexcept
!       { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); }
  
        // Decrement the weak count.
        void
--- 200,212 ----
        // Increment the weak count.
        void
        _M_weak_add_ref() noexcept
!       {
! 	// _M_weak_count can always use negative values because it cannot be
! 	// observed by users (unlike _M_use_count). See _S_chk for details.
! 	constexpr _Atomic_word __max = -1;
! 	if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, 1) == __max)
! 	  [[__unlikely__]] __builtin_trap();
!       }
  
        // Decrement the weak count.
        void
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 224,242 ****
        long
        _M_get_use_count() const noexcept
        {
          // No memory barrier is used here so there is no synchronization
          // with other threads.
!         return __atomic_load_n(&_M_use_count, __ATOMIC_RELAXED);
        }
  
      private:
        _Sp_counted_base(_Sp_counted_base const&) = delete;
        _Sp_counted_base& operator=(_Sp_counted_base const&) = delete;
  
        _Atomic_word  _M_use_count;     // #shared
        _Atomic_word  _M_weak_count;    // #weak + (#shared != 0)
      };
  
    template<>
      inline bool
      _Sp_counted_base<_S_single>::
--- 230,310 ----
        long
        _M_get_use_count() const noexcept
        {
+ 	// If long is wider than _Atomic_word then we can treat _Atomic_word
+ 	// as unsigned, and so double its usable range. If the widths are the
+ 	// same then casting to unsigned and then to long is a no-op.
+ 	using _Up = typename make_unsigned<_Atomic_word>::type;
+ 
          // No memory barrier is used here so there is no synchronization
          // with other threads.
! 	return (_Up) __atomic_load_n(&_M_use_count, __ATOMIC_RELAXED);
        }
  
      private:
        _Sp_counted_base(_Sp_counted_base const&) = delete;
        _Sp_counted_base& operator=(_Sp_counted_base const&) = delete;
  
+       // Called when incrementing _M_use_count to cause a trap on overflow.
+       // This should be passed the value of the counter before the increment.
+       static void
+       _S_chk(_Atomic_word __count)
+       {
+ 	// __max is the maximum allowed value for the shared reference count.
+ 	// All valid reference count values need to fit into [0,LONG_MAX)
+ 	// because users can observe the count via shared_ptr::use_count().
+ 	//
+ 	// When long is wider than _Atomic_word, _M_use_count can go negative
+ 	// and the cast in _Sp_counted_base::use_count() will turn it into a
+ 	// positive value suitable for returning to users. The implementation
+ 	// only cares whether _M_use_count reaches zero after a decrement,
+ 	// so negative values are not a problem internally.
+ 	// So when possible, use -1 for __max (incrementing past that would
+ 	// overflow _M_use_count to 0, which means an empty shared_ptr).
+ 	//
+ 	// When long is not wider than _Atomic_word, __max is just the type's
+ 	// maximum positive value. We cannot use negative counts because they
+ 	// would not fit in [0,LONG_MAX) after casting to an unsigned type,
+ 	// which would cause use_count() to return bogus values.
+ 	constexpr _Atomic_word __max
+ 	  = sizeof(long) > sizeof(_Atomic_word)
+ 	      ? -1 : __gnu_cxx::__int_traits<_Atomic_word>::__max;
+ 
+ 	if (__count == __max) [[__unlikely__]]
+ 	  __builtin_trap();
+       }
+ 
        _Atomic_word  _M_use_count;     // #shared
        _Atomic_word  _M_weak_count;    // #weak + (#shared != 0)
      };
  
+   // We use __atomic_add_single and __exchange_and_add_single in the _S_single
+   // member specializations because they use unsigned arithmetic and so avoid
+   // undefined overflow.
+   template<>
+     inline void
+     _Sp_counted_base<_S_single>::_M_add_ref_copy()
+     {
+       _S_chk(_M_use_count);
+       __gnu_cxx::__atomic_add_single(&_M_use_count, 1);
+     }
+ 
+   template<>
+     inline void
+     _Sp_counted_base<_S_single>::_M_weak_release() noexcept
+     {
+       if (__gnu_cxx::__exchange_and_add_single(&_M_weak_count, -1) == 1)
+ 	_M_destroy();
+     }
+ 
+   template<>
+     inline long
+     _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept
+     {
+       using _Up = typename make_unsigned<_Atomic_word>::type;
+       return (_Up) _M_use_count;
+     }
+ 
+ 
    template<>
      inline bool
      _Sp_counted_base<_S_single>::
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 244,250 ****
      {
        if (_M_use_count == 0)
  	return false;
!       ++_M_use_count;
        return true;
      }
  
--- 312,318 ----
      {
        if (_M_use_count == 0)
  	return false;
!       _M_add_ref_copy();
        return true;
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 254,261 ****
      _M_add_ref_lock_nothrow() noexcept
      {
        __gnu_cxx::__scoped_lock sentry(*this);
!       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0)
  	{
  	  _M_use_count = 0;
  	  return false;
  	}
--- 322,336 ----
      _M_add_ref_lock_nothrow() noexcept
      {
        __gnu_cxx::__scoped_lock sentry(*this);
!       if (auto __c = __gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1))
! 	_S_chk(__c);
!       else
  	{
+ 	  // Count was zero, so we cannot lock it to get a shared_ptr.
+ 	  // Reset to zero. This isn't racy, because there are no shared_ptr
+ 	  // objects using this count and any other weak_ptr objects using it
+ 	  // must call this function to modify _M_use_count, so would be
+ 	  // synchronized by the mutex.
  	  _M_use_count = 0;
  	  return false;
  	}
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 279,301 ****
        while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1,
  					  true, __ATOMIC_ACQ_REL,
  					  __ATOMIC_RELAXED));
        return true;
      }
  
    template<>
      inline void
-     _Sp_counted_base<_S_single>::_M_add_ref_copy()
-     { ++_M_use_count; }
- 
-   template<>
-     inline void
      _Sp_counted_base<_S_single>::_M_release() noexcept
      {
!       if (--_M_use_count == 0)
          {
!           _M_dispose();
!           if (--_M_weak_count == 0)
!             _M_destroy();
          }
      }
  
--- 354,371 ----
        while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1,
  					  true, __ATOMIC_ACQ_REL,
  					  __ATOMIC_RELAXED));
+       _S_chk(__count);
        return true;
      }
  
    template<>
      inline void
      _Sp_counted_base<_S_single>::_M_release() noexcept
      {
!       if (__gnu_cxx::__exchange_and_add_single(&_M_use_count, -1) == 1)
          {
! 	  _M_dispose();
! 	  _M_weak_release();
          }
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 364,388 ****
  #pragma GCC diagnostic pop
      }
  
-   template<>
-     inline void
-     _Sp_counted_base<_S_single>::_M_weak_add_ref() noexcept
-     { ++_M_weak_count; }
- 
-   template<>
-     inline void
-     _Sp_counted_base<_S_single>::_M_weak_release() noexcept
-     {
-       if (--_M_weak_count == 0)
-         _M_destroy();
-     }
- 
-   template<>
-     inline long
-     _Sp_counted_base<_S_single>::_M_get_use_count() const noexcept
-     { return _M_use_count; }
- 
- 
    // Forward declarations.
    template<typename _Tp, _Lock_policy _Lp = __default_lock_policy>
      class __shared_ptr;
--- 434,439 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2012,2017 ****
--- 2063,2072 ----
    template<typename _Tp, _Lock_policy _Lp>
      class __weak_ptr
      {
+     public:
+       using element_type = typename remove_extent<_Tp>::type;
+ 
+     private:
        template<typename _Yp, typename _Res = void>
  	using _Compatible = typename
  	  enable_if<__sp_compatible_with<_Yp*, _Tp*>::value, _Res>::type;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2020,2028 ****
        template<typename _Yp>
  	using _Assignable = _Compatible<_Yp, __weak_ptr&>;
  
!     public:
!       using element_type = typename remove_extent<_Tp>::type;
  
        constexpr __weak_ptr() noexcept
        : _M_ptr(nullptr), _M_refcount()
        { }
--- 2075,2118 ----
        template<typename _Yp>
  	using _Assignable = _Compatible<_Yp, __weak_ptr&>;
  
! #pragma GCC diagnostic push
! #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
!       // Helper for construction/assignment:
!       template<typename _Yp>
! 	static element_type*
! 	_S_safe_upcast(const __weak_ptr<_Yp, _Lp>& __r)
! 	{
! 	  // We know that _Yp and _Tp are compatible, that is, either
! 	  // _Yp* is convertible to _Tp* or _Yp is U[N] and _Tp is U cv [].
! 
! 	  // If _Yp is the same as _Tp after removing extents and cv
! 	  // qualifications, there's no pointer adjustments to do. This
! 	  // also allows us to support incomplete types.
! 	  using _At = typename remove_cv<typename remove_extent<_Tp>::type>::type;
! 	  using _Bt = typename remove_cv<typename remove_extent<_Yp>::type>::type;
! 	  if constexpr (is_same<_At, _Bt>::value)
! 	    return __r._M_ptr;
! 	  // If they're not the same type, but they're both scalars,
! 	  // we again don't need any adjustment. This allows us to support e.g.
! 	  // pointers to a differently cv qualified type X.
! 	  else if constexpr (__and_<is_scalar<_At>, is_scalar<_Bt>>::value)
! 	    return __r._M_ptr;
! #if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_is_virtual_base_of)
! 	  // If _Tp is not a virtual base class of _Yp, the pointer
! 	  // conversion does not require dereferencing __r._M_ptr; just
! 	  // rely on the implicit conversion.
! 	  else if constexpr (!__builtin_is_virtual_base_of(_Tp, _Yp))
! 	    return __r._M_ptr;
! #endif
! 	  // Expensive path; must lock() and do the pointer conversion while
! 	  // a shared_ptr keeps the pointee alive (because we may need
! 	  // to dereference).
! 	  else
! 	    return __r.lock().get();
! 	}
! #pragma GCC diagnostic pop
  
+     public:
        constexpr __weak_ptr() noexcept
        : _M_ptr(nullptr), _M_refcount()
        { }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2047,2054 ****
        // in multithreaded programs __r._M_ptr may be invalidated at any point.
        template<typename _Yp, typename = _Compatible<_Yp>>
  	__weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept
! 	: _M_refcount(__r._M_refcount)
!         { _M_ptr = __r.lock().get(); }
  
        template<typename _Yp, typename = _Compatible<_Yp>>
  	__weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept
--- 2137,2144 ----
        // in multithreaded programs __r._M_ptr may be invalidated at any point.
        template<typename _Yp, typename = _Compatible<_Yp>>
  	__weak_ptr(const __weak_ptr<_Yp, _Lp>& __r) noexcept
! 	: _M_ptr(_S_safe_upcast(__r)), _M_refcount(__r._M_refcount)
!         { }
  
        template<typename _Yp, typename = _Compatible<_Yp>>
  	__weak_ptr(const __shared_ptr<_Yp, _Lp>& __r) noexcept
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2061,2067 ****
  
        template<typename _Yp, typename = _Compatible<_Yp>>
  	__weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept
! 	: _M_ptr(__r.lock().get()), _M_refcount(std::move(__r._M_refcount))
          { __r._M_ptr = nullptr; }
  
        __weak_ptr&
--- 2151,2157 ----
  
        template<typename _Yp, typename = _Compatible<_Yp>>
  	__weak_ptr(__weak_ptr<_Yp, _Lp>&& __r) noexcept
! 	: _M_ptr(_S_safe_upcast(__r)), _M_refcount(std::move(__r._M_refcount))
          { __r._M_ptr = nullptr; }
  
        __weak_ptr&
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2071,2077 ****
  	_Assignable<_Yp>
  	operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept
  	{
! 	  _M_ptr = __r.lock().get();
  	  _M_refcount = __r._M_refcount;
  	  return *this;
  	}
--- 2161,2167 ----
  	_Assignable<_Yp>
  	operator=(const __weak_ptr<_Yp, _Lp>& __r) noexcept
  	{
! 	  _M_ptr = _S_safe_upcast(__r);
  	  _M_refcount = __r._M_refcount;
  	  return *this;
  	}
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2096,2102 ****
  	_Assignable<_Yp>
  	operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept
  	{
! 	  _M_ptr = __r.lock().get();
  	  _M_refcount = std::move(__r._M_refcount);
  	  __r._M_ptr = nullptr;
  	  return *this;
--- 2186,2192 ----
  	_Assignable<_Yp>
  	operator=(__weak_ptr<_Yp, _Lp>&& __r) noexcept
  	{
! 	  _M_ptr = _S_safe_upcast(__r);
  	  _M_refcount = std::move(__r._M_refcount);
  	  __r._M_ptr = nullptr;
  	  return *this;
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/stl_algo.h gcc-16-20250914/libstdc++-v3/include/bits/stl_algo.h
*** gcc-16-20250907/libstdc++-v3/include/bits/stl_algo.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/stl_algo.h	Sun Sep 14 22:32:38 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 204,210 ****
  	  while (__unary_pred(--__backTrack))
  	    {
  	      if (--__remainder == 0)
! 		return (__first - __count); // Success
  	    }
  	  __remainder = __count + 1 - (__first - __backTrack);
  	}
--- 204,210 ----
  	  while (__unary_pred(--__backTrack))
  	    {
  	      if (--__remainder == 0)
! 		return __first - _DistanceType(__count); // Success
  	    }
  	  __remainder = __count + 1 - (__first - __backTrack);
  	}
*************** _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
*** 1258,1266 ****
  	    {
  	      if (__is_pod(_ValueType) && __k == 1)
  		{
  		  _ValueType __t = _GLIBCXX_MOVE(*__p);
! 		  _GLIBCXX_MOVE3(__p + 1, __p + __n, __p);
! 		  *(__p + __n - 1) = _GLIBCXX_MOVE(__t);
  		  return __ret;
  		}
  	      _RandomAccessIterator __q = __p + __k;
--- 1258,1269 ----
  	    {
  	      if (__is_pod(_ValueType) && __k == 1)
  		{
+ 		  _RandomAccessIterator __mid = __p + _Distance(__n - 1);
+ 		  _RandomAccessIterator __end = __mid;
+ 		  ++__end;
  		  _ValueType __t = _GLIBCXX_MOVE(*__p);
! 		  _GLIBCXX_MOVE3(__p + _Distance(1), __end, __p);
! 		  *__mid = _GLIBCXX_MOVE(__t);
  		  return __ret;
  		}
  	      _RandomAccessIterator __q = __p + __k;
*************** _GLIBCXX_BEGIN_INLINE_ABI_NAMESPACE(_V2)
*** 1281,1288 ****
  	      __k = __n - __k;
  	      if (__is_pod(_ValueType) && __k == 1)
  		{
! 		  _ValueType __t = _GLIBCXX_MOVE(*(__p + __n - 1));
! 		  _GLIBCXX_MOVE_BACKWARD3(__p, __p + __n - 1, __p + __n);
  		  *__p = _GLIBCXX_MOVE(__t);
  		  return __ret;
  		}
--- 1284,1294 ----
  	      __k = __n - __k;
  	      if (__is_pod(_ValueType) && __k == 1)
  		{
! 		  _RandomAccessIterator __mid = __p + _Distance(__n - 1);
! 		  _RandomAccessIterator __end = __mid;
! 		  ++__end;
! 		  _ValueType __t = _GLIBCXX_MOVE(*__mid);
! 		  _GLIBCXX_MOVE_BACKWARD3(__p, __mid, __end);
  		  *__p = _GLIBCXX_MOVE(__t);
  		  return __ret;
  		}
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1770,1784 ****
      __insertion_sort(_RandomAccessIterator __first,
  		     _RandomAccessIterator __last, _Compare __comp)
      {
!       if (__first == __last) return;
  
!       for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
  	{
  	  if (__comp(__i, __first))
  	    {
! 	      typename iterator_traits<_RandomAccessIterator>::value_type
! 		__val = _GLIBCXX_MOVE(*__i);
! 	      _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + 1);
  	      *__first = _GLIBCXX_MOVE(__val);
  	    }
  	  else
--- 1776,1793 ----
      __insertion_sort(_RandomAccessIterator __first,
  		     _RandomAccessIterator __last, _Compare __comp)
      {
!       if (__first == __last)
! 	return;
  
!       typedef iterator_traits<_RandomAccessIterator> _IterTraits;
!       typedef typename _IterTraits::difference_type _Dist;
! 
!       for (_RandomAccessIterator __i = __first + _Dist(1); __i != __last; ++__i)
  	{
  	  if (__comp(__i, __first))
  	    {
! 	      typename _IterTraits::value_type __val = _GLIBCXX_MOVE(*__i);
! 	      _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + _Dist(1));
  	      *__first = _GLIBCXX_MOVE(__val);
  	    }
  	  else
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1812,1821 ****
      __final_insertion_sort(_RandomAccessIterator __first,
  			   _RandomAccessIterator __last, _Compare __comp)
      {
!       if (__last - __first > int(_S_threshold))
  	{
! 	  std::__insertion_sort(__first, __first + int(_S_threshold), __comp);
! 	  std::__unguarded_insertion_sort(__first + int(_S_threshold), __last,
  					  __comp);
  	}
        else
--- 1821,1833 ----
      __final_insertion_sort(_RandomAccessIterator __first,
  			   _RandomAccessIterator __last, _Compare __comp)
      {
!       typename iterator_traits<_RandomAccessIterator>::difference_type
! 	__threshold = _S_threshold;
! 
!       if (__last - __first > __threshold)
  	{
! 	  std::__insertion_sort(__first, __first + __threshold, __comp);
! 	  std::__unguarded_insertion_sort(__first + __threshold, __last,
  					  __comp);
  	}
        else
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1851,1860 ****
      __unguarded_partition_pivot(_RandomAccessIterator __first,
  				_RandomAccessIterator __last, _Compare __comp)
      {
!       _RandomAccessIterator __mid = __first + (__last - __first) / 2;
!       std::__move_median_to_first(__first, __first + 1, __mid, __last - 1,
  				  __comp);
!       return std::__unguarded_partition(__first + 1, __last, __first, __comp);
      }
  
    template<typename _RandomAccessIterator, typename _Compare>
--- 1863,1876 ----
      __unguarded_partition_pivot(_RandomAccessIterator __first,
  				_RandomAccessIterator __last, _Compare __comp)
      {
!       typedef iterator_traits<_RandomAccessIterator> _IterTraits;
!       typedef typename _IterTraits::difference_type _Dist;
! 
!       _RandomAccessIterator __mid = __first + _Dist((__last - __first) / 2);
!       _RandomAccessIterator __second = __first + _Dist(1);
!       std::__move_median_to_first(__first, __second, __mid, __last - _Dist(1),
  				  __comp);
!       return std::__unguarded_partition(__second, __last, __first, __comp);
      }
  
    template<typename _RandomAccessIterator, typename _Compare>
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1916,1926 ****
  		  _RandomAccessIterator __last, _Size __depth_limit,
  		  _Compare __comp)
      {
        while (__last - __first > 3)
  	{
  	  if (__depth_limit == 0)
  	    {
! 	      std::__heap_select(__first, __nth + 1, __last, __comp);
  	      // Place the nth largest element in its final position.
  	      std::iter_swap(__first, __nth);
  	      return;
--- 1932,1945 ----
  		  _RandomAccessIterator __last, _Size __depth_limit,
  		  _Compare __comp)
      {
+       _RandomAccessIterator __after_nth = __nth;
+       ++__after_nth;
+ 
        while (__last - __first > 3)
  	{
  	  if (__depth_limit == 0)
  	    {
! 	      std::__heap_select(__first, __after_nth, __last, __comp);
  	      // Place the nth largest element in its final position.
  	      std::iter_swap(__first, __nth);
  	      return;
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 3822,3828 ****
  	{
  	  if (__n2 <= 0)
  	    return __first;
! 	  auto __last = __first + __n2;
  	  std::for_each(__first, __last, std::move(__f));
  	  return __last;
  	}
--- 3841,3848 ----
  	{
  	  if (__n2 <= 0)
  	    return __first;
! 	  typename iterator_traits<_InputIterator>::difference_type __d = __n2;
! 	  auto __last = __first + __d;
  	  std::for_each(__first, __last, std::move(__f));
  	  return __last;
  	}
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4544,4549 ****
--- 4564,4572 ----
        if (__first == __last)
  	return;
  
+       typedef typename iterator_traits<_RandomAccessIterator>::difference_type
+ 	_Dist;
+ 
  #if RAND_MAX < __INT_MAX__
        if (__builtin_expect((__last - __first) >= RAND_MAX / 4, 0))
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4551,4564 ****
  	  // instead of using rand() for all the random numbers needed.
  	  unsigned __xss
  	    = (unsigned)std::rand() ^ ((unsigned)std::rand() << 15);
! 	  for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
  	    {
  	      __xss += !__xss;
  	      __xss ^= __xss << 13;
  	      __xss ^= __xss >> 17;
  	      __xss ^= __xss << 5;
! 	      _RandomAccessIterator __j = __first
! 					    + (__xss % ((__i - __first) + 1));
  	      if (__i != __j)
  		std::iter_swap(__i, __j);
  	    }
--- 4574,4588 ----
  	  // instead of using rand() for all the random numbers needed.
  	  unsigned __xss
  	    = (unsigned)std::rand() ^ ((unsigned)std::rand() << 15);
! 	  for (_RandomAccessIterator __i = __first + _Dist(1); __i != __last;
! 	       ++__i)
  	    {
  	      __xss += !__xss;
  	      __xss ^= __xss << 13;
  	      __xss ^= __xss >> 17;
  	      __xss ^= __xss << 5;
! 	      _RandomAccessIterator __j
! 		= __first + _Dist(__xss % ((__i - __first) + 1));
  	      if (__i != __j)
  		std::iter_swap(__i, __j);
  	    }
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4566,4576 ****
  	}
  #endif
  
!       for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
  	{
  	  // XXX rand() % N is not uniformly distributed
! 	  _RandomAccessIterator __j = __first
! 					+ (std::rand() % ((__i - __first) + 1));
  	  if (__i != __j)
  	    std::iter_swap(__i, __j);
  	}
--- 4590,4600 ----
  	}
  #endif
  
!       for (_RandomAccessIterator __i = __first + _Dist(1); __i != __last; ++__i)
  	{
  	  // XXX rand() % N is not uniformly distributed
! 	  _RandomAccessIterator __j
! 	    = __first + _Dist(std::rand() % ((__i - __first) + 1));
  	  if (__i != __j)
  	    std::iter_swap(__i, __j);
  	}
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4611,4619 ****
  
        if (__first == __last)
  	return;
!       for (_RandomAccessIterator __i = __first + 1; __i != __last; ++__i)
  	{
! 	  _RandomAccessIterator __j = __first + __rand((__i - __first) + 1);
  	  if (__i != __j)
  	    std::iter_swap(__i, __j);
  	}
--- 4635,4648 ----
  
        if (__first == __last)
  	return;
! 
!       typedef typename iterator_traits<_RandomAccessIterator>::difference_type
! 	_Dist;
! 
!       for (_RandomAccessIterator __i = __first + _Dist(1); __i != __last; ++__i)
  	{
! 	  _RandomAccessIterator __j
! 	    = __first + _Dist(__rand((__i - __first) + 1));
  	  if (__i != __j)
  	    std::iter_swap(__i, __j);
  	}
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/stl_algobase.h gcc-16-20250914/libstdc++-v3/include/bits/stl_algobase.h
*** gcc-16-20250907/libstdc++-v3/include/bits/stl_algobase.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/stl_algobase.h	Sun Sep 14 22:32:38 2025
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1150,1159 ****
        if (__n <= 0)
  	return __first;
  
!       __glibcxx_requires_can_increment(__first, __n);
  
!       std::__fill_a(__first, __first + __n, __value);
!       return __first + __n;
      }
  
    /**
--- 1150,1161 ----
        if (__n <= 0)
  	return __first;
  
!       typename iterator_traits<_OutputIterator>::difference_type __d = __n;
!       __glibcxx_requires_can_increment(__first, __d);
  
!       _OutputIterator __last = __first + __d;
!       std::__fill_a(__first, __last, __value);
!       return __last;
      }
  
    /**
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1310,1320 ****
  	__newlast1(_RAI1 __first1, _RAI1 __last1,
  		   _RAI2 __first2, _RAI2 __last2)
  	{
! 	  const typename iterator_traits<_RAI1>::difference_type
! 	    __diff1 = __last1 - __first1;
! 	  const typename iterator_traits<_RAI2>::difference_type
! 	    __diff2 = __last2 - __first2;
! 	  return __diff2 < __diff1 ? __first1 + __diff2 : __last1;
  	}
  
        template<typename _RAI>
--- 1312,1322 ----
  	__newlast1(_RAI1 __first1, _RAI1 __last1,
  		   _RAI2 __first2, _RAI2 __last2)
  	{
! 	  typedef typename iterator_traits<_RAI1>::difference_type _Diff1;
! 	  typedef typename iterator_traits<_RAI2>::difference_type _Diff2;
! 	  const _Diff1 __diff1 = __last1 - __first1;
! 	  const _Diff2 __diff2 = __last2 - __first2;
! 	  return __diff2 < __diff1 ? __first1 + _Diff1(__diff2) : __last1;
  	}
  
        template<typename _RAI>
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/stl_heap.h gcc-16-20250914/libstdc++-v3/include/bits/stl_heap.h
*** gcc-16-20250907/libstdc++-v3/include/bits/stl_heap.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/stl_heap.h	Sun Sep 14 22:32:38 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 76,81 ****
--- 76,87 ----
      __is_heap_until(_RandomAccessIterator __first, _Distance __n,
  		    _Compare& __comp)
      {
+ #if __cplusplus >= 201103L
+       using _IterTraits = iterator_traits<_RandomAccessIterator>;
+       static_assert(is_same<typename _IterTraits::difference_type,
+ 			    _Distance>::value,
+ 		    "Argument 'n' must be the iterator's difference type");
+ #endif
        _Distance __parent = 0;
        for (_Distance __child = 1; __child < __n; ++__child)
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 94,101 ****
      inline bool
      __is_heap(_RandomAccessIterator __first, _Distance __n)
      {
        __gnu_cxx::__ops::_Iter_less_iter __comp;
!       return std::__is_heap_until(__first, __n, __comp) == __n;
      }
  
    template<typename _RandomAccessIterator, typename _Compare,
--- 100,108 ----
      inline bool
      __is_heap(_RandomAccessIterator __first, _Distance __n)
      {
+       typename iterator_traits<_RandomAccessIterator>::difference_type __d(__n);
        __gnu_cxx::__ops::_Iter_less_iter __comp;
!       return std::__is_heap_until(__first, __d, __comp) == __n;
      }
  
    template<typename _RandomAccessIterator, typename _Compare,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 104,112 ****
      inline bool
      __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n)
      {
        typedef __decltype(__comp) _Cmp;
        __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp));
!       return std::__is_heap_until(__first, __n, __cmp) == __n;
      }
  
    template<typename _RandomAccessIterator>
--- 111,120 ----
      inline bool
      __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n)
      {
+       typename iterator_traits<_RandomAccessIterator>::difference_type __d(__n);
        typedef __decltype(__comp) _Cmp;
        __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp));
!       return std::__is_heap_until(__first, __d, __cmp) == __n;
      }
  
    template<typename _RandomAccessIterator>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 172,181 ****
        __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
!       __glibcxx_requires_heap(__first, __last - 1);
  
        __gnu_cxx::__ops::_Iter_less_val __comp;
!       _ValueType __value = _GLIBCXX_MOVE(*(__last - 1));
        std::__push_heap(__first, _DistanceType((__last - __first) - 1),
  		       _DistanceType(0), _GLIBCXX_MOVE(__value), __comp);
      }
--- 180,189 ----
        __glibcxx_function_requires(_LessThanComparableConcept<_ValueType>)
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
!       __glibcxx_requires_heap(__first, __last - _DistanceType(1));
  
        __gnu_cxx::__ops::_Iter_less_val __comp;
!       _ValueType __value = _GLIBCXX_MOVE(*(__last - _DistanceType(1)));
        std::__push_heap(__first, _DistanceType((__last - __first) - 1),
  		       _DistanceType(0), _GLIBCXX_MOVE(__value), __comp);
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 208,218 ****
  	    _RandomAccessIterator>)
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
!       __glibcxx_requires_heap_pred(__first, __last - 1, __comp);
  
        __decltype(__gnu_cxx::__ops::__iter_comp_val(_GLIBCXX_MOVE(__comp)))
  	__cmp(_GLIBCXX_MOVE(__comp));
!       _ValueType __value = _GLIBCXX_MOVE(*(__last - 1));
        std::__push_heap(__first, _DistanceType((__last - __first) - 1),
  		       _DistanceType(0), _GLIBCXX_MOVE(__value), __cmp);
      }
--- 216,226 ----
  	    _RandomAccessIterator>)
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
!       __glibcxx_requires_heap_pred(__first, __last - _DistanceType(1), __comp);
  
        __decltype(__gnu_cxx::__ops::__iter_comp_val(_GLIBCXX_MOVE(__comp)))
  	__cmp(_GLIBCXX_MOVE(__comp));
!       _ValueType __value = _GLIBCXX_MOVE(*(__last - _DistanceType(1)));
        std::__push_heap(__first, _DistanceType((__last - __first) - 1),
  		       _DistanceType(0), _GLIBCXX_MOVE(__value), __cmp);
      }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/unique_ptr.h gcc-16-20250914/libstdc++-v3/include/bits/unique_ptr.h
*** gcc-16-20250907/libstdc++-v3/include/bits/unique_ptr.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/unique_ptr.h	Sun Sep 14 22:32:38 2025
***************
*** 1,4 ****
- 
  // unique_ptr implementation -*- C++ -*-
  
  // Copyright (C) 2008-2025 Free Software Foundation, Inc.
--- 1,3 ----
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/version.def gcc-16-20250914/libstdc++-v3/include/bits/version.def
*** gcc-16-20250907/libstdc++-v3/include/bits/version.def	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/version.def	Sun Sep 14 22:32:38 2025
*************** ftms = {
*** 394,399 ****
--- 394,407 ----
  };
  
  ftms = {
+   name = constant_wrapper;
+   values = {
+     v = 202506;
+     cxxmin = 26;
+   };
+ };
+ 
+ ftms = {
    name = has_unique_object_representations;
    values = {
      v = 201606;
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/bits/version.h gcc-16-20250914/libstdc++-v3/include/bits/version.h
*** gcc-16-20250907/libstdc++-v3/include/bits/version.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/bits/version.h	Sun Sep 14 22:32:38 2025
***************
*** 430,435 ****
--- 430,445 ----
  #endif /* !defined(__cpp_lib_byte) && defined(__glibcxx_want_byte) */
  #undef __glibcxx_want_byte
  
+ #if !defined(__cpp_lib_constant_wrapper)
+ # if (__cplusplus >  202302L)
+ #  define __glibcxx_constant_wrapper 202506L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constant_wrapper)
+ #   define __cpp_lib_constant_wrapper 202506L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_constant_wrapper) && defined(__glibcxx_want_constant_wrapper) */
+ #undef __glibcxx_want_constant_wrapper
+ 
  #if !defined(__cpp_lib_has_unique_object_representations)
  # if (__cplusplus >= 201703L) && (defined(_GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP))
  #  define __glibcxx_has_unique_object_representations 201606L
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/debug/bitset gcc-16-20250914/libstdc++-v3/include/debug/bitset
*** gcc-16-20250907/libstdc++-v3/include/debug/bitset	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/debug/bitset	Sun Sep 14 22:32:38 2025
*************** namespace __debug
*** 179,185 ****
        bitset(const _Base& __x) : _Base(__x) { }
  
  #if __cplusplus >= 201103L
!       template<typename _CharT>
  	_GLIBCXX23_CONSTEXPR
          explicit
          bitset(const _CharT* __str,
--- 179,191 ----
        bitset(const _Base& __x) : _Base(__x) { }
  
  #if __cplusplus >= 201103L
!       // _GLIBCXX_RESOLVE_LIB_DEFECTS
!       // 4294. bitset(const CharT*) constructor needs to be constrained
!       template<typename _CharT,
! 	       typename = _Require<is_trivially_copyable<_CharT>,
! 				   is_standard_layout<_CharT>,
! 				   is_trivially_default_constructible<_CharT>,
! 				   __not_<is_array<_CharT>>>>
  	_GLIBCXX23_CONSTEXPR
          explicit
          bitset(const _CharT* __str,
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/ext/atomicity.h gcc-16-20250914/libstdc++-v3/include/ext/atomicity.h
*** gcc-16-20250907/libstdc++-v3/include/ext/atomicity.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/ext/atomicity.h	Sun Sep 14 22:32:38 2025
***************
*** 39,44 ****
--- 39,47 ----
  #if __has_include(<sys/single_threaded.h>)
  # include <sys/single_threaded.h>
  #endif
+ #if __cplusplus >= 201103L
+ # include <type_traits> // make_unsigned_t
+ #endif
  
  namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
  {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 79,97 ****
    __atomic_add(volatile _Atomic_word*, int) _GLIBCXX_NOTHROW;
  #endif
  
    inline _Atomic_word
    __attribute__((__always_inline__))
    __exchange_and_add_single(_Atomic_word* __mem, int __val)
    {
      _Atomic_word __result = *__mem;
!     *__mem += __val;
      return __result;
    }
  
    inline void
    __attribute__((__always_inline__))
    __atomic_add_single(_Atomic_word* __mem, int __val)
!   { *__mem += __val; }
  
    inline _Atomic_word
    __attribute__ ((__always_inline__))
--- 82,128 ----
    __atomic_add(volatile _Atomic_word*, int) _GLIBCXX_NOTHROW;
  #endif
  
+ #if __cplusplus < 201103L
+   // The array bound will be ill-formed in the very unlikely case that
+   // _Atomic_word is wider than long and we need to use unsigned long long
+   // below in __exchange_and_add_single and __atomic_add_single.
+   typedef int
+     _Atomic_word_fits_in_long[sizeof(_Atomic_word) <= sizeof(long) ? 1 : -1];
+ #endif
+ 
    inline _Atomic_word
    __attribute__((__always_inline__))
    __exchange_and_add_single(_Atomic_word* __mem, int __val)
    {
      _Atomic_word __result = *__mem;
!     // Do the addition with an unsigned type so that overflow is well defined.
! #if __cplusplus >= 201103L
!     std::make_unsigned<_Atomic_word>::type __u;
! #else
!     // For most targets make_unsigned_t<_Atomic_word> is unsigned int,
!     // but 64-bit sparc uses long for _Atomic_word.
!     // Sign-extending to unsigned long works for both cases.
!     unsigned long __u;
! #endif
!     __u = __result;
!     __u += __val;
!     *__mem = __u;
      return __result;
    }
  
    inline void
    __attribute__((__always_inline__))
    __atomic_add_single(_Atomic_word* __mem, int __val)
!   {
! #if __cplusplus >= 201103L
!     std::make_unsigned<_Atomic_word>::type __u;
! #else
!     unsigned long __u; // see above
! #endif
!     __u = *__mem;
!     __u += __val;
!     *__mem = __u;
!   }
  
    inline _Atomic_word
    __attribute__ ((__always_inline__))
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/ext/pointer.h gcc-16-20250914/libstdc++-v3/include/ext/pointer.h
*** gcc-16-20250907/libstdc++-v3/include/ext/pointer.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/ext/pointer.h	Sun Sep 14 22:32:38 2025
***************
*** 40,45 ****
--- 40,46 ----
  #pragma GCC system_header
  #endif
  
+ #include <bits/c++config.h>
  #if _GLIBCXX_HOSTED
  #  include <iosfwd>
  #endif
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/precompiled/extc++.h gcc-16-20250914/libstdc++-v3/include/precompiled/extc++.h
*** gcc-16-20250907/libstdc++-v3/include/precompiled/extc++.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/precompiled/extc++.h	Sun Sep 14 22:32:38 2025
***************
*** 37,43 ****
  #endif
  #include <ext/alloc_traits.h>
  #include <ext/atomicity.h>
- #include <ext/cast.h>
  #include <ext/iterator>
  #include <ext/numeric_traits.h>
  #include <ext/pointer.h>
--- 37,42 ----
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/pstl/parallel_backend_tbb.h gcc-16-20250914/libstdc++-v3/include/pstl/parallel_backend_tbb.h
*** gcc-16-20250907/libstdc++-v3/include/pstl/parallel_backend_tbb.h	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/pstl/parallel_backend_tbb.h	Sun Sep 14 22:32:38 2025
*************** class __root_task
*** 521,527 ****
      friend class __func_task<_Func>;
  };
  
! #else  // TBB_INTERFACE_VERSION <= 12000
  class __task : public tbb::detail::d1::task
  {
    protected:
--- 521,527 ----
      friend class __func_task<_Func>;
  };
  
! #else  // TBB_INTERFACE_VERSION > 12000
  class __task : public tbb::detail::d1::task
  {
    protected:
*************** class __func_task : public __task
*** 656,665 ****
  
          _PSTL_ASSERT(__parent != nullptr);
          _PSTL_ASSERT(__parent->_M_refcount.load(std::memory_order_relaxed) > 0);
!         if (--__parent->_M_refcount == 0)
          {
              _PSTL_ASSERT(__next == nullptr);
-             __alloc.deallocate(this, *__ed);
              return __parent;
          }
  
--- 656,671 ----
  
          _PSTL_ASSERT(__parent != nullptr);
          _PSTL_ASSERT(__parent->_M_refcount.load(std::memory_order_relaxed) > 0);
! 
!         auto __refcount = --__parent->_M_refcount;
! 
!         // Placing the deallocation after the refcount decrement allows another thread to proceed with tree
!         // folding concurrently with this task cleanup.
!         __alloc.deallocate(this, *__ed);
! 
!         if (__refcount == 0)
          {
              _PSTL_ASSERT(__next == nullptr);
              return __parent;
          }
  
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/std/concepts gcc-16-20250914/libstdc++-v3/include/std/concepts
*** gcc-16-20250907/libstdc++-v3/include/std/concepts	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/std/concepts	Sun Sep 14 22:32:38 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 204,210 ****
        {
        private:
  	template<typename _Tp, typename _Up>
! 	  static constexpr bool
  	  _S_noexcept()
  	  {
  	    if constexpr (__adl_swap<_Tp, _Up>)
--- 204,210 ----
        {
        private:
  	template<typename _Tp, typename _Up>
! 	  static consteval bool
  	  _S_noexcept()
  	  {
  	    if constexpr (__adl_swap<_Tp, _Up>)
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/std/format gcc-16-20250914/libstdc++-v3/include/std/format
*** gcc-16-20250907/libstdc++-v3/include/std/format	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/std/format	Sun Sep 14 22:32:38 2025
***************
*** 56,62 ****
  #include <bits/ranges_base.h>  // input_range, range_reference_t
  #include <bits/ranges_util.h>  // subrange
  #include <bits/ranges_algobase.h> // ranges::copy
! #include <bits/stl_iterator.h> // back_insert_iterator, counted_iterator
  #include <bits/stl_pair.h>     // __is_pair
  #include <bits/unicode.h>      // __is_scalar_value, _Utf_view, etc.
  #include <bits/utility.h>      // tuple_size_v
--- 56,62 ----
  #include <bits/ranges_base.h>  // input_range, range_reference_t
  #include <bits/ranges_util.h>  // subrange
  #include <bits/ranges_algobase.h> // ranges::copy
! #include <bits/stl_iterator.h> // counted_iterator
  #include <bits/stl_pair.h>     // __is_pair
  #include <bits/unicode.h>      // __is_scalar_value, _Utf_view, etc.
  #include <bits/utility.h>      // tuple_size_v
*************** namespace __format
*** 110,119 ****
    template<typename _CharT>
      class _Sink_iter;
  
    // An unspecified output iterator type used in the `formattable` concept.
    template<typename _CharT>
      struct _Iter_for
!     { using type = back_insert_iterator<basic_string<_CharT>>; };
  
    template<typename _CharT>
      using __format_context = basic_format_context<_Sink_iter<_CharT>, _CharT>;
--- 110,123 ----
    template<typename _CharT>
      class _Sink_iter;
  
+   // Output iterator that ignores the characters
+   template<typename _CharT>
+     class _Drop_iter;
+ 
    // An unspecified output iterator type used in the `formattable` concept.
    template<typename _CharT>
      struct _Iter_for
!     { using type = _Drop_iter<_CharT>; };
  
    template<typename _CharT>
      using __format_context = basic_format_context<_Sink_iter<_CharT>, _CharT>;
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 3136,3141 ****
--- 3140,3182 ----
  namespace __format
  {
    template<typename _CharT>
+     class _Drop_iter
+     {
+     public:
+       using iterator_category = output_iterator_tag;
+       using value_type = void;
+       using difference_type = ptrdiff_t;
+       using pointer = void;
+       using reference = void;
+ 
+       _Drop_iter() = default;
+       _Drop_iter(const _Drop_iter&) = default;
+       _Drop_iter& operator=(const _Drop_iter&) = default;
+ 
+       [[__gnu__::__always_inline__]]
+       constexpr _Drop_iter&
+       operator=(_CharT __c)
+       { return *this;  }
+ 
+       [[__gnu__::__always_inline__]]
+       constexpr _Drop_iter&
+       operator=(basic_string_view<_CharT> __s)
+       { return *this; }
+ 
+       [[__gnu__::__always_inline__]]
+       constexpr _Drop_iter&
+       operator*() { return *this; }
+ 
+       [[__gnu__::__always_inline__]]
+       constexpr _Drop_iter&
+       operator++() { return *this; }
+ 
+       [[__gnu__::__always_inline__]]
+       constexpr _Drop_iter
+       operator++(int) { return *this; }
+     };
+ 
+   template<typename _CharT>
      class _Sink_iter
      {
        _Sink<_CharT>* _M_sink = nullptr;
*************** namespace __format
*** 5503,5544 ****
  		    const _Spec<_CharT>& __spec,
  		    _Callback&& __call)
      {
!       // This is required to implement formatting with padding,
!       // as we need to format to temporary buffer, using the same iterator.
!       static_assert(is_same_v<_Out, __format::_Sink_iter<_CharT>>);
  
!       const size_t __padwidth = __spec._M_get_width(__fc);
!       if (__padwidth == 0)
! 	return __call(__fc);
  
!       struct _Restore_out
!       {
! 	_Restore_out(basic_format_context<_Sink_iter<_CharT>, _CharT>& __fc)
! 	: _M_ctx(std::addressof(__fc)), _M_out(__fc.out())
! 	{ }
  
! 	void
! 	_M_disarm()
! 	{ _M_ctx = nullptr; }
  
! 	~_Restore_out()
! 	{
! 	  if (_M_ctx)
! 	    _M_ctx->advance_to(_M_out);
! 	}
  
!       private:
! 	basic_format_context<_Sink_iter<_CharT>, _CharT>* _M_ctx;
! 	_Sink_iter<_CharT> _M_out;
!       };
  
!       _Restore_out __restore(__fc);
!       _Padding_sink<_Sink_iter<_CharT>, _CharT> __sink(__fc.out(), __padwidth);
!       __fc.advance_to(__sink.out());
!       __call(__fc);
!       __fc.advance_to(__sink._M_finish(__spec._M_align, __spec._M_fill));
!       __restore._M_disarm();
!       return __fc.out();
      }
  
    template<size_t _Pos, typename _Tp, typename _CharT>
--- 5544,5590 ----
  		    const _Spec<_CharT>& __spec,
  		    _Callback&& __call)
      {
!       if constexpr (is_same_v<_Out, _Drop_iter<_CharT>>)
!         return __fc.out();
!       else
!         {
!           // This is required to implement formatting with padding,
!           // as we need to format to temporary buffer, using the same iterator.
!           static_assert(is_same_v<_Out, _Sink_iter<_CharT>>);
  
!          const size_t __padwidth = __spec._M_get_width(__fc);
!          if (__padwidth == 0)
! 	   return __call(__fc);
  
!          struct _Restore_out
!          {
! 	   _Restore_out(basic_format_context<_Sink_iter<_CharT>, _CharT>& __fc)
! 	   : _M_ctx(std::addressof(__fc)), _M_out(__fc.out())
! 	  { }
  
! 	  void
! 	  _M_disarm()
! 	  { _M_ctx = nullptr; }
  
! 	  ~_Restore_out()
! 	  {
! 	    if (_M_ctx)
! 	      _M_ctx->advance_to(_M_out);
! 	  }
  
!         private:
! 	  basic_format_context<_Sink_iter<_CharT>, _CharT>* _M_ctx;
! 	  _Sink_iter<_CharT> _M_out;
!         };
  
!         _Restore_out __restore(__fc);
!         _Padding_sink<_Sink_iter<_CharT>, _CharT> __sink(__fc.out(), __padwidth);
!         __fc.advance_to(__sink.out());
!         __call(__fc);
!         __fc.advance_to(__sink._M_finish(__spec._M_align, __spec._M_fill));
!         __restore._M_disarm();
!         return __fc.out();
!       }
      }
  
    template<size_t _Pos, typename _Tp, typename _CharT>
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/std/functional gcc-16-20250914/libstdc++-v3/include/std/functional
*** gcc-16-20250907/libstdc++-v3/include/std/functional	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/std/functional	Sun Sep 14 22:32:38 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1256,1261 ****
--- 1256,1267 ----
  	operator()(_RandomAccessIterator2 __first,
  		   _RandomAccessIterator2 __last) const
  	{
+ #ifdef __glibcxx_concepts // >= C++20
+ 	  // Value types must be the same for hash function and predicate
+ 	  // to give consistent results for lookup in the map.
+ 	  static_assert(is_same_v<iter_value_t<_RAIter>,
+ 				  iter_value_t<_RandomAccessIterator2>>);
+ #endif
  	  const auto& __pred = this->_M_pred();
  	  auto __patlen = _M_pat_end - _M_pat;
  	  if (__patlen == 0)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1317,1322 ****
--- 1323,1334 ----
      operator()(_RandomAccessIterator2 __first,
  	       _RandomAccessIterator2 __last) const
      {
+ #ifdef __glibcxx_concepts // >= C++20
+       // Value types must be the same for hash function and predicate
+       // to give consistent results for lookup in the map.
+       static_assert(is_same_v<iter_value_t<_RAIter>,
+ 			      iter_value_t<_RandomAccessIterator2>>);
+ #endif
        auto __patlen = _M_pat_end - _M_pat;
        if (__patlen == 0)
  	return std::make_pair(__first, __first);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1333,1339 ****
  	    }
  	  if (__j < 0)
  	    {
! 	      const auto __match = __first + __i + 1;
  	      return std::make_pair(__match, __match + __patlen);
  	    }
  	  __i += std::max(_M_bad_char_shift(__first[__i]),
--- 1345,1351 ----
  	    }
  	  if (__j < 0)
  	    {
! 	      const auto __match = __first + __diff_type(__i + 1);
  	      return std::make_pair(__match, __match + __patlen);
  	    }
  	  __i += std::max(_M_bad_char_shift(__first[__i]),
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/std/mdspan gcc-16-20250914/libstdc++-v3/include/std/mdspan
*** gcc-16-20250907/libstdc++-v3/include/std/mdspan	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/std/mdspan	Sun Sep 14 22:32:39 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 148,161 ****
        class _ExtentsStorage : public _StaticExtents<_Extents>
        {
        private:
! 	using _S_base = _StaticExtents<_Extents>;
  
        public:
! 	using _S_base::_S_rank;
! 	using _S_base::_S_rank_dynamic;
! 	using _S_base::_S_dynamic_index;
! 	using _S_base::_S_dynamic_index_inv;
! 	using _S_base::_S_static_extent;
  
  	static constexpr bool
  	_S_is_dynamic(size_t __r) noexcept
--- 148,161 ----
        class _ExtentsStorage : public _StaticExtents<_Extents>
        {
        private:
! 	using _Base = _StaticExtents<_Extents>;
  
        public:
! 	using _Base::_S_rank;
! 	using _Base::_S_rank_dynamic;
! 	using _Base::_S_dynamic_index;
! 	using _Base::_S_dynamic_index_inv;
! 	using _Base::_S_static_extent;
  
  	static constexpr bool
  	_S_is_dynamic(size_t __r) noexcept
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 242,249 ****
  	}
  
        private:
! 	using _S_storage = __array_traits<_IndexType, _S_rank_dynamic>::_Type;
! 	[[no_unique_address]] _S_storage _M_dyn_exts{};
        };
  
      template<typename _OIndexType, typename _SIndexType>
--- 242,249 ----
  	}
  
        private:
! 	using _Storage = __array_traits<_IndexType, _S_rank_dynamic>::_Type;
! 	[[no_unique_address]] _Storage _M_dyn_exts{};
        };
  
      template<typename _OIndexType, typename _SIndexType>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 259,265 ****
      template<typename _Extents>
        constexpr const array<size_t, _Extents::rank()>&
        __static_extents() noexcept
!       { return _Extents::_S_storage::_S_static_extents(); }
  
      // Pre-compute: \prod_{i = 0}^r _Extents[i], for r = 0,..., n (exclusive)
      template<array _Extents>
--- 259,265 ----
      template<typename _Extents>
        constexpr const array<size_t, _Extents::rank()>&
        __static_extents() noexcept
!       { return _Extents::_Storage::_S_static_extents(); }
  
      // Pre-compute: \prod_{i = 0}^r _Extents[i], for r = 0,..., n (exclusive)
      template<array _Extents>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 314,323 ****
        using rank_type = size_t;
  
        static constexpr rank_type
!       rank() noexcept { return _S_storage::_S_rank; }
  
        static constexpr rank_type
!       rank_dynamic() noexcept { return _S_storage::_S_rank_dynamic; }
  
        static constexpr size_t
        static_extent(rank_type __r) noexcept
--- 314,323 ----
        using rank_type = size_t;
  
        static constexpr rank_type
!       rank() noexcept { return _Storage::_S_rank; }
  
        static constexpr rank_type
!       rank_dynamic() noexcept { return _Storage::_S_rank_dynamic; }
  
        static constexpr size_t
        static_extent(rank_type __r) noexcept
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 326,332 ****
  	if constexpr (rank() == 0)
  	  __builtin_trap();
  	else
! 	  return _S_storage::_S_static_extent(__r);
        }
  
        constexpr index_type
--- 326,332 ----
  	if constexpr (rank() == 0)
  	  __builtin_trap();
  	else
! 	  return _Storage::_S_static_extent(__r);
        }
  
        constexpr index_type
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 423,431 ****
        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;
--- 423,431 ----
        friend span<const index_type>
        __mdspan::__dynamic_extents<extents>(const extents&, size_t, size_t);
  
!       using _Storage = __mdspan::_ExtentsStorage<
  	_IndexType, array<size_t, sizeof...(_Extents)>{_Extents...}>;
!       [[no_unique_address]] _Storage _M_exts;
  
        template<typename _OIndexType, size_t... _OExtents>
  	friend class extents;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1158,1167 ****
  	}
  
      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;
      };
  
    template<typename _ElementType>
--- 1158,1167 ----
  	}
  
      private:
!       using _Strides = typename __array_traits<index_type,
! 					       extents_type::rank()>::_Type;
        [[no_unique_address]] extents_type _M_extents;
!       [[no_unique_address]] _Strides _M_strides;
      };
  
    template<typename _ElementType>
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/std/span gcc-16-20250914/libstdc++-v3/include/std/span
*** gcc-16-20250907/libstdc++-v3/include/std/span	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/std/span	Sun Sep 14 22:32:39 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 479,487 ****
    // deduction guides
    namespace __detail
    {
      template<typename _Tp>
!       concept __integral_constant_like = is_integral_v<decltype(_Tp::value)>
! 	&& !is_same_v<bool, remove_const_t<decltype(_Tp::value)>>
  	&& convertible_to<_Tp, decltype(_Tp::value)>
  	&& equality_comparable_with<_Tp, decltype(_Tp::value)>
  	&& bool_constant<_Tp() == _Tp::value>::value
--- 479,490 ----
    // deduction guides
    namespace __detail
    {
+     // _GLIBCXX_RESOLVE_LIB_DEFECTS
+     // 4351. integral-constant-like needs more remove_cvref_t
      template<typename _Tp>
!       concept __integral_constant_like =
! 	is_integral_v<remove_cvref_t<decltype(_Tp::value)>>
! 	&& !is_same_v<bool, remove_cvref_t<decltype(_Tp::value)>>
  	&& convertible_to<_Tp, decltype(_Tp::value)>
  	&& equality_comparable_with<_Tp, decltype(_Tp::value)>
  	&& bool_constant<_Tp() == _Tp::value>::value
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/std/syncstream gcc-16-20250914/libstdc++-v3/include/std/syncstream
*** gcc-16-20250907/libstdc++-v3/include/std/syncstream	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/std/syncstream	Sun Sep 14 22:32:39 2025
***************
*** 46,52 ****
  #include <bits/alloc_traits.h>
  #include <bits/allocator.h>
  #include <bits/functexcept.h>
- #include <bits/functional_hash.h>
  #include <bits/std_mutex.h>
  
  namespace std _GLIBCXX_VISIBILITY(default)
--- 46,51 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 199,209 ****
        struct __mutex
        {
  #if _GLIBCXX_HAS_GTHREADS
! 	mutex* _M_mtx;
  
! 	__mutex(void* __t)
! 	  : _M_mtx(__t ? &_S_get_mutex(__t) : nullptr)
! 	{ }
  
  	void
  	swap(__mutex& __other) noexcept
--- 198,210 ----
        struct __mutex
        {
  #if _GLIBCXX_HAS_GTHREADS
! 	mutex* _M_mtx = nullptr;
  
! 	__mutex(void* __t)  // __t is the underlying sbuf, as hash seed.
! 	{
! 	  extern mutex& __syncbuf_get_mutex(void*);  // in src/c++20/syncbuf.cc
! 	  if (__t) _M_mtx = &__syncbuf_get_mutex(__t);
! 	}
  
  	void
  	swap(__mutex& __other) noexcept
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 220,236 ****
  	{
  	  _M_mtx->unlock();
  	}
- 
- 	// FIXME: This should be put in the .so
- 	static mutex&
- 	_S_get_mutex(void* __t)
- 	{
- 	  const unsigned char __mask = 0xf;
- 	  static mutex __m[__mask + 1];
- 
- 	  auto __key = _Hash_impl::hash(__t) & __mask;
- 	  return __m[__key];
- 	}
  #else
  	__mutex(void*) { }
  	void swap(__mutex&&) noexcept { }
--- 221,226 ----
diff -Nrcpad gcc-16-20250907/libstdc++-v3/include/std/type_traits gcc-16-20250914/libstdc++-v3/include/std/type_traits
*** gcc-16-20250907/libstdc++-v3/include/std/type_traits	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/include/std/type_traits	Sun Sep 14 22:32:39 2025
***************
*** 41,46 ****
--- 41,47 ----
  
  #define __glibcxx_want_bool_constant
  #define __glibcxx_want_bounded_array_traits
+ #define __glibcxx_want_constant_wrapper
  #define __glibcxx_want_has_unique_object_representations
  #define __glibcxx_want_integral_constant_callable
  #define __glibcxx_want_is_aggregate
*************** template<typename _Ret, typename _Fn, ty
*** 4302,4307 ****
--- 4303,4678 ----
      };
  #endif // C++11
  
+ #ifdef __cpp_lib_constant_wrapper // C++ >= 26
+   template<typename _Tp>
+     struct _CwFixedValue
+     {
+       using __type = _Tp;
+ 
+       constexpr
+       _CwFixedValue(__type __v) noexcept
+       : _M_data(__v) { }
+ 
+       __type _M_data;
+     };
+ 
+   template<typename _Tp, size_t _Extent>
+     struct _CwFixedValue<_Tp[_Extent]>
+     {
+       using __type = _Tp[_Extent];
+ 
+       constexpr
+       _CwFixedValue(_Tp (&__arr)[_Extent]) noexcept
+         : _CwFixedValue(__arr, typename _Build_index_tuple<_Extent>::__type())
+       { }
+ 
+       template<size_t... _Indices>
+ 	constexpr
+ 	_CwFixedValue(_Tp (&__arr)[_Extent], _Index_tuple<_Indices...>) noexcept
+ 	  : _M_data{__arr[_Indices]...}
+ 	{ }
+ 
+       _Tp _M_data[_Extent];
+     };
+ 
+   template<typename _Tp, size_t _Extent>
+     _CwFixedValue(_Tp (&)[_Extent]) -> _CwFixedValue<_Tp[_Extent]>;
+ 
+   template<_CwFixedValue _Xv,
+ 	   typename = typename decltype(_CwFixedValue(_Xv))::__type>
+     struct constant_wrapper;
+ 
+   template<typename _Tp>
+     concept _ConstExprParam = requires
+     {
+       typename constant_wrapper<_Tp::value>;
+     };
+ 
+   struct _CwOperators
+   {
+     template<_ConstExprParam _Tp>
+       friend constexpr auto
+       operator+(_Tp) noexcept -> constant_wrapper<(+_Tp::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Tp>
+       friend constexpr auto
+       operator-(_Tp) noexcept -> constant_wrapper<(-_Tp::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Tp>
+       friend constexpr auto
+       operator~(_Tp) noexcept -> constant_wrapper<(~_Tp::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Tp>
+       friend constexpr auto
+       operator!(_Tp) noexcept -> constant_wrapper<(!_Tp::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Tp>
+       friend constexpr auto
+       operator&(_Tp) noexcept -> constant_wrapper<(&_Tp::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Tp>
+       friend constexpr auto
+       operator*(_Tp) noexcept -> constant_wrapper<(*_Tp::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator+(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value + _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator-(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value - _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator*(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value * _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator/(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value / _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator%(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value % _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator<<(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value << _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator>>(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value >> _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator&(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value & _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator|(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value | _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator^(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value ^ _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       requires (!is_constructible_v<bool, decltype(_Left::value)>
+ 		|| !is_constructible_v<bool, decltype(_Right::value)>)
+       friend constexpr auto
+       operator&&(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value && _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       requires (!is_constructible_v<bool, decltype(_Left::value)>
+ 		|| !is_constructible_v<bool, decltype(_Right::value)>)
+       friend constexpr auto
+       operator||(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value || _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator<=>(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value <=> _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator<(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value < _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator<=(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value <= _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator==(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value == _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator!=(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value != _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator>(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value > _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator>=(_Left, _Right) noexcept
+ 	-> constant_wrapper<(_Left::value >= _Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator,(_Left, _Right) noexcept = delete;
+ 
+     template<_ConstExprParam _Left, _ConstExprParam _Right>
+       friend constexpr auto
+       operator->*(_Left, _Right) noexcept
+ 	-> constant_wrapper<_Left::value->*(_Right::value)>
+       { return {}; }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam... _Args>
+       constexpr auto
+       operator()(this _Tp, _Args...) noexcept
+       requires
+ 	requires(_Args...) { constant_wrapper<_Tp::value(_Args::value...)>(); }
+       { return constant_wrapper<_Tp::value(_Args::value...)>{}; }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam... _Args>
+       constexpr auto
+       operator[](this _Tp, _Args...) noexcept
+ 	-> constant_wrapper<(_Tp::value[_Args::value...])>
+       { return {}; }
+ 
+     template<_ConstExprParam _Tp>
+       constexpr auto
+       operator++(this _Tp) noexcept
+       requires requires(_Tp::value_type __x) { ++__x; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return ++__x; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp>
+       constexpr auto
+       operator++(this _Tp, int) noexcept
+       requires requires(_Tp::value_type __x) { __x++; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x++; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp>
+       constexpr auto
+       operator--(this _Tp) noexcept
+       requires requires(_Tp::value_type __x) { --__x; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return --__x; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp>
+       constexpr auto
+       operator--(this _Tp, int) noexcept
+       requires requires(_Tp::value_type __x) { __x--; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x--; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator+=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x += _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x += _Right::value; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator-=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x -= _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x -= _Right::value; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator*=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x *= _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x *= _Right::value; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator/=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x /= _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x /= _Right::value; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator%=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x %= _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x %= _Right::value; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator&=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x &= _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x &= _Right::value; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator|=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x |= _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x |= _Right::value; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator^=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x ^= _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x ^= _Right::value; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator<<=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x <<= _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x <<= _Right::value; }()>{};
+       }
+ 
+     template<_ConstExprParam _Tp, _ConstExprParam _Right>
+       constexpr auto
+       operator>>=(this _Tp, _Right) noexcept
+       requires requires(_Tp::value_type __x) { __x >>= _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = _Tp::value; return __x >>= _Right::value; }()>{};
+       }
+   };
+ 
+   template<_CwFixedValue _Xv, typename>
+   struct constant_wrapper : _CwOperators
+   {
+     static constexpr const auto& value = _Xv._M_data;
+     using type = constant_wrapper;
+     using value_type = typename decltype(_Xv)::__type;
+ 
+     template<_ConstExprParam _Right>
+       constexpr auto
+       operator=(_Right) const noexcept
+       requires requires(value_type __x) { __x = _Right::value; }
+       {
+ 	return constant_wrapper<
+ 	  [] { auto __x = value; return __x = _Right::value; }()>{};
+       }
+ 
+     constexpr
+     operator decltype(auto)() const noexcept
+     { return value; }
+   };
+ 
+   template<_CwFixedValue _Tp>
+     constexpr auto cw = constant_wrapper<_Tp>{};
+ #endif
+ 
    /// @} group metaprogramming
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-16-20250907/libstdc++-v3/libsupc++/Makefile.am gcc-16-20250914/libstdc++-v3/libsupc++/Makefile.am
*** gcc-16-20250907/libstdc++-v3/libsupc++/Makefile.am	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/libsupc++/Makefile.am	Sun Sep 14 22:32:39 2025
*************** atomicity_file = ${glibcxx_srcdir}/$(ATO
*** 132,137 ****
--- 132,142 ----
  atomicity.cc: ${atomicity_file}
  	$(LN_S) ${atomicity_file} ./atomicity.cc || true
  
+ atomicity.lo: atomicity.cc
+ 	$(LTCOMPILE) -fwrapv -c $<
+ atomicity.o: atomicity.cc
+ 	$(CXXCOMPILE) -fwrapv -c $<
+ 
  if OS_IS_DARWIN
  # See PR 112397
  new_opvnt.lo: new_opvnt.cc
diff -Nrcpad gcc-16-20250907/libstdc++-v3/libsupc++/Makefile.in gcc-16-20250914/libstdc++-v3/libsupc++/Makefile.in
*** gcc-16-20250907/libstdc++-v3/libsupc++/Makefile.in	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/libsupc++/Makefile.in	Sun Sep 14 22:32:39 2025
*************** cp-demangle.o: cp-demangle.c
*** 973,978 ****
--- 973,983 ----
  atomicity.cc: ${atomicity_file}
  	$(LN_S) ${atomicity_file} ./atomicity.cc || true
  
+ atomicity.lo: atomicity.cc
+ 	$(LTCOMPILE) -fwrapv -c $<
+ atomicity.o: atomicity.cc
+ 	$(CXXCOMPILE) -fwrapv -c $<
+ 
  # See PR 112397
  @OS_IS_DARWIN_TRUE@new_opvnt.lo: new_opvnt.cc
  @OS_IS_DARWIN_TRUE@	$(LTCXXCOMPILE) -fno-reorder-blocks-and-partition -I. -c $<
diff -Nrcpad gcc-16-20250907/libstdc++-v3/src/c++20/Makefile.am gcc-16-20250914/libstdc++-v3/src/c++20/Makefile.am
*** gcc-16-20250907/libstdc++-v3/src/c++20/Makefile.am	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/src/c++20/Makefile.am	Sun Sep 14 22:32:39 2025
*************** else
*** 36,42 ****
  inst_sources =
  endif
  
! sources = tzdb.cc format.cc atomic.cc clock.cc
  
  vpath % $(top_srcdir)/src/c++20
  
--- 36,42 ----
  inst_sources =
  endif
  
! sources = tzdb.cc format.cc atomic.cc clock.cc syncbuf.cc
  
  vpath % $(top_srcdir)/src/c++20
  
diff -Nrcpad gcc-16-20250907/libstdc++-v3/src/c++20/Makefile.in gcc-16-20250914/libstdc++-v3/src/c++20/Makefile.in
*** gcc-16-20250907/libstdc++-v3/src/c++20/Makefile.in	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/src/c++20/Makefile.in	Sun Sep 14 22:32:39 2025
*************** CONFIG_CLEAN_FILES =
*** 121,127 ****
  CONFIG_CLEAN_VPATH_FILES =
  LTLIBRARIES = $(noinst_LTLIBRARIES)
  libc__20convenience_la_LIBADD =
! am__objects_1 = tzdb.lo format.lo atomic.lo clock.lo
  @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = sstream-inst.lo
  @GLIBCXX_HOSTED_TRUE@am_libc__20convenience_la_OBJECTS =  \
  @GLIBCXX_HOSTED_TRUE@	$(am__objects_1) $(am__objects_2)
--- 121,127 ----
  CONFIG_CLEAN_VPATH_FILES =
  LTLIBRARIES = $(noinst_LTLIBRARIES)
  libc__20convenience_la_LIBADD =
! am__objects_1 = tzdb.lo format.lo atomic.lo clock.lo syncbuf.lo
  @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = sstream-inst.lo
  @GLIBCXX_HOSTED_TRUE@am_libc__20convenience_la_OBJECTS =  \
  @GLIBCXX_HOSTED_TRUE@	$(am__objects_1) $(am__objects_2)
*************** headers =
*** 432,438 ****
  @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
  @ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc
  
! sources = tzdb.cc format.cc atomic.cc clock.cc
  @GLIBCXX_HOSTED_FALSE@libc__20convenience_la_SOURCES = 
  @GLIBCXX_HOSTED_TRUE@libc__20convenience_la_SOURCES = $(sources)  $(inst_sources)
  
--- 432,438 ----
  @ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
  @ENABLE_EXTERN_TEMPLATE_TRUE@	sstream-inst.cc
  
! sources = tzdb.cc format.cc atomic.cc clock.cc syncbuf.cc
  @GLIBCXX_HOSTED_FALSE@libc__20convenience_la_SOURCES = 
  @GLIBCXX_HOSTED_TRUE@libc__20convenience_la_SOURCES = $(sources)  $(inst_sources)
  
diff -Nrcpad gcc-16-20250907/libstdc++-v3/src/c++20/syncbuf.cc gcc-16-20250914/libstdc++-v3/src/c++20/syncbuf.cc
*** gcc-16-20250907/libstdc++-v3/src/c++20/syncbuf.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/src/c++20/syncbuf.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,45 ----
+ // Explicit instantiation file.
+ 
+ // Copyright (C) 2020-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.
+ 
+ // Under Section 7 of GPL version 3, you are granted additional
+ // permissions described in the GCC Runtime Library Exception, version
+ // 3.1, as published by the Free Software Foundation.
+ 
+ // You should have received a copy of the GNU General Public License and
+ // a copy of the GCC Runtime Library Exception along with this program;
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <syncstream>
+ #include <bits/functional_hash.h>
+ 
+ #if _GLIBCXX_HAS_GTHREADS
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ 
+ mutex&
+ __syncbuf_get_mutex(void* __t)
+   {
+     const unsigned char __mask = 0xf;
+     static mutex __m[__mask + 1];
+ 
+     auto __key = _Hash_impl::hash(__t) & __mask;
+     return __m[__key];
+   }
+ 
+ _GLIBCXX_END_NAMESPACE_VERSION
+ }
+ #endif // GTHREADS
diff -Nrcpad gcc-16-20250907/libstdc++-v3/src/c++23/std.cc.in gcc-16-20250914/libstdc++-v3/src/c++23/std.cc.in
*** gcc-16-20250907/libstdc++-v3/src/c++23/std.cc.in	Sun Sep  7 22:35:01 2025
--- gcc-16-20250914/libstdc++-v3/src/c++23/std.cc.in	Sun Sep 14 22:32:39 2025
*************** export namespace std
*** 2997,3002 ****
--- 2997,3006 ----
    using std::conditional_t;
    using std::conjunction;
    using std::conjunction_v;
+ #if __cpp_lib_constant_wrapper
+   using std::constant_wrapper;
+   using std::cw;
+ #endif
    using std::decay;
    using std::decay_t;
    using std::disjunction;
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/adl.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,86 ----
+ // { dg-do compile { target c++26 } }
+ #include <type_traits>
+ #include <concepts>
+ 
+ #include <testsuite_hooks.h>
+ 
+ namespace adl {
+ 
+ struct Friend
+ {};
+ 
+ constexpr
+ int operator+(Friend, int x)
+ { return x; };
+ 
+ template<typename T>
+   struct TemplFriend
+   { };
+ 
+ template<typename T>
+   constexpr
+   // templated, we cannot deduce T from cw<Friend<int>>
+   int operator+(TemplFriend<T>, int x)
+   { return x; };
+ 
+ 
+ struct HiddenFriend
+ {
+   constexpr friend
+   int operator+(HiddenFriend, int x)
+   { return x; }
+ };
+ 
+ template<typename T>
+   struct TemplHiddenFriend
+   {
+     constexpr friend
+     // note that this not not template itself
+     int operator+(TemplHiddenFriend, int x)
+     { return x; }
+   };
+ }
+ 
+ template<typename T>
+   concept supportMixedObj = requires
+   {
+     { std::cw<T{}> + 1 } -> std::same_as<int>;
+   };
+ 
+ template<typename T>
+   concept supportMixedInt = requires(T t)
+   {
+     { t + std::cw<1> } -> std::same_as<int>;
+   };
+ 
+ static_assert(supportMixedObj<adl::Friend>);
+ static_assert(supportMixedInt<adl::Friend>);
+ static_assert(!supportMixedObj<adl::TemplFriend<int>>);
+ static_assert(supportMixedInt<adl::TemplFriend<int>>);
+ 
+ static_assert(supportMixedObj<adl::HiddenFriend>);
+ static_assert(supportMixedInt<adl::HiddenFriend>);
+ static_assert(supportMixedObj<adl::TemplHiddenFriend<int>>);
+ static_assert(supportMixedInt<adl::TemplHiddenFriend<int>>);
+ 
+ struct Member
+ {
+   constexpr
+   // conversion for the first argument is not allowed
+   int operator+(int x) const
+   { return x; }
+ };
+ 
+ static_assert(!supportMixedObj<Member>);
+ static_assert(supportMixedInt<Member>);
+ 
+ struct ExplicitThisMember
+ {
+   constexpr
+   // conversion for the first argument is not allowed
+   int operator+(this ExplicitThisMember, int x)
+   { return x; }
+ };
+ 
+ static_assert(!supportMixedObj<ExplicitThisMember>);
+ static_assert(supportMixedInt<ExplicitThisMember>);
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/ex.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,39 ----
+ // { dg-do compile { target c++26 } }
+ #include <type_traits>
+ #include <iostream>
+ 
+ #include <testsuite_hooks.h>
+ 
+ constexpr auto
+ initial_phase(auto quantity_1, auto quantity_2)
+ { return quantity_1 + quantity_2; }
+ 
+ constexpr auto
+ middle_phase(auto tbd)
+ { return tbd; }
+ 
+ constexpr void
+ final_phase(auto gathered, auto available)
+ {
+   if constexpr (gathered == available)
+     std::cout << "Profit!\n";
+ }
+ 
+ void
+ impeccable_underground_planning()
+ {
+   auto gathered_quantity = middle_phase(initial_phase(std::cw<42>, std::cw<13>));
+   static_assert(gathered_quantity == 55);
+   auto all_available = std::cw<55>;
+   final_phase(gathered_quantity, all_available);
+ }
+ 
+ void
+ deeply_flawed_underground_planning()
+ {
+   constexpr auto gathered_quantity = middle_phase(initial_phase(42, 13));
+   constexpr auto all_available = 55;
+   final_phase(gathered_quantity, all_available);  // { dg-error "required from here" }
+ }
+ 
+ // { dg-prune-output "'gathered' is not a constant expression" }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/generic.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,391 ----
+ // { dg-do run { target c++26 } }
+ #include <type_traits>
+ #include <utility>
+ #include <string_view>
+ 
+ #include <testsuite_hooks.h>
+ 
+ constexpr void
+ check_same(auto actual, auto expected)
+ {
+   VERIFY(actual == expected);
+   static_assert(std::same_as<decltype(actual), decltype(expected)>);
+ };
+ 
+ 
+ constexpr void
+ test_c_arrays()
+ {
+   constexpr double x[] = {1.1, 2.2, 3.3};
+   auto cx = std::cw<x>;
+   auto access = [](auto x, size_t i)
+   { return x[i]; };
+ 
+   check_same(access(std::cw<x>, 0), x[0]);
+   check_same(access(std::cw<x>, 1), x[1]);
+   check_same(access(std::cw<x>, 2), x[2]);
+ 
+   check_same(cx[std::cw<0>], std::cw<x[0]>);
+   check_same(cx[std::cw<1>], std::cw<x[1]>);
+   check_same(cx[std::cw<2>], std::cw<x[2]>);
+ }
+ 
+ constexpr size_t
+ deduce_cstr_size(auto str)
+ {
+   size_t sz = 0;
+   while(str[sz++] != '\0') { }
+   return sz;
+ }
+ 
+ constexpr void
+ test_string_literals()
+ {
+   auto foo = std::cw<"foo">;
+   constexpr const typename decltype(foo)::value_type & cstr = foo;
+   constexpr size_t N = std::size(cstr);
+   constexpr auto foo_view = std::string_view(cstr, N-1);
+ 
+   constexpr const char (&cstr1)[deduce_cstr_size(foo)] = foo;
+   constexpr size_t N1 = std::size(cstr);
+ 
+   static_assert(static_cast<char const*>(cstr) ==
+ 		static_cast<char const*>(cstr1));
+   static_assert(N1 == N);
+ 
+   static_assert(foo[0] == 'f');
+   static_assert(foo[1] == 'o');
+   static_assert(foo[2] == 'o');
+   static_assert(foo[3] == '\0');
+   static_assert(static_cast<char const *>(foo) == foo_view);
+ }
+ 
+ constexpr bool
+ convert_constexpr(auto c)
+ {
+   if constexpr (int(c) > 0)
+     return true;
+   return false;
+ }
+ 
+ constexpr void
+ test_converted_constexpr()
+ {
+   VERIFY(!convert_constexpr(std::cw<-1>));
+   VERIFY(convert_constexpr(std::cw<1>));
+ }
+ 
+ constexpr void
+ test_ints()
+ {
+   std::constant_wrapper<2> two;
+   std::constant_wrapper<3> three;
+   std::constant_wrapper<5> five;
+ 
+   VERIFY(two + 3 == 5);
+   static_assert(std::same_as<decltype(two + 3), int>);
+ 
+   VERIFY(two + three == 5);
+   VERIFY(two + three == five);
+   static_assert(std::same_as<decltype(two + three), std::constant_wrapper<5>>);
+ 
+   VERIFY(two == std::cw<2>);
+   VERIFY(two + 3 == std::cw<5>);
+ }
+ 
+ constexpr int
+ add(int i, int j)
+ { return i + j; }
+ 
+ struct Add
+ {
+   constexpr int
+   operator()(int i, int j) const noexcept
+   { return i + j; }
+ };
+ 
+ constexpr void
+ test_function_object()
+ {
+   auto check = [](auto cfo)
+   {
+     auto ci = std::cw<2>;
+     auto cj = std::cw<3>;
+ 
+     VERIFY(cfo(ci, cj) == 5);
+     static_assert(std::same_as<decltype(cfo(ci, cj)), std::constant_wrapper<5>>);
+ 
+     static_assert(std::invocable<decltype(cfo), decltype(ci), decltype(cj)>);
+     static_assert(!std::invocable<decltype(cfo), int, decltype(cj)>);
+     static_assert(!std::invocable<decltype(cfo), int, int>);
+   };
+ 
+   check(std::cw<Add{}>);
+   check(std::cw<[](int i, int j){ return i + j; }>);
+   check(std::cw<[](auto i, auto j){ return i + j; }>);
+ }
+ 
+ constexpr void
+ test_function_pointer()
+ {
+   auto cptr = std::cw<add>;
+   auto ci = std::cw<2>;
+   auto cj = std::cw<3>;
+ 
+   VERIFY(cptr(ci, cj) == 5);
+   static_assert(std::same_as<decltype(cptr(ci, cj)), std::constant_wrapper<5>>);
+ 
+   VERIFY(cptr(2, cj) == 5);
+   static_assert(std::same_as<decltype(cptr(2, cj)), int>);
+ 
+   VERIFY(cptr(2, 3) == 5);
+   static_assert(std::same_as<decltype(cptr(2, 3)), int>);
+ }
+ 
+ struct Indexable1
+ {
+   constexpr int
+   operator[](int i, int j) const noexcept
+   { return i*j; }
+ };
+ 
+ template<typename Obj, typename... Args>
+   concept indexable = requires (Obj obj, Args... args)
+   {
+     obj[args...];
+   };
+ 
+ constexpr void
+ test_indexable1()
+ {
+   auto cind = std::cw<Indexable1{}>;
+   auto ci = std::cw<2>;
+   auto cj = std::cw<3>;
+   VERIFY(cind[ci, cj] == ci*cj);
+   static_assert(std::same_as<decltype(cind[ci, cj]), std::constant_wrapper<6>>);
+ 
+   static_assert(indexable<decltype(cind), decltype(ci), decltype(cj)>);
+   static_assert(!indexable<decltype(cind), int, decltype(cj)>);
+   static_assert(!indexable<decltype(cind), int, int>);
+ }
+ 
+ struct Indexable2
+ {
+   template<typename I, typename J>
+     constexpr int
+     operator[](I i, J j) const noexcept
+     { return i*j; }
+ };
+ 
+ constexpr void
+ test_indexable2()
+ {
+   auto cind = std::cw<Indexable2{}>;
+   auto ci = std::cw<2>;
+   auto cj = std::cw<3>;
+   VERIFY(cind[ci, cj] == ci*cj);
+   static_assert(std::same_as<decltype(cind[ci, cj]), std::constant_wrapper<6>>);
+ 
+   static_assert(indexable<decltype(cind), decltype(ci), decltype(cj)>);
+   static_assert(!indexable<decltype(cind), int, decltype(cj)>);
+   static_assert(!indexable<decltype(cind), int, int>);
+ }
+ 
+ struct Indexable3
+ {
+   template<typename... Is>
+     constexpr int
+     operator[](Is... i) const noexcept
+     { return (1 * ... * i); }
+ };
+ 
+ constexpr void
+ test_indexable3()
+ {
+   auto cind = std::cw<Indexable3{}>;
+   auto ci = std::cw<2>;
+   auto cj = std::cw<3>;
+ 
+   check_same(cind[], std::cw<1>);
+   check_same(cind[ci], std::cw<2>);
+   check_same(cind[ci, cj], std::cw<2*3>);
+ }
+ 
+ struct Divide
+ {
+   int value;
+ 
+   constexpr int
+   divide(int div) const
+   { return value / div; }
+ 
+ };
+ 
+ constexpr void
+ test_member_pointer()
+ {
+   constexpr int nom = 42;
+   constexpr int denom = 3;
+ 
+   auto cvalue = std::cw<&Divide::value>;
+   auto cdiv = std::cw<&Divide::divide>;
+   auto co = std::cw<Divide{nom}>;
+ 
+   check_same((&co)->*cvalue, std::cw<nom>);
+   check_same((&co)->*(&Divide::value), nom);
+   check_same(&(co.value)->*cvalue, nom);
+ 
+   auto expect_unwrapped = nom / denom;
+   check_same(((&co)->*(&Divide::divide))(denom), expect_unwrapped);
+   check_same((&(co.value)->*cdiv)(denom), expect_unwrapped);
+   check_same(((&decltype(co)::value)->*cdiv)(denom), expect_unwrapped);
+ }
+ 
+ constexpr void
+ test_pseudo_mutator()
+ {
+   auto ci = std::cw<3>;
+   auto cmmi = --ci;
+   VERIFY(ci.value == 3);
+   VERIFY(cmmi.value == 2);
+ 
+   auto cimm = ci--;
+   VERIFY(ci.value == 3);
+   VERIFY(cimm.value == 3);
+ }
+ 
+ struct Truthy
+ {
+   constexpr operator bool() const
+   { return true; }
+ };
+ 
+ template<typename Lhs, typename Rhs>
+   concept has_op_and = requires (Lhs lhs, Rhs rhs)
+   {
+     lhs && rhs;
+   };
+ 
+ constexpr void
+ test_logic()
+ {
+   auto ctrue = std::cw<true>;
+   auto cfalse = std::cw<false>;
+   auto truthy = Truthy{};
+ 
+   auto check_and = [](auto lhs, auto rhs)
+   {
+     static_assert(lhs && rhs);
+     static_assert(std::same_as<decltype(lhs && rhs), bool>);
+   };
+ 
+   auto check_or = [](auto lhs, auto rhs)
+   {
+     static_assert(lhs || rhs);
+     static_assert(std::same_as<decltype(lhs || rhs), bool>);
+   };
+ 
+   check_and(ctrue, ctrue);
+   check_or(ctrue, cfalse);
+   check_and((std::cw<0> < std::cw<1>), (std::cw<1> < std::cw<5>));
+   check_or((std::cw<0> < std::cw<1>), (std::cw<1> < std::cw<5>));
+ 
+   auto ctruthy = std::cw<Truthy{}>;
+   static_assert(has_op_and<decltype(truthy), bool>);
+   static_assert(!has_op_and<decltype(ctruthy), decltype(ctrue)>);
+   static_assert(!has_op_and<decltype(ctruthy), bool>);
+ }
+ 
+ struct ThreeWayComp
+ {
+   friend
+   constexpr std::strong_ordering
+   operator<=>(ThreeWayComp lhs, ThreeWayComp rhs)
+   { return lhs.value <=> rhs.value; }
+ 
+   int value;
+ };
+ 
+ constexpr void
+ test_three_way()
+ {
+   auto ctrue = std::cw<true>;
+   auto cfalse = std::cw<false>;
+ 
+   check_same(std::cw<ThreeWayComp{0}> < std::cw<ThreeWayComp{1}>, ctrue);
+   check_same(std::cw<ThreeWayComp{2}> > std::cw<ThreeWayComp{1}>, ctrue);
+   check_same(std::cw<ThreeWayComp{2}> >= std::cw<ThreeWayComp{1}>, ctrue);
+   check_same(std::cw<ThreeWayComp{0}> <= std::cw<ThreeWayComp{1}>, ctrue);
+   check_same(std::cw<ThreeWayComp{0}> >= std::cw<ThreeWayComp{1}>, cfalse);
+ 
+   check_same(std::cw<ThreeWayComp{0}> < ThreeWayComp{1}, true);
+   check_same(ThreeWayComp{2} > std::cw<ThreeWayComp{1}>, true);
+ }
+ 
+ struct EqualityComp
+ {
+   friend
+   constexpr bool
+   operator==(EqualityComp lhs, EqualityComp rhs)
+   { return lhs.value == rhs.value; }
+ 
+   int value;
+ };
+ 
+ constexpr void
+ test_equality()
+ {
+   auto ctrue = std::cw<true>;
+   check_same(std::cw<EqualityComp{1}> == std::cw<EqualityComp{1}>, ctrue);
+   check_same(std::cw<EqualityComp{0}> != std::cw<EqualityComp{1}>, ctrue);
+ 
+   check_same(std::cw<EqualityComp{1}> == EqualityComp{1}, true);
+   check_same(EqualityComp{0} != std::cw<EqualityComp{1}>, true);
+ }
+ 
+ struct ConstAssignable
+ {
+   int value;
+ 
+   constexpr ConstAssignable
+   operator=(int rhs) const
+   { return ConstAssignable{rhs}; }
+ 
+   friend constexpr bool
+   operator==(const ConstAssignable& lhs, const ConstAssignable& rhs)
+   { return lhs.value == rhs.value; }
+ };
+ 
+ constexpr void
+ test_assignment()
+ {
+   check_same(std::cw<ConstAssignable{3}> = std::cw<2>,
+ 	     std::cw<ConstAssignable{2}>);
+ }
+ 
+ 
+ constexpr bool
+ test_all()
+ {
+   test_c_arrays();
+   test_ints();
+   test_function_object();
+   test_function_pointer();
+   test_indexable1();
+   test_indexable2();
+   test_indexable3();
+   test_member_pointer();
+   test_pseudo_mutator();
+   test_logic();
+   test_three_way();
+   test_equality();
+   return true;
+ }
+ 
+ int
+ main()
+ {
+   test_all();
+   static_assert(test_all());
+   return 0;
+ }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/instantiate.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,575 ----
+ // { dg-do run { target c++26 } }
+ #include <type_traits>
+ #include <utility>
+ 
+ #include <testsuite_hooks.h>
+ 
+ namespace free_ops
+ {
+   template<int OpId>
+     struct UnaryOps
+     {
+       friend constexpr int
+       operator+(UnaryOps) noexcept requires (OpId == 0)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator-(UnaryOps) noexcept requires (OpId == 1)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator~(UnaryOps) noexcept requires (OpId == 2)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator!(UnaryOps) noexcept requires (OpId == 3)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator&(UnaryOps) noexcept requires (OpId == 4)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator*(UnaryOps) noexcept requires (OpId == 5)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator++(UnaryOps) noexcept requires (OpId == 6)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator++(UnaryOps, int) noexcept requires (OpId == 7)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator--(UnaryOps) noexcept requires (OpId == 8)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator--(UnaryOps, int) noexcept requires (OpId == 9)
+       { return OpId; }
+     };
+ }
+ 
+ namespace member_ops
+ {
+   template<int OpId>
+     struct UnaryOps
+     {
+       constexpr int
+       operator+() const noexcept requires (OpId == 0)
+       { return OpId; }
+ 
+       constexpr int
+       operator-() const noexcept requires (OpId == 1)
+       { return OpId; }
+ 
+       constexpr int
+       operator~() const noexcept requires (OpId == 2)
+       { return OpId; }
+ 
+       constexpr int
+       operator!() const noexcept requires (OpId == 3)
+       { return OpId; }
+ 
+       constexpr int
+       operator&() const noexcept requires (OpId == 4)
+       { return OpId; }
+ 
+       constexpr int
+       operator*() const noexcept requires (OpId == 5)
+       { return OpId; }
+ 
+       constexpr int
+       operator++() const noexcept requires (OpId == 6)
+       { return OpId; }
+ 
+       constexpr int
+       operator++(int) const noexcept requires (OpId == 7)
+       { return OpId; }
+ 
+       constexpr int
+       operator--() const noexcept requires (OpId == 8)
+       { return OpId; }
+ 
+       constexpr int
+       operator--(int) const noexcept requires (OpId == 9)
+       { return OpId; }
+     };
+ }
+ 
+ constexpr size_t n_unary_ops = 10;
+ 
+ template<template<int> typename Ops, int OpId>
+   constexpr void
+   test_unary_operator()
+   {
+     auto x = std::cw<Ops<OpId>{}>;
+ 
+     auto check = [](auto c)
+     {
+       VERIFY(c == OpId);
+       static_assert(std::same_as<decltype(c), std::constant_wrapper<OpId>>);
+     };
+ 
+     if constexpr (OpId == 0)
+       check(+x);
+     if constexpr (OpId == 1)
+       check(-x);
+     if constexpr (OpId == 2)
+       check(~x);
+     if constexpr (OpId == 3)
+       check(!x);
+     if constexpr (OpId == 4)
+       check(&x);
+     if constexpr (OpId == 5)
+       check(*x);
+     if constexpr (OpId == 6)
+       check(++x);
+     if constexpr (OpId == 7)
+       check(x++);
+     if constexpr (OpId == 8)
+       check(--x);
+     if constexpr (OpId == 9)
+       check(x--);
+ 
+     static_assert(n_unary_ops == 10);
+   }
+ 
+ constexpr void
+ test_unary_operators_all()
+ {
+   auto run = []<size_t... Idx>(std::integer_sequence<size_t, Idx...>)
+   {
+     (test_unary_operator<free_ops::UnaryOps, Idx>(), ...);
+     (test_unary_operator<member_ops::UnaryOps, Idx>(), ...);
+   };
+   run(std::make_index_sequence<n_unary_ops>());
+ }
+ 
+ namespace free_ops
+ {
+   template<int OpId>
+     struct BinaryOps
+     {
+       friend constexpr int
+       operator+(BinaryOps, BinaryOps) noexcept requires (OpId == 0)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator-(BinaryOps, BinaryOps) noexcept requires (OpId == 1)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator*(BinaryOps, BinaryOps) noexcept requires (OpId == 2)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator/(BinaryOps, BinaryOps) noexcept requires (OpId == 3)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator%(BinaryOps, BinaryOps) noexcept requires (OpId == 4)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator<<(BinaryOps, BinaryOps) noexcept requires (OpId == 5)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator>>(BinaryOps, BinaryOps) noexcept requires (OpId == 6)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator&(BinaryOps, BinaryOps) noexcept requires (OpId == 7)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator|(BinaryOps, BinaryOps) noexcept requires (OpId == 8)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator^(BinaryOps, BinaryOps) noexcept requires (OpId == 9)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator&&(BinaryOps, BinaryOps) noexcept requires (OpId == 10)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator||(BinaryOps, BinaryOps) noexcept requires (OpId == 11)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator<=>(BinaryOps, BinaryOps) noexcept requires (OpId == 12)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator<(BinaryOps, BinaryOps) noexcept requires (OpId == 13)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator<=(BinaryOps, BinaryOps) noexcept requires (OpId == 14)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator==(BinaryOps, BinaryOps) noexcept requires (OpId == 15)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator!=(BinaryOps, BinaryOps) noexcept requires (OpId == 16)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator>(BinaryOps, BinaryOps) noexcept requires (OpId == 17)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator>=(BinaryOps, BinaryOps) noexcept requires (OpId == 18)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator+=(BinaryOps, BinaryOps) noexcept requires (OpId == 19)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator-=(BinaryOps, BinaryOps) noexcept requires (OpId == 20)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator*=(BinaryOps, BinaryOps) noexcept requires (OpId == 21)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator/=(BinaryOps, BinaryOps) noexcept requires (OpId == 22)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator%=(BinaryOps, BinaryOps) noexcept requires (OpId == 23)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator&=(BinaryOps, BinaryOps) noexcept requires (OpId == 24)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator|=(BinaryOps, BinaryOps) noexcept requires (OpId == 25)
+       { return OpId; }
+       friend constexpr int
+ 
+       operator^=(BinaryOps, BinaryOps) noexcept requires (OpId == 26)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator<<=(BinaryOps, BinaryOps) noexcept requires (OpId == 27)
+       { return OpId; }
+ 
+       friend constexpr int
+       operator>>=(BinaryOps, BinaryOps) noexcept requires (OpId == 28)
+       { return OpId; }
+     };
+ }
+ 
+ namespace member_ops
+ {
+   template<int OpId>
+     struct BinaryOps
+     {
+       constexpr int
+       operator+(BinaryOps) const noexcept requires (OpId == 0)
+       { return OpId; }
+ 
+       constexpr int
+       operator-(BinaryOps) const noexcept requires (OpId == 1)
+       { return OpId; }
+ 
+       constexpr int
+       operator*(BinaryOps) const noexcept requires (OpId == 2)
+       { return OpId; }
+ 
+       constexpr int
+       operator/(BinaryOps) const noexcept requires (OpId == 3)
+       { return OpId; }
+ 
+       constexpr int
+       operator%(BinaryOps) const noexcept requires (OpId == 4)
+       { return OpId; }
+ 
+       constexpr int
+       operator<<(BinaryOps) const noexcept requires (OpId == 5)
+       { return OpId; }
+ 
+       constexpr int
+       operator>>(BinaryOps) const noexcept requires (OpId == 6)
+       { return OpId; }
+ 
+       constexpr int
+       operator&(BinaryOps) const noexcept requires (OpId == 7)
+       { return OpId; }
+ 
+       constexpr int
+       operator|(BinaryOps) const noexcept requires (OpId == 8)
+       { return OpId; }
+ 
+       constexpr int
+       operator^(BinaryOps) const noexcept requires (OpId == 9)
+       { return OpId; }
+ 
+       constexpr int
+       operator&&(BinaryOps) const noexcept requires (OpId == 10)
+       { return OpId; }
+ 
+       constexpr int
+       operator||(BinaryOps) const noexcept requires (OpId == 11)
+       { return OpId; }
+ 
+       constexpr int
+       operator<=>(BinaryOps) const noexcept requires (OpId == 12)
+       { return OpId; }
+ 
+       constexpr int
+       operator<(BinaryOps) const noexcept requires (OpId == 13)
+       { return OpId; }
+ 
+       constexpr int
+       operator<=(BinaryOps) const noexcept requires (OpId == 14)
+       { return OpId; }
+ 
+       constexpr int
+       operator==(BinaryOps) const noexcept requires (OpId == 15)
+       { return OpId; }
+ 
+       constexpr int
+       operator!=(BinaryOps) const noexcept requires (OpId == 16)
+       { return OpId; }
+ 
+       constexpr int
+       operator>(BinaryOps) const noexcept requires (OpId == 17)
+       { return OpId; }
+ 
+       constexpr int
+       operator>=(BinaryOps) const noexcept requires (OpId == 18)
+       { return OpId; }
+ 
+       constexpr int
+       operator+=(BinaryOps) const noexcept requires (OpId == 19)
+       { return OpId; }
+ 
+       constexpr int
+       operator-=(BinaryOps) const noexcept requires (OpId == 20)
+       { return OpId; }
+ 
+       constexpr int
+       operator*=(BinaryOps) const noexcept requires (OpId == 21)
+       { return OpId; }
+ 
+       constexpr int
+       operator/=(BinaryOps) const noexcept requires (OpId == 22)
+       { return OpId; }
+ 
+       constexpr int
+       operator%=(BinaryOps) const noexcept requires (OpId == 23)
+       { return OpId; }
+ 
+       constexpr int
+       operator&=(BinaryOps) const noexcept requires (OpId == 24)
+       { return OpId; }
+ 
+       constexpr int
+       operator|=(BinaryOps) const noexcept requires (OpId == 25)
+       { return OpId; }
+ 
+       constexpr int
+       operator^=(BinaryOps) const noexcept requires (OpId == 26)
+       { return OpId; }
+ 
+       constexpr int
+       operator<<=(BinaryOps) const noexcept requires (OpId == 27)
+       { return OpId; }
+ 
+       constexpr int
+       operator>>=(BinaryOps) const noexcept requires (OpId == 28)
+       { return OpId; }
+     };
+ }
+ 
+ constexpr size_t n_binary_ops = 29;
+ 
+ template<template<int> typename Ops, int OpId>
+   constexpr void
+   test_binary_operator()
+   {
+     auto cx = std::cw<Ops<OpId>{}>;
+     auto cy = std::cw<Ops<OpId>{}>;
+ 
+     auto check = [](auto c)
+     {
+       VERIFY(c == OpId);
+       static_assert(std::same_as<decltype(c), std::constant_wrapper<OpId>>);
+     };
+ 
+     if constexpr (OpId == 0)
+       check(cx + cy);
+     if constexpr (OpId == 1)
+       check(cx - cy);
+     if constexpr (OpId == 2)
+       check(cx * cy);
+     if constexpr (OpId == 3)
+       check(cx / cy);
+     if constexpr (OpId == 4)
+       check(cx % cy);
+     if constexpr (OpId == 5)
+       check(cx << cy);
+     if constexpr (OpId == 6)
+       check(cx >> cy);
+     if constexpr (OpId == 7)
+       check(cx & cy);
+     if constexpr (OpId == 8)
+       check(cx | cy);
+     if constexpr (OpId == 10)
+       check(cx && cy);
+     if constexpr (OpId == 11)
+       check(cx || cy);
+     if constexpr (OpId == 12)
+       check(cx <=> cy);
+     if constexpr (OpId == 13)
+       check(cx < cy);
+     if constexpr (OpId == 14)
+       check(cx <= cy);
+     if constexpr (OpId == 15)
+       check(cx == cy);
+     if constexpr (OpId == 16)
+       check(cx != cy);
+     if constexpr (OpId == 17)
+       check(cx > cy);
+     if constexpr (OpId == 18)
+       check(cx >= cy);
+     if constexpr (OpId == 19)
+       check(cx += cy);
+     if constexpr (OpId == 20)
+       check(cx -= cy);
+     if constexpr (OpId == 21)
+       check(cx *= cy);
+     if constexpr (OpId == 22)
+       check(cx /= cy);
+     if constexpr (OpId == 23)
+       check(cx %= cy);
+     if constexpr (OpId == 24)
+       check(cx &= cy);
+     if constexpr (OpId == 25)
+       check(cx |= cy);
+     if constexpr (OpId == 26)
+       check(cx ^= cy);
+     if constexpr (OpId == 27)
+       check(cx <<= cy);
+     if constexpr (OpId == 28)
+       check(cx >>= cy);
+     static_assert(n_binary_ops == 29);
+   }
+ 
+ template<template<int> typename Ops, int OpId>
+   constexpr void
+   test_mixed_binary_operators()
+   {
+     constexpr auto x = Ops<OpId>{};
+     auto cx = std::cw<x>;
+     constexpr auto y = Ops<OpId>{};
+     auto cy = std::cw<y>;
+ 
+     auto check = [](auto vc, auto cv)
+     {
+       auto impl = [](auto c)
+       {
+ 	VERIFY(c == OpId);
+ 	static_assert(std::same_as<decltype(c), int>);
+       };
+ 
+       impl(vc);
+       impl(cv);
+     };
+ 
+     if constexpr (OpId == 0)
+       check(x + cy, cx + y);
+     if constexpr (OpId == 1)
+       check(x - cy, cx - y);
+     if constexpr (OpId == 2)
+       check(x * cy, cx * y);
+     if constexpr (OpId == 3)
+       check(x / cy, cx / y);
+     if constexpr (OpId == 4)
+       check(x % cy, cx % y);
+     if constexpr (OpId == 5)
+       check(x << cy, cx << y);
+     if constexpr (OpId == 6)
+       check(x >> cy, cx >> y);
+     if constexpr (OpId == 7)
+       check(x & cy, cx & y);
+     if constexpr (OpId == 8)
+       check(x | cy, cx | y);
+     if constexpr (OpId == 10)
+       check(x && cy, cx && y);
+     if constexpr (OpId == 11)
+       check(x || cy, cx || y);
+     if constexpr (OpId == 12)
+       check(x <=> cy, cx <=> y);
+     if constexpr (OpId == 13)
+       check(x < cy, cx < y);
+     if constexpr (OpId == 14)
+       check(x <= cy, cx <= y);
+     if constexpr (OpId == 15)
+       check(x == cy, cx == y);
+     if constexpr (OpId == 16)
+       check(x != cy, cx != y);
+     if constexpr (OpId == 17)
+       check(x > cy, cx > y);
+     if constexpr (OpId == 18)
+       check(x >= cy, cx >= y);
+     if constexpr (OpId == 19)
+       check(x += cy, cx += y);
+     if constexpr (OpId == 20)
+       check(x -= cy, cx -= y);
+     if constexpr (OpId == 21)
+       check(x *= cy, cx *= y);
+     if constexpr (OpId == 22)
+       check(x /= cy, cx /= y);
+     if constexpr (OpId == 23)
+       check(x %= cy, cx %= y);
+     if constexpr (OpId == 24)
+       check(x &= cy, cx &= y);
+     if constexpr (OpId == 25)
+       check(x |= cy, cx |= y);
+     if constexpr (OpId == 26)
+       check(x ^= cy, cx ^= y);
+     if constexpr (OpId == 27)
+       check(x <<= cy, cx <<= y);
+     if constexpr (OpId == 28)
+       check(x >>= cy, cx >>= y);
+     static_assert(n_binary_ops == 29);
+   }
+ 
+ constexpr void
+ test_binary_operators_all()
+ {
+   auto run = []<size_t... Idx>(std::integer_sequence<size_t, Idx...>)
+   {
+     (test_binary_operator<free_ops::BinaryOps, Idx>(), ...);
+     (test_mixed_binary_operators<free_ops::BinaryOps, Idx>(), ...);
+     (test_binary_operator<member_ops::BinaryOps, Idx>(), ...);
+   };
+   run(std::make_index_sequence<n_binary_ops>());
+ }
+ 
+ constexpr bool
+ test_all()
+ {
+   test_unary_operators_all();
+   test_binary_operators_all();
+   return true;
+ }
+ 
+ int
+ main()
+ {
+   test_all();
+   return 0;
+ }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/op_comma_neg.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do compile { target c++26 } }
+ #include <type_traits>
+ 
+ constexpr void
+ test_comma_same_types()
+ {
+   (std::cw<1>, std::cw<2>); // { dg-error "use of deleted function" }
+ }
+ 
+ constexpr void
+ test_comma_different_types()
+ {
+   (std::cw<1>, std::cw<2.0>); // { dg-error "use of deleted function" }
+ }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/other_wrappers.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,75 ----
+ // { dg-do run { target c++26 } }
+ #include <type_traits>
+ #include <concepts>
+ 
+ #include <testsuite_hooks.h>
+ 
+ template<typename Type, Type Value>
+   struct ConstWrapper
+   {
+     constexpr static Type value = Value;
+   };
+ 
+ constexpr void
+ check_same(auto actual, auto expected)
+ {
+   VERIFY(actual == expected);
+   static_assert(std::same_as<decltype(actual), decltype(expected)>);
+ }
+ 
+ constexpr void
+ test_mix_integer_constant()
+ {
+   auto i4 = std::integral_constant<int, 4>{};
+   auto c3 = std::cw<3>;
+   auto w2 = ConstWrapper<int, 2>{};
+ 
+   check_same(i4 + c3, std::cw<7>);
+   check_same(c3 + i4, std::cw<7>);
+   check_same(c3 + w2, std::cw<5>);
+   check_same(w2 + c3, std::cw<5>);
+ }
+ 
+ constexpr void
+ test_array()
+ {
+   constexpr double x[] = {1.1, 2.2, 3.3};
+   auto cx = std::cw<x>;
+   auto i2 = std::integral_constant<int, 2>{};
+   auto w2 = ConstWrapper<int, 2>{};
+ 
+   check_same(x[i2], x[2]);
+   check_same(cx[i2], std::cw<x[2]>);
+   check_same(cx[w2], std::cw<x[2]>);
+ }
+ 
+ constexpr void
+ test_function_object()
+ {
+   auto cadd = std::cw<[](int i, int j) { return i + j; }>;
+   auto i4 = std::integral_constant<int, 4>{};
+   auto c3 = std::cw<3>;
+   auto w2 = ConstWrapper<int, 2>{};
+ 
+   check_same(cadd(i4, c3), std::cw<7>);
+   check_same(cadd(c3, i4), std::cw<7>);
+   check_same(cadd(w2, c3), std::cw<5>);
+   check_same(cadd(c3, w2), std::cw<5>);
+ }
+ 
+ constexpr bool
+ test_all()
+ {
+   test_mix_integer_constant();
+   test_array();
+   test_function_object();
+   return true;
+ }
+ 
+ int
+ main()
+ {
+   test_all();
+   static_assert(test_all());
+   return 0;
+ }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/20_util/constant_wrapper/version.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,11 ----
+ // { dg-do preprocess { target c++26 } }
+ // { dg-add-options no_pch }
+ 
+ #include <type_traits>
+ 
+ #ifndef __cpp_lib_constant_wrapper
+ #error "Feature test macro __cpp_lib_constant_wrapper is missing for <type_traits>"
+ #if __cpp_lib_constant_wrapper < 202506L
+ #error "Feature test macro __cpp_lib_constant_wrapper has the wrong value"
+ #endif
+ #endif
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/20_util/function_objects/121782.cc gcc-16-20250914/libstdc++-v3/testsuite/20_util/function_objects/121782.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/20_util/function_objects/121782.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/20_util/function_objects/121782.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,30 ----
+ // { dg-do compile { target c++17 } }
+ // libstdc++/121782
+ // Missing Mandates for operator() of std::boyer_moore_[horspool]_searcher
+ 
+ // N.B. we only enforce this for C++20 and later.
+ // { dg-error "static assertion failed" "" { target c++20 } 0 }
+ 
+ #include <algorithm>
+ #include <functional>
+ #include <testsuite_iterators.h>
+ 
+ template<typename T>
+ using Range = __gnu_test::random_access_container<T>;
+ 
+ void
+ test_bm(Range<char> needle, Range<unsigned char> haystack)
+ {
+   std::boyer_moore_searcher s(needle.begin(), needle.end());
+   (void) std::search(haystack.begin(), haystack.end(), s); // { dg-error "here" "" { target c++20 } }
+   // { dg-error "'char' is not the same as 'unsigned char'" "" { target c++20 } 0 }
+ }
+ 
+ void
+ test_bmh(Range<char> needle, Range<signed char> haystack)
+ {
+   std::boyer_moore_horspool_searcher s(needle.begin(), needle.end());
+   (void) std::search(haystack.begin(), haystack.end(), s); // { dg-error "here" "" { target c++20 } }
+   // { dg-error "'char' is not the same as 'signed char'" "" { target c++20 } 0 }
+ }
+ 
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/20_util/weak_ptr/cons/virtual_bases.cc gcc-16-20250914/libstdc++-v3/testsuite/20_util/weak_ptr/cons/virtual_bases.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/20_util/weak_ptr/cons/virtual_bases.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/20_util/weak_ptr/cons/virtual_bases.cc	Sun Sep 14 22:32:39 2025
***************
*** 0 ****
--- 1,80 ----
+ // { dg-do run { target c++11 } }
+ 
+ #include <memory>
+ #include <testsuite_hooks.h>
+ 
+ struct BaseBase { virtual ~BaseBase() = default; };
+ struct Base : BaseBase { virtual ~Base() = default; };
+ struct Derived1 : Base { virtual ~Derived1() = default; };
+ struct Derived2 : virtual Base { virtual ~Derived2() = default; };
+ struct Derived3 : virtual Base { virtual ~Derived3() = default; };
+ struct Derived4 : Derived2, Derived3 { virtual ~Derived4() = default; };
+ struct Derived5 : Derived4 { virtual ~Derived5() = default; };
+ 
+ template<typename T>
+ void test01()
+ {
+   std::shared_ptr<T> ptr(new T);
+   VERIFY(ptr);
+ 
+   std::weak_ptr<T> wptr1 = ptr;
+   VERIFY(wptr1.lock());
+ 
+   std::weak_ptr<Base> wptr2 = ptr;
+   VERIFY(wptr2.lock());
+ 
+   std::weak_ptr<Base> wptr3 = wptr1;
+   VERIFY(wptr3.lock());
+ 
+   std::weak_ptr<BaseBase> wptr4 = ptr;
+   VERIFY(wptr4.lock());
+ 
+   std::weak_ptr<BaseBase> wptr5 = std::move(wptr1);
+   VERIFY(wptr5.lock());
+ 
+   ptr.reset();
+ 
+   VERIFY(!wptr1.lock());
+   VERIFY(!wptr2.lock());
+   VERIFY(!wptr3.lock());
+   VERIFY(!wptr4.lock());
+   VERIFY(!wptr5.lock());
+ }
+ 
+ template<typename T>
+ void test02()
+ {
+   std::shared_ptr<T> ptr(new T);
+   VERIFY(ptr);
+ 
+   std::weak_ptr<T> wptr1 = ptr;
+   VERIFY(wptr1.lock());
+ 
+   std::weak_ptr<Base> wptr2 = ptr;
+   VERIFY(wptr2.lock());
+ 
+   ptr.reset();
+ 
+   std::weak_ptr<Base> wptr3 = wptr1;
+   std::weak_ptr<BaseBase> wptr4 = wptr1;
+   std::weak_ptr<BaseBase> wptr5 = std::move(wptr1);
+ 
+   VERIFY(!wptr1.lock());
+   VERIFY(!wptr2.lock());
+   VERIFY(!wptr3.lock());
+   VERIFY(!wptr4.lock());
+   VERIFY(!wptr5.lock());
+ }
+ 
+ int main()
+ {
+   test01<Derived1>();
+   test01<Derived2>();
+   test01<Derived4>();
+   test01<Derived5>();
+ 
+   test02<Derived1>();
+   test02<Derived2>();
+   test02<Derived4>();
+   test02<Derived5>();
+ }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/23_containers/mdspan/class_mandate_neg.cc gcc-16-20250914/libstdc++-v3/testsuite/23_containers/mdspan/class_mandate_neg.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/23_containers/mdspan/class_mandate_neg.cc	Sun Sep  7 22:35:03 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/23_containers/mdspan/class_mandate_neg.cc	Sun Sep 14 22:32:40 2025
*************** test_element_type_mismatch()
*** 35,41 ****
  static_assert(test_element_type_mismatch());
  
  // { dg-prune-output "Extents must be a specialization of std::extents" }
! // { dg-prune-output "no type named '_S_storage'" }
  // { dg-prune-output "non-constant condition" }
  // { dg-prune-output "static assertion failed" }
  // { dg-prune-output "__glibcxx_assert" }
--- 35,41 ----
  static_assert(test_element_type_mismatch());
  
  // { dg-prune-output "Extents must be a specialization of std::extents" }
! // { dg-prune-output "no type named '_Storage'" }
  // { dg-prune-output "non-constant condition" }
  // { dg-prune-output "static assertion failed" }
  // { dg-prune-output "__glibcxx_assert" }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc gcc-16-20250914/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc	Sun Sep  7 22:35:03 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/23_containers/mdspan/extents/misc.cc	Sun Sep 14 22:32:40 2025
*************** test_deduction(Extents... exts)
*** 98,104 ****
  }
  
  constexpr bool
! test_integral_constant_deduction()
  {
    auto verify = [](auto actual, auto expected)
      {
--- 98,104 ----
  }
  
  constexpr bool
! test_deduction_from_constant()
  {
    auto verify = [](auto actual, auto expected)
      {
*************** test_integral_constant_deduction()
*** 106,118 ****
        VERIFY(actual == expected);
      };
  
!   constexpr auto c1 = std::integral_constant<size_t, 1>{};
!   constexpr auto c2 = std::integral_constant<int, 2>{};
  
    verify(std::extents(1), std::extents<size_t, dyn>{1});
!   verify(std::extents(c1), std::extents<size_t, 1>{});
    verify(std::extents(c2), std::extents<size_t, 2>{});
!   verify(std::extents(c1, 2), std::extents<size_t, 1, dyn>{2});
    return true;
  }
  
--- 106,128 ----
        VERIFY(actual == expected);
      };
  
!   constexpr auto i1 = std::integral_constant<size_t, 1>{};
!   constexpr auto i2 = std::integral_constant<int, 2>{};
  
    verify(std::extents(1), std::extents<size_t, dyn>{1});
!   verify(std::extents(i1), std::extents<size_t, 1>{});
!   verify(std::extents(i2), std::extents<size_t, 2>{});
!   verify(std::extents(std::true_type{}, 2), std::dextents<size_t, 2>{1, 2});
!   verify(std::extents(std::false_type{}, 2), std::dextents<size_t, 2>{0, 2});
! 
! #if __glibcxx_constant_wrapper
!   constexpr auto c2 = std::constant_wrapper<2>{};
    verify(std::extents(c2), std::extents<size_t, 2>{});
!   verify(std::extents(1, c2), std::extents<size_t, dyn, 2>{1});
!   verify(std::extents(c2), std::extents<size_t, 2>{});
!   verify(std::extents(1, c2), std::extents<size_t, dyn, 2>{1});
!   verify(std::extents(std::cw<true>, c2), std::extents<size_t, dyn, 2>{1});
! #endif
    return true;
  }
  
*************** test_deduction_all()
*** 123,129 ****
    test_deduction<1>(1);
    test_deduction<2>(1.0, 2.0f);
    test_deduction<3>(int(1), short(2), size_t(3));
!   test_integral_constant_deduction();
    return true;
  }
  
--- 133,139 ----
    test_deduction<1>(1);
    test_deduction<2>(1.0, 2.0f);
    test_deduction<3>(int(1), short(2), size_t(3));
!   test_deduction_from_constant();
    return true;
  }
  
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc gcc-16-20250914/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc	Sun Sep  7 22:35:03 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc	Sun Sep 14 22:32:40 2025
*************** test_from_pointer_and_shape()
*** 280,286 ****
  }
  
  constexpr bool
! test_from_pointer_and_integral_constant()
  {
    std::array<double, 6> buffer{};
    double * ptr = buffer.data();
--- 280,286 ----
  }
  
  constexpr bool
! test_from_pointer_and_constant()
  {
    std::array<double, 6> buffer{};
    double * ptr = buffer.data();
*************** test_from_pointer_and_integral_constant(
*** 292,303 ****
        VERIFY(actual.extents() == expected.extents());
      };
  
!   auto c3 = std::integral_constant<int, 3>{};
!   auto c6 = std::integral_constant<int, 6>{};
  
    verify(std::mdspan(ptr, 6), std::extents(6));
!   verify(std::mdspan(ptr, c6), std::extents(c6));
!   verify(std::mdspan(ptr, 2, c3), std::extents(2, c3));
    return true;
  }
  
--- 292,311 ----
        VERIFY(actual.extents() == expected.extents());
      };
  
!   auto i3 = std::integral_constant<int, 3>{};
!   auto i6 = std::integral_constant<int, 6>{};
  
    verify(std::mdspan(ptr, 6), std::extents(6));
!   verify(std::mdspan(ptr, i6), std::extents(i6));
!   verify(std::mdspan(ptr, 2, i3), std::extents(2, i3));
!   verify(std::mdspan(ptr, std::true_type{}, i3), std::extents(1, i3));
! 
! #if __glibcxx_constant_wrapper
!   auto c3 = std::constant_wrapper<3>{};
!   verify(std::mdspan(ptr, 2, c3), std::extents(2, i3));
!   verify(std::mdspan(ptr, 2, std::cw<3>), std::extents(2, i3));
!   verify(std::mdspan(ptr, std::cw<true>, std::cw<3>), std::extents(1, i3));
! #endif
    return true;
  }
  
*************** main()
*** 729,736 ****
    test_from_pointer_and_shape();
    static_assert(test_from_pointer_and_shape());
  
!   test_from_pointer_and_integral_constant();
!   static_assert(test_from_pointer_and_integral_constant());
  
    test_from_extents();
    static_assert(test_from_extents());
--- 737,744 ----
    test_from_pointer_and_shape();
    static_assert(test_from_pointer_and_shape());
  
!   test_from_pointer_and_constant();
!   static_assert(test_from_pointer_and_constant());
  
    test_from_extents();
    static_assert(test_from_extents());
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/23_containers/span/deduction.cc gcc-16-20250914/libstdc++-v3/testsuite/23_containers/span/deduction.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/23_containers/span/deduction.cc	Sun Sep  7 22:35:03 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/23_containers/span/deduction.cc	Sun Sep 14 22:32:40 2025
*************** test01()
*** 82,86 ****
    static_assert( is_dynamic_span<int>(s12) );
  
    std::span s13(a.data(), std::integral_constant<size_t, 3>{});
!   static_assert( is_static_span<long, 3>(s13));
  }
--- 82,104 ----
    static_assert( is_dynamic_span<int>(s12) );
  
    std::span s13(a.data(), std::integral_constant<size_t, 3>{});
!   static_assert( is_static_span<long, 3>(s13) );
! 
!   std::span s14(a.data(), true);
!   static_assert( is_dynamic_span<long>(s14) );
! 
!   std::span s15(a.data(), std::true_type{});
!   static_assert( is_dynamic_span<long>(s15) );
! 
! #if __glibcxx_constant_wrapper
!   auto c5 = std::constant_wrapper<5>{};
!   std::span s16(a.data(), c5);
!   static_assert( is_static_span<long, 5>(s16) );
! 
!   std::span s17(a.data(), std::cw<4>);
!   static_assert( is_static_span<long, 4>(s17) );
! 
!   std::span s18(a.data(), std::cw<true>);
!   static_assert( is_dynamic_span<long>(s18) );
! #endif
  }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc gcc-16-20250914/libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc	Sun Sep  7 22:35:03 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc	Sun Sep 14 22:32:40 2025
*************** test01()
*** 42,48 ****
    std::ranges::advance(iter, -2);
    VERIFY( iter == r.begin() );
  
!   std::ranges::advance(iter, r.begin() + 1);
    VERIFY( iter != r.begin() );
    VERIFY( iter != r.end() );
    std::ranges::advance(iter, r.begin());
--- 42,48 ----
    std::ranges::advance(iter, -2);
    VERIFY( iter == r.begin() );
  
!   std::ranges::advance(iter, std::ranges::next(r.begin()));
    VERIFY( iter != r.begin() );
    VERIFY( iter != r.end() );
    std::ranges::advance(iter, r.begin());
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/fill_n/diff_type.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/fill_n/diff_type.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/fill_n/diff_type.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/fill_n/diff_type.cc	Sun Sep 14 22:32:40 2025
***************
*** 0 ****
--- 1,13 ----
+ // { dg-do compile { target c++11 } }
+ 
+ #include <algorithm>
+ #include <testsuite_iterators.h>
+ 
+ void
+ test_pr121890()
+ {
+   // algorithms do not use iterator's difference_type for arithmetic
+   int a[1];
+   __gnu_test::random_access_container<int> c(a);
+   std::fill_n(c.begin(), 1U, 0);
+ }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc	Sun Sep  7 22:35:03 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc	Sun Sep 14 22:32:40 2025
*************** test01()
*** 53,69 ****
  
        iter = ranges::pop_heap(rx, pred, proj);
        VERIFY( iter == rx.end() );
!       VERIFY( *(iter-1) == 50 );
!       VERIFY( ranges::is_heap_until(rx, pred, proj) == iter-1 );
  
!       iter = ranges::pop_heap(rx.begin(), iter-1, pred, proj);
!       VERIFY( iter+1 == rx.end() );
!       VERIFY( *(iter-1) == 49 );
!       VERIFY( ranges::is_heap_until(rx, pred, proj) == iter-1 );
  
!       *(iter-1) = i;
        iter = ranges::push_heap(rx.begin(), iter, pred, proj);
!       VERIFY( iter+1 == rx.end() );
        VERIFY( ranges::is_heap_until(rx, pred, proj) == iter );
  
        *iter = 2*i;
--- 53,69 ----
  
        iter = ranges::pop_heap(rx, pred, proj);
        VERIFY( iter == rx.end() );
!       VERIFY( *ranges::prev(iter) == 50 );
!       VERIFY( ranges::is_heap_until(rx, pred, proj) == ranges::prev(iter) );
  
!       iter = ranges::pop_heap(rx.begin(), ranges::prev(iter), pred, proj);
!       VERIFY( ranges::next(iter) == rx.end() );
!       VERIFY( *ranges::prev(iter) == 49 );
!       VERIFY( ranges::is_heap_until(rx, pred, proj) == ranges::prev(iter) );
  
!       *ranges::prev(iter) = i;
        iter = ranges::push_heap(rx.begin(), iter, pred, proj);
!       VERIFY( ranges::next(iter) == rx.end() );
        VERIFY( ranges::is_heap_until(rx, pred, proj) == iter );
  
        *iter = 2*i;
*************** test01()
*** 71,79 ****
        VERIFY( iter == rx.end() );
        VERIFY( ranges::is_heap_until(rx, pred, proj) == iter );
  
!       *(rx.begin()+1) *= -1;
        VERIFY( !ranges::is_heap(rx, pred, proj) );
!       *(rx.begin()+1) *= -1;
        VERIFY( ranges::is_heap(rx, pred, proj) );
  
        iter = ranges::sort_heap(rx, pred, proj);
--- 71,79 ----
        VERIFY( iter == rx.end() );
        VERIFY( ranges::is_heap_until(rx, pred, proj) == iter );
  
!       *ranges::next(rx.begin()) *= -1;
        VERIFY( !ranges::is_heap(rx, pred, proj) );
!       *ranges::next(rx.begin()) *= -1;
        VERIFY( ranges::is_heap(rx, pred, proj) );
  
        iter = ranges::sort_heap(rx, pred, proj);
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/diff_type.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/diff_type.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/diff_type.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/diff_type.cc	Sun Sep 14 22:32:40 2025
***************
*** 0 ****
--- 1,57 ----
+ // { dg-do compile { target c++11 } }
+ 
+ #include <algorithm>
+ #include <testsuite_iterators.h>
+ 
+ struct Iter
+ {
+   using value_type = int;
+   using difference_type = short;
+   using iterator_category = std::random_access_iterator_tag;
+   using pointer = const value_type*;
+   using reference = const value_type&;
+ 
+   Iter() : p(nullptr) { }
+   explicit Iter(pointer p) : p(p) { }
+   reference operator*() const { return *p; }
+   pointer operator->() const { return p; }
+   reference operator[](difference_type n) const { return p[n]; }
+   Iter& operator++() { ++p; return *this; }
+   Iter& operator--() { --p; return *this; }
+   Iter operator++(int) { return Iter(p++); }
+   Iter operator--(int) { return Iter(p--); }
+   Iter& operator+=(difference_type n) { p += n; return *this; }
+   Iter& operator-=(difference_type n) { p -= n; return *this; }
+ 
+   friend Iter operator+(Iter i, difference_type n) { return i += n; }
+   friend Iter operator+(difference_type n, Iter i) { return i += n; }
+   friend Iter operator-(Iter i, difference_type n) { return i -= n; }
+   friend difference_type operator-(Iter i, Iter j) { return i.p - j.p; }
+ 
+   template<typename D> void operator[](D) const = delete;
+   template<typename D> void operator+=(D) = delete;
+   template<typename D> void operator-=(D) = delete;
+   template<typename D> friend void operator+(Iter, difference_type) = delete;
+   template<typename D> friend void operator+(difference_type, Iter) = delete;
+   template<typename D> friend void operator-(Iter, difference_type) = delete;
+ 
+   friend bool operator==(Iter i, Iter j) { return i.p == j.p; }
+   friend bool operator!=(Iter i, Iter j) { return i.p != j.p; }
+   friend bool operator<(Iter i, Iter j) { return i.p < j.p; }
+   friend bool operator<=(Iter i, Iter j) { return i.p <= j.p; }
+   friend bool operator>(Iter i, Iter j) { return i.p > j.p; }
+   friend bool operator>=(Iter i, Iter j) { return i.p >= j.p; }
+ 
+ private:
+   pointer p;
+ };
+ 
+ void
+ test_pr121890()
+ {
+   // algorithms do not use iterator's difference_type for arithmetic
+   int a[1] = { };
+   __gnu_test::random_access_container<int> c(a);
+   (void) std::lexicographical_compare(c.begin(), c.end(), Iter(a), Iter(a+1));
+   (void) std::lexicographical_compare(Iter(a), Iter(a+1), c.begin(), c.end());
+ }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc	Sun Sep  7 22:35:04 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc	Sun Sep 14 22:32:40 2025
*************** void test01()
*** 43,49 ****
  
    Container con(v.data(), v.data() + 7);
  
!   std::nth_element(con.begin(), con.begin() + 3, con.end());
  }
  
  int main()
--- 43,49 ----
  
    Container con(v.data(), v.data() + 7);
  
!   std::nth_element(con.begin(), std::next(con.begin(), 3), con.end());
  }
  
  int main()
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc	Sun Sep  7 22:35:04 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc	Sun Sep 14 22:32:40 2025
*************** test01()
*** 38,44 ****
  
    auto pred = std::greater{};
    auto proj = [] (int a) { return -a; };
!   for (int i = 0; i < 50; i++)
      {
        test_range<int, random_access_iterator_wrapper> rx(x);
        std::ranlux48_base g(i);
--- 38,44 ----
  
    auto pred = std::greater{};
    auto proj = [] (int a) { return -a; };
!   for (std::ptrdiff_t i = 0; i < 50; i++)
      {
        test_range<int, random_access_iterator_wrapper> rx(x);
        std::ranlux48_base g(i);
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc	Sun Sep  7 22:35:04 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc	Sun Sep 14 22:32:40 2025
*************** struct testNthElement
*** 37,45 ****
    template<typename Container, typename RandomGen>
    void operator()(Container con, RandomGen& rg)
    {
!     const int size = con.end() - con.begin();
      auto dist = std::uniform_int_distribution<>(0, size);
!     const int element = dist(rg);
  
      std::nth_element(con.begin(), con.begin() + element, con.end());
  
--- 37,45 ----
    template<typename Container, typename RandomGen>
    void operator()(Container con, RandomGen& rg)
    {
!     const auto size = con.end() - con.begin();
      auto dist = std::uniform_int_distribution<>(0, size);
!     const decltype(size) element = dist(rg);
  
      std::nth_element(con.begin(), con.begin() + element, con.end());
  
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc	Sun Sep  7 22:35:04 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc	Sun Sep 14 22:32:40 2025
*************** test01()
*** 43,49 ****
  	     17, 8, 18, 9, 19 };
    const int N = sizeof(s1) / sizeof(V);
    Container con(s1, s1 + N);
!   std::partial_sort(con.begin(), con.begin() + 10, con.end());
    VERIFY( s1[0].ok );
    for(int i = 1; i < 10; ++i)
      VERIFY( s1[i].val > s1[i - 1].val && s1[i].ok );
--- 43,49 ----
  	     17, 8, 18, 9, 19 };
    const int N = sizeof(s1) / sizeof(V);
    Container con(s1, s1 + N);
!   std::partial_sort(con.begin(), std::next(con.begin(), 10), con.end());
    VERIFY( s1[0].ok );
    for(int i = 1; i < 10; ++i)
      VERIFY( s1[i].val > s1[i - 1].val && s1[i].ok );
*************** test02()
*** 59,65 ****
  	     17, 8, 18, 9, 19 };
    const int N = sizeof(s1) / sizeof(V);
    Container con(s1, s1 + N);
!   std::partial_sort(con.begin(), con.begin() + 10, con.end(),
  		    __gnu_test::order);
    VERIFY( s1[0].ok );
    for(int i = 1; i < 10; ++i)
--- 59,65 ----
  	     17, 8, 18, 9, 19 };
    const int N = sizeof(s1) / sizeof(V);
    Container con(s1, s1 + N);
!   std::partial_sort(con.begin(), std::next(con.begin(), 10), con.end(),
  		    __gnu_test::order);
    VERIFY( s1[0].ok );
    for(int i = 1; i < 10; ++i)
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc	Sun Sep  7 22:35:04 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc	Sun Sep 14 22:32:41 2025
*************** test01()
*** 47,53 ****
        ranges::shuffle(c, g1);
        ranges::shuffle(ranges::begin(r), ranges::end(r), g2);
  
!       for (unsigned middle = 0; middle < std::min(size, 10U); ++middle)
  	{
  	  auto res1 = ranges::partial_sort(c.begin(), c.begin()+middle, c.end(),
  					   {}, std::negate<>{});
--- 47,54 ----
        ranges::shuffle(c, g1);
        ranges::shuffle(ranges::begin(r), ranges::end(r), g2);
  
!       for (std::ptrdiff_t middle = 0, end = std::min(size, 10U);
! 	   middle < end; ++middle)
  	{
  	  auto res1 = ranges::partial_sort(c.begin(), c.begin()+middle, c.end(),
  					   {}, std::negate<>{});
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc	Sun Sep  7 22:35:04 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc	Sun Sep 14 22:32:41 2025
*************** struct testPartialSort
*** 37,45 ****
    template<typename Container, typename RandomGen>
    void operator()(Container con, RandomGen& rg)
    {
!     const int size = con.end() - con.begin();
      auto dist = std::uniform_int_distribution<>(0, size);
!     const int element = dist(rg);
  
      std::partial_sort(con.begin(), con.begin() + element, con.end());
  
--- 37,45 ----
    template<typename Container, typename RandomGen>
    void operator()(Container con, RandomGen& rg)
    {
!     const auto size = con.end() - con.begin();
      auto dist = std::uniform_int_distribution<>(0, size);
!     const decltype(size) element = dist(rg);
  
      std::partial_sort(con.begin(), con.begin() + element, con.end());
  
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc	Sun Sep  7 22:35:04 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc	Sun Sep 14 22:32:41 2025
*************** namespace ranges = std::ranges;
*** 35,41 ****
  void
  test01()
  {
!   for (unsigned size = 0; size < 50; ++size)
      {
        std::vector<int> vref(size);
        std::iota(vref.begin(), vref.end(), 0);
--- 35,41 ----
  void
  test01()
  {
!   for (std::ptrdiff_t size = 0; size < 50; ++size)
      {
        std::vector<int> vref(size);
        std::iota(vref.begin(), vref.end(), 0);
*************** test01()
*** 45,51 ****
        ranges::shuffle(v1, g1);
        ranges::shuffle(v2, g2);
  
!       for (unsigned middle = 0; middle < 10; ++middle)
  	{
  	  test_container<int, forward_iterator_wrapper> c
  	    = {v1.data(), v1.data() + size};
--- 45,51 ----
        ranges::shuffle(v1, g1);
        ranges::shuffle(v2, g2);
  
!       for (std::ptrdiff_t middle = 0; middle < 10; ++middle)
  	{
  	  test_container<int, forward_iterator_wrapper> c
  	    = {v1.data(), v1.data() + size};
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc	Sun Sep  7 22:35:04 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc	Sun Sep 14 22:32:41 2025
*************** struct testPartialSortCopy
*** 38,46 ****
    template<typename Container, typename RandomGen>
    void operator()(Container con, RandomGen& rg)
    {
!     const int size = con.end() - con.begin();
      auto dist = std::uniform_int_distribution<>(0, size);
!     const int element = dist(rg);
  
      std::vector<int> outvec(element + 1); // add +1 to avoid empty issues
  
--- 38,46 ----
    template<typename Container, typename RandomGen>
    void operator()(Container con, RandomGen& rg)
    {
!     const auto size = con.end() - con.begin();
      auto dist = std::uniform_int_distribution<>(0, size);
!     const decltype(size) element = dist(rg);
  
      std::vector<int> outvec(element + 1); // add +1 to avoid empty issues
  
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/rotate/121913.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/rotate/121913.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/rotate/121913.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/rotate/121913.cc	Sun Sep 14 22:32:41 2025
***************
*** 0 ****
--- 1,45 ----
+ // { dg-do compile { target c++20 } }
+ 
+ // Bug libstdc++/121913  ranges::rotate should use ranges::iter_move
+ 
+ #include <algorithm>
+ 
+ struct A { };
+ 
+ struct B
+ {
+   B& operator=(const B&) = delete;
+   B& operator=(const A&) const;
+ 
+   operator A() const;
+ };
+ 
+ struct I
+ {
+   using value_type = A;
+   using difference_type = int;
+   B operator*() const;
+   B operator[](int) const;
+   I& operator++();
+   I operator++(int);
+   I& operator--();
+   I operator--(int);
+   I& operator+=(int);
+   I& operator-=(int);
+ 
+   auto operator<=>(const I&) const = default;
+ 
+   friend A iter_move(const I&);
+   friend I operator+(I, int);
+   friend I operator-(I, int);
+   friend I operator+(int, I);
+   friend int operator-(I, I);
+ };
+ 
+ static_assert( std::random_access_iterator<I> );
+ 
+ void
+ test_pr121913()
+ {
+   std::ranges::rotate(I{}, I{}, I{});
+ }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc	Sun Sep  7 22:35:04 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc	Sun Sep 14 22:32:41 2025
*************** test02()
*** 86,94 ****
--- 86,112 ----
    ranges::shuffle(w, g);
  }
  
+ struct non_default_sentinel_t { };
+ 
+ template<std::input_or_output_iterator I>
+ bool operator==(const I& i, non_default_sentinel_t)
+ { return i == std::default_sentinel; }
+ 
+ void
+ test03()
+ {
+   // PR libstdc++/121917 - ranges::shuffle incorrectly requires its arguments
+   // to model sized_sentinel_for
+   int a[2]{};
+   std::counted_iterator iter(a, 2);
+   std::default_random_engine e;
+   std::ranges::shuffle(iter, non_default_sentinel_t{}, e);
+ }
+ 
  int
  main()
  {
    test01();
    test02();
+   test03();
  }
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/std/format/pr121765.cc gcc-16-20250914/libstdc++-v3/testsuite/std/format/pr121765.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/std/format/pr121765.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250914/libstdc++-v3/testsuite/std/format/pr121765.cc	Sun Sep 14 22:32:42 2025
***************
*** 0 ****
--- 1,53 ----
+ // { dg-do compile { target c++23 } }
+ 
+ #include <format>
+ #include <utility>
+ 
+ struct MyPair 
+ {
+   int x;
+   int y;
+ };
+ 
+ template<typename CharT>
+ struct std::formatter<MyPair, CharT> 
+ {
+   template<typename ParseContext>
+   auto parse(ParseContext& pc)
+   { return _formatter.parse(pc);  }
+ 
+   template<typename FormatContext>
+   auto format(const MyPair& mp, FormatContext& fc) const
+   { return _formatter.format(std::make_pair(mp.x, mp.y), fc); }
+ 
+ private:
+   std::formatter<std::pair<int, int>, CharT> _formatter;
+ };
+ 
+ static_assert(std::formattable<MyPair, char>);
+ static_assert(std::formattable<MyPair, wchar_t>);
+ 
+ struct MyRange
+ {
+   int* begin;
+   int* end;
+ };
+ 
+ template<typename CharT>
+ struct std::formatter<MyRange, CharT> 
+ {
+   template<typename ParseContext>
+   auto parse(ParseContext& pc)
+   { return _formatter.parse(pc);  }
+ 
+   template<typename FormatContext>
+   auto format(const MyRange& mp, FormatContext& fc) const
+   { return _formatter.format(std::span<int>(mp.begin, mp.end), fc); }
+ 
+ private:
+   std::formatter<std::span<int>, CharT> _formatter;
+ };
+ 
+ static_assert(std::formattable<MyRange, char>);
+ static_assert(std::formattable<MyRange, wchar_t>);
+ 
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc gcc-16-20250914/libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc	Sun Sep  7 22:35:05 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc	Sun Sep 14 22:32:42 2025
*************** test08()
*** 243,249 ****
  
    long b[10]{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    test_range<long, ra_test_wrapper> rb(b);
!   ranges::subrange sized = {rb.begin(), rb.begin()+6};
    using Sized = decltype(sized);
    static_assert( ranges::random_access_range<Sized> );
    static_assert( ranges::sized_range<Sized> );
--- 243,249 ----
  
    long b[10]{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    test_range<long, ra_test_wrapper> rb(b);
!   ranges::subrange sized = {rb.begin(), ranges::next(rb.begin(), 6)};
    using Sized = decltype(sized);
    static_assert( ranges::random_access_range<Sized> );
    static_assert( ranges::sized_range<Sized> );
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/std/time/year_month_day/io.cc gcc-16-20250914/libstdc++-v3/testsuite/std/time/year_month_day/io.cc
*** gcc-16-20250907/libstdc++-v3/testsuite/std/time/year_month_day/io.cc	Sun Sep  7 22:35:05 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/std/time/year_month_day/io.cc	Sun Sep 14 22:32:42 2025
*************** test_format()
*** 43,80 ****
    s = std::format("{:%G-W%V-%u}", 2022y/January/3);
    VERIFY( s == "2022-W01-1" );
  
    // %U: Week number for weeks starting on Sunday
    s = std::format("Day {:%w (%a) of Week %U of %Y}", 2022y/January/1);
    VERIFY( s == "Day 6 (Sat) of Week 00 of 2022" );
    s = std::format("Day {:%w (%a) of Week %U of %Y}", 2022y/January/2);
    VERIFY( s == "Day 0 (Sun) of Week 01 of 2022" );
    // %W: Week number for weeks starting on Monday
    s = std::format("Day {:%u (%a) of Week %W of %Y}", 2022y/January/2);
    VERIFY( s == "Day 7 (Sun) of Week 00 of 2022" );
    s = std::format("Day {:%u (%a) of Week %W of %Y}", 2022y/January/3);
    VERIFY( s == "Day 1 (Mon) of Week 01 of 2022" );
  
    // %V: ISO week number (ISO 8601).
!   s = std::format("W{:%V}", 1977y/1/1);
!   VERIFY( s == "W53" );
!   s = std::format("W{:%V}", 1977y/1/2);
!   VERIFY( s == "W53" );
!   s = std::format("W{:%V}", 1977y/12/31);
!   VERIFY( s == "W52" );
!   s = std::format("W{:%V}", 1978y/1/1);
!   VERIFY( s == "W52" );
!   s = std::format("W{:%V}", 1978y/1/2);
!   VERIFY( s == "W01" );
!   s = std::format("W{:%V}", 1978y/12/31);
!   VERIFY( s == "W52" );
!   s = std::format("W{:%V}", 1979y/1/1);
!   VERIFY( s == "W01" );
!   s = std::format("W{:%V}", 1979y/12/30);
!   VERIFY( s == "W52" );
!   s = std::format("W{:%V}", 1979y/12/31);
!   VERIFY( s == "W01" );
!   s = std::format("W{:%V}", 1980y/1/1);
!   VERIFY( s == "W01" );
  
    s = std::format("{:%x}", 2022y/December/19);
    VERIFY( s == "12/19/22" );
--- 43,88 ----
    s = std::format("{:%G-W%V-%u}", 2022y/January/3);
    VERIFY( s == "2022-W01-1" );
  
+   std::chrono::month Quindecember(17);
    // %U: Week number for weeks starting on Sunday
    s = std::format("Day {:%w (%a) of Week %U of %Y}", 2022y/January/1);
    VERIFY( s == "Day 6 (Sat) of Week 00 of 2022" );
    s = std::format("Day {:%w (%a) of Week %U of %Y}", 2022y/January/2);
    VERIFY( s == "Day 0 (Sun) of Week 01 of 2022" );
+   s = std::format("Day {:%w (%a) of Week %U of %Y}", 2022y/Quindecember/20);
+   VERIFY( s == "Day 1 (Mon) of Week 73 of 2022" );
    // %W: Week number for weeks starting on Monday
    s = std::format("Day {:%u (%a) of Week %W of %Y}", 2022y/January/2);
    VERIFY( s == "Day 7 (Sun) of Week 00 of 2022" );
    s = std::format("Day {:%u (%a) of Week %W of %Y}", 2022y/January/3);
    VERIFY( s == "Day 1 (Mon) of Week 01 of 2022" );
+   s = std::format("Day {:%w (%a) of Week %U of %Y}", 2022y/Quindecember/20);
+   VERIFY( s == "Day 1 (Mon) of Week 73 of 2022" );
  
+   // %G: ISO week-calendar year (ISO 8601)
    // %V: ISO week number (ISO 8601).
!   s = std::format("{:%G-W%V}", 1977y/1/1);
!   VERIFY( s == "1976-W53" );
!   s = std::format("{:%G-W%V}", 1977y/1/2);
!   VERIFY( s == "1976-W53" );
!   s = std::format("{:%G-W%V}", 1977y/12/31);
!   VERIFY( s == "1977-W52" );
!   s = std::format("{:%G-W%V}", 1978y/1/1);
!   VERIFY( s == "1977-W52" );
!   s = std::format("{:%G-W%V}", 1978y/1/2);
!   VERIFY( s == "1978-W01" );
!   s = std::format("{:%G-W%V}", 1978y/12/31);
!   VERIFY( s == "1978-W52" );
!   s = std::format("{:%G-W%V}", 1979y/1/1);
!   VERIFY( s == "1979-W01" );
!   s = std::format("{:%G-W%V}", 1979y/12/30);
!   VERIFY( s == "1979-W52" );
!   s = std::format("{:%G-W%V}", 1979y/12/31);
!   VERIFY( s == "1980-W01" );
!   s = std::format("{:%G-W%V}", 1980y/1/1);
!   VERIFY( s == "1980-W01" );
!   s = std::format("{:%G-W%V}", 1980y/18/20);
!   VERIFY( s == "1981-W26" );
  
    s = std::format("{:%x}", 2022y/December/19);
    VERIFY( s == "12/19/22" );
diff -Nrcpad gcc-16-20250907/libstdc++-v3/testsuite/util/testsuite_iterators.h gcc-16-20250914/libstdc++-v3/testsuite/util/testsuite_iterators.h
*** gcc-16-20250907/libstdc++-v3/testsuite/util/testsuite_iterators.h	Sun Sep  7 22:35:05 2025
--- gcc-16-20250914/libstdc++-v3/testsuite/util/testsuite_iterators.h	Sun Sep 14 22:32:43 2025
*************** namespace __gnu_test
*** 607,612 ****
--- 607,622 ----
      T& operator[](std::ptrdiff_t n) const
      { return *(*this + n); }
  
+ #if __cplusplus >= 201103L
+     // Ensure that the iterator's difference_type is always used.
+     template<typename D> void operator+=(D) = delete;
+     template<typename D> void operator-=(D) = delete;
+     template<typename D> void operator[](D) const = delete;
+     template<typename D>
+       typename std::enable_if<std::is_integral<D>::value>::type
+       operator-(D) const = delete;
+ #endif
+ 
      _GLIBCXX14_CONSTEXPR
      bool operator<(const random_access_iterator_wrapper<T>& in) const
      {
*************** namespace __gnu_test
*** 645,650 ****
--- 655,668 ----
      operator+(std::ptrdiff_t n, random_access_iterator_wrapper<T> it)
      { return it += n; }
  
+ #if __cplusplus >= 201103L
+     // Ensure that the iterator's difference_type is always used.
+     template<typename T, typename D>
+       void operator+(random_access_iterator_wrapper<T>, D) = delete;
+     template<typename T, typename D>
+       void operator+(D, random_access_iterator_wrapper<T>) = delete;
+ #endif
+ 
  
    /**
     * @brief A container-type class for holding iterator wrappers
