diff -Nrcpad gcc-16-20251012/ChangeLog gcc-16-20251019/ChangeLog
*** gcc-16-20251012/ChangeLog	Sun Oct 12 22:32:38 2025
--- gcc-16-20251019/ChangeLog	Sun Oct 19 22:32:11 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-10-15  Basil Milanich  <bmilanich@gmail.com>
+ 
+ 	* Makefile.tpl (distclean): Remove extraenous semicolon.
+ 	* Makefile.in: Rebuilt.
+ 
  2025-10-11  Ben Boeckel  <ben.boeckel@kitware.com>
  
  	* config-ml.in: Update patch email address.
diff -Nrcpad gcc-16-20251012/LAST_UPDATED gcc-16-20251019/LAST_UPDATED
*** gcc-16-20251012/LAST_UPDATED	Sun Oct 12 22:34:27 2025
--- gcc-16-20251019/LAST_UPDATED	Sun Oct 19 22:33:16 2025
***************
*** 1 ****
! Obtained from git: master revision ac524299110838ed8eafb615d100a28649af7f18
--- 1 ----
! Obtained from git: master revision 938ad303f9d52f26a48505903affa183c88bed84
diff -Nrcpad gcc-16-20251012/MD5SUMS gcc-16-20251019/MD5SUMS
*** gcc-16-20251012/MD5SUMS	Sun Oct 12 22:34:41 2025
--- gcc-16-20251019/MD5SUMS	Sun Oct 19 22:33:20 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20251012.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-20251019.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** ac5a8807f431d3dab46a7425b96379e4  .gitig
*** 22,36 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 7d0f3b41610692460e732fbc69471e7f  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 4120a4d7850bf6851d01a945beddc6d3  LAST_UPDATED
  8e87c2f135d3885c0640f7f2229b11ae  MAINTAINERS
  e4676e623f8df5efef68f36db1121a28  Makefile.def
! c467043fa44364538383f659d1ed4fcf  Makefile.in
! 27a1b50926f49913c8934216358deca6  Makefile.tpl
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  d91842c1dd3e9080dd06b73340b682ee  SECURITY.txt
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
--- 22,36 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 56cc49bdd0ee667da2e6c16d27bc35c9  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! a4cc4b6e703540e4ca947a48f56e1d07  LAST_UPDATED
  8e87c2f135d3885c0640f7f2229b11ae  MAINTAINERS
  e4676e623f8df5efef68f36db1121a28  Makefile.def
! 20df5c5e15ee491667a57876562bd1cf  Makefile.in
! a8410827a3532a4129449cdfc3f3f237  Makefile.tpl
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  d91842c1dd3e9080dd06b73340b682ee  SECURITY.txt
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 156,162 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  495ed9ecf8750f1291e5cc64eb777d4e  configure
  3fd655ec08ac4a6ad2ab9bd795775aaf  configure.ac
! 8c92129888084fee6d8ea40c9a7cfbfb  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
--- 156,162 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  495ed9ecf8750f1291e5cc64eb777d4e  configure
  3fd655ec08ac4a6ad2ab9bd795775aaf  configure.ac
! 7d3f8a14d6779c2dfea278b7075d68e2  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
*************** d577ea19d05f19a8364f73c9901223b7  contri
*** 202,208 ****
  0b845b0a18e1acc7cc4d441b4f0cb449  contrib/gcc-changelog/test_email.py
  6662a65218b0a11d673a65656b98d821  contrib/gcc-changelog/test_patches.txt
  983cf4f7b54ddd2b8962dda15b74d10a  contrib/gcc-git-customization.sh
! da34c6613c21220f18626495bd667d9b  contrib/gcc.doxy
  e1a3ba387b3d9bff3516856146cea62d  contrib/gcc_build
  a80a0165b2b8f366a31514e30720bd21  contrib/gcc_update
  f1df2625cad7941fd494fda00a9ad5f1  contrib/gen_autofdo_event.py
--- 202,208 ----
  0b845b0a18e1acc7cc4d441b4f0cb449  contrib/gcc-changelog/test_email.py
  6662a65218b0a11d673a65656b98d821  contrib/gcc-changelog/test_patches.txt
  983cf4f7b54ddd2b8962dda15b74d10a  contrib/gcc-git-customization.sh
! 66d6d2192bfc73b4021f3d0fbb8ce07a  contrib/gcc.doxy
  e1a3ba387b3d9bff3516856146cea62d  contrib/gcc_build
  a80a0165b2b8f366a31514e30720bd21  contrib/gcc_update
  f1df2625cad7941fd494fda00a9ad5f1  contrib/gen_autofdo_event.py
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 519,525 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 446218aabb1a3edf77512af16a7ae925  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 519,525 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! aae00fa5196d235795c520b2d50cfff4  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 556,574 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 08d4cbc9aa1e2f4ceed00d8ddeb825f4  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! c8fd972fe4cd9f861fe963ee77e4134c  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
  23d99b5becf269aa690a91a6f95228b9  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 0951f6f52efb2a99ff5c98e4c17db0a0  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 556,574 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 3a47736b9bcd86ca011170d1e384f28f  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  4dc2573d948287a3722ce977490b026c  gcc/LANGUAGES
! 708dfd962480727525a54a6c6f996a97  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  15d6908b4409b0925d9f1c72b56b5cb7  gcc/README.Portability
  23d99b5becf269aa690a91a6f95228b9  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 7b6e0a71bc17e66295e4be069d47b2f2  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** e86af58cfa10e3db683b44d2a2cf4c29  gcc/ad
*** 615,621 ****
  f8207765beac36c54d43698a11140afa  gcc/ada/alloc.ads
  3150d7e2a4f0018bb92d065ed3aedcc0  gcc/ada/argv-lynxos178-raven-cert.c
  5470386a6301c0323b6ee66cf06c1e42  gcc/ada/argv.c
! 65d05d4287734e918b4435d8b9cd690c  gcc/ada/aspects.adb
  8c62ffc91a61d63a863ec2627bbc388a  gcc/ada/aspects.ads
  6ac042bab0630fbc0b61560d012db735  gcc/ada/atree.adb
  e06413c30b21b3ef9529c9b89592cca6  gcc/ada/atree.ads
--- 615,621 ----
  f8207765beac36c54d43698a11140afa  gcc/ada/alloc.ads
  3150d7e2a4f0018bb92d065ed3aedcc0  gcc/ada/argv-lynxos178-raven-cert.c
  5470386a6301c0323b6ee66cf06c1e42  gcc/ada/argv.c
! aab949fe9ede11d088dfe5f0493580f5  gcc/ada/aspects.adb
  8c62ffc91a61d63a863ec2627bbc388a  gcc/ada/aspects.ads
  6ac042bab0630fbc0b61560d012db735  gcc/ada/atree.adb
  e06413c30b21b3ef9529c9b89592cca6  gcc/ada/atree.ads
*************** ea767dec8fd43eff8cefde339b3a7d04  gcc/ad
*** 911,917 ****
  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
--- 911,917 ----
  8c188167519fcde228e7406b86ad3c4f  gcc/ada/indepsw.ads
  bba82adc9fdf0fc509eaae42d763da79  gcc/ada/init.c
  c45e7a63e33e0bdb85ff3e50d0220aa4  gcc/ada/initialize.c
! 2665b7c28653e7dd79dc37269c935ab4  gcc/ada/inline.adb
  91cdabaa5b703885dad7b8dc5df17446  gcc/ada/inline.ads
  8d71a48789cbec10ceabfe68770803c1  gcc/ada/itypes.adb
  f62835b6268c11341ad683753a9d7acd  gcc/ada/itypes.ads
*************** d1852c8e168ded223730761c0854b44f  gcc/ad
*** 933,939 ****
  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
  c13d27ec688dfebb1965a8e9eaf55c2c  gcc/ada/libgnarl/a-astaco.ads
  66247d074eecb4270e7cf01d16e0cfce  gcc/ada/libgnarl/a-dinopr.ads
--- 933,939 ----
  ec836ec1d277ea32256e18e07e29b00f  gcc/ada/lib-xref.adb
  d4f360a3abffdbf0ea415e2631c58045  gcc/ada/lib-xref.ads
  e15b36c98a01c7093ce126c5b2a938e6  gcc/ada/lib.adb
! cba1c23fd4669470c62a56e00365d141  gcc/ada/lib.ads
  2d8ce9872083b9f641e37150d0bb18f1  gcc/ada/libgnarl/a-astaco.adb
  c13d27ec688dfebb1965a8e9eaf55c2c  gcc/ada/libgnarl/a-astaco.ads
  66247d074eecb4270e7cf01d16e0cfce  gcc/ada/libgnarl/a-dinopr.ads
*************** fcfa33c29572e4f892bd68b226e0184d  gcc/ad
*** 2860,2866 ****
  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
--- 2860,2866 ----
  bb35d323ecf448aa8fb7025a4bc206ac  gcc/ada/raise.h
  60f15e9242cc708164c2465f35b7bcee  gcc/ada/repinfo-input.adb
  2068823632327326518141ecef478b56  gcc/ada/repinfo-input.ads
! 9814fde7866f797e7a1d4b4016d1804e  gcc/ada/repinfo.adb
  2b7ee770fce987fa4a536a7ff6f66d28  gcc/ada/repinfo.ads
  9f01bfb3f02044d2af9dd8653ff046c7  gcc/ada/repinfo.h
  3d4a1dc93d967d84654b6489aaf51b1b  gcc/ada/restrict.adb
*************** efb8983a0d800885901944d42ede5985  gcc/ad
*** 2902,2908 ****
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 090f0623302f273872f394dd5d59b44c  gcc/ada/sem_ch12.adb
  f981520c42b732545be8bb5c8813ccfd  gcc/ada/sem_ch12.ads
  d6ef5724397901e11d6ea6485aa07816  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
--- 2902,2908 ----
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! c819eb1296bc32ede32c4959c26ad525  gcc/ada/sem_ch12.adb
  f981520c42b732545be8bb5c8813ccfd  gcc/ada/sem_ch12.ads
  d6ef5724397901e11d6ea6485aa07816  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
*************** e8573b06cd7059d6bbde030175ab1a71  gcc/ad
*** 2916,2922 ****
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
  9c8edc8418e17cd1a5fbd65b77454574  gcc/ada/sem_ch6.adb
  165c2ff9990d74ba204881b7983566c7  gcc/ada/sem_ch6.ads
! cbaf217196ce3fa57a1de98d847a02af  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
  3a04524f67dd69e53da10a9b9ff7745e  gcc/ada/sem_ch8.adb
  f0b4e317e5d5515a6ec337bc5acf5fe0  gcc/ada/sem_ch8.ads
--- 2916,2922 ----
  ec8d5a42c27c46e4969c16d6e18ed276  gcc/ada/sem_ch5.ads
  9c8edc8418e17cd1a5fbd65b77454574  gcc/ada/sem_ch6.adb
  165c2ff9990d74ba204881b7983566c7  gcc/ada/sem_ch6.ads
! 8fafaa13f3f979874c8cdb29690deeec  gcc/ada/sem_ch7.adb
  24a1265e6a25756265643858abcf7ded  gcc/ada/sem_ch7.ads
  3a04524f67dd69e53da10a9b9ff7745e  gcc/ada/sem_ch8.adb
  f0b4e317e5d5515a6ec337bc5acf5fe0  gcc/ada/sem_ch8.ads
*************** db6f5a37bd59fd83ff3286e71ab985fe  gcc/ad
*** 2948,2954 ****
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
  d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! 39aa54dd1b590e6c3403990a9a35ade5  gcc/ada/sem_util.adb
  4c258be138ab7760a8329aa8913fe358  gcc/ada/sem_util.ads
  9668d6a37fe84f41a81a7ffcb66d5ecc  gcc/ada/sem_warn.adb
  441e0f80657ef72324e40dd20cebfc82  gcc/ada/sem_warn.ads
--- 2948,2954 ----
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
  d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! dd5d990522a207bc6cb8eca47211cc5b  gcc/ada/sem_util.adb
  4c258be138ab7760a8329aa8913fe358  gcc/ada/sem_util.ads
  9668d6a37fe84f41a81a7ffcb66d5ecc  gcc/ada/sem_warn.adb
  441e0f80657ef72324e40dd20cebfc82  gcc/ada/sem_warn.ads
*************** df3f6c6882fc8f715d4cc537af0f6442  gcc/ad
*** 3059,3069 ****
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! 1fa2806c1e811ffa8efc0b03196e4b65  gcc/analyzer/ChangeLog
  99ca8e9358149d619a543e45725f689f  gcc/analyzer/access-diagram.cc
  58f352acafda673d24da4113c4f80b8d  gcc/analyzer/access-diagram.h
! 04e7ad858f586671ed9cde2cc32385d2  gcc/analyzer/ana-state-to-diagnostic-state.cc
! acecd42f928b39f9f6857f55e7a67153  gcc/analyzer/ana-state-to-diagnostic-state.h
  0fbda9dacfcf6f4071f7bee8c6b7dbe9  gcc/analyzer/analysis-plan.cc
  b5f1385e0b051936dcf6b44d2802237b  gcc/analyzer/analysis-plan.h
  5e7a1356f3a013d95df4966c3b0184db  gcc/analyzer/analyzer-language.cc
--- 3059,3069 ----
  a13250e9011949e791f210139f4c4323  gcc/align.h
  192d075c6984da6ef1e282fd63829079  gcc/alloc-pool.cc
  b2194a7136db5f26272ca6162d858997  gcc/alloc-pool.h
! 7fb76c248aee3840a23933ab83ae7018  gcc/analyzer/ChangeLog
  99ca8e9358149d619a543e45725f689f  gcc/analyzer/access-diagram.cc
  58f352acafda673d24da4113c4f80b8d  gcc/analyzer/access-diagram.h
! d3f3112562b7552a583d7d995ed2f2d1  gcc/analyzer/ana-state-to-diagnostic-state.cc
! 6d9c43e7bdf9c420e7318dff82c55f74  gcc/analyzer/ana-state-to-diagnostic-state.h
  0fbda9dacfcf6f4071f7bee8c6b7dbe9  gcc/analyzer/analysis-plan.cc
  b5f1385e0b051936dcf6b44d2802237b  gcc/analyzer/analysis-plan.h
  5e7a1356f3a013d95df4966c3b0184db  gcc/analyzer/analyzer-language.cc
*************** a82a71ab7f96ca02b70fd75fd951ea5f  gcc/an
*** 3087,3093 ****
  850dcfdb7202d7b55db64d1dbe5cf586  gcc/analyzer/call-string.h
  7c69fc14b63442e77b2aff4f54aa775d  gcc/analyzer/call-summary.cc
  bc77cd1e5aec40e5623c49cb8974b3d4  gcc/analyzer/call-summary.h
! 399cfb6eb3baf3ee49a4c867aa03f715  gcc/analyzer/checker-event.cc
  55206f539e6dc12c4379dd09712a1f0f  gcc/analyzer/checker-event.h
  3ab3510c119841ad20bbfcab82653f7c  gcc/analyzer/checker-path.cc
  717c8ea5a0fcd626c448dd37a593cfda  gcc/analyzer/checker-path.h
--- 3087,3093 ----
  850dcfdb7202d7b55db64d1dbe5cf586  gcc/analyzer/call-string.h
  7c69fc14b63442e77b2aff4f54aa775d  gcc/analyzer/call-summary.cc
  bc77cd1e5aec40e5623c49cb8974b3d4  gcc/analyzer/call-summary.h
! 167e286646f36dd35ee7a5c7725901f5  gcc/analyzer/checker-event.cc
  55206f539e6dc12c4379dd09712a1f0f  gcc/analyzer/checker-event.h
  3ab3510c119841ad20bbfcab82653f7c  gcc/analyzer/checker-path.cc
  717c8ea5a0fcd626c448dd37a593cfda  gcc/analyzer/checker-path.h
*************** e9868260617ca3243c105a45652ebf92  gcc/an
*** 3138,3144 ****
  7a28d77074f7b1b5ea7b79aa82f21698  gcc/analyzer/sm-fd.dot
  c4143ba7f15b2ebb99f1baf69977d2a4  gcc/analyzer/sm-file.cc
  38e55000eed6a24e2db959ceb1b99c4f  gcc/analyzer/sm-file.dot
! 4ce5b45bae6a512dccf777dfe7419c46  gcc/analyzer/sm-malloc.cc
  e0c92f0f51c6cc6d8c51b020ac66c866  gcc/analyzer/sm-malloc.dot
  2ba73b1a94b1ba447cf0faecae53806f  gcc/analyzer/sm-pattern-test.cc
  3161ab2d3840caee34e00c9b0e28ff03  gcc/analyzer/sm-sensitive.cc
--- 3138,3144 ----
  7a28d77074f7b1b5ea7b79aa82f21698  gcc/analyzer/sm-fd.dot
  c4143ba7f15b2ebb99f1baf69977d2a4  gcc/analyzer/sm-file.cc
  38e55000eed6a24e2db959ceb1b99c4f  gcc/analyzer/sm-file.dot
! 0d04f977e54a0df1662e2920a374ebf2  gcc/analyzer/sm-malloc.cc
  e0c92f0f51c6cc6d8c51b020ac66c866  gcc/analyzer/sm-malloc.dot
  2ba73b1a94b1ba447cf0faecae53806f  gcc/analyzer/sm-pattern-test.cc
  3161ab2d3840caee34e00c9b0e28ff03  gcc/analyzer/sm-sensitive.cc
*************** cc81acb908eb9d6b13038a95c3a10a9c  gcc/an
*** 3163,3196 ****
  eeb42b412edc2884a4c60d6f38f7473b  gcc/array-traits.h
  6abcb9777280c69da14835a391a5c347  gcc/asan.cc
  135df8f25422fc20afd9efad9dffdd54  gcc/asan.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
  9a7178a90befb7c228527722f0652bc8  gcc/attribs.cc
  74de0da9c4c12c7fd923885069f35eb2  gcc/attribs.h
  54fb3cb1cab63227c50a50819ea1a3c3  gcc/auto-inc-dec.cc
  c25bbcb70f43e3c72a329043adf2c6c2  gcc/auto-obstack.h
! 9f43e2304a6d81edf1dd7cb434123549  gcc/auto-profile.cc
  89bffa3f5c7147f088b95f40000c1e56  gcc/auto-profile.h
  1fd4de40d068f0ae7857fb0c2e22e46e  gcc/avoid-store-forwarding.cc
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
  db748cbed8c442a442779d8d857a3ae4  gcc/backend.h
  dc5d5c32319eb04bed4f17e183ddeeab  gcc/basic-block.h
! 58b4f183a8f75d516025244e2096223f  gcc/bb-reorder.cc
  3e49b0021eba39cbab2bc26d55fde08f  gcc/bb-reorder.h
  919e197f7b89caf16d31f0882964adfa  gcc/bbitmap.h
  bb79e5d725623239adccc4b97ad421cb  gcc/bitmap.cc
  fe292df4b7f3e3ef7c0b8305084b6844  gcc/bitmap.h
  8ab376ca331fbf6857570a1f5f067f2f  gcc/btfout.cc
! 644ae78fbe2e513e06637aa080774d55  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! c3a96f63662288d3cdf9bb743d1cef66  gcc/builtins.cc
! ffcb644f7e9f6080db34e56bb66567f5  gcc/builtins.def
  08bacecaf5d3527bf3df15480fb78537  gcc/builtins.h
! 8194ed75e5c70dc26aa0c86dc105c949  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
! 41f318bc6fe6eedde67bf563d55a8088  gcc/c-family/c-attribs.cc
  593fbbab9c7b834d617562d8c26302d9  gcc/c-family/c-common.cc
  c273c4ad95ccdbfe677146505900c62e  gcc/c-family/c-common.def
  eef2a6baa49f9e2a37689fab581e698b  gcc/c-family/c-common.h
--- 3163,3198 ----
  eeb42b412edc2884a4c60d6f38f7473b  gcc/array-traits.h
  6abcb9777280c69da14835a391a5c347  gcc/asan.cc
  135df8f25422fc20afd9efad9dffdd54  gcc/asan.h
+ 22d14e98cf7ac7f3fc14839a0c2edb8a  gcc/attr-callback.cc
+ d27354907d96bc34ceb8142996a383d0  gcc/attr-callback.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
  9a7178a90befb7c228527722f0652bc8  gcc/attribs.cc
  74de0da9c4c12c7fd923885069f35eb2  gcc/attribs.h
  54fb3cb1cab63227c50a50819ea1a3c3  gcc/auto-inc-dec.cc
  c25bbcb70f43e3c72a329043adf2c6c2  gcc/auto-obstack.h
! 343b8a20c6b422b044d17099f8d0e63b  gcc/auto-profile.cc
  89bffa3f5c7147f088b95f40000c1e56  gcc/auto-profile.h
  1fd4de40d068f0ae7857fb0c2e22e46e  gcc/avoid-store-forwarding.cc
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
  db748cbed8c442a442779d8d857a3ae4  gcc/backend.h
  dc5d5c32319eb04bed4f17e183ddeeab  gcc/basic-block.h
! 15eb6a7ac97de636a72d29b459bdfac5  gcc/bb-reorder.cc
  3e49b0021eba39cbab2bc26d55fde08f  gcc/bb-reorder.h
  919e197f7b89caf16d31f0882964adfa  gcc/bbitmap.h
  bb79e5d725623239adccc4b97ad421cb  gcc/bitmap.cc
  fe292df4b7f3e3ef7c0b8305084b6844  gcc/bitmap.h
  8ab376ca331fbf6857570a1f5f067f2f  gcc/btfout.cc
! 5423cf9cfc9de5ca30bc45842efead77  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! 1f5d04ed09772ef8cff71c5a2d838b85  gcc/builtins.cc
! 52ff6fb92e162a8ad41a1af1dfb0171a  gcc/builtins.def
  08bacecaf5d3527bf3df15480fb78537  gcc/builtins.h
! 37d43b5f5df7900ba88466bbff6afe5b  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
! eab1507c247022223dcdc6d8d8902ff1  gcc/c-family/c-attribs.cc
  593fbbab9c7b834d617562d8c26302d9  gcc/c-family/c-common.cc
  c273c4ad95ccdbfe677146505900c62e  gcc/c-family/c-common.def
  eef2a6baa49f9e2a37689fab581e698b  gcc/c-family/c-common.h
*************** fc808567009babd00ebcf49b5b985691  gcc/c-
*** 3222,3228 ****
  48e5431bc15452653e41b37b5c3643e5  gcc/c-family/c-ubsan.cc
  a28f2477c85a17e42026521322b3649a  gcc/c-family/c-ubsan.h
  47faafdef0d76034184e171880096959  gcc/c-family/c-warn.cc
! 335a53a869a563d211ffcef38a68e771  gcc/c-family/c.opt
  be7f7be2479df6718f5fff59312996f8  gcc/c-family/c.opt.urls
  22bd7478421befafcfbd805e3ca373ac  gcc/c-family/cppspec.cc
  801075b0f2da341a38f761b3b7ffd7cd  gcc/c-family/known-headers.cc
--- 3224,3230 ----
  48e5431bc15452653e41b37b5c3643e5  gcc/c-family/c-ubsan.cc
  a28f2477c85a17e42026521322b3649a  gcc/c-family/c-ubsan.h
  47faafdef0d76034184e171880096959  gcc/c-family/c-warn.cc
! 85791f4868dc6cc94bff9ac360d0a37b  gcc/c-family/c.opt
  be7f7be2479df6718f5fff59312996f8  gcc/c-family/c.opt.urls
  22bd7478421befafcfbd805e3ca373ac  gcc/c-family/cppspec.cc
  801075b0f2da341a38f761b3b7ffd7cd  gcc/c-family/known-headers.cc
*************** c08ead9db4f4b74ebcdec4329f22b297  gcc/cf
*** 3265,3271 ****
  0761d2fe0a8e51aa7ed662e27b66747a  gcc/cfgcleanup.h
  b16722a083547061a927ed6271ce6028  gcc/cfgexpand.cc
  1ec4e9a88b7aff0e8dc3577ab103b559  gcc/cfgexpand.h
! 53c30cab6772281953a4a9c1e9c8c33b  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
  1103c84ad5690bda0bd6e0c71ea46b93  gcc/cfgloop.cc
  5b21e1c152c74de1773a6cfb0c115604  gcc/cfgloop.h
--- 3267,3273 ----
  0761d2fe0a8e51aa7ed662e27b66747a  gcc/cfgcleanup.h
  b16722a083547061a927ed6271ce6028  gcc/cfgexpand.cc
  1ec4e9a88b7aff0e8dc3577ab103b559  gcc/cfgexpand.h
! 5d460f011f4a8ff85a40de115ad0752d  gcc/cfghooks.cc
  bbad65845fcf9cdbc5137d96f92eacab  gcc/cfghooks.h
  1103c84ad5690bda0bd6e0c71ea46b93  gcc/cfgloop.cc
  5b21e1c152c74de1773a6cfb0c115604  gcc/cfgloop.h
*************** bbad65845fcf9cdbc5137d96f92eacab  gcc/cf
*** 3274,3285 ****
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
  86fd277253913430380bc5d51e4b395b  gcc/cfgrtl.cc
  132f0eb682ec622dc563cfc697da1fb8  gcc/cfgrtl.h
! 806bc2cd129de0ecd3f11c06721a6258  gcc/cgraph.cc
! 5dcea6ac1c30ac59fa4600c88cd0c0c5  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
! 511fb13cf297e4e7e3d94a549462b128  gcc/cgraphclones.cc
  4e2f7703a23f2c2483098ddb6edac479  gcc/cgraphunit.cc
! 70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
  dbd2a8468cb81309bfd99b4638361a2f  gcc/cobol/ChangeLog
  38de2f3ba3eff58bbacc8dcdbdcd5be7  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
--- 3276,3287 ----
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
  86fd277253913430380bc5d51e4b395b  gcc/cfgrtl.cc
  132f0eb682ec622dc563cfc697da1fb8  gcc/cfgrtl.h
! 599612d60d4d908603912594ba7e7db7  gcc/cgraph.cc
! adc277e694f0339369a2de3d3e50d400  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
! f260ce27ba36b1e6d964fe6ba1552cb6  gcc/cgraphclones.cc
  4e2f7703a23f2c2483098ddb6edac479  gcc/cgraphunit.cc
! bd38ef84be4e8351bde3ee96f062c357  gcc/cif-code.def
  dbd2a8468cb81309bfd99b4638361a2f  gcc/cobol/ChangeLog
  38de2f3ba3eff58bbacc8dcdbdcd5be7  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
*************** bdd6fbf13776c7983a16ac857615424c  gcc/co
*** 3299,3312 ****
  dc19c5ace63d4e5c9bc9098936f305be  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
  d7c8a533dca0074af1f74be3f2ef9dce  gcc/cobol/gcobolspec.cc
! b5fe7cd8c9234968d1a24015228eb4c7  gcc/cobol/genapi.cc
! fefbd6d69c93a7c38a117cba57a9958f  gcc/cobol/genapi.h
! 711ffde98c30b53bd78b59663250da5e  gcc/cobol/gengen.cc
! e9232e498b04c68faa18eb31fabd8177  gcc/cobol/gengen.h
  057d976c1f81a36cc540a6417c772369  gcc/cobol/genmath.cc
  d44e8c86d57fb704b6c1fbab3464fb9a  gcc/cobol/genmath.h
! e4462e26910ae44a8ed3a06d1577c4ed  gcc/cobol/genutil.cc
! e9a5e4fe35ebda8b2307a032ba88f812  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0fa33dbe050697f40b5e8df91896da9a  gcc/cobol/inspect.h
  2c85ade938027e95c4c411b384f6ad11  gcc/cobol/lang-specs.h
--- 3301,3314 ----
  dc19c5ace63d4e5c9bc9098936f305be  gcc/cobol/gcobol.1
  527925049a81a36c06220d368570f55a  gcc/cobol/gcobol.3
  d7c8a533dca0074af1f74be3f2ef9dce  gcc/cobol/gcobolspec.cc
! 1a356fec7f705a4bb28083c10ef4b793  gcc/cobol/genapi.cc
! a931fea8067c3890a208b60ed91a7cd7  gcc/cobol/genapi.h
! a11b45ded2381dbcad1f1d4ea77d346d  gcc/cobol/gengen.cc
! eeb2d20d7d0d4521acb2468dee246887  gcc/cobol/gengen.h
  057d976c1f81a36cc540a6417c772369  gcc/cobol/genmath.cc
  d44e8c86d57fb704b6c1fbab3464fb9a  gcc/cobol/genmath.h
! 7e6bde69310049611167174a5feae65a  gcc/cobol/genutil.cc
! 37f3bc2a2f07d757ac3f9e33027c2e3b  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0fa33dbe050697f40b5e8df91896da9a  gcc/cobol/inspect.h
  2c85ade938027e95c4c411b384f6ad11  gcc/cobol/lang-specs.h
*************** d5f8cc9842e0f1f1648dc07251b7e682  gcc/co
*** 3323,3330 ****
  197fd99a62b2440c1460f4ffbf664806  gcc/cobol/show_parse.h
  c53ffb5b1f39680588d8ace8a3a44953  gcc/cobol/structs.cc
  6a12fdf051ff87867b239b5ae272fd55  gcc/cobol/structs.h
! a2af1e1d3b7e12da33c58235bac26e64  gcc/cobol/symbols.cc
! 8b3dd95d4f5750e3f9db0643c231a1b0  gcc/cobol/symbols.h
  56876c7f6bf3230239c8142eb049a183  gcc/cobol/symfind.cc
  47e77cfa8cb1de2e31a19cba62bd6612  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
--- 3325,3332 ----
  197fd99a62b2440c1460f4ffbf664806  gcc/cobol/show_parse.h
  c53ffb5b1f39680588d8ace8a3a44953  gcc/cobol/structs.cc
  6a12fdf051ff87867b239b5ae272fd55  gcc/cobol/structs.h
! 68e78ea14b60833b113b22d59963c03e  gcc/cobol/symbols.cc
! 141e0e96743cfeaa2880c7f6f1b0370b  gcc/cobol/symbols.h
  56876c7f6bf3230239c8142eb049a183  gcc/cobol/symfind.cc
  47e77cfa8cb1de2e31a19cba62bd6612  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
*************** d0fd2d6b92855f5ea2dcf1212cdff3ec  gcc/co
*** 3338,3347 ****
  f55010fab8b9aabea82c3ac50d031028  gcc/collect2.h
  47b3611844b583f418ce3aaf051c492a  gcc/color-macros.h
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
! 5d00831740184b5f4f8f133a3a1ffc16  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
! ee321942a2d6f74209cec1ee370f2416  gcc/common.opt
! eb1a129fcf844da6d7208cd9a5d4e176  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
--- 3340,3349 ----
  f55010fab8b9aabea82c3ac50d031028  gcc/collect2.h
  47b3611844b583f418ce3aaf051c492a  gcc/color-macros.h
  7041e62f0f582b09331732fef4bb9545  gcc/combine-stack-adj.cc
! 8db32a2301bfbb3281c1cc38024ad792  gcc/combine.cc
  2b9ccf7fc2473ef7e36aee9bcf170843  gcc/common.md
! 0b6ae6ebc868fe9f9d6dca9d8080e6b4  gcc/common.opt
! ee6af2937fce4a98c406a6da277ef9a6  gcc/common.opt.urls
  26050db921f73fd87b026dc950bde97b  gcc/common/common-target-def.h
  dae02ebe59cdaaf21611ad354e939ca5  gcc/common/common-target.def
  4a00b1cedd9d15d93e32920b16b3c292  gcc/common/common-target.h
*************** e6e86df919407a02a2bcc6baffb28dd6  gcc/co
*** 3364,3373 ****
  e52e97d4d4876d6657fdd48e9f622383  gcc/common/config/frv/frv-common.cc
  2da12f05a7597886b6b659f44fb2d0b0  gcc/common/config/gcn/gcn-common.cc
  cba8bad9b28e5a0f8934b00becb13d4a  gcc/common/config/h8300/h8300-common.cc
! e71096ff5407aec9cfdd9a41198cc51a  gcc/common/config/i386/cpuinfo.h
! 0dd5add9f6f124ce58837f67e6e8b0f2  gcc/common/config/i386/i386-common.cc
! 9578d58dfbd0a39d8cb71180552ad36a  gcc/common/config/i386/i386-cpuinfo.h
! 539245ae5afaff8f57da7ed327bfd7e5  gcc/common/config/i386/i386-isas.h
  2a64c5f639b347964e652ebb1add9831  gcc/common/config/ia64/ia64-common.cc
  94b8ff9b1f75e2aaff5033327ccfb449  gcc/common/config/iq2000/iq2000-common.cc
  fd1d75b5f0b2cfac12e5ed2e83377f77  gcc/common/config/lm32/lm32-common.cc
--- 3366,3375 ----
  e52e97d4d4876d6657fdd48e9f622383  gcc/common/config/frv/frv-common.cc
  2da12f05a7597886b6b659f44fb2d0b0  gcc/common/config/gcn/gcn-common.cc
  cba8bad9b28e5a0f8934b00becb13d4a  gcc/common/config/h8300/h8300-common.cc
! 89f1892e73f78724ba1ba34828abe757  gcc/common/config/i386/cpuinfo.h
! 06fcbcef29a2d3e887f2603868b5867f  gcc/common/config/i386/i386-common.cc
! 5f800ff27cebabe472e14ce4a889d156  gcc/common/config/i386/i386-cpuinfo.h
! 1fde110881f428f0dd213fa45b6ca1ad  gcc/common/config/i386/i386-isas.h
  2a64c5f639b347964e652ebb1add9831  gcc/common/config/ia64/ia64-common.cc
  94b8ff9b1f75e2aaff5033327ccfb449  gcc/common/config/iq2000/iq2000-common.cc
  fd1d75b5f0b2cfac12e5ed2e83377f77  gcc/common/config/lm32/lm32-common.cc
*************** f842f1b8595f3ac795ba92c2b07085e6  gcc/co
*** 3386,3392 ****
  03a53ecd36b397fbe0846ead66505e2d  gcc/common/config/pa/pa-common.cc
  1fbcfc1a92bb13e4405bc75767cf8a36  gcc/common/config/pdp11/pdp11-common.cc
  8af6b6302dcf18a445bb944adeda6388  gcc/common/config/pru/pru-common.cc
! ef075d12174a03d1df62e05ff60dc76d  gcc/common/config/riscv/riscv-common.cc
  8a5a4ee26b110f44497208d1b31e3503  gcc/common/config/riscv/riscv-ext-bitmask.def
  08537bef63b33fd56aeb2a292c9a207a  gcc/common/config/rs6000/rs6000-common.cc
  9ddaceac9f81b4798f64241b273f8e1c  gcc/common/config/rx/rx-common.cc
--- 3388,3394 ----
  03a53ecd36b397fbe0846ead66505e2d  gcc/common/config/pa/pa-common.cc
  1fbcfc1a92bb13e4405bc75767cf8a36  gcc/common/config/pdp11/pdp11-common.cc
  8af6b6302dcf18a445bb944adeda6388  gcc/common/config/pru/pru-common.cc
! 1de546d9c2eb0408d66599bf602e11a6  gcc/common/config/riscv/riscv-common.cc
  8a5a4ee26b110f44497208d1b31e3503  gcc/common/config/riscv/riscv-ext-bitmask.def
  08537bef63b33fd56aeb2a292c9a207a  gcc/common/config/rs6000/rs6000-common.cc
  9ddaceac9f81b4798f64241b273f8e1c  gcc/common/config/rx/rx-common.cc
*************** b5a916bb9dd788754ac9e4ad7174ee74  gcc/co
*** 3401,3407 ****
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! cd4335ae456a470f5e79e44eb1381288  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  9c5069f4e36f97d3c2a9c40414f67a4e  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 3403,3409 ----
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! d0ab3a02b680c7b2b2698eb6e1b7bcbc  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  9c5069f4e36f97d3c2a9c40414f67a4e  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** b824341b8f6fdb8eb1667425adf63db8  gcc/co
*** 3442,3455 ****
  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
  fec3caf088f2add6cefcfb20f6dcae7f  gcc/config/aarch64/aarch64-sme.md
  fa6672290fdf9366d9919defcb7e41d7  gcc/config/aarch64/aarch64-speculation.cc
  9311f63fb41454e9c423862057e8eb6b  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
  cdcf6636402c3c91eb0010325542b491  gcc/config/aarch64/aarch64-sve-builtins-base.h
  993ce6c82fa9fb849e689abc42a6b57d  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! 1093118c843f37d5b0c03624e5cf96ab  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
  b253116c3233b03f9ffe694bbbc6efbe  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
  f3e52f115b01c46c9eb8009d950b8d7f  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  2c404dcd9f8edf147364f4503199c585  gcc/config/aarch64/aarch64-sve-builtins-sme.def
--- 3444,3457 ----
  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
! 89724ed882726f9413b64bb39213226c  gcc/config/aarch64/aarch64-simd.md
  fec3caf088f2add6cefcfb20f6dcae7f  gcc/config/aarch64/aarch64-sme.md
  fa6672290fdf9366d9919defcb7e41d7  gcc/config/aarch64/aarch64-speculation.cc
  9311f63fb41454e9c423862057e8eb6b  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  35bb69e0b38657d068d103a2da1b8a16  gcc/config/aarch64/aarch64-sve-builtins-base.def
  cdcf6636402c3c91eb0010325542b491  gcc/config/aarch64/aarch64-sve-builtins-base.h
  993ce6c82fa9fb849e689abc42a6b57d  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! 42a9af6f78fbb3a93e9003ecdcd12f81  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
  b253116c3233b03f9ffe694bbbc6efbe  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
  f3e52f115b01c46c9eb8009d950b8d7f  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
  2c404dcd9f8edf147364f4503199c585  gcc/config/aarch64/aarch64-sve-builtins-sme.def
*************** f3e52f115b01c46c9eb8009d950b8d7f  gcc/co
*** 3457,3473 ****
  590c9c2e2c6855697cef84761c420b80  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
  5249e3dd61e8bd70c85a23c5711f3ca2  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  e2d80b89552da0c6b4cb6bede3b2e573  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 0ff159e32fdf197788126750e30593b8  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
! 7fd6d8764884c5b95a20329cf9b10465  gcc/config/aarch64/aarch64-sve-builtins.h
! 211b6ba80b927c558a6e5bdaca7a22e4  gcc/config/aarch64/aarch64-sve.md
! b6ce182d41e8aa95a28f65948b55d63e  gcc/config/aarch64/aarch64-sve2.md
! 85eca95263cb099f09b18daca655f091  gcc/config/aarch64/aarch64-sys-regs.def
  bb99d6fe2d4e8eaffacc71689325d35c  gcc/config/aarch64/aarch64-tune.md
  586e3b2fd446baa0a6fb8da7c8cdd660  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 612af47ad0355a8f07811071a834a4c6  gcc/config/aarch64/aarch64.cc
! e88bf184a2d9e804f5493fe2a553b3df  gcc/config/aarch64/aarch64.h
  79c93476404c0822020c37da243fdd02  gcc/config/aarch64/aarch64.md
  f4896e5648afc7366568914b0ee0b8e2  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
--- 3459,3475 ----
  590c9c2e2c6855697cef84761c420b80  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
  5249e3dd61e8bd70c85a23c5711f3ca2  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
  e2d80b89552da0c6b4cb6bede3b2e573  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! e20677f3c781767c35b5c923257b576d  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
! ae7ea468046099ae99d717e107a85497  gcc/config/aarch64/aarch64-sve-builtins.h
! d3d347a8a72efca8941ac9c81b324af1  gcc/config/aarch64/aarch64-sve.md
! 0e48ec989797cfed5b216617692403e9  gcc/config/aarch64/aarch64-sve2.md
! 28e8e7965d9ed466a7d53a53e2ec7397  gcc/config/aarch64/aarch64-sys-regs.def
  bb99d6fe2d4e8eaffacc71689325d35c  gcc/config/aarch64/aarch64-tune.md
  586e3b2fd446baa0a6fb8da7c8cdd660  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 127cfce1ae2465ded48a7285dc869213  gcc/config/aarch64/aarch64.cc
! a067c840ab3dda8249e5a52a6d2e79e1  gcc/config/aarch64/aarch64.h
  79c93476404c0822020c37da243fdd02  gcc/config/aarch64/aarch64.md
  f4896e5648afc7366568914b0ee0b8e2  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
*************** f7165d62ef852e1929a8fc9a85c01ab2  gcc/co
*** 3493,3499 ****
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 9e8ea8336a1a027d043f7d0bde67c2e0  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  dccd7ab23543b643345fc7fb161eb98d  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
--- 3495,3501 ----
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 7058b01eaa8d197a940387c9c12ffed4  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  dccd7ab23543b643345fc7fb161eb98d  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
*************** eafc8a2abc331243ea846fab22b8aec4  gcc/co
*** 3643,3649 ****
  5d895a88bb2048a83e3ccc08d50f3151  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  1f1a55560eb97e283125003609418bce  gcc/config/arm/arm-tune.md
! bcb637a7efa2922a908b2b3fb01d4f43  gcc/config/arm/arm.cc
  4b4c240869c2413c542f051e20fc26d1  gcc/config/arm/arm.h
  ff6b3849e6361d132949b8f3c52b42a5  gcc/config/arm/arm.md
  6438602120f5212434b003b5018064ec  gcc/config/arm/arm.opt
--- 3645,3651 ----
  5d895a88bb2048a83e3ccc08d50f3151  gcc/config/arm/arm-tables.opt
  f805d118929dd79f6bd4dc75c77c968b  gcc/config/arm/arm-tables.opt.urls
  1f1a55560eb97e283125003609418bce  gcc/config/arm/arm-tune.md
! 36958147a21de6c1712e9e0d2c51fa75  gcc/config/arm/arm.cc
  4b4c240869c2413c542f051e20fc26d1  gcc/config/arm/arm.h
  ff6b3849e6361d132949b8f3c52b42a5  gcc/config/arm/arm.md
  6438602120f5212434b003b5018064ec  gcc/config/arm/arm.opt
*************** d3258824a869cbf8507cc20b8354d63a  gcc/co
*** 3697,3703 ****
  7ce753afcddfce0345d95ad953e5a4b2  gcc/config/arm/fmp626.md
  2c6206b20ea2631cadbdfaa2019002d1  gcc/config/arm/freebsd.h
  d46e30ed2d47159006a0c4a6dd3bf6ef  gcc/config/arm/fuchsia-elf.h
! 383f71ba0cd5e9596176e6fa40ec4a8f  gcc/config/arm/iterators.md
  63f3c7dd672505a59cbe1c24092c9b34  gcc/config/arm/ldmstm.md
  656971fbf7d46fe2b4389af456f0833b  gcc/config/arm/ldrdstrd.md
  62b22793d212e34e0864abdd03c8fe68  gcc/config/arm/linux-eabi.h
--- 3699,3705 ----
  7ce753afcddfce0345d95ad953e5a4b2  gcc/config/arm/fmp626.md
  2c6206b20ea2631cadbdfaa2019002d1  gcc/config/arm/freebsd.h
  d46e30ed2d47159006a0c4a6dd3bf6ef  gcc/config/arm/fuchsia-elf.h
! 8ae5f29c465e67dcff4684d8563c2163  gcc/config/arm/iterators.md
  63f3c7dd672505a59cbe1c24092c9b34  gcc/config/arm/ldmstm.md
  656971fbf7d46fe2b4389af456f0833b  gcc/config/arm/ldrdstrd.md
  62b22793d212e34e0864abdd03c8fe68  gcc/config/arm/linux-eabi.h
*************** b1bb4aedc65a975961957373495f8b3a  gcc/co
*** 3705,3712 ****
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! 5f0d57e09ab77c6be9b2ce2a1118d141  gcc/config/arm/mve.md
! 865b2f8f1fc8ef0f937c5b3a7674b5d0  gcc/config/arm/neon.md
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
  8f026aba2fb3043f536516c1ed3776c7  gcc/config/arm/parsecpu.awk
--- 3707,3714 ----
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! 283aa78f37ce3b0e736af5bf469b4e4a  gcc/config/arm/mve.md
! 2229898d1056f856ff420db3ff4d0998  gcc/config/arm/neon.md
  f208fab795fa9231cb51c748bd50e7e5  gcc/config/arm/netbsd-eabi.h
  79c1c27fe924ef728f21bd95a8c3ea71  gcc/config/arm/netbsd-elf.h
  8f026aba2fb3043f536516c1ed3776c7  gcc/config/arm/parsecpu.awk
*************** d3a2939d4adfa469cb15075e8bd8e689  gcc/co
*** 3735,3741 ****
  fbf7c14a192b9763418596c145c89f25  gcc/config/arm/uclinux-elf.h
  85ec3386517177a4f52dfe3a6b7424c9  gcc/config/arm/uclinuxfdpiceabi.h
  ff5d6720d99cfc24e1c5e0ea9cda5c08  gcc/config/arm/unknown-elf.h
! 0003dd5fc0a8a7f4e5730085a8c036e4  gcc/config/arm/unspecs.md
  c95ea043c6e3a7098253d4762681aa5d  gcc/config/arm/vec-common.md
  cd17766ff1d7c30a7763b20fd4eef83a  gcc/config/arm/vfp.md
  97faf501b2f484ffffb0776805ec048c  gcc/config/arm/vfp11.md
--- 3737,3743 ----
  fbf7c14a192b9763418596c145c89f25  gcc/config/arm/uclinux-elf.h
  85ec3386517177a4f52dfe3a6b7424c9  gcc/config/arm/uclinuxfdpiceabi.h
  ff5d6720d99cfc24e1c5e0ea9cda5c08  gcc/config/arm/unknown-elf.h
! d35e61a45213a75034dbd66b478669d7  gcc/config/arm/unspecs.md
  c95ea043c6e3a7098253d4762681aa5d  gcc/config/arm/vec-common.md
  cd17766ff1d7c30a7763b20fd4eef83a  gcc/config/arm/vfp.md
  97faf501b2f484ffffb0776805ec048c  gcc/config/arm/vfp11.md
*************** d37f092206fc4c0379cee5e5fc01b654  gcc/co
*** 3757,3765 ****
  6b425f8df921557284017d42be8efc3c  gcc/config/avr/avr-passes.def
  65447cdb57d64c621846dbfaece9c7f6  gcc/config/avr/avr-protos.h
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
! 5d06ea6e026d8cdfac5dd480a50cf859  gcc/config/avr/avr.cc
  bee0e6e1aecf816b3bc39ba11e67566f  gcc/config/avr/avr.h
! f7dcd6139d062b05e33f3e6704885d97  gcc/config/avr/avr.md
  9b16afc684b8a6d301aa731ed7683f93  gcc/config/avr/avr.opt
  eadbd4a61fec0122a6773c41bee01200  gcc/config/avr/avr.opt.urls
  e29c33fe5d0d32a0d578ef5a092a9836  gcc/config/avr/avrlibc.h
--- 3759,3767 ----
  6b425f8df921557284017d42be8efc3c  gcc/config/avr/avr-passes.def
  65447cdb57d64c621846dbfaece9c7f6  gcc/config/avr/avr-protos.h
  eb753641e5bf09dbcc2be97e61be8767  gcc/config/avr/avr-stdint.h
! 6e9d57064ae2103a9a3ede91960cf44d  gcc/config/avr/avr.cc
  bee0e6e1aecf816b3bc39ba11e67566f  gcc/config/avr/avr.h
! 8803f3f342c3d9440966c0564a0cd1a3  gcc/config/avr/avr.md
  9b16afc684b8a6d301aa731ed7683f93  gcc/config/avr/avr.opt
  eadbd4a61fec0122a6773c41bee01200  gcc/config/avr/avr.opt.urls
  e29c33fe5d0d32a0d578ef5a092a9836  gcc/config/avr/avrlibc.h
*************** f564f4fdf8d82c60a526de3aeb908531  gcc/co
*** 3800,3806 ****
  5da1b60956f8f62fccf4b5c5d0e0fe9b  gcc/config/bpf/bpf-opts.h
  989a5af9790ad469a8ad1954f7b9cbaa  gcc/config/bpf/bpf-passes.def
  9a5cadb0cb322fae6b6177fc361f00c1  gcc/config/bpf/bpf-protos.h
! d3f992d265dda0e95dc8c1a3c956d19c  gcc/config/bpf/bpf.cc
  88a80edc8d111617067abb5a0b95d469  gcc/config/bpf/bpf.h
  0e05ae54f1a8ca63ad1533179b4b4571  gcc/config/bpf/bpf.md
  d0866c4d53c2fdcec825b3485236d9a1  gcc/config/bpf/bpf.opt
--- 3802,3808 ----
  5da1b60956f8f62fccf4b5c5d0e0fe9b  gcc/config/bpf/bpf-opts.h
  989a5af9790ad469a8ad1954f7b9cbaa  gcc/config/bpf/bpf-passes.def
  9a5cadb0cb322fae6b6177fc361f00c1  gcc/config/bpf/bpf-protos.h
! dc95f92031a6d2a1e1276f37aac367ef  gcc/config/bpf/bpf.cc
  88a80edc8d111617067abb5a0b95d469  gcc/config/bpf/bpf.h
  0e05ae54f1a8ca63ad1533179b4b4571  gcc/config/bpf/bpf.md
  d0866c4d53c2fdcec825b3485236d9a1  gcc/config/bpf/bpf.opt
*************** e67c464c5291da429735ab3d29b461b6  gcc/co
*** 3970,3976 ****
  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
--- 3972,3978 ----
  96050b4b2455697e8f797ff6286b6575  gcc/config/g.opt.urls
  9fd698fdcb393c697ca83182cde3834e  gcc/config/gcn/constraints.md
  e89c0c1a7b28f107b53b364765ee06a9  gcc/config/gcn/gcn-builtins.def
! bffaee98005914436a5bc3ae0aa65ec3  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
*************** ea362cc71f1b9679e105d57822167b51  gcc/co
*** 3991,3997 ****
  d6b10bd17eef3ffa35e47afa3e7b730d  gcc/config/gcn/offload.h
  37e26d22dbc6d4a9b4ffa33405bf1bd8  gcc/config/gcn/predicates.md
  3af3e12c81a2c9fdbcea0a9d7411c7bf  gcc/config/gcn/t-gcn-hsa
! 04bf0800e77797d18635b2caace79998  gcc/config/gcn/t-omp-device
  25338efc6cfff6755ab218957744c7b1  gcc/config/glibc-c.cc
  3d1e26622417691646a5b93d02b50c7b  gcc/config/glibc-stdint.h
  2f4783597c98a52f3f28cb32b8d39b5c  gcc/config/gnu-d.cc
--- 3993,3999 ----
  d6b10bd17eef3ffa35e47afa3e7b730d  gcc/config/gcn/offload.h
  37e26d22dbc6d4a9b4ffa33405bf1bd8  gcc/config/gcn/predicates.md
  3af3e12c81a2c9fdbcea0a9d7411c7bf  gcc/config/gcn/t-gcn-hsa
! 5d6694c585532630e8b594496da15644  gcc/config/gcn/t-omp-device
  25338efc6cfff6755ab218957744c7b1  gcc/config/glibc-c.cc
  3d1e26622417691646a5b93d02b50c7b  gcc/config/glibc-stdint.h
  2f4783597c98a52f3f28cb32b8d39b5c  gcc/config/gnu-d.cc
*************** db371b3bae058228fd1afba4355902d7  gcc/co
*** 4046,4055 ****
  e881567a284d0c4c6fd23ecaecaa29f7  gcc/config/i386/amxfp16intrin.h
  0e0ea58145b6e2eb7763bd3455cea60c  gcc/config/i386/amxfp8intrin.h
  86643835c40c95bff80d14e5c7a39263  gcc/config/i386/amxint8intrin.h
! 19b2b3866a28248586bc8f858adacdd5  gcc/config/i386/amxmovrsintrin.h
  7627351f7405eceb02c9e7d73da70fa5  gcc/config/i386/amxtf32intrin.h
  718d242a1b62ceb6aa2c434c663400c4  gcc/config/i386/amxtileintrin.h
! 4739b13293a8cea0e9a3201a3a472ce6  gcc/config/i386/amxtransposeintrin.h
  d5344f5586a4fdddcf32cfad79672651  gcc/config/i386/athlon.md
  c7639653fc509c53955783e5c3d3ed63  gcc/config/i386/atom.md
  e4ad129bfdb387d691c45180574d648e  gcc/config/i386/att.h
--- 4048,4057 ----
  e881567a284d0c4c6fd23ecaecaa29f7  gcc/config/i386/amxfp16intrin.h
  0e0ea58145b6e2eb7763bd3455cea60c  gcc/config/i386/amxfp8intrin.h
  86643835c40c95bff80d14e5c7a39263  gcc/config/i386/amxint8intrin.h
! 4e8030d88369bd9b30003045c8cef117  gcc/config/i386/amxmovrsintrin.h
  7627351f7405eceb02c9e7d73da70fa5  gcc/config/i386/amxtf32intrin.h
  718d242a1b62ceb6aa2c434c663400c4  gcc/config/i386/amxtileintrin.h
! 3b3fc29c988798e7f8c7b08acdf20890  gcc/config/i386/amxtransposeintrin.h
  d5344f5586a4fdddcf32cfad79672651  gcc/config/i386/athlon.md
  c7639653fc509c53955783e5c3d3ed63  gcc/config/i386/atom.md
  e4ad129bfdb387d691c45180574d648e  gcc/config/i386/att.h
*************** ed2254bdda3903cf7bffcad423af98ae  gcc/co
*** 4114,4120 ****
  5ad53873fee13ffe31a50e133663fd9e  gcc/config/i386/cmpccxaddintrin.h
  62c57c7c63efd8b0c33fbe1e6fcb5a60  gcc/config/i386/constraints.md
  4dd937d3024e34071e1f77d6d1cec027  gcc/config/i386/core2.md
! 15d49da3dc5cec1d04973c2314eba4c8  gcc/config/i386/cpuid.h
  f700a1d35423658eaa2b4908da695bda  gcc/config/i386/cross-stdarg.h
  82964c7428d66bf1874c63a65b858957  gcc/config/i386/crtdll.h
  f8f2f3d70464037d7bd8bae81910ae7f  gcc/config/i386/cygming.h
--- 4116,4122 ----
  5ad53873fee13ffe31a50e133663fd9e  gcc/config/i386/cmpccxaddintrin.h
  62c57c7c63efd8b0c33fbe1e6fcb5a60  gcc/config/i386/constraints.md
  4dd937d3024e34071e1f77d6d1cec027  gcc/config/i386/core2.md
! 08d1e06b716f6a61f08d0dc23759a3b4  gcc/config/i386/cpuid.h
  f700a1d35423658eaa2b4908da695bda  gcc/config/i386/cross-stdarg.h
  82964c7428d66bf1874c63a65b858957  gcc/config/i386/crtdll.h
  f8f2f3d70464037d7bd8bae81910ae7f  gcc/config/i386/cygming.h
*************** c527fd639b424e1e0a95494e13e8cad2  gcc/co
*** 4164,4181 ****
  81059d1444982c18f0d455534dec5fa5  gcc/config/i386/i386-builtin.def
  652c102e7218f6248806f6cfbae988ed  gcc/config/i386/i386-builtins.cc
  d3fb594d11281112ff8d8f304a000c4e  gcc/config/i386/i386-builtins.h
! a4a1a27264871bfba9de0f4fbdb4f3ac  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
  58d2882fc07ac73b36a5231210166a7f  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
  f8d2d4e78c9475c207f7b3629c8d36bb  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
! 66732512f01bad0bbb26cb3c09ec773e  gcc/config/i386/i386-isa.def
  3086b3d44978d7fda7cf4fc17777806e  gcc/config/i386/i386-jit.cc
  1e61c026f5b7b51c6c07bec125bf4fbe  gcc/config/i386/i386-jit.h
  09f791543c9ad5918bde13160f0de1df  gcc/config/i386/i386-modes.def
! 6f22ebb91d93d976ea21cb722b372d55  gcc/config/i386/i386-options.cc
  636d7cce4cd0b632fee9d490d15da86b  gcc/config/i386/i386-options.h
  02c486451c524cfc143358e07b88cd70  gcc/config/i386/i386-opts.h
  3c7d0006f2f31d8607f2c9e74557fbee  gcc/config/i386/i386-passes.def
--- 4166,4183 ----
  81059d1444982c18f0d455534dec5fa5  gcc/config/i386/i386-builtin.def
  652c102e7218f6248806f6cfbae988ed  gcc/config/i386/i386-builtins.cc
  d3fb594d11281112ff8d8f304a000c4e  gcc/config/i386/i386-builtins.h
! 86518c88ae5074b10b5fe0a5f44edba4  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
  58d2882fc07ac73b36a5231210166a7f  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
  f8d2d4e78c9475c207f7b3629c8d36bb  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
! 3d9edfe94007cdc032797a67ebe9733e  gcc/config/i386/i386-isa.def
  3086b3d44978d7fda7cf4fc17777806e  gcc/config/i386/i386-jit.cc
  1e61c026f5b7b51c6c07bec125bf4fbe  gcc/config/i386/i386-jit.h
  09f791543c9ad5918bde13160f0de1df  gcc/config/i386/i386-modes.def
! 2f308a555adfb081bb9bd3387e0e506c  gcc/config/i386/i386-options.cc
  636d7cce4cd0b632fee9d490d15da86b  gcc/config/i386/i386-options.h
  02c486451c524cfc143358e07b88cd70  gcc/config/i386/i386-opts.h
  3c7d0006f2f31d8607f2c9e74557fbee  gcc/config/i386/i386-passes.def
*************** f8d2d4e78c9475c207f7b3629c8d36bb  gcc/co
*** 4184,4197 ****
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
  ea39365f23f9f603132fcc8d70aa9d63  gcc/config/i386/i386.cc
! d11b0bb2c4ce0d5031ec76ca81beae56  gcc/config/i386/i386.h
  a09e6b5d7bccbe486409dda3aac21d1d  gcc/config/i386/i386.md
! 1c8a4b962ee4144482330266eb1d9527  gcc/config/i386/i386.opt
! 59cb9adff8fe9d24eed1cfac0c5bf62c  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
  12088706f0584b21b2bf165c3cde88e8  gcc/config/i386/ia32intrin.h
  116503ecbb821bb13293049d85a641f9  gcc/config/i386/iamcu.h
! c6ca30784c5f9b9bba1468fd43cc6d35  gcc/config/i386/immintrin.h
  619372cf439740085d314ec3bd4aaef7  gcc/config/i386/k6.md
  f25ac919a919b558d8b3364eb84ea8d0  gcc/config/i386/keylockerintrin.h
  dea7969b20f10da9e23e939ae4566e50  gcc/config/i386/kfreebsd-gnu.h
--- 4186,4199 ----
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
  ea39365f23f9f603132fcc8d70aa9d63  gcc/config/i386/i386.cc
! 5a8c118655c36894d35ad71228aa9a61  gcc/config/i386/i386.h
  a09e6b5d7bccbe486409dda3aac21d1d  gcc/config/i386/i386.md
! 079c7adc6dcd21f8ccfb4c0135f16460  gcc/config/i386/i386.opt
! ae2f0e6cc1882dbf736469a6378cb3d1  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
  12088706f0584b21b2bf165c3cde88e8  gcc/config/i386/ia32intrin.h
  116503ecbb821bb13293049d85a641f9  gcc/config/i386/iamcu.h
! 69a0b6d9649248da0bf49a6c50239bb0  gcc/config/i386/immintrin.h
  619372cf439740085d314ec3bd4aaef7  gcc/config/i386/k6.md
  f25ac919a919b558d8b3364eb84ea8d0  gcc/config/i386/keylockerintrin.h
  dea7969b20f10da9e23e939ae4566e50  gcc/config/i386/kfreebsd-gnu.h
*************** ef2d6c431068cee6bf3bb0c9d24288ff  gcc/co
*** 4343,4349 ****
  ecaa6d1a2c30fba3c56e89ca7d54ae99  gcc/config/ia64/t-hpux
  f727548db89e270dc9ece47dd7d46ddc  gcc/config/ia64/t-ia64
  67736f64800d10923b58be4e448620d6  gcc/config/ia64/t-linux
! b305363f67b7e924adbe9495b6a63c2f  gcc/config/ia64/vect.md
  c59b021857c4ea97ba8f9e0e659750af  gcc/config/ia64/vms.h
  28bcb4018d74e5422734cd483d8c4af9  gcc/config/ia64/vms.opt
  58c641df71a1f8993f6e5e1bfaac466d  gcc/config/ia64/vms.opt.urls
--- 4345,4351 ----
  ecaa6d1a2c30fba3c56e89ca7d54ae99  gcc/config/ia64/t-hpux
  f727548db89e270dc9ece47dd7d46ddc  gcc/config/ia64/t-ia64
  67736f64800d10923b58be4e448620d6  gcc/config/ia64/t-linux
! ee5021b8ee58cec4caee59b364f57d5f  gcc/config/ia64/vect.md
  c59b021857c4ea97ba8f9e0e659750af  gcc/config/ia64/vms.h
  28bcb4018d74e5422734cd483d8c4af9  gcc/config/ia64/vms.opt
  58c641df71a1f8993f6e5e1bfaac466d  gcc/config/ia64/vms.opt.urls
*************** ccf120397e978f8cd4ed98cbe2c0d4f5  gcc/co
*** 4889,4895 ****
  96a9b8701199ede652cadbcdeec423d7  gcc/config/riscv/andes.md
  7444da2915b734a807ab2b707fe0fe35  gcc/config/riscv/andes_vector.h
  3d4ef2c5571dbf0e4bb86d09917f7c07  gcc/config/riscv/arch-canonicalize
! 14c32ad2cd32f85ec26bf7785a2ff9e7  gcc/config/riscv/autovec-opt.md
  0a8d3bb5c92b40519d869bae882cf263  gcc/config/riscv/autovec.md
  e000ae44a5456f5afdaafc8accc7f582  gcc/config/riscv/bitmanip.md
  3d4917c0a2efee97aaca242060652e02  gcc/config/riscv/constraints.md
--- 4891,4897 ----
  96a9b8701199ede652cadbcdeec423d7  gcc/config/riscv/andes.md
  7444da2915b734a807ab2b707fe0fe35  gcc/config/riscv/andes_vector.h
  3d4ef2c5571dbf0e4bb86d09917f7c07  gcc/config/riscv/arch-canonicalize
! 111c94b19a4f72afc23ff2b3e44ab780  gcc/config/riscv/autovec-opt.md
  0a8d3bb5c92b40519d869bae882cf263  gcc/config/riscv/autovec.md
  e000ae44a5456f5afdaafc8accc7f582  gcc/config/riscv/bitmanip.md
  3d4917c0a2efee97aaca242060652e02  gcc/config/riscv/constraints.md
*************** a3d3fa9142d4e2ed34ead146941c574a  gcc/co
*** 4919,4925 ****
  fcde47e773f1cfb9f582a606e2890c72  gcc/config/riscv/riscv-avlprop.cc
  179d92544e7a65f0ccf206e876026744  gcc/config/riscv/riscv-bclr-lowest-set-bit.cc
  e54a2d33c6fb9bb0381889dad6fa71d8  gcc/config/riscv/riscv-builtins.cc
! 019bb963b8ddc896e82e3ba7622236d2  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
  fe12c74b3dcd4c8bd1c38b5c00a31c15  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
--- 4921,4927 ----
  fcde47e773f1cfb9f582a606e2890c72  gcc/config/riscv/riscv-avlprop.cc
  179d92544e7a65f0ccf206e876026744  gcc/config/riscv/riscv-bclr-lowest-set-bit.cc
  e54a2d33c6fb9bb0381889dad6fa71d8  gcc/config/riscv/riscv-builtins.cc
! e282802a520f3069e108ad136bd6e2fa  gcc/config/riscv/riscv-c.cc
  3b7012a7d47b9aaf163e890d3e29013e  gcc/config/riscv/riscv-cmo.def
  fe12c74b3dcd4c8bd1c38b5c00a31c15  gcc/config/riscv/riscv-cores.def
  173996678a5bf2b1b40e30fe260109b4  gcc/config/riscv/riscv-d.cc
*************** c5393897179939c1b5af9631e66d78a8  gcc/co
*** 4945,4951 ****
  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
  94d10cea518da6cdd8058f2f6f5f4290  gcc/config/riscv/riscv-target-attr.cc
  4285d6caea3cccf0e3cfcac93c1ab26e  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
--- 4947,4953 ----
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
  f565a42da3474d73faf1ea727e2d7dcb  gcc/config/riscv/riscv-string.cc
! 645c73713edeee965f139d7c0825f76d  gcc/config/riscv/riscv-subset.h
  94d10cea518da6cdd8058f2f6f5f4290  gcc/config/riscv/riscv-target-attr.cc
  4285d6caea3cccf0e3cfcac93c1ab26e  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
*************** f51037a9e437f8e9ce7215b2da5ad4e2  gcc/co
*** 4965,4973 ****
  43a9d94b35a051ed390b5e2c74432d85  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! eb8d23d580964f6d9df6cac8f06229ec  gcc/config/riscv/riscv.cc
  0766a701a8c90815575fae86f92cc4a6  gcc/config/riscv/riscv.h
! b2089e614a1709b876d244929d1ba06e  gcc/config/riscv/riscv.md
  fec1c87bba727131a45d4ec4a9ae5490  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
--- 4967,4975 ----
  43a9d94b35a051ed390b5e2c74432d85  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! d2063ec114cf822be74edfc2cffdd0d9  gcc/config/riscv/riscv.cc
  0766a701a8c90815575fae86f92cc4a6  gcc/config/riscv/riscv.h
! d83a8ed43f14b803732bc83dfebc7c6d  gcc/config/riscv/riscv.md
  fec1c87bba727131a45d4ec4a9ae5490  gcc/config/riscv/riscv.opt
  d1d34490d8b53ec20d70ed9e2e56e3ab  gcc/config/riscv/riscv.opt.urls
  374e3c204946cff8c4be2bcad6641830  gcc/config/riscv/riscv_bitmanip.h
*************** fe3d972a79442dc1b2043eabe38c2e2f  gcc/co
*** 5037,5050 ****
  32e09b60381687f9cd5b7b33001c3517  gcc/config/rs6000/8540.md
  4f6028fe108314d2a33f8f7f909a73f7  gcc/config/rs6000/a2.md
  993b9ee39193c6e1b6fc812856635d87  gcc/config/rs6000/aix-stdint.h
! f52bc10b700a145b797b666c36290d6d  gcc/config/rs6000/aix.h
  1ca8614596b68cd336ca726ee25990e6  gcc/config/rs6000/aix64.opt
  d70f08b893e019d12b16dc9a70754ef9  gcc/config/rs6000/aix64.opt.urls
  1429db8f4765ff4aefe82f62895c1013  gcc/config/rs6000/aix71.h
  7f04e00d7abf437885d57dbffa4d8f4a  gcc/config/rs6000/aix72.h
  c544fe733de647bba75656a097ef5683  gcc/config/rs6000/aix73.h
  04684068198cd7d4bf973f2cf37245b7  gcc/config/rs6000/altivec.h
! e84127a4493a0433c0798fb72e06f484  gcc/config/rs6000/altivec.md
  6aae59d4e50476599eca7a9839fcea2a  gcc/config/rs6000/amo.h
  3bd1c96455c52fa67ad166ee514529f5  gcc/config/rs6000/biarch64.h
  bce756c85740f3f618c107b0cfad6962  gcc/config/rs6000/bmi2intrin.h
--- 5039,5052 ----
  32e09b60381687f9cd5b7b33001c3517  gcc/config/rs6000/8540.md
  4f6028fe108314d2a33f8f7f909a73f7  gcc/config/rs6000/a2.md
  993b9ee39193c6e1b6fc812856635d87  gcc/config/rs6000/aix-stdint.h
! e461e1f6a86f3065b555ed06153e27c2  gcc/config/rs6000/aix.h
  1ca8614596b68cd336ca726ee25990e6  gcc/config/rs6000/aix64.opt
  d70f08b893e019d12b16dc9a70754ef9  gcc/config/rs6000/aix64.opt.urls
  1429db8f4765ff4aefe82f62895c1013  gcc/config/rs6000/aix71.h
  7f04e00d7abf437885d57dbffa4d8f4a  gcc/config/rs6000/aix72.h
  c544fe733de647bba75656a097ef5683  gcc/config/rs6000/aix73.h
  04684068198cd7d4bf973f2cf37245b7  gcc/config/rs6000/altivec.h
! 4ea58cf80385acfad29e2ca331338279  gcc/config/rs6000/altivec.md
  6aae59d4e50476599eca7a9839fcea2a  gcc/config/rs6000/amo.h
  3bd1c96455c52fa67ad166ee514529f5  gcc/config/rs6000/biarch64.h
  bce756c85740f3f618c107b0cfad6962  gcc/config/rs6000/bmi2intrin.h
*************** f154c7dc9175c4e8204205bb4fbd2cbc  gcc/co
*** 5501,5508 ****
  f59f78dcd009ea248d39f7b6b8dec64c  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! e0984804643899dedb67c05ad9ee877c  gcc/configure
! 8df38ac9bd1f90124b4d82d1d7e3d670  gcc/configure.ac
  ec3aa966ca3fe9c6f84d4378160541b6  gcc/context.cc
  d1bde52b8dee0c0c5506d7e320b1bb61  gcc/context.h
  a9c3cddee4e237141062720b72fe38cd  gcc/convert.cc
--- 5503,5510 ----
  f59f78dcd009ea248d39f7b6b8dec64c  gcc/config/xtensa/xtensa.md
  f0452ea712955ce21c9c149136850780  gcc/config/xtensa/xtensa.opt
  db57d7603312357e8c0cfb21c32353d1  gcc/config/xtensa/xtensa.opt.urls
! e5d39fd574064c8870895192451abcbd  gcc/configure
! 83847d495eef6221d68f4511930e4956  gcc/configure.ac
  ec3aa966ca3fe9c6f84d4378160541b6  gcc/context.cc
  d1bde52b8dee0c0c5506d7e320b1bb61  gcc/context.h
  a9c3cddee4e237141062720b72fe38cd  gcc/convert.cc
*************** a9c3cddee4e237141062720b72fe38cd  gcc/co
*** 5512,5518 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! a5e621ce9395458ab927477c91356b70  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5514,5520 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 7c60c9cb4b006525b58143688e704387  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp
*** 5571,5578 ****
  b7ae95468b0150bbe2b3cba351e96a2c  gcc/cp/cvt.cc
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  2d4d94b8a1d1c1d26764ae93a8039dda  gcc/cp/cxx-pretty-print.h
! c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! 8598f2914e736bc107445f3f1c20b864  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
  1ad50dbadddadc9085cd8c4db0602941  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
--- 5573,5580 ----
  b7ae95468b0150bbe2b3cba351e96a2c  gcc/cp/cvt.cc
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
  2d4d94b8a1d1c1d26764ae93a8039dda  gcc/cp/cxx-pretty-print.h
! c5f1614ded8bb57480eb7d1afecb7c7c  gcc/cp/cxxapi-data.csv
! e83f71db41f5d3f45424a0bb82a44ca9  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
  1ad50dbadddadc9085cd8c4db0602941  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
*************** aaf76a9b03fd0532d2904aef004fd66a  gcc/cp
*** 5592,5611 ****
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  0456b59fb105d3d30371131d063a685a  gcc/cp/method.cc
! 8ce96b713a6abfac803bfe099f520639  gcc/cp/module.cc
  6b11f42e6b7d506e0ec6e292677347db  gcc/cp/name-lookup.cc
  6fdcf6a217e83566683fbec935637de3  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 32943d722039ec3663668f4595cc470a  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
  567f2a034821422fb4613e2ecb3b9441  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
  dd4b86981ec35cce5f466ab179dc6e6f  gcc/cp/semantics.cc
! b58bf61fbfed45af179b7104e72a9486  gcc/cp/std-name-hint.gperf
! 2425db76c32085977eff047c982cebab  gcc/cp/std-name-hint.h
  09a81742845a713a27a2547017601371  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
  3c980ddb0b9ed1ed653f38de363e7f08  gcc/cp/typeck.cc
--- 5594,5613 ----
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  0456b59fb105d3d30371131d063a685a  gcc/cp/method.cc
! e216956d7e2a768856ae121513dc79bb  gcc/cp/module.cc
  6b11f42e6b7d506e0ec6e292677347db  gcc/cp/name-lookup.cc
  6fdcf6a217e83566683fbec935637de3  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
! 3af3b426dfe807a57c3417096c7719bb  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
  567f2a034821422fb4613e2ecb3b9441  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
  dd4b86981ec35cce5f466ab179dc6e6f  gcc/cp/semantics.cc
! 6a6b21cead5ae3e2fdb9253649be48f4  gcc/cp/std-name-hint.gperf
! 8e02351a089af5533d09881c271f0101  gcc/cp/std-name-hint.h
  09a81742845a713a27a2547017601371  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
  3c980ddb0b9ed1ed653f38de363e7f08  gcc/cp/typeck.cc
*************** ec1e9c9456a8530e241079823e2fc126  gcc/cr
*** 5625,5630 ****
--- 5627,5636 ----
  d980e3c4abd7ebfe505123a9fe01e4db  gcc/ctfc.cc
  3c63cb2899ac7a1e4d7e6111a8ad2a81  gcc/ctfc.h
  aec0cd5251de880945c96eb21e97eac9  gcc/ctfout.cc
+ eb9f3e0ae16be37f2dcd3a2ff36b5d30  gcc/custom-sarif-properties/digraphs.cc
+ df0608d254af699b76a227b71cac44c3  gcc/custom-sarif-properties/digraphs.h
+ 626df1a2167112b2a7b5d92f8acb804a  gcc/custom-sarif-properties/state-graphs.cc
+ 30bee6e748732780baadc1eed7bfb534  gcc/custom-sarif-properties/state-graphs.h
  4cd58b042512684d230b9ebc87171263  gcc/d/ChangeLog
  94dbce564aba342900829d11192f8905  gcc/d/ChangeLog-2006
  1a0536d6571bca334bb5c00dbdf257ab  gcc/d/ChangeLog-2007
*************** feea31e8e6eec9c1403f01df95d221d4  gcc/di
*** 5913,5930 ****
  3d657a4a23a157637d4867b6d5e18546  gcc/diagnostics/context.h
  3f0f4bd88c2110afde540ec51f32ce6b  gcc/diagnostics/counters.h
  6eb2e40f405d950a9e9f3c089680a899  gcc/diagnostics/diagnostic-info.h
! fd87cae7d2e8cfdbfe401ce78e684593  gcc/diagnostics/diagnostics-selftests.cc
! 1ca1218e8ad79ba30925b61d63e7c5b0  gcc/diagnostics/diagnostics-selftests.h
  b1a342ed1575b6a45df5f31d699e73c8  gcc/diagnostics/diagram.h
! f2f7f2e44f68617193d688191fd08395  gcc/diagnostics/digraphs.cc
! 2b7bbaecee26ffad2cf1ec52058566bf  gcc/diagnostics/digraphs.h
  460bd98eea9e2859684238f3fcfd28c7  gcc/diagnostics/dumping.cc
  d60716b4d04276f95205c6f8d2140f90  gcc/diagnostics/dumping.h
  cff4c3f5d806ef5fa9ea2a9776fcc922  gcc/diagnostics/event-id.h
  9ba917dd5ceec0dd361cd811174136d3  gcc/diagnostics/file-cache.cc
  4e3d1fe87ad0979f552310facbc2e534  gcc/diagnostics/file-cache.h
! 5d2d4494568d25dad970588a60d5a54d  gcc/diagnostics/html-sink.cc
! 4b8362b8dc9d0407e250775c344c387a  gcc/diagnostics/html-sink.h
  e5801529f87f5812381a450d52efaebf  gcc/diagnostics/kinds.def
  8c6a5304c40c7fa2b3f9a71b0144b010  gcc/diagnostics/kinds.h
  c9bbf46b6dd83be0981b0fa62f2bee49  gcc/diagnostics/lazy-paths.cc
--- 5919,5936 ----
  3d657a4a23a157637d4867b6d5e18546  gcc/diagnostics/context.h
  3f0f4bd88c2110afde540ec51f32ce6b  gcc/diagnostics/counters.h
  6eb2e40f405d950a9e9f3c089680a899  gcc/diagnostics/diagnostic-info.h
! 282965511c06c7e0212775d63524ebcc  gcc/diagnostics/diagnostics-selftests.cc
! f1f32b8a393ccffff69389fca353c633  gcc/diagnostics/diagnostics-selftests.h
  b1a342ed1575b6a45df5f31d699e73c8  gcc/diagnostics/diagram.h
! 24e586c4f58a710daeef36074c68ceec  gcc/diagnostics/digraphs.cc
! 8a7c88088bfae4ca7c1389ed8d15829f  gcc/diagnostics/digraphs.h
  460bd98eea9e2859684238f3fcfd28c7  gcc/diagnostics/dumping.cc
  d60716b4d04276f95205c6f8d2140f90  gcc/diagnostics/dumping.h
  cff4c3f5d806ef5fa9ea2a9776fcc922  gcc/diagnostics/event-id.h
  9ba917dd5ceec0dd361cd811174136d3  gcc/diagnostics/file-cache.cc
  4e3d1fe87ad0979f552310facbc2e534  gcc/diagnostics/file-cache.h
! 9f8fec6159706f098adfdfa86c696c6e  gcc/diagnostics/html-sink.cc
! e3738643801d2d24cc2decce94c0839d  gcc/diagnostics/html-sink.h
  e5801529f87f5812381a450d52efaebf  gcc/diagnostics/kinds.def
  8c6a5304c40c7fa2b3f9a71b0144b010  gcc/diagnostics/kinds.h
  c9bbf46b6dd83be0981b0fa62f2bee49  gcc/diagnostics/lazy-paths.cc
*************** f3b69e3c00a503b61ca298aef10ad690  gcc/di
*** 5940,5946 ****
  aa4ae9b850b3b556ebb4ac4ba4849e4b  gcc/diagnostics/option-id-manager.h
  ee46d9f24ee418300e1cb8af08ce0e7c  gcc/diagnostics/option-id.h
  cc65ae2ee101a218fd768c2fee83af6e  gcc/diagnostics/output-file.h
! a50fe2195104314d2f4d51bccbcda170  gcc/diagnostics/output-spec.cc
  3c1b8a8328a8a02562ad8a353c71a1c6  gcc/diagnostics/output-spec.h
  f804348b86b5dda4ae2b27490ef6174a  gcc/diagnostics/paths-output.cc
  51d4d6e54884c6e6761d5dc2cdffa683  gcc/diagnostics/paths.cc
--- 5946,5952 ----
  aa4ae9b850b3b556ebb4ac4ba4849e4b  gcc/diagnostics/option-id-manager.h
  ee46d9f24ee418300e1cb8af08ce0e7c  gcc/diagnostics/option-id.h
  cc65ae2ee101a218fd768c2fee83af6e  gcc/diagnostics/output-file.h
! 1c427c862326e67131cb6c0ef580a196  gcc/diagnostics/output-spec.cc
  3c1b8a8328a8a02562ad8a353c71a1c6  gcc/diagnostics/output-spec.h
  f804348b86b5dda4ae2b27490ef6174a  gcc/diagnostics/paths-output.cc
  51d4d6e54884c6e6761d5dc2cdffa683  gcc/diagnostics/paths.cc
*************** adaecbd7febc2698db08b843ef816569  gcc/di
*** 5958,5966 ****
  83cfb383914a3b5f56ce7cf9222d2389  gcc/diagnostics/source-printing-effects.h
  31a93cdcb18c5c2be551cc3d9f449735  gcc/diagnostics/source-printing-options.h
  1e9da35769926d056bf6e20dd560077e  gcc/diagnostics/source-printing.cc
! c7ddef71ac29eb2a389042f195e3b325  gcc/diagnostics/state-graphs-to-dot.cc
! 725af6438f327bd6aa23464c8fc3653a  gcc/diagnostics/state-graphs.cc
! fd0a458b50e99299115a0f8f2f59dd9d  gcc/diagnostics/state-graphs.h
  25bc733b1ce5a6422c2113e73eb493be  gcc/diagnostics/text-sink.cc
  59de35a57a51077e80939e29ebfbc93a  gcc/diagnostics/text-sink.h
  b882c3ac372bd1a3c12cb702a5bdf197  gcc/diagnostics/url.h
--- 5964,5971 ----
  83cfb383914a3b5f56ce7cf9222d2389  gcc/diagnostics/source-printing-effects.h
  31a93cdcb18c5c2be551cc3d9f449735  gcc/diagnostics/source-printing-options.h
  1e9da35769926d056bf6e20dd560077e  gcc/diagnostics/source-printing.cc
! faea3ce12d5b1a3151b93f76f440980f  gcc/diagnostics/state-graphs-to-dot.cc
! 9d80624aeb76d6fdf0422f03db2a8b75  gcc/diagnostics/state-graphs.h
  25bc733b1ce5a6422c2113e73eb493be  gcc/diagnostics/text-sink.cc
  59de35a57a51077e80939e29ebfbc93a  gcc/diagnostics/text-sink.h
  b882c3ac372bd1a3c12cb702a5bdf197  gcc/diagnostics/url.h
*************** acdfc663791e4321372e79932070d05d  gcc/do
*** 5982,5988 ****
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 82d2bef8401abf4b64ae6cff0477b8bf  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
--- 5987,5993 ----
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! a33256e6038b3b5378f0919db00111a7  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 6006,6012 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  e338e2aea473189d6b6657b4a0043973  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 666216fc1c58ffdf0c763389a7abf42c  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6011,6017 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  e338e2aea473189d6b6657b4a0043973  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 1bfd1997dd4790b7a196351644d42f15  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** a1f65f3aec3cc5d5b6505fb976d4c216  gcc/do
*** 6044,6050 ****
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
! 3adc62da8e2c8eb995bf8a0463c18975  gcc/doc/md.texi
  8836b7001f069e8dead6a4643108258b  gcc/doc/objc.texi
  9673b2a6dd62d5ac08afb00421e98cdb  gcc/doc/optinfo.texi
  a7117c4fee8c54e338b967886f3b2dcb  gcc/doc/options.texi
--- 6049,6055 ----
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
! 8bac9d57061fc338274c86b45ef4c6f3  gcc/doc/md.texi
  8836b7001f069e8dead6a4643108258b  gcc/doc/objc.texi
  9673b2a6dd62d5ac08afb00421e98cdb  gcc/doc/optinfo.texi
  a7117c4fee8c54e338b967886f3b2dcb  gcc/doc/options.texi
*************** a44260feebffd50db9ea51aed431d69c  gcc/do
*** 6057,6063 ****
  859a3279ee48eb417fd0ab4090d19c27  gcc/doc/riscv-mtune.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! 7ace68f81059516a6c2c6cc8cd9fb830  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
  60892135dd93bb0e6d2d4d1b1fe11cb1  gcc/doc/tm.texi
  0801b698039cc220174c1b6ec339c77c  gcc/doc/tm.texi.in
--- 6062,6068 ----
  859a3279ee48eb417fd0ab4090d19c27  gcc/doc/riscv-mtune.texi
  8489e4a02a5daa1d1ae726383b330653  gcc/doc/rtl.texi
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
! 8b4e4f903be565e1f803787eed0e6c5b  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
  60892135dd93bb0e6d2d4d1b1fe11cb1  gcc/doc/tm.texi
  0801b698039cc220174c1b6ec339c77c  gcc/doc/tm.texi.in
*************** ada0afb884a142f8214291990679be13  gcc/fo
*** 6119,6125 ****
  29fbc9846ee90edefccd9b9723b7ef68  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 57afe0b1436f59dcdbb0646a49cea5ba  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6124,6130 ----
  29fbc9846ee90edefccd9b9723b7ef68  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 50816f6cb872b213b221f9b6076b9459  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** c33e2c4c7527bec8a125dd093dc59f2a  gcc/fo
*** 6166,6172 ****
  9f708de69558a334a8fec77d40a2a376  gcc/fortran/dump-parse-tree.cc
  fcdf26536d578abd3a720a2579b4def5  gcc/fortran/error.cc
  b3beb0a8e06a71d205d3639a1bc35738  gcc/fortran/expr.cc
! 4951d066b4086c9dc1486fd5e2dbe2c2  gcc/fortran/f95-lang.cc
  7ff99bd8794c2d5f2533f516ec00306b  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
--- 6171,6177 ----
  9f708de69558a334a8fec77d40a2a376  gcc/fortran/dump-parse-tree.cc
  fcdf26536d578abd3a720a2579b4def5  gcc/fortran/error.cc
  b3beb0a8e06a71d205d3639a1bc35738  gcc/fortran/expr.cc
! 64cd8af37cf94e944e54f1c1fe1eaef5  gcc/fortran/f95-lang.cc
  7ff99bd8794c2d5f2533f516ec00306b  gcc/fortran/frontend-passes.cc
  a39f360f255f1ef6dfd91ccefef63e05  gcc/fortran/gfc-diagnostic.def
  bd08c55098f00394b9922e6163c27b92  gcc/fortran/gfc-internals.texi
*************** d2a28ef98f6f78d1608fb52204e013a5  gcc/fo
*** 6198,6204 ****
  44ee980cc04645c25872621b20fc36fa  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
  ac69b444e989fb496f8ba7f77670d2dc  gcc/fortran/primary.cc
! 7dcd6f5a038900959bd42603e46298bb  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  71190056d6f36d3d43d4b6ed27f23032  gcc/fortran/simplify.cc
--- 6203,6209 ----
  44ee980cc04645c25872621b20fc36fa  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
  ac69b444e989fb496f8ba7f77670d2dc  gcc/fortran/primary.cc
! a648854c90a6c791b0da94ffbc42676d  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  71190056d6f36d3d43d4b6ed27f23032  gcc/fortran/simplify.cc
*************** ebfc538fb0470443c527273e8a50c2a1  gcc/fo
*** 6206,6218 ****
  72c617ddd58e2640f57a4c4a8f0fe1f0  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 369c1359941dc6ef178b285ebba86ade  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
  4676a3ce7cc7bd4ad728303adf614548  gcc/fortran/trans-decl.cc
! f794cc4abf2da4754b43e56a62948d9a  gcc/fortran/trans-expr.cc
  75dbdc3d489814fc18082a069cd7c3ab  gcc/fortran/trans-intrinsic.cc
  2d29342f65aeef2af368527483b2d4f1  gcc/fortran/trans-io.cc
  27df041e4caff610df844e7a22e291e3  gcc/fortran/trans-openmp.cc
--- 6211,6223 ----
  72c617ddd58e2640f57a4c4a8f0fe1f0  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
! 057b330bc82b11660a171da644afc881  gcc/fortran/trans-array.cc
  682d93b7e921d709d88b7e5219a69d53  gcc/fortran/trans-array.h
  dfe1e1950e068389ed73663e9a11ad88  gcc/fortran/trans-common.cc
! b361aba1fe8f6c48107afcc903042c69  gcc/fortran/trans-const.cc
  857805820c2a6ac77d2652c610d23de8  gcc/fortran/trans-const.h
  4676a3ce7cc7bd4ad728303adf614548  gcc/fortran/trans-decl.cc
! 85120967cf414a1cf788fdf327d86710  gcc/fortran/trans-expr.cc
  75dbdc3d489814fc18082a069cd7c3ab  gcc/fortran/trans-intrinsic.cc
  2d29342f65aeef2af368527483b2d4f1  gcc/fortran/trans-io.cc
  27df041e4caff610df844e7a22e291e3  gcc/fortran/trans-openmp.cc
*************** cf24f4f4b153671619afe0af59496130  gcc/gi
*** 6320,6326 ****
  a0c225f8a1deb41873e5984a058b0f45  gcc/gimple-iterator.h
  4ab554af77b78b1a5d2948c9f0632680  gcc/gimple-laddress.cc
  468251f890cf1a4c5fb81ecfb55e3356  gcc/gimple-loop-interchange.cc
! 56f0b729528894503e80d9636b3af1c3  gcc/gimple-loop-jam.cc
  9d283d6d05cc10c386454e9c6a25e22a  gcc/gimple-loop-versioning.cc
  de516dc4a59882c258bf01584c25b2de  gcc/gimple-low.cc
  a507a70e7f4b0dd99e594d15a5a9a89b  gcc/gimple-low.h
--- 6325,6331 ----
  a0c225f8a1deb41873e5984a058b0f45  gcc/gimple-iterator.h
  4ab554af77b78b1a5d2948c9f0632680  gcc/gimple-laddress.cc
  468251f890cf1a4c5fb81ecfb55e3356  gcc/gimple-loop-interchange.cc
! fc76549fb245a2437bfc9aa015574882  gcc/gimple-loop-jam.cc
  9d283d6d05cc10c386454e9c6a25e22a  gcc/gimple-loop-versioning.cc
  de516dc4a59882c258bf01584c25b2de  gcc/gimple-low.cc
  a507a70e7f4b0dd99e594d15a5a9a89b  gcc/gimple-low.h
*************** f875de05790ff6f9d4a538f3165a775b  gcc/in
*** 6518,6542 ****
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  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
! 4e41bf538f5d853048a656f7d8d98e1b  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  ce2190c4f151ec8c25f970da83a9a696  gcc/ipa-devirt.cc
! c0759314923df2564166a8b18ecf04c9  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
  b2ecb607534e24bdc2bc2e02ba2199ca  gcc/ipa-icf.h
! afa2616e2d58a9137deaabc102d2d7c1  gcc/ipa-inline-analysis.cc
! a79036274de725418d7c352e3952e330  gcc/ipa-inline-transform.cc
! caa91df42c4fb576674e003d61929c7e  gcc/ipa-inline.cc
  a8bc23feef2d2f8a3d25702ece427f87  gcc/ipa-inline.h
  19c0cbbd70e071bd63dbb0527d02423e  gcc/ipa-locality-cloning.cc
  e1e331896b86db8a2281657bbb21ac72  gcc/ipa-locality-cloning.h
--- 6523,6547 ----
  0dc4e5a1c70a5b34153b06594dd3ae85  gcc/insn-addr.h
  eec072fb4c8277a3634cf4cdc0846598  gcc/insn-notes.def
  769443add1b7187045688cd8b1129647  gcc/int-vector-builder.h
! 8f46a0e1803f2fb29ec586e995f7c6a2  gcc/internal-fn.cc
  1158b95ec9d7cf3397baafff01d80595  gcc/internal-fn.def
! 290489b0e36c5962b1f15bf3135f8eff  gcc/internal-fn.h
  bcb802c64e78f80e8e46c799c7e449ad  gcc/intl.cc
  deb111e00b2b07aa631595045bce5003  gcc/intl.h
  47a65e558aff89879902e88b055c7b12  gcc/ipa-comdats.cc
! 1c543568db2d014ab1eb4a2ea7fc1a5f  gcc/ipa-cp.cc
  b65413c6163d502dbe95a08ac40cb575  gcc/ipa-cp.h
  ce2190c4f151ec8c25f970da83a9a696  gcc/ipa-devirt.cc
! 6afe5f09551ceeb0e29819548cb3723a  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
  b2ecb607534e24bdc2bc2e02ba2199ca  gcc/ipa-icf.h
! da5a8b46913e455ff432d2110722af82  gcc/ipa-inline-analysis.cc
! 3a7b210d2f26cf868f3eec1036b8a20f  gcc/ipa-inline-transform.cc
! fd89e6f19f8415d6bee80d0e6c195788  gcc/ipa-inline.cc
  a8bc23feef2d2f8a3d25702ece427f87  gcc/ipa-inline.h
  19c0cbbd70e071bd63dbb0527d02423e  gcc/ipa-locality-cloning.cc
  e1e331896b86db8a2281657bbb21ac72  gcc/ipa-locality-cloning.h
*************** e1e331896b86db8a2281657bbb21ac72  gcc/ip
*** 6544,6556 ****
  5a1edb91a2b7237c3e946f040a3d9697  gcc/ipa-modref-tree.h
  3f72461d9982b691967c88700eb6d7b8  gcc/ipa-modref.cc
  8fe1972490c1cce5a10c7cdcd57b2361  gcc/ipa-modref.h
! 1b41b1a1fceba6ae0868e983951245ef  gcc/ipa-param-manipulation.cc
! d33136e7edecd120aa035f0e1ad240b0  gcc/ipa-param-manipulation.h
  9c809f4fa05d60a2694cc5b392ba2ce1  gcc/ipa-polymorphic-call.cc
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
  3290558dca39b32c0ca581e6c3427551  gcc/ipa-predicate.h
  cb4c87b016a31121941a3b4b6060d470  gcc/ipa-profile.cc
! 1fc217369c2f6ab3ed272a2d0bd95bd9  gcc/ipa-prop.cc
  00d42ec7c12a0fe53f1cce1d2ac27096  gcc/ipa-prop.h
  1c585ae593227742840d2cccb610d475  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
--- 6549,6561 ----
  5a1edb91a2b7237c3e946f040a3d9697  gcc/ipa-modref-tree.h
  3f72461d9982b691967c88700eb6d7b8  gcc/ipa-modref.cc
  8fe1972490c1cce5a10c7cdcd57b2361  gcc/ipa-modref.h
! 05a01f3b363a6f52cbd830868997624c  gcc/ipa-param-manipulation.cc
! 6402305bfd352583fddaf5ceee9f6a46  gcc/ipa-param-manipulation.h
  9c809f4fa05d60a2694cc5b392ba2ce1  gcc/ipa-polymorphic-call.cc
  83c011375208cf1307980bcb1b18b67a  gcc/ipa-predicate.cc
  3290558dca39b32c0ca581e6c3427551  gcc/ipa-predicate.h
  cb4c87b016a31121941a3b4b6060d470  gcc/ipa-profile.cc
! d528939269f32a378db7959064093c5f  gcc/ipa-prop.cc
  00d42ec7c12a0fe53f1cce1d2ac27096  gcc/ipa-prop.h
  1c585ae593227742840d2cccb610d475  gcc/ipa-pure-const.cc
  ce0496bede6d40e2fcfbc8277856fc23  gcc/ipa-ref.cc
*************** f5c662ede32f2d970a304b2f597ef7d7  gcc/ji
*** 6670,6677 ****
  a683bef6f6721b574c76acc1efb5050c  gcc/jit/notes.txt
  aa4d0dc684f454901e907706abe9140d  gcc/json-parsing.cc
  81ace1f55dac7790c08a0af7205755ad  gcc/json-parsing.h
! 5795b18f6b7644bbcfadbe147ba58909  gcc/json.cc
! 96e080f101e620931eac6ae509674dd3  gcc/json.h
  47f18749c5685cd9ae918c4288aa5bf4  gcc/jump.cc
  d0727ac0c6842b68e046f42e27e66165  gcc/langhooks-def.h
  81343a49b80fdaded707b815d1766402  gcc/langhooks.cc
--- 6675,6682 ----
  a683bef6f6721b574c76acc1efb5050c  gcc/jit/notes.txt
  aa4d0dc684f454901e907706abe9140d  gcc/json-parsing.cc
  81ace1f55dac7790c08a0af7205755ad  gcc/json-parsing.h
! d3e072ca337f318deda78f7080ea8ab1  gcc/json.cc
! efd827d54dc16a104b48e176925bff30  gcc/json.h
  47f18749c5685cd9ae918c4288aa5bf4  gcc/jump.cc
  d0727ac0c6842b68e046f42e27e66165  gcc/langhooks-def.h
  81343a49b80fdaded707b815d1766402  gcc/langhooks.cc
*************** f98dc87a80f661782eacaf50d123997d  gcc/lr
*** 6712,6718 ****
  7d88a319b2eed09205d9a01cca221eb6  gcc/lra-spills.cc
  e5fef2ffe59f5bb8bf855af92be9ce6a  gcc/lra.cc
  f34f18b0bf45561aad0763e10bc1ecb1  gcc/lra.h
! e4e04e320c78dc4b64d763d742f3ceaa  gcc/lto-cgraph.cc
  3c0edd5f81587bb2a1bebb7979c19aa8  gcc/lto-compress.cc
  6081736069853cccad4e30dab7992217  gcc/lto-compress.h
  e30abe8a6f83280333eda23e196378ad  gcc/lto-ltrans-cache.cc
--- 6717,6723 ----
  7d88a319b2eed09205d9a01cca221eb6  gcc/lra-spills.cc
  e5fef2ffe59f5bb8bf855af92be9ce6a  gcc/lra.cc
  f34f18b0bf45561aad0763e10bc1ecb1  gcc/lra.h
! e6757d768b06dab2f1c057cb7b9b0d62  gcc/lto-cgraph.cc
  3c0edd5f81587bb2a1bebb7979c19aa8  gcc/lto-compress.cc
  6081736069853cccad4e30dab7992217  gcc/lto-compress.h
  e30abe8a6f83280333eda23e196378ad  gcc/lto-ltrans-cache.cc
*************** e44c0bf9cc0411d7bd57c6585eb6d0e4  gcc/lt
*** 6750,6756 ****
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! 4a36e5aba786aa9e98ba62806b2abd28  gcc/m2/ChangeLog
  acc8c1308289c1d47171145a78cda1a1  gcc/m2/Make-lang.in
  e212443a3231afc28440b22d94debe50  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6755,6761 ----
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! e86dbcfab4346e67592d4a0a5788359f  gcc/m2/ChangeLog
  acc8c1308289c1d47171145a78cda1a1  gcc/m2/Make-lang.in
  e212443a3231afc28440b22d94debe50  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** cccf272bab8c31a6af4113dc6a4e7b2d  gcc/m2
*** 6819,6825 ****
  a45ab5cf82c6f9afcaac634dd94f9e74  gcc/m2/gm2-compiler/M2LexBuf.def
  b112f4dc73573695c3456ad0128babea  gcc/m2/gm2-compiler/M2LexBuf.mod
  ebc348963369e8e9da5834ac81e9f37c  gcc/m2/gm2-compiler/M2MetaError.def
! fda52f1dc74bf7c4518fb38d51be2f80  gcc/m2/gm2-compiler/M2MetaError.mod
  30199ab614068ba2ade7649d91420d13  gcc/m2/gm2-compiler/M2Optimize.def
  6b138f381fa3bee219d0c362567bbcb0  gcc/m2/gm2-compiler/M2Optimize.mod
  e56f64013f646609999ce89ae8c3084d  gcc/m2/gm2-compiler/M2Options.def
--- 6824,6830 ----
  a45ab5cf82c6f9afcaac634dd94f9e74  gcc/m2/gm2-compiler/M2LexBuf.def
  b112f4dc73573695c3456ad0128babea  gcc/m2/gm2-compiler/M2LexBuf.mod
  ebc348963369e8e9da5834ac81e9f37c  gcc/m2/gm2-compiler/M2MetaError.def
! bc495d6e0890b6407ebefcd85af6fb5e  gcc/m2/gm2-compiler/M2MetaError.mod
  30199ab614068ba2ade7649d91420d13  gcc/m2/gm2-compiler/M2Optimize.def
  6b138f381fa3bee219d0c362567bbcb0  gcc/m2/gm2-compiler/M2Optimize.mod
  e56f64013f646609999ce89ae8c3084d  gcc/m2/gm2-compiler/M2Options.def
*************** ffffd6bd10c2f3d61aee939845cdb397  gcc/m2
*** 6831,6837 ****
  5aae879fe93711ac462b3871f94cfdfb  gcc/m2/gm2-compiler/M2Printf.def
  2984233cca97a1078980faba9ae9c1c5  gcc/m2/gm2-compiler/M2Printf.mod
  1f3929030e3dde0bd645746be5c341d3  gcc/m2/gm2-compiler/M2Quads.def
! c609b8d82df6c8563110097374228c14  gcc/m2/gm2-compiler/M2Quads.mod
  652e5da6749bca8b22b149208db30048  gcc/m2/gm2-compiler/M2Quiet.def
  fe82981e1fc213781973d90590cac13a  gcc/m2/gm2-compiler/M2Quiet.mod
  3a524bf1e1843ed3472cde4c27661681  gcc/m2/gm2-compiler/M2Range.def
--- 6836,6842 ----
  5aae879fe93711ac462b3871f94cfdfb  gcc/m2/gm2-compiler/M2Printf.def
  2984233cca97a1078980faba9ae9c1c5  gcc/m2/gm2-compiler/M2Printf.mod
  1f3929030e3dde0bd645746be5c341d3  gcc/m2/gm2-compiler/M2Quads.def
! 3cb35816f18a6cf3dd21625182b751aa  gcc/m2/gm2-compiler/M2Quads.mod
  652e5da6749bca8b22b149208db30048  gcc/m2/gm2-compiler/M2Quiet.def
  fe82981e1fc213781973d90590cac13a  gcc/m2/gm2-compiler/M2Quiet.mod
  3a524bf1e1843ed3472cde4c27661681  gcc/m2/gm2-compiler/M2Range.def
*************** dfc36d5f0832b9dd188d6557ffef76d3  gcc/m2
*** 6883,6897 ****
  5d3aa3c32f62966992c31b5bd6fe9bdb  gcc/m2/gm2-compiler/P2Build.def
  7d034c383eee29111871cfe944a77b96  gcc/m2/gm2-compiler/P2SymBuild.def
  f64ab23b49282386ad67b3551c995c79  gcc/m2/gm2-compiler/P2SymBuild.mod
! 3f51600487bd2cab333c21599bfc2b8e  gcc/m2/gm2-compiler/P3Build.bnf
  41f585d1e8e6fd1786dd36cb69cf3e82  gcc/m2/gm2-compiler/P3Build.def
! ad7a010b25f95dc012f12d3c97133a4b  gcc/m2/gm2-compiler/P3SymBuild.def
! 7c81b34285f6b959fd80e190c33619fc  gcc/m2/gm2-compiler/P3SymBuild.mod
! e00cf6ed8d0c099ab8f33394bfeb4dc3  gcc/m2/gm2-compiler/PCBuild.bnf
  428e2092f5708fd9cf986ae14771fff1  gcc/m2/gm2-compiler/PCBuild.def
! 333e3b954ec138cdfb9ac52c7fc37ee9  gcc/m2/gm2-compiler/PCSymBuild.def
! 7204921904868e8be413f561906f6f54  gcc/m2/gm2-compiler/PCSymBuild.mod
! 08d1991abfb4f71b76010396a93251eb  gcc/m2/gm2-compiler/PHBuild.bnf
  08361e38dfa7f065be723afaa04d8986  gcc/m2/gm2-compiler/PHBuild.def
  82f1a9709e0dd5ebf7a0c1c23b8e95c9  gcc/m2/gm2-compiler/PathName.def
  c9d1c61a97c404c181f0a650b41c36aa  gcc/m2/gm2-compiler/PathName.mod
--- 6888,6902 ----
  5d3aa3c32f62966992c31b5bd6fe9bdb  gcc/m2/gm2-compiler/P2Build.def
  7d034c383eee29111871cfe944a77b96  gcc/m2/gm2-compiler/P2SymBuild.def
  f64ab23b49282386ad67b3551c995c79  gcc/m2/gm2-compiler/P2SymBuild.mod
! bacc5489cee9efd5ca0c430d44edaac0  gcc/m2/gm2-compiler/P3Build.bnf
  41f585d1e8e6fd1786dd36cb69cf3e82  gcc/m2/gm2-compiler/P3Build.def
! 97492b4aea16b395bb56343086810be4  gcc/m2/gm2-compiler/P3SymBuild.def
! 3820bdfcda75541819ccbc3ed3bb28d9  gcc/m2/gm2-compiler/P3SymBuild.mod
! f40ce8692c5a5a9de8e072619d14e82a  gcc/m2/gm2-compiler/PCBuild.bnf
  428e2092f5708fd9cf986ae14771fff1  gcc/m2/gm2-compiler/PCBuild.def
! 17848423d631516c5135c755b6531842  gcc/m2/gm2-compiler/PCSymBuild.def
! 6cf5fc2f6d92838319b680369afb1fea  gcc/m2/gm2-compiler/PCSymBuild.mod
! 36b36ad4cb9c7f7461d5d1d60b7945d1  gcc/m2/gm2-compiler/PHBuild.bnf
  08361e38dfa7f065be723afaa04d8986  gcc/m2/gm2-compiler/PHBuild.def
  82f1a9709e0dd5ebf7a0c1c23b8e95c9  gcc/m2/gm2-compiler/PathName.def
  c9d1c61a97c404c181f0a650b41c36aa  gcc/m2/gm2-compiler/PathName.mod
*************** fabfc816f99fb184266e92ed4a85b7a4  gcc/m2
*** 6902,6909 ****
  eba1a056b41ce6fae1088f3d0bdd86d7  gcc/m2/gm2-compiler/SymbolConversion.mod
  7e7c5313b631435b03f974e72c20d104  gcc/m2/gm2-compiler/SymbolKey.def
  be245258e0123a45bbd9a47e859deb50  gcc/m2/gm2-compiler/SymbolKey.mod
! 3093cfac877731995344f1e96077c068  gcc/m2/gm2-compiler/SymbolTable.def
! e32cb111c285bbd67eb014d1d7efd5f2  gcc/m2/gm2-compiler/SymbolTable.mod
  4e5bbaec9cd1341e4e14b9951485e75b  gcc/m2/gm2-compiler/bnflex.def
  34956a3ca2f84a677fbf711642452563  gcc/m2/gm2-compiler/bnflex.mod
  3ba721399af75ed8db2b223d9947d26d  gcc/m2/gm2-compiler/cflex.def
--- 6907,6914 ----
  eba1a056b41ce6fae1088f3d0bdd86d7  gcc/m2/gm2-compiler/SymbolConversion.mod
  7e7c5313b631435b03f974e72c20d104  gcc/m2/gm2-compiler/SymbolKey.def
  be245258e0123a45bbd9a47e859deb50  gcc/m2/gm2-compiler/SymbolKey.mod
! 925495a977549b34f2957104ea04fb81  gcc/m2/gm2-compiler/SymbolTable.def
! 30cf58002425420c9b3b8028f88cf51c  gcc/m2/gm2-compiler/SymbolTable.mod
  4e5bbaec9cd1341e4e14b9951485e75b  gcc/m2/gm2-compiler/bnflex.def
  34956a3ca2f84a677fbf711642452563  gcc/m2/gm2-compiler/bnflex.mod
  3ba721399af75ed8db2b223d9947d26d  gcc/m2/gm2-compiler/cflex.def
*************** bb3433f39db6f3c3cfdf3511e76c67e0  gcc/m2
*** 6960,6966 ****
  698b9ffff0556061b1385c89a3262733  gcc/m2/gm2-gcc/m2pp.h
  4a9453d44aae46763c48dbf47f23fbaf  gcc/m2/gm2-gcc/m2range.h
  7cbbb73af9c93a479d4665a36639b5f4  gcc/m2/gm2-gcc/m2search.h
! 75e5b5b06c0f61c61abb786b3ed672c5  gcc/m2/gm2-gcc/m2spellcheck.cc
  882355cb7fc3187ad70390c9f9857222  gcc/m2/gm2-gcc/m2spellcheck.def
  1f7da37b8ef8c70fb36667fc05f6bf6c  gcc/m2/gm2-gcc/m2spellcheck.h
  65497a68f6bc5dc456271c6088631768  gcc/m2/gm2-gcc/m2statement.cc
--- 6965,6971 ----
  698b9ffff0556061b1385c89a3262733  gcc/m2/gm2-gcc/m2pp.h
  4a9453d44aae46763c48dbf47f23fbaf  gcc/m2/gm2-gcc/m2range.h
  7cbbb73af9c93a479d4665a36639b5f4  gcc/m2/gm2-gcc/m2search.h
! 9ed3a670f41ed2b96f7f2374ec0c99ed  gcc/m2/gm2-gcc/m2spellcheck.cc
  882355cb7fc3187ad70390c9f9857222  gcc/m2/gm2-gcc/m2spellcheck.def
  1f7da37b8ef8c70fb36667fc05f6bf6c  gcc/m2/gm2-gcc/m2spellcheck.h
  65497a68f6bc5dc456271c6088631768  gcc/m2/gm2-gcc/m2statement.cc
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7721,7727 ****
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! 2175c9b813828f75b2b98b3dc06e120a  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
--- 7726,7732 ----
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! 554965621bafff53fd5b53fa4e0799ee  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
*************** b6aaded8e85e2c15678b63196f1010b6  gcc/ob
*** 7762,7768 ****
  127ff083af2dabd45a27016102f6b2ab  gcc/objcp/objcp-lang.cc
  8d1f0d9303077458b28a80a9546ff2ba  gcc/obstack-utils.h
  c2186582925518f8871bcb0f066553f0  gcc/omp-api.h
! bb29d43e983c44c073509e49c0c554db  gcc/omp-builtins.def
  084ac62e183b76a6936f7fbb0fd9482e  gcc/omp-expand.cc
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
  3f32d99b1fca9c14c8a4a741125be1f0  gcc/omp-general.cc
--- 7767,7773 ----
  127ff083af2dabd45a27016102f6b2ab  gcc/objcp/objcp-lang.cc
  8d1f0d9303077458b28a80a9546ff2ba  gcc/obstack-utils.h
  c2186582925518f8871bcb0f066553f0  gcc/omp-api.h
! db351af3c135e85d5daecadfdff02e4a  gcc/omp-builtins.def
  084ac62e183b76a6936f7fbb0fd9482e  gcc/omp-expand.cc
  286190bcce78c62804516df6cd0d1684  gcc/omp-expand.h
  3f32d99b1fca9c14c8a4a741125be1f0  gcc/omp-general.cc
*************** a1718f4e4de96a072fce29c3cef4017a  gcc/op
*** 7790,7797 ****
  28bb97827aab6913c7fa55727bd8cea0  gcc/optabs-query.h
  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
--- 7795,7802 ----
  28bb97827aab6913c7fa55727bd8cea0  gcc/optabs-query.h
  933d872e7e60ed7a16f387f74cf5dcd7  gcc/optabs-tree.cc
  295bbec8fcdeeac30d6f914e52d4adc4  gcc/optabs-tree.h
! a783a6e68e704c7198ac0d33a9deb4da  gcc/optabs.cc
! 70eb17ed48f1e60dd40aaeb39756cd36  gcc/optabs.def
  fe27687b66727b0800e152caad7a6829  gcc/optabs.h
  4b8341a8e70bcb44afdbe2e4be1dcc46  gcc/optc-gen.awk
  5c54b7f4a00895eb1ecfb4f8c209dcef  gcc/optc-save-gen.awk
*************** d869add118f3b4328fb1691092405516  gcc/po
*** 7854,7860 ****
  49996ef12af53fc104c8c73884c06aa6  gcc/poly-int.h
  475f722ae164d853cf948309392e72fa  gcc/postreload-gcse.cc
  1696ccf7c912de56dfdeaaa05e52380e  gcc/postreload.cc
! ba22100349ffc03b441138fe5a74bb5c  gcc/predict.cc
  a4c4b609df2262702bd9691ce3ef1b39  gcc/predict.def
  5494603f698198c1a7d327aa6bbdb09a  gcc/predict.h
  00fb3c12fcc945bd00d0da1986741e41  gcc/prefix.cc
--- 7859,7865 ----
  49996ef12af53fc104c8c73884c06aa6  gcc/poly-int.h
  475f722ae164d853cf948309392e72fa  gcc/postreload-gcse.cc
  1696ccf7c912de56dfdeaaa05e52380e  gcc/postreload.cc
! 844b3e8351cc891efc3de2ba8b6dc7f2  gcc/predict.cc
  a4c4b609df2262702bd9691ce3ef1b39  gcc/predict.def
  5494603f698198c1a7d327aa6bbdb09a  gcc/predict.h
  00fb3c12fcc945bd00d0da1986741e41  gcc/prefix.cc
*************** a7b954c4a7bcd0141c6405a59ac196b7  gcc/pr
*** 7868,7877 ****
  a6e4e4fab174379976dcb09269c8de98  gcc/print-rtl-function.cc
  a5461dd81ec55dc6f56817a1f356f345  gcc/print-rtl.cc
  63499dea0e911b175def4a9153353027  gcc/print-rtl.h
! b049f30300658003f485bb43bf69c2cc  gcc/print-tree.cc
  b92d7f51ae16cdd854cf95fa6ab0f456  gcc/print-tree.h
  cd06e8a941b6bfa758b3577f67840bab  gcc/profile-count.cc
! 5a9a505883b17ca03bc0469a0c845311  gcc/profile-count.h
  bc21f26b6df11eea0b28a669f74f6e24  gcc/profile.cc
  cd641a4dec9a0a4cf7cf888cfa37e386  gcc/profile.h
  be6c71b25f10a45cfc8d05a37affe9ed  gcc/pta-andersen.cc
--- 7873,7882 ----
  a6e4e4fab174379976dcb09269c8de98  gcc/print-rtl-function.cc
  a5461dd81ec55dc6f56817a1f356f345  gcc/print-rtl.cc
  63499dea0e911b175def4a9153353027  gcc/print-rtl.h
! acde7ccaeefb8a3650edbd0bee09330f  gcc/print-tree.cc
  b92d7f51ae16cdd854cf95fa6ab0f456  gcc/print-tree.h
  cd06e8a941b6bfa758b3577f67840bab  gcc/profile-count.cc
! 066e69c2a16da5ff24d71969a6b61782  gcc/profile-count.h
  bc21f26b6df11eea0b28a669f74f6e24  gcc/profile.cc
  cd641a4dec9a0a4cf7cf888cfa37e386  gcc/profile.h
  be6c71b25f10a45cfc8d05a37affe9ed  gcc/pta-andersen.cc
*************** f917b1b792e38f03fb6b295105203e25  gcc/ta
*** 8545,8551 ****
  598920a18a05f11271f5dd4aa453e76a  gcc/targhooks.cc
  96ddcc694ec42272d51a10664cd73f89  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 98b58b15878eefc730b65fec9bf4d88f  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8550,8556 ----
  598920a18a05f11271f5dd4aa453e76a  gcc/targhooks.cc
  96ddcc694ec42272d51a10664cd73f89  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 388113a344c234c773151ff019835a9c  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** b7edad357bb503949f49802295729019  gcc/te
*** 25678,25683 ****
--- 25683,25689 ----
  fc5875e8af08d0f9488344e80bf6f764  gcc/testsuite/g++.dg/cpp1y/feat-vla.C
  019035e3ac24c4aef8fcd1f1af1590ae  gcc/testsuite/g++.dg/cpp1y/func_constexpr.C
  c3583508c23dbe7bcbfacff859609c12  gcc/testsuite/g++.dg/cpp1y/func_constexpr2.C
+ 0cc160ad6c16bded9bd0dabdff43ace7  gcc/testsuite/g++.dg/cpp1y/func_constexpr3.C
  0feb9c08dcb94b20846f8ae40808e303  gcc/testsuite/g++.dg/cpp1y/lambda-conv1.C
  4734b77212418e40ce4f8965c6017a39  gcc/testsuite/g++.dg/cpp1y/lambda-conv2.C
  5f112fcc57ff57c8e803342bde4e9c25  gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult-neg.C
*************** f09dc9ea398bb62a535b52948f72e1f0  gcc/te
*** 27051,27056 ****
--- 27057,27063 ----
  5f2cde48457586ee466e647dcbc9022e  gcc/testsuite/g++.dg/cpp26/name-independent-decl7.C
  e21940a9e7b4702fb26f7985bbb70580  gcc/testsuite/g++.dg/cpp26/name-independent-decl8.C
  81da95d53df0e0ca295568eaee63ec61  gcc/testsuite/g++.dg/cpp26/name-independent-decl9.C
+ a8f62135e9b099c6e8d6451a5148a689  gcc/testsuite/g++.dg/cpp26/observable-checkpoint.C
  5ac6464988a493e494d9c6115f66a3ae  gcc/testsuite/g++.dg/cpp26/pack-indexing1.C
  3a492a80a8c34d438a39836c2e55496d  gcc/testsuite/g++.dg/cpp26/pack-indexing10.C
  f9a24ae6dc0bbd835ba2ab3fd47e4dbb  gcc/testsuite/g++.dg/cpp26/pack-indexing11.C
*************** b970ff5435fa22b6f219b692f621bed8  gcc/te
*** 33102,33109 ****
  16465126f101e83b3563394ad1efa4dc  gcc/testsuite/g++.dg/modules/namespace-12_a.C
  9b622a44d3f7299cd41ff2819e176ecd  gcc/testsuite/g++.dg/modules/namespace-12_b.C
  f92c13ff85afb4a0161600875f67c936  gcc/testsuite/g++.dg/modules/namespace-13_a.C
! bd384ccc3f9d4a4cb4d0043b692dc7eb  gcc/testsuite/g++.dg/modules/namespace-13_b.C
! f68cb84137b9dc60546bf74c1ff0230b  gcc/testsuite/g++.dg/modules/namespace-13_c.C
  ebce3d8effe71472ad6b1910c0b435f6  gcc/testsuite/g++.dg/modules/namespace-1_a.C
  c34c17e18223f5c84607e68a5f2dd81a  gcc/testsuite/g++.dg/modules/namespace-1_b.C
  d35b80efe49eb34a9b0c6be1e97ef76a  gcc/testsuite/g++.dg/modules/namespace-1_c.C
--- 33109,33120 ----
  16465126f101e83b3563394ad1efa4dc  gcc/testsuite/g++.dg/modules/namespace-12_a.C
  9b622a44d3f7299cd41ff2819e176ecd  gcc/testsuite/g++.dg/modules/namespace-12_b.C
  f92c13ff85afb4a0161600875f67c936  gcc/testsuite/g++.dg/modules/namespace-13_a.C
! 7e3d78ad1b1423daa748c69ce5c76acc  gcc/testsuite/g++.dg/modules/namespace-13_b.C
! 6e877e7ac8cbedc8eae33e55ecd8e2f5  gcc/testsuite/g++.dg/modules/namespace-13_c.C
! 254507f98bfffaecbdc1b0bf153f97af  gcc/testsuite/g++.dg/modules/namespace-14_a.C
! 49c5b9733a2750cf56cc92934b796714  gcc/testsuite/g++.dg/modules/namespace-14_b.C
! 80cafb329c9ed370e4f5bc57bf2fb820  gcc/testsuite/g++.dg/modules/namespace-14_c.C
! 70c50f0547e248c3eace148df0ffe4d5  gcc/testsuite/g++.dg/modules/namespace-14_d.C
  ebce3d8effe71472ad6b1910c0b435f6  gcc/testsuite/g++.dg/modules/namespace-1_a.C
  c34c17e18223f5c84607e68a5f2dd81a  gcc/testsuite/g++.dg/modules/namespace-1_b.C
  d35b80efe49eb34a9b0c6be1e97ef76a  gcc/testsuite/g++.dg/modules/namespace-1_c.C
*************** eda67a8394a25b381e47971e78264eba  gcc/te
*** 34639,34646 ****
  1dbd130359f81ed3f6a910388f6256c8  gcc/testsuite/g++.dg/other/i386-1.C
  9913a24914ce11f6a0606c70ed58cb96  gcc/testsuite/g++.dg/other/i386-10.C
  3dd6e4901e3efacc8cfe5e0a42c2f8ea  gcc/testsuite/g++.dg/other/i386-11.C
! 428d502c55ed43d8e03f5b179d89fe39  gcc/testsuite/g++.dg/other/i386-2.C
! 0a01ada008d71334088a63f04f1023c2  gcc/testsuite/g++.dg/other/i386-3.C
  790380b4fd2857df28a8cc91aee8e723  gcc/testsuite/g++.dg/other/i386-4.C
  a47898b2c05fe055ea86fee50e074f30  gcc/testsuite/g++.dg/other/i386-7.C
  d92b54f21af3cda5d260ebf4a5d1b347  gcc/testsuite/g++.dg/other/i386-8.C
--- 34650,34657 ----
  1dbd130359f81ed3f6a910388f6256c8  gcc/testsuite/g++.dg/other/i386-1.C
  9913a24914ce11f6a0606c70ed58cb96  gcc/testsuite/g++.dg/other/i386-10.C
  3dd6e4901e3efacc8cfe5e0a42c2f8ea  gcc/testsuite/g++.dg/other/i386-11.C
! 27eabfd8aa40ef3fb4f1382b3ddf69de  gcc/testsuite/g++.dg/other/i386-2.C
! 1e0dbc81c0a4edd132960b24f8edb8ac  gcc/testsuite/g++.dg/other/i386-3.C
  790380b4fd2857df28a8cc91aee8e723  gcc/testsuite/g++.dg/other/i386-4.C
  a47898b2c05fe055ea86fee50e074f30  gcc/testsuite/g++.dg/other/i386-7.C
  d92b54f21af3cda5d260ebf4a5d1b347  gcc/testsuite/g++.dg/other/i386-8.C
*************** ba2918f2d50d14da19e142ac392345e1  gcc/te
*** 36457,36463 ****
  1ea2af4911d47cd67d9e3ab837ef48bc  gcc/testsuite/g++.dg/template/dependent-base3.C
  d84a51031591e89db0598597a16e9314  gcc/testsuite/g++.dg/template/dependent-base4.C
  1b766fbec06df8398c3415a9e993d06e  gcc/testsuite/g++.dg/template/dependent-base5.C
! 76f8c9296bab80356bd176ace15391f9  gcc/testsuite/g++.dg/template/dependent-base6.C
  d06a8849a0e0df87f9e222f08a6f4852  gcc/testsuite/g++.dg/template/dependent-expr1.C
  10b3f1b7a34c9d4e9be1e9844babd34d  gcc/testsuite/g++.dg/template/dependent-expr10.C
  6b486f8c9b9b318c76811eb21046957f  gcc/testsuite/g++.dg/template/dependent-expr2.C
--- 36468,36474 ----
  1ea2af4911d47cd67d9e3ab837ef48bc  gcc/testsuite/g++.dg/template/dependent-base3.C
  d84a51031591e89db0598597a16e9314  gcc/testsuite/g++.dg/template/dependent-base4.C
  1b766fbec06df8398c3415a9e993d06e  gcc/testsuite/g++.dg/template/dependent-base5.C
! 5ba9018528a9791e64425a869d0b3993  gcc/testsuite/g++.dg/template/dependent-base6.C
  d06a8849a0e0df87f9e222f08a6f4852  gcc/testsuite/g++.dg/template/dependent-expr1.C
  10b3f1b7a34c9d4e9be1e9844babd34d  gcc/testsuite/g++.dg/template/dependent-expr10.C
  6b486f8c9b9b318c76811eb21046957f  gcc/testsuite/g++.dg/template/dependent-expr2.C
*************** e5c358735afed9e9c54950b2b1516563  gcc/te
*** 38420,38425 ****
--- 38431,38437 ----
  0c4762d5d27af6f799c16c66b7dd5692  gcc/testsuite/g++.dg/tree-ssa/copyprop.C
  87d33077dde5db2d1e9e001bd82dc9cd  gcc/testsuite/g++.dg/tree-ssa/counts-1.C
  6c20484753d2fb5081463a83f21e1f85  gcc/testsuite/g++.dg/tree-ssa/cprop-vcond.C
+ 07b1e4890a409f46ccb7c36b8d58049a  gcc/testsuite/g++.dg/tree-ssa/cselim-1.C
  e839ec81426b140ca13726e25c99138a  gcc/testsuite/g++.dg/tree-ssa/cxa_atexit-1.C
  66e4bde98cbee7bd23264483e5ef71cd  gcc/testsuite/g++.dg/tree-ssa/cxa_atexit-2.C
  30afa65875baa79df26509c2a82b9498  gcc/testsuite/g++.dg/tree-ssa/cxa_atexit-3.C
*************** f36bbd087ac3ea147e58ddaa13c05621  gcc/te
*** 49746,49751 ****
--- 49758,49764 ----
  f4fb130600932752f20fe058b47563f5  gcc/testsuite/gcc.dg/autopar/reduc-7.c
  cb2d9cc2278a24ee2bd07758846c491e  gcc/testsuite/gcc.dg/autopar/reduc-8.c
  a72aed4598b891bea75a07eca33210c9  gcc/testsuite/gcc.dg/autopar/reduc-9.c
+ 7d9914b3949e0939a639f8e93d7225a6  gcc/testsuite/gcc.dg/autopar/runtime-auto.c
  f55a1275009ff460210d4b9c67a189a3  gcc/testsuite/gcc.dg/autopar/uns-outer-4.c
  0e589f3e4ce3143c9d88fb74f872e3fe  gcc/testsuite/gcc.dg/autopar/uns-outer-5.c
  f5e8e01c793a266fa480ec93df8de475  gcc/testsuite/gcc.dg/autopar/uns-outer-6.c
*************** d62663c6040cd44ce9ceaef5ef47e6be  gcc/te
*** 51378,51384 ****
  0afc77e6745b381c2db4e3eb47069397  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-8.c
  dc9eac76c9e4283c4325c2a6c902a00b  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-9.c
  d698e775932010971513c46f0883bce0  gcc/testsuite/gcc.dg/cpp/counter-1.c
! 9c19817d5f829cfe09e01762dc607e87  gcc/testsuite/gcc.dg/cpp/cpp.exp
  a4207c77f8d160b9e8cfe0b186630d5a  gcc/testsuite/gcc.dg/cpp/cxxcom1.c
  d77a661fbfed762f6397bfd3581e855e  gcc/testsuite/gcc.dg/cpp/cxxcom2.c
  8af19f954e4c7d8397aa53ac210b124e  gcc/testsuite/gcc.dg/cpp/cxxcom2.h
--- 51391,51397 ----
  0afc77e6745b381c2db4e3eb47069397  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-8.c
  dc9eac76c9e4283c4325c2a6c902a00b  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-9.c
  d698e775932010971513c46f0883bce0  gcc/testsuite/gcc.dg/cpp/counter-1.c
! 602c4dc03924c5d285a3f18d6b59a6f0  gcc/testsuite/gcc.dg/cpp/cpp.exp
  a4207c77f8d160b9e8cfe0b186630d5a  gcc/testsuite/gcc.dg/cpp/cxxcom1.c
  d77a661fbfed762f6397bfd3581e855e  gcc/testsuite/gcc.dg/cpp/cxxcom2.c
  8af19f954e4c7d8397aa53ac210b124e  gcc/testsuite/gcc.dg/cpp/cxxcom2.h
*************** af960c05f0a6ab2d5eb3aa99551fa658  gcc/te
*** 51420,51425 ****
--- 51433,51439 ----
  b7bb414df09ccb2077133b21ba630ce8  gcc/testsuite/gcc.dg/cpp/error-1.c
  6a2ac941bc99ce6af7ed79d05fbb5aed  gcc/testsuite/gcc.dg/cpp/escape-1.c
  3f966d736c5e8d8df46521821e7b2f3c  gcc/testsuite/gcc.dg/cpp/escape-2.c
+ 8116d5cdfc324e8e41c8048443f8d089  gcc/testsuite/gcc.dg/cpp/escape-3.i
  7e09acd41fc89861253e4344afbcbae7  gcc/testsuite/gcc.dg/cpp/escape.c
  98feceff95879f1cf8369acd89081e91  gcc/testsuite/gcc.dg/cpp/expr-overflow-1.c
  f6fb6c393146f1f70bf2f1d93f98bff3  gcc/testsuite/gcc.dg/cpp/expr.c
*************** c91822df8000f6656b2e707c3c4b9776  gcc/te
*** 51629,51635 ****
  bd82104282e72a261de145d68de5bf94  gcc/testsuite/gcc.dg/cpp/pr35313.c
  67a7898c1ca67039c34609f9181a51ee  gcc/testsuite/gcc.dg/cpp/pr35322.c
  cd284656aaf570a6f621480512077abd  gcc/testsuite/gcc.dg/cpp/pr36320.c
! b50aa89102a7000c9f6a19cd08edb5b2  gcc/testsuite/gcc.dg/cpp/pr36674.i
  305ae9c95b1a4224816adfdc5af2f157  gcc/testsuite/gcc.dg/cpp/pr43195.c
  b5ad224e236fc4a36c19d3cfb71bb8da  gcc/testsuite/gcc.dg/cpp/pr43195.h
  5d1998992379b4be30cd8c1ab25a11c2  gcc/testsuite/gcc.dg/cpp/pr60014-1.c
--- 51643,51649 ----
  bd82104282e72a261de145d68de5bf94  gcc/testsuite/gcc.dg/cpp/pr35313.c
  67a7898c1ca67039c34609f9181a51ee  gcc/testsuite/gcc.dg/cpp/pr35322.c
  cd284656aaf570a6f621480512077abd  gcc/testsuite/gcc.dg/cpp/pr36320.c
! f2e1ffe2d42874ffec7aa8ba1a2dd88b  gcc/testsuite/gcc.dg/cpp/pr36674.i
  305ae9c95b1a4224816adfdc5af2f157  gcc/testsuite/gcc.dg/cpp/pr43195.c
  b5ad224e236fc4a36c19d3cfb71bb8da  gcc/testsuite/gcc.dg/cpp/pr43195.h
  5d1998992379b4be30cd8c1ab25a11c2  gcc/testsuite/gcc.dg/cpp/pr60014-1.c
*************** b30637ee2dfddd2f33e1f6f41de2efa3  gcc/te
*** 54388,54393 ****
--- 54402,54410 ----
  3cbca90b547c38415ee1ca57ae01192c  gcc/testsuite/gcc.dg/ipa/ipcp-agg-7.c
  0afe2a5faa6c65c05824d4ff42bb549b  gcc/testsuite/gcc.dg/ipa/ipcp-agg-8.c
  92494975f86350b030e5c00f76095aa8  gcc/testsuite/gcc.dg/ipa/ipcp-agg-9.c
+ 0be7b4168859c7fdc935647d38a1243c  gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec1.c
+ 167594cb924bb2bbf89a602ff11a5ba5  gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec2.c
+ 1d9b8cb8ea7aa55edcbea1a90ef9e9f9  gcc/testsuite/gcc.dg/ipa/ipcp-cb1.c
  24a9ebe968c2d5aad84520657228eb49  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-1.c
  504899d6e8adecbea2a964feab263d64  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-2.c
  10ce49b0da2d906c60c994881d2f1e6d  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-3.c
*************** ac52c5d4de0c71ac6754e0b97aa2d1aa  gcc/te
*** 55518,55524 ****
  60342111ed9bfef70e8686e973bb3988  gcc/testsuite/gcc.dg/plugin/diagnostic-test-text-art-unicode-color.c
  d5a25be6497ce0fdc9ba7e87979ee0b1  gcc/testsuite/gcc.dg/plugin/diagnostic_group_plugin.cc
  84ed0757ba99c1e83f1a5e4fefddc5ae  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.cc
! 36948e85961037bf9113d58e6ae69a7d  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc
  d4d1eb70aaafc800a751ded4bc9f9fd6  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.cc
  04b1c27ed8364e0abc5c25eef8f78fc1  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_metadata.cc
  75e9c4ca32ac5c1329afb3fd1be6a829  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_nesting.cc
--- 55535,55541 ----
  60342111ed9bfef70e8686e973bb3988  gcc/testsuite/gcc.dg/plugin/diagnostic-test-text-art-unicode-color.c
  d5a25be6497ce0fdc9ba7e87979ee0b1  gcc/testsuite/gcc.dg/plugin/diagnostic_group_plugin.cc
  84ed0757ba99c1e83f1a5e4fefddc5ae  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.cc
! e91a0d74ecaca2e7119153c437141b86  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc
  d4d1eb70aaafc800a751ded4bc9f9fd6  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.cc
  04b1c27ed8364e0abc5c25eef8f78fc1  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_metadata.cc
  75e9c4ca32ac5c1329afb3fd1be6a829  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_nesting.cc
*************** f3420ae2cec7581a0ad483e1abb174f2  gcc/te
*** 56273,56283 ****
--- 56290,56302 ----
  7032b52dc2dd1e6cab514293c2d0b276  gcc/testsuite/gcc.dg/pr121322.c
  5d7224a5e3a015d4a5682c4597843dae  gcc/testsuite/gcc.dg/pr121391-1.c
  a900268f8486ddee095c80302941ad60  gcc/testsuite/gcc.dg/pr121391-2.c
+ 205897ef272ce576adc8067b35b643a8  gcc/testsuite/gcc.dg/pr121468.c
  a0e82361440276cacba8161b406fa08c  gcc/testsuite/gcc.dg/pr121619.c
  4a0b062157a946d90ff3c34224ea0c66  gcc/testsuite/gcc.dg/pr121663.c
  596e137d1ef1fc5f142c61692ba512ae  gcc/testsuite/gcc.dg/pr121678.c
  6fcab1257c633aee2384f0d8fa3854e0  gcc/testsuite/gcc.dg/pr121921-1.c
  1268172e76401131acc77ad9fccb845f  gcc/testsuite/gcc.dg/pr121987.c
+ ea90b28181a941740c845e0095310a27  gcc/testsuite/gcc.dg/pr122200.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
*************** cee315c60d4bb9871399c0c79c06b497  gcc/te
*** 59645,59650 ****
--- 59664,59670 ----
  2529600ee21ae9ddc90ef7b17f203c75  gcc/testsuite/gcc.dg/torture/inline-mem-cpy-cmp-1.c
  d9d7e0bbb351429b87cfc3d6828caa28  gcc/testsuite/gcc.dg/torture/inline-mem-move-1.c
  0b1f6fa6ba2d2c75e662d5c3f6a45967  gcc/testsuite/gcc.dg/torture/inline-mem-set-1.c
+ 96926b050759d9ba7bb56a4b349cdba0  gcc/testsuite/gcc.dg/torture/int-bwise-opt-1.c
  d8de96ae2b044149f75e65807303c0d8  gcc/testsuite/gcc.dg/torture/ipa-pta-1.c
  215abff408789603b6bcd0b72b9dbb37  gcc/testsuite/gcc.dg/torture/ipa-pta-2.c
  67e032a26a6dcb61fd477f98f6504336  gcc/testsuite/gcc.dg/torture/ipa-pta-3.c
*************** f42b1c4e861e4207759994e34bbd715d  gcc/te
*** 60051,60062 ****
  457e3a0b9245c7c5a7794754dce78fe5  gcc/testsuite/gcc.dg/torture/pr121829.c
  949a4a95ad545289488a204b883b05d6  gcc/testsuite/gcc.dg/torture/pr121844.c
  864f636916f6866905d019b279576014  gcc/testsuite/gcc.dg/torture/pr121962-1.c
! 256200aae431c6598adbd4613b49ae06  gcc/testsuite/gcc.dg/torture/pr122016.c
  a8d4d484b0c9f610869201cb69ba7f05  gcc/testsuite/gcc.dg/torture/pr122079-1.c
  efa374cf4f5d41b91ecac6e1e98ac293  gcc/testsuite/gcc.dg/torture/pr122079-2.c
  a53ed0c2a08c21b00c8d5487bbc823d7  gcc/testsuite/gcc.dg/torture/pr122079-3.c
  d4560440fd7b3647f8780537a59e4716  gcc/testsuite/gcc.dg/torture/pr122188.c
! 34853b96b0ae2225e1e919dd24c71325  gcc/testsuite/gcc.dg/torture/pr122212.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
--- 60071,60083 ----
  457e3a0b9245c7c5a7794754dce78fe5  gcc/testsuite/gcc.dg/torture/pr121829.c
  949a4a95ad545289488a204b883b05d6  gcc/testsuite/gcc.dg/torture/pr121844.c
  864f636916f6866905d019b279576014  gcc/testsuite/gcc.dg/torture/pr121962-1.c
! a0fb3a08e712a34686912f981529e52a  gcc/testsuite/gcc.dg/torture/pr122012.c
! 703af8635a99ab983c44dc87e5fa40fd  gcc/testsuite/gcc.dg/torture/pr122016.c
  a8d4d484b0c9f610869201cb69ba7f05  gcc/testsuite/gcc.dg/torture/pr122079-1.c
  efa374cf4f5d41b91ecac6e1e98ac293  gcc/testsuite/gcc.dg/torture/pr122079-2.c
  a53ed0c2a08c21b00c8d5487bbc823d7  gcc/testsuite/gcc.dg/torture/pr122079-3.c
  d4560440fd7b3647f8780537a59e4716  gcc/testsuite/gcc.dg/torture/pr122188.c
! fcc3a6f68a967a257f515d11f06532c2  gcc/testsuite/gcc.dg/torture/pr122212.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
*************** f36615df20e02ab31418994441d3c87a  gcc/te
*** 61902,61907 ****
--- 61923,61929 ----
  e1aa4da1fccf6c1381e18889b6eb6b7b  gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
  06bf1138daa5aebb13049172ebbe0ca8  gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c
  5b23b073bf0eb14ec16d5475e0244d1f  gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c
+ 649ae47c5053c9c9c9e999565712a5f6  gcc/testsuite/gcc.dg/tree-ssa/int-bwise-opt-vect01.c
  9307968a8a5259ab05b85852a6be47e5  gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c
  c976bad1cd05db7c6e1a6af67ae0ad02  gcc/testsuite/gcc.dg/tree-ssa/interposition.c
  d595e9d579debb1bd97efd9247321ae6  gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
*************** a12895e160ece0f553a23b23be8acc70  gcc/te
*** 63650,63655 ****
--- 63672,63678 ----
  ae4c45e8e11a3fe4fc4c58ed7fba53fa  gcc/testsuite/gcc.dg/tree-ssa/vector-7.c
  082236399ce2aff8104bb8db55972f09  gcc/testsuite/gcc.dg/tree-ssa/vector-8.c
  4bf17b25f855a2c808672a6d3ed9bb4d  gcc/testsuite/gcc.dg/tree-ssa/vector-9.c
+ eea142fd036a9cca50ef0e3ca244244e  gcc/testsuite/gcc.dg/tree-ssa/vla-1.c
  efe6f8695ae5fbf7f82d66e0c9ec26b1  gcc/testsuite/gcc.dg/tree-ssa/vrp-compare-1.c
  d2716d7b0ff8fed54064ac391092556a  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-1.c
  ead105f59515a642c6fc52a424df28de  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-11.c
*************** fd7e1b94d8c4315a2364eebdd0c788df  gcc/te
*** 64716,64721 ****
--- 64739,64775 ----
  5b80820316db69308b9fa48a7a5d642b  gcc/testsuite/gcc.dg/vect/pr103864.c
  0b8307de60b9a1e2b8798ec8a7ad4ad5  gcc/testsuite/gcc.dg/vect/pr104112-1.c
  860f8bb39577a05db59d8465da979c26  gcc/testsuite/gcc.dg/vect/pr104112-2.c
+ ca10535d57191339fb3614bd8a9e26d1  gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c
+ 493cbbe5b68b21f8defba34c009531a7  gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c
+ c911fcbb7c23175ebb3d430beb210dae  gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c
+ bd429cf327f6b8230e510ee3c4b6a0bf  gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c
+ 299fdb4b2bf5de4a68a74c503c568199  gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c
+ af3f7c6a2a951683d04834c3d6965f7d  gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c
+ 5d5c7392d5da63e0c63811b8b98fc979  gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c
+ e147d701bd28fcd3ce369a71ee6ab5bb  gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c
+ 5b9f42211f7a599f9dfaa34c6b84cf8c  gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c
+ e2e934af5a76d86abb305d316174f3ba  gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c
+ e2e934af5a76d86abb305d316174f3ba  gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c
+ b24a16db52ca5d1bf00942b1e5cd3956  gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c
+ 15a2e63a5306eb99b5f542602cac5815  gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c
+ de246a52e8f254bb6fdaa1a524e83c3e  gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c
+ 321429cd2ace586339637bc8b6f25d33  gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c
+ 3b1886441dc6fa7dbb1a804b4345ca55  gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c
+ f73b176dd8d9721a116adba9be0b63e2  gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c
+ 1d0dbf23a067955768102dcff35e380d  gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c
+ 4a8d64137fc78eb93aed0774314e16df  gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c
+ 8e1968f5bccf1870aac77218f08e0b94  gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c
+ bc2533f7308e5e6cded6e140e6f69345  gcc/testsuite/gcc.dg/vect/pr104116-round-div.c
+ ffd1671fb1c39833f794e47aa97dbfc1  gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c
+ 6245174a0006b60b4db443ae31837c86  gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c
+ e4b1568bed8663bacb44ef5b80ee4ecb  gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c
+ 030caee17868f7605eaa0f3e2d4a8553  gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c
+ 0798e5213a3d43fa9fd139db9436ca5a  gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c
+ b2a2588efb60f917cc18f8cef9ac2ad7  gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c
+ c4db651cc90e41c4bb85580059060b21  gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c
+ 45e8ac2ceaed27e8eca95c788f298bca  gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c
+ 8db28db93c4105f214042083290b664b  gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c
+ e91609780df8d58c07b91de08c6e78ab  gcc/testsuite/gcc.dg/vect/pr104116.h
  b53f19c5cce29955511b5d817d2f0418  gcc/testsuite/gcc.dg/vect/pr104152.c
  793fae35b1a1e920435aac3954c23d69  gcc/testsuite/gcc.dg/vect/pr104445.c
  d69269cb4ebabc5a087a077a3f160d36  gcc/testsuite/gcc.dg/vect/pr104595.c
*************** f5749a6330ea4377b859350a23760b4a  gcc/te
*** 64826,64834 ****
  62642e73757697e1b2dcd5c23bbf8739  gcc/testsuite/gcc.dg/vect/pr119586.c
  c5b12e4f92ab5e7e64670a57c8f91e86  gcc/testsuite/gcc.dg/vect/pr119640.c
  ae171ef5347c321225b18e5907b1331b  gcc/testsuite/gcc.dg/vect/pr119757.c
! 310d45a43bc7086636cd9c6ae6a4c6a4  gcc/testsuite/gcc.dg/vect/pr120687-1.c
! c746947dad50b626b1a7295bcd1d189f  gcc/testsuite/gcc.dg/vect/pr120687-2.c
! da58fed06b7df0d44a78e95b8d3e4517  gcc/testsuite/gcc.dg/vect/pr120687-3.c
  7df91aea22a8a2dc08bd0d355fa30fae  gcc/testsuite/gcc.dg/vect/pr120817.c
  cb063349fff16961efef1c8645314115  gcc/testsuite/gcc.dg/vect/pr120922.c
  2be1877919c42126fe95ae4d0c3f1c3f  gcc/testsuite/gcc.dg/vect/pr121034.c
--- 64880,64888 ----
  62642e73757697e1b2dcd5c23bbf8739  gcc/testsuite/gcc.dg/vect/pr119586.c
  c5b12e4f92ab5e7e64670a57c8f91e86  gcc/testsuite/gcc.dg/vect/pr119640.c
  ae171ef5347c321225b18e5907b1331b  gcc/testsuite/gcc.dg/vect/pr119757.c
! 995a5e1b0b9a33d36b37aaabd5975353  gcc/testsuite/gcc.dg/vect/pr120687-1.c
! 5c5333f2593161ead9aefcdce900d925  gcc/testsuite/gcc.dg/vect/pr120687-2.c
! c8c99d2a0032d8f2ba36897e414a36c6  gcc/testsuite/gcc.dg/vect/pr120687-3.c
  7df91aea22a8a2dc08bd0d355fa30fae  gcc/testsuite/gcc.dg/vect/pr120817.c
  cb063349fff16961efef1c8645314115  gcc/testsuite/gcc.dg/vect/pr120922.c
  2be1877919c42126fe95ae4d0c3f1c3f  gcc/testsuite/gcc.dg/vect/pr121034.c
*************** fe71df0cf859d65ae142b535f5c03b1d  gcc/te
*** 64845,64850 ****
--- 64899,64907 ----
  6fcb6fd116ca771471e029793e00ac1a  gcc/testsuite/gcc.dg/vect/pr121767.c
  a235811cfa051b76b4dd21ee24e8cc63  gcc/testsuite/gcc.dg/vect/pr121768.c
  f1a49246f84d8fbab3d2b6aa5c89949e  gcc/testsuite/gcc.dg/vect/pr121830.c
+ 0ba61b060cc8efa3aae233cd974d2dae  gcc/testsuite/gcc.dg/vect/pr121949_1.c
+ 5eec2c7bb3d50c6a8bbd695d7caec0e7  gcc/testsuite/gcc.dg/vect/pr121949_2.c
+ 67399a1e5fca0d02800db020357f3722  gcc/testsuite/gcc.dg/vect/pr121949_3.c
  8cbd2daa28dcf298c1e79004b6ec12cf  gcc/testsuite/gcc.dg/vect/pr122023.c
  08c808506725be00bdf4d84893d5e2e2  gcc/testsuite/gcc.dg/vect/pr122158.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
*************** a0e208729117f798ee5200a51a9c258b  gcc/te
*** 66166,66171 ****
--- 66223,66230 ----
  8689fbd68c008546f301818654595aab  gcc/testsuite/gcc.dg/vect/vect-pr114375.c
  8006cd394692bd071c0417ad10367515  gcc/testsuite/gcc.dg/vect/vect-pr120927-2.c
  dca085f893f46ecb56c7cecb15a42090  gcc/testsuite/gcc.dg/vect/vect-pr120927.c
+ 34f7ddeeced3df59f00aad249918cde2  gcc/testsuite/gcc.dg/vect/vect-pr122301.c
+ 38b50de096973e5884e0480a8ff70084  gcc/testsuite/gcc.dg/vect/vect-pr122308.c
  464c872c62ad2fc5d241ed918e0cf5de  gcc/testsuite/gcc.dg/vect/vect-pr61247.c
  4d57df9e3b3522c9f1a6707c05f1da45  gcc/testsuite/gcc.dg/vect/vect-pr69848.c
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
*************** a204aadb3f5fc384dd117c7c09175029  gcc/te
*** 67051,67057 ****
  596da75607dfa463c209980dba2ef791  gcc/testsuite/gcc.target/aarch64/acle/rwsr-2.c
  90a044b6489e0d51268ae3d5ce15dead  gcc/testsuite/gcc.target/aarch64/acle/rwsr-3.c
  07dc62ae2bcf9c8e358ed99fe06cd5d6  gcc/testsuite/gcc.target/aarch64/acle/rwsr-4.c
! 119d4f72bb0ea43c9a5cbee2e61cdd5e  gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c
  b478e4234b2713f0df0d417dd9d13425  gcc/testsuite/gcc.target/aarch64/acle/rwsr-ungated.c
  060ba83ef96f0e9ba1957beb7670ae4f  gcc/testsuite/gcc.target/aarch64/acle/rwsr.c
  10ce3b5edee8a787906dd58121496c70  gcc/testsuite/gcc.target/aarch64/acle/tme.c
--- 67110,67116 ----
  596da75607dfa463c209980dba2ef791  gcc/testsuite/gcc.target/aarch64/acle/rwsr-2.c
  90a044b6489e0d51268ae3d5ce15dead  gcc/testsuite/gcc.target/aarch64/acle/rwsr-3.c
  07dc62ae2bcf9c8e358ed99fe06cd5d6  gcc/testsuite/gcc.target/aarch64/acle/rwsr-4.c
! 8106917e4e230850cff2d4b822ab17d8  gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c
  b478e4234b2713f0df0d417dd9d13425  gcc/testsuite/gcc.target/aarch64/acle/rwsr-ungated.c
  060ba83ef96f0e9ba1957beb7670ae4f  gcc/testsuite/gcc.target/aarch64/acle/rwsr.c
  10ce3b5edee8a787906dd58121496c70  gcc/testsuite/gcc.target/aarch64/acle/tme.c
*************** cf174bb4218a2ff6650d0ab674702881  gcc/te
*** 68578,68583 ****
--- 68637,68646 ----
  83ac293146b05a62ec4a19e52751ebd1  gcc/testsuite/gcc.target/aarch64/pr121253.c
  a67b71d65cb6bd7b6c05a378464741e6  gcc/testsuite/gcc.target/aarch64/pr121290.c
  64cb9b1e14577523fd3ff2306b1eaa44  gcc/testsuite/gcc.target/aarch64/pr121300.c
+ 4821dff6c48b3d6689b8fe50feaeb1c0  gcc/testsuite/gcc.target/aarch64/pr122069_1.c
+ 4c7c0d46a40719aecb2fdb238a2c596c  gcc/testsuite/gcc.target/aarch64/pr122069_2.c
+ fd8128a2ace2daef0e57c5d400699061  gcc/testsuite/gcc.target/aarch64/pr122069_3.c
+ 660be217a5e8446a50ffef18eb8fa6e0  gcc/testsuite/gcc.target/aarch64/pr122069_4.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
*************** df238b64cc974628a48afaac0cd271a1  gcc/te
*** 73422,73427 ****
--- 73485,73493 ----
  49634f528a782a09d2e4cdcc681eee91  gcc/testsuite/gcc.target/aarch64/sve/pr119156_1.c
  37c8a6d45bec8da5daf1eb003bdb2102  gcc/testsuite/gcc.target/aarch64/sve/pr119351.c
  fba890ec69e5613e555983284ebab389  gcc/testsuite/gcc.target/aarch64/sve/pr119351_run.c
+ ecd052b8b25dcdd22b9bc9b4afdddf04  gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c
+ 84d53e47a2bd0ee9db70c24448d92f33  gcc/testsuite/gcc.target/aarch64/sve/pr122069_1.c
+ f3c32f052e49d3e8c461ebbc88a7bd49  gcc/testsuite/gcc.target/aarch64/sve/pr122069_2.c
  7e2aaf0806edd37415079b5c2e48b66c  gcc/testsuite/gcc.target/aarch64/sve/pr81003.c
  00b752a6e175de8b1a300df08f275461  gcc/testsuite/gcc.target/aarch64/sve/pr87563.c
  c56eeba71ad463673a1bdb30e7a94863  gcc/testsuite/gcc.target/aarch64/sve/pr87815.c
*************** f5f6f291e9c1c848a46c8ef91ca99f58  gcc/te
*** 75331,75336 ****
--- 75397,75407 ----
  b1f13471701b0335894317ae214cc68c  gcc/testsuite/gcc.target/aarch64/sve2/pr116934.c
  3fcc51d99dc7ff15a8bb60da25dc470e  gcc/testsuite/gcc.target/aarch64/sve2/pr120999.c
  1620fd00b76f773c65274065175f0eb2  gcc/testsuite/gcc.target/aarch64/sve2/pr121599.c
+ 0f6c07a30f53dc4aadca1b9cf6c3a8db  gcc/testsuite/gcc.target/aarch64/sve2/pr121604_pmov.c
+ 71aa3386ca6d074587616bfcb73848d4  gcc/testsuite/gcc.target/aarch64/sve2/pr122069_1.c
+ cf400ce94034485f8a16a1cbd287c372  gcc/testsuite/gcc.target/aarch64/sve2/pr122069_2.c
+ 0585c8051a613504bc26d003f880104b  gcc/testsuite/gcc.target/aarch64/sve2/pr122069_3.c
+ fd41242b07a3e957c67e6fe4c4c2bc33  gcc/testsuite/gcc.target/aarch64/sve2/pr122069_4.c
  3ddfd16fcbf89890fd9785fec8f0c081  gcc/testsuite/gcc.target/aarch64/sve2/shracc_1.c
  8cd4d6e010de57b57d5d8fb325fa79bb  gcc/testsuite/gcc.target/aarch64/sve2/unpred_mul_1.c
  826ee7c8b41bb7da016220e1f67b1306  gcc/testsuite/gcc.target/aarch64/sve2/uzpq_1.c
*************** fc2eb8ac52faed5fba0a017b858d4ae4  gcc/te
*** 75426,75432 ****
  4036d83a59b4adcf9e8a4cf5a291d22e  gcc/testsuite/gcc.target/aarch64/torture/pr111677.c
  8ba6cf5317762b2b89350d4f652efa53  gcc/testsuite/gcc.target/aarch64/torture/pr116564.c
  626bb6bb64c1bbe8eb5e2b92bf925aeb  gcc/testsuite/gcc.target/aarch64/torture/pr120986-2.c
! 74c4136750a799ab2228f52f47274a10  gcc/testsuite/gcc.target/aarch64/torture/pr121772.c
  5266ac107a73e3ee1d1f44e1cda7d9f2  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-1.c
  9c3416db2fc04c3f91b03ecae15e943e  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-10.c
  df55bfe2c1ce46074b19b4566cedeef4  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-11.c
--- 75497,75503 ----
  4036d83a59b4adcf9e8a4cf5a291d22e  gcc/testsuite/gcc.target/aarch64/torture/pr111677.c
  8ba6cf5317762b2b89350d4f652efa53  gcc/testsuite/gcc.target/aarch64/torture/pr116564.c
  626bb6bb64c1bbe8eb5e2b92bf925aeb  gcc/testsuite/gcc.target/aarch64/torture/pr120986-2.c
! d03b2f46140f14ae9b2101813aec3525  gcc/testsuite/gcc.target/aarch64/torture/pr121772.c
  5266ac107a73e3ee1d1f44e1cda7d9f2  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-1.c
  9c3416db2fc04c3f91b03ecae15e943e  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-10.c
  df55bfe2c1ce46074b19b4566cedeef4  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-11.c
*************** c6c1c759a610556eca59987a77084f45  gcc/te
*** 76127,76134 ****
  5b3a2c86441e5d4b83712d58687052e0  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
  5790d3efd74c1ddf5aeb2e8743385c60  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c
  6385d3494ed7d5dcaa3d33b79fcfc366  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
! 2f54b8d253156a2be1577d30ce773f07  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
! 8411d0e77a0611b1b9aef23030254fbe  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
  3d2926f698dbbca5b0360a451b00aeba  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
  4a5eb9a1db0e1434f2c59a010562f031  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
  992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
--- 76198,76205 ----
  5b3a2c86441e5d4b83712d58687052e0  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
  5790d3efd74c1ddf5aeb2e8743385c60  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c
  6385d3494ed7d5dcaa3d33b79fcfc366  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
! b08f44b71a7af7b084aac520c4780e9e  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
! c69f1e0f027fc631442a0a5361397ee1  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
  3d2926f698dbbca5b0360a451b00aeba  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
  4a5eb9a1db0e1434f2c59a010562f031  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
  992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
*************** f800954ed63838e287ff6e1a23290ce0  gcc/te
*** 76703,76710 ****
  42477f6df1dda97231658c67dd1c33b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c
  ec6423961de9ca5f2cb66d89043d66e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c
  87dfc338f1af58cdf73c1f2e3a644405  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_u32.c
! 0e70b98bf29cbcedc33a3c6c66128fd0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c
! 76884627c97729162f401bd38f98783f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c
  90c91eea3a5177e36dd45a9543b728a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c
  15e2481ce5d9bea739ce6b372c3d433e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c
  30849dd964b0e504a851831adfe15591  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c
--- 76774,76782 ----
  42477f6df1dda97231658c67dd1c33b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c
  ec6423961de9ca5f2cb66d89043d66e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c
  87dfc338f1af58cdf73c1f2e3a644405  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_u32.c
! 50e0a047cebdb35ac47d77a3b8ce7dd7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c
! c3a210f46ef57f5388b5b58f4cd62c4a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c
! 68c6e1b733e2bc098e19925cadea6d66  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c
  90c91eea3a5177e36dd45a9543b728a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c
  15e2481ce5d9bea739ce6b372c3d433e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c
  30849dd964b0e504a851831adfe15591  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c
*************** ad0f72f16f1436835769ad26f4554b5b  gcc/te
*** 78684,78691 ****
  fe4b54b2c4e751934615b7c2ebfd87cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c
  f2b889d1844a15b18389534c4050fd3b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_s32.c
  ed711f516d90a10c0e04b55f40a058fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_u32.c
! 22706fd4cb189bfba2724217e07083d8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c
! 0f8daa925acd949859c832c7d986478e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c
  a42ff09d93993a96614fefa3d6e96505  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c
  a719098a51cc49f83ff59264834d4b4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c
  af70db4174c1713b590a6d5ba294aa2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c
--- 78756,78763 ----
  fe4b54b2c4e751934615b7c2ebfd87cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_m_u32.c
  f2b889d1844a15b18389534c4050fd3b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_s32.c
  ed711f516d90a10c0e04b55f40a058fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbciq_u32.c
! eaa0a99fede12292d203687a7a340d00  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c
! a9fb7502ff34d8a2053a835fd3f2b45e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c
  a42ff09d93993a96614fefa3d6e96505  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c
  a719098a51cc49f83ff59264834d4b4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c
  af70db4174c1713b590a6d5ba294aa2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c
*************** b813d8fe9de40e92d053612c2870377f  gcc/te
*** 80404,80409 ****
--- 80476,80483 ----
  61717431b5a0ac29696b8966fcffb82d  gcc/testsuite/gcc.target/bpf/memmove-2.c
  519cc9b302f9a6af82ee23578c42d978  gcc/testsuite/gcc.target/bpf/memset-1.c
  08e35dee7813883fc06d43011a5b8b95  gcc/testsuite/gcc.target/bpf/memset-2.c
+ 0c8e7c4772a00a99d142dbfe93d3278c  gcc/testsuite/gcc.target/bpf/memset-3.c
+ eef45c16412589bc9f60b84f2eba2f47  gcc/testsuite/gcc.target/bpf/memset-4.c
  adb6b92de0215aeb6afd970f07e89f03  gcc/testsuite/gcc.target/bpf/mulsidi3-zeroextend-pseudoc.c
  290115ca392c41eb0b1d03361f774e46  gcc/testsuite/gcc.target/bpf/naked-1.c
  848cfe50cbcfdb0ecd5397dde4709429  gcc/testsuite/gcc.target/bpf/naked-2.c
*************** ae8b5a5d686fedd54544f4210ebf0d66  gcc/te
*** 80953,80959 ****
  d3f15f077bac4fdd98e262ff70319e29  gcc/testsuite/gcc.target/i386/amd64-abi-7.c
  41e281a8a41c48fe7dbd02b555d86032  gcc/testsuite/gcc.target/i386/amd64-abi-8.c
  29b2c8175a8aeb1de6d8e6148a11d79d  gcc/testsuite/gcc.target/i386/amd64-abi-9.c
! 9eb5e9e35890de90d641e3e1915ed246  gcc/testsuite/gcc.target/i386/amx-check.h
  99e6ee6f6a0dd25151f9bd8e0350a8c3  gcc/testsuite/gcc.target/i386/amx-helper.h
  a93a298f547274ed3c2b935fceada10f  gcc/testsuite/gcc.target/i386/amxavx512-asmatt-1.c
  6a5fd66cc81baab9cac7cbbacb5f044a  gcc/testsuite/gcc.target/i386/amxavx512-asmintel-1.c
--- 81027,81033 ----
  d3f15f077bac4fdd98e262ff70319e29  gcc/testsuite/gcc.target/i386/amd64-abi-7.c
  41e281a8a41c48fe7dbd02b555d86032  gcc/testsuite/gcc.target/i386/amd64-abi-8.c
  29b2c8175a8aeb1de6d8e6148a11d79d  gcc/testsuite/gcc.target/i386/amd64-abi-9.c
! d946e35265c94b5e06f45c925ea03015  gcc/testsuite/gcc.target/i386/amx-check.h
  99e6ee6f6a0dd25151f9bd8e0350a8c3  gcc/testsuite/gcc.target/i386/amx-helper.h
  a93a298f547274ed3c2b935fceada10f  gcc/testsuite/gcc.target/i386/amxavx512-asmatt-1.c
  6a5fd66cc81baab9cac7cbbacb5f044a  gcc/testsuite/gcc.target/i386/amxavx512-asmintel-1.c
*************** b08450b417269b0fe19cdf6b9521036d  gcc/te
*** 80983,80991 ****
  e3f6b37649c7f1fa4d20b6327cdcdb27  gcc/testsuite/gcc.target/i386/amxint8-dpbsud-2.c
  a8ab966558faa138830cc3e75dbe4464  gcc/testsuite/gcc.target/i386/amxint8-dpbusd-2.c
  fc50af06e61cf9d13887f2fe515b0e27  gcc/testsuite/gcc.target/i386/amxint8-dpbuud-2.c
! 6872cb4a8da17cfb612b8f89321beab6  gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c
! 1a53e29154e07b83ff9b167e4d136082  gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c
! 9c12ed8e1c893d496f5b35bc5eca35a1  gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c
  e733b32150a44e7be6c236ca11324770  gcc/testsuite/gcc.target/i386/amxmovrs-tileloaddrs-2.c
  83f382a948fa479169644b56fee9247b  gcc/testsuite/gcc.target/i386/amxtf32-asmatt-1.c
  3f9a5f02b15d43a842b189003650c7bd  gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c
--- 81057,81064 ----
  e3f6b37649c7f1fa4d20b6327cdcdb27  gcc/testsuite/gcc.target/i386/amxint8-dpbsud-2.c
  a8ab966558faa138830cc3e75dbe4464  gcc/testsuite/gcc.target/i386/amxint8-dpbusd-2.c
  fc50af06e61cf9d13887f2fe515b0e27  gcc/testsuite/gcc.target/i386/amxint8-dpbuud-2.c
! c6e05c63e432fabb376eb84512c8c136  gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c
! c43c3248904abe6da1985064ed1f4f36  gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c
  e733b32150a44e7be6c236ca11324770  gcc/testsuite/gcc.target/i386/amxmovrs-tileloaddrs-2.c
  83f382a948fa479169644b56fee9247b  gcc/testsuite/gcc.target/i386/amxtf32-asmatt-1.c
  3f9a5f02b15d43a842b189003650c7bd  gcc/testsuite/gcc.target/i386/amxtf32-asmintel-1.c
*************** a455baf8f9990eb7494164842dce7c91  gcc/te
*** 80995,81011 ****
  84fc02cc52ddc8bdd53d77902c0176fb  gcc/testsuite/gcc.target/i386/amxtile-4.c
  8e7fab1b3f5c89155f09aabb59da8382  gcc/testsuite/gcc.target/i386/amxtile-asmatt-1.c
  2629a435840ab211444b4a2af4563d8d  gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c
- 9e51e949fe004c4c5e1da4e313e83500  gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c
- e78283d712c4a4cab944825c2f7e5931  gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c
- 5aea7d3b63ac03844fed4c2affb200e1  gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c
- f8839ab3564a5c79af6cd2a3289c72a4  gcc/testsuite/gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c
- 640925386b2a75c60d7e15fa27b00ec4  gcc/testsuite/gcc.target/i386/amxtranspose-conjtfp16-2.c
- 655e6e600c274705609f46f81965e797  gcc/testsuite/gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c
- 1cfd425962d5334545a857306c7bf073  gcc/testsuite/gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c
- a08a0dcbe1ea3e0c2eb2e12fe3081eaf  gcc/testsuite/gcc.target/i386/amxtranspose-tdpbf16ps-2.c
- 264e47ab404cf5ae4d84be0346babab3  gcc/testsuite/gcc.target/i386/amxtranspose-tdpfp16ps-2.c
- 238b3dc827e35313515e58d4c8e80fc8  gcc/testsuite/gcc.target/i386/amxtranspose-tmmultf32ps-2.c
- bb339217e3b470b200c8e6ab45d7639f  gcc/testsuite/gcc.target/i386/amxtranspose-transposed-2.c
  000edc038d71c16eb844c26f6d7f2f53  gcc/testsuite/gcc.target/i386/and-1.c
  c5cfc6b01e748536e4ac5d65b3528952  gcc/testsuite/gcc.target/i386/andor-1.c
  c052d916aa90fa5343dac48ba370180f  gcc/testsuite/gcc.target/i386/andor-2.c
--- 81068,81073 ----
*************** c1320fd604803bc04257c984f1e3ba77  gcc/te
*** 85648,85654 ****
  3dd864a351a6115db6a5b2ea1ee16ece  gcc/testsuite/gcc.target/i386/funcspec-3.c
  5af0527c599bf95f77628d48b1beb0ec  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! 0a45f526e9e4e43bc8498e7e7c03dc21  gcc/testsuite/gcc.target/i386/funcspec-56.inc
  b954a6c88c30f112db6bd140acb0162c  gcc/testsuite/gcc.target/i386/funcspec-6.c
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  0ba9f1b7368ea580cabab541b451aea8  gcc/testsuite/gcc.target/i386/funcspec-8.c
--- 85710,85716 ----
  3dd864a351a6115db6a5b2ea1ee16ece  gcc/testsuite/gcc.target/i386/funcspec-3.c
  5af0527c599bf95f77628d48b1beb0ec  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! 6a515246292a4483c34e35038506249f  gcc/testsuite/gcc.target/i386/funcspec-56.inc
  b954a6c88c30f112db6bd140acb0162c  gcc/testsuite/gcc.target/i386/funcspec-6.c
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  0ba9f1b7368ea580cabab541b451aea8  gcc/testsuite/gcc.target/i386/funcspec-8.c
*************** de69502695dcbc8a5a967bb1c49ea11c  gcc/te
*** 87202,87207 ****
--- 87264,87270 ----
  600ff3c5da35f468b87a23e0d1678a3e  gcc/testsuite/gcc.target/i386/pr122104.c
  e5e8ba4f460f32c4d01f7295cd3635e6  gcc/testsuite/gcc.target/i386/pr122150.c
  4ee092e04b4910e875927065ac6cfd1f  gcc/testsuite/gcc.target/i386/pr122180.c
+ bc47c79dae6f9fafe54d99c3d5a9a226  gcc/testsuite/gcc.target/i386/pr122266.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
*************** bc6b7244a28a5688b5a5c75593461393  gcc/te
*** 89345,89353 ****
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! 58aa5102101cd1f9e6b419b54e47a748  gcc/testsuite/gcc.target/i386/sse-12.c
! 9be4cba80e78a06a46b561cc60fdef96  gcc/testsuite/gcc.target/i386/sse-13.c
! e0e664936ff3d81df772a35ce3120342  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
--- 89408,89416 ----
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! ff55b5f18a780244be00457bb8fcf8f3  gcc/testsuite/gcc.target/i386/sse-12.c
! cf9c97c0abfff2f0eb77349397a69677  gcc/testsuite/gcc.target/i386/sse-13.c
! f107027ef01062628bd31b407f3ff016  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
*************** f660e67b22cb44e6a6b38a247b1d78c3  gcc/te
*** 89356,89364 ****
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 6ab292683f48deebb0d49e568a85218b  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! 8c367d4df8a50d3b1e4e8f456bef697c  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  8bb465a190ed3492b3cf000afacb0a9a  gcc/testsuite/gcc.target/i386/sse-26.c
--- 89419,89427 ----
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 945a604e9ae7cbdf42bb4c546aee01c8  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! efbd4e97f282fcd78e986c0b71e242a1  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  8bb465a190ed3492b3cf000afacb0a9a  gcc/testsuite/gcc.target/i386/sse-26.c
*************** cd709a10461254ddf2db66c3d68f0ea1  gcc/te
*** 95006,95012 ****
  2fd1f87bd278901534285a57812f87d2  gcc/testsuite/gcc.target/riscv/_Float16-zhinxmin-4.c
  3ff3e986a97f4269e8ce353c4d141360  gcc/testsuite/gcc.target/riscv/_Float16.c
  5728414c152ee60b1244ec815d886d4f  gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c
! 8f640bd470ff16ce8acabc79ba9d4e96  gcc/testsuite/gcc.target/riscv/add-synthesis-1.c
  615a0e0c970edc01fb1779359e6d4069  gcc/testsuite/gcc.target/riscv/add-synthesis-2.c
  d93c3e1c3636a89154ff39eafab30b70  gcc/testsuite/gcc.target/riscv/adddibeq.c
  8d0f5170831bd2bdc95068f618255b3b  gcc/testsuite/gcc.target/riscv/adddibfeq.c
--- 95069,95075 ----
  2fd1f87bd278901534285a57812f87d2  gcc/testsuite/gcc.target/riscv/_Float16-zhinxmin-4.c
  3ff3e986a97f4269e8ce353c4d141360  gcc/testsuite/gcc.target/riscv/_Float16.c
  5728414c152ee60b1244ec815d886d4f  gcc/testsuite/gcc.target/riscv/__bf16-nanboxing.c
! e576467327b6885418c9d8748492593a  gcc/testsuite/gcc.target/riscv/add-synthesis-1.c
  615a0e0c970edc01fb1779359e6d4069  gcc/testsuite/gcc.target/riscv/add-synthesis-2.c
  d93c3e1c3636a89154ff39eafab30b70  gcc/testsuite/gcc.target/riscv/adddibeq.c
  8d0f5170831bd2bdc95068f618255b3b  gcc/testsuite/gcc.target/riscv/adddibfeq.c
*************** b2e2688bf4539077ba541a5c6d72fc5d  gcc/te
*** 96075,96082 ****
  ceb3a68ee73bf0860222addabfa4e62b  gcc/testsuite/gcc.target/riscv/pr120553-7.c
  e70f44b248ae6fb211c33c6023159241  gcc/testsuite/gcc.target/riscv/pr120553-8.c
  d8e76b4cd45daa82499151eedc966298  gcc/testsuite/gcc.target/riscv/pr120659.c
  0cdcf97373ed486ded9f3c10ef04348d  gcc/testsuite/gcc.target/riscv/pr120714.c
! 2694e9bd7c85c6f3d66e15d1bd81cd07  gcc/testsuite/gcc.target/riscv/pr120811.c
  6437d8ec53cc1530c20baacd9ca47eba  gcc/testsuite/gcc.target/riscv/pr121113.c
  25c459137bd9938c72fff727f3c7b5d4  gcc/testsuite/gcc.target/riscv/pr121160.c
  0b64699a31b25d6d22c6908dabe89a74  gcc/testsuite/gcc.target/riscv/pr121531.c
--- 96138,96146 ----
  ceb3a68ee73bf0860222addabfa4e62b  gcc/testsuite/gcc.target/riscv/pr120553-7.c
  e70f44b248ae6fb211c33c6023159241  gcc/testsuite/gcc.target/riscv/pr120553-8.c
  d8e76b4cd45daa82499151eedc966298  gcc/testsuite/gcc.target/riscv/pr120659.c
+ 5209003e1af2c30db39a214e7aa84709  gcc/testsuite/gcc.target/riscv/pr120674.c
  0cdcf97373ed486ded9f3c10ef04348d  gcc/testsuite/gcc.target/riscv/pr120714.c
! f87f98ceea03639b9d09f120d310a5b9  gcc/testsuite/gcc.target/riscv/pr120811.c
  6437d8ec53cc1530c20baacd9ca47eba  gcc/testsuite/gcc.target/riscv/pr121113.c
  25c459137bd9938c72fff727f3c7b5d4  gcc/testsuite/gcc.target/riscv/pr121160.c
  0b64699a31b25d6d22c6908dabe89a74  gcc/testsuite/gcc.target/riscv/pr121531.c
*************** ed1461a4364185f7eb27514956acc7cd  gcc/te
*** 96148,96153 ****
--- 96212,96225 ----
  e423ed25d25493f4ab719979d182b85e  gcc/testsuite/gcc.target/riscv/predef-align-4.c
  8db6ad5a32847bf6ae72671288e0448f  gcc/testsuite/gcc.target/riscv/predef-align-5.c
  84b88ad750d94c31f78f057be6f174da  gcc/testsuite/gcc.target/riscv/predef-align-6.c
+ 178b5cfbca1877cc19b304e1ae376f3a  gcc/testsuite/gcc.target/riscv/predef-profiles-1.c
+ 03c8b5045a223f7f984e7e562d015295  gcc/testsuite/gcc.target/riscv/predef-profiles-2.c
+ 0f6d11da0bec4e4062a2ee64a52a12ec  gcc/testsuite/gcc.target/riscv/predef-profiles-3.c
+ a28b858bb3abc123858b8076445a1b65  gcc/testsuite/gcc.target/riscv/predef-profiles-4.c
+ 9a628704ac6bdcc191b61de9284e4903  gcc/testsuite/gcc.target/riscv/predef-profiles-5.c
+ 8facf640162939a7959a6aaf73c82467  gcc/testsuite/gcc.target/riscv/predef-profiles-6.c
+ 16ae748a9d0893b9fa4b1d4dcfabf8c1  gcc/testsuite/gcc.target/riscv/predef-profiles-7.c
+ 183246e4999aaad7cb6e7e02043e29b5  gcc/testsuite/gcc.target/riscv/predef-profiles-8.c
  d390be4025bd4e328a4cf9c19aa7a1c6  gcc/testsuite/gcc.target/riscv/predef-sf-1.c
  91374797fe909dd3ab5f6f1c82e16289  gcc/testsuite/gcc.target/riscv/predef-sf-2.c
  bc5ee0266d8f9b24e863e5969c669ba7  gcc/testsuite/gcc.target/riscv/predef-sf-3.c
*************** da5abfc57f298d619d789eb91a345428  gcc/te
*** 96904,96909 ****
--- 96976,96982 ----
  40e483a69d4074f0388dec94437fe2fc  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr117383.c
  6f4b877c38034678241261cabd331914  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr117682.c
  b53bda284b5d4b9d98a1a590683b3dc3  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr117722.c
+ 05b3afc4e979dfae5224c49b9d0109d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c
  f75f4f9162ac86fe6dbe859cff62c0d1  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019.c
  a301cf55dd715b64828f17d685cb89f7  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118140.c
  f3f24420449914a2a57bd3e42094bc9b  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118154-1.c
*************** a8f53ad5180333afb72d569d125c3922  gcc/te
*** 100278,100284 ****
  fe865d9009af7551d830f6d4e3008ebe  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
  10c2fe61483d221e6648e72c6ff9f6a0  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vsext.c
  23788d7500abf7340ab20ef598d9da5e  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vzext.c
! 7b1d35c3d1819ba4e149578cd177669d  gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
  89d90b13c13c2658dcc8319771cd755f  gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h
  e52f03a6378cd78f7ea04149c2b8215a  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c
  1de70dbaccb7e9fe73b8e90ec7430b4d  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c
--- 100351,100357 ----
  fe865d9009af7551d830f6d4e3008ebe  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vlwu-vsw.c
  10c2fe61483d221e6648e72c6ff9f6a0  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vsext.c
  23788d7500abf7340ab20ef598d9da5e  gcc/testsuite/gcc.target/riscv/rvv/xtheadvector/vzext.c
! 5b5ee1cd2c296486f27325891c784d4b  gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
  89d90b13c13c2658dcc8319771cd755f  gcc/testsuite/gcc.target/riscv/sat/sat_arith_data.h
  e52f03a6378cd78f7ea04149c2b8215a  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i16.c
  1de70dbaccb7e9fe73b8e90ec7430b4d  gcc/testsuite/gcc.target/riscv/sat/sat_s_add-1-i32.c
*************** f08f0341d3d7d898dcbbd582622f1741  gcc/te
*** 100686,100691 ****
--- 100759,100777 ----
  0c457c9034f5a6377b147780fa547d3e  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u32.c
  64acf71832c8c7f696b0263808956dbd  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv32.c
  b4e4c4acee9b76f38d2e98140190a408  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv64.c
+ 213f269ae489c3a81750181f7536eb4b  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u128.c
+ c765f2904bce2bf57c940fc6fe4d2bc6  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u32.c
+ c4953e0fd4239b4967606f368ebc2324  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv32.c
+ 30690b884159544d90ed5ba472969f77  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv64.c
+ f1901705d0ae0ff942c65b26e4d3edee  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u128.c
+ dfb2f79758f1aaa712dcb04384982a93  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv32.c
+ 44ff21134bedfcf414aecc7d52ff0e51  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv64.c
+ 6ce34c9dc172cc9a1615b1264e4a4738  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u64-from-u128.c
+ 9521d0846ad0981135b4f822b1205d8c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u128.c
+ 5eff7b9e2063dd2966364b4f97c1479f  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u16.c
+ 0a8e6031d05b173d6829d2c50e44334d  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u32.c
+ ca0a367aaf1d0704d8d137d8e655fcd2  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv32.c
+ ed7099efb5382a6d68e5be28d3a401da  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv64.c
  bf3cc27ddc2ea3d61c508c988cc37520  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-1-u16-from-u128.c
  e532a922f2b1c193ca39bdfa1e70bdba  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-1-u16-from-u32.c
  b343a3fe775fb03e665506a088734673  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-1-u16-from-u64.c
*************** bb5ec1f458c12fce3953f4abdff7370e  gcc/te
*** 100733,100738 ****
--- 100819,100834 ----
  d3e459ae2615348c3e9dcfedadaa2cbe  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u16.c
  190681ca561aea583411819535100887  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u32.c
  e29132a3cc256c80f2904f908242a106  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u64.c
+ 1cad1d143ce61c06688e1ca65d9fbe7b  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u128.c
+ f656c6b7c5109fac89bfa9141be88bb1  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u32.c
+ 257fb4243c1e436cffd84567da07100f  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u64.c
+ 0af141d140a84c72b2ee5dee5568ca3e  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u128.c
+ daa1453aff927b041e71368adf45447a  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u64.c
+ 327e04825ecc04d45adf981439c9e0ee  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u64-from-u128.c
+ 1cad1d143ce61c06688e1ca65d9fbe7b  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u128.c
+ cce4c4153cab02cae52f9a2c2bf17476  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u16.c
+ c62be36f24cdc6b4eb80d6e4bdb2ab5d  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u32.c
+ dd6d6e0b818ddd6bc69a3b409901c4bd  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u64.c
  fdd9d0d3a36236e0472d000f8833d982  gcc/testsuite/gcc.target/riscv/sat/sat_u_sub-1-u16.c
  e3e2bd9a544f75219a218a5520d41e4e  gcc/testsuite/gcc.target/riscv/sat/sat_u_sub-1-u32.c
  7239f33d03967abfe59724a5530c6c52  gcc/testsuite/gcc.target/riscv/sat/sat_u_sub-1-u64.c
*************** b415bb951ba55d3b5e901876751b51e8  gcc/te
*** 101053,101059 ****
  271a1d3492e3b8728d53f6f6a634ae80  gcc/testsuite/gcc.target/riscv/stack_save_restore_1.c
  04ca12883d56722f87d5564f50f4fa51  gcc/testsuite/gcc.target/riscv/stack_save_restore_2.c
  bae0f68f57195d7a40dc2141a14558cd  gcc/testsuite/gcc.target/riscv/struct_vect_24.c
! a5c354e0eab833dedd22fbd341e322bb  gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-1.c
  7304074a0af5a5e8dbb86e7f5c0467c8  gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-2.c
  09a9691c0cf30e284d645d7330825235  gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-3.c
  e95dcee6d2cd4bf984685e71d71ae504  gcc/testsuite/gcc.target/riscv/switch-qi.c
--- 101149,101155 ----
  271a1d3492e3b8728d53f6f6a634ae80  gcc/testsuite/gcc.target/riscv/stack_save_restore_1.c
  04ca12883d56722f87d5564f50f4fa51  gcc/testsuite/gcc.target/riscv/stack_save_restore_2.c
  bae0f68f57195d7a40dc2141a14558cd  gcc/testsuite/gcc.target/riscv/struct_vect_24.c
! f6c69573e846720818ee65a925b0af14  gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-1.c
  7304074a0af5a5e8dbb86e7f5c0467c8  gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-2.c
  09a9691c0cf30e284d645d7330825235  gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-3.c
  e95dcee6d2cd4bf984685e71d71ae504  gcc/testsuite/gcc.target/riscv/switch-qi.c
*************** d638b45296c13f0789f6ce82d511bb31  gcc/te
*** 109620,109631 ****
  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
--- 109716,109727 ----
  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
! bc5de422f01d00b0a50e35932b3cbcbf  gcc/testsuite/gfortran.dg/conditional_1.f90
! 28780a004b527e8991287378f8b3573e  gcc/testsuite/gfortran.dg/conditional_2.f90
  687dffbcf917c61a8281febd55ecc702  gcc/testsuite/gfortran.dg/conditional_3.f90
! be6c047dfeeb22064687f248e12d9cab  gcc/testsuite/gfortran.dg/conditional_4.f90
  1836668643d261891e9d6217e1294a8c  gcc/testsuite/gfortran.dg/conditional_5.f90
! b7bb68ee1c419c0a1e40030a56c8161f  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
*************** b89a8aa7030c869fe0210fab0f943107  gcc/te
*** 113458,113463 ****
--- 113554,113560 ----
  c8268112a25855a7d481b68d88cd5849  gcc/testsuite/gfortran.dg/pdt_56.f03
  4c9df43a3147b0d88edf8e884cd7539f  gcc/testsuite/gfortran.dg/pdt_57.f03
  dfae0584c34f174386746029a2bbf0b1  gcc/testsuite/gfortran.dg/pdt_58.f03
+ a5070ccaa9b85c10608985b219421c39  gcc/testsuite/gfortran.dg/pdt_59.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
*************** dd62aea9ecf3ee966fdbe990c06704ab  gcc/te
*** 117087,117092 ****
--- 117184,117190 ----
  5d08cec83a9fd8cfa6b718baa93a2715  gcc/testsuite/gm2/iso/fail/badarray2.mod
  58fa04b34b089f4e639362653e1de965  gcc/testsuite/gm2/iso/fail/badarray3.mod
  08d72567eef98d824fdfea58dfd60bd0  gcc/testsuite/gm2/iso/fail/badassignment.mod
+ 740b56d0a4227ac8cf44108b7bb7509a  gcc/testsuite/gm2/iso/fail/badconst.mod
  026dcc0bc12873120c33bc438c0da31f  gcc/testsuite/gm2/iso/fail/badexpression.mod
  9dc1926fc7f59c0f1a31e62270e201f0  gcc/testsuite/gm2/iso/fail/badexpression2.mod
  75513ea87b008a24269e564ecf59b97c  gcc/testsuite/gm2/iso/fail/badexpression3.mod
*************** fecf4459acd65abc1b71561dc22d7689  gcc/te
*** 117111,117116 ****
--- 117209,117216 ----
  4860278d84989ec562b892a13b6447ec  gcc/testsuite/gm2/iso/fail/badset2.mod
  dfcc6ecdf732afd377ec852b928da44c  gcc/testsuite/gm2/iso/fail/badset3.mod
  2184fd6fe14d3d471195318b7a08e84c  gcc/testsuite/gm2/iso/fail/badset4.mod
+ 8bfb7a192d991d31e762debe1330c2b4  gcc/testsuite/gm2/iso/fail/badtype.mod
+ 7e577b964a2f84e4559b4250993b7a49  gcc/testsuite/gm2/iso/fail/badvar.mod
  f593f212781741b8aa437f58c318720a  gcc/testsuite/gm2/iso/fail/bug10.mod
  cbba0194d3c34b32af7b1bc671474c98  gcc/testsuite/gm2/iso/fail/bug8.mod
  84b83814bc8182b14296d50e0b2f705c  gcc/testsuite/gm2/iso/fail/bug9.mod
*************** a7458b24c06bfe4873fec60e537ee095  gcc/te
*** 120729,120734 ****
--- 120829,120835 ----
  e94b6ea5e07d9380ae10002aa76ade27  gcc/testsuite/gnat.dg/specs/static_initializer5_pkg.ads
  a65c4a8c984d594228e4f7d608e2599a  gcc/testsuite/gnat.dg/specs/storage.ads
  d18907c1dc4d160224e5e6db86bd673c  gcc/testsuite/gnat.dg/specs/storage_offset1.ads
+ 4f11fd322a2d30404700de48b0987ed7  gcc/testsuite/gnat.dg/specs/style1.ads
  de51b75218396f3ea74fbbdb7bf0a1c7  gcc/testsuite/gnat.dg/specs/sync_iface_test.ads
  695465ef8fa0e9f92e00b972db65e813  gcc/testsuite/gnat.dg/specs/tag1.ads
  4f45d4c948fae2897544b170d1db5ad2  gcc/testsuite/gnat.dg/specs/tag2.ads
*************** eb1595e729e2eaac81c7ffe330d8f24e  gcc/te
*** 123511,123517 ****
  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
--- 123612,123618 ----
  f7940f4f8c24d9f0bf4d062473f55777  gcc/testsuite/lib/scanwpaipa.exp
  23e89ca46b182663a4139064b179545f  gcc/testsuite/lib/target-libpath.exp
  d9a6726c38c578e1cd46631ee7f92d0a  gcc/testsuite/lib/target-supports-dg.exp
! 80f506e1ad35dcd293433ff6f0f5b488  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
*************** b528a0932f50504df146d112f7d01a5c  gcc/tr
*** 126088,126094 ****
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
  631f383225878af718642d2a458aefae  gcc/tree-complex.cc
! 1a9926a2b4d9d10890518028b449835f  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
  f01aeac56dffd44808096094e2bf76c1  gcc/tree-dfa.cc
--- 126189,126195 ----
  1718a36253ebbb17fe4570fc768216c9  gcc/tree-chrec.cc
  0e4a484c6387f9be0a506783637432f9  gcc/tree-chrec.h
  631f383225878af718642d2a458aefae  gcc/tree-complex.cc
! 02b0712beb7353850dd4a372a9dd46ff  gcc/tree-core.h
  77244f55dae576a255f5b69b70774e54  gcc/tree-data-ref.cc
  e43a555cdaab9a97ba3910364910f865  gcc/tree-data-ref.h
  f01aeac56dffd44808096094e2bf76c1  gcc/tree-dfa.cc
*************** e046a9c4874579f81515c4b3d9106b63  gcc/tr
*** 126105,126111 ****
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
  e9f860de6645d35018a087515bcfe04f  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
! 430fc05a2aa5a9fe29c31d8a315fb825  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
  90ca59c0844cd326f35f9cae17ec174b  gcc/tree-into-ssa.cc
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
--- 126206,126212 ----
  7e063b1edd28723f3f432596c39cfbee  gcc/tree-hasher.h
  e9f860de6645d35018a087515bcfe04f  gcc/tree-if-conv.cc
  002c9568898504ca2025dcacf5151fd6  gcc/tree-if-conv.h
! 9650c4ca2c6433fcd2096065741fda15  gcc/tree-inline.cc
  326f91431bfd3c15d8ddd74699d666e6  gcc/tree-inline.h
  90ca59c0844cd326f35f9cae17ec174b  gcc/tree-into-ssa.cc
  ef1cb0fba517532ecda9f4e0dd5218f7  gcc/tree-into-ssa.h
*************** fba074361c117a968daf282ef88a2b6e  gcc/tr
*** 126117,126127 ****
  87cc8ab545fc5cfef7174e99c72a407a  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
  b2cc2bfd702552bff382308428fec556  gcc/tree-nrv.cc
! 1dd1d922d71834adfa7e4b7ab10e24a3  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
  de65dfb7d298f3e879ec71e5e2e95913  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
! 6a56bd09a2fc674984a48e8587c86d17  gcc/tree-parloops.cc
  beaa17685ead93eee17f6373d004c4c4  gcc/tree-parloops.h
  64910ff3eb70e4b4e325fdb5466781a1  gcc/tree-pass.h
  3c7e6c651df0a795a0b1b01ca9c75a4d  gcc/tree-phinodes.cc
--- 126218,126228 ----
  87cc8ab545fc5cfef7174e99c72a407a  gcc/tree-nested.cc
  b9bad013f5186a6cf78fe8adbe457945  gcc/tree-nested.h
  b2cc2bfd702552bff382308428fec556  gcc/tree-nrv.cc
! ee80014e23feed8ed49cf5c4b1fe225f  gcc/tree-object-size.cc
  2726009c7d301c88845d73276d4dc3b9  gcc/tree-object-size.h
  de65dfb7d298f3e879ec71e5e2e95913  gcc/tree-outof-ssa.cc
  b9d636bd9641f3038bbe37a70684e18e  gcc/tree-outof-ssa.h
! 3bf2c3ed2d5a4193bef38f824a2458e0  gcc/tree-parloops.cc
  beaa17685ead93eee17f6373d004c4c4  gcc/tree-parloops.h
  64910ff3eb70e4b4e325fdb5466781a1  gcc/tree-pass.h
  3c7e6c651df0a795a0b1b01ca9c75a4d  gcc/tree-phinodes.cc
*************** bc6f720750badcd2ff68dddf544e75eb  gcc/tr
*** 126145,126153 ****
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
  44217fe298d550aecd4800f65391c931  gcc/tree-ssa-coalesce.h
  be605b5b6cac7c418bd348b54f9d47cf  gcc/tree-ssa-copy.cc
! d3a32a43220a59a85c78a854914cd6f5  gcc/tree-ssa-dce.cc
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
! adfc498b0c97a8123c02d418757df496  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
  6ddd79e7a349847a539144d422bf5a49  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
--- 126246,126254 ----
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
  44217fe298d550aecd4800f65391c931  gcc/tree-ssa-coalesce.h
  be605b5b6cac7c418bd348b54f9d47cf  gcc/tree-ssa-copy.cc
! e46744d5469710042e0bd90f388de3ee  gcc/tree-ssa-dce.cc
  4b3c2e3456bae55a01edd98396b099a1  gcc/tree-ssa-dce.h
! b9ccca93dfe789389d268eca6dbec62f  gcc/tree-ssa-dom.cc
  0046e212ff1b9f3f4d27d055aa299c47  gcc/tree-ssa-dom.h
  6ddd79e7a349847a539144d422bf5a49  gcc/tree-ssa-dse.cc
  a6d83be241a72da1740cf6c5b2ce7d52  gcc/tree-ssa-dse.h
*************** fbcc93539b376489c1256eb8cf2d4800  gcc/tr
*** 126166,126183 ****
  189317c0b965ddd0ee491f8e45af4b0d  gcc/tree-ssa-loop-niter.h
  523a4b7c5b7113009b3b1f0f514d0cd3  gcc/tree-ssa-loop-prefetch.cc
  00d71257ae0536e64bdea226f1e5ef5f  gcc/tree-ssa-loop-split.cc
! 57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
  422e15102e032e44507602b4d265e573  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  8ccf736dffb311078aa79c9036502189  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
! 850a54eeb4ad1280cd5285c480f8a6c4  gcc/tree-ssa-phiopt.cc
  482f2356d81c3633ca476cd6628908b8  gcc/tree-ssa-phiprop.cc
  45bbadfd0296a849ac6eebf1a85d74ec  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
  117d2a484c92d24ea615d38abecb9f62  gcc/tree-ssa-sccvn.cc
--- 126267,126284 ----
  189317c0b965ddd0ee491f8e45af4b0d  gcc/tree-ssa-loop-niter.h
  523a4b7c5b7113009b3b1f0f514d0cd3  gcc/tree-ssa-loop-prefetch.cc
  00d71257ae0536e64bdea226f1e5ef5f  gcc/tree-ssa-loop-split.cc
! 414aadddf1510c47773d045bc3e2800f  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
  422e15102e032e44507602b4d265e573  gcc/tree-ssa-math-opts.cc
  c0b0549adb2c1140cf285901abb5a78c  gcc/tree-ssa-math-opts.h
  8ccf736dffb311078aa79c9036502189  gcc/tree-ssa-operands.cc
  da72a60de8a6f51a635ead26120d3cc7  gcc/tree-ssa-operands.h
! c2f4a3a5ea21e27f327b8f3b86e8b03c  gcc/tree-ssa-phiopt.cc
  482f2356d81c3633ca476cd6628908b8  gcc/tree-ssa-phiprop.cc
  45bbadfd0296a849ac6eebf1a85d74ec  gcc/tree-ssa-pre.cc
! 090c54ea646b8886730039b6cc16adb6  gcc/tree-ssa-propagate.cc
! ec25a5b6fd6b05135faa83b07eca7e91  gcc/tree-ssa-propagate.h
  128e45b0a401ad495d13d7de1062bd6e  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
  117d2a484c92d24ea615d38abecb9f62  gcc/tree-ssa-sccvn.cc
*************** c98debbdc978c10e8934f3b4fb7e2504  gcc/tr
*** 126215,126232 ****
  6e5dcb1a1ea95d85fd88114bca11a78a  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  f840a486e62fde7baf6f487e0c0912bb  gcc/tree-vect-loop-manip.cc
! 20a44a158a05b9daa5e000e9ae1e2582  gcc/tree-vect-loop.cc
! afdc8d0dbbd7dad927cc52c2887fa0d6  gcc/tree-vect-patterns.cc
  f0e64752211e2caf975148f28e7b4caf  gcc/tree-vect-slp-patterns.cc
! bdbb899ad6a9db173421fa2bd75d520c  gcc/tree-vect-slp.cc
! 1a222e02617b9d5cd2939547562693d3  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  cb678f63a201f9ffc105c6c996f2b8f2  gcc/tree-vectorizer.cc
! 4a828e4ebe4daa8ffadaeeb2311baaea  gcc/tree-vectorizer.h
  1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! 7e9874b523e782de35bee2676217a4a4  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
  0b1e1c6e91a730a8812656608dff535a  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
--- 126316,126333 ----
  6e5dcb1a1ea95d85fd88114bca11a78a  gcc/tree-vect-data-refs.cc
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  f840a486e62fde7baf6f487e0c0912bb  gcc/tree-vect-loop-manip.cc
! 8a3b4af0d7380159874698c7223c0cf2  gcc/tree-vect-loop.cc
! 1a7a2b893d41a2721d6ea36540595bfb  gcc/tree-vect-patterns.cc
  f0e64752211e2caf975148f28e7b4caf  gcc/tree-vect-slp-patterns.cc
! fd431cdf61cd94547eab782d0eb24e06  gcc/tree-vect-slp.cc
! eaef715b393a023fab053a3f3b478097  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  cb678f63a201f9ffc105c6c996f2b8f2  gcc/tree-vectorizer.cc
! 5642a75ccd2367aaff5b820e4cd39352  gcc/tree-vectorizer.h
  1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! 151ba8bf004e87cbcab9cdfd5352a3c2  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
  0b1e1c6e91a730a8812656608dff535a  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
*************** df85736a75a28f2d961a417c6edbbeeb  gcc/va
*** 126253,126260 ****
  5ee1b56a5e76c505c40cf28eb30f62e6  gcc/value-range-pretty-print.h
  6b536deb5ade6571e0988bf82fede1e2  gcc/value-range-storage.cc
  0b17e8456f7912204776ffd65ac2da59  gcc/value-range-storage.h
! cb123338fbe79c0611014718adf5668a  gcc/value-range.cc
! 5dd9a11079f49fd166c7ade34824115a  gcc/value-range.h
  4fcfb97f5fdee9686317186a141f2b4b  gcc/value-relation.cc
  cd4e6196ea1c7eb134b4d7cbadb9dcb3  gcc/value-relation.h
  db99ee82ab71b58820d60f9863e62aac  gcc/var-tracking.cc
--- 126354,126361 ----
  5ee1b56a5e76c505c40cf28eb30f62e6  gcc/value-range-pretty-print.h
  6b536deb5ade6571e0988bf82fede1e2  gcc/value-range-storage.cc
  0b17e8456f7912204776ffd65ac2da59  gcc/value-range-storage.h
! cf9dcaf20713247ef94a676aab661f42  gcc/value-range.cc
! 3b8d60c583902ea9ca82298b87a741c3  gcc/value-range.h
  4fcfb97f5fdee9686317186a141f2b4b  gcc/value-relation.cc
  cd4e6196ea1c7eb134b4d7cbadb9dcb3  gcc/value-relation.h
  db99ee82ab71b58820d60f9863e62aac  gcc/var-tracking.cc
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 126298,126304 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 2c61de22b3aeed8730d32820200c31d1  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
--- 126399,126405 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 40609c03b4b9e1e5f1adb00dfc288c0f  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  44b123c52a2755c9e6bf43ec0c33ae49  include/ansidecl.h
*************** deab60fc60574f76d56ea615e8341b4c  includ
*** 126308,126314 ****
  3cc2d7162f5b6bb41dd36fbff16d0390  include/cuda/cuda.h
  88bb340d09e3b3e9b4c0aee82639ee99  include/demangle.h
  b4d292e79470c7908752af419100eb05  include/doubly-linked-list.h
! b79c32d9d476b2b31fdfeb0260450683  include/dwarf2.def
  9cabd28208c99053b4f488bb2c78a1d1  include/dwarf2.h
  9a8d02c6800f19065263f88b1fdeb9a8  include/dyn-string.h
  12539e5b374666e50faaeb47220d8076  include/environ.h
--- 126409,126415 ----
  3cc2d7162f5b6bb41dd36fbff16d0390  include/cuda/cuda.h
  88bb340d09e3b3e9b4c0aee82639ee99  include/demangle.h
  b4d292e79470c7908752af419100eb05  include/doubly-linked-list.h
! d1a42fde9f44f86668aadf9c1d9baec7  include/dwarf2.def
  9cabd28208c99053b4f488bb2c78a1d1  include/dwarf2.h
  9a8d02c6800f19065263f88b1fdeb9a8  include/dyn-string.h
  12539e5b374666e50faaeb47220d8076  include/environ.h
*************** cffdeae41b78da05839b193e90188f55  libcod
*** 126560,126566 ****
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! af0143771787ffaa8102897e562e5c38  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
--- 126661,126667 ----
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! e5cc47a5419c0b57ef81cecd47e61017  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
*************** ac88522f7fec46badcd2623d11a4b61e  libcpp
*** 126581,126587 ****
  4779aaa10e24fd2398a105e78bdd88a5  libcpp/include/mkdeps.h
  e7ac00cffa78c0e155998831a5cd5a1e  libcpp/include/rich-location.h
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
! 45bb530dc147453672601e59319ca355  libcpp/init.cc
  3e462ce9a600968eb061f2c013777a32  libcpp/internal.h
  ec163df1522f3c30aeaeffb9937faa9d  libcpp/lex.cc
  2e71ca8fb0f9a1be425b538ec8b24aae  libcpp/line-map.cc
--- 126682,126688 ----
  4779aaa10e24fd2398a105e78bdd88a5  libcpp/include/mkdeps.h
  e7ac00cffa78c0e155998831a5cd5a1e  libcpp/include/rich-location.h
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
! 6ca7a34229f481396dbd24fb80f45c49  libcpp/init.cc
  3e462ce9a600968eb061f2c013777a32  libcpp/internal.h
  ec163df1522f3c30aeaeffb9937faa9d  libcpp/lex.cc
  2e71ca8fb0f9a1be425b538ec8b24aae  libcpp/line-map.cc
*************** e5a4ad84e4fa547c96f01437e14de6aa  libgco
*** 128660,128667 ****
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
  8c9140838556aedbca129aeaedf0855b  libgcobol/acinclude.m4
  edff1d46cc8f5e3fa2007d8fede32717  libgcobol/aclocal.m4
! 065f65643c10edafaf9a57c3f94bc66a  libgcobol/charmaps.cc
! 4d56857639b1d120fc8bb3210201e887  libgcobol/charmaps.h
  6bd30189aa6b54ffda8d080233ee694f  libgcobol/common-defs.h
  6a3b66323eab3b40a9c109aafd9f27c6  libgcobol/config.h.in
  d23a12226b48001cabd28a835c3cb5fc  libgcobol/configure
--- 128761,128768 ----
  ff016a65ce3c24bdd22207044f2a126e  libgcobol/README
  8c9140838556aedbca129aeaedf0855b  libgcobol/acinclude.m4
  edff1d46cc8f5e3fa2007d8fede32717  libgcobol/aclocal.m4
! 25446229f13be1262682862f733be746  libgcobol/charmaps.cc
! 7e0ca0cb4d9e92a788a54fbb72da4276  libgcobol/charmaps.h
  6bd30189aa6b54ffda8d080233ee694f  libgcobol/common-defs.h
  6a3b66323eab3b40a9c109aafd9f27c6  libgcobol/config.h.in
  d23a12226b48001cabd28a835c3cb5fc  libgcobol/configure
*************** faf06b9fb823d12e0ec967db524ba97e  libgco
*** 128672,128678 ****
  c6bdc674909878cfb392d5804d578db8  libgcobol/encodings.h
  fbd99afdab52fcee0543b901042350ef  libgcobol/exceptl.h
  cb865d217e906e6640cddda70970c7a3  libgcobol/gcobolio.h
! eb15d261791fdb2e3b21a94d994b9ce5  libgcobol/gfileio.cc
  4c5dc966be490381f53924b2441c9300  libgcobol/gfileio.h
  42a0be811da2d9bccec1fc42d43424cb  libgcobol/gmath.cc
  9b52995346d1f02cab9c3e2b816722d6  libgcobol/gmath.h
--- 128773,128779 ----
  c6bdc674909878cfb392d5804d578db8  libgcobol/encodings.h
  fbd99afdab52fcee0543b901042350ef  libgcobol/exceptl.h
  cb865d217e906e6640cddda70970c7a3  libgcobol/gcobolio.h
! 6193811aa95461e5b549180318d938bf  libgcobol/gfileio.cc
  4c5dc966be490381f53924b2441c9300  libgcobol/gfileio.h
  42a0be811da2d9bccec1fc42d43424cb  libgcobol/gmath.cc
  9b52995346d1f02cab9c3e2b816722d6  libgcobol/gmath.h
*************** eb15d261791fdb2e3b21a94d994b9ce5  libgco
*** 128680,128691 ****
  0cf9ce2863c11a8fd875185c371fe6e6  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 4cd6a35ec56da3416d7a72b33f53f3ed  libgcobol/libgcobol.cc
  23d227fa7c7a5e0dd99c87141b060c90  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  569f88db0d90fcf77b2a1a314beb8bcb  libgcobol/stringbin.cc
  179156ad95afd403a9316969a95142f7  libgcobol/stringbin.h
! 72335c8e921eca097a43669fd365286d  libgcobol/valconv.cc
  bf52fdaed06effba57a10e8157bc6930  libgcobol/valconv.h
  6520ed01bbed88782faed4ce1922e024  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
--- 128781,128792 ----
  0cf9ce2863c11a8fd875185c371fe6e6  libgcobol/io.cc
  b054056cc4fe4de7a78d34e43f2f3bab  libgcobol/io.h
  6fa2e26d11c71898dae520939b992484  libgcobol/libgcobol-fp.h
! 0b487576b835968c415ee782daa33404  libgcobol/libgcobol.cc
  23d227fa7c7a5e0dd99c87141b060c90  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  569f88db0d90fcf77b2a1a314beb8bcb  libgcobol/stringbin.cc
  179156ad95afd403a9316969a95142f7  libgcobol/stringbin.h
! 22c49caac6a8d133de67b63e2cd769d4  libgcobol/valconv.cc
  bf52fdaed06effba57a10e8157bc6930  libgcobol/valconv.h
  6520ed01bbed88782faed4ce1922e024  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 135250,135256 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 9744e7ed39c03aa98efac3a61eac94dc  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  c834e979cda0723dbda4835927287e3b  libgomp/Makefile.in
--- 135351,135357 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 2d5b2f7b3c5a8518562ed51a92af6a55  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  883cfea6de23904b83d6bd58a729c866  libgomp/Makefile.am
  c834e979cda0723dbda4835927287e3b  libgomp/Makefile.in
*************** ca30439efac08d7424bfe64b90c7f766  libgom
*** 135393,135399 ****
  b5ba8a8b2b31f2f9bd9ac0760b81da9f  libgomp/libgomp.h
  cd6a22eaa3c99a58084ad32602f087b4  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! 641637e0c5530334ba0818fa4d6721dc  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
--- 135494,135500 ----
  b5ba8a8b2b31f2f9bd9ac0760b81da9f  libgomp/libgomp.h
  cd6a22eaa3c99a58084ad32602f087b4  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! 165f5d7716f89ec2a7a5dc8f67627b24  libgomp/libgomp.texi
  519d28879206bae759d85cd3bb7b493b  libgomp/libgomp_f.h.in
  fdadcc861565b686070908326f5e5914  libgomp/libgomp_g.h
  a5060d745455b036a62cc46de1fe0576  libgomp/lock.c
*************** f2efa95bfb9ba9e454c38688371551c9  libgom
*** 136317,136334 ****
  0315cdf9221c890fcd6f827cf70b030e  libgomp/testsuite/libgomp.c/declare-variant-3-sm89.c
  07f0d7a64507218c809e5e271bdb674b  libgomp/testsuite/libgomp.c/declare-variant-3.c
  990725ec4ad0102414e463c434143f4f  libgomp/testsuite/libgomp.c/declare-variant-3.h
! 9d4e38bf8232dbd3d2be1dac08f82dce  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c
! 60f1694019edecc52984a1baf24bc84a  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c
! c345d04dc352b555cd84bcebe00359d4  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c
! 7a2a68c31d5cce8c28d27587e0760409  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1103.c
! db5fedb1611696cb835292ca099add57  libgomp/testsuite/libgomp.c/declare-variant-4-gfx900.c
! 498883a95dd74060d939d1ca4bc3190f  libgomp/testsuite/libgomp.c/declare-variant-4-gfx906.c
! 462b7afc311815ebbf76742eba03d83f  libgomp/testsuite/libgomp.c/declare-variant-4-gfx908.c
! a6a60705b94c7e6b7919df5a6678c9c4  libgomp/testsuite/libgomp.c/declare-variant-4-gfx90a.c
! 16f43074bb4d4a130ccb0b731b6ed992  libgomp/testsuite/libgomp.c/declare-variant-4-gfx90c.c
! 20d5a489ce984dbea8dfce2c73ccb2f2  libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c
  1a4ae6cfa2b54902b0414a9c9adc6ec2  libgomp/testsuite/libgomp.c/declare-variant-4.c
! 0bdcde926145240c37ff393b8f5bd91e  libgomp/testsuite/libgomp.c/declare-variant-4.h
  de26bcca8c4e027a5ce130d6ff6fc370  libgomp/testsuite/libgomp.c/depend-1.c
  f064386a2df301c3135834944af37de9  libgomp/testsuite/libgomp.c/depend-10.c
  e46784f3cdfb38c461a2af6e0d9094a0  libgomp/testsuite/libgomp.c/depend-2.c
--- 136418,136454 ----
  0315cdf9221c890fcd6f827cf70b030e  libgomp/testsuite/libgomp.c/declare-variant-3-sm89.c
  07f0d7a64507218c809e5e271bdb674b  libgomp/testsuite/libgomp.c/declare-variant-3.c
  990725ec4ad0102414e463c434143f4f  libgomp/testsuite/libgomp.c/declare-variant-3.h
! 6514cd5e3a0a420fe0305c6e4e7e139d  libgomp/testsuite/libgomp.c/declare-variant-4-gfx10-3-generic.c
! 3e7f10285df48e5145c86b3105312288  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c
! 1fcf3bea3ca865db29685b78ae86d140  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1031.c
! ea25d22c94361de2f7c6663eded64859  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1032.c
! 6486978fa2dfa87e2298a28eb32c7236  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1033.c
! 289220bf4c53786c09b18d94a74411b7  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1034.c
! d29621d36df13c3c907a695988bbcdee  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1035.c
! a89c49367a93b858da713435ff74d9ba  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c
! d25b59c844a267a61c29213a3ff86b5a  libgomp/testsuite/libgomp.c/declare-variant-4-gfx11-generic.c
! 0d0783a71120c0dd795287264783bbaf  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c
! fe94298d711566c57de9a631fe061114  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1101.c
! 1821245bf6ae4f9ab6f63e9de23e8110  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1102.c
! 7012e8272491ab09130a073b5aaa5f93  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1103.c
! fe4a42adbe608dcfea411355f1b2a739  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1150.c
! da341ae0d846bfc532dd4e1196367f7a  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1151.c
! 75833185b8fdfdafed8e19d27b2892a0  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1152.c
! 2a3554431e1ac877f58b9ca03da3b49e  libgomp/testsuite/libgomp.c/declare-variant-4-gfx1153.c
! 5e672eb910dde2db2c758bd3b0ebd8e8  libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-4-generic.c
! f80392e878b00ccf5324633c4b38c1cb  libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-generic.c
! d5f9c7b8f93dd5569ce16352b403bb0d  libgomp/testsuite/libgomp.c/declare-variant-4-gfx900.c
! eb222dc0465e0afe8a598769c2fbfc7c  libgomp/testsuite/libgomp.c/declare-variant-4-gfx902.c
! 98d105279772a2e99041112459e2e597  libgomp/testsuite/libgomp.c/declare-variant-4-gfx904.c
! 6cd0f2dfd2fb7d7365f2624d073a80dc  libgomp/testsuite/libgomp.c/declare-variant-4-gfx906.c
! ff9e30635e6b17c5a81f0980300ae689  libgomp/testsuite/libgomp.c/declare-variant-4-gfx908.c
! c6140af0b4134fc2cd0af2cd67b6e93f  libgomp/testsuite/libgomp.c/declare-variant-4-gfx909.c
! 1ef481085c5219f5ed298fdf707f229b  libgomp/testsuite/libgomp.c/declare-variant-4-gfx90a.c
! a3798387afacc8f3b56b1c2357980b40  libgomp/testsuite/libgomp.c/declare-variant-4-gfx90c.c
! 03788ed6fd46368d573f8054aaa4cc74  libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c
! bb78bd1426b9a9dbb6d042011bc83fc5  libgomp/testsuite/libgomp.c/declare-variant-4-gfx950.c
  1a4ae6cfa2b54902b0414a9c9adc6ec2  libgomp/testsuite/libgomp.c/declare-variant-4.c
! e47e9fb21f42db5558fd30458968e456  libgomp/testsuite/libgomp.c/declare-variant-4.h
  de26bcca8c4e027a5ce130d6ff6fc370  libgomp/testsuite/libgomp.c/depend-1.c
  f064386a2df301c3135834944af37de9  libgomp/testsuite/libgomp.c/depend-10.c
  e46784f3cdfb38c461a2af6e0d9094a0  libgomp/testsuite/libgomp.c/depend-2.c
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 140314,140320 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! db0b596606c60eda4a1650b50ba4fc11  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 140434,140440 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 955289057db8c1182b9403d0efb5b326  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** ed199f6700a016816d625b286bf25ead  libstd
*** 140537,140544 ****
  8913cf14e458f9cfae745a0d939c97e4  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  e29a526ec89ed09bf39b0aa4fd4c5d79  libstdc++-v3/config/os/vxworks/ctype_inline.h
  788b66dfe66c25c24ff60bf253c9c7ff  libstdc++-v3/config/os/vxworks/os_defines.h
! 74a699bd57fa76a1c515b05ed50225b3  libstdc++-v3/configure
! 36830aa55c07dc2242dc946f2ce58b0d  libstdc++-v3/configure.ac
  bfcbc1fdbf99aa57e07470ca81fd7627  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  55ecb88d091a7c97abd35f475cf97c2b  libstdc++-v3/doc/Makefile.am
--- 140657,140664 ----
  8913cf14e458f9cfae745a0d939c97e4  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
  e29a526ec89ed09bf39b0aa4fd4c5d79  libstdc++-v3/config/os/vxworks/ctype_inline.h
  788b66dfe66c25c24ff60bf253c9c7ff  libstdc++-v3/config/os/vxworks/os_defines.h
! f38ad30a37abf805519c886e83a40323  libstdc++-v3/configure
! 9cf09f646585c31e16aff1677b791b46  libstdc++-v3/configure.ac
  bfcbc1fdbf99aa57e07470ca81fd7627  libstdc++-v3/configure.host
  450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
  55ecb88d091a7c97abd35f475cf97c2b  libstdc++-v3/doc/Makefile.am
*************** f3bc82135dfcb3341457a729d2972838  libstd
*** 140988,140994 ****
  c2f5862787920c2fc07b4f499e362a00  libstdc++-v3/include/bits/alloc_traits.h
  752923e212a8a01f4d659889177a76eb  libstdc++-v3/include/bits/allocated_ptr.h
  d18c16b3c9c3ab2e7d487de90ec27d17  libstdc++-v3/include/bits/allocator.h
! a818f05760058b4e3d7e6359bb8cc509  libstdc++-v3/include/bits/atomic_base.h
  7c88fbee1dffec663e740720882b5344  libstdc++-v3/include/bits/atomic_futex.h
  4cd9a8b6fc11b09815936aa0dc7bc6bc  libstdc++-v3/include/bits/atomic_timed_wait.h
  9e4d1e459fb0dee50ef813187de0118c  libstdc++-v3/include/bits/atomic_wait.h
--- 141108,141114 ----
  c2f5862787920c2fc07b4f499e362a00  libstdc++-v3/include/bits/alloc_traits.h
  752923e212a8a01f4d659889177a76eb  libstdc++-v3/include/bits/allocated_ptr.h
  d18c16b3c9c3ab2e7d487de90ec27d17  libstdc++-v3/include/bits/allocator.h
! 8aba44f8f6fb965556ab0fb15543d89a  libstdc++-v3/include/bits/atomic_base.h
  7c88fbee1dffec663e740720882b5344  libstdc++-v3/include/bits/atomic_futex.h
  4cd9a8b6fc11b09815936aa0dc7bc6bc  libstdc++-v3/include/bits/atomic_timed_wait.h
  9e4d1e459fb0dee50ef813187de0118c  libstdc++-v3/include/bits/atomic_wait.h
*************** a155d2afa910d24be0955f42c4585228  libstd
*** 141002,141008 ****
  e3c307e48b9e12b0736fde183ffa8bd7  libstdc++-v3/include/bits/c++config
  5384dfbb9eb9731df3aca40e40d55350  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
! 8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
  0021dee9f87c2d7b4963da843d73afb1  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
--- 141122,141128 ----
  e3c307e48b9e12b0736fde183ffa8bd7  libstdc++-v3/include/bits/c++config
  5384dfbb9eb9731df3aca40e40d55350  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
! 0cb9a3c5bdddb11656d4542f26a916dc  libstdc++-v3/include/bits/chrono.h
  0021dee9f87c2d7b4963da843d73afb1  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
*************** bda3ca60f2214f1bd6656e6612aff428  libstd
*** 141027,141033 ****
  76e7e84f1fdf371c5315513dc4ba2f07  libstdc++-v3/include/bits/funcwrap.h
  f656180781457f5f36a26b5902da4b6f  libstdc++-v3/include/bits/gslice.h
  a94b98a38c3eb27aa6644a5fb468c9de  libstdc++-v3/include/bits/gslice_array.h
! 41f1689ce10c75b1ad718adffeff4baa  libstdc++-v3/include/bits/hashtable.h
  bafd340e02d232fc7ced1eb5f68967ce  libstdc++-v3/include/bits/hashtable_policy.h
  95eb0b92d5c9a8ddf313e412fee97770  libstdc++-v3/include/bits/indirect.h
  473034b12d8308be48d4a3b85fe19d83  libstdc++-v3/include/bits/indirect_array.h
--- 141147,141153 ----
  76e7e84f1fdf371c5315513dc4ba2f07  libstdc++-v3/include/bits/funcwrap.h
  f656180781457f5f36a26b5902da4b6f  libstdc++-v3/include/bits/gslice.h
  a94b98a38c3eb27aa6644a5fb468c9de  libstdc++-v3/include/bits/gslice_array.h
! bd1878ee12df5790539afd0dae94ae20  libstdc++-v3/include/bits/hashtable.h
  bafd340e02d232fc7ced1eb5f68967ce  libstdc++-v3/include/bits/hashtable_policy.h
  95eb0b92d5c9a8ddf313e412fee97770  libstdc++-v3/include/bits/indirect.h
  473034b12d8308be48d4a3b85fe19d83  libstdc++-v3/include/bits/indirect_array.h
*************** cffd73f057e9c37be8d8f13e0e97c5c0  libstd
*** 141088,141101 ****
  29d35f9c7457aa87bf544a27b2663614  libstdc++-v3/include/bits/sat_arith.h
  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
  e7a0f2e6e40ce70d795ab8cb06878277  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
  59b16730440e89a81d7071a74053fed6  libstdc++-v3/include/bits/std_abs.h
  c35a5da0369f3af2e9e202c9c8510914  libstdc++-v3/include/bits/std_function.h
! 5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
  de56251aaccb7f2a48169f9f6b369cf6  libstdc++-v3/include/bits/stl_algo.h
  6a79779bd47cc3d33e08e0ddd282775e  libstdc++-v3/include/bits/stl_algobase.h
--- 141208,141221 ----
  29d35f9c7457aa87bf544a27b2663614  libstdc++-v3/include/bits/sat_arith.h
  4b60aa9d5174c0de92a784ea26cc1cc1  libstdc++-v3/include/bits/semaphore_base.h
  ec9967579f5a56f1f687a745536eafea  libstdc++-v3/include/bits/shared_ptr.h
! 1d175c4fafbb8ff4655e2de7f60b5ae7  libstdc++-v3/include/bits/shared_ptr_atomic.h
  e7a0f2e6e40ce70d795ab8cb06878277  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
  59b16730440e89a81d7071a74053fed6  libstdc++-v3/include/bits/std_abs.h
  c35a5da0369f3af2e9e202c9c8510914  libstdc++-v3/include/bits/std_function.h
! f5b75c431f2a636db9c6051ad3121ae9  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
  de56251aaccb7f2a48169f9f6b369cf6  libstdc++-v3/include/bits/stl_algo.h
  6a79779bd47cc3d33e08e0ddd282775e  libstdc++-v3/include/bits/stl_algobase.h
*************** ca1849d33a84098658d3310146abebf0  libstd
*** 141105,141125 ****
  ce452f748be2c455c1ac0f358be411e7  libstdc++-v3/include/bits/stl_function.h
  741f55b507d0ff8007014ce8927ac8d8  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
  4f93444bfce714698d1c4bd36a134164  libstdc++-v3/include/bits/stl_list.h
! 9cbe01c5624f36e20bda151e066a94fd  libstdc++-v3/include/bits/stl_map.h
! 2525257e0e5e980d1c62e5c335ccd152  libstdc++-v3/include/bits/stl_multimap.h
! ed492cb12f700a39913c303324c4d3d0  libstdc++-v3/include/bits/stl_multiset.h
  480b44132613538ac869874bf3fc4e45  libstdc++-v3/include/bits/stl_numeric.h
  82a2598c3243994c5104b6bcd91c30c1  libstdc++-v3/include/bits/stl_pair.h
  c187c580a48d3cfe2a81c4230220002d  libstdc++-v3/include/bits/stl_queue.h
  ef960a69cca203133e14f230f029c45f  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  8b75378d24bf1cd680dec9034e5fa6cf  libstdc++-v3/include/bits/stl_relops.h
! c422f42aab865e6ef70233d1d512473c  libstdc++-v3/include/bits/stl_set.h
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e77200e337d1f4695ed04b8f6fd9991d  libstdc++-v3/include/bits/stl_tempbuf.h
! eaceb582a18a6a7ee11227f1fc82b069  libstdc++-v3/include/bits/stl_tree.h
  acafb6ad2e0035c5b84058721e364dca  libstdc++-v3/include/bits/stl_uninitialized.h
  a289051282846bf52bb1917bcbbf3673  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
--- 141225,141245 ----
  ce452f748be2c455c1ac0f358be411e7  libstdc++-v3/include/bits/stl_function.h
  741f55b507d0ff8007014ce8927ac8d8  libstdc++-v3/include/bits/stl_heap.h
  7f15896f0e815aaa22a610841ad076bd  libstdc++-v3/include/bits/stl_iterator.h
! 87d9f025d723b4f65e48c95384b31c20  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  54bf96df9d7600b71ab8d00f28c7e6de  libstdc++-v3/include/bits/stl_iterator_base_types.h
  4f93444bfce714698d1c4bd36a134164  libstdc++-v3/include/bits/stl_list.h
! 557f6acdb64d284dc278855f99d7d509  libstdc++-v3/include/bits/stl_map.h
! de62a761b87657887f85fa1883261b25  libstdc++-v3/include/bits/stl_multimap.h
! 55e5e6ba11e50131e5c545eda53371c7  libstdc++-v3/include/bits/stl_multiset.h
  480b44132613538ac869874bf3fc4e45  libstdc++-v3/include/bits/stl_numeric.h
  82a2598c3243994c5104b6bcd91c30c1  libstdc++-v3/include/bits/stl_pair.h
  c187c580a48d3cfe2a81c4230220002d  libstdc++-v3/include/bits/stl_queue.h
  ef960a69cca203133e14f230f029c45f  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  8b75378d24bf1cd680dec9034e5fa6cf  libstdc++-v3/include/bits/stl_relops.h
! 0a369310668acba794eb4c21fcbf360b  libstdc++-v3/include/bits/stl_set.h
  c48928d63732da42056105c33cf860ff  libstdc++-v3/include/bits/stl_stack.h
  e77200e337d1f4695ed04b8f6fd9991d  libstdc++-v3/include/bits/stl_tempbuf.h
! ac768cd1868664a11e86594d35aa3270  libstdc++-v3/include/bits/stl_tree.h
  acafb6ad2e0035c5b84058721e364dca  libstdc++-v3/include/bits/stl_uninitialized.h
  a289051282846bf52bb1917bcbbf3673  libstdc++-v3/include/bits/stl_vector.h
  c021eea8ffb782c5cae76e39deaa7369  libstdc++-v3/include/bits/stream_iterator.h
*************** c021eea8ffb782c5cae76e39deaa7369  libstd
*** 141128,141141 ****
  ac9255b35d438319d9bf5c821a6cc7e9  libstdc++-v3/include/bits/string_view.tcc
  bde7ef0245c6a48f1e86c1154662b9b3  libstdc++-v3/include/bits/stringfwd.h
  2eaea6618dd32c781462a159568c3920  libstdc++-v3/include/bits/text_encoding-data.h
! 69bea23b704fea0d9737f0fd16a14414  libstdc++-v3/include/bits/this_thread_sleep.h
  a315f61009849bba79498b388f94c177  libstdc++-v3/include/bits/unicode-data.h
! 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
  b9489856439b8ba5238cd45b2f65370a  libstdc++-v3/include/bits/uses_allocator_args.h
  dba47031679780cdbde61e6e83854035  libstdc++-v3/include/bits/utility.h
--- 141248,141261 ----
  ac9255b35d438319d9bf5c821a6cc7e9  libstdc++-v3/include/bits/string_view.tcc
  bde7ef0245c6a48f1e86c1154662b9b3  libstdc++-v3/include/bits/stringfwd.h
  2eaea6618dd32c781462a159568c3920  libstdc++-v3/include/bits/text_encoding-data.h
! c54dc01c04f2bec8fd040442e692de74  libstdc++-v3/include/bits/this_thread_sleep.h
  a315f61009849bba79498b388f94c177  libstdc++-v3/include/bits/unicode-data.h
! f5780be1a14417fc9cee089ef955bfed  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
! b1d749b2cc7775f0628c7d0c25d7d95e  libstdc++-v3/include/bits/unordered_map.h
! cb099c347fbdf946e779aed229ce490a  libstdc++-v3/include/bits/unordered_set.h
  a29de34311f884bb0a7bb8854fe4ce34  libstdc++-v3/include/bits/uses_allocator.h
  b9489856439b8ba5238cd45b2f65370a  libstdc++-v3/include/bits/uses_allocator_args.h
  dba47031679780cdbde61e6e83854035  libstdc++-v3/include/bits/utility.h
*************** a229b5c8ad2904a3b3173239225596c4  libstd
*** 141144,141151 ****
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  6adf2ccea897e9d5fc8e7650eceac96f  libstdc++-v3/include/bits/vector.tcc
! ab0b69847f99bee253db6f21da93b4f1  libstdc++-v3/include/bits/version.def
! b98526ea7b1371123b016a786d939472  libstdc++-v3/include/bits/version.h
  602b081d70553843ef4511ca8ec803c9  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
--- 141264,141271 ----
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  6adf2ccea897e9d5fc8e7650eceac96f  libstdc++-v3/include/bits/vector.tcc
! 942870c0f95747e137e62c708c887d7b  libstdc++-v3/include/bits/version.def
! d4831fb06d804438780988da7f8bc822  libstdc++-v3/include/bits/version.h
  602b081d70553843ef4511ca8ec803c9  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
*************** e8351ce24d977c21ec504a56e9a0fc71  libstd
*** 141251,141259 ****
  c56cf423167e7d092ffc37f84df8f959  libstdc++-v3/include/debug/list
  48ad2bbf8cb94bbfb81869406475eaa3  libstdc++-v3/include/debug/macros.h
  c5d850b63f4a5052d58fbaa66c5a6b9e  libstdc++-v3/include/debug/map
! f1c2c53c241e28a4547ac6ae472e7e82  libstdc++-v3/include/debug/map.h
! d4b2de3d2ea189b4008c7a08fac32061  libstdc++-v3/include/debug/multimap.h
! 2c68f73d9eb34b023d03705e9f4c8526  libstdc++-v3/include/debug/multiset.h
  fa8e77478856ecd3c5865c98c4f4bbb5  libstdc++-v3/include/debug/safe_base.h
  a31590077139b8cb7811da234690f2ec  libstdc++-v3/include/debug/safe_container.h
  b4e8921d132283c0833b6b2f5002bef9  libstdc++-v3/include/debug/safe_iterator.h
--- 141371,141379 ----
  c56cf423167e7d092ffc37f84df8f959  libstdc++-v3/include/debug/list
  48ad2bbf8cb94bbfb81869406475eaa3  libstdc++-v3/include/debug/macros.h
  c5d850b63f4a5052d58fbaa66c5a6b9e  libstdc++-v3/include/debug/map
! 5b9398ce68edf5b4f5e9de85fea7f91e  libstdc++-v3/include/debug/map.h
! 3caad01bff561c15da72e6c800b0e09f  libstdc++-v3/include/debug/multimap.h
! 1d41253547d7e8329dd21632fb7c523a  libstdc++-v3/include/debug/multiset.h
  fa8e77478856ecd3c5865c98c4f4bbb5  libstdc++-v3/include/debug/safe_base.h
  a31590077139b8cb7811da234690f2ec  libstdc++-v3/include/debug/safe_container.h
  b4e8921d132283c0833b6b2f5002bef9  libstdc++-v3/include/debug/safe_iterator.h
*************** c99ef04a577557b915cad4620999b6b3  libstd
*** 141266,141276 ****
  f39ef099759054b1b06019d7072d8e81  libstdc++-v3/include/debug/safe_unordered_container.h
  66eaab00df39f074eefd1bd753eec3ab  libstdc++-v3/include/debug/safe_unordered_container.tcc
  9c8890168ebee87d21799e32dbd16dba  libstdc++-v3/include/debug/set
! bd48bf97a403684f5c0e1085f6008796  libstdc++-v3/include/debug/set.h
  46c2a7aec8c2daf9a24cdd4abb5d5005  libstdc++-v3/include/debug/stl_iterator.h
  a1663f21be3a52bf667fd70462c38616  libstdc++-v3/include/debug/string
! fed260c131fbd5000daaa21d45ec39b6  libstdc++-v3/include/debug/unordered_map
! fb7b5f8e6ec19a820ffd1ef3418481b9  libstdc++-v3/include/debug/unordered_set
  10d3703018f4c8ed7603146602ecef91  libstdc++-v3/include/debug/vector
  8679a90f72c7d0f38831c0900918ee81  libstdc++-v3/include/decimal/decimal
  248d4ac49f39decd0c1f0ded12edcf66  libstdc++-v3/include/decimal/decimal.h
--- 141386,141396 ----
  f39ef099759054b1b06019d7072d8e81  libstdc++-v3/include/debug/safe_unordered_container.h
  66eaab00df39f074eefd1bd753eec3ab  libstdc++-v3/include/debug/safe_unordered_container.tcc
  9c8890168ebee87d21799e32dbd16dba  libstdc++-v3/include/debug/set
! 8b905137fe6c413d63443229a9678269  libstdc++-v3/include/debug/set.h
  46c2a7aec8c2daf9a24cdd4abb5d5005  libstdc++-v3/include/debug/stl_iterator.h
  a1663f21be3a52bf667fd70462c38616  libstdc++-v3/include/debug/string
! 1bbb84d6dda5b7556b76bca8a688a606  libstdc++-v3/include/debug/unordered_map
! cbb3efc2d4bba967642edf6dbd10afb5  libstdc++-v3/include/debug/unordered_set
  10d3703018f4c8ed7603146602ecef91  libstdc++-v3/include/debug/vector
  8679a90f72c7d0f38831c0900918ee81  libstdc++-v3/include/decimal/decimal
  248d4ac49f39decd0c1f0ded12edcf66  libstdc++-v3/include/decimal/decimal.h
*************** c961d014368e022c98c261e769fdc2aa  libstd
*** 141703,141709 ****
  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
  a0fc3dc83ee36ee79d13e7291b461565  libstdc++-v3/include/std/deque
--- 141823,141829 ----
  a90e2b9ed2c236c92f3f2387a39a0ac8  libstdc++-v3/include/std/codecvt
  489f1fa388f56f93420713f979711c6b  libstdc++-v3/include/std/complex
  71f48e065b77e69f00dd2315c96b4e55  libstdc++-v3/include/std/concepts
! 432501df58e845b724cce62e7d76214d  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
  a0fc3dc83ee36ee79d13e7291b461565  libstdc++-v3/include/std/deque
*************** c7512fdd688111026ada39c2eff08f8e  libstd
*** 141712,141718 ****
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 0f628d67fcc673edcffff4bd6ad45f14  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
  2e2a3e068304b1e949291e4e2e32c780  libstdc++-v3/include/std/functional
--- 141832,141838 ----
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
  5aa136a1aaeb7658dee6ccdd5cb6e5c6  libstdc++-v3/include/std/flat_map
  8a5fa0a4bb554b2db8c2fed26a6993ca  libstdc++-v3/include/std/flat_set
! 344cb326ef175bcef751ab8a66184c26  libstdc++-v3/include/std/format
  fa4316749922813b44f2ee282452813b  libstdc++-v3/include/std/forward_list
  e790ae6877466aa86b47f36d201e8563  libstdc++-v3/include/std/fstream
  2e2a3e068304b1e949291e4e2e32c780  libstdc++-v3/include/std/functional
*************** f4af31191dea172207576960ad71d42d  libstd
*** 141733,141739 ****
  86255888fe02daec828bc2cd2465e4c4  libstdc++-v3/include/std/mdspan
  563ae67a140bca148dc565c4a845d161  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
! 96d4004072aee0df9b1cac29de7649c2  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
  5d818ee7f1f99ab14a672f8417eadf33  libstdc++-v3/include/std/optional
--- 141853,141859 ----
  86255888fe02daec828bc2cd2465e4c4  libstdc++-v3/include/std/mdspan
  563ae67a140bca148dc565c4a845d161  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
! 154adad15522042ed2886d969f645c0b  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
  b944796362aa39fc1cba3747d2247464  libstdc++-v3/include/std/numeric
  5d818ee7f1f99ab14a672f8417eadf33  libstdc++-v3/include/std/optional
*************** a28bf4bed6789b61535d4b05ff48ba76  libstd
*** 141747,141759 ****
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
  91c6fab351369373bcb191b27bc13900  libstdc++-v3/include/std/semaphore
  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
  efdde6d8d883a91854d4ae616b627e53  libstdc++-v3/include/std/spanstream
  1ffc378f8e8e686e82a35a2717c0da50  libstdc++-v3/include/std/sstream
  5b374a249107c7e5de0f834fa6a46f52  libstdc++-v3/include/std/stack
! 46d5e073e391741471ce11d3a6bb0fed  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
  23b5b63af5cceb0d44d8c2aab32c8e30  libstdc++-v3/include/std/stop_token
--- 141867,141879 ----
  1bad2aed72c4537e7f08d24c1bf7d375  libstdc++-v3/include/std/scoped_allocator
  91c6fab351369373bcb191b27bc13900  libstdc++-v3/include/std/semaphore
  9b8d5c4868a64371c6591ccd2d8ae5f0  libstdc++-v3/include/std/set
! 949eec685c89914aae84f479774c0556  libstdc++-v3/include/std/shared_mutex
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  522a5acff0bbc10f78a18d5e279f0cf6  libstdc++-v3/include/std/span
  efdde6d8d883a91854d4ae616b627e53  libstdc++-v3/include/std/spanstream
  1ffc378f8e8e686e82a35a2717c0da50  libstdc++-v3/include/std/sstream
  5b374a249107c7e5de0f834fa6a46f52  libstdc++-v3/include/std/stack
! 11dbc7eaf7ffced493f65f6bc3b423b1  libstdc++-v3/include/std/stacktrace
  03274bc404214a9a2c8235a5ae90f4fd  libstdc++-v3/include/std/stdexcept
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
  23b5b63af5cceb0d44d8c2aab32c8e30  libstdc++-v3/include/std/stop_token
*************** b9cf79d1edae688927d40109f321047a  libstd
*** 141769,141775 ****
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
! a05198d154ee4b152da6854fa6433ee7  libstdc++-v3/include/std/utility
  e0096e013b19127692d1ed454892142d  libstdc++-v3/include/std/valarray
  6dfedd974a960950b7ce23a1bbb999f2  libstdc++-v3/include/std/variant
  e6dcc9a7721cf0dd849d0c48a2f1768a  libstdc++-v3/include/std/vector
--- 141889,141895 ----
  237682577d22ec3f9f5046abf0acd8e7  libstdc++-v3/include/std/typeindex
  520c52362f53e18f20838693cfd131bf  libstdc++-v3/include/std/unordered_map
  c82be32edefaa23cc1228b092d319315  libstdc++-v3/include/std/unordered_set
! 667666c43061458376aeaee7dfc78a59  libstdc++-v3/include/std/utility
  e0096e013b19127692d1ed454892142d  libstdc++-v3/include/std/valarray
  6dfedd974a960950b7ce23a1bbb999f2  libstdc++-v3/include/std/variant
  e6dcc9a7721cf0dd849d0c48a2f1768a  libstdc++-v3/include/std/vector
*************** cba1356a5d30bc9057a2e5d0925657f8  libstd
*** 141939,141945 ****
  4cb74e4755d2e3e58503a243d7ae042b  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  f3661044e04e7499daef1e53bba37dc7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! a56ceda78dcdee775ce403a1589d5605  libstdc++-v3/python/libstdcxx/v6/printers.py
  c4a63edebdca46a9468f6ce9cde53449  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
--- 142059,142065 ----
  4cb74e4755d2e3e58503a243d7ae042b  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
  f3661044e04e7499daef1e53bba37dc7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 80ece9e9dd68cbbff40454566f9ac436  libstdc++-v3/python/libstdcxx/v6/printers.py
  c4a63edebdca46a9468f6ce9cde53449  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
*************** f5af35184f655abcf9edbb76a7ac9985  libstd
*** 142025,142031 ****
  9a462773b93cea47b4ba35ff80b3b9f9  libstdc++-v3/src/c++11/string-inst.cc
  51eb59aec233df19c1193a1961362c36  libstdc++-v3/src/c++11/string-io-inst.cc
  b8e7b1593e5ed3dee7f0c98b40666a11  libstdc++-v3/src/c++11/system_error.cc
! 2c8e1fdeb39d12dc28ddf3a5f6aaaf99  libstdc++-v3/src/c++11/thread.cc
  8f11c4680a8c193b75888713450f5ae3  libstdc++-v3/src/c++11/wlocale-inst.cc
  9a2f4bc77bc2e1c94a8b5cefd3821420  libstdc++-v3/src/c++11/wstring-inst.cc
  c784e7e5223a16cc62f12abfdb1fe126  libstdc++-v3/src/c++11/wstring-io-inst.cc
--- 142145,142151 ----
  9a462773b93cea47b4ba35ff80b3b9f9  libstdc++-v3/src/c++11/string-inst.cc
  51eb59aec233df19c1193a1961362c36  libstdc++-v3/src/c++11/string-io-inst.cc
  b8e7b1593e5ed3dee7f0c98b40666a11  libstdc++-v3/src/c++11/system_error.cc
! f038bff0d15627443407b36722f5bdbf  libstdc++-v3/src/c++11/thread.cc
  8f11c4680a8c193b75888713450f5ae3  libstdc++-v3/src/c++11/wlocale-inst.cc
  9a2f4bc77bc2e1c94a8b5cefd3821420  libstdc++-v3/src/c++11/wstring-inst.cc
  c784e7e5223a16cc62f12abfdb1fe126  libstdc++-v3/src/c++11/wstring-io-inst.cc
*************** c9dcdd9b0b5c806e787dc702505f57e1  libstd
*** 142043,142049 ****
  ac9644e2d8390587379964f6b7e51ef0  libstdc++-v3/src/c++17/floating_to_chars.cc
  7c668fe3f79c2610268b1bc631741ad5  libstdc++-v3/src/c++17/fs_dir.cc
  38394abc0e937c8a15f74a60356f174a  libstdc++-v3/src/c++17/fs_ops.cc
! 94b95a511b91830b1c3dbfdf235ec988  libstdc++-v3/src/c++17/fs_path.cc
  3142d663ea92c3978de4c455280d486f  libstdc++-v3/src/c++17/memory_resource.cc
  4f2f44032e04f77de92166a02f76089d  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
--- 142163,142169 ----
  ac9644e2d8390587379964f6b7e51ef0  libstdc++-v3/src/c++17/floating_to_chars.cc
  7c668fe3f79c2610268b1bc631741ad5  libstdc++-v3/src/c++17/fs_dir.cc
  38394abc0e937c8a15f74a60356f174a  libstdc++-v3/src/c++17/fs_ops.cc
! 66110dba21caf19d4a1dbfd8131e3a53  libstdc++-v3/src/c++17/fs_path.cc
  3142d663ea92c3978de4c455280d486f  libstdc++-v3/src/c++17/memory_resource.cc
  4f2f44032e04f77de92166a02f76089d  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
*************** e66e202fb59625eb933c316b0bf9ee34  libstd
*** 142064,142070 ****
  6bbe101ec337afce54e0c8dee6fdd6d3  libstdc++-v3/src/c++17/uint128_t.h
  4d414718915223bfe45a3a197501ea1d  libstdc++-v3/src/c++20/Makefile.am
  8992329b44e206ac3d5b63e10bf82246  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
--- 142184,142190 ----
  6bbe101ec337afce54e0c8dee6fdd6d3  libstdc++-v3/src/c++17/uint128_t.h
  4d414718915223bfe45a3a197501ea1d  libstdc++-v3/src/c++20/Makefile.am
  8992329b44e206ac3d5b63e10bf82246  libstdc++-v3/src/c++20/Makefile.in
! b92177c5d2a1113f62a79ed66c1d64fa  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
*************** ba1de75ac9c1bb7d2506c503fe17708a  libstd
*** 142078,142084 ****
  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
! 53765613975cb861f7c657197da3f28c  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  757f1e829f27dedf5e8d7d83b358ad27  libstdc++-v3/src/c++26/Makefile.am
  7bb4fc4ec0d17bf1e304be661919aad7  libstdc++-v3/src/c++26/Makefile.in
--- 142198,142204 ----
  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
! 02539ea06c5b53986174eb3467525d25  libstdc++-v3/src/c++23/std.cc.in
  ef2786c62e1aa27a5405d7bf70e5212c  libstdc++-v3/src/c++23/std.compat.cc.in
  757f1e829f27dedf5e8d7d83b358ad27  libstdc++-v3/src/c++26/Makefile.am
  7bb4fc4ec0d17bf1e304be661919aad7  libstdc++-v3/src/c++26/Makefile.in
*************** da9145a0185055b61b241cc561abd20a  libstd
*** 143526,143531 ****
--- 143646,143652 ----
  cc8f100514fc776c44855526cd4c4f98  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
  f0aa77432ff68dc1bc3bb39abb798574  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
  218bfa15322cbf3d4699fd75868ce542  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc
+ e5115f89864cd471491ade4b30107235  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/pr118757.cc
  0ed58f781f6defac8f2adf9165c5b843  libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
  f71b39c4f3422ca74560b507e3238d70  libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
  66b0af9f169e4254c6e08f75f365502c  libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc
*************** d474ab3de86472b091cb5e1eb977e148  libstd
*** 143989,143994 ****
--- 144110,144116 ----
  81caf89f5d2508b4ffd2bbeeb2fcefa5  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
  2f3b9591e0251d9b1629799d582d140a  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_equal.cc
  29bb5a9dc38591c43c42b4358dcb686a  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_hash.cc
+ 4d85562f83f12d0679f0a48545bf118f  libstdc++-v3/testsuite/20_util/weak_ptr/pr118757.cc
  1dab19854741ecc627d9ec99f37870cf  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
  a610c0786f4a061921c8ff0f20be9f5d  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
  9ea3217672cce0af4c51c9cbae0c9b97  libstdc++-v3/testsuite/21_strings/basic_string/40160.cc
*************** ae6700b4bf5b034e318443bed6ddfe00  libstd
*** 149734,149739 ****
--- 149856,149862 ----
  67a7c5f355d86ec391313b189990e536  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
  60777342aa8417d9342641e5ddea0ff6  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/typedefs.cc
  8019a55f591bbf7ad697e4f3cf7d9904  libstdc++-v3/testsuite/29_atomics/atomic_integral/wait_notify.cc
+ b421c365be94a2a3f541fbe950cd3734  libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc
  eb69e199f441bdc9a7da84c077514554  libstdc++-v3/testsuite/29_atomics/atomic_ref/bool.cc
  32c306fa56643321c7e2c4c7920c2990  libstdc++-v3/testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc
  21da5010562f5cc292d3aee5a3420a1b  libstdc++-v3/testsuite/29_atomics/atomic_ref/cv_qual.cc
*************** e4356096911c61dc2d410c486d4bfbfa  libstd
*** 149791,149796 ****
--- 149914,149920 ----
  fda513aa57b58ec8ae495a3e37a6b741  libstdc++-v3/testsuite/30_threads/condition_variable/cons/copy_neg.cc
  0f490f659fdd6710c43edb49ad4a8f23  libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc
  a22ffec2ff77db41215e429fe83d58ac  libstdc++-v3/testsuite/30_threads/condition_variable/members/103382.cc
+ dca21798dbbc52d3274ffeaa3622480d  libstdc++-v3/testsuite/30_threads/condition_variable/members/116586.cc
  21078e84f52823d7f9c94acbea81af30  libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc
  3aed92976d281053bc431a346d0de030  libstdc++-v3/testsuite/30_threads/condition_variable/members/3.cc
  c4bfd4842c673512f72f2d9fe332a218  libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc
*************** e01fe847062c2bfd6ed37031f9ca2ff8  libstd
*** 149817,149822 ****
--- 149941,149947 ----
  b4923d7ca0c8c0104802bc08d5e1c2ae  libstdc++-v3/testsuite/30_threads/future/cons/default.cc
  ec49e5336cb3c45afbf2ddddf5583473  libstdc++-v3/testsuite/30_threads/future/cons/move.cc
  cf15d4f41297a7f05235f6491cd35c3b  libstdc++-v3/testsuite/30_threads/future/cons/move_assign.cc
+ de73ab82d1be416f6ff09608be40857d  libstdc++-v3/testsuite/30_threads/future/members/116586.cc
  558c2f7e2a442daebbbc612ba05b66c5  libstdc++-v3/testsuite/30_threads/future/members/118093.cc
  f88638743807ef6884b09ef6b56cc393  libstdc++-v3/testsuite/30_threads/future/members/45133.cc
  a372a9c3e841573c8df7d991b892f56f  libstdc++-v3/testsuite/30_threads/future/members/93456.cc
*************** c4741bd0338ec7cec54d5b61c96ac0c1  libstd
*** 149958,149963 ****
--- 150083,150089 ----
  f2759cbb0122645741437d53d0c3d79e  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc
  946ea647b882005c7260176e523bbdd1  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc
  3e2a19730f6e8d7b2331586580f4ccc8  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc
+ 6c711124a4c86b79e6ef8bf59fc311fa  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/116586.cc
  f6e332e0da5679ff09b7bdefac8dd227  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc
  65ceb0dce688f7d22f2c0ac2db4de262  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc
  c08ecc556763caa8424e75d0366adda3  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/clock_neg.cc
*************** a1b75b087a553d7bd454e8afd100015c  libstd
*** 149978,149985 ****
  50bbb3b91d48e84e674e5d633c6e6ebe  libstdc++-v3/testsuite/30_threads/semaphore/cons_neg.cc
  b193f0b053da9d3d193796a7d1961722  libstdc++-v3/testsuite/30_threads/semaphore/least_max_value_neg.cc
  87d0d445a39c2df1fb181b006c20cad0  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc
! 4f207de1d73d5bd34d9e8795669f8336  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_for.cc
! c9dd80031d6b79f53eaac381d40b5587  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
  c5cb880fec7ba8a061cab8fbdfa71e18  libstdc++-v3/testsuite/30_threads/shared_future/cons/assign.cc
  f1e22f182f98e9cd74e79b69efe28617  libstdc++-v3/testsuite/30_threads/shared_future/cons/constexpr.cc
  115e4c493488052ccc3ef944b611d39c  libstdc++-v3/testsuite/30_threads/shared_future/cons/copy.cc
--- 150104,150111 ----
  50bbb3b91d48e84e674e5d633c6e6ebe  libstdc++-v3/testsuite/30_threads/semaphore/cons_neg.cc
  b193f0b053da9d3d193796a7d1961722  libstdc++-v3/testsuite/30_threads/semaphore/least_max_value_neg.cc
  87d0d445a39c2df1fb181b006c20cad0  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc
! c60659108e7677080959570f472fb907  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_for.cc
! 2cb59000ac6f557aa5f86a6e9bead45d  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
  c5cb880fec7ba8a061cab8fbdfa71e18  libstdc++-v3/testsuite/30_threads/shared_future/cons/assign.cc
  f1e22f182f98e9cd74e79b69efe28617  libstdc++-v3/testsuite/30_threads/shared_future/cons/constexpr.cc
  115e4c493488052ccc3ef944b611d39c  libstdc++-v3/testsuite/30_threads/shared_future/cons/copy.cc
*************** b67dbc60a5b0d5e68b3301d42c89d370  libstd
*** 150029,150034 ****
--- 150155,150161 ----
  7f25c665770f98206c485d5d7f18e115  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
  a27f2488c39a2a0bcf060befdd7c5e7e  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
  03a4955f029924a2d0eb6f2d31110f26  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc
+ 5d2d05f6e1f411d1978f431757a3551f  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc
  b2646746018971b2f7502408ba69b812  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc
  bef525fe56599b2234510898b1e956af  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc
  033af8991cda03faee5e75cb045b81f7  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/unlock/1.cc
*************** e0b287d23f3c6a2c92f6574cdec22f59  libstd
*** 150047,150060 ****
  6696471c5417ab178a3f6b9c7524848c  libstdc++-v3/testsuite/30_threads/stop_token/stop_token.cc
  36218cdab1e2c5d51ff4d8ae699e0185  libstdc++-v3/testsuite/30_threads/stop_token/stop_token/stop_possible.cc
  99f4c17a30daa2cbca2792f1cc6c10c5  libstdc++-v3/testsuite/30_threads/this_thread/1.cc
  fd7b13449dd263f145184f6e4110a599  libstdc++-v3/testsuite/30_threads/this_thread/57060.cc
  6684d8c3a6f87f4490e5216b54190cb7  libstdc++-v3/testsuite/30_threads/this_thread/58038.cc
  b35562bb203255b4535e0e14d368d26c  libstdc++-v3/testsuite/30_threads/this_thread/60421.cc
  14e298c71b3f5fc8671ac5308ebac780  libstdc++-v3/testsuite/30_threads/this_thread/95989.cc
  77326bf7b369b536bbcc4b886dc59315  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for-mt.cc
! 02d916acf97706f88f67e119126cc34f  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for.cc
  01b4077c28dafcff953634a85c9d0dd9  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until-mt.cc
! 61bf79ae0036c2a4060432c07dd508ee  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until.cc
  24395d4b13ba32e69312de6cb7dceee6  libstdc++-v3/testsuite/30_threads/this_thread/yield.cc
  01f0a9872e8d09e04052489193a9e1e9  libstdc++-v3/testsuite/30_threads/thread/106695.cc
  540efe2cd7e8818a634cc153d50d4499  libstdc++-v3/testsuite/30_threads/thread/70503.cc
--- 150174,150188 ----
  6696471c5417ab178a3f6b9c7524848c  libstdc++-v3/testsuite/30_threads/stop_token/stop_token.cc
  36218cdab1e2c5d51ff4d8ae699e0185  libstdc++-v3/testsuite/30_threads/stop_token/stop_token/stop_possible.cc
  99f4c17a30daa2cbca2792f1cc6c10c5  libstdc++-v3/testsuite/30_threads/this_thread/1.cc
+ def1a6f0a160cc12a9aa1bd61c64aea2  libstdc++-v3/testsuite/30_threads/this_thread/113327.cc
  fd7b13449dd263f145184f6e4110a599  libstdc++-v3/testsuite/30_threads/this_thread/57060.cc
  6684d8c3a6f87f4490e5216b54190cb7  libstdc++-v3/testsuite/30_threads/this_thread/58038.cc
  b35562bb203255b4535e0e14d368d26c  libstdc++-v3/testsuite/30_threads/this_thread/60421.cc
  14e298c71b3f5fc8671ac5308ebac780  libstdc++-v3/testsuite/30_threads/this_thread/95989.cc
  77326bf7b369b536bbcc4b886dc59315  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for-mt.cc
! 85049055fa2ac84dcbfc400d088009d4  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for.cc
  01b4077c28dafcff953634a85c9d0dd9  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until-mt.cc
! 3f574270145a42cfe70780005432d029  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until.cc
  24395d4b13ba32e69312de6cb7dceee6  libstdc++-v3/testsuite/30_threads/this_thread/yield.cc
  01f0a9872e8d09e04052489193a9e1e9  libstdc++-v3/testsuite/30_threads/thread/106695.cc
  540efe2cd7e8818a634cc153d50d4499  libstdc++-v3/testsuite/30_threads/thread/70503.cc
*************** b1902a39654ce0d4060ffd1a74c8e381  libstd
*** 150107,150112 ****
--- 150235,150241 ----
  6b1831573e79689f5a49f446bce2592c  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/2.cc
  fc48623baac54f5a09dc5e613e2ae69c  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/3.cc
  51c77818442245e20c5e53c64e4e0567  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/1.cc
+ eeda88837dc57edf51d837dde82faf9c  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/116586.cc
  31ce608d68b642f713059eda18ef9a18  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/2.cc
  34de6efad334dd0925a8b9651ec7b771  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/3.cc
  efcc6326f2e872928c4939e867ffab24  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/4.cc
*************** d00c0a73fcb76116eb1807c0bf0bd1aa  libstd
*** 151038,151044 ****
  53e931d667b5351e2c83d9753880deca  libstdc++-v3/testsuite/ext/unicode/charset_alias_match.cc
  21033b8a9d07ff00d54806ae81ae7b35  libstdc++-v3/testsuite/ext/unicode/grapheme_view.cc
  bb74d3db85224a67ff56d7b51626f457  libstdc++-v3/testsuite/ext/unicode/properties.cc
! d52ef3fc9b79d1e4f3fe51de0d757203  libstdc++-v3/testsuite/ext/unicode/view.cc
  5c8f44c5c7749eb627a3594790fcb046  libstdc++-v3/testsuite/ext/verify_neg.cc
  884670ca6489dae936f917510c2e840b  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
  b313e3bec63f292be9c30fcc7790f481  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
--- 151167,151173 ----
  53e931d667b5351e2c83d9753880deca  libstdc++-v3/testsuite/ext/unicode/charset_alias_match.cc
  21033b8a9d07ff00d54806ae81ae7b35  libstdc++-v3/testsuite/ext/unicode/grapheme_view.cc
  bb74d3db85224a67ff56d7b51626f457  libstdc++-v3/testsuite/ext/unicode/properties.cc
! 94a42dcc880878f8878caad860428611  libstdc++-v3/testsuite/ext/unicode/view.cc
  5c8f44c5c7749eb627a3594790fcb046  libstdc++-v3/testsuite/ext/verify_neg.cc
  884670ca6489dae936f917510c2e840b  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
  b313e3bec63f292be9c30fcc7790f481  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
*************** adc36fa767db69881dc741e3677594b2  libstd
*** 151377,151383 ****
  d9708c521b612f15f943a911427b169b  libstdc++-v3/testsuite/std/format/ranges/map.cc
  3c83d38b975b49e89716f008ae9810f3  libstdc++-v3/testsuite/std/format/ranges/pr119861_neg.cc
  559739840dd6ec076b05995aa37cfa74  libstdc++-v3/testsuite/std/format/ranges/sequence.cc
! fdca82ddd8e353e70075872cb27926c2  libstdc++-v3/testsuite/std/format/ranges/string.cc
  22af3c8593871c64b40b11663417f80a  libstdc++-v3/testsuite/std/format/runtime_format.cc
  c400d0d58ad702f461b28668dc629c09  libstdc++-v3/testsuite/std/format/string.cc
  7c654edf02fc2f7793fb1f549b890993  libstdc++-v3/testsuite/std/format/string_neg.cc
--- 151506,151512 ----
  d9708c521b612f15f943a911427b169b  libstdc++-v3/testsuite/std/format/ranges/map.cc
  3c83d38b975b49e89716f008ae9810f3  libstdc++-v3/testsuite/std/format/ranges/pr119861_neg.cc
  559739840dd6ec076b05995aa37cfa74  libstdc++-v3/testsuite/std/format/ranges/sequence.cc
! 9085de1a2c4f397091c62b0a0cab1069  libstdc++-v3/testsuite/std/format/ranges/string.cc
  22af3c8593871c64b40b11663417f80a  libstdc++-v3/testsuite/std/format/runtime_format.cc
  c400d0d58ad702f461b28668dc629c09  libstdc++-v3/testsuite/std/format/string.cc
  7c654edf02fc2f7793fb1f549b890993  libstdc++-v3/testsuite/std/format/string_neg.cc
*************** ac023f20cb115a4c9e7919a4393475de  libstd
*** 151554,151566 ****
  b7a5373ed0797aa495f69436f1939726  libstdc++-v3/testsuite/std/time/month/2.cc
  11a34b6fd3c32ab71d499904fa3aece4  libstdc++-v3/testsuite/std/time/month/io.cc
  0bd2c98bac6c877d6d3e4c0c618fe5f4  libstdc++-v3/testsuite/std/time/month_day/1.cc
! bb39685baac5f09d22f4582faf8cb04f  libstdc++-v3/testsuite/std/time/month_day/io.cc
  8fbe2e4183732ea109e43f11310099f7  libstdc++-v3/testsuite/std/time/month_day_last/1.cc
! 57c823e1b0c97a1e396368e63055de71  libstdc++-v3/testsuite/std/time/month_day_last/io.cc
  3b0d291ac5b46ab5d35141b37c84ae98  libstdc++-v3/testsuite/std/time/month_weekday/1.cc
! 2b2d5b005bfe02a06434926ee5a0a9b0  libstdc++-v3/testsuite/std/time/month_weekday/io.cc
  3c640205d8d63e42e49267025757f1d6  libstdc++-v3/testsuite/std/time/month_weekday_last/1.cc
! 0be8cd0fe58df88085498beba05c0f9e  libstdc++-v3/testsuite/std/time/month_weekday_last/io.cc
  60231b6bb71cc9175500ebf6d9f92ceb  libstdc++-v3/testsuite/std/time/parse/114240.cc
  a0be85b8053be995a48a4cfec6a5b675  libstdc++-v3/testsuite/std/time/parse/114279.cc
  61fe64fc0ce6aae0635b3572b41566e5  libstdc++-v3/testsuite/std/time/parse/parse.cc
--- 151683,151695 ----
  b7a5373ed0797aa495f69436f1939726  libstdc++-v3/testsuite/std/time/month/2.cc
  11a34b6fd3c32ab71d499904fa3aece4  libstdc++-v3/testsuite/std/time/month/io.cc
  0bd2c98bac6c877d6d3e4c0c618fe5f4  libstdc++-v3/testsuite/std/time/month_day/1.cc
! e7f09baa4d21038e62d7914205579167  libstdc++-v3/testsuite/std/time/month_day/io.cc
  8fbe2e4183732ea109e43f11310099f7  libstdc++-v3/testsuite/std/time/month_day_last/1.cc
! 1dbb306657982fc90f00e3749a9bc4df  libstdc++-v3/testsuite/std/time/month_day_last/io.cc
  3b0d291ac5b46ab5d35141b37c84ae98  libstdc++-v3/testsuite/std/time/month_weekday/1.cc
! c8926de8f6ede51b5698239a063bcac4  libstdc++-v3/testsuite/std/time/month_weekday/io.cc
  3c640205d8d63e42e49267025757f1d6  libstdc++-v3/testsuite/std/time/month_weekday_last/1.cc
! 075601020e49a49a2f5131b011ff3b25  libstdc++-v3/testsuite/std/time/month_weekday_last/io.cc
  60231b6bb71cc9175500ebf6d9f92ceb  libstdc++-v3/testsuite/std/time/parse/114240.cc
  a0be85b8053be995a48a4cfec6a5b675  libstdc++-v3/testsuite/std/time/parse/114279.cc
  61fe64fc0ce6aae0635b3572b41566e5  libstdc++-v3/testsuite/std/time/parse/parse.cc
*************** fbaa899641d17201d9f891486537af1b  libstd
*** 151580,151594 ****
  d6cb5f0804c9bd14e047294d47decf33  libstdc++-v3/testsuite/std/time/weekday/2.cc
  84a30249875432915027bc4a342388dc  libstdc++-v3/testsuite/std/time/weekday/io.cc
  e725171cf2c18ad2bb62cab49a9ff309  libstdc++-v3/testsuite/std/time/weekday_indexed/1.cc
! 43197781385c9dbd29b03f95e981e8af  libstdc++-v3/testsuite/std/time/weekday_indexed/io.cc
  38acf4a6e21a083db8a6dbee1a75ad7f  libstdc++-v3/testsuite/std/time/weekday_last/1.cc
! 871d143ecc0c16568bf5507d1a8d57a9  libstdc++-v3/testsuite/std/time/weekday_last/io.cc
  eedb8aa8dab94861572a2e0f9b7827a1  libstdc++-v3/testsuite/std/time/year/1.cc
  ddbf780d2b10b4213c9d110f9344b533  libstdc++-v3/testsuite/std/time/year/2.cc
  31aee8f1dc8300b4c3ce95f8b013467a  libstdc++-v3/testsuite/std/time/year/io.cc
  397a2bf0b36e2d595901be8c86ba80d9  libstdc++-v3/testsuite/std/time/year_month/1.cc
  010fd94824344e727f6135a07470a987  libstdc++-v3/testsuite/std/time/year_month/2.cc
! f3bc72e48f5192cf9f187425e1bc3ab2  libstdc++-v3/testsuite/std/time/year_month/io.cc
  7d64059a0fd6829f71b96d9b5b2f8970  libstdc++-v3/testsuite/std/time/year_month_day/1.cc
  3f9fcbf0af1cdb5c5b503cef22cd9394  libstdc++-v3/testsuite/std/time/year_month_day/2.cc
  b7c64f232b54b107438e4d09b7a482a0  libstdc++-v3/testsuite/std/time/year_month_day/3.cc
--- 151709,151723 ----
  d6cb5f0804c9bd14e047294d47decf33  libstdc++-v3/testsuite/std/time/weekday/2.cc
  84a30249875432915027bc4a342388dc  libstdc++-v3/testsuite/std/time/weekday/io.cc
  e725171cf2c18ad2bb62cab49a9ff309  libstdc++-v3/testsuite/std/time/weekday_indexed/1.cc
! d28bf8709f83db901474a6e0f2f15f7d  libstdc++-v3/testsuite/std/time/weekday_indexed/io.cc
  38acf4a6e21a083db8a6dbee1a75ad7f  libstdc++-v3/testsuite/std/time/weekday_last/1.cc
! 3b0c00a0f106f27fc317d6c8b89f0abf  libstdc++-v3/testsuite/std/time/weekday_last/io.cc
  eedb8aa8dab94861572a2e0f9b7827a1  libstdc++-v3/testsuite/std/time/year/1.cc
  ddbf780d2b10b4213c9d110f9344b533  libstdc++-v3/testsuite/std/time/year/2.cc
  31aee8f1dc8300b4c3ce95f8b013467a  libstdc++-v3/testsuite/std/time/year/io.cc
  397a2bf0b36e2d595901be8c86ba80d9  libstdc++-v3/testsuite/std/time/year_month/1.cc
  010fd94824344e727f6135a07470a987  libstdc++-v3/testsuite/std/time/year_month/2.cc
! 9bf4e07c924c2dc05afa75dbc79abe96  libstdc++-v3/testsuite/std/time/year_month/io.cc
  7d64059a0fd6829f71b96d9b5b2f8970  libstdc++-v3/testsuite/std/time/year_month_day/1.cc
  3f9fcbf0af1cdb5c5b503cef22cd9394  libstdc++-v3/testsuite/std/time/year_month_day/2.cc
  b7c64f232b54b107438e4d09b7a482a0  libstdc++-v3/testsuite/std/time/year_month_day/3.cc
diff -Nrcpad gcc-16-20251012/Makefile.in gcc-16-20251019/Makefile.in
*** gcc-16-20251012/Makefile.in	Sun Oct 12 22:34:26 2025
--- gcc-16-20251019/Makefile.in	Sun Oct 19 22:33:15 2025
*************** local-distclean:
*** 2740,2746 ****
  	-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
  	-rmdir c++tools fastjar gcc gnattools gotools 2>/dev/null
  	-rmdir libcc1 libiberty texinfo zlib 2>/dev/null
! 	-find . -name config.cache -exec rm -f {} \; \; 2>/dev/null
  
  local-maintainer-clean:
  	@echo "This command is intended for maintainers to use;"
--- 2740,2746 ----
  	-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
  	-rmdir c++tools fastjar gcc gnattools gotools 2>/dev/null
  	-rmdir libcc1 libiberty texinfo zlib 2>/dev/null
! 	-find . -name config.cache -exec rm -f {} \; 2>/dev/null
  
  local-maintainer-clean:
  	@echo "This command is intended for maintainers to use;"
diff -Nrcpad gcc-16-20251012/Makefile.tpl gcc-16-20251019/Makefile.tpl
*** gcc-16-20251012/Makefile.tpl	Sun Oct 12 22:32:38 2025
--- gcc-16-20251019/Makefile.tpl	Sun Oct 19 22:32:11 2025
*************** local-distclean:
*** 979,985 ****
  	-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
  	-rmdir c++tools fastjar gcc gnattools gotools 2>/dev/null
  	-rmdir libcc1 libiberty texinfo zlib 2>/dev/null
! 	-find . -name config.cache -exec rm -f {} \; \; 2>/dev/null
  
  local-maintainer-clean:
  	@echo "This command is intended for maintainers to use;"
--- 979,985 ----
  	-rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null
  	-rmdir c++tools fastjar gcc gnattools gotools 2>/dev/null
  	-rmdir libcc1 libiberty texinfo zlib 2>/dev/null
! 	-find . -name config.cache -exec rm -f {} \; 2>/dev/null
  
  local-maintainer-clean:
  	@echo "This command is intended for maintainers to use;"
diff -Nrcpad gcc-16-20251012/contrib/ChangeLog gcc-16-20251019/contrib/ChangeLog
*** gcc-16-20251012/contrib/ChangeLog	Sun Oct 12 22:32:38 2025
--- gcc-16-20251019/contrib/ChangeLog	Sun Oct 19 22:32:11 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-10-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* gcc.doxy (INPUT): Add gcc/custom-sarif-properties
+ 
  2025-10-08  Jakub Jelinek  <jakub@redhat.com>
  
  	* unicode/README: Add HangulSyllableType.txt file to the
diff -Nrcpad gcc-16-20251012/contrib/gcc.doxy gcc-16-20251019/contrib/gcc.doxy
*** gcc-16-20251012/contrib/gcc.doxy	Sun Oct 12 22:32:38 2025
--- gcc-16-20251019/contrib/gcc.doxy	Sun Oct 19 22:32:11 2025
*************** WARN_LOGFILE           =
*** 478,484 ****
  # directories like "/usr/src/myproject". Separate the files or directories 
  # with spaces.
  
! INPUT                  = gcc gcc/analyzer gcc/diagnostics gcc/text-art
  
  # This tag can be used to specify the character encoding of the source files that 
  # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
--- 478,484 ----
  # directories like "/usr/src/myproject". Separate the files or directories 
  # with spaces.
  
! INPUT                  = gcc gcc/analyzer gcc/custom-sarif-properties gcc/diagnostics gcc/text-art
  
  # This tag can be used to specify the character encoding of the source files that 
  # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
diff -Nrcpad gcc-16-20251012/gcc/ChangeLog gcc-16-20251019/gcc/ChangeLog
*** gcc-16-20251012/gcc/ChangeLog	Sun Oct 12 22:32:38 2025
--- gcc-16-20251019/gcc/ChangeLog	Sun Oct 19 22:32:11 2025
***************
*** 1,3 ****
--- 1,657 ----
+ 2025-10-18  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* common.opt.urls: Regenerate.
+ 
+ 2025-10-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/119060
+ 	* builtins.cc (expand_builtin): Handle BUILT_IN_OBSERVABLE_CHKPT.
+ 	* builtins.def (BUILT_IN_OBSERVABLE_CHKPT): New.
+ 	* tree.cc (build_common_builtin_nodes): Build observable
+ 	checkpoint builtin.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* config/aarch64/aarch64-sve2.md
+ 	(widen_ssum<mode><Vnarrow>3): Update.
+ 	(widen_usum<mode><Vnarrow>3): Update.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* config/aarch64/aarch64-sve2.md: (widen_ssum<mode><Vnarrow>3): New.
+ 	(widen_usum<mode><Vnarrow>3): New.
+ 	* config/aarch64/iterators.md (Vnarrow): New, to match VNARROW.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* config/aarch64/aarch64-sve.md (widen_<sur>sum<mode><vsi2qi>3): New.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* config/rs6000/altivec.md (widen_usum<mode>3): Rename ...
+ 	(widen_usumv4si<mode>3): ... to this.
+ 	(widen_ssumv16qi3): Rename ...
+ 	(widen_ssumv4siv16qi3): ... to this.
+ 	(widen_ssumv8hi3): Rename ...
+ 	(widen_ssumv4siv8hi3): ... to this.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* config/ia64/vect.md (widen_usumv8qi3): Renamed ...
+ 	(widen_usumv4hiv8qi3): ... into this.
+ 	(widen_usumv4hi3): Renamed ...
+ 	(widen_usumv2siv4hi3): ... into this.
+ 	(widen_ssumv8qi3): Renamed ...
+ 	(widen_ssumv4hiv8qi3): ... into this.
+ 	(widen_ssumv4hi3): Renamed ...
+ 	(widen_ssumv2siv4hi3): ... into this.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* config/arm/iterators.md (v_double_width): New, matching
+ 	V_double_width.
+ 	* config/arm/neon.md (widen_ssum<mode>3): Renamed ...
+ 	(widen_ssum<v_double_width><mode>3, widen_ssum<V_widen_l><mode>3): ...
+ 	into these.
+ 	(widen_usum<mode>3): Renamed ...
+ 	(widen_usum<v_double_width><mode>3, widen_usum<V_widen_l><mode>3): ...
+ 	into these.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* config/aarch64/aarch64-simd.md (widen_ssum<mode><vsi2qi>3): New.
+ 	(widen_usum<mode><vsi2qi>3): New.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* config/aarch64/aarch64-simd.md (widen_ssum<mode>3): Change into..
+ 	(widen_ssum<Vdblw><mode>3, widen_ssum<Vwide><mode>3): ... these.
+ 	(widen_usum<mode>3): Change into ...
+ 	(widen_usum<Vdblw><mode>3, widen_usum<Vwide><mode>3): ... these.
+ 	* config/aarch64/iterators.md (Vdblw): New.
+ 	(Vwide): Extend to match VWIDE.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* doc/md.texi (widen_ssum@var{n}@var{m}3, widen_usum@var{n}@var{m}3):
+ 	Update docs.
+ 	* optabs.cc (expand_widen_pattern_expr): Add WIDEN_SUM_EXPR as widening.
+ 	* optabs.def (ssum_widen_optab, usum_widen_optab): Convert from direct
+ 	to a conversion optab.
+ 	* tree-vect-patterns.cc (vect_recog_widen_sum_pattern): Change
+ 	vect_supportable_direct_optab_p into vect_supportable_conv_optab_p.
+ 
+ 2025-10-18  Linsen Zhou  <i@lin.moe>
+ 
+ 	PR tree-optimization/122012
+ 	* tree-object-size.cc (check_for_plus_in_loops): Skip check
+ 	for the variable offset
+ 
+ 2025-10-17  David Faust  <david.faust@oracle.com>
+ 
+ 	PR target/122139
+ 	* config/bpf/bpf.cc (bpf_expand_setmem): Duplicate byte value
+ 	across to new mode when using larger modes for store.
+ 
+ 2025-10-17  Tamar Christina  <tamar.christina@arm.com>
+ 	    Jennifer Schmitz  <jschmitz@nvidia.com>
+ 
+ 	PR target/121604
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc (apply_predication):
+ 	Store gp_index.
+ 	(struct pmov_to_vector_lane_def): Mark instruction as has no GP.
+ 	* config/aarch64/aarch64-sve-builtins.h (function_instance::gp_value,
+ 	function_instance::inactive_values, function_instance::gp_index,
+ 	function_shape::has_gp_argument_p): New.
+ 	* config/aarch64/aarch64-sve-builtins.cc (gimple_folder::fold_pfalse):
+ 	Simplify code and use GP helpers.
+ 
+ 2025-10-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122308
+ 	* gimple-loop-jam.cc (tree_loop_unroll_and_jam): Do LIM
+ 	after applying unroll-and-jam.
+ 
+ 2025-10-17  Josef Melcr  <jmelcr02@gmail.com>
+ 
+ 	* Makefile.in: Add attr-callback.o to OBJS.
+ 	* builtin-attrs.def (ATTR_CALLBACK): Callback attr identifier.
+ 	(DEF_CALLBACK_ATTRIBUTE): Macro for callback attr creation.
+ 	(GOMP): Attr for libgomp functions.
+ 	(ATTR_CALLBACK_GOMP_LIST): ATTR_NOTHROW_LIST with GOMP callback
+ 	attr added.
+ 	* cgraph.cc (cgraph_add_edge_to_call_site_hash): Always hash the
+ 	callback-carrying edge.
+ 	(cgraph_node::get_edge): Always return the callback-carrying
+ 	edge.
+ 	(cgraph_edge::set_call_stmt): Add cascade for callback edges.
+ 	(symbol_table::create_edge): Allow callback edges to share call
+ 	stmts, initialize new flags.
+ 	(cgraph_edge::make_callback): New method, derives a new callback
+ 	edge.
+ 	(cgraph_edge::get_callback_carrying_edge): New method.
+ 	(cgraph_edge::first_callback_edge): Likewise.
+ 	(cgraph_edge::next_callback_edge): Likewise.
+ 	(cgraph_edge::purge_callback_edges): Likewise.
+ 	(cgraph_edge::redirect_callee): When redirecting a callback
+ 	edge, redirect its ref as well.
+ 	(cgraph_edge::redirect_call_stmt_to_callee): Add callback edge
+ 	redirection logic, set update_derived_edges to true hwne
+ 	redirecting the carrying edge.
+ 	(cgraph_node::remove_callers): Add cascade for callback edges.
+ 	(cgraph_edge::dump_edge_flags): Print callback flags.
+ 	(cgraph_node::verify_node): Add sanity checks for callback
+ 	edges.
+ 	* cgraph.h: Add new 1 bit flags and 16 bit callback_id to
+ 	cgraph_edge class.
+ 	* cgraphclones.cc (cgraph_edge::clone): Copy over callback data.
+ 	* cif-code.def (CALLBACK_EDGE): Add CIF_CALLBACK_EDGE code.
+ 	* ipa-cp.cc (purge_useless_callback_edges): New function,
+ 	deletes callback edges when necessary.
+ 	(ipcp_decision_stage): Call purge_useless_callback_edges.
+ 	* ipa-fnsummary.cc (ipa_call_summary_t::duplicate): Add
+ 	an exception for callback edges.
+ 	(analyze_function_body): Copy over summary from carrying to
+ 	callback edge.
+ 	* ipa-inline-analysis.cc (do_estimate_growth_1): Skip callback
+ 	edges when estimating growth.
+ 	* ipa-inline-transform.cc (inline_transform): Add redirection
+ 	cascade for callback edges.
+ 	* ipa-param-manipulation.cc
+ 	(drop_decl_attribute_if_params_changed_p): New function.
+ 	(ipa_param_adjustments::build_new_function_type): Add
+ 	args_modified out param.
+ 	(ipa_param_adjustments::adjust_decl): Drop callback attrs when
+ 	modifying args.
+ 	* ipa-param-manipulation.h: Adjust decl of
+ 	build_new_function_type.
+ 	* ipa-prop.cc (ipa_duplicate_jump_function): Add decl.
+ 	(init_callback_edge_summary): New function.
+ 	(ipa_compute_jump_functions_for_edge): Add callback edge
+ 	creation logic.
+ 	* lto-cgraph.cc (lto_output_edge): Stream out callback data.
+ 	(input_edge): Input callback data.
+ 	* omp-builtins.def (BUILT_IN_GOMP_PARALLEL_LOOP_STATIC): Use new
+ 	attr list.
+ 	(BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED): Likewise.
+ 	(BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_DYNAMIC): Likewise.
+ 	(BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME): Likewise.
+ 	(BUILT_IN_GOMP_PARALLEL): Likewise.
+ 	(BUILT_IN_GOMP_PARALLEL_SECTIONS): Likewise.
+ 	(BUILT_IN_GOMP_TEAMS_REG): Likewise.
+ 	* tree-core.h (ECF_CB_1_2): New constant for callback(1,2).
+ 	* tree-inline.cc (copy_bb): Copy callback edges when copying the
+ 	carrying edge.
+ 	(redirect_all_calls): Redirect callback edges.
+ 	* tree.cc (set_call_expr_flags): Create callback attr according
+ 	to the ECF_CB flag.
+ 	* attr-callback.cc: New file.
+ 	* attr-callback.h: New file.
+ 
+ 2025-10-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122301
+ 	* tree-vect-patterns.cc (vect_recog_over_widening_pattern):
+ 	Fix reduction guard.
+ 	(vect_mark_pattern_stmts): Fix reduction def check.
+ 
+ 2025-10-17  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR tree-optimization/104116
+ 	* tree-vect-patterns.cc (add_code_for_floorceilround_divmod): patt recog
+ 	for {FLOOR,ROUND,CEIL}_{DIV,MOD}_EXPR.
+ 	(vect_recog_divmod_pattern): Call add_code_for_floorceilround_divmod
+ 	after computing div/mod for each control path.
+ 
+ 2025-10-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122296
+ 	* match.pd (`(a != b) | ((a|b) != 0)`): Reuse both
+ 	the ior and zero instead of recreating them.
+ 	(`(a == b) & ((a|b) == 0)`): Likewise
+ 
+ 2025-10-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122296
+ 	* match.pd (`(a == b) | ((a|b) != 0)`): Fix true value.
+ 
+ 2025-10-17  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	PR target/122119
+ 	* config/i386/amxmovrsintrin.h
+ 	(_tile_loaddrs_internal): Use __PTRDIFF_TYPE__ instead of long.
+ 	(_tile_loaddrst1_internal): Ditto.
+ 
+ 2025-10-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (OBJS-libcommon): Add
+ 	custom-sarif-properties/digraphs.o and
+ 	custom-sarif-properties/state-graphs.o.  Remove
+ 	diagnostics/state-graphs.o.
+ 	* configure: Regenerate.
+ 	* configure.ac: Add custom-sarif-properties to subdir iteration.
+ 	* custom-sarif-properties/digraphs.cc: New file.
+ 	* custom-sarif-properties/digraphs.h: New file.
+ 	* custom-sarif-properties/state-graphs.cc: New file.
+ 	* custom-sarif-properties/state-graphs.h: New file.
+ 	* diagnostics/diagnostics-selftests.cc
+ 	(run_diagnostics_selftests): Drop call of state_graphs_cc_tests.
+ 	* diagnostics/diagnostics-selftests.h (state_graphs_cc_tests):
+ 	Delete decl.
+ 	* diagnostics/digraphs.cc: Include
+ 	"custom-sarif-properties/digraphs.h".  Move include of
+ 	"selftest.h" to within CHECKING_P section.
+ 	(using digraph_object): New.
+ 	(namespace properties): New.
+ 	(diagnostics::digraphs::object::get_attr): Delete.
+ 	(diagnostics::digraphs::object::set_attr): Delete.
+ 	(diagnostics::digraphs::object::set_json_attr): Delete.
+ 	(digraph_object::get_property): New definitions, for various
+ 	property types.
+ 	(digraph_object::set_property): Likewise.
+ 	(digraph_object::maybe_get_property): New.
+ 	(digraph_object::get_property_as_tristate): New.
+ 	(digraph_object::ensure_property_bag): New.
+ 	(digraph::get_graph_kind): New.
+ 	(digraph::set_graph_kind): New.
+ 	Add include of "custom-sarif-properties/state-graphs.h".
+ 	(selftest::test_simple_graph): Rewrite to use json::property
+ 	instances rather than string attribute names.
+ 	(selftest::test_property_objects): New test.
+ 	(selftest::digraphs_cc_tests): Call it.
+ 	* diagnostics/digraphs.h: Include "tristate.h".
+ 	(object::get_attr): Delete.
+ 	(object::set_attr): Delete.
+ 	(object::get_property): New decls.
+ 	(object::set_property): New decls.
+ 	(object::maybe_get_property): New.
+ 	(object::get_property_as_tristate): New.
+ 	(object::set_json_attr): Delete.
+ 	(object::ensure_property_bag): New.
+ 	(graph::get_graph_kind): New.
+ 	(graph::set_graph_kind): New.
+ 	* diagnostics/html-sink.cc
+ 	(html_generation_options::html_generation_options): Update for
+ 	field renamings.
+ 	(html_generation_options::dump): Likewise.
+ 	(html_builder::maybe_make_state_diagram): Likewise.
+ 	(html_builder::add_graph): Show SARIF and .dot src inline, if
+ 	requested.
+ 	* diagnostics/html-sink.h
+ 	(html_generation_options::m_show_state_diagrams_sarif): Rename
+ 	to...
+ 	(html_generation_options::m_show_graph_sarif): ...this.
+ 	(html_generation_options::m_show_state_diagrams_dot_src): Rename
+ 	to...
+ 	(html_generation_options::m_show_graph_dot_src0): ...this.
+ 	* diagnostics/output-spec.cc
+ 	(html_scheme_handler::maybe_handle_kv): Rename keys.
+ 	(html_scheme_handler::get_keys): Likewise.
+ 	* diagnostics/state-graphs-to-dot.cc: : Reimplement throughout to
+ 	use json::property instances found within custom_sarif_properties
+ 	throughout, rather than types in diagnostics::state_graphs.
+ 	* diagnostics/state-graphs.cc: Deleted file.
+ 	* diagnostics/state-graphs.h: Delete almost all, except decl of
+ 	diagnostics::state_graphs::make_dot_graph.
+ 	* doc/invoke.texi: Update for changes to "experimental-html" sink
+ 	keys.
+ 	* json.cc (json::object::set_string): New.
+ 	(json::object::set_integer): New.
+ 	(json::object::set_bool): New.
+ 	(json::object::set_array_of_string): New.
+ 	* json.h: Include "label-text.h".
+ 	(struct json::property): New template.
+ 	(json::string_property): New.
+ 	(json::integer_property): New.
+ 	(json::bool_property): New.
+ 	(json::json_property): New.
+ 	(using json::array_of_string_property): New.
+ 	(struct json::enum_traits): New.
+ 	(enum_json::property): New.
+ 	(json::value::dyn_cast_array): New vfunc.
+ 	(json::value::dyn_cast_integer_number): New vfunc.
+ 	(json::value::set_string): New.
+ 	(json::value::set_integer): New.
+ 	(json::value::set_bool): New.
+ 	(json::value::set_array_of_string): New.
+ 	(json::value::maybe_get_enum): New.
+ 	(json::value::set_enum): New.
+ 	(json::array::dyn_cast_array): New.
+ 	(json::integer_number::dyn_cast_integer_number): New.
+ 	(object::maybe_get_enum): New.
+ 	(object::set_enum): New.
+ 
+ 2025-10-16  Ayappan Perumal  <ayappap2@in.ibm.com>
+ 
+ 	* config/rs6000/aix.h (SUBTARGET_DRIVER_SELF_SPECS):
+ 	Error out when stack-protector option is used in AIX
+ 	as it is not supported on AIX
+ 	Approved By: Segher Boessenkool <segher@kernel.crashing.org>
+ 
+ 2025-10-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122292
+ 	* tree-vect-loop.cc (vect_transform_reduction): Compute the
+ 	input vector type the same way the analysis phase does.
+ 
+ 2025-10-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/121468
+ 	PR tree-optimization/121206
+ 	PR tree-optimization/122200
+ 	* value-range.cc (irange_bitmask::range_from_mask): New.
+ 	(irange::snap): Add explicit overflow flag.
+ 	(irange::snap_subranges): Use overflow flag.
+ 	(irange::set_range_from_bitmask): Use range_from_mask.
+ 	(test_irange_snap_bounds): Adjust for improved ranges.
+ 	* value-range.h (irange::range_from_mask): Add prototype.
+ 	(irange::snap): Adjust prototype.
+ 
+ 2025-10-15  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* config/gcn/gcn-devices.def (gfx942, gfx950): Set generic name
+ 	to GFX9_4_GENERIC.
+ 	* config/gcn/t-omp-device: Include generic names for OpenMP's
+ 	ISA trait.
+ 
+ 2025-10-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* print-tree.cc (print_node): Print out clique/base
+ 	for MEM_REF and TARGET_MEM_REF.
+ 
+ 2025-10-15  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/118460
+ 	* config/arm/arm.cc (arm_canonicalize_comparison): For floating-
+ 	point comparisons, swap the operand order if that will be more
+ 	likely to produce a comparison that can be used with VSEL.
+ 	(arm_validize_comparison): Make sure that HFmode comparisons
+ 	are compatible with VSEL.
+ 
+ 2025-10-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122037
+ 	* tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
+ 	__builtin_stack_save when the lhs is unused.
+ 
+ 2025-10-15  Alice Carlotti  <alice.carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-sys-regs.def: Copy from Binutils.
+ 	* config/aarch64/aarch64.cc (F_ARCHEXT): Delete flag.
+ 	* config/aarch64/aarch64.h
+ 	(AARCH64_FL_AMU): Delete unused macro.
+ 	(AARCH64_FL_SCXTNUM): Ditto.
+ 	(AARCH64_FL_ID_PFR2): Ditto.
+ 	(AARCH64_FL_AIE): Ditto.
+ 	(AARCH64_FL_DEBUGv8p9): Ditto.
+ 	(AARCH64_FL_FGT2): Ditto.
+ 	(AARCH64_FL_PFAR): Ditto.
+ 	(AARCH64_FL_PMUv3_ICNTR): Ditto.
+ 	(AARCH64_FL_PMUv3_SS): Ditto.
+ 	(AARCH64_FL_PMUv3p9): Ditto.
+ 	(AARCH64_FL_S1PIE): Ditto.
+ 	(AARCH64_FL_S1POE): Ditto.
+ 	(AARCH64_FL_S2PIE): Ditto.
+ 	(AARCH64_FL_S2POE): Ditto.
+ 	(AARCH64_FL_SCTLR2): Ditto.
+ 	(AARCH64_FL_SEBEP): Ditto.
+ 	(AARCH64_FL_SPE_FDS): Ditto.
+ 	(AARCH64_FL_TCR2): Ditto.
+ 
+ 2025-10-15  Sebastian Pop  <spop@nvidia.com>
+ 
+ 	* doc/invoke.texi (ftree-parallelize-loops): Update.
+ 	* common.opt (ftree-parallelize-loops): Add alias that maps to
+ 	special value INT_MAX for runtime thread detection.
+ 	* tree-parloops.cc (create_parallel_loop): Use INT_MAX for runtime
+ 	detection.  Call gimple_build_omp_parallel without building a
+ 	OMP_CLAUSE_NUM_THREADS clause.
+ 	(gen_parallel_loop): For auto-detection, use a conservative
+ 	estimate of 2 threads.
+ 	(parallelize_loops): Same.
+ 
+ 2025-10-15  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122189
+ 	* config/arm/iterators.md (VxCIQ_carry, VxCIQ_M_carry, VxCQ_carry)
+ 	(VxCQ_M_carry): New iterators.
+ 	* config/arm/mve.md (get_fpscr_nzcvqc, set_fpscr_nzcvqc): Use
+ 	unspec instead of unspec_volatile.
+ 	(vadciq, vadciq_m, vadcq, vadcq_m): Use vfpcc in operation.  Use a
+ 	different unspec code for carry calcultation.
+ 	* config/arm/unspecs.md (VADCQ_U_carry, VADCQ_M_U_carry)
+ 	(VADCQ_S_carry, VADCQ_M_S_carry, VSBCIQ_U_carry ,VSBCIQ_S_carry
+ 	,VSBCIQ_M_U_carry ,VSBCIQ_M_S_carry ,VSBCQ_U_carry ,VSBCQ_S_carry
+ 	,VSBCQ_M_U_carry ,VSBCQ_M_S_carry ,VADCIQ_U_carry
+ 	,VADCIQ_M_U_carry ,VADCIQ_S_carry ,VADCIQ_M_S_carry): New unspec
+ 	codes.
+ 
+ 2025-10-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/122266
+ 	* combine.cc (struct reg_stat_type): Change types of sign_bit_copies
+ 	and last_set_sign_bit_copies to unsigned short, to avoid overflows
+ 	on TImode (and wider) values.
+ 
+ 2025-10-15  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* auto-profile.cc (scale_bb_profile): Use
+ 	profile_count::max_prefer_initialized.
+ 	(afdo_adjust_guessed_profile): Likewise.
+ 	* bb-reorder.cc (edge_order): Do not use max.
+ 	* cfghooks.cc (merge_blocks): Likewise.
+ 	* ipa-fnsummary.cc (param_change_prob): Likewise.
+ 	* ipa-inline-transform.cc (inline_transform): Likewise.
+ 	* predict.cc (update_max_bb_count): Likewise.
+ 	(estimate_bb_frequencies): Likewise.
+ 	(rebuild_frequencies): Likewise.
+ 	* tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Likewise.
+ 	* profile-count.h (profile_count::max): Rename to
+ 	(profile_count::max_prefer_initialized): this; update handling
+ 	of qualities.
+ 
+ 2025-10-15  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h
+ 	(get_intel_cpu): Handle Wildcat Lake.
+ 	* common/config/i386/i386-common.cc (processor_name):
+ 	Add Wildcat Lake.
+ 	* doc/invoke.texi: Ditto.
+ 
+ 2025-10-15  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/i386.h
+ 	(PTA_PANTHERLAKE): Remove PREFETCHI.
+ 	(PTA_DIAMONDRAPIDS): Remove USER_MSR.
+ 	* doc/invoke.texi: Correct documentation.
+ 
+ 2025-10-15  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/autovec-opt.md: Take concrete op instead
+ 	of any_widen_binop for vwaddu/vwsubu wx combine.
+ 
+ 2025-10-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (REDUC_GROUP_FIRST_ELEMENT,
+ 	REDUC_GROUP_NEXT_ELEMENT, REDUC_GROUP_SIZE): Remove.
+ 	* tree-vect-slp.cc (REDUC_GROUP_FIRST_ELEMENT): Re-instantiate
+ 	here.
+ 
+ 2025-10-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_analyze_slp_reduction): Move
+ 	reduction chain discovery ...
+ 	(vect_analyze_slp_reduc_chain): ... here.
+ 
+ 2025-10-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vect_create_epilog_for_reduction): Move
+ 	bitsize compute down to where it is used and consistently
+ 	use vectype1 for element extraction.
+ 
+ 2025-10-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/121949
+ 	* tree-vect-patterns.cc (vect_recog_vector_vector_shift_pattern): Remove
+ 	restriction on internal_def.
+ 
+ 2025-10-14  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	* tree-vect-stmts.cc (get_load_store_type): Add load-permutation
+ 	checks and setting of slp_perm.
+ 	(vectorizable_store): Remove perm_ok argument.
+ 	(vectorizable_load): Ditto and replace slp_perm by ls.slp_perm.
+ 	* tree-vectorizer.h (struct vect_load_store_data): Add slp_perm.
+ 
+ 2025-10-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (vect_reduc_info_s::is_reduc_chain): New.
+ 	(_loop_vec_info::reduction_chains): Remove.
+ 	(LOOP_VINFO_REDUCTION_CHAINS): Likewise.
+ 	* tree-vect-patterns.cc (vect_reassociating_reduction_p):
+ 	Do not special-case reduction group stmts.
+ 	* tree-vect-loop.cc (vect_is_simple_reduction): Remove
+ 	reduction chain handling.
+ 	(vect_analyze_scalar_cycles_1): Remove slp parameter and adjust.
+ 	(vect_analyze_scalar_cycles): Likewise.
+ 	(vect_fixup_reduc_chain): Remove.
+ 	(vect_fixup_scalar_cycles_with_patterns): Likewise.
+ 	(vect_analyze_loop_2): Adjust.
+ 	(vect_create_epilog_for_reduction): Check the reduction info
+ 	for whether this is a reduction chain.
+ 	(vect_transform_cycle_phi): Likewise.
+ 	(vectorizable_reduction): Likewise.  Simplify code for all-SLP.
+ 	* tree-vect-slp.cc (vect_analyze_slp_reduc_chain): Simplify.
+ 	(vect_analyze_slp_reduction): New function, perform reduction
+ 	chain discovery here.
+ 	(vect_analyze_slp): Remove reduction chain handling.
+ 	Use vect_analyze_slp_reduction for possible reduction chain
+ 	processing.
+ 
+ 2025-10-14  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h
+ 	(get_available_features): Remove AMX-TRANSPOSE.
+ 	* common/config/i386/i386-common.cc
+ 	(OPTION_MASK_ISA2_AMX_TRANSPOSE_SET): Removed.
+ 	(OPTION_MASK_ISA2_AMX_TRANSPOSE_UNSET): Ditto.
+ 	(ix86_handle_option): Remove amx-transpose handle.
+ 	* common/config/i386/i386-cpuinfo.h
+ 	(enum processor_features): Remove FEATURE_AMX_TRANSPOSE.
+ 	Set FEATURE_AMX_MOVRS value.
+ 	* common/config/i386/i386-isas.h: Remove AMX-TRANSPOSE.
+ 	* config.gcc: Do not include amxtransposeintrin.h.
+ 	* config/i386/amxmovrsintrin.h: Remove AMX-TRANSPOSE intrins.
+ 	* config/i386/amxtransposeintrin.h: Ditto.
+ 	* config/i386/cpuid.h (bit_AMX_TRANSPOSE): Removed.
+ 	* config/i386/i386.h (PTA_DIAMONDRAPIDS): Remove AMX-TRANSPOSE.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Remove
+ 	AMX_TRANSPOSE.
+ 	* config/i386/i386-isa.def (AMX_TRANSPOSE): Removed.
+ 	* config/i386/i386-options.cc
+ 	(ix86_valid_target_attribute_inner_p): Remove AMX-TRANSPOSE.
+ 	* config/i386/i386.opt: Ditto.
+ 	* config/i386/i386.opt.urls: Ditto.
+ 	* config/i386/immintrin.h: Remove amxtransposeintrin.h.
+ 	* doc/extend.texi: Remove amx-transpose.
+ 	* doc/invoke.texi: Ditto.
+ 	* doc/sourcebuild.texi: Ditto.
+ 
+ 2025-10-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-phiopt.cc (pass_phiopt::execute): Disable
+ 	cselim-limited and factor out operations for -Og.
+ 
+ 2025-10-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122178
+ 	* tree-ssa-phiopt.cc (cond_if_else_store_replacement_1): Handle
+ 	clobber statements.
+ 
+ 2025-10-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122182
+ 	* tree-ssa-dom.cc (cprop_operand): Don't check may_propagate_copy_into_asm.
+ 	* tree-ssa-propagate.cc (substitute_and_fold_engine::replace_uses_in): Don't
+ 	check may_propagate_copy_into_asm.
+ 	(may_propagate_copy_into_asm): Remove.
+ 	* tree-ssa-propagate.h (may_propagate_copy_into_asm): Remove.
+ 
+ 2025-10-14  Zhongyao Chen  <chenzhongyao.hit@gmail.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_subset_list::get_profile_name):
+ 	New function.
+ 	* config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Define
+ 	profile macro if a profile is detected.
+ 	* config/riscv/riscv-subset.h (riscv_subset_list::get_profile_name): Declare.
+ 
+ 2025-10-13  Shreya Munnangi  <smunnangi1@ventanamicro.com>
+ 
+ 	PR target/120811
+ 	* config/riscv/riscv.cc (synthesize_add): Exchange constant terms when
+ 	generating addi pairs.
+ 	(synthesize_addsi): Similarly.
+ 	* config/riscv/riscv.md (addptr<mode>3): New define_expand.
+ 	(*add<mode>3_const_sum_of_two_s12): Remove pattern.
+ 
+ 2025-10-13  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/120674
+ 	* config/riscv/riscv.cc (riscv_dwarf_poly_indeterminite_value): Do not
+ 	set FACTOR to zero, for that case use one instead.
+ 
+ 2025-10-13  Pan Li  <pan2.li@intel.com>
+ 
+ 	* match.pd: Add simplifed pattern for widen_mul based unsigned
+ 	SAT_MUL.
+ 
+ 2025-10-13  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-inline.cc (max_count): Remove.
+ 	(has_nonzero_ipa_profile): New.
+ 	(inline_small_functions): Update.
+ 	(dump_inline_stats): Update.
+ 
+ 2025-10-13  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR target/118019
+ 	* internal-fn.cc (get_supported_else_vals): Exit at invalid
+ 	index.
+ 	(internal_strided_fn_supported_p): New funtion.
+ 	* internal-fn.h (internal_strided_fn_supported_p): Declare.
+ 	* tree-vect-stmts.cc (vector_vector_composition_type):
+ 	Add vector_only argument.
+ 	(vect_use_grouped_gather): New function.
+ 	(vect_get_store_rhs): Adjust docs of
+ 	vector_vector_composition_type.
+ 	(get_load_store_type): Try grouped gather.
+ 	(vectorizable_store): Use punned vectype.
+ 	(vectorizable_load): Ditto.
+ 	* tree-vectorizer.h (struct vect_load_store_data): Add punned
+ 	vectype.
+ 
+ 2025-10-13  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR tree-optimization/122213
+ 	* match.pd: Canonicalize unsigned pow2 div only for trunk, floor and
+ 	exact div.
+ 
+ 2025-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-patterns.cc (integer_type_for_mask): Add optional
+ 	output dt argument.
+ 	(vect_recog_bool_pattern): Make sure to not apply the bitwise
+ 	binary pattern to an external operand.
+ 
  2025-10-11  Bohan Lei  <garthlei@linux.alibaba.com>
  
  	PR target/119587
diff -Nrcpad gcc-16-20251012/gcc/DATESTAMP gcc-16-20251019/gcc/DATESTAMP
*** gcc-16-20251012/gcc/DATESTAMP	Sun Oct 12 22:32:38 2025
--- gcc-16-20251019/gcc/DATESTAMP	Sun Oct 19 22:32:12 2025
***************
*** 1 ****
! 20251012
--- 1 ----
! 20251019
diff -Nrcpad gcc-16-20251012/gcc/Makefile.in gcc-16-20251019/gcc/Makefile.in
*** gcc-16-20251012/gcc/Makefile.in	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/Makefile.in	Sun Oct 19 22:32:12 2025
*************** OBJS = \
*** 1853,1858 ****
--- 1853,1859 ----
  	web.o \
  	wide-int.o \
  	wide-int-print.o \
+ 	attr-callback.o \
  	$(out_object_file) \
  	$(ANALYZER_OBJS) \
  	$(EXTRA_OBJS) \
*************** OBJS = \
*** 1861,1866 ****
--- 1862,1869 ----
  # Objects in libcommon.a, potentially used by all host binaries and with
  # no target dependencies.
  OBJS-libcommon = \
+ 	custom-sarif-properties/digraphs.o \
+ 	custom-sarif-properties/state-graphs.o \
  	diagnostic-global-context.o \
  	diagnostics/buffering.o \
  	diagnostics/changes.o \
*************** OBJS-libcommon = \
*** 1880,1886 ****
  	diagnostics/paths.o \
  	diagnostics/paths-output.o \
  	diagnostics/source-printing.o \
- 	diagnostics/state-graphs.o \
  	diagnostics/state-graphs-to-dot.o \
  	diagnostics/selftest-context.o \
  	diagnostics/selftest-logical-locations.o \
--- 1883,1888 ----
diff -Nrcpad gcc-16-20251012/gcc/ada/ChangeLog gcc-16-20251019/gcc/ada/ChangeLog
*** gcc-16-20251012/gcc/ada/ChangeLog	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/ada/ChangeLog	Sun Oct 19 22:32:12 2025
***************
*** 1,3 ****
--- 1,16 ----
+ 2025-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/122295
+ 	* sem_ch12.adb (Analyze_Package_Instantiation): Force Style_Check
+ 	to False only after possibly installing the parent.
+ 	* aspects.adb (UAD_Pragma_Map): Fix style violation.
+ 	* inline.adb (To_Pending_Instantiations): Likewise.
+ 	* lib.ads (Unit_Names): Likewise.
+ 	* repinfo.adb (Relevant_Entities): Likewise.
+ 	* sem_ch7.adb (Subprogram_Table): Likewise.
+ 	(Traversed_Table): Likewise.
+ 	* sem_util.adb (Interval_Sorting): Likewise.
+ 
  2025-10-07  Eric Botcazou  <ebotcazou@adacore.com>
  
  	Revert:
diff -Nrcpad gcc-16-20251012/gcc/ada/aspects.adb gcc-16-20251019/gcc/ada/aspects.adb
*** gcc-16-20251012/gcc/ada/aspects.adb	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/ada/aspects.adb	Sun Oct 19 22:32:12 2025
*************** package body Aspects is
*** 578,584 ****
          return UAD_Pragma_Map_Header
        is (UAD_Pragma_Map_Header (Chars mod UAD_Pragma_Map_Size));
  
!       package UAD_Pragma_Map is new GNAT.Htable.Simple_Htable
          (Header_Num => UAD_Pragma_Map_Header,
           Key        => Name_Id,
           Element    => Opt_N_Pragma_Id,
--- 578,584 ----
          return UAD_Pragma_Map_Header
        is (UAD_Pragma_Map_Header (Chars mod UAD_Pragma_Map_Size));
  
!       package UAD_Pragma_Map is new GNAT.HTable.Simple_HTable
          (Header_Num => UAD_Pragma_Map_Header,
           Key        => Name_Id,
           Element    => Opt_N_Pragma_Id,
diff -Nrcpad gcc-16-20251012/gcc/ada/inline.adb gcc-16-20251019/gcc/ada/inline.adb
*** gcc-16-20251012/gcc/ada/inline.adb	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/ada/inline.adb	Sun Oct 19 22:32:12 2025
*************** package body Inline is
*** 151,157 ****
     function Node_Hash (Id : Node_Id) return Node_Header_Num;
     --  Simple hash function for Node_Ids
  
!    package To_Pending_Instantiations is new GNAT.Htable.Simple_HTable
       (Header_Num => Node_Header_Num,
        Element    => Int,
        No_Element => -1,
--- 151,157 ----
     function Node_Hash (Id : Node_Id) return Node_Header_Num;
     --  Simple hash function for Node_Ids
  
!    package To_Pending_Instantiations is new GNAT.HTable.Simple_HTable
       (Header_Num => Node_Header_Num,
        Element    => Int,
        No_Element => -1,
diff -Nrcpad gcc-16-20251012/gcc/ada/lib.ads gcc-16-20251019/gcc/ada/lib.ads
*** gcc-16-20251012/gcc/ada/lib.ads	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/ada/lib.ads	Sun Oct 19 22:32:12 2025
*************** private
*** 901,907 ****
     function Unit_Name_Hash (Id : Unit_Name_Type) return Unit_Name_Header_Num;
     --  Simple hash function for Unit_Name_Types
  
!    package Unit_Names is new GNAT.Htable.Simple_HTable
       (Header_Num => Unit_Name_Header_Num,
        Element    => Unit_Number_Type,
        No_Element => No_Unit,
--- 901,907 ----
     function Unit_Name_Hash (Id : Unit_Name_Type) return Unit_Name_Header_Num;
     --  Simple hash function for Unit_Name_Types
  
!    package Unit_Names is new GNAT.HTable.Simple_HTable
       (Header_Num => Unit_Name_Header_Num,
        Element    => Unit_Number_Type,
        No_Element => No_Unit,
diff -Nrcpad gcc-16-20251012/gcc/ada/repinfo.adb gcc-16-20251019/gcc/ada/repinfo.adb
*** gcc-16-20251012/gcc/ada/repinfo.adb	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/ada/repinfo.adb	Sun Oct 19 22:32:13 2025
*************** package body Repinfo is
*** 119,125 ****
     function Entity_Hash (Id : Entity_Id) return Entity_Header_Num;
     --  Simple hash function for Entity_Ids
  
!    package Relevant_Entities is new GNAT.Htable.Simple_HTable
       (Header_Num => Entity_Header_Num,
        Element    => Boolean,
        No_Element => False,
--- 119,125 ----
     function Entity_Hash (Id : Entity_Id) return Entity_Header_Num;
     --  Simple hash function for Entity_Ids
  
!    package Relevant_Entities is new GNAT.HTable.Simple_HTable
       (Header_Num => Entity_Header_Num,
        Element    => Boolean,
        No_Element => False,
diff -Nrcpad gcc-16-20251012/gcc/ada/sem_ch12.adb gcc-16-20251019/gcc/ada/sem_ch12.adb
*** gcc-16-20251012/gcc/ada/sem_ch12.adb	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/ada/sem_ch12.adb	Sun Oct 19 22:32:13 2025
*************** package body Sem_Ch12 is
*** 4990,5003 ****
  
        Preanalyze_Actuals (N, Act_Decl_Id);
  
-       --  Turn off style checking in instances. If the check is enabled on the
-       --  generic unit, a warning in an instance would just be noise. If not
-       --  enabled on the generic, then a warning in an instance is just wrong.
-       --  This must be done after analyzing the actuals, which do come from
-       --  source and are subject to style checking.
- 
-       Style_Check := False;
- 
        Init_Env;
        Env_Installed := True;
  
--- 4990,4995 ----
*************** package body Sem_Ch12 is
*** 5016,5021 ****
--- 5008,5021 ----
           Check_Generic_Child_Unit (Gen_Id, Parent_Installed);
        end if;
  
+       --  Turn off style checking in instances. If the check is enabled on the
+       --  generic unit, a warning in an instance would just be noise. If not
+       --  enabled on the generic, then a warning in an instance is just wrong.
+       --  This must be done after analyzing the actuals and possibly installing
+       --  the parent, which come from source and are subject to style checking.
+ 
+       Style_Check := False;
+ 
        Gen_Unit := Entity (Gen_Id);
  
        --  A package instantiation is Ghost when it is subject to pragma Ghost
diff -Nrcpad gcc-16-20251012/gcc/ada/sem_ch7.adb gcc-16-20251019/gcc/ada/sem_ch7.adb
*** gcc-16-20251012/gcc/ada/sem_ch7.adb	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/ada/sem_ch7.adb	Sun Oct 19 22:32:13 2025
*************** package body Sem_Ch7 is
*** 206,212 ****
     function Node_Hash (Id : Entity_Id) return Entity_Header_Num;
     --  Simple hash function for Entity_Ids
  
!    package Subprogram_Table is new GNAT.Htable.Simple_HTable
       (Header_Num => Entity_Header_Num,
        Element    => Boolean,
        No_Element => False,
--- 206,212 ----
     function Node_Hash (Id : Entity_Id) return Entity_Header_Num;
     --  Simple hash function for Entity_Ids
  
!    package Subprogram_Table is new GNAT.HTable.Simple_HTable
       (Header_Num => Entity_Header_Num,
        Element    => Boolean,
        No_Element => False,
*************** package body Sem_Ch7 is
*** 216,222 ****
     --  Hash table to record which subprograms are referenced. It is declared
     --  at library level to avoid elaborating it for every call to Analyze.
  
!    package Traversed_Table is new GNAT.Htable.Simple_HTable
       (Header_Num => Entity_Header_Num,
        Element    => Boolean,
        No_Element => False,
--- 216,222 ----
     --  Hash table to record which subprograms are referenced. It is declared
     --  at library level to avoid elaborating it for every call to Analyze.
  
!    package Traversed_Table is new GNAT.HTable.Simple_HTable
       (Header_Num => Entity_Header_Num,
        Element    => Boolean,
        No_Element => False,
diff -Nrcpad gcc-16-20251012/gcc/ada/sem_util.adb gcc-16-20251019/gcc/ada/sem_util.adb
*** gcc-16-20251012/gcc/ada/sem_util.adb	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/ada/sem_util.adb	Sun Oct 19 22:32:13 2025
*************** package body Sem_Util is
*** 31148,31154 ****
           ----------------------
  
           package Interval_Sorting is
!            new Gnat.Heap_Sort_G (Move_Interval, Lt_Interval);
  
           -------------
           -- Is_Null --
--- 31148,31154 ----
           ----------------------
  
           package Interval_Sorting is
!            new GNAT.Heap_Sort_G (Move_Interval, Lt_Interval);
  
           -------------
           -- Is_Null --
diff -Nrcpad gcc-16-20251012/gcc/analyzer/ChangeLog gcc-16-20251019/gcc/analyzer/ChangeLog
*** gcc-16-20251012/gcc/analyzer/ChangeLog	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/analyzer/ChangeLog	Sun Oct 19 22:32:13 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-10-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* ana-state-to-diagnostic-state.cc: Reimplement throughout to use
+ 	json::property instances found within custom_sarif_properties
+ 	throughout, rather than types in diagnostics::state_graphs.
+ 	* ana-state-to-diagnostic-state.h: Likewise.
+ 	* checker-event.cc: Likewise.
+ 	* sm-malloc.cc: Likewise.
+ 
  2025-10-09  David Malcolm  <dmalcolm@redhat.com>
  
  	* access-diagram.cc: Update for renaming of fields of binding_key.
diff -Nrcpad gcc-16-20251012/gcc/analyzer/ana-state-to-diagnostic-state.cc gcc-16-20251019/gcc/analyzer/ana-state-to-diagnostic-state.cc
*** gcc-16-20251012/gcc/analyzer/ana-state-to-diagnostic-state.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/analyzer/ana-state-to-diagnostic-state.cc	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 39,76 ****
  
  namespace ana {
  
! using namespace ::diagnostics::state_graphs;
  
  static void
! set_wi_attr (state_node_ref state_node,
! 	     const char *attr_name,
  	     const wide_int_ref &w,
  	     signop sgn)
  {
    pretty_printer pp;
    pp_wide_int (&pp, w, sgn);
!   state_node.set_attr (attr_name, pp_formatted_text (&pp));
  }
  
  static void
! set_type_attr (state_node_ref state_node, const_tree type)
  {
    gcc_assert (type);
    pretty_printer pp;
    pp_format_decoder (&pp) = default_tree_printer;
    pp_printf (&pp, "%T", type);
!   state_node.set_type (pp_formatted_text (&pp));
  }
  
  static void
! set_bits_attr (state_node_ref state_node,
  	       bit_range bits)
  {
    pretty_printer pp;
    bits.dump_to_pp (&pp);
!   state_node.set_attr ("bits", pp_formatted_text (&pp));
  }
  
  // class analyzer_state_graph : public diagnostics::digraphs::digraph
  
  analyzer_state_graph::analyzer_state_graph (const program_state &state,
--- 39,93 ----
  
  namespace ana {
  
! namespace node_properties = custom_sarif_properties::state_graphs::node;
  
  static void
! set_wi_attr (diagnostics::digraphs::node &state_node,
! 	     const json::string_property &property,
  	     const wide_int_ref &w,
  	     signop sgn)
  {
    pretty_printer pp;
    pp_wide_int (&pp, w, sgn);
!   state_node.set_property (property, pp_formatted_text (&pp));
  }
  
  static void
! set_type_attr (diagnostics::digraphs::node &state_node,
! 	       const_tree type)
  {
    gcc_assert (type);
    pretty_printer pp;
    pp_format_decoder (&pp) = default_tree_printer;
    pp_printf (&pp, "%T", type);
!   state_node.set_property (node_properties::type,
! 			   pp_formatted_text (&pp));
  }
  
  static void
! set_bits_attr (diagnostics::digraphs::node & state_node,
  	       bit_range bits)
  {
    pretty_printer pp;
    bits.dump_to_pp (&pp);
!   state_node.set_property (node_properties::bits,
! 			   pp_formatted_text (&pp));
! }
! 
! static void
! set_value_attrs (diagnostics::digraphs::node &state_node,
! 		 const svalue &sval)
! {
!   state_node.set_property (node_properties::value,
! 			   sval.to_json ());
!   pretty_printer pp;
!   pp_format_decoder (&pp) = default_tree_printer;
!   sval.dump_to_pp (&pp, true);
!   state_node.set_property (node_properties::value_str,
! 			   pp_formatted_text (&pp));
  }
  
+ 
  // class analyzer_state_graph : public diagnostics::digraphs::digraph
  
  analyzer_state_graph::analyzer_state_graph (const program_state &state,
*************** analyzer_state_graph::analyzer_state_gra
*** 141,174 ****
  
        /* Ensure we have a node for the dst region.  This
  	 could lead to additional pending edges.  */
!       auto dst_node = get_or_create_state_node (item.m_dst_reg);
!       add_edge (nullptr, item.m_src_node.m_node, dst_node.m_node);
      }
  }
  
! state_node_ref
  analyzer_state_graph::get_or_create_state_node (const region &reg)
  {
    auto existing = m_region_to_state_node_map.find (&reg);
    if (existing != m_region_to_state_node_map.end ())
      return *existing->second;
  
!   auto ref = create_and_add_state_node (reg);
!   m_region_to_state_node_map[&reg] = &ref.m_node;
!   return ref;
  }
  
! state_node_ref
  analyzer_state_graph::create_and_add_state_node (const region &reg)
  {
    auto node = create_state_node (reg);
  
!   state_node_ref result = *node;
    if (auto parent_reg = reg.get_parent_region ())
      if (parent_reg->get_kind () != RK_ROOT)
        {
! 	auto parent_state_node = get_or_create_state_node (*parent_reg);
! 	parent_state_node.m_node.add_child (std::move (node));
  	return result;
        }
    add_node (std::move (node));
--- 158,191 ----
  
        /* Ensure we have a node for the dst region.  This
  	 could lead to additional pending edges.  */
!       auto &dst_node = get_or_create_state_node (item.m_dst_reg);
!       add_edge (nullptr, item.m_src_node, dst_node);
      }
  }
  
! diagnostics::digraphs::node &
  analyzer_state_graph::get_or_create_state_node (const region &reg)
  {
    auto existing = m_region_to_state_node_map.find (&reg);
    if (existing != m_region_to_state_node_map.end ())
      return *existing->second;
  
!   auto &state_node = create_and_add_state_node (reg);
!   m_region_to_state_node_map[&reg] = &state_node;
!   return state_node;
  }
  
! diagnostics::digraphs::node &
  analyzer_state_graph::create_and_add_state_node (const region &reg)
  {
    auto node = create_state_node (reg);
  
!   diagnostics::digraphs::node &result = *node;
    if (auto parent_reg = reg.get_parent_region ())
      if (parent_reg->get_kind () != RK_ROOT)
        {
! 	auto &parent_state_node = get_or_create_state_node (*parent_reg);
! 	parent_state_node.add_child (std::move (node));
  	return result;
        }
    add_node (std::move (node));
*************** analyzer_state_graph::make_node_id (cons
*** 264,282 ****
  
  std::unique_ptr<diagnostics::digraphs::node>
  analyzer_state_graph::
! make_state_node (diagnostics::state_graphs::node_kind kind,
  		 std::string id)
  {
    auto node = std::make_unique<diagnostics::digraphs::node> (*this, std::move (id));
!   state_node_ref node_ref (*node);
!   node_ref.set_node_kind (kind);
    return node;
  }
  
  std::unique_ptr<diagnostics::digraphs::node>
  analyzer_state_graph::
  make_memspace_state_node (const region &reg,
! 			  diagnostics::state_graphs::node_kind kind)
  {
    return make_state_node (kind, make_node_id (reg));
  }
--- 281,298 ----
  
  std::unique_ptr<diagnostics::digraphs::node>
  analyzer_state_graph::
! make_state_node (enum node_properties::kind_t kind,
  		 std::string id)
  {
    auto node = std::make_unique<diagnostics::digraphs::node> (*this, std::move (id));
!   node->set_property (node_properties::kind_prop, kind);
    return node;
  }
  
  std::unique_ptr<diagnostics::digraphs::node>
  analyzer_state_graph::
  make_memspace_state_node (const region &reg,
! 			  enum node_properties::kind_t kind)
  {
    return make_state_node (kind, make_node_id (reg));
  }
*************** analyzer_state_graph::create_state_node
*** 296,302 ****
  	const frame_region &frame_reg
  	  = static_cast<const frame_region &> (reg);
  
! 	node = make_state_node (diagnostics::state_graphs::node_kind::stack_frame,
  				make_node_id (reg));
  	node->set_logical_loc
  	  (m_logical_loc_mgr.key_from_tree (frame_reg.get_fndecl ()));
--- 312,318 ----
  	const frame_region &frame_reg
  	  = static_cast<const frame_region &> (reg);
  
! 	node = make_state_node (node_properties::kind_t::stack_frame,
  				make_node_id (reg));
  	node->set_logical_loc
  	  (m_logical_loc_mgr.key_from_tree (frame_reg.get_fndecl ()));
*************** analyzer_state_graph::create_state_node
*** 304,361 ****
  	  pretty_printer pp;
  	  pp_format_decoder (&pp) = default_tree_printer;
  	  pp_printf (&pp, "%E", frame_reg.get_fndecl ());
! 	  node->set_attr (STATE_NODE_PREFIX, "function",
! 			  pp_formatted_text (&pp));
  	}
        }
        break;
  
      case RK_GLOBALS:
        node = make_memspace_state_node (reg,
! 				       diagnostics::state_graphs::node_kind::globals);
        break;
      case RK_CODE:
        node = make_memspace_state_node (reg,
! 				       diagnostics::state_graphs::node_kind::code);
        break;
      case RK_FUNCTION:
        node = make_memspace_state_node (reg,
! 				       diagnostics::state_graphs::node_kind::function);
        // TODO
        break;
  
      case RK_STACK:
        node = make_memspace_state_node (reg,
! 				       diagnostics::state_graphs::node_kind::stack);
        break;
      case RK_HEAP:
        node = make_memspace_state_node (reg,
! 				       diagnostics::state_graphs::node_kind::heap_);
        break;
      case RK_THREAD_LOCAL:
        node = make_memspace_state_node (reg,
! 				       diagnostics::state_graphs::node_kind::thread_local_);
        break;
      case RK_ROOT:
        gcc_unreachable ();
        break;
      case RK_SYMBOLIC:
        node = make_memspace_state_node (reg,
! 				       diagnostics::state_graphs::node_kind::other);
        break;
  
      case RK_DECL:
        {
! 	node = make_state_node (diagnostics::state_graphs::node_kind::variable,
  				make_node_id (reg));
  	const decl_region &decl_reg
  	  = static_cast<const decl_region &> (reg);
! 	state_node_ref node_ref (*node);
  	{
  	  pretty_printer pp;
  	  pp_format_decoder (&pp) = default_tree_printer;
  	  pp_printf (&pp, "%E", decl_reg.get_decl ());
! 	  node_ref.set_name (pp_formatted_text (&pp));
  	}
  	set_type_attr (*node, TREE_TYPE (decl_reg.get_decl ()));
        }
--- 320,378 ----
  	  pretty_printer pp;
  	  pp_format_decoder (&pp) = default_tree_printer;
  	  pp_printf (&pp, "%E", frame_reg.get_fndecl ());
! 	  node->set_property (node_properties::function,
! 			      pp_formatted_text (&pp));
  	}
        }
        break;
  
      case RK_GLOBALS:
        node = make_memspace_state_node (reg,
! 				       node_properties::kind_t::globals);
        break;
      case RK_CODE:
        node = make_memspace_state_node (reg,
! 				       node_properties::kind_t::code);
        break;
      case RK_FUNCTION:
        node = make_memspace_state_node (reg,
! 				       node_properties::kind_t::function);
        // TODO
        break;
  
      case RK_STACK:
        node = make_memspace_state_node (reg,
! 				       node_properties::kind_t::stack);
        break;
      case RK_HEAP:
        node = make_memspace_state_node (reg,
! 				       node_properties::kind_t::heap_);
        break;
      case RK_THREAD_LOCAL:
        node = make_memspace_state_node (reg,
! 				       node_properties::kind_t::thread_local_);
        break;
      case RK_ROOT:
        gcc_unreachable ();
        break;
      case RK_SYMBOLIC:
        node = make_memspace_state_node (reg,
! 				       node_properties::kind_t::other);
        break;
  
      case RK_DECL:
        {
! 	node = make_state_node (node_properties::kind_t::variable,
  				make_node_id (reg));
  	const decl_region &decl_reg
  	  = static_cast<const decl_region &> (reg);
! 
  	{
  	  pretty_printer pp;
  	  pp_format_decoder (&pp) = default_tree_printer;
  	  pp_printf (&pp, "%E", decl_reg.get_decl ());
! 	  node->set_property (node_properties::name,
! 			      pp_formatted_text (&pp));
  	}
  	set_type_attr (*node, TREE_TYPE (decl_reg.get_decl ()));
        }
*************** analyzer_state_graph::create_state_node
*** 377,390 ****
      case RK_ERRNO:
      case RK_PRIVATE:
      case RK_UNKNOWN:
!       node = make_state_node (diagnostics::state_graphs::node_kind::other,
  				make_node_id (reg));
        break;
  
      case RK_HEAP_ALLOCATED:
      case RK_ALLOCA:
!       node = make_memspace_state_node (reg,
! 				       diagnostics::state_graphs::node_kind::dynalloc_buffer);
        set_attr_for_dynamic_extents (reg, *node);
        break;
      }
--- 394,408 ----
      case RK_ERRNO:
      case RK_PRIVATE:
      case RK_UNKNOWN:
!       node = make_state_node (node_properties::kind_t::other,
  				make_node_id (reg));
        break;
  
      case RK_HEAP_ALLOCATED:
      case RK_ALLOCA:
!       node
! 	= make_memspace_state_node (reg,
! 				    node_properties::kind_t::dynalloc_buffer);
        set_attr_for_dynamic_extents (reg, *node);
        break;
      }
*************** create_state_nodes_for_binding_cluster (
*** 425,433 ****
  	get_or_create_state_node (*reg);
      }
  
!   auto ref = get_or_create_state_node (*cluster.get_base_region ());
  
!   ref.m_node.add_child (create_state_node_for_conc_bindings (conc_bindings));
  
    const region *typed_reg = cluster.get_base_region ();
    if (!typed_reg->get_type ())
--- 443,451 ----
  	get_or_create_state_node (*reg);
      }
  
!   auto &ref = get_or_create_state_node (*cluster.get_base_region ());
  
!   ref.add_child (create_state_node_for_conc_bindings (conc_bindings));
  
    const region *typed_reg = cluster.get_base_region ();
    if (!typed_reg->get_type ())
*************** create_state_nodes_for_binding_cluster (
*** 455,477 ****
  std::unique_ptr<diagnostics::digraphs::node>
  analyzer_state_graph::create_state_node_for_conc_bindings (const concrete_bindings_t &conc_bindings)
  {
!   auto node = make_state_node (diagnostics::state_graphs::node_kind::other,
  			       make_node_id ("concrete-bindings"));
    for (auto iter : conc_bindings)
      {
        const bit_range bits = iter.first;
        const svalue *sval = iter.second;
        auto binding_state_node
! 	= make_state_node (diagnostics::state_graphs::node_kind::other,
  			   make_node_id ("binding"));
        set_bits_attr (*binding_state_node, bits);
!       {
! 	pretty_printer pp;
! 	pp_format_decoder (&pp) = default_tree_printer;
! 	sval->dump_to_pp (&pp, true);
! 	binding_state_node->set_attr (STATE_NODE_PREFIX, "value",
! 				      pp_formatted_text (&pp));
!       }
        node->add_child (std::move (binding_state_node));
      }
    return node;
--- 473,490 ----
  std::unique_ptr<diagnostics::digraphs::node>
  analyzer_state_graph::create_state_node_for_conc_bindings (const concrete_bindings_t &conc_bindings)
  {
!   auto node = make_state_node (node_properties::kind_t::other,
  			       make_node_id ("concrete-bindings"));
    for (auto iter : conc_bindings)
      {
        const bit_range bits = iter.first;
        const svalue *sval = iter.second;
        auto binding_state_node
! 	= make_state_node (node_properties::kind_t::other,
  			   make_node_id ("binding"));
        set_bits_attr (*binding_state_node, bits);
!       gcc_assert (sval);
!       set_value_attrs (*binding_state_node, *sval);
        node->add_child (std::move (binding_state_node));
      }
    return node;
*************** analyzer_state_graph::get_bit_range_with
*** 496,522 ****
  
  void
  analyzer_state_graph::
! populate_state_node_for_typed_region (state_node_ref node,
  				      const region &reg,
  				      const concrete_bindings_t &conc_bindings,
  				      bool create_all)
  {
    const_tree reg_type = reg.get_type ();
    gcc_assert (reg_type);
!   set_type_attr (node, reg_type);
  
    bit_range bits (0, 0);
    if (get_bit_range_within_base_region (reg, bits))
      {
!       set_bits_attr (node, bits);
  
        auto search = conc_bindings.find (bits);
        if (search != conc_bindings.end ())
  	{
  	  const svalue *bound_sval = search->second;
! 	  node.set_json_attr ("value", bound_sval->to_json ());
  	  if (const region *dst_reg = bound_sval->maybe_get_region ())
! 	      m_pending_edges.push_back ({node, *dst_reg});
  	}
      }
  
--- 509,536 ----
  
  void
  analyzer_state_graph::
! populate_state_node_for_typed_region (diagnostics::digraphs::node &state_node,
  				      const region &reg,
  				      const concrete_bindings_t &conc_bindings,
  				      bool create_all)
  {
    const_tree reg_type = reg.get_type ();
    gcc_assert (reg_type);
!   set_type_attr (state_node, reg_type);
  
    bit_range bits (0, 0);
    if (get_bit_range_within_base_region (reg, bits))
      {
!       set_bits_attr (state_node, bits);
  
        auto search = conc_bindings.find (bits);
        if (search != conc_bindings.end ())
  	{
  	  const svalue *bound_sval = search->second;
! 	  gcc_assert (bound_sval);
! 	  set_value_attrs (state_node, *bound_sval);
  	  if (const region *dst_reg = bound_sval->maybe_get_region ())
! 	    m_pending_edges.push_back ({state_node, *dst_reg});
  	}
      }
  
*************** populate_state_node_for_typed_region (st
*** 555,563 ****
  	      {
  		auto child_state_node
  		  = make_state_node
! 		      (diagnostics::state_graphs::node_kind::element,
  		       make_node_id (*child_reg));
! 		set_wi_attr (*child_state_node, "index", idx, UNSIGNED);
  
  		// Recurse:
  		gcc_assert (element_type);
--- 569,578 ----
  	      {
  		auto child_state_node
  		  = make_state_node
! 		      (node_properties::kind_t::element,
  		       make_node_id (*child_reg));
! 		set_wi_attr (*child_state_node,
! 			     node_properties::index, idx, UNSIGNED);
  
  		// Recurse:
  		gcc_assert (element_type);
*************** populate_state_node_for_typed_region (st
*** 565,571 ****
  						      *child_reg,
  						      conc_bindings,
  						      create_all);
! 		node.m_node.add_child (std::move (child_state_node));
  	      }
  	  }
        }
--- 580,586 ----
  						      *child_reg,
  						      conc_bindings,
  						      create_all);
! 		state_node.add_child (std::move (child_state_node));
  	      }
  	  }
        }
*************** populate_state_node_for_typed_region (st
*** 587,597 ****
  		  {
  		    auto child_state_node
  		      = make_state_node
! 			  (diagnostics::state_graphs::node_kind::padding,
  			   make_node_id (*child_reg));
! 		    set_wi_attr (*child_state_node, "num_bits",
  				 item.m_bit_range.m_size_in_bits, SIGNED);
! 		    node.m_node.add_child (std::move (child_state_node));
  		  }
  	      }
  	    else
--- 602,613 ----
  		  {
  		    auto child_state_node
  		      = make_state_node
! 			  (node_properties::kind_t::padding,
  			   make_node_id (*child_reg));
! 		    set_wi_attr (*child_state_node,
! 				 node_properties::num_bits,
  				 item.m_bit_range.m_size_in_bits, SIGNED);
! 		    state_node.add_child (std::move (child_state_node));
  		  }
  	      }
  	    else
*************** populate_state_node_for_typed_region (st
*** 600,626 ****
  		  = m_mgr.get_field_region (&reg,
  					    const_cast<tree> (item.m_field));
  		if (show_child_state_node_for_child_region_p (*child_reg,
! 							   conc_bindings,
! 							   create_all))
  		  {
  		    auto child_state_node
  		      = make_state_node
! 			  (diagnostics::state_graphs::node_kind::field,
  			   make_node_id (*child_reg));
  		    {
  		      pretty_printer pp;
  		      pp_format_decoder (&pp) = default_tree_printer;
  		      pp_printf (&pp, "%D", item.m_field);
! 		      child_state_node->set_attr (STATE_NODE_PREFIX, "name",
! 						  pp_formatted_text (&pp));
  		    }
  
  		    // Recurse:
  		    populate_state_node_for_typed_region (*child_state_node,
! 						       *child_reg,
! 						       conc_bindings,
! 						       create_all);
! 		    node.m_node.add_child (std::move (child_state_node));
  		  }
  	      }
  	  }
--- 616,642 ----
  		  = m_mgr.get_field_region (&reg,
  					    const_cast<tree> (item.m_field));
  		if (show_child_state_node_for_child_region_p (*child_reg,
! 							      conc_bindings,
! 							      create_all))
  		  {
  		    auto child_state_node
  		      = make_state_node
! 			  (node_properties::kind_t::field,
  			   make_node_id (*child_reg));
  		    {
  		      pretty_printer pp;
  		      pp_format_decoder (&pp) = default_tree_printer;
  		      pp_printf (&pp, "%D", item.m_field);
! 		      child_state_node->set_property (node_properties::name,
! 						      pp_formatted_text (&pp));
  		    }
  
  		    // Recurse:
  		    populate_state_node_for_typed_region (*child_state_node,
! 							  *child_reg,
! 							  conc_bindings,
! 							  create_all);
! 		    state_node.add_child (std::move (child_state_node));
  		  }
  	      }
  	  }
*************** populate_state_node_for_typed_region (st
*** 630,637 ****
  }
  
  void
! analyzer_state_graph::set_attr_for_dynamic_extents (const region &reg,
! 						    state_node_ref node_ref)
  {
    const svalue *sval = m_state.m_region_model->get_dynamic_extents (&reg);
    if (sval)
--- 646,654 ----
  }
  
  void
! analyzer_state_graph::
! set_attr_for_dynamic_extents (const region &reg,
! 			      diagnostics::digraphs::node &state_node)
  {
    const svalue *sval = m_state.m_region_model->get_dynamic_extents (&reg);
    if (sval)
*************** analyzer_state_graph::set_attr_for_dynam
*** 642,656 ****
  	pp_wide_int (&pp, wi::to_wide (cst), UNSIGNED);
        else
  	sval->dump_to_pp (&pp, true);
!       node_ref.set_attr ("dynamic-extents", pp_formatted_text (&pp));
      }
  }
  
  bool
  analyzer_state_graph::
  show_child_state_node_for_child_region_p (const region &reg,
! 				       const concrete_bindings_t &conc_bindings,
! 				       bool create_all)
  {
    if (create_all)
      return true;
--- 659,674 ----
  	pp_wide_int (&pp, wi::to_wide (cst), UNSIGNED);
        else
  	sval->dump_to_pp (&pp, true);
!       state_node.set_property (state_node_properties::dynamic_extents,
! 			       pp_formatted_text (&pp));
      }
  }
  
  bool
  analyzer_state_graph::
  show_child_state_node_for_child_region_p (const region &reg,
! 					  const concrete_bindings_t &conc_bindings,
! 					  bool create_all)
  {
    if (create_all)
      return true;
diff -Nrcpad gcc-16-20251012/gcc/analyzer/ana-state-to-diagnostic-state.h gcc-16-20251019/gcc/analyzer/ana-state-to-diagnostic-state.h
*** gcc-16-20251012/gcc/analyzer/ana-state-to-diagnostic-state.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/analyzer/ana-state-to-diagnostic-state.h	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 23,56 ****
  
  #include "diagnostics/state-graphs.h"
  #include "tree-logical-location.h"
  
  namespace ana {
  
  class analyzer_state_graph : public diagnostics::digraphs::digraph
  {
  public:
    analyzer_state_graph (const program_state &state,
  			const extrinsic_state &ext_state);
!   diagnostics::state_graphs::state_node_ref
    get_or_create_state_node (const region &reg);
  
  private:
    struct pending_edge
    {
!     diagnostics::state_graphs::state_node_ref m_src_node;
      const region &m_dst_reg;
    };
!   
!   diagnostics::state_graphs::state_node_ref
    create_and_add_state_node (const region &reg);
  
    std::unique_ptr<diagnostics::digraphs::node>
!   make_state_node (diagnostics::state_graphs::node_kind kind,
  		   std::string id);
  
    std::unique_ptr<diagnostics::digraphs::node>
    make_memspace_state_node (const region &reg,
! 			    enum diagnostics::state_graphs::node_kind kind);
  
    std::unique_ptr<diagnostics::digraphs::node>
    create_state_node (const region &reg);
--- 23,60 ----
  
  #include "diagnostics/state-graphs.h"
  #include "tree-logical-location.h"
+ #include "custom-sarif-properties/state-graphs.h"
  
  namespace ana {
  
+ namespace state_node_properties = custom_sarif_properties::state_graphs::node;
+ 
  class analyzer_state_graph : public diagnostics::digraphs::digraph
  {
  public:
    analyzer_state_graph (const program_state &state,
  			const extrinsic_state &ext_state);
!   diagnostics::digraphs::node &
    get_or_create_state_node (const region &reg);
  
  private:
+ 
    struct pending_edge
    {
!     diagnostics::digraphs::node & m_src_node;
      const region &m_dst_reg;
    };
! 
!   diagnostics::digraphs::node &
    create_and_add_state_node (const region &reg);
  
    std::unique_ptr<diagnostics::digraphs::node>
!   make_state_node (enum state_node_properties::kind_t kind,
  		   std::string id);
  
    std::unique_ptr<diagnostics::digraphs::node>
    make_memspace_state_node (const region &reg,
! 			    enum state_node_properties::kind_t kind);
  
    std::unique_ptr<diagnostics::digraphs::node>
    create_state_node (const region &reg);
*************** private:
*** 71,84 ****
  				    bit_range &out);
  
    void
!   populate_state_node_for_typed_region (diagnostics::state_graphs::state_node_ref,
  					const region &reg,
  					const concrete_bindings_t &conc_bindings,
  					bool create_all);
  
    void
    set_attr_for_dynamic_extents (const region &reg,
! 				diagnostics::state_graphs::state_node_ref);
  
    bool
    show_child_state_node_for_child_region_p (const region &reg,
--- 75,88 ----
  				    bit_range &out);
  
    void
!   populate_state_node_for_typed_region (diagnostics::digraphs::node &,
  					const region &reg,
  					const concrete_bindings_t &conc_bindings,
  					bool create_all);
  
    void
    set_attr_for_dynamic_extents (const region &reg,
! 				diagnostics::digraphs::node &);
  
    bool
    show_child_state_node_for_child_region_p (const region &reg,
*************** private:
*** 95,101 ****
    const program_state &m_state;
    const extrinsic_state &m_ext_state;
    region_model_manager &m_mgr;
!   std::map<const region *, diagnostics::digraphs::node *> m_region_to_state_node_map;
    std::map<const region *, tree> m_types_for_untyped_regions;
    unsigned m_next_id;
    std::vector<pending_edge> m_pending_edges;
--- 99,106 ----
    const program_state &m_state;
    const extrinsic_state &m_ext_state;
    region_model_manager &m_mgr;
!   std::map<const region *,
! 	   diagnostics::digraphs::node *> m_region_to_state_node_map;
    std::map<const region *, tree> m_types_for_untyped_regions;
    unsigned m_next_id;
    std::vector<pending_edge> m_pending_edges;
diff -Nrcpad gcc-16-20251012/gcc/analyzer/checker-event.cc gcc-16-20251019/gcc/analyzer/checker-event.cc
*** gcc-16-20251012/gcc/analyzer/checker-event.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/analyzer/checker-event.cc	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 29,34 ****
--- 29,35 ----
  #include "tree-logical-location.h"
  #include "diagnostics/sarif-sink.h"
  #include "diagnostics/state-graphs.h"
+ #include "custom-sarif-properties/state-graphs.h"
  
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
*************** checker_event::maybe_make_diagnostic_sta
*** 242,250 ****
        pretty_printer pp;
        text_art::theme *theme = global_dc->get_diagram_theme ();
        text_art::dump_to_pp (*state, theme, &pp);
!       result->set_attr (STATE_GRAPH_PREFIX,
! 			"analyzer/program_state/",
! 			pp_formatted_text (&pp));
      }
  
    return result;
--- 243,253 ----
        pretty_printer pp;
        text_art::theme *theme = global_dc->get_diagram_theme ();
        text_art::dump_to_pp (*state, theme, &pp);
!       const json::string_property program_state_property
! 	(custom_sarif_properties::state_graphs::graph::prefix,
! 	 "analyzer/program_state/");
!       result->set_property (program_state_property,
! 			    pp_formatted_text (&pp));
      }
  
    return result;
diff -Nrcpad gcc-16-20251012/gcc/analyzer/sm-malloc.cc gcc-16-20251019/gcc/analyzer/sm-malloc.cc
*** gcc-16-20251012/gcc/analyzer/sm-malloc.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/analyzer/sm-malloc.cc	Sun Oct 19 22:32:13 2025
*************** malloc_state_machine::transition_ptr_sva
*** 2735,2741 ****
    smap->set_state (model, new_ptr_sval, m_free.m_nonnull, nullptr, ext_state);
  }
  
! static enum diagnostics::state_graphs::node_dynalloc_state
  get_dynalloc_state_for_state (enum resource_state rs)
  {
    switch (rs)
--- 2735,2741 ----
    smap->set_state (model, new_ptr_sval, m_free.m_nonnull, nullptr, ext_state);
  }
  
! static enum custom_sarif_properties::state_graphs::node::dynalloc_state_t
  get_dynalloc_state_for_state (enum resource_state rs)
  {
    switch (rs)
*************** get_dynalloc_state_for_state (enum resou
*** 2746,2762 ****
      case RS_NULL:
      case RS_NON_HEAP:
      case RS_STOP:
!       return diagnostics::state_graphs::node_dynalloc_state::unknown;
  
      case RS_ASSUMED_NON_NULL:
!       return diagnostics::state_graphs::node_dynalloc_state::nonnull;
  
      case RS_UNCHECKED:
!       return diagnostics::state_graphs::node_dynalloc_state::unchecked;
      case RS_NONNULL:
!       return diagnostics::state_graphs::node_dynalloc_state::nonnull;
      case RS_FREED:
!       return diagnostics::state_graphs::node_dynalloc_state::freed;
      }
  }
  
--- 2746,2762 ----
      case RS_NULL:
      case RS_NON_HEAP:
      case RS_STOP:
!       return state_node_properties::dynalloc_state_t::unknown;
  
      case RS_ASSUMED_NON_NULL:
!       return state_node_properties::dynalloc_state_t::nonnull;
  
      case RS_UNCHECKED:
!       return state_node_properties::dynalloc_state_t::unchecked;
      case RS_NONNULL:
!       return state_node_properties::dynalloc_state_t::nonnull;
      case RS_FREED:
!       return state_node_properties::dynalloc_state_t::freed;
      }
  }
  
*************** add_state_to_state_graph (analyzer_state
*** 2768,2791 ****
  {
    if (const region *reg = sval.maybe_get_region ())
      {
!       auto reg_node = out_state_graph.get_or_create_state_node (*reg);
        auto alloc_state = as_a_allocation_state (state);
        gcc_assert (alloc_state);
  
!       reg_node.set_dynalloc_state
! 	(get_dynalloc_state_for_state (alloc_state->m_rs));
        if (alloc_state->m_deallocators)
  	{
  	  pretty_printer pp;
  	  alloc_state->m_deallocators->dump_to_pp (&pp);
! 	  reg_node.m_node.set_attr (STATE_NODE_PREFIX,
! 				    "expected-deallocators",
! 				    pp_formatted_text (&pp));
  	}
        if (alloc_state->m_deallocator)
! 	reg_node.m_node.set_attr (STATE_NODE_PREFIX,
! 				  "deallocator",
! 				  alloc_state->m_deallocator->m_name);
      }
  }
  
--- 2768,2790 ----
  {
    if (const region *reg = sval.maybe_get_region ())
      {
!       auto &reg_node = out_state_graph.get_or_create_state_node (*reg);
        auto alloc_state = as_a_allocation_state (state);
        gcc_assert (alloc_state);
  
!       reg_node.set_property (state_node_properties::dynalloc_state_prop,
! 			     get_dynalloc_state_for_state (alloc_state->m_rs));
! 
        if (alloc_state->m_deallocators)
  	{
  	  pretty_printer pp;
  	  alloc_state->m_deallocators->dump_to_pp (&pp);
! 	  reg_node.set_property (state_node_properties::expected_deallocators,
! 				 pp_formatted_text (&pp));
  	}
        if (alloc_state->m_deallocator)
! 	reg_node.set_property (state_node_properties::deallocator,
! 			       alloc_state->m_deallocator->m_name);
      }
  }
  
diff -Nrcpad gcc-16-20251012/gcc/attr-callback.cc gcc-16-20251019/gcc/attr-callback.cc
*** gcc-16-20251012/gcc/attr-callback.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/attr-callback.cc	Sun Oct 19 22:32:13 2025
***************
*** 0 ****
--- 1,367 ----
+ /* Callback attribute handling
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by Josef Melcr <jmelcr@gcc.gnu.org>
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3 of the License, or
+    (at your option) any later version.
+ 
+    GCC is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "backend.h"
+ #include "tree.h"
+ #include "gimple.h"
+ #include "alloc-pool.h"
+ #include "cgraph.h"
+ #include "diagnostic.h"
+ #include "builtins.h"
+ #include "options.h"
+ #include "gimple-range.h"
+ #include "attribs.h"
+ #include "attr-callback.h"
+ 
+ /* Returns a callback attribute with callback index FN_IDX, and ARG_COUNT
+    arguments specified by VA_ARGS.  */
+ tree
+ callback_build_attr (unsigned fn_idx, unsigned arg_count...)
+ {
+   va_list args;
+   va_start (args, arg_count);
+ 
+   tree cblist = NULL_TREE;
+   tree *pp = &cblist;
+   unsigned i;
+   for (i = 0; i < arg_count; i++)
+     {
+       int num = va_arg (args, int);
+       tree tnum = build_int_cst (integer_type_node, num);
+       *pp = build_tree_list (NULL, tnum PASS_MEM_STAT);
+       pp = &TREE_CHAIN (*pp);
+     }
+   cblist
+     = tree_cons (NULL_TREE, build_int_cst (integer_type_node, fn_idx), cblist);
+   tree attr
+     = tree_cons (get_identifier (CALLBACK_ATTR_IDENT), cblist, NULL_TREE);
+   return attr;
+ }
+ 
+ /* Returns TRUE if a function should be treated as if it had a callback
+    attribute despite the DECL not having it.  STMT can be passed NULL
+    if the call statement is not available at the time, for example WPA, but it
+    should be called with the statement itself whenever possible.  */
+ bool
+ callback_is_special_cased (tree decl, gcall *stmt)
+ {
+   if (fndecl_built_in_p (decl, BUILT_IN_GOMP_TASK))
+     {
+       if (stmt)
+ 	return gimple_call_arg (stmt, 2) == null_pointer_node;
+       return true;
+     }
+   return false;
+ }
+ 
+ /* Returns an attribute for a special cased function.  */
+ tree
+ callback_special_case_attr (tree decl)
+ {
+   if (fndecl_built_in_p (decl, BUILT_IN_GOMP_TASK))
+     return callback_build_attr (1, 1, 2);
+   gcc_unreachable ();
+ }
+ 
+ /* Given an instance of callback attribute, return the 0-based
+    index of the called function in question.  */
+ int
+ callback_get_fn_index (tree cb_attr)
+ {
+   tree args = TREE_VALUE (cb_attr);
+   int idx = TREE_INT_CST_LOW (TREE_VALUE (args)) - 1;
+   return idx;
+ }
+ 
+ /* For a given callback pair, retrieves the callback attribute used
+    to create E from the callee of CARRYING.  */
+ tree
+ callback_fetch_attr_by_edge (cgraph_edge *e, cgraph_edge *carrying)
+ {
+   gcc_checking_assert (e->call_stmt == carrying->call_stmt
+ 		       && e->lto_stmt_uid == carrying->lto_stmt_uid);
+ 
+   if (callback_is_special_cased (carrying->callee->decl, e->call_stmt))
+     return callback_special_case_attr (carrying->callee->decl);
+ 
+   tree cb_attr = lookup_attribute (CALLBACK_ATTR_IDENT,
+ 				   DECL_ATTRIBUTES (carrying->callee->decl));
+   gcc_checking_assert (cb_attr);
+   tree res = NULL_TREE;
+   for (; cb_attr;
+        cb_attr = lookup_attribute (CALLBACK_ATTR_IDENT, TREE_CHAIN (cb_attr)))
+     {
+       unsigned id = callback_get_fn_index (cb_attr);
+       if (id == e->callback_id)
+ 	{
+ 	  res = cb_attr;
+ 	  break;
+ 	}
+     }
+   gcc_checking_assert (res != NULL_TREE);
+   return res;
+ }
+ 
+ /* Given an instance of callback attribute, return the 0-base indices
+    of arguments passed to the callback.  For a callback function taking
+    n parameters, returns a vector of n indices of their values in the parameter
+    list of it's caller.  Indices with unknown positions contain -1.  */
+ auto_vec<int>
+ callback_get_arg_mapping (cgraph_edge *e, cgraph_edge *carrying)
+ {
+   tree attr = callback_fetch_attr_by_edge (e, carrying);
+   gcc_checking_assert (attr);
+   tree args = TREE_VALUE (attr);
+   auto_vec<int> res;
+   tree it;
+ 
+   /* Skip over the first argument, which denotes
+      which argument is the called function.  */
+   for (it = TREE_CHAIN (args); it != NULL_TREE; it = TREE_CHAIN (it))
+     {
+       int idx = TREE_INT_CST_LOW (TREE_VALUE (it));
+       /* Subtract 1 to account for 1-based indexing.  If the value is unknown,
+ 	 use constant -1 instead.  */
+       idx = idx == CB_UNKNOWN_POS ? -1 : idx - 1;
+       res.safe_push (idx);
+     }
+ 
+   return res;
+ }
+ 
+ /* For a callback pair, returns the 0-based index of the address of
+    E's callee in the argument list of CARRYING's callee decl.  */
+ int
+ callback_fetch_fn_position (cgraph_edge *e, cgraph_edge *carrying)
+ {
+   tree attr = callback_fetch_attr_by_edge (e, carrying);
+   return callback_get_fn_index (attr);
+ }
+ 
+ /* Returns the element at index idx in the list or NULL_TREE if
+    the list isn't long enough.  NULL_TREE is used as the endpoint.  */
+ static tree
+ get_nth_list_elem (tree list, unsigned idx)
+ {
+   tree res = NULL_TREE;
+   unsigned i = 0;
+   tree it;
+   for (it = list; it != NULL_TREE; it = TREE_CHAIN (it), i++)
+     {
+       if (i == idx)
+ 	{
+ 	  res = TREE_VALUE (it);
+ 	  break;
+ 	}
+     }
+   return res;
+ }
+ 
+ /* Handle a "callback" attribute; arguments as in
+    struct attribute_spec.handler.  */
+ tree
+ handle_callback_attribute (tree *node, tree name, tree args,
+ 			   int ARG_UNUSED (flags), bool *no_add_attrs)
+ {
+   tree decl = *node;
+   if (TREE_CODE (decl) != FUNCTION_DECL)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"%qE attribute can only be used on functions", name);
+       *no_add_attrs = true;
+     }
+ 
+   tree cb_fn_idx_node = TREE_VALUE (args);
+   if (TREE_CODE (cb_fn_idx_node) != INTEGER_CST)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"argument specifying callback function position is not an "
+ 		"integer constant");
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+   /* We have to use the function type for validation, as
+      DECL_ARGUMENTS returns NULL at this point.  */
+   int callback_fn_idx = TREE_INT_CST_LOW (cb_fn_idx_node);
+   tree decl_type_args = TYPE_ARG_TYPES (TREE_TYPE (decl));
+   tree it;
+   int decl_nargs = list_length (decl_type_args);
+   for (it = decl_type_args; it != NULL_TREE; it = TREE_CHAIN (it))
+     if (it == void_list_node)
+       {
+ 	--decl_nargs;
+ 	break;
+       }
+   if (callback_fn_idx == CB_UNKNOWN_POS)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"callback function position cannot be marked as unknown");
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+   --callback_fn_idx;
+   if (callback_fn_idx >= decl_nargs)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"callback function position out of range");
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+ 
+   /* Search for the type of the callback function
+      in parameters of the original function.  */
+   tree cfn = get_nth_list_elem (decl_type_args, callback_fn_idx);
+   if (cfn == NULL_TREE)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"could not retrieve callback function from arguments");
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+   tree cfn_pointee_type = TREE_TYPE (cfn);
+   if (TREE_CODE (cfn) != POINTER_TYPE
+       || TREE_CODE (cfn_pointee_type) != FUNCTION_TYPE)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"argument no. %d is not an address of a function",
+ 		callback_fn_idx + 1);
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+ 
+   tree type_args = TYPE_ARG_TYPES (cfn_pointee_type);
+   /* Compare the length of the list of argument indices
+      and the real number of parameters the callback takes.  */
+   unsigned cfn_nargs = list_length (TREE_CHAIN (args));
+   unsigned type_nargs = list_length (type_args);
+   for (it = type_args; it != NULL_TREE; it = TREE_CHAIN (it))
+     if (it == void_list_node)
+       {
+ 	--type_nargs;
+ 	break;
+       }
+   if (cfn_nargs != type_nargs)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"argument number mismatch, %d expected, got %d", type_nargs,
+ 		cfn_nargs);
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+ 
+   unsigned curr = 0;
+   tree cfn_it;
+   /* Validate type compatibility of the arguments passed
+      from caller function to callback.  "it" is used to step
+      through the parameters of the caller, "cfn_it" is
+      stepping through the parameters of the callback.  */
+   for (it = type_args, cfn_it = TREE_CHAIN (args); curr < type_nargs;
+        it = TREE_CHAIN (it), cfn_it = TREE_CHAIN (cfn_it), curr++)
+     {
+       if (TREE_CODE (TREE_VALUE (cfn_it)) != INTEGER_CST)
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "argument no. %d is not an integer constant", curr + 1);
+ 	  *no_add_attrs = true;
+ 	  continue;
+ 	}
+ 
+       int arg_idx = TREE_INT_CST_LOW (TREE_VALUE (cfn_it));
+ 
+       /* No need to check for type compatibility,
+ 	 if we don't know what we are passing.  */
+       if (arg_idx == CB_UNKNOWN_POS)
+ 	continue;
+ 
+       arg_idx -= 1;
+       /* Report an error if the position is out of bounds,
+ 	 but we can still check the rest of the arguments.  */
+       if (arg_idx >= decl_nargs)
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "callback argument index %d is out of range", arg_idx + 1);
+ 	  *no_add_attrs = true;
+ 	  continue;
+ 	}
+ 
+       tree arg_type = get_nth_list_elem (decl_type_args, arg_idx);
+       tree expected_type = TREE_VALUE (it);
+       /* Check the type of the value we are about to pass ("arg_type")
+ 	 for compatibility with the actual type the callback function
+ 	 expects ("expected_type").  */
+       if (!types_compatible_p (expected_type, arg_type))
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "argument type at index %d is not compatible with callback "
+ 		    "argument type at index %d",
+ 		    arg_idx + 1, curr + 1);
+ 	  *no_add_attrs = true;
+ 	  continue;
+ 	}
+     }
+ 
+   /* Check that the decl does not already have a callback attribute describing
+      the same argument.  */
+   it = lookup_attribute (CALLBACK_ATTR_IDENT, DECL_ATTRIBUTES (decl));
+   for (; it; it = lookup_attribute (CALLBACK_ATTR_IDENT, TREE_CHAIN (it)))
+     if (callback_get_fn_index (it) == callback_fn_idx)
+       {
+ 	error_at (DECL_SOURCE_LOCATION (decl),
+ 		  "function declaration has multiple callback attributes "
+ 		  "describing argument no. %d",
+ 		  callback_fn_idx + 1);
+ 	*no_add_attrs = true;
+ 	break;
+       }
+ 
+   return NULL_TREE;
+ }
+ 
+ /* Returns TRUE if E is considered useful in the callgraph, FALSE otherwise.  If
+    this predicate returns FALSE, then E wasn't used to optimize its callee and
+    can be safely removed from the callgraph.  */
+ bool
+ callback_edge_useful_p (cgraph_edge *e)
+ {
+   gcc_checking_assert (e->callback);
+   /* If the edge is not pointing towards a clone, it is no longer useful as its
+      entire purpose is to produce clones of callbacks.  */
+   if (!e->callee->clone_of)
+     return false;
+   return true;
+ }
+ 
+ /* Returns the number of arguments the callback function described by ATTR
+    takes.  */
+ 
+ size_t
+ callback_num_args (tree attr)
+ {
+   tree args = TREE_VALUE (attr);
+   size_t res = 0;
+   tree it;
+ 
+   for (it = TREE_CHAIN (args); it != NULL_TREE; it = TREE_CHAIN (it), ++res)
+     ;
+   return res;
+ }
diff -Nrcpad gcc-16-20251012/gcc/attr-callback.h gcc-16-20251019/gcc/attr-callback.h
*** gcc-16-20251012/gcc/attr-callback.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/attr-callback.h	Sun Oct 19 22:32:13 2025
***************
*** 0 ****
--- 1,78 ----
+ /* Callback attribute handling
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by Josef Melcr <jmelcr@gcc.gnu.org>
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3 of the License, or
+    (at your option) any later version.
+ 
+    GCC is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef ATTR_CALLBACK_H
+ #define ATTR_CALLBACK_H
+ 
+ enum callback_position
+ {
+   /* Value used when an argument of a callback function
+      is unknown or when multiple values may be used. */
+   CB_UNKNOWN_POS = 0
+ };
+ 
+ #define CALLBACK_ATTR_IDENT " callback"
+ 
+ /* Returns a callback attribute with callback index FN_IDX, and ARG_COUNT
+    arguments specified by VA_ARGS.  */
+ tree callback_build_attr (unsigned fn_idx, unsigned arg_count...);
+ 
+ /* Returns TRUE if a function should be treated as if it had a callback
+    attribute despite the DECL not having it.  STMT can be passed NULL
+    if the call statement is not available at the time, for example WPA, but it
+    should be called with the statement itself whenever possible.  */
+ bool callback_is_special_cased (tree decl, gcall *stmt);
+ 
+ /* Returns an attribute for a special cased function.  */
+ tree callback_special_case_attr (tree decl);
+ 
+ /* Given an instance of callback attribute, return the 0-based
+    index of the called function in question.  */
+ int callback_get_fn_index (tree cb_attr);
+ 
+ /* For a given callback pair, retrieves the callback attribute used
+    to create E from the callee of CARRYING.  */
+ tree callback_fetch_attr_by_edge (cgraph_edge *e, cgraph_edge *carrying);
+ 
+ /* Given an instance of callback attribute, return the 0-base indices
+    of arguments passed to the callback.  For a callback function taking
+    n parameters, returns a vector of n indices of their values in the parameter
+    list of it's caller.  Indices with unknown positions contain -1.  */
+ auto_vec<int> callback_get_arg_mapping (cgraph_edge *e, cgraph_edge *carrying);
+ 
+ /* For a callback pair, returns the 0-based index of the address of
+    E's callee in the argument list of CARRYING's callee decl.  */
+ int callback_fetch_fn_position (cgraph_edge *e, cgraph_edge *carrying);
+ 
+ /* Handle a "callback" attribute; arguments as in
+    struct attribute_spec.handler.  */
+ tree handle_callback_attribute (tree *node, tree name, tree args, int flags,
+ 				bool *no_add_attrs);
+ 
+ /* Returns TRUE if E is considered useful in the callgraph, FALSE otherwise.  If
+    this predicate returns FALSE, then E wasn't used to optimize its callee and
+    can be safely removed from the callgraph.  */
+ bool callback_edge_useful_p (cgraph_edge *e);
+ 
+ /* Returns the number of arguments the callback function described by ATTR
+    takes.  */
+ size_t callback_num_args (tree attr);
+ 
+ #endif /* ATTR_CALLBACK_H  */
diff -Nrcpad gcc-16-20251012/gcc/auto-profile.cc gcc-16-20251019/gcc/auto-profile.cc
*** gcc-16-20251012/gcc/auto-profile.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/auto-profile.cc	Sun Oct 19 22:32:13 2025
*************** scale_bb_profile ()
*** 3600,3610 ****
      {
        profile_count cnt = bb->count;
        bbs.safe_push (bb);
!       max_count = max_count.max (bb->count);
        if (afdo_set_bb_count (bb, zero_bbs))
  	{
  	  std::swap (cnt, bb->count);
! 	  max_count_in_fn = max_count_in_fn.max (cnt);
  	  add_scale (&scales, cnt, bb->count);
  	}
      }
--- 3600,3611 ----
      {
        profile_count cnt = bb->count;
        bbs.safe_push (bb);
!       max_count = profile_count::max_prefer_initialized (max_count, cnt);
        if (afdo_set_bb_count (bb, zero_bbs))
  	{
  	  std::swap (cnt, bb->count);
! 	  max_count_in_fn
! 	    = profile_count::max_prefer_initialized (max_count_in_fn, cnt);
  	  add_scale (&scales, cnt, bb->count);
  	}
      }
*************** afdo_adjust_guessed_profile (bb_set *ann
*** 3646,3652 ****
      if (is_bb_annotated (seed_bb, *annotated_bb))
        {
  	component[seed_bb->index] = 1;
! 	max_count_in_fn = max_count_in_fn.max (seed_bb->count);
        }
      else
        component[seed_bb->index] = 0;
--- 3647,3654 ----
      if (is_bb_annotated (seed_bb, *annotated_bb))
        {
  	component[seed_bb->index] = 1;
! 	max_count_in_fn
! 	  = profile_count::max_prefer_initialized (max_count_in_fn, seed_bb->count);
        }
      else
        component[seed_bb->index] = 0;
*************** afdo_adjust_guessed_profile (bb_set *ann
*** 3669,3675 ****
  	   basic_block b = stack.pop ();
  
  	   bbs.quick_push (b);
! 	   max_count = max_count.max (b->count);
  
  	   for (edge e: b->preds)
  	     if (!component[e->src->index])
--- 3671,3677 ----
  	   basic_block b = stack.pop ();
  
  	   bbs.quick_push (b);
! 	   max_count = profile_count::max_prefer_initialized (max_count, b->count);
  
  	   for (edge e: b->preds)
  	     if (!component[e->src->index])
diff -Nrcpad gcc-16-20251012/gcc/bb-reorder.cc gcc-16-20251019/gcc/bb-reorder.cc
*** gcc-16-20251012/gcc/bb-reorder.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/bb-reorder.cc	Sun Oct 19 22:32:13 2025
*************** edge_order (const void *ve1, const void
*** 2389,2396 ****
    /* Since profile_count::operator< does not establish a strict weak order
       in presence of uninitialized counts, use 'max': this makes them appear
       as if having execution frequency less than any initialized count.  */
!   profile_count m = c1.max (c2);
!   return (m == c2) - (m == c1);
  }
  
  /* Reorder basic blocks using the "simple" algorithm.  This tries to
--- 2389,2398 ----
    /* Since profile_count::operator< does not establish a strict weak order
       in presence of uninitialized counts, use 'max': this makes them appear
       as if having execution frequency less than any initialized count.  */
!   gcov_type gc1 = c1.initialized_p () ? c1.to_gcov_type () : 0;
!   gcov_type gc2 = c2.initialized_p () ? c2.to_gcov_type () : 0;
!   gcov_type m = MAX (gc1, gc2);
!   return (m == gc1) - (m == gc2);
  }
  
  /* Reorder basic blocks using the "simple" algorithm.  This tries to
diff -Nrcpad gcc-16-20251012/gcc/builtin-attrs.def gcc-16-20251019/gcc/builtin-attrs.def
*** gcc-16-20251012/gcc/builtin-attrs.def	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/builtin-attrs.def	Sun Oct 19 22:32:13 2025
*************** DEF_ATTR_IDENT (ATTR_TM_TMPURE, "transac
*** 130,135 ****
--- 130,136 ----
  DEF_ATTR_IDENT (ATTR_RETURNS_TWICE, "returns_twice")
  DEF_ATTR_IDENT (ATTR_RETURNS_NONNULL, "returns_nonnull")
  DEF_ATTR_IDENT (ATTR_WARN_UNUSED_RESULT, "warn_unused_result")
+ DEF_ATTR_IDENT (ATTR_CALLBACK, " callback")
  
  DEF_ATTR_TREE_LIST (ATTR_NOVOPS_LIST, ATTR_NOVOPS, ATTR_NULL, ATTR_NULL)
  
*************** DEF_FORMAT_ATTRIBUTE_NOTHROW(STRFMON,3,3
*** 430,435 ****
--- 431,446 ----
  #undef DEF_FORMAT_ATTRIBUTE_NOTHROW
  #undef DEF_FORMAT_ATTRIBUTE_BOTH
  
+ /* Construct callback attributes for GOMP builtins.  */
+ #define DEF_CALLBACK_ATTRIBUTE(TYPE, CA, VALUES)			 \
+   DEF_ATTR_TREE_LIST (ATTR_CALLBACK_##TYPE##_##CA##_##VALUES, ATTR_CALLBACK,\
+ 		      ATTR_##CA, ATTR_LIST_##VALUES)
+ 
+ DEF_CALLBACK_ATTRIBUTE(GOMP, 1, 2)
+ DEF_ATTR_TREE_LIST(ATTR_CALLBACK_GOMP_LIST, ATTR_CALLBACK,
+                    ATTR_CALLBACK_GOMP_1_2, ATTR_NOTHROW_LIST)
+ #undef DEF_CALLBACK_ATTRIBUTE
+ 
  /* Transactional memory variants of the above.  */
  
  DEF_ATTR_TREE_LIST (ATTR_TM_NOTHROW_LIST,
diff -Nrcpad gcc-16-20251012/gcc/builtins.cc gcc-16-20251019/gcc/builtins.cc
*** gcc-16-20251012/gcc/builtins.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/builtins.cc	Sun Oct 19 22:32:13 2025
*************** expand_builtin (tree exp, rtx target, rt
*** 8427,8432 ****
--- 8427,8436 ----
        expand_builtin_unreachable ();
        return const0_rtx;
  
+     case BUILT_IN_OBSERVABLE_CHKPT:
+       /* Generate no code.  */
+       return const0_rtx;
+ 
      CASE_FLT_FN (BUILT_IN_SIGNBIT):
      case BUILT_IN_SIGNBITD32:
      case BUILT_IN_SIGNBITD64:
diff -Nrcpad gcc-16-20251012/gcc/builtins.def gcc-16-20251019/gcc/builtins.def
*** gcc-16-20251012/gcc/builtins.def	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/builtins.def	Sun Oct 19 22:32:13 2025
*************** DEF_C2Y_BUILTIN        (BUILT_IN_ULABS,
*** 1142,1147 ****
--- 1142,1148 ----
  DEF_C2Y_BUILTIN        (BUILT_IN_ULLABS, "ullabs", BT_FN_ULONGLONG_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_UNREACHABLE_TRAP, "unreachable trap", BT_FN_VOID, ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_UNREACHABLE, "unreachable", BT_FN_VOID, ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST)
+ DEF_GCC_BUILTIN        (BUILT_IN_OBSERVABLE_CHKPT, "observable_checkpoint", BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
  DEF_GCC_BUILTIN        (BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR, ATTR_NULL)
  DEF_GCC_BUILTIN        (BUILT_IN_VA_COPY, "va_copy", BT_FN_VOID_VALIST_REF_VALIST_ARG, ATTR_NOTHROW_LEAF_LIST)
diff -Nrcpad gcc-16-20251012/gcc/c-family/ChangeLog gcc-16-20251019/gcc/c-family/ChangeLog
*** gcc-16-20251012/gcc/c-family/ChangeLog	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/c-family/ChangeLog	Sun Oct 19 22:32:13 2025
***************
*** 1,3 ****
--- 1,28 ----
+ 2025-10-17  Josef Melcr  <jmelcr02@gmail.com>
+ 
+ 	* c-attribs.cc: Define callback attr.
+ 
+ 2025-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c.opt (Wflex-array-member-not-at-end, Wignored-qualifiers,
+ 	Wopenacc-parallelism, Wstrict-flex-arrays, Wsync-nand,
+ 	fstrict-flex-arrays, fstrict-flex-arrays=): Enable also for ObjC and
+ 	ObjC++ next to C and C++.
+ 	(Wmisleading-indentation, Wopenmp-simd): Likewise.  Also change
+ 	LangEnabledBy from just C C++ to C ObjC C++ ObjC++.
+ 	(Wplacement-new, Wplacement-new=, fcontract-assumption-mode=,
+ 	fcontract-build-level=, fcontract-strict-declarations=,
+ 	fcontract-mode=, fcontract-continuation-mode=, fcontract-role=,
+ 	fcontract-semantic=, fcoroutines, flang-info-include-translate,
+ 	flang-info-include-translate-not, flang-info-include-translate=,
+ 	flang-info-module-cmi, flang-info-module-cmi=): Enable also
+ 	for ObjC++ next to C++.
+ 
+ 2025-10-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* c.opt: Enable Wignored-attributes for Objective-C and
+ 	Objective-C++.
+ 
  2025-10-09  David Faust  <david.faust@oracle.com>
  
  	* c-attribs.cc (c_common_attribute_table): Add btf_decl_tag and
diff -Nrcpad gcc-16-20251012/gcc/c-family/c-attribs.cc gcc-16-20251019/gcc/c-family/c-attribs.cc
*** gcc-16-20251012/gcc/c-family/c-attribs.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/c-family/c-attribs.cc	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 49,54 ****
--- 49,55 ----
  #include "tree-pretty-print.h"
  #include "gcc-rich-location.h"
  #include "gcc-urlifier.h"
+ #include "attr-callback.h"
  
  static tree handle_packed_attribute (tree *, tree, tree, int, bool *);
  static tree handle_nocommon_attribute (tree *, tree, tree, int, bool *);
*************** const struct attribute_spec c_common_gnu
*** 484,489 ****
--- 485,492 ----
  			      handle_tm_attribute, NULL },
    { "transaction_may_cancel_outer", 0, 0, false, true, false, false,
  			      handle_tm_attribute, NULL },
+   { CALLBACK_ATTR_IDENT,      1, -1, true, false, false, false,
+ 			      handle_callback_attribute, NULL },
    /* ??? These two attributes didn't make the transition from the
       Intel language document to the multi-vendor language document.  */
    { "transaction_pure",       0, 0, false, true,  false, false,
diff -Nrcpad gcc-16-20251012/gcc/c-family/c.opt gcc-16-20251019/gcc/c-family/c.opt
*** gcc-16-20251012/gcc/c-family/c.opt	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/c-family/c.opt	Sun Oct 19 22:32:13 2025
*************** C++ ObjC++ Var(warn_extra_semi) Init(-1)
*** 774,780 ****
  Warn about semicolon after in-class function definition.
  
  Wflex-array-member-not-at-end
! C C++ Var(warn_flex_array_member_not_at_end) Warning
  Warn when a structure containing a C99 flexible array member as the last
  field is not at the end of another structure.
  
--- 774,780 ----
  Warn about semicolon after in-class function definition.
  
  Wflex-array-member-not-at-end
! C ObjC C++ ObjC++ Var(warn_flex_array_member_not_at_end) Warning
  Warn when a structure containing a C99 flexible array member as the last
  field is not at the end of another structure.
  
*************** C ObjC C++ ObjC++ Var(warn_if_not_aligne
*** 866,876 ****
  Warn when the field in a struct is not aligned.
  
  Wignored-qualifiers
! C C++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
  Warn whenever type qualifiers are ignored.
  
  Wignored-attributes
! C C++ Var(warn_ignored_attributes) Init(1) Warning
  Warn whenever attributes are ignored.
  
  Wimplicit
--- 866,876 ----
  Warn when the field in a struct is not aligned.
  
  Wignored-qualifiers
! C ObjC C++ ObjC++ Var(warn_ignored_qualifiers) Warning EnabledBy(Wextra)
  Warn whenever type qualifiers are ignored.
  
  Wignored-attributes
! C ObjC C++ ObjC++ Var(warn_ignored_attributes) Init(1) Warning
  Warn whenever attributes are ignored.
  
  Wimplicit
*************** C ObjC C++ ObjC++ Var(warn_memset_transp
*** 1013,1019 ****
  Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
  
  Wmisleading-indentation
! C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
  Warn when the indentation of the code does not reflect the block structure.
  
  Wmismatched-dealloc
--- 1013,1019 ----
  Warn about suspicious calls to memset where the third argument is constant literal zero and the second is not.
  
  Wmisleading-indentation
! C ObjC C++ ObjC++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
  Warn when the indentation of the code does not reflect the block structure.
  
  Wmismatched-dealloc
*************** C ObjC Var(warn_old_style_definition) In
*** 1187,1193 ****
  Warn if an old-style parameter definition is used.
  
  Wopenacc-parallelism
! C C++ Var(warn_openacc_parallelism) Warning
  Warn about potentially suboptimal choices related to OpenACC parallelism.
  
  Wopenmp
--- 1187,1193 ----
  Warn if an old-style parameter definition is used.
  
  Wopenacc-parallelism
! C ObjC C++ ObjC++ Var(warn_openacc_parallelism) Warning
  Warn about potentially suboptimal choices related to OpenACC parallelism.
  
  Wopenmp
*************** C ObjC C++ ObjC++ Warning Var(warn_openm
*** 1195,1201 ****
  Warn about suspicious OpenMP code.
  
  Wopenmp-simd
! C C++ Var(warn_openmp_simd) Warning LangEnabledBy(C C++,Wall)
  Warn if a simd directive is overridden by the vectorizer cost model.
  
  Woverlength-strings
--- 1195,1201 ----
  Warn about suspicious OpenMP code.
  
  Wopenmp-simd
! C ObjC C++ ObjC++ Var(warn_openmp_simd) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
  Warn if a simd directive is overridden by the vectorizer cost model.
  
  Woverlength-strings
*************** C++ ObjC++ Var(warn_pessimizing_move) Wa
*** 1243,1253 ****
  Warn about calling std::move on a local object in a return statement preventing copy elision.
  
  Wplacement-new
! C++ Warning Alias(Wplacement-new=, 1, 0)
  Warn for placement new expressions with undefined behavior.
  
  Wplacement-new=
! C++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
  Warn for placement new expressions with undefined behavior.
  
  Wpmf-conversions
--- 1243,1253 ----
  Warn about calling std::move on a local object in a return statement preventing copy elision.
  
  Wplacement-new
! C++ ObjC++ Warning Alias(Wplacement-new=, 1, 0)
  Warn for placement new expressions with undefined behavior.
  
  Wplacement-new=
! C++ ObjC++ Joined RejectNegative UInteger Var(warn_placement_new) Init(-1) Warning IntegerRange(0, 2)
  Warn for placement new expressions with undefined behavior.
  
  Wpmf-conversions
*************** C ObjC C++ ObjC++ LangEnabledBy(C ObjC C
*** 1417,1423 ****
  ;
  
  Wstrict-flex-arrays
! C C++ Var(warn_strict_flex_arrays) Warning
  Warn about improper usages of flexible array members
  according to the level of -fstrict-flex-arrays.
  
--- 1417,1423 ----
  ;
  
  Wstrict-flex-arrays
! C ObjC C++ ObjC++ Var(warn_strict_flex_arrays) Warning
  Warn about improper usages of flexible array members
  according to the level of -fstrict-flex-arrays.
  
*************** C ObjC C++ ObjC++ Var(warn_switch_outsid
*** 1495,1501 ****
  Warn about switch values that are outside of the switch's type range.
  
  Wsync-nand
! C C++ Var(warn_sync_nand) Init(1) Warning
  Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
  
  Wsynth
--- 1495,1501 ----
  Warn about switch values that are outside of the switch's type range.
  
  Wsync-nand
! C ObjC C++ ObjC++ Var(warn_sync_nand) Init(1) Warning
  Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions are used.
  
  Wsynth
*************** EnumValue
*** 1900,1934 ****
  Enum(on_off) String(on) Value(1)
  
  fcontract-assumption-mode=
! C++ Joined RejectNegative
  -fcontract-assumption-mode=[on|off]	Enable or disable treating axiom level contracts as assumptions (default on).
  
  fcontract-build-level=
! C++ Joined RejectNegative
  -fcontract-build-level=[off|default|audit]	Specify max contract level to generate runtime checks for.
  
  fcontract-strict-declarations=
! C++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative
  -fcontract-strict-declarations=[on|off]	Enable or disable warnings on generalized redeclaration of functions with contracts (default off).
  
  fcontract-mode=
! C++ Var(flag_contract_mode) Enum(on_off) Joined Init(1) RejectNegative
  -fcontract-mode=[on|off]	Enable or disable all contract facilities (default on).
  
  fcontract-continuation-mode=
! C++ Joined RejectNegative
  -fcontract-continuation-mode=[on|off]	Enable or disable contract continuation mode (default off).
  
  fcontract-role=
! C++ Joined RejectNegative
  -fcontract-role=<name>:<semantics>	Specify the semantics for all levels in a role (default, review), or a custom contract role with given semantics (ex: opt:assume,assume,assume).
  
  fcontract-semantic=
! C++ Joined RejectNegative
  -fcontract-semantic=<level>:<semantic>	Specify the concrete semantics for level.
  
  fcoroutines
! C++ LTO Var(flag_coroutines)
  Enable C++ coroutines (experimental).
  
  fdebug-cpp
--- 1900,1934 ----
  Enum(on_off) String(on) Value(1)
  
  fcontract-assumption-mode=
! C++ ObjC++ Joined RejectNegative
  -fcontract-assumption-mode=[on|off]	Enable or disable treating axiom level contracts as assumptions (default on).
  
  fcontract-build-level=
! C++ ObjC++ Joined RejectNegative
  -fcontract-build-level=[off|default|audit]	Specify max contract level to generate runtime checks for.
  
  fcontract-strict-declarations=
! C++ ObjC++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative
  -fcontract-strict-declarations=[on|off]	Enable or disable warnings on generalized redeclaration of functions with contracts (default off).
  
  fcontract-mode=
! C++ ObjC++ Var(flag_contract_mode) Enum(on_off) Joined Init(1) RejectNegative
  -fcontract-mode=[on|off]	Enable or disable all contract facilities (default on).
  
  fcontract-continuation-mode=
! C++ ObjC++ Joined RejectNegative
  -fcontract-continuation-mode=[on|off]	Enable or disable contract continuation mode (default off).
  
  fcontract-role=
! C++ ObjC++ Joined RejectNegative
  -fcontract-role=<name>:<semantics>	Specify the semantics for all levels in a role (default, review), or a custom contract role with given semantics (ex: opt:assume,assume,assume).
  
  fcontract-semantic=
! C++ ObjC++ Joined RejectNegative
  -fcontract-semantic=<level>:<semantic>	Specify the concrete semantics for level.
  
  fcoroutines
! C++ ObjC++ LTO Var(flag_coroutines)
  Enable C++ coroutines (experimental).
  
  fdebug-cpp
*************** C ObjC Var(warn_compare_distinct_pointer
*** 2130,2152 ****
  Warn if pointers of distinct types are compared without a cast.
  
  flang-info-include-translate
! C++ Var(note_include_translate_yes)
  Note #include directives translated to import declarations.
  
  flang-info-include-translate-not
! C++ Var(note_include_translate_no)
  Note #include directives not translated to import declarations, and not known to be textual.
  
  flang-info-include-translate=
! C++ Joined RejectNegative MissingArgError(missing header name)
  Note a #include translation of a specific header.
  
  flang-info-module-cmi
! C++ Var(note_module_cmi_yes)
  Note Compiled Module Interface pathnames.
  
  flang-info-module-cmi=
! C++ Joined RejectNegative MissingArgError(missing module name)
  Note Compiled Module Interface pathname of a specific module or header-unit.
  
  fmax-include-depth=
--- 2130,2152 ----
  Warn if pointers of distinct types are compared without a cast.
  
  flang-info-include-translate
! C++ ObjC++ Var(note_include_translate_yes)
  Note #include directives translated to import declarations.
  
  flang-info-include-translate-not
! C++ ObjC++ Var(note_include_translate_no)
  Note #include directives not translated to import declarations, and not known to be textual.
  
  flang-info-include-translate=
! C++ ObjC++ Joined RejectNegative MissingArgError(missing header name)
  Note a #include translation of a specific header.
  
  flang-info-module-cmi
! C++ ObjC++ Var(note_module_cmi_yes)
  Note Compiled Module Interface pathnames.
  
  flang-info-module-cmi=
! C++ ObjC++ Joined RejectNegative MissingArgError(missing module name)
  Note Compiled Module Interface pathname of a specific module or header-unit.
  
  fmax-include-depth=
*************** C++ ObjC++ Var(flag_sized_deallocation)
*** 2357,2366 ****
  Enable C++14 sized deallocation support.
  
  fstrict-flex-arrays
! C C++ Common Alias(fstrict-flex-arrays=,3,0)
  
  fstrict-flex-arrays=
! C C++ Common Joined RejectNegative UInteger Var(flag_strict_flex_arrays) Init(0) IntegerRange(0,3)
  -fstrict-flex-arrays=<level>    Control when to treat the trailing array of a structure as a flexible array member for the purposes of accessing the elements of such an array. The default is treating all trailing arrays of structures as flexible array members.
  
  fsquangle
--- 2357,2366 ----
  Enable C++14 sized deallocation support.
  
  fstrict-flex-arrays
! C ObjC C++ ObjC++ Common Alias(fstrict-flex-arrays=,3,0)
  
  fstrict-flex-arrays=
! C ObjC C++ ObjC++ Common Joined RejectNegative UInteger Var(flag_strict_flex_arrays) Init(0) IntegerRange(0,3)
  -fstrict-flex-arrays=<level>    Control when to treat the trailing array of a structure as a flexible array member for the purposes of accessing the elements of such an array. The default is treating all trailing arrays of structures as flexible array members.
  
  fsquangle
diff -Nrcpad gcc-16-20251012/gcc/cfghooks.cc gcc-16-20251019/gcc/cfghooks.cc
*** gcc-16-20251012/gcc/cfghooks.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cfghooks.cc	Sun Oct 19 22:32:13 2025
*************** merge_blocks (basic_block a, basic_block
*** 824,830 ****
    else if (a->count.quality () < b->count.quality ())
      a->count = b->count;
    else if (a->count.quality () == b->count.quality ())
!     a->count = a->count.max (b->count);
  
    cfg_hooks->merge_blocks (a, b);
  
--- 824,830 ----
    else if (a->count.quality () < b->count.quality ())
      a->count = b->count;
    else if (a->count.quality () == b->count.quality ())
!     a->count = profile_count::max_prefer_initialized (a->count, b->count);
  
    cfg_hooks->merge_blocks (a, b);
  
diff -Nrcpad gcc-16-20251012/gcc/cgraph.cc gcc-16-20251019/gcc/cgraph.cc
*** gcc-16-20251012/gcc/cgraph.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cgraph.cc	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 69,74 ****
--- 69,75 ----
  #include "tree-nested.h"
  #include "symtab-thunks.h"
  #include "symtab-clones.h"
+ #include "attr-callback.h"
  
  /* FIXME: Only for PROP_loops, but cgraph shouldn't have to know about this.  */
  #include "tree-pass.h"
*************** cgraph_add_edge_to_call_site_hash (cgrap
*** 871,881 ****
       one indirect); always hash the direct one.  */
    if (e->speculative && e->indirect_unknown_callee)
      return;
    cgraph_edge **slot = e->caller->call_site_hash->find_slot_with_hash
        (e->call_stmt, cgraph_edge_hasher::hash (e->call_stmt), INSERT);
    if (*slot)
      {
!       gcc_assert (((cgraph_edge *)*slot)->speculative);
        if (e->callee && (!e->prev_callee
  			|| !e->prev_callee->speculative
  			|| e->prev_callee->call_stmt != e->call_stmt))
--- 872,893 ----
       one indirect); always hash the direct one.  */
    if (e->speculative && e->indirect_unknown_callee)
      return;
+   /* We always want to hash the carrying edge of a callback, not the edges
+      pointing to the callbacks themselves, as their call statement doesn't
+      exist.  */
+   if (e->callback)
+     return;
    cgraph_edge **slot = e->caller->call_site_hash->find_slot_with_hash
        (e->call_stmt, cgraph_edge_hasher::hash (e->call_stmt), INSERT);
    if (*slot)
      {
!       cgraph_edge *edge = (cgraph_edge *) *slot;
!       gcc_assert (edge->speculative || edge->has_callback);
!       if (edge->has_callback)
! 	/* If the slot is already occupied, then the hashed edge is the
! 	   callback-carrying edge, which is desired behavior, so we can safely
! 	   return.  */
! 	gcc_checking_assert (edge == e);
        if (e->callee && (!e->prev_callee
  			|| !e->prev_callee->speculative
  			|| e->prev_callee->call_stmt != e->call_stmt))
*************** cgraph_node::get_edge (gimple *call_stmt
*** 919,924 ****
--- 931,943 ----
  	n++;
        }
  
+   /* We want to work with the callback-carrying edge whenever possible.  When it
+      comes to callback edges, a call statement might have multiple callback
+      edges attached to it.  These can be easily obtained from the carrying edge
+      instead.  */
+   if (e && e->callback)
+     e = e->get_callback_carrying_edge ();
+ 
    if (n > 100)
      {
        call_site_hash = hash_table<cgraph_edge_hasher>::create_ggc (120);
*************** cgraph_node::get_edge (gimple *call_stmt
*** 931,945 ****
    return e;
  }
  
! 
! /* Change field call_stmt of edge E to NEW_STMT.  If UPDATE_SPECULATIVE and E
     is any component of speculative edge, then update all components.
!    Speculations can be resolved in the process and EDGE can be removed and
!    deallocated.  Return the edge that now represents the call.  */
  
  cgraph_edge *
  cgraph_edge::set_call_stmt (cgraph_edge *e, gcall *new_stmt,
! 			    bool update_speculative)
  {
    tree decl;
  
--- 950,965 ----
    return e;
  }
  
! /* Change field call_stmt of edge E to NEW_STMT.  If UPDATE_DERIVED_EDGES and E
     is any component of speculative edge, then update all components.
!    speculations can be resolved in the process and edge can be removed and
!    deallocated.  if update_derived_edges and e is a part of a callback pair,
!    update all associated edges and return their carrying edge.  return the edge
!    that now represents the call.  */
  
  cgraph_edge *
  cgraph_edge::set_call_stmt (cgraph_edge *e, gcall *new_stmt,
! 			    bool update_derived_edges)
  {
    tree decl;
  
*************** cgraph_edge::set_call_stmt (cgraph_edge
*** 955,961 ****
  
    /* Speculative edges has three component, update all of them
       when asked to.  */
!   if (update_speculative && e->speculative
        /* If we are about to resolve the speculation by calling make_direct
  	 below, do not bother going over all the speculative edges now.  */
        && !new_direct_callee)
--- 975,981 ----
  
    /* Speculative edges has three component, update all of them
       when asked to.  */
!   if (update_derived_edges && e->speculative
        /* If we are about to resolve the speculation by calling make_direct
  	 below, do not bother going over all the speculative edges now.  */
        && !new_direct_callee)
*************** cgraph_edge::set_call_stmt (cgraph_edge
*** 991,996 ****
--- 1011,1037 ----
    if (new_direct_callee)
      e = make_direct (e, new_direct_callee);
  
+   /* When updating a callback or a callback-carrying edge, update every edge
+      involved.  */
+   if (update_derived_edges && (e->callback || e->has_callback))
+     {
+       cgraph_edge *current, *next, *carrying;
+       carrying = e->has_callback ? e : e->get_callback_carrying_edge ();
+ 
+       current = e->first_callback_edge ();
+       if (current)
+ 	{
+ 	  for (cgraph_edge *d = current; d; d = next)
+ 	    {
+ 	      next = d->next_callback_edge ();
+ 	      cgraph_edge *d2 = set_call_stmt (d, new_stmt, false);
+ 	      gcc_assert (d2 == d);
+ 	    }
+ 	}
+       carrying = set_call_stmt (carrying, new_stmt, false);
+       return carrying;
+     }
+ 
    /* Only direct speculative edges go to call_site_hash.  */
    if (e->caller->call_site_hash
        && (!e->speculative || !e->indirect_unknown_callee)
*************** symbol_table::create_edge (cgraph_node *
*** 1036,1042 ****
  	 construction of call stmt hashtable.  */
        cgraph_edge *e;
        gcc_checking_assert (!(e = caller->get_edge (call_stmt))
! 			   || e->speculative);
  
        gcc_assert (is_gimple_call (call_stmt));
      }
--- 1077,1083 ----
  	 construction of call stmt hashtable.  */
        cgraph_edge *e;
        gcc_checking_assert (!(e = caller->get_edge (call_stmt))
! 			   || e->speculative || e->has_callback || e->callback);
  
        gcc_assert (is_gimple_call (call_stmt));
      }
*************** symbol_table::create_edge (cgraph_node *
*** 1063,1068 ****
--- 1104,1112 ----
    edge->indirect_info = NULL;
    edge->indirect_inlining_edge = 0;
    edge->speculative = false;
+   edge->has_callback = false;
+   edge->callback = false;
+   edge->callback_id = 0;
    edge->indirect_unknown_callee = indir_unknown_callee;
    if (call_stmt && caller->call_site_hash)
      cgraph_add_edge_to_call_site_hash (edge);
*************** cgraph_edge::make_speculative (cgraph_no
*** 1286,1291 ****
--- 1330,1448 ----
    return e2;
  }
  
+ /* Create a callback edge calling N2.  Callback edges
+    never get turned into actual calls, they are just used
+    as clues and allow for optimizing functions which do not
+    have any callsites during compile time, e.g. functions
+    passed to standard library functions.
+ 
+    The edge will be attached to the same call statement as
+    the callback-carrying edge, which is the instance this method
+    is called on.
+ 
+    callback_id is used to pair the returned edge with the attribute that
+    originated it.
+ 
+    Return the resulting callback edge.  */
+ 
+ cgraph_edge *
+ cgraph_edge::make_callback (cgraph_node *n2, unsigned int callback_id)
+ {
+   cgraph_node *n = caller;
+   cgraph_edge *e2;
+ 
+   has_callback = true;
+   e2 = n->create_edge (n2, call_stmt, count);
+   if (dump_file)
+     fprintf (
+       dump_file,
+       "Created callback edge %s -> %s belonging to carrying edge %s -> %s\n",
+       e2->caller->dump_name (), e2->callee->dump_name (), caller->dump_name (),
+       callee->dump_name ());
+   e2->inline_failed = CIF_CALLBACK_EDGE;
+   e2->callback = true;
+   e2->callback_id = callback_id;
+   if (TREE_NOTHROW (n2->decl))
+     e2->can_throw_external = false;
+   else
+     e2->can_throw_external = can_throw_external;
+   e2->lto_stmt_uid = lto_stmt_uid;
+   n2->mark_address_taken ();
+   return e2;
+ }
+ 
+ /* Returns the callback_carrying edge of a callback edge on which
+    it is called on or NULL when no such edge can be found.
+ 
+    An edge is taken to be the callback-carrying if it has it's has_callback
+    flag set and the edges share their call statements.  */
+ 
+ cgraph_edge *
+ cgraph_edge::get_callback_carrying_edge ()
+ {
+   gcc_checking_assert (callback);
+   cgraph_edge *e;
+   for (e = caller->callees; e; e = e->next_callee)
+     {
+       if (e->has_callback && e->call_stmt == call_stmt
+ 	  && e->lto_stmt_uid == lto_stmt_uid)
+ 	break;
+     }
+   return e;
+ }
+ 
+ /* Returns the first callback edge in the list of callees of the caller node.
+    Note that the edges might be in arbitrary order.  Must be called on a
+    callback or callback-carrying edge.  */
+ 
+ cgraph_edge *
+ cgraph_edge::first_callback_edge ()
+ {
+   gcc_checking_assert (has_callback || callback);
+   cgraph_edge *e = NULL;
+   for (e = caller->callees; e; e = e->next_callee)
+     {
+       if (e->callback && e->call_stmt == call_stmt
+ 	  && e->lto_stmt_uid == lto_stmt_uid)
+ 	break;
+     }
+   return e;
+ }
+ 
+ /* Given a callback edge, returns the next callback edge belonging to the same
+    carrying edge.  Must be called on a callback edge, not the callback-carrying
+    edge.  */
+ 
+ cgraph_edge *
+ cgraph_edge::next_callback_edge ()
+ {
+   gcc_checking_assert (callback);
+   cgraph_edge *e = NULL;
+   for (e = next_callee; e; e = e->next_callee)
+     {
+       if (e->callback && e->call_stmt == call_stmt
+ 	  && e->lto_stmt_uid == lto_stmt_uid)
+ 	break;
+     }
+   return e;
+ }
+ 
+ /* When called on a callback-carrying edge, removes all of its attached callback
+    edges and sets has_callback to FALSE.  */
+ 
+ void
+ cgraph_edge::purge_callback_edges ()
+ {
+   gcc_checking_assert (has_callback);
+   cgraph_edge *e, *next;
+   for (e = first_callback_edge (); e; e = next)
+     {
+       next = e->next_callback_edge ();
+       cgraph_edge::remove (e);
+     }
+   has_callback = false;
+ }
+ 
  /* Speculative call consists of an indirect edge and one or more
     direct edge+ref pairs.
  
*************** void
*** 1521,1532 ****
--- 1678,1704 ----
  cgraph_edge::redirect_callee (cgraph_node *n)
  {
    bool loc = callee->comdat_local_p ();
+   cgraph_node *old_callee = callee;
+ 
    /* Remove from callers list of the current callee.  */
    remove_callee ();
  
    /* Insert to callers list of the new callee.  */
    set_callee (n);
  
+   if (callback)
+     {
+       /* When redirecting a callback callee, redirect its ref as well.  */
+       ipa_ref *old_ref = caller->find_reference (old_callee, call_stmt,
+ 						 lto_stmt_uid, IPA_REF_ADDR);
+       gcc_checking_assert(old_ref);
+       old_ref->remove_reference ();
+       ipa_ref *new_ref = caller->create_reference (n, IPA_REF_ADDR, call_stmt);
+       new_ref->lto_stmt_uid = lto_stmt_uid;
+       if (!old_callee->referred_to_p ())
+ 	old_callee->address_taken = 0;
+     }
+ 
    if (!inline_failed)
      return;
    if (!loc && n->comdat_local_p ())
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1643,1648 ****
--- 1815,1841 ----
        || decl == e->callee->decl)
      return e->call_stmt;
  
+   /* When redirecting a callback edge, all we need to do is replace
+      the original address with the address of the function we are
+      redirecting to.  */
+   if (e->callback)
+     {
+       cgraph_edge *carrying = e->get_callback_carrying_edge ();
+       if (!callback_is_special_cased (carrying->callee->decl, e->call_stmt)
+ 	  && !lookup_attribute (CALLBACK_ATTR_IDENT,
+ 				DECL_ATTRIBUTES (carrying->callee->decl)))
+ 	/* Callback attribute is removed if the dispatching function changes
+ 	   signature, as the indices wouldn't be correct anymore.  These edges
+ 	   will get cleaned up later, ignore their redirection for now.  */
+ 	return e->call_stmt;
+       int fn_idx = callback_fetch_fn_position (e, carrying);
+       tree previous_arg = gimple_call_arg (e->call_stmt, fn_idx);
+       location_t loc = EXPR_LOCATION (previous_arg);
+       tree new_addr = build_fold_addr_expr_loc (loc, e->callee->decl);
+       gimple_call_set_arg (e->call_stmt, fn_idx, new_addr);
+       return e->call_stmt;
+     }
+ 
    if (decl && ipa_saved_clone_sources)
      {
        tree *p = ipa_saved_clone_sources->get (e->callee);
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1752,1758 ****
    maybe_remove_unused_call_args (DECL_STRUCT_FUNCTION (e->caller->decl),
  				 new_stmt);
  
!   e->caller->set_call_stmt_including_clones (e->call_stmt, new_stmt, false);
  
    if (symtab->dump_file)
      {
--- 1945,1953 ----
    maybe_remove_unused_call_args (DECL_STRUCT_FUNCTION (e->caller->decl),
  				 new_stmt);
  
!   /* Update callback edges if setting the carrying edge's statement, or else
!      their pairing would fall apart.  */
!   e->caller->set_call_stmt_including_clones (e->call_stmt, new_stmt, e->has_callback);
  
    if (symtab->dump_file)
      {
*************** cgraph_node::remove_callers (void)
*** 1944,1949 ****
--- 2139,2155 ----
    for (e = callers; e; e = f)
      {
        f = e->next_caller;
+       /* When removing a callback-carrying edge, remove all its attached edges
+ 	 as well.  */
+       if (e->has_callback)
+ 	{
+ 	  cgraph_edge *cbe, *next_cbe = NULL;
+ 	  for (cbe = e->first_callback_edge (); cbe; cbe = next_cbe)
+ 	    {
+ 	      next_cbe = cbe->next_callback_edge ();
+ 	      cgraph_edge::remove (cbe);
+ 	    }
+ 	}
        symtab->call_edge_removal_hooks (e);
        e->remove_caller ();
        symtab->free_edge (e);
*************** cgraph_edge::dump_edge_flags (FILE *f)
*** 2253,2258 ****
--- 2459,2468 ----
  {
    if (speculative)
      fprintf (f, "(speculative) ");
+   if (callback)
+     fprintf (f, "(callback) ");
+   if (has_callback)
+     fprintf (f, "(has_callback) ");
    if (!inline_failed)
      fprintf (f, "(inlined) ");
    if (call_stmt_cannot_inline_p)
*************** cgraph_node::verify_node (void)
*** 3866,3871 ****
--- 4076,4083 ----
        if (gimple_has_body_p (e->caller->decl)
  	  && !e->caller->inlined_to
  	  && !e->speculative
+ 	  && !e->callback
+ 	  && !e->has_callback
  	  /* Optimized out calls are redirected to __builtin_unreachable.  */
  	  && (e->count.nonzero_p ()
  	      || ! e->callee->decl
*************** cgraph_node::verify_node (void)
*** 4071,4077 ****
  			    }
  			  if (!e->indirect_unknown_callee)
  			    {
! 			      if (e->verify_corresponds_to_fndecl (decl))
  				{
  				  error ("edge points to wrong declaration:");
  				  debug_tree (e->callee->decl);
--- 4283,4294 ----
  			    }
  			  if (!e->indirect_unknown_callee)
  			    {
! 			      /* Callback edges violate this assertion
! 				 because their call statement doesn't exist,
! 				 their associated statement belongs to the
! 				 callback-dispatching function.  */
! 			      if (!e->callback
! 				  && e->verify_corresponds_to_fndecl (decl))
  				{
  				  error ("edge points to wrong declaration:");
  				  debug_tree (e->callee->decl);
*************** cgraph_node::verify_node (void)
*** 4113,4119 ****
  
        for (e = callees; e; e = e->next_callee)
  	{
! 	  if (!e->aux && !e->speculative)
  	    {
  	      error ("edge %s->%s has no corresponding call_stmt",
  		     identifier_to_locale (e->caller->name ()),
--- 4330,4387 ----
  
        for (e = callees; e; e = e->next_callee)
  	{
! 	  if (!e->callback && e->callback_id)
! 	    {
! 	      error ("non-callback edge has callback_id set");
! 	      error_found = true;
! 	    }
! 
! 	  if (e->callback && e->has_callback)
! 	    {
! 	      error ("edge has both callback and has_callback set");
! 	      error_found = true;
! 	    }
! 
! 	  if (e->callback)
! 	    {
! 	      if (!e->get_callback_carrying_edge ())
! 		{
! 		  error ("callback edge %s->%s has no callback-carrying",
! 			 identifier_to_locale (e->caller->name ()),
! 			 identifier_to_locale (e->callee->name ()));
! 		  error_found = true;
! 		}
! 	    }
! 
! 	  if (e->has_callback
! 	      && !callback_is_special_cased (e->callee->decl, e->call_stmt))
! 	    {
! 	      int ncallbacks = 0;
! 	      int nfound_edges = 0;
! 	      for (tree cb = lookup_attribute (CALLBACK_ATTR_IDENT, DECL_ATTRIBUTES (
! 							     e->callee->decl));
! 		   cb; cb = lookup_attribute (CALLBACK_ATTR_IDENT, TREE_CHAIN (cb)),
! 			ncallbacks++)
! 		;
! 	      for (cgraph_edge *cbe = callees; cbe; cbe = cbe->next_callee)
! 		{
! 		  if (cbe->callback && cbe->call_stmt == e->call_stmt
! 		      && cbe->lto_stmt_uid == e->lto_stmt_uid)
! 		    {
! 		      nfound_edges++;
! 		    }
! 		}
! 	      if (ncallbacks < nfound_edges)
! 		{
! 		  error ("callback edge %s->%s callback edge count mismatch, "
! 			 "expected at most %d, found %d",
! 			 identifier_to_locale (e->caller->name ()),
! 			 identifier_to_locale (e->callee->name ()), ncallbacks,
! 			 nfound_edges);
! 		}
! 	    }
! 
! 	  if (!e->aux && !e->speculative && !e->callback && !e->has_callback)
  	    {
  	      error ("edge %s->%s has no corresponding call_stmt",
  		     identifier_to_locale (e->caller->name ()),
diff -Nrcpad gcc-16-20251012/gcc/cgraph.h gcc-16-20251019/gcc/cgraph.h
*** gcc-16-20251012/gcc/cgraph.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cgraph.h	Sun Oct 19 22:32:13 2025
*************** public:
*** 1738,1749 ****
    /* Remove EDGE from the cgraph.  */
    static void remove (cgraph_edge *edge);
  
!   /* Change field call_stmt of edge E to NEW_STMT.  If UPDATE_SPECULATIVE and E
!      is any component of speculative edge, then update all components.
       Speculations can be resolved in the process and EDGE can be removed and
!      deallocated.  Return the edge that now represents the call.  */
    static cgraph_edge *set_call_stmt (cgraph_edge *e, gcall *new_stmt,
! 				     bool update_speculative = true);
  
    /* Redirect callee of the edge to N.  The function does not update underlying
       call expression.  */
--- 1738,1751 ----
    /* Remove EDGE from the cgraph.  */
    static void remove (cgraph_edge *edge);
  
!   /* Change field call_stmt of edge E to NEW_STMT.  If UPDATE_DERIVED_EDGES and
!      E is any component of speculative edge, then update all components.
       Speculations can be resolved in the process and EDGE can be removed and
!      deallocated.  Return the edge that now represents the call.  If
!      UPDATE_DERIVED_EDGES and E is a part of a callback edge, update all
!      associated edges and return the callback-carrying edge.  */
    static cgraph_edge *set_call_stmt (cgraph_edge *e, gcall *new_stmt,
! 				     bool update_derived_edges = true);
  
    /* Redirect callee of the edge to N.  The function does not update underlying
       call expression.  */
*************** public:
*** 1769,1774 ****
--- 1771,1802 ----
    cgraph_edge *make_speculative (cgraph_node *n2, profile_count direct_count,
  				 unsigned int speculative_id = 0);
  
+   /* Create a callback edge, representing an indirect call to n2
+      passed to a function by argument.  Sets has_callback flag of the original
+      edge. Both edges are attached to the same call statement.  Returns created
+      callback edge.  */
+   cgraph_edge *make_callback (cgraph_node *n2, unsigned int callback_hash);
+ 
+   /* Returns the callback-carrying edge of a callback edge or NULL, if such edge
+      cannot be found.  An edge is considered callback-carrying, if it has it's
+      has_callback flag set and shares it's call statement with the edge
+      this method is caled on.  */
+   cgraph_edge *get_callback_carrying_edge ();
+ 
+   /* Returns the first callback edge in the list of callees of the caller node.
+      Note that the edges might be in arbitrary order.  Must be called on a
+      callback or callback-carrying edge.  */
+   cgraph_edge *first_callback_edge ();
+ 
+   /* Given a callback edge, returns the next callback edge belonging to the same
+      callback-carrying edge.  Must be called on a callback edge, not the
+      callback-carrying edge.  */
+   cgraph_edge *next_callback_edge ();
+ 
+   /* When called on a callback-carrying edge, removes all of its attached
+      callback edges and sets has_callback to FALSE.  */
+   void purge_callback_edges ();
+ 
    /* Speculative call consists of an indirect edge and one or more
       direct edge+ref pairs.  Speculative will expand to the following sequence:
  
*************** public:
*** 1990,1995 ****
--- 2018,2040 ----
       Optimizers may later redirect direct call to clone, so 1) and 3)
       do not need to necessarily agree with destination.  */
    unsigned int speculative : 1;
+   /* Edges with CALLBACK flag represent indirect calls to functions passed
+      to their callers by argument.  This is useful in cases, where the body
+      of these caller functions is not known, e. g. qsort in glibc or
+      GOMP_parallel in libgomp.  These edges are never made into real calls,
+      but are used instead to optimize these callback functions and later replace
+      their addresses with their optimized versions.  Edges with this flag set
+      share their call statement with their callback-carrying edge.  */
+   unsigned int callback : 1;
+   /* Edges with this flag set have one or more callback edges attached.  They
+      share their call statements with this edge.  This flag represents the fact
+      that the callee of this edge takes a function and it's parameters by
+      argument and calls it at a later time.  */
+   unsigned int has_callback : 1;
+   /* Used to pair callback edges and the attributes that originated them
+      together.  Currently the index of the callback argument, retrieved
+      from the attribute.  */
+   unsigned int callback_id : 16;
    /* Set to true when caller is a constructor or destructor of polymorphic
       type.  */
    unsigned in_polymorphic_cdtor : 1;
diff -Nrcpad gcc-16-20251012/gcc/cgraphclones.cc gcc-16-20251019/gcc/cgraphclones.cc
*** gcc-16-20251012/gcc/cgraphclones.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cgraphclones.cc	Sun Oct 19 22:32:13 2025
*************** cgraph_edge::clone (cgraph_node *n, gcal
*** 144,149 ****
--- 144,152 ----
    new_edge->can_throw_external = can_throw_external;
    new_edge->call_stmt_cannot_inline_p = call_stmt_cannot_inline_p;
    new_edge->speculative = speculative;
+   new_edge->callback = callback;
+   new_edge->has_callback = has_callback;
+   new_edge->callback_id = callback_id;
    new_edge->in_polymorphic_cdtor = in_polymorphic_cdtor;
  
    /* Update IPA profile.  Local profiles need no updating in original.  */
diff -Nrcpad gcc-16-20251012/gcc/cif-code.def gcc-16-20251019/gcc/cif-code.def
*** gcc-16-20251012/gcc/cif-code.def	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cif-code.def	Sun Oct 19 22:32:13 2025
*************** DEFCIFCODE(EXTERN_LIVE_ONLY_STATIC, CIF_
*** 142,144 ****
--- 142,149 ----
  /* We proved that the call is unreachable.  */
  DEFCIFCODE(UNREACHABLE, CIF_FINAL_ERROR,
  	   N_("unreachable"))
+ 
+ /* Callback edges cannot be inlined, as the corresponding call
+    statement does not exist.  */
+ DEFCIFCODE(CALLBACK_EDGE, CIF_FINAL_ERROR,
+ 	   N_("callback edges cannot be inlined"))
diff -Nrcpad gcc-16-20251012/gcc/cobol/genapi.cc gcc-16-20251019/gcc/cobol/genapi.cc
*** gcc-16-20251012/gcc/cobol/genapi.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cobol/genapi.cc	Sun Oct 19 22:32:13 2025
*************** static void
*** 2357,2363 ****
  move_tree(  cbl_field_t  *dest,
              tree          offset,
              tree          psz_source, // psz_source is a null-terminated string
!             tree length_bump=integer_zero_node)   
    {
    // This routine assumes that the psz_source is in the same codeset as the
    // dest.
--- 2357,2363 ----
  move_tree(  cbl_field_t  *dest,
              tree          offset,
              tree          psz_source, // psz_source is a null-terminated string
!             tree length_bump=integer_zero_node)
    {
    // This routine assumes that the psz_source is in the same codeset as the
    // dest.
*************** parser_enter_file(const char *filename)
*** 3774,3779 ****
--- 3774,3780 ----
      SET_VAR_DECL(var_decl_treeplet_4s             , SIZE_T_P                , "__gg__treeplet_4s"     );
      SET_VAR_DECL(var_decl_nop                     , INT                     , "__gg__nop"             );
      SET_VAR_DECL(var_decl_main_called             , INT                     , "__gg__main_called"     );
+     SET_VAR_DECL(var_decl_entry_label             , VOID_P                  , "__gg__entry_label"     );
      }
    }
  
*************** enter_program_common(const char *funcnam
*** 3865,3889 ****
    current_function->current_section = NULL;
    current_function->current_paragraph = NULL;
  
-   // Text conversion must be initialized before the code generated by
-   // parser_symbol_add runs.
- 
-   // The text_conversion_override exists both in the library and in the compiler
- 
-   __gg__set_internal_codeset(internal_codeset_is_ebcdic());
-   gg_call(VOID,
-           "__gg__set_internal_codeset",
-           internal_codeset_is_ebcdic()
-           ? integer_one_node : integer_zero_node,
-           NULL_TREE);
- 
-   __gg__text_conversion_override(td_default_e, cs_default_e);
-   gg_call(VOID,
-           "__gg__text_conversion_override",
-           build_int_cst_type(INT, td_default_e),
-           build_int_cst_type(INT, cs_default_e),
-           NULL_TREE);
- 
    gg_call(VOID,
            "__gg__codeset_figurative_constants",
            NULL_TREE);
--- 3866,3871 ----
*************** parser_alphabet( cbl_alphabet_t& alphabe
*** 5059,5087 ****
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
!     fprintf(stderr, "%s\n", alphabet.name);
      switch(alphabet.encoding)
        {
        case ASCII_e:
!         fprintf(stderr, "ASCII\n");
          break;
        case iso646_e:
!         fprintf(stderr, "ISO646\n");
          break;
        case EBCDIC_e:
!         fprintf(stderr, "EBCDIC\n");
          break;
        case UTF8_e:
!         fprintf(stderr, "UTF8\n");
          break;
        case custom_encoding_e:
!         fprintf(stderr, "%s\n", alphabet.name);
          break;
        default:
          { const char * p = __gg__encoding_iconv_name( alphabet.encoding );
!           fprintf(stderr, "%s\n", p? p : "[unknown]");
          }
        }
      SHOW_PARSE_END
      }
  
--- 5041,5074 ----
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
!     char *psz = xasprintf(" %s ", alphabet.name);
!     SHOW_PARSE_TEXT(psz);
!     free(psz);
      switch(alphabet.encoding)
        {
        case ASCII_e:
!         psz = xasprintf("ASCII");
          break;
        case iso646_e:
!         psz = xasprintf("ISO646");
          break;
        case EBCDIC_e:
!         psz = xasprintf("EBCDIC");
          break;
        case UTF8_e:
!         psz = xasprintf("UTF8");
          break;
        case custom_encoding_e:
!         psz = xasprintf("%s", alphabet.name);
          break;
        default:
          { const char * p = __gg__encoding_iconv_name( alphabet.encoding );
!           psz = xasprintf("%s", p? p : "[unknown]");
          }
        }
+     SHOW_PARSE_TEXT(" ");
+     SHOW_PARSE_TEXT(psz);
+     free(psz);
      SHOW_PARSE_END
      }
  
*************** parser_alphabet( cbl_alphabet_t& alphabe
*** 5122,5127 ****
--- 5109,5115 ----
                gg_get_address_of(table256),
                build_int_cst_type(INT, alphabet.low_index),
                build_int_cst_type(INT, alphabet.high_index),
+ 
                NULL_TREE );
        break;
        }
*************** parser_alphabet_use( cbl_alphabet_t& alp
*** 5137,5162 ****
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
      switch(alphabet.encoding)
        {
        case ASCII_e:
!         fprintf(stderr, "ASCII\n");
          break;
        case iso646_e:
!         fprintf(stderr, "ISO646\n");
          break;
        case EBCDIC_e:
!         fprintf(stderr, "EBCDIC\n");
          break;
        case UTF8_e:
!         fprintf(stderr, "UTF8\n");
          break;
        case custom_encoding_e:
!         fprintf(stderr, "%s\n", alphabet.name);
          break;
        default:
          gcc_unreachable();
        }
      SHOW_PARSE_END
      }
  
--- 5125,5155 ----
    SHOW_PARSE
      {
      SHOW_PARSE_HEADER
+     char *psz = xasprintf(" %s ", alphabet.name);
+     SHOW_PARSE_TEXT(psz);
+     free(psz);
      switch(alphabet.encoding)
        {
        case ASCII_e:
!         psz = xasprintf("ASCII");
          break;
        case iso646_e:
!         psz = xasprintf("ISO646");
          break;
        case EBCDIC_e:
!         psz = xasprintf("EBCDIC");
          break;
        case UTF8_e:
!         psz = xasprintf("UTF8");
          break;
        case custom_encoding_e:
!         psz = xasprintf("%s", alphabet.name);
          break;
        default:
          gcc_unreachable();
        }
+     SHOW_PARSE_TEXT(psz);
+     free(psz);
      SHOW_PARSE_END
      }
  
*************** parser_alphabet_use( cbl_alphabet_t& alp
*** 5174,5179 ****
--- 5167,5173 ----
        __gg__high_value_character = DEGENERATE_HIGH_VALUE;
        gg_call(VOID,
                "__gg__alphabet_use",
+               build_int_cst_type(INT, current_encoding(encoding_display_e)),
                build_int_cst_type(INT, alphabet.encoding),
                null_pointer_node,
                NULL_TREE);
*************** parser_alphabet_use( cbl_alphabet_t& alp
*** 5189,5194 ****
--- 5183,5189 ----
  
        gg_call(VOID,
                "__gg__alphabet_use",
+               build_int_cst_type(INT, current_encoding(encoding_display_e)),
                build_int_cst_type(INT, alphabet.encoding),
                build_int_cst_type(SIZE_T, alphabet_index),
                NULL_TREE);
*************** initialize_the_data()
*** 6938,6943 ****
--- 6933,6939 ----
    // This is one-time initialization of the libgcobol program state stack
    gg_call(VOID,
            "__gg__init_program_state",
+           build_int_cst_type(INT, current_encoding(encoding_display_e)),
            NULL_TREE);
  
    __gg__currency_signs = __gg__ct_currency_signs;
*************** initialize_the_data()
*** 6989,6994 ****
--- 6985,7264 ----
      }
    }
  
+ static
+ void
+ establish_using(size_t nusing,
+                 cbl_ffi_arg_t args[] )
+   {
+   if( nusing )
+     {
+     for(size_t i=0; i<nusing; i++)
+       {
+       // This code is relevant at compile time.  It takes each
+       // expected formal parameter and tacks it onto the end of the
+       // function's arguments chain.
+ 
+       char *ach = xasprintf("_p_%s", args[i].refer.field->name);
+ 
+       size_t nbytes = 0;
+       tree par_type = tree_type_from_field_type(args[i].refer.field, nbytes);
+       if( par_type == FLOAT )
+         {
+         par_type = SSIZE_T;
+         }
+       if( par_type == DOUBLE )
+         {
+         par_type = SSIZE_T;
+         }
+       if( par_type == FLOAT128 )
+         {
+         par_type = INT128;
+         }
+       chain_parameter_to_function(current_function->function_decl, par_type, ach);
+       free(ach);
+       }
+ 
+     // During the call, we saved the parameter_count and an array of variable
+     // lengths.  We need to look at those values if, and only if, one or more
+     // of our USING arguments has an OPTIONAL flag or if one of our targets is
+     // marked as VARYING.
+     bool check_for_parameter_count = false;
+     for(size_t i=0; i<nusing; i++)
+       {
+       if( args[i].optional )
+         {
+         check_for_parameter_count = true;
+         break;
+         }
+       if( args[i].refer.field->attr & any_length_e )
+         {
+         check_for_parameter_count = true;
+         break;
+         }
+       }
+ 
+     if( check_for_parameter_count )
+       {
+       IF( var_decl_call_parameter_signature,
+           eq_op,
+           gg_cast(CHAR_P, current_function->function_address) )
+         {
+         // We know to use var_decl_call_parameter_count, so unflag this
+         // pointer to avoid problems in the ridiculous possibility of
+         // COBOL-A calls C_B calls COBOL_A
+         gg_assign(var_decl_call_parameter_signature,
+                   gg_cast(CHAR_P, null_pointer_node));
+         }
+       ELSE
+         {
+         // We were apparently called by a C routine, not a COBOL routine, so
+         // make sure we don't get shortchanged by a count left behind from an
+         // earlier COBOL call.
+         gg_assign(var_decl_call_parameter_count,
+                   build_int_cst_type(INT, A_ZILLION));
+         }
+       ENDIF
+       }
+     else
+       {
+       // None of our parameters require a count, so make sure we don't get
+       // bamboozled by a count left behind from an earlier COBOL call.
+       gg_assign(var_decl_call_parameter_count,
+                 build_int_cst_type(INT, A_ZILLION));
+       }
+ 
+     // There are 'nusing' elements in the PROCEDURE DIVISION USING list.
+ 
+     tree parameter = NULL_TREE;
+     tree rt_i = gg_define_int();
+     for(size_t i=0; i<nusing; i++)
+       {
+       // And this compiler code generates run-time execution code. The
+       // generated code picks up, at run time, the variable we just
+       // established in the chain at compile time.
+ 
+       // It makes more sense if you don't think about it too hard.
+ 
+       // We need to be able to restore prior arguments when doing recursive
+       // calls:
+       IF( member(args[i].refer.field->var_decl_node, "data"),
+           ne_op,
+           gg_cast(UCHAR_P, null_pointer_node) )
+         {
+         gg_call(VOID,
+                 "__gg__push_local_variable",
+                 gg_get_address_of(args[i].refer.field->var_decl_node),
+                 NULL_TREE);
+         }
+       ELSE
+         ENDIF
+ 
+       tree base = gg_define_variable(UCHAR_P);
+       gg_assign(rt_i, build_int_cst_type(INT, i));
+       //gg_printf("The rt_i counter is %d\n", rt_i, NULL_TREE);
+       IF( rt_i, lt_op , var_decl_call_parameter_count )
+         {
+         if( i == 0 )
+           {
+           // This is the first parameter.
+           parameter = DECL_ARGUMENTS(current_function->function_decl);
+           }
+         else
+           {
+           // These are subsequent parameters
+           parameter = TREE_CHAIN(parameter);
+           }
+         gg_assign(base, gg_cast(UCHAR_P, parameter));
+ 
+         if( args[i].refer.field->attr & any_length_e )
+           {
+           // gg_printf("side channel: Length of \"%s\" is %ld\n",
+                     // member(args[i].refer.field->var_decl_node, "name"),
+                     // gg_array_value(var_decl_call_parameter_lengths, rt_i),
+                     // NULL_TREE);
+ 
+           // Get the length from the global lengths[] side channel.  Don't
+           // forget to use the length mask on the table value.
+           gg_assign(member(args[i].refer.field->var_decl_node, "capacity"),
+                     gg_array_value(var_decl_call_parameter_lengths, rt_i));
+           }
+         }
+       ELSE
+         {
+         gg_assign(base, gg_cast(UCHAR_P, null_pointer_node));
+         }
+         ENDIF
+ 
+       // Arriving here means that we are processing an instruction like
+       // this:
+       // PROCEDURE DIVISION USING using[0] using[1] ... using using[nusing-1]
+ 
+       // When __gg__call_parameter_count is equal to A_ZILLION, then this is
+       // an OTHER-TO-COBOL call and the var_decl_call_parameter_lengths array
+       // is not valid
+ 
+       cbl_ffi_crv_t crv = args[i].crv;
+       cbl_field_t *new_var = args[i].refer.field;
+ 
+       if( crv == by_value_e )
+         {
+         switch(new_var->type)
+           {
+           case FldGroup:
+           case FldAlphanumeric:
+           case FldAlphaEdited:
+           case FldNumericEdited:
+             crv = by_reference_e;
+             break;
+           default:
+             break;
+           }
+         }
+ 
+       if( crv == by_value_e )
+         {
+         // 'parameter' is the 64-bit or 128-bit value that was placed on the stack
+ 
+         size_t nbytes;
+         tree_type_from_field_type(new_var, nbytes);
+         tree parm = gg_define_variable(INT128);
+ 
+         if( nbytes <= 8 )
+           {
+           // Our input is a 64-bit number
+           if( new_var->attr & signable_e )
+             {
+             IF( gg_bitwise_and( gg_cast(SIZE_T, base),
+                                 build_int_cst_type(SIZE_T, 0x8000000000000000ULL)),
+                 ne_op,
+                 gg_cast(SIZE_T, integer_zero_node) )
+               {
+               // Our input is a negative number
+               gg_assign(parm, gg_cast(INT128, integer_minus_one_node));
+               }
+             ELSE
+               {
+               // Our input is a positive number
+               gg_assign(parm, gg_cast(INT128, integer_zero_node));
+               }
+             ENDIF
+             }
+           else
+             {
+             // This is a 64-bit positive number:
+             gg_assign(parm, gg_cast(INT128, integer_zero_node));
+             }
+           }
+         // At this point, parm has been set to 0 or -1
+ 
+         gg_memcpy(gg_get_address_of(parm),
+                   gg_get_address_of(base),
+                   build_int_cst_type(SIZE_T, nbytes));
+ 
+         tree array_type = build_array_type_nelts(UCHAR, new_var->data.capacity);
+         tree data_decl_node = gg_define_variable( array_type,
+                                                   NULL,
+                                                   vs_static);
+         gg_assign( member(new_var->var_decl_node, "data"),
+                           gg_get_address_of(data_decl_node) );
+ 
+         // And then move it into place
+         gg_call(VOID,
+                 "__gg__assign_value_from_stack",
+                 gg_get_address_of(new_var->var_decl_node),
+                 parm,
+                 NULL_TREE);
+         // We now have to handle an oddball situation.  It's possible we are
+         // dealing with
+         //
+         //    linkage section.
+         //    01 var1
+         //    01 var2 redefines var1
+         //
+         // If so, we have to give var2::data_pointer the same value as
+         // var1::data_pointer
+         //
+         size_t our_index = symbol_index(symbol_elem_of(new_var));
+         size_t next_index  = our_index + 1;
+         // Look ahead in the symbol table for the next LEVEL01/77
+         for(;;)
+           {
+           symbol_elem_t *e = symbol_at(next_index);
+           if( e->type != SymField )
+             {
+             break;
+             }
+           cbl_field_t *next_var = cbl_field_of(e);
+           if( !next_var )
+             {
+             break;
+             }
+           if( next_var->level == LEVEL01 || next_var->level == LEVEL77 )
+             {
+             if( next_var->parent == our_index )
+               {
+               gg_assign(member(next_var->var_decl_node, "data"),
+                         member(new_var->var_decl_node, "data"));
+               }
+             break;
+             }
+           next_index += 1;
+           }
+         }
+       else
+         {
+         // 'parameter' is a reference, so it it becomes the data member of
+         // the cblc_field_t COBOL variable.
+         gg_assign(member(args[i].field()->var_decl_node, "data"), base);
+ 
+         // We need to apply base + offset to the LINKAGE variable
+         // and all of its children
+         propogate_linkage_offsets( args[i].field(), base );
+         }
+       }
+     }
+   }
+ 
  void
  parser_division(cbl_division_t division,
                  cbl_field_t *returning,
*************** parser_division(cbl_division_t division,
*** 7187,7459 ****
      // length.  We establish those lengths based on the types of the target
      // for each USING.
  
-     for(size_t i=0; i<nusing; i++)
-       {
-       // This code is relevant at compile time.  It takes each
-       // expected formal parameter and tacks it onto the end of the
-       // function's arguments chain.
- 
-       sprintf(ach, "_p_%s", args[i].refer.field->name);
- 
-       size_t nbytes = 0;
-       tree par_type = tree_type_from_field_type(args[i].refer.field, nbytes);
-       if( par_type == FLOAT )
-         {
-         par_type = SSIZE_T;
-         }
-       if( par_type == DOUBLE )
-         {
-         par_type = SSIZE_T;
-         }
-       if( par_type == FLOAT128 )
-         {
-         par_type = INT128;
-         }
-       chain_parameter_to_function(current_function->function_decl, par_type, ach);
-       }
- 
-     if( nusing )
-       {
-       // During the call, we saved the parameter_count and an array of variable
-       // lengths.  We need to look at those values if, and only if, one or more
-       // of our USING arguments has an OPTIONAL flag or if one of our targets is
-       // marked as VARYING.
-       bool check_for_parameter_count = false;
-       for(size_t i=0; i<nusing; i++)
-         {
-         if( args[i].optional )
-           {
-           check_for_parameter_count = true;
-           break;
-           }
-         if( args[i].refer.field->attr & any_length_e )
-           {
-           check_for_parameter_count = true;
-           break;
-           }
-         }
- 
-       if( check_for_parameter_count )
-         {
-         IF( var_decl_call_parameter_signature,
-             eq_op,
-             gg_cast(CHAR_P, current_function->function_address) )
-           {
-           // We know to use var_decl_call_parameter_count, so unflag this
-           // pointer to avoid problems in the ridiculous possibility of
-           // COBOL-A calls C_B calls COBOL_A
-           gg_assign(var_decl_call_parameter_signature,
-                     gg_cast(CHAR_P, null_pointer_node));
-           }
-         ELSE
-           {
-           // We were apparently called by a C routine, not a COBOL routine, so
-           // make sure we don't get shortchanged by a count left behind from an
-           // earlier COBOL call.
-           gg_assign(var_decl_call_parameter_count,
-                     build_int_cst_type(INT, A_ZILLION));
-           }
-         ENDIF
-         }
-       else
-         {
-         // None of our parameters require a count, so make sure we don't get
-         // bamboozled by a count left behind from an earlier COBOL call.
-         gg_assign(var_decl_call_parameter_count,
-                   build_int_cst_type(INT, A_ZILLION));
-         }
- 
-       // There are 'nusing' elements in the PROCEDURE DIVISION USING list.
- 
-       tree parameter = NULL_TREE;
-       tree rt_i = gg_define_int();
-       for(size_t i=0; i<nusing; i++)
-         {
-         // And this compiler code generates run-time execution code. The
-         // generated code picks up, at run time, the variable we just
-         // established in the chain at compile time.
- 
-         // It makes more sense if you don't think about it too hard.
- 
-         // We need to be able to restore prior arguments when doing recursive
-         // calls:
-         IF( member(args[i].refer.field->var_decl_node, "data"),
-             ne_op,
-             gg_cast(UCHAR_P, null_pointer_node) )
-           {
-           gg_call(VOID,
-                   "__gg__push_local_variable",
-                   gg_get_address_of(args[i].refer.field->var_decl_node),
-                   NULL_TREE);
-           }
-         ELSE
-           ENDIF
- 
-         tree base = gg_define_variable(UCHAR_P);
-         gg_assign(rt_i, build_int_cst_type(INT, i));
-         //gg_printf("The rt_i counter is %d\n", rt_i, NULL_TREE);
-         IF( rt_i, lt_op , var_decl_call_parameter_count )
-           {
-           if( i == 0 )
-             {
-             // This is the first parameter.
-             parameter = DECL_ARGUMENTS(current_function->function_decl);
-             }
-           else
-             {
-             // These are subsequent parameters
-             parameter = TREE_CHAIN(parameter);
-             }
-           gg_assign(base, gg_cast(UCHAR_P, parameter));
- 
-           if( args[i].refer.field->attr & any_length_e )
-             {
-             // gg_printf("side channel: Length of \"%s\" is %ld\n",
-                       // member(args[i].refer.field->var_decl_node, "name"),
-                       // gg_array_value(var_decl_call_parameter_lengths, rt_i),
-                       // NULL_TREE);
- 
-             // Get the length from the global lengths[] side channel.  Don't
-             // forget to use the length mask on the table value.
-             gg_assign(member(args[i].refer.field->var_decl_node, "capacity"),
-                       gg_array_value(var_decl_call_parameter_lengths, rt_i));
-             }
-           }
-         ELSE
-           {
-           gg_assign(base, gg_cast(UCHAR_P, null_pointer_node));
-           }
-           ENDIF
- 
-         // Arriving here means that we are processing an instruction like
-         // this:
-         // PROCEDURE DIVISION USING using[0] using[1] ... using using[nusing-1]
- 
-         // When __gg__call_parameter_count is equal to A_ZILLION, then this is
-         // an OTHER-TO-COBOL call and the var_decl_call_parameter_lengths array
-         // is not valid
- 
-         cbl_ffi_crv_t crv = args[i].crv;
-         cbl_field_t *new_var = args[i].refer.field;
- 
-         if( crv == by_value_e )
-           {
-           switch(new_var->type)
-             {
-             case FldGroup:
-             case FldAlphanumeric:
-             case FldAlphaEdited:
-             case FldNumericEdited:
-               crv = by_reference_e;
-               break;
-             default:
-               break;
-             }
-           }
- 
-         if( crv == by_value_e )
-           {
-           // 'parameter' is the 64-bit or 128-bit value that was placed on the stack
- 
-           size_t nbytes;
-           tree_type_from_field_type(new_var, nbytes);
-           tree parm = gg_define_variable(INT128);
- 
-           if( nbytes <= 8 )
-             {
-             // Our input is a 64-bit number
-             if( new_var->attr & signable_e )
-               {
-               IF( gg_bitwise_and( gg_cast(SIZE_T, base),
-                                   build_int_cst_type(SIZE_T, 0x8000000000000000ULL)),
-                   ne_op,
-                   gg_cast(SIZE_T, integer_zero_node) )
-                 {
-                 // Our input is a negative number
-                 gg_assign(parm, gg_cast(INT128, integer_minus_one_node));
-                 }
-               ELSE
-                 {
-                 // Our input is a positive number
-                 gg_assign(parm, gg_cast(INT128, integer_zero_node));
-                 }
-               ENDIF
-               }
-             else
-               {
-               // This is a 64-bit positive number:
-               gg_assign(parm, gg_cast(INT128, integer_zero_node));
-               }
-             }
-           // At this point, parm has been set to 0 or -1
- 
-           gg_memcpy(gg_get_address_of(parm),
-                     gg_get_address_of(base),
-                     build_int_cst_type(SIZE_T, nbytes));
- 
-           tree array_type = build_array_type_nelts(UCHAR, new_var->data.capacity);
-           tree data_decl_node = gg_define_variable( array_type,
-                                                     NULL,
-                                                     vs_static);
-           gg_assign( member(new_var->var_decl_node, "data"),
-                             gg_get_address_of(data_decl_node) );
- 
-           // And then move it into place
-           gg_call(VOID,
-                   "__gg__assign_value_from_stack",
-                   gg_get_address_of(new_var->var_decl_node),
-                   parm,
-                   NULL_TREE);
-           // We now have to handle an oddball situation.  It's possible we are
-           // dealing with
-           //
-           //    linkage section.
-           //    01 var1
-           //    01 var2 redefines var1
-           //
-           // If so, we have to give var2::data_pointer the same value as
-           // var1::data_pointer
-           //
-           size_t our_index = symbol_index(symbol_elem_of(new_var));
-           size_t next_index  = our_index + 1;
-           // Look ahead in the symbol table for the next LEVEL01/77
-           for(;;)
-             {
-             symbol_elem_t *e = symbol_at(next_index);
-             if( e->type != SymField )
-               {
-               break;
-               }
-             cbl_field_t *next_var = cbl_field_of(e);
-             if( !next_var )
-               {
-               break;
-               }
-             if( next_var->level == LEVEL01 || next_var->level == LEVEL77 )
-               {
-               if( next_var->parent == our_index )
-                 {
-                 gg_assign(member(next_var->var_decl_node, "data"),
-                           member(new_var->var_decl_node, "data"));
-                 }
-               break;
-               }
-             next_index += 1;
-             }
-           }
-         else
-           {
-           // 'parameter' is a reference, so it it becomes the data member of
-           // the cblc_field_t COBOL variable.
-           gg_assign(member(args[i].field()->var_decl_node, "data"), base);
- 
-           // We need to apply base + offset to the LINKAGE variable
-           // and all of its children
-           propogate_linkage_offsets( args[i].field(), base );
-           }
-         }
-       }
- 
      gg_call(VOID,
              "__gg__pseudo_return_bookmark",
            NULL_TREE);
--- 7457,7462 ----
*************** parser_division(cbl_division_t division,
*** 7504,7509 ****
--- 7507,7531 ----
      // logic for backing up one line, which is needed to correctly step through
      // COBOL code with GDB-COBOL.  So, we clear it here.
      current_location_minus_one_clear();
+ 
+     // It is at this point that we check to see if the call to this function
+     // is a re-entry because of an ENTRY statement:
+ 
+     IF( var_decl_entry_label, ne_op, null_pointer_node )
+       {
+       // This is an ENTRY re-entry.  The processing of USING variables was
+       // done in parser_entry, so now we jump to the label
+       static tree loc = gg_define_variable(VOID_P, vs_static);
+       gg_assign(loc, var_decl_entry_label);
+       gg_assign(var_decl_entry_label, gg_cast(VOID_P, null_pointer_node));
+       gg_goto(loc);
+       }
+     ELSE
+       {
+       }
+       ENDIF
+ 
+     establish_using(nusing, args);
      }
    }
  
*************** parser_file_add(struct cbl_file_t *file)
*** 9683,9689 ****
            build_int_cst_type(INT, (int)file->optional),
            build_int_cst_type(SIZE_T, varies.min),
            build_int_cst_type(SIZE_T, varies.max),
!           build_int_cst_type(INT, (int)file->codeset.encoding),
            build_int_cst_type(INT, (int)file->codeset.alphabet),
            NULL_TREE);
    file->var_decl_node = new_var_decl;
--- 9705,9714 ----
            build_int_cst_type(INT, (int)file->optional),
            build_int_cst_type(SIZE_T, varies.min),
            build_int_cst_type(SIZE_T, varies.max),
! /*  Right now, file->codeset.encoding is not being set properly.  Remove this
!     comment and fix the following code when that's repaired.  */
! //          build_int_cst_type(INT, (int)file->codeset.encoding),
!           build_int_cst_type(INT, current_encoding(encoding_display_e)),
            build_int_cst_type(INT, (int)file->codeset.alphabet),
            NULL_TREE);
    file->var_decl_node = new_var_decl;
*************** parser_file_open( struct cbl_file_t *fil
*** 9776,9782 ****
      gg_call( CHAR_P,
               "__gg__convert_encoding",
               psz,
!              build_int_cst_type(INT, 
                                  field_of_name->codeset.encoding),
               build_int_cst_type(INT,
                                  DEFAULT_CHARMAP_SOURCE),
--- 9801,9807 ----
      gg_call( CHAR_P,
               "__gg__convert_encoding",
               psz,
!              build_int_cst_type(INT,
                                  field_of_name->codeset.encoding),
               build_int_cst_type(INT,
                                  DEFAULT_CHARMAP_SOURCE),
*************** create_and_call(size_t narg,
*** 13274,13280 ****
--- 13299,13307 ----
      {
      // Because no explicit returning value is expected, we just call it.  We
      // expect COBOL routines to set RETURN-CODE when they think it necessary.
+     push_program_state();
      gg_append_statement(call_expr);
+     pop_program_state();
      }
  
    for( size_t i=0; i<narg; i++ )
*************** parser_entry_activate( size_t iprog, con
*** 13482,13491 ****
    assert(iprog == symbol_elem_of(declarative)->program);
    }
  
! // Define ENTRY point with alternative LINKAGE
  void
! parser_entry( cbl_field_t */*name*/, size_t /*narg*/, cbl_ffi_arg_t */*args*/ )
    {
    }
  
  void
--- 13509,13587 ----
    assert(iprog == symbol_elem_of(declarative)->program);
    }
  
! static tree entry_goto;
! static tree entry_label;
! static tree entry_addr;
! 
  void
! parser_entry( const cbl_field_t *name, size_t nusing, cbl_ffi_arg_t *args )
    {
+   // We are implementing the ENTRY statement, which creates an alternative
+   // entry point into the current program-id.  There is no actual way to do
+   // that literally.  So, we are going to create a separate routine that sets
+   // things up and then calls the current routine with the information it needs
+   // to transfer processing to the ENTRY point.
+ 
+   SHOW_PARSE
+     {
+     SHOW_PARSE_HEADER
+     SHOW_PARSE_FIELD( " ENTRY ", name)
+     SHOW_PARSE_END
+     }
+ 
+   // Get the name of the program that contains the ENTRY statement.
+   char *name_of_parent = xstrdup(current_function->our_name);
+ 
+   // Get the name of the ENTRY point.
+   // cppcheck-suppress nullPointerRedundantCheck
+   char *psz = cobol_name_mangler(name->data.initial);
+ 
+   // Create a goto/label pair.  The label will be set up here; the goto will
+   // be used when we re-enter the containing function:
+ 
+   gg_create_goto_pair(&entry_goto,
+                       &entry_label,
+                       &entry_addr);
+ 
+   // Start creating the ENTRY function.
+   tree function_decl = gg_define_function( VOID,
+                                            psz,
+                                            psz,
+                                            NULL_TREE);
+   free(psz);
+ 
+   // Modify the default settings for this entry point
+     TREE_ADDRESSABLE(function_decl) = 0;
+     TREE_USED(function_decl) = 0;
+     TREE_NOTHROW(function_decl) = 0;
+     TREE_STATIC(function_decl) = 1;
+     DECL_EXTERNAL (function_decl) = 0;
+     TREE_PUBLIC (function_decl) = 1;
+     DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(function_decl) = 1;
+ 
+   // When the ENTRY function point is called, we process its "using"
+   // parameters:
+   establish_using(nusing, args);
+ 
+   // Put the entry_label into the global variable that will be picked up
+   // when the containing program-id is re-entered:
+   gg_assign(var_decl_entry_label, entry_addr);
+ 
+   // Get the function address of the containing function.
+   tree gfa = gg_get_function_address(VOID, name_of_parent);
+   free(name_of_parent);
+ 
+   // Call the containing function
+   gg_append_statement(gg_call_expr_list(VOID,
+                                         gfa,
+                                         0,
+                                         NULL));
+   // We are done with the ENTRY function:
+   gg_finalize_function();
+ 
+   // Lay down the address of the label that matches var_decl_entry_label;
+   // the containing program-id will jump to this point.
+   gg_append_statement(entry_label);
    }
  
  void
*************** mh_source_is_literalN(cbl_refer_t &destr
*** 14522,14528 ****
          // __gg__string_to_alpha_edited expects the source string to be in
          // the same encoding as the target:
          size_t len = strlen(sourceref.field->data.initial);
!         char *src = 
           static_cast<char *>(xmalloc(len+1));
          memcpy( src,
                  sourceref.field->data.initial,
--- 14618,14624 ----
          // __gg__string_to_alpha_edited expects the source string to be in
          // the same encoding as the target:
          size_t len = strlen(sourceref.field->data.initial);
!         char *src =
           static_cast<char *>(xmalloc(len+1));
          memcpy( src,
                  sourceref.field->data.initial,
diff -Nrcpad gcc-16-20251012/gcc/cobol/genapi.h gcc-16-20251019/gcc/cobol/genapi.h
*** gcc-16-20251012/gcc/cobol/genapi.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cobol/genapi.h	Sun Oct 19 22:32:13 2025
*************** void parser_call( cbl_refer_t name,
*** 558,565 ****
  
  void parser_entry_activate( size_t iprog, const cbl_label_t *declarative );
  
! void parser_entry( cbl_field_t *name,
!                    size_t narg = 0, cbl_ffi_arg_t args[] = NULL);
  
  bool is_ascending_key(const cbl_refer_t& key);
  
--- 558,566 ----
  
  void parser_entry_activate( size_t iprog, const cbl_label_t *declarative );
  
! void parser_entry( const cbl_field_t *name,
!                    size_t narg = 0,
!                    cbl_ffi_arg_t args[] = NULL);
  
  bool is_ascending_key(const cbl_refer_t& key);
  
diff -Nrcpad gcc-16-20251012/gcc/cobol/gengen.cc gcc-16-20251019/gcc/cobol/gengen.cc
*** gcc-16-20251012/gcc/cobol/gengen.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cobol/gengen.cc	Sun Oct 19 22:32:13 2025
*************** gg_build_logical_expression(tree operand
*** 1830,1836 ****
    }
  
  void
! gg_create_goto_pair(tree *goto_expr, tree *label_expr, tree *label_addr, const char *name)
    {
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
--- 1830,1839 ----
    }
  
  void
! gg_create_goto_pair(tree *goto_expr,
!                     tree *label_expr,
!                     tree *label_addr,
!                     const char *name)
    {
    // We are going to create a pair of expressions for our
    // caller.  They are a matched set of goto/label expressions,
*************** gg_create_goto_pair(tree *goto_expr,
*** 1887,1902 ****
    }
  
  void
- gg_goto_label_decl(tree label_decl)
-   {
-   tree goto_expr  = build1_loc( gg_token_location(),
-                                 GOTO_EXPR,
-                                 void_type_node,
-                                 label_decl);
-   gg_append_statement(goto_expr);
-   }
- 
- void
  gg_create_goto_pair(tree *goto_expr, tree *label_expr)
    {
    // We are going to create a pair of expressions for our
--- 1890,1895 ----
diff -Nrcpad gcc-16-20251012/gcc/cobol/gengen.h gcc-16-20251019/gcc/cobol/gengen.h
*** gcc-16-20251012/gcc/cobol/gengen.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cobol/gengen.h	Sun Oct 19 22:32:13 2025
*************** void gg_create_goto_pair( tree *goto_exp
*** 495,501 ****
                            tree *label_expr,
                            tree *label_addr,
                            tree *label_decl);
- void gg_goto_label_decl(tree label_decl);
  
  // Used for implementing SECTIONS and PARAGRAPHS.  When you have a
  // void *pointer = &&label, gg_goto is the same as
--- 495,500 ----
diff -Nrcpad gcc-16-20251012/gcc/cobol/genutil.cc gcc-16-20251019/gcc/cobol/genutil.cc
*** gcc-16-20251012/gcc/cobol/genutil.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cobol/genutil.cc	Sun Oct 19 22:32:13 2025
***************
*** 50,57 ****
  #include "../../libgcobol/exceptl.h"
  #include "exceptg.h"
  
- bool internal_codeset_is_ebcdic() { return gcobol_feature_internal_ebcdic(); }
- 
  bool exception_location_active = true;
  bool skip_exception_processing = true;
  
--- 50,55 ----
*************** tree var_decl_treeplet_4s; // SIZE_T_P
*** 107,114 ****
--- 105,117 ----
  // wasn't successful figuring out how to create an actual NOP assembly language
  // instruction, I instead gg_assign(var_decl_nop, integer_zero_node)
  tree var_decl_nop;                // int         __gg__nop;
+ 
+ // Indicates which routine main() called
  tree var_decl_main_called;        // int         __gg__main_called;
  
+ // Indicates the target label for an ENTRY statement
+ tree var_decl_entry_label; // void* __gg__entry_label
+ 
  #if 0
  #define REFER(a)
  #else
diff -Nrcpad gcc-16-20251012/gcc/cobol/genutil.h gcc-16-20251019/gcc/cobol/genutil.h
*** gcc-16-20251012/gcc/cobol/genutil.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cobol/genutil.h	Sun Oct 19 22:32:13 2025
***************
*** 30,37 ****
  #ifndef _GENUTIL_H_
  #define _GENUTIL_H_
  
- bool internal_codeset_is_ebcdic();
- 
  extern bool exception_location_active;
  extern bool skip_exception_processing;
  
--- 30,35 ----
*************** extern tree var_decl_treeplet_3s; // SIZ
*** 79,87 ****
  extern tree var_decl_treeplet_4f; // cblc_field_pp_type_node , "__gg__treeplet_4f"
  extern tree var_decl_treeplet_4o; // SIZE_T_P                , "__gg__treeplet_4o"
  extern tree var_decl_treeplet_4s; // SIZE_T_P                , "__gg__treeplet_4s"
- 
  extern tree var_decl_nop;         // int __gg__nop
  extern tree var_decl_main_called; // int __gg__main_called
  
  int       get_scaled_rdigits(cbl_field_t *field);
  int       get_scaled_digits(cbl_field_t *field);
--- 77,85 ----
  extern tree var_decl_treeplet_4f; // cblc_field_pp_type_node , "__gg__treeplet_4f"
  extern tree var_decl_treeplet_4o; // SIZE_T_P                , "__gg__treeplet_4o"
  extern tree var_decl_treeplet_4s; // SIZE_T_P                , "__gg__treeplet_4s"
  extern tree var_decl_nop;         // int __gg__nop
  extern tree var_decl_main_called; // int __gg__main_called
+ extern tree var_decl_entry_label; // void* __gg__entry_label
  
  int       get_scaled_rdigits(cbl_field_t *field);
  int       get_scaled_digits(cbl_field_t *field);
diff -Nrcpad gcc-16-20251012/gcc/cobol/symbols.cc gcc-16-20251019/gcc/cobol/symbols.cc
*** gcc-16-20251012/gcc/cobol/symbols.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cobol/symbols.cc	Sun Oct 19 22:32:13 2025
*************** symbols_alphabet_set( size_t program, co
*** 1643,1649 ****
    };
  
    // Define alphabets for codegen.
!   std::for_each(symbols_begin(), symbols_end(), alpha() );
  
    // Set collation sequence before parser_symbol_add.
    if( name ) {
--- 1643,1649 ----
    };
  
    // Define alphabets for codegen.
!   std::for_each(symbols_begin(program), symbols_end(), alpha() );
  
    // Set collation sequence before parser_symbol_add.
    if( name ) {
diff -Nrcpad gcc-16-20251012/gcc/cobol/symbols.h gcc-16-20251019/gcc/cobol/symbols.h
*** gcc-16-20251012/gcc/cobol/symbols.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/cobol/symbols.h	Sun Oct 19 22:32:13 2025
*************** const char * __gg__encoding_iconv_name(
*** 503,508 ****
--- 503,515 ----
  
  bool is_elementary( enum cbl_field_type_t type );
  
+ // These were introduced to discourage the use of 
+ //    current_encoding('A') and current_encoding('N')
+ enum
+   {
+   encoding_display_e  = 'A',
+   encoding_national_e = 'N'
+   };
  cbl_encoding_t current_encoding( char a_or_n );
  
  /*  In cbl_field_t:
diff -Nrcpad gcc-16-20251012/gcc/combine.cc gcc-16-20251019/gcc/combine.cc
*** gcc-16-20251012/gcc/combine.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/combine.cc	Sun Oct 19 22:32:13 2025
*************** struct reg_stat_type {
*** 195,201 ****
       sign bits copies it was known to have when it was last set.  */
  
    unsigned HOST_WIDE_INT	last_set_nonzero_bits;
!   char				last_set_sign_bit_copies;
    ENUM_BITFIELD(machine_mode)	last_set_mode : MACHINE_MODE_BITSIZE;
  
    /* Set to true if references to register n in expressions should not be
--- 195,201 ----
       sign bits copies it was known to have when it was last set.  */
  
    unsigned HOST_WIDE_INT	last_set_nonzero_bits;
!   unsigned short		last_set_sign_bit_copies;
    ENUM_BITFIELD(machine_mode)	last_set_mode : MACHINE_MODE_BITSIZE;
  
    /* Set to true if references to register n in expressions should not be
*************** struct reg_stat_type {
*** 216,222 ****
  
       If an entry is zero, it means that we don't know anything special.  */
  
!   unsigned char			sign_bit_copies;
  
    unsigned HOST_WIDE_INT	nonzero_bits;
  
--- 216,222 ----
  
       If an entry is zero, it means that we don't know anything special.  */
  
!   unsigned short		sign_bit_copies;
  
    unsigned HOST_WIDE_INT	nonzero_bits;
  
diff -Nrcpad gcc-16-20251012/gcc/common/config/i386/cpuinfo.h gcc-16-20251019/gcc/common/config/i386/cpuinfo.h
*** gcc-16-20251012/gcc/common/config/i386/cpuinfo.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/common/config/i386/cpuinfo.h	Sun Oct 19 22:32:13 2025
*************** get_intel_cpu (struct __processor_model
*** 628,633 ****
--- 628,635 ----
  	break;
        case 0xcc:
  	/* Panther Lake.  */
+       case 0xd5:
+ 	/* Wildcat Lake.  */
  	cpu = "pantherlake";
  	CHECK___builtin_cpu_is ("corei7");
  	CHECK___builtin_cpu_is ("pantherlake");
*************** get_available_features (struct __process
*** 1024,1031 ****
  	    set_feature (FEATURE_AMX_AVX512);
  	  if (eax & bit_AMX_TF32)
  	    set_feature (FEATURE_AMX_TF32);
- 	  if (eax & bit_AMX_TRANSPOSE)
- 	    set_feature (FEATURE_AMX_TRANSPOSE);
  	  if (eax & bit_AMX_FP8)
  	    set_feature (FEATURE_AMX_FP8);
  	  if (eax & bit_AMX_MOVRS)
--- 1026,1031 ----
diff -Nrcpad gcc-16-20251012/gcc/common/config/i386/i386-common.cc gcc-16-20251019/gcc/common/config/i386/i386-common.cc
*** gcc-16-20251012/gcc/common/config/i386/i386-common.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/common/config/i386/i386-common.cc	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 134,141 ****
    (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_AVX512)
  #define OPTION_MASK_ISA2_AMX_TF32_SET \
    (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_TF32)
- #define OPTION_MASK_ISA2_AMX_TRANSPOSE_SET \
-   (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_TRANSPOSE)
  #define OPTION_MASK_ISA2_AMX_FP8_SET \
    (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_FP8)
  #define OPTION_MASK_ISA2_MOVRS_SET OPTION_MASK_ISA2_MOVRS
--- 134,139 ----
*************** along with GCC; see the file COPYING3.
*** 303,310 ****
    (OPTION_MASK_ISA2_AMX_TILE | OPTION_MASK_ISA2_AMX_INT8_UNSET \
     | OPTION_MASK_ISA2_AMX_BF16_UNSET | OPTION_MASK_ISA2_AMX_FP16_UNSET \
     | OPTION_MASK_ISA2_AMX_COMPLEX_UNSET | OPTION_MASK_ISA2_AMX_AVX512_UNSET \
!    | OPTION_MASK_ISA2_AMX_TF32_UNSET | OPTION_MASK_ISA2_AMX_TRANSPOSE_UNSET \
!    | OPTION_MASK_ISA2_AMX_FP8_UNSET | OPTION_MASK_ISA2_AMX_MOVRS_UNSET)
  #define OPTION_MASK_ISA2_AMX_INT8_UNSET OPTION_MASK_ISA2_AMX_INT8
  #define OPTION_MASK_ISA2_AMX_BF16_UNSET OPTION_MASK_ISA2_AMX_BF16
  #define OPTION_MASK_ISA2_UINTR_UNSET OPTION_MASK_ISA2_UINTR
--- 301,308 ----
    (OPTION_MASK_ISA2_AMX_TILE | OPTION_MASK_ISA2_AMX_INT8_UNSET \
     | OPTION_MASK_ISA2_AMX_BF16_UNSET | OPTION_MASK_ISA2_AMX_FP16_UNSET \
     | OPTION_MASK_ISA2_AMX_COMPLEX_UNSET | OPTION_MASK_ISA2_AMX_AVX512_UNSET \
!    | OPTION_MASK_ISA2_AMX_TF32_UNSET | OPTION_MASK_ISA2_AMX_FP8_UNSET \
!    | OPTION_MASK_ISA2_AMX_MOVRS_UNSET)
  #define OPTION_MASK_ISA2_AMX_INT8_UNSET OPTION_MASK_ISA2_AMX_INT8
  #define OPTION_MASK_ISA2_AMX_BF16_UNSET OPTION_MASK_ISA2_AMX_BF16
  #define OPTION_MASK_ISA2_UINTR_UNSET OPTION_MASK_ISA2_UINTR
*************** along with GCC; see the file COPYING3.
*** 330,336 ****
  #define OPTION_MASK_ISA2_AVX10_2_UNSET OPTION_MASK_ISA2_AVX10_2
  #define OPTION_MASK_ISA2_AMX_AVX512_UNSET OPTION_MASK_ISA2_AMX_AVX512
  #define OPTION_MASK_ISA2_AMX_TF32_UNSET OPTION_MASK_ISA2_AMX_TF32
- #define OPTION_MASK_ISA2_AMX_TRANSPOSE_UNSET OPTION_MASK_ISA2_AMX_TRANSPOSE
  #define OPTION_MASK_ISA2_AMX_FP8_UNSET OPTION_MASK_ISA2_AMX_FP8
  #define OPTION_MASK_ISA2_MOVRS_UNSET OPTION_MASK_ISA2_MOVRS
  #define OPTION_MASK_ISA2_AMX_MOVRS_UNSET OPTION_MASK_ISA2_AMX_MOVRS
--- 328,333 ----
*************** ix86_handle_option (struct gcc_options *
*** 1396,1415 ****
  	}
        return true;
  
-     case OPT_mamx_transpose:
-       if (value)
- 	{
- 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_TRANSPOSE_SET;
- 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_TRANSPOSE_SET;
- 	}
-       else
- 	{
- 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_TRANSPOSE_UNSET;
- 	  opts->x_ix86_isa_flags2_explicit |=
- 	    OPTION_MASK_ISA2_AMX_TRANSPOSE_UNSET;
- 	}
-       return true;
- 
      case OPT_mamx_fp8:
        if (value)
  	{
--- 1393,1398 ----
*************** const pta processor_alias_table[] =
*** 2287,2292 ****
--- 2270,2277 ----
      M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    {"diamondrapids", PROCESSOR_DIAMONDRAPIDS, CPU_HASWELL, PTA_DIAMONDRAPIDS,
      M_CPU_SUBTYPE (INTEL_COREI7_DIAMONDRAPIDS), P_PROC_AVX10_1},
+   {"wildcatlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
+     M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
      M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
    {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
diff -Nrcpad gcc-16-20251012/gcc/common/config/i386/i386-cpuinfo.h gcc-16-20251019/gcc/common/config/i386/i386-cpuinfo.h
*** gcc-16-20251012/gcc/common/config/i386/i386-cpuinfo.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/common/config/i386/i386-cpuinfo.h	Sun Oct 19 22:32:13 2025
*************** enum processor_features
*** 269,276 ****
    FEATURE_AVX10_2 = 116,
    FEATURE_AMX_AVX512,
    FEATURE_AMX_TF32,
!   FEATURE_AMX_TRANSPOSE,
!   FEATURE_AMX_FP8, 
    FEATURE_MOVRS,
    FEATURE_AMX_MOVRS,
    CPU_FEATURE_MAX
--- 269,275 ----
    FEATURE_AVX10_2 = 116,
    FEATURE_AMX_AVX512,
    FEATURE_AMX_TF32,
!   FEATURE_AMX_FP8 = 120,
    FEATURE_MOVRS,
    FEATURE_AMX_MOVRS,
    CPU_FEATURE_MAX
diff -Nrcpad gcc-16-20251012/gcc/common/config/i386/i386-isas.h gcc-16-20251019/gcc/common/config/i386/i386-isas.h
*** gcc-16-20251012/gcc/common/config/i386/i386-isas.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/common/config/i386/i386-isas.h	Sun Oct 19 22:32:13 2025
*************** ISA_NAMES_TABLE_START
*** 188,195 ****
    ISA_NAMES_TABLE_ENTRY("amx-avx512", FEATURE_AMX_AVX512, P_NONE,
  			"-mamx-avx512")
    ISA_NAMES_TABLE_ENTRY("amx-tf32", FEATURE_AMX_TF32, P_NONE, "-mamx-tf32")
-   ISA_NAMES_TABLE_ENTRY("amx-transpose", FEATURE_AMX_TRANSPOSE,
- 			P_NONE, "-mamx-transpose")
    ISA_NAMES_TABLE_ENTRY("amx-fp8", FEATURE_AMX_FP8, P_NONE, "-mamx-fp8")
    ISA_NAMES_TABLE_ENTRY("movrs", FEATURE_MOVRS, P_NONE, "-mmovrs")
    ISA_NAMES_TABLE_ENTRY("amx-movrs", FEATURE_AMX_MOVRS, P_NONE, "-mamx-movrs")
--- 188,193 ----
diff -Nrcpad gcc-16-20251012/gcc/common/config/riscv/riscv-common.cc gcc-16-20251019/gcc/common/config/riscv/riscv-common.cc
*** gcc-16-20251012/gcc/common/config/riscv/riscv-common.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/common/config/riscv/riscv-common.cc	Sun Oct 19 22:32:13 2025
*************** fail:
*** 1404,1409 ****
--- 1404,1450 ----
    return NULL;
  }
  
+ /* Get the profile that best matches the current architecture string,
+    where best is defined as the most expansive profile.  */
+ 
+ const char *
+ riscv_subset_list::get_profile_name () const
+ {
+   const char *best_profile = NULL;
+   int max_ext_count = -1;
+ 
+   for (int i = 0; riscv_profiles_table[i].profile_name != nullptr; ++i)
+     {
+       riscv_subset_list *subset_list = riscv_subset_list::parse (
+       riscv_profiles_table[i].profile_string, NULL);
+       if (!subset_list)
+ 	continue;
+       if (subset_list->xlen () == this->xlen ())
+ 	{
+ 	  int ext_count = 0;
+ 	  bool all_found = true;
+ 	  for (riscv_subset_t *p = subset_list->m_head; p != NULL;
+ 		p = p->next, ++ext_count)
+ 	    {
+ 	      if (!this->lookup (p->name.c_str (),
+ 			p->major_version,
+ 			p->minor_version))
+ 		{
+ 		  all_found = false;
+ 		  break;
+ 		}
+ 	    }
+ 	  if (all_found && ext_count > max_ext_count)
+ 	    {
+ 	      max_ext_count = ext_count;
+ 	      best_profile = riscv_profiles_table[i].profile_name;
+ 	    }
+ 	}
+       delete subset_list;
+     }
+   return best_profile;
+ }
+ 
  /* Clone whole subset list.  */
  
  riscv_subset_list *
diff -Nrcpad gcc-16-20251012/gcc/common.opt gcc-16-20251019/gcc/common.opt
*** gcc-16-20251012/gcc/common.opt	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/common.opt	Sun Oct 19 22:32:13 2025
*************** ftree-parallelize-loops=
*** 3303,3308 ****
--- 3303,3312 ----
  Common Joined RejectNegative UInteger Var(flag_tree_parallelize_loops) Init(1) Optimization
  -ftree-parallelize-loops=<number>	Enable automatic parallelization of loops.
  
+ ftree-parallelize-loops
+ Common Alias(ftree-parallelize-loops=,2147483647,1)
+ Enable automatic parallelization of loops.
+ 
  ftree-phiprop
  Common Var(flag_tree_phiprop) Init(1) Optimization
  Enable hoisting loads from conditional pointers.
diff -Nrcpad gcc-16-20251012/gcc/common.opt.urls gcc-16-20251019/gcc/common.opt.urls
*** gcc-16-20251012/gcc/common.opt.urls	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/common.opt.urls	Sun Oct 19 22:32:13 2025
*************** UrlSuffix(gcc/Optimize-Options.html#inde
*** 1550,1555 ****
--- 1550,1558 ----
  ftree-parallelize-loops=
  UrlSuffix(gcc/Optimize-Options.html#index-ftree-parallelize-loops)
  
+ ftree-parallelize-loops
+ UrlSuffix(gcc/Optimize-Options.html#index-ftree-parallelize-loops)
+ 
  ftree-phiprop
  UrlSuffix(gcc/Optimize-Options.html#index-ftree-phiprop)
  
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/aarch64-simd.md gcc-16-20251019/gcc/config/aarch64/aarch64-simd.md
*** gcc-16-20251012/gcc/config/aarch64/aarch64-simd.md	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/aarch64-simd.md	Sun Oct 19 22:32:13 2025
***************
*** 4647,4653 ****
  
  ;; <su><addsub>w<q>.
  
! (define_expand "widen_ssum<mode>3"
    [(set (match_operand:<VDBLW> 0 "register_operand")
  	(plus:<VDBLW> (sign_extend:<VDBLW> 
  		        (match_operand:VQW 1 "register_operand"))
--- 4647,4653 ----
  
  ;; <su><addsub>w<q>.
  
! (define_expand "widen_ssum<Vdblw><mode>3"
    [(set (match_operand:<VDBLW> 0 "register_operand")
  	(plus:<VDBLW> (sign_extend:<VDBLW> 
  		        (match_operand:VQW 1 "register_operand"))
***************
*** 4664,4670 ****
    }
  )
  
! (define_expand "widen_ssum<mode>3"
    [(set (match_operand:<VWIDE> 0 "register_operand")
  	(plus:<VWIDE> (sign_extend:<VWIDE>
  		        (match_operand:VD_BHSI 1 "register_operand"))
--- 4664,4670 ----
    }
  )
  
! (define_expand "widen_ssum<Vwide><mode>3"
    [(set (match_operand:<VWIDE> 0 "register_operand")
  	(plus:<VWIDE> (sign_extend:<VWIDE>
  		        (match_operand:VD_BHSI 1 "register_operand"))
***************
*** 4675,4681 ****
    DONE;
  })
  
! (define_expand "widen_usum<mode>3"
    [(set (match_operand:<VDBLW> 0 "register_operand")
  	(plus:<VDBLW> (zero_extend:<VDBLW> 
  		        (match_operand:VQW 1 "register_operand"))
--- 4675,4681 ----
    DONE;
  })
  
! (define_expand "widen_usum<Vdblw><mode>3"
    [(set (match_operand:<VDBLW> 0 "register_operand")
  	(plus:<VDBLW> (zero_extend:<VDBLW> 
  		        (match_operand:VQW 1 "register_operand"))
***************
*** 4692,4698 ****
    }
  )
  
! (define_expand "widen_usum<mode>3"
    [(set (match_operand:<VWIDE> 0 "register_operand")
  	(plus:<VWIDE> (zero_extend:<VWIDE>
  		        (match_operand:VD_BHSI 1 "register_operand"))
--- 4692,4698 ----
    }
  )
  
! (define_expand "widen_usum<Vwide><mode>3"
    [(set (match_operand:<VWIDE> 0 "register_operand")
  	(plus:<VWIDE> (zero_extend:<VWIDE>
  		        (match_operand:VD_BHSI 1 "register_operand"))
***************
*** 4703,4708 ****
--- 4703,4740 ----
    DONE;
  })
  
+ (define_expand "widen_ssum<mode><vsi2qi>3"
+   [(set (match_operand:VS 0 "register_operand")
+ 	(plus:VS (sign_extend:VS
+ 		   (match_operand:<VSI2QI> 1 "register_operand"))
+ 		 (match_operand:VS 2 "register_operand")))]
+   "TARGET_DOTPROD"
+   {
+     rtx ones = force_reg (<VSI2QI>mode, CONST1_RTX (<VSI2QI>mode));
+     emit_insn (gen_sdot_prod<mode><vsi2qi> (operands[0], operands[1], ones,
+ 					    operands[2]));
+     DONE;
+   }
+ )
+ 
+ ;; Use dot product to perform double widening sum reductions by
+ ;; changing += a into += (a * 1).  i.e. we seed the multiplication with 1.
+ (define_expand "widen_usum<mode><vsi2qi>3"
+   [(set (match_operand:VS 0 "register_operand")
+ 	(plus:VS (zero_extend:VS
+ 		        (match_operand:<VSI2QI> 1 "register_operand"))
+ 		      (match_operand:VS 2 "register_operand")))]
+   "TARGET_DOTPROD"
+   {
+     rtx ones = force_reg (<VSI2QI>mode, CONST1_RTX (<VSI2QI>mode));
+     emit_insn (gen_udot_prod<mode><vsi2qi> (operands[0], operands[1], ones,
+ 					    operands[2]));
+     DONE;
+   }
+ )
+ 
+ ;; Use dot product to perform double widening sum reductions by
+ ;; changing += a into += (a * 1).  i.e. we seed the multiplication with 1.
  (define_insn "aarch64_<ANY_EXTEND:su>subw<mode>"
    [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
  	(minus:<VWIDE> (match_operand:<VWIDE> 1 "register_operand" "w")
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc gcc-16-20251019/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
*** gcc-16-20251012/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Sun Oct 19 22:32:13 2025
***************
*** 21,27 ****
--- 21,30 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #include "basic-block.h"
  #include "tree.h"
+ #include "function.h"
+ #include "gimple.h"
  #include "rtl.h"
  #include "tm_p.h"
  #include "memmodel.h"
*************** za_group_is_pure_overload (const functio
*** 68,90 ****
     types in ARGUMENT_TYPES.  RETURN_TYPE is the type returned by the
     function.  */
  static void
! apply_predication (const function_instance &instance, tree return_type,
  		   vec<tree> &argument_types)
  {
    /* There are currently no SME ZA instructions that have both merging and
       unpredicated forms, so for simplicity, the predicates are always included
       in the original format string.  */
    if (instance.pred != PRED_none && instance.pred != PRED_za_m)
      {
        argument_types.quick_insert (0, instance.gp_type ());
        /* For unary merge operations, the first argument is a vector with
  	 the same type as the result.  For unary_convert_narrowt it also
  	 provides the "bottom" half of active elements, and is present
  	 for all types of predication.  */
        auto nargs = argument_types.length () - 1;
        if (instance.shape->has_merge_argument_p (instance, nargs))
! 	argument_types.quick_insert (0, return_type);
      }
  }
  
  /* Parse and move past an element type in FORMAT and return it as a type
--- 71,106 ----
     types in ARGUMENT_TYPES.  RETURN_TYPE is the type returned by the
     function.  */
  static void
! apply_predication (function_instance &instance, tree return_type,
  		   vec<tree> &argument_types)
  {
+   /* Initially mark the function as not being predicated.  */
+   instance.gp_index = -1;
+ 
    /* There are currently no SME ZA instructions that have both merging and
       unpredicated forms, so for simplicity, the predicates are always included
       in the original format string.  */
    if (instance.pred != PRED_none && instance.pred != PRED_za_m)
      {
        argument_types.quick_insert (0, instance.gp_type ());
+       instance.gp_index = 0;
        /* For unary merge operations, the first argument is a vector with
  	 the same type as the result.  For unary_convert_narrowt it also
  	 provides the "bottom" half of active elements, and is present
  	 for all types of predication.  */
        auto nargs = argument_types.length () - 1;
        if (instance.shape->has_merge_argument_p (instance, nargs))
! 	{
! 	  argument_types.quick_insert (0, return_type);
! 	  instance.gp_index = 1;
! 	}
      }
+ 
+   /* In this case the predicate type we added above is a non-governing
+      predicate operand (and there is no GP), so update the gp_index value
+      accordingly.  */
+   if (!instance.shape->has_gp_argument_p (instance))
+     instance.gp_index = -1;
  }
  
  /* Parse and move past an element type in FORMAT and return it as a type
*************** struct pmov_to_vector_lane_def : public
*** 3332,3337 ****
--- 3348,3361 ----
         but it doesn't currently have the necessary information.  */
      return c.require_immediate_range (1, 1, bytes - 1);
    }
+ 
+   /* This function has a predicate argument, and is a merging instruction, but
+      the predicate is not a GP.  */
+   bool
+   has_gp_argument_p (const function_instance &) const override
+   {
+     return false;
+   }
  };
  SHAPE (pmov_to_vector_lane)
  
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/aarch64-sve-builtins.cc gcc-16-20251019/gcc/config/aarch64/aarch64-sve-builtins.cc
*** gcc-16-20251012/gcc/config/aarch64/aarch64-sve-builtins.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/aarch64-sve-builtins.cc	Sun Oct 19 22:32:13 2025
*************** gimple_folder::redirect_pred_x ()
*** 3632,3655 ****
  gimple *
  gimple_folder::fold_pfalse ()
  {
!   if (pred == PRED_none)
      return nullptr;
!   tree arg0 = gimple_call_arg (call, 0);
    if (pred == PRED_m)
      {
!       /* Unary function shapes with _m predication are folded to the
! 	 inactive vector (arg0), while other function shapes are folded
! 	 to op1 (arg1).  */
!       tree arg1 = gimple_call_arg (call, 1);
!       if (is_pfalse (arg1))
! 	return fold_call_to (arg0);
!       if (is_pfalse (arg0))
! 	return fold_call_to (arg1);
        return nullptr;
      }
!   if ((pred == PRED_x || pred == PRED_z) && is_pfalse (arg0))
      return fold_call_to (build_zero_cst (TREE_TYPE (lhs)));
!   if (pred == PRED_implicit && is_pfalse (arg0))
      {
        unsigned int flags = call_properties ();
        /* Folding to lhs = {0, ...} is not appropriate for intrinsics with
--- 3632,3653 ----
  gimple *
  gimple_folder::fold_pfalse ()
  {
!   tree gp = gp_value (call);
!   /* If there isn't a GP then we can't do any folding as the instruction isn't
!      predicated.  */
!   if (!gp)
      return nullptr;
! 
    if (pred == PRED_m)
      {
!       tree val = inactive_values (call);
!       if (is_pfalse (gp))
! 	return fold_call_to (val);
        return nullptr;
      }
!   if ((pred == PRED_x || pred == PRED_z) && is_pfalse (gp))
      return fold_call_to (build_zero_cst (TREE_TYPE (lhs)));
!   if (pred == PRED_implicit && is_pfalse (gp))
      {
        unsigned int flags = call_properties ();
        /* Folding to lhs = {0, ...} is not appropriate for intrinsics with
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/aarch64-sve-builtins.h gcc-16-20251019/gcc/config/aarch64/aarch64-sve-builtins.h
*** gcc-16-20251012/gcc/config/aarch64/aarch64-sve-builtins.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/aarch64-sve-builtins.h	Sun Oct 19 22:32:13 2025
*************** public:
*** 403,408 ****
--- 403,410 ----
    bool could_trap_p () const;
  
    vector_type_index gp_type_index () const;
+   tree gp_value (gcall *) const;
+   tree inactive_values (gcall *) const;
    tree gp_type () const;
  
    unsigned int vectors_per_tuple () const;
*************** public:
*** 436,441 ****
--- 438,444 ----
    group_suffix_index group_suffix_id;
    predication_index pred;
    fpm_mode_index fpm_mode;
+   int gp_index;
  };
  
  class registered_function;
*************** public:
*** 801,806 ****
--- 804,811 ----
    virtual bool has_merge_argument_p (const function_instance &,
  				     unsigned int) const;
  
+   virtual bool has_gp_argument_p (const function_instance &) const;
+ 
    virtual bool explicit_type_suffix_p (unsigned int) const = 0;
  
    /* True if the group suffix is present in overloaded names.
*************** function_instance::gp_type () const
*** 949,954 ****
--- 954,986 ----
    return acle_vector_types[0][gp_type_index ()];
  }
  
+ /* Return the tree value that should be used as the governing predicate of
+    this function.  If none then return NULL_TREE.  */
+ inline tree
+ function_instance::gp_value (gcall *call) const
+ {
+   if (gp_index < 0)
+     return NULL_TREE;
+ 
+   return gimple_call_arg (call, gp_index);
+ }
+ 
+ /* Return the tree value that should be used for the inactive lanes should this
+    function be a predicated function with a gp.  Otherwise return NULL_TREE.  */
+ inline tree
+ function_instance::inactive_values (gcall *call) const
+ {
+   if (gp_index < 0)
+     return NULL_TREE;
+ 
+   /* Function is unary with m predicate.  */
+   if (gp_index == 1)
+     return gimple_call_arg (call, 0);
+ 
+   /* Else the inactive values are the next element.  */
+   return gimple_call_arg (call, 1);
+ }
+ 
  /* If the function operates on tuples of vectors, return the number
     of vectors in the tuples, otherwise return 1.  */
  inline unsigned int
*************** function_shape::has_merge_argument_p (co
*** 1123,1128 ****
--- 1155,1168 ----
    return nargs == 1 && instance.pred == PRED_m;
  }
  
+ /* Return true if INSTANCE has an predicate argument that can be used as the global
+    predicate.  */
+ inline bool
+ function_shape::has_gp_argument_p (const function_instance &instance) const
+ {
+   return instance.pred != PRED_none;
+ }
+ 
  /* Return the mode of the result of a call.  */
  inline machine_mode
  function_expander::result_mode () const
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/aarch64-sve.md gcc-16-20251019/gcc/config/aarch64/aarch64-sve.md
*** gcc-16-20251012/gcc/config/aarch64/aarch64-sve.md	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/aarch64-sve.md	Sun Oct 19 22:32:13 2025
***************
*** 7722,7727 ****
--- 7722,7743 ----
    [(set_attr "sve_type" "sve_int_dot")]
  )
  
+ ;; Define double widen_[su]sum as dotproduct
+ ;; Use dot product to perform double widening sum reductions by
+ ;; changing += a into += (a * 1).  i.e. we seed the multiplication with 1.
+ (define_expand "widen_<sur>sum<mode><vsi2qi>3"
+   [(set (match_operand:SVE_FULL_SDI 0 "register_operand")
+ 	(plus:SVE_FULL_SDI
+ 	  (unspec:SVE_FULL_SDI
+ 	    [(match_operand:<VSI2QI> 1 "register_operand")
+ 	     (match_dup 3)]
+ 	    DOTPROD)
+ 	  (match_operand:SVE_FULL_SDI 2 "register_operand")))]
+   "TARGET_SVE"
+ {
+   operands[3] = force_reg (<VSI2QI>mode, CONST1_RTX (<VSI2QI>mode));
+ })
+ 
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Sum of absolute differences
  ;; -------------------------------------------------------------------------
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/aarch64-sve2.md gcc-16-20251019/gcc/config/aarch64/aarch64-sve2.md
*** gcc-16-20251012/gcc/config/aarch64/aarch64-sve2.md	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/aarch64-sve2.md	Sun Oct 19 22:32:13 2025
***************
*** 2377,2382 ****
--- 2377,2434 ----
    [(set_attr "sve_type" "sve_int_general")]
  )
  
+ ;; Define single step widening for widen_ssum using SADDWB and SADDWT
+ (define_expand "widen_ssum<mode><Vnarrow>3"
+   [(set (match_operand:SVE_FULL_HSDI 0 "register_operand")
+ 	(unspec:SVE_FULL_HSDI
+ 	  [(match_operand:SVE_FULL_HSDI 2 "register_operand")
+ 	   (match_operand:<VNARROW> 1 "register_operand")]
+ 	  UNSPEC_SADDWB))
+    (set (match_dup 0)
+ 	(unspec:SVE_FULL_HSDI
+ 	  [(match_dup 0)
+ 	   (match_dup 1)]
+ 	  UNSPEC_SADDWT))]
+   "TARGET_SVE2"
+ {
+   /* Use dot product to perform double widening sum reductions by
+      changing += a into += (a * 1).  i.e. we seed the multiplication with 1.  */
+   if (TARGET_SVE2p1_OR_SME2
+       && <VNARROW>mode == VNx8HImode
+       && <MODE>mode == VNx4SImode)
+     {
+       rtx ones = force_reg (VNx8HImode, CONST1_RTX (VNx8HImode));
+       emit_insn (gen_sdot_prodvnx4sivnx8hi (operands[0], operands[1],
+ 					    ones, operands[2]));
+       DONE;
+     }
+ })
+ 
+ ;; Define single step widening for widen_usum using UADDWB and UADDWT
+ (define_expand "widen_usum<mode><Vnarrow>3"
+   [(set (match_operand:SVE_FULL_HSDI 0 "register_operand" "=w")
+ 	(unspec:SVE_FULL_HSDI
+ 	  [(match_operand:SVE_FULL_HSDI 2 "register_operand" "w")
+ 	   (match_operand:<VNARROW> 1 "register_operand" "w")]
+ 	  UNSPEC_UADDWB))
+    (set (match_dup 0)
+ 	(unspec:SVE_FULL_HSDI
+ 	  [(match_dup 0)
+ 	   (match_dup 1)]
+ 	  UNSPEC_UADDWT))]
+   "TARGET_SVE2"
+ {
+   if (TARGET_SVE2p1_OR_SME2
+       && <VNARROW>mode == VNx8HImode
+       && <MODE>mode == VNx4SImode)
+     {
+       rtx ones = force_reg (VNx8HImode, CONST1_RTX (VNx8HImode));
+       emit_insn (gen_udot_prodvnx4sivnx8hi (operands[0], operands[1],
+ 					    ones, operands[2]));
+       DONE;
+     }
+ })
+ 
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Long binary arithmetic
  ;; -------------------------------------------------------------------------
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/aarch64-sys-regs.def gcc-16-20251019/gcc/config/aarch64/aarch64-sys-regs.def
*** gcc-16-20251012/gcc/config/aarch64/aarch64-sys-regs.def	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/aarch64-sys-regs.def	Sun Oct 19 22:32:13 2025
***************
*** 36,1162 ****
    The FEATURES field maps onto ISA flags and specifies the architectural
    feature requirements of the system register.  */
  
!   SYSREG ("accdata_el1",	CPENC (3,0,13,0,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("actlr_el1",		CPENC (3,0,1,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("actlr_el2",		CPENC (3,4,1,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("actlr_el3",		CPENC (3,6,1,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("afsr0_el1",		CPENC (3,0,5,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("afsr0_el12",		CPENC (3,5,5,1,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("afsr0_el2",		CPENC (3,4,5,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("afsr0_el3",		CPENC (3,6,5,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("afsr1_el1",		CPENC (3,0,5,1,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("afsr1_el12",		CPENC (3,5,5,1,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("afsr1_el2",		CPENC (3,4,5,1,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("afsr1_el3",		CPENC (3,6,5,1,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("aidr_el1",		CPENC (3,1,0,0,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("allint",		CPENC (3,0,4,3,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_8A))
!   SYSREG ("amair_el1",		CPENC (3,0,10,3,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("amair_el12",		CPENC (3,5,10,3,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("amair_el2",		CPENC (3,4,10,3,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("amair_el3",		CPENC (3,6,10,3,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("amair2_el1",		CPENC (3,0,10,3,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
!   SYSREG ("amair2_el12",	CPENC (3,5,10,3,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
!   SYSREG ("amair2_el2",		CPENC (3,4,10,3,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
!   SYSREG ("amair2_el3",		CPENC (3,6,10,3,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
!   SYSREG ("amcfgr_el0",		CPENC (3,3,13,2,1),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_4A))
!   SYSREG ("amcg1idr_el0",	CPENC (3,3,13,2,6),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_6A))
!   SYSREG ("amcgcr_el0",		CPENC (3,3,13,2,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_4A))
!   SYSREG ("amcntenclr0_el0",	CPENC (3,3,13,2,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amcntenclr1_el0",	CPENC (3,3,13,3,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amcntenset0_el0",	CPENC (3,3,13,2,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amcntenset1_el0",	CPENC (3,3,13,3,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amcr_el0",		CPENC (3,3,13,2,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr00_el0",	CPENC (3,3,13,4,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr01_el0",	CPENC (3,3,13,4,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr02_el0",	CPENC (3,3,13,4,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr03_el0",	CPENC (3,3,13,4,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr10_el0",	CPENC (3,3,13,12,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr110_el0",	CPENC (3,3,13,13,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr111_el0",	CPENC (3,3,13,13,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr112_el0",	CPENC (3,3,13,13,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr113_el0",	CPENC (3,3,13,13,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr114_el0",	CPENC (3,3,13,13,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr115_el0",	CPENC (3,3,13,13,7),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr11_el0",	CPENC (3,3,13,12,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr12_el0",	CPENC (3,3,13,12,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr13_el0",	CPENC (3,3,13,12,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr14_el0",	CPENC (3,3,13,12,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr15_el0",	CPENC (3,3,13,12,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr16_el0",	CPENC (3,3,13,12,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr17_el0",	CPENC (3,3,13,12,7),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr18_el0",	CPENC (3,3,13,13,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntr19_el0",	CPENC (3,3,13,13,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevcntvoff00_el2",	CPENC (3,4,13,8,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff010_el2",	CPENC (3,4,13,9,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff011_el2",	CPENC (3,4,13,9,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff012_el2",	CPENC (3,4,13,9,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff013_el2",	CPENC (3,4,13,9,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff014_el2",	CPENC (3,4,13,9,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff015_el2",	CPENC (3,4,13,9,7),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff01_el2",	CPENC (3,4,13,8,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff02_el2",	CPENC (3,4,13,8,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff03_el2",	CPENC (3,4,13,8,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff04_el2",	CPENC (3,4,13,8,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff05_el2",	CPENC (3,4,13,8,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff06_el2",	CPENC (3,4,13,8,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff07_el2",	CPENC (3,4,13,8,7),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff08_el2",	CPENC (3,4,13,9,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff09_el2",	CPENC (3,4,13,9,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff10_el2",	CPENC (3,4,13,10,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff110_el2",	CPENC (3,4,13,11,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff111_el2",	CPENC (3,4,13,11,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff112_el2",	CPENC (3,4,13,11,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff113_el2",	CPENC (3,4,13,11,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff114_el2",	CPENC (3,4,13,11,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff115_el2",	CPENC (3,4,13,11,7),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff11_el2",	CPENC (3,4,13,10,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff12_el2",	CPENC (3,4,13,10,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff13_el2",	CPENC (3,4,13,10,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff14_el2",	CPENC (3,4,13,10,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff15_el2",	CPENC (3,4,13,10,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff16_el2",	CPENC (3,4,13,10,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff17_el2",	CPENC (3,4,13,10,7),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff18_el2",	CPENC (3,4,13,11,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevcntvoff19_el2",	CPENC (3,4,13,11,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("amevtyper00_el0",	CPENC (3,3,13,6,0),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper01_el0",	CPENC (3,3,13,6,1),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper02_el0",	CPENC (3,3,13,6,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper03_el0",	CPENC (3,3,13,6,3),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper10_el0",	CPENC (3,3,13,14,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper110_el0",	CPENC (3,3,13,15,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper111_el0",	CPENC (3,3,13,15,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper112_el0",	CPENC (3,3,13,15,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper113_el0",	CPENC (3,3,13,15,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper114_el0",	CPENC (3,3,13,15,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper115_el0",	CPENC (3,3,13,15,7),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper11_el0",	CPENC (3,3,13,14,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper12_el0",	CPENC (3,3,13,14,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper13_el0",	CPENC (3,3,13,14,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper14_el0",	CPENC (3,3,13,14,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper15_el0",	CPENC (3,3,13,14,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper16_el0",	CPENC (3,3,13,14,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper17_el0",	CPENC (3,3,13,14,7),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper18_el0",	CPENC (3,3,13,15,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amevtyper19_el0",	CPENC (3,3,13,15,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("amuserenr_el0",	CPENC (3,3,13,2,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("apdakeyhi_el1",	CPENC (3,0,2,2,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("apdakeylo_el1",	CPENC (3,0,2,2,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("apdbkeyhi_el1",	CPENC (3,0,2,2,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("apdbkeylo_el1",	CPENC (3,0,2,2,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("apgakeyhi_el1",	CPENC (3,0,2,3,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("apgakeylo_el1",	CPENC (3,0,2,3,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("apiakeyhi_el1",	CPENC (3,0,2,1,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("apiakeylo_el1",	CPENC (3,0,2,1,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("apibkeyhi_el1",	CPENC (3,0,2,1,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("apibkeylo_el1",	CPENC (3,0,2,1,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_3A))
!   SYSREG ("brbcr_el1",		CPENC (2,1,9,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("brbcr_el12",		CPENC (2,5,9,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("brbcr_el2",		CPENC (2,4,9,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("brbfcr_el1",		CPENC (2,1,9,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("brbidr0_el1",	CPENC (2,1,9,2,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf0_el1",	CPENC (2,1,8,0,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf10_el1",	CPENC (2,1,8,10,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf11_el1",	CPENC (2,1,8,11,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf12_el1",	CPENC (2,1,8,12,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf13_el1",	CPENC (2,1,8,13,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf14_el1",	CPENC (2,1,8,14,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf15_el1",	CPENC (2,1,8,15,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf16_el1",	CPENC (2,1,8,0,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf17_el1",	CPENC (2,1,8,1,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf18_el1",	CPENC (2,1,8,2,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf19_el1",	CPENC (2,1,8,3,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf1_el1",	CPENC (2,1,8,1,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf20_el1",	CPENC (2,1,8,4,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf21_el1",	CPENC (2,1,8,5,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf22_el1",	CPENC (2,1,8,6,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf23_el1",	CPENC (2,1,8,7,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf24_el1",	CPENC (2,1,8,8,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf25_el1",	CPENC (2,1,8,9,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf26_el1",	CPENC (2,1,8,10,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf27_el1",	CPENC (2,1,8,11,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf28_el1",	CPENC (2,1,8,12,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf29_el1",	CPENC (2,1,8,13,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf2_el1",	CPENC (2,1,8,2,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf30_el1",	CPENC (2,1,8,14,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf31_el1",	CPENC (2,1,8,15,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf3_el1",	CPENC (2,1,8,3,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf4_el1",	CPENC (2,1,8,4,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf5_el1",	CPENC (2,1,8,5,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf6_el1",	CPENC (2,1,8,6,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf7_el1",	CPENC (2,1,8,7,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf8_el1",	CPENC (2,1,8,8,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinf9_el1",	CPENC (2,1,8,9,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbinfinj_el1",	CPENC (2,1,9,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc0_el1",	CPENC (2,1,8,0,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc10_el1",	CPENC (2,1,8,10,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc11_el1",	CPENC (2,1,8,11,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc12_el1",	CPENC (2,1,8,12,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc13_el1",	CPENC (2,1,8,13,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc14_el1",	CPENC (2,1,8,14,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc15_el1",	CPENC (2,1,8,15,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc16_el1",	CPENC (2,1,8,0,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc17_el1",	CPENC (2,1,8,1,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc18_el1",	CPENC (2,1,8,2,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc19_el1",	CPENC (2,1,8,3,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc1_el1",	CPENC (2,1,8,1,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc20_el1",	CPENC (2,1,8,4,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc21_el1",	CPENC (2,1,8,5,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc22_el1",	CPENC (2,1,8,6,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc23_el1",	CPENC (2,1,8,7,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc24_el1",	CPENC (2,1,8,8,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc25_el1",	CPENC (2,1,8,9,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc26_el1",	CPENC (2,1,8,10,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc27_el1",	CPENC (2,1,8,11,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc28_el1",	CPENC (2,1,8,12,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc29_el1",	CPENC (2,1,8,13,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc2_el1",	CPENC (2,1,8,2,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc30_el1",	CPENC (2,1,8,14,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc31_el1",	CPENC (2,1,8,15,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc3_el1",	CPENC (2,1,8,3,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc4_el1",	CPENC (2,1,8,4,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc5_el1",	CPENC (2,1,8,5,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc6_el1",	CPENC (2,1,8,6,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc7_el1",	CPENC (2,1,8,7,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc8_el1",	CPENC (2,1,8,8,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrc9_el1",	CPENC (2,1,8,9,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbsrcinj_el1",	CPENC (2,1,9,1,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt0_el1",	CPENC (2,1,8,0,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt10_el1",	CPENC (2,1,8,10,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt11_el1",	CPENC (2,1,8,11,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt12_el1",	CPENC (2,1,8,12,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt13_el1",	CPENC (2,1,8,13,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt14_el1",	CPENC (2,1,8,14,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt15_el1",	CPENC (2,1,8,15,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt16_el1",	CPENC (2,1,8,0,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt17_el1",	CPENC (2,1,8,1,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt18_el1",	CPENC (2,1,8,2,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt19_el1",	CPENC (2,1,8,3,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt1_el1",	CPENC (2,1,8,1,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt20_el1",	CPENC (2,1,8,4,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt21_el1",	CPENC (2,1,8,5,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt22_el1",	CPENC (2,1,8,6,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt23_el1",	CPENC (2,1,8,7,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt24_el1",	CPENC (2,1,8,8,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt25_el1",	CPENC (2,1,8,9,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt26_el1",	CPENC (2,1,8,10,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt27_el1",	CPENC (2,1,8,11,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt28_el1",	CPENC (2,1,8,12,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt29_el1",	CPENC (2,1,8,13,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt2_el1",	CPENC (2,1,8,2,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt30_el1",	CPENC (2,1,8,14,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt31_el1",	CPENC (2,1,8,15,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt3_el1",	CPENC (2,1,8,3,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt4_el1",	CPENC (2,1,8,4,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt5_el1",	CPENC (2,1,8,5,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt6_el1",	CPENC (2,1,8,6,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt7_el1",	CPENC (2,1,8,7,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt8_el1",	CPENC (2,1,8,8,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgt9_el1",	CPENC (2,1,8,9,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("brbtgtinj_el1",	CPENC (2,1,9,1,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("brbts_el1",		CPENC (2,1,9,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ccsidr2_el1",	CPENC (3,1,0,0,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_3A))
!   SYSREG ("ccsidr_el1",		CPENC (3,1,0,0,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("clidr_el1",		CPENC (3,1,0,0,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("cntfrq_el0",		CPENC (3,3,14,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cnthctl_el2",	CPENC (3,4,14,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cnthp_ctl_el2",	CPENC (3,4,14,2,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cnthp_cval_el2",	CPENC (3,4,14,2,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cnthp_tval_el2",	CPENC (3,4,14,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cnthps_ctl_el2",	CPENC (3,4,14,5,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("cnthps_cval_el2",	CPENC (3,4,14,5,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("cnthps_tval_el2",	CPENC (3,4,14,5,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("cnthv_ctl_el2",	CPENC (3,4,14,3,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cnthv_cval_el2",	CPENC (3,4,14,3,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cnthv_tval_el2",	CPENC (3,4,14,3,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cnthvs_ctl_el2",	CPENC (3,4,14,4,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("cnthvs_cval_el2",	CPENC (3,4,14,4,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("cnthvs_tval_el2",	CPENC (3,4,14,4,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("cntkctl_el1",	CPENC (3,0,14,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntkctl_el12",	CPENC (3,5,14,1,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cntp_ctl_el0",	CPENC (3,3,14,2,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntp_ctl_el02",	CPENC (3,5,14,2,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cntp_cval_el0",	CPENC (3,3,14,2,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntp_cval_el02",	CPENC (3,5,14,2,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cntp_tval_el0",	CPENC (3,3,14,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntp_tval_el02",	CPENC (3,5,14,2,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cntpct_el0",		CPENC (3,3,14,0,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("cntpctss_el0",	CPENC (3,3,14,0,5),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_6A))
!   SYSREG ("cntpoff_el2",	CPENC (3,4,14,0,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("cntps_ctl_el1",	CPENC (3,7,14,2,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntps_cval_el1",	CPENC (3,7,14,2,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntps_tval_el1",	CPENC (3,7,14,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntv_ctl_el0",	CPENC (3,3,14,3,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntv_ctl_el02",	CPENC (3,5,14,3,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cntv_cval_el0",	CPENC (3,3,14,3,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntv_cval_el02",	CPENC (3,5,14,3,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cntv_tval_el0",	CPENC (3,3,14,3,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cntv_tval_el02",	CPENC (3,5,14,3,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cntvct_el0",		CPENC (3,3,14,0,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("cntvctss_el0",	CPENC (3,3,14,0,6),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_6A))
!   SYSREG ("cntvoff_el2",	CPENC (3,4,14,0,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("contextidr_el1",	CPENC (3,0,13,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("contextidr_el12",	CPENC (3,5,13,0,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("contextidr_el2",	CPENC (3,4,13,0,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cpacr_el1",		CPENC (3,0,1,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cpacr_el12",		CPENC (3,5,1,0,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("cptr_el2",		CPENC (3,4,1,1,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("cptr_el3",		CPENC (3,6,1,1,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("csrcr_el0",		CPENC (2,3,8,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("csrcr_el1",		CPENC (2,0,8,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("csrcr_el12",		CPENC (2,5,8,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("csrcr_el2",		CPENC (2,4,8,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("csridr_el0",		CPENC (2,3,8,0,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("csrptr_el0",		CPENC (2,3,8,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("csrptr_el1",		CPENC (2,0,8,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("csrptr_el12",	CPENC (2,5,8,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("csrptr_el2",		CPENC (2,4,8,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("csrptridx_el0",	CPENC (2,3,8,0,3),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("csrptridx_el1",	CPENC (2,0,8,0,3),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("csrptridx_el2",	CPENC (2,4,8,0,3),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("csselr_el1",		CPENC (3,2,0,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ctr_el0",		CPENC (3,3,0,0,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("currentel",		CPENC (3,0,4,2,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("dacr32_el2",		CPENC (3,4,3,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("daif",		CPENC (3,3,4,2,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgauthstatus_el1",	CPENC (2,0,7,14,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr0_el1",	CPENC (2,0,0,0,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr10_el1",	CPENC (2,0,0,10,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr11_el1",	CPENC (2,0,0,11,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr12_el1",	CPENC (2,0,0,12,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr13_el1",	CPENC (2,0,0,13,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr14_el1",	CPENC (2,0,0,14,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr15_el1",	CPENC (2,0,0,15,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr1_el1",	CPENC (2,0,0,1,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr2_el1",	CPENC (2,0,0,2,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr3_el1",	CPENC (2,0,0,3,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr4_el1",	CPENC (2,0,0,4,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr5_el1",	CPENC (2,0,0,5,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr6_el1",	CPENC (2,0,0,6,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr7_el1",	CPENC (2,0,0,7,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr8_el1",	CPENC (2,0,0,8,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr9_el1",	CPENC (2,0,0,9,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr0_el1",	CPENC (2,0,0,0,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr10_el1",	CPENC (2,0,0,10,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr11_el1",	CPENC (2,0,0,11,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr12_el1",	CPENC (2,0,0,12,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr13_el1",	CPENC (2,0,0,13,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr14_el1",	CPENC (2,0,0,14,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr15_el1",	CPENC (2,0,0,15,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr1_el1",	CPENC (2,0,0,1,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr2_el1",	CPENC (2,0,0,2,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr3_el1",	CPENC (2,0,0,3,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr4_el1",	CPENC (2,0,0,4,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr5_el1",	CPENC (2,0,0,5,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr6_el1",	CPENC (2,0,0,6,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr7_el1",	CPENC (2,0,0,7,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr8_el1",	CPENC (2,0,0,8,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr9_el1",	CPENC (2,0,0,9,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgclaimclr_el1",	CPENC (2,0,7,9,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgclaimset_el1",	CPENC (2,0,7,8,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgdtr_el0",		CPENC (2,3,0,4,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgdtrrx_el0",	CPENC (2,3,0,5,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgdtrtx_el0",	CPENC (2,3,0,5,0),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgprcr_el1",	CPENC (2,0,1,4,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgvcr32_el2",	CPENC (2,4,0,7,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr0_el1",	CPENC (2,0,0,0,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr10_el1",	CPENC (2,0,0,10,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr11_el1",	CPENC (2,0,0,11,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr12_el1",	CPENC (2,0,0,12,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr13_el1",	CPENC (2,0,0,13,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr14_el1",	CPENC (2,0,0,14,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr15_el1",	CPENC (2,0,0,15,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr1_el1",	CPENC (2,0,0,1,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr2_el1",	CPENC (2,0,0,2,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr3_el1",	CPENC (2,0,0,3,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr4_el1",	CPENC (2,0,0,4,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr5_el1",	CPENC (2,0,0,5,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr6_el1",	CPENC (2,0,0,6,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr7_el1",	CPENC (2,0,0,7,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr8_el1",	CPENC (2,0,0,8,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr9_el1",	CPENC (2,0,0,9,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr0_el1",	CPENC (2,0,0,0,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr10_el1",	CPENC (2,0,0,10,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr11_el1",	CPENC (2,0,0,11,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr12_el1",	CPENC (2,0,0,12,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr13_el1",	CPENC (2,0,0,13,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr14_el1",	CPENC (2,0,0,14,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr15_el1",	CPENC (2,0,0,15,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr1_el1",	CPENC (2,0,0,1,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr2_el1",	CPENC (2,0,0,2,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr3_el1",	CPENC (2,0,0,3,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr4_el1",	CPENC (2,0,0,4,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr5_el1",	CPENC (2,0,0,5,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr6_el1",	CPENC (2,0,0,6,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr7_el1",	CPENC (2,0,0,7,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr8_el1",	CPENC (2,0,0,8,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr9_el1",	CPENC (2,0,0,9,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dczid_el0",		CPENC (3,3,0,0,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("disr_el1",		CPENC (3,0,12,1,1),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("dit",		CPENC (3,3,4,2,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("dlr_el0",		CPENC (3,3,4,5,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("dspsr_el0",		CPENC (3,3,4,5,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("elr_el1",		CPENC (3,0,4,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("elr_el12",		CPENC (3,5,4,0,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("elr_el2",		CPENC (3,4,4,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("elr_el3",		CPENC (3,6,4,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("erridr_el1",		CPENC (3,0,5,3,0),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (RAS))
!   SYSREG ("errselr_el1",	CPENC (3,0,5,3,1),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxaddr_el1",	CPENC (3,0,5,4,3),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxctlr_el1",	CPENC (3,0,5,4,1),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxfr_el1",		CPENC (3,0,5,4,0),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (RAS))
!   SYSREG ("erxgsr_el1",		CPENC (3,0,5,3,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (RASv2))
!   SYSREG ("erxmisc0_el1",	CPENC (3,0,5,5,0),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxmisc1_el1",	CPENC (3,0,5,5,1),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxmisc2_el1",	CPENC (3,0,5,5,2),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxmisc3_el1",	CPENC (3,0,5,5,3),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxpfgcdn_el1",	CPENC (3,0,5,4,6),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxpfgctl_el1",	CPENC (3,0,5,4,5),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxpfgf_el1",	CPENC (3,0,5,4,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (RAS))
!   SYSREG ("erxstatus_el1",	CPENC (3,0,5,4,2),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("esr_el1",		CPENC (3,0,5,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("esr_el12",		CPENC (3,5,5,2,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("esr_el2",		CPENC (3,4,5,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("esr_el3",		CPENC (3,6,5,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("far_el1",		CPENC (3,0,6,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("far_el12",		CPENC (3,5,6,0,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("far_el2",		CPENC (3,4,6,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("far_el3",		CPENC (3,6,6,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("fpcr",		CPENC (3,3,4,4,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("fpexc32_el2",	CPENC (3,4,5,3,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("fpsr",		CPENC (3,3,4,4,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("gcspr_el0",		CPENC (3,3,2,5,1),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcspr_el1",		CPENC (3,0,2,5,1),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcspr_el2",		CPENC (3,4,2,5,1),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcspr_el12",		CPENC (3,5,2,5,1),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcspr_el3",		CPENC (3,6,2,5,1),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcscre0_el1",	CPENC (3,0,2,5,2),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcscr_el1",		CPENC (3,0,2,5,0),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcscr_el2",		CPENC (3,4,2,5,0),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcscr_el12",		CPENC (3,5,2,5,0),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcscr_el3",		CPENC (3,6,2,5,0),    	F_ARCHEXT,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcr_el1",		CPENC (3,0,1,0,6),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("gmid_el1",		CPENC (3,1,0,0,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (MEMTAG))
!   SYSREG ("gpccr_el3",		CPENC (3,6,2,1,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("gptbr_el3",		CPENC (3,6,2,1,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("hacr_el2",		CPENC (3,4,1,1,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("hafgrtr_el2",	CPENC (3,4,3,1,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("hcr_el2",		CPENC (3,4,1,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("hcrx_el2",		CPENC (3,4,1,2,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
!   SYSREG ("hdfgrtr_el2",	CPENC (3,4,3,1,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("hdfgrtr2_el2",	CPENC (3,4,3,1,0),	F_ARCHEXT,		AARCH64_FEATURE (FGT2))
!   SYSREG ("hdfgwtr_el2",	CPENC (3,4,3,1,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("hdfgwtr2_el2",	CPENC (3,4,3,1,1),	F_ARCHEXT,		AARCH64_FEATURE (FGT2))
!   SYSREG ("hfgitr_el2",		CPENC (3,4,1,1,6),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("hfgrtr_el2",		CPENC (3,4,1,1,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("hfgrtr2_el2",	CPENC (3,4,3,1,2),	F_ARCHEXT,		AARCH64_FEATURE (FGT2))
!   SYSREG ("hfgwtr_el2",		CPENC (3,4,1,1,5),	F_ARCHEXT,		AARCH64_FEATURE (V8_6A))
!   SYSREG ("hfgwtr2_el2",	CPENC (3,4,3,1,3),	F_ARCHEXT,		AARCH64_FEATURE (FGT2))
!   SYSREG ("hpfar_el2",		CPENC (3,4,6,0,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("hstr_el2",		CPENC (3,4,1,1,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap0r0_el1",	CPENC (3,0,12,8,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap0r1_el1",	CPENC (3,0,12,8,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap0r2_el1",	CPENC (3,0,12,8,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap0r3_el1",	CPENC (3,0,12,8,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap1r0_el1",	CPENC (3,0,12,9,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap1r1_el1",	CPENC (3,0,12,9,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap1r2_el1",	CPENC (3,0,12,9,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap1r3_el1",	CPENC (3,0,12,9,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_asgi1r_el1",	CPENC (3,0,12,11,6),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_bpr0_el1",	CPENC (3,0,12,8,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_bpr1_el1",	CPENC (3,0,12,12,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ctlr_el1",	CPENC (3,0,12,12,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_ctlr_el3",	CPENC (3,6,12,12,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_dir_el1",	CPENC (3,0,12,11,1),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_eoir0_el1",	CPENC (3,0,12,8,1),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_eoir1_el1",	CPENC (3,0,12,12,1),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_hppir0_el1",	CPENC (3,0,12,8,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_hppir1_el1",	CPENC (3,0,12,12,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_iar0_el1",	CPENC (3,0,12,8,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_iar1_el1",	CPENC (3,0,12,12,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_igrpen0_el1",	CPENC (3,0,12,12,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_igrpen1_el1",	CPENC (3,0,12,12,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_igrpen1_el3",	CPENC (3,6,12,12,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_nmiar1_el1",	CPENC (3,0,12,9,5),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_8A))
!   SYSREG ("icc_pmr_el1",	CPENC (3,0,4,6,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_rpr_el1",	CPENC (3,0,12,11,3),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_sgi0r_el1",	CPENC (3,0,12,11,7),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_sgi1r_el1",	CPENC (3,0,12,11,5),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_sre_el1",	CPENC (3,0,12,12,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_sre_el2",	CPENC (3,4,12,9,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("icc_sre_el3",	CPENC (3,6,12,12,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap0r0_el2",	CPENC (3,4,12,8,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap0r1_el2",	CPENC (3,4,12,8,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap0r2_el2",	CPENC (3,4,12,8,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap0r3_el2",	CPENC (3,4,12,8,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap1r0_el2",	CPENC (3,4,12,9,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap1r1_el2",	CPENC (3,4,12,9,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap1r2_el2",	CPENC (3,4,12,9,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap1r3_el2",	CPENC (3,4,12,9,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_eisr_el2",	CPENC (3,4,12,11,3),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_elrsr_el2",	CPENC (3,4,12,11,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_hcr_el2",	CPENC (3,4,12,11,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr0_el2",	CPENC (3,4,12,12,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr10_el2",	CPENC (3,4,12,13,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr11_el2",	CPENC (3,4,12,13,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr12_el2",	CPENC (3,4,12,13,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr13_el2",	CPENC (3,4,12,13,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr14_el2",	CPENC (3,4,12,13,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr15_el2",	CPENC (3,4,12,13,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr1_el2",	CPENC (3,4,12,12,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr2_el2",	CPENC (3,4,12,12,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr3_el2",	CPENC (3,4,12,12,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr4_el2",	CPENC (3,4,12,12,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr5_el2",	CPENC (3,4,12,12,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr6_el2",	CPENC (3,4,12,12,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr7_el2",	CPENC (3,4,12,12,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr8_el2",	CPENC (3,4,12,13,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr9_el2",	CPENC (3,4,12,13,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_misr_el2",	CPENC (3,4,12,11,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_vmcr_el2",	CPENC (3,4,12,11,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ich_vtr_el2",	CPENC (3,4,12,11,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64afr0_el1",	CPENC (3,0,0,5,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64afr1_el1",	CPENC (3,0,0,5,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64dfr0_el1",	CPENC (3,0,0,5,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64dfr1_el1",	CPENC (3,0,0,5,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64isar0_el1",	CPENC (3,0,0,6,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64isar1_el1",	CPENC (3,0,0,6,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64isar2_el1",	CPENC (3,0,0,6,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64isar3_el1",	CPENC (3,0,0,6,3),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr0_el1",	CPENC (3,0,0,7,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr1_el1",	CPENC (3,0,0,7,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr2_el1",	CPENC (3,0,0,7,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr3_el1",	CPENC (3,0,0,7,3),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr4_el1",	CPENC (3,0,0,7,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64pfr0_el1",	CPENC (3,0,0,4,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64pfr1_el1",	CPENC (3,0,0,4,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64smfr0_el1",	CPENC (3,0,0,4,5),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (SME))
!   SYSREG ("id_aa64zfr0_el1",	CPENC (3,0,0,4,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (SVE))
!   SYSREG ("id_afr0_el1",	CPENC (3,0,0,1,3),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_dfr0_el1",	CPENC (3,0,0,1,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_dfr1_el1",	CPENC (3,0,0,3,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_isar0_el1",	CPENC (3,0,0,2,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_isar1_el1",	CPENC (3,0,0,2,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_isar2_el1",	CPENC (3,0,0,2,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_isar3_el1",	CPENC (3,0,0,2,3),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_isar4_el1",	CPENC (3,0,0,2,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_isar5_el1",	CPENC (3,0,0,2,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_isar6_el1",	CPENC (3,0,0,2,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr0_el1",	CPENC (3,0,0,1,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr1_el1",	CPENC (3,0,0,1,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr2_el1",	CPENC (3,0,0,1,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr3_el1",	CPENC (3,0,0,1,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr4_el1",	CPENC (3,0,0,2,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr5_el1",	CPENC (3,0,0,3,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_pfr0_el1",	CPENC (3,0,0,1,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_pfr1_el1",	CPENC (3,0,0,1,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("id_pfr2_el1",	CPENC (3,0,0,3,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (ID_PFR2))
!   SYSREG ("ifsr32_el2",		CPENC (3,4,5,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("isr_el1",		CPENC (3,0,12,1,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("lorc_el1",		CPENC (3,0,10,4,3),	F_ARCHEXT,		AARCH64_FEATURE (LOR))
!   SYSREG ("lorea_el1",		CPENC (3,0,10,4,1),	F_ARCHEXT,		AARCH64_FEATURE (LOR))
!   SYSREG ("lorid_el1",		CPENC (3,0,10,4,7),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (LOR))
!   SYSREG ("lorn_el1",		CPENC (3,0,10,4,2),	F_ARCHEXT,		AARCH64_FEATURE (LOR))
!   SYSREG ("lorsa_el1",		CPENC (3,0,10,4,0),	F_ARCHEXT,		AARCH64_FEATURE (LOR))
!   SYSREG ("mair_el1",		CPENC (3,0,10,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mair_el12",		CPENC (3,5,10,2,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("mair_el2",		CPENC (3,4,10,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mair_el3",		CPENC (3,6,10,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mair2_el1",		CPENC (3,0,10,2,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
!   SYSREG ("mair2_el12",		CPENC (3,5,10,2,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
!   SYSREG ("mair2_el2",		CPENC (3,4,10,1,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
!   SYSREG ("mair2_el3",		CPENC (3,6,10,1,1),	F_ARCHEXT,		AARCH64_FEATURE (AIE))
!   SYSREG ("mdccint_el1",	CPENC (2,0,0,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mdccsr_el0",		CPENC (2,3,0,1,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("mdcr_el2",		CPENC (3,4,1,1,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mdcr_el3",		CPENC (3,6,1,3,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mdrar_el1",		CPENC (2,0,1,0,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("mdscr_el1",		CPENC (2,0,0,2,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mdselr_el1",		CPENC (2,0,0,4,2),	F_ARCHEXT,		AARCH64_FEATURE (DEBUGv8p9))
!   SYSREG ("mecid_a0_el2",	CPENC (3,4,10,8,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
!   SYSREG ("mecid_a1_el2",	CPENC (3,4,10,8,3),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
!   SYSREG ("mecid_p0_el2",	CPENC (3,4,10,8,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
!   SYSREG ("mecid_p1_el2",	CPENC (3,4,10,8,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
!   SYSREG ("mecid_rl_a_el3",	CPENC (3,6,10,10,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
!   SYSREG ("mecidr_el2",		CPENC (3,4,10,8,7),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_7A))
!   SYSREG ("mfar_el3",		CPENC (3,6,6,0,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("midr_el1",		CPENC (3,0,0,0,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("mpam0_el1",		CPENC (3,0,10,5,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpam1_el1",		CPENC (3,0,10,5,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpam1_el12",		CPENC (3,5,10,5,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpam2_el2",		CPENC (3,4,10,5,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpam3_el3",		CPENC (3,6,10,5,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamhcr_el2",	CPENC (3,4,10,4,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamidr_el1",	CPENC (3,0,10,4,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("mpamsm_el1",		CPENC (3,0,10,5,3),	F_ARCHEXT,		AARCH64_FEATURE (SME))
!   SYSREG ("mpamvpm0_el2",	CPENC (3,4,10,6,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamvpm1_el2",	CPENC (3,4,10,6,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamvpm2_el2",	CPENC (3,4,10,6,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamvpm3_el2",	CPENC (3,4,10,6,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamvpm4_el2",	CPENC (3,4,10,6,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamvpm5_el2",	CPENC (3,4,10,6,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamvpm6_el2",	CPENC (3,4,10,6,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamvpm7_el2",	CPENC (3,4,10,6,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpamvpmv_el2",	CPENC (3,4,10,4,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("mpidr_el1",		CPENC (3,0,0,0,5),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("mpuir_el1",		CPENC (3,0,0,0,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8R))
!   SYSREG ("mpuir_el2",		CPENC (3,4,0,0,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8R))
!   SYSREG ("mvfr0_el1",		CPENC (3,0,0,3,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("mvfr1_el1",		CPENC (3,0,0,3,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("mvfr2_el1",		CPENC (3,0,0,3,2),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("nzcv",		CPENC (3,3,4,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("osdlr_el1",		CPENC (2,0,1,3,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("osdtrrx_el1",	CPENC (2,0,0,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("osdtrtx_el1",	CPENC (2,0,0,3,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("oseccr_el1",		CPENC (2,0,0,6,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("oslar_el1",		CPENC (2,0,1,0,4),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("oslsr_el1",		CPENC (2,0,1,1,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("pir_el1",		CPENC (3,0,10,2,3),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
!   SYSREG ("pir_el12",		CPENC (3,5,10,2,3),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
!   SYSREG ("pir_el2",		CPENC (3,4,10,2,3),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
!   SYSREG ("pir_el3",		CPENC (3,6,10,2,3),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
!   SYSREG ("pire0_el1",		CPENC (3,0,10,2,2),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
!   SYSREG ("pire0_el12",		CPENC (3,5,10,2,2),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
!   SYSREG ("pire0_el2",		CPENC (3,4,10,2,2),	F_ARCHEXT,		AARCH64_FEATURE (S1PIE))
!   SYSREG ("pan",		CPENC (3,0,4,2,3),	F_ARCHEXT,		AARCH64_FEATURE (PAN))
!   SYSREG ("par_el1",		CPENC (3,0,7,4,0),	F_REG_128,		AARCH64_NO_FEATURES)
!   SYSREG ("pfar_el1",		CPENC (3,0,6,0,5),      F_ARCHEXT,              AARCH64_FEATURE (PFAR))
!   SYSREG ("pfar_el12",		CPENC (3,5,6,0,5),      F_ARCHEXT,              AARCH64_FEATURE (PFAR))
!   SYSREG ("pfar_el2",		CPENC (3,4,6,0,5),      F_ARCHEXT,              AARCH64_FEATURE (PFAR))
!   SYSREG ("pmbidr_el1",		CPENC (3,0,9,10,7),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmblimitr_el1",	CPENC (3,0,9,10,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmbptr_el1",		CPENC (3,0,9,10,1),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmbsr_el1",		CPENC (3,0,9,10,3),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmccfiltr_el0",	CPENC (3,3,14,15,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmccntr_el0",	CPENC (3,3,9,13,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmccntsvr_el1",	CPENC (2,0,14,11,7),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmceid0_el0",	CPENC (3,3,9,12,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("pmceid1_el0",	CPENC (3,3,9,12,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("pmcntenclr_el0",	CPENC (3,3,9,12,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmcntenset_el0",	CPENC (3,3,9,12,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmcr_el0",		CPENC (3,3,9,12,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmecr_el1",		CPENC (3,0,9,14,5),	F_ARCHEXT,		AARCH64_FEATURE (SEBEP))
!   SYSREG ("pmevcntr0_el0",	CPENC (3,3,14,8,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr10_el0",	CPENC (3,3,14,9,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr11_el0",	CPENC (3,3,14,9,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr12_el0",	CPENC (3,3,14,9,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr13_el0",	CPENC (3,3,14,9,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr14_el0",	CPENC (3,3,14,9,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr15_el0",	CPENC (3,3,14,9,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr16_el0",	CPENC (3,3,14,10,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr17_el0",	CPENC (3,3,14,10,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr18_el0",	CPENC (3,3,14,10,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr19_el0",	CPENC (3,3,14,10,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr1_el0",	CPENC (3,3,14,8,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr20_el0",	CPENC (3,3,14,10,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr21_el0",	CPENC (3,3,14,10,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr22_el0",	CPENC (3,3,14,10,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr23_el0",	CPENC (3,3,14,10,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr24_el0",	CPENC (3,3,14,11,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr25_el0",	CPENC (3,3,14,11,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr26_el0",	CPENC (3,3,14,11,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr27_el0",	CPENC (3,3,14,11,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr28_el0",	CPENC (3,3,14,11,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr29_el0",	CPENC (3,3,14,11,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr2_el0",	CPENC (3,3,14,8,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr30_el0",	CPENC (3,3,14,11,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr3_el0",	CPENC (3,3,14,8,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr4_el0",	CPENC (3,3,14,8,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr5_el0",	CPENC (3,3,14,8,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr6_el0",	CPENC (3,3,14,8,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr7_el0",	CPENC (3,3,14,8,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr8_el0",	CPENC (3,3,14,9,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr9_el0",	CPENC (3,3,14,9,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntsvr0_el1",	CPENC (2,0,14,8,0),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr10_el1",	CPENC (2,0,14,9,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr11_el1",	CPENC (2,0,14,9,3),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr12_el1",	CPENC (2,0,14,9,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr13_el1",	CPENC (2,0,14,9,5),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr14_el1",	CPENC (2,0,14,9,6),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr15_el1",	CPENC (2,0,14,9,7),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr16_el1",	CPENC (2,0,14,10,0),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr17_el1",	CPENC (2,0,14,10,1),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr18_el1",	CPENC (2,0,14,10,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr19_el1",	CPENC (2,0,14,10,3),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr1_el1",	CPENC (2,0,14,8,1),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr20_el1",	CPENC (2,0,14,10,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr21_el1",	CPENC (2,0,14,10,5),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr22_el1",	CPENC (2,0,14,10,6),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr23_el1",	CPENC (2,0,14,10,7),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr24_el1",	CPENC (2,0,14,11,0),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr25_el1",	CPENC (2,0,14,11,1),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr26_el1",	CPENC (2,0,14,11,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr27_el1",	CPENC (2,0,14,11,3),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr28_el1",	CPENC (2,0,14,11,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr29_el1",	CPENC (2,0,14,11,5),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr2_el1",	CPENC (2,0,14,8,2),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr30_el1",	CPENC (2,0,14,11,6),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr3_el1",	CPENC (2,0,14,8,3),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr4_el1",	CPENC (2,0,14,8,4),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr5_el1",	CPENC (2,0,14,8,5),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr6_el1",	CPENC (2,0,14,8,6),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr7_el1",	CPENC (2,0,14,8,7),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr8_el1",	CPENC (2,0,14,9,0),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevcntsvr9_el1",	CPENC (2,0,14,9,1),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmevtyper0_el0",	CPENC (3,3,14,12,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper10_el0",	CPENC (3,3,14,13,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper11_el0",	CPENC (3,3,14,13,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper12_el0",	CPENC (3,3,14,13,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper13_el0",	CPENC (3,3,14,13,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper14_el0",	CPENC (3,3,14,13,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper15_el0",	CPENC (3,3,14,13,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper16_el0",	CPENC (3,3,14,14,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper17_el0",	CPENC (3,3,14,14,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper18_el0",	CPENC (3,3,14,14,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper19_el0",	CPENC (3,3,14,14,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper1_el0",	CPENC (3,3,14,12,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper20_el0",	CPENC (3,3,14,14,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper21_el0",	CPENC (3,3,14,14,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper22_el0",	CPENC (3,3,14,14,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper23_el0",	CPENC (3,3,14,14,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper24_el0",	CPENC (3,3,14,15,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper25_el0",	CPENC (3,3,14,15,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper26_el0",	CPENC (3,3,14,15,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper27_el0",	CPENC (3,3,14,15,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper28_el0",	CPENC (3,3,14,15,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper29_el0",	CPENC (3,3,14,15,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper2_el0",	CPENC (3,3,14,12,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper30_el0",	CPENC (3,3,14,15,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper3_el0",	CPENC (3,3,14,12,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper4_el0",	CPENC (3,3,14,12,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper5_el0",	CPENC (3,3,14,12,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper6_el0",	CPENC (3,3,14,12,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper7_el0",	CPENC (3,3,14,12,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper8_el0",	CPENC (3,3,14,13,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper9_el0",	CPENC (3,3,14,13,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmiar_el1",		CPENC (3,0,9,14,7),	F_ARCHEXT,		AARCH64_FEATURE (SEBEP))
!   SYSREG ("pmicfiltr_el0",	CPENC (3,3,9,6,0),	F_ARCHEXT,		AARCH64_FEATURE (PMUv3_ICNTR))
!   SYSREG ("pmicntr_el0",	CPENC (3,3,9,4,0),	F_ARCHEXT,		AARCH64_FEATURE (PMUv3_ICNTR))
!   SYSREG ("pmicntsvr_el1",	CPENC (2,0,14,12,0),	F_REG_READ|F_ARCHEXT,   AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmintenclr_el1",	CPENC (3,0,9,14,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmintenset_el1",	CPENC (3,0,9,14,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmmir_el1",		CPENC (3,0,9,14,6),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (V8_4A))
!   SYSREG ("pmovsclr_el0",	CPENC (3,3,9,12,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmovsset_el0",	CPENC (3,3,9,14,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmscr_el1",		CPENC (3,0,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmscr_el12",		CPENC (3,5,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmscr_el2",		CPENC (3,4,9,9,0),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsdsfr_el1",	CPENC (3,4,9,10,4),	F_ARCHEXT,		AARCH64_FEATURE (SPE_FDS))
!   SYSREG ("pmselr_el0",		CPENC (3,3,9,12,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmsevfr_el1",	CPENC (3,0,9,9,5),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsfcr_el1",		CPENC (3,0,9,9,4),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsicr_el1",		CPENC (3,0,9,9,2),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsidr_el1",		CPENC (3,0,9,9,7),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsirr_el1",		CPENC (3,0,9,9,3),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmslatfr_el1",	CPENC (3,0,9,9,6),	F_ARCHEXT,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsnevfr_el1",	CPENC (3,0,9,9,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
!   SYSREG ("pmsscr_el1",		CPENC (3,0,9,13,3),	F_ARCHEXT,		AARCH64_FEATURE (PMUv3_SS))
!   SYSREG ("pmswinc_el0",	CPENC (3,3,9,12,4),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("pmuacr_el1",		CPENC (3,0,9,14,4),	F_ARCHEXT,		AARCH64_FEATURE (PMUv3p9))
!   SYSREG ("pmuserenr_el0",	CPENC (3,3,9,14,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmxevcntr_el0",	CPENC (3,3,9,13,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmxevtyper_el0",	CPENC (3,3,9,13,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("pmzr_el0",		CPENC (3,3,9,13,4),	F_REG_WRITE|F_ARCHEXT,	AARCH64_FEATURE (PMUv3_ICNTR))
!   SYSREG ("por_el0",		CPENC (3,3,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
!   SYSREG ("por_el1",		CPENC (3,0,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
!   SYSREG ("por_el12",		CPENC (3,5,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
!   SYSREG ("por_el2",		CPENC (3,4,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
!   SYSREG ("por_el3",		CPENC (3,6,10,2,4),	F_ARCHEXT,		AARCH64_FEATURE (S1POE))
!   SYSREG ("prbar10_el1",	CPENC (3,0,6,13,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar10_el2",	CPENC (3,4,6,13,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar11_el1",	CPENC (3,0,6,13,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar11_el2",	CPENC (3,4,6,13,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar12_el1",	CPENC (3,0,6,14,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar12_el2",	CPENC (3,4,6,14,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar13_el1",	CPENC (3,0,6,14,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar13_el2",	CPENC (3,4,6,14,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar14_el1",	CPENC (3,0,6,15,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar14_el2",	CPENC (3,4,6,15,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar15_el1",	CPENC (3,0,6,15,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar15_el2",	CPENC (3,4,6,15,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar1_el1",		CPENC (3,0,6,8,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar1_el2",		CPENC (3,4,6,8,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar2_el1",		CPENC (3,0,6,9,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar2_el2",		CPENC (3,4,6,9,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar3_el1",		CPENC (3,0,6,9,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar3_el2",		CPENC (3,4,6,9,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar4_el1",		CPENC (3,0,6,10,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar4_el2",		CPENC (3,4,6,10,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar5_el1",		CPENC (3,0,6,10,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar5_el2",		CPENC (3,4,6,10,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar6_el1",		CPENC (3,0,6,11,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar6_el2",		CPENC (3,4,6,11,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar7_el1",		CPENC (3,0,6,11,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar7_el2",		CPENC (3,4,6,11,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar8_el1",		CPENC (3,0,6,12,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar8_el2",		CPENC (3,4,6,12,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar9_el1",		CPENC (3,0,6,12,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar9_el2",		CPENC (3,4,6,12,4),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar_el1",		CPENC (3,0,6,8,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar_el2",		CPENC (3,4,6,8,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prenr_el1",		CPENC (3,0,6,1,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prenr_el2",		CPENC (3,4,6,1,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar10_el1",	CPENC (3,0,6,13,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar10_el2",	CPENC (3,4,6,13,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar11_el1",	CPENC (3,0,6,13,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar11_el2",	CPENC (3,4,6,13,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar12_el1",	CPENC (3,0,6,14,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar12_el2",	CPENC (3,4,6,14,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar13_el1",	CPENC (3,0,6,14,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar13_el2",	CPENC (3,4,6,14,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar14_el1",	CPENC (3,0,6,15,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar14_el2",	CPENC (3,4,6,15,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar15_el1",	CPENC (3,0,6,15,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar15_el2",	CPENC (3,4,6,15,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar1_el1",		CPENC (3,0,6,8,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar1_el2",		CPENC (3,4,6,8,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar2_el1",		CPENC (3,0,6,9,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar2_el2",		CPENC (3,4,6,9,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar3_el1",		CPENC (3,0,6,9,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar3_el2",		CPENC (3,4,6,9,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar4_el1",		CPENC (3,0,6,10,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar4_el2",		CPENC (3,4,6,10,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar5_el1",		CPENC (3,0,6,10,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar5_el2",		CPENC (3,4,6,10,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar6_el1",		CPENC (3,0,6,11,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar6_el2",		CPENC (3,4,6,11,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar7_el1",		CPENC (3,0,6,11,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar7_el2",		CPENC (3,4,6,11,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar8_el1",		CPENC (3,0,6,12,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar8_el2",		CPENC (3,4,6,12,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar9_el1",		CPENC (3,0,6,12,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar9_el2",		CPENC (3,4,6,12,5),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar_el1",		CPENC (3,0,6,8,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar_el2",		CPENC (3,4,6,8,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prselr_el1",		CPENC (3,0,6,2,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("prselr_el2",		CPENC (3,4,6,2,1),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("rcwmask_el1",	CPENC (3,0,13,0,6),	F_ARCHEXT|F_REG_128,	AARCH64_FEATURE (THE))
!   SYSREG ("rcwsmask_el1",	CPENC (3,0,13,0,3),	F_ARCHEXT|F_REG_128,	AARCH64_FEATURE (THE))
!   SYSREG ("revidr_el1",		CPENC (3,0,0,0,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("rgsr_el1",		CPENC (3,0,1,0,5),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("rmr_el1",		CPENC (3,0,12,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("rmr_el2",		CPENC (3,4,12,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("rmr_el3",		CPENC (3,6,12,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("rndr",		CPENC (3,3,2,4,0),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (RNG))
!   SYSREG ("rndrrs",		CPENC (3,3,2,4,1),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (RNG))
!   SYSREG ("rvbar_el1",		CPENC (3,0,12,0,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("rvbar_el2",		CPENC (3,4,12,0,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("rvbar_el3",		CPENC (3,6,12,0,1),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("scr_el3",		CPENC (3,6,1,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("sctlr_el1",		CPENC (3,0,1,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("sctlr_el12",		CPENC (3,5,1,0,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("sctlr_el2",		CPENC (3,4,1,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("sctlr_el3",		CPENC (3,6,1,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("sctlr2_el1",		CPENC (3,0,1,0,3),	F_ARCHEXT,		AARCH64_FEATURE (SCTLR2))
!   SYSREG ("sctlr2_el12",	CPENC (3,5,1,0,3),	F_ARCHEXT,		AARCH64_FEATURE (SCTLR2))
!   SYSREG ("sctlr2_el2",		CPENC (3,4,1,0,3),	F_ARCHEXT,		AARCH64_FEATURE (SCTLR2))
!   SYSREG ("sctlr2_el3",		CPENC (3,6,1,0,3),	F_ARCHEXT,		AARCH64_FEATURE (SCTLR2))
!   SYSREG ("scxtnum_el0",	CPENC (3,3,13,0,7),	F_ARCHEXT,		AARCH64_FEATURE (SCXTNUM))
!   SYSREG ("scxtnum_el1",	CPENC (3,0,13,0,7),	F_ARCHEXT,		AARCH64_FEATURE (SCXTNUM))
!   SYSREG ("scxtnum_el12",	CPENC (3,5,13,0,7),	F_ARCHEXT,		AARCH64_FEATURE (SCXTNUM))
!   SYSREG ("scxtnum_el2",	CPENC (3,4,13,0,7),	F_ARCHEXT,		AARCH64_FEATURE (SCXTNUM))
!   SYSREG ("scxtnum_el3",	CPENC (3,6,13,0,7),	F_ARCHEXT,		AARCH64_FEATURE (SCXTNUM))
!   SYSREG ("sder32_el2",		CPENC (3,4,1,3,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("sder32_el3",		CPENC (3,6,1,1,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("smcr_el1",		CPENC (3,0,1,2,6),	F_ARCHEXT,		AARCH64_FEATURE (SME))
!   SYSREG ("smcr_el12",		CPENC (3,5,1,2,6),	F_ARCHEXT,		AARCH64_FEATURE (SME))
!   SYSREG ("smcr_el2",		CPENC (3,4,1,2,6),	F_ARCHEXT,		AARCH64_FEATURE (SME))
!   SYSREG ("smcr_el3",		CPENC (3,6,1,2,6),	F_ARCHEXT,		AARCH64_FEATURE (SME))
!   SYSREG ("smidr_el1",		CPENC (3,1,0,0,6),	F_REG_READ|F_ARCHEXT,	AARCH64_FEATURE (SME))
!   SYSREG ("smpri_el1",		CPENC (3,0,1,2,4),	F_ARCHEXT,		AARCH64_FEATURE (SME))
!   SYSREG ("smprimap_el2",	CPENC (3,4,1,2,5),	F_ARCHEXT,		AARCH64_FEATURE (SME))
!   SYSREG ("sp_el0",		CPENC (3,0,4,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("sp_el1",		CPENC (3,4,4,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("sp_el2",		CPENC (3,6,4,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("spsel",		CPENC (3,0,4,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("spsr_abt",		CPENC (3,4,4,3,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("spsr_el1",		CPENC (3,0,4,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("spsr_el12",		CPENC (3,5,4,0,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("spsr_el2",		CPENC (3,4,4,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("spsr_el3",		CPENC (3,6,4,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("spsr_fiq",		CPENC (3,4,4,3,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("spsr_hyp",		CPENC (3,4,4,0,0),	F_DEPRECATED,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_irq",		CPENC (3,4,4,3,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("spsr_svc",		CPENC (3,0,4,0,0),	F_DEPRECATED,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_und",		CPENC (3,4,4,3,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ssbs",		CPENC (3,3,4,2,6),	F_ARCHEXT,		AARCH64_FEATURE (SSBS))
!   SYSREG ("svcr",		CPENC (3,3,4,2,2),	F_ARCHEXT,		AARCH64_FEATURE (SME))
!   SYSREG ("s2pir_el2",		CPENC (3,4,10,2,5),	F_ARCHEXT,		AARCH64_FEATURE (S2PIE))
!   SYSREG ("s2por_el1",		CPENC (3,0,10,2,5),	F_ARCHEXT,		AARCH64_FEATURE (S2POE))
!   SYSREG ("tco",		CPENC (3,3,4,2,7),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tcr_el1",		CPENC (3,0,2,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("tcr_el12",		CPENC (3,5,2,0,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("tcr_el2",		CPENC (3,4,2,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("tcr_el3",		CPENC (3,6,2,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("tcr2_el1",		CPENC (3,0,2,0,3),	F_ARCHEXT,		AARCH64_FEATURE (TCR2))
!   SYSREG ("tcr2_el12",		CPENC (3,5,2,0,3),	F_ARCHEXT,		AARCH64_FEATURE (TCR2))
!   SYSREG ("tcr2_el2",		CPENC (3,4,2,0,3),	F_ARCHEXT,		AARCH64_FEATURE (TCR2))
!   SYSREG ("teecr32_el1",	CPENC (2,2,0,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("teehbr32_el1",	CPENC (2,2,1,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("tfsr_el1",		CPENC (3,0,5,6,0),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tfsr_el12",		CPENC (3,5,5,6,0),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tfsr_el2",		CPENC (3,4,5,6,0),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tfsr_el3",		CPENC (3,6,5,6,0),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tfsre0_el1",		CPENC (3,0,5,6,1),	F_ARCHEXT,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tpidr2_el0",		CPENC (3,3,13,0,5),	F_ARCHEXT,		AARCH64_FEATURE (SME))
!   SYSREG ("tpidr_el0",		CPENC (3,3,13,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("tpidr_el1",		CPENC (3,0,13,0,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("tpidr_el2",		CPENC (3,4,13,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("tpidr_el3",		CPENC (3,6,13,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("tpidrro_el0",	CPENC (3,3,13,0,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trbbaser_el1",	CPENC (3,0,9,11,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trbidr_el1",		CPENC (3,0,9,11,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trblimitr_el1",	CPENC (3,0,9,11,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trbmar_el1",		CPENC (3,0,9,11,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trbptr_el1",		CPENC (3,0,9,11,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trbsr_el1",		CPENC (3,0,9,11,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trbtrg_el1",		CPENC (3,0,9,11,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr0",		CPENC (2,1,2,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr1",		CPENC (2,1,2,2,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr10",		CPENC (2,1,2,4,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr11",		CPENC (2,1,2,6,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr12",		CPENC (2,1,2,8,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr13",		CPENC (2,1,2,10,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr14",		CPENC (2,1,2,12,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr15",		CPENC (2,1,2,14,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr2",		CPENC (2,1,2,4,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr3",		CPENC (2,1,2,6,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr4",		CPENC (2,1,2,8,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr5",		CPENC (2,1,2,10,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr6",		CPENC (2,1,2,12,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr7",		CPENC (2,1,2,14,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr8",		CPENC (2,1,2,0,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr9",		CPENC (2,1,2,2,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr0",		CPENC (2,1,2,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr1",		CPENC (2,1,2,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr10",		CPENC (2,1,2,4,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr11",		CPENC (2,1,2,6,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr12",		CPENC (2,1,2,8,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr13",		CPENC (2,1,2,10,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr14",		CPENC (2,1,2,12,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr15",		CPENC (2,1,2,14,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr2",		CPENC (2,1,2,4,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr3",		CPENC (2,1,2,6,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr4",		CPENC (2,1,2,8,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr5",		CPENC (2,1,2,10,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr6",		CPENC (2,1,2,12,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr7",		CPENC (2,1,2,14,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr8",		CPENC (2,1,2,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr9",		CPENC (2,1,2,2,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcauthstatus",	CPENC (2,1,7,14,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcauxctlr",		CPENC (2,1,0,6,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcbbctlr",		CPENC (2,1,0,15,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcccctlr",		CPENC (2,1,0,14,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcctlr0",	CPENC (2,1,3,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcctlr1",	CPENC (2,1,3,1,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr0",		CPENC (2,1,3,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr1",		CPENC (2,1,3,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr2",		CPENC (2,1,3,4,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr3",		CPENC (2,1,3,6,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr4",		CPENC (2,1,3,8,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr5",		CPENC (2,1,3,10,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr6",		CPENC (2,1,3,12,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr7",		CPENC (2,1,3,14,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccidr0",		CPENC (2,1,7,12,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidr1",		CPENC (2,1,7,13,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidr2",		CPENC (2,1,7,14,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidr3",		CPENC (2,1,7,15,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcclaimclr",	CPENC (2,1,7,9,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcclaimset",	CPENC (2,1,7,8,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntctlr0",	CPENC (2,1,0,4,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntctlr1",	CPENC (2,1,0,5,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntctlr2",	CPENC (2,1,0,6,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntctlr3",	CPENC (2,1,0,7,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntrldvr0",	CPENC (2,1,0,0,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntrldvr1",	CPENC (2,1,0,1,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntrldvr2",	CPENC (2,1,0,2,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntrldvr3",	CPENC (2,1,0,3,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntvr0",		CPENC (2,1,0,8,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntvr1",		CPENC (2,1,0,9,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntvr2",		CPENC (2,1,0,10,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trccntvr3",		CPENC (2,1,0,11,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcconfigr",		CPENC (2,1,0,4,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdevaff0",		CPENC (2,1,7,10,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdevaff1",		CPENC (2,1,7,11,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdevarch",		CPENC (2,1,7,15,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdevid",		CPENC (2,1,7,2,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdevtype",		CPENC (2,1,7,3,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr0",		CPENC (2,1,2,0,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr1",		CPENC (2,1,2,4,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr2",		CPENC (2,1,2,8,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr3",		CPENC (2,1,2,12,6),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr4",		CPENC (2,1,2,0,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr5",		CPENC (2,1,2,4,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr6",		CPENC (2,1,2,8,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr7",		CPENC (2,1,2,12,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr0",		CPENC (2,1,2,0,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr1",		CPENC (2,1,2,4,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr2",		CPENC (2,1,2,8,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr3",		CPENC (2,1,2,12,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr4",		CPENC (2,1,2,0,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr5",		CPENC (2,1,2,4,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr6",		CPENC (2,1,2,8,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr7",		CPENC (2,1,2,12,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trceventctl0r",	CPENC (2,1,0,8,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trceventctl1r",	CPENC (2,1,0,9,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr",	CPENC (2,1,0,8,4),	F_REG_ALIAS,		AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr0",	CPENC (2,1,0,8,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr1",	CPENC (2,1,0,9,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr2",	CPENC (2,1,0,10,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr3",	CPENC (2,1,0,11,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcidr0",		CPENC (2,1,0,8,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr1",		CPENC (2,1,0,9,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr10",		CPENC (2,1,0,2,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr11",		CPENC (2,1,0,3,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr12",		CPENC (2,1,0,4,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr13",		CPENC (2,1,0,5,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr2",		CPENC (2,1,0,10,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr3",		CPENC (2,1,0,11,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr4",		CPENC (2,1,0,12,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr5",		CPENC (2,1,0,13,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr6",		CPENC (2,1,0,14,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr7",		CPENC (2,1,0,15,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr8",		CPENC (2,1,0,0,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr9",		CPENC (2,1,0,1,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec0",		CPENC (2,1,0,0,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec1",		CPENC (2,1,0,1,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec2",		CPENC (2,1,0,2,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec3",		CPENC (2,1,0,3,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec4",		CPENC (2,1,0,4,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec5",		CPENC (2,1,0,5,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec6",		CPENC (2,1,0,6,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec7",		CPENC (2,1,0,7,7),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcitctrl",		CPENC (2,1,7,0,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcitecr_el1",	CPENC (3,0,1,2,3),	F_ARCHEXT,		AARCH64_FEATURE (ITE))
!   SYSREG ("trcitecr_el12",	CPENC (3,5,1,2,3),	F_ARCHEXT,		AARCH64_FEATURE (ITE))
!   SYSREG ("trcitecr_el2",	CPENC (3,4,1,2,3),	F_ARCHEXT,		AARCH64_FEATURE (ITE))
!   SYSREG ("trciteedcr",		CPENC (2,1,0,2,1),	F_ARCHEXT,		AARCH64_FEATURE (ITE))
!   SYSREG ("trclar",		CPENC (2,1,7,12,6),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("trclsr",		CPENC (2,1,7,13,6),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcoslar",		CPENC (2,1,1,0,4),	F_REG_WRITE,		AARCH64_NO_FEATURES)
!   SYSREG ("trcoslsr",		CPENC (2,1,1,1,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpdcr",		CPENC (2,1,1,4,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcpdsr",		CPENC (2,1,1,5,4),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr0",		CPENC (2,1,7,8,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr1",		CPENC (2,1,7,9,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr2",		CPENC (2,1,7,10,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr3",		CPENC (2,1,7,11,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr4",		CPENC (2,1,7,4,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr5",		CPENC (2,1,7,5,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr6",		CPENC (2,1,7,6,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr7",		CPENC (2,1,7,7,7),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcprgctlr",		CPENC (2,1,0,1,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcprocselr",	CPENC (2,1,0,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcqctlr",		CPENC (2,1,0,1,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr10",	CPENC (2,1,1,10,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr11",	CPENC (2,1,1,11,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr12",	CPENC (2,1,1,12,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr13",	CPENC (2,1,1,13,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr14",	CPENC (2,1,1,14,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr15",	CPENC (2,1,1,15,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr16",	CPENC (2,1,1,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr17",	CPENC (2,1,1,1,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr18",	CPENC (2,1,1,2,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr19",	CPENC (2,1,1,3,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr2",		CPENC (2,1,1,2,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr20",	CPENC (2,1,1,4,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr21",	CPENC (2,1,1,5,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr22",	CPENC (2,1,1,6,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr23",	CPENC (2,1,1,7,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr24",	CPENC (2,1,1,8,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr25",	CPENC (2,1,1,9,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr26",	CPENC (2,1,1,10,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr27",	CPENC (2,1,1,11,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr28",	CPENC (2,1,1,12,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr29",	CPENC (2,1,1,13,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr3",		CPENC (2,1,1,3,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr30",	CPENC (2,1,1,14,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr31",	CPENC (2,1,1,15,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr4",		CPENC (2,1,1,4,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr5",		CPENC (2,1,1,5,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr6",		CPENC (2,1,1,6,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr7",		CPENC (2,1,1,7,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr8",		CPENC (2,1,1,8,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr9",		CPENC (2,1,1,9,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcrsr",		CPENC (2,1,0,10,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcseqevr0",		CPENC (2,1,0,0,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcseqevr1",		CPENC (2,1,0,1,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcseqevr2",		CPENC (2,1,0,2,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcseqrstevr",	CPENC (2,1,0,6,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcseqstr",		CPENC (2,1,0,7,4),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr0",		CPENC (2,1,1,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr1",		CPENC (2,1,1,1,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr2",		CPENC (2,1,1,2,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr3",		CPENC (2,1,1,3,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr4",		CPENC (2,1,1,4,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr5",		CPENC (2,1,1,5,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr6",		CPENC (2,1,1,6,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr7",		CPENC (2,1,1,7,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr0",		CPENC (2,1,1,8,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr1",		CPENC (2,1,1,9,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr2",		CPENC (2,1,1,10,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr3",		CPENC (2,1,1,11,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr4",		CPENC (2,1,1,12,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr5",		CPENC (2,1,1,13,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr6",		CPENC (2,1,1,14,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr7",		CPENC (2,1,1,15,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr0",	CPENC (2,1,1,0,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr1",	CPENC (2,1,1,1,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr2",	CPENC (2,1,1,2,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr3",	CPENC (2,1,1,3,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr4",	CPENC (2,1,1,4,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr5",	CPENC (2,1,1,5,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr6",	CPENC (2,1,1,6,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr7",	CPENC (2,1,1,7,3),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcstallctlr",	CPENC (2,1,0,11,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcstatr",		CPENC (2,1,0,3,0),	F_REG_READ,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsyncpr",		CPENC (2,1,0,13,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trctraceidr",	CPENC (2,1,0,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trctsctlr",		CPENC (2,1,0,12,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvdarcctlr",	CPENC (2,1,0,10,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvdctlr",		CPENC (2,1,0,8,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvdsacctlr",	CPENC (2,1,0,9,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvictlr",		CPENC (2,1,0,0,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcviiectlr",	CPENC (2,1,0,1,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvipcssctlr",	CPENC (2,1,0,3,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvissctlr",	CPENC (2,1,0,2,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcctlr0",	CPENC (2,1,3,2,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcctlr1",	CPENC (2,1,3,3,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr0",	CPENC (2,1,3,0,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr1",	CPENC (2,1,3,2,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr2",	CPENC (2,1,3,4,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr3",	CPENC (2,1,3,6,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr4",	CPENC (2,1,3,8,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr5",	CPENC (2,1,3,10,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr6",	CPENC (2,1,3,12,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr7",	CPENC (2,1,3,14,1),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("trfcr_el1",		CPENC (3,0,1,2,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("trfcr_el12",		CPENC (3,5,1,2,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("trfcr_el2",		CPENC (3,4,1,2,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("ttbr0_el1",		CPENC (3,0,2,0,0),	F_REG_128,		AARCH64_NO_FEATURES)
!   SYSREG ("ttbr0_el12",		CPENC (3,5,2,0,0),	F_ARCHEXT|F_REG_128,	AARCH64_FEATURE (V8_1A))
!   SYSREG ("ttbr0_el2",		CPENC (3,4,2,0,0),	F_ARCHEXT|F_REG_128,	AARCH64_FEATURE (V8A))
!   SYSREG ("ttbr0_el3",		CPENC (3,6,2,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("ttbr1_el1",		CPENC (3,0,2,0,1),	F_REG_128,		AARCH64_NO_FEATURES)
!   SYSREG ("ttbr1_el12",		CPENC (3,5,2,0,1),	F_ARCHEXT|F_REG_128,	AARCH64_FEATURE (V8_1A))
!   SYSREG ("ttbr1_el2",		CPENC (3,4,2,0,1),	F_ARCHEXT|F_REG_128,	AARCH64_FEATURES (2, V8A, V8_1A))
!   SYSREG ("uao",		CPENC (3,0,4,2,4),	F_ARCHEXT,		AARCH64_FEATURE (V8_2A))
!   SYSREG ("vbar_el1",		CPENC (3,0,12,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("vbar_el12",		CPENC (3,5,12,0,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_1A))
!   SYSREG ("vbar_el2",		CPENC (3,4,12,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("vbar_el3",		CPENC (3,6,12,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("vdisr_el2",		CPENC (3,4,12,1,1),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("vmecid_a_el2",	CPENC (3,4,10,9,1),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
!   SYSREG ("vmecid_p_el2",	CPENC (3,4,10,9,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_7A))
!   SYSREG ("vmpidr_el2",		CPENC (3,4,0,0,5),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("vncr_el2",		CPENC (3,4,2,2,0),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("vpidr_el2",		CPENC (3,4,0,0,0),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("vsctlr_el2",		CPENC (3,4,2,0,0),	F_ARCHEXT,		AARCH64_FEATURE (V8R))
!   SYSREG ("vsesr_el2",		CPENC (3,4,5,2,3),	F_ARCHEXT,		AARCH64_FEATURE (RAS))
!   SYSREG ("vstcr_el2",		CPENC (3,4,2,6,2),	F_ARCHEXT,		AARCH64_FEATURE (V8_4A))
!   SYSREG ("vsttbr_el2",		CPENC (3,4,2,6,0),	F_ARCHEXT,		AARCH64_FEATURES (2, V8A, V8_4A))
!   SYSREG ("vtcr_el2",		CPENC (3,4,2,1,2),	0,			AARCH64_NO_FEATURES)
!   SYSREG ("vttbr_el2",		CPENC (3,4,2,1,0),	F_ARCHEXT|F_REG_128,	AARCH64_FEATURE (V8A))
!   SYSREG ("zcr_el1",		CPENC (3,0,1,2,0),	F_ARCHEXT,		AARCH64_FEATURE (SVE))
!   SYSREG ("zcr_el12",		CPENC (3,5,1,2,0),	F_ARCHEXT,		AARCH64_FEATURE (SVE))
!   SYSREG ("zcr_el2",		CPENC (3,4,1,2,0),	F_ARCHEXT,		AARCH64_FEATURE (SVE))
!   SYSREG ("zcr_el3",		CPENC (3,6,1,2,0),	F_ARCHEXT,		AARCH64_FEATURE (SVE))
--- 36,1289 ----
    The FEATURES field maps onto ISA flags and specifies the architectural
    feature requirements of the system register.  */
  
!   SYSREG ("accdata_el1",	CPENC (3,0,13,0,5),	0,		AARCH64_FEATURE (LS64)) /* LS64_ACCDATA */
!   SYSREG ("actlr_el1",		CPENC (3,0,1,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("actlr_el12",		CPENC (3,5,1,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("actlr_el2",		CPENC (3,4,1,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("actlr_el3",		CPENC (3,6,1,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("actlralias_el1",	CPENC (3,0,1,4,5),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("actlrmask_el1",	CPENC (3,0,1,4,1),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("actlrmask_el12",	CPENC (3,5,1,4,1),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("actlrmask_el2",	CPENC (3,4,1,4,1),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("afsr0_el1",		CPENC (3,0,5,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("afsr0_el12",		CPENC (3,5,5,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("afsr0_el2",		CPENC (3,4,5,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("afsr0_el3",		CPENC (3,6,5,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("afsr1_el1",		CPENC (3,0,5,1,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("afsr1_el12",		CPENC (3,5,5,1,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("afsr1_el2",		CPENC (3,4,5,1,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("afsr1_el3",		CPENC (3,6,5,1,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("aidr_el1",		CPENC (3,1,0,0,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("allint",		CPENC (3,0,4,3,0),	0,		AARCH64_FEATURE (V8_7A)) /* NMI */
!   SYSREG ("amair_el1",		CPENC (3,0,10,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("amair_el12",		CPENC (3,5,10,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("amair_el2",		CPENC (3,4,10,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("amair_el3",		CPENC (3,6,10,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("amair2_el1",		CPENC (3,0,10,3,1),	0,		AARCH64_FEATURE (V8_8A)) /* AIE */
!   SYSREG ("amair2_el12",	CPENC (3,5,10,3,1),	0,		AARCH64_FEATURE (V8_8A)) /* AIE */
!   SYSREG ("amair2_el2",		CPENC (3,4,10,3,1),	0,		AARCH64_FEATURE (V8_8A)) /* AIE */
!   SYSREG ("amair2_el3",		CPENC (3,6,10,3,1),	0,		AARCH64_FEATURE (V8_8A)) /* AIE */
!   SYSREG ("amcfgr_el0",		CPENC (3,3,13,2,1),	F_REG_READ,	AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amcg1idr_el0",	CPENC (3,3,13,2,6),	F_REG_READ,	AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amcgcr_el0",		CPENC (3,3,13,2,2),	F_REG_READ,	AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amcntenclr0_el0",	CPENC (3,3,13,2,4),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amcntenclr1_el0",	CPENC (3,3,13,3,0),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amcntenset0_el0",	CPENC (3,3,13,2,5),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amcntenset1_el0",	CPENC (3,3,13,3,1),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amcr_el0",		CPENC (3,3,13,2,0),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr00_el0",	CPENC (3,3,13,4,0),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr01_el0",	CPENC (3,3,13,4,1),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr02_el0",	CPENC (3,3,13,4,2),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr03_el0",	CPENC (3,3,13,4,3),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr10_el0",	CPENC (3,3,13,12,0),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr110_el0",	CPENC (3,3,13,13,2),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr111_el0",	CPENC (3,3,13,13,3),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr112_el0",	CPENC (3,3,13,13,4),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr113_el0",	CPENC (3,3,13,13,5),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr114_el0",	CPENC (3,3,13,13,6),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr115_el0",	CPENC (3,3,13,13,7),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr11_el0",	CPENC (3,3,13,12,1),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr12_el0",	CPENC (3,3,13,12,2),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr13_el0",	CPENC (3,3,13,12,3),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr14_el0",	CPENC (3,3,13,12,4),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr15_el0",	CPENC (3,3,13,12,5),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr16_el0",	CPENC (3,3,13,12,6),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr17_el0",	CPENC (3,3,13,12,7),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr18_el0",	CPENC (3,3,13,13,0),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntr19_el0",	CPENC (3,3,13,13,1),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevcntvoff00_el2",	CPENC (3,4,13,8,0),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff010_el2",	CPENC (3,4,13,9,2),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff011_el2",	CPENC (3,4,13,9,3),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff012_el2",	CPENC (3,4,13,9,4),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff013_el2",	CPENC (3,4,13,9,5),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff014_el2",	CPENC (3,4,13,9,6),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff015_el2",	CPENC (3,4,13,9,7),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff01_el2",	CPENC (3,4,13,8,1),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff02_el2",	CPENC (3,4,13,8,2),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff03_el2",	CPENC (3,4,13,8,3),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff04_el2",	CPENC (3,4,13,8,4),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff05_el2",	CPENC (3,4,13,8,5),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff06_el2",	CPENC (3,4,13,8,6),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff07_el2",	CPENC (3,4,13,8,7),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff08_el2",	CPENC (3,4,13,9,0),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff09_el2",	CPENC (3,4,13,9,1),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff10_el2",	CPENC (3,4,13,10,0),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff110_el2",	CPENC (3,4,13,11,2),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff111_el2",	CPENC (3,4,13,11,3),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff112_el2",	CPENC (3,4,13,11,4),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff113_el2",	CPENC (3,4,13,11,5),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff114_el2",	CPENC (3,4,13,11,6),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff115_el2",	CPENC (3,4,13,11,7),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff11_el2",	CPENC (3,4,13,10,1),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff12_el2",	CPENC (3,4,13,10,2),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff13_el2",	CPENC (3,4,13,10,3),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff14_el2",	CPENC (3,4,13,10,4),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff15_el2",	CPENC (3,4,13,10,5),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff16_el2",	CPENC (3,4,13,10,6),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff17_el2",	CPENC (3,4,13,10,7),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff18_el2",	CPENC (3,4,13,11,0),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevcntvoff19_el2",	CPENC (3,4,13,11,1),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1p1 */
!   SYSREG ("amevtyper00_el0",	CPENC (3,3,13,6,0),	F_REG_READ,	AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper01_el0",	CPENC (3,3,13,6,1),	F_REG_READ,	AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper02_el0",	CPENC (3,3,13,6,2),	F_REG_READ,	AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper03_el0",	CPENC (3,3,13,6,3),	F_REG_READ,	AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper10_el0",	CPENC (3,3,13,14,0),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper110_el0",	CPENC (3,3,13,15,2),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper111_el0",	CPENC (3,3,13,15,3),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper112_el0",	CPENC (3,3,13,15,4),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper113_el0",	CPENC (3,3,13,15,5),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper114_el0",	CPENC (3,3,13,15,6),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper115_el0",	CPENC (3,3,13,15,7),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper11_el0",	CPENC (3,3,13,14,1),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper12_el0",	CPENC (3,3,13,14,2),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper13_el0",	CPENC (3,3,13,14,3),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper14_el0",	CPENC (3,3,13,14,4),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper15_el0",	CPENC (3,3,13,14,5),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper16_el0",	CPENC (3,3,13,14,6),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper17_el0",	CPENC (3,3,13,14,7),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper18_el0",	CPENC (3,3,13,15,0),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amevtyper19_el0",	CPENC (3,3,13,15,1),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("amuserenr_el0",	CPENC (3,3,13,2,3),	0,		AARCH64_FEATURE (V8_3A)) /* AMUv1 */
!   SYSREG ("apdakeyhi_el1",	CPENC (3,0,2,2,1),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("apdakeylo_el1",	CPENC (3,0,2,2,0),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("apdbkeyhi_el1",	CPENC (3,0,2,2,3),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("apdbkeylo_el1",	CPENC (3,0,2,2,2),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("apgakeyhi_el1",	CPENC (3,0,2,3,1),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("apgakeylo_el1",	CPENC (3,0,2,3,0),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("apiakeyhi_el1",	CPENC (3,0,2,1,1),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("apiakeylo_el1",	CPENC (3,0,2,1,0),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("apibkeyhi_el1",	CPENC (3,0,2,1,3),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("apibkeylo_el1",	CPENC (3,0,2,1,2),	0,		AARCH64_FEATURE (PAUTH))
!   SYSREG ("brbcr_el1",		CPENC (2,1,9,0,0),	0,		AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbcr_el12",		CPENC (2,5,9,0,0),	0,		AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbcr_el2",		CPENC (2,4,9,0,0),	0,		AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbfcr_el1",		CPENC (2,1,9,0,1),	0,		AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbidr0_el1",	CPENC (2,1,9,2,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf0_el1",	CPENC (2,1,8,0,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf10_el1",	CPENC (2,1,8,10,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf11_el1",	CPENC (2,1,8,11,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf12_el1",	CPENC (2,1,8,12,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf13_el1",	CPENC (2,1,8,13,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf14_el1",	CPENC (2,1,8,14,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf15_el1",	CPENC (2,1,8,15,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf16_el1",	CPENC (2,1,8,0,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf17_el1",	CPENC (2,1,8,1,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf18_el1",	CPENC (2,1,8,2,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf19_el1",	CPENC (2,1,8,3,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf1_el1",	CPENC (2,1,8,1,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf20_el1",	CPENC (2,1,8,4,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf21_el1",	CPENC (2,1,8,5,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf22_el1",	CPENC (2,1,8,6,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf23_el1",	CPENC (2,1,8,7,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf24_el1",	CPENC (2,1,8,8,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf25_el1",	CPENC (2,1,8,9,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf26_el1",	CPENC (2,1,8,10,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf27_el1",	CPENC (2,1,8,11,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf28_el1",	CPENC (2,1,8,12,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf29_el1",	CPENC (2,1,8,13,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf2_el1",	CPENC (2,1,8,2,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf30_el1",	CPENC (2,1,8,14,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf31_el1",	CPENC (2,1,8,15,4),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf3_el1",	CPENC (2,1,8,3,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf4_el1",	CPENC (2,1,8,4,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf5_el1",	CPENC (2,1,8,5,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf6_el1",	CPENC (2,1,8,6,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf7_el1",	CPENC (2,1,8,7,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf8_el1",	CPENC (2,1,8,8,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinf9_el1",	CPENC (2,1,8,9,0),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbinfinj_el1",	CPENC (2,1,9,1,0),	0,		AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc0_el1",	CPENC (2,1,8,0,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc10_el1",	CPENC (2,1,8,10,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc11_el1",	CPENC (2,1,8,11,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc12_el1",	CPENC (2,1,8,12,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc13_el1",	CPENC (2,1,8,13,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc14_el1",	CPENC (2,1,8,14,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc15_el1",	CPENC (2,1,8,15,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc16_el1",	CPENC (2,1,8,0,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc17_el1",	CPENC (2,1,8,1,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc18_el1",	CPENC (2,1,8,2,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc19_el1",	CPENC (2,1,8,3,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc1_el1",	CPENC (2,1,8,1,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc20_el1",	CPENC (2,1,8,4,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc21_el1",	CPENC (2,1,8,5,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc22_el1",	CPENC (2,1,8,6,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc23_el1",	CPENC (2,1,8,7,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc24_el1",	CPENC (2,1,8,8,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc25_el1",	CPENC (2,1,8,9,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc26_el1",	CPENC (2,1,8,10,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc27_el1",	CPENC (2,1,8,11,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc28_el1",	CPENC (2,1,8,12,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc29_el1",	CPENC (2,1,8,13,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc2_el1",	CPENC (2,1,8,2,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc30_el1",	CPENC (2,1,8,14,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc31_el1",	CPENC (2,1,8,15,5),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc3_el1",	CPENC (2,1,8,3,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc4_el1",	CPENC (2,1,8,4,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc5_el1",	CPENC (2,1,8,5,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc6_el1",	CPENC (2,1,8,6,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc7_el1",	CPENC (2,1,8,7,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc8_el1",	CPENC (2,1,8,8,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrc9_el1",	CPENC (2,1,8,9,1),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbsrcinj_el1",	CPENC (2,1,9,1,1),	0,		AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt0_el1",	CPENC (2,1,8,0,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt10_el1",	CPENC (2,1,8,10,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt11_el1",	CPENC (2,1,8,11,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt12_el1",	CPENC (2,1,8,12,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt13_el1",	CPENC (2,1,8,13,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt14_el1",	CPENC (2,1,8,14,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt15_el1",	CPENC (2,1,8,15,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt16_el1",	CPENC (2,1,8,0,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt17_el1",	CPENC (2,1,8,1,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt18_el1",	CPENC (2,1,8,2,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt19_el1",	CPENC (2,1,8,3,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt1_el1",	CPENC (2,1,8,1,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt20_el1",	CPENC (2,1,8,4,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt21_el1",	CPENC (2,1,8,5,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt22_el1",	CPENC (2,1,8,6,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt23_el1",	CPENC (2,1,8,7,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt24_el1",	CPENC (2,1,8,8,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt25_el1",	CPENC (2,1,8,9,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt26_el1",	CPENC (2,1,8,10,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt27_el1",	CPENC (2,1,8,11,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt28_el1",	CPENC (2,1,8,12,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt29_el1",	CPENC (2,1,8,13,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt2_el1",	CPENC (2,1,8,2,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt30_el1",	CPENC (2,1,8,14,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt31_el1",	CPENC (2,1,8,15,6),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt3_el1",	CPENC (2,1,8,3,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt4_el1",	CPENC (2,1,8,4,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt5_el1",	CPENC (2,1,8,5,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt6_el1",	CPENC (2,1,8,6,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt7_el1",	CPENC (2,1,8,7,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt8_el1",	CPENC (2,1,8,8,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgt9_el1",	CPENC (2,1,8,9,2),	F_REG_READ,	AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbtgtinj_el1",	CPENC (2,1,9,1,2),	0,		AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("brbts_el1",		CPENC (2,1,9,0,2),	0,		AARCH64_FEATURE (V9_1A)) /* BRBE */
!   SYSREG ("ccsidr2_el1",	CPENC (3,1,0,0,2),	F_REG_READ,	AARCH64_FEATURE (V8_2A)) /* CCIDX */
!   SYSREG ("ccsidr_el1",		CPENC (3,1,0,0,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("clidr_el1",		CPENC (3,1,0,0,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("cntfrq_el0",		CPENC (3,3,14,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cnthctl_el2",	CPENC (3,4,14,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cnthp_ctl_el2",	CPENC (3,4,14,2,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cnthp_cval_el2",	CPENC (3,4,14,2,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cnthp_tval_el2",	CPENC (3,4,14,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cnthps_ctl_el2",	CPENC (3,4,14,5,1),	0,		AARCH64_FEATURE (V8_3A)) /* SEL2 */
!   SYSREG ("cnthps_cval_el2",	CPENC (3,4,14,5,2),	0,		AARCH64_FEATURE (V8_3A)) /* SEL2 */
!   SYSREG ("cnthps_tval_el2",	CPENC (3,4,14,5,0),	0,		AARCH64_FEATURE (V8_3A)) /* SEL2 */
!   SYSREG ("cnthv_ctl_el2",	CPENC (3,4,14,3,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cnthv_cval_el2",	CPENC (3,4,14,3,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cnthv_tval_el2",	CPENC (3,4,14,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cnthvs_ctl_el2",	CPENC (3,4,14,4,1),	0,		AARCH64_FEATURE (V8_3A)) /* SEL2 */
!   SYSREG ("cnthvs_cval_el2",	CPENC (3,4,14,4,2),	0,		AARCH64_FEATURE (V8_3A)) /* SEL2 */
!   SYSREG ("cnthvs_tval_el2",	CPENC (3,4,14,4,0),	0,		AARCH64_FEATURE (V8_3A)) /* SEL2 */
!   SYSREG ("cntkctl_el1",	CPENC (3,0,14,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntkctl_el12",	CPENC (3,5,14,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntp_ctl_el0",	CPENC (3,3,14,2,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntp_ctl_el02",	CPENC (3,5,14,2,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntp_cval_el0",	CPENC (3,3,14,2,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntp_cval_el02",	CPENC (3,5,14,2,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntp_tval_el0",	CPENC (3,3,14,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntp_tval_el02",	CPENC (3,5,14,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntpct_el0",		CPENC (3,3,14,0,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("cntpctss_el0",	CPENC (3,3,14,0,5),	F_REG_READ,	AARCH64_FEATURE (V8_5A)) /* ECV */
!   SYSREG ("cntpoff_el2",	CPENC (3,4,14,0,6),	0,		AARCH64_FEATURE (V8_5A)) /* ECV_POFF */
!   SYSREG ("cntps_ctl_el1",	CPENC (3,7,14,2,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntps_cval_el1",	CPENC (3,7,14,2,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntps_tval_el1",	CPENC (3,7,14,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntv_ctl_el0",	CPENC (3,3,14,3,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntv_ctl_el02",	CPENC (3,5,14,3,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntv_cval_el0",	CPENC (3,3,14,3,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntv_cval_el02",	CPENC (3,5,14,3,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntv_tval_el0",	CPENC (3,3,14,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntv_tval_el02",	CPENC (3,5,14,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cntvct_el0",		CPENC (3,3,14,0,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("cntvctss_el0",	CPENC (3,3,14,0,6),	F_REG_READ,	AARCH64_FEATURE (V8_5A)) /* ECV */
!   SYSREG ("cntvoff_el2",	CPENC (3,4,14,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("contextidr_el1",	CPENC (3,0,13,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("contextidr_el12",	CPENC (3,5,13,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("contextidr_el2",	CPENC (3,4,13,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cpacr_el1",		CPENC (3,0,1,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cpacr_el12",		CPENC (3,5,1,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cpacralias_el1",	CPENC (3,0,1,4,4),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("cpacrmask_el1",	CPENC (3,0,1,4,2),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("cpacrmask_el12",	CPENC (3,5,1,4,2),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("cptr_el2",		CPENC (3,4,1,1,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cptr_el3",		CPENC (3,6,1,1,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("cptrmask_el2",	CPENC (3,4,1,4,2),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("csselr_el1",		CPENC (3,2,0,0,0),	0,		AARCH64_NO_FEATURES) 
!   SYSREG ("ctr_el0",		CPENC (3,3,0,0,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("currentel",		CPENC (3,0,4,2,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("dacr32_el2",		CPENC (3,4,3,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("daif",		CPENC (3,3,4,2,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgauthstatus_el1",	CPENC (2,0,7,14,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr0_el1",	CPENC (2,0,0,0,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr10_el1",	CPENC (2,0,0,10,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr11_el1",	CPENC (2,0,0,11,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr12_el1",	CPENC (2,0,0,12,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr13_el1",	CPENC (2,0,0,13,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr14_el1",	CPENC (2,0,0,14,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr15_el1",	CPENC (2,0,0,15,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr1_el1",	CPENC (2,0,0,1,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr2_el1",	CPENC (2,0,0,2,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr3_el1",	CPENC (2,0,0,3,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr4_el1",	CPENC (2,0,0,4,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr5_el1",	CPENC (2,0,0,5,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr6_el1",	CPENC (2,0,0,6,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr7_el1",	CPENC (2,0,0,7,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr8_el1",	CPENC (2,0,0,8,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbcr9_el1",	CPENC (2,0,0,9,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr0_el1",	CPENC (2,0,0,0,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr10_el1",	CPENC (2,0,0,10,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr11_el1",	CPENC (2,0,0,11,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr12_el1",	CPENC (2,0,0,12,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr13_el1",	CPENC (2,0,0,13,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr14_el1",	CPENC (2,0,0,14,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr15_el1",	CPENC (2,0,0,15,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr1_el1",	CPENC (2,0,0,1,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr2_el1",	CPENC (2,0,0,2,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr3_el1",	CPENC (2,0,0,3,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr4_el1",	CPENC (2,0,0,4,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr5_el1",	CPENC (2,0,0,5,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr6_el1",	CPENC (2,0,0,6,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr7_el1",	CPENC (2,0,0,7,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr8_el1",	CPENC (2,0,0,8,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgbvr9_el1",	CPENC (2,0,0,9,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgclaimclr_el1",	CPENC (2,0,7,9,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgclaimset_el1",	CPENC (2,0,7,8,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgdtr_el0",		CPENC (2,3,0,4,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgdtrrx_el0",	CPENC (2,3,0,5,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("dbgdtrtx_el0",	CPENC (2,3,0,5,0),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("dbgprcr_el1",	CPENC (2,0,1,4,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgvcr32_el2",	CPENC (2,4,0,7,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr0_el1",	CPENC (2,0,0,0,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr10_el1",	CPENC (2,0,0,10,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr11_el1",	CPENC (2,0,0,11,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr12_el1",	CPENC (2,0,0,12,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr13_el1",	CPENC (2,0,0,13,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr14_el1",	CPENC (2,0,0,14,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr15_el1",	CPENC (2,0,0,15,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr1_el1",	CPENC (2,0,0,1,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr2_el1",	CPENC (2,0,0,2,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr3_el1",	CPENC (2,0,0,3,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr4_el1",	CPENC (2,0,0,4,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr5_el1",	CPENC (2,0,0,5,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr6_el1",	CPENC (2,0,0,6,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr7_el1",	CPENC (2,0,0,7,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr8_el1",	CPENC (2,0,0,8,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwcr9_el1",	CPENC (2,0,0,9,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr0_el1",	CPENC (2,0,0,0,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr10_el1",	CPENC (2,0,0,10,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr11_el1",	CPENC (2,0,0,11,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr12_el1",	CPENC (2,0,0,12,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr13_el1",	CPENC (2,0,0,13,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr14_el1",	CPENC (2,0,0,14,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr15_el1",	CPENC (2,0,0,15,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr1_el1",	CPENC (2,0,0,1,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr2_el1",	CPENC (2,0,0,2,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr3_el1",	CPENC (2,0,0,3,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr4_el1",	CPENC (2,0,0,4,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr5_el1",	CPENC (2,0,0,5,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr6_el1",	CPENC (2,0,0,6,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr7_el1",	CPENC (2,0,0,7,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr8_el1",	CPENC (2,0,0,8,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dbgwvr9_el1",	CPENC (2,0,0,9,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dczid_el0",		CPENC (3,3,0,0,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("disr_el1",		CPENC (3,0,12,1,1),	0,		AARCH64_FEATURE (RAS))
!   SYSREG ("dit",		CPENC (3,3,4,2,5),	0,		AARCH64_FEATURE (V8_3A)) /* DIT */
!   SYSREG ("dlr_el0",		CPENC (3,3,4,5,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("dspsr_el0",		CPENC (3,3,4,5,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("elr_el1",		CPENC (3,0,4,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("elr_el12",		CPENC (3,5,4,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("elr_el2",		CPENC (3,4,4,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("elr_el3",		CPENC (3,6,4,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("erridr_el1",		CPENC (3,0,5,3,0),	F_REG_READ,	AARCH64_FEATURE (RAS))
!   SYSREG ("errselr_el1",	CPENC (3,0,5,3,1),	0,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxaddr_el1",	CPENC (3,0,5,4,3),	0,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxctlr_el1",	CPENC (3,0,5,4,1),	0,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxfr_el1",		CPENC (3,0,5,4,0),	F_REG_READ,	AARCH64_FEATURE (RAS))
!   SYSREG ("erxgsr_el1",		CPENC (3,0,5,3,2),	F_REG_READ,	AARCH64_FEATURE (RASv2))
!   SYSREG ("erxmisc0_el1",	CPENC (3,0,5,5,0),	0,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxmisc1_el1",	CPENC (3,0,5,5,1),	0,		AARCH64_FEATURE (RAS))
!   SYSREG ("erxmisc2_el1",	CPENC (3,0,5,5,2),	0,		AARCH64_FEATURE (RAS)) /* RASv1p1 */
!   SYSREG ("erxmisc3_el1",	CPENC (3,0,5,5,3),	0,		AARCH64_FEATURE (RAS)) /* RASv1p1 */
!   SYSREG ("erxpfgcdn_el1",	CPENC (3,0,5,4,6),	0,		AARCH64_FEATURE (RAS)) /* RASv1p1 */
!   SYSREG ("erxpfgctl_el1",	CPENC (3,0,5,4,5),	0,		AARCH64_FEATURE (RAS)) /* RASv1p1 */
!   SYSREG ("erxpfgf_el1",	CPENC (3,0,5,4,4),	F_REG_READ,	AARCH64_FEATURE (RAS)) /* RASv1p1 */
!   SYSREG ("erxstatus_el1",	CPENC (3,0,5,4,2),	0,		AARCH64_FEATURE (RAS))
!   SYSREG ("esr_el1",		CPENC (3,0,5,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("esr_el12",		CPENC (3,5,5,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("esr_el2",		CPENC (3,4,5,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("esr_el3",		CPENC (3,6,5,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("far_el1",		CPENC (3,0,6,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("far_el12",		CPENC (3,5,6,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("far_el2",		CPENC (3,4,6,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("far_el3",		CPENC (3,6,6,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("fgwte3_el3",		CPENC (3,6,1,1,5),	0,		AARCH64_FEATURE (V9_4A)) /* FGWTE3 */
!   SYSREG ("fpcr",		CPENC (3,3,4,4,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("fpexc32_el2",	CPENC (3,4,5,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("fpmr",		CPENC (3,3,4,4,2),	0,		AARCH64_FEATURE (FP8))
!   SYSREG ("fpsr",		CPENC (3,3,4,4,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("gcr_el1",		CPENC (3,0,1,0,6),	0,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("gcscr_el1",		CPENC (3,0,2,5,0),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcscr_el12",		CPENC (3,5,2,5,0),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcscr_el2",		CPENC (3,4,2,5,0),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcscr_el3",		CPENC (3,6,2,5,0),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcscre0_el1",	CPENC (3,0,2,5,2),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcspr_el0",		CPENC (3,3,2,5,1),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcspr_el1",		CPENC (3,0,2,5,1),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcspr_el12",		CPENC (3,5,2,5,1),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcspr_el2",		CPENC (3,4,2,5,1),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gcspr_el3",		CPENC (3,6,2,5,1),    	0,		AARCH64_FEATURE (GCS))
!   SYSREG ("gmid_el1",		CPENC (3,1,0,0,4),	F_REG_READ,	AARCH64_FEATURE (MEMTAG))
!   SYSREG ("gpcbw_el3",		CPENC (3,6,2,1,5),	0,		AARCH64_FEATURE (V9_5A)) /* RME_GPC3 */
!   SYSREG ("gpccr_el3",		CPENC (3,6,2,1,6),	0,		AARCH64_FEATURE (V9_1A)) /* RME */
!   SYSREG ("gptbr_el3",		CPENC (3,6,2,1,4),	0,		AARCH64_FEATURE (V9_1A)) /* RME */
!   SYSREG ("hacdbsbr_el2",	CPENC (3,4,2,3,4),	0,		AARCH64_FEATURE (V9_4A)) /* HACDBS */
!   SYSREG ("hacdbscons_el2",	CPENC (3,4,2,3,5),	0,		AARCH64_FEATURE (V9_4A)) /* HACDBS */
!   SYSREG ("hacr_el2",		CPENC (3,4,1,1,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("hafgrtr_el2",	CPENC (3,4,3,1,6),	0,		AARCH64_FEATURE (V8_5A)) /* AMUv1 && FGT */
!   SYSREG ("hcr_el2",		CPENC (3,4,1,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("hcrx_el2",		CPENC (3,4,1,2,2),	0,		AARCH64_FEATURE (V8_6A)) /* HCX */
!   SYSREG ("hdbssbr_el2",	CPENC (3,4,2,3,2),	0,		AARCH64_FEATURE (V9_4A)) /* HDBSS */
!   SYSREG ("hdbssprod_el2",	CPENC (3,4,2,3,3),	0,		AARCH64_FEATURE (V9_4A)) /* HDBSS */
!   SYSREG ("hdfgrtr_el2",	CPENC (3,4,3,1,4),	0,		AARCH64_FEATURE (V8_5A)) /* FGT */
!   SYSREG ("hdfgrtr2_el2",	CPENC (3,4,3,1,0),	0,		AARCH64_FEATURE (V8_8A)) /* FGT2 */
!   SYSREG ("hdfgwtr_el2",	CPENC (3,4,3,1,5),	0,		AARCH64_FEATURE (V8_5A)) /* FGT */
!   SYSREG ("hdfgwtr2_el2",	CPENC (3,4,3,1,1),	0,		AARCH64_FEATURE (V8_8A)) /* FGT2 */
!   SYSREG ("hfgitr_el2",		CPENC (3,4,1,1,6),	0,		AARCH64_FEATURE (V8_5A)) /* FGT */
!   SYSREG ("hfgitr2_el2",	CPENC (3,4,3,1,7),	0,		AARCH64_FEATURE (V8_8A)) /* FGT2 */
!   SYSREG ("hfgrtr_el2",		CPENC (3,4,1,1,4),	0,		AARCH64_FEATURE (V8_5A)) /* FGT */
!   SYSREG ("hfgrtr2_el2",	CPENC (3,4,3,1,2),	0,		AARCH64_FEATURE (V8_8A)) /* FGT2 */
!   SYSREG ("hfgwtr_el2",		CPENC (3,4,1,1,5),	0,		AARCH64_FEATURE (V8_5A)) /* FGT */
!   SYSREG ("hfgwtr2_el2",	CPENC (3,4,3,1,3),	0,		AARCH64_FEATURE (V8_8A)) /* FGT2 */
!   SYSREG ("hpfar_el2",		CPENC (3,4,6,0,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("hstr_el2",		CPENC (3,4,1,1,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap0r0_el1",	CPENC (3,0,12,8,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap0r1_el1",	CPENC (3,0,12,8,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap0r2_el1",	CPENC (3,0,12,8,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap0r3_el1",	CPENC (3,0,12,8,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap1r0_el1",	CPENC (3,0,12,9,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap1r1_el1",	CPENC (3,0,12,9,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap1r2_el1",	CPENC (3,0,12,9,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ap1r3_el1",	CPENC (3,0,12,9,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_asgi1r_el1",	CPENC (3,0,12,11,6),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_bpr0_el1",	CPENC (3,0,12,8,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_bpr1_el1",	CPENC (3,0,12,12,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ctlr_el1",	CPENC (3,0,12,12,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_ctlr_el3",	CPENC (3,6,12,12,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_dir_el1",	CPENC (3,0,12,11,1),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_eoir0_el1",	CPENC (3,0,12,8,1),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_eoir1_el1",	CPENC (3,0,12,12,1),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_hppir0_el1",	CPENC (3,0,12,8,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_hppir1_el1",	CPENC (3,0,12,12,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_iar0_el1",	CPENC (3,0,12,8,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_iar1_el1",	CPENC (3,0,12,12,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_igrpen0_el1",	CPENC (3,0,12,12,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_igrpen1_el1",	CPENC (3,0,12,12,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_igrpen1_el3",	CPENC (3,6,12,12,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_nmiar1_el1",	CPENC (3,0,12,9,5),	F_REG_READ,	AARCH64_FEATURE (V8_7A)) /* GICv3_NMI */
!   SYSREG ("icc_pmr_el1",	CPENC (3,0,4,6,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_rpr_el1",	CPENC (3,0,12,11,3),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_sgi0r_el1",	CPENC (3,0,12,11,7),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_sgi1r_el1",	CPENC (3,0,12,11,5),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("icc_sre_el1",	CPENC (3,0,12,12,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_sre_el2",	CPENC (3,4,12,9,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("icc_sre_el3",	CPENC (3,6,12,12,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap0r0_el2",	CPENC (3,4,12,8,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap0r1_el2",	CPENC (3,4,12,8,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap0r2_el2",	CPENC (3,4,12,8,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap0r3_el2",	CPENC (3,4,12,8,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap1r0_el2",	CPENC (3,4,12,9,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap1r1_el2",	CPENC (3,4,12,9,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap1r2_el2",	CPENC (3,4,12,9,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_ap1r3_el2",	CPENC (3,4,12,9,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_eisr_el2",	CPENC (3,4,12,11,3),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("ich_elrsr_el2",	CPENC (3,4,12,11,5),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("ich_hcr_el2",	CPENC (3,4,12,11,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr0_el2",	CPENC (3,4,12,12,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr10_el2",	CPENC (3,4,12,13,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr11_el2",	CPENC (3,4,12,13,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr12_el2",	CPENC (3,4,12,13,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr13_el2",	CPENC (3,4,12,13,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr14_el2",	CPENC (3,4,12,13,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr15_el2",	CPENC (3,4,12,13,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr1_el2",	CPENC (3,4,12,12,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr2_el2",	CPENC (3,4,12,12,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr3_el2",	CPENC (3,4,12,12,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr4_el2",	CPENC (3,4,12,12,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr5_el2",	CPENC (3,4,12,12,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr6_el2",	CPENC (3,4,12,12,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr7_el2",	CPENC (3,4,12,12,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr8_el2",	CPENC (3,4,12,13,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_lr9_el2",	CPENC (3,4,12,13,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_misr_el2",	CPENC (3,4,12,11,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("ich_vmcr_el2",	CPENC (3,4,12,11,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ich_vtr_el2",	CPENC (3,4,12,11,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64afr0_el1",	CPENC (3,0,0,5,4),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64afr1_el1",	CPENC (3,0,0,5,5),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64dfr0_el1",	CPENC (3,0,0,5,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64dfr1_el1",	CPENC (3,0,0,5,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64dfr2_el1",	CPENC (3,0,0,5,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64fpfr0_el1",	CPENC (3,0,0,4,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64isar0_el1",	CPENC (3,0,0,6,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64isar1_el1",	CPENC (3,0,0,6,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64isar2_el1",	CPENC (3,0,0,6,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64isar3_el1",	CPENC (3,0,0,6,3),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr0_el1",	CPENC (3,0,0,7,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr1_el1",	CPENC (3,0,0,7,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr2_el1",	CPENC (3,0,0,7,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr3_el1",	CPENC (3,0,0,7,3),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64mmfr4_el1",	CPENC (3,0,0,7,4),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64pfr0_el1",	CPENC (3,0,0,4,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64pfr1_el1",	CPENC (3,0,0,4,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64pfr2_el1",	CPENC (3,0,0,4,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64smfr0_el1",	CPENC (3,0,0,4,5),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_aa64zfr0_el1",	CPENC (3,0,0,4,4),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_afr0_el1",	CPENC (3,0,0,1,3),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_dfr0_el1",	CPENC (3,0,0,1,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_dfr1_el1",	CPENC (3,0,0,3,5),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_isar0_el1",	CPENC (3,0,0,2,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_isar1_el1",	CPENC (3,0,0,2,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_isar2_el1",	CPENC (3,0,0,2,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_isar3_el1",	CPENC (3,0,0,2,3),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_isar4_el1",	CPENC (3,0,0,2,4),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_isar5_el1",	CPENC (3,0,0,2,5),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_isar6_el1",	CPENC (3,0,0,2,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr0_el1",	CPENC (3,0,0,1,4),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr1_el1",	CPENC (3,0,0,1,5),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr2_el1",	CPENC (3,0,0,1,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr3_el1",	CPENC (3,0,0,1,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr4_el1",	CPENC (3,0,0,2,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_mmfr5_el1",	CPENC (3,0,0,3,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_pfr0_el1",	CPENC (3,0,0,1,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_pfr1_el1",	CPENC (3,0,0,1,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("id_pfr2_el1",	CPENC (3,0,0,3,4),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("ifsr32_el2",		CPENC (3,4,5,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("isr_el1",		CPENC (3,0,12,1,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("lorc_el1",		CPENC (3,0,10,4,3),	0,		AARCH64_FEATURE (LOR))
!   SYSREG ("lorea_el1",		CPENC (3,0,10,4,1),	0,		AARCH64_FEATURE (LOR))
!   SYSREG ("lorid_el1",		CPENC (3,0,10,4,7),	F_REG_READ,	AARCH64_FEATURE (LOR))
!   SYSREG ("lorn_el1",		CPENC (3,0,10,4,2),	0,		AARCH64_FEATURE (LOR))
!   SYSREG ("lorsa_el1",		CPENC (3,0,10,4,0),	0,		AARCH64_FEATURE (LOR))
!   SYSREG ("mair_el1",		CPENC (3,0,10,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("mair_el12",		CPENC (3,5,10,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("mair_el2",		CPENC (3,4,10,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("mair_el3",		CPENC (3,6,10,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("mair2_el1",		CPENC (3,0,10,2,1),	0,		AARCH64_FEATURE (V8_8A)) /* AIE */
!   SYSREG ("mair2_el12",		CPENC (3,5,10,2,1),	0,		AARCH64_FEATURE (V8_8A)) /* AIE */
!   SYSREG ("mair2_el2",		CPENC (3,4,10,1,1),	0,		AARCH64_FEATURE (V8_8A)) /* AIE */
!   SYSREG ("mair2_el3",		CPENC (3,6,10,1,1),	0,		AARCH64_FEATURE (V8_8A)) /* AIE */
!   SYSREG ("mdccint_el1",	CPENC (2,0,0,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("mdccsr_el0",		CPENC (2,3,0,1,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("mdcr_el2",		CPENC (3,4,1,1,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("mdcr_el3",		CPENC (3,6,1,3,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("mdrar_el1",		CPENC (2,0,1,0,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("mdscr_el1",		CPENC (2,0,0,2,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("mdselr_el1",		CPENC (2,0,0,4,2),	0,		AARCH64_FEATURE (V8_8A)) /* Debugv8p9 */
!   SYSREG ("mdstepop_el1",	CPENC (2,0,0,5,2),	0,		AARCH64_FEATURE (V9_4A)) /* STEP2 */
!   SYSREG ("mecid_a0_el2",	CPENC (3,4,10,8,1),	0,		AARCH64_FEATURE (V9_2A)) /* MEC */
!   SYSREG ("mecid_a1_el2",	CPENC (3,4,10,8,3),	0,		AARCH64_FEATURE (V9_2A)) /* MEC */
!   SYSREG ("mecid_p0_el2",	CPENC (3,4,10,8,0),	0,		AARCH64_FEATURE (V9_2A)) /* MEC */
!   SYSREG ("mecid_p1_el2",	CPENC (3,4,10,8,2),	0,		AARCH64_FEATURE (V9_2A)) /* MEC */
!   SYSREG ("mecid_rl_a_el3",	CPENC (3,6,10,10,1),	0,		AARCH64_FEATURE (V9_2A)) /* MEC */
!   SYSREG ("mecidr_el2",		CPENC (3,4,10,8,7),	F_REG_READ,	AARCH64_FEATURE (V9_2A)) /* MEC */
!   SYSREG ("mfar_el3",		CPENC (3,6,6,0,5),	0,		AARCH64_FEATURE (V8_6A)) /* PFAR=>8.8 || RME=>9.1 */
!   SYSREG ("midr_el1",		CPENC (3,0,0,0,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("mpam0_el1",		CPENC (3,0,10,5,1),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpam1_el1",		CPENC (3,0,10,5,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpam1_el12",		CPENC (3,5,10,5,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpam2_el2",		CPENC (3,4,10,5,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpam3_el3",		CPENC (3,6,10,5,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpambw0_el1",	CPENC (3,0,10,5,5),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
!   SYSREG ("mpambw1_el1",	CPENC (3,0,10,5,4),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
!   SYSREG ("mpambw1_el12",	CPENC (3,5,10,5,4),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
!   SYSREG ("mpambw2_el2",	CPENC (3,4,10,5,4),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
!   SYSREG ("mpambw3_el3",	CPENC (3,6,10,5,4),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
!   SYSREG ("mpambwcap_el2",	CPENC (3,4,10,5,6),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
!   SYSREG ("mpambwidr_el1",	CPENC (3,0,10,4,5),	F_REG_READ,	AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
!   SYSREG ("mpambwsm_el1",	CPENC (3,0,10,5,7),	0,		AARCH64_FEATURES (2, SME, V9_3A)) /* SME && MPAM_PE_BW_CTRL */
!   SYSREG ("mpamhcr_el2",	CPENC (3,4,10,4,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamidr_el1",	CPENC (3,0,10,4,4),	F_REG_READ,	AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamsm_el1",		CPENC (3,0,10,5,3),	0,		AARCH64_FEATURES (2, SME, V8_2A)) /* SME && MPAM */
!   SYSREG ("mpamvpm0_el2",	CPENC (3,4,10,6,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamvpm1_el2",	CPENC (3,4,10,6,1),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamvpm2_el2",	CPENC (3,4,10,6,2),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamvpm3_el2",	CPENC (3,4,10,6,3),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamvpm4_el2",	CPENC (3,4,10,6,4),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamvpm5_el2",	CPENC (3,4,10,6,5),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamvpm6_el2",	CPENC (3,4,10,6,6),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamvpm7_el2",	CPENC (3,4,10,6,7),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpamvpmv_el2",	CPENC (3,4,10,4,1),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
!   SYSREG ("mpidr_el1",		CPENC (3,0,0,0,5),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("mpuir_el1",		CPENC (3,0,0,0,4),	F_REG_READ,	AARCH64_FEATURE (V8R))
!   SYSREG ("mpuir_el2",		CPENC (3,4,0,0,4),	F_REG_READ,	AARCH64_FEATURE (V8R))
!   SYSREG ("mvfr0_el1",		CPENC (3,0,0,3,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("mvfr1_el1",		CPENC (3,0,0,3,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("mvfr2_el1",		CPENC (3,0,0,3,2),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("nzcv",		CPENC (3,3,4,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("osdlr_el1",		CPENC (2,0,1,3,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("osdtrrx_el1",	CPENC (2,0,0,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("osdtrtx_el1",	CPENC (2,0,0,3,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("oseccr_el1",		CPENC (2,0,0,6,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("oslar_el1",		CPENC (2,0,1,0,4),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("oslsr_el1",		CPENC (2,0,1,1,4),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("pan",		CPENC (3,0,4,2,3),	0,		AARCH64_FEATURE (PAN))
!   SYSREG ("par_el1",		CPENC (3,0,7,4,0),	F_REG_128,	AARCH64_NO_FEATURES)
!   SYSREG ("pfar_el1",		CPENC (3,0,6,0,5),      0,		AARCH64_FEATURE (V8_8A)) /* PFAR */
!   SYSREG ("pfar_el12",		CPENC (3,5,6,0,5),      0,		AARCH64_FEATURE (V8_8A)) /* PFAR */
!   SYSREG ("pfar_el2",		CPENC (3,4,6,0,5),      0,		AARCH64_FEATURE (V8_8A)) /* PFAR */
!   SYSREG ("pir_el1",		CPENC (3,0,10,2,3),	0,		AARCH64_FEATURE (V8_8A)) /* S1PIE */
!   SYSREG ("pir_el12",		CPENC (3,5,10,2,3),	0,		AARCH64_FEATURE (V8_8A)) /* S1PIE */
!   SYSREG ("pir_el2",		CPENC (3,4,10,2,3),	0,		AARCH64_FEATURE (V8_8A)) /* S1PIE */
!   SYSREG ("pir_el3",		CPENC (3,6,10,2,3),	0,		AARCH64_FEATURE (V8_8A)) /* S1PIE */
!   SYSREG ("pire0_el1",		CPENC (3,0,10,2,2),	0,		AARCH64_FEATURE (V8_8A)) /* S1PIE */
!   SYSREG ("pire0_el12",		CPENC (3,5,10,2,2),	0,		AARCH64_FEATURE (V8_8A)) /* S1PIE */
!   SYSREG ("pire0_el2",		CPENC (3,4,10,2,2),	0,		AARCH64_FEATURE (V8_8A)) /* S1PIE */
!   SYSREG ("pm",			CPENC (3,0,4,3,1),	0,		AARCH64_FEATURE (V9_3A)) /* EBEP */
!   SYSREG ("pmbidr_el1",		CPENC (3,0,9,10,7),	F_REG_READ,	AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmblimitr_el1",	CPENC (3,0,9,10,0),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmbmar_el1",		CPENC (3,0,9,10,5),	0,		AARCH64_FEATURES (2, PROFILE, V9_5A)) /* SPE_nVM */
!   SYSREG ("pmbptr_el1",		CPENC (3,0,9,10,1),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmbsr_el1",		CPENC (3,0,9,10,3),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmbsr_el12",		CPENC (3,5,9,10,3),	0,		AARCH64_FEATURES (2, V9_5A, PROFILE)) /* SPE_EXC */
!   SYSREG ("pmbsr_el2",		CPENC (3,4,9,10,3),	0,		AARCH64_FEATURES (2, V9_5A, PROFILE)) /* SPE_EXC */
!   SYSREG ("pmbsr_el3",		CPENC (3,6,9,10,3),	0,		AARCH64_FEATURES (2, V9_5A, PROFILE)) /* SPE_EXC */
!   SYSREG ("pmccfiltr_el0",	CPENC (3,3,14,15,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmccntr_el0",	CPENC (3,3,9,13,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmccntsvr_el1",	CPENC (2,0,14,11,7),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmceid0_el0",	CPENC (3,3,9,12,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("pmceid1_el0",	CPENC (3,3,9,12,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("pmcntenclr_el0",	CPENC (3,3,9,12,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmcntenset_el0",	CPENC (3,3,9,12,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmcr_el0",		CPENC (3,3,9,12,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmecr_el1",		CPENC (3,0,9,14,5),	0,		AARCH64_FEATURE (V8_8A)) /* EBEP || PMUv3_SS */
!   SYSREG ("pmevcntr0_el0",	CPENC (3,3,14,8,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr10_el0",	CPENC (3,3,14,9,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr11_el0",	CPENC (3,3,14,9,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr12_el0",	CPENC (3,3,14,9,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr13_el0",	CPENC (3,3,14,9,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr14_el0",	CPENC (3,3,14,9,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr15_el0",	CPENC (3,3,14,9,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr16_el0",	CPENC (3,3,14,10,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr17_el0",	CPENC (3,3,14,10,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr18_el0",	CPENC (3,3,14,10,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr19_el0",	CPENC (3,3,14,10,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr1_el0",	CPENC (3,3,14,8,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr20_el0",	CPENC (3,3,14,10,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr21_el0",	CPENC (3,3,14,10,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr22_el0",	CPENC (3,3,14,10,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr23_el0",	CPENC (3,3,14,10,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr24_el0",	CPENC (3,3,14,11,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr25_el0",	CPENC (3,3,14,11,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr26_el0",	CPENC (3,3,14,11,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr27_el0",	CPENC (3,3,14,11,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr28_el0",	CPENC (3,3,14,11,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr29_el0",	CPENC (3,3,14,11,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr2_el0",	CPENC (3,3,14,8,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr30_el0",	CPENC (3,3,14,11,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr3_el0",	CPENC (3,3,14,8,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr4_el0",	CPENC (3,3,14,8,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr5_el0",	CPENC (3,3,14,8,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr6_el0",	CPENC (3,3,14,8,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr7_el0",	CPENC (3,3,14,8,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr8_el0",	CPENC (3,3,14,9,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntr9_el0",	CPENC (3,3,14,9,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevcntsvr0_el1",	CPENC (2,0,14,8,0),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr10_el1",	CPENC (2,0,14,9,2),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr11_el1",	CPENC (2,0,14,9,3),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr12_el1",	CPENC (2,0,14,9,4),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr13_el1",	CPENC (2,0,14,9,5),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr14_el1",	CPENC (2,0,14,9,6),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr15_el1",	CPENC (2,0,14,9,7),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr16_el1",	CPENC (2,0,14,10,0),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr17_el1",	CPENC (2,0,14,10,1),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr18_el1",	CPENC (2,0,14,10,2),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr19_el1",	CPENC (2,0,14,10,3),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr1_el1",	CPENC (2,0,14,8,1),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr20_el1",	CPENC (2,0,14,10,4),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr21_el1",	CPENC (2,0,14,10,5),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr22_el1",	CPENC (2,0,14,10,6),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr23_el1",	CPENC (2,0,14,10,7),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr24_el1",	CPENC (2,0,14,11,0),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr25_el1",	CPENC (2,0,14,11,1),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr26_el1",	CPENC (2,0,14,11,2),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr27_el1",	CPENC (2,0,14,11,3),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr28_el1",	CPENC (2,0,14,11,4),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr29_el1",	CPENC (2,0,14,11,5),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr2_el1",	CPENC (2,0,14,8,2),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr30_el1",	CPENC (2,0,14,11,6),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr3_el1",	CPENC (2,0,14,8,3),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr4_el1",	CPENC (2,0,14,8,4),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr5_el1",	CPENC (2,0,14,8,5),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr6_el1",	CPENC (2,0,14,8,6),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr7_el1",	CPENC (2,0,14,8,7),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr8_el1",	CPENC (2,0,14,9,0),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevcntsvr9_el1",	CPENC (2,0,14,9,1),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmevtyper0_el0",	CPENC (3,3,14,12,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper10_el0",	CPENC (3,3,14,13,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper11_el0",	CPENC (3,3,14,13,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper12_el0",	CPENC (3,3,14,13,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper13_el0",	CPENC (3,3,14,13,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper14_el0",	CPENC (3,3,14,13,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper15_el0",	CPENC (3,3,14,13,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper16_el0",	CPENC (3,3,14,14,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper17_el0",	CPENC (3,3,14,14,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper18_el0",	CPENC (3,3,14,14,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper19_el0",	CPENC (3,3,14,14,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper1_el0",	CPENC (3,3,14,12,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper20_el0",	CPENC (3,3,14,14,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper21_el0",	CPENC (3,3,14,14,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper22_el0",	CPENC (3,3,14,14,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper23_el0",	CPENC (3,3,14,14,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper24_el0",	CPENC (3,3,14,15,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper25_el0",	CPENC (3,3,14,15,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper26_el0",	CPENC (3,3,14,15,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper27_el0",	CPENC (3,3,14,15,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper28_el0",	CPENC (3,3,14,15,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper29_el0",	CPENC (3,3,14,15,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper2_el0",	CPENC (3,3,14,12,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper30_el0",	CPENC (3,3,14,15,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper3_el0",	CPENC (3,3,14,12,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper4_el0",	CPENC (3,3,14,12,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper5_el0",	CPENC (3,3,14,12,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper6_el0",	CPENC (3,3,14,12,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper7_el0",	CPENC (3,3,14,12,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper8_el0",	CPENC (3,3,14,13,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmevtyper9_el0",	CPENC (3,3,14,13,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmiar_el1",		CPENC (3,0,9,14,7),	0,		AARCH64_FEATURE (V9_3A)) /* SEBEP */
!   SYSREG ("pmicfiltr_el0",	CPENC (3,3,9,6,0),	0,		AARCH64_FEATURE (V8_8A)) /* PMUv3_ICNTR */
!   SYSREG ("pmicntr_el0",	CPENC (3,3,9,4,0),	0,		AARCH64_FEATURE (V8_8A)) /* PMUv3_ICNTR */
!   SYSREG ("pmicntsvr_el1",	CPENC (2,0,14,12,0),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* PMUv3_ICNTR && PMUv3_SS */
!   SYSREG ("pmintenclr_el1",	CPENC (3,0,9,14,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmintenset_el1",	CPENC (3,0,9,14,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmmir_el1",		CPENC (3,0,9,14,6),	F_REG_READ,	AARCH64_FEATURE (V8_3A)) /* PMUv3p4 */
!   SYSREG ("pmovsclr_el0",	CPENC (3,3,9,12,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmovsset_el0",	CPENC (3,3,9,14,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmscr_el1",		CPENC (3,0,9,9,0),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmscr_el12",		CPENC (3,5,9,9,0),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmscr_el2",		CPENC (3,4,9,9,0),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsdsfr_el1",	CPENC (3,0,9,10,4),	0,		AARCH64_FEATURES (2, PROFILE, V8_8A)) /* SPE_FDS */
!   SYSREG ("pmselr_el0",		CPENC (3,3,9,12,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmsevfr_el1",	CPENC (3,0,9,9,5),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsfcr_el1",		CPENC (3,0,9,9,4),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsicr_el1",		CPENC (3,0,9,9,2),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsidr_el1",		CPENC (3,0,9,9,7),	F_REG_READ,	AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsirr_el1",		CPENC (3,0,9,9,3),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmslatfr_el1",	CPENC (3,0,9,9,6),	0,		AARCH64_FEATURE (PROFILE))
!   SYSREG ("pmsnevfr_el1",	CPENC (3,0,9,9,1),	0,		AARCH64_FEATURES (2, PROFILE, V8_6A)) /* SPE_FnE */
!   SYSREG ("pmsscr_el1",		CPENC (3,0,9,13,3),	0,		AARCH64_FEATURE (V8_8A)) /* PMUv3_SS */
!   SYSREG ("pmswinc_el0",	CPENC (3,3,9,12,4),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("pmuacr_el1",		CPENC (3,0,9,14,4),	0,		AARCH64_FEATURE (V8_8A)) /* PMUv3p9 */
!   SYSREG ("pmuserenr_el0",	CPENC (3,3,9,14,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmxevcntr_el0",	CPENC (3,3,9,13,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmxevtyper_el0",	CPENC (3,3,9,13,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("pmzr_el0",		CPENC (3,3,9,13,4),	F_REG_WRITE,	AARCH64_FEATURE (V8_8A)) /* PMUv3p9 */
!   SYSREG ("por_el0",		CPENC (3,3,10,2,4),	0,		AARCH64_FEATURE (V8_8A)) /* S1POE */
!   SYSREG ("por_el1",		CPENC (3,0,10,2,4),	0,		AARCH64_FEATURE (V8_8A)) /* S1POE */
!   SYSREG ("por_el12",		CPENC (3,5,10,2,4),	0,		AARCH64_FEATURE (V8_8A)) /* S1POE */
!   SYSREG ("por_el2",		CPENC (3,4,10,2,4),	0,		AARCH64_FEATURE (V8_8A)) /* S1POE */
!   SYSREG ("por_el3",		CPENC (3,6,10,2,4),	0,		AARCH64_FEATURE (V8_8A)) /* S1POE */
!   SYSREG ("prbar10_el1",	CPENC (3,0,6,13,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar10_el2",	CPENC (3,4,6,13,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar11_el1",	CPENC (3,0,6,13,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar11_el2",	CPENC (3,4,6,13,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar12_el1",	CPENC (3,0,6,14,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar12_el2",	CPENC (3,4,6,14,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar13_el1",	CPENC (3,0,6,14,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar13_el2",	CPENC (3,4,6,14,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar14_el1",	CPENC (3,0,6,15,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar14_el2",	CPENC (3,4,6,15,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar15_el1",	CPENC (3,0,6,15,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar15_el2",	CPENC (3,4,6,15,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar1_el1",		CPENC (3,0,6,8,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar1_el2",		CPENC (3,4,6,8,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar2_el1",		CPENC (3,0,6,9,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar2_el2",		CPENC (3,4,6,9,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar3_el1",		CPENC (3,0,6,9,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar3_el2",		CPENC (3,4,6,9,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar4_el1",		CPENC (3,0,6,10,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar4_el2",		CPENC (3,4,6,10,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar5_el1",		CPENC (3,0,6,10,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar5_el2",		CPENC (3,4,6,10,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar6_el1",		CPENC (3,0,6,11,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar6_el2",		CPENC (3,4,6,11,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar7_el1",		CPENC (3,0,6,11,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar7_el2",		CPENC (3,4,6,11,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar8_el1",		CPENC (3,0,6,12,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar8_el2",		CPENC (3,4,6,12,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar9_el1",		CPENC (3,0,6,12,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar9_el2",		CPENC (3,4,6,12,4),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar_el1",		CPENC (3,0,6,8,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prbar_el2",		CPENC (3,4,6,8,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prenr_el1",		CPENC (3,0,6,1,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prenr_el2",		CPENC (3,4,6,1,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar10_el1",	CPENC (3,0,6,13,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar10_el2",	CPENC (3,4,6,13,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar11_el1",	CPENC (3,0,6,13,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar11_el2",	CPENC (3,4,6,13,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar12_el1",	CPENC (3,0,6,14,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar12_el2",	CPENC (3,4,6,14,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar13_el1",	CPENC (3,0,6,14,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar13_el2",	CPENC (3,4,6,14,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar14_el1",	CPENC (3,0,6,15,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar14_el2",	CPENC (3,4,6,15,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar15_el1",	CPENC (3,0,6,15,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar15_el2",	CPENC (3,4,6,15,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar1_el1",		CPENC (3,0,6,8,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar1_el2",		CPENC (3,4,6,8,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar2_el1",		CPENC (3,0,6,9,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar2_el2",		CPENC (3,4,6,9,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar3_el1",		CPENC (3,0,6,9,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar3_el2",		CPENC (3,4,6,9,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar4_el1",		CPENC (3,0,6,10,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar4_el2",		CPENC (3,4,6,10,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar5_el1",		CPENC (3,0,6,10,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar5_el2",		CPENC (3,4,6,10,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar6_el1",		CPENC (3,0,6,11,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar6_el2",		CPENC (3,4,6,11,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar7_el1",		CPENC (3,0,6,11,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar7_el2",		CPENC (3,4,6,11,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar8_el1",		CPENC (3,0,6,12,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar8_el2",		CPENC (3,4,6,12,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar9_el1",		CPENC (3,0,6,12,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar9_el2",		CPENC (3,4,6,12,5),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar_el1",		CPENC (3,0,6,8,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prlar_el2",		CPENC (3,4,6,8,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prselr_el1",		CPENC (3,0,6,2,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("prselr_el2",		CPENC (3,4,6,2,1),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("rcwmask_el1",	CPENC (3,0,13,0,6),	F_REG_128,	AARCH64_FEATURE (THE))
!   SYSREG ("rcwsmask_el1",	CPENC (3,0,13,0,3),	F_REG_128,	AARCH64_FEATURE (THE))
!   SYSREG ("revidr_el1",		CPENC (3,0,0,0,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("rgsr_el1",		CPENC (3,0,1,0,5),	0,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("rmr_el1",		CPENC (3,0,12,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("rmr_el2",		CPENC (3,4,12,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("rmr_el3",		CPENC (3,6,12,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("rndr",		CPENC (3,3,2,4,0),	F_REG_READ,	AARCH64_FEATURE (RNG))
!   SYSREG ("rndrrs",		CPENC (3,3,2,4,1),	F_REG_READ,	AARCH64_FEATURE (RNG))
!   SYSREG ("rvbar_el1",		CPENC (3,0,12,0,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("rvbar_el2",		CPENC (3,4,12,0,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("rvbar_el3",		CPENC (3,6,12,0,1),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("s2pir_el2",		CPENC (3,4,10,2,5),	0,		AARCH64_FEATURE (V8_8A)) /* S2PIE */
!   SYSREG ("s2por_el1",		CPENC (3,0,10,2,5),	0,		AARCH64_FEATURE (V8_8A)) /* S2POE */
!   SYSREG ("scr_el3",		CPENC (3,6,1,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sctlr_el1",		CPENC (3,0,1,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sctlr_el12",		CPENC (3,5,1,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sctlr_el2",		CPENC (3,4,1,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sctlr_el3",		CPENC (3,6,1,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sctlr2_el1",		CPENC (3,0,1,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sctlr2_el12",	CPENC (3,5,1,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sctlr2_el2",		CPENC (3,4,1,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sctlr2_el3",		CPENC (3,6,1,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sctlr2alias_el1",	CPENC (3,0,1,4,7),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("sctlr2mask_el1",	CPENC (3,0,1,4,3),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("sctlr2mask_el12",	CPENC (3,5,1,4,3),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("sctlr2mask_el2",	CPENC (3,4,1,4,3),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("sctlralias_el1",	CPENC (3,0,1,4,6),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("sctlrmask_el1",	CPENC (3,0,1,4,0),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("sctlrmask_el12",	CPENC (3,5,1,4,0),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("sctlrmask_el2",	CPENC (3,4,1,4,0),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("scxtnum_el0",	CPENC (3,3,13,0,7),	0,		AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
!   SYSREG ("scxtnum_el1",	CPENC (3,0,13,0,7),	0,		AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
!   SYSREG ("scxtnum_el12",	CPENC (3,5,13,0,7),	0,		AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
!   SYSREG ("scxtnum_el2",	CPENC (3,4,13,0,7),	0,		AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
!   SYSREG ("scxtnum_el3",	CPENC (3,6,13,0,7),	0,		AARCH64_NO_FEATURES) /* CSV2_2 || CSV2_1p2 */
!   SYSREG ("sder32_el2",		CPENC (3,4,1,3,1),	0,		AARCH64_FEATURE (V8_3A)) /* SEL2 */
!   SYSREG ("sder32_el3",		CPENC (3,6,1,1,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("smcr_el1",		CPENC (3,0,1,2,6),	0,		AARCH64_FEATURE (SME))
!   SYSREG ("smcr_el12",		CPENC (3,5,1,2,6),	0,		AARCH64_FEATURE (SME))
!   SYSREG ("smcr_el2",		CPENC (3,4,1,2,6),	0,		AARCH64_FEATURE (SME))
!   SYSREG ("smcr_el3",		CPENC (3,6,1,2,6),	0,		AARCH64_FEATURE (SME))
!   SYSREG ("smidr_el1",		CPENC (3,1,0,0,6),	F_REG_READ,	AARCH64_FEATURE (SME))
!   SYSREG ("smpri_el1",		CPENC (3,0,1,2,4),	0,		AARCH64_FEATURE (SME))
!   SYSREG ("smprimap_el2",	CPENC (3,4,1,2,5),	0,		AARCH64_FEATURE (SME))
!   SYSREG ("sp_el0",		CPENC (3,0,4,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sp_el1",		CPENC (3,4,4,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("sp_el2",		CPENC (3,6,4,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("spmaccessr_el1",	CPENC (2,0,9,13,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmaccessr_el12",	CPENC (2,5,9,13,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmaccessr_el2",	CPENC (2,4,9,13,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmaccessr_el3",	CPENC (2,6,9,13,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmcfgr_el1",	CPENC (2,0,9,13,7),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmcgcr0_el1",	CPENC (2,0,9,13,0),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmcgcr1_el1",	CPENC (2,0,9,13,1),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmcntenclr_el0",	CPENC (2,3,9,12,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmcntenset_el0",	CPENC (2,3,9,12,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmcr_el0",		CPENC (2,3,9,12,0),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmdevaff_el1",	CPENC (2,0,9,13,6),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmdevarch_el1",	CPENC (2,0,9,13,5),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr0_el0",	CPENC (2,3,14,0,0),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr1_el0",	CPENC (2,3,14,0,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr2_el0",	CPENC (2,3,14,0,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr3_el0",	CPENC (2,3,14,0,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr4_el0",	CPENC (2,3,14,0,4),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr5_el0",	CPENC (2,3,14,0,5),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr6_el0",	CPENC (2,3,14,0,6),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr7_el0",	CPENC (2,3,14,0,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr8_el0",	CPENC (2,3,14,1,0),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr9_el0",	CPENC (2,3,14,1,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr10_el0",	CPENC (2,3,14,1,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr11_el0",	CPENC (2,3,14,1,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr12_el0",	CPENC (2,3,14,1,4),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr13_el0",	CPENC (2,3,14,1,5),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr14_el0",	CPENC (2,3,14,1,6),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevcntr15_el0",	CPENC (2,3,14,1,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r0_el0",	CPENC (2,3,14,6,0),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r1_el0",	CPENC (2,3,14,6,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r2_el0",	CPENC (2,3,14,6,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r3_el0",	CPENC (2,3,14,6,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r4_el0",	CPENC (2,3,14,6,4),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r5_el0",	CPENC (2,3,14,6,5),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r6_el0",	CPENC (2,3,14,6,6),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r7_el0",	CPENC (2,3,14,6,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r8_el0",	CPENC (2,3,14,7,0),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r9_el0",	CPENC (2,3,14,7,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r10_el0",	CPENC (2,3,14,7,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r11_el0",	CPENC (2,3,14,7,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r12_el0",	CPENC (2,3,14,7,4),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r13_el0",	CPENC (2,3,14,7,5),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r14_el0",	CPENC (2,3,14,7,6),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfilt2r15_el0",	CPENC (2,3,14,7,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr0_el0",	CPENC (2,3,14,4,0),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr1_el0",	CPENC (2,3,14,4,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr2_el0",	CPENC (2,3,14,4,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr3_el0",	CPENC (2,3,14,4,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr4_el0",	CPENC (2,3,14,4,4),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr5_el0",	CPENC (2,3,14,4,5),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr6_el0",	CPENC (2,3,14,4,6),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr7_el0",	CPENC (2,3,14,4,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr8_el0",	CPENC (2,3,14,5,0),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr9_el0",	CPENC (2,3,14,5,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr10_el0",	CPENC (2,3,14,5,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr11_el0",	CPENC (2,3,14,5,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr12_el0",	CPENC (2,3,14,5,4),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr13_el0",	CPENC (2,3,14,5,5),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr14_el0",	CPENC (2,3,14,5,6),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevfiltr15_el0",	CPENC (2,3,14,5,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper0_el0",	CPENC (2,3,14,2,0),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper1_el0",	CPENC (2,3,14,2,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper2_el0",	CPENC (2,3,14,2,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper3_el0",	CPENC (2,3,14,2,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper4_el0",	CPENC (2,3,14,2,4),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper5_el0",	CPENC (2,3,14,2,5),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper6_el0",	CPENC (2,3,14,2,6),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper7_el0",	CPENC (2,3,14,2,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper8_el0",	CPENC (2,3,14,3,0),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper9_el0",	CPENC (2,3,14,3,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper10_el0",	CPENC (2,3,14,3,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper11_el0",	CPENC (2,3,14,3,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper12_el0",	CPENC (2,3,14,3,4),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper13_el0",	CPENC (2,3,14,3,5),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper14_el0",	CPENC (2,3,14,3,6),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmevtyper15_el0",	CPENC (2,3,14,3,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmiidr_el1",	CPENC (2,0,9,13,4),	F_REG_READ,	AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmintenclr_el1",	CPENC (2,0,9,14,2),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmintenset_el1",	CPENC (2,0,9,14,1),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmovsclr_el0",	CPENC (2,3,9,12,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmovsset_el0",	CPENC (2,3,9,14,3),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmrootcr_el3",	CPENC (2,6,9,14,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmscr_el1",		CPENC (2,7,9,14,7),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmselr_el0",	CPENC (2,3,9,12,5),	0,		AARCH64_FEATURE (V8_8A)) /* SPMU */
!   SYSREG ("spmzr_el0",		CPENC (2,3,9,12,4),	F_REG_WRITE,	AARCH64_FEATURE (V9_4A)) /* SPMU2 */
!   SYSREG ("spsel",		CPENC (3,0,4,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_abt",		CPENC (3,4,4,3,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_el1",		CPENC (3,0,4,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_el12",		CPENC (3,5,4,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_el2",		CPENC (3,4,4,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_el3",		CPENC (3,6,4,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_fiq",		CPENC (3,4,4,3,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_hyp",		CPENC (3,4,4,0,0),	F_DEPRECATED,	AARCH64_NO_FEATURES)
!   SYSREG ("spsr_irq",		CPENC (3,4,4,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("spsr_svc",		CPENC (3,0,4,0,0),	F_DEPRECATED,	AARCH64_NO_FEATURES)
!   SYSREG ("spsr_und",		CPENC (3,4,4,3,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ssbs",		CPENC (3,3,4,2,6),	0,		AARCH64_FEATURE (SSBS))
!   SYSREG ("svcr",		CPENC (3,3,4,2,2),	0,		AARCH64_FEATURE (SME))
!   SYSREG ("tco",		CPENC (3,3,4,2,7),	0,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tcr_el1",		CPENC (3,0,2,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tcr_el12",		CPENC (3,5,2,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tcr_el2",		CPENC (3,4,2,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tcr_el3",		CPENC (3,6,2,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tcr2_el1",		CPENC (3,0,2,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tcr2_el12",		CPENC (3,5,2,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tcr2_el2",		CPENC (3,4,2,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tcr2alias_el1",	CPENC (3,0,2,7,7),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("tcr2mask_el1",	CPENC (3,0,2,7,3),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("tcr2mask_el12",	CPENC (3,5,2,7,3),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("tcr2mask_el2",	CPENC (3,4,2,7,3),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("tcralias_el1",	CPENC (3,0,2,7,6),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("tcrmask_el1",	CPENC (3,0,2,7,2),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("tcrmask_el12",	CPENC (3,5,2,7,2),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("tcrmask_el2",	CPENC (3,4,2,7,2),	0,		AARCH64_FEATURE (V9_5A)) /* SRMASK */
!   SYSREG ("tfsr_el1",		CPENC (3,0,5,6,0),	0,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tfsr_el12",		CPENC (3,5,5,6,0),	0,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tfsr_el2",		CPENC (3,4,5,6,0),	0,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tfsr_el3",		CPENC (3,6,5,6,0),	0,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tfsre0_el1",		CPENC (3,0,5,6,1),	0,		AARCH64_FEATURE (MEMTAG))
!   SYSREG ("tpidr2_el0",		CPENC (3,3,13,0,5),	0,		AARCH64_FEATURE (SME))
!   SYSREG ("tpidr_el0",		CPENC (3,3,13,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tpidr_el1",		CPENC (3,0,13,0,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tpidr_el2",		CPENC (3,4,13,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tpidr_el3",		CPENC (3,6,13,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("tpidrro_el0",	CPENC (3,3,13,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trbbaser_el1",	CPENC (3,0,9,11,2),	0,		AARCH64_FEATURE (V9A)) /* TRBE */
!   SYSREG ("trbidr_el1",		CPENC (3,0,9,11,7),	F_REG_READ,	AARCH64_FEATURE (V9A)) /* TRBE */
!   SYSREG ("trblimitr_el1",	CPENC (3,0,9,11,0),	0,		AARCH64_FEATURE (V9A)) /* TRBE */
!   SYSREG ("trbmar_el1",		CPENC (3,0,9,11,4),	0,		AARCH64_FEATURE (V9A)) /* TRBE */
!   SYSREG ("trbmpam_el1",	CPENC (3,0,9,11,5),	0,		AARCH64_FEATURE (V9_3A)) /* TRBE_MPAM */
!   SYSREG ("trbptr_el1",		CPENC (3,0,9,11,1),	0,		AARCH64_FEATURE (V9A)) /* TRBE */
!   SYSREG ("trbsr_el1",		CPENC (3,0,9,11,3),	0,		AARCH64_FEATURE (V9A)) /* TRBE */
!   SYSREG ("trbsr_el12",		CPENC (3,5,9,11,3),	0,		AARCH64_FEATURE (V9_5A)) /* TRBE_EXC */
!   SYSREG ("trbsr_el2",		CPENC (3,4,9,11,3),	0,		AARCH64_FEATURE (V9_5A)) /* TRBE_EXC */
!   SYSREG ("trbsr_el3",		CPENC (3,6,9,11,3),	0,		AARCH64_FEATURE (V9_5A)) /* TRBE_EXC */
!   SYSREG ("trbtrg_el1",		CPENC (3,0,9,11,6),	0,		AARCH64_FEATURE (V9A)) /* TRBE */
!   SYSREG ("trcacatr0",		CPENC (2,1,2,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr1",		CPENC (2,1,2,2,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr10",		CPENC (2,1,2,4,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr11",		CPENC (2,1,2,6,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr12",		CPENC (2,1,2,8,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr13",		CPENC (2,1,2,10,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr14",		CPENC (2,1,2,12,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr15",		CPENC (2,1,2,14,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr2",		CPENC (2,1,2,4,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr3",		CPENC (2,1,2,6,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr4",		CPENC (2,1,2,8,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr5",		CPENC (2,1,2,10,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr6",		CPENC (2,1,2,12,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr7",		CPENC (2,1,2,14,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr8",		CPENC (2,1,2,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacatr9",		CPENC (2,1,2,2,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr0",		CPENC (2,1,2,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr1",		CPENC (2,1,2,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr10",		CPENC (2,1,2,4,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr11",		CPENC (2,1,2,6,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr12",		CPENC (2,1,2,8,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr13",		CPENC (2,1,2,10,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr14",		CPENC (2,1,2,12,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr15",		CPENC (2,1,2,14,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr2",		CPENC (2,1,2,4,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr3",		CPENC (2,1,2,6,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr4",		CPENC (2,1,2,8,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr5",		CPENC (2,1,2,10,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr6",		CPENC (2,1,2,12,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr7",		CPENC (2,1,2,14,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr8",		CPENC (2,1,2,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcacvr9",		CPENC (2,1,2,2,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcauthstatus",	CPENC (2,1,7,14,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcauxctlr",		CPENC (2,1,0,6,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcbbctlr",		CPENC (2,1,0,15,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcccctlr",		CPENC (2,1,0,14,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcctlr0",	CPENC (2,1,3,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcctlr1",	CPENC (2,1,3,1,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr0",		CPENC (2,1,3,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr1",		CPENC (2,1,3,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr2",		CPENC (2,1,3,4,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr3",		CPENC (2,1,3,6,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr4",		CPENC (2,1,3,8,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr5",		CPENC (2,1,3,10,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr6",		CPENC (2,1,3,12,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidcvr7",		CPENC (2,1,3,14,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccidr0",		CPENC (2,1,7,12,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trccidr1",		CPENC (2,1,7,13,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trccidr2",		CPENC (2,1,7,14,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trccidr3",		CPENC (2,1,7,15,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcclaimclr",	CPENC (2,1,7,9,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcclaimset",	CPENC (2,1,7,8,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntctlr0",	CPENC (2,1,0,4,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntctlr1",	CPENC (2,1,0,5,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntctlr2",	CPENC (2,1,0,6,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntctlr3",	CPENC (2,1,0,7,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntrldvr0",	CPENC (2,1,0,0,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntrldvr1",	CPENC (2,1,0,1,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntrldvr2",	CPENC (2,1,0,2,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntrldvr3",	CPENC (2,1,0,3,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntvr0",		CPENC (2,1,0,8,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntvr1",		CPENC (2,1,0,9,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntvr2",		CPENC (2,1,0,10,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trccntvr3",		CPENC (2,1,0,11,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcconfigr",		CPENC (2,1,0,4,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdevaff0",		CPENC (2,1,7,10,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcdevaff1",		CPENC (2,1,7,11,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcdevarch",		CPENC (2,1,7,15,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcdevid",		CPENC (2,1,7,2,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcdevtype",		CPENC (2,1,7,3,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr0",		CPENC (2,1,2,0,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr1",		CPENC (2,1,2,4,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr2",		CPENC (2,1,2,8,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr3",		CPENC (2,1,2,12,6),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr4",		CPENC (2,1,2,0,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr5",		CPENC (2,1,2,4,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr6",		CPENC (2,1,2,8,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcmr7",		CPENC (2,1,2,12,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr0",		CPENC (2,1,2,0,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr1",		CPENC (2,1,2,4,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr2",		CPENC (2,1,2,8,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr3",		CPENC (2,1,2,12,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr4",		CPENC (2,1,2,0,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr5",		CPENC (2,1,2,4,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr6",		CPENC (2,1,2,8,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcdvcvr7",		CPENC (2,1,2,12,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trceventctl0r",	CPENC (2,1,0,8,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trceventctl1r",	CPENC (2,1,0,9,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr",	CPENC (2,1,0,8,4),	F_REG_ALIAS,	AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr0",	CPENC (2,1,0,8,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr1",	CPENC (2,1,0,9,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr2",	CPENC (2,1,0,10,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcextinselr3",	CPENC (2,1,0,11,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcidr0",		CPENC (2,1,0,8,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr1",		CPENC (2,1,0,9,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr10",		CPENC (2,1,0,2,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr11",		CPENC (2,1,0,3,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr12",		CPENC (2,1,0,4,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr13",		CPENC (2,1,0,5,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr2",		CPENC (2,1,0,10,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr3",		CPENC (2,1,0,11,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr4",		CPENC (2,1,0,12,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr5",		CPENC (2,1,0,13,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr6",		CPENC (2,1,0,14,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr7",		CPENC (2,1,0,15,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr8",		CPENC (2,1,0,0,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcidr9",		CPENC (2,1,0,1,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec0",		CPENC (2,1,0,0,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec1",		CPENC (2,1,0,1,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec2",		CPENC (2,1,0,2,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec3",		CPENC (2,1,0,3,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec4",		CPENC (2,1,0,4,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec5",		CPENC (2,1,0,5,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec6",		CPENC (2,1,0,6,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcimspec7",		CPENC (2,1,0,7,7),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcitctrl",		CPENC (2,1,7,0,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcitecr_el1",	CPENC (3,0,1,2,3),	0,		AARCH64_FEATURE (ITE))
!   SYSREG ("trcitecr_el12",	CPENC (3,5,1,2,3),	0,		AARCH64_FEATURE (ITE))
!   SYSREG ("trcitecr_el2",	CPENC (3,4,1,2,3),	0,		AARCH64_FEATURE (ITE))
!   SYSREG ("trciteedcr",		CPENC (2,1,0,2,1),	0,		AARCH64_FEATURE (ITE))
!   SYSREG ("trclar",		CPENC (2,1,7,12,6),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("trclsr",		CPENC (2,1,7,13,6),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcoslar",		CPENC (2,1,1,0,4),	F_REG_WRITE,	AARCH64_NO_FEATURES)
!   SYSREG ("trcoslsr",		CPENC (2,1,1,1,4),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcpdcr",		CPENC (2,1,1,4,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcpdsr",		CPENC (2,1,1,5,4),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr0",		CPENC (2,1,7,8,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr1",		CPENC (2,1,7,9,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr2",		CPENC (2,1,7,10,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr3",		CPENC (2,1,7,11,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr4",		CPENC (2,1,7,4,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr5",		CPENC (2,1,7,5,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr6",		CPENC (2,1,7,6,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcpidr7",		CPENC (2,1,7,7,7),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcprgctlr",		CPENC (2,1,0,1,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcprocselr",	CPENC (2,1,0,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcqctlr",		CPENC (2,1,0,1,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr10",	CPENC (2,1,1,10,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr11",	CPENC (2,1,1,11,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr12",	CPENC (2,1,1,12,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr13",	CPENC (2,1,1,13,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr14",	CPENC (2,1,1,14,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr15",	CPENC (2,1,1,15,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr16",	CPENC (2,1,1,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr17",	CPENC (2,1,1,1,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr18",	CPENC (2,1,1,2,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr19",	CPENC (2,1,1,3,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr2",		CPENC (2,1,1,2,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr20",	CPENC (2,1,1,4,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr21",	CPENC (2,1,1,5,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr22",	CPENC (2,1,1,6,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr23",	CPENC (2,1,1,7,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr24",	CPENC (2,1,1,8,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr25",	CPENC (2,1,1,9,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr26",	CPENC (2,1,1,10,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr27",	CPENC (2,1,1,11,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr28",	CPENC (2,1,1,12,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr29",	CPENC (2,1,1,13,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr3",		CPENC (2,1,1,3,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr30",	CPENC (2,1,1,14,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr31",	CPENC (2,1,1,15,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr4",		CPENC (2,1,1,4,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr5",		CPENC (2,1,1,5,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr6",		CPENC (2,1,1,6,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr7",		CPENC (2,1,1,7,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr8",		CPENC (2,1,1,8,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsctlr9",		CPENC (2,1,1,9,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcrsr",		CPENC (2,1,0,10,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcseqevr0",		CPENC (2,1,0,0,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcseqevr1",		CPENC (2,1,0,1,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcseqevr2",		CPENC (2,1,0,2,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcseqrstevr",	CPENC (2,1,0,6,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcseqstr",		CPENC (2,1,0,7,4),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr0",		CPENC (2,1,1,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr1",		CPENC (2,1,1,1,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr2",		CPENC (2,1,1,2,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr3",		CPENC (2,1,1,3,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr4",		CPENC (2,1,1,4,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr5",		CPENC (2,1,1,5,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr6",		CPENC (2,1,1,6,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcssccr7",		CPENC (2,1,1,7,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr0",		CPENC (2,1,1,8,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr1",		CPENC (2,1,1,9,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr2",		CPENC (2,1,1,10,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr3",		CPENC (2,1,1,11,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr4",		CPENC (2,1,1,12,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr5",		CPENC (2,1,1,13,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr6",		CPENC (2,1,1,14,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsscsr7",		CPENC (2,1,1,15,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr0",	CPENC (2,1,1,0,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr1",	CPENC (2,1,1,1,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr2",	CPENC (2,1,1,2,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr3",	CPENC (2,1,1,3,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr4",	CPENC (2,1,1,4,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr5",	CPENC (2,1,1,5,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr6",	CPENC (2,1,1,6,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcsspcicr7",	CPENC (2,1,1,7,3),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcstallctlr",	CPENC (2,1,0,11,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcstatr",		CPENC (2,1,0,3,0),	F_REG_READ,	AARCH64_NO_FEATURES)
!   SYSREG ("trcsyncpr",		CPENC (2,1,0,13,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trctraceidr",	CPENC (2,1,0,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trctsctlr",		CPENC (2,1,0,12,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvdarcctlr",	CPENC (2,1,0,10,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvdctlr",		CPENC (2,1,0,8,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvdsacctlr",	CPENC (2,1,0,9,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvictlr",		CPENC (2,1,0,0,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcviiectlr",	CPENC (2,1,0,1,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvipcssctlr",	CPENC (2,1,0,3,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvissctlr",	CPENC (2,1,0,2,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcctlr0",	CPENC (2,1,3,2,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcctlr1",	CPENC (2,1,3,3,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr0",	CPENC (2,1,3,0,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr1",	CPENC (2,1,3,2,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr2",	CPENC (2,1,3,4,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr3",	CPENC (2,1,3,6,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr4",	CPENC (2,1,3,8,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr5",	CPENC (2,1,3,10,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr6",	CPENC (2,1,3,12,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trcvmidcvr7",	CPENC (2,1,3,14,1),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("trfcr_el1",		CPENC (3,0,1,2,1),	0,		AARCH64_FEATURE (V8_3A)) /* TRF */
!   SYSREG ("trfcr_el12",		CPENC (3,5,1,2,1),	0,		AARCH64_FEATURE (V8_3A)) /* TRF */
!   SYSREG ("trfcr_el2",		CPENC (3,4,1,2,1),	0,		AARCH64_FEATURE (V8_3A)) /* TRF */
!   SYSREG ("ttbr0_el1",		CPENC (3,0,2,0,0),	F_REG_128,	AARCH64_NO_FEATURES)
!   SYSREG ("ttbr0_el12",		CPENC (3,5,2,0,0),	F_REG_128,	AARCH64_NO_FEATURES)
!   SYSREG ("ttbr0_el2",		CPENC (3,4,2,0,0),	F_REG_128,	AARCH64_FEATURE (V8A))
!   SYSREG ("ttbr0_el3",		CPENC (3,6,2,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("ttbr1_el1",		CPENC (3,0,2,0,1),	F_REG_128,	AARCH64_NO_FEATURES)
!   SYSREG ("ttbr1_el12",		CPENC (3,5,2,0,1),	F_REG_128,	AARCH64_NO_FEATURES)
!   SYSREG ("ttbr1_el2",		CPENC (3,4,2,0,1),	F_REG_128,	AARCH64_FEATURE (V8A))
!   SYSREG ("uao",		CPENC (3,0,4,2,4),	0,		AARCH64_FEATURE (V8_1A)) /* UAO */
!   SYSREG ("vbar_el1",		CPENC (3,0,12,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("vbar_el12",		CPENC (3,5,12,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("vbar_el2",		CPENC (3,4,12,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("vbar_el3",		CPENC (3,6,12,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("vdisr_el2",		CPENC (3,4,12,1,1),	0,		AARCH64_FEATURE (RAS))
!   SYSREG ("vdisr_el3",		CPENC (3,6,12,1,1),	0,		AARCH64_FEATURE (V9_4A)) /* E3DSE */
!   SYSREG ("vmecid_a_el2",	CPENC (3,4,10,9,1),	0,		AARCH64_FEATURE (V9_2A)) /* MEC */
!   SYSREG ("vmecid_p_el2",	CPENC (3,4,10,9,0),	0,		AARCH64_FEATURE (V9_2A)) /* MEC */
!   SYSREG ("vmpidr_el2",		CPENC (3,4,0,0,5),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("vncr_el2",		CPENC (3,4,2,2,0),	0,		AARCH64_FEATURE (V8_3A)) /* NV2 */
!   SYSREG ("vpidr_el2",		CPENC (3,4,0,0,0),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("vsctlr_el2",		CPENC (3,4,2,0,0),	0,		AARCH64_FEATURE (V8R))
!   SYSREG ("vsesr_el2",		CPENC (3,4,5,2,3),	0,		AARCH64_FEATURE (RAS))
!   SYSREG ("vsesr_el3",		CPENC (3,6,5,2,3),	0,		AARCH64_FEATURE (V9_4A)) /* E3DSE */
!   SYSREG ("vstcr_el2",		CPENC (3,4,2,6,2),	0,		AARCH64_FEATURE (V8_3A)) /* SEL2 */
!   SYSREG ("vsttbr_el2",		CPENC (3,4,2,6,0),	0,		AARCH64_FEATURES (2, V8A, V8_3A)) /* SEL2 */
!   SYSREG ("vtcr_el2",		CPENC (3,4,2,1,2),	0,		AARCH64_NO_FEATURES)
!   SYSREG ("vttbr_el2",		CPENC (3,4,2,1,0),	F_REG_128,	AARCH64_FEATURE (V8A))
!   SYSREG ("zcr_el1",		CPENC (3,0,1,2,0),	0,		AARCH64_FEATURE (SVE))
!   SYSREG ("zcr_el12",		CPENC (3,5,1,2,0),	0,		AARCH64_FEATURE (SVE))
!   SYSREG ("zcr_el2",		CPENC (3,4,1,2,0),	0,		AARCH64_FEATURE (SVE))
!   SYSREG ("zcr_el3",		CPENC (3,6,1,2,0),	0,		AARCH64_FEATURE (SVE))
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/aarch64.cc gcc-16-20251019/gcc/config/aarch64/aarch64.cc
*** gcc-16-20251012/gcc/config/aarch64/aarch64.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/aarch64.cc	Sun Oct 19 22:32:13 2025
*************** typedef struct {
*** 519,525 ****
  #define F_DEPRECATED		   (1 << 1)
  #define F_REG_READ		   (1 << 2)
  #define F_REG_WRITE		   (1 << 3)
- #define F_ARCHEXT		   (1 << 4)
  /* Flag indicating register name is alias for another system register.  */
  #define F_REG_ALIAS		   (1 << 5)
  /* Flag indicatinig registers which may be implemented with 128-bits.  */
--- 519,524 ----
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/aarch64.h gcc-16-20251019/gcc/config/aarch64/aarch64.h
*** gcc-16-20251012/gcc/config/aarch64/aarch64.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/aarch64.h	Sun Oct 19 22:32:13 2025
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 240,283 ****
  #define TARGET_SIMD (TARGET_BASE_SIMD && TARGET_NON_STREAMING)
  #define TARGET_FLOAT AARCH64_HAVE_ISA (FP)
  
- /* AARCH64_FL options necessary for system register implementation.  */
- 
  /* Define AARCH64_FL aliases for architectural features which are protected
     by -march flags in binutils but which receive no special treatment by GCC.
  
!    Such flags are inherited from the Binutils definition of system registers
!    and are mapped to the architecture in which the feature is implemented.  */
  #define AARCH64_FL_RAS		   AARCH64_FL_V8A
  #define AARCH64_FL_LOR		   AARCH64_FL_V8_1A
  #define AARCH64_FL_PAN		   AARCH64_FL_V8_1A
- #define AARCH64_FL_AMU		   AARCH64_FL_V8_4A
- #define AARCH64_FL_SCXTNUM	   AARCH64_FL_V8_5A
- #define AARCH64_FL_ID_PFR2	   AARCH64_FL_V8_5A
- 
- /* Armv8.9-A extension feature bits defined in Binutils but absent from GCC,
-    aliased to their base architecture.  */
- #define AARCH64_FL_AIE		   AARCH64_FL_V8_9A
- #define AARCH64_FL_DEBUGv8p9	   AARCH64_FL_V8_9A
- #define AARCH64_FL_FGT2	   AARCH64_FL_V8_9A
  #define AARCH64_FL_ITE		   AARCH64_FL_V8_9A
- #define AARCH64_FL_PFAR	   AARCH64_FL_V8_9A
- #define AARCH64_FL_PMUv3_ICNTR	   AARCH64_FL_V8_9A
- #define AARCH64_FL_PMUv3_SS	   AARCH64_FL_V8_9A
- #define AARCH64_FL_PMUv3p9	   AARCH64_FL_V8_9A
  #define AARCH64_FL_RASv2	   AARCH64_FL_V8_9A
! #define AARCH64_FL_S1PIE	   AARCH64_FL_V8_9A
! #define AARCH64_FL_S1POE	   AARCH64_FL_V8_9A
! #define AARCH64_FL_S2PIE	   AARCH64_FL_V8_9A
! #define AARCH64_FL_S2POE	   AARCH64_FL_V8_9A
! #define AARCH64_FL_SCTLR2	   AARCH64_FL_V8_9A
! #define AARCH64_FL_SEBEP	   AARCH64_FL_V8_9A
! #define AARCH64_FL_SPE_FDS	   AARCH64_FL_V8_9A
! #define AARCH64_FL_TCR2	   AARCH64_FL_V8_9A
  
  #define TARGET_V8R AARCH64_HAVE_ISA (V8R)
  #define TARGET_V9A AARCH64_HAVE_ISA (V9A)
  
- 
  /* SHA2 is an optional extension to AdvSIMD.  */
  #define TARGET_SHA2 AARCH64_HAVE_ISA (SHA2)
  
--- 240,261 ----
  #define TARGET_SIMD (TARGET_BASE_SIMD && TARGET_NON_STREAMING)
  #define TARGET_FLOAT AARCH64_HAVE_ISA (FP)
  
  /* Define AARCH64_FL aliases for architectural features which are protected
     by -march flags in binutils but which receive no special treatment by GCC.
+    These features are used in the aarch64-sys-regs.def file, which is copied
+    from Binutils.
  
!    We should try to eliminate these inconsistencies in future.  */
  #define AARCH64_FL_RAS		   AARCH64_FL_V8A
  #define AARCH64_FL_LOR		   AARCH64_FL_V8_1A
  #define AARCH64_FL_PAN		   AARCH64_FL_V8_1A
  #define AARCH64_FL_ITE		   AARCH64_FL_V8_9A
  #define AARCH64_FL_RASv2	   AARCH64_FL_V8_9A
! 
  
  #define TARGET_V8R AARCH64_HAVE_ISA (V8R)
  #define TARGET_V9A AARCH64_HAVE_ISA (V9A)
  
  /* SHA2 is an optional extension to AdvSIMD.  */
  #define TARGET_SHA2 AARCH64_HAVE_ISA (SHA2)
  
diff -Nrcpad gcc-16-20251012/gcc/config/aarch64/iterators.md gcc-16-20251019/gcc/config/aarch64/iterators.md
*** gcc-16-20251012/gcc/config/aarch64/iterators.md	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/aarch64/iterators.md	Sun Oct 19 22:32:13 2025
***************
*** 1901,1906 ****
--- 1901,1911 ----
                    (V4HI "V2SI") (V8HI "V4SI")
                    (V2SI "DI")   (V4SI "V2DI")])
  
+ ;; Modes with double-width elements.
+ (define_mode_attr Vdblw [(V8QI "v4hi") (V16QI "v8hi")
+ 			 (V4HI "v2si") (V8HI "v4si")
+ 			 (V2SI "di")   (V4SI "v2di")])
+ 
  (define_mode_attr VQUADW [(V8QI "V4SI") (V16QI "V8SI")
                    (V4HI "V2DI") (V8HI "V4DI")])
  
***************
*** 1930,1935 ****
--- 1935,1945 ----
  			   (VNx2DI "VNx4SI") (VNx2DF "VNx4SF")
  			   (VNx8SI "VNx8HI") (VNx16SI "VNx16QI")
  			   (VNx8DI "VNx8HI")])
+ (define_mode_attr Vnarrow [(VNx8HI "vnx16qi")
+ 			   (VNx4SI "vnx8hi") (VNx4SF "vnx8hf")
+ 			   (VNx2DI "vnx4si") (VNx2DF "vnx4sf")
+ 			   (VNx8SI "vnx8hi") (VNx16SI "vnx16qi")
+ 			   (VNx8DI "vnx8hi")])
  
  ;; Suffix mapping Advanced SIMD modes to be expanded as SVE instructions.
  (define_mode_attr sve_di_suf [(VNx16QI "") (VNx8HI "") (VNx4SI "") (VNx2DI "")
***************
*** 2003,2009 ****
  (define_mode_attr VWIDE_PRED [(VNx8HF "VNx4BI") (VNx4SF "VNx2BI")])
  
  ;; Widened modes of vector modes, lowercase
! (define_mode_attr Vwide [(V2SF "v2df") (V4HF "v4sf")
  			 (VNx16QI "vnx8hi") (VNx8HI "vnx4si")
  			 (VNx4SI  "vnx2di")
  			 (VNx8HF  "vnx4sf") (VNx4SF "vnx2df")
--- 2013,2021 ----
  (define_mode_attr VWIDE_PRED [(VNx8HF "VNx4BI") (VNx4SF "VNx2BI")])
  
  ;; Widened modes of vector modes, lowercase
! (define_mode_attr Vwide [(V2SI "v2di") (V4HI "v4si")
! 			 (V2SF "v2df") (V4HF "v4sf")
! 			 (V8QI "v8hi")
  			 (VNx16QI "vnx8hi") (VNx8HI "vnx4si")
  			 (VNx4SI  "vnx2di")
  			 (VNx8HF  "vnx4sf") (VNx4SF "vnx2df")
diff -Nrcpad gcc-16-20251012/gcc/config/arm/arm.cc gcc-16-20251019/gcc/config/arm/arm.cc
*** gcc-16-20251012/gcc/config/arm/arm.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/arm/arm.cc	Sun Oct 19 22:32:13 2025
*************** arm_canonicalize_comparison (int *code,
*** 5696,5701 ****
--- 5696,5717 ----
  
    maxval = (HOST_WIDE_INT_1U << (GET_MODE_BITSIZE (mode) - 1)) - 1;
  
+   /* For floating-point comparisons, prefer >= and > over <= and < since
+      the former are supported by VSEL on some architectures.  Only do this
+      if both operands are registers.  */
+   if (GET_MODE_CLASS (mode) == MODE_FLOAT
+       && (*code == LE
+ 	  || *code == LT
+ 	  || *code == UNGT
+ 	  || *code == UNGE)
+       && register_operand (*op0, mode)
+       && register_operand (*op1, mode))
+     {
+       std::swap (*op0, *op1);
+       *code = (int) swap_condition ((rtx_code)*code);
+       return;
+     }
+ 
    /* For DImode, we have GE/LT/GEU/LTU comparisons (with cmp/sbc).  In
       ARM mode we can also use cmp/cmpeq for GTU/LEU.  GT/LE must be
       either reversed or (for constant OP1) adjusted to GE/LT.
*************** arm_validize_comparison (rtx *comparison
*** 32478,32483 ****
--- 32494,32502 ----
      case E_HFmode:
        if (!TARGET_VFP_FP16INST)
  	break;
+       if (!arm_vsel_comparison_operator (*comparison, mode))
+ 	return false;
+ 
        /* FP16 comparisons are done in SF mode.  */
        mode = SFmode;
        *op1 = convert_to_mode (mode, *op1, 1);
diff -Nrcpad gcc-16-20251012/gcc/config/arm/iterators.md gcc-16-20251019/gcc/config/arm/iterators.md
*** gcc-16-20251012/gcc/config/arm/iterators.md	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/arm/iterators.md	Sun Oct 19 22:32:13 2025
***************
*** 1788,1793 ****
--- 1788,1798 ----
                    (V4HI "V2SI") (V8HI "V4SI")
                    (V2SI "DI")   (V4SI "V2DI")])
  
+ ;; Modes with double-width elements.
+ (define_mode_attr v_double_width [(V8QI "v4hi") (V16QI "v8hi")
+ 				  (V4HI "v2si") (V8HI "v4si")
+ 				  (V2SI "di")   (V4SI "v2di")])
+ 
  ;; Double-sized modes with the same element size.
  ;; Used for neon_vdup_lane, where the second operand is double-sized
  ;; even when the first one is quad.
***************
*** 3014,3016 ****
--- 3019,3038 ----
  ;; Define iterators for VCMLA operations as MUL
  (define_int_iterator VCMUL_OP [UNSPEC_VCMUL
  			       UNSPEC_VCMUL_CONJ])
+ 
+ (define_int_attr VxCIQ_carry   [(VADCIQ_U "VADCIQ_U_carry")
+ 				(VADCIQ_S "VADCIQ_S_carry")
+ 				(VSBCIQ_U "VSBCIQ_U_carry")
+ 				(VSBCIQ_S "VSBCIQ_S_carry")])
+ (define_int_attr VxCIQ_M_carry [(VADCIQ_M_U "VADCIQ_M_U_carry")
+ 				(VADCIQ_M_S "VADCIQ_M_S_carry")
+ 				(VSBCIQ_M_U "VSBCIQ_M_U_carry")
+ 				(VSBCIQ_M_S "VSBCIQ_M_S_carry")])
+ (define_int_attr VxCQ_carry [(VADCQ_U "VADCQ_U_carry")
+ 			     (VADCQ_S "VADCQ_S_carry")
+ 			     (VSBCQ_U "VSBCQ_U_carry")
+ 			     (VSBCQ_S "VSBCQ_S_carry")])
+ (define_int_attr VxCQ_M_carry [(VADCQ_M_U "VADCQ_M_U_carry")
+ 			       (VADCQ_M_S "VADCQ_M_S_carry")
+ 			       (VSBCQ_M_U "VSBCQ_M_U_carry")
+ 			       (VSBCQ_M_S "VSBCQ_M_S_carry")])
diff -Nrcpad gcc-16-20251012/gcc/config/arm/mve.md gcc-16-20251019/gcc/config/arm/mve.md
*** gcc-16-20251012/gcc/config/arm/mve.md	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/arm/mve.md	Sun Oct 19 22:32:13 2025
***************
*** 3965,3978 ****
  
  (define_insn "get_fpscr_nzcvqc"
   [(set (match_operand:SI 0 "register_operand" "=r")
!    (unspec_volatile:SI [(reg:SI VFPCC_REGNUM)] UNSPEC_GET_FPSCR_NZCVQC))]
   "TARGET_HAVE_MVE"
   "vmrs\\t%0, FPSCR_nzcvqc"
   [(set_attr "type" "mve_move")])
  
  (define_insn "set_fpscr_nzcvqc"
   [(set (reg:SI VFPCC_REGNUM)
!    (unspec_volatile:SI [(match_operand:SI 0 "register_operand" "r")]
      VUNSPEC_SET_FPSCR_NZCVQC))]
   "TARGET_HAVE_MVE"
   "vmsr\\tFPSCR_nzcvqc, %0"
--- 3965,3978 ----
  
  (define_insn "get_fpscr_nzcvqc"
   [(set (match_operand:SI 0 "register_operand" "=r")
!    (unspec:SI [(reg:SI VFPCC_REGNUM)] UNSPEC_GET_FPSCR_NZCVQC))]
   "TARGET_HAVE_MVE"
   "vmrs\\t%0, FPSCR_nzcvqc"
   [(set_attr "type" "mve_move")])
  
  (define_insn "set_fpscr_nzcvqc"
   [(set (reg:SI VFPCC_REGNUM)
!    (unspec:SI [(match_operand:SI 0 "register_operand" "r")]
      VUNSPEC_SET_FPSCR_NZCVQC))]
   "TARGET_HAVE_MVE"
   "vmsr\\tFPSCR_nzcvqc, %0"
***************
*** 3988,3995 ****
  		      (match_operand:V4SI 2 "s_register_operand" "w")]
  	 VxCIQ))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(const_int 0)]
! 	 VxCIQ))
    ]
    "TARGET_HAVE_MVE"
    "<mve_insn>.i32\t%q0, %q1, %q2"
--- 3988,3996 ----
  		      (match_operand:V4SI 2 "s_register_operand" "w")]
  	 VxCIQ))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(match_dup 1)
! 		    (match_dup 2)]
! 	 <VxCIQ_carry>))
    ]
    "TARGET_HAVE_MVE"
    "<mve_insn>.i32\t%q0, %q1, %q2"
***************
*** 4009,4016 ****
  		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
  	 VxCIQ_M))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(const_int 0)]
! 	 VxCIQ_M))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;<mve_insn>t.i32\t%q0, %q2, %q3"
--- 4010,4020 ----
  		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
  	 VxCIQ_M))
     (set (reg:SI VFPCC_REGNUM)
!     (unspec:SI [(match_dup 1)
! 		(match_dup 2)
! 		(match_dup 3)
! 		(match_dup 4)]
! 	 <VxCIQ_M_carry>))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;<mve_insn>t.i32\t%q0, %q2, %q3"
***************
*** 4025,4035 ****
  (define_insn "@mve_<mve_insn>q_<supf>v4si"
    [(set (match_operand:V4SI 0 "s_register_operand" "=w")
  	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
! 		       (match_operand:V4SI 2 "s_register_operand" "w")]
  	 VxCQ))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(reg:SI VFPCC_REGNUM)]
! 	 VxCQ))
    ]
    "TARGET_HAVE_MVE"
    "<mve_insn>.i32\t%q0, %q1, %q2"
--- 4029,4042 ----
  (define_insn "@mve_<mve_insn>q_<supf>v4si"
    [(set (match_operand:V4SI 0 "s_register_operand" "=w")
  	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
! 		      (match_operand:V4SI 2 "s_register_operand" "w")
! 		      (reg:SI VFPCC_REGNUM)]
  	 VxCQ))
     (set (reg:SI VFPCC_REGNUM)
!     (unspec:SI [(match_dup 1)
! 		(match_dup 2)
! 		(reg:SI VFPCC_REGNUM)]
! 	 <VxCQ_carry>))
    ]
    "TARGET_HAVE_MVE"
    "<mve_insn>.i32\t%q0, %q1, %q2"
***************
*** 4047,4057 ****
  	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0")
  		      (match_operand:V4SI 2 "s_register_operand" "w")
  		      (match_operand:V4SI 3 "s_register_operand" "w")
! 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")]
  	 VxCQ_M))
     (set (reg:SI VFPCC_REGNUM)
! 	(unspec:SI [(reg:SI VFPCC_REGNUM)]
! 	 VxCQ_M))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;<mve_insn>t.i32\t%q0, %q2, %q3"
--- 4054,4069 ----
  	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "0")
  		      (match_operand:V4SI 2 "s_register_operand" "w")
  		      (match_operand:V4SI 3 "s_register_operand" "w")
! 		      (match_operand:V4BI 4 "vpr_register_operand" "Up")
! 		      (reg:SI VFPCC_REGNUM)]
  	 VxCQ_M))
     (set (reg:SI VFPCC_REGNUM)
!     (unspec:SI [(match_dup 1)
! 		(match_dup 2)
! 		(match_dup 3)
! 		(match_dup 4)
! 		(reg:SI VFPCC_REGNUM)]
! 	 <VxCQ_M_carry>))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;<mve_insn>t.i32\t%q0, %q2, %q3"
diff -Nrcpad gcc-16-20251012/gcc/config/arm/neon.md gcc-16-20251019/gcc/config/arm/neon.md
*** gcc-16-20251012/gcc/config/arm/neon.md	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/arm/neon.md	Sun Oct 19 22:32:13 2025
***************
*** 981,987 ****
  
  ;; Widening operations
  
! (define_expand "widen_ssum<mode>3"
    [(set (match_operand:<V_double_width> 0 "s_register_operand")
  	(plus:<V_double_width>
  	 (sign_extend:<V_double_width>
--- 981,987 ----
  
  ;; Widening operations
  
! (define_expand "widen_ssum<v_double_width><mode>3"
    [(set (match_operand:<V_double_width> 0 "s_register_operand")
  	(plus:<V_double_width>
  	 (sign_extend:<V_double_width>
***************
*** 1040,1046 ****
  }
    [(set_attr "type" "neon_add_widen")])
  
! (define_insn "widen_ssum<mode>3"
    [(set (match_operand:<V_widen> 0 "s_register_operand" "=w")
  	(plus:<V_widen>
  	 (sign_extend:<V_widen>
--- 1040,1046 ----
  }
    [(set_attr "type" "neon_add_widen")])
  
! (define_insn "widen_ssum<V_widen_l><mode>3"
    [(set (match_operand:<V_widen> 0 "s_register_operand" "=w")
  	(plus:<V_widen>
  	 (sign_extend:<V_widen>
***************
*** 1051,1057 ****
    [(set_attr "type" "neon_add_widen")]
  )
  
! (define_expand "widen_usum<mode>3"
    [(set (match_operand:<V_double_width> 0 "s_register_operand")
  	(plus:<V_double_width>
  	 (zero_extend:<V_double_width>
--- 1051,1057 ----
    [(set_attr "type" "neon_add_widen")]
  )
  
! (define_expand "widen_usum<v_double_width><mode>3"
    [(set (match_operand:<V_double_width> 0 "s_register_operand")
  	(plus:<V_double_width>
  	 (zero_extend:<V_double_width>
***************
*** 1110,1116 ****
  }
    [(set_attr "type" "neon_add_widen")])
  
! (define_insn "widen_usum<mode>3"
    [(set (match_operand:<V_widen> 0 "s_register_operand" "=w")
  	(plus:<V_widen> (zero_extend:<V_widen>
  			  (match_operand:VW 1 "s_register_operand" "%w"))
--- 1110,1116 ----
  }
    [(set_attr "type" "neon_add_widen")])
  
! (define_insn "widen_usum<V_widen_l><mode>3"
    [(set (match_operand:<V_widen> 0 "s_register_operand" "=w")
  	(plus:<V_widen> (zero_extend:<V_widen>
  			  (match_operand:VW 1 "s_register_operand" "%w"))
diff -Nrcpad gcc-16-20251012/gcc/config/arm/unspecs.md gcc-16-20251019/gcc/config/arm/unspecs.md
*** gcc-16-20251012/gcc/config/arm/unspecs.md	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/arm/unspecs.md	Sun Oct 19 22:32:13 2025
***************
*** 1160,1180 ****
--- 1160,1196 ----
    VLDRGBWBQ
    VLDRGBWBQ_Z
    VADCQ_U
+   VADCQ_U_carry
    VADCQ_M_U
+   VADCQ_M_U_carry
    VADCQ_S
+   VADCQ_S_carry
    VADCQ_M_S
+   VADCQ_M_S_carry
    VSBCIQ_U
+   VSBCIQ_U_carry
    VSBCIQ_S
+   VSBCIQ_S_carry
    VSBCIQ_M_U
+   VSBCIQ_M_U_carry
    VSBCIQ_M_S
+   VSBCIQ_M_S_carry
    VSBCQ_U
+   VSBCQ_U_carry
    VSBCQ_S
+   VSBCQ_S_carry
    VSBCQ_M_U
+   VSBCQ_M_U_carry
    VSBCQ_M_S
+   VSBCQ_M_S_carry
    VADCIQ_U
+   VADCIQ_U_carry
    VADCIQ_M_U
+   VADCIQ_M_U_carry
    VADCIQ_S
+   VADCIQ_S_carry
    VADCIQ_M_S
+   VADCIQ_M_S_carry
    VLD2Q
    VLD4Q
    VST2Q
diff -Nrcpad gcc-16-20251012/gcc/config/avr/avr.cc gcc-16-20251019/gcc/config/avr/avr.cc
*** gcc-16-20251012/gcc/config/avr/avr.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/avr/avr.cc	Sun Oct 19 22:32:13 2025
*************** avr_emit3_fix_outputs (rtx (*gen)(rtx,rt
*** 15222,15228 ****
  
  
  /* A helper for the insn condition of "*nzb=1.<code>.lsr[.not]_split"
!    where <code> is AND, IOR or XOR.  Return true when
  
        OP[0] <code>= OP[1] >> OP[2]
  
--- 15222,15228 ----
  
  
  /* A helper for the insn condition of "*nzb=1.<code>.lsr[.not]_split"
!    where <code> is AND, IOR, XOR or PLUS.  Return true when
  
        OP[0] <code>= OP[1] >> OP[2]
  
*************** avr_nonzero_bits_lsr_operands_p (rtx_cod
*** 15251,15256 ****
--- 15251,15257 ----
  
      case IOR:
      case XOR:
+     case PLUS:
        return op1_non0 >> offs == 1;
  
      case AND:
diff -Nrcpad gcc-16-20251012/gcc/config/avr/avr.md gcc-16-20251019/gcc/config/avr/avr.md
*** gcc-16-20251012/gcc/config/avr/avr.md	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/avr/avr.md	Sun Oct 19 22:32:13 2025
***************
*** 343,348 ****
--- 343,349 ----
  (define_code_iterator piaop [plus ior and])
  (define_code_iterator pixop [plus ior xor])
  (define_code_iterator bitop [xor ior and])
+ (define_code_iterator pixaop [plus ior xor and])
  (define_code_iterator xior [xor ior])
  (define_code_iterator eqne [eq ne])
  (define_code_iterator gelt [ge lt])
***************
*** 10519,10559 ****
  ;; split by that pass must have insn attribute "nzb" set to "yes".  Moreover,
  ;; the insns to split must be single_sets and must not touch control flow.
  
! (define_code_attr nzb_constr_rdr [(and "r") (ior "d") (xor "r")])
! (define_code_attr nzb_use1_nnr   [(and "n") (ior "n") (xor "r")])
  
  (define_insn_and_split "*nzb=1.<code>.zerox_split"
    [(set (match_operand:QI 0 "register_operand")
!         (bitop:QI (zero_extract:QI (match_operand:QI 1 "register_operand")
!                                    (const_int 1)
!                                    (match_operand:QI 2 "const_0_to_7_operand"))
!                   (match_operand:QI 3 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
!    && (<CODE> == IOR || <CODE> == XOR
         || nonzero_bits (operands[3], QImode) == 1)"
    { gcc_unreachable (); }
    "optimize && avropt_use_nonzero_bits
     && !reload_completed"
    [(parallel [(set (match_dup 0)
!                    (bitop:QI (zero_extract:QI (match_dup 1)
!                                               (const_int 1)
!                                               (match_dup 2))
!                              (unspec:QI [(match_dup 3)
!                                          ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
    [(set_attr "nzb" "yes")])
  
  (define_insn "*nzb=1.<code>.zerox"
!   [(set (match_operand:QI 0 "register_operand"                "=<nzb_constr_rdr>")
!         (bitop:QI (zero_extract:QI (match_operand:QI 1 "register_operand"     "r")
!                                    (const_int 1)
!                                    (match_operand:QI 2 "const_0_to_7_operand" "n"))
!                   (unspec:QI [(match_operand:QI 3 "register_operand"          "0")
!                               ] UNSPEC_NZB)))
!    (use (match_operand:QI 4 "nonmemory_operand" "<nzb_use1_nnr>"))
     (clobber (reg:CC REG_CC))]
    "optimize && avropt_use_nonzero_bits"
    {
--- 10520,10560 ----
  ;; split by that pass must have insn attribute "nzb" set to "yes".  Moreover,
  ;; the insns to split must be single_sets and must not touch control flow.
  
! (define_code_attr nzb_constr_rdrr [(and "r") (ior "d") (xor "r") (plus "r")])
! (define_code_attr nzb_use1_nnrn   [(and "n") (ior "n") (xor "r") (plus "n")])
  
  (define_insn_and_split "*nzb=1.<code>.zerox_split"
    [(set (match_operand:QI 0 "register_operand")
!         (pixaop:QI (zero_extract:QI (match_operand:QI 1 "register_operand")
!                                     (const_int 1)
!                                     (match_operand:QI 2 "const_0_to_7_operand"))
!                    (match_operand:QI 3 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
!    && (<CODE> == IOR || <CODE> == XOR || <CODE> == PLUS
         || nonzero_bits (operands[3], QImode) == 1)"
    { gcc_unreachable (); }
    "optimize && avropt_use_nonzero_bits
     && !reload_completed"
    [(parallel [(set (match_dup 0)
!                    (pixaop:QI (zero_extract:QI (match_dup 1)
!                                                (const_int 1)
!                                                (match_dup 2))
!                               (unspec:QI [(match_dup 3)
!                                           ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
    [(set_attr "nzb" "yes")])
  
  (define_insn "*nzb=1.<code>.zerox"
!   [(set (match_operand:QI 0 "register_operand"                "=<nzb_constr_rdrr>")
!         (pixaop:QI (zero_extract:QI (match_operand:QI 1 "register_operand"     "r")
!                                     (const_int 1)
!                                     (match_operand:QI 2 "const_0_to_7_operand" "n"))
!                    (unspec:QI [(match_operand:QI 3 "register_operand"          "0")
!                                ] UNSPEC_NZB)))
!    (use (match_operand:QI 4 "nonmemory_operand" "<nzb_use1_nnrn>"))
     (clobber (reg:CC REG_CC))]
    "optimize && avropt_use_nonzero_bits"
    {
***************
*** 10563,10568 ****
--- 10564,10571 ----
        return "sbrc %1,%2\;ori %0,1";
      else if (<CODE> == XOR)
        return "sbrc %1,%2\;eor %0,%4";
+     else if (<CODE> == PLUS)
+       return "sbrc %1,%2\;inc %0";
      else
        gcc_unreachable ();
    }
***************
*** 10570,10578 ****
  
  (define_insn_and_split "*nzb=1.<code>.lsr_split"
    [(set (match_operand:QI 0 "register_operand")
!         (bitop:QI (lshiftrt:QI (match_operand:QI 1 "register_operand")
!                                (match_operand:QI 2 "const_0_to_7_operand"))
!                   (match_operand:QI 3 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
     && avr_nonzero_bits_lsr_operands_p (<CODE>, operands)"
--- 10573,10581 ----
  
  (define_insn_and_split "*nzb=1.<code>.lsr_split"
    [(set (match_operand:QI 0 "register_operand")
!         (pixaop:QI (lshiftrt:QI (match_operand:QI 1 "register_operand")
!                                 (match_operand:QI 2 "const_0_to_7_operand"))
!                    (match_operand:QI 3 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
     && avr_nonzero_bits_lsr_operands_p (<CODE>, operands)"
***************
*** 10580,10590 ****
    "optimize && avropt_use_nonzero_bits
     && !reload_completed"
    [(parallel [(set (match_dup 0)
!                    (bitop:QI (zero_extract:QI (match_dup 1)
!                                               (const_int 1)
!                                               (match_dup 2))
!                              (unspec:QI [(match_dup 3)
!                                         ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
--- 10583,10593 ----
    "optimize && avropt_use_nonzero_bits
     && !reload_completed"
    [(parallel [(set (match_dup 0)
!                    (pixaop:QI (zero_extract:QI (match_dup 1)
!                                                (const_int 1)
!                                                (match_dup 2))
!                               (unspec:QI [(match_dup 3)
!                                           ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
***************
*** 10592,10617 ****
  
  (define_insn_and_split "*nzb=1.<code>.zerox.not_split"
    [(set (match_operand:QI 0 "register_operand")
!         (bitop:QI (zero_extract:QI (xor:QI (match_operand:QI 1 "register_operand")
!                                            (match_operand:QI 4 "const_int_operand"))
!                                    (const_int 1)
!                                    (match_operand:QI 2 "const_0_to_7_operand"))
!                   (match_operand:QI 3 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
     && INTVAL (operands[2]) == exact_log2 (0xff & INTVAL (operands[4]))
!    && (<CODE> == IOR
         || nonzero_bits (operands[3], QImode) == 1)"
    { gcc_unreachable (); }
    "optimize && avropt_use_nonzero_bits
     && !reload_completed"
    ; "*nzb=1.<code>.zerox.not"
    [(parallel [(set (match_dup 0)
!                    (bitop:QI (zero_extract:QI (not:QI (match_dup 1))
!                                               (const_int 1)
!                                               (match_dup 2))
!                              (unspec:QI [(match_dup 3)
!                                          ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
--- 10595,10620 ----
  
  (define_insn_and_split "*nzb=1.<code>.zerox.not_split"
    [(set (match_operand:QI 0 "register_operand")
!         (pixaop:QI (zero_extract:QI (xor:QI (match_operand:QI 1 "register_operand")
!                                             (match_operand:QI 4 "const_int_operand"))
!                                     (const_int 1)
!                                     (match_operand:QI 2 "const_0_to_7_operand"))
!                    (match_operand:QI 3 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
     && INTVAL (operands[2]) == exact_log2 (0xff & INTVAL (operands[4]))
!    && (<CODE> == IOR || <CODE> == XOR || <CODE> == PLUS
         || nonzero_bits (operands[3], QImode) == 1)"
    { gcc_unreachable (); }
    "optimize && avropt_use_nonzero_bits
     && !reload_completed"
    ; "*nzb=1.<code>.zerox.not"
    [(parallel [(set (match_dup 0)
!                    (pixaop:QI (zero_extract:QI (not:QI (match_dup 1))
!                                                (const_int 1)
!                                                (match_dup 2))
!                               (unspec:QI [(match_dup 3)
!                                           ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
***************
*** 10619,10628 ****
  
  (define_insn_and_split "*nzb=1.<code>.lsr.not_split"
    [(set (match_operand:QI 0 "register_operand")
!         (bitop:QI (lshiftrt:QI (xor:QI (match_operand:QI 1 "register_operand")
!                                        (match_operand:QI 4 "const_int_operand"))
!                                (match_operand:QI 2 "const_0_to_7_operand"))
!                   (match_operand:QI 3 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
     && INTVAL (operands[2]) == exact_log2 (0xff & INTVAL (operands[4]))
--- 10622,10631 ----
  
  (define_insn_and_split "*nzb=1.<code>.lsr.not_split"
    [(set (match_operand:QI 0 "register_operand")
!         (pixaop:QI (lshiftrt:QI (xor:QI (match_operand:QI 1 "register_operand")
!                                         (match_operand:QI 4 "const_int_operand"))
!                                 (match_operand:QI 2 "const_0_to_7_operand"))
!                    (match_operand:QI 3 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
     && INTVAL (operands[2]) == exact_log2 (0xff & INTVAL (operands[4]))
***************
*** 10632,10642 ****
     && !reload_completed"
    ; "*nzb=1.<code>.zerox.not"
    [(parallel [(set (match_dup 0)
!                    (bitop:QI (zero_extract:QI (not:QI (match_dup 1))
!                                               (const_int 1)
!                                               (match_dup 2))
!                              (unspec:QI [(match_dup 3)
!                                          ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
--- 10635,10645 ----
     && !reload_completed"
    ; "*nzb=1.<code>.zerox.not"
    [(parallel [(set (match_dup 0)
!                    (pixaop:QI (zero_extract:QI (not:QI (match_dup 1))
!                                                (const_int 1)
!                                                (match_dup 2))
!                               (unspec:QI [(match_dup 3)
!                                           ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
***************
*** 10644,10679 ****
  
  (define_insn_and_split "*nzb=1.<code>.ge0_split"
    [(set (match_operand:QI 0 "register_operand")
!         (bitop:QI (ge:QI (match_operand:QI 1 "register_operand")
!                          (const_int 0))
!                   (match_operand:QI 2 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
!    && (<CODE> == IOR || <CODE> == XOR
         || nonzero_bits (operands[2], QImode) == 1)"
    { gcc_unreachable (); }
    "optimize && avropt_use_nonzero_bits
     && !reload_completed"
    ; "*nzb=1.<code>.zerox.not"
    [(parallel [(set (match_dup 0)
!                    (bitop:QI (zero_extract:QI (not:QI (match_dup 1))
!                                               (const_int 1)
!                                               (const_int 7))
!                              (unspec:QI [(match_dup 2)
!                                          ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
    [(set_attr "nzb" "yes")])
  
  (define_insn "*nzb=1.<code>.zerox.not"
!   [(set (match_operand:QI 0 "register_operand"                    "=<nzb_constr_rdr>")
!         (bitop:QI (zero_extract:QI (not:QI (match_operand:QI 1 "register_operand" "r"))
!                                    (const_int 1)
!                                    (match_operand:QI 2 "const_0_to_7_operand"     "n"))
!                   (unspec:QI [(match_operand:QI 3 "register_operand"              "0")
!                               ] UNSPEC_NZB)))
!    (use (match_operand:QI 4 "nonmemory_operand" "<nzb_use1_nnr>"))
     (clobber (reg:CC REG_CC))]
    "optimize && avropt_use_nonzero_bits"
    {
--- 10647,10682 ----
  
  (define_insn_and_split "*nzb=1.<code>.ge0_split"
    [(set (match_operand:QI 0 "register_operand")
!         (pixaop:QI (ge:QI (match_operand:QI 1 "register_operand")
!                           (const_int 0))
!                    (match_operand:QI 2 "register_operand")))]
    "optimize && avropt_use_nonzero_bits
     && !reload_completed
!    && (<CODE> == IOR || <CODE> == XOR || <CODE> == PLUS
         || nonzero_bits (operands[2], QImode) == 1)"
    { gcc_unreachable (); }
    "optimize && avropt_use_nonzero_bits
     && !reload_completed"
    ; "*nzb=1.<code>.zerox.not"
    [(parallel [(set (match_dup 0)
!                    (pixaop:QI (zero_extract:QI (not:QI (match_dup 1))
!                                                (const_int 1)
!                                                (const_int 7))
!                               (unspec:QI [(match_dup 2)
!                                           ] UNSPEC_NZB)))
                (use (const_int 1))
                (clobber (reg:CC REG_CC))])]
    ""
    [(set_attr "nzb" "yes")])
  
  (define_insn "*nzb=1.<code>.zerox.not"
!   [(set (match_operand:QI 0 "register_operand"                    "=<nzb_constr_rdrr>")
!         (pixaop:QI (zero_extract:QI (not:QI (match_operand:QI 1 "register_operand" "r"))
!                                     (const_int 1)
!                                     (match_operand:QI 2 "const_0_to_7_operand"     "n"))
!                    (unspec:QI [(match_operand:QI 3 "register_operand"              "0")
!                                ] UNSPEC_NZB)))
!    (use (match_operand:QI 4 "nonmemory_operand" "<nzb_use1_nnrn>"))
     (clobber (reg:CC REG_CC))]
    "optimize && avropt_use_nonzero_bits"
    {
***************
*** 10683,10688 ****
--- 10686,10693 ----
        return "sbrs %1,%2\;ori %0,1";
      else if (<CODE> == XOR)
        return "sbrs %1,%2\;eor %0,%4";
+     else if (<CODE> == PLUS)
+       return "sbrs %1,%2\;inc %0";
      else
        gcc_unreachable ();
    }
diff -Nrcpad gcc-16-20251012/gcc/config/bpf/bpf.cc gcc-16-20251019/gcc/config/bpf/bpf.cc
*** gcc-16-20251012/gcc/config/bpf/bpf.cc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/bpf/bpf.cc	Sun Oct 19 22:32:13 2025
*************** bpf_expand_setmem (rtx *operands)
*** 1427,1451 ****
    unsigned inc = GET_MODE_SIZE (mode);
    unsigned offset = 0;
  
    for (unsigned int i = 0; i < iters; i++)
      {
!       emit_move_insn (adjust_address (dst, mode, offset), val);
        offset += inc;
      }
    if (remainder & 4)
      {
!       emit_move_insn (adjust_address (dst, SImode, offset), val);
        offset += 4;
        remainder -= 4;
      }
    if (remainder & 2)
      {
!       emit_move_insn (adjust_address (dst, HImode, offset), val);
        offset += 2;
        remainder -= 2;
      }
    if (remainder & 1)
!     emit_move_insn (adjust_address (dst, QImode, offset), val);
  
    return true;
  }
--- 1427,1508 ----
    unsigned inc = GET_MODE_SIZE (mode);
    unsigned offset = 0;
  
+   /* If val is a constant, then build a new constant value duplicating
+      the byte across to the size of stores we might do.
+        e.g. if val is 0xab and we can store in 4-byte chunks, build
+        0xabababab and use that to do the memset.
+      If val is not a constant, then by constraint it is a QImode register
+      and we similarly duplicate the byte across.  */
+   rtx src;
+   if (CONST_INT_P (val))
+     {
+       unsigned HOST_WIDE_INT tmp = UINTVAL (val) & 0xff;
+       /* Need src in the proper mode.  */
+       switch (mode)
+ 	{
+ 	case DImode:
+ 	  src = gen_rtx_CONST_INT (DImode, tmp * 0x0101010101010101);
+ 	  break;
+ 	case SImode:
+ 	  src = gen_rtx_CONST_INT (SImode, tmp * 0x01010101);
+ 	  break;
+ 	case HImode:
+ 	  src = gen_rtx_CONST_INT (HImode, tmp * 0x0101);
+ 	  break;
+ 	default:
+ 	  src = val;
+ 	  break;
+ 	}
+     }
+   else
+     {
+       /* VAL is a subreg:QI (reg:DI N).
+ 	 Copy that byte to fill the whole register.  */
+       src = gen_reg_rtx (mode);
+       emit_move_insn (src, gen_rtx_ZERO_EXTEND (mode, val));
+ 
+       /* We can fill the whole register with copies of the byte by multiplying
+ 	 by 0x010101...
+ 	 For DImode this requires a tmp reg with lldw, but only if we will
+ 	 actually do nonzero iterations of stxdw.  */
+       if (mode < DImode || iters == 0)
+ 	emit_move_insn (src, gen_rtx_MULT (mode, src, GEN_INT (0x01010101)));
+       else
+ 	{
+ 	  rtx tmp = gen_reg_rtx (mode);
+ 	  emit_move_insn (tmp, GEN_INT (0x0101010101010101));
+ 	  emit_move_insn (src, gen_rtx_MULT (mode, src, tmp));
+ 	}
+     }
+ 
    for (unsigned int i = 0; i < iters; i++)
      {
!       emit_move_insn (adjust_address (dst, mode, offset), src);
        offset += inc;
      }
    if (remainder & 4)
      {
!       emit_move_insn (adjust_address (dst, SImode, offset),
! 		      REG_P (src)
! 		      ? simplify_gen_subreg (SImode, src, mode, 0)
! 		      : src);
        offset += 4;
        remainder -= 4;
      }
    if (remainder & 2)
      {
!       emit_move_insn (adjust_address (dst, HImode, offset),
! 		      REG_P (src)
! 		      ? simplify_gen_subreg (HImode, src, mode, 0)
! 		      : src);
        offset += 2;
        remainder -= 2;
      }
    if (remainder & 1)
!     emit_move_insn (adjust_address (dst, QImode, offset),
! 		    REG_P (src)
! 		    ? simplify_gen_subreg (QImode, src, mode, 0)
! 		    : src);
  
    return true;
  }
diff -Nrcpad gcc-16-20251012/gcc/config/gcn/gcn-devices.def gcc-16-20251019/gcc/config/gcn/gcn-devices.def
*** gcc-16-20251012/gcc/config/gcn/gcn-devices.def	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/gcn/gcn-devices.def	Sun Oct 19 22:32:13 2025
*************** GCN_DEVICE(gfx942, GFX942, 0x4c, ISA_CDN
*** 179,185 ****
  	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX9,
! 	   /* Generic Name */ NONE
  	   )
  
  GCN_DEVICE(gfx950, GFX950, 0x4f, ISA_CDNA3,
--- 179,185 ----
  	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX9,
! 	   /* Generic Name */ GFX9_4_GENERIC
  	   )
  
  GCN_DEVICE(gfx950, GFX950, 0x4f, ISA_CDNA3,
*************** GCN_DEVICE(gfx950, GFX950, 0x4f, ISA_CDN
*** 190,196 ****
  	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX9,
! 	   /* Generic Name */ NONE
  	   )
  
  GCN_DEVICE(gfx9-generic, GFX9_GENERIC, 0x051, ISA_GCN5,
--- 190,196 ----
  	   /* Max ISA VGPRs */ 512,
  	   /* Generic code obj version */ 0,  /* non-generic */
  	   /* Architecture Family */ GFX9,
! 	   /* Generic Name */ GFX9_4_GENERIC
  	   )
  
  GCN_DEVICE(gfx9-generic, GFX9_GENERIC, 0x051, ISA_GCN5,
diff -Nrcpad gcc-16-20251012/gcc/config/gcn/t-omp-device gcc-16-20251019/gcc/config/gcn/t-omp-device
*** gcc-16-20251012/gcc/config/gcn/t-omp-device	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/gcn/t-omp-device	Sun Oct 19 22:32:13 2025
***************
*** 1,4 ****
  omp-device-properties-gcn: $(srcdir)/config/gcn/gcn-devices.def
  	echo kind: gpu > $@
  	echo arch: amdgcn gcn >> $@
! 	echo isa: `grep -o -P '(?<=GCN_DEVICE\()gfx[0-9a-f]+(?=,)' $<` >> $@
--- 1,4 ----
  omp-device-properties-gcn: $(srcdir)/config/gcn/gcn-devices.def
  	echo kind: gpu > $@
  	echo arch: amdgcn gcn >> $@
! 	echo isa: `grep -o -P '(?<=GCN_DEVICE\()gfx[-0-9a-f]+(|-generic)(?=,)' $<` >> $@
diff -Nrcpad gcc-16-20251012/gcc/config/i386/amxmovrsintrin.h gcc-16-20251019/gcc/config/i386/amxmovrsintrin.h
*** gcc-16-20251012/gcc/config/i386/amxmovrsintrin.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/i386/amxmovrsintrin.h	Sun Oct 19 22:32:13 2025
***************
*** 40,52 ****
  __asm__ volatile					  \
    ("{tileloaddrs\t(%0,%1,1), %%tmm"#tdst		  \
       "|tileloaddrs\t%%tmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
  #define _tile_loaddrst1_internal(tdst, base, stride)	  \
  __asm__ volatile					  \
    ("{tileloaddrst1\t(%0,%1,1), %%tmm"#tdst		  \
       "|tileloaddrst1\t%%tmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
  #define _tile_loaddrs(tdst, base, stride)		  \
    _tile_loaddrs_internal(tdst, base, stride)
--- 40,52 ----
  __asm__ volatile					  \
    ("{tileloaddrs\t(%0,%1,1), %%tmm"#tdst		  \
       "|tileloaddrs\t%%tmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_loaddrst1_internal(tdst, base, stride)	  \
  __asm__ volatile					  \
    ("{tileloaddrst1\t(%0,%1,1), %%tmm"#tdst		  \
       "|tileloaddrst1\t%%tmm"#tdst", [%0+%1*1]}"		  \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_loaddrs(tdst, base, stride)		  \
    _tile_loaddrs_internal(tdst, base, stride)
*************** __asm__ volatile					  \
*** 59,111 ****
  #pragma GCC pop_options
  #endif /* __DISABLE_AMX_MOVRS__ */
  
- #if !defined(__AMX_MOVRS__) || !defined (__AMX_TRANSPOSE__)
- #pragma GCC push_options
- #pragma GCC target("amx-movrs,amx-transpose")
- #define __DISABLE_AMX_MOVRS_TRANSPOSE__
- #endif /* __AMX_MOVRS_TRANSPOSE__ */
- 
- #define _tile_2rpntlvwz0rs_internal(tdst, base, stride)	  \
-   __asm__ volatile					  \
-   ("{t2rpntlvwz0rs\t(%0,%1,1), %%tmm"#tdst		  \
-      "|t2rpntlvwz0rs\t%%tmm"#tdst", [%0+%1*1]}"	  \
-    :: "r" ((const void*) (base)), "r" ((long) (stride)))
- 
- #define _tile_2rpntlvwz0rst1_internal(tdst, base, stride) \
-   __asm__ volatile					  \
-   ("{t2rpntlvwz0rst1\t(%0,%1,1), %%tmm"#tdst		  \
-      "|t2rpntlvwz0rst1\t%%tmm"#tdst", [%0+%1*1]}"	  \
-    :: "r" ((const void*) (base)), "r" ((long) (stride)))
- 
- #define _tile_2rpntlvwz1rs_internal(tdst, base, stride)	  \
-   __asm__ volatile					  \
-   ("{t2rpntlvwz1rs\t(%0,%1,1), %%tmm"#tdst		  \
-      "|t2rpntlvwz1rs\t%%tmm"#tdst", [%0+%1*1]}"		  \
-    :: "r" ((const void*) (base)), "r" ((long) (stride)))
- 
- #define _tile_2rpntlvwz1rst1_internal(tdst, base, stride) \
-   __asm__ volatile					  \
-   ("{t2rpntlvwz1rst1\t(%0,%1,1), %%tmm"#tdst		  \
-      "|t2rpntlvwz1rst1\t%%tmm"#tdst", [%0+%1*1]}"	  \
-    :: "r" ((const void*) (base)), "r" ((long) (stride)))
- 
- #define _tile_2rpntlvwz0rs(tdst, base, stride)		  \
-   _tile_2rpntlvwz0rs_internal(tdst, base, stride)
- 
- #define _tile_2rpntlvwz0rst1(tdst, base, stride)	  \
-   _tile_2rpntlvwz0rst1_internal(tdst, base, stride)
- 
- #define _tile_2rpntlvwz1rs(tdst, base, stride)		  \
-   _tile_2rpntlvwz1rs_internal(tdst, base, stride)
- 
- #define _tile_2rpntlvwz1rst1(tdst, base, stride)	  \
-   _tile_2rpntlvwz1rst1_internal(tdst, base, stride)
- 
- #ifdef __DISABLE_AMX_MOVRS_TRANSPOSE__
- #undef __DISABLE_AMX_MOVRS_TRANSPOSE__
- #pragma GCC pop_options
- #endif /* __DISABLE_AMX_MOVRS_TRANSPOSE__ */
- 
  #endif /* __x86_64__ */
  
  #endif /* _AMX_MOVRSINTRIN_H_INCLUDED */
--- 59,64 ----
diff -Nrcpad gcc-16-20251012/gcc/config/i386/amxtransposeintrin.h gcc-16-20251019/gcc/config/i386/amxtransposeintrin.h
*** gcc-16-20251012/gcc/config/i386/amxtransposeintrin.h	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config/i386/amxtransposeintrin.h	Sun Oct 19 22:32:13 2025
***************
*** 21,177 ****
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #if !defined _IMMINTRIN_H_INCLUDED
! #error "Never use <amxtransposeintrin.h> directly; include <immintrin.h> instead."
! #endif
! 
! #ifndef _AMXTRANSPOSEINTRIN_H_INCLUDED
! #define _AMXTRANSPOSEINTRIN_H_INCLUDED
! 
! #if !defined(__AMX_TRANSPOSE__)
! #pragma GCC push_options
! #pragma GCC target("amx-transpose")
! #define __DISABLE_AMX_TRANSPOSE__
! #endif /* __AMX_TRANSPOSE__ */
! 
! #if defined(__x86_64__)
! #define _tile_transposed_internal(dst,src)					\
!   __asm__ volatile\
!   ("{ttransposed\t%%tmm"#src", %%tmm"#dst"|ttransposed\t%%tmm"#dst", %%tmm"#src"}" ::)
! 
! #define _tile_2rpntlvwz0_internal(dst,base,stride)				\
!   __asm__ volatile\
!   ("{t2rpntlvwz0\t(%0,%1,1), %%tmm"#dst"|t2rpntlvwz0\t%%tmm"#dst", [%0+%1*1]}"  \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
! 
! #define _tile_2rpntlvwz0t1_internal(dst,base,stride)				\
!   __asm__ volatile\
!   ("{t2rpntlvwz0t1\t(%0,%1,1), %%tmm"#dst"|t2rpntlvwz0t1\t%%tmm"#dst", [%0+%1*1]}" \
!    :: "r" ((const void*)(base)), "r" ((long)(stride)))
! 
! #define _tile_2rpntlvwz1_internal(dst,base,stride)				\
!   __asm__ volatile\
!   ("{t2rpntlvwz1\t(%0,%1,1), %%tmm"#dst"|t2rpntlvwz1\t%%tmm"#dst", [%0+%1*1]}"  \
!   :: "r" ((const void*)(base)), "r" ((long)(stride)))
! 
! #define _tile_2rpntlvwz1t1_internal(dst,base,stride)				\
!   __asm__ volatile\
!   ("{t2rpntlvwz1t1\t(%0,%1,1), %%tmm"#dst"|t2rpntlvwz1t1\t%%tmm"#dst", [%0+%1*1]}" \
!   :: "r" ((const void*)(base)), "r" ((long)(stride)))
! 
! #define _tile_transposed(dst,src)						\
!   _tile_transposed_internal (dst, src)
! 
! #define _tile_2rpntlvwz0(dst,base,stride)					\
!   _tile_2rpntlvwz0_internal (dst, base, stride)
! 
! #define _tile_2rpntlvwz0t1(dst,base,stride)					\
!   _tile_2rpntlvwz0t1_internal (dst, base, stride)
! 
! #define _tile_2rpntlvwz1(dst,base,stride)					\
!   _tile_2rpntlvwz1_internal (dst, base, stride)
! 
! #define _tile_2rpntlvwz1t1(dst,base,stride)					\
!   _tile_2rpntlvwz1t1_internal (dst, base, stride)
! 
! #if !defined(__AMX_BF16__)
! #pragma GCC push_options
! #pragma GCC target("amx-bf16")
! #define __DISABLE_AMX_BF16__
! #endif /* __AMX_BF16__ */
! 
! #define _tile_tdpbf16ps_internal(src1_dst,src2,src3)				\
!   __asm__ volatile\
!   ("{ttdpbf16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|ttdpbf16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
! 
! #define _tile_tdpbf16ps(src1_dst,src2,src3)					\
!   _tile_tdpbf16ps_internal (src1_dst, src2, src3)
! 
! #ifdef __DISABLE_AMX_BF16__
! #undef __DISABLE_AMX_BF16__
! #pragma GCC pop_options
! #endif /* __DISABLE_AMX_BF16__ */
! 
! #if !defined(__AMX_FP16__)
! #pragma GCC push_options
! #pragma GCC target("amx-fp16")
! #define __DISABLE_AMX_FP16__
! #endif /* __AMX_FP16__ */
! 
! #define _tile_tdpfp16ps_internal(src1_dst,src2,src3)				\
!   __asm__ volatile\
!   ("{ttdpfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|ttdpfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
! 
! #define _tile_tdpfp16ps(src1_dst,src2,src3)					\
!   _tile_tdpfp16ps_internal (src1_dst, src2, src3)
! 
! #ifdef __DISABLE_AMX_FP16__
! #undef __DISABLE_AMX_FP16__
! #pragma GCC pop_options
! #endif /* __DISABLE_AMX_FP16__ */
! 
! #if !defined(__AMX_COMPLEX__)
! #pragma GCC push_options
! #pragma GCC target("amx-complex")
! #define __DISABLE_AMX_COMPLEX__
! #endif /* __AMX_COMPLEX__ */
! 
! #define _tile_conjtcmmimfp16ps_internal(src1_dst,src2,src3)			\
!   __asm__ volatile\
!   ("{tconjtcmmimfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|tconjtcmmimfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
! 
! #define _tile_conjtfp16_internal(dst,src)					\
!   __asm__ volatile\
!   ("{tconjtfp16\t%%tmm"#src", %%tmm"#dst"|tconjtfp16\t%%tmm"#dst", %%tmm"#src"}" ::)
! 
! #define _tile_tcmmimfp16ps_internal(src1_dst,src2,src3)				\
!   __asm__ volatile\
!   ("{ttcmmimfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|ttcmmimfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
! 
! #define _tile_tcmmrlfp16ps_internal(src1_dst,src2,src3)				\
!   __asm__ volatile\
!   ("{ttcmmrlfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|ttcmmrlfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
! 
! #define _tile_conjtcmmimfp16ps(src1_dst,src2,src3)				\
!   _tile_conjtcmmimfp16ps_internal (src1_dst, src2, src3)
! 
! #define _tile_conjtfp16(dst,src)						\
!   _tile_conjtfp16_internal (dst, src)
! 
! #define _tile_tcmmimfp16ps(src1_dst,src2,src3)					\
!   _tile_tcmmimfp16ps_internal (src1_dst, src2, src3)
! 
! #define _tile_tcmmrlfp16ps(src1_dst,src2,src3)					\
!   _tile_tcmmrlfp16ps_internal (src1_dst, src2, src3)
! 
! #ifdef __DISABLE_AMX_COMPLEX__
! #undef __DISABLE_AMX_COMPLEX__
! #pragma GCC pop_options
! #endif /* __DISABLE_AMX_COMPLEX__ */
! 
! #if !defined(__AMX_TF32__)
! #pragma GCC push_options
! #pragma GCC target("amx-tf32")
! #define __DISABLE_AMX_TF32__
! #endif /* __AMX_TF32__ */
! 
! #define _tile_tmmultf32ps_internal(src1_dst,src2,src3)				\
!   __asm__ volatile\
!   ("{ttmmultf32ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|ttmmultf32ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
! 
! #define _tile_tmmultf32ps(src1_dst,src2,src3)					\
!   _tile_tmmultf32ps_internal (src1_dst, src2, src3)
! 
! #ifdef __DISABLE_AMX_TF32__
! #undef __DISABLE_AMX_TF32__
! #pragma GCC pop_options
! #endif /* __DISABLE_AMX_TF32__ */
! 
! #endif /* __x86_64__ */
! 
! #ifdef __DISABLE_AMX_TRANSPOSE__
! #undef __DISABLE_AMX_TRANSPOSE__
! #pragma GCC pop_options
! #endif /* __DISABLE_AMX_TRANSPOSE__ */
! 
! #endif /* _AMXTRANSPOSEINTRIN_H_INCLUDED */
--- 21,24 ----
     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     <http://www.gnu.org/licenses/>.  */
  
! #error "AMX-TRANSPOSE support has been removed since GCC 16."
diff -Nrcpad gcc-16-20251012/gcc/config/i386/cpuid.h gcc-16-20251019/gcc/config/i386/cpuid.h
*** gcc-16-20251012/gcc/config/i386/cpuid.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/i386/cpuid.h	Sun Oct 19 22:32:13 2025
***************
*** 170,176 ****
  /* AMX sub leaf (%eax == 0x1e, %ecx == 1) */
  /* %eax */
  #define bit_AMX_FP8	(1 << 4)
- #define bit_AMX_TRANSPOSE	(1 << 5)
  #define bit_AMX_TF32	(1 << 6)
  #define bit_AMX_AVX512  (1 << 7)
  #define bit_AMX_MOVRS	(1 << 8)
--- 170,175 ----
diff -Nrcpad gcc-16-20251012/gcc/config/i386/i386-c.cc gcc-16-20251019/gcc/config/i386/i386-c.cc
*** gcc-16-20251012/gcc/config/i386/i386-c.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/i386/i386-c.cc	Sun Oct 19 22:32:13 2025
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 743,750 ****
      def_or_undef (parse_in, "__AMX_AVX512__");
    if (isa_flag2 & OPTION_MASK_ISA2_AMX_TF32)
      def_or_undef (parse_in, "__AMX_TF32__");
-   if (isa_flag2 & OPTION_MASK_ISA2_AMX_TRANSPOSE)
-     def_or_undef (parse_in, "__AMX_TRANSPOSE__");
    if (isa_flag2 & OPTION_MASK_ISA2_AMX_FP8)
      def_or_undef (parse_in, "__AMX_FP8__");
    if (isa_flag2 & OPTION_MASK_ISA2_MOVRS)
--- 743,748 ----
diff -Nrcpad gcc-16-20251012/gcc/config/i386/i386-isa.def gcc-16-20251019/gcc/config/i386/i386-isa.def
*** gcc-16-20251012/gcc/config/i386/i386-isa.def	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/i386/i386-isa.def	Sun Oct 19 22:32:13 2025
*************** DEF_PTA(AVX10_1)
*** 122,128 ****
  DEF_PTA(AVX10_2)
  DEF_PTA(AMX_AVX512)
  DEF_PTA(AMX_TF32)
- DEF_PTA(AMX_TRANSPOSE)
  DEF_PTA(AMX_FP8)
  DEF_PTA(MOVRS)
  DEF_PTA(AMX_MOVRS)
--- 122,127 ----
diff -Nrcpad gcc-16-20251012/gcc/config/i386/i386-options.cc gcc-16-20251019/gcc/config/i386/i386-options.cc
*** gcc-16-20251012/gcc/config/i386/i386-options.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/i386/i386-options.cc	Sun Oct 19 22:32:13 2025
*************** static struct ix86_target_opts isa2_opts
*** 264,270 ****
    { "-mavx10.2",	OPTION_MASK_ISA2_AVX10_2 },
    { "-mamx-avx512",	OPTION_MASK_ISA2_AMX_AVX512 },
    { "-mamx-tf32",	OPTION_MASK_ISA2_AMX_TF32 },
-   { "-mamx-transpose",	OPTION_MASK_ISA2_AMX_TRANSPOSE },
    { "-mamx-fp8", 	OPTION_MASK_ISA2_AMX_FP8 },
    { "-mmovrs",		OPTION_MASK_ISA2_MOVRS },
    { "-mamx-movrs",	OPTION_MASK_ISA2_AMX_MOVRS }
--- 264,269 ----
*************** ix86_valid_target_attribute_inner_p (tre
*** 1123,1129 ****
      IX86_ATTR_ISA ("avx10.2", OPT_mavx10_2),
      IX86_ATTR_ISA ("amx-avx512", OPT_mamx_avx512),
      IX86_ATTR_ISA ("amx-tf32", OPT_mamx_tf32),
-     IX86_ATTR_ISA ("amx-transpose", OPT_mamx_transpose),
      IX86_ATTR_ISA ("amx-fp8", OPT_mamx_fp8),
      IX86_ATTR_ISA ("movrs", OPT_mmovrs),
      IX86_ATTR_ISA ("amx-movrs", OPT_mamx_movrs),
--- 1122,1127 ----
diff -Nrcpad gcc-16-20251012/gcc/config/i386/i386.h gcc-16-20251019/gcc/config/i386/i386.h
*** gcc-16-20251012/gcc/config/i386/i386.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/i386/i386.h	Sun Oct 19 22:32:13 2025
*************** constexpr wide_int_bitmask PTA_CLEARWATE
*** 2481,2492 ****
    (PTA_SIERRAFOREST & (~(PTA_KL | PTA_WIDEKL))) | PTA_AVXVNNIINT16 | PTA_SHA512
    | PTA_SM3 | PTA_SM4 | PTA_USER_MSR | PTA_PREFETCHI;
  constexpr wide_int_bitmask PTA_PANTHERLAKE =
!   (PTA_ARROWLAKE_S & (~(PTA_KL | PTA_WIDEKL))) | PTA_PREFETCHI;
  constexpr wide_int_bitmask PTA_DIAMONDRAPIDS = PTA_GRANITERAPIDS_D
    | PTA_AVXIFMA | PTA_AVXNECONVERT | PTA_AVXVNNIINT16 | PTA_AVXVNNIINT8
    | PTA_CMPCCXADD | PTA_SHA512 | PTA_SM3 | PTA_SM4 | PTA_AVX10_2
!   | PTA_APX_F | PTA_AMX_AVX512 | PTA_AMX_FP8 | PTA_AMX_TF32 | PTA_AMX_TRANSPOSE
!   | PTA_MOVRS | PTA_AMX_MOVRS | PTA_USER_MSR;
  
  constexpr wide_int_bitmask PTA_BDVER1 = PTA_64BIT | PTA_MMX | PTA_SSE
    | PTA_SSE2 | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_POPCNT | PTA_LZCNT
--- 2481,2492 ----
    (PTA_SIERRAFOREST & (~(PTA_KL | PTA_WIDEKL))) | PTA_AVXVNNIINT16 | PTA_SHA512
    | PTA_SM3 | PTA_SM4 | PTA_USER_MSR | PTA_PREFETCHI;
  constexpr wide_int_bitmask PTA_PANTHERLAKE =
!   (PTA_ARROWLAKE_S & (~(PTA_KL | PTA_WIDEKL)));
  constexpr wide_int_bitmask PTA_DIAMONDRAPIDS = PTA_GRANITERAPIDS_D
    | PTA_AVXIFMA | PTA_AVXNECONVERT | PTA_AVXVNNIINT16 | PTA_AVXVNNIINT8
    | PTA_CMPCCXADD | PTA_SHA512 | PTA_SM3 | PTA_SM4 | PTA_AVX10_2
!   | PTA_APX_F | PTA_AMX_AVX512 | PTA_AMX_FP8 | PTA_AMX_TF32 | PTA_MOVRS
!   | PTA_AMX_MOVRS;
  
  constexpr wide_int_bitmask PTA_BDVER1 = PTA_64BIT | PTA_MMX | PTA_SSE
    | PTA_SSE2 | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_POPCNT | PTA_LZCNT
diff -Nrcpad gcc-16-20251012/gcc/config/i386/i386.opt gcc-16-20251019/gcc/config/i386/i386.opt
*** gcc-16-20251012/gcc/config/i386/i386.opt	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/i386/i386.opt	Sun Oct 19 22:32:13 2025
*************** mamx-tf32
*** 1362,1371 ****
  Target Mask(ISA2_AMX_TF32) Var(ix86_isa_flags2) Save
  Support AMX-TF32 built-in functions and code generation.
  
- mamx-transpose
- Target Mask(ISA2_AMX_TRANSPOSE) Var(ix86_isa_flags2) Save
- Support AMX-TRANSPOSE built-in functions and code generation.
- 
  mamx-fp8
  Target Mask(ISA2_AMX_FP8) Var(ix86_isa_flags2) Save
  Support AMX-FP8 built-in functions and code generation.
--- 1362,1367 ----
diff -Nrcpad gcc-16-20251012/gcc/config/i386/i386.opt.urls gcc-16-20251019/gcc/config/i386/i386.opt.urls
*** gcc-16-20251012/gcc/config/i386/i386.opt.urls	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/i386/i386.opt.urls	Sun Oct 19 22:32:13 2025
*************** UrlSuffix(gcc/x86-Options.html#index-mam
*** 605,613 ****
  mamx-tf32
  UrlSuffix(gcc/x86-Options.html#index-mamx-tf32)
  
- mamx-transpose
- UrlSuffix(gcc/x86-Options.html#index-mamx-transpose)
- 
  mamx-fp8
  UrlSuffix(gcc/x86-Options.html#index-mamx-fp8)
  
--- 605,610 ----
diff -Nrcpad gcc-16-20251012/gcc/config/i386/immintrin.h gcc-16-20251019/gcc/config/i386/immintrin.h
*** gcc-16-20251012/gcc/config/i386/immintrin.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/i386/immintrin.h	Sun Oct 19 22:32:13 2025
***************
*** 136,143 ****
  
  #include <amxtf32intrin.h>
  
- #include <amxtransposeintrin.h>
- 
  #include <amxfp8intrin.h>
  
  #include <prfchwintrin.h>
--- 136,141 ----
diff -Nrcpad gcc-16-20251012/gcc/config/ia64/vect.md gcc-16-20251019/gcc/config/ia64/vect.md
*** gcc-16-20251012/gcc/config/ia64/vect.md	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/ia64/vect.md	Sun Oct 19 22:32:13 2025
***************
*** 584,590 ****
    operands[1] = gen_lowpart (DImode, operands[1]);
  })
  
! (define_expand "widen_usumv8qi3"
    [(match_operand:V4HI 0 "gr_register_operand" "")
     (match_operand:V8QI 1 "gr_register_operand" "")
     (match_operand:V4HI 2 "gr_register_operand" "")]
--- 584,590 ----
    operands[1] = gen_lowpart (DImode, operands[1]);
  })
  
! (define_expand "widen_usumv4hiv8qi3"
    [(match_operand:V4HI 0 "gr_register_operand" "")
     (match_operand:V8QI 1 "gr_register_operand" "")
     (match_operand:V4HI 2 "gr_register_operand" "")]
***************
*** 594,600 ****
    DONE;
  })
  
! (define_expand "widen_usumv4hi3"
    [(match_operand:V2SI 0 "gr_register_operand" "")
     (match_operand:V4HI 1 "gr_register_operand" "")
     (match_operand:V2SI 2 "gr_register_operand" "")]
--- 594,600 ----
    DONE;
  })
  
! (define_expand "widen_usumv2siv4hi3"
    [(match_operand:V2SI 0 "gr_register_operand" "")
     (match_operand:V4HI 1 "gr_register_operand" "")
     (match_operand:V2SI 2 "gr_register_operand" "")]
***************
*** 604,610 ****
    DONE;
  })
  
! (define_expand "widen_ssumv8qi3"
    [(match_operand:V4HI 0 "gr_register_operand" "")
     (match_operand:V8QI 1 "gr_register_operand" "")
     (match_operand:V4HI 2 "gr_register_operand" "")]
--- 604,610 ----
    DONE;
  })
  
! (define_expand "widen_ssumv4hiv8qi3"
    [(match_operand:V4HI 0 "gr_register_operand" "")
     (match_operand:V8QI 1 "gr_register_operand" "")
     (match_operand:V4HI 2 "gr_register_operand" "")]
***************
*** 614,620 ****
    DONE;
  })
  
! (define_expand "widen_ssumv4hi3"
    [(match_operand:V2SI 0 "gr_register_operand" "")
     (match_operand:V4HI 1 "gr_register_operand" "")
     (match_operand:V2SI 2 "gr_register_operand" "")]
--- 614,620 ----
    DONE;
  })
  
! (define_expand "widen_ssumv2siv4hi3"
    [(match_operand:V2SI 0 "gr_register_operand" "")
     (match_operand:V4HI 1 "gr_register_operand" "")
     (match_operand:V2SI 2 "gr_register_operand" "")]
diff -Nrcpad gcc-16-20251012/gcc/config/riscv/autovec-opt.md gcc-16-20251019/gcc/config/riscv/autovec-opt.md
*** gcc-16-20251012/gcc/config/riscv/autovec-opt.md	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/riscv/autovec-opt.md	Sun Oct 19 22:32:13 2025
***************
*** 1913,1919 ****
  
  (define_insn_and_split "*widen_waddu_wx_<mode>"
   [(set (match_operand:VWEXTI_D       0 "register_operand")
!        (any_widen_binop:VWEXTI_D
  	 (vec_duplicate:VWEXTI_D
  	   (any_extend:<VEL>
  	     (match_operand:<VSUBEL> 2 "register_operand")))
--- 1913,1919 ----
  
  (define_insn_and_split "*widen_waddu_wx_<mode>"
   [(set (match_operand:VWEXTI_D       0 "register_operand")
!        (plus:VWEXTI_D
  	 (vec_duplicate:VWEXTI_D
  	   (any_extend:<VEL>
  	     (match_operand:<VSUBEL> 2 "register_operand")))
***************
*** 1933,1939 ****
  
  (define_insn_and_split "*widen_wsubu_wx_<mode>"
   [(set (match_operand:VWEXTI_D       0 "register_operand")
!        (any_widen_binop:VWEXTI_D
  	 (match_operand:VWEXTI_D     1 "register_operand")
  	 (vec_duplicate:VWEXTI_D
  	   (any_extend:<VEL>
--- 1933,1939 ----
  
  (define_insn_and_split "*widen_wsubu_wx_<mode>"
   [(set (match_operand:VWEXTI_D       0 "register_operand")
!        (minus:VWEXTI_D
  	 (match_operand:VWEXTI_D     1 "register_operand")
  	 (vec_duplicate:VWEXTI_D
  	   (any_extend:<VEL>
diff -Nrcpad gcc-16-20251012/gcc/config/riscv/riscv-c.cc gcc-16-20251019/gcc/config/riscv/riscv-c.cc
*** gcc-16-20251012/gcc/config/riscv/riscv-c.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/riscv/riscv-c.cc	Sun Oct 19 22:32:13 2025
*************** riscv_cpu_cpp_builtins (cpp_reader *pfil
*** 165,170 ****
--- 165,179 ----
    if (!subset_list)
      return;
  
+   /* Define profile macro if a profile was used.  */
+   const char *profile_name = subset_list->get_profile_name ();
+   if (profile_name)
+     {
+       char *profile_macro = (char *)alloca (strlen (profile_name) + 10);
+       sprintf (profile_macro, "__riscv_%s", profile_name);
+       builtin_define (profile_macro);
+     }
+ 
    size_t max_ext_len = 0;
  
    /* Figure out the max length of extension name for reserving buffer.   */
diff -Nrcpad gcc-16-20251012/gcc/config/riscv/riscv-subset.h gcc-16-20251019/gcc/config/riscv/riscv-subset.h
*** gcc-16-20251012/gcc/config/riscv/riscv-subset.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/riscv/riscv-subset.h	Sun Oct 19 22:32:13 2025
*************** public:
*** 105,110 ****
--- 105,112 ----
  
    unsigned xlen () const {return m_xlen;};
  
+   const char *get_profile_name () const;
+ 
    riscv_subset_list *clone () const;
  
    static riscv_subset_list *parse (const char *, location_t *);
diff -Nrcpad gcc-16-20251012/gcc/config/riscv/riscv.cc gcc-16-20251019/gcc/config/riscv/riscv.cc
*** gcc-16-20251012/gcc/config/riscv/riscv.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/riscv/riscv.cc	Sun Oct 19 22:32:13 2025
*************** riscv_dwarf_poly_indeterminate_value (un
*** 12641,12646 ****
--- 12641,12653 ----
    */
    gcc_assert (i == 1);
    *factor = BYTES_PER_RISCV_VECTOR.coeffs[1];
+ 
+   /* The factor will be zero if vector is not enabled.  That ultimately
+      causes problems in the dwarf2 emitter as the factor is used for
+      a division, causing a divide by zero.  */
+   if (*factor == 0)
+     *factor = 1;
+ 
    *offset = 1;
    return RISCV_DWARF_VLENB;
  }
*************** synthesize_add (rtx operands[3])
*** 15433,15441 ****
  
        ival -= saturated;
  
!       rtx x = gen_rtx_PLUS (word_mode, operands[1], GEN_INT (saturated));
        emit_insn (gen_rtx_SET (operands[0], x));
!       rtx output = gen_rtx_PLUS (word_mode, operands[0], GEN_INT (ival));
        emit_insn (gen_rtx_SET (operands[0], output));
        return true;
      }
--- 15440,15452 ----
  
        ival -= saturated;
  
!       /* The first add may be an FP relative address during reload.  FP
! 	 may be replaced with (sp + C).  We don't want that to already
! 	 be saturated as (sp + C) would then exceed a simm12 field.  So
! 	 emit the smaller offset first and the saturated constant last.  */
!       rtx x = gen_rtx_PLUS (word_mode, operands[1], GEN_INT (ival));
        emit_insn (gen_rtx_SET (operands[0], x));
!       rtx output = gen_rtx_PLUS (word_mode, operands[0], GEN_INT (saturated));
        emit_insn (gen_rtx_SET (operands[0], output));
        return true;
      }
*************** synthesize_add_extended (rtx operands[3]
*** 15532,15545 ****
  
        ival -= saturated;
  
        rtx temp = gen_reg_rtx (DImode);
!       emit_insn (gen_addsi3_extended (temp, operands[1], GEN_INT (saturated)));
        temp = gen_lowpart (SImode, temp);
        SUBREG_PROMOTED_VAR_P (temp) = 1;
        SUBREG_PROMOTED_SET (temp, SRP_SIGNED);
        emit_insn (gen_rtx_SET (operands[0], temp));
        rtx t = gen_reg_rtx (DImode);
!       emit_insn (gen_addsi3_extended (t, operands[0], GEN_INT (ival)));
        t = gen_lowpart (SImode, t);
        SUBREG_PROMOTED_VAR_P (t) = 1;
        SUBREG_PROMOTED_SET (t, SRP_SIGNED);
--- 15543,15560 ----
  
        ival -= saturated;
  
+       /* The first add may be an FP relative address during reload.  FP
+ 	 may be replaced with (sp + C).  We don't want that to already
+ 	 be saturated as (sp + C) would then exceed a simm12 field.  So
+ 	 emit the smaller offset first and the saturated constant last.  */
        rtx temp = gen_reg_rtx (DImode);
!       emit_insn (gen_addsi3_extended (temp, operands[1], GEN_INT (ival)));
        temp = gen_lowpart (SImode, temp);
        SUBREG_PROMOTED_VAR_P (temp) = 1;
        SUBREG_PROMOTED_SET (temp, SRP_SIGNED);
        emit_insn (gen_rtx_SET (operands[0], temp));
        rtx t = gen_reg_rtx (DImode);
!       emit_insn (gen_addsi3_extended (t, operands[0], GEN_INT (saturated)));
        t = gen_lowpart (SImode, t);
        SUBREG_PROMOTED_VAR_P (t) = 1;
        SUBREG_PROMOTED_SET (t, SRP_SIGNED);
diff -Nrcpad gcc-16-20251012/gcc/config/riscv/riscv.md gcc-16-20251019/gcc/config/riscv/riscv.md
*** gcc-16-20251012/gcc/config/riscv/riscv.md	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/riscv/riscv.md	Sun Oct 19 22:32:13 2025
***************
*** 702,707 ****
--- 702,723 ----
    [(set_attr "type" "fadd")
     (set_attr "mode" "<UNITMODE>")])
  
+ (define_expand "addptr<mode>3"
+   [(set (match_operand:X 	 0 "register_operand")
+         (plus:X (match_operand:X 1 "register_operand")
+                 (match_operand 	 2 "const_int_operand")))]
+   ""
+ {
+   gcc_assert (CONST_INT_P (operands[2]));
+   bool status = synthesize_add (operands);
+ 
+   if (!SMALL_OPERAND (INTVAL (operands[2])))
+     {
+       gcc_assert (status);
+       DONE;
+     }
+ })
+ 
  (define_insn "*addsi3"
    [(set (match_operand:SI          0 "register_operand" "=r,r")
  	(plus:SI (match_operand:SI 1 "register_operand" " r,r")
***************
*** 759,804 ****
    [(set_attr "type" "arith")
     (set_attr "mode" "DI")])
  
- ;; Special case of adding a reg and constant if latter is sum of two S12
- ;; values (in range -2048 to 2047). Avoid materialized the const and fuse
- ;; into the add (with an additional add for 2nd value). Makes a 3 insn
- ;; sequence into 2 insn.
- 
- (define_insn_and_split "*add<mode>3_const_sum_of_two_s12"
-   [(set (match_operand:P	 0 "register_operand" "=r,r")
- 	(plus:P (match_operand:P 1 "register_operand" " r,r")
- 		(match_operand:P 2 "const_two_s12"    " MiG,r")))]
-   "!riscv_reg_frame_related (operands[0])"
- {
-   /* operand matching MiG constraint is always meant to be split.  */
-   if (which_alternative == 0)
-     return "#";
-   else
-     return "add %0,%1,%2";
- }
-   ""
-   [(set (match_dup 0)
- 	(plus:P (match_dup 1) (match_dup 3)))
-    (set (match_dup 0)
- 	(plus:P (match_dup 0) (match_dup 4)))]
- {
-   int val = INTVAL (operands[2]);
-   if (SUM_OF_TWO_S12_P (val))
-     {
-        operands[3] = GEN_INT (2047);
-        operands[4] = GEN_INT (val - 2047);
-     }
-   else if (SUM_OF_TWO_S12_N (val))
-     {
-        operands[3] = GEN_INT (-2048);
-        operands[4] = GEN_INT (val + 2048);
-     }
-   else
-       gcc_unreachable ();
- }
-   [(set_attr "type" "arith")
-    (set_attr "mode" "<P:MODE>")])
- 
  (define_expand "addv<mode>4"
    [(set (match_operand:GPR           0 "register_operand" "=r,r")
  	(plus:GPR (match_operand:GPR 1 "register_operand" " r,r")
--- 775,780 ----
diff -Nrcpad gcc-16-20251012/gcc/config/rs6000/aix.h gcc-16-20251019/gcc/config/rs6000/aix.h
*** gcc-16-20251012/gcc/config/rs6000/aix.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/rs6000/aix.h	Sun Oct 19 22:32:13 2025
***************
*** 281,284 ****
  #undef SUBTARGET_DRIVER_SELF_SPECS
  #define SUBTARGET_DRIVER_SELF_SPECS	\
  "%{m64:-maix64} %<m64",			\
! "%{m32:-maix32} %<m32"
--- 281,286 ----
  #undef SUBTARGET_DRIVER_SELF_SPECS
  #define SUBTARGET_DRIVER_SELF_SPECS	\
  "%{m64:-maix64} %<m64",			\
! "%{m32:-maix32} %<m32",			\
! "%{fstack-protector*: %<fstack-protector* \
!    %estack-protector not supported on AIX}"
diff -Nrcpad gcc-16-20251012/gcc/config/rs6000/altivec.md gcc-16-20251019/gcc/config/rs6000/altivec.md
*** gcc-16-20251012/gcc/config/rs6000/altivec.md	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/config/rs6000/altivec.md	Sun Oct 19 22:32:13 2025
***************
*** 3772,3778 ****
    DONE;
  })
  
! (define_expand "widen_usum<mode>3"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (plus:V4SI (match_operand:V4SI 2 "register_operand" "v")
                     (unspec:V4SI [(match_operand:VIshort 1 "register_operand" "v")]
--- 3772,3778 ----
    DONE;
  })
  
! (define_expand "widen_usumv4si<mode>3"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (plus:V4SI (match_operand:V4SI 2 "register_operand" "v")
                     (unspec:V4SI [(match_operand:VIshort 1 "register_operand" "v")]
***************
*** 3786,3792 ****
    DONE;
  })
  
! (define_expand "widen_ssumv16qi3"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (plus:V4SI (match_operand:V4SI 2 "register_operand" "v")
                     (unspec:V4SI [(match_operand:V16QI 1 "register_operand" "v")]
--- 3786,3792 ----
    DONE;
  })
  
! (define_expand "widen_ssumv4siv16qi3"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (plus:V4SI (match_operand:V4SI 2 "register_operand" "v")
                     (unspec:V4SI [(match_operand:V16QI 1 "register_operand" "v")]
***************
*** 3800,3806 ****
    DONE;
  })
  
! (define_expand "widen_ssumv8hi3"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (plus:V4SI (match_operand:V4SI 2 "register_operand" "v")
                     (unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")]
--- 3800,3806 ----
    DONE;
  })
  
! (define_expand "widen_ssumv4siv8hi3"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
          (plus:V4SI (match_operand:V4SI 2 "register_operand" "v")
                     (unspec:V4SI [(match_operand:V8HI 1 "register_operand" "v")]
diff -Nrcpad gcc-16-20251012/gcc/config.gcc gcc-16-20251019/gcc/config.gcc
*** gcc-16-20251012/gcc/config.gcc	Sun Oct 12 22:32:39 2025
--- gcc-16-20251019/gcc/config.gcc	Sun Oct 19 22:32:13 2025
*************** i[34567]86-*-* | x86_64-*-*)
*** 464,471 ****
  		       avx10_2mediaintrin.h avx10_2convertintrin.h
  		       avx10_2bf16intrin.h avx10_2satcvtintrin.h
  		       avx10_2minmaxintrin.h avx10_2copyintrin.h
! 		       amxavx512intrin.h amxtf32intrin.h amxtransposeintrin.h
! 		       amxfp8intrin.h movrsintrin.h amxmovrsintrin.h"
  	;;
  ia64-*-*)
  	extra_headers=ia64intrin.h
--- 464,471 ----
  		       avx10_2mediaintrin.h avx10_2convertintrin.h
  		       avx10_2bf16intrin.h avx10_2satcvtintrin.h
  		       avx10_2minmaxintrin.h avx10_2copyintrin.h
! 		       amxavx512intrin.h amxtf32intrin.h amxfp8intrin.h
! 		       movrsintrin.h amxmovrsintrin.h"
  	;;
  ia64-*-*)
  	extra_headers=ia64intrin.h
diff -Nrcpad gcc-16-20251012/gcc/configure gcc-16-20251019/gcc/configure
*** gcc-16-20251012/gcc/configure	Sun Oct 12 22:34:26 2025
--- gcc-16-20251019/gcc/configure	Sun Oct 19 22:33:15 2025
*************** $as_echo "$as_me: executing $ac_file com
*** 36891,36897 ****
      "depdir":C) $SHELL $ac_aux_dir/mkinstalldirs $DEPDIR ;;
      "gccdepdir":C)
    ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
!   for lang in $subdirs c-family common analyzer diagnostics text-art rtl-ssa sym-exec
    do
        ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
    done ;;
--- 36891,36897 ----
      "depdir":C) $SHELL $ac_aux_dir/mkinstalldirs $DEPDIR ;;
      "gccdepdir":C)
    ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
!   for lang in $subdirs c-family common analyzer custom-sarif-properties diagnostics text-art rtl-ssa sym-exec
    do
        ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
    done ;;
diff -Nrcpad gcc-16-20251012/gcc/configure.ac gcc-16-20251019/gcc/configure.ac
*** gcc-16-20251012/gcc/configure.ac	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/configure.ac	Sun Oct 19 22:32:13 2025
*************** AC_CHECK_HEADERS(ext/hash_map)
*** 1368,1374 ****
  ZW_CREATE_DEPDIR
  AC_CONFIG_COMMANDS([gccdepdir],[
    ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
!   for lang in $subdirs c-family common analyzer diagnostics text-art rtl-ssa sym-exec
    do
        ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
    done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
--- 1368,1374 ----
  ZW_CREATE_DEPDIR
  AC_CONFIG_COMMANDS([gccdepdir],[
    ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs build/$DEPDIR
!   for lang in $subdirs c-family common analyzer custom-sarif-properties diagnostics text-art rtl-ssa sym-exec
    do
        ${CONFIG_SHELL-/bin/sh} $ac_aux_dir/mkinstalldirs $lang/$DEPDIR
    done], [subdirs="$subdirs" ac_aux_dir=$ac_aux_dir DEPDIR=$DEPDIR])
diff -Nrcpad gcc-16-20251012/gcc/cp/ChangeLog gcc-16-20251019/gcc/cp/ChangeLog
*** gcc-16-20251012/gcc/cp/ChangeLog	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/cp/ChangeLog	Sun Oct 19 22:32:13 2025
***************
*** 1,3 ****
--- 1,46 ----
+ 2025-10-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/119060
+ 	* cxxapi-data.csv: Add observable_checkpoint to <utility>.
+ 	* std-name-hint.gperf: Add observable_checkpoint to <utility>.
+ 	* std-name-hint.h: Regenerate.
+ 
+ 2025-10-18  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122279
+ 	* module.cc (depset::hash::add_namespace_entities): Seed any
+ 	purview using-decls.
+ 	(module_state::write_using_directives): Stream if the udir was
+ 	exported or not.
+ 	(module_state::read_using_directives): Add the using-directive
+ 	if it's either exported or part of this module.
+ 
+ 2025-10-14  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122192
+ 	* parser.cc (cp_parser_mem_initializer_id): Pass class_type
+ 	instead of typename_type to cp_parser_class_name in the
+ 	nested-name-specifier case.
+ 
+ 2025-10-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122228
+ 	* decl.cc (cp_make_fname_decl): When not using fname_as_decl,
+ 	attempt to translate name into ordinary literal encoding.
+ 
+ 2025-10-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* decl.cc (omp_declare_variant_finalize_one): If !nbase_args
+ 	and TREE_TYPE (decl) has TYPE_NO_NAMED_ARGS_STDARG_P bit set
+ 	and varg is NULL, temporarily set TYPE_NO_NAMED_ARGS_STDARG_P
+ 	on TREE_TYPE (variant).
+ 
+ 2025-10-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122163
+ 	* expr.cc (mark_use): When processing a reference, always return
+ 	an lvalue reference when !rvalue_p.
+ 
  2025-10-10  Patrick Palka  <ppalka@redhat.com>
  
  	PR c++/122192
diff -Nrcpad gcc-16-20251012/gcc/cp/cxxapi-data.csv gcc-16-20251019/gcc/cp/cxxapi-data.csv
*** gcc-16-20251012/gcc/cp/cxxapi-data.csv	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/cp/cxxapi-data.csv	Sun Oct 19 22:32:13 2025
***************
*** 952,957 ****
--- 952,958 ----
  <utility>,in_range,1,cxx20
  <utility>,to_underlying,1,cxx23
  <utility>,unreachable,1,cxx23
+ <utility>,observable_checkpoint,1,cxx26
  <utility>,integer_sequence,1,cxx14
  <utility>,index_sequence,1,cxx14
  <utility>,make_integer_sequence,1,cxx14
diff -Nrcpad gcc-16-20251012/gcc/cp/decl.cc gcc-16-20251019/gcc/cp/decl.cc
*** gcc-16-20251012/gcc/cp/decl.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/cp/decl.cc	Sun Oct 19 22:32:13 2025
*************** cp_make_fname_decl (location_t loc, tree
*** 5806,5811 ****
--- 5806,5828 ----
  	  name = cxx_printable_name (current_function_decl, 2);
  	}
  
+       if (!release_name)
+ 	{
+ 	  cpp_string cstr = { 0, 0 }, strname;
+ 	  size_t len = strlen (name) + 3; /* Two for '"'s.  One for NULL.  */
+ 	  char *namep = XNEWVEC (char, len);
+ 	  snprintf (namep, len, "\"%s\"", name);
+ 	  strname.text = (unsigned char *) namep;
+ 	  strname.len = len - 1;
+ 	  if (cpp_interpret_string (parse_in, &strname, 1, &cstr, CPP_STRING))
+ 	    {
+ 	      name = (const char *) cstr.text;
+ 	      release_name = true;
+ 	    }
+ 
+ 	  XDELETEVEC (namep);
+ 	}
+ 
        size_t length = strlen (name);
        domain = build_index_type (size_int (length));
        init = build_string (length + 1, name);
*************** omp_declare_variant_finalize_one (tree d
*** 9099,9104 ****
--- 9116,9122 ----
  	  for (unsigned i = 0; i < nappend_args && varg; i++)
  	    varg = TREE_CHAIN (varg);
  	  tree saved_vargs;
+ 	  int saved_no_named_args_stdarg = 0;
  	  if (nbase_args)
  	    {
  	      saved_vargs = TREE_CHAIN (vargs);
*************** omp_declare_variant_finalize_one (tree d
*** 9108,9113 ****
--- 9126,9136 ----
  	    {
  	      saved_vargs = vargs;
  	      TYPE_ARG_TYPES (TREE_TYPE (variant)) = varg;
+ 	      saved_no_named_args_stdarg
+ 		= TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (variant));
+ 	      if (TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (decl))
+ 		  && varg == NULL_TREE)
+ 		TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (variant)) = 1;
  	    }
  	  /* Skip assert check that TYPE_CANONICAL is the same.  */
  	  fail = !comptypes (TREE_TYPE (decl), TREE_TYPE (variant),
*************** omp_declare_variant_finalize_one (tree d
*** 9115,9121 ****
  	  if (nbase_args)
  	    TREE_CHAIN (vargs) = saved_vargs;
  	  else
! 	    TYPE_ARG_TYPES (TREE_TYPE (variant)) = saved_vargs;
  	  varg = saved_vargs;
  	  if (!fail && !processing_template_decl)
  	    for (unsigned i = 0; i < nappend_args;
--- 9138,9148 ----
  	  if (nbase_args)
  	    TREE_CHAIN (vargs) = saved_vargs;
  	  else
! 	    {
! 	      TYPE_ARG_TYPES (TREE_TYPE (variant)) = saved_vargs;
! 	      TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (variant))
! 		= saved_no_named_args_stdarg;
! 	    }
  	  varg = saved_vargs;
  	  if (!fail && !processing_template_decl)
  	    for (unsigned i = 0; i < nappend_args;
diff -Nrcpad gcc-16-20251012/gcc/cp/module.cc gcc-16-20251019/gcc/cp/module.cc
*** gcc-16-20251012/gcc/cp/module.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/cp/module.cc	Sun Oct 19 22:32:13 2025
*************** depset::hash::add_namespace_entities (tr
*** 14761,14770 ****
  
    /* Seed any using-directives so that we emit the relevant namespaces.  */
    for (tree udir : NAMESPACE_LEVEL (ns)->using_directives)
!     if (TREE_CODE (udir) == USING_DECL && DECL_MODULE_EXPORT_P (udir))
        {
  	make_dependency (USING_DECL_DECLS (udir), depset::EK_NAMESPACE);
! 	count++;
        }
  
    if (count)
--- 14761,14771 ----
  
    /* Seed any using-directives so that we emit the relevant namespaces.  */
    for (tree udir : NAMESPACE_LEVEL (ns)->using_directives)
!     if (TREE_CODE (udir) == USING_DECL && DECL_MODULE_PURVIEW_P (udir))
        {
  	make_dependency (USING_DECL_DECLS (udir), depset::EK_NAMESPACE);
! 	if (DECL_MODULE_EXPORT_P (udir))
! 	  count++;
        }
  
    if (count)
*************** module_state::write_using_directives (el
*** 17397,17410 ****
        tree parent = parent_dep->get_entity ();
        for (auto udir : NAMESPACE_LEVEL (parent)->using_directives)
  	{
! 	  if (TREE_CODE (udir) != USING_DECL || !DECL_MODULE_EXPORT_P (udir))
  	    continue;
  	  tree target = USING_DECL_DECLS (udir);
  	  depset *target_dep = table.find_dependency (target);
  	  gcc_checking_assert (target_dep);
  
  	  dump () && dump ("Writing using-directive in %N for %N",
  			   parent, target);
  	  write_namespace (sec, parent_dep);
  	  write_namespace (sec, target_dep);
  	  ++num;
--- 17398,17413 ----
        tree parent = parent_dep->get_entity ();
        for (auto udir : NAMESPACE_LEVEL (parent)->using_directives)
  	{
! 	  if (TREE_CODE (udir) != USING_DECL || !DECL_MODULE_PURVIEW_P (udir))
  	    continue;
+ 	  bool exported = DECL_MODULE_EXPORT_P (udir);
  	  tree target = USING_DECL_DECLS (udir);
  	  depset *target_dep = table.find_dependency (target);
  	  gcc_checking_assert (target_dep);
  
  	  dump () && dump ("Writing using-directive in %N for %N",
  			   parent, target);
+ 	  sec.u (exported);
  	  write_namespace (sec, parent_dep);
  	  write_namespace (sec, target_dep);
  	  ++num;
*************** module_state::read_using_directives (uns
*** 17441,17453 ****
  
    for (unsigned ix = 0; ix != num; ++ix)
      {
        tree parent = read_namespace (sec);
        tree target = read_namespace (sec);
        if (sec.get_overrun ())
  	break;
  
        dump () && dump ("Read using-directive in %N for %N", parent, target);
!       add_using_namespace (parent, target);
      }
  
    dump.outdent ();
--- 17444,17458 ----
  
    for (unsigned ix = 0; ix != num; ++ix)
      {
+       bool exported = sec.u ();
        tree parent = read_namespace (sec);
        tree target = read_namespace (sec);
        if (sec.get_overrun ())
  	break;
  
        dump () && dump ("Read using-directive in %N for %N", parent, target);
!       if (exported || is_module () || is_partition ())
! 	add_using_namespace (parent, target);
      }
  
    dump.outdent ();
diff -Nrcpad gcc-16-20251012/gcc/cp/parser.cc gcc-16-20251019/gcc/cp/parser.cc
*** gcc-16-20251012/gcc/cp/parser.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/cp/parser.cc	Sun Oct 19 22:32:13 2025
*************** cp_parser_mem_initializer_id (cp_parser*
*** 19091,19097 ****
      return cp_parser_class_name (parser,
  				 /*typename_keyword_p=*/true,
  				 /*template_keyword_p=*/template_p,
! 				 typename_type,
  				 /*check_dependency_p=*/true,
  				 /*class_head_p=*/false,
  				 /*is_declaration=*/true);
--- 19091,19097 ----
      return cp_parser_class_name (parser,
  				 /*typename_keyword_p=*/true,
  				 /*template_keyword_p=*/template_p,
! 				 class_type,
  				 /*check_dependency_p=*/true,
  				 /*class_head_p=*/false,
  				 /*is_declaration=*/true);
diff -Nrcpad gcc-16-20251012/gcc/cp/std-name-hint.gperf gcc-16-20251019/gcc/cp/std-name-hint.gperf
*** gcc-16-20251012/gcc/cp/std-name-hint.gperf	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/cp/std-name-hint.gperf	Sun Oct 19 22:32:13 2025
*************** piecewise_construct, "<utility>", cxx11
*** 577,582 ****
--- 577,583 ----
  piecewise_construct_t, "<utility>", cxx11
  to_underlying, "<utility>", cxx23
  unreachable, "<utility>", cxx23
+ observable_checkpoint, "<utility>", cxx26
  # <variant>
  bad_variant_access, "<variant>", cxx17
  holds_alternative, "<variant>", cxx17
diff -Nrcpad gcc-16-20251012/gcc/cp/std-name-hint.h gcc-16-20251019/gcc/cp/std-name-hint.h
*** gcc-16-20251012/gcc/cp/std-name-hint.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/cp/std-name-hint.h	Sun Oct 19 22:32:13 2025
*************** std_name_hint_lookup::find (const char *
*** 135,141 ****
  {
    enum
      {
!       TOTAL_KEYWORDS = 487,
        MIN_WORD_LENGTH = 2,
        MAX_WORD_LENGTH = 39,
        MIN_HASH_VALUE = 7,
--- 135,141 ----
  {
    enum
      {
!       TOTAL_KEYWORDS = 488,
        MIN_WORD_LENGTH = 2,
        MAX_WORD_LENGTH = 39,
        MIN_HASH_VALUE = 7,
*************** std_name_hint_lookup::find (const char *
*** 178,184 ****
        {"print", "<print>", cxx23},
  #line 221 "std-name-hint.gperf"
        {"promise", "<future>", cxx11},
! #line 581 "std-name-hint.gperf"
        {"bad_variant_access", "<variant>", cxx17},
  #line 328 "std-name-hint.gperf"
        {"to_address", "<memory>", cxx20},
--- 178,184 ----
        {"print", "<print>", cxx23},
  #line 221 "std-name-hint.gperf"
        {"promise", "<future>", cxx11},
! #line 582 "std-name-hint.gperf"
        {"bad_variant_access", "<variant>", cxx17},
  #line 328 "std-name-hint.gperf"
        {"to_address", "<memory>", cxx20},
*************** std_name_hint_lookup::find (const char *
*** 198,204 ****
        {"nounitbuf", "<ios>", cxx98},
  #line 433 "std-name-hint.gperf"
        {"basic_stringbuf", "<sstream>", cxx98},
! #line 592 "std-name-hint.gperf"
        {"vector", "<vector>", cxx98},
  #line 246 "std-name-hint.gperf"
        {"noshowbase", "<ios>", cxx98},
--- 198,204 ----
        {"nounitbuf", "<ios>", cxx98},
  #line 433 "std-name-hint.gperf"
        {"basic_stringbuf", "<sstream>", cxx98},
! #line 593 "std-name-hint.gperf"
        {"vector", "<vector>", cxx98},
  #line 246 "std-name-hint.gperf"
        {"noshowbase", "<ios>", cxx98},
*************** std_name_hint_lookup::find (const char *
*** 228,234 ****
        {"tuple_element", "<tuple>", cxx11},
  #line 519 "std-name-hint.gperf"
        {"tuple_element_t", "<tuple>", cxx14},
! #line 584 "std-name-hint.gperf"
        {"variant", "<variant>", cxx17},
  #line 386 "std-name-hint.gperf"
        {"ends", "<ostream>", cxx98},
--- 228,234 ----
        {"tuple_element", "<tuple>", cxx11},
  #line 519 "std-name-hint.gperf"
        {"tuple_element_t", "<tuple>", cxx14},
! #line 585 "std-name-hint.gperf"
        {"variant", "<variant>", cxx17},
  #line 386 "std-name-hint.gperf"
        {"ends", "<ostream>", cxx98},
*************** std_name_hint_lookup::find (const char *
*** 244,254 ****
        {"noshowpos", "<ios>", cxx98},
  #line 388 "std-name-hint.gperf"
        {"flush_emit", "<ostream>", cxx20},
! #line 585 "std-name-hint.gperf"
        {"variant_alternative", "<variant>", cxx17},
  #line 537 "std-name-hint.gperf"
        {"void_t", "<type_traits>", cxx17},
! #line 586 "std-name-hint.gperf"
        {"variant_alternative_t", "<variant>", cxx17},
  #line 134 "std-name-hint.gperf"
        {"relation", "<concepts>", cxx20},
--- 244,254 ----
        {"noshowpos", "<ios>", cxx98},
  #line 388 "std-name-hint.gperf"
        {"flush_emit", "<ostream>", cxx20},
! #line 586 "std-name-hint.gperf"
        {"variant_alternative", "<variant>", cxx17},
  #line 537 "std-name-hint.gperf"
        {"void_t", "<type_traits>", cxx17},
! #line 587 "std-name-hint.gperf"
        {"variant_alternative_t", "<variant>", cxx17},
  #line 134 "std-name-hint.gperf"
        {"relation", "<concepts>", cxx20},
*************** std_name_hint_lookup::find (const char *
*** 338,344 ****
        {"basic_streambuf", "<streambuf>", cxx98},
  #line 167 "std-name-hint.gperf"
        {"basic_format_args", "<format>", cxx20},
! #line 588 "std-name-hint.gperf"
        {"variant_size", "<variant>", cxx17},
  #line 407 "std-name-hint.gperf"
        {"multiset", "<set>", cxx98},
--- 338,344 ----
        {"basic_streambuf", "<streambuf>", cxx98},
  #line 167 "std-name-hint.gperf"
        {"basic_format_args", "<format>", cxx20},
! #line 589 "std-name-hint.gperf"
        {"variant_size", "<variant>", cxx17},
  #line 407 "std-name-hint.gperf"
        {"multiset", "<set>", cxx98},
*************** std_name_hint_lookup::find (const char *
*** 360,372 ****
        {"remove_cvref_t", "<type_traits>", cxx20},
  #line 289 "std-name-hint.gperf"
        {"ostream_iterator", "<iterator>", cxx98},
! #line 587 "std-name-hint.gperf"
        {"variant_npos", "<variant>", cxx17},
  #line 244 "std-name-hint.gperf"
        {"left", "<ios>", cxx98},
  #line 200 "std-name-hint.gperf"
        {"fstream", "<fstream>", cxx98},
! #line 590 "std-name-hint.gperf"
        {"visit", "<variant>", cxx17},
  #line 208 "std-name-hint.gperf"
        {"invoke", "<functional>", cxx17},
--- 360,372 ----
        {"remove_cvref_t", "<type_traits>", cxx20},
  #line 289 "std-name-hint.gperf"
        {"ostream_iterator", "<iterator>", cxx98},
! #line 588 "std-name-hint.gperf"
        {"variant_npos", "<variant>", cxx17},
  #line 244 "std-name-hint.gperf"
        {"left", "<ios>", cxx98},
  #line 200 "std-name-hint.gperf"
        {"fstream", "<fstream>", cxx98},
! #line 591 "std-name-hint.gperf"
        {"visit", "<variant>", cxx17},
  #line 208 "std-name-hint.gperf"
        {"invoke", "<functional>", cxx17},
*************** std_name_hint_lookup::find (const char *
*** 458,464 ****
        {"showpoint", "<ios>", cxx98},
  #line 446 "std-name-hint.gperf"
        {"stacktrace", "<stacktrace>", cxx23},
! #line 589 "std-name-hint.gperf"
        {"variant_size_v", "<variant>", cxx17},
  #line 212 "std-name-hint.gperf"
        {"reference_wrapper", "<functional>", cxx11},
--- 458,464 ----
        {"showpoint", "<ios>", cxx98},
  #line 446 "std-name-hint.gperf"
        {"stacktrace", "<stacktrace>", cxx23},
! #line 590 "std-name-hint.gperf"
        {"variant_size_v", "<variant>", cxx17},
  #line 212 "std-name-hint.gperf"
        {"reference_wrapper", "<functional>", cxx11},
*************** std_name_hint_lookup::find (const char *
*** 474,480 ****
        {"allocator_traits", "<memory>", cxx11},
  #line 183 "std-name-hint.gperf"
        {"make_wformat_args", "<format>", cxx20},
! #line 583 "std-name-hint.gperf"
        {"monostate", "<variant>", cxx17},
  #line 387 "std-name-hint.gperf"
        {"flush", "<ostream>", cxx98},
--- 474,480 ----
        {"allocator_traits", "<memory>", cxx11},
  #line 183 "std-name-hint.gperf"
        {"make_wformat_args", "<format>", cxx20},
! #line 584 "std-name-hint.gperf"
        {"monostate", "<variant>", cxx17},
  #line 387 "std-name-hint.gperf"
        {"flush", "<ostream>", cxx98},
*************** std_name_hint_lookup::find (const char *
*** 582,588 ****
        {"stop_source", "<stop_token>", cxx20},
  #line 548 "std-name-hint.gperf"
        {"unordered_set", "<unordered_set>", cxx11},
! #line 582 "std-name-hint.gperf"
        {"holds_alternative", "<variant>", cxx17},
  #line 514 "std-name-hint.gperf"
        {"make_tuple", "<tuple>", cxx11},
--- 582,588 ----
        {"stop_source", "<stop_token>", cxx20},
  #line 548 "std-name-hint.gperf"
        {"unordered_set", "<unordered_set>", cxx11},
! #line 583 "std-name-hint.gperf"
        {"holds_alternative", "<variant>", cxx17},
  #line 514 "std-name-hint.gperf"
        {"make_tuple", "<tuple>", cxx11},
*************** std_name_hint_lookup::find (const char *
*** 960,965 ****
--- 960,967 ----
        {"domain_error", "<stdexcept>", cxx98},
  #line 84 "std-name-hint.gperf"
        {"chrono::steady_clock", "<chrono>", cxx11},
+ #line 580 "std-name-hint.gperf"
+       {"observable_checkpoint", "<utility>", cxx26},
  #line 188 "std-name-hint.gperf"
        {"vformat_to", "<format>", cxx20},
  #line 54 "std-name-hint.gperf"
*************** std_name_hint_lookup::find (const char *
*** 1142,1148 ****
           -1,    -1,    24,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    25,    26,    27,    -1,
           -1,    -1,    28,    29,    -1,    -1,    30,
!        -629,  -456,    -2,    33,    -1,    34,    -1,
           35,    -1,    36,    -1,    -1,    -1,    -1,
           37,    -1,    38,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    39,    -1,    -1,    -1,
--- 1144,1150 ----
           -1,    -1,    24,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    25,    26,    27,    -1,
           -1,    -1,    28,    29,    -1,    -1,    30,
!        -630,  -457,    -2,    33,    -1,    34,    -1,
           35,    -1,    36,    -1,    -1,    -1,    -1,
           37,    -1,    38,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    39,    -1,    -1,    -1,
*************** std_name_hint_lookup::find (const char *
*** 1184,1191 ****
           -1,   152,   153,    -1,    -1,    -1,    -1,
           -1,    -1,   154,    -1,   155,   156,    -1,
           -1,    -1,   157,    -1,    -1,   158,    -1,
!         159,   160,    -1,    -1,    -1,  -933,    -1,
!         163,   164,    -1,   165,  -326,    -2,    -1,
           -1,   166,    -1,    -1,    -1,    -1,   167,
          168,    -1,   169,    -1,    -1,    -1,   170,
          171,   172,   173,    -1,    -1,    -1,   174,
--- 1186,1193 ----
           -1,   152,   153,    -1,    -1,    -1,    -1,
           -1,    -1,   154,    -1,   155,   156,    -1,
           -1,    -1,   157,    -1,    -1,   158,    -1,
!         159,   160,    -1,    -1,    -1,  -934,    -1,
!         163,   164,    -1,   165,  -327,    -2,    -1,
           -1,   166,    -1,    -1,    -1,    -1,   167,
          168,    -1,   169,    -1,    -1,    -1,   170,
          171,   172,   173,    -1,    -1,    -1,   174,
*************** std_name_hint_lookup::find (const char *
*** 1195,1205 ****
           -1,   185,    -1,   186,   187,    -1,   188,
          189,   190,   191,   192,    -1,   193,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   194,    -1, -1005,  -292,
           -2,    -1,    -1,    -1,   197,    -1,    -1,
          198,   199,   200,   201,    -1,    -1,    -1,
          202,   203,    -1,    -1,    -1,    -1,   204,
!          -1,    -1, -1030,  -282,    -2,    -1,   207,
           -1,    -1,    -1,   208,   209,    -1,    -1,
           -1,   210,    -1,    -1,    -1,   211,    -1,
          212,    -1,    -1,   213,    -1,    -1,   214,
--- 1197,1207 ----
           -1,   185,    -1,   186,   187,    -1,   188,
          189,   190,   191,   192,    -1,   193,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   194,    -1, -1006,  -293,
           -2,    -1,    -1,    -1,   197,    -1,    -1,
          198,   199,   200,   201,    -1,    -1,    -1,
          202,   203,    -1,    -1,    -1,    -1,   204,
!          -1,    -1, -1031,  -283,    -2,    -1,   207,
           -1,    -1,    -1,   208,   209,    -1,    -1,
           -1,   210,    -1,    -1,    -1,   211,    -1,
          212,    -1,    -1,   213,    -1,    -1,   214,
*************** std_name_hint_lookup::find (const char *
*** 1227,1233 ****
          275,   276,    -1,   277,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,   278,    -1,
           -1,    -1,    -1,    -1,   279,   280,   281,
!       -1225,   284,  -205,    -2,    -1,    -1,    -1,
           -1,   285,    -1,    -1,    -1,    -1,   286,
          287,   288,    -1,    -1,   289,   290,   291,
           -1,    -1,    -1,    -1,   292,    -1,    -1,
--- 1229,1235 ----
          275,   276,    -1,   277,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,   278,    -1,
           -1,    -1,    -1,    -1,   279,   280,   281,
!       -1226,   284,  -206,    -2,    -1,    -1,    -1,
           -1,   285,    -1,    -1,    -1,    -1,   286,
          287,   288,    -1,    -1,   289,   290,   291,
           -1,    -1,    -1,    -1,   292,    -1,    -1,
*************** std_name_hint_lookup::find (const char *
*** 1247,1253 ****
           -1,    -1,   331,    -1,   332,    -1,    -1,
           -1,    -1,   333,   334,   335,    -1,    -1,
           -1,   336,    -1,    -1,   337,   338,    -1,
!          -1,    -1,    -1, -1367,  -148,    -2,    -1,
          341,    -1,    -1,    -1,    -1,    -1,    -1,
          342,    -1,    -1,   343,    -1,    -1,    -1,
           -1,   344,   345,    -1,   346,    -1,    -1,
--- 1249,1255 ----
           -1,    -1,   331,    -1,   332,    -1,    -1,
           -1,    -1,   333,   334,   335,    -1,    -1,
           -1,   336,    -1,    -1,   337,   338,    -1,
!          -1,    -1,    -1, -1368,  -149,    -2,    -1,
          341,    -1,    -1,    -1,    -1,    -1,    -1,
          342,    -1,    -1,   343,    -1,    -1,    -1,
           -1,   344,   345,    -1,   346,    -1,    -1,
*************** std_name_hint_lookup::find (const char *
*** 1282,1351 ****
           -1,    -1,    -1,    -1,    -1,    -1,   395,
          396,   397,    -1,    -1,   398,   399,    -1,
          400,   401,   402,   403,   404,   405,   406,
!         407,    -1,   408,    -1,    -1,   409,   410,
!          -1,    -1,    -1,   411,    -1,    -1,    -1,
!          -1,   412,    -1,   413,    -1,    -1,   414,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,   415,    -1,    -1,    -1,   416,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!         417,    -1,    -1,   418,    -1,    -1,   419,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   420,   421,    -1,    -1,
!          -1,    -1,    -1,    -1,   422,    -1,    -1,
           -1,    -1,    -1,    -1,   423,    -1,    -1,
-          -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,   424,    -1,    -1,
-          -1,    -1,    -1,    -1, -1704,   -62,    -2,
-          -1,    -1,    -1,    -1,   427,    -1,    -1,
-          -1,    -1,    -1,   428,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,   429,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!         430,    -1,    -1,    -1,    -1,    -1,   431,
!          -1,    -1,    -1,    -1,   432,    -1,    -1,
!          -1,    -1,    -1,    -1,    -1,   433,    -1,
!          -1,    -1,    -1,   434,    -1,    -1,   435,
!          -1,    -1,    -1,    -1,    -1,    -1,   436,
!         437,    -1,    -1,   438,    -1,    -1,    -1,
!          -1,    -1,   439,   440,    -1,    -1,    -1,
!         441,    -1,   442,    -1,   443,    -1,    -1,
!         444,    -1,    -1,    -1,   445,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
-          -1,    -1,    -1,    -1,    -1,    -1,   446,
-          -1,   447,    -1,    -1,    -1,    -1,    -1,
-         448,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   449,    -1,   450,    -1,
!          -1,    -1,    -1,    -1,   451,    -1,    -1,
!          -1,    -1,    -1,   452,    -1,    -1,    -1,
!          -1,    -1,   453,    -1,    -1,   454,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,   455,    -1,    -1,    -1,   456,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   457,    -1,   458,   459,
!          -1,    -1,    -1,    -1,    -1,    -1,   460,
!          -1,    -1,    -1,    -1,   461,    -1,    -1,
!          -1,    -1,   462,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,   463,    -1,    -1,
!          -1,    -1,    -1,   464,    -1,    -1,    -1,
           -1,    -1,    -1,   465,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,   466,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,   467,    -1,    -1,    -1,   468,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,    -1,    -1,   469,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
--- 1284,1353 ----
           -1,    -1,    -1,    -1,    -1,    -1,   395,
          396,   397,    -1,    -1,   398,   399,    -1,
          400,   401,   402,   403,   404,   405,   406,
!         407,   408,   409,    -1,    -1,   410,   411,
!          -1,    -1,    -1,   412,    -1,    -1,    -1,
!          -1,   413,    -1,   414,    -1,    -1,   415,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,   416,    -1,    -1,    -1,   417,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!         418,    -1,    -1,   419,    -1,    -1,   420,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   421,   422,    -1,    -1,
           -1,    -1,    -1,    -1,   423,    -1,    -1,
           -1,    -1,    -1,    -1,   424,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,   425,    -1,    -1,
!          -1,    -1,    -1,    -1, -1705,   -62,    -2,
!          -1,    -1,    -1,    -1,   428,    -1,    -1,
!          -1,    -1,    -1,   429,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,   430,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
+         431,    -1,    -1,    -1,    -1,    -1,   432,
+          -1,    -1,    -1,    -1,   433,    -1,    -1,
+          -1,    -1,    -1,    -1,    -1,   434,    -1,
+          -1,    -1,    -1,   435,    -1,    -1,   436,
+          -1,    -1,    -1,    -1,    -1,    -1,   437,
+         438,    -1,    -1,   439,    -1,    -1,    -1,
+          -1,    -1,   440,   441,    -1,    -1,    -1,
+         442,    -1,   443,    -1,   444,    -1,    -1,
+         445,    -1,    -1,    -1,   446,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,    -1,    -1,   447,
!          -1,   448,    -1,    -1,    -1,    -1,    -1,
!         449,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   450,    -1,   451,    -1,
!          -1,    -1,    -1,    -1,   452,    -1,    -1,
!          -1,    -1,    -1,   453,    -1,    -1,    -1,
!          -1,    -1,   454,    -1,    -1,   455,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,   456,    -1,    -1,    -1,   457,    -1,
!          -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   458,    -1,   459,   460,
!          -1,    -1,    -1,    -1,    -1,    -1,   461,
!          -1,    -1,    -1,    -1,   462,    -1,    -1,
!          -1,    -1,   463,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,   464,    -1,    -1,
           -1,    -1,    -1,   465,    -1,    -1,    -1,
+          -1,    -1,    -1,   466,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,   467,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,   468,    -1,    -1,    -1,   469,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,    -1,    -1,   470,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
*************** std_name_hint_lookup::find (const char *
*** 1354,1375 ****
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,   470,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   471,    -1,   472,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,   473,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,    -1,   474,    -1,
!          -1,   475,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!         476,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
--- 1356,1377 ----
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,   471,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   472,    -1,   473,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,   474,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,    -1,   475,    -1,
!          -1,   476,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!         477,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
*************** std_name_hint_lookup::find (const char *
*** 1380,1393 ****
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,   477,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   478,   479,   480,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,    -1,   481,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
--- 1382,1395 ----
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,   478,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   479,   480,   481,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,    -1,    -1,   482,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
*************** std_name_hint_lookup::find (const char *
*** 1402,1413 ****
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,   482,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   483,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
--- 1404,1415 ----
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,   483,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!          -1,    -1,    -1,   484,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
*************** std_name_hint_lookup::find (const char *
*** 1415,1426 ****
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
-          -1,    -1,    -1,    -1,    -1,   484,    -1,
           -1,    -1,    -1,    -1,    -1,   485,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!         486
      };
  
    if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
--- 1417,1428 ----
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,   485,    -1,
+          -1,    -1,    -1,    -1,    -1,   486,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
           -1,    -1,    -1,    -1,    -1,    -1,    -1,
!         487
      };
  
    if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
diff -Nrcpad gcc-16-20251012/gcc/custom-sarif-properties/digraphs.cc gcc-16-20251019/gcc/custom-sarif-properties/digraphs.cc
*** gcc-16-20251012/gcc/custom-sarif-properties/digraphs.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/custom-sarif-properties/digraphs.cc	Sun Oct 19 22:32:13 2025
***************
*** 0 ****
--- 1,28 ----
+ /* Extra properties for digraphs in SARIF property bags.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "json.h"
+ #include "custom-sarif-properties/digraphs.h"
+ 
+ const json::string_property custom_sarif_properties::digraphs::digraph::kind
+   ("gcc/digraphs/graph/kind");
diff -Nrcpad gcc-16-20251012/gcc/custom-sarif-properties/digraphs.h gcc-16-20251019/gcc/custom-sarif-properties/digraphs.h
*** gcc-16-20251012/gcc/custom-sarif-properties/digraphs.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/custom-sarif-properties/digraphs.h	Sun Oct 19 22:32:13 2025
***************
*** 0 ****
--- 1,37 ----
+ /* Extra properties for digraphs in SARIF property bags.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_CUSTOM_SARIF_PROPERTIES_DIGRAPHS_H
+ #define GCC_CUSTOM_SARIF_PROPERTIES_DIGRAPHS_H
+ 
+ /* SARIF property names relating to digraphs.  */
+ 
+ namespace custom_sarif_properties {
+   namespace digraphs {
+     namespace digraph {
+       /* A hint about the kind of graph we have,
+ 	 and thus what kinds of nodes and edges to expect.  */
+       extern const json::string_property kind;
+       // string; values: "cfg"
+     }
+   }
+ }
+ 
+ #endif /* ! GCC_CUSTOM_SARIF_PROPERTIES_DIGRAPHS_H */
diff -Nrcpad gcc-16-20251012/gcc/custom-sarif-properties/state-graphs.cc gcc-16-20251019/gcc/custom-sarif-properties/state-graphs.cc
*** gcc-16-20251012/gcc/custom-sarif-properties/state-graphs.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/custom-sarif-properties/state-graphs.cc	Sun Oct 19 22:32:13 2025
***************
*** 0 ****
--- 1,161 ----
+ /* Properties for capturing state graphs in SARIF property bags.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "json.h"
+ #include "custom-sarif-properties/state-graphs.h"
+ 
+ /* graph.  */
+ namespace graph = custom_sarif_properties::state_graphs::graph;
+ #define STATE_GRAPH_PREFIX "gcc/diagnostic_state_graph/"
+ const char *const graph::prefix = STATE_GRAPH_PREFIX;
+ #undef STATE_GRAPH_PREFIX
+ 
+ /* node.  */
+ namespace node = custom_sarif_properties::state_graphs::node;
+ #define STATE_NODE_PREFIX "gcc/diagnostic_state_node/"
+ 
+ const json::enum_property<enum node::kind_t>
+   node::kind_prop (STATE_NODE_PREFIX "kind");
+ 
+ const json::string_property node::function (STATE_NODE_PREFIX "function");
+ 
+ const json::string_property node::dynamic_extents
+   (STATE_NODE_PREFIX "dynamic-extents");
+ 
+ const json::string_property node::name (STATE_NODE_PREFIX "name");
+ const json::string_property node::type (STATE_NODE_PREFIX "type");
+ const json::json_property node::value (STATE_NODE_PREFIX "value");
+ const json::string_property node::value_str (STATE_NODE_PREFIX "value_str");
+ 
+ const json::string_property node::index (STATE_NODE_PREFIX "index");
+ 
+ const json::string_property node::bits (STATE_NODE_PREFIX "bits");
+ 
+ const json::string_property node::num_bits (STATE_NODE_PREFIX "num_bits");
+ 
+ const json::string_property node::deallocator (STATE_NODE_PREFIX "deallocator");
+ 
+ const json::string_property node::expected_deallocators
+   (STATE_NODE_PREFIX "expected-deallocators");
+ 
+ const json::enum_property<enum node::dynalloc_state_t>
+   node::dynalloc_state_prop (STATE_NODE_PREFIX "dynalloc-state");
+ 
+ #undef STATE_NODE_PREFIX
+ 
+ 
+ /* edge.  */
+ namespace edge_props = custom_sarif_properties::state_graphs::edge;
+ #define STATE_EDGE_PREFIX "gcc/diagnostic_state_edge/"
+ extern const char *const edge_props::prefix = STATE_EDGE_PREFIX;
+ #undef STATE_EDGE_PREFIX
+ 
+ // Traits for enum node:kind_t
+ 
+ namespace json {
+ 
+ template<>
+ enum node::kind_t
+ json::enum_traits<enum node::kind_t>::get_unknown_value ()
+ {
+   return node::kind_t::other;
+ }
+ 
+ static const char * const node_kind_strs[] = {
+   "globals",
+   "code",
+   "function",
+   "stack",
+   "stack-frame",
+   "heap",
+   "thread-local",
+   "dynalloc-buffer",
+   "variable",
+   "field",
+   "padding",
+   "element",
+   "other",
+ };
+ 
+ template<>
+ bool
+ json::enum_traits<enum node::kind_t>::
+ maybe_get_value_from_string (const char *str,
+ 			     enum_t &out)
+ {
+   for (size_t i = 0; i < ARRAY_SIZE (node_kind_strs); ++i)
+     if (!strcmp (node_kind_strs[i], str))
+       {
+ 	out = static_cast<enum_t> (i);
+ 	return true;
+       }
+   return false;
+ }
+ 
+ template<>
+ const char *
+ json::enum_traits<enum node::kind_t>::get_string_for_value (enum_t value)
+ {
+   return node_kind_strs[static_cast<int> (value)];
+ }
+ 
+ // Traits for enum node:dynalloc_state_t
+ 
+ template<>
+ enum node::dynalloc_state_t
+ json::enum_traits<enum node::dynalloc_state_t>::get_unknown_value ()
+ {
+   return node::dynalloc_state_t::unknown;
+ }
+ 
+ static const char * const dynalloc_state_strs[] = {
+   "unknown",
+   "nonnull",
+   "unchecked",
+   "freed"
+ };
+ 
+ template<>
+ bool
+ json::enum_traits<enum node::dynalloc_state_t>::
+ maybe_get_value_from_string (const char *str,
+ 			     enum_t &out)
+ {
+   for (size_t i = 0; i < ARRAY_SIZE (dynalloc_state_strs); ++i)
+     if (!strcmp (dynalloc_state_strs[i], str))
+       {
+ 	out = static_cast<enum_t> (i);
+ 	return true;
+       }
+   return false;
+ }
+ 
+ template<>
+ const char *
+ json::enum_traits<enum node::dynalloc_state_t>::
+ get_string_for_value (enum_t value)
+ {
+   return dynalloc_state_strs[static_cast <size_t> (value)];
+ }
+ 
+ } // namespace json
diff -Nrcpad gcc-16-20251012/gcc/custom-sarif-properties/state-graphs.h gcc-16-20251019/gcc/custom-sarif-properties/state-graphs.h
*** gcc-16-20251012/gcc/custom-sarif-properties/state-graphs.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/custom-sarif-properties/state-graphs.h	Sun Oct 19 22:32:13 2025
***************
*** 0 ****
--- 1,98 ----
+ /* Properties for capturing state graphs in SARIF property bags.
+    Copyright (C) 2025 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "json.h"
+ 
+ #ifndef GCC_DIAGNOSTICS_SARIF_PROPERTIES_STATE_GRAPHS_H
+ #define GCC_DIAGNOSTICS_SARIF_PROPERTIES_STATE_GRAPHS_H
+ 
+ /* SARIF property names relating to GCC's CFGs.  */
+ 
+ namespace custom_sarif_properties {
+   namespace state_graphs {
+     namespace graph {
+       extern const char *const prefix;
+     }
+     namespace node {
+ 
+       enum class kind_t
+       {
+ 	// Memory regions
+ 	globals,
+ 	code,
+ 	function, // code within a particular function
+ 	stack,
+ 	stack_frame,
+ 	heap_,
+ 	thread_local_,
+ 
+ 	/* Dynamically-allocated buffer,
+ 	   on heap or stack (depending on parent).  */
+ 	dynalloc_buffer,
+ 
+ 	variable,
+ 
+ 	field, // field within a struct or union
+ 	padding, // padding bits in a struct or union
+ 	element, // element within an array
+ 
+ 	other // anything else
+       };
+ 
+       enum class dynalloc_state_t
+       {
+ 	unknown,
+ 	nonnull,
+ 	unchecked,
+ 	freed
+       };
+ 
+       extern const json::enum_property<enum kind_t> kind_prop;
+ 
+       extern const json::string_property function;
+       extern const json::string_property dynamic_extents;
+       extern const json::string_property name;
+       extern const json::string_property type;
+       /* The value of a memory region, expressed as a json::value.  */
+       extern const json::json_property value;
+       /* The value of a memory region, expressed as a string.  */
+       extern const json::string_property value_str;
+ 
+       /* For element nodes, the index within the array.  */
+       extern const json::string_property index;
+ 
+       /* The range of bits or bytes within the base region.  */
+       extern const json::string_property bits;
+ 
+       /* The size of a padding region.  */
+       extern const json::string_property num_bits;
+ 
+       extern const json::string_property deallocator;
+       extern const json::string_property expected_deallocators;
+       extern const json::enum_property<enum dynalloc_state_t>
+ 	dynalloc_state_prop;
+     }
+     namespace edge {
+       extern const char *const prefix;
+     }
+   }
+ }
+ 
+ #endif /* ! GCC_DIAGNOSTICS_SARIF_PROPERTIES_STATE_GRAPHS_H */
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/diagnostics-selftests.cc gcc-16-20251019/gcc/diagnostics/diagnostics-selftests.cc
*** gcc-16-20251012/gcc/diagnostics/diagnostics-selftests.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/diagnostics-selftests.cc	Sun Oct 19 22:32:13 2025
*************** run_diagnostics_selftests ()
*** 46,52 ****
    sarif_sink_cc_tests ();
    digraphs_cc_tests ();
    output_spec_cc_tests ();
-   state_graphs_cc_tests ();
    lazy_paths_cc_tests ();
    paths_output_cc_tests ();
    changes_cc_tests ();
--- 46,51 ----
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/diagnostics-selftests.h gcc-16-20251019/gcc/diagnostics/diagnostics-selftests.h
*** gcc-16-20251012/gcc/diagnostics/diagnostics-selftests.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/diagnostics-selftests.h	Sun Oct 19 22:32:13 2025
*************** extern void paths_output_cc_tests ();
*** 44,50 ****
  extern void sarif_sink_cc_tests ();
  extern void selftest_logical_locations_cc_tests ();
  extern void source_printing_cc_tests ();
- extern void state_graphs_cc_tests ();
  
  } /* end of namespace diagnostics::selftest.  */
  
--- 44,49 ----
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/digraphs.cc gcc-16-20251019/gcc/diagnostics/digraphs.cc
*** gcc-16-20251012/gcc/diagnostics/digraphs.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/digraphs.cc	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 30,42 ****
  #include "graphviz.h"
  #include "diagnostics/digraphs.h"
  #include "diagnostics/sarif-sink.h"
  
! #include "selftest.h"
! 
  using digraph = diagnostics::digraphs::digraph;
  using digraph_node = diagnostics::digraphs::node;
  using digraph_edge = diagnostics::digraphs::edge;
  
  namespace {
  
  class conversion_to_dot
--- 30,44 ----
  #include "graphviz.h"
  #include "diagnostics/digraphs.h"
  #include "diagnostics/sarif-sink.h"
+ #include "custom-sarif-properties/digraphs.h"
  
! using digraph_object = diagnostics::digraphs::object;
  using digraph = diagnostics::digraphs::digraph;
  using digraph_node = diagnostics::digraphs::node;
  using digraph_edge = diagnostics::digraphs::edge;
  
+ namespace properties = custom_sarif_properties::digraphs;
+ 
  namespace {
  
  class conversion_to_dot
*************** conversion_to_dot::has_edges_p (const di
*** 171,236 ****
  
  // class object
  
  const char *
! diagnostics::digraphs::object::
! get_attr (const char *key_prefix, const char *key) const
  {
    if (!m_property_bag)
      return nullptr;
!   std::string prefixed_key = std::string (key_prefix) + key;
!   if (json::value *jv = m_property_bag->get (prefixed_key.c_str ()))
      if (json::string *jstr = jv->dyn_cast_string ())
        return jstr->get_string ();
    return nullptr;
  }
  
  void
! diagnostics::digraphs::object::
! set_attr (const char *key_prefix, const char *key, const char *value)
  {
!   set_json_attr (key_prefix, key, std::make_unique<json::string> (value));
  }
  
  void
! diagnostics::digraphs::object::
! set_json_attr (const char *key_prefix, const char *key, std::unique_ptr<json::value> value)
  {
-   std::string prefixed_key = std::string (key_prefix) + key;
    if (!m_property_bag)
!     m_property_bag = std::make_unique<json::object> ();
!   m_property_bag->set (prefixed_key.c_str (), std::move (value));
  }
  
  // class digraph
  
  DEBUG_FUNCTION void
! diagnostics::digraphs::digraph::dump () const
  {
    make_json_sarif_graph ()->dump ();
  }
  
  std::unique_ptr<json::object>
! diagnostics::digraphs::digraph::make_json_sarif_graph () const
  {
    return make_sarif_graph (*this, nullptr, nullptr);
  }
  
  std::unique_ptr<dot::graph>
! diagnostics::digraphs::digraph::make_dot_graph () const
  {
!   conversion_to_dot to_dot;
!   return to_dot.make_dot_graph_from_diagnostic_graph (*this);
  }
  
! std::unique_ptr<diagnostics::digraphs::digraph>
! diagnostics::digraphs::digraph::clone () const
  {
    auto result = std::make_unique<diagnostics::digraphs::digraph> ();
  
    if (get_property_bag ())
      result->set_property_bag (get_property_bag ()->clone_as_object ());
  
!   std::map<diagnostics::digraphs::node *, diagnostics::digraphs::node *> node_mapping;
  
    for (auto &iter : m_nodes)
      result->add_node (iter->clone (*result, node_mapping));
--- 173,317 ----
  
  // class object
  
+ /* String properties.  */
+ 
  const char *
! digraph_object::get_property (const json::string_property &property) const
  {
    if (!m_property_bag)
      return nullptr;
!   if (json::value *jv = m_property_bag->get (property.m_key.get ()))
      if (json::string *jstr = jv->dyn_cast_string ())
        return jstr->get_string ();
    return nullptr;
  }
  
  void
! digraph_object::set_property (const json::string_property &property,
! 			      const char *utf8_value)
  {
!   auto &bag = ensure_property_bag ();
!   bag.set_string (property.m_key.get (), utf8_value);
! }
! 
! /* Integer properties.  */
! 
! bool
! digraph_object::maybe_get_property (const json::integer_property &property,
! 				    long &out_value) const
! {
!   if (!m_property_bag)
!     return false;
!   if (json::value *jv = m_property_bag->get (property.m_key.get ()))
!     if (json::integer_number *jnum = jv->dyn_cast_integer_number ())
!       {
! 	out_value = jnum->get ();
! 	return true;
!       }
!   return false;
  }
  
  void
! digraph_object::set_property (const json::integer_property &property, long value)
! {
!   auto &bag = ensure_property_bag ();
!   bag.set_integer (property.m_key.get (), value);
! }
! 
! /* Bool properties.  */
! void
! digraph_object::set_property (const json::bool_property &property, bool value)
! {
!   auto &bag = ensure_property_bag ();
!   bag.set_bool (property.m_key.get (), value);  
! }
! 
! tristate
! digraph_object::
! get_property_as_tristate (const json::bool_property &property) const
! {
!   if (m_property_bag)
!     {
!       if (json::value *jv = m_property_bag->get (property.m_key.get ()))
! 	switch (jv->get_kind ())
! 	  {
! 	  default:
! 	    break;
! 	  case json::JSON_TRUE:
! 	    return tristate (true);
! 	  case json::JSON_FALSE:
! 	    return tristate (false);
! 	  }
!     }
!   return tristate::unknown ();
! }
! 
! /* Array-of-string properties.  */
! json::array *
! digraph_object::get_property (const json::array_of_string_property &property) const
! {
!   if (m_property_bag)
!     if (json::value *jv = m_property_bag->get (property.m_key.get ()))
!       if (json::array *arr = jv->dyn_cast_array ())
! 	return arr;
!   return nullptr;
! }
! 
! /* json::value properties.  */
! const json::value *
! digraph_object::get_property (const json::json_property &property) const
! {
!   if (m_property_bag)
!     return m_property_bag->get (property.m_key.get ());
!   return nullptr;
! }
! 
! void
! digraph_object::set_property (const json::json_property &property,
! 			      std::unique_ptr<json::value> value)
! {
!   auto &bag = ensure_property_bag ();
!   bag.set (property.m_key.get (), std::move (value));
! }
! 
! json::object &
! digraph_object::ensure_property_bag ()
  {
    if (!m_property_bag)
!     m_property_bag = std::make_unique<sarif_property_bag> ( );
!   return *m_property_bag;
  }
  
  // class digraph
  
  DEBUG_FUNCTION void
! digraph::dump () const
  {
    make_json_sarif_graph ()->dump ();
  }
  
  std::unique_ptr<json::object>
! digraph::make_json_sarif_graph () const
  {
    return make_sarif_graph (*this, nullptr, nullptr);
  }
  
  std::unique_ptr<dot::graph>
! digraph::make_dot_graph () const
  {
!   conversion_to_dot converter;
!   return converter.make_dot_graph_from_diagnostic_graph (*this);
  }
  
! std::unique_ptr<digraph>
! digraph::clone () const
  {
    auto result = std::make_unique<diagnostics::digraphs::digraph> ();
  
    if (get_property_bag ())
      result->set_property_bag (get_property_bag ()->clone_as_object ());
  
!   std::map<digraph_node *, digraph_node *> node_mapping;
  
    for (auto &iter : m_nodes)
      result->add_node (iter->clone (*result, node_mapping));
*************** diagnostics::digraphs::digraph::clone ()
*** 241,250 ****
  }
  
  void
! diagnostics::digraphs::digraph::add_edge (const char *id,
! 					  node &src_node,
! 					  node &dst_node,
! 					  const char *label)
  {
    auto e = std::make_unique<digraph_edge> (*this,
  					   id,
--- 322,331 ----
  }
  
  void
! digraph::add_edge (const char *id,
! 		   node &src_node,
! 		   node &dst_node,
! 		   const char *label)
  {
    auto e = std::make_unique<digraph_edge> (*this,
  					   id,
*************** diagnostics::digraphs::digraph::add_edge
*** 263,269 ****
     to edges by id (SARIF 2.1.0's §3.43.2 edgeId property).  */
  
  std::string
! diagnostics::digraphs::digraph::make_edge_id (const char *edge_id)
  {
    /* If we have an id, use it.  */
    if (edge_id)
--- 344,350 ----
     to edges by id (SARIF 2.1.0's §3.43.2 edgeId property).  */
  
  std::string
! digraph::make_edge_id (const char *edge_id)
  {
    /* If we have an id, use it.  */
    if (edge_id)
*************** diagnostics::digraphs::digraph::make_edg
*** 284,310 ****
      }
  }
  
  // class node
  
  DEBUG_FUNCTION void
! diagnostics::digraphs::node::dump () const
  {
    to_json_sarif_node ()->dump ();
  }
  
  std::unique_ptr<json::object>
! diagnostics::digraphs::node::to_json_sarif_node () const
  {
    return make_sarif_node (*this, nullptr, nullptr);
  }
  
! std::unique_ptr<diagnostics::digraphs::node>
! diagnostics::digraphs::node::clone (digraph &new_graph,
! 				    std::map<node *, node *> &node_mapping) const
  {
    auto result
!     = std::make_unique<diagnostics::digraphs::node> (new_graph,
! 						     get_id ());
    node_mapping.insert ({const_cast <node *> (this), result.get ()});
  
    result->set_logical_loc (m_logical_loc);
--- 365,402 ----
      }
  }
  
+ const char *
+ digraph::get_graph_kind () const
+ {
+   return get_property (properties::digraph::kind);
+ }
+ 
+ void
+ digraph::set_graph_kind (const char *kind)
+ {
+   set_property (properties::digraph::kind, kind);
+ }
+ 
  // class node
  
  DEBUG_FUNCTION void
! digraph_node::dump () const
  {
    to_json_sarif_node ()->dump ();
  }
  
  std::unique_ptr<json::object>
! digraph_node::to_json_sarif_node () const
  {
    return make_sarif_node (*this, nullptr, nullptr);
  }
  
! std::unique_ptr<digraph_node>
! digraph_node::clone (digraph &new_graph,
! 		     std::map<node *, node *> &node_mapping) const
  {
    auto result
!     = std::make_unique<digraph_node> (new_graph, get_id ());
    node_mapping.insert ({const_cast <node *> (this), result.get ()});
  
    result->set_logical_loc (m_logical_loc);
*************** diagnostics::digraphs::edge::to_json_sar
*** 353,358 ****
--- 445,453 ----
  
  #if CHECKING_P
  
+ #include "selftest.h"
+ #include "custom-sarif-properties/state-graphs.h"
+ 
  namespace diagnostics {
  namespace selftest {
  
*************** test_simple_graph ()
*** 391,406 ****
  #define KEY_PREFIX "/placeholder/"
    auto g = std::make_unique<digraph> ();
    g->set_description ("test graph");
!   g->set_attr (KEY_PREFIX, "date", "1066");
  
    auto a = std::make_unique<digraph_node> (*g, "a");
    auto b = std::make_unique<digraph_node> (*g, "b");
!   b->set_attr (KEY_PREFIX, "color", "red");
    auto c = std::make_unique<digraph_node> (*g, "c");
    c->set_label ("I am a node label");
  
    auto e = std::make_unique<digraph_edge> (*g, nullptr, *a, *c);
!   e->set_attr (KEY_PREFIX, "status", "copacetic");
    e->set_label ("I am an edge label");
    g->add_edge (std::move (e));
  
--- 486,502 ----
  #define KEY_PREFIX "/placeholder/"
    auto g = std::make_unique<digraph> ();
    g->set_description ("test graph");
!   g->set_property (json::string_property (KEY_PREFIX, "date"), "1066");
  
    auto a = std::make_unique<digraph_node> (*g, "a");
    auto b = std::make_unique<digraph_node> (*g, "b");
!   b->set_property (json::string_property (KEY_PREFIX, "color"), "red");
    auto c = std::make_unique<digraph_node> (*g, "c");
    c->set_label ("I am a node label");
  
    auto e = std::make_unique<digraph_edge> (*g, nullptr, *a, *c);
!   e->set_property (json::string_property (KEY_PREFIX, "status"),
! 		   "copacetic");
    e->set_label ("I am an edge label");
    g->add_edge (std::move (e));
  
*************** test_simple_graph ()
*** 449,454 ****
--- 545,578 ----
    }
  }
  
+ static void
+ test_property_objects ()
+ {
+   namespace state_node_properties = custom_sarif_properties::state_graphs::node;
+ 
+   digraph g;
+   digraph_node node (g, "a");
+ 
+   ASSERT_EQ (node.get_property (state_node_properties::kind_prop),
+ 	     state_node_properties::kind_t::other);
+   node.set_property (state_node_properties::kind_prop,
+ 		     state_node_properties::kind_t::stack);
+   ASSERT_EQ (node.get_property (state_node_properties::kind_prop),
+ 	     state_node_properties::kind_t::stack);
+ 
+   ASSERT_EQ (node.get_property (state_node_properties::dynalloc_state_prop),
+ 	     state_node_properties::dynalloc_state_t::unknown);
+   node.set_property (state_node_properties::dynalloc_state_prop,
+ 		     state_node_properties::dynalloc_state_t::freed);
+   ASSERT_EQ (node.get_property (state_node_properties::dynalloc_state_prop),
+ 	     state_node_properties::dynalloc_state_t::freed);
+ 
+   ASSERT_EQ (node.get_property (state_node_properties::type), nullptr);
+   node.set_property (state_node_properties::type, "const char *");
+   ASSERT_STREQ (node.get_property (state_node_properties::type),
+ 		"const char *");
+ }
+ 
  /* Run all of the selftests within this file.  */
  
  void
*************** digraphs_cc_tests ()
*** 456,461 ****
--- 580,586 ----
  {
    test_empty_graph ();
    test_simple_graph ();
+   test_property_objects ();
  }
  
  } // namespace diagnostics::selftest
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/digraphs.h gcc-16-20251019/gcc/diagnostics/digraphs.h
*** gcc-16-20251012/gcc/diagnostics/digraphs.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/digraphs.h	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 22,27 ****
--- 22,28 ----
  #define GCC_DIAGNOSTICS_DIGRAPHS_H
  
  #include "json.h"
+ #include "tristate.h"
  #include "diagnostics/logical-locations.h"
  
  class graphviz_out;
*************** class edge;
*** 55,77 ****
  class object
  {
  public:
!   const char *
!   get_attr (const char *key_prefix,
! 	    const char *key) const;
  
!   void
!   set_attr (const char *key_prefix,
! 	    const char *key,
! 	    const char *value);
  
    void
!   set_json_attr (const char *key_prefix,
! 		 const char *key,
! 		 std::unique_ptr<json::value> value);
  
    json::object *
    get_property_bag () const { return m_property_bag.get (); }
  
    void
    set_property_bag (std::unique_ptr<json::object> property_bag)
    {
--- 56,112 ----
  class object
  {
  public:
!   /* String properties.  */
!   const char *get_property (const json::string_property &property) const;
!   void set_property (const json::string_property &property,
! 		     const char *utf8_value);
  
!   /* Integer properties.  */
!   bool maybe_get_property (const json::integer_property &property, long &out) const;
!   void set_property (const json::integer_property &property, long value);
  
+   /* Bool properties.  */
+   tristate
+   get_property_as_tristate (const json::bool_property &property) const;
+   void set_property (const json::bool_property &property, bool value);
+ 
+   /* Array-of-string properties.  */
+   json::array *
+   get_property (const json::array_of_string_property &property) const;
+ 
+   /* enum properties.  */
+   template <typename EnumType>
+   EnumType
+   get_property (const json::enum_property<EnumType> &property) const
+   {
+     if (m_property_bag)
+       {
+ 	EnumType result;
+ 	if (m_property_bag->maybe_get_enum<EnumType> (property, result))
+ 	  return result;
+       }
+     return json::enum_traits<EnumType>::get_unknown_value ();
+   }
+   template <typename EnumType>
    void
!   set_property (const json::enum_property<EnumType> &property,
! 		EnumType value)
!   {
!     auto &bag = ensure_property_bag ();
!     bag.set_enum<EnumType> (property, value);
!   }
! 
!   /* json::value properties.  */
!   const json::value *get_property (const json::json_property &property) const;
!   void set_property (const json::json_property &property,
! 		     std::unique_ptr<json::value> value);
  
    json::object *
    get_property_bag () const { return m_property_bag.get (); }
  
+   json::object &
+   ensure_property_bag ();
+ 
    void
    set_property_bag (std::unique_ptr<json::object> property_bag)
    {
*************** class digraph : public object
*** 188,193 ****
--- 223,231 ----
  
    std::unique_ptr<digraph> clone () const;
  
+   const char *get_graph_kind () const;
+   void set_graph_kind (const char *);
+ 
   private:
    void
    add_node_id (std::string node_id, node &new_node)
*************** class node : public object
*** 300,306 ****
    clone (digraph &new_graph,
  	 std::map<node *, node *> &node_mapping) const;
  
!  private:
    std::string m_id;
    std::unique_ptr<std::string> m_label;
    std::vector<std::unique_ptr<node>> m_children;
--- 338,344 ----
    clone (digraph &new_graph,
  	 std::map<node *, node *> &node_mapping) const;
  
! private:
    std::string m_id;
    std::unique_ptr<std::string> m_label;
    std::vector<std::unique_ptr<node>> m_children;
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/html-sink.cc gcc-16-20251019/gcc/diagnostics/html-sink.cc
*** gcc-16-20251012/gcc/diagnostics/html-sink.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/html-sink.cc	Sun Oct 19 22:32:13 2025
*************** html_generation_options::html_generation
*** 57,64 ****
  : m_css (true),
    m_javascript (true),
    m_show_state_diagrams (false),
!   m_show_state_diagrams_sarif (false),
!   m_show_state_diagrams_dot_src (false)
  {
  }
  
--- 57,64 ----
  : m_css (true),
    m_javascript (true),
    m_show_state_diagrams (false),
!   m_show_graph_sarif (false),
!   m_show_graph_dot_src (false)
  {
  }
  
*************** html_generation_options::dump (FILE *out
*** 68,75 ****
    DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_css);
    DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_javascript);
    DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_show_state_diagrams);
!   DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_show_state_diagrams_sarif);
!   DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_show_state_diagrams_dot_src);
  }
  
  class html_builder;
--- 68,75 ----
    DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_css);
    DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_javascript);
    DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_show_state_diagrams);
!   DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_show_graph_sarif);
!   DIAGNOSTICS_DUMPING_EMIT_BOOL_FIELD (m_show_graph_dot_src);
  }
  
  class html_builder;
*************** html_builder::maybe_make_state_diagram (
*** 640,646 ****
       the debug version.  */
    auto state_graph
      = event.maybe_make_diagnostic_state_graph
! 	(m_html_gen_opts.m_show_state_diagrams_sarif);
    if (!state_graph)
      return nullptr;
  
--- 640,646 ----
       the debug version.  */
    auto state_graph
      = event.maybe_make_diagnostic_state_graph
! 	(m_html_gen_opts.m_show_graph_sarif);
    if (!state_graph)
      return nullptr;
  
*************** html_builder::maybe_make_state_diagram (
*** 652,658 ****
    auto wrapper = std::make_unique<xml::element> ("div", false);
    xml::printer xp (*wrapper);
  
!   if (m_html_gen_opts.m_show_state_diagrams_sarif)
      {
        // For debugging, show the SARIF src inline:
        pretty_printer pp;
--- 652,658 ----
    auto wrapper = std::make_unique<xml::element> ("div", false);
    xml::printer xp (*wrapper);
  
!   if (m_html_gen_opts.m_show_graph_sarif)
      {
        // For debugging, show the SARIF src inline:
        pretty_printer pp;
*************** html_builder::maybe_make_state_diagram (
*** 660,666 ****
        print_pre_source (xp, pp_formatted_text (&pp));
      }
  
!   if (m_html_gen_opts.m_show_state_diagrams_dot_src)
      {
        // For debugging, show the dot src inline:
        pretty_printer pp;
--- 660,666 ----
        print_pre_source (xp, pp_formatted_text (&pp));
      }
  
!   if (m_html_gen_opts.m_show_graph_dot_src)
      {
        // For debugging, show the dot src inline:
        pretty_printer pp;
*************** void
*** 1278,1298 ****
  html_builder::add_graph (const digraphs::digraph &dg,
  			 xml::element &parent_element)
  {
    if (auto dot_graph = dg.make_dot_graph ())
!     if (auto svg_element = dot::make_svg_from_graph (*dot_graph))
!       {
! 	auto div = std::make_unique<xml::element> ("div", false);
! 	div->set_attr ("class", "gcc-directed-graph");
! 	xml::printer xp (*div);
! 	if (const char *description = dg.get_description ())
! 	  {
! 	    xp.push_tag ("h2", true);
! 	    xp.add_text (description);
! 	    xp.pop_tag ("h2");
! 	  }
! 	xp.append (std::move (svg_element));
! 	parent_element.add_child (std::move (div));
!       }
  }
  
  void
--- 1278,1318 ----
  html_builder::add_graph (const digraphs::digraph &dg,
  			 xml::element &parent_element)
  {
+   auto div = std::make_unique<xml::element> ("div", false);
+   div->set_attr ("class", "gcc-directed-graph");
+   xml::printer xp (*div);
+ 
+   if (m_html_gen_opts.m_show_graph_sarif)
+     {
+       // For debugging, show the SARIF src inline:
+       pretty_printer pp;
+       dg.make_json_sarif_graph ()->print (&pp, true);
+       print_pre_source (xp, pp_formatted_text (&pp));
+     }
+ 
    if (auto dot_graph = dg.make_dot_graph ())
!     {
!       if (m_html_gen_opts.m_show_graph_dot_src)
! 	{
! 	  // For debugging, show the dot src inline:
! 	  pretty_printer pp;
! 	  dot::writer w (pp);
! 	  dot_graph->print (w);
! 	  print_pre_source (xp, pp_formatted_text (&pp));
! 	}
! 
!       if (auto svg_element = dot::make_svg_from_graph (*dot_graph))
! 	{
! 	  if (const char *description = dg.get_description ())
! 	    {
! 	      xp.push_tag ("h2", true);
! 	      xp.add_text (description);
! 	      xp.pop_tag ("h2");
! 	    }
! 	  xp.append (std::move (svg_element));
! 	  parent_element.add_child (std::move (div));
! 	}
!     }
  }
  
  void
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/html-sink.h gcc-16-20251019/gcc/diagnostics/html-sink.h
*** gcc-16-20251012/gcc/diagnostics/html-sink.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/html-sink.h	Sun Oct 19 22:32:13 2025
*************** struct html_generation_options
*** 40,50 ****
    // If true, attempt to show state diagrams at events
    bool m_show_state_diagrams;
  
!   // If true, show the SARIF form of the state with such diagrams
!   bool m_show_state_diagrams_sarif;
  
!   // If true, show the .dot source used for the diagram
!   bool m_show_state_diagrams_dot_src;
  };
  
  extern diagnostics::output_file
--- 40,51 ----
    // If true, attempt to show state diagrams at events
    bool m_show_state_diagrams;
  
!   /* If true, show the SARIF form of the state with such diagrams,
!      and of other graphs.  */
!   bool m_show_graph_sarif;
  
!   // If true, show the .dot source used for such graphs
!   bool m_show_graph_dot_src;
  };
  
  extern diagnostics::output_file
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/output-spec.cc gcc-16-20251019/gcc/diagnostics/output-spec.cc
*** gcc-16-20251012/gcc/diagnostics/output-spec.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/output-spec.cc	Sun Oct 19 22:32:13 2025
*************** html_scheme_handler::maybe_handle_kv (co
*** 650,661 ****
    if (key == "show-state-diagrams")
      return parse_bool_value (ctxt, key, value,
  			     m_html_gen_opts.m_show_state_diagrams);
!   if (key == "show-state-diagrams-dot-src")
      return parse_bool_value (ctxt, key, value,
! 			     m_html_gen_opts.m_show_state_diagrams_dot_src);
!   if (key == "show-state-diagrams-sarif")
      return parse_bool_value (ctxt, key, value,
! 			     m_html_gen_opts.m_show_state_diagrams_sarif);
    return result::unrecognized;
  }
  
--- 650,661 ----
    if (key == "show-state-diagrams")
      return parse_bool_value (ctxt, key, value,
  			     m_html_gen_opts.m_show_state_diagrams);
!   if (key == "show-graph-dot-src")
      return parse_bool_value (ctxt, key, value,
! 			     m_html_gen_opts.m_show_graph_dot_src);
!   if (key == "show-graph-sarif")
      return parse_bool_value (ctxt, key, value,
! 			     m_html_gen_opts.m_show_graph_sarif);
    return result::unrecognized;
  }
  
*************** html_scheme_handler::get_keys (auto_vec<
*** 666,673 ****
    out.safe_push ("file");
    out.safe_push ("javascript");
    out.safe_push ("show-state-diagrams");
!   out.safe_push ("show-state-diagrams-dot-src");
!   out.safe_push ("show-state-diagrams-sarif");
  }
  
  } // namespace output_spec
--- 666,673 ----
    out.safe_push ("file");
    out.safe_push ("javascript");
    out.safe_push ("show-state-diagrams");
!   out.safe_push ("show-graph-dot-src");
!   out.safe_push ("show-graph-sarif");
  }
  
  } // namespace output_spec
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/state-graphs-to-dot.cc gcc-16-20251019/gcc/diagnostics/state-graphs-to-dot.cc
*** gcc-16-20251012/gcc/diagnostics/state-graphs-to-dot.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/state-graphs-to-dot.cc	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 27,32 ****
--- 27,33 ----
  #include "system.h"
  #include "coretypes.h"
  
+ #include "custom-sarif-properties/state-graphs.h"
  #include "diagnostics/state-graphs.h"
  #include "graphviz.h"
  #include "xml.h"
*************** along with GCC; see the file COPYING3.
*** 36,41 ****
--- 37,44 ----
  using namespace diagnostics;
  using namespace diagnostics::state_graphs;
  
+ namespace state_node_properties = custom_sarif_properties::state_graphs::node;
+ 
  static int
  get_depth (const digraphs::node &n)
  {
*************** get_depth (const digraphs::node &n)
*** 47,74 ****
  }
  
  static const char *
! get_color_for_dynalloc_state (enum node_dynalloc_state dynalloc_st)
  {
    switch (dynalloc_st)
      {
      default:
        gcc_unreachable ();
        break;
!     case node_dynalloc_state::unknown:
!     case node_dynalloc_state::nonnull:
        return nullptr;
  
!     case node_dynalloc_state::unchecked:
        return "#ec7a08"; // pf-orange-400
  
!     case node_dynalloc_state::freed:
        return "#cc0000"; // pf-red-100
      }
  }
  
  static void
  set_color_for_dynalloc_state (dot::attr_list &attrs,
! 			      enum node_dynalloc_state state)
  {
    if (const char *color = get_color_for_dynalloc_state (state))
      attrs.add (dot::id ("color"), dot::id (color));
--- 50,77 ----
  }
  
  static const char *
! get_color_for_dynalloc_state (enum state_node_properties::dynalloc_state_t dynalloc_st)
  {
    switch (dynalloc_st)
      {
      default:
        gcc_unreachable ();
        break;
!     case state_node_properties::dynalloc_state_t::unknown:
!     case state_node_properties::dynalloc_state_t::nonnull:
        return nullptr;
  
!     case state_node_properties::dynalloc_state_t::unchecked:
        return "#ec7a08"; // pf-orange-400
  
!     case state_node_properties::dynalloc_state_t::freed:
        return "#cc0000"; // pf-red-100
      }
  }
  
  static void
  set_color_for_dynalloc_state (dot::attr_list &attrs,
! 			      enum state_node_properties::dynalloc_state_t state)
  {
    if (const char *color = get_color_for_dynalloc_state (state))
      attrs.add (dot::id ("color"), dot::id (color));
*************** public:
*** 106,112 ****
        = std::make_unique<dot::subgraph> (dot::id ("cluster_memory_regions"));
      for (size_t i = 0; i < input_state_graph.get_num_nodes (); ++i)
        on_input_state_node (*root_cluster,
! 			   state_node_ref (input_state_graph.get_node (i)));
      add_stmt (std::move (root_cluster));
  
      /* Now create dot edges for edges in input_stage_graph.  */
--- 109,115 ----
        = std::make_unique<dot::subgraph> (dot::id ("cluster_memory_regions"));
      for (size_t i = 0; i < input_state_graph.get_num_nodes (); ++i)
        on_input_state_node (*root_cluster,
! 			   input_state_graph.get_node (i));
      add_stmt (std::move (root_cluster));
  
      /* Now create dot edges for edges in input_stage_graph.  */
*************** public:
*** 126,132 ****
  	auto e = std::make_unique<dot::edge_stmt> (src_port_id->second,
  						   dst_port_id->second);
  	set_color_for_dynalloc_state
! 	  (e->m_attrs, state_node_ref (dst_node).get_dynalloc_state ());
  
  	add_stmt (std::move (e));
        }
--- 129,136 ----
  	auto e = std::make_unique<dot::edge_stmt> (src_port_id->second,
  						   dst_port_id->second);
  	set_color_for_dynalloc_state
! 	  (e->m_attrs,
! 	   dst_node.get_property (state_node_properties::dynalloc_state_prop));
  
  	add_stmt (std::move (e));
        }
*************** private:
*** 147,155 ****
    }
  
    dot::id
!   make_id (state_node_ref state_node, bool cluster)
    {
!     std::string input_node_id = state_node.m_node.get_id ();
      if (cluster)
        return std::string ("cluster_") + input_node_id;
      else
--- 151,159 ----
    }
  
    dot::id
!   make_id (const diagnostics::digraphs::node &state_node, bool cluster)
    {
!     std::string input_node_id = state_node.get_id ();
      if (cluster)
        return std::string ("cluster_") + input_node_id;
      else
*************** private:
*** 157,200 ****
    }
  
    bool
!   starts_node_p (state_node_ref state_node)
    {
!     switch (state_node.get_node_kind ())
        {
        default:
  	return false;
  
!       case node_kind::stack:
  	/* We want all frames in the stack in the same table,
  	   so they are grouped.  */
!       case node_kind::dynalloc_buffer:
!       case node_kind::variable:
  	return true;
        }
    }
  
    const char *
!   get_label_for_node (state_node_ref state_node)
    {
!     switch (state_node.get_node_kind ())
        {
        default:
  	return nullptr;
  
!       case node_kind::globals:
  	return _("Globals");
!       case node_kind::code:
  	return _("Code");
!       case node_kind::stack:
  	return _("Stack");
!       case node_kind::heap_:
  	return _("Heap");
        }
    }
  
    void
    on_input_state_node (dot::subgraph &parent_subgraph,
! 		       state_node_ref state_node)
    {
      dot::id sg_id = make_id (state_node, true);
  
--- 161,204 ----
    }
  
    bool
!   starts_node_p (const diagnostics::digraphs::node &state_node)
    {
!     switch (state_node.get_property (state_node_properties::kind_prop))
        {
        default:
  	return false;
  
!       case state_node_properties::kind_t::stack:
  	/* We want all frames in the stack in the same table,
  	   so they are grouped.  */
!       case state_node_properties::kind_t::dynalloc_buffer:
!       case state_node_properties::kind_t::variable:
  	return true;
        }
    }
  
    const char *
!   get_label_for_node (const diagnostics::digraphs::node &state_node)
    {
!     switch (state_node.get_property (state_node_properties::kind_prop))
        {
        default:
  	return nullptr;
  
!       case state_node_properties::kind_t::globals:
  	return _("Globals");
!       case state_node_properties::kind_t::code:
  	return _("Code");
!       case state_node_properties::kind_t::stack:
  	return _("Stack");
!       case state_node_properties::kind_t::heap_:
  	return _("Heap");
        }
    }
  
    void
    on_input_state_node (dot::subgraph &parent_subgraph,
! 		       const diagnostics::digraphs::node &state_node)
    {
      dot::id sg_id = make_id (state_node, true);
  
*************** private:
*** 207,213 ****
  	xp.set_attr ("cellborder", "1");
  	xp.set_attr ("cellspacing", "0");
  
! 	const int max_depth = get_depth (state_node.m_node);
  	const int num_columns = max_depth + 2;
  
  	dot::id id_of_dot_node = make_id (state_node, false);
--- 211,217 ----
  	xp.set_attr ("cellborder", "1");
  	xp.set_attr ("cellspacing", "0");
  
! 	const int max_depth = get_depth (state_node);
  	const int num_columns = max_depth + 2;
  
  	dot::id id_of_dot_node = make_id (state_node, false);
*************** private:
*** 233,241 ****
  	  child_subgraph->add_attr (dot::id ("label"), dot::id (label));
  
  	// recurse:
! 	for (size_t i = 0; i < state_node.m_node.get_num_children (); ++i)
  	  on_input_state_node (*child_subgraph,
! 			       state_node.m_node.get_child (i));
  	parent_subgraph.m_stmt_list.add_stmt (std::move (child_subgraph));
        }
    }
--- 237,245 ----
  	  child_subgraph->add_attr (dot::id ("label"), dot::id (label));
  
  	// recurse:
! 	for (size_t i = 0; i < state_node.get_num_children (); ++i)
  	  on_input_state_node (*child_subgraph,
! 			       state_node.get_child (i));
  	parent_subgraph.m_stmt_list.add_stmt (std::move (child_subgraph));
        }
    }
*************** private:
*** 246,255 ****
    add_title_tr (const dot::id &id_of_dot_node,
  		xml::printer &xp,
  		int num_columns,
! 		state_node_ref state_node,
  		std::string heading,
  		enum style styl,
! 		enum node_dynalloc_state dynalloc_state)
    {
      xp.push_tag ("tr", true);
      xp.push_tag ("td", false);
--- 250,259 ----
    add_title_tr (const dot::id &id_of_dot_node,
  		xml::printer &xp,
  		int num_columns,
! 		const diagnostics::digraphs::node &state_node,
  		std::string heading,
  		enum style styl,
! 		enum state_node_properties::dynalloc_state_t dynalloc_state)
    {
      xp.push_tag ("tr", true);
      xp.push_tag ("td", false);
*************** private:
*** 298,345 ****
    void
    on_node_in_table (const dot::id &id_of_dot_node,
  		    xml::printer &xp,
! 		    state_node_ref state_node,
  		    int max_depth,
  		    int depth,
  		    int num_columns)
    {
      bool recurse = true;
!     auto input_node_kind = state_node.get_node_kind ();
  
      switch (input_node_kind)
        {
!       case node_kind::padding:
!       case node_kind::other:
  	return;
  
!       case node_kind::stack:
  	add_title_tr (id_of_dot_node, xp, num_columns, state_node, "Stack",
  		      style::h1,
! 		      node_dynalloc_state::unknown);
  	break;
!       case node_kind::stack_frame:
  	if (auto logical_loc = state_node.get_logical_loc ())
  	  if (const char *function
  		= m_logical_loc_mgr.get_short_name (logical_loc))
  	    add_title_tr (id_of_dot_node, xp, num_columns, state_node,
  			  std::string ("Frame: ") + function,
  			  style::h2,
! 			  node_dynalloc_state::unknown);
  	break;
!       case node_kind::dynalloc_buffer:
  	{
! 	  enum node_dynalloc_state dynalloc_st
! 	    = state_node.get_dynalloc_state ();
! 	  const char *extents = state_node.get_dynamic_extents ();
! 	  const char *type = state_node.get_type ();
  	  pretty_printer pp;
  	  switch (dynalloc_st)
  	    {
  	    default:
  	      gcc_unreachable ();
  
! 	    case node_dynalloc_state::unknown:
! 	    case node_dynalloc_state::nonnull:
  	      if (type)
  		{
  		if (extents)
--- 302,352 ----
    void
    on_node_in_table (const dot::id &id_of_dot_node,
  		    xml::printer &xp,
! 		    const diagnostics::digraphs::node &state_node,
  		    int max_depth,
  		    int depth,
  		    int num_columns)
    {
      bool recurse = true;
!     auto input_node_kind
!       = state_node.get_property (state_node_properties::kind_prop);
  
      switch (input_node_kind)
        {
!       case state_node_properties::kind_t::padding:
!       case state_node_properties::kind_t::other:
  	return;
  
!       case state_node_properties::kind_t::stack:
  	add_title_tr (id_of_dot_node, xp, num_columns, state_node, "Stack",
  		      style::h1,
! 		      state_node_properties::dynalloc_state_t::unknown);
  	break;
!       case state_node_properties::kind_t::stack_frame:
  	if (auto logical_loc = state_node.get_logical_loc ())
  	  if (const char *function
  		= m_logical_loc_mgr.get_short_name (logical_loc))
  	    add_title_tr (id_of_dot_node, xp, num_columns, state_node,
  			  std::string ("Frame: ") + function,
  			  style::h2,
! 			  state_node_properties::dynalloc_state_t::unknown);
  	break;
!       case state_node_properties::kind_t::dynalloc_buffer:
  	{
! 	  enum state_node_properties::dynalloc_state_t dynalloc_st
! 	    = state_node.get_property
! 		(state_node_properties::dynalloc_state_prop);
! 	  const char *extents
! 	    = state_node.get_property (state_node_properties::dynamic_extents);
! 	  const char *type = state_node.get_property (state_node_properties::type);
  	  pretty_printer pp;
  	  switch (dynalloc_st)
  	    {
  	    default:
  	      gcc_unreachable ();
  
! 	    case state_node_properties::dynalloc_state_t::unknown:
! 	    case state_node_properties::dynalloc_state_t::nonnull:
  	      if (type)
  		{
  		if (extents)
*************** private:
*** 356,362 ****
  		}
  	      break;
  
! 	    case node_dynalloc_state::unchecked:
  	      if (type)
  		{
  		  if (extents)
--- 363,369 ----
  		}
  	      break;
  
! 	    case state_node_properties::dynalloc_state_t::unchecked:
  	      if (type)
  		{
  		  if (extents)
*************** private:
*** 371,377 ****
  		}
  	      break;
  
! 	    case node_dynalloc_state::freed:
  	      // TODO: show deallocator
  	      // TODO: show deallocation event
  	      pp_printf (&pp, "Freed buffer");
--- 378,384 ----
  		}
  	      break;
  
! 	    case state_node_properties::dynalloc_state_t::freed:
  	      // TODO: show deallocator
  	      // TODO: show deallocation event
  	      pp_printf (&pp, "Freed buffer");
*************** private:
*** 404,412 ****
  	    {
  	    default:
  	      break;
! 	    case node_kind::variable:
  	      {
! 		const char *name = state_node.get_name ();
  		gcc_assert (name);
  		xp.push_tag ("td", false);
  		maybe_add_dst_port (id_of_dot_node, xp, state_node);
--- 411,420 ----
  	    {
  	    default:
  	      break;
! 	    case state_node_properties::kind_t::variable:
  	      {
! 		const char *name
! 		  = state_node.get_property (state_node_properties::name);
  		gcc_assert (name);
  		xp.push_tag ("td", false);
  		maybe_add_dst_port (id_of_dot_node, xp, state_node);
*************** private:
*** 416,424 ****
  		xp.pop_tag ("td");
  	      }
  	      break;
! 	    case node_kind::element:
  	      {
! 		const char *index = state_node.get_index ();
  		gcc_assert (index);
  		xp.push_tag ("td", false);
  		maybe_add_dst_port (id_of_dot_node, xp, state_node);
--- 424,433 ----
  		xp.pop_tag ("td");
  	      }
  	      break;
! 	    case state_node_properties::kind_t::element:
  	      {
! 		const char *index
! 		  = state_node.get_property (state_node_properties::index);
  		gcc_assert (index);
  		xp.push_tag ("td", false);
  		maybe_add_dst_port (id_of_dot_node, xp, state_node);
*************** private:
*** 430,438 ****
  		xp.pop_tag ("td");
  	      }
  	      break;
! 	    case node_kind::field:
  	      {
! 		const char *name = state_node.get_name ();
  		gcc_assert (name);
  		xp.push_tag ("td", false);
  		maybe_add_dst_port (id_of_dot_node, xp, state_node);
--- 439,448 ----
  		xp.pop_tag ("td");
  	      }
  	      break;
! 	    case state_node_properties::kind_t::field:
  	      {
! 		const char *name
! 		  = state_node.get_property (state_node_properties::name);
  		gcc_assert (name);
  		xp.push_tag ("td", false);
  		maybe_add_dst_port (id_of_dot_node, xp, state_node);
*************** private:
*** 445,451 ****
  	      break;
  	    }
  
! 	  if (const char *type = state_node.get_type ())
  	    {
  	      xp.push_tag ("td", false);
  	      xp.set_attr ("align", "right");
--- 455,462 ----
  	      break;
  	    }
  
! 	  if (const char *type
! 		= state_node.get_property (state_node_properties::type))
  	    {
  	      xp.push_tag ("td", false);
  	      xp.set_attr ("align", "right");
*************** private:
*** 455,461 ****
  	      xp.pop_tag ("td");
  	    }
  
! 	  if (const char *value = state_node.get_value ())
  	    {
  	      xp.push_tag ("td", false);
  	      xp.set_attr ("align", "left");
--- 466,473 ----
  	      xp.pop_tag ("td");
  	    }
  
! 	  if (const char *value
! 		= state_node.get_property (state_node_properties::value_str))
  	    {
  	      xp.push_tag ("td", false);
  	      xp.set_attr ("align", "left");
*************** private:
*** 466,480 ****
  	      xp.pop_tag ("td");
  	      recurse = false;
  	    }
  	  xp.pop_tag ("tr");
  	}
  	break;
        }
  
      if (recurse)
!       for (size_t i = 0; i < state_node.m_node.get_num_children (); ++i)
  	on_node_in_table (id_of_dot_node, xp,
! 			  state_node.m_node.get_child (i),
  			  max_depth, depth + 1, num_columns);
    }
  
--- 478,493 ----
  	      xp.pop_tag ("td");
  	      recurse = false;
  	    }
+ 
  	  xp.pop_tag ("tr");
  	}
  	break;
        }
  
      if (recurse)
!       for (size_t i = 0; i < state_node.get_num_children (); ++i)
  	on_node_in_table (id_of_dot_node, xp,
! 			  state_node.get_child (i),
  			  max_depth, depth + 1, num_columns);
    }
  
*************** private:
*** 497,505 ****
    void
    maybe_add_src_port (const dot::id &id_of_dot_node,
  		      xml::printer &xp,
! 		      state_node_ref state_node)
    {
!     auto iter = m_src_nodes.find (&state_node.m_node);
      if (iter == m_src_nodes.end ())
        return;
  
--- 510,518 ----
    void
    maybe_add_src_port (const dot::id &id_of_dot_node,
  		      xml::printer &xp,
! 		      const diagnostics::digraphs::node &state_node)
    {
!     auto iter = m_src_nodes.find (&state_node);
      if (iter == m_src_nodes.end ())
        return;
  
*************** private:
*** 507,513 ****
      dot::node_id node_id (id_of_dot_node,
  			  dot::port (src_id,
  				     dot::compass_pt::e));
!     m_src_node_to_port_id.insert ({&state_node.m_node, node_id});
      xp.set_attr ("port", src_id.m_str);
    }
  
--- 520,526 ----
      dot::node_id node_id (id_of_dot_node,
  			  dot::port (src_id,
  				     dot::compass_pt::e));
!     m_src_node_to_port_id.insert ({&state_node, node_id});
      xp.set_attr ("port", src_id.m_str);
    }
  
*************** private:
*** 517,525 ****
    void
    maybe_add_dst_port (const dot::id &id_of_dot_node,
  		      xml::printer &xp,
! 		      state_node_ref state_node)
    {
!     auto iter = m_dst_nodes.find (&state_node.m_node);
      if (iter == m_dst_nodes.end ())
        return;
  
--- 530,538 ----
    void
    maybe_add_dst_port (const dot::id &id_of_dot_node,
  		      xml::printer &xp,
! 		      const diagnostics::digraphs::node &state_node)
    {
!     auto iter = m_dst_nodes.find (&state_node);
      if (iter == m_dst_nodes.end ())
        return;
  
*************** private:
*** 527,533 ****
      dot::node_id node_id (id_of_dot_node,
  			  dot::port (dst_id/*,
  					     dot::compass_pt::w*/));
!     m_dst_node_to_port_id.insert ({&state_node.m_node, node_id});
      xp.set_attr ("port", dst_id.m_str);
    }
  
--- 540,546 ----
      dot::node_id node_id (id_of_dot_node,
  			  dot::port (dst_id/*,
  					     dot::compass_pt::w*/));
!     m_dst_node_to_port_id.insert ({&state_node, node_id});
      xp.set_attr ("port", dst_id.m_str);
    }
  
*************** private:
*** 535,545 ****
    const logical_locations::manager &m_logical_loc_mgr;
  
    /* All nodes involved in edges (and thus will need a port).  */
!   std::set<digraphs::node *> m_src_nodes;
!   std::set<digraphs::node *> m_dst_nodes;
  
!   std::map<digraphs::node *, dot::node_id> m_src_node_to_port_id;
!   std::map<digraphs::node *, dot::node_id> m_dst_node_to_port_id;
  };
  
  std::unique_ptr<dot::graph>
--- 548,558 ----
    const logical_locations::manager &m_logical_loc_mgr;
  
    /* All nodes involved in edges (and thus will need a port).  */
!   std::set<const digraphs::node *> m_src_nodes;
!   std::set<const digraphs::node *> m_dst_nodes;
  
!   std::map<const digraphs::node *, dot::node_id> m_src_node_to_port_id;
!   std::map<const digraphs::node *, dot::node_id> m_dst_node_to_port_id;
  };
  
  std::unique_ptr<dot::graph>
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/state-graphs.cc gcc-16-20251019/gcc/diagnostics/state-graphs.cc
*** gcc-16-20251012/gcc/diagnostics/state-graphs.cc	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/state-graphs.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,156 ****
- /* Extensions to diagnostics::digraphs to support state graphs.
-    Copyright (C) 2025 Free Software Foundation, Inc.
-    Contributed by David Malcolm <dmalcolm@redhat.com>.
- 
- This file is part of GCC.
- 
- GCC is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
- 
- GCC is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- General Public License for more details.
- 
- You should have received a copy of the GNU General Public License
- along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
- 
- #define INCLUDE_ALGORITHM
- #define INCLUDE_MAP
- #define INCLUDE_SET
- #define INCLUDE_STRING
- #define INCLUDE_VECTOR
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
- 
- #include "diagnostics/state-graphs.h"
- #include "selftest.h"
- 
- using namespace diagnostics::state_graphs;
- 
- const char * const node_kind_strs[] = {
-   "globals",
-   "code",
-   "function",
-   "stack",
-   "stack-frame",
-   "heap",
-   "thread-local",
-   "dynalloc-buffer",
-   "variable",
-   "field",
-   "padding",
-   "element",
-   "other",
- };
- 
- const char *
- diagnostics::state_graphs::node_kind_to_str (enum node_kind k)
- {
-   return node_kind_strs[static_cast<int> (k)];
- }
- 
- // struct state_node_ref
- 
- enum node_kind
- state_node_ref::get_node_kind () const
- {
-   const char *value = get_attr ("kind");
-   if (!value)
-     return node_kind::other;
- 
-   for (size_t i = 0; i < ARRAY_SIZE (node_kind_strs); ++i)
-     if (!strcmp (node_kind_strs[i], value))
-       return static_cast<enum node_kind> (i);
- 
-   return node_kind::other;
- }
- 
- void
- state_node_ref::set_node_kind (enum node_kind k)
- {
-   set_attr ("kind", node_kind_to_str (k));
- }
- 
- const char * const dynalloc_state_strs[] = {
-   "unknown",
-   "nonnull",
-   "unchecked",
-   "freed"
- };
- 
- enum node_dynalloc_state
- state_node_ref::get_dynalloc_state () const
- {
-   const char *value = get_attr ("dynalloc-state");
-   if (!value)
-     return node_dynalloc_state::unknown;
- 
-   for (size_t i = 0; i < ARRAY_SIZE (dynalloc_state_strs); ++i)
-     if (!strcmp (dynalloc_state_strs[i], value))
-       return static_cast<enum node_dynalloc_state> (i);
-   
-   return node_dynalloc_state::unknown;
- }
- 
- void
- state_node_ref::set_dynalloc_state (enum node_dynalloc_state s) const
- {
-   set_attr ("dynalloc-state",
- 	    dynalloc_state_strs[static_cast <size_t> (s)]);
- }
- 
- const char *
- state_node_ref::get_dynamic_extents () const
- {
-   return m_node.get_attr (STATE_NODE_PREFIX, "dynamic-extents");
- }
- 
- void
- state_node_ref::set_json_attr (const char *key,
- 			       std::unique_ptr<json::value> value) const
- {
-   m_node.set_json_attr (STATE_NODE_PREFIX, key, std::move (value));
- }
- 
- #if CHECKING_P
- 
- namespace diagnostics {
- namespace selftest {
- 
- static void
- test_node_attrs ()
- {
-   digraphs::digraph g;
-   digraphs::node n (g, "a");
-   state_node_ref node_ref (n);
- 
-   ASSERT_EQ (node_ref.get_node_kind (), node_kind::other);
-   node_ref.set_node_kind (node_kind::stack);
-   ASSERT_EQ (node_ref.get_node_kind (), node_kind::stack);
- 
-   ASSERT_EQ (node_ref.get_dynalloc_state (), node_dynalloc_state::unknown);
-   node_ref.set_dynalloc_state (node_dynalloc_state::freed);
-   ASSERT_EQ (node_ref.get_dynalloc_state (), node_dynalloc_state::freed);
- 
-   ASSERT_EQ (node_ref.get_type (), nullptr);
-   node_ref.set_type ("const char *");
-   ASSERT_STREQ (node_ref.get_type (), "const char *");
- }
- 
- /* Run all of the selftests within this file.  */
- 
- void
- state_graphs_cc_tests ()
- {
-   test_node_attrs ();
- }
- 
- } // namespace diagnostics::selftest
- } // namespace diagnostics
- 
- #endif /* CHECKING_P */
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/diagnostics/state-graphs.h gcc-16-20251019/gcc/diagnostics/state-graphs.h
*** gcc-16-20251012/gcc/diagnostics/state-graphs.h	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/diagnostics/state-graphs.h	Sun Oct 19 22:32:13 2025
*************** along with GCC; see the file COPYING3.
*** 22,28 ****
  #define GCC_DIAGNOSTICS_STATE_GRAPHS_H
  
  #include "diagnostics/digraphs.h"
- #include "diagnostics/logical-locations.h"
  
  /* diagnostics::digraphs provides support for directed graphs.
  
--- 22,27 ----
*************** along with GCC; see the file COPYING3.
*** 34,151 ****
     in these nodes to stash extra properties (e.g. what kind of memory region
     a node is e.g. stack vs heap).  */
  
- class sarif_graph;
  namespace dot { class graph; }
  
  namespace diagnostics {
  namespace state_graphs {
  
- enum class node_kind
- {
-   // Memory regions
-   globals,
-   code,
-   function, // code within a particular function
-   stack,
-   stack_frame,
-   heap_,
-   thread_local_,
- 
-   /* Dynamically-allocated buffer,
-      on heap or stack (depending on parent).  */
-   dynalloc_buffer,
- 
-   variable,
- 
-   field, // field within a struct or union
-   padding, // padding bits in a struct or union
-   element, // element within an array
- 
-   other // anything else
- };
- 
- extern const char *
- node_kind_to_str (enum node_kind);
- 
- enum class node_dynalloc_state
- {
-   unknown,
-   nonnull,
-   unchecked,
-   freed
- };
- 
- /* Prefixes to use in SARIF property bags.  */
- #define STATE_GRAPH_PREFIX "gcc/diagnostic_state_graph/"
- #define STATE_NODE_PREFIX "gcc/diagnostic_state_node/"
- #define STATE_EDGE_PREFIX "gcc/diagnostic_state_edge/"
- 
- /* A wrapper around a node that gets/sets attributes, using
-    the node's property bag for storage, so that the data roundtrips
-    through SARIF.  */
- 
- struct state_node_ref
- {
-   state_node_ref (diagnostics::digraphs::node &node)
-   : m_node (node)
-   {}
- 
-   enum node_kind
-   get_node_kind () const;
-   void
-   set_node_kind (enum node_kind);
- 
-   // For node_kind::stack_frame, this will be the function
-   logical_locations::key
-   get_logical_loc () const
-   {
-     return m_node.get_logical_loc ();
-   }
- 
-   // For node_kind::dynalloc_buffer
-   enum node_dynalloc_state
-   get_dynalloc_state () const;
- 
-   void
-   set_dynalloc_state (enum node_dynalloc_state) const;
- 
-   const char *
-   get_dynamic_extents () const;
- 
-   const char *
-   get_name () const { return get_attr ("name"); }
-   void
-   set_name (const char *name) const { set_attr ("name", name); }
- 
-   const char *
-   get_type () const { return get_attr ("type"); }
-   void
-   set_type (const char *type) const { set_attr ("type", type); }
- 
-   const char *
-   get_value () const { return get_attr ("value"); }
- 
-   const char *
-   get_index () const { return get_attr ("index"); }
- 
-   const char *
-   get_attr (const char *key) const
-   {
-     return m_node.get_attr (STATE_NODE_PREFIX, key);
-   }
- 
-   void
-   set_attr (const char *key, const char *value) const
-   {
-     return m_node.set_attr (STATE_NODE_PREFIX, key, value);
-   }
- 
-   void
-   set_json_attr (const char *key, std::unique_ptr<json::value> value) const;
- 
-   diagnostics::digraphs::node &m_node;
- };
- 
  extern std::unique_ptr<dot::graph>
  make_dot_graph (const diagnostics::digraphs::digraph &state_graph,
  		const logical_locations::manager &logical_loc_mgr);
--- 33,43 ----
diff -Nrcpad gcc-16-20251012/gcc/doc/extend.texi gcc-16-20251019/gcc/doc/extend.texi
*** gcc-16-20251012/gcc/doc/extend.texi	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/doc/extend.texi	Sun Oct 19 22:32:13 2025
*************** Enable/disable the generation of the AMX
*** 6750,6760 ****
  @itemx no-amx-tf32
  Enable/disable the generation of the AMX-TF32 instructions.
  
- @cindex @code{target("amx-transpose")} function attribute, x86
- @item amx-transpose
- @itemx no-amx-transpose
- Enable/disable the generation of the AMX-TRANSPOSE instructions.
- 
  @cindex @code{target("amx-fp8")} function attribute, x86
  @item amx-fp8
  @itemx no-amx-fp8
--- 6750,6755 ----
diff -Nrcpad gcc-16-20251012/gcc/doc/invoke.texi gcc-16-20251019/gcc/doc/invoke.texi
*** gcc-16-20251012/gcc/doc/invoke.texi	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/doc/invoke.texi	Sun Oct 19 22:32:13 2025
*************** Objective-C and Objective-C++ Dialects}.
*** 659,665 ****
  -ftree-phiprop  -ftree-loop-distribution  -ftree-loop-distribute-patterns
  -ftree-loop-ivcanon  -ftree-loop-linear  -ftree-loop-optimize
  -ftree-loop-vectorize
! -ftree-parallelize-loops=@var{n}  -ftree-pre  -ftree-partial-pre  -ftree-pta
  -ftree-reassoc  -ftree-scev-cprop  -ftree-sink  -ftree-slsr  -ftree-sra
  -ftree-switch-conversion  -ftree-tail-merge
  -ftree-ter  -ftree-vectorize  -ftree-vrp  -ftrivial-auto-var-init
--- 659,665 ----
  -ftree-phiprop  -ftree-loop-distribution  -ftree-loop-distribute-patterns
  -ftree-loop-ivcanon  -ftree-loop-linear  -ftree-loop-optimize
  -ftree-loop-vectorize
! -ftree-parallelize-loops[=@var{n}]  -ftree-pre  -ftree-partial-pre  -ftree-pta
  -ftree-reassoc  -ftree-scev-cprop  -ftree-sink  -ftree-slsr  -ftree-sra
  -ftree-switch-conversion  -ftree-tail-merge
  -ftree-ter  -ftree-vectorize  -ftree-vrp  -ftrivial-auto-var-init
*************** See RS/6000 and PowerPC Options.
*** 1506,1513 ****
  -mamx-tile  -mamx-int8  -mamx-bf16 -muintr -mhreset -mavxvnni -mamx-fp8
  -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16
  -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mapxf
! -musermsr -mavx10.1 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mmovrs
! -mamx-movrs
  -mcldemote  -mms-bitfields  -mno-align-stringops  -minline-all-stringops
  -minline-stringops-dynamically  -mstringop-strategy=@var{alg}
  -mkl -mwidekl
--- 1506,1512 ----
  -mamx-tile  -mamx-int8  -mamx-bf16 -muintr -mhreset -mavxvnni -mamx-fp8
  -mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16
  -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mapxf
! -musermsr -mavx10.1 -mavx10.2 -mamx-avx512 -mamx-tf32 -mmovrs -mamx-movrs
  -mcldemote  -mms-bitfields  -mno-align-stringops  -minline-all-stringops
  -minline-stringops-dynamically  -mstringop-strategy=@var{alg}
  -mkl -mwidekl
*************** These are visible by pressing ``j'' and
*** 6297,6312 ****
  backward through events.  Enabling this option will slow down
  HTML generation.
  
! @item show-state-diagrams-dot-src=@r{[}yes@r{|}no@r{]}
  This is a debugging feature and defaults to @code{no}.
! If @code{show-state-diagrams-dot-src=yes}
  then if @code{show-state-diagrams=yes},
  the generated state diagrams will also show the .dot source input to
  GraphViz used for the diagram.
  
! @item show-state-diagrams-sarif=@r{[}yes@r{|}no@r{]}
  This is a debugging feature and defaults to @code{no}.
! If @code{show-state-diagrams-sarif=yes}
  then if @code{show-state-diagrams=yes}, the generated state diagrams will
  also show a SARIF representation of the state.
  
--- 6296,6311 ----
  backward through events.  Enabling this option will slow down
  HTML generation.
  
! @item show-graph-dot-src=@r{[}yes@r{|}no@r{]}
  This is a debugging feature and defaults to @code{no}.
! If @code{show-graph-dot-src=yes}
  then if @code{show-state-diagrams=yes},
  the generated state diagrams will also show the .dot source input to
  GraphViz used for the diagram.
  
! @item show-graph-sarif=@r{[}yes@r{|}no@r{]}
  This is a debugging feature and defaults to @code{no}.
! If @code{show-graph-sarif=yes}
  then if @code{show-state-diagrams=yes}, the generated state diagrams will
  also show a SARIF representation of the state.
  
*************** variable merging and induction variable
*** 14692,14699 ****
  Enabled by default at @option{-O1} and higher.
  
  @opindex ftree-parallelize-loops
! @item -ftree-parallelize-loops=n
! Parallelize loops, i.e., split their iteration space to run in n threads.
  This is only possible for loops whose iterations are independent
  and can be arbitrarily reordered.  The optimization is only
  profitable on multiprocessor machines, for loops that are CPU-intensive,
--- 14691,14699 ----
  Enabled by default at @option{-O1} and higher.
  
  @opindex ftree-parallelize-loops
! @item -ftree-parallelize-loops
! @itemx -ftree-parallelize-loops=@var{n}
! Parallelize loops, i.e., split their iteration space to run in multiple threads.
  This is only possible for loops whose iterations are independent
  and can be arbitrarily reordered.  The optimization is only
  profitable on multiprocessor machines, for loops that are CPU-intensive,
*************** rather than constrained e.g.@: by memory
*** 14701,14706 ****
--- 14701,14717 ----
  implies @option{-pthread}, and thus is only supported on targets
  that have support for @option{-pthread}.
  
+ When a positive value @var{n} is specified, the number of threads is fixed
+ at compile time and cannot be changed after compilation. The compiler
+ generates ``#pragma omp parallel num_threads(@var{n})''.
+ 
+ When used without @code{=@var{n}} (i.e., @option{-ftree-parallelize-loops}),
+ the number of threads is determined at program execution time via the
+ @env{OMP_NUM_THREADS} environment variable. If @env{OMP_NUM_THREADS} is not
+ set, the OpenMP runtime automatically detects the number of available
+ processors and uses that value. This enables creating binaries that
+ adapt to different hardware configurations without recompilation.
+ 
  @opindex ftree-pta
  @item -ftree-pta
  Perform function-local points-to analysis on trees.  This flag is
*************** AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPC
*** 35144,35156 ****
  SM4 instruction set support.
  
  @item pantherlake
! Intel Panther Lake CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3,
! SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC,
! XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI,
! MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT, PCONFIG, PKU,
! VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX-VNNI, UINTR, AVXIFMA, AVXVNNIINT8,
! AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3, SM4 and PREFETCHI
! instruction set support.
  
  @item sapphirerapids
  @itemx emeraldrapids
--- 35155,35168 ----
  SM4 instruction set support.
  
  @item pantherlake
! @itemx wildcatlake
! Intel Panther Lake/Wildcat Lake CPU with 64-bit extensions, MOVBE, MMX, SSE,
! SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PREFETCHW, PCLMUL, RDRND,
! XSAVE, XSAVEC, XSAVES, XSAVEOPT, FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE,
! CLWB, MOVDIRI, MOVDIR64B, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA,
! LZCNT, PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, AVX-VNNI, UINTR,
! AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, AVXVNNIINT16, SHA512, SM3 and
! SM4 instruction set support.
  
  @item sapphirerapids
  @itemx emeraldrapids
*************** MOVDIRI, MOVDIR64B, ENQCMD, CLDEMOTE, PT
*** 35197,35204 ****
  UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16,
  PREFETCHI, AMX-COMPLEX, AVX10.1-512, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16,
  AVX-VNNI-INT8, CMPccXADD, SHA512, SM3, SM4, AVX10.2-512, APX_F, AMX-AVX512,
! AMX-FP8, AMX-TF32, AMX-TRANSPOSE, MOVRS, AMX-MOVRS and USER_MSR instruction set
! support.
  
  @item bonnell
  @itemx atom
--- 35209,35215 ----
  UINTR, AMX-BF16, AMX-TILE, AMX-INT8, AVX-VNNI, AVX512FP16, AVX512BF16, AMX-FP16,
  PREFETCHI, AMX-COMPLEX, AVX10.1-512, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16,
  AVX-VNNI-INT8, CMPccXADD, SHA512, SM3, SM4, AVX10.2-512, APX_F, AMX-AVX512,
! AMX-FP8, AMX-TF32, MOVRS and AMX-MOVRS instruction set support.
  
  @item bonnell
  @itemx atom
*************** preferred alignment to @option{-mpreferr
*** 36154,36162 ****
  @opindex mamx-tf32
  @itemx -mamx-tf32
  @need 200
- @opindex mamx-transpose
- @itemx -mamx-transpose
- @need 200
  @itemx -mamx-fp8
  @opindex mamx-fp8
  @need 200
--- 36165,36170 ----
*************** WAITPKG, VPCLMULQDQ, AVX512BITALG, MOVDI
*** 36175,36183 ****
  AVX512VPOPCNTDQ, AVX512VNNI, SERIALIZE, UINTR, HRESET, AMXTILE, AMXINT8,
  AMXBF16, KL, WIDEKL, AVXVNNI, AVX512-FP16, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
  CMPCCXADD, AMX-FP16, PREFETCHI, RAOINT, AMX-COMPLEX, AVXVNNIINT16, SM3, SHA512,
! SM4, APX_F, USER_MSR, AVX10.1, AVX10.2, AMX-AVX512, AMX-TF32, AMX-TRANSPOSE,
! AMX-FP8, MOVRS, AMX-MOVRS or CLDEMOTE extended instruction sets. Each has a
! corresponding @option{-mno-} option to disable use of these instructions.
  
  These extensions are also available as built-in functions: see
  @ref{x86 Built-in Functions}, for details of the functions enabled and
--- 36183,36191 ----
  AVX512VPOPCNTDQ, AVX512VNNI, SERIALIZE, UINTR, HRESET, AMXTILE, AMXINT8,
  AMXBF16, KL, WIDEKL, AVXVNNI, AVX512-FP16, AVXIFMA, AVXVNNIINT8, AVXNECONVERT,
  CMPCCXADD, AMX-FP16, PREFETCHI, RAOINT, AMX-COMPLEX, AVXVNNIINT16, SM3, SHA512,
! SM4, APX_F, USER_MSR, AVX10.1, AVX10.2, AMX-AVX512, AMX-TF32, AMX-FP8, MOVRS,
! AMX-MOVRS or CLDEMOTE extended instruction sets. Each has a corresponding
! @option{-mno-} option to disable use of these instructions.
  
  These extensions are also available as built-in functions: see
  @ref{x86 Built-in Functions}, for details of the functions enabled and
diff -Nrcpad gcc-16-20251012/gcc/doc/md.texi gcc-16-20251019/gcc/doc/md.texi
*** gcc-16-20251012/gcc/doc/md.texi	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/doc/md.texi	Sun Oct 19 22:32:13 2025
*************** equal or wider than the mode of the abso
*** 5847,5861 ****
  in operand 0, which is of the same mode as operand 3.
  @var{m} is the mode of operand 1 and operand 2.
  
! @cindex @code{widen_ssum@var{m}3} instruction pattern
! @cindex @code{widen_usum@var{m}3} instruction pattern
! @item @samp{widen_ssum@var{m}3}
! @itemx @samp{widen_usum@var{m}3}
  Operands 0 and 2 are of the same mode, which is wider than the mode of
  operand 1. Add operand 1 to operand 2 and place the widened result in
  operand 0. (This is used express accumulation of elements into an accumulator
  of a wider mode.)
! @var{m} is the mode of operand 1.
  
  @cindex @code{smulhs@var{m}3} instruction pattern
  @cindex @code{umulhs@var{m}3} instruction pattern
--- 5847,5861 ----
  in operand 0, which is of the same mode as operand 3.
  @var{m} is the mode of operand 1 and operand 2.
  
! @cindex @code{widen_ssum@var{n}@var{m}3} instruction pattern
! @cindex @code{widen_usum@var{n}@var{m}3} instruction pattern
! @item @samp{widen_ssum@var{n}@var{m}3}
! @itemx @samp{widen_usum@var{n}@var{m}3}
  Operands 0 and 2 are of the same mode, which is wider than the mode of
  operand 1. Add operand 1 to operand 2 and place the widened result in
  operand 0. (This is used express accumulation of elements into an accumulator
  of a wider mode.)
! @var{m} is the mode of operand 1 and @var{n} is the mode of operand 0.
  
  @cindex @code{smulhs@var{m}3} instruction pattern
  @cindex @code{umulhs@var{m}3} instruction pattern
diff -Nrcpad gcc-16-20251012/gcc/doc/sourcebuild.texi gcc-16-20251019/gcc/doc/sourcebuild.texi
*** gcc-16-20251012/gcc/doc/sourcebuild.texi	Sun Oct 12 22:32:40 2025
--- gcc-16-20251019/gcc/doc/sourcebuild.texi	Sun Oct 19 22:32:13 2025
*************** Target supports the execution of @code{a
*** 2698,2706 ****
  @item amx_tf32
  Target supports the execution of @code{amx-tf32} instructions.
  
- @item amx_transpose
- Target supports the execution of @code{amx-transpose} instructions.
- 
  @item amx_fp8
  Target supports the execution of @code{amx-fp8} instructions.
  
--- 2698,2703 ----
diff -Nrcpad gcc-16-20251012/gcc/fortran/ChangeLog gcc-16-20251019/gcc/fortran/ChangeLog
*** gcc-16-20251012/gcc/fortran/ChangeLog	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/fortran/ChangeLog	Sun Oct 19 22:32:13 2025
***************
*** 1,3 ****
--- 1,37 ----
+ 2025-10-18  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* resolve.cc (resolve_conditional): Allow character in cond-expr.
+ 	* trans-const.cc (gfc_conv_constant): Handle want_pointer.
+ 	* trans-expr.cc (gfc_conv_conditional_expr): Fill se->string_length.
+ 	(gfc_conv_string_parameter): Handle COND_EXPR tree code.
+ 
+ 2025-10-17  Josef Melcr  <jmelcr02@gmail.com>
+ 
+ 	* f95-lang.cc (ATTR_CALLBACK_GOMP_LIST): New attr list
+ 	corresponding to the list in builtin-attrs.def.
+ 
+ 2025-10-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/121191
+ 	* trans-array.cc (has_parameterized_comps): New function which
+ 	checks if a derived type has parameterized components.
+ 	( gfc_deallocate_pdt_comp): Use it to prevent deallocation of
+ 	PDTs if there are no parameterized components.
+ 
+ 2025-10-12  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/95543
+ 	PR fortran/103748
+ 	* decl.cc (insert_parameter_exprs): Guard param->expr before
+ 	using it.
+ 	(gfc_get_pdt_instance): Substitute paramaters in kind default
+ 	initializers.
+ 	(gfc_match_decl_type_spec): Emit an error if a type paramter
+ 	specification list appears in a variable declaraion with a
+ 	non-parameterized type.
+ 	* primary.cc (gfc_match_rvalue): Emit an error if a type spec
+ 	list is empty.
+ 
  2025-10-11  Harald Anlauf  <anlauf@gmx.de>
  
  	PR fortran/50377
diff -Nrcpad gcc-16-20251012/gcc/fortran/f95-lang.cc gcc-16-20251019/gcc/fortran/f95-lang.cc
*** gcc-16-20251012/gcc/fortran/f95-lang.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/fortran/f95-lang.cc	Sun Oct 19 22:32:14 2025
*************** gfc_builtin_function (tree decl)
*** 580,585 ****
--- 580,586 ----
  #define ATTR_COLD_NORETURN_NOTHROW_LEAF_LIST \
  					(ECF_COLD | ECF_NORETURN | \
  					 ECF_NOTHROW | ECF_LEAF)
+ #define ATTR_CALLBACK_GOMP_LIST (ECF_CB_1_2 | ATTR_NOTHROW_LIST)
  #define ATTR_PURE_NOTHROW_LIST (ECF_PURE | ECF_NOTHROW)
  
  static void
diff -Nrcpad gcc-16-20251012/gcc/fortran/resolve.cc gcc-16-20251019/gcc/fortran/resolve.cc
*** gcc-16-20251012/gcc/fortran/resolve.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/fortran/resolve.cc	Sun Oct 19 22:32:14 2025
*************** resolve_conditional (gfc_expr *expr)
*** 5060,5073 ****
  
    /* 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 "
--- 5060,5076 ----
  
    /* 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
!       && true_expr->ts.type != BT_CHARACTER)
      {
!       gfc_error (
! 	"Sorry, only integer, logical, real, complex and character types are "
! 	"currently supported for conditional expressions at %L",
! 	&expr->where);
        return false;
      }
  
+   /* TODO: support arrays in conditional expressions  */
    if (true_expr->rank > 0)
      {
        gfc_error ("Sorry, array is currently unsupported for conditional "
diff -Nrcpad gcc-16-20251012/gcc/fortran/trans-array.cc gcc-16-20251019/gcc/fortran/trans-array.cc
*** gcc-16-20251012/gcc/fortran/trans-array.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/fortran/trans-array.cc	Sun Oct 19 22:32:14 2025
*************** gfc_allocate_pdt_comp (gfc_symbol * der_
*** 11385,11393 ****
--- 11385,11411 ----
  /* Recursively traverse an object of parameterized derived type, generating
     code to deallocate parameterized components.  */
  
+ static bool
+ has_parameterized_comps (gfc_symbol * der_type)
+ {
+   /* A type without parameterized components causes gimplifier problems.  */
+   bool parameterized_comps = false;
+   for (gfc_component *c = der_type->components; c; c = c->next)
+     if (c->attr.pdt_array || c->attr.pdt_string)
+       parameterized_comps = true;
+     else if (c->ts.type == BT_DERIVED
+ 	     && c->ts.u.derived->attr.pdt_type
+ 	     && strcmp (der_type->name, c->ts.u.derived->name))
+       parameterized_comps = has_parameterized_comps (c->ts.u.derived);
+   return parameterized_comps;
+ }
+ 
  tree
  gfc_deallocate_pdt_comp (gfc_symbol * der_type, tree decl, int rank)
  {
+   if (!has_parameterized_comps (der_type))
+     return NULL_TREE;
+ 
    return structure_alloc_comps (der_type, decl, NULL_TREE, rank,
  				DEALLOCATE_PDT_COMP, 0, NULL);
  }
diff -Nrcpad gcc-16-20251012/gcc/fortran/trans-const.cc gcc-16-20251019/gcc/fortran/trans-const.cc
*** gcc-16-20251012/gcc/fortran/trans-const.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/fortran/trans-const.cc	Sun Oct 19 22:32:14 2025
*************** gfc_conv_constant (gfc_se * se, gfc_expr
*** 438,441 ****
--- 438,449 ----
       structure, too.  */
    if (expr->ts.type == BT_CHARACTER)
      se->string_length = TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (se->expr)));
+ 
+   if (se->want_pointer)
+     {
+       if (expr->ts.type == BT_CHARACTER)
+ 	gfc_conv_string_parameter (se);
+       else
+ 	se->expr = gfc_build_addr_expr (NULL_TREE, se->expr);
+     }
  }
diff -Nrcpad gcc-16-20251012/gcc/fortran/trans-expr.cc gcc-16-20251019/gcc/fortran/trans-expr.cc
*** gcc-16-20251012/gcc/fortran/trans-expr.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/fortran/trans-expr.cc	Sun Oct 19 22:32:14 2025
*************** gfc_conv_conditional_expr (gfc_se *se, g
*** 4418,4423 ****
--- 4418,4428 ----
  
    se->expr = fold_build3_loc (input_location, COND_EXPR, type, condition,
  			      true_val, false_val);
+   if (expr->ts.type == BT_CHARACTER)
+     se->string_length
+       = fold_build3_loc (input_location, COND_EXPR, gfc_charlen_type_node,
+ 			 condition, true_se.string_length,
+ 			 false_se.string_length);
  }
  
  /* If a string's length is one, we convert it to a single character.  */
*************** gfc_conv_string_parameter (gfc_se * se)
*** 11546,11551 ****
--- 11551,11579 ----
        return;
      }
  
+   if (TREE_CODE (se->expr) == COND_EXPR)
+     {
+       tree cond = TREE_OPERAND (se->expr, 0);
+       tree lhs = TREE_OPERAND (se->expr, 1);
+       tree rhs = TREE_OPERAND (se->expr, 2);
+ 
+       gfc_se lse, rse;
+       gfc_init_se (&lse, NULL);
+       gfc_init_se (&rse, NULL);
+ 
+       lse.expr = lhs;
+       lse.string_length = se->string_length;
+       gfc_conv_string_parameter (&lse);
+ 
+       rse.expr = rhs;
+       rse.string_length = se->string_length;
+       gfc_conv_string_parameter (&rse);
+ 
+       se->expr
+ 	= fold_build3_loc (input_location, COND_EXPR, TREE_TYPE (lse.expr),
+ 			   cond, lse.expr, rse.expr);
+     }
+ 
    if ((TREE_CODE (TREE_TYPE (se->expr)) == ARRAY_TYPE
         || TREE_CODE (TREE_TYPE (se->expr)) == INTEGER_TYPE)
        && TYPE_STRING_FLAG (TREE_TYPE (se->expr)))
diff -Nrcpad gcc-16-20251012/gcc/gimple-loop-jam.cc gcc-16-20251019/gcc/gimple-loop-jam.cc
*** gcc-16-20251012/gcc/gimple-loop-jam.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/gimple-loop-jam.cc	Sun Oct 19 22:32:14 2025
*************** tree_loop_unroll_and_jam (void)
*** 641,646 ****
--- 641,647 ----
  	{
  	  cleanup_tree_cfg ();
  	  todo &= ~TODO_cleanup_cfg;
+ 	  todo |= loop_invariant_motion_in_fun (cfun, false);
  	}
        rewrite_into_loop_closed_ssa (NULL, 0);
        scev_reset ();
diff -Nrcpad gcc-16-20251012/gcc/internal-fn.cc gcc-16-20251019/gcc/internal-fn.cc
*** gcc-16-20251012/gcc/internal-fn.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/internal-fn.cc	Sun Oct 19 22:32:14 2025
*************** get_supported_else_vals (enum insn_code
*** 5234,5240 ****
  			 vec<int> &else_vals)
  {
    const struct insn_data_d *data = &insn_data[icode];
!   if ((char)else_index >= data->n_operands)
      return;
  
    machine_mode else_mode = data->operand[else_index].mode;
--- 5234,5240 ----
  			 vec<int> &else_vals)
  {
    const struct insn_data_d *data = &insn_data[icode];
!   if ((int) else_index >= data->n_operands || (int) else_index == -1)
      return;
  
    machine_mode else_mode = data->operand[else_index].mode;
*************** internal_gather_scatter_fn_supported_p (
*** 5308,5313 ****
--- 5308,5333 ----
  
    return ok;
  }
+ 
+ /* Return true if the target supports a strided load/store function IFN
+    with VECTOR_TYPE.  If supported and ELSVALS is nonzero the supported else
+    values will be added to the vector ELSVALS points to.  */
+ 
+ bool
+ internal_strided_fn_supported_p (internal_fn ifn, tree vector_type,
+ 				 vec<int> *elsvals)
+ {
+   machine_mode mode = TYPE_MODE (vector_type);
+   optab optab = direct_internal_fn_optab (ifn);
+   insn_code icode = direct_optab_handler (optab, mode);
+ 
+   bool ok = icode != CODE_FOR_nothing;
+ 
+   if (ok && elsvals)
+     get_supported_else_vals (icode, internal_fn_else_index (ifn), *elsvals);
+ 
+   return ok;
+ }
  
  /* Return true if the target supports IFN_CHECK_{RAW,WAR}_PTRS function IFN
     for pointers of type TYPE when the accesses have LENGTH bytes and their
diff -Nrcpad gcc-16-20251012/gcc/internal-fn.h gcc-16-20251019/gcc/internal-fn.h
*** gcc-16-20251012/gcc/internal-fn.h	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/internal-fn.h	Sun Oct 19 22:32:14 2025
*************** extern int internal_fn_alias_ptr_index (
*** 246,251 ****
--- 246,253 ----
  extern bool internal_gather_scatter_fn_supported_p (internal_fn, tree,
  						    tree, tree, int,
  						    vec<int> * = nullptr);
+ extern bool internal_strided_fn_supported_p (internal_fn, tree,
+ 					      vec<int> * = nullptr);
  extern bool internal_check_ptrs_fn_supported_p (internal_fn, tree,
  						poly_uint64, unsigned int);
  
diff -Nrcpad gcc-16-20251012/gcc/ipa-cp.cc gcc-16-20251019/gcc/ipa-cp.cc
*** gcc-16-20251012/gcc/ipa-cp.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/ipa-cp.cc	Sun Oct 19 22:32:14 2025
*************** along with GCC; see the file COPYING3.
*** 131,137 ****
  #include "dbgcnt.h"
  #include "symtab-clones.h"
  #include "gimple-range.h"
! 
  
  /* Allocation pools for values and their sources in ipa-cp.  */
  
--- 131,137 ----
  #include "dbgcnt.h"
  #include "symtab-clones.h"
  #include "gimple-range.h"
! #include "attr-callback.h"
  
  /* Allocation pools for values and their sources in ipa-cp.  */
  
*************** identify_dead_nodes (struct cgraph_node
*** 6214,6219 ****
--- 6214,6285 ----
      }
  }
  
+ /* Removes all useless callback edges from the callgraph.  Useless callback
+    edges might mess up the callgraph, because they might be impossible to
+    redirect and so on, leading to crashes.  Their usefulness is evaluated
+    through callback_edge_useful_p.  */
+ 
+ static void
+ purge_useless_callback_edges ()
+ {
+   if (dump_file)
+     fprintf (dump_file, "\nPurging useless callback edges:\n");
+ 
+   cgraph_edge *e;
+   cgraph_node *node;
+   FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node)
+     {
+       for (e = node->callees; e; e = e->next_callee)
+ 	{
+ 	  if (e->has_callback)
+ 	    {
+ 	      if (dump_file)
+ 		fprintf (dump_file, "\tExamining callbacks of edge %s -> %s:\n",
+ 			 e->caller->dump_name (), e->callee->dump_name ());
+ 	      if (!lookup_attribute (CALLBACK_ATTR_IDENT,
+ 				     DECL_ATTRIBUTES (e->callee->decl))
+ 		  && !callback_is_special_cased (e->callee->decl, e->call_stmt))
+ 		{
+ 		  if (dump_file)
+ 		    fprintf (
+ 		      dump_file,
+ 		      "\t\tPurging callbacks, because the callback-dispatching"
+ 		      "function no longer has any callback attributes.\n");
+ 		  e->purge_callback_edges ();
+ 		  continue;
+ 		}
+ 	      cgraph_edge *cbe, *next;
+ 	      for (cbe = e->first_callback_edge (); cbe; cbe = next)
+ 		{
+ 		  next = cbe->next_callback_edge ();
+ 		  if (!callback_edge_useful_p (cbe))
+ 		    {
+ 		      if (dump_file)
+ 			fprintf (dump_file,
+ 				 "\t\tCallback edge %s -> %s not deemed "
+ 				 "useful, removing.\n",
+ 				 cbe->caller->dump_name (),
+ 				 cbe->callee->dump_name ());
+ 		      cgraph_edge::remove (cbe);
+ 		    }
+ 		  else
+ 		    {
+ 		      if (dump_file)
+ 			fprintf (dump_file,
+ 				 "\t\tKept callback edge %s -> %s "
+ 				 "because it looks useful.\n",
+ 				 cbe->caller->dump_name (),
+ 				 cbe->callee->dump_name ());
+ 		    }
+ 		}
+ 	    }
+ 	}
+     }
+ 
+   if (dump_file)
+     fprintf (dump_file, "\n");
+ }
+ 
  /* The decision stage.  Iterate over the topological order of call graph nodes
     TOPO and make specialized clones if deemed beneficial.  */
  
*************** ipcp_decision_stage (class ipa_topo_info
*** 6244,6249 ****
--- 6310,6320 ----
        if (change)
  	identify_dead_nodes (node);
      }
+ 
+   /* Currently, the primary use of callback edges is constant propagation.
+      Constant propagation is now over, so we have to remove unused callback
+      edges.  */
+   purge_useless_callback_edges ();
  }
  
  /* Look up all VR and bits information that we have discovered and copy it
diff -Nrcpad gcc-16-20251012/gcc/ipa-fnsummary.cc gcc-16-20251019/gcc/ipa-fnsummary.cc
*** gcc-16-20251012/gcc/ipa-fnsummary.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/ipa-fnsummary.cc	Sun Oct 19 22:32:14 2025
*************** ipa_call_summary_t::duplicate (struct cg
*** 990,996 ****
    info->predicate = NULL;
    edge_set_predicate (dst, srcinfo->predicate);
    info->param = srcinfo->param.copy ();
!   if (!dst->indirect_unknown_callee && src->indirect_unknown_callee)
      {
        info->call_stmt_size -= (eni_size_weights.indirect_call_cost
  			       - eni_size_weights.call_cost);
--- 990,999 ----
    info->predicate = NULL;
    edge_set_predicate (dst, srcinfo->predicate);
    info->param = srcinfo->param.copy ();
!   if (!dst->indirect_unknown_callee && src->indirect_unknown_callee
!       /* Don't subtract the size when dealing with callback pairs, since the
! 	 edge has no real size.  */
!       && !src->has_callback && !dst->callback)
      {
        info->call_stmt_size -= (eni_size_weights.indirect_call_cost
  			       - eni_size_weights.call_cost);
*************** param_change_prob (ipa_func_body_info *f
*** 2356,2362 ****
        /* Lookup the most frequent update of the value and believe that
  	 it dominates all the other; precise analysis here is difficult.  */
        EXECUTE_IF_SET_IN_BITMAP (info.bb_set, 0, index, bi)
! 	max = max.max (BASIC_BLOCK_FOR_FN (cfun, index)->count);
        if (dump_file)
  	{
            fprintf (dump_file, "     Set with count ");
--- 2359,2366 ----
        /* Lookup the most frequent update of the value and believe that
  	 it dominates all the other; precise analysis here is difficult.  */
        EXECUTE_IF_SET_IN_BITMAP (info.bb_set, 0, index, bi)
! 	max = profile_count::max_prefer_initialized
! 		(max, BASIC_BLOCK_FOR_FN (cfun, index)->count);
        if (dump_file)
  	{
            fprintf (dump_file, "     Set with count ");
*************** analyze_function_body (struct cgraph_nod
*** 3106,3111 ****
--- 3110,3134 ----
  						     es, es3);
  		    }
  		}
+ 
+ 	      /* If dealing with a carrying edge, copy its summary over to its
+ 		 attached edges as well.  */
+ 	      if (edge->has_callback)
+ 		{
+ 		  cgraph_edge *cbe;
+ 		  for (cbe = edge->first_callback_edge (); cbe;
+ 		       cbe = cbe->next_callback_edge ())
+ 		    {
+ 		      ipa_call_summary *es2 = ipa_call_summaries->get (cbe);
+ 		      es2 = ipa_call_summaries->get_create (cbe);
+ 		      ipa_call_summaries->duplicate (edge, cbe, es, es2);
+ 		      /* Unlike speculative edges, callback edges have no real
+ 			 size or time; the call doesn't exist.  Reflect that in
+ 			 their summaries.  */
+ 		      es2->call_stmt_size = 0;
+ 		      es2->call_stmt_time = 0;
+ 		    }
+ 		}
  	    }
  
  	  /* TODO: When conditional jump or switch is known to be constant, but
diff -Nrcpad gcc-16-20251012/gcc/ipa-inline-analysis.cc gcc-16-20251019/gcc/ipa-inline-analysis.cc
*** gcc-16-20251012/gcc/ipa-inline-analysis.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/ipa-inline-analysis.cc	Sun Oct 19 22:32:14 2025
*************** do_estimate_growth_1 (struct cgraph_node
*** 417,422 ****
--- 417,427 ----
      {
        gcc_checking_assert (e->inline_failed);
  
+       /* Don't count callback edges into growth, since they are never inlined
+ 	 anyway.  */
+       if (e->callback)
+ 	continue;
+ 
        if (cgraph_inline_failed_type (e->inline_failed) == CIF_FINAL_ERROR
  	  || !opt_for_fn (e->caller->decl, optimize))
  	{
diff -Nrcpad gcc-16-20251012/gcc/ipa-inline-transform.cc gcc-16-20251019/gcc/ipa-inline-transform.cc
*** gcc-16-20251012/gcc/ipa-inline-transform.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/ipa-inline-transform.cc	Sun Oct 19 22:32:14 2025
*************** inline_transform (struct cgraph_node *no
*** 833,839 ****
        FOR_ALL_BB_FN (bb, cfun)
  	{
  	  bb->count = bb->count.apply_scale (num, den);
! 	  cfun->cfg->count_max = cfun->cfg->count_max.max (bb->count);
  	}
        ENTRY_BLOCK_PTR_FOR_FN (cfun)->count = node->count;
      }
--- 833,840 ----
        FOR_ALL_BB_FN (bb, cfun)
  	{
  	  bb->count = bb->count.apply_scale (num, den);
! 	  cfun->cfg->count_max = profile_count::max_prefer_initialized
! 		  (cfun->cfg->count_max, bb->count);
  	}
        ENTRY_BLOCK_PTR_FOR_FN (cfun)->count = node->count;
      }
*************** inline_transform (struct cgraph_node *no
*** 844,850 ****
        if (!e->inline_failed)
  	has_inline = true;
        next = e->next_callee;
!       cgraph_edge::redirect_call_stmt_to_callee (e);
      }
    node->remove_all_references ();
  
--- 845,861 ----
        if (!e->inline_failed)
  	has_inline = true;
        next = e->next_callee;
!       if (e->has_callback)
! 	{
! 	  /* Redirect callback edges when redirecting their carrying edge.  */
! 	  cgraph_edge *cbe;
! 	  cgraph_edge::redirect_call_stmt_to_callee (e);
! 	  for (cbe = e->first_callback_edge (); cbe;
! 	       cbe = cbe->next_callback_edge ())
! 	    cgraph_edge::redirect_call_stmt_to_callee (cbe);
! 	}
!       else
! 	cgraph_edge::redirect_call_stmt_to_callee (e);
      }
    node->remove_all_references ();
  
diff -Nrcpad gcc-16-20251012/gcc/ipa-inline.cc gcc-16-20251019/gcc/ipa-inline.cc
*** gcc-16-20251012/gcc/ipa-inline.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/ipa-inline.cc	Sun Oct 19 22:32:14 2025
*************** typedef fibonacci_node <inline_badness,
*** 175,181 ****
  
  /* Statistics we collect about inlining algorithm.  */
  static int overall_size;
! static profile_count max_count;
  static profile_count spec_rem;
  
  /* Return false when inlining edge E would lead to violating
--- 175,181 ----
  
  /* Statistics we collect about inlining algorithm.  */
  static int overall_size;
! static bool has_nonzero_ipa_profile;
  static profile_count spec_rem;
  
  /* Return false when inlining edge E would lead to violating
*************** inline_small_functions (void)
*** 2105,2111 ****
    /* Compute overall unit size and other global parameters used by badness
       metrics.  */
  
!   max_count = profile_count::uninitialized ();
    ipa_reduced_postorder (order, true, ignore_edge_p);
    free (order);
  
--- 2105,2111 ----
    /* Compute overall unit size and other global parameters used by badness
       metrics.  */
  
!   has_nonzero_ipa_profile = false;
    ipa_reduced_postorder (order, true, ignore_edge_p);
    free (order);
  
*************** inline_small_functions (void)
*** 2148,2154 ****
  	  }
  
  	for (edge = node->callers; edge; edge = edge->next_caller)
! 	  max_count = max_count.max (edge->count.ipa ());
        }
    ipa_free_postorder_info ();
    initialize_growth_caches ();
--- 2148,2156 ----
  	  }
  
  	for (edge = node->callers; edge; edge = edge->next_caller)
! 	  if (edge->count.ipa ().initialized_p ()
! 	      && edge->count.ipa ().nonzero_p ())
! 	  has_nonzero_ipa_profile = true;
        }
    ipa_free_postorder_info ();
    initialize_growth_caches ();
*************** inline_small_functions (void)
*** 2221,2227 ****
      }
  
    gcc_assert (in_lto_p
! 	      || !(max_count > 0)
  	      || flag_auto_profile
  	      || (profile_info && flag_branch_probabilities));
  
--- 2223,2229 ----
      }
  
    gcc_assert (in_lto_p
! 	      || !has_nonzero_ipa_profile
  	      || flag_auto_profile
  	      || (profile_info && flag_branch_probabilities));
  
*************** inline_small_functions (void)
*** 2243,2249 ****
  	 This check is affected by scaling roundoff errors when compiling for
  	 IPA this we skip it in that case.  */
        if (flag_checking && !edge->callee->count.ipa_p ()
! 	  && (!max_count.initialized_p () || !max_count.nonzero_p ()))
  	{
  	  sreal cached_badness = edge_badness (edge, false);
  
--- 2245,2251 ----
  	 This check is affected by scaling roundoff errors when compiling for
  	 IPA this we skip it in that case.  */
        if (flag_checking && !edge->callee->count.ipa_p ()
! 	  && !has_nonzero_ipa_profile)
  	{
  	  sreal cached_badness = edge_badness (edge, false);
  
*************** dump_inline_stats (void)
*** 2762,2768 ****
        else if (e->count.ipa ().initialized_p ())
  	indirect_cnt += e->count.ipa ().to_gcov_type ();
    }
!   if (max_count.initialized_p ())
      {
        fprintf (dump_file,
  	       "Inlined %" PRId64 " + speculative "
--- 2764,2770 ----
        else if (e->count.ipa ().initialized_p ())
  	indirect_cnt += e->count.ipa ().to_gcov_type ();
    }
!   if (has_nonzero_ipa_profile)
      {
        fprintf (dump_file,
  	       "Inlined %" PRId64 " + speculative "
diff -Nrcpad gcc-16-20251012/gcc/ipa-param-manipulation.cc gcc-16-20251019/gcc/ipa-param-manipulation.cc
*** gcc-16-20251012/gcc/ipa-param-manipulation.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/ipa-param-manipulation.cc	Sun Oct 19 22:32:14 2025
*************** along with GCC; see the file COPYING3.
*** 50,55 ****
--- 50,56 ----
  #include "sreal.h"
  #include "ipa-cp.h"
  #include "ipa-prop.h"
+ #include "attr-callback.h"
  
  /* Actual prefixes of different newly synthetized parameters.  Keep in sync
     with IPA_PARAM_PREFIX_* defines.  */
*************** drop_type_attribute_if_params_changed_p
*** 308,313 ****
--- 309,324 ----
    return false;
  }
  
+ /* Return TRUE if the attribute should be dropped in the decl it is sitting on
+    changes.  Primarily affects attributes working with the decls arguments.  */
+ static bool
+ drop_decl_attribute_if_params_changed_p (tree name)
+ {
+   if (is_attribute_p (CALLBACK_ATTR_IDENT, name))
+     return true;
+   return false;
+ }
+ 
  /* Build and return a function type just like ORIG_TYPE but with parameter
     types given in NEW_PARAM_TYPES - which can be NULL if, but only if,
     ORIG_TYPE itself has NULL TREE_ARG_TYPEs.  If METHOD2FUNC is true, also make
*************** ipa_param_adjustments::method2func_p (tr
*** 488,498 ****
     performing all atored modifications.  TYPE_ORIGINAL_P should be true when
     OLD_TYPE refers to the type before any IPA transformations, as opposed to a
     type that can be an intermediate one in between various IPA
!    transformations.  */
  
  tree
! ipa_param_adjustments::build_new_function_type (tree old_type,
! 						bool type_original_p)
  {
    auto_vec<tree,16> new_param_types, *new_param_types_p;
    if (prototype_p (old_type))
--- 499,510 ----
     performing all atored modifications.  TYPE_ORIGINAL_P should be true when
     OLD_TYPE refers to the type before any IPA transformations, as opposed to a
     type that can be an intermediate one in between various IPA
!    transformations.  Set pointee of ARGS_MODIFIED (if provided) to TRUE if the
!    type's arguments were changed.  */
  
  tree
! ipa_param_adjustments::build_new_function_type (
!   tree old_type, bool type_original_p, bool *args_modified /* = NULL */)
  {
    auto_vec<tree,16> new_param_types, *new_param_types_p;
    if (prototype_p (old_type))
*************** ipa_param_adjustments::build_new_functio
*** 518,523 ****
--- 530,537 ----
  	  || get_original_index (index) != (int)index)
  	modified = true;
  
+   if (args_modified)
+     *args_modified = modified;
  
    return build_adjusted_function_type (old_type, new_param_types_p,
  				       method2func_p (old_type), m_skip_return,
*************** ipa_param_adjustments::adjust_decl (tree
*** 536,545 ****
  {
    tree new_decl = copy_node (orig_decl);
    tree orig_type = TREE_TYPE (orig_decl);
    if (prototype_p (orig_type)
        || (m_skip_return && !VOID_TYPE_P (TREE_TYPE (orig_type))))
      {
!       tree new_type = build_new_function_type (orig_type, false);
        TREE_TYPE (new_decl) = new_type;
      }
    if (method2func_p (orig_type))
--- 550,560 ----
  {
    tree new_decl = copy_node (orig_decl);
    tree orig_type = TREE_TYPE (orig_decl);
+   bool args_modified = false;
    if (prototype_p (orig_type)
        || (m_skip_return && !VOID_TYPE_P (TREE_TYPE (orig_type))))
      {
!       tree new_type = build_new_function_type (orig_type, false, &args_modified);
        TREE_TYPE (new_decl) = new_type;
      }
    if (method2func_p (orig_type))
*************** ipa_param_adjustments::adjust_decl (tree
*** 556,561 ****
--- 571,590 ----
    if (m_skip_return)
      DECL_IS_MALLOC (new_decl) = 0;
  
+   /* If the decl's arguments changed, we might need to drop some attributes.  */
+   if (args_modified && DECL_ATTRIBUTES (new_decl))
+     {
+       tree t = DECL_ATTRIBUTES (new_decl);
+       tree *last = &DECL_ATTRIBUTES (new_decl);
+       DECL_ATTRIBUTES (new_decl) = NULL;
+       for (; t; t = TREE_CHAIN (t))
+ 	if (!drop_decl_attribute_if_params_changed_p (get_attribute_name (t)))
+ 	  {
+ 	    *last = copy_node (t);
+ 	    TREE_CHAIN (*last) = NULL;
+ 	    last = &TREE_CHAIN (*last);
+ 	  }
+     }
    return new_decl;
  }
  
diff -Nrcpad gcc-16-20251012/gcc/ipa-param-manipulation.h gcc-16-20251019/gcc/ipa-param-manipulation.h
*** gcc-16-20251012/gcc/ipa-param-manipulation.h	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/ipa-param-manipulation.h	Sun Oct 19 22:32:14 2025
*************** public:
*** 229,235 ****
    /* Return if the first parameter is left intact.  */
    bool first_param_intact_p ();
    /* Build a function type corresponding to the modified call.  */
!   tree build_new_function_type (tree old_type, bool type_is_original_p);
    /* Build a declaration corresponding to the target of the modified call.  */
    tree adjust_decl (tree orig_decl);
    /* Fill a vector marking which parameters are intact by the described
--- 229,236 ----
    /* Return if the first parameter is left intact.  */
    bool first_param_intact_p ();
    /* Build a function type corresponding to the modified call.  */
!   tree build_new_function_type (tree old_type, bool type_is_original_p,
! 				bool *args_modified = NULL);
    /* Build a declaration corresponding to the target of the modified call.  */
    tree adjust_decl (tree orig_decl);
    /* Fill a vector marking which parameters are intact by the described
diff -Nrcpad gcc-16-20251012/gcc/ipa-prop.cc gcc-16-20251019/gcc/ipa-prop.cc
*** gcc-16-20251012/gcc/ipa-prop.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/ipa-prop.cc	Sun Oct 19 22:32:14 2025
*************** along with GCC; see the file COPYING3.
*** 61,66 ****
--- 61,68 ----
  #include "value-range-storage.h"
  #include "vr-values.h"
  #include "lto-streamer.h"
+ #include "attribs.h"
+ #include "attr-callback.h"
  
  /* Function summary where the parameter infos are actually stored. */
  ipa_node_params_t *ipa_node_params_sum = NULL;
*************** ipa_get_param_decl_index (class ipa_node
*** 324,329 ****
--- 326,335 ----
    return ipa_get_param_decl_index_1 (info->descriptors, ptree);
  }
  
+ static void
+ ipa_duplicate_jump_function (cgraph_edge *src, cgraph_edge *dst,
+ 			     ipa_jump_func *src_jf, ipa_jump_func *dst_jf);
+ 
  /* Populate the param_decl field in parameter DESCRIPTORS that correspond to
     NODE.  */
  
*************** skip_a_safe_conversion_op (tree t)
*** 2416,2421 ****
--- 2422,2439 ----
    return t;
  }
  
+ /* Initializes ipa_edge_args summary of CBE given its callback-carrying edge.
+    This primarily means allocating the correct amount of jump functions.  */
+ 
+ static inline void
+ init_callback_edge_summary (struct cgraph_edge *cbe, tree attr)
+ {
+   ipa_edge_args *cb_args = ipa_edge_args_sum->get_create (cbe);
+   size_t jf_vec_length = callback_num_args(attr);
+   vec_safe_grow_cleared (cb_args->jump_functions,
+ 			 jf_vec_length, true);
+ }
+ 
  /* Compute jump function for all arguments of callsite CS and insert the
     information in the jump_functions array in the ipa_edge_args corresponding
     to this callsite.  */
*************** ipa_compute_jump_functions_for_edge (str
*** 2441,2446 ****
--- 2459,2465 ----
    if (ipa_func_spec_opts_forbid_analysis_p (cs->caller))
      return;
  
+   auto_vec<cgraph_edge*> callback_edges;
    for (n = 0; n < arg_num; n++)
      {
        struct ipa_jump_func *jfunc = ipa_get_ith_jump_func (args, n);
*************** ipa_compute_jump_functions_for_edge (str
*** 2519,2528 ****
  
        arg = skip_a_safe_conversion_op (arg);
        if (is_gimple_ip_invariant (arg)
! 	  || (VAR_P (arg)
! 	      && is_global_var (arg)
! 	      && TREE_READONLY (arg)))
! 	ipa_set_jf_constant (jfunc, arg, cs);
        else if (!is_gimple_reg_type (TREE_TYPE (arg))
  	       && TREE_CODE (arg) == PARM_DECL)
  	{
--- 2538,2594 ----
  
        arg = skip_a_safe_conversion_op (arg);
        if (is_gimple_ip_invariant (arg)
! 	  || (VAR_P (arg) && is_global_var (arg) && TREE_READONLY (arg)))
! 	{
! 	  ipa_set_jf_constant (jfunc, arg, cs);
! 	  if (TREE_CODE (arg) == ADDR_EXPR)
! 	    {
! 	      tree pointee = TREE_OPERAND (arg, 0);
! 	      if (TREE_CODE (pointee) == FUNCTION_DECL && !cs->callback
! 		  && cs->callee)
! 		{
! 		  /* Argument is a pointer to a function. Look for a callback
! 		     attribute describing this argument.  */
! 		  tree callback_attr
! 		    = lookup_attribute (CALLBACK_ATTR_IDENT,
! 					DECL_ATTRIBUTES (cs->callee->decl));
! 		  for (; callback_attr;
! 		       callback_attr
! 		       = lookup_attribute (CALLBACK_ATTR_IDENT,
! 					   TREE_CHAIN (callback_attr)))
! 		    if (callback_get_fn_index (callback_attr) == n)
! 		      break;
! 
! 		  /* If no callback attribute is found, check if the function is
! 		     a special case.  */
! 		  if (!callback_attr
! 		      && callback_is_special_cased (cs->callee->decl, call))
! 		    {
! 		      callback_attr
! 			= callback_special_case_attr (cs->callee->decl);
! 		      /* Check if the special attribute describes the correct
! 			 attribute, as a special cased function might have
! 			 multiple callbacks.  */
! 		      if (callback_get_fn_index (callback_attr) != n)
! 			callback_attr = NULL;
! 		    }
! 
! 		  /* If a callback attribute describing this pointer is found,
! 			   create a callback edge to the pointee function to
! 		     allow for further optimizations.  */
! 		  if (callback_attr)
! 		    {
! 		      cgraph_node *kernel_node
! 			= cgraph_node::get_create (pointee);
! 		      unsigned callback_id = n;
! 		      cgraph_edge *cbe
! 			= cs->make_callback (kernel_node, callback_id);
! 		      init_callback_edge_summary (cbe, callback_attr);
! 		      callback_edges.safe_push (cbe);
! 		    }
! 		}
! 	    }
! 	}
        else if (!is_gimple_reg_type (TREE_TYPE (arg))
  	       && TREE_CODE (arg) == PARM_DECL)
  	{
*************** ipa_compute_jump_functions_for_edge (str
*** 2580,2585 ****
--- 2646,2679 ----
  	      || POINTER_TYPE_P (param_type)))
  	determine_known_aggregate_parts (fbi, call, arg, param_type, jfunc);
      }
+ 
+   if (!callback_edges.is_empty ())
+     {
+       /* For every callback edge, fetch jump functions of arguments
+ 	 passed to them and copy them over to their respective summaries.
+ 	 This avoids recalculating them for every callback edge, since their
+ 	 arguments are just passed through.  */
+       unsigned j;
+       for (j = 0; j < callback_edges.length (); j++)
+ 	{
+ 	  cgraph_edge *callback_edge = callback_edges[j];
+ 	  ipa_edge_args *cb_summary
+ 	    = ipa_edge_args_sum->get_create (callback_edge);
+ 	  auto_vec<int> arg_mapping
+ 	    = callback_get_arg_mapping (callback_edge, cs);
+ 	  unsigned i;
+ 	  for (i = 0; i < arg_mapping.length (); i++)
+ 	    {
+ 	      if (arg_mapping[i] == -1)
+ 		continue;
+ 	      class ipa_jump_func *src
+ 		= ipa_get_ith_jump_func (args, arg_mapping[i]);
+ 	      class ipa_jump_func *dst = ipa_get_ith_jump_func (cb_summary, i);
+ 	      ipa_duplicate_jump_function (cs, callback_edge, src, dst);
+ 	    }
+ 	}
+     }
+ 
    if (!useful_context)
      vec_free (args->polymorphic_call_contexts);
  }
diff -Nrcpad gcc-16-20251012/gcc/json.cc gcc-16-20251019/gcc/json.cc
*** gcc-16-20251012/gcc/json.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/json.cc	Sun Oct 19 22:32:14 2025
*************** object::set_bool (const char *key, bool
*** 394,399 ****
--- 394,424 ----
    set (key, new json::literal (v));
  }
  
+ void
+ object::set_string (const string_property &property, const char *utf8_value)
+ {
+   set_string (property.m_key.get (), utf8_value);
+ }
+ 
+ void
+ object::set_integer (const integer_property &property, long value)
+ {
+   set_integer (property.m_key.get (), value);
+ }
+ 
+ void
+ object::set_bool (const bool_property &property, bool value)
+ {
+   set_bool (property.m_key.get (), value);
+ }
+ 
+ void
+ object::set_array_of_string (const array_of_string_property &property,
+ 			     std::unique_ptr<json::array> value)
+ {
+   set<array> (property.m_key.get (), std::move (value));
+ }
+ 
  /* Subroutine of json::compare for comparing a pairs of objects.  */
  
  int
diff -Nrcpad gcc-16-20251012/gcc/json.h gcc-16-20251019/gcc/json.h
*** gcc-16-20251012/gcc/json.h	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/json.h	Sun Oct 19 22:32:14 2025
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,28 ----
  #ifndef GCC_JSON_H
  #define GCC_JSON_H
  
+ #include "label-text.h"
+ 
  /* Implementation of JSON, a lightweight data-interchange format.
  
     See http://www.json.org/
*************** struct token
*** 116,121 ****
--- 118,158 ----
  
  } // namespace json::pointer
  
+ /* Typesafe way to work with properties in JSON objects.  */
+ 
+ template <typename Traits>
+ struct property
+ {
+   explicit property (const char *key)
+   : m_key (label_text::borrow (key))
+   {}
+ 
+   explicit property (const char *key_prefix, const char *key)
+   : m_key (label_text::take (concat (key_prefix, key, nullptr)))
+   {}
+ 
+   label_text m_key;
+ };
+ 
+ using string_property = property<string>;
+ using integer_property = property<integer_number>;
+ using bool_property = property<literal>;
+ using json_property = property<value>;
+ using array_of_string_property = property<array>;
+ 
+ template <typename EnumType>
+ struct enum_traits
+ {
+   typedef EnumType enum_t;
+ 
+   static enum_t get_unknown_value ();
+   static bool maybe_get_value_from_string (const char *, enum_t &out);
+   static const char *get_string_for_value (enum_t value);
+ };
+ 
+ template <typename EnumType>
+ using enum_property = property<enum_traits<EnumType>>;
+ 
  /* Base class of JSON value.  */
  
  class value
*************** class value
*** 130,135 ****
--- 167,174 ----
    void DEBUG_FUNCTION dump () const;
  
    virtual object *dyn_cast_object () { return nullptr; }
+   virtual array *dyn_cast_array () { return nullptr; }
+   virtual integer_number *dyn_cast_integer_number () { return nullptr; }
    virtual string *dyn_cast_string () { return nullptr; }
  
    static int compare (const json::value &val_a, const json::value &val_b);
*************** class object : public value
*** 183,188 ****
--- 222,240 ----
    /* Set to literal true/false.  */
    void set_bool (const char *key, bool v);
  
+   /* Typesafe access to properties by name (such as from a schema).  */
+   void set_string (const string_property &property, const char *utf8_value);
+   void set_integer (const integer_property &property, long value);
+   void set_bool (const bool_property &property, bool value);
+   void set_array_of_string (const array_of_string_property &property,
+ 			    std::unique_ptr<json::array> value);
+   template <typename EnumType>
+   bool maybe_get_enum (const enum_property<EnumType> &property,
+ 		       EnumType &out) const;
+   template <typename EnumType>
+   void set_enum (const enum_property<EnumType> &property,
+ 		 EnumType value);
+ 
    static int compare (const json::object &obj_a, const json::object &obj_b);
  
    size_t get_num_keys () const { return m_keys.length (); }
*************** class array : public value
*** 210,215 ****
--- 262,269 ----
    void print (pretty_printer *pp, bool formatted) const final override;
    std::unique_ptr<value> clone () const final override;
  
+   array *dyn_cast_array () final override { return this; }
+ 
    void append (value *v);
    void append_string (const char *utf8_value);
  
*************** class integer_number : public value
*** 269,274 ****
--- 323,330 ----
    void print (pretty_printer *pp, bool formatted) const final override;
    std::unique_ptr<value> clone () const final override;
  
+   integer_number *dyn_cast_integer_number () final override { return this; }
+ 
    long get () const { return m_value; }
  
   private:
*************** class literal : public value
*** 317,322 ****
--- 373,404 ----
    enum kind m_kind;
  };
  
+ 
+ template <typename EnumType>
+ inline bool
+ object::maybe_get_enum (const enum_property<EnumType> &property,
+ 			EnumType &out) const
+ {
+   if (value *jv = get (property.m_key.get ()))
+     if (string *jstr = jv->dyn_cast_string ())
+       {
+ 	if (enum_traits<EnumType>::maybe_get_value_from_string
+ 	    (jstr->get_string (), out))
+ 	  return true;
+       }
+   return false;
+ }
+ 
+ template <typename EnumType>
+ inline void
+ object::set_enum (const enum_property<EnumType> &property,
+ 		  EnumType value)
+ {
+   const char *str
+     = json::enum_traits<EnumType>::get_string_for_value (value);
+   set_string (property.m_key.get (), str);
+ }
+ 
  } // namespace json
  
  template <>
diff -Nrcpad gcc-16-20251012/gcc/lto-cgraph.cc gcc-16-20251019/gcc/lto-cgraph.cc
*** gcc-16-20251012/gcc/lto-cgraph.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/lto-cgraph.cc	Sun Oct 19 22:32:14 2025
*************** lto_output_edge (struct lto_simple_outpu
*** 274,279 ****
--- 274,282 ----
    bp_pack_value (&bp, edge->speculative_id, 16);
    bp_pack_value (&bp, edge->indirect_inlining_edge, 1);
    bp_pack_value (&bp, edge->speculative, 1);
+   bp_pack_value (&bp, edge->callback, 1);
+   bp_pack_value (&bp, edge->has_callback, 1);
+   bp_pack_value (&bp, edge->callback_id, 16);
    bp_pack_value (&bp, edge->call_stmt_cannot_inline_p, 1);
    gcc_assert (!edge->call_stmt_cannot_inline_p
  	      || edge->inline_failed != CIF_BODY_NOT_AVAILABLE);
*************** input_edge (class lto_input_block *ib, v
*** 1539,1544 ****
--- 1542,1550 ----
  
    edge->indirect_inlining_edge = bp_unpack_value (&bp, 1);
    edge->speculative = bp_unpack_value (&bp, 1);
+   edge->callback = bp_unpack_value(&bp, 1);
+   edge->has_callback = bp_unpack_value(&bp, 1);
+   edge->callback_id = bp_unpack_value(&bp, 16);
    edge->lto_stmt_uid = stmt_id;
    edge->speculative_id = speculative_id;
    edge->inline_failed = inline_failed;
diff -Nrcpad gcc-16-20251012/gcc/m2/ChangeLog gcc-16-20251019/gcc/m2/ChangeLog
*** gcc-16-20251012/gcc/m2/ChangeLog	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/ChangeLog	Sun Oct 19 22:32:14 2025
***************
*** 1,3 ****
--- 1,67 ----
+ 2025-10-13  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/122241
+ 	* gm2-compiler/M2Quads.mod (BuildSizeFunction): Improve
+ 	error message.
+ 	(BuildTSizeFunction): Improve error message.
+ 	* gm2-compiler/P3Build.bnf (ProgramModule): New variable
+ 	namet.
+ 	Pass namet to P3EndBuildProgModule.
+ 	(ImplementationModule): New variable namet.
+ 	Pass namet to P3EndBuildImpModule.
+ 	(ModuleDeclaration): New variable namet.
+ 	Pass namet to P3EndBuildInnerModule.
+ 	(DefinitionModule): New variable namet.
+ 	Pass namet to P3EndBuildDefModule.
+ 	* gm2-compiler/P3SymBuild.def (P3EndBuildDefModule): New
+ 	parameter tokno.
+ 	(P3EndBuildImpModule): Ditto.
+ 	(P3EndBuildProgModule): Ditto.
+ 	(EndBuildInnerModule): Ditto.
+ 	* gm2-compiler/P3SymBuild.mod (P3EndBuildDefModule): New
+ 	parameter tokno.
+ 	Pass tokno to CheckForUnknownInModule.
+ 	(P3EndBuildImpModule): Ditto.
+ 	(P3EndBuildProgModule): Ditto.
+ 	(EndBuildInnerModule): Ditto.
+ 	* gm2-compiler/PCBuild.bnf (ProgramModule): New variable
+ 	namet.
+ 	Pass namet to PCEndBuildProgModule.
+ 	(ImplementationModule): New variable namet.
+ 	Pass namet to PCEndBuildImpModule.
+ 	(ModuleDeclaration): New variable namet.
+ 	Pass namet to PCEndBuildInnerModule.
+ 	(DefinitionModule): New variable namet.
+ 	Pass namet to PCEndBuildDefModule.
+ 	* gm2-compiler/PCSymBuild.def (PCEndBuildDefModule): New
+ 	parameter tokno.
+ 	(PCEndBuildImpModule): Ditto.
+ 	(PCEndBuildProgModule):	Ditto.
+ 	(PCEndBuildInnerModule): Ditto.
+ 	* gm2-compiler/PCSymBuild.mod (PCEndBuildDefModule): New
+ 	parameter tokno.
+ 	Pass tokno to CheckForUnknownInModule.
+ 	(PCEndBuildImpModule): Ditto.
+ 	(PCEndBuildProgModule): Ditto.
+ 	(PCEndBuildInnerModule): Ditto.
+ 	* gm2-compiler/PHBuild.bnf (DefinitionModule): New variable
+ 	namet.
+ 	Pass namet to PHEndBuildDefModule.
+ 	(ModuleDeclaration): New variable namet.
+ 	Pass namet to PHEndBuildProgModule.
+ 	(ImplementationModule): New variable namet.
+ 	Pass namet to PHEndBuildImpModule.
+ 	(ModuleDeclaration): New variable namet.
+ 	Pass namet to PHEndBuildInnerModule.
+ 	(DefinitionModule): New variable namet.
+ 	Pass namet to PHEndBuildDefModule.
+ 	* gm2-compiler/SymbolTable.def (CheckForUnknownInModule): Add
+ 	tokno parameter.
+ 	* gm2-compiler/SymbolTable.mod (CheckForUnknownInModule): Add
+ 	tokno parameter.
+ 	Pass tokno to CheckForUnknowns.
+ 	(CheckForUnknowns): Reimplement.
+ 
  2025-10-11  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	PR modula2/122241
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/M2MetaError.mod gcc-16-20251019/gcc/m2/gm2-compiler/M2MetaError.mod
*** gcc-16-20251012/gcc/m2/gm2-compiler/M2MetaError.mod	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/M2MetaError.mod	Sun Oct 19 22:32:14 2025
*************** END IsPunct ;
*** 1894,1901 ****
  *)
  
  PROCEDURE JoinSentances (VAR eb: errorBlock; s: String) ;
- VAR
-    i: INTEGER ;
  BEGIN
     IF (s # NIL) AND (Length (s) > 0)
     THEN
--- 1894,1899 ----
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/M2Quads.mod gcc-16-20251019/gcc/m2/gm2-compiler/M2Quads.mod
*** gcc-16-20251012/gcc/m2/gm2-compiler/M2Quads.mod	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/M2Quads.mod	Sun Oct 19 22:32:14 2025
*************** BEGIN
*** 10712,10718 ****
     ELSE
        resulttok := functok ;
        MetaErrorT1 (resulttok,
!                    '{%E}SYSTEM procedure {%kSIZE} expects a variable as its parameter, seen {%1Ed}',
                     OperandT (1)) ;
        ReturnVar := MakeConstLit (resulttok, MakeKey('0'), Cardinal)
     END ;
--- 10712,10718 ----
     ELSE
        resulttok := functok ;
        MetaErrorT1 (resulttok,
!                    '{%E}SYSTEM procedure {%kSIZE} expects a variable or type as its parameter, seen {%1Ed}',
                     OperandT (1)) ;
        ReturnVar := MakeConstLit (resulttok, MakeKey('0'), Cardinal)
     END ;
*************** BEGIN
*** 10777,10783 ****
           GenQuadO (resulttok, SizeOp, ReturnVar, NulSym, GetSType (OperandT (1)), FALSE)
        ELSE
           MetaErrorT1 (resulttok,
!                       '{%E}SYSTEM procedure function {%kTSIZE} expects a variable as its first parameter, seen {%1Ed}',
                        OperandT (1)) ;
           ReturnVar := MakeConstLit (resulttok, MakeKey ('0'), Cardinal)
        END
--- 10777,10783 ----
           GenQuadO (resulttok, SizeOp, ReturnVar, NulSym, GetSType (OperandT (1)), FALSE)
        ELSE
           MetaErrorT1 (resulttok,
!                       '{%E}SYSTEM procedure function {%kTSIZE} expects a variable or type as its first parameter, seen {%1Ed}',
                        OperandT (1)) ;
           ReturnVar := MakeConstLit (resulttok, MakeKey ('0'), Cardinal)
        END
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/P3Build.bnf gcc-16-20251019/gcc/m2/gm2-compiler/P3Build.bnf
*** gcc-16-20251012/gcc/m2/gm2-compiler/P3Build.bnf	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/P3Build.bnf	Sun Oct 19 22:32:14 2025
*************** FileUnit :=
*** 655,661 ****
                ImplementationOrProgramModule )                              % PopAuto %
           =:
  
! ProgramModule :=                                                           % VAR modulet, endt: CARDINAL ; %
                                                                             % modulet := GetTokenNo () %
                   "MODULE"                                                  % M2Error.DefaultProgramModule %
                                                                             % PushAutoOn %
--- 655,661 ----
                ImplementationOrProgramModule )                              % PopAuto %
           =:
  
! ProgramModule :=                                                           % VAR modulet, endt, namet: CARDINAL ; %
                                                                             % modulet := GetTokenNo () %
                   "MODULE"                                                  % M2Error.DefaultProgramModule %
                                                                             % PushAutoOn %
*************** ProgramModule :=
*** 670,681 ****
                    { Import }
                    Block                                                    % PushAutoOn %
                                                                             % endt := GetTokenNo () -1 %
                    Ident                                                    % EndBuildFile (endt) %
!                                                                            % P3EndBuildProgModule %
                    "."                                                      % PopAuto ; PopAuto %
                    =:
  
! ImplementationModule :=                                                    % VAR modulet, endt: CARDINAL ; %
                                                                             % modulet := GetTokenNo () %
                          "IMPLEMENTATION"                                   % M2Error.DefaultImplementationModule %
                                           "MODULE"                          % PushAutoOn %
--- 670,682 ----
                    { Import }
                    Block                                                    % PushAutoOn %
                                                                             % endt := GetTokenNo () -1 %
+                                                                            % namet := GetTokenNo () %
                    Ident                                                    % EndBuildFile (endt) %
!                                                                            % P3EndBuildProgModule (namet) %
                    "."                                                      % PopAuto ; PopAuto %
                    =:
  
! ImplementationModule :=                                                    % VAR modulet, endt, namet: CARDINAL ; %
                                                                             % modulet := GetTokenNo () %
                          "IMPLEMENTATION"                                   % M2Error.DefaultImplementationModule %
                                           "MODULE"                          % PushAutoOn %
*************** ImplementationModule :=
*** 689,696 ****
                           { Import }
                           Block                                             % PushAutoOn %
                                                                             % endt := GetTokenNo () -1 %
                           Ident                                             % EndBuildFile (endt) %
!                                                                            % P3EndBuildImpModule %
                           "."                                               % PopAuto ; PopAuto ; PopAuto %
                        =:
  
--- 690,698 ----
                           { Import }
                           Block                                             % PushAutoOn %
                                                                             % endt := GetTokenNo () -1 %
+                                                                            % namet := GetTokenNo () %
                           Ident                                             % EndBuildFile (endt) %
!                                                                            % P3EndBuildImpModule (namet) %
                           "."                                               % PopAuto ; PopAuto ; PopAuto %
                        =:
  
*************** DefOptArg := "[" Ident ":" FormalType "=
*** 1503,1509 ****
  
  FormalType := { "ARRAY" "OF" } QualidentCheck =:
  
! ModuleDeclaration :=                                                       % VAR modulet: CARDINAL ; %
                                                                             % modulet := GetTokenNo () %
                       "MODULE"                                              % M2Error.DefaultInnerModule %
                                                                             % PushAutoOn %
--- 1505,1511 ----
  
  FormalType := { "ARRAY" "OF" } QualidentCheck =:
  
! ModuleDeclaration :=                                                       % VAR modulet, namet: CARDINAL ; %
                                                                             % modulet := GetTokenNo () %
                       "MODULE"                                              % M2Error.DefaultInnerModule %
                                                                             % PushAutoOn %
*************** ModuleDeclaration :=
*** 1513,1519 ****
                       [ Priority ] ";"
                       { Import } [ Export ]
                         Block                                               % PushAutoOn %
!                        Ident                                               % EndBuildInnerModule %
                                                                             % PopAuto ; PopAuto ; PopAuto %
                       =:
  
--- 1515,1522 ----
                       [ Priority ] ";"
                       { Import } [ Export ]
                         Block                                               % PushAutoOn %
! 		                                                           % namet := GetTokenNo () %
!                        Ident                                               % EndBuildInnerModule (namet) %
                                                                             % PopAuto ; PopAuto ; PopAuto %
                       =:
  
*************** WithoutFromImport :=
*** 1540,1546 ****
  
  Import :=  FromImport | WithoutFromImport =:
  
! DefinitionModule :=                                                        % VAR deft, endt: CARDINAL ; %
                                                                             % deft := GetTokenNo () %
                      "DEFINITION"                                           % M2Error.DefaultDefinitionModule %
                                   "MODULE"                                  % PushAutoOn %
--- 1543,1549 ----
  
  Import :=  FromImport | WithoutFromImport =:
  
! DefinitionModule :=                                                        % VAR deft, endt, namet: CARDINAL ; %
                                                                             % deft := GetTokenNo () %
                      "DEFINITION"                                           % M2Error.DefaultDefinitionModule %
                                   "MODULE"                                  % PushAutoOn %
*************** DefinitionModule :=
*** 1553,1560 ****
                                          ]
                      { Definition }                                         % endt := GetTokenNo () %
                                     "END"                                   % PushAutoOn %
                                           Ident                             % EndBuildFile (endt) ;
!                                                                              P3EndBuildDefModule %
                                                 "."                         % PopAuto ; PopAuto ; PopAuto %
                    =:
  
--- 1556,1564 ----
                                          ]
                      { Definition }                                         % endt := GetTokenNo () %
                                     "END"                                   % PushAutoOn %
+                                                                            % namet := GetTokenNo () %
                                           Ident                             % EndBuildFile (endt) ;
!                                                                              P3EndBuildDefModule (namet) %
                                                 "."                         % PopAuto ; PopAuto ; PopAuto %
                    =:
  
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/P3SymBuild.def gcc-16-20251019/gcc/m2/gm2-compiler/P3SymBuild.def
*** gcc-16-20251012/gcc/m2/gm2-compiler/P3SymBuild.def	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/P3SymBuild.def	Sun Oct 19 22:32:14 2025
*************** PROCEDURE P3StartBuildDefModule ;
*** 64,70 ****
                                |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildDefModule ;
  
  
  (*
--- 64,70 ----
                                |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildDefModule (tokno: CARDINAL) ;
  
  
  (*
*************** PROCEDURE P3StartBuildImpModule ;
*** 101,107 ****
                                    |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildImpModule ;
  
  
  (*
--- 101,107 ----
                                    |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildImpModule (tokno: CARDINAL) ;
  
  
  (*
*************** PROCEDURE P3StartBuildProgModule ;
*** 138,144 ****
                             |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildProgModule ;
  
  
  (*
--- 138,144 ----
                             |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildProgModule (tokno: CARDINAL) ;
  
  
  (*
*************** PROCEDURE StartBuildInnerModule ;
*** 182,188 ****
                           |------------|        |-----------|
  *)
  
! PROCEDURE EndBuildInnerModule ;
  
  
  (*
--- 182,188 ----
                           |------------|        |-----------|
  *)
  
! PROCEDURE EndBuildInnerModule (tokno: CARDINAL) ;
  
  
  (*
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/P3SymBuild.mod gcc-16-20251019/gcc/m2/gm2-compiler/P3SymBuild.mod
*** gcc-16-20251012/gcc/m2/gm2-compiler/P3SymBuild.mod	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/P3SymBuild.mod	Sun Oct 19 22:32:14 2025
*************** END P3StartBuildDefModule ;
*** 117,129 ****
                                |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildDefModule ;
  VAR
     NameStart,
     NameEnd  : CARDINAL ;
  BEGIN
     Assert(CompilingDefinitionModule()) ;
!    CheckForUnknownInModule ;
     EndScope ;
     M2StackSpell.Pop ;
     PopT(NameEnd) ;
--- 117,129 ----
                                |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildDefModule (tokno: CARDINAL) ;
  VAR
     NameStart,
     NameEnd  : CARDINAL ;
  BEGIN
     Assert(CompilingDefinitionModule()) ;
!    CheckForUnknownInModule (tokno) ;
     EndScope ;
     M2StackSpell.Pop ;
     PopT(NameEnd) ;
*************** END P3StartBuildImpModule ;
*** 187,199 ****
                                    |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildImpModule ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
     Assert(CompilingImplementationModule()) ;
!    CheckForUnknownInModule ;
     EndScope ;
     M2StackSpell.Pop ;
     PopT(NameEnd) ;
--- 187,199 ----
                                    |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildImpModule (tokno: CARDINAL) ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
     Assert(CompilingImplementationModule()) ;
!    CheckForUnknownInModule (tokno) ;
     EndScope ;
     M2StackSpell.Pop ;
     PopT(NameEnd) ;
*************** END P3StartBuildProgModule ;
*** 262,274 ****
                             |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildProgModule ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
     Assert(CompilingProgramModule()) ;
!    CheckForUnknownInModule ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
--- 262,274 ----
                             |------------|        |-----------|
  *)
  
! PROCEDURE P3EndBuildProgModule (tokno: CARDINAL) ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
     Assert(CompilingProgramModule()) ;
!    CheckForUnknownInModule (tokno) ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
*************** END StartBuildInnerModule ;
*** 334,345 ****
                           |------------|        |-----------|
  *)
  
! PROCEDURE EndBuildInnerModule ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
!    CheckForUnknownInModule ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
--- 334,345 ----
                           |------------|        |-----------|
  *)
  
! PROCEDURE EndBuildInnerModule (tokno: CARDINAL) ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
!    CheckForUnknownInModule (tokno) ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/PCBuild.bnf gcc-16-20251019/gcc/m2/gm2-compiler/PCBuild.bnf
*** gcc-16-20251012/gcc/m2/gm2-compiler/PCBuild.bnf	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/PCBuild.bnf	Sun Oct 19 22:32:14 2025
*************** FileUnit :=
*** 598,604 ****
                ImplementationOrProgramModule )                              % PopAuto %
           =:
  
! ProgramModule := "MODULE"                                                  % M2Error.DefaultProgramModule %
                                                                             % PushAutoOn %
                    Ident                                                    % PCStartBuildProgModule %
                                                                             % PushAutoOff %
--- 598,605 ----
                ImplementationOrProgramModule )                              % PopAuto %
           =:
  
! ProgramModule := "MODULE"                                                  % VAR namet: CARDINAL ; %
!                                                                            % M2Error.DefaultProgramModule %
                                                                             % PushAutoOn %
                    Ident                                                    % PCStartBuildProgModule %
                                                                             % PushAutoOff %
*************** ProgramModule := "MODULE"
*** 608,618 ****
                    { Import                                                 % PCBuildImportOuterModule %
                    }
                    Block                                                    % PushAutoOn %
!                   Ident                                                    % PCEndBuildProgModule %
                    "."                                                      % PopAuto ; PopAuto %
                    =:
  
! ImplementationModule := "IMPLEMENTATION"                                   % M2Error.DefaultImplementationModule %
                                           "MODULE"                          % PushAutoOn %
                           Ident                                             % PCStartBuildImpModule %
                                                                             % PushAutoOff %
--- 609,621 ----
                    { Import                                                 % PCBuildImportOuterModule %
                    }
                    Block                                                    % PushAutoOn %
! 		                                                           % namet := GetTokenNo () %
!                   Ident                                                    % PCEndBuildProgModule (namet) %
                    "."                                                      % PopAuto ; PopAuto %
                    =:
  
! ImplementationModule := "IMPLEMENTATION"                                   % VAR namet: CARDINAL ; %
!                                                                            % M2Error.DefaultImplementationModule %
                                           "MODULE"                          % PushAutoOn %
                           Ident                                             % PCStartBuildImpModule %
                                                                             % PushAutoOff %
*************** ImplementationModule := "IMPLEMENTATION"
*** 621,628 ****
                           { Import                                          % PCBuildImportOuterModule %
                             }
                           Block                                             % PushAutoOn %
! 
!                          Ident                                             % PCEndBuildImpModule %
                           "."                                               % PopAuto ; PopAuto ; PopAuto %
                        =:
  
--- 624,631 ----
                           { Import                                          % PCBuildImportOuterModule %
                             }
                           Block                                             % PushAutoOn %
! 		                                                           % namet := GetTokenNo () %
!                          Ident                                             % PCEndBuildImpModule (namet) %
                           "."                                               % PopAuto ; PopAuto ; PopAuto %
                        =:
  
*************** DefOptArg := "[" Ident ":" FormalType "=
*** 1271,1277 ****
  
  FormalType := { "ARRAY" "OF" } Qualident =:
  
! ModuleDeclaration := "MODULE"                                              % M2Error.DefaultInnerModule %
                                                                             % PushAutoOn %
                       Ident                                                 % PCStartBuildInnerModule %
                                                                             % PushAutoOff %
--- 1274,1281 ----
  
  FormalType := { "ARRAY" "OF" } Qualident =:
  
! ModuleDeclaration := "MODULE"                                              % VAR namet: CARDINAL ; %
!                                                                            % M2Error.DefaultInnerModule %
                                                                             % PushAutoOn %
                       Ident                                                 % PCStartBuildInnerModule %
                                                                             % PushAutoOff %
*************** ModuleDeclaration := "MODULE"
*** 1280,1286 ****
                          } [ Export
                              ]
                         Block                                               % PushAutoOn %
!                        Ident                                               % PCEndBuildInnerModule %
                                                                             % PopAuto ; PopAuto ; PopAuto %
                       =:
  
--- 1284,1291 ----
                          } [ Export
                              ]
                         Block                                               % PushAutoOn %
! 		                                                           % namet := GetTokenNo () %
!                        Ident                                               % PCEndBuildInnerModule (namet) %
                                                                             % PopAuto ; PopAuto ; PopAuto %
                       =:
  
*************** Import :=
*** 1299,1305 ****
              IdentList ";" )                                                % PopAuto %
          =:
  
! DefinitionModule := "DEFINITION"                                           % M2Error.DefaultDefinitionModule %
                                   "MODULE"                                  % PushAutoOn %
                      [ "FOR" string ]
                      Ident                                                  % PCStartBuildDefModule ;
--- 1304,1311 ----
              IdentList ";" )                                                % PopAuto %
          =:
  
! DefinitionModule := "DEFINITION"                                           % VAR namet: CARDINAL ; %
!                                                                            % M2Error.DefaultDefinitionModule %
                                   "MODULE"                                  % PushAutoOn %
                      [ "FOR" string ]
                      Ident                                                  % PCStartBuildDefModule ;
*************** DefinitionModule := "DEFINITION"
*** 1310,1316 ****
                                          ]
                      { Definition }
                                     "END"                                   % PushAutoOn %
!                                          Ident                             % PCEndBuildDefModule %
                                                 "."                         % PopAuto ; PopAuto ; PopAuto %
                    =:
  
--- 1316,1323 ----
                                          ]
                      { Definition }
                                     "END"                                   % PushAutoOn %
! 				                                           % namet := GetTokenNo () %
!                                          Ident                             % PCEndBuildDefModule (namet) %
                                                 "."                         % PopAuto ; PopAuto ; PopAuto %
                    =:
  
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/PCSymBuild.def gcc-16-20251019/gcc/m2/gm2-compiler/PCSymBuild.def
*** gcc-16-20251012/gcc/m2/gm2-compiler/PCSymBuild.def	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/PCSymBuild.def	Sun Oct 19 22:32:14 2025
*************** PROCEDURE PCStartBuildDefModule ;
*** 71,77 ****
                                |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildDefModule ;
  
  
  (*
--- 71,77 ----
                                |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildDefModule (tokno: CARDINAL) ;
  
  
  (*
*************** PROCEDURE PCStartBuildImpModule ;
*** 108,114 ****
                                    |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildImpModule ;
  
  
  (*
--- 108,114 ----
                                    |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildImpModule (tokno: CARDINAL) ;
  
  
  (*
*************** PROCEDURE PCStartBuildProgModule ;
*** 145,151 ****
                             |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildProgModule ;
  
  
  (*
--- 145,151 ----
                             |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildProgModule (tokno: CARDINAL) ;
  
  
  (*
*************** PROCEDURE PCStartBuildInnerModule ;
*** 182,188 ****
                            |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildInnerModule ;
  
  
  (*
--- 182,188 ----
                            |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildInnerModule (tokno: CARDINAL) ;
  
  
  (*
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/PCSymBuild.mod gcc-16-20251019/gcc/m2/gm2-compiler/PCSymBuild.mod
*** gcc-16-20251012/gcc/m2/gm2-compiler/PCSymBuild.mod	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/PCSymBuild.mod	Sun Oct 19 22:32:14 2025
*************** END PCStartBuildDefModule ;
*** 257,269 ****
                                |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildDefModule ;
  VAR
     NameStart,
     NameEnd  : CARDINAL ;
  BEGIN
     Assert(CompilingDefinitionModule()) ;
!    CheckForUnknownInModule ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
--- 257,269 ----
                                |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildDefModule (tokno: CARDINAL) ;
  VAR
     NameStart,
     NameEnd  : CARDINAL ;
  BEGIN
     Assert(CompilingDefinitionModule()) ;
!    CheckForUnknownInModule (tokno) ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
*************** END PCStartBuildImpModule ;
*** 325,337 ****
                                    |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildImpModule ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
     Assert(CompilingImplementationModule()) ;
!    CheckForUnknownInModule ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
--- 325,337 ----
                                    |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildImpModule (tokno: CARDINAL) ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
     Assert(CompilingImplementationModule()) ;
!    CheckForUnknownInModule (tokno) ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
*************** END PCStartBuildProgModule ;
*** 398,410 ****
                             |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildProgModule ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
     Assert(CompilingProgramModule()) ;
!    CheckForUnknownInModule ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
--- 398,410 ----
                             |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildProgModule (tokno: CARDINAL) ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
     Assert(CompilingProgramModule()) ;
!    CheckForUnknownInModule (tokno) ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
*************** END PCStartBuildInnerModule ;
*** 468,479 ****
                           |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildInnerModule ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
!    CheckForUnknownInModule ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
--- 468,479 ----
                           |------------|        |-----------|
  *)
  
! PROCEDURE PCEndBuildInnerModule (tokno: CARDINAL) ;
  VAR
     NameStart,
     NameEnd  : Name ;
  BEGIN
!    CheckForUnknownInModule (tokno) ;
     EndScope ;
     PopT(NameEnd) ;
     PopT(NameStart) ;
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/PHBuild.bnf gcc-16-20251019/gcc/m2/gm2-compiler/PHBuild.bnf
*** gcc-16-20251012/gcc/m2/gm2-compiler/PHBuild.bnf	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/PHBuild.bnf	Sun Oct 19 22:32:14 2025
*************** FileUnit :=
*** 551,557 ****
                ImplementationOrProgramModule )                              % PopAuto %
           =:
  
! ProgramModule :=                                                           % VAR begint, endt: CARDINAL ; %
                                                                             % begint := GetTokenNo () %
                   "MODULE"                                                  % M2Error.DefaultProgramModule %
                                                                             % PushAutoOn %
--- 551,557 ----
                ImplementationOrProgramModule )                              % PopAuto %
           =:
  
! ProgramModule :=                                                           % VAR begint, endt, namet: CARDINAL ; %
                                                                             % begint := GetTokenNo () %
                   "MODULE"                                                  % M2Error.DefaultProgramModule %
                                                                             % PushAutoOn %
*************** ProgramModule :=
*** 566,579 ****
                                                                             % StartBuildInit (begint) %
                    Block                                                    % PushAutoOn %
                                                                             % endt := GetTokenNo () -1 %
                    Ident                                                    % EndBuildFile (endt) %
!                                                                            % P3EndBuildProgModule %
                    "."                                                      % PopAuto ;
                                                                               EndBuildInit (endt) ;
                                                                               PopAuto %
                    =:
  
! ImplementationModule :=                                                    % VAR begint, endt: CARDINAL ; %
                                                                             % begint := GetTokenNo () %
                          "IMPLEMENTATION"                                   % M2Error.DefaultImplementationModule %
                                           "MODULE"                          % PushAutoOn %
--- 566,580 ----
                                                                             % StartBuildInit (begint) %
                    Block                                                    % PushAutoOn %
                                                                             % endt := GetTokenNo () -1 %
+                                                                            % namet := GetTokenNo () %
                    Ident                                                    % EndBuildFile (endt) %
!                                                                            % P3EndBuildProgModule (namet) %
                    "."                                                      % PopAuto ;
                                                                               EndBuildInit (endt) ;
                                                                               PopAuto %
                    =:
  
! ImplementationModule :=                                                    % VAR begint, endt, namet: CARDINAL ; %
                                                                             % begint := GetTokenNo () %
                          "IMPLEMENTATION"                                   % M2Error.DefaultImplementationModule %
                                           "MODULE"                          % PushAutoOn %
*************** ImplementationModule :=
*** 588,595 ****
                                                                             % StartBuildInit (begint) %
                           Block                                             % PushAutoOn %
                                                                             % endt := GetTokenNo () -1 %
                           Ident                                             % EndBuildFile (endt) %
!                                                                            % P3EndBuildImpModule %
                           "."                                               % PopAuto ;
                                                                               EndBuildInit (endt) ;
                                                                               PopAuto ;
--- 589,597 ----
                                                                             % StartBuildInit (begint) %
                           Block                                             % PushAutoOn %
                                                                             % endt := GetTokenNo () -1 %
+                                                                            % namet := GetTokenNo () %
                           Ident                                             % EndBuildFile (endt) %
!                                                                            % P3EndBuildImpModule (namet) %
                           "."                                               % PopAuto ;
                                                                               EndBuildInit (endt) ;
                                                                               PopAuto ;
*************** DefOptArg := "[" Ident ":" FormalType "=
*** 1229,1235 ****
  
  FormalType := { "ARRAY" "OF" } Qualident =:
  
! ModuleDeclaration :=                                                       % VAR begint: CARDINAL ; %
                                                                             % begint := GetTokenNo () %
                       "MODULE"                                              % M2Error.DefaultInnerModule %
                                                                             % PushAutoOn %
--- 1231,1237 ----
  
  FormalType := { "ARRAY" "OF" } Qualident =:
  
! ModuleDeclaration :=                                                       % VAR begint, namet: CARDINAL ; %
                                                                             % begint := GetTokenNo () %
                       "MODULE"                                              % M2Error.DefaultInnerModule %
                                                                             % PushAutoOn %
*************** ModuleDeclaration :=
*** 1242,1248 ****
                          } [ Export
                              ]
                         Block                                               % PushAutoOn %
!                        Ident                                               % EndBuildInnerModule %
                                                                             % PopAuto ; PopAuto ; PopAuto %
                       =:
  
--- 1244,1251 ----
                          } [ Export
                              ]
                         Block                                               % PushAutoOn %
! 		                                                           % namet := GetTokenNo () %
!                        Ident                                               % EndBuildInnerModule (namet) %
                                                                             % PopAuto ; PopAuto ; PopAuto %
                       =:
  
*************** Import :=  "FROM" Ident "IMPORT" IdentLi
*** 1258,1264 ****
             "IMPORT"
              IdentList ";" =:
  
! DefinitionModule :=                                                        % VAR begint, endt: CARDINAL ; %
                                                                             % begint := GetTokenNo () %
                      "DEFINITION"                                           % M2Error.DefaultDefinitionModule %
                                   "MODULE"                                  % PushAutoOn %
--- 1261,1267 ----
             "IMPORT"
              IdentList ";" =:
  
! DefinitionModule :=                                                        % VAR begint, endt, namet: CARDINAL ; %
                                                                             % begint := GetTokenNo () %
                      "DEFINITION"                                           % M2Error.DefaultDefinitionModule %
                                   "MODULE"                                  % PushAutoOn %
*************** DefinitionModule :=
*** 1272,1279 ****
                                          ]
                      { Definition }                                         % endt := GetTokenNo () %
                                     "END"                                   % PushAutoOn %
                                           Ident                             % EndBuildFile (endt) ;
!                                                                              P3EndBuildDefModule %
                                                 "."                         % PopAuto ; PopAuto ; PopAuto %
                    =:
  
--- 1275,1283 ----
                                          ]
                      { Definition }                                         % endt := GetTokenNo () %
                                     "END"                                   % PushAutoOn %
+                                                                            % namet := GetTokenNo () %
                                           Ident                             % EndBuildFile (endt) ;
!                                                                              P3EndBuildDefModule (namet) %
                                                 "."                         % PopAuto ; PopAuto ; PopAuto %
                    =:
  
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/SymbolTable.def gcc-16-20251019/gcc/m2/gm2-compiler/SymbolTable.def
*** gcc-16-20251012/gcc/m2/gm2-compiler/SymbolTable.def	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/SymbolTable.def	Sun Oct 19 22:32:14 2025
*************** PROCEDURE CheckForUndeclaredExports (Mod
*** 2124,2130 ****
                               an error message is displayed.
  *)
  
! PROCEDURE CheckForUnknownInModule ;
  
  
  (*
--- 2124,2130 ----
                               an error message is displayed.
  *)
  
! PROCEDURE CheckForUnknownInModule (tokno: CARDINAL) ;
  
  
  (*
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-compiler/SymbolTable.mod gcc-16-20251019/gcc/m2/gm2-compiler/SymbolTable.mod
*** gcc-16-20251012/gcc/m2/gm2-compiler/SymbolTable.mod	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-compiler/SymbolTable.mod	Sun Oct 19 22:32:14 2025
*************** END ForeachParamSymDo ;
*** 9585,9613 ****
                               an error message is displayed.
  *)
  
! PROCEDURE CheckForUnknownInModule ;
  VAR
     pSym: PtrToSymbol ;
  BEGIN
!    pSym := GetPsym(GetCurrentModuleScope()) ;
     WITH pSym^ DO
        CASE SymbolType OF
  
        DefImpSym: WITH DefImp DO
!                     CheckForUnknowns (name, ExportQualifiedTree,
                                        'EXPORT QUALIFIED') ;
!                     CheckForUnknowns (name, ExportUnQualifiedTree,
                                        'EXPORT UNQUALIFIED') ;
!                     CheckForSymbols  (ExportRequest,
!                                       'requested by another modules import (symbols have not been exported by the appropriate definition module)') ;
!                     CheckForUnknowns (name, Unresolved, 'unresolved') ;
!                     CheckForUnknowns (name, LocalSymbols, 'locally used')
                   END |
        ModuleSym: WITH Module DO
!                     CheckForUnknowns (name, Unresolved, 'unresolved') ;
!                     CheckForUnknowns (name, ExportUndeclared, 'exported but undeclared') ;
!                     CheckForUnknowns (name, ExportTree, 'exported but undeclared') ;
!                     CheckForUnknowns (name, LocalSymbols, 'locally used')
                   END
  
        ELSE
--- 9585,9613 ----
                               an error message is displayed.
  *)
  
! PROCEDURE CheckForUnknownInModule (tokno: CARDINAL) ;
  VAR
     pSym: PtrToSymbol ;
  BEGIN
!    pSym := GetPsym (GetCurrentModuleScope ()) ;
     WITH pSym^ DO
        CASE SymbolType OF
  
        DefImpSym: WITH DefImp DO
!                     CheckForUnknowns (tokno, name, ExportQualifiedTree,
                                        'EXPORT QUALIFIED') ;
!                     CheckForUnknowns (tokno, name, ExportUnQualifiedTree,
                                        'EXPORT UNQUALIFIED') ;
!                     CheckForSymbols (ExportRequest,
!                                      'requested by another modules import (symbols have not been exported by the appropriate definition module)') ;
!                     CheckForUnknowns (tokno, name, Unresolved, 'unresolved') ;
!                     CheckForUnknowns (tokno, name, LocalSymbols, 'locally used')
                   END |
        ModuleSym: WITH Module DO
!                     CheckForUnknowns (tokno, name, Unresolved, 'unresolved') ;
!                     CheckForUnknowns (tokno, name, ExportUndeclared, 'exported but undeclared') ;
!                     CheckForUnknowns (tokno, name, ExportTree, 'exported but undeclared') ;
!                     CheckForUnknowns (tokno, name, LocalSymbols, 'locally used')
                   END
  
        ELSE
*************** BEGIN
*** 9626,9632 ****
     IF IsUnreportedUnknown (sym)
     THEN
        IncludeElementIntoSet (ReportedUnknowns, sym) ;
!       MetaErrorStringT1 (GetFirstUsed (sym), InitString ("unknown symbol {%1EUad}"), sym)
     END
  END UnknownSymbolError ;
  
--- 9626,9632 ----
     IF IsUnreportedUnknown (sym)
     THEN
        IncludeElementIntoSet (ReportedUnknowns, sym) ;
!       MetaErrorStringT1 (GetFirstUsed (sym), InitString ("unknown symbol {%1EUad} {%1&s}"), sym)
     END
  END UnknownSymbolError ;
  
*************** END Listify ;
*** 9705,9726 ****
                        together with an error message.
  *)
  
! PROCEDURE CheckForUnknowns (name: Name; Tree: SymbolTree;
                              a: ARRAY OF CHAR) ;
  VAR
     s: String ;
  BEGIN
!    IF DoesTreeContainAny(Tree, IsUnreportedUnknown)
     THEN
!       CurrentError := NewError(GetTokenNo()) ;
!       s := InitString("{%E} the following unknown symbols in module %<") ;
!       s := ConCat(s, Mark(InitStringCharStar(KeyToCharStar(name)))) ;
!       s := ConCat(s, Mark(InitString('%> were '))) ;
!       s := ConCat(s, Mark(InitString(a))) ;
!       s := ConCat (s, Mark (InitString (': '))) ;
!       s := ConCat (s, Mark (Listify (Tree, IsUnreportedUnknown))) ;
!       MetaErrorStringT0(GetTokenNo(), s) ;
!       ForeachNodeDo(Tree, UnknownSymbolError)
     END
  END CheckForUnknowns ;
  
--- 9705,9728 ----
                        together with an error message.
  *)
  
! PROCEDURE CheckForUnknowns (tokno: CARDINAL; name: Name; Tree: SymbolTree;
                              a: ARRAY OF CHAR) ;
  VAR
     s: String ;
  BEGIN
!    IF DoesTreeContainAny (Tree, IsUnreportedUnknown)
     THEN
!       ForeachNodeDo (Tree, UnknownSymbolError) ;
!       IF NoOfNodes (Tree, IsUnreportedUnknown) > 0
!       THEN
!          s := InitString ("{%E} the following unknown symbols in module %<") ;
!          s := ConCat (s, Mark (InitStringCharStar (KeyToCharStar (name)))) ;
!          s := ConCat (s, Mark (InitString ('%> were '))) ;
!          s := ConCat (s, Mark (InitString (a))) ;
!          s := ConCat (s, Mark (InitString (': '))) ;
!          s := ConCat (s, Mark (Listify (Tree, IsUnreportedUnknown))) ;
!          MetaErrorStringT0 (tokno, s)
!       END
     END
  END CheckForUnknowns ;
  
diff -Nrcpad gcc-16-20251012/gcc/m2/gm2-gcc/m2spellcheck.cc gcc-16-20251019/gcc/m2/gm2-gcc/m2spellcheck.cc
*** gcc-16-20251012/gcc/m2/gm2-gcc/m2spellcheck.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/m2/gm2-gcc/m2spellcheck.cc	Sun Oct 19 22:32:14 2025
***************
*** 1,4 ****
! /* m2spellcheck.cc provides an interface to GCC expression trees.
  
  Copyright (C) 2025 Free Software Foundation, Inc.
  Contributed by Gaius Mulley <gaiusmod2@gmail.com>.
--- 1,4 ----
! /* m2spellcheck.cc provides an interface to the GCC spell checker.
  
  Copyright (C) 2025 Free Software Foundation, Inc.
  Contributed by Gaius Mulley <gaiusmod2@gmail.com>.
*************** along with GNU Modula-2; see the file CO
*** 34,42 ****
  
  
  /* Define the hidden type Candidates declared in the definition module.  */
  
  typedef struct Candidates_t {
!   auto_vec<const char *> candidates_array;
    struct Candidates_t *next;
  } Candidates;
  
--- 34,43 ----
  
  
  /* Define the hidden type Candidates declared in the definition module.  */
+ typedef auto_vec<const char *> candidates_array_vec_t;
  
  typedef struct Candidates_t {
!   candidates_array_vec_t candidates_array;
    struct Candidates_t *next;
  } Candidates;
  
*************** m2spellcheck_InitCandidates (void)
*** 57,68 ****
        c = freeList;
        freeList = freeList->next;
      }
!   memset (c, 0, sizeof (Candidates));
    return c;
  }
  
  /* Push a string to the Candidates array.
!    The candidates array will contain str at the end.  */
  
  static
  void
--- 58,70 ----
        c = freeList;
        freeList = freeList->next;
      }
!   :: new (&c->candidates_array) auto_vec<const char *> ();
!   c->next = NULL;
    return c;
  }
  
  /* Push a string to the Candidates array.
!    The candidates array will contain the string name at the end.  */
  
  static
  void
*************** m2spellcheck_Push (void *cand, const cha
*** 80,91 ****
    Push (static_cast<Candidates *> (cand), name);
  }
  
  static
  void
  KillCandidates (Candidates **cand)
  {
-   // --fixme-- deallocate and zero the candidates_array.
    (*cand)->next = freeList;
    freeList = *cand;
    (*cand) = NULL;
  }
--- 82,96 ----
    Push (static_cast<Candidates *> (cand), name);
  }
  
+ /* Return the Candidates structure to the freeList and deallocate
+    the auto_vec candidates_array.  */
+ 
  static
  void
  KillCandidates (Candidates **cand)
  {
    (*cand)->next = freeList;
+   (*cand)->candidates_array.~candidates_array_vec_t ();
    freeList = *cand;
    (*cand) = NULL;
  }
diff -Nrcpad gcc-16-20251012/gcc/match.pd gcc-16-20251019/gcc/match.pd
*** gcc-16-20251012/gcc/match.pd	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/match.pd	Sun Oct 19 22:32:14 2025
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 981,996 ****
   (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) && TYPE_UNSIGNED (TREE_TYPE (@0)))
    (bit_and @0 (negate @1))))
  
! (for div (trunc_div ceil_div floor_div round_div exact_div)
  #if GIMPLE
!  /* Canonicalize unsigned t / 4 to t >> 2.  */
   (simplify
    (div @0 integer_pow2p@1)
    (if (INTEGRAL_TYPE_P (type)
         && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (@0)))
     (rshift @0 { build_int_cst (integer_type_node,
! 			       wi::exact_log2 (wi::to_wide (@1))); })))
  #endif
   /* Simplify (t * u) / u -> t.  */
   (simplify
    (div (mult:c @0 @1) @1)
--- 981,998 ----
   (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) && TYPE_UNSIGNED (TREE_TYPE (@0)))
    (bit_and @0 (negate @1))))
  
! /* Canonicalize unsigned t / 4 to t >> 2.  */
  #if GIMPLE
! (for div (trunc_div floor_div exact_div)
   (simplify
    (div @0 integer_pow2p@1)
    (if (INTEGRAL_TYPE_P (type)
         && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (@0)))
     (rshift @0 { build_int_cst (integer_type_node,
! 			       wi::exact_log2 (wi::to_wide (@1))); }))))
  #endif
+ 
+ (for div (trunc_div ceil_div floor_div round_div exact_div)
   /* Simplify (t * u) / u -> t.  */
   (simplify
    (div (mult:c @0 @1) @1)
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3717,3722 ****
--- 3719,3754 ----
         bool c2_is_type_precision_p = tree_to_uhwi (@2) == prec;
        }
        (if (c2_is_type_precision_p && (mult_p || widen_mult_p)))))))
+  (match (unsigned_integer_sat_mul @0 @1)
+   (convert (min (widen_mult:c@3 @0 @1) INTEGER_CST@2))
+   (if (types_match (type, @0, @1))
+    (with
+     {
+      unsigned prec = TYPE_PRECISION (type);
+      unsigned widen_prec = TYPE_PRECISION (TREE_TYPE (@3));
+ 
+      wide_int max = wi::mask (prec, false, widen_prec);
+      bool c2_is_max_p = wi::eq_p (wi::to_wide (@2), max);
+      bool widen_mult_p = prec * 2 == widen_prec;
+     }
+     (if (c2_is_max_p && widen_mult_p)))))
+   (match (unsigned_integer_sat_mul @0 @1)
+    (convert1?
+     (bit_ior
+      (convert?
+       (negate
+        (convert (ne (convert2? (rshift @3 INTEGER_CST@2)) integer_zerop))))
+      (convert (widen_mult:c@3 @0 @1))))
+    (if (types_match (type, @0, @1))
+     (with
+      {
+       unsigned prec = TYPE_PRECISION (type);
+       unsigned widen_prec = TYPE_PRECISION (TREE_TYPE (@3));
+ 
+       bool c2_is_type_precision_p = tree_to_uhwi (@2) == prec;
+       bool widen_mult_p = prec * 2 == widen_prec;
+      }
+      (if (c2_is_type_precision_p && widen_mult_p)))))
  )
  
  /* The boundary condition for case 10: IMM = 1:
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6812,6831 ****
   (bit_and:c (ne:c @0 @1) (ne (bit_ior @0 @1) integer_zerop))
   (ne @0 @1))
  (simplify
!  (bit_ior:c (ne:c @0 @1) (ne (bit_ior @0 @1) integer_zerop))
!  (ne (bit_ior @0 @1) { integer_zero_node; }))
  (simplify
!  (bit_and:c (eq:c @0 @1) (eq (bit_ior @0 @1) integer_zerop))
!  (eq (bit_ior @0 @1) { integer_zero_node; }))
  (simplify
   (bit_ior:c (eq:c @0 @1) (eq (bit_ior @0 @1) integer_zerop))
   (eq @0 @1))
  (simplify
   (bit_and:c (ne:c @0 @1) (eq (bit_ior @0 @1) integer_zerop))
!  { build_zero_cst (type); })
  (simplify
   (bit_ior:c (eq:c @0 @1) (ne (bit_ior @0 @1) integer_zerop))
!  { build_one_cst (type); })
  #endif
  
  /* These was part of minmax phiopt.  */
--- 6844,6863 ----
   (bit_and:c (ne:c @0 @1) (ne (bit_ior @0 @1) integer_zerop))
   (ne @0 @1))
  (simplify
!  (bit_ior:c (ne:c @0 @1) (ne (bit_ior@2 @0 @1) integer_zerop@3))
!  (ne @2 @3))
  (simplify
!  (bit_and:c (eq:c @0 @1) (eq (bit_ior@2 @0 @1) integer_zerop@3))
!  (eq @2 @3))
  (simplify
   (bit_ior:c (eq:c @0 @1) (eq (bit_ior @0 @1) integer_zerop))
   (eq @0 @1))
  (simplify
   (bit_and:c (ne:c @0 @1) (eq (bit_ior @0 @1) integer_zerop))
!  { constant_boolean_node (false, type); })
  (simplify
   (bit_ior:c (eq:c @0 @1) (ne (bit_ior @0 @1) integer_zerop))
!  { constant_boolean_node (true, type); })
  #endif
  
  /* These was part of minmax phiopt.  */
diff -Nrcpad gcc-16-20251012/gcc/omp-builtins.def gcc-16-20251019/gcc/omp-builtins.def
*** gcc-16-20251012/gcc/omp-builtins.def	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/omp-builtins.def	Sun Oct 19 22:32:14 2025
*************** DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_ULL
*** 358,392 ****
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_STATIC,
  		  "GOMP_parallel_loop_static",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC,
  		  "GOMP_parallel_loop_dynamic",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED,
  		  "GOMP_parallel_loop_guided",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME,
  		  "GOMP_parallel_loop_runtime",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
! 		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_DYNAMIC,
  		  "GOMP_parallel_loop_nonmonotonic_dynamic",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_GUIDED,
  		  "GOMP_parallel_loop_nonmonotonic_guided",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME,
  		  "GOMP_parallel_loop_nonmonotonic_runtime",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
! 		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME,
  		  "GOMP_parallel_loop_maybe_nonmonotonic_runtime",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
! 		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END, "GOMP_loop_end",
  		  BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END_CANCEL, "GOMP_loop_end_cancel",
--- 358,392 ----
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_STATIC,
  		  "GOMP_parallel_loop_static",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC,
  		  "GOMP_parallel_loop_dynamic",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED,
  		  "GOMP_parallel_loop_guided",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME,
  		  "GOMP_parallel_loop_runtime",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
! 		  ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_DYNAMIC,
  		  "GOMP_parallel_loop_nonmonotonic_dynamic",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_GUIDED,
  		  "GOMP_parallel_loop_nonmonotonic_guided",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT,
! 		  ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_NONMONOTONIC_RUNTIME,
  		  "GOMP_parallel_loop_nonmonotonic_runtime",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
! 		  ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_LOOP_MAYBE_NONMONOTONIC_RUNTIME,
  		  "GOMP_parallel_loop_maybe_nonmonotonic_runtime",
  		  BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
! 		  ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END, "GOMP_loop_end",
  		  BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_LOOP_END_CANCEL, "GOMP_loop_end_cancel",
*************** DEF_GOMP_BUILTIN (BUILT_IN_GOMP_INTEROP,
*** 409,418 ****
  		  BT_FN_VOID_INT_INT_PTR_PTR_PTR_INT_PTR_INT_PTR_UINT_PTR,
  		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL, "GOMP_parallel",
! 		  BT_FN_VOID_OMPFN_PTR_UINT_UINT, ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_REDUCTIONS,
  		  "GOMP_parallel_reductions",
! 		  BT_FN_UINT_OMPFN_PTR_UINT_UINT, ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TASK, "GOMP_task",
  		  BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR_INT_PTR,
  		  ATTR_NOTHROW_LIST)
--- 409,418 ----
  		  BT_FN_VOID_INT_INT_PTR_PTR_PTR_INT_PTR_INT_PTR_UINT_PTR,
  		  ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL, "GOMP_parallel",
!       BT_FN_VOID_OMPFN_PTR_UINT_UINT, ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_REDUCTIONS,
  		  "GOMP_parallel_reductions",
! 		  BT_FN_UINT_OMPFN_PTR_UINT_UINT, ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TASK, "GOMP_task",
  		  BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR_INT_PTR,
  		  ATTR_NOTHROW_LIST)
*************** DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS
*** 430,436 ****
  		  BT_FN_UINT, ATTR_NOTHROW_LEAF_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_SECTIONS,
  		  "GOMP_parallel_sections",
! 		  BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END, "GOMP_sections_end",
  		  BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END_CANCEL,
--- 430,436 ----
  		  BT_FN_UINT, ATTR_NOTHROW_LEAF_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_PARALLEL_SECTIONS,
  		  "GOMP_parallel_sections",
! 		  BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END, "GOMP_sections_end",
  		  BT_FN_VOID, ATTR_NOTHROW_LEAF_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_SECTIONS_END_CANCEL,
*************** DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TARGET_M
*** 471,477 ****
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TEAMS4, "GOMP_teams4",
  		  BT_FN_BOOL_UINT_UINT_UINT_BOOL, ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TEAMS_REG, "GOMP_teams_reg",
! 		  BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TASKGROUP_REDUCTION_REGISTER,
  		  "GOMP_taskgroup_reduction_register",
  		  BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
--- 471,477 ----
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TEAMS4, "GOMP_teams4",
  		  BT_FN_BOOL_UINT_UINT_UINT_BOOL, ATTR_NOTHROW_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TEAMS_REG, "GOMP_teams_reg",
! 		  BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, ATTR_CALLBACK_GOMP_LIST)
  DEF_GOMP_BUILTIN (BUILT_IN_GOMP_TASKGROUP_REDUCTION_REGISTER,
  		  "GOMP_taskgroup_reduction_register",
  		  BT_FN_VOID_PTR, ATTR_NOTHROW_LEAF_LIST)
diff -Nrcpad gcc-16-20251012/gcc/optabs.cc gcc-16-20251019/gcc/optabs.cc
*** gcc-16-20251012/gcc/optabs.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/optabs.cc	Sun Oct 19 22:32:14 2025
*************** expand_widen_pattern_expr (const_sepops
*** 322,327 ****
--- 322,331 ----
      icode = find_widening_optab_handler (widen_pattern_optab,
  					 TYPE_MODE (TREE_TYPE (ops->op2)),
  					 tmode0);
+   else if (ops->code == WIDEN_SUM_EXPR)
+     icode = find_widening_optab_handler (widen_pattern_optab,
+ 					 TYPE_MODE (TREE_TYPE (ops->op1)),
+ 					 tmode0);
    else
      icode = optab_handler (widen_pattern_optab, tmode0);
    gcc_assert (icode != CODE_FOR_nothing);
diff -Nrcpad gcc-16-20251012/gcc/optabs.def gcc-16-20251019/gcc/optabs.def
*** gcc-16-20251012/gcc/optabs.def	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/optabs.def	Sun Oct 19 22:32:14 2025
*************** OPTAB_CD(smsub_widen_optab, "msub$b$a4")
*** 85,90 ****
--- 85,92 ----
  OPTAB_CD(umsub_widen_optab, "umsub$b$a4")
  OPTAB_CD(ssmsub_widen_optab, "ssmsub$b$a4")
  OPTAB_CD(usmsub_widen_optab, "usmsub$a$b4")
+ OPTAB_CD(ssum_widen_optab, "widen_ssum$a$b3")
+ OPTAB_CD(usum_widen_optab, "widen_usum$a$b3")
  OPTAB_CD(crc_optab, "crc$a$b4")
  OPTAB_CD(crc_rev_optab, "crc_rev$a$b4")
  OPTAB_CD(vec_load_lanes_optab, "vec_load_lanes$a$b")
*************** OPTAB_D (savg_floor_optab, "avg$a3_floor
*** 415,422 ****
  OPTAB_D (uavg_floor_optab, "uavg$a3_floor")
  OPTAB_D (savg_ceil_optab, "avg$a3_ceil")
  OPTAB_D (uavg_ceil_optab, "uavg$a3_ceil")
- OPTAB_D (ssum_widen_optab, "widen_ssum$I$a3")
- OPTAB_D (usum_widen_optab, "widen_usum$I$a3")
  OPTAB_D (usad_optab, "usad$I$a")
  OPTAB_D (ssad_optab, "ssad$I$a")
  OPTAB_D (smulhs_optab, "smulhs$a3")
--- 417,422 ----
diff -Nrcpad gcc-16-20251012/gcc/predict.cc gcc-16-20251019/gcc/predict.cc
*** gcc-16-20251012/gcc/predict.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/predict.cc	Sun Oct 19 22:32:14 2025
*************** update_max_bb_count (void)
*** 3849,3855 ****
    basic_block bb;
  
    FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR_FOR_FN (cfun), NULL, next_bb)
!     true_count_max = true_count_max.max (bb->count);
  
    cfun->cfg->count_max = true_count_max;
  
--- 3849,3855 ----
    basic_block bb;
  
    FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR_FOR_FN (cfun), NULL, next_bb)
!     true_count_max = profile_count::max_prefer_initialized (true_count_max, bb->count);
  
    cfun->cfg->count_max = true_count_max;
  
*************** estimate_bb_frequencies ()
*** 4162,4168 ****
  	 executed, then preserve this info.  */
        if (!(bb->count == profile_count::zero ()))
  	bb->count = count.guessed_local ().combine_with_ipa_count (ipa_count);
!       cfun->cfg->count_max = cfun->cfg->count_max.max (bb->count);
      }
  
    free_aux_for_blocks ();
--- 4162,4170 ----
  	 executed, then preserve this info.  */
        if (!(bb->count == profile_count::zero ()))
  	bb->count = count.guessed_local ().combine_with_ipa_count (ipa_count);
!       cfun->cfg->count_max
! 	= profile_count::max_prefer_initialized (cfun->cfg->count_max,
! 						 bb->count);
      }
  
    free_aux_for_blocks ();
*************** rebuild_frequencies (void)
*** 4473,4479 ****
    cfun->cfg->count_max = profile_count::uninitialized ();
    FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR_FOR_FN (cfun), NULL, next_bb)
      {
!       cfun->cfg->count_max = cfun->cfg->count_max.max (bb->count);
        if (bb->count.nonzero_p () && bb->count.quality () >= AFDO)
  	feedback_found = true;
        /* Uninitialized count may be result of inlining or an omision in an
--- 4475,4483 ----
    cfun->cfg->count_max = profile_count::uninitialized ();
    FOR_BB_BETWEEN (bb, ENTRY_BLOCK_PTR_FOR_FN (cfun), NULL, next_bb)
      {
!       cfun->cfg->count_max
! 	      = profile_count::max_prefer_initialized (cfun->cfg->count_max,
! 						       bb->count);
        if (bb->count.nonzero_p () && bb->count.quality () >= AFDO)
  	feedback_found = true;
        /* Uninitialized count may be result of inlining or an omision in an
diff -Nrcpad gcc-16-20251012/gcc/print-tree.cc gcc-16-20251019/gcc/print-tree.cc
*** gcc-16-20251012/gcc/print-tree.cc	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/print-tree.cc	Sun Oct 19 22:32:14 2025
*************** print_node (FILE *file, const char *pref
*** 747,752 ****
--- 747,760 ----
      case tcc_reference:
      case tcc_statement:
      case tcc_vl_exp:
+       if ((code == MEM_REF || code == TARGET_MEM_REF)
+ 	  && MR_DEPENDENCE_CLIQUE (node) != 0)
+ 	{
+ 	  indent_to (file, indent + 4);
+ 	  fprintf (file, "clique: %d base: %d",
+ 		   MR_DEPENDENCE_CLIQUE (node),
+ 		   MR_DEPENDENCE_BASE (node));
+ 	}
        if (code == BIND_EXPR)
  	{
  	  print_node (file, "vars", TREE_OPERAND (node, 0), indent + 4);
diff -Nrcpad gcc-16-20251012/gcc/profile-count.h gcc-16-20251019/gcc/profile-count.h
*** gcc-16-20251012/gcc/profile-count.h	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/profile-count.h	Sun Oct 19 22:32:14 2025
*************** public:
*** 1109,1138 ****
    /* Make counter forcibly nonzero.  */
    profile_count force_nonzero () const;
  
-   profile_count max (profile_count other) const
-     {
-       profile_count val = *this;
  
!       /* Always prefer nonzero IPA counts over local counts.  */
!       if (ipa ().nonzero_p () || other.ipa ().nonzero_p ())
! 	{
! 	  val = ipa ();
! 	  other = other.ipa ();
! 	}
!       if (!initialized_p ())
! 	return other;
!       if (!other.initialized_p ())
! 	return *this;
!       if (*this == zero ())
! 	return other;
!       if (other == zero ())
! 	return *this;
!       gcc_checking_assert (compatible_p (other));
!       if (val.m_val < other.m_val || (m_val == other.m_val
! 				      && val.m_quality < other.m_quality))
! 	return other;
!       return *this;
!     }
  
    /* PROB is a probability in scale 0...REG_BR_PROB_BASE.  Scale counter
       accordingly.  */
--- 1109,1131 ----
    /* Make counter forcibly nonzero.  */
    profile_count force_nonzero () const;
  
  
!   /* Return maximum of A and B.  If one of values is uninitialized return the
!      other.  */
! 
!   static profile_count
!   max_prefer_initialized (const profile_count a, const profile_count b)
!   {
!     if (!a.initialized_p ())
!       return b;
!     if (!b.initialized_p ())
!       return a;
!     profile_count ret;
!     gcc_checking_assert (a.compatible_p (b));
!     ret.m_val = MAX (a.m_val, b.m_val);
!     ret.m_quality = MIN (a.m_quality, b.m_quality);
!     return ret;
!   }
  
    /* PROB is a probability in scale 0...REG_BR_PROB_BASE.  Scale counter
       accordingly.  */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/ChangeLog gcc-16-20251019/gcc/testsuite/ChangeLog
*** gcc-16-20251012/gcc/testsuite/ChangeLog	Sun Oct 12 22:32:41 2025
--- gcc-16-20251019/gcc/testsuite/ChangeLog	Sun Oct 19 22:32:14 2025
***************
*** 1,3 ****
--- 1,307 ----
+ 2025-10-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/119060
+ 	* g++.dg/cpp26/observable-checkpoint.C: New test.
+ 
+ 2025-10-18  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122279
+ 	* g++.dg/modules/namespace-13_b.C: Adjust expected results.
+ 	* g++.dg/modules/namespace-13_c.C: Test non-exported
+ 	using-directive is not used.
+ 	* g++.dg/modules/namespace-14_a.C: New test.
+ 	* g++.dg/modules/namespace-14_b.C: New test.
+ 	* g++.dg/modules/namespace-14_c.C: New test.
+ 	* g++.dg/modules/namespace-14_d.C: New test.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* gcc.target/aarch64/sve2/pr122069_3.c: New test.
+ 	* gcc.target/aarch64/sve2/pr122069_4.c: New test.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* gcc.target/aarch64/sve2/pr122069_1.c: New test.
+ 	* gcc.target/aarch64/sve2/pr122069_2.c: New test.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* gcc.target/aarch64/sve/pr122069_1.c: New test.
+ 	* gcc.target/aarch64/sve/pr122069_2.c: New test.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* gcc.target/aarch64/pr122069_3.c: New test.
+ 	* gcc.target/aarch64/pr122069_4.c: New test.
+ 
+ 2025-10-18  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/122069
+ 	* gcc.target/aarch64/pr122069_1.c: New test.
+ 	* gcc.target/aarch64/pr122069_2.c: New test.
+ 
+ 2025-10-18  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* gfortran.dg/conditional_1.f90: Test character type.
+ 	* gfortran.dg/conditional_2.f90: Test print constants.
+ 	* gfortran.dg/conditional_4.f90: Test diagnostic message.
+ 	* gfortran.dg/conditional_6.f90: Test character cond-arg.
+ 
+ 2025-10-18  Linsen Zhou  <i@lin.moe>
+ 
+ 	PR tree-optimization/122012
+ 	* gcc.dg/torture/pr122012.c: New test.
+ 
+ 2025-10-17  David Faust  <david.faust@oracle.com>
+ 
+ 	PR target/122139
+ 	* gcc.target/bpf/memset-3.c: New.
+ 	* gcc.target/bpf/memset-4.c: New.
+ 
+ 2025-10-17  Tamar Christina  <tamar.christina@arm.com>
+ 	    Jennifer Schmitz  <jschmitz@nvidia.com>
+ 
+ 	PR target/121604
+ 	* gcc.target/aarch64/sve/pr121604_brk.c: New test.
+ 	* gcc.target/aarch64/sve2/pr121604_pmov.c: New test.
+ 
+ 2025-10-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122308
+ 	* gcc.dg/vect/vect-pr122308.c: New testcase.
+ 
+ 2025-10-17  Josef Melcr  <jmelcr02@gmail.com>
+ 
+ 	* gcc.dg/ipa/ipcp-cb-spec1.c: New test.
+ 	* gcc.dg/ipa/ipcp-cb-spec2.c: New test.
+ 	* gcc.dg/ipa/ipcp-cb1.c: New test.
+ 
+ 2025-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/style1.ads: New test.
+ 
+ 2025-10-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122301
+ 	* gcc.dg/vect/vect-pr122301.c: New testcase.
+ 
+ 2025-10-17  Avinash Jayakar  <avinashd@linux.ibm.com>
+ 
+ 	PR tree-optimization/104116
+ 	* gcc.dg/vect/pr104116-ceil-div-2.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-div-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-div.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-mod-2.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-mod-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-mod.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-udiv-2.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-udiv-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-udiv.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-umod-2.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-umod-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-ceil-umod.c: New test.
+ 	* gcc.dg/vect/pr104116-floor-div-2.c: New test.
+ 	* gcc.dg/vect/pr104116-floor-div-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-floor-div.c: New test.
+ 	* gcc.dg/vect/pr104116-floor-mod-2.c: New test.
+ 	* gcc.dg/vect/pr104116-floor-mod-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-floor-mod.c: New test.
+ 	* gcc.dg/vect/pr104116-round-div-2.c: New test.
+ 	* gcc.dg/vect/pr104116-round-div-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-round-div.c: New test.
+ 	* gcc.dg/vect/pr104116-round-mod-2.c: New test.
+ 	* gcc.dg/vect/pr104116-round-mod-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-round-mod.c: New test.
+ 	* gcc.dg/vect/pr104116-round-udiv-2.c: New test.
+ 	* gcc.dg/vect/pr104116-round-udiv-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-round-udiv.c: New test.
+ 	* gcc.dg/vect/pr104116-round-umod-2.c: New test.
+ 	* gcc.dg/vect/pr104116-round-umod-pow2.c: New test.
+ 	* gcc.dg/vect/pr104116-round-umod.c: New test.
+ 	* gcc.dg/vect/pr104116.h: New test.
+ 
+ 2025-10-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122296
+ 	* gcc.dg/torture/int-bwise-opt-1.c: New test.
+ 
+ 2025-10-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122296
+ 	* gcc.dg/tree-ssa/int-bwise-opt-vect01.c: New test.
+ 
+ 2025-10-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* gcc.dg/plugin/diagnostic_plugin_test_graphs.cc
+ 	(report_diag_with_graphs): Port from set_attr to set_property.
+ 
+ 2025-10-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/121468
+ 	PR tree-optimization/121206
+ 	PR tree-optimization/122200
+ 	* gcc.dg/pr121468.c: New.
+ 	* gcc.dg/pr122200.c: New.
+ 
+ 2025-10-15  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/118460
+ 	* gcc.target/arm/armv8_2-fp16-move-1.c: Adjust expected output.
+ 	* gcc.target/arm/armv8_2-fp16-move-2.c: Likewise.
+ 
+ 2025-10-15  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122037
+ 	* gcc.dg/tree-ssa/vla-1.c: New test.
+ 
+ 2025-10-15  Alice Carlotti  <alice.carlotti@arm.com>
+ 
+ 	* gcc.target/aarch64/acle/rwsr-armv8p9.c: Fix incorrect encoding.
+ 
+ 2025-10-15  Sebastian Pop  <spop@nvidia.com>
+ 
+ 	* gcc.dg/autopar/runtime-auto.c: New test.
+ 
+ 2025-10-15  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/122189
+ 	* gcc.target/arm/mve/intrinsics/vadcq-check-carry.c: New test.
+ 	* gcc.target/arm/mve/intrinsics/vadcq_m_s32.c: Adjust instructions
+ 	order.
+ 	* gcc.target/arm/mve/intrinsics/vadcq_m_u32.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c: Likewise.
+ 
+ 2025-10-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/122266
+ 	* gcc.target/i386/pr122266.c: New test case.
+ 
+ 2025-10-14  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/122192
+ 	* g++.dg/template/dependent-base6.C: Verify mem-initializer-id
+ 	qualified name lookup is type-only too.
+ 
+ 2025-10-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/121949
+ 	* gcc.dg/vect/pr121949_1.c: New test.
+ 	* gcc.dg/vect/pr121949_2.c: New test.
+ 	* gcc.dg/vect/pr121949_3.c: New test.
+ 
+ 2025-10-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.dg/vect/pr120687-1.c: Adjust.
+ 	* gcc.dg/vect/pr120687-2.c: Likewise.
+ 	* gcc.dg/vect/pr120687-3.c: Likewise.
+ 
+ 2025-10-14  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* g++.dg/other/i386-2.C: Remove AMX-TRANSPOSE test.
+ 	* g++.dg/other/i386-3.C: Ditto.
+ 	* gcc.target/i386/amx-check.h: Ditto.
+ 	* gcc.target/i386/amxmovrs-asmatt-1.c: Ditto.
+ 	* gcc.target/i386/amxmovrs-asmintel-1.c: Ditto.
+ 	* gcc.target/i386/funcspec-56.inc: Ditto.
+ 	* gcc.target/i386/sse-12.c: Ditto.
+ 	* gcc.target/i386/sse-13.c: Ditto.
+ 	* gcc.target/i386/sse-14.c: Ditto.
+ 	* gcc.target/i386/sse-22.c: Ditto.
+ 	* gcc.target/i386/sse-23.c: Ditto.
+ 	* lib/target-supports.exp: Ditto.
+ 	* gcc.target/i386/amxmovrs-2rpntlvwrs-2.c: Removed.
+ 	* gcc.target/i386/amxtranspose-2rpntlvw-2.c: Removed.
+ 	* gcc.target/i386/amxtranspose-asmatt-1.c: Removed.
+ 	* gcc.target/i386/amxtranspose-asmintel-1.c: Removed.
+ 	* gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c: Removed.
+ 	* gcc.target/i386/amxtranspose-conjtfp16-2.c: Removed.
+ 	* gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c: Removed.
+ 	* gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c: Removed.
+ 	* gcc.target/i386/amxtranspose-tdpbf16ps-2.c: Removed.
+ 	* gcc.target/i386/amxtranspose-tdpfp16ps-2.c: Removed.
+ 	* gcc.target/i386/amxtranspose-tmmultf32ps-2.c: Removed.
+ 	* gcc.target/i386/amxtranspose-transposed-2.c: Removed.
+ 
+ 2025-10-14  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/122178
+ 	* g++.dg/tree-ssa/cselim-1.C: New test.
+ 
+ 2025-10-14  Zhongyao Chen  <chenzhongyao.hit@gmail.com>
+ 
+ 	* gcc.target/riscv/predef-profiles-1.c: New test for __riscv_rvi20u64.
+ 	* gcc.target/riscv/predef-profiles-2.c: New test for __riscv_rvi20u32.
+ 	* gcc.target/riscv/predef-profiles-3.c: New test for __riscv_rva20u64.
+ 	* gcc.target/riscv/predef-profiles-4.c: New test for __riscv_rva22u64.
+ 	* gcc.target/riscv/predef-profiles-5.c: New test for __riscv_rva23u64.
+ 	* gcc.target/riscv/predef-profiles-6.c: New test for __riscv_rva23s64.
+ 	* gcc.target/riscv/predef-profiles-7.c: New test for __riscv_rvb23u64.
+ 	* gcc.target/riscv/predef-profiles-8.c: New test for __riscv_rvb23s64.
+ 
+ 2025-10-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.dg/cpp/cpp.exp: Process .i files.
+ 	* gcc.dg/cpp/pr36674.i: Pass -Wno-implicit-int.
+ 	* gcc.dg/cpp/escape-3.i: New test.
+ 
+ 2025-10-13  Shreya Munnangi  <smunnangi1@ventanamicro.com>
+ 
+ 	PR target/120811
+ 	* gcc.target/riscv/add-synthesis-1.c: Adjust const to fit in range.
+ 	* gcc.target/riscv/pr120811.c: Add new test case.
+ 	* gcc.target/riscv/sum-of-two-s12-const-1.c: Adjust const to fit in range.
+ 
+ 2025-10-13  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR target/120674
+ 	* gcc.target/riscv/pr120674.c: New test.
+ 
+ 2025-10-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/122228
+ 	* g++.dg/cpp1y/func_constexpr3.C: New test.
+ 
+ 2025-10-13  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/122241
+ 	* gm2/iso/fail/badconst.mod: New test.
+ 	* gm2/iso/fail/badtype.mod: New test.
+ 	* gm2/iso/fail/badvar.mod: New test.
+ 
+ 2025-10-13  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR tree-optimization/121772
+ 	* gcc.target/aarch64/torture/pr121772.c: Add -fchecking to
+ 	dg-options.
+ 
+ 2025-10-13  Robin Dapp  <rdapp@ventanamicro.com>
+ 
+ 	PR target/118019
+ 	* gcc.target/riscv/rvv/autovec/pr118019-2.c: New test.
+ 
+ 2025-10-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/121191
+ 	* gfortran.dg/pdt_59.f03: New test.
+ 
+ 2025-10-12  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122163
+ 	* g++.dg/cpp0x/lambda/lambda-ref3.C: New test.
+ 
+ 2025-10-12  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/95543
+ 	PR fortran/103748
+ 	* gfortran.dg/pdt_17.f03: Change error message.
+ 	* gfortran.dg/pdt_57.f03: New test.
+ 	* gfortran.dg/pdt_58.f03: New test.
+ 
  2025-10-11  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	* gm2/iso/fail/badfield.mod: New test.
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/cpp1y/func_constexpr3.C gcc-16-20251019/gcc/testsuite/g++.dg/cpp1y/func_constexpr3.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/cpp1y/func_constexpr3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/g++.dg/cpp1y/func_constexpr3.C	Sun Oct 19 22:32:25 2025
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/122228
+ // { dg-do compile { target c++11 } }
+ // { dg-require-iconv "IBM1047" }
+ // { dg-options "-fexec-charset=IBM1047 -std=c++11" }
+ 
+ #include "func_constexpr.C"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/cpp26/observable-checkpoint.C gcc-16-20251019/gcc/testsuite/g++.dg/cpp26/observable-checkpoint.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/cpp26/observable-checkpoint.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/g++.dg/cpp26/observable-checkpoint.C	Sun Oct 19 22:32:25 2025
***************
*** 0 ****
--- 1,25 ----
+ // P1494R5+P3641R0 - Partial program correctness.
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options "-fdump-tree-optimized -Wno-return-type -O" }
+ // { dg-final { scan-tree-dump  {\+\s42} "optimized" } }
+ // { dg-final { scan-tree-dump  {__builtin_observable_checkpoint} "optimized" } }
+ 
+ extern int x;
+ 
+ int
+ here_b_ub ()
+ {
+   // missing return triggers UB (we must ignore the warning for this test). 
+ }
+ 
+ int
+ main ()
+ {
+   x = 0;
+   __builtin_printf (" start \n");
+   x += 42;
+   // Without this checkpoint the addition above is elided (along with the rest
+   // of main).
+   __builtin_observable_checkpoint ();
+   here_b_ub ();
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-13_b.C gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-13_b.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-13_b.C	Sun Oct 12 22:32:48 2025
--- gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-13_b.C	Sun Oct 19 22:32:26 2025
*************** module;
*** 6,11 ****
--- 6,12 ----
  
  namespace gmf::blah {}
  namespace gmf::other {}
+ using namespace gmf::other;  // not emitted
  
  export module b;
  export import a;
*************** namespace c {
*** 21,27 ****
    using namespace a;
  }
  
! // { dg-final { scan-lang-dump {Using-directives 3} module } }
  
  // { dg-final { scan-lang-dump {Writing using-directive in '::b' for '::a'} module } }
  // { dg-final { scan-lang-dump {Writing using-directive in '::b' for '::gmf::blah'} module } }
--- 22,28 ----
    using namespace a;
  }
  
! // { dg-final { scan-lang-dump {Using-directives 4} module } }
  
  // { dg-final { scan-lang-dump {Writing using-directive in '::b' for '::a'} module } }
  // { dg-final { scan-lang-dump {Writing using-directive in '::b' for '::gmf::blah'} module } }
*************** namespace c {
*** 30,32 ****
--- 31,34 ----
  
  // { dg-final { scan-lang-dump {Writing namespace:[0-9]* '::gmf::blah', public} module } }
  // { dg-final { scan-lang-dump-not {Writing namespace:[0-9]* '::gmf::other'} module } }
+ // { dg-final { scan-lang-dump-not {Writing using-directive in '::' for '::gmf::other'} module } }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-13_c.C gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-13_c.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-13_c.C	Sun Oct 12 22:32:48 2025
--- gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-13_c.C	Sun Oct 19 22:32:26 2025
*************** static_assert(b::f() == 42);
*** 15,17 ****
--- 15,20 ----
  static_assert(b::g() == 123);
  static_assert(c::other::h() == 99);
  static_assert(y::i() == 5);
+ 
+ // unexported 'using namespace a'; should not be visible in 'c'
+ int result = c::f();  // { dg-error "'f' is not a member of 'c'" }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-14_a.C gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-14_a.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-14_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-14_a.C	Sun Oct 19 22:32:26 2025
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/122279
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi M:part }
+ 
+ module M:part;
+ namespace foo {
+   void go();
+ }
+ namespace bar {
+   using namespace foo;
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-14_b.C gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-14_b.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-14_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-14_b.C	Sun Oct 19 22:32:26 2025
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/122279
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi M }
+ 
+ export module M;
+ import :part;
+ namespace qux {
+   using namespace bar;
+ }
+ void test1() {
+   bar::go();
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-14_c.C gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-14_c.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-14_c.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-14_c.C	Sun Oct 19 22:32:26 2025
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/122279
+ // { dg-additional-options "-fmodules" }
+ 
+ module M;
+ void test2() {
+   qux::go();
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-14_d.C gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-14_d.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/modules/namespace-14_d.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/g++.dg/modules/namespace-14_d.C	Sun Oct 19 22:32:26 2025
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/122279
+ // { dg-additional-options "-fmodules" }
+ // { dg-module-cmi M:other_part }
+ 
+ module M:other_part;
+ import :part;
+ 
+ void test3() {
+   bar::go();
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/other/i386-2.C gcc-16-20251019/gcc/testsuite/g++.dg/other/i386-2.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/other/i386-2.C	Sun Oct 12 22:32:48 2025
--- gcc-16-20251019/gcc/testsuite/g++.dg/other/i386-2.C	Sun Oct 19 22:32:26 2025
***************
*** 1,5 ****
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
--- 1,5 ----
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/other/i386-3.C gcc-16-20251019/gcc/testsuite/g++.dg/other/i386-3.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/other/i386-3.C	Sun Oct 12 22:32:48 2025
--- gcc-16-20251019/gcc/testsuite/g++.dg/other/i386-3.C	Sun Oct 19 22:32:26 2025
***************
*** 1,5 ****
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
--- 1,5 ----
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/template/dependent-base6.C gcc-16-20251019/gcc/testsuite/g++.dg/template/dependent-base6.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/template/dependent-base6.C	Sun Oct 12 22:32:48 2025
--- gcc-16-20251019/gcc/testsuite/g++.dg/template/dependent-base6.C	Sun Oct 19 22:32:26 2025
*************** struct A {
*** 8,12 ****
  
  struct S1 : A::B { }; // OK
  
! template<class T> struct S2 : T::B { }; // OK, used to fail
  template struct S2<A>;
--- 8,14 ----
  
  struct S1 : A::B { }; // OK
  
! template<class T> struct S2 : T::B { // OK, used to fail
!   S2() : T::B() { } // Also OK
! };
  template struct S2<A>;
diff -Nrcpad gcc-16-20251012/gcc/testsuite/g++.dg/tree-ssa/cselim-1.C gcc-16-20251019/gcc/testsuite/g++.dg/tree-ssa/cselim-1.C
*** gcc-16-20251012/gcc/testsuite/g++.dg/tree-ssa/cselim-1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/g++.dg/tree-ssa/cselim-1.C	Sun Oct 19 22:32:27 2025
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do compile { target c++11 } } */
+ /* { dg-options "-O2 -fdump-tree-phiopt1-details -fdump-tree-optimized" } */
+ /* PR tree-optimization/122178 */
+ /* cselim/cselim-limited should be able to handle clobbers. */
+ 
+ #include <new>
+ 
+ struct s1
+ {
+   bool t;
+ };
+ 
+ void f(s1 *a, bool b)
+ {
+   if (b)
+   {
+     a = new(a)s1{1};
+   }
+   else
+   {
+     a = new(a)s1{0};
+   }
+ }
+ 
+ /*
+   The above should be optimized in phiopt1 to:
+   *a = {CLOBBER(bob)};
+   a->t = b;
+  */
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "factoring out stores" 1 "phiopt1" } } */
+ /* { dg-final { scan-tree-dump-times "factoring out clobber" 1 "phiopt1" } } */
+ /* { dg-final { scan-tree-dump-times " converted to straightline code" 1 "phiopt1" } } */
+ /* { dg-final { scan-tree-dump-not "if "  "phiopt1" } } */
+ /* { dg-final { scan-tree-dump-not "if "  "optimized" } } */
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/autopar/runtime-auto.c gcc-16-20251019/gcc/testsuite/gcc.dg/autopar/runtime-auto.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/autopar/runtime-auto.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/autopar/runtime-auto.c	Sun Oct 19 22:32:28 2025
***************
*** 0 ****
--- 1,53 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -ftree-parallelize-loops -fdump-tree-parloops2-details" } */
+ 
+ void abort (void);
+ 
+ #define N 1000
+ 
+ int a[N], b[N], c[N];
+ 
+ void
+ test_parallel_loop (void)
+ {
+   int i;
+ 
+   /* This loop should be auto-parallelized when -ftree-parallelize-loops
+      (without =number) is used for runtime thread detection via OMP_NUM_THREADS.  */
+   for (i = 0; i < N; i++)
+     a[i] = b[i] + c[i];
+ }
+ 
+ int
+ main (void)
+ {
+   int i;
+ 
+   for (i = 0; i < N; i++)
+     {
+       b[i] = i;
+       c[i] = i * 2;
+     }
+ 
+   test_parallel_loop ();
+ 
+   for (i = 0; i < N; i++)
+     {
+       if (a[i] != b[i] + c[i])
+ 	abort ();
+     }
+ 
+   return 0;
+ }
+ 
+ /* Check that the loop is parallelized with runtime thread detection.  */
+ /* { dg-final { scan-tree-dump "parallelizing" "parloops2" } } */
+ 
+ /* Check that "#pragma omp parallel" is generated.  */
+ /* { dg-final { scan-tree-dump "pragma omp parallel" "parloops2" } } */
+ 
+ /* Check that instead of generating a num_threads(x) clause, the compiler calls
+    "__builtin_omp_get_num_threads" that will set the number of threads at
+    program execution time.  */
+ /* { dg-final { scan-tree-dump "__builtin_omp_get_num_threads" "parloops2" } } */
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/cpp/cpp.exp gcc-16-20251019/gcc/testsuite/gcc.dg/cpp/cpp.exp
*** gcc-16-20251012/gcc/testsuite/gcc.dg/cpp/cpp.exp	Sun Oct 12 22:32:53 2025
--- gcc-16-20251019/gcc/testsuite/gcc.dg/cpp/cpp.exp	Sun Oct 19 22:32:28 2025
***************
*** 4,15 ****
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation; either version 3 of the License, or
  # (at your option) any later version.
! # 
  # This program is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
! # 
  # You should have received a copy of the GNU General Public License
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
--- 4,15 ----
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation; either version 3 of the License, or
  # (at your option) any later version.
! #
  # This program is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
! #
  # You should have received a copy of the GNU General Public License
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
*************** if ![info exists DEFAULT_CFLAGS] then {
*** 36,46 ****
  dg-init
  
  # Main loop.
! dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,S} ]] \
  	"" $DEFAULT_CFLAGS
  
  # C/C++ common tests.
! dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cpp/*.{c,S} ]] \
  	" -Wc++-compat " ""
  
  
--- 36,46 ----
  dg-init
  
  # Main loop.
! dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,S,i} ]] \
  	"" $DEFAULT_CFLAGS
  
  # C/C++ common tests.
! dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cpp/*.{c,S,i} ]] \
  	" -Wc++-compat " ""
  
  
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/cpp/escape-3.i gcc-16-20251019/gcc/testsuite/gcc.dg/cpp/escape-3.i
*** gcc-16-20251012/gcc/testsuite/gcc.dg/cpp/escape-3.i	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/cpp/escape-3.i	Sun Oct 19 22:32:28 2025
***************
*** 0 ****
--- 1,16 ----
+ # 0 "escape-3.c"
+ # 0 "/some\\directory//"
+ # 0 "<built-in>"
+ # 0 "<command-line>"
+ # 1 "escape-3.c"
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-g1" } */
+ 
+ int foo (int a, int b)
+ {
+    return a + b;
+ }
+ 
+ /* Test for "/some\\directory" instead of "/some\\\\directory" */
+ /* { dg-final { scan-assembler { "/some\\\\directory" } } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/cpp/pr36674.i gcc-16-20251019/gcc/testsuite/gcc.dg/cpp/pr36674.i
*** gcc-16-20251012/gcc/testsuite/gcc.dg/cpp/pr36674.i	Sun Oct 12 22:32:53 2025
--- gcc-16-20251019/gcc/testsuite/gcc.dg/cpp/pr36674.i	Sun Oct 19 22:32:28 2025
***************
*** 1,6 ****
  /* PR cpp/36674  #include location is offset by one row in errors from preprocessed files */
  /* { dg-do compile } */
! /* { dg-options "-fshow-column" } */
  # 1 "gcc/testsuite/gcc.dg/pr36674.c"
  # 1 "<built-in>"
  # 1 "<command-line>"
--- 1,6 ----
  /* PR cpp/36674  #include location is offset by one row in errors from preprocessed files */
  /* { dg-do compile } */
! /* { dg-options "-fshow-column -Wno-implicit-int" } */
  # 1 "gcc/testsuite/gcc.dg/pr36674.c"
  # 1 "<built-in>"
  # 1 "<command-line>"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec1.c gcc-16-20251019/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec1.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec1.c	Sun Oct 19 22:32:28 2025
***************
*** 0 ****
--- 1,19 ----
+ /* Test that GOMP_task is special cased when cpyfn is NULL.  */
+ 
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fopenmp -flto -std=gnu99 -fdump-ipa-cp-details" } */
+ /* { dg-require-effective-target fopenmp } */
+ /* { dg-require-effective-target lto } */
+ 
+ void test(int c) {
+   for (int i = 0; i < c; i++)
+     if (!__builtin_constant_p(c))
+       __builtin_abort();
+ }
+ int main() {
+ #pragma omp task
+   test(7);
+   return 0;
+ }
+ 
+ /* { dg-final { scan-wpa-ipa-dump "Creating a specialized node of main._omp_fn" "cp" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec2.c gcc-16-20251019/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/ipa/ipcp-cb-spec2.c	Sun Oct 19 22:32:28 2025
***************
*** 0 ****
--- 1,21 ----
+ /* Check that GOMP_task doesn't produce callback edges when cpyfn is not
+    NULL.  */
+ 
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fopenmp -flto -std=gnu99 -fdump-ipa-cp-details" } */
+ /* { dg-require-effective-target fopenmp } */
+ /* { dg-require-effective-target lto } */
+ 
+ void test(int *a) {
+   for (int i = 0; i < 100; i++) {
+     a[i] = i;
+   }
+ }
+ int main() {
+   int a[100];
+   __builtin_memset (a, 0, sizeof (a));
+   #pragma omp task
+   test (a);
+ }
+ 
+ /* { dg-final { scan-ipa-dump-not "Created callback edge" "cp" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/ipa/ipcp-cb1.c gcc-16-20251019/gcc/testsuite/gcc.dg/ipa/ipcp-cb1.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/ipa/ipcp-cb1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/ipa/ipcp-cb1.c	Sun Oct 19 22:32:28 2025
***************
*** 0 ****
--- 1,25 ----
+ /* Test that we can propagate constants into outlined OpenMP kernels.
+    This tests the underlying callback attribute and its related edges.  */
+ 
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fopenmp -flto -std=gnu99 -fdump-ipa-cp-details" } */
+ /* { dg-require-effective-target fopenmp } */
+ /* { dg-require-effective-target lto } */
+ 
+ int a[100];
+ void test(int c) {
+ #pragma omp parallel for
+   for (int i = 0; i < c; i++) {
+     if (!__builtin_constant_p(c)) {
+       __builtin_abort();
+     }
+     a[i] = i;
+   }
+ }
+ int main() {
+   test(100);
+   return a[5] - 5;
+ }
+ 
+ /* { dg-final { scan-wpa-ipa-dump "Creating a specialized node of test._omp_fn" "cp" } } */
+ /* { dg-final { scan-wpa-ipa-dump "Aggregate replacements: 0\\\[0]=100\\(by_ref\\)" "cp" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc gcc-16-20251019/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc
*** gcc-16-20251012/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc	Sun Oct 12 22:32:54 2025
--- gcc-16-20251019/gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_graphs.cc	Sun Oct 19 22:32:29 2025
*************** report_diag_with_graphs (location_t loc)
*** 210,218 ****
        g->set_description (desc);
        auto a = std::make_unique<diagnostic_node> (*g, "a");
        auto b = std::make_unique<diagnostic_node> (*g, "b");
! #define KEY_PREFIX "/placeholder-prefix/"
!       b->set_attr (KEY_PREFIX, "color", "red");
! #undef KEY_PREFIX
        auto c = std::make_unique<diagnostic_node> (*g, "c");
        c->set_label ("I am a node label");
  
--- 210,217 ----
        g->set_description (desc);
        auto a = std::make_unique<diagnostic_node> (*g, "a");
        auto b = std::make_unique<diagnostic_node> (*g, "b");
!       const json::string_property color ("/placeholder-prefix/color");
!       b->set_property (color, "red");
        auto c = std::make_unique<diagnostic_node> (*g, "c");
        c->set_label ("I am a node label");
  
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/pr121468.c gcc-16-20251019/gcc/testsuite/gcc.dg/pr121468.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/pr121468.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/pr121468.c	Sun Oct 19 22:32:29 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os" } */
+ int e, f, n;
+ static int a () { return e; }
+ void b () { while (a()); }
+ static int d () { return e; }
+ static void g (int h) {
+   if (e)
+   c:
+     if (d())
+       goto i;
+   do {
+     if (f)
+       goto c;
+     goto k;
+   i:
+     h = 2147483647;
+   k:
+     e = 2147483646;
+     e = 6 + e;
+     do {
+       b ();
+     } while (1784828957 / f + e + (808 + h) > 0);
+   } while (1 % h);
+ }
+ void m () { g (-2); }
+ int main () {
+   if (n)
+     g (-1);
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/pr122200.c gcc-16-20251019/gcc/testsuite/gcc.dg/pr122200.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/pr122200.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/pr122200.c	Sun Oct 19 22:32:29 2025
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3" } */
+ /* { dg-additional-options "-mavx" { target { x86_64-*-* i?86-*-* } } } */
+ 
+ 
+ int a, b;
+ 
+ void f(float g[][5]) {
+   int c;
+ 
+   for (c = 0; c != a; c++)
+     g[1][c] = c;
+ 
+   for (int d; d; d++)
+     for (int e = 1; e != b; e++) {
+       for (c = 0; c != a; c++) {
+         g[0][1] = 1;
+ 
+         if (g[1][c])
+           g[1][c] = 1;
+       }
+     }
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/torture/int-bwise-opt-1.c gcc-16-20251019/gcc/testsuite/gcc.dg/torture/int-bwise-opt-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/torture/int-bwise-opt-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/torture/int-bwise-opt-1.c	Sun Oct 19 22:32:29 2025
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ 
+ /* PR tree-optimization/122296 */
+ 
+ typedef unsigned type1;
+ typedef unsigned __attribute__((vector_size(sizeof(unsigned) ))) type2;
+ type1 g(type1 a, type1 b)
+ {
+   type1 c = a == b;
+   type1 d = (a|b) == 0;
+   return c & d;
+ }
+ 
+ type1 f(type1 a, type1 b)
+ {
+   type1 c = a != b;
+   type1 d = (a|b) != 0;
+   return c | d;
+ }
+ type2 g2(type2 a, type2 b)
+ {
+   type2 c = a == b;
+   type2 d = (a|b) == 0;
+   return c & d;
+ }
+ 
+ type2 f2(type2 a, type2 b)
+ {
+   type2 c = a != b;
+   type2 d = (a|b) != 0;
+   return c | d;
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/torture/pr122012.c gcc-16-20251019/gcc/testsuite/gcc.dg/torture/pr122012.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/torture/pr122012.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/torture/pr122012.c	Sun Oct 19 22:32:29 2025
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ #include <stdlib.h>
+ 
+ void foo();
+ 
+ void test(size_t step) {
+   char *buf = malloc(64);
+   char *p = buf;
+   size_t i;
+ 
+   for(i = 0; i < 64; ++i) {
+     p += 4;
+     if (__builtin_object_size (p, 2) != 0)
+       foo();
+     p += step;
+   }
+   free(buf);
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/torture/pr122016.c gcc-16-20251019/gcc/testsuite/gcc.dg/torture/pr122016.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/torture/pr122016.c	Sun Oct 12 22:32:54 2025
--- gcc-16-20251019/gcc/testsuite/gcc.dg/torture/pr122016.c	Sun Oct 19 22:32:29 2025
***************
*** 3,13 ****
  
  int merge_parse_args_argc;
  char merge_parse_args_argv_0;
! int strncmp(char *, char *, long);
! void _setjmp();
  typedef enum { FALSE, TRUE } boool;
! void directory_exists();
! void merge_parse_args() {
    int i;
    boool help_found = FALSE;
    while (i < merge_parse_args_argc && !help_found) {
--- 3,13 ----
  
  int merge_parse_args_argc;
  char merge_parse_args_argv_0;
! int strncmp(const char *, const char *, __SIZE_TYPE__);
! void _setjmp(void);
  typedef enum { FALSE, TRUE } boool;
! void directory_exists(void);
! void merge_parse_args(void) {
    int i;
    boool help_found = FALSE;
    while (i < merge_parse_args_argc && !help_found) {
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/torture/pr122212.c gcc-16-20251019/gcc/testsuite/gcc.dg/torture/pr122212.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/torture/pr122212.c	Sun Oct 12 22:32:54 2025
--- gcc-16-20251019/gcc/testsuite/gcc.dg/torture/pr122212.c	Sun Oct 19 22:32:29 2025
*************** int main()
*** 22,28 ****
  {
    if (ZSTD_countLeadingZeros32_fallback (0) != 31)
      __builtin_abort ();
!   if (ZSTD_countLeadingZeros32_fallback (-1U) != 0)
      __builtin_abort ();
    return 0;
  }
--- 22,28 ----
  {
    if (ZSTD_countLeadingZeros32_fallback (0) != 31)
      __builtin_abort ();
!   if (ZSTD_countLeadingZeros32_fallback (0xffffffff) != 0)
      __builtin_abort ();
    return 0;
  }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/tree-ssa/int-bwise-opt-vect01.c gcc-16-20251019/gcc/testsuite/gcc.dg/tree-ssa/int-bwise-opt-vect01.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/tree-ssa/int-bwise-opt-vect01.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/tree-ssa/int-bwise-opt-vect01.c	Sun Oct 19 22:32:29 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-forwprop1 -fdump-tree-optimized" } */
+ 
+ /* PR tree-optimization/122296 */
+ 
+ typedef unsigned type1 __attribute__((vector_size(sizeof(unsigned))));
+ 
+ type1 f(type1 a, type1 b)
+ {
+   type1 c = a == b;
+   type1 d = (a|b) != 0;
+   return c | d;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "VEC_COND_EXPR " "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "VEC_COND_EXPR " "forwprop1" } } */
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/tree-ssa/vla-1.c gcc-16-20251019/gcc/testsuite/gcc.dg/tree-ssa/vla-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/tree-ssa/vla-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/tree-ssa/vla-1.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized -fdump-tree-cddce1-details" } */
+ /* PR tree-optimization/122037 */
+ 
+ void bar1 (char *, int) __attribute__((noreturn));
+ void foo1 (int size)
+ {
+   char temp[size];
+   temp[size-1] = '\0';
+   bar1 (temp, size);
+ }
+ 
+ /* The call to __builtin_stack_save should have been removed. */
+ /* { dg-final { scan-tree-dump "Deleting : __builtin_stack_save" "cddce1" } } */
+ /* { dg-final { scan-tree-dump-not "__builtin_stack_save " "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__CEIL_DIV, 2, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int *a = (int*)&arr;
+   init_arr(a, N);
+   div(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = cl_div (i - N/2, 2);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ 
+ TEST_FN(__CEIL_DIV, 8, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int *a = (int*)&arr;
+   init_arr(a, N);
+   div(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = cl_div (i - N/2, 8);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-div.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ 
+ TEST_FN(__CEIL_DIV, 19, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int *a = (int*)&arr;
+   init_arr(a, N);
+   div(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = cl_div (i - N/2, 19);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ 
+ TEST_FN(__CEIL_MOD, 2, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int *a = (int*)&arr;
+   init_arr(a, N);
+   div(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = cl_mod (i - N/2, 2);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ 
+ TEST_FN(__CEIL_MOD, 8, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int *a = (unsigned int*)&arr;
+   init_arr(a, N);
+   div(a);
+   for (int i=0; i<N; i++)
+   {
+     unsigned int expected = cl_mod (i - N/2, 8);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-mod.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ 
+ TEST_FN(__CEIL_MOD, 19, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int *a = (int*)&arr;
+   init_arr(a, N);
+   div(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = cl_mod (i - N/2, 19);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN_UNSIGNED(__CEIL_DIV, 2u, udiv)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int *ua = (unsigned int*)&uarr;
+   init_uarr(ua, N);
+   udiv(ua);
+   for (int i=0; i<N; i++)
+   {
+     unsigned int expected = cl_udiv (0xf0000000 + i, 2);
+     if (expected != ua[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN_UNSIGNED(__CEIL_DIV, 8u, udiv)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int *ua = (unsigned int*)&uarr;
+   init_uarr(ua, N);
+   udiv(ua);
+   for (int i=0; i<N; i++)
+   {
+     unsigned int expected = cl_udiv (0xf0000000 + i, 8);
+     if (expected != ua[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-udiv.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN_UNSIGNED(__CEIL_DIV, 19u, udiv)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int *ua = (unsigned int*)&uarr;
+   init_uarr(ua, N);
+   udiv(ua);
+   for (int i=0; i<N; i++)
+   {
+     unsigned int expected = cl_udiv (0xf0000000 + i, 19);
+     if (expected != ua[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ 
+ TEST_FN_UNSIGNED (__CEIL_MOD, 2u, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int *a = (unsigned int*)&uarr;
+   init_uarr(a, N);
+   mod(a);
+   for (int i=0; i<N; i++)
+   {
+     unsigned int expected = cl_umod (0xf0000000 + i, 2);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ 
+ TEST_FN_UNSIGNED (__CEIL_MOD, 2u, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int *a = (unsigned int*)&uarr;
+   init_uarr(a, N);
+   mod(a);
+   for (int i=0; i<N; i++)
+   {
+     unsigned int expected = cl_umod (0xf0000000 + i, 2);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-ceil-umod.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ 
+ TEST_FN_UNSIGNED (__CEIL_MOD, 19u, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int *a = (unsigned int*)&uarr;
+   init_uarr(a, N);
+   mod(a);
+   for (int i=0; i<N; i++)
+   {
+     unsigned int expected = cl_umod (0xf0000000 + i, 19);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__FLOOR_DIV, 2, div_2)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   div_2(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = fl_div (i - N/2, 2);
+     if (expected != a[i])
+       abort ();
+   }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-div-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__FLOOR_DIV, 8, div_2)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   div_2(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = fl_div (i - N/2, 8);
+     if (expected != a[i])
+       abort ();
+   }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-div.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__FLOOR_DIV, 19, div_2)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   div_2(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = fl_div (i - N/2, 19);
+     if (expected != a[i])
+       abort ();
+   }
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__FLOOR_MOD, 2, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   mod(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = fl_mod (i - N/2, 2);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__FLOOR_MOD, 8, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   mod(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = fl_mod (i - N/2, 8);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-floor-mod.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__FLOOR_MOD, 19, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   mod(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = fl_mod (i - N/2, 19);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-div-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__ROUND_DIV, 2, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   div(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = rd_div (i - N/2, 2);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-div-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__ROUND_DIV, 8, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   div(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = rd_div (i - N/2, 8);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-div.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-div.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-div.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-div.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__ROUND_DIV, 19, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   div(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = rd_div (i - N/2, 19);
+     if (expected != a[i])
+       abort();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__ROUND_MOD, 2, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   mod(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = rd_mod (i - N/2, 2);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-mod-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__ROUND_MOD, 8, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   mod(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = rd_mod (i - N/2, 8);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-mod.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN(__ROUND_MOD, 19, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   int * a = (int*)&arr;
+   init_arr(a, N);
+   mod(a);
+   for (int i=0; i<N; i++)
+   {
+     int expected = rd_mod (i - N/2, 19);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN_UNSIGNED(__ROUND_DIV, 2u, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int * a = (unsigned int*)&uarr;
+   init_uarr(a, N);
+   div(a);
+   for (unsigned int i=0; i<N; i++)
+   {
+     unsigned int expected = rd_udiv (0xf0000000 + i, 2);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN_UNSIGNED(__ROUND_DIV, 8u, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int * a = (unsigned int*)&uarr;
+   init_uarr(a, N);
+   div(a);
+   for (unsigned int i=0; i<N; i++)
+   {
+     unsigned int expected = rd_udiv (0xf0000000 + i, 8);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-udiv.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN_UNSIGNED(__ROUND_DIV, 19u, div)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int * a = (unsigned int*)&uarr;
+   init_uarr(a, N);
+   div(a);
+   for (unsigned int i=0; i<N; i++)
+   {
+     unsigned int expected = rd_udiv (0xf0000000 + i, 19);
+     if (expected != a[i])
+       abort ();
+ 
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN_UNSIGNED(__ROUND_MOD, 2u, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int * a = (unsigned int*)&uarr;
+   init_uarr(a, N);
+   mod(a);
+   for (unsigned int i=0; i<N; i++)
+   {
+     unsigned int expected = rd_umod (0xf0000000 + i, 2);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-umod-pow2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN_UNSIGNED(__ROUND_MOD, 8u, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int * a = (unsigned int*)&uarr;
+   init_uarr(a, N);
+   mod(a);
+   for (unsigned int i=0; i<N; i++)
+   {
+     unsigned int expected = rd_umod (0xf0000000 + i, 8);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116-round-umod.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
+ /* { dg-require-effective-target vect_int} */
+ /* { dg-require-effective-target vect_condition} */
+ /* { dg-require-effective-target vect_shift} */
+ 
+ 
+ 
+ #include "pr104116.h"
+ #include "tree-vect.h"
+ 
+ TEST_FN_UNSIGNED(__ROUND_MOD, 19u, mod)
+ 
+ int main (void)
+ {
+   check_vect ();
+   unsigned int * a = (unsigned int*)&uarr;
+   init_uarr(a, N);
+   mod(a);
+   for (unsigned int i=0; i<N; i++)
+   {
+     unsigned int expected = rd_umod (0xf0000000 + i, 19);
+     if (expected != a[i])
+       abort ();
+   }
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
+ 
+ 
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116.h gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116.h
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr104116.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr104116.h	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,201 ----
+ #define TEST_FN(OP, CONST, NAME) \
+ __attribute__((noinline)) \
+ void __GIMPLE (ssa,guessed_local(10737416)) \
+ NAME (int * a) \
+ { \
+   int i; \
+   long unsigned int _1; \
+   long unsigned int _2; \
+   int * _3; \
+   int _4; \
+   int _5; \
+   unsigned int _12; \
+   unsigned int _13; \
+  \
+   __BB(2,guessed_local(10737416)): \
+   goto __BB3(precise(134217728)); \
+  \
+   __BB(3,loop_header(1),guessed_local(1063004408)): \
+   i_14 = __PHI (__BB5: i_11, __BB2: 0); \
+   _13 = __PHI (__BB5: _12, __BB2: 1024u); \
+   _1 = (long unsigned int) i_14; \
+   _2 = _1 * 4ul; \
+   _3 = a_9(D) + _2; \
+   _4 = __MEM <int> (_3); \
+   _5 = _4 OP CONST; \
+   __MEM <int> (_3) = _5; \
+   i_11 = i_14 + 1; \
+   _12 = _13 - 1u; \
+   if (_12 != 0u) \
+     goto __BB5(guessed(132861994)); \
+   else \
+     goto __BB4(guessed(1355734)); \
+  \
+   __BB(5,guessed_local(1052266995)): \
+   goto __BB3(precise(134217728)); \
+  \
+   __BB(4,guessed_local(10737416)): \
+   return; \
+  \
+ } \
+ 
+ #define TEST_FN_UNSIGNED(OP, CONST, NAME) \
+ __attribute__((noinline)) \
+ void __GIMPLE (ssa,guessed_local(10737416)) \
+ NAME (unsigned int * a) \
+ { \
+   int i; \
+   long unsigned int _1; \
+   long unsigned int _2; \
+   unsigned int * _3; \
+   unsigned int _4; \
+   unsigned int _5; \
+   unsigned int _12; \
+   unsigned int _13; \
+  \
+   __BB(2,guessed_local(10737416)): \
+   goto __BB3(precise(134217728)); \
+  \
+   __BB(3,loop_header(1),guessed_local(1063004408)): \
+   i_14 = __PHI (__BB5: i_11, __BB2: 0); \
+   _13 = __PHI (__BB5: _12, __BB2: 1024u); \
+   _1 = (long unsigned int) i_14; \
+   _2 = _1 * 4ul; \
+   _3 = a_9(D) + _2; \
+   _4 = __MEM <unsigned int> (_3); \
+   _5 = _4 OP CONST; \
+   __MEM <unsigned int> (_3) = _5; \
+   i_11 = i_14 + 1; \
+   _12 = _13 - 1u; \
+   if (_12 != 0u) \
+     goto __BB5(guessed(132861994)); \
+   else \
+     goto __BB4(guessed(1355734)); \
+  \
+   __BB(5,guessed_local(1052266995)): \
+   goto __BB3(precise(134217728)); \
+  \
+   __BB(4,guessed_local(10737416)): \
+   return; \
+ } \
+ 
+ 
+ #define N 1024
+ int arr[N];
+ __attribute__((optimize("O0")))
+ void init_arr (int *a, int n)
+ {
+ 	for (int i=0; i<n; i++)
+ 		a[i] = i - n/2;
+ }
+ 
+ unsigned int uarr[N];
+ __attribute__((optimize("O0")))
+ void init_uarr (unsigned int *a, int n)
+ {
+   for (unsigned int i=0; i<n; i++)
+     a[i] = 0xf0000000 + i;
+ }
+ 
+ int cl_div (int x, int y)
+ {
+   int r = x % y;
+   int q = x / y;
+   if (r != 0 && (x ^ y) >= 0)
+     q++;
+   return q;
+ }
+ 
+ unsigned int cl_udiv (unsigned int x, unsigned int y)
+ {
+   unsigned int r = x % y;
+   unsigned int q = x / y;
+   if (r > 0)
+       q++;
+   return q;
+ }
+ 
+ int cl_mod (int x, int y)
+ {
+   int r = x % y;
+   if (r != 0 && (x ^ y) >= 0)
+     r -= y;
+   return r;
+ }
+ 
+ unsigned int cl_umod (unsigned int x, unsigned int y)
+ {
+   unsigned int r = x % y;
+   unsigned int q = x / y;
+   if (r > 0)
+       r-=y;
+   return r;
+ }
+ 
+ int fl_div (int x, int y)
+ {
+   int r = x % y;
+   int q = x / y;
+   if (r != 0 && (x ^ y) < 0)
+     q--;
+   return q;
+ }
+ 
+ 
+ int fl_mod (int x, int y)
+ {
+   int r = x % y;
+   if (r != 0 && (x ^ y) < 0)
+     r += y;
+   return r;
+ }
+ 
+ int abs(int x)
+ {
+   if (x < 0) return -x;
+   return x;
+ }
+ 
+ int rd_mod (int x, int y)
+ {
+   int r = x % y;
+   if (abs(r) > abs((y-1) >> 1))
+   {
+     if ((x ^ y) < 0)
+       r += y;
+     else
+       r -= y;
+   }
+   return r;
+ }
+ 
+ int rd_div (int x, int y)
+ {
+   int r = x % y;
+   int q = x / y;
+   if (abs(r) > abs((y-1) >> 1))
+   {
+     if ((x ^ y) < 0)
+       q--;
+     else
+       q++;
+   }
+   return q;
+ }
+ 
+ unsigned int rd_umod (unsigned int x, unsigned int y)
+ {
+   unsigned int r = x % y;
+   if (r > ((y-1) >> 1))
+       r -= y;
+   return r;
+ }
+ 
+ unsigned int rd_udiv (unsigned int x, unsigned int y)
+ {
+   unsigned int r = x % y;
+   unsigned int q = x / y;
+   if (r > ((y-1) >> 1))
+       q++;
+   return q;
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr120687-1.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr120687-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr120687-1.c	Sun Oct 12 22:32:55 2025
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr120687-1.c	Sun Oct 19 22:32:30 2025
*************** frd (unsigned *p, unsigned *lastone)
*** 11,16 ****
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "reduction: detected reduction chain" "vect" } } */
  /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */
  /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */
--- 11,16 ----
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "Starting SLP discovery of reduction chain" "vect" } } */
  /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */
  /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr120687-2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr120687-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr120687-2.c	Sun Oct 12 22:32:55 2025
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr120687-2.c	Sun Oct 19 22:32:30 2025
*************** frd (float *p, float *lastone)
*** 12,17 ****
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "reduction: detected reduction chain" "vect" } } */
  /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */
  /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */
--- 12,17 ----
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "Starting SLP discovery of reduction chain" "vect" } } */
  /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */
  /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr120687-3.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr120687-3.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr120687-3.c	Sun Oct 12 22:32:55 2025
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr120687-3.c	Sun Oct 19 22:32:30 2025
*************** frd (float *p, float *lastone)
*** 11,16 ****
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "reduction: detected reduction chain" "vect" } } */
  /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */
  /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */
--- 11,16 ----
    return sum;
  }
  
! /* { dg-final { scan-tree-dump "Starting SLP discovery of reduction chain" "vect" } } */
  /* { dg-final { scan-tree-dump-not "SLP discovery of reduction chain failed" "vect" } } */
  /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr121949_1.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr121949_1.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr121949_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr121949_1.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,45 ----
+ #ifndef TYPE
+ #define TYPE short
+ #define MAX  16
+ #define IV_TYPE char
+ #endif
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__((noipa))
+ void f(TYPE* acc)
+ {
+     for (IV_TYPE row = 0; row < MAX; ++row)
+       acc[row] = acc[row] << row;
+ }
+ 
+ __attribute__((noipa))
+ void g(TYPE* acc)
+ {
+ #pragma GCC novector
+     for (IV_TYPE row = 0; row < MAX; ++row)
+       acc[row] = acc[row] << row;
+ }
+ 
+ int main ()
+ {
+ 
+    check_vect ();
+ 
+    TYPE acc1[MAX] = {};
+    TYPE acc2[MAX] = {};
+ #pragma GCC novector
+    for (int i = 0; i < MAX; i++)
+      acc1[i] = acc2[i] = i;
+ 
+   f (acc1);
+   f (acc2);
+ 
+ #pragma GCC novector
+    for (int i = 0; i < MAX; i++)
+     if (acc1[i] != acc2[i])
+         __builtin_abort ();
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_var_shift && vect_int } } } }  */
+ /* { dg-final { scan-tree-dump "vect_recog_over_widening_pattern: detected" "vect" { target { vect_var_shift && vect_int } } } }  */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr121949_2.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr121949_2.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr121949_2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr121949_2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,45 ----
+ #ifndef TYPE
+ #define TYPE int
+ #define MAX  32
+ #define IV_TYPE short
+ #endif
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__((noipa))
+ void f(TYPE* acc)
+ {
+     for (IV_TYPE row = 0; row < MAX; ++row)
+       acc[row] = acc[row] << row;
+ }
+ 
+ __attribute__((noipa))
+ void g(TYPE* acc)
+ {
+ #pragma GCC novector
+     for (IV_TYPE row = 0; row < MAX; ++row)
+       acc[row] = acc[row] << row;
+ }
+ 
+ int main ()
+ {
+ 
+    check_vect ();
+ 
+    TYPE acc1[MAX] = {};
+    TYPE acc2[MAX] = {};
+ #pragma GCC novector
+    for (int i = 0; i < MAX; i++)
+      acc1[i] = acc2[i] = i;
+ 
+   f (acc1);
+   f (acc2);
+ 
+ #pragma GCC novector
+    for (int i = 0; i < MAX; i++)
+     if (acc1[i] != acc2[i])
+         __builtin_abort ();
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_var_shift && vect_int } } } }  */
+ /* { dg-final { scan-tree-dump-not "vect_recog_over_widening_pattern: detected" "vect" { target { vect_var_shift && vect_int } } } }  */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr121949_3.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr121949_3.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/pr121949_3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/pr121949_3.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,45 ----
+ #ifndef TYPE
+ #define TYPE long long
+ #define MAX  64
+ #define IV_TYPE int
+ #endif
+ 
+ #include "tree-vect.h"
+ 
+ __attribute__((noipa))
+ void f(TYPE* acc)
+ {
+     for (IV_TYPE row = 0; row < MAX; ++row)
+       acc[row] = acc[row] << row;
+ }
+ 
+ __attribute__((noipa))
+ void g(TYPE* acc)
+ {
+ #pragma GCC novector
+     for (IV_TYPE row = 0; row < MAX; ++row)
+       acc[row] = acc[row] << row;
+ }
+ 
+ int main ()
+ {
+ 
+    check_vect ();
+ 
+    TYPE acc1[MAX] = {};
+    TYPE acc2[MAX] = {};
+ #pragma GCC novector
+    for (int i = 0; i < MAX; i++)
+      acc1[i] = acc2[i] = i;
+ 
+   f (acc1);
+   f (acc2);
+ 
+ #pragma GCC novector
+    for (int i = 0; i < MAX; i++)
+     if (acc1[i] != acc2[i])
+         __builtin_abort ();
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_var_shift && vect_int } } } }  */
+ /* { dg-final { scan-tree-dump "vect_recog_vector_vector_shift_pattern: detected" "vect" { target { vect_var_shift && vect_int } } } }  */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/vect-pr122301.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/vect-pr122301.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/vect-pr122301.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/vect-pr122301.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ 
+ int get_prev_frame_segid(unsigned char *p, int n)
+ {
+   int tem;
+   unsigned seg_id = 8;
+   for (int x = 0; x < n; x++)
+     {
+       int a = seg_id;
+       tem = a < p[x] ? a : p[x];
+       seg_id = tem;
+     }
+   return tem;
+ }
+ 
+ /* { dg-final { scan-tree-dump "optimized: loop vectorized" "vect" { target { vect_int && { ! vect_no_int_min_max } } } } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.dg/vect/vect-pr122308.c gcc-16-20251019/gcc/testsuite/gcc.dg/vect/vect-pr122308.c
*** gcc-16-20251012/gcc/testsuite/gcc.dg/vect/vect-pr122308.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.dg/vect/vect-pr122308.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O3 -fdump-tree-unrolljam-optimized" } */
+ 
+ int a[1024];
+ int b[2048];
+ int c[2048];
+ 
+ void foo(int n)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       int index = c[i];
+ 
+       for (int j = 0; j < 1024; ++j)
+         a[j] += b[index + j];
+     }
+ }
+ 
+ /* { dg-final { scan-tree-dump "optimized: applying unroll and jam" "unrolljam" } } */
+ /* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 2 "vect" { target vect_int } } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c	Sun Oct 12 22:32:57 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/acle/rwsr-armv8p9.c	Sun Oct 19 22:32:30 2025
*************** readwrite_armv8p9a_sysregs (long long in
*** 72,78 ****
    a = __arm_rsr64 ("pmicfiltr_el0"); /* { { dg-final { scan-assembler "mrs\tx0, s3_3_c9_c6_0" } } */
    a = __arm_rsr64 ("pmicntr_el0"); /* { { dg-final { scan-assembler "mrs\tx0, s3_3_c9_c4_0" } } */
    a = __arm_rsr64 ("pmicntsvr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s2_0_c14_c12_0" } } */
!   a = __arm_rsr64 ("pmsdsfr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_4_c9_c10_4" } } */
    a = __arm_rsr64 ("pmsscr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_0_c9_c13_3" } } */
    a = __arm_rsr64 ("pmuacr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_0_c9_c14_4" } } */
    a = __arm_rsr64 ("por_el0"); /* { { dg-final { scan-assembler "mrs\tx0, s3_3_c10_c2_4" } } */
--- 72,78 ----
    a = __arm_rsr64 ("pmicfiltr_el0"); /* { { dg-final { scan-assembler "mrs\tx0, s3_3_c9_c6_0" } } */
    a = __arm_rsr64 ("pmicntr_el0"); /* { { dg-final { scan-assembler "mrs\tx0, s3_3_c9_c4_0" } } */
    a = __arm_rsr64 ("pmicntsvr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s2_0_c14_c12_0" } } */
!   a = __arm_rsr64 ("pmsdsfr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_0_c9_c10_4" } } */
    a = __arm_rsr64 ("pmsscr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_0_c9_c13_3" } } */
    a = __arm_rsr64 ("pmuacr_el1"); /* { { dg-final { scan-assembler "mrs\tx0, s3_0_c9_c14_4" } } */
    a = __arm_rsr64 ("por_el0"); /* { { dg-final { scan-assembler "mrs\tx0, s3_3_c10_c2_4" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/pr122069_1.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/pr122069_1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/pr122069_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/pr122069_1.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,46 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a -mautovec-preference=asimd-only --param vect-epilogues-nomask=0 -fno-schedule-insns -fno-reorder-blocks -fno-schedule-insns2 -fdump-tree-vect-details" }*/
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ /*
+ ** foo_int:
+ ** 	...
+ ** 	sub	v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b
+ ** 	zip1	v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b
+ ** 	zip2	v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b
+ ** 	uaddw	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4h
+ ** 	uaddw2	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.8h
+ ** 	uaddw	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4h
+ ** 	uaddw2	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.8h
+ ** 	...
+ */
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ /*
+ ** foo2_int:
+ ** 	...
+ ** 	add	v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h
+ ** 	uaddw	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4h
+ ** 	uaddw2	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.8h
+ ** 	...
+ */
+ int foo2_int(unsigned short *x, unsigned short * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+     {
+       x[i] = x[i] + y[i];
+       sum += x[i];
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/pr122069_2.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/pr122069_2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/pr122069_2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/pr122069_2.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,80 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -march=armv8-a -mautovec-preference=asimd-only -fdump-tree-vect-details" }*/
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ __attribute__((noipa))
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int(unsigned short *x, unsigned short * restrict y,
+ 	     unsigned short * restrict z) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo_int2(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int2(unsigned short *x, unsigned short * restrict y,
+ 	      unsigned short * restrict z) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ int main ()
+ {
+   unsigned short a[100];
+   unsigned short b[100];
+   unsigned short r1[100];
+   unsigned short r2[100];
+   unsigned char c[100];
+   unsigned char d[100];
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       a[i] = c[i] = i;
+       b[i] = d[i] = 100 - i;
+     }
+ 
+   if (foo_int (c, d) != foo_int2 (c, d))
+     __builtin_abort();
+ 
+ 
+   if (foo2_int (a, b, r1) != foo2_int2 (a, b, r2))
+     __builtin_abort();
+ 
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     if (r1[i] != r2[i])
+       __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/pr122069_3.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/pr122069_3.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/pr122069_3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/pr122069_3.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8.2-a+dotprod -mautovec-preference=asimd-only --param vect-epilogues-nomask=0 -fno-schedule-insns -fno-reorder-blocks -fno-schedule-insns2 -fdump-tree-vect-details" }*/
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ /*
+ ** foo_int:
+ ** 	...
+ ** 	sub	v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b
+ ** 	udot	v[0-9]+.4s, v[0-9]+.16b, v[0-9]+.16b
+ ** 	...
+ */
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ /*
+ ** foo2_int:
+ ** 	...
+ ** 	add	v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h
+ ** 	uaddw	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4h
+ ** 	uaddw2	v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.8h
+ ** 	...
+ */
+ int foo2_int(unsigned short *x, unsigned short * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+     {
+       x[i] = x[i] + y[i];
+       sum += x[i];
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/pr122069_4.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/pr122069_4.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/pr122069_4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/pr122069_4.c	Sun Oct 19 22:32:30 2025
***************
*** 0 ****
--- 1,81 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target arm_v8_2a_dotprod_neon_hw }*/
+ /* { dg-options "-O3 -march=armv8.2-a+dotprod -mautovec-preference=asimd-only -fdump-tree-vect-details" }*/
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ __attribute__((noipa))
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int(unsigned short *x, unsigned short * restrict y,
+ 	     unsigned short * restrict z) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo_int2(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int2(unsigned short *x, unsigned short * restrict y,
+ 	      unsigned short * restrict z) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ int main ()
+ {
+   unsigned short a[100];
+   unsigned short b[100];
+   unsigned short r1[100];
+   unsigned short r2[100];
+   unsigned char c[100];
+   unsigned char d[100];
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       a[i] = c[i] = i;
+       b[i] = d[i] = 100 - i;
+     }
+ 
+   if (foo_int (c, d) != foo_int2 (c, d))
+     __builtin_abort();
+ 
+ 
+   if (foo2_int (a, b, r1) != foo2_int2 (a, b, r2))
+     __builtin_abort();
+ 
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     if (r1[i] != r2[i])
+       __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c	Sun Oct 19 22:32:31 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <arm_sve.h>
+ 
+ /*
+ ** foo:
+ **	ptrue	p0\.b, all
+ **	brkb	p0\.b, p0/z, p0\.b
+ **	ret
+ */
+ svbool_t foo () {
+   return svbrkb_b_m (svpfalse (), svptrue_b8 (), svptrue_b8 ());
+ }
+ 
+ /*
+ ** bar:
+ **	ptrue	p0\.b, all
+ **	brka	p0\.b, p0/z, p0\.b
+ **	ret
+ */
+ svbool_t bar () {
+   return svbrka_b_m (svpfalse (), svptrue_b8 (), svptrue_b8 ());
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve/pr122069_1.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve/pr122069_1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve/pr122069_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve/pr122069_1.c	Sun Oct 19 22:32:31 2025
***************
*** 0 ****
--- 1,45 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve -mautovec-preference=sve-only --param vect-epilogues-nomask=0 -fno-schedule-insns -fno-reorder-blocks -fno-schedule-insns2 -fdump-tree-vect-details" }*/
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ /*
+ ** foo_int:
+ ** 	...
+ ** 	sub	z[0-9]+.b, z[0-9]+.b, z[0-9]+.b
+ ** 	udot	z[0-9]+.s, z[0-9]+.b, z[0-9]+.b
+ ** 	...
+ */
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ /* 
+ ** foo2_int:
+ ** 	...
+ ** 	add	z[0-9]+.h, z[0-9]+.h, z[0-9]+.h
+ ** 	punpklo	p[0-9]+.h, p[0-9]+.b
+ ** 	uunpklo	z[0-9]+.s, z[0-9]+.h
+ ** 	add	z[0-9]+.s, p[0-9]+/m, z[0-9]+.s, z[0-9]+.s
+ ** 	punpkhi	p[0-9]+.h, p[0-9]+.b
+ ** 	uunpkhi	z[0-9]+.s, z[0-9]+.h
+ ** 	add	z[0-9]+.s, p[0-9]+/m, z[0-9]+.s, z[0-9]+.s
+ ** 	...
+ */
+ int foo2_int(unsigned short *x, unsigned short * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+     {
+       x[i] = x[i] + y[i];
+       sum += x[i];
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve/pr122069_2.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve/pr122069_2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve/pr122069_2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve/pr122069_2.c	Sun Oct 19 22:32:31 2025
***************
*** 0 ****
--- 1,81 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target aarch64_sve_hw }  */
+ /* { dg-options "-O3 -march=armv8-a+sve -mautovec-preference=sve-only -fdump-tree-vect-details" }*/
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ __attribute__((noipa))
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int(unsigned short *x, unsigned short * restrict y,
+ 	     unsigned short * restrict z) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo_int2(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int2(unsigned short *x, unsigned short * restrict y,
+ 	      unsigned short * restrict z) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ int main ()
+ {
+   unsigned short a[100];
+   unsigned short b[100];
+   unsigned short r1[100];
+   unsigned short r2[100];
+   unsigned char c[100];
+   unsigned char d[100];
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       a[i] = c[i] = i;
+       b[i] = d[i] = 100 - i;
+     }
+ 
+   if (foo_int (c, d) != foo_int2 (c, d))
+     __builtin_abort();
+ 
+ 
+   if (foo2_int (a, b, r1) != foo2_int2 (a, b, r2))
+     __builtin_abort();
+ 
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     if (r1[i] != r2[i])
+       __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr121604_pmov.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr121604_pmov.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr121604_pmov.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr121604_pmov.c	Sun Oct 19 22:32:31 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=armv8.2-a+sve2p1" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <arm_sve.h>
+ 
+ /*
+ ** f:
+ **	pfalse	p([0-7]+)\.b
+ **	mov	z0\.b, #-1
+ **	pmov	z0\[1\], p\1\.d
+ **	ret
+ */
+ svuint64_t f () {
+     return svpmov_lane_u64_m (svdup_u64 (~0UL), svpfalse (), 1);
+ }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_1.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_1.c	Sun Oct 19 22:32:31 2025
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve2 -mautovec-preference=sve-only --param vect-epilogues-nomask=0 -fno-schedule-insns -fno-reorder-blocks -fno-schedule-insns2 -fdump-tree-vect-details" }*/
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ /*
+ ** foo_int:
+ ** 	...
+ ** 	sub	z[0-9]+.b, z[0-9]+.b, z[0-9]+.b
+ ** 	udot	z[0-9]+.s, z[0-9]+.b, z[0-9]+.b
+ ** 	...
+ */
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ /* 
+ ** foo2_int:
+ ** 	...
+ ** 	add	z[0-9]+.h, z[0-9]+.h, z[0-9]+.h
+ ** 	uaddwb	z[0-9]+.s, z[0-9]+.s, z[0-9]+.h
+ ** 	uaddwt	z[0-9]+.s, z[0-9]+.s, z[0-9]+.h
+ ** 	...
+ */
+ int foo2_int(unsigned short *x, unsigned short * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+     {
+       x[i] = x[i] + y[i];
+       sum += x[i];
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_2.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_2.c	Sun Oct 19 22:32:31 2025
***************
*** 0 ****
--- 1,81 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target aarch64_sve2_hw }  */
+ /* { dg-options "-O3 -march=armv8-a+sve2 -mautovec-preference=sve-only -fdump-tree-vect-details" }*/
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ __attribute__((noipa))
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int(unsigned short *x, unsigned short * restrict y,
+ 	     unsigned short * restrict z) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo_int2(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int2(unsigned short *x, unsigned short * restrict y,
+ 	      unsigned short * restrict z) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ int main ()
+ {
+   unsigned short a[100];
+   unsigned short b[100];
+   unsigned short r1[100];
+   unsigned short r2[100];
+   unsigned char c[100];
+   unsigned char d[100];
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       a[i] = c[i] = i;
+       b[i] = d[i] = 100 - i;
+     }
+ 
+   if (foo_int (c, d) != foo_int2 (c, d))
+     __builtin_abort();
+ 
+ 
+   if (foo2_int (a, b, r1) != foo2_int2 (a, b, r2))
+     __builtin_abort();
+ 
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     if (r1[i] != r2[i])
+       __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_3.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_3.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_3.c	Sun Oct 19 22:32:31 2025
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a+sve2p1 -mautovec-preference=sve-only --param vect-epilogues-nomask=0 -fno-schedule-insns -fno-reorder-blocks -fno-schedule-insns2 -fdump-tree-vect-details" }*/
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ /*
+ ** foo_int:
+ ** 	...
+ ** 	sub	z[0-9]+.b, z[0-9]+.b, z[0-9]+.b
+ ** 	udot	z[0-9]+.s, z[0-9]+.b, z[0-9]+.b
+ ** 	...
+ */
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ /* 
+ ** foo2_int:
+ ** 	...
+ ** 	udot	z[0-9]+.s, z[0-9]+.h, z[0-9]+.h
+ ** 	...
+ */
+ int foo2_int(unsigned short *x, unsigned short * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 8000; i++)
+     {
+       x[i] = x[i] + y[i];
+       sum += x[i];
+     }
+   return sum;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_4.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_4.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/sve2/pr122069_4.c	Sun Oct 19 22:32:31 2025
***************
*** 0 ****
--- 1,81 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target aarch64_sve2p1_hw }  */
+ /* { dg-options "-O3 -march=armv8-a+sve2p1 -mautovec-preference=sve-only -fdump-tree-vect-details" }*/
+ 
+ inline char char_abs(char i) {
+   return (i < 0 ? -i : i);
+ }
+ 
+ __attribute__((noipa))
+ int foo_int(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int(unsigned short *x, unsigned short * restrict y,
+ 	     unsigned short * restrict z) {
+   int sum = 0;
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo_int2(unsigned char *x, unsigned char * restrict y) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+      sum += char_abs(x[i] - y[i]);
+   return sum;
+ }
+ 
+ __attribute__((noipa))
+ int foo2_int2(unsigned short *x, unsigned short * restrict y,
+ 	      unsigned short * restrict z) {
+   int sum = 0;
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       z[i] = x[i] + y[i];
+       sum += z[i];
+     }
+   return sum;
+ }
+ 
+ int main ()
+ {
+   unsigned short a[100];
+   unsigned short b[100];
+   unsigned short r1[100];
+   unsigned short r2[100];
+   unsigned char c[100];
+   unsigned char d[100];
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     {
+       a[i] = c[i] = i;
+       b[i] = d[i] = 100 - i;
+     }
+ 
+   if (foo_int (c, d) != foo_int2 (c, d))
+     __builtin_abort();
+ 
+ 
+   if (foo2_int (a, b, r1) != foo2_int2 (a, b, r2))
+     __builtin_abort();
+ 
+ #pragma GCC novector
+   for (int i = 0; i < 100; i++)
+     if (r1[i] != r2[i])
+       __builtin_abort ();
+ 
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 2 "vect" } } */
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/torture/pr121772.c gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/torture/pr121772.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/aarch64/torture/pr121772.c	Sun Oct 12 22:32:59 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/aarch64/torture/pr121772.c	Sun Oct 19 22:32:31 2025
***************
*** 1,4 ****
--- 1,5 ----
  /* { dg-do compile } */
+ /* { dg-options "-fchecking" } */
  #include <arm_neon.h>
  int16_t f(int16x4_t b) {
    return vaddvq_s16(vcombine_s16(b, vdup_n_s16 (0)));
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c gcc-16-20251019/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c	Sun Oct 12 22:32:59 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c	Sun Oct 19 22:32:31 2025
*************** test_select_8 (__fp16 a, __fp16 b, __fp1
*** 134,141 ****
  }
  
  /* { dg-final { scan-assembler-times {vseleq\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {vselgt\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 1 } }  */
! /* { dg-final { scan-assembler-times {vselge\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 1 } }  */
  
  /* { dg-final { scan-assembler-not {vmov\.f16} } }  */
  
--- 134,141 ----
  }
  
  /* { dg-final { scan-assembler-times {vseleq\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {vselgt\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 2 } }  */
! /* { dg-final { scan-assembler-times {vselge\.f16\ts[0-9]+, s[0-9]+, s[0-9]+} 2 } }  */
  
  /* { dg-final { scan-assembler-not {vmov\.f16} } }  */
  
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c gcc-16-20251019/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c	Sun Oct 12 22:32:59 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c	Sun Oct 19 22:32:31 2025
*************** test_select (__fp16 a, __fp16 b, __fp16
*** 8,11 ****
  {
    return (a < b) ? b : c;
  }
! /* { dg-final { scan-assembler "bx?(mi|pl)" } } */
--- 8,11 ----
  {
    return (a < b) ? b : c;
  }
! /* { dg-final { scan-assembler "vselgt\.f16\t" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq-check-carry.c	Sun Oct 19 22:32:32 2025
***************
*** 0 ****
--- 1,48 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target arm_v8_1m_mve_ok } */
+ /* { dg-require-effective-target arm_mve_hw } */
+ /* { dg-options "-O2" } */
+ /* { dg-add-options arm_v8_1m_mve } */
+ 
+ #include "arm_mve.h"
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ #include <inttypes.h>
+ #include <stdio.h>
+ 
+ __attribute((noinline)) void print_uint32x4_t(const char *name, uint32x4_t val)
+ {
+   printf("%s: %u, %u, %u, %u\n",
+ 	 name,
+ 	 vgetq_lane_u32(val, 0),
+          vgetq_lane_u32(val, 1),
+ 	 vgetq_lane_u32(val, 2),
+          vgetq_lane_u32(val, 3));
+ }
+ 
+ void __attribute__ ((noinline))  test_2(void)
+ {
+   uint32x4_t v12, v18, v108;
+   unsigned v17 = 0;
+   v12 = vdupq_n_u32(1);
+   v18 = vadcq_u32(v12, v12, &v17);
+   v17 = 1;
+   v108 = vadcq_u32(v12, v12, &v17);
+   print_uint32x4_t("v108", v108);
+ }
+ 
+ int main()
+ {
+   test_2();
+   return 0;
+ }
+   
+ #ifdef __cplusplus
+ }
+ #endif
+ 
+ /* { dg-output "v108: 3, 2, 2, 2" } */
+ /* { dg-final { scan-assembler-times {\tvmrs\t(?:ip|fp|r[0-9]+), FPSCR_nzcvqc} 3 } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c	Sun Oct 12 22:33:02 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_s32.c	Sun Oct 19 22:32:32 2025
*************** extern "C" {
*** 14,25 ****
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
- **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
- **	...
  **	vpst(?:	@.*|)
  **	...
  **	vadct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
--- 14,25 ----
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
+ **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
  **	vpst(?:	@.*|)
  **	...
  **	vadct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
*************** foo (int32x4_t inactive, int32x4_t a, in
*** 41,52 ****
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
- **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
- **	...
  **	vpst(?:	@.*|)
  **	...
  **	vadct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
--- 41,52 ----
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
+ **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
  **	vpst(?:	@.*|)
  **	...
  **	vadct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c	Sun Oct 12 22:33:02 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c	Sun Oct 19 22:32:32 2025
*************** extern "C" {
*** 14,25 ****
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
- **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
- **	...
  **	vpst(?:	@.*|)
  **	...
  **	vadct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
--- 14,25 ----
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
+ **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
  **	vpst(?:	@.*|)
  **	...
  **	vadct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
*************** foo (uint32x4_t inactive, uint32x4_t a,
*** 41,52 ****
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
- **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
- **	...
  **	vpst(?:	@.*|)
  **	...
  **	vadct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
--- 41,52 ----
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
+ **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
  **	vpst(?:	@.*|)
  **	...
  **	vadct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c	Sun Oct 12 22:33:02 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_s32.c	Sun Oct 19 22:32:32 2025
*************** extern "C" {
*** 14,25 ****
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
- **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
- **	...
  **	vpst(?:	@.*|)
  **	...
  **	vsbct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
--- 14,25 ----
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
+ **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
  **	vpst(?:	@.*|)
  **	...
  **	vsbct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
*************** foo (int32x4_t inactive, int32x4_t a, in
*** 41,52 ****
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
- **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
- **	...
  **	vpst(?:	@.*|)
  **	...
  **	vsbct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
--- 41,52 ----
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
+ **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
  **	vpst(?:	@.*|)
  **	...
  **	vsbct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c	Sun Oct 12 22:33:02 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_m_u32.c	Sun Oct 19 22:32:32 2025
*************** extern "C" {
*** 14,25 ****
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
- **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
- **	...
  **	vpst(?:	@.*|)
  **	...
  **	vsbct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
--- 14,25 ----
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
+ **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
  **	vpst(?:	@.*|)
  **	...
  **	vsbct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
*************** foo (uint32x4_t inactive, uint32x4_t a,
*** 41,52 ****
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
- **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
- **	...
  **	vpst(?:	@.*|)
  **	...
  **	vsbct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
--- 41,52 ----
  **	...
  **	vmrs	(?:ip|fp|r[0-9]+), FPSCR_nzcvqc(?:	@.*|)
  **	...
+ **	vmsr	p0, (?:ip|fp|r[0-9]+)(?:	@.*|)
+ **	...
  **	bfi	(?:ip|fp|r[0-9]+), (?:ip|fp|r[0-9]+), #29, #1(?:	@.*|)
  **	...
  **	vmsr	FPSCR_nzcvqc, (?:ip|fp|r[0-9]+)(?:	@.*|)
  **	...
  **	vpst(?:	@.*|)
  **	...
  **	vsbct.i32	q[0-9]+, q[0-9]+, q[0-9]+(?:	@.*|)
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/bpf/memset-3.c gcc-16-20251019/gcc/testsuite/gcc.target/bpf/memset-3.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/bpf/memset-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/bpf/memset-3.c	Sun Oct 19 22:32:32 2025
***************
*** 0 ****
--- 1,56 ----
+ /* Test that inline memset expansion properly duplicates the byte value
+    across the bytes to fill.  PR target/122139.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -masm=normal" } */
+ 
+ #define SIZE 63
+ 
+ unsigned char  cdata[SIZE];
+ unsigned short sdata[SIZE / 2 + 1];
+ unsigned int   idata[SIZE / 4 + 1];
+ unsigned long  ldata[SIZE / 8 + 1];
+ 
+ void
+ a (void)
+ {
+   __builtin_memset (cdata, 0x54, SIZE);
+ }
+ /* 0x54=84 */
+ /* { dg-final { scan-assembler-times "\[\t \]stb\[^\r\n\]+,84" 63 } } */
+ 
+ void
+ b (void)
+ {
+   __builtin_memset (sdata, 0x7a, SIZE);
+ }
+ 
+ /* 0x7a=122, 0x7a7a=31354 */
+ /* { dg-final { scan-assembler-times "\[\t \]sth\[^\r\n\]+,31354" 31 } } */
+ /* { dg-final { scan-assembler-times "\[\t \]stb\[^\r\n\]+,122" 1 } } */
+ 
+ void
+ c (void)
+ {
+   __builtin_memset (idata, 0x23, SIZE);
+ }
+ 
+ /* 0x23=35, 0x2323=8995, 0x23232323=589505315 */
+ /* { dg-final { scan-assembler-times "\[\t \]stw\[^\r\n\]+,589505315" 15 } } */
+ /* { dg-final { scan-assembler-times "\[\t \]sth\[^\r\n\]+,8995" 1 } } */
+ /* { dg-final { scan-assembler-times "\[\t \]stb\[^\r\n\]+,35" 1 } } */
+ 
+ void
+ d (void)
+ {
+   __builtin_memset (ldata, 0xcb, SIZE);
+ }
+ 
+ /* 0xcbcbcbcb_cbcbcbcb = -3761688987579986997,
+    0xcbcbcbcb = -875836469
+    0xcbcb = -13365
+    0xcb = -53 */
+ /* { dg-final { scan-assembler-times "lddw\t%r.,-3761688987579986997"}} */
+ /* { dg-final { scan-assembler-times "stxdw" 7 } } */
+ /* { dg-final { scan-assembler-times "\[\t \]stw\[^\r\n\]+,-875836469" 1 } } */
+ /* { dg-final { scan-assembler-times "\[\t \]sth\[^\r\n\]+,-13365" 1 } } */
+ /* { dg-final { scan-assembler-times "\[\t \]stb\[^\r\n\]+,-53" 1 } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/bpf/memset-4.c gcc-16-20251019/gcc/testsuite/gcc.target/bpf/memset-4.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/bpf/memset-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/bpf/memset-4.c	Sun Oct 19 22:32:32 2025
***************
*** 0 ****
--- 1,24 ----
+ /* Test that inline memset expansion properly duplicates the byte value
+    across the bytes to fill for non-const value.  PR target/122139.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -masm=normal" } */
+ 
+ #define SIZE 63
+ 
+ unsigned char  cdata[SIZE];
+ unsigned short sdata[SIZE / 2 + 1];
+ unsigned int   idata[SIZE / 4 + 1];
+ unsigned long  ldata[SIZE / 8 + 1];
+ 
+ void
+ c (unsigned char byte)
+ {
+   __builtin_memset (idata, byte, SIZE);
+ }
+ 
+ /* Hard to verify for non-const value.  Look for the mul by 0x01010101
+    and the proper number of stores...  */
+ /* { dg-final { scan-assembler "mul32\[\t \]%r.,16843009" } } */
+ /* { dg-final { scan-assembler-times "stxw" 15 } } */
+ /* { dg-final { scan-assembler-times "stxh" 1 } } */
+ /* { dg-final { scan-assembler-times "stxb" 1 } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amx-check.h gcc-16-20251019/gcc/testsuite/gcc.target/i386/amx-check.h
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amx-check.h	Sun Oct 12 22:33:14 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amx-check.h	Sun Oct 19 22:32:32 2025
*************** main ()
*** 260,268 ****
  #ifdef AMX_TF32
        && __builtin_cpu_supports ("amx-tf32")
  #endif
- #ifdef AMX_TRANSPOSE
-       && __builtin_cpu_supports ("amx-transpose")
- #endif
  #ifdef AMX_FP8
        && __builtin_cpu_supports ("amx-fp8")
  #endif
--- 260,265 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,58 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_movrs } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-require-effective-target avx512fp16 } */
- /* { dg-options "-O2 -mamx-movrs -mamx-transpose -mavx512fp16 -mavx512bf16" } */
- #define AMX_MOVRS
- #define AMX_TRANSPOSE
- #define DO_TEST test_amx_movrs_t2rpntlvwrs
- void test_amx_movrs_t2rpntlvwrs ();
- #include "amx-helper.h"
- 
- #define init_pair_tile_reg_and_src_z_t(tmm_num, src, buffer, ztype, wtype) \
- {									\
-   init_pair_tile_src (tmm_num, &src, buffer, ztype);			\
-   _tile_2rpntlvwz##ztype##rs##wtype (tmm_num, buffer, _STRIDE);		\
- }
- 
- void test_amx_movrs_t2rpntlvwrs ()
- {
-   __tilecfg_u cfg;
-   __tilepair src;
-   __tile ref_0, ref_1;
-   uint8_t buffer[2048];
-   int i;
- 
-   init_tile_config (&cfg);
- 
-   for (i = 0; i < 2048; i++)
-     buffer[i] = i % 256;
- 
-   /* Check t2rpntlvwz0rs.  */
-   init_pair_tile_reg_and_src_z_t (0, src, buffer, 0,);
-   _tile_stored (0, ref_0.buf, _STRIDE);
-   _tile_stored (1, ref_1.buf, _STRIDE);
-   if (!check_pair_tile_register (&ref_0, &ref_1, &src))
-     abort ();
- 
-   /* Check t2rpntlvwz1rs.  */
-   init_pair_tile_reg_and_src_z_t (0, src, buffer, 1,);
-   _tile_stored (0, ref_0.buf, _STRIDE);
-   _tile_stored (1, ref_1.buf, _STRIDE);
-   if (!check_pair_tile_register (&ref_0, &ref_1, &src))
-     abort ();
- 
-   /* Check t2rpntlvwz0t1rs.  */
-   init_pair_tile_reg_and_src_z_t (0, src, buffer, 0, t1);
-   _tile_stored (0, ref_0.buf, _STRIDE);
-   _tile_stored (1, ref_1.buf, _STRIDE);
-   if (!check_pair_tile_register (&ref_0, &ref_1, &src))
-     abort ();
- 
-   /* Check t2rpntlvwz1t1rs.  */
-   init_pair_tile_reg_and_src_z_t (0, src, buffer, 1, t1);
-   _tile_stored (0, ref_0.buf, _STRIDE);
-   _tile_stored (1, ref_1.buf, _STRIDE);
-   if (!check_pair_tile_register (&ref_0, &ref_1, &src))
-     abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxmovrs-asmatt-1.c	Sun Oct 19 22:32:32 2025
***************
*** 1,11 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mamx-movrs -mamx-transpose" } */
  /* { dg-final { scan-assembler "tileloaddrs\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]"  } } */
  /* { dg-final { scan-assembler "tileloaddrst1\[ \\t]+\[^\n\]*\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz0rs\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz0rst1\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz1rs\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz1rst1\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]"  } } */
  #include <immintrin.h>
  
  extern const void* base;
--- 1,7 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mamx-movrs" } */
  /* { dg-final { scan-assembler "tileloaddrs\[ \\t]+\[^\n\]*\(%\[a-z0-9\]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]"  } } */
  /* { dg-final { scan-assembler "tileloaddrst1\[ \\t]+\[^\n\]*\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\)+\[^\n\]*%tmm\[0-9\]"  } } */
  #include <immintrin.h>
  
  extern const void* base;
*************** void TEST()
*** 20,27 ****
  {
    _tile_loaddrs (TMM1, base, stride);
    _tile_loaddrst1 (TMM1, base, stride);
-   _tile_2rpntlvwz0rs (TMM0, base, stride);
-   _tile_2rpntlvwz0rst1 (TMM1, base, stride);
-   _tile_2rpntlvwz1rs (TMM2, base, stride);
-   _tile_2rpntlvwz1rst1 (TMM3, base, stride);
  }
--- 16,19 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxmovrs-asmintel-1.c	Sun Oct 19 22:32:32 2025
***************
*** 1,12 ****
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
! /* { dg-options "-O2 -mamx-movrs -mamx-transpose -masm=intel" } */
  /* { dg-final { scan-assembler-times "tileloaddrs\[ \\t]%tmm\[0-9\]" 1 } } */
  /* { dg-final { scan-assembler-times "tileloaddrst1\[ \\t]%tmm\[0-9\]" 1 } } */
- /* { dg-final { scan-assembler "t2rpntlvwz0rs\[ \\t]%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz0rst1\[ \\t]%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz1rs\[ \\t]%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz1rst1\[ \\t]%tmm\[0-9\]"  } } */
  #include <immintrin.h>
  
  extern const void* base;
--- 1,8 ----
  /* { dg-do compile { target { ! ia32 } } } */
  /* { dg-require-effective-target masm_intel } */
! /* { dg-options "-O2 -mamx-movrs -masm=intel" } */
  /* { dg-final { scan-assembler-times "tileloaddrs\[ \\t]%tmm\[0-9\]" 1 } } */
  /* { dg-final { scan-assembler-times "tileloaddrst1\[ \\t]%tmm\[0-9\]" 1 } } */
  #include <immintrin.h>
  
  extern const void* base;
*************** void TEST()
*** 21,28 ****
  {
    _tile_loaddrs (TMM1, base, stride);
    _tile_loaddrst1 (TMM1, base, stride);
-   _tile_2rpntlvwz0rs (TMM0, base, stride);
-   _tile_2rpntlvwz0rst1 (TMM1, base, stride);
-   _tile_2rpntlvwz1rs (TMM2, base, stride);
-   _tile_2rpntlvwz1rst1 (TMM3, base, stride);
  }
--- 17,20 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,54 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-options "-O2 -mamx-transpose" } */
- #define AMX_TRANSPOSE
- #define DO_TEST test_amx_transpose_t2rpntlvw
- void test_amx_transpose_t2rpntlvw ();
- #include "amx-helper.h"
- #define init_pair_tile_reg_and_src_z_t(tmm_num, src, buffer, ztype, wtype) \
- {									\
-   init_pair_tile_src (tmm_num, &src, buffer, ztype);			\
-   _tile_2rpntlvwz##ztype##wtype (tmm_num, buffer, _STRIDE);		\
- }
- 
- void test_amx_transpose_t2rpntlvw ()
- {
-   __tilecfg_u cfg;
-   __tilepair src;
-   __tile ref_0, ref_1;
-   uint8_t buffer[2048];
-   int i;
- 
-   init_tile_config (&cfg);
- 
-   for (i = 0; i < 2048; i++)
-     buffer[i] = i % 256;
- 
-   /* Check t2rpntlvwz0.  */
-   init_pair_tile_reg_and_src_z_t (0, src, buffer, 0,);
-   _tile_stored (0, ref_0.buf, _STRIDE);
-   _tile_stored (1, ref_1.buf, _STRIDE);
-   if (!check_pair_tile_register (&ref_0, &ref_1, &src))
-     abort ();
- 
-   /* Check t2rpntlvwz1.  */
-   init_pair_tile_reg_and_src_z_t (0, src, buffer, 1,);
-   _tile_stored (0, ref_0.buf, _STRIDE);
-   _tile_stored (1, ref_1.buf, _STRIDE);
-   if (!check_pair_tile_register (&ref_0, &ref_1, &src))
-     abort ();
- 
-   /* Check t2rpntlvwz0t1.  */
-   init_pair_tile_reg_and_src_z_t (0, src, buffer, 0, t1);
-   _tile_stored (0, ref_0.buf, _STRIDE);
-   _tile_stored (1, ref_1.buf, _STRIDE);
-   if (!check_pair_tile_register (&ref_0, &ref_1, &src))
-     abort ();
- 
-   /* Check t2rpntlvwz1t1.  */
-   init_pair_tile_reg_and_src_z_t (0, src, buffer, 1, t1);
-   _tile_stored (0, ref_0.buf, _STRIDE);
-   _tile_stored (1, ref_1.buf, _STRIDE);
-   if (!check_pair_tile_register (&ref_0, &ref_1, &src))
-     abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-asmatt-1.c	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- /* { dg-do compile { target { ! ia32 } } } */
- /* { dg-options "-O2 -mamx-transpose -mamx-bf16 -mamx-complex -mamx-fp16 -mamx-tf32" } */
- /* { dg-final { scan-assembler "ttdpbf16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1"  } } */
- /* { dg-final { scan-assembler "ttdpfp16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1"  } } */
- /* { dg-final { scan-assembler "ttransposed\[ \\t]+\[^\n\]*%tmm2+\[^\n\]*%tmm1"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz0\[ \\t]+\[^\n\]*\\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\\)+\[^\n\]*%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz0t1\[ \\t]+\[^\n\]*\\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\\)+\[^\n\]*%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz1\[ \\t]+\[^\n\]*\\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\\)+\[^\n\]*%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz1t1\[ \\t]+\[^\n\]*\\(%\[a-z0-9]*\,%\[a-z0-9\]*\,\[124\]\\)+\[^\n\]*%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "tconjtcmmimfp16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1"  } } */
- /* { dg-final { scan-assembler "tconjtfp16\[ \\t]+\[^\n\]*%tmm2+\[^\n\]*%tmm1"  } } */
- /* { dg-final { scan-assembler "ttcmmimfp16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1"  } } */
- /* { dg-final { scan-assembler "ttcmmrlfp16ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1"  } } */
- /* { dg-final { scan-assembler "ttmmultf32ps\[ \\t]+\[^\n\]*%tmm3+\[^\n\]*%tmm2+\[^\n\]*%tmm1"  } } */
- #include <immintrin.h>
- 
- extern const void* base;
- extern const int stride;
- 
- #define TMM0 0
- #define TMM1 1
- #define TMM2 2
- #define TMM3 3
- 
- void TEST()
- {
-   _tile_tdpbf16ps (TMM1, TMM2, TMM3);
-   _tile_tdpfp16ps (TMM1, TMM2, TMM3);
-   _tile_transposed (TMM1, TMM2);
-   _tile_2rpntlvwz0 (TMM0, base, stride);
-   _tile_2rpntlvwz0t1 (TMM1, base, stride);
-   _tile_2rpntlvwz1 (TMM2, base, stride);
-   _tile_2rpntlvwz1t1 (TMM3, base, stride);
-   _tile_conjtcmmimfp16ps (TMM1, TMM2, TMM3);
-   _tile_conjtfp16 (TMM1, TMM2);
-   _tile_tcmmimfp16ps (TMM1, TMM2, TMM3);
-   _tile_tcmmrlfp16ps (TMM1, TMM2, TMM3);
-   _tile_tmmultf32ps (TMM1, TMM2, TMM3);
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-asmintel-1.c	Thu Jan  1 00:00:00 1970
***************
*** 1,35 ****
- /* { dg-do compile { target { ! ia32 } } } */
- /* { dg-require-effective-target masm_intel } */
- /* { dg-options "-O2 -mamx-transpose -mamx-bf16 -mamx-complex -mamx-fp16 -mamx-tf32 -masm=intel" } */
- /* { dg-final { scan-assembler "ttdpbf16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
- /* { dg-final { scan-assembler "ttdpfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
- /* { dg-final { scan-assembler "ttransposed\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz0\[ \\t]%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz0t1\[ \\t]%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz1\[ \\t]%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "t2rpntlvwz1t1\[ \\t]%tmm\[0-9\]"  } } */
- /* { dg-final { scan-assembler "tconjtcmmimfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
- /* { dg-final { scan-assembler "tconjtfp16\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2"  } } */
- /* { dg-final { scan-assembler "ttcmmimfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
- /* { dg-final { scan-assembler "ttcmmrlfp16ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
- /* { dg-final { scan-assembler "ttmmultf32ps\[ \\t]+\[^\n\]*%tmm1+\[^\n\]*%tmm2+\[^\n\]*%tmm3"  } } */
- #include <immintrin.h>
- 
- extern const void* base;
- extern const int stride;
- 
- void TEST()
- {
-   _tile_tdpbf16ps (1, 2, 3);
-   _tile_tdpfp16ps (1, 2, 3);
-   _tile_transposed (1, 2);
-   _tile_2rpntlvwz0 (5, base, stride);
-   _tile_2rpntlvwz0t1 (4, base, stride);
-   _tile_2rpntlvwz1 (3, base, stride);
-   _tile_2rpntlvwz1t1 (2, base, stride);
-   _tile_conjtcmmimfp16ps (1, 2, 3);
-   _tile_conjtfp16 (1, 2);
-   _tile_tcmmimfp16ps (1, 2, 3);
-   _tile_tcmmrlfp16ps (1, 2, 3);
-   _tile_tmmultf32ps (1, 2, 3);
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-conjtcmmimfp16ps-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,55 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-require-effective-target amx_complex } */
- /* { dg-require-effective-target avx512fp16 } */
- /* { dg-options "-O2 -mamx-transpose -mamx-complex -mavx512fp16" } */
- #define AMX_TRANSPOSE
- #define AMX_COMPLEX
- #define DO_TEST test_amx_transpose_conjtcmmimfp16ps
- void test_amx_transpose_conjtcmmimfp16ps ();
- #include "amx-helper.h"
- 
- void calc_matrix_conjtcmmimfp16ps (__tile *dst, __tile *src1, __tile *src2)
- {
-   uint16_t *src1_buf = (uint16_t *) src1->buf;
-   uint16_t *src2_buf = (uint16_t *) src2->buf;
-   float *dst_buf = (float *) dst->buf;
-   
-   int K = src1->rows;
-   int M = src1->colsb / 4;
-   int N = src2->colsb / 4;
-   int m, k, n, t;
- 
-   for (m = 0; m < M; m++)
-     for (k = 0; k < K; k++)
-       for (n = 0; n < N; n++)
- 	for (t = 0; t < 2; t+=2)
- 	  dst_buf[m * N + n] +=
- 	    (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t]) *
- 	      make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t + 1])) -
- 	    (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t + 1]) *
- 	      make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t]));
- }
- 
- void test_amx_transpose_conjtcmmimfp16ps ()
- {
-   __tilecfg_u cfg;
-   __tile dst, dst_ref, src1, src2;
-   uint8_t tmp_dst_buf[1024], tmp_dst_zero_buf[1024];
- 
-   init_fp16_max_tile_buffer (tmp_dst_buf);
-   init_fp16_max_tile_zero_buffer (tmp_dst_zero_buf);
- 
-   init_tile_config (&cfg);
-   init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_zero_buf);
-   init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf);
-   init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf);
- 
-   calc_matrix_conjtcmmimfp16ps (&dst, &src1, &src2);
-   
-   _tile_conjtcmmimfp16ps (1, 2, 3);
-   _tile_stored (1, dst_ref.buf, _STRIDE);
- 
-   if (!check_tile_register (&dst_ref, &dst))
-         abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-conjtfp16-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-conjtfp16-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-conjtfp16-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-conjtfp16-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,48 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-require-effective-target amx_complex } */
- /* { dg-require-effective-target avx512fp16 } */
- /* { dg-options "-O2 -mamx-transpose -mamx-complex -mavx512fp16" } */
- #define AMX_TRANSPOSE
- #define AMX_COMPLEX
- #define DO_TEST test_amx_transpose_conjtfp16
- void test_amx_transpose_conjtfp16 ();
- #include "amx-helper.h"
- 
- void calc_matrix_conjtfp16 (__tile *dst, __tile *src)
- {
-   uint16_t *src_buf = (uint16_t *) src->buf;
-   float *dst_buf = (float *) dst->buf;
- 
-   int M = dst->rows;
-   int N = dst->colsb / 4;
-   int i, j, t;
- 
-   for (i = 0; i < M; i++)
-     for (j = 0; j < N; j++)
-       for (t = 0; t < 2; t+=2)
-       {
- 	dst_buf[i * 2 * N + 2 * j + t] = src_buf[j * 2 * M + 2 * i + t];
- 	dst_buf[i * 2 * N + 2 * j + t + 1] = -src_buf[j * 2 * M + 2 * i + t + 1];
-       }
- }
- 
- void test_amx_transpose_conjtfp16 ()
- {
-   __tilecfg_u cfg;
-   __tile src, dst, ref;
-   uint8_t tmp_dst_buf[1024];
- 
-   init_fp16_max_tile_buffer (tmp_dst_buf);
-   init_tile_config (&cfg);
-   init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_buf);
-   init_tile_reg_and_src_with_buffer (2, src, tmp_dst_buf);
- 
-   /* Check tconjtfp16.  */
-   calc_matrix_conjtfp16 (&dst, &src);
-   _tile_conjtfp16 (1, 2);
-   _tile_stored (1, ref.buf, _STRIDE);
- 
-   if (!check_tile_register (&ref, &dst))
-     abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmimfp16ps-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,55 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-require-effective-target amx_complex } */
- /* { dg-require-effective-target avx512fp16 } */
- /* { dg-options "-O2 -mamx-transpose -mamx-complex -mavx512fp16" } */
- #define AMX_TRANSPOSE
- #define AMX_COMPLEX
- #define DO_TEST test_amx_transpose_tcmmimfp16ps
- void test_amx_transpose_tcmmimfp16ps ();
- #include "amx-helper.h"
- 
- void calc_matrix_tcmmimfp16ps (__tile *dst, __tile *src1, __tile *src2)
- {
-   uint16_t *src1_buf = (uint16_t *) src1->buf;
-   uint16_t *src2_buf = (uint16_t *) src2->buf;
-   float *dst_buf = (float *) dst->buf;
-   
-   int K = src1->rows;
-   int M = src1->colsb / 4;
-   int N = src2->colsb / 4;
-   int m, k, n, t;
- 
-   for (m = 0; m < M; m++)
-     for (k = 0; k < K; k++)
-       for (n = 0; n < N; n++)
- 	for (t = 0; t < 2; t+=2)
- 	  dst_buf[m * N + n] +=
- 	    (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t]) *
- 	      make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t + 1])) +
- 	    (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t + 1]) *
- 	      make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t]));
- }
- 
- void test_amx_transpose_tcmmimfp16ps ()
- {
-   __tilecfg_u cfg;
-   __tile dst, dst_ref, src1, src2;
-   uint8_t tmp_dst_buf[1024], tmp_dst_zero_buf[1024];
- 
-   init_fp16_max_tile_buffer (tmp_dst_buf);
-   init_fp16_max_tile_zero_buffer (tmp_dst_zero_buf);
- 
-   init_tile_config (&cfg);
-   init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_zero_buf);
-   init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf);
-   init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf);
- 
-   calc_matrix_tcmmimfp16ps (&dst, &src1, &src2);
-   
-   _tile_tcmmimfp16ps (1, 2, 3);
-   _tile_stored (1, dst_ref.buf, _STRIDE);
- 
-   if (!check_tile_register (&dst_ref, &dst))
-         abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tcmmrlfp16ps-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,55 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-require-effective-target amx_complex } */
- /* { dg-require-effective-target avx512fp16 } */
- /* { dg-options "-O2 -mamx-transpose -mamx-complex -mavx512fp16" } */
- #define AMX_TRANSPOSE
- #define AMX_COMPLEX
- #define DO_TEST test_amx_transpose_tcmmrlfp16ps
- void test_amx_transpose_tcmmrlfp16ps ();
- #include "amx-helper.h"
- 
- void calc_matrix_tcmmrlfp16ps (__tile *dst, __tile *src1, __tile *src2)
- {
-   uint16_t *src1_buf = (uint16_t *) src1->buf;
-   uint16_t *src2_buf = (uint16_t *) src2->buf;
-   float *dst_buf = (float *) dst->buf;
-   
-   int K = src1->rows;
-   int M = src1->colsb / 4;
-   int N = src2->colsb / 4;
-   int m, k, n, t;
- 
-   for (m = 0; m < M; m++)
-     for (k = 0; k < K; k++)
-       for (n = 0; n < N; n++)
- 	for (t = 0; t < 2; t+=2)
- 	  dst_buf[m * N + n] +=
- 	    (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t]) *
- 	      make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t])) -
- 	    (make_fp16_f32(src1_buf[k * 2 * M + 2 * m + t + 1]) *
- 	      make_fp16_f32(src2_buf[k * 2 * N + 2 * n + t + 1]));
- }
- 
- void test_amx_transpose_tcmmrlfp16ps ()
- {
-   __tilecfg_u cfg;
-   __tile dst, dst_ref, src1, src2;
-   uint8_t tmp_dst_buf[1024], tmp_dst_zero_buf[1024];
- 
-   init_fp16_max_tile_buffer (tmp_dst_buf);
-   init_fp16_max_tile_zero_buffer (tmp_dst_zero_buf);
- 
-   init_tile_config (&cfg);
-   init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_zero_buf);
-   init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf);
-   init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf);
- 
-   calc_matrix_tcmmrlfp16ps (&dst, &src1, &src2);
-   
-   _tile_tcmmrlfp16ps (1, 2, 3);
-   _tile_stored (1, dst_ref.buf, _STRIDE);
- 
-   if (!check_tile_register (&dst_ref, &dst))
-         abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tdpbf16ps-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tdpbf16ps-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tdpbf16ps-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tdpbf16ps-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,53 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-require-effective-target amx_bf16 } */
- /* { dg-options "-O2 -mamx-transpose -mamx-bf16 -mavx512bf16" } */
- #define AMX_TRANSPOSE
- #define AMX_BF16
- #define DO_TEST test_amx_transpose_tdpbf16ps
- void test_amx_transpose_tdpbf16ps ();
- #include "amx-helper.h"
- 
- void calc_matrix_tdpbf16ps(__tile *dst, __tile *src1, __tile *src2)
- {
-   uint16_t *src1_buf = (uint16_t *) src1->buf;
-   uint16_t *src2_buf = (uint16_t *) src2->buf;
-   float *dst_buf = (float *) dst->buf;
- 
-   int K = src1->rows;
-   int M = src1->colsb / 4;
-   int N = src2->colsb / 4;
-   int m, k, n, t;
- 
-   for (m = 0; m < M; m++)
-     for (k = 0; k < K; k++)
-       for (n = 0; n < N; n++)
- 	for (t = 0; t < 2; t+=2)
- 	  dst_buf[m * N + n] +=
- 	    (make_bf16_f32 (src1_buf[k * 2 * M + 2 * m + t]) *
- 	      make_bf16_f32 (src2_buf[k * 2 * N + 2 * n + t])) +
- 	    (make_bf16_f32 (src1_buf[k * 2 * M + 2 * m + t + 1]) *
- 	      make_bf16_f32 (src2_buf[k * 2 * N + 2 * n + t + 1]));
- }
- 
- void test_amx_transpose_tdpbf16ps ()
- {
-   __tilecfg_u cfg;
-   __tile dst, dst_ref, src1, src2;
-   uint8_t tmp_dst_buf[1024];
- 
-   init_bf16_max_tile_buffer (tmp_dst_buf);
- 
-   init_tile_config (&cfg);
-   init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_buf);
-   init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf);
-   init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf);
- 
-   calc_matrix_tdpbf16ps (&dst, &src1, &src2);
- 
-   _tile_tdpbf16ps (1, 2, 3);
-   _tile_stored (1, dst_ref.buf, _STRIDE);
- 
-   if (!check_float_tile_register (&dst_ref, &dst))
-     abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tdpfp16ps-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tdpfp16ps-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tdpfp16ps-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tdpfp16ps-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,55 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-require-effective-target amx_fp16 } */
- /* { dg-require-effective-target avx512fp16 } */
- /* { dg-options "-O2 -mamx-transpose -mamx-fp16 -mavx512fp16" } */
- #define AMX_TRANSPOSE
- #define AMX_FP16
- #define DO_TEST test_amx_transpose_tdpfp16ps
- void test_amx_transpose_tdpfp16ps ();
- #include "amx-helper.h"
- 
- void calc_matrix_tdpfp16ps(__tile *dst, __tile *src1, __tile *src2)
- {
-   uint16_t *src1_buf = (uint16_t *) src1->buf;
-   uint16_t *src2_buf = (uint16_t *) src2->buf;
-   float *dst_buf = (float *) dst->buf;
- 
-   int K = src1->rows;
-   int M = src1->colsb / 4;
-   int N = src2->colsb / 4;
-   int m, k, n, t;
- 
-   for (m = 0; m < M; m++)
-     for (k = 0; k < K; k++)
-       for (n = 0; n < N; n++)
- 	for (t = 0; t < 2; t+=2)
- 	  dst_buf[m * N + n] +=
- 	    (make_fp16_f32 (src1_buf[k * 2 * M + 2 * m + t]) *
- 	      make_fp16_f32 (src2_buf[k * 2 * N + 2 * n + t])) +
- 	    (make_fp16_f32 (src1_buf[k * 2 * M + 2 * m + t + 1]) *
- 	      make_fp16_f32 (src2_buf[k * 2 * N + 2 * n + t + 1]));
- }
- 
- void test_amx_transpose_tdpfp16ps ()
- {
-   __tilecfg_u cfg;
-   __tile dst, dst_ref, src1, src2;
-   uint8_t tmp_dst_buf[1024], tmp_dst_zero_buf[1024];
- 
-   init_fp16_max_tile_buffer (tmp_dst_buf);
-   init_fp16_max_tile_zero_buffer(tmp_dst_zero_buf);
- 
-   init_tile_config (&cfg);
-   init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_zero_buf);
-   init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf);
-   init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf);
- 
-   calc_matrix_tdpfp16ps (&dst, &src1, &src2);
- 
-   _tile_tdpfp16ps (1, 2, 3);
-   _tile_stored (1, dst_ref.buf, _STRIDE);
- 
-   if (!check_float_tile_register (&dst_ref, &dst))
-     abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tmmultf32ps-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tmmultf32ps-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-tmmultf32ps-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-tmmultf32ps-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,51 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-require-effective-target amx_tf32 } */
- /* { dg-options "-O2 -mamx-transpose -mamx-tf32" } */
- #define AMX_TRANSPOSE
- #define AMX_TF32
- #define DO_TEST test_amx_transpose_tmmultf32ps
- void test_amx_transpose_tmmultf32ps();
- #include "amx-helper.h"
- 
- void calc_matrix_tmmultf32ps(__tile *dst, __tile *src1, __tile *src2)
- {
-   float *src1_buf = (float *) src1->buf;
-   float *src2_buf = (float *) src2->buf;
-   float *dst_buf = (float *) dst->buf;
- 
-   int K = src1->rows;
-   int M = src1->colsb / 4;
-   int N = src2->colsb / 4;
-   int m, n, k;
- 
-   for (m = 0; m < M; m++)
-     for (k = 0; k < K; k++)
-       for (n = 0; n < N; n++)
- 	dst_buf[m * N + n] +=
- 	zero_lower_mantissa_bits_fp32 (silence_snan_fp32 (src1_buf[k * M + m])) *
- 	zero_lower_mantissa_bits_fp32 (silence_snan_fp32 (src2_buf[k * N + n]));
- 
- }
- 
- void test_amx_transpose_tmmultf32ps ()
- {
-   __tilecfg_u cfg;
-   __tile dst, dst_ref, src1, src2;
-   uint8_t tmp_dst_buf[1024];
- 
-   init_fp32_max_tile_buffer (tmp_dst_buf);
- 
-   init_tile_config (&cfg);
-   init_tile_reg_and_src_with_buffer (1, dst, tmp_dst_buf);
-   init_tile_reg_and_src_with_buffer (2, src1, tmp_dst_buf);
-   init_tile_reg_and_src_with_buffer (3, src2, tmp_dst_buf);
- 
-   calc_matrix_tmmultf32ps (&dst, &src1, &src2);
- 
-   _tile_tmmultf32ps (1, 2, 3);
-   _tile_stored (1, dst_ref.buf, _STRIDE);
- 
-   if (!check_tile_register (&dst_ref, &dst))
-     abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-transposed-2.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-transposed-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/amxtranspose-transposed-2.c	Sun Oct 12 22:33:28 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/amxtranspose-transposed-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,39 ****
- /* { dg-do run { target { ! ia32 } } } */
- /* { dg-require-effective-target amx_transpose } */
- /* { dg-options "-O2 -mamx-transpose" } */
- #define AMX_TRANSPOSE
- #define DO_TEST test_amx_transpose_transposed
- void test_amx_transpose_transposed ();
- #include "amx-helper.h"
- 
- void calc_matrix_ttransposed (__tile *dst, __tile *src)
- {
-   uint32_t *src_buf = (uint32_t *) src->buf;
-   uint32_t *dst_buf = (uint32_t *) dst->buf;
- 
-   int M = src->rows;
-   int N = src->colsb / 4;
-   int i, j;
- 
-   for (i = 0; i < M; i++)
-     for (j = 0; j < N; j++)
-       dst_buf[j * M + i] = (uint32_t) src_buf[i * N + j];
- }
- 
- void test_amx_transpose_transposed ()
- {
-   __tilecfg_u cfg;
-   __tile src, dst, ref;
- 
-   init_tile_config (&cfg);
-   init_tile_reg_and_src (1, dst);
-   init_tile_reg_and_src (2, src);
- 
-   /* Check ttransposed.  */
-   calc_matrix_ttransposed (&dst, &src);
-   _tile_transposed (1, 2);
-   _tile_stored (1, ref.buf, _STRIDE);
- 
-   if (!check_tile_register (&ref, &dst))
-     abort ();
- }
--- 0 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/funcspec-56.inc gcc-16-20251019/gcc/testsuite/gcc.target/i386/funcspec-56.inc
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/funcspec-56.inc	Sun Oct 12 22:33:29 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/funcspec-56.inc	Sun Oct 19 22:32:33 2025
*************** extern void test_user_msr (void)		__attr
*** 90,96 ****
  extern void test_avx10_2 (void)			__attribute__((__target__("avx10.2")));
  extern void test_amx_avx512 (void)		__attribute__((__target__("amx-avx512")));
  extern void test_amx_tf32 (void)		__attribute__((__target__("amx-tf32")));
- extern void test_amx_transpose (void)		__attribute__((__target__("amx-transpose")));
  extern void test_amx_fp8 (void)                 __attribute__((__target__("amx-fp8")));
  extern void test_movrs (void)			__attribute__((__target__("movrs")));
  extern void test_amx_movrs (void)		__attribute__((__target__("amx-movrs")));
--- 90,95 ----
*************** extern void test_no_user_msr (void)		__a
*** 185,191 ****
  extern void test_no_avx10_2 (void)		__attribute__((__target__("no-avx10.2")));
  extern void test_no_amx_avx512 (void)		__attribute__((__target__("no-amx-avx512")));
  extern void test_no_amx_tf32 (void)		__attribute__((__target__("no-amx-tf32")));
- extern void test_no_amx_transpose (void)	__attribute__((__target__("no-amx-transpose")));
  extern void test_no_amx_fp8 (void)              __attribute__((__target__("no-amx-fp8")));
  extern void test_no_movrs (void)		__attribute__((__target__("no-movrs")));
  extern void test_no_amx_movrs (void)		__attribute__((__target__("no-amx-movrs")));
--- 184,189 ----
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/pr122266.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/pr122266.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/pr122266.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/pr122266.c	Sun Oct 19 22:32:33 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-O2" } */
+ 
+ signed __int128 foo(signed __int128 x) {
+     signed __int128 t = x >> 127;
+     return ((x^t)>>1)^t;
+ }
+ 
+ /* { dg-final { scan-assembler-times "xorq" 4 } } */
+ /* { dg-final { scan-assembler-times "sarq" 2 } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-12.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-12.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-12.c	Sun Oct 12 22:33:29 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-12.c	Sun Oct 19 22:32:33 2025
***************
*** 3,9 ****
     popcntintrin.h gfniintrin.h and mm_malloc.h are usable
     with -O -std=c89 -pedantic-errors.  */
  /* { dg-do compile } */
! /* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */
  
  #include <x86intrin.h>
  
--- 3,9 ----
     popcntintrin.h gfniintrin.h and mm_malloc.h are usable
     with -O -std=c89 -pedantic-errors.  */
  /* { dg-do compile } */
! /* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */
  
  #include <x86intrin.h>
  
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-13.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-13.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-13.c	Sun Oct 12 22:33:29 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-13.c	Sun Oct 19 22:32:33 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-14.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-14.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-14.c	Sun Oct 12 22:33:29 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-14.c	Sun Oct 19 22:32:33 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-transpose -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-tf32 -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-22.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-22.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-22.c	Sun Oct 12 22:33:29 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-22.c	Sun Oct 19 22:32:33 2025
***************
*** 103,109 ****
  
  
  #ifndef DIFFERENT_PRAGMAS
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-transpose,amx-fp8,movrs,amx-movrs")
  #endif
  
  /* Following intrinsics require immediate arguments.  They
--- 103,109 ----
  
  
  #ifndef DIFFERENT_PRAGMAS
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-fp8,movrs,amx-movrs")
  #endif
  
  /* Following intrinsics require immediate arguments.  They
*************** test_4 (_mm_cmpestrz, int, __m128i, int,
*** 220,226 ****
  
  /* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */
  #ifdef DIFFERENT_PRAGMAS
! #pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-transpose,amx-fp8,movrs,amx-movrs")
  #endif
  #include <immintrin.h>
  test_1 (_cvtss_sh, unsigned short, float, 1)
--- 220,226 ----
  
  /* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */
  #ifdef DIFFERENT_PRAGMAS
! #pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-fp8,movrs,amx-movrs")
  #endif
  #include <immintrin.h>
  test_1 (_cvtss_sh, unsigned short, float, 1)
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-23.c gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-23.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/i386/sse-23.c	Sun Oct 12 22:33:29 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/i386/sse-23.c	Sun Oct 19 22:32:33 2025
***************
*** 895,900 ****
  #define __builtin_ia32_minmaxsh_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxsh_mask_round (A, B, 100, D, E, 4)
  #define __builtin_ia32_minmaxss_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxss_mask_round (A, B, 100, D, E, 4)
  
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,xsavec,xsaves,clflushopt,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,vpclmulqdq,pconfig,wbnoinvd,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-transpose,amx-fp8,movrs,amx-movrs")
  
  #include <x86intrin.h>
--- 895,900 ----
  #define __builtin_ia32_minmaxsh_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxsh_mask_round (A, B, 100, D, E, 4)
  #define __builtin_ia32_minmaxss_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxss_mask_round (A, B, 100, D, E, 4)
  
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,xsavec,xsaves,clflushopt,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,vpclmulqdq,pconfig,wbnoinvd,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-tf32,amx-fp8,movrs,amx-movrs")
  
  #include <x86intrin.h>
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/add-synthesis-1.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/add-synthesis-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/add-synthesis-1.c	Sun Oct 12 22:33:30 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/add-synthesis-1.c	Sun Oct 19 22:32:33 2025
*************** T (4100)
*** 25,31 ****
  T (8200)
  
  TM (2049)
! TM (4096)
  TM (4100)
  TM (8200)
  
--- 25,31 ----
  T (8200)
  
  TM (2049)
! TM (4094)
  TM (4100)
  TM (8200)
  
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/pr120674.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/pr120674.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/pr120674.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/pr120674.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-g -w -march=rv32gcv -mabi=ilp32" { target rv32 } } */
+ /* { dg-additional-options "-g -w -march=rv64gcv -mabi=lp64d" { target rv64 } } */
+ 
+ #pragma riscv intrinsic "vector"
+ void GB_AxB_saxpy5_unrolled_rvv() { vfloat64m8_t vc; }
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/pr120811.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/pr120811.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/pr120811.c	Sun Oct 12 22:33:31 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/pr120811.c	Sun Oct 19 22:32:34 2025
*************** void q() {
*** 38,42 ****
  }
  /* { dg-final { scan-rtl-dump-not "const_sum_of_two_s12" "reload" } } */
  /* { dg-final { scan-rtl-dump-not "const_sum_of_two_s12" "late_combine2" } } */
! /* { dg-final { scan-assembler "addi.*sp,2047\n\tl\[dw\]\t.*,1\(.*\).*" } } */
! 
--- 38,41 ----
  }
  /* { dg-final { scan-rtl-dump-not "const_sum_of_two_s12" "reload" } } */
  /* { dg-final { scan-rtl-dump-not "const_sum_of_two_s12" "late_combine2" } } */
! /* { dg-final { scan-assembler "addi.*\[ats\]\[0-9\]*,sp,\[0-9\]*\n\tld\t.*,2047\(.*\).*" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-1.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-1.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rvi20u64 -mabi=lp64" } */
+ 
+ int main () {
+ 
+ #ifndef __riscv_rvi20u64
+ #error "__riscv_rvi20u64"
+ #endif
+ 
+   return 0;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-2.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-2.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rvi20u32 -mabi=ilp32" } */
+ 
+ int main () {
+ 
+ #ifndef __riscv_rvi20u32
+ #error "__riscv_rvi20u32"
+ #endif
+ 
+   return 0;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-3.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-3.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-3.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rva20u64 -mabi=lp64d" } */
+ 
+ int main () {
+ 
+ #ifndef __riscv_rva20u64
+ #error "__riscv_rva20u64"
+ #endif
+ 
+   return 0;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-4.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-4.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-4.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rva22u64 -mabi=lp64d" } */
+ 
+ int main () {
+ 
+ #ifndef __riscv_rva22u64
+ #error "__riscv_rva22u64"
+ #endif
+ 
+   return 0;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-5.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-5.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-5.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rva23u64 -mabi=lp64d" } */
+ 
+ int main () {
+ 
+ #ifndef __riscv_rva23u64
+ #error "__riscv_rva23u64"
+ #endif
+ 
+   return 0;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-6.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-6.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-6.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rva23s64 -mabi=lp64d" } */
+ 
+ int main () {
+ 
+ #ifndef __riscv_rva23s64
+ #error "__riscv_rva23s64"
+ #endif
+ 
+   return 0;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-7.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-7.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-7.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-7.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rvb23u64 -mabi=lp64d" } */
+ 
+ int main () {
+ 
+ #ifndef __riscv_rvb23u64
+ #error "__riscv_rvb23u64"
+ #endif
+ 
+   return 0;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-8.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-8.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/predef-profiles-8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/predef-profiles-8.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rvb23s64 -mabi=lp64d" } */
+ 
+ int main () {
+ 
+ #ifndef __riscv_rvb23s64
+ #error "__riscv_rvb23s64"
+ #endif
+ 
+   return 0;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr118019-2.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,50 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=rv64gcv_zvl512b -mabi=lp64d -mno-vector-strict-align" } */
+ 
+ /* Ensure we use strided loads.  */
+ 
+ typedef unsigned char uint8_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned int uint32_t;
+ 
+ #define HADAMARD4(d0, d1, d2, d3, s0, s1, s2, s3) {\
+     int t0 = s0 + s1;\
+     int t1 = s0 - s1;\
+     int t2 = s2 + s3;\
+     int t3 = s2 - s3;\
+     d0 = t0 + t2;\
+     d2 = t0 - t2;\
+     d1 = t1 + t3;\
+     d3 = t1 - t3;\
+ }
+ 
+ uint32_t
+ abs2 (uint32_t a)
+ {
+   uint32_t s = ((a >> 15) & 0x10001) * 0xffff;
+   return (a + s) ^ s;
+ }
+ 
+ int
+ x264_pixel_satd_8x4 (uint8_t *pix1, int i_pix1, uint8_t *pix2, int i_pix2)
+ {
+   uint32_t tmp[4][4];
+   uint32_t a0, a1, a2, a3;
+   int sum = 0;
+   for (int i = 0; i < 4; i++, pix1 += i_pix1, pix2 += i_pix2)
+     {
+       a0 = (pix1[0] - pix2[0]) + ((pix1[4] - pix2[4]) << 16);
+       a1 = (pix1[1] - pix2[1]) + ((pix1[5] - pix2[5]) << 16);
+       a2 = (pix1[2] - pix2[2]) + ((pix1[6] - pix2[6]) << 16);
+       a3 = (pix1[3] - pix2[3]) + ((pix1[7] - pix2[7]) << 16);
+       HADAMARD4 (tmp[i][0], tmp[i][1], tmp[i][2], tmp[i][3], a0, a1, a2, a3);
+     }
+   for (int i = 0; i < 4; i++)
+     {
+       HADAMARD4 (a0, a1, a2, a3, tmp[0][i], tmp[1][i], tmp[2][i], tmp[3][i]);
+       sum += abs2 (a0) + abs2 (a1) + abs2 (a2) + abs2 (a3);
+     }
+   return (((uint16_t) sum) + ((uint32_t) sum >> 16)) >> 1;
+ }
+ 
+ /* { dg-final { scan-assembler-times "vlse64" 8 } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h	Sun Oct 12 22:33:31 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_arith.h	Sun Oct 19 22:32:34 2025
*************** sat_u_mul_##NT##_from_##WT##_fmt_5 (NT a
*** 756,759 ****
--- 756,773 ----
    sat_u_mul_##NT##_from_##WT##_fmt_5 (a, b)
  #define RUN_SAT_U_MUL_FMT_5_WRAP(NT, WT, a, b) RUN_SAT_U_MUL_FMT_5(NT, WT, a, b)
  
+ #define DEF_SAT_U_MUL_FMT_6(NT, WT)             \
+ NT __attribute__((noinline))                    \
+ sat_u_mul_##NT##_from_##WT##_fmt_6 (NT a, NT b) \
+ {                                               \
+   WT x = (WT)a * (WT)b;                         \
+   NT max = -1;                                  \
+   return x > (WT)(max) ? max : (NT)x;           \
+ }
+ 
+ #define DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT) DEF_SAT_U_MUL_FMT_6(NT, WT)
+ #define RUN_SAT_U_MUL_FMT_6(NT, WT, a, b) \
+   sat_u_mul_##NT##_from_##WT##_fmt_6 (a, b)
+ #define RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, a, b) RUN_SAT_U_MUL_FMT_6(NT, WT, a, b)
+ 
  #endif
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u128.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u128.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u128.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u32.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u32.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint32_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv32.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv32.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv64.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv64.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u16-from-u64.rv64.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint16_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u128.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u128.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u128.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint32_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv32.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv32.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint32_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv64.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv64.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u32-from-u64.rv64.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint32_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u64-from-u128.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u64-from-u128.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u64-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u64-from-u128.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint64_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u128.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u128.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u128.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint128_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u16.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u16.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u16.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint16_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u32.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u32.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint32_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv32.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv32.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv64.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv64.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-7-u8-from-u64.rv64.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-optimized" } */
+ 
+ #include "sat_arith.h"
+ 
+ #define NT uint8_t
+ #define WT uint64_t
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u128.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u128.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u128.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u32.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u32.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint16_t
+ #define WT               uint32_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u64.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u64.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u16-from-u64.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint16_t
+ #define WT               uint64_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u128.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u128.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u128.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint32_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u64.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u64.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u32-from-u64.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint32_t
+ #define WT               uint64_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u64-from-u128.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u64-from-u128.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u64-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u64-from-u128.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint64_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u128.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u128.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u128.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint128_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u16.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u16.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u16.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint16_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u32.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u32.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u32.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint32_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u64.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u64.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-7-u8-from-u64.c	Sun Oct 19 22:32:34 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target { rv32 || rv64 } } } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ #include "sat_arith.h"
+ #include "sat_arith_data.h"
+ 
+ #define NT               uint8_t
+ #define WT               uint64_t
+ #define NAME             usmul
+ #define DATA             TEST_BINARY_DATA_WRAP(NT, NAME)
+ #define T                TEST_BINARY_STRUCT_DECL_WRAP(NT, NAME)
+ #define RUN_BINARY(x, y) RUN_SAT_U_MUL_FMT_6_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_6_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-1.c gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-1.c
*** gcc-16-20251012/gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-1.c	Sun Oct 12 22:33:32 2025
--- gcc-16-20251019/gcc/testsuite/gcc.target/riscv/sum-of-two-s12-const-1.c	Sun Oct 19 22:32:34 2025
*************** plus3(unsigned long i)
*** 26,32 ****
  long
  minus1(unsigned long i)
  {
!    return i - 4096;
  }
  
  long
--- 26,32 ----
  long
  minus1(unsigned long i)
  {
!    return i - 4094;
  }
  
  long
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gfortran.dg/conditional_1.f90 gcc-16-20251019/gcc/testsuite/gfortran.dg/conditional_1.f90
*** gcc-16-20251012/gcc/testsuite/gfortran.dg/conditional_1.f90	Sun Oct 12 22:33:33 2025
--- gcc-16-20251019/gcc/testsuite/gfortran.dg/conditional_1.f90	Sun Oct 19 22:32:36 2025
*************** program conditional_simple
*** 6,11 ****
--- 6,13 ----
    logical :: l = .true.
    real(4) :: r1 = 1.e-4, r2 = 1.e-5
    complex :: z = (3.0, 4.0)
+   character(kind=1, len=5) :: c1 = "hello", c2 = "world"
+   character(len=:), allocatable :: c3
  
    i = (i > 0 ? 1 : -1)
    if (i /= 1) stop 1
*************** program conditional_simple
*** 29,32 ****
--- 31,46 ----
    i = 0
    z = (i /= 0 ? z : (-3.0, -4.0))
    if (z /= (-3.0, -4.0)) stop 6
+ 
+   i = 0
+   c1 = (i /= 0 ? c1 : c2)
+   if (c1 /= "world") stop 7
+ 
+   i = 0
+   c1 = (i /= 0 ? "abcde" : "bcdef")
+   if (c1 /= "bcdef") stop 8
+ 
+   i = 0
+   c3 = (i /= 0 ? "abcde" : c2(1:3))
+   if (c3 /= "wor") stop 9
  end program conditional_simple
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gfortran.dg/conditional_2.f90 gcc-16-20251019/gcc/testsuite/gfortran.dg/conditional_2.f90
*** gcc-16-20251012/gcc/testsuite/gfortran.dg/conditional_2.f90	Sun Oct 12 22:33:33 2025
--- gcc-16-20251019/gcc/testsuite/gfortran.dg/conditional_2.f90	Sun Oct 19 22:32:36 2025
*************** program conditional_constant
*** 4,9 ****
--- 4,11 ----
    implicit none
    integer :: i = 42
  
+   print *, (.true. ? 1 : -1)
+   print *, (.false. ? "hello" : "world")
    i = (.true. ? 1 : -1)
    if (i /= 1) stop 1
  
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gfortran.dg/conditional_4.f90 gcc-16-20251019/gcc/testsuite/gfortran.dg/conditional_4.f90
*** gcc-16-20251012/gcc/testsuite/gfortran.dg/conditional_4.f90	Sun Oct 12 22:33:33 2025
--- gcc-16-20251019/gcc/testsuite/gfortran.dg/conditional_4.f90	Sun Oct 19 22:32:36 2025
*************** program conditional_resolve
*** 10,21 ****
    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
--- 10,25 ----
    integer, dimension(1, 1) :: a_2d
    logical :: l1(2)
    integer :: i1(2)
+   type :: Point
+     real :: x = 0.0
+   end type Point
+   type(Point) :: p1, p2
  
    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" }
!   p1 = (i /= 0 ? p1 : p2) ! { dg-error "Sorry, only integer, logical, real, complex and character 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-20251012/gcc/testsuite/gfortran.dg/conditional_6.f90 gcc-16-20251019/gcc/testsuite/gfortran.dg/conditional_6.f90
*** gcc-16-20251012/gcc/testsuite/gfortran.dg/conditional_6.f90	Sun Oct 12 22:33:33 2025
--- gcc-16-20251019/gcc/testsuite/gfortran.dg/conditional_6.f90	Sun Oct 19 22:32:36 2025
*************** program conditional_arg
*** 4,11 ****
--- 4,22 ----
    implicit none
    integer :: a = 4
    integer :: b = 5
+   character(kind=1, len=4) :: c4 = "abcd"
+   character(kind=1, len=5) :: c5 = "bcdef"
+ 
    call five((a < 5 ? a : b))
    if (a /= 5) stop 1
+ 
+   if (my_trim_len((b == 5 ? c4 : c5)) /= 4) stop 2
+   if (my_trim_len((b == 5 ? "abcd" : "abcde")) /= 4) stop 3
+   if (my_trim_len((b /= 5 ? c4 : c5)) /= 5) stop 4
+   if (my_trim_len((b /= 5 ? "abcd" : "abcde")) /= 5) stop 5
+ 
+   call five_c((b == 5 ? c4 : c5))
+   if (c4 /= "bcde") stop 6
  contains
    subroutine five(x)
      integer, optional :: x
*************** contains
*** 13,16 ****
--- 24,39 ----
        x = 5
      end if
    end subroutine five
+ 
+   integer function my_trim_len(s)
+     character(len=*), intent(in) :: s
+     my_trim_len = len_trim(s)
+   end function my_trim_len
+ 
+   subroutine five_c(x)
+     character(len=*), optional :: x
+     if (present(x)) then
+       x = c5
+     end if
+   end subroutine five_c
  end program conditional_arg
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gfortran.dg/pdt_59.f03 gcc-16-20251019/gcc/testsuite/gfortran.dg/pdt_59.f03
*** gcc-16-20251012/gcc/testsuite/gfortran.dg/pdt_59.f03	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gfortran.dg/pdt_59.f03	Sun Oct 19 22:32:36 2025
***************
*** 0 ****
--- 1,47 ----
+ ! { dg-do compile }
+ !
+ ! Test the fix for PR122191, which used to ICE in compilation.
+ !
+ ! Contributed by Damian Rouson  <damian@archaeologic.codes>
+ !
+ module input_output_pair_m
+   implicit none
+ 
+   type input_output_pair_t(k)
+     integer, kind :: k
+     integer :: a, b
+   end type
+ 
+   type mini_batch_t(k)
+     integer, kind :: k = kind(1.)
+     type(input_output_pair_t(k)), allocatable :: input_output_pairs_(:)
+   end type
+ 
+   interface
+ 
+     module function default_real_construct()
+       implicit none
+       type(mini_batch_t) default_real_construct
+     end function
+ 
+   end interface
+ 
+ end module
+ 
+ submodule(input_output_pair_m) input_output_pair_smod
+ contains
+   function default_real_construct()
+    type(mini_batch_t) default_real_construct
+    allocate (default_real_construct%input_output_pairs_(2))
+    default_real_construct%input_output_pairs_%a = [42,43]
+    default_real_construct%input_output_pairs_%b = [420,421]
+   end
+ end submodule
+ 
+   use input_output_pair_m
+   type(mini_batch_t), allocatable :: res
+   res = default_real_construct()
+   if (any (res%input_output_pairs_%a /= [42,43])) stop 1
+   if (any (res%input_output_pairs_%b /= [420,421])) stop 2
+   if (allocated (res)) deallocate (res)
+ end
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gm2/iso/fail/badconst.mod gcc-16-20251019/gcc/testsuite/gm2/iso/fail/badconst.mod
*** gcc-16-20251012/gcc/testsuite/gm2/iso/fail/badconst.mod	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gm2/iso/fail/badconst.mod	Sun Oct 19 22:32:37 2025
***************
*** 0 ****
--- 1,9 ----
+ MODULE badconst ;
+ 
+ CONST
+    foo = 1 ;
+ BEGIN
+    IF Foo = 1
+    THEN
+    END
+ END badconst.
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gm2/iso/fail/badtype.mod gcc-16-20251019/gcc/testsuite/gm2/iso/fail/badtype.mod
*** gcc-16-20251012/gcc/testsuite/gm2/iso/fail/badtype.mod	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gm2/iso/fail/badtype.mod	Sun Oct 19 22:32:37 2025
***************
*** 0 ****
--- 1,11 ----
+ MODULE badtype ;
+ 
+ FROM SYSTEM IMPORT TSIZE ;
+ 
+ TYPE
+    foo = CARDINAL ;
+ BEGIN
+    IF TSIZE (Foo) = 1
+    THEN
+    END
+ END badtype.
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gm2/iso/fail/badvar.mod gcc-16-20251019/gcc/testsuite/gm2/iso/fail/badvar.mod
*** gcc-16-20251012/gcc/testsuite/gm2/iso/fail/badvar.mod	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gm2/iso/fail/badvar.mod	Sun Oct 19 22:32:37 2025
***************
*** 0 ****
--- 1,7 ----
+ MODULE badvar ;
+ 
+ VAR
+    foo: CARDINAL ;
+ BEGIN
+    Foo := 1
+ END badvar.
diff -Nrcpad gcc-16-20251012/gcc/testsuite/gnat.dg/specs/style1.ads gcc-16-20251019/gcc/testsuite/gnat.dg/specs/style1.ads
*** gcc-16-20251012/gcc/testsuite/gnat.dg/specs/style1.ads	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/gcc/testsuite/gnat.dg/specs/style1.ads	Sun Oct 19 22:32:38 2025
***************
*** 0 ****
--- 1,19 ----
+ -- { dg-do compile }
+ -- { dg-options "-gnatyr" }
+ 
+ with Ada.Containers.Vectors;
+ with Ada.Unchecked_Conversion;
+ 
+ package Style1 is
+ 
+   package My_Vector is new ada.containers.vectors -- { dg-warning " bad casing" }
+     (Index_Type   => Positive,
+      Element_Type => Integer);
+ 
+   type Word is mod 2**32;
+ 
+   function My_Conv is new ada.unchecked_conversion -- { dg-warning " bad casing" }
+     (Source => Integer,
+      Target => Word);
+ 
+ end Style1;
diff -Nrcpad gcc-16-20251012/gcc/testsuite/lib/target-supports.exp gcc-16-20251019/gcc/testsuite/lib/target-supports.exp
*** gcc-16-20251012/gcc/testsuite/lib/target-supports.exp	Sun Oct 12 22:33:40 2025
--- gcc-16-20251019/gcc/testsuite/lib/target-supports.exp	Sun Oct 19 22:32:39 2025
*************** proc check_effective_target_amx_tf32 { }
*** 11238,11254 ****
      } "-mamx-tf32" ]
  }
  
- # Return 1 if amx-transpose instructions can be compiled.
- proc check_effective_target_amx_transpose { } {
-     return [check_no_compiler_messages amx_transpose object {
- 	void
- 	foo ()
- 	{
- 	  __asm__ volatile ("ttransposed\t%%tmm1, %%tmm2" ::);
- 	}
-     } "-mamx-transpose" ]
- }
- 
  # Return 1 if amx-fp8 instructions can be compiled.
  proc check_effective_target_amx_fp8 { } {
      return [check_no_compiler_messages amx_fp8 object {
--- 11238,11243 ----
diff -Nrcpad gcc-16-20251012/gcc/tree-core.h gcc-16-20251019/gcc/tree-core.h
*** gcc-16-20251012/gcc/tree-core.h	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-core.h	Sun Oct 19 22:32:39 2025
*************** struct die_struct;
*** 98,103 ****
--- 98,110 ----
  /* Nonzero if this is a function expected to end with an exception.  */
  #define ECF_XTHROW		  (1 << 16)
  
+ /* Flags for various callback attribute combinations.  These constants are only
+    meant to be used for the construction of builtin functions.  They were only
+    added because Fortran uses them for attributes of builtins.  */
+ 
+ /* callback(1, 2) */
+ #define ECF_CB_1_2		  (1 << 17)
+ 
  /* Call argument flags.  */
  
  /* Nonzero if the argument is not used by the function.  */
diff -Nrcpad gcc-16-20251012/gcc/tree-inline.cc gcc-16-20251019/gcc/tree-inline.cc
*** gcc-16-20251012/gcc/tree-inline.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-inline.cc	Sun Oct 19 22:32:39 2025
*************** copy_bb (copy_body_data *id, basic_block
*** 2359,2364 ****
--- 2359,2377 ----
  			  indirect->count
  			     = copy_basic_block->count.apply_probability (prob);
  			}
+ 		      /* If edge is a callback-carrying edge, copy all its
+ 			 attached edges as well.  */
+ 		      else if (edge->has_callback)
+ 			{
+ 			  edge
+ 			    = edge->clone (id->dst_node, call_stmt,
+ 					   gimple_uid (stmt), num, den, true);
+ 			  cgraph_edge *e;
+ 			  for (e = old_edge->first_callback_edge (); e;
+ 			       e = e->next_callback_edge ())
+ 			    edge = e->clone (id->dst_node, call_stmt,
+ 					     gimple_uid (stmt), num, den, true);
+ 			}
  		      else
  			{
  			  edge = edge->clone (id->dst_node, call_stmt,
*************** redirect_all_calls (copy_body_data * id,
*** 3051,3058 ****
  	    {
  	      if (!id->killed_new_ssa_names)
  		id->killed_new_ssa_names = new hash_set<tree> (16);
! 	      cgraph_edge::redirect_call_stmt_to_callee (edge,
! 		id->killed_new_ssa_names);
  
  	      if (stmt == last && id->call_stmt && maybe_clean_eh_stmt (stmt))
  		gimple_purge_dead_eh_edges (bb);
--- 3064,3081 ----
  	    {
  	      if (!id->killed_new_ssa_names)
  		id->killed_new_ssa_names = new hash_set<tree> (16);
! 	      cgraph_edge::redirect_call_stmt_to_callee (
! 		edge, id->killed_new_ssa_names);
! 	      if (edge->has_callback)
! 		{
! 		  /* When redirecting a carrying edge, we need to redirect its
! 		     attached edges as well.  */
! 		  cgraph_edge *cbe;
! 		  for (cbe = edge->first_callback_edge (); cbe;
! 		       cbe = cbe->next_callback_edge ())
! 		    cgraph_edge::redirect_call_stmt_to_callee (
! 		      cbe, id->killed_new_ssa_names);
! 		}
  
  	      if (stmt == last && id->call_stmt && maybe_clean_eh_stmt (stmt))
  		gimple_purge_dead_eh_edges (bb);
diff -Nrcpad gcc-16-20251012/gcc/tree-object-size.cc gcc-16-20251019/gcc/tree-object-size.cc
*** gcc-16-20251012/gcc/tree-object-size.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-object-size.cc	Sun Oct 19 22:32:39 2025
*************** check_for_plus_in_loops (struct object_s
*** 2145,2156 ****
        && gimple_assign_rhs_code (stmt) == POINTER_PLUS_EXPR)
      {
        tree basevar = gimple_assign_rhs1 (stmt);
!       tree cst = gimple_assign_rhs2 (stmt);
! 
!       gcc_assert (TREE_CODE (cst) == INTEGER_CST);
  
        /* Skip non-positive offsets.  */
!       if (integer_zerop (cst) || compare_tree_int (cst, offset_limit) > 0)
          return;
  
        osi->depths[SSA_NAME_VERSION (basevar)] = 1;
--- 2145,2155 ----
        && gimple_assign_rhs_code (stmt) == POINTER_PLUS_EXPR)
      {
        tree basevar = gimple_assign_rhs1 (stmt);
!       tree offset = gimple_assign_rhs2 (stmt);
  
        /* Skip non-positive offsets.  */
!       if (TREE_CODE (offset) != INTEGER_CST
! 	  || integer_zerop (offset) || compare_tree_int (offset, offset_limit) > 0)
          return;
  
        osi->depths[SSA_NAME_VERSION (basevar)] = 1;
diff -Nrcpad gcc-16-20251012/gcc/tree-parloops.cc gcc-16-20251019/gcc/tree-parloops.cc
*** gcc-16-20251012/gcc/tree-parloops.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-parloops.cc	Sun Oct 19 22:32:39 2025
*************** create_parallel_loop (class loop *loop,
*** 2601,2610 ****
        gsi = gsi_last_bb (paral_bb);
  
        gcc_checking_assert (n_threads != 0);
!       t = build_omp_clause (loc, OMP_CLAUSE_NUM_THREADS);
!       OMP_CLAUSE_NUM_THREADS_EXPR (t)
! 	= build_int_cst (integer_type_node, n_threads);
!       omp_par_stmt = gimple_build_omp_parallel (NULL, t, loop_fn, data);
        gimple_set_location (omp_par_stmt, loc);
  
        gsi_insert_after (&gsi, omp_par_stmt, GSI_NEW_STMT);
--- 2601,2619 ----
        gsi = gsi_last_bb (paral_bb);
  
        gcc_checking_assert (n_threads != 0);
!       if (n_threads == INT_MAX)
! 	/* No hardcoded thread count, let OpenMP runtime decide.  */
! 	omp_par_stmt = gimple_build_omp_parallel (NULL, NULL_TREE, loop_fn,
! 						  data);
!       else
! 	{
! 	  /* Build the OMP_CLAUSE_NUM_THREADS clause only if we have a fixed
! 	     thread count.  */
! 	  t = build_omp_clause (loc, OMP_CLAUSE_NUM_THREADS);
! 	  OMP_CLAUSE_NUM_THREADS_EXPR (t)
! 	    = build_int_cst (integer_type_node, n_threads);
! 	  omp_par_stmt = gimple_build_omp_parallel (NULL, t, loop_fn, data);
! 	}
        gimple_set_location (omp_par_stmt, loc);
  
        gsi_insert_after (&gsi, omp_par_stmt, GSI_NEW_STMT);
*************** gen_parallel_loop (class loop *loop,
*** 2812,2818 ****
    struct clsn_data clsn_data;
    location_t loc;
    gimple *cond_stmt;
-   unsigned int m_p_thread=2;
  
    /* From
  
--- 2821,2826 ----
*************** gen_parallel_loop (class loop *loop,
*** 2885,2899 ****
  
    if (!oacc_kernels_p)
      {
-       if (loop->inner)
- 	m_p_thread=2;
-       else
- 	m_p_thread=MIN_PER_THREAD;
- 
        gcc_checking_assert (n_threads != 0);
        many_iterations_cond =
  	fold_build2 (GE_EXPR, boolean_type_node,
! 		     nit, build_int_cst (type, m_p_thread * n_threads - 1));
  
        many_iterations_cond
  	= fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
--- 2893,2906 ----
  
    if (!oacc_kernels_p)
      {
        gcc_checking_assert (n_threads != 0);
+       /* For runtime thread detection, use a conservative estimate of 2 threads
+ 	 for the many iterations condition check.  */
+       unsigned threads = (n_threads == INT_MAX) ? 2 : n_threads;
+       unsigned m_p_thread = loop->inner ? 2 : MIN_PER_THREAD;
        many_iterations_cond =
  	fold_build2 (GE_EXPR, boolean_type_node,
! 		     nit, build_int_cst (type, m_p_thread * threads - 1));
  
        many_iterations_cond
  	= fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
*************** parallelize_loops (bool oacc_kernels_p)
*** 3905,3918 ****
        estimated = estimated_loop_iterations_int (loop);
        if (estimated == -1)
  	estimated = get_likely_max_loop_iterations_int (loop);
        /* FIXME: Bypass this check as graphite doesn't update the
  	 count and frequency correctly now.  */
        if (!flag_loop_parallelize_all
  	  && !oacc_kernels_p
  	  && ((estimated != -1
! 	       && (estimated
! 		   < ((HOST_WIDE_INT) n_threads
! 		      * (loop->inner ? 2 : MIN_PER_THREAD) - 1)))
  	      /* Do not bother with loops in cold areas.  */
  	      || optimize_loop_nest_for_size_p (loop)))
  	continue;
--- 3912,3926 ----
        estimated = estimated_loop_iterations_int (loop);
        if (estimated == -1)
  	estimated = get_likely_max_loop_iterations_int (loop);
+       /* For runtime thread detection, use an estimate of 2 threads.  */
+       unsigned threads = (n_threads == INT_MAX) ? 2 : n_threads;
+       unsigned m_p_thread = loop->inner ? 2 : MIN_PER_THREAD;
        /* FIXME: Bypass this check as graphite doesn't update the
  	 count and frequency correctly now.  */
        if (!flag_loop_parallelize_all
  	  && !oacc_kernels_p
  	  && ((estimated != -1
! 	       && (estimated < ((HOST_WIDE_INT) threads * m_p_thread - 1)))
  	      /* Do not bother with loops in cold areas.  */
  	      || optimize_loop_nest_for_size_p (loop)))
  	continue;
diff -Nrcpad gcc-16-20251012/gcc/tree-ssa-dce.cc gcc-16-20251019/gcc/tree-ssa-dce.cc
*** gcc-16-20251012/gcc/tree-ssa-dce.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-ssa-dce.cc	Sun Oct 19 22:32:39 2025
*************** eliminate_unnecessary_stmts (bool aggres
*** 1682,1690 ****
  		  update_stmt (call_stmt);
  		  release_ssa_name (name);
  
  		  /* GOMP_SIMD_LANE (unless three argument) or ASAN_POISON
  		     without lhs is not needed.  */
! 		  if (gimple_call_internal_p (call_stmt))
  		    switch (gimple_call_internal_fn (call_stmt))
  		      {
  		      case IFN_GOMP_SIMD_LANE:
--- 1682,1693 ----
  		  update_stmt (call_stmt);
  		  release_ssa_name (name);
  
+ 		  /* __builtin_stack_save without lhs is not needed.  */
+ 		  if (gimple_call_builtin_p (call_stmt, BUILT_IN_STACK_SAVE))
+ 		    remove_dead_stmt (&gsi, bb, to_remove_edges);
  		  /* GOMP_SIMD_LANE (unless three argument) or ASAN_POISON
  		     without lhs is not needed.  */
! 		  else if (gimple_call_internal_p (call_stmt))
  		    switch (gimple_call_internal_fn (call_stmt))
  		      {
  		      case IFN_GOMP_SIMD_LANE:
diff -Nrcpad gcc-16-20251012/gcc/tree-ssa-dom.cc gcc-16-20251019/gcc/tree-ssa-dom.cc
*** gcc-16-20251012/gcc/tree-ssa-dom.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-ssa-dom.cc	Sun Oct 19 22:32:39 2025
*************** cprop_operand (gimple *stmt, use_operand
*** 2040,2050 ****
  
    if (val && val != op)
      {
-       /* Do not replace hard register operands in asm statements.  */
-       if (gimple_code (stmt) == GIMPLE_ASM
- 	  && !may_propagate_copy_into_asm (op))
- 	return;
- 
        /* Certain operands are not allowed to be copy propagated due
  	 to their interaction with exception handling and some GCC
  	 extensions.  */
--- 2040,2045 ----
diff -Nrcpad gcc-16-20251012/gcc/tree-ssa-loop-unswitch.cc gcc-16-20251019/gcc/tree-ssa-loop-unswitch.cc
*** gcc-16-20251012/gcc/tree-ssa-loop-unswitch.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-ssa-loop-unswitch.cc	Sun Oct 19 22:32:39 2025
*************** struct unswitch_predicate
*** 136,142 ****
      tree rhs = gimple_cond_rhs (stmt);
      enum tree_code code = gimple_cond_code (stmt);
      condition = build2 (code, boolean_type_node, lhs, rhs);
!     count = EDGE_SUCC (bb, 0)->count ().max (EDGE_SUCC (bb, 1)->count ());
      if (irange::supports_p (TREE_TYPE (lhs)))
        {
  	auto range_op = range_op_handler (code);
--- 136,143 ----
      tree rhs = gimple_cond_rhs (stmt);
      enum tree_code code = gimple_cond_code (stmt);
      condition = build2 (code, boolean_type_node, lhs, rhs);
!     count = profile_count::max_prefer_initialized (EDGE_SUCC (bb, 0)->count (),
! 						   EDGE_SUCC (bb, 1)->count ());
      if (irange::supports_p (TREE_TYPE (lhs)))
        {
  	auto range_op = range_op_handler (code);
diff -Nrcpad gcc-16-20251012/gcc/tree-ssa-phiopt.cc gcc-16-20251019/gcc/tree-ssa-phiopt.cc
*** gcc-16-20251012/gcc/tree-ssa-phiopt.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-ssa-phiopt.cc	Sun Oct 19 22:32:39 2025
*************** cond_if_else_store_replacement_1 (basic_
*** 3648,3663 ****
  
    if (then_assign == NULL
        || !gimple_assign_single_p (then_assign)
-       || gimple_clobber_p (then_assign)
-       || gimple_has_volatile_ops (then_assign)
        || else_assign == NULL
        || !gimple_assign_single_p (else_assign)
-       || gimple_clobber_p (else_assign)
-       || gimple_has_volatile_ops (else_assign)
        || stmt_references_abnormal_ssa_name (then_assign)
        || stmt_references_abnormal_ssa_name (else_assign))
      return false;
  
    lhs = gimple_assign_lhs (then_assign);
    if (!operand_equal_p (lhs, gimple_assign_lhs (else_assign), 0))
      return false;
--- 3648,3667 ----
  
    if (then_assign == NULL
        || !gimple_assign_single_p (then_assign)
        || else_assign == NULL
        || !gimple_assign_single_p (else_assign)
        || stmt_references_abnormal_ssa_name (then_assign)
        || stmt_references_abnormal_ssa_name (else_assign))
      return false;
  
+   /* Allow both being clobbers but no other volatile operations. */
+   if (gimple_clobber_p (then_assign)
+       && gimple_clobber_p (else_assign))
+     ;
+   else if (gimple_has_volatile_ops (then_assign)
+ 	   || gimple_has_volatile_ops (else_assign))
+    return false;
+ 
    lhs = gimple_assign_lhs (then_assign);
    if (!operand_equal_p (lhs, gimple_assign_lhs (else_assign), 0))
      return false;
*************** cond_if_else_store_replacement_1 (basic_
*** 3674,3680 ****
  
    if (!is_gimple_reg_type (TREE_TYPE (lhs)))
      {
!       if (!operand_equal_p (then_rhs, else_rhs))
  	return false;
        /* Currently only handle commoning of `= {}`.   */
        if (TREE_CODE (then_rhs) != CONSTRUCTOR)
--- 3678,3691 ----
  
    if (!is_gimple_reg_type (TREE_TYPE (lhs)))
      {
!       /* Handle clobbers seperately as operand_equal_p does not check
! 	 the kind of the clobbers being the same. */
!       if (TREE_CLOBBER_P (then_rhs) && TREE_CLOBBER_P (else_rhs))
! 	{
! 	  if (CLOBBER_KIND (then_rhs) != CLOBBER_KIND  (else_rhs))
! 	    return false;
! 	}
!       else if (!operand_equal_p (then_rhs, else_rhs))
  	return false;
        /* Currently only handle commoning of `= {}`.   */
        if (TREE_CODE (then_rhs) != CONSTRUCTOR)
*************** cond_if_else_store_replacement_1 (basic_
*** 3683,3689 ****
  
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
!       fprintf(dump_file, "factoring out stores:\n\tthen:\n");
        print_gimple_stmt (dump_file, then_assign, 0,
  			 TDF_VOPS|TDF_MEMSYMS);
        fprintf(dump_file, "\telse:\n");
--- 3694,3703 ----
  
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
!       if (TREE_CLOBBER_P (then_rhs))
! 	fprintf(dump_file, "factoring out clobber:\n\tthen:\n");
!       else
! 	fprintf(dump_file, "factoring out stores:\n\tthen:\n");
        print_gimple_stmt (dump_file, then_assign, 0,
  			 TDF_VOPS|TDF_MEMSYMS);
        fprintf(dump_file, "\telse:\n");
*************** pass_phiopt::execute (function *)
*** 4555,4562 ****
  	    hoist_adjacent_loads (bb, bb1, bb2, bb3);
  
  	  /* Try to see if there are only store in each side of the if
! 	     and try to remove that.  */
! 	  if (EDGE_COUNT (bb3->preds) == 2)
  	    while (cond_if_else_store_replacement_limited (bb1, bb2, bb3))
  	      ;
  	}
--- 4569,4576 ----
  	    hoist_adjacent_loads (bb, bb1, bb2, bb3);
  
  	  /* Try to see if there are only store in each side of the if
! 	     and try to remove that; don't do this for -Og.  */
! 	  if (EDGE_COUNT (bb3->preds) == 2 && !optimize_debug)
  	    while (cond_if_else_store_replacement_limited (bb1, bb2, bb3))
  	      ;
  	}
*************** pass_phiopt::execute (function *)
*** 4572,4578 ****
  
        /* Factor out operations from the phi if possible. */
        if (single_pred_p (bb1)
! 	  && EDGE_COUNT (merge->preds) == 2)
  	{
  	  for (gsi = gsi_start (phis); !gsi_end_p (gsi); )
  	    {
--- 4586,4593 ----
  
        /* Factor out operations from the phi if possible. */
        if (single_pred_p (bb1)
! 	  && EDGE_COUNT (merge->preds) == 2
! 	  && !optimize_debug)
  	{
  	  for (gsi = gsi_start (phis); !gsi_end_p (gsi); )
  	    {
diff -Nrcpad gcc-16-20251012/gcc/tree-ssa-propagate.cc gcc-16-20251019/gcc/tree-ssa-propagate.cc
*** gcc-16-20251012/gcc/tree-ssa-propagate.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-ssa-propagate.cc	Sun Oct 19 22:32:39 2025
*************** substitute_and_fold_engine::replace_uses
*** 578,587 ****
        if (val == tuse || val == NULL_TREE)
  	continue;
  
-       if (gimple_code (stmt) == GIMPLE_ASM
- 	  && !may_propagate_copy_into_asm (tuse))
- 	continue;
- 
        if (!may_propagate_copy (tuse, val))
  	continue;
  
--- 578,583 ----
*************** may_propagate_copy_into_stmt (gimple *de
*** 1142,1156 ****
    return true;
  }
  
- /* Similarly, but we know that we're propagating into an ASM_EXPR.  */
- 
- bool
- may_propagate_copy_into_asm (tree dest ATTRIBUTE_UNUSED)
- {
-   return true;
- }
- 
- 
  /* Replace *OP_P with value VAL (assumed to be a constant or another SSA_NAME).
  
     Use this version when not const/copy propagating values.  For example,
--- 1138,1143 ----
diff -Nrcpad gcc-16-20251012/gcc/tree-ssa-propagate.h gcc-16-20251019/gcc/tree-ssa-propagate.h
*** gcc-16-20251012/gcc/tree-ssa-propagate.h	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-ssa-propagate.h	Sun Oct 19 22:32:39 2025
*************** extern void move_ssa_defining_stmt_for_d
*** 67,73 ****
  extern bool stmt_makes_single_store (gimple *);
  extern bool may_propagate_copy (tree, tree, bool = false);
  extern bool may_propagate_copy_into_stmt (gimple *, tree);
- extern bool may_propagate_copy_into_asm (tree);
  extern void propagate_value (use_operand_p, tree);
  extern void replace_exp (use_operand_p, tree);
  extern void propagate_tree_value (tree *, tree);
--- 67,72 ----
diff -Nrcpad gcc-16-20251012/gcc/tree-vect-loop.cc gcc-16-20251019/gcc/tree-vect-loop.cc
*** gcc-16-20251012/gcc/tree-vect-loop.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-vect-loop.cc	Sun Oct 19 22:32:39 2025
*************** along with GCC; see the file COPYING3.
*** 161,167 ****
  static void vect_estimate_min_profitable_iters (loop_vec_info, int *, int *,
  						unsigned *);
  static stmt_vec_info vect_is_simple_reduction (loop_vec_info, stmt_vec_info,
! 					       gphi **, bool *, bool);
  
  
  /* Function vect_is_simple_iv_evolution.
--- 161,167 ----
  static void vect_estimate_min_profitable_iters (loop_vec_info, int *, int *,
  						unsigned *);
  static stmt_vec_info vect_is_simple_reduction (loop_vec_info, stmt_vec_info,
! 					       gphi **);
  
  
  /* Function vect_is_simple_iv_evolution.
*************** vect_phi_first_order_recurrence_p (loop_
*** 341,348 ****
     slp analyses or not.  */
  
  static void
! vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, class loop *loop,
! 			      bool slp)
  {
    basic_block bb = loop->header;
    auto_vec<stmt_vec_info, 64> worklist;
--- 341,347 ----
     slp analyses or not.  */
  
  static void
! vect_analyze_scalar_cycles_1 (loop_vec_info loop_vinfo, class loop *loop)
  {
    basic_block bb = loop->header;
    auto_vec<stmt_vec_info, 64> worklist;
*************** vect_analyze_scalar_cycles_1 (loop_vec_i
*** 425,443 ****
  		  && STMT_VINFO_DEF_TYPE (stmt_vinfo) == vect_unknown_def_type);
  
        gphi *double_reduc;
-       bool reduc_chain;
        stmt_vec_info reduc_stmt_info
! 	= vect_is_simple_reduction (loop_vinfo, stmt_vinfo, &double_reduc,
! 				    &reduc_chain, slp);
        if (reduc_stmt_info && double_reduc)
          {
- 	  bool inner_chain;
  	  stmt_vec_info inner_phi_info
  	      = loop_vinfo->lookup_stmt (double_reduc);
  	  /* ???  Pass down flag we're the inner loop of a double reduc.  */
  	  stmt_vec_info inner_reduc_info
! 	    = vect_is_simple_reduction (loop_vinfo, inner_phi_info,
! 					NULL, &inner_chain, slp);
  	  if (inner_reduc_info)
  	    {
  	      STMT_VINFO_REDUC_DEF (stmt_vinfo) = reduc_stmt_info;
--- 424,438 ----
  		  && STMT_VINFO_DEF_TYPE (stmt_vinfo) == vect_unknown_def_type);
  
        gphi *double_reduc;
        stmt_vec_info reduc_stmt_info
! 	= vect_is_simple_reduction (loop_vinfo, stmt_vinfo, &double_reduc);
        if (reduc_stmt_info && double_reduc)
          {
  	  stmt_vec_info inner_phi_info
  	      = loop_vinfo->lookup_stmt (double_reduc);
  	  /* ???  Pass down flag we're the inner loop of a double reduc.  */
  	  stmt_vec_info inner_reduc_info
! 	    = vect_is_simple_reduction (loop_vinfo, inner_phi_info, NULL);
  	  if (inner_reduc_info)
  	    {
  	      STMT_VINFO_REDUC_DEF (stmt_vinfo) = reduc_stmt_info;
*************** vect_analyze_scalar_cycles_1 (loop_vec_i
*** 478,489 ****
  
  	      STMT_VINFO_DEF_TYPE (stmt_vinfo) = vect_reduction_def;
  	      STMT_VINFO_DEF_TYPE (reduc_stmt_info) = vect_reduction_def;
! 	      /* Store the reduction cycles for possible vectorization in
! 		 loop-aware SLP if it was not detected as reduction
! 		 chain.  */
! 	      if (! reduc_chain)
! 		LOOP_VINFO_REDUCTIONS (loop_vinfo).safe_push
! 		    (reduc_stmt_info);
  	    }
  	}
        else if (vect_phi_first_order_recurrence_p (loop_vinfo, loop, phi))
--- 473,479 ----
  
  	      STMT_VINFO_DEF_TYPE (stmt_vinfo) = vect_reduction_def;
  	      STMT_VINFO_DEF_TYPE (reduc_stmt_info) = vect_reduction_def;
! 	      LOOP_VINFO_REDUCTIONS (loop_vinfo).safe_push (reduc_stmt_info);
  	    }
  	}
        else if (vect_phi_first_order_recurrence_p (loop_vinfo, loop, phi))
*************** vect_analyze_scalar_cycles_1 (loop_vec_i
*** 518,528 ****
                   a[i] = i;  */
  
  static void
! vect_analyze_scalar_cycles (loop_vec_info loop_vinfo, bool slp)
  {
    class loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
  
!   vect_analyze_scalar_cycles_1 (loop_vinfo, loop, slp);
  
    /* When vectorizing an outer-loop, the inner-loop is executed sequentially.
       Reductions in such inner-loop therefore have different properties than
--- 508,518 ----
                   a[i] = i;  */
  
  static void
! vect_analyze_scalar_cycles (loop_vec_info loop_vinfo)
  {
    class loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
  
!   vect_analyze_scalar_cycles_1 (loop_vinfo, loop);
  
    /* When vectorizing an outer-loop, the inner-loop is executed sequentially.
       Reductions in such inner-loop therefore have different properties than
*************** vect_analyze_scalar_cycles (loop_vec_inf
*** 534,620 ****
          current checks are too strict.  */
  
    if (loop->inner)
!     vect_analyze_scalar_cycles_1 (loop_vinfo, loop->inner, slp);
! }
! 
! /* Transfer group and reduction information from STMT_INFO to its
!    pattern stmt.  */
! 
! static void
! vect_fixup_reduc_chain (stmt_vec_info stmt_info)
! {
!   stmt_vec_info firstp = STMT_VINFO_RELATED_STMT (stmt_info);
!   stmt_vec_info stmtp;
!   gcc_assert (!REDUC_GROUP_FIRST_ELEMENT (firstp)
! 	      && REDUC_GROUP_FIRST_ELEMENT (stmt_info));
!   REDUC_GROUP_SIZE (firstp) = REDUC_GROUP_SIZE (stmt_info);
!   do
!     {
!       stmtp = STMT_VINFO_RELATED_STMT (stmt_info);
!       gcc_checking_assert (STMT_VINFO_DEF_TYPE (stmtp)
! 			   == STMT_VINFO_DEF_TYPE (stmt_info));
!       REDUC_GROUP_FIRST_ELEMENT (stmtp) = firstp;
!       stmt_info = REDUC_GROUP_NEXT_ELEMENT (stmt_info);
!       if (stmt_info)
! 	REDUC_GROUP_NEXT_ELEMENT (stmtp)
! 	  = STMT_VINFO_RELATED_STMT (stmt_info);
!     }
!   while (stmt_info);
! }
! 
! /* Fixup scalar cycles that now have their stmts detected as patterns.  */
! 
! static void
! vect_fixup_scalar_cycles_with_patterns (loop_vec_info loop_vinfo)
! {
!   stmt_vec_info first;
!   unsigned i;
! 
!   FOR_EACH_VEC_ELT (LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo), i, first)
!     {
!       stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (first);
!       while (next)
! 	{
! 	  if ((STMT_VINFO_IN_PATTERN_P (next)
! 	       != STMT_VINFO_IN_PATTERN_P (first))
! 	      || STMT_VINFO_REDUC_IDX (vect_stmt_to_vectorize (next)) == -1)
! 	    break;
! 	  next = REDUC_GROUP_NEXT_ELEMENT (next);
! 	}
!       /* If all reduction chain members are well-formed patterns adjust
! 	 the group to group the pattern stmts instead.  */
!       if (! next
! 	  && STMT_VINFO_REDUC_IDX (vect_stmt_to_vectorize (first)) != -1)
! 	{
! 	  if (STMT_VINFO_IN_PATTERN_P (first))
! 	    {
! 	      vect_fixup_reduc_chain (first);
! 	      LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo)[i]
! 		= STMT_VINFO_RELATED_STMT (first);
! 	    }
! 	}
!       /* If not all stmt in the chain are patterns or if we failed
! 	 to update STMT_VINFO_REDUC_IDX dissolve the chain and handle
! 	 it as regular reduction instead.  */
!       else
! 	{
! 	  stmt_vec_info vinfo = first;
! 	  stmt_vec_info last = NULL;
! 	  while (vinfo)
! 	    {
! 	      next = REDUC_GROUP_NEXT_ELEMENT (vinfo);
! 	      REDUC_GROUP_FIRST_ELEMENT (vinfo) = NULL;
! 	      REDUC_GROUP_NEXT_ELEMENT (vinfo) = NULL;
! 	      last = vinfo;
! 	      vinfo = next;
! 	    }
! 	  STMT_VINFO_DEF_TYPE (vect_stmt_to_vectorize (first))
! 	    = vect_internal_def;
! 	  loop_vinfo->reductions.safe_push (vect_stmt_to_vectorize (last));
! 	  LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo).unordered_remove (i);
! 	  --i;
! 	}
!     }
  }
  
  /* Function vect_get_loop_niters.
--- 524,530 ----
          current checks are too strict.  */
  
    if (loop->inner)
!     vect_analyze_scalar_cycles_1 (loop_vinfo, loop->inner);
  }
  
  /* Function vect_get_loop_niters.
*************** vect_analyze_loop_2 (loop_vec_info loop_
*** 2264,2275 ****
  
    /* Classify all cross-iteration scalar data-flow cycles.
       Cross-iteration cycles caused by virtual phis are analyzed separately.  */
!   vect_analyze_scalar_cycles (loop_vinfo, !force_single_lane);
  
    vect_pattern_recog (loop_vinfo);
  
-   vect_fixup_scalar_cycles_with_patterns (loop_vinfo);
- 
    /* Analyze the access patterns of the data-refs in the loop (consecutive,
       complex, etc.). FORNOW: Only handle consecutive access pattern.  */
  
--- 2174,2183 ----
  
    /* Classify all cross-iteration scalar data-flow cycles.
       Cross-iteration cycles caused by virtual phis are analyzed separately.  */
!   vect_analyze_scalar_cycles (loop_vinfo);
  
    vect_pattern_recog (loop_vinfo);
  
    /* Analyze the access patterns of the data-refs in the loop (consecutive,
       complex, etc.). FORNOW: Only handle consecutive access pattern.  */
  
*************** again:
*** 2678,2687 ****
    if (applying_suggested_uf)
      return ok;
  
-   /* If there are reduction chains re-trying will fail anyway.  */
-   if (! LOOP_VINFO_REDUCTION_CHAINS (loop_vinfo).is_empty ())
-     return ok;
- 
    /* Likewise if the grouped loads or stores in the SLP cannot be handled
       via interleaving or lane instructions.  */
    slp_instance instance;
--- 2586,2591 ----
*************** check_reduction_path (dump_user_location
*** 3756,3762 ****
  
  static stmt_vec_info
  vect_is_simple_reduction (loop_vec_info loop_info, stmt_vec_info phi_info,
! 			  gphi **double_reduc, bool *reduc_chain_p, bool slp)
  {
    gphi *phi = as_a <gphi *> (phi_info->stmt);
    gimple *phi_use_stmt = NULL;
--- 3660,3666 ----
  
  static stmt_vec_info
  vect_is_simple_reduction (loop_vec_info loop_info, stmt_vec_info phi_info,
! 			  gphi **double_reduc)
  {
    gphi *phi = as_a <gphi *> (phi_info->stmt);
    gimple *phi_use_stmt = NULL;
*************** vect_is_simple_reduction (loop_vec_info
*** 3768,3774 ****
    bool inner_loop_of_double_reduc = double_reduc == NULL;
    if (double_reduc)
      *double_reduc = NULL;
-   *reduc_chain_p = false;
    STMT_VINFO_REDUC_TYPE (phi_info) = TREE_CODE_REDUCTION;
  
    tree phi_name = PHI_RESULT (phi);
--- 3672,3677 ----
*************** vect_is_simple_reduction (loop_vec_info
*** 3918,3929 ****
        if (code == COND_EXPR && !nested_in_vect_loop)
  	STMT_VINFO_REDUC_TYPE (phi_info) = COND_REDUCTION;
  
!       /* Fill in STMT_VINFO_REDUC_IDX and gather stmts for an SLP
! 	 reduction chain for which the additional restriction is that
! 	 all operations in the chain are the same.  */
!       auto_vec<stmt_vec_info, 8> reduc_chain;
        unsigned i;
-       bool is_slp_reduc = !nested_in_vect_loop && code != COND_EXPR;
        for (i = path.length () - 1; i >= 1; --i)
  	{
  	  gimple *stmt = USE_STMT (path[i].second);
--- 3821,3828 ----
        if (code == COND_EXPR && !nested_in_vect_loop)
  	STMT_VINFO_REDUC_TYPE (phi_info) = COND_REDUCTION;
  
!       /* Fill in STMT_VINFO_REDUC_IDX.  */
        unsigned i;
        for (i = path.length () - 1; i >= 1; --i)
  	{
  	  gimple *stmt = USE_STMT (path[i].second);
*************** vect_is_simple_reduction (loop_vec_info
*** 3940,3978 ****
  	      STMT_VINFO_REDUC_IDX (stmt_info)
  		= path[i].second->use - gimple_call_arg_ptr (call, 0);
  	    }
- 	  bool leading_conversion = (CONVERT_EXPR_CODE_P (op.code)
- 				     && (i == 1 || i == path.length () - 1));
- 	  if ((op.code != code && !leading_conversion)
- 	      /* We can only handle the final value in epilogue
- 		 generation for reduction chains.  */
- 	      || (i != 1 && !has_single_use (gimple_get_lhs (stmt))))
- 	    is_slp_reduc = false;
- 	  /* For reduction chains we support a trailing/leading
- 	     conversions.  We do not store those in the actual chain.  */
- 	  if (leading_conversion)
- 	    continue;
- 	  reduc_chain.safe_push (stmt_info);
- 	}
-       if (slp && is_slp_reduc && reduc_chain.length () > 1)
- 	{
- 	  for (unsigned i = 0; i < reduc_chain.length () - 1; ++i)
- 	    {
- 	      REDUC_GROUP_FIRST_ELEMENT (reduc_chain[i]) = reduc_chain[0];
- 	      REDUC_GROUP_NEXT_ELEMENT (reduc_chain[i]) = reduc_chain[i+1];
- 	    }
- 	  REDUC_GROUP_FIRST_ELEMENT (reduc_chain.last ()) = reduc_chain[0];
- 	  REDUC_GROUP_NEXT_ELEMENT (reduc_chain.last ()) = NULL;
- 
- 	  /* Save the chain for further analysis in SLP detection.  */
- 	  LOOP_VINFO_REDUCTION_CHAINS (loop_info).safe_push (reduc_chain[0]);
- 	  REDUC_GROUP_SIZE (reduc_chain[0]) = reduc_chain.length ();
- 
- 	  *reduc_chain_p = true;
- 	  if (dump_enabled_p ())
- 	    dump_printf_loc (MSG_NOTE, vect_location,
- 			    "reduction: detected reduction chain\n");
  	}
!       else if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location,
  			 "reduction: detected reduction\n");
  
--- 3839,3846 ----
  	      STMT_VINFO_REDUC_IDX (stmt_info)
  		= path[i].second->use - gimple_call_arg_ptr (call, 0);
  	    }
  	}
!       if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location,
  			 "reduction: detected reduction\n");
  
*************** vect_create_epilog_for_reduction (loop_v
*** 5390,5396 ****
    tree new_temp = NULL_TREE, new_name, new_scalar_dest;
    gimple *epilog_stmt = NULL;
    gimple *exit_phi;
-   tree bitsize;
    tree def;
    tree orig_name, scalar_result;
    imm_use_iterator imm_iter;
--- 5258,5263 ----
*************** vect_create_epilog_for_reduction (loop_v
*** 5405,5412 ****
       # b1 = phi <b2, b0>
       a2 = operation (a1)
       b2 = operation (b1)  */
!   const bool slp_reduc
!     = SLP_INSTANCE_KIND (slp_node_instance) != slp_inst_kind_reduc_chain;
    tree induction_index = NULL_TREE;
  
    unsigned int group_size = SLP_TREE_LANES (slp_node);
--- 5272,5278 ----
       # b1 = phi <b2, b0>
       a2 = operation (a1)
       b2 = operation (b1)  */
!   const bool slp_reduc = !reduc_info->is_reduc_chain;
    tree induction_index = NULL_TREE;
  
    unsigned int group_size = SLP_TREE_LANES (slp_node);
*************** vect_create_epilog_for_reduction (loop_v
*** 5608,5614 ****
    scalar_results.truncate (0);
    scalar_results.reserve_exact (group_size);
    new_scalar_dest = vect_create_destination_var (scalar_dest, NULL);
-   bitsize = TYPE_SIZE (scalar_type);
  
    /* True if we should implement SLP_REDUC using native reduction operations
       instead of scalar operations.  */
--- 5474,5479 ----
*************** vect_create_epilog_for_reduction (loop_v
*** 6030,6035 ****
--- 5895,5901 ----
  
        if (reduce_with_shift && (!slp_reduc || group_size == 1))
  	{
+ 	  tree bitsize = TYPE_SIZE (TREE_TYPE (vectype1));
  	  int element_bitsize = tree_to_uhwi (bitsize);
  	  /* Enforced by vectorizable_reduction, which disallows SLP reductions
  	     for variable-length vectors and also requires direct target support
*************** vect_create_epilog_for_reduction (loop_v
*** 6098,6106 ****
              dump_printf_loc (MSG_NOTE, vect_location,
  			     "Reduce using scalar code.\n");
  
  	  int vec_size_in_bits = tree_to_uhwi (TYPE_SIZE (vectype1));
  	  int element_bitsize = tree_to_uhwi (bitsize);
- 	  tree compute_type = TREE_TYPE (vectype);
  	  gimple_seq stmts = NULL;
  	  FOR_EACH_VEC_ELT (reduc_inputs, i, vec_temp)
              {
--- 5964,5973 ----
              dump_printf_loc (MSG_NOTE, vect_location,
  			     "Reduce using scalar code.\n");
  
+ 	  tree compute_type = TREE_TYPE (vectype1);
+ 	  tree bitsize = TYPE_SIZE (compute_type);
  	  int vec_size_in_bits = tree_to_uhwi (TYPE_SIZE (vectype1));
  	  int element_bitsize = tree_to_uhwi (bitsize);
  	  gimple_seq stmts = NULL;
  	  FOR_EACH_VEC_ELT (reduc_inputs, i, vec_temp)
              {
*************** vectorizable_reduction (loop_vec_info lo
*** 6956,6963 ****
    bool single_defuse_cycle = false;
    tree cr_index_scalar_type = NULL_TREE, cr_index_vector_type = NULL_TREE;
    tree cond_reduc_val = NULL_TREE;
-   const bool reduc_chain
-     = SLP_INSTANCE_KIND (slp_node_instance) == slp_inst_kind_reduc_chain;
  
    /* Make sure it was already recognized as a reduction computation.  */
    if (STMT_VINFO_DEF_TYPE (stmt_info) != vect_reduction_def
--- 6823,6828 ----
*************** vectorizable_reduction (loop_vec_info lo
*** 7019,7024 ****
--- 6884,6890 ----
        double_reduc = true;
      }
  
+   const bool reduc_chain = reduc_info->is_reduc_chain;
    slp_node_instance->reduc_phis = slp_node;
    /* ???  We're leaving slp_node to point to the PHIs, we only
       need it to get at the number of vector stmts which wasn't
*************** vectorizable_reduction (loop_vec_info lo
*** 7030,7062 ****
  
    /* Verify following REDUC_IDX from the latch def leads us back to the PHI
       and compute the reduction chain length.  Discover the real
!      reduction operation stmt on the way (stmt_info and slp_for_stmt_info).  */
!   tree reduc_def
!     = PHI_ARG_DEF_FROM_EDGE (reduc_def_phi, loop_latch_edge (loop));
    unsigned reduc_chain_length = 0;
-   bool only_slp_reduc_chain = true;
    stmt_info = NULL;
    slp_tree slp_for_stmt_info = NULL;
    slp_tree vdef_slp = slp_node_instance->root;
!   /* For double-reductions we start SLP analysis at the inner loop LC PHI
!      which is the def of the outer loop live stmt.  */
!   if (double_reduc)
!     vdef_slp = SLP_TREE_CHILDREN (vdef_slp)[0];
!   while (reduc_def != PHI_RESULT (reduc_def_phi))
      {
!       stmt_vec_info def = loop_vinfo->lookup_def (reduc_def);
!       stmt_vec_info vdef = vect_stmt_to_vectorize (def);
!       int reduc_idx = STMT_VINFO_REDUC_IDX (vdef);
!       if (STMT_VINFO_REDUC_IDX (vdef) == -1
! 	  || SLP_TREE_REDUC_IDX (vdef_slp) == -1)
  	{
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
  			     "reduction chain broken by patterns.\n");
  	  return false;
  	}
!       if (!REDUC_GROUP_FIRST_ELEMENT (vdef))
! 	only_slp_reduc_chain = false;
        gimple_match_op op;
        if (!gimple_extract_op (vdef->stmt, &op))
  	{
--- 6896,6923 ----
  
    /* Verify following REDUC_IDX from the latch def leads us back to the PHI
       and compute the reduction chain length.  Discover the real
!      reduction operation stmt on the way (slp_for_stmt_info).  */
    unsigned reduc_chain_length = 0;
    stmt_info = NULL;
    slp_tree slp_for_stmt_info = NULL;
    slp_tree vdef_slp = slp_node_instance->root;
!   while (vdef_slp != slp_node)
      {
!       int reduc_idx = SLP_TREE_REDUC_IDX (vdef_slp);
!       if (reduc_idx == -1)
  	{
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
  			     "reduction chain broken by patterns.\n");
  	  return false;
  	}
!       stmt_vec_info vdef = SLP_TREE_REPRESENTATIVE (vdef_slp);
!       if (is_a <gphi *> (vdef->stmt))
! 	{
! 	  vdef_slp = SLP_TREE_CHILDREN (vdef_slp)[reduc_idx];
! 	  /* Do not count PHIs towards the chain length.  */
! 	  continue;
! 	}
        gimple_match_op op;
        if (!gimple_extract_op (vdef->stmt, &op))
  	{
*************** vectorizable_reduction (loop_vec_info lo
*** 7080,7090 ****
        else
  	{
  	  /* First non-conversion stmt.  */
! 	  if (!stmt_info)
! 	    {
! 	      stmt_info = vdef;
! 	      slp_for_stmt_info = vdef_slp;
! 	    }
  
  	  if (lane_reducing_op_p (op.code))
  	    {
--- 6941,6948 ----
        else
  	{
  	  /* First non-conversion stmt.  */
! 	  if (!slp_for_stmt_info)
! 	    slp_for_stmt_info = vdef_slp;
  
  	  if (lane_reducing_op_p (op.code))
  	    {
*************** vectorizable_reduction (loop_vec_info lo
*** 7116,7144 ****
  	    }
  	  else if (!vectype_in)
  	    vectype_in = SLP_TREE_VECTYPE (slp_node);
! 	  if (!REDUC_GROUP_FIRST_ELEMENT (vdef))
! 	    {
! 	      gcc_assert (reduc_idx == SLP_TREE_REDUC_IDX (vdef_slp));
! 	      vdef_slp = SLP_TREE_CHILDREN (vdef_slp)[reduc_idx];
! 	    }
  	}
- 
-       reduc_def = op.ops[reduc_idx];
        reduc_chain_length++;
      }
    /* PHIs should not participate in patterns.  */
    gcc_assert (!STMT_VINFO_RELATED_STMT (phi_info));
  
-   /* STMT_VINFO_REDUC_DEF doesn't point to the first but the last
-      element.  */
-   if (REDUC_GROUP_FIRST_ELEMENT (stmt_info))
-     {
-       gcc_assert (!REDUC_GROUP_NEXT_ELEMENT (stmt_info));
-       stmt_info = REDUC_GROUP_FIRST_ELEMENT (stmt_info);
-     }
-   if (REDUC_GROUP_FIRST_ELEMENT (stmt_info))
-     gcc_assert (REDUC_GROUP_FIRST_ELEMENT (stmt_info) == stmt_info);
- 
    /* 1. Is vectorizable reduction?  */
    /* Not supportable if the reduction variable is used in the loop, unless
       it's a reduction chain.  */
--- 6974,6988 ----
  	    }
  	  else if (!vectype_in)
  	    vectype_in = SLP_TREE_VECTYPE (slp_node);
! 	  vdef_slp = SLP_TREE_CHILDREN (vdef_slp)[reduc_idx];
  	}
        reduc_chain_length++;
      }
+   stmt_info = SLP_TREE_REPRESENTATIVE (slp_for_stmt_info);
+ 
    /* PHIs should not participate in patterns.  */
    gcc_assert (!STMT_VINFO_RELATED_STMT (phi_info));
  
    /* 1. Is vectorizable reduction?  */
    /* Not supportable if the reduction variable is used in the loop, unless
       it's a reduction chain.  */
*************** vectorizable_reduction (loop_vec_info lo
*** 7453,7460 ****
  	{
  	  /* When vectorizing a reduction chain w/o SLP the reduction PHI
  	     is not directy used in stmt.  */
! 	  if (!only_slp_reduc_chain
! 	      && reduc_chain_length != 1)
  	    {
  	      if (dump_enabled_p ())
  		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
--- 7297,7303 ----
  	{
  	  /* When vectorizing a reduction chain w/o SLP the reduction PHI
  	     is not directy used in stmt.  */
! 	  if (reduc_chain_length != 1)
  	    {
  	      if (dump_enabled_p ())
  		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
*************** vectorizable_reduction (loop_vec_info lo
*** 7789,7810 ****
  
    /* All but single defuse-cycle optimized and fold-left reductions go
       through their own vectorizable_* routines.  */
    if (!single_defuse_cycle && reduction_type != FOLD_LEFT_REDUCTION)
      {
!       stmt_vec_info tem
! 	= vect_stmt_to_vectorize (STMT_VINFO_REDUC_DEF (phi_info));
!       if (REDUC_GROUP_FIRST_ELEMENT (tem))
! 	{
! 	  gcc_assert (!REDUC_GROUP_NEXT_ELEMENT (tem));
! 	  tem = REDUC_GROUP_FIRST_ELEMENT (tem);
! 	}
!       STMT_VINFO_DEF_TYPE (vect_orig_stmt (tem)) = vect_internal_def;
!       STMT_VINFO_DEF_TYPE (tem) = vect_internal_def;
      }
-   else if (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo))
-     vect_reduction_update_partial_vector_usage (loop_vinfo, reduc_info,
- 						slp_node, op.code, op.type,
- 						vectype_in);
    return true;
  }
  
--- 7632,7649 ----
  
    /* All but single defuse-cycle optimized and fold-left reductions go
       through their own vectorizable_* routines.  */
+   stmt_vec_info tem
+     = SLP_TREE_REPRESENTATIVE (SLP_INSTANCE_TREE (slp_node_instance));
    if (!single_defuse_cycle && reduction_type != FOLD_LEFT_REDUCTION)
+     STMT_VINFO_DEF_TYPE (tem) = vect_internal_def;
+   else
      {
!       STMT_VINFO_DEF_TYPE (tem) = vect_reduction_def;
!       if (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo))
! 	vect_reduction_update_partial_vector_usage (loop_vinfo, reduc_info,
! 						    slp_node, op.code, op.type,
! 						    vectype_in);
      }
    return true;
  }
  
*************** vect_transform_reduction (loop_vec_info
*** 7913,7919 ****
       assumption is not true: we use reduc_index to record the index of the
       reduction variable.  */
    int reduc_index = SLP_TREE_REDUC_IDX (slp_node);
!   tree vectype_in = SLP_TREE_VECTYPE (SLP_TREE_CHILDREN (slp_node)[0]);
  
    vec_num = vect_get_num_copies (loop_vinfo, SLP_TREE_CHILDREN (slp_node)[0]);
  
--- 7752,7760 ----
       assumption is not true: we use reduc_index to record the index of the
       reduction variable.  */
    int reduc_index = SLP_TREE_REDUC_IDX (slp_node);
!   tree vectype_in = SLP_TREE_VECTYPE (slp_node);
!   if (lane_reducing_op_p (op.code))
!     vectype_in = SLP_TREE_VECTYPE (SLP_TREE_CHILDREN (slp_node)[0]);
  
    vec_num = vect_get_num_copies (loop_vinfo, SLP_TREE_CHILDREN (slp_node)[0]);
  
*************** vect_transform_cycle_phi (loop_vec_info
*** 8238,8245 ****
    int i;
    bool nested_cycle = false;
    int vec_num;
-   const bool reduc_chain
-     = SLP_INSTANCE_KIND (slp_node_instance) == slp_inst_kind_reduc_chain;
  
    if (nested_in_vect_loop_p (loop, stmt_info))
      {
--- 8079,8084 ----
*************** vect_transform_cycle_phi (loop_vec_info
*** 8308,8314 ****
        vec<stmt_vec_info> &stmts = SLP_TREE_SCALAR_STMTS (slp_node);
  
        unsigned int num_phis = stmts.length ();
!       if (reduc_chain)
  	num_phis = 1;
        initial_values.reserve (num_phis);
        for (unsigned int i = 0; i < num_phis; ++i)
--- 8147,8153 ----
        vec<stmt_vec_info> &stmts = SLP_TREE_SCALAR_STMTS (slp_node);
  
        unsigned int num_phis = stmts.length ();
!       if (reduc_info->is_reduc_chain)
  	num_phis = 1;
        initial_values.reserve (num_phis);
        for (unsigned int i = 0; i < num_phis; ++i)
diff -Nrcpad gcc-16-20251012/gcc/tree-vect-patterns.cc gcc-16-20251019/gcc/tree-vect-patterns.cc
*** gcc-16-20251012/gcc/tree-vect-patterns.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-vect-patterns.cc	Sun Oct 19 22:32:39 2025
*************** vect_reassociating_reduction_p (vec_info
*** 1022,1034 ****
    if (loop && nested_in_vect_loop_p (loop, stmt_info))
      return false;
  
!   if (STMT_VINFO_DEF_TYPE (stmt_info) == vect_reduction_def)
!     {
!       if (needs_fold_left_reduction_p (TREE_TYPE (gimple_assign_lhs (assign)),
! 				       code))
! 	return false;
!     }
!   else if (REDUC_GROUP_FIRST_ELEMENT (stmt_info) == NULL)
      return false;
  
    *op0_out = gimple_assign_rhs1 (assign);
--- 1022,1032 ----
    if (loop && nested_in_vect_loop_p (loop, stmt_info))
      return false;
  
!   if (!vect_is_reduction (stmt_info))
!     return false;
! 
!   if (needs_fold_left_reduction_p (TREE_TYPE (gimple_assign_lhs (assign)),
! 				   code))
      return false;
  
    *op0_out = gimple_assign_rhs1 (assign);
*************** vect_recog_widen_sum_pattern (vec_info *
*** 2544,2551 ****
  
    vect_pattern_detected ("vect_recog_widen_sum_pattern", last_stmt);
  
!   if (!vect_supportable_direct_optab_p (vinfo, type, WIDEN_SUM_EXPR,
! 					unprom0.type, type_out))
      return NULL;
  
    var = vect_recog_temp_ssa_var (type, NULL);
--- 2542,2549 ----
  
    vect_pattern_detected ("vect_recog_widen_sum_pattern", last_stmt);
  
!   if (!vect_supportable_conv_optab_p (vinfo, type, WIDEN_SUM_EXPR,
! 				      unprom0.type, type_out))
      return NULL;
  
    var = vect_recog_temp_ssa_var (type, NULL);
*************** vect_recog_over_widening_pattern (vec_in
*** 3003,3009 ****
    tree_code code = gimple_assign_rhs_code (last_stmt);
  
    /* Punt for reductions where we don't handle the type conversions.  */
!   if (STMT_VINFO_DEF_TYPE (last_stmt_info) == vect_reduction_def)
      return NULL;
  
    /* Keep the first operand of a COND_EXPR as-is: only the other two
--- 3001,3007 ----
    tree_code code = gimple_assign_rhs_code (last_stmt);
  
    /* Punt for reductions where we don't handle the type conversions.  */
!   if (vect_is_reduction (last_stmt_info))
      return NULL;
  
    /* Keep the first operand of a COND_EXPR as-is: only the other two
*************** vect_recog_vector_vector_shift_pattern (
*** 4087,4096 ****
  	 != TYPE_PRECISION (TREE_TYPE (oprnd0)))
      return NULL;
  
!   stmt_vec_info def_vinfo = vect_get_internal_def (vinfo, oprnd1);
!   if (!def_vinfo)
      return NULL;
  
    *type_out = get_vectype_for_scalar_type (vinfo, TREE_TYPE (oprnd0));
    if (*type_out == NULL_TREE)
      return NULL;
--- 4085,4097 ----
  	 != TYPE_PRECISION (TREE_TYPE (oprnd0)))
      return NULL;
  
!   stmt_vec_info def_vinfo = vinfo->lookup_def (oprnd1);
!   if (!def_vinfo || STMT_VINFO_DEF_TYPE (def_vinfo) == vect_external_def)
      return NULL;
  
+   def_vinfo = vect_stmt_to_vectorize (def_vinfo);
+   gcc_assert (def_vinfo);
+ 
    *type_out = get_vectype_for_scalar_type (vinfo, TREE_TYPE (oprnd0));
    if (*type_out == NULL_TREE)
      return NULL;
*************** vect_recog_sat_trunc_pattern (vec_info *
*** 4837,4842 ****
--- 4838,5118 ----
    return NULL;
  }
  
+ 
+ /* Function add_code_for_floorceilround_divmod
+    A helper function to add compensation code for implementing FLOOR_MOD_EXPR,
+    FLOOR_DIV_EXPR, CEIL_MOD_EXPR, CEIL_DIV_EXPR, ROUND_MOD_EXPR and
+    ROUND_DIV_EXPR
+    The quotient and remainder are needed for implemented these operators.
+    FLOOR cases
+    r = x %[fl] y; r = x/[fl] y;
+    is
+    r = x % y; if (r && (x ^ y) < 0) r += y;
+    r = x % y; d = x/y; if (r && (x ^ y) < 0) d--; Respectively
+    Produce following sequence
+    v0 = x^y
+    v1 = -r
+    v2 = r | -r
+    v3 = v0 & v2
+    v4 = v3 < 0
+    if (floor_mod)
+      v5 = v4 ? y : 0
+      v6 = r + v5
+    if (floor_div)
+      v5 = v4 ? 1 : 0
+      v6 = d - 1
+    Similar sequences of vector instructions are produces for following cases
+    CEIL cases
+    r = x %[cl] y; r = x/[cl] y;
+    is
+    r = x % y; if (r && (x ^ y) >= 0) r -= y;
+    r = x % y; if (r) r -= y; (unsigned)
+    r = x % y; d = x/y; if (r && (x ^ y) >= 0) d++;
+    r = x % y; d = x/y; if (r) d++; (unsigned)
+    ROUND cases
+    r = x %[rd] y; r = x/[rd] y;
+    is
+    r = x % y; if (r > ((y-1)/2)) if ((x ^ y) >= 0) r -= y; else r += y;
+    r = x % y; if (r > ((y-1)/2)) r -= y; (unsigned)
+    r = x % y; d = x/y; if (r > ((y-1)/2)) if ((x ^ y) >= 0) d++; else d--;
+    r = x % y; d = x/y; if (r > ((y-1)/2)) d++; (unsigned)
+    Inputs:
+      VECTYPE: Vector type of the operands
+      STMT_VINFO: Statement where pattern begins
+      RHS_CODE: Should either be FLOOR_MOD_EXPR or FLOOR_DIV_EXPR
+      Q: The quotient of division
+      R: Remainder of division
+      OPRDN0/OPRND1: Actual operands involved
+      ITYPE: tree type of oprnd0
+    Output:
+      NULL if vectorization not possible
+      Gimple statement based on rhs_code
+ */
+ static gimple *
+ add_code_for_floorceilround_divmod (tree vectype, vec_info *vinfo,
+ 				    stmt_vec_info stmt_vinfo,
+ 				    enum tree_code rhs_code, tree q, tree r,
+ 				    tree oprnd0, tree oprnd1, tree itype)
+ {
+   gimple *def_stmt;
+   tree mask_vectype = truth_type_for (vectype);
+   if (!mask_vectype)
+     return NULL;
+   tree bool_cond;
+   bool unsigned_p = TYPE_UNSIGNED (itype);
+ 
+   switch (rhs_code)
+     {
+     case FLOOR_MOD_EXPR:
+     case FLOOR_DIV_EXPR:
+     case CEIL_MOD_EXPR:
+     case CEIL_DIV_EXPR:
+       {
+ 	if (!target_has_vecop_for_code (NEGATE_EXPR, vectype)
+ 	    || !target_has_vecop_for_code (BIT_XOR_EXPR, vectype)
+ 	    || !target_has_vecop_for_code (BIT_IOR_EXPR, vectype)
+ 	    || !target_has_vecop_for_code (PLUS_EXPR, vectype)
+ 	    || !target_has_vecop_for_code (MINUS_EXPR, vectype)
+ 	    || !expand_vec_cmp_expr_p (vectype, mask_vectype, LT_EXPR)
+ 	    || !expand_vec_cond_expr_p (vectype, mask_vectype))
+ 	  return NULL;
+ 	if (unsigned_p)
+ 	  {
+ 	    gcc_assert (rhs_code == CEIL_MOD_EXPR || rhs_code == CEIL_DIV_EXPR);
+ 
+ 	    if (!expand_vec_cmp_expr_p (vectype, mask_vectype, GT_EXPR))
+ 	      return NULL;
+ 	    bool is_mod = rhs_code == CEIL_MOD_EXPR;
+ 	    // r > 0
+ 	    bool_cond = vect_recog_temp_ssa_var (boolean_type_node, NULL);
+ 	    def_stmt = gimple_build_assign (bool_cond, GT_EXPR, r,
+ 					    build_int_cst (itype, 0));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt, mask_vectype,
+ 				    itype);
+ 
+ 	    // (r > 0) ? y : 0 (mod)
+ 	    // (r > 0) ? 1 : 0 (ceil)
+ 	    tree extr_cond = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt
+ 	      = gimple_build_assign (extr_cond, COND_EXPR, bool_cond,
+ 				     is_mod ? oprnd1 : build_int_cst (itype, 1),
+ 				     build_int_cst (itype, 0));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    // r -= (r > 0) ? y : 0 (mod)
+ 	    // d += (x^y < 0 && r) ? -1 : 0 (ceil)
+ 	    tree result = vect_recog_temp_ssa_var (itype, NULL);
+ 	    return gimple_build_assign (result, is_mod ? MINUS_EXPR : PLUS_EXPR,
+ 					is_mod ? r : q, extr_cond);
+ 	  }
+ 	else
+ 	  {
+ 	    bool ceil_p
+ 	      = (rhs_code == CEIL_MOD_EXPR || rhs_code == CEIL_DIV_EXPR);
+ 	    if (ceil_p && !target_has_vecop_for_code (BIT_NOT_EXPR, vectype))
+ 	      return NULL;
+ 	    // x ^ y
+ 	    tree xort = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt = gimple_build_assign (xort, BIT_XOR_EXPR, oprnd0, oprnd1);
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    tree cond_reg = xort;
+ 	    // ~(x ^ y) (ceil)
+ 	    if (ceil_p)
+ 	      {
+ 		cond_reg = vect_recog_temp_ssa_var (itype, NULL);
+ 		def_stmt = gimple_build_assign (cond_reg, BIT_NOT_EXPR, xort);
+ 		append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 	      }
+ 
+ 	    // -r
+ 	    tree negate_r = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt = gimple_build_assign (negate_r, NEGATE_EXPR, r);
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    // r | -r , sign bit is set if r!=0
+ 	    tree r_or_negr = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt
+ 	      = gimple_build_assign (r_or_negr, BIT_IOR_EXPR, r, negate_r);
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    // (x ^ y) & (r | -r)
+ 	    // ~(x ^ y) & (r | -r) (ceil)
+ 	    tree r_or_negr_and_xor = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt = gimple_build_assign (r_or_negr_and_xor, BIT_AND_EXPR,
+ 					    r_or_negr, cond_reg);
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    // (x ^ y) & (r | -r) < 0 which is equivalent to (x^y < 0 && r!=0)
+ 	    bool_cond = vect_recog_temp_ssa_var (boolean_type_node, NULL);
+ 	    def_stmt
+ 	      = gimple_build_assign (bool_cond, LT_EXPR, r_or_negr_and_xor,
+ 				     build_int_cst (itype, 0));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt, mask_vectype,
+ 				    itype);
+ 
+ 	    // (x^y < 0 && r) ? y : 0 (mod)
+ 	    // (x^y < 0 && r) ? -1 : 0 (div)
+ 	    bool is_mod
+ 	      = (rhs_code == FLOOR_MOD_EXPR || rhs_code == CEIL_MOD_EXPR);
+ 	    tree extr_cond = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt = gimple_build_assign (extr_cond, COND_EXPR, bool_cond,
+ 					    is_mod ? oprnd1
+ 						   : build_int_cst (itype, -1),
+ 					    build_int_cst (itype, 0));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    // r += (x ^ y < 0 && r) ? y : 0 (floor mod)
+ 	    // d += (x^y < 0 && r) ? -1 : 0 (floor div)
+ 	    // r -= (x ^ y < 0 && r) ? y : 0 (ceil mod)
+ 	    // d -= (x^y < 0 && r) ? -1 : 0 (ceil div)
+ 	    tree result = vect_recog_temp_ssa_var (itype, NULL);
+ 	    return gimple_build_assign (result,
+ 					(rhs_code == FLOOR_MOD_EXPR
+ 					 || rhs_code == FLOOR_DIV_EXPR)
+ 					  ? PLUS_EXPR
+ 					  : MINUS_EXPR,
+ 					is_mod ? r : q, extr_cond);
+ 	  }
+       }
+     case ROUND_MOD_EXPR:
+     case ROUND_DIV_EXPR:
+       {
+ 	if (!target_has_vecop_for_code (BIT_AND_EXPR, vectype)
+ 	    || !target_has_vecop_for_code (PLUS_EXPR, vectype)
+ 	    || !expand_vec_cmp_expr_p (vectype, mask_vectype, LT_EXPR)
+ 	    || !expand_vec_cmp_expr_p (vectype, mask_vectype, GT_EXPR)
+ 	    || !expand_vec_cond_expr_p (vectype, mask_vectype))
+ 	  return NULL;
+ 
+ 	bool is_mod = rhs_code == ROUND_MOD_EXPR;
+ 	HOST_WIDE_INT d = TREE_INT_CST_LOW (oprnd1);
+ 	unsigned HOST_WIDE_INT abs_d
+ 	  = (d >= 0 ? (unsigned HOST_WIDE_INT) d : -(unsigned HOST_WIDE_INT) d);
+ 	unsigned HOST_WIDE_INT mid_d = (abs_d - 1) >> 1;
+ 	if (!unsigned_p)
+ 	  {
+ 	    // check availibility of abs expression for vector
+ 	    if (!target_has_vecop_for_code (ABS_EXPR, vectype))
+ 	      return NULL;
+ 	    // abs (r)
+ 	    tree abs_r = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt = gimple_build_assign (abs_r, ABS_EXPR, r);
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    // abs (r) > (abs (y-1) >> 1)
+ 	    tree round_p = vect_recog_temp_ssa_var (boolean_type_node, NULL);
+ 	    def_stmt = gimple_build_assign (round_p, GT_EXPR, abs_r,
+ 					    build_int_cst (itype, mid_d));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt, mask_vectype,
+ 				    itype);
+ 
+ 	    // x ^ y
+ 	    tree cond_reg = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt
+ 	      = gimple_build_assign (cond_reg, BIT_XOR_EXPR, oprnd0, oprnd1);
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    // x ^ y < 0
+ 	    bool_cond = vect_recog_temp_ssa_var (boolean_type_node, NULL);
+ 	    def_stmt = gimple_build_assign (bool_cond, LT_EXPR, cond_reg,
+ 					    build_int_cst (itype, 0));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt, mask_vectype,
+ 				    itype);
+ 
+ 	    // x ^ y < 0 ? y : -y (mod)
+ 	    // x ^ y < 0 ? -1 : 1 (div)
+ 	    tree val1 = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt
+ 	      = gimple_build_assign (val1, COND_EXPR, bool_cond,
+ 				     build_int_cst (itype, is_mod ? d : -1),
+ 				     build_int_cst (itype, is_mod ? -d : 1));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 	    int precision = TYPE_PRECISION (itype);
+ 	    wide_int wmask = wi::mask (precision, false, precision);
+ 
+ 	    // abs (r) > (abs (y-1) >> 1) ? 0xffffffff : 0
+ 	    tree val2 = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt = gimple_build_assign (val2, COND_EXPR, round_p,
+ 					    wide_int_to_tree (itype, wmask),
+ 					    build_int_cst (itype, 0));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    tree fval = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt = gimple_build_assign (fval, BIT_AND_EXPR, val1, val2);
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    tree result = vect_recog_temp_ssa_var (itype, NULL);
+ 	    return gimple_build_assign (result, PLUS_EXPR, is_mod ? r : q,
+ 					fval);
+ 	  }
+ 	else
+ 	  {
+ 	    // r > (y-1 >> 1)
+ 	    tree round_p = vect_recog_temp_ssa_var (boolean_type_node, NULL);
+ 	    def_stmt = gimple_build_assign (round_p, GT_EXPR, r,
+ 					    build_int_cst (itype, mid_d));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt, mask_vectype,
+ 				    itype);
+ 
+ 	    // (r > (y-1)>>1) ? -d : 1
+ 	    tree val2 = vect_recog_temp_ssa_var (itype, NULL);
+ 	    def_stmt
+ 	      = gimple_build_assign (val2, COND_EXPR, round_p,
+ 				     build_int_cst (itype, is_mod ? -d : 1),
+ 				     build_int_cst (itype, 0));
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
+ 
+ 	    tree result = vect_recog_temp_ssa_var (itype, NULL);
+ 	    return gimple_build_assign (result, PLUS_EXPR, is_mod ? r : q,
+ 					val2);
+ 	  }
+       }
+     default:
+       return NULL;
+     }
+ }
+ 
  /* Detect a signed division by a constant that wouldn't be
     otherwise vectorized:
  
*************** vect_recog_divmod_pattern (vec_info *vin
*** 4881,4887 ****
  {
    gimple *last_stmt = stmt_vinfo->stmt;
    tree oprnd0, oprnd1, vectype, itype, cond;
!   gimple *pattern_stmt, *def_stmt;
    enum tree_code rhs_code;
    optab optab;
    tree q, cst;
--- 5157,5164 ----
  {
    gimple *last_stmt = stmt_vinfo->stmt;
    tree oprnd0, oprnd1, vectype, itype, cond;
!   gimple *pattern_stmt = NULL;
!   gimple *def_stmt = NULL;
    enum tree_code rhs_code;
    optab optab;
    tree q, cst;
*************** vect_recog_divmod_pattern (vec_info *vin
*** 4898,4903 ****
--- 5175,5186 ----
      case TRUNC_DIV_EXPR:
      case EXACT_DIV_EXPR:
      case TRUNC_MOD_EXPR:
+     case FLOOR_MOD_EXPR:
+     case FLOOR_DIV_EXPR:
+     case CEIL_MOD_EXPR:
+     case CEIL_DIV_EXPR:
+     case ROUND_MOD_EXPR:
+     case ROUND_DIV_EXPR:
        break;
      default:
        return NULL;
*************** vect_recog_divmod_pattern (vec_info *vin
*** 4929,4937 ****
      }
  
    prec = TYPE_PRECISION (itype);
    if (integer_pow2p (oprnd1))
      {
!       if (TYPE_UNSIGNED (itype) || tree_int_cst_sgn (oprnd1) != 1)
  	return NULL;
  
        /* Pattern detected.  */
--- 5212,5227 ----
      }
  
    prec = TYPE_PRECISION (itype);
+ 
+   bool is_flclrd_moddiv_p
+     = rhs_code == FLOOR_MOD_EXPR || rhs_code == FLOOR_DIV_EXPR
+     || rhs_code == CEIL_MOD_EXPR || rhs_code == CEIL_DIV_EXPR
+     || rhs_code == ROUND_MOD_EXPR || rhs_code == ROUND_DIV_EXPR;
    if (integer_pow2p (oprnd1))
      {
!       if ((TYPE_UNSIGNED (itype)
! 	   && (rhs_code == FLOOR_MOD_EXPR || rhs_code == FLOOR_DIV_EXPR))
! 	  || tree_int_cst_sgn (oprnd1) != 1)
  	return NULL;
  
        /* Pattern detected.  */
*************** vect_recog_divmod_pattern (vec_info *vin
*** 4948,4965 ****
  	  tree var_div = vect_recog_temp_ssa_var (itype, NULL);
  	  gimple *div_stmt = gimple_build_call_internal (ifn, 2, oprnd0, shift);
  	  gimple_call_set_lhs (div_stmt, var_div);
! 
! 	  if (rhs_code == TRUNC_MOD_EXPR)
  	    {
  	      append_pattern_def_seq (vinfo, stmt_vinfo, div_stmt);
  	      def_stmt
! 		= gimple_build_assign (vect_recog_temp_ssa_var (itype, NULL),
! 				       LSHIFT_EXPR, var_div, shift);
  	      append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
  	      pattern_stmt
  		= gimple_build_assign (vect_recog_temp_ssa_var (itype, NULL),
! 				       MINUS_EXPR, oprnd0,
! 				       gimple_assign_lhs (def_stmt));
  	    }
  	  else
  	    pattern_stmt = div_stmt;
--- 5238,5264 ----
  	  tree var_div = vect_recog_temp_ssa_var (itype, NULL);
  	  gimple *div_stmt = gimple_build_call_internal (ifn, 2, oprnd0, shift);
  	  gimple_call_set_lhs (div_stmt, var_div);
! 	  if (rhs_code == TRUNC_MOD_EXPR || is_flclrd_moddiv_p)
  	    {
  	      append_pattern_def_seq (vinfo, stmt_vinfo, div_stmt);
+ 	      tree t1 = vect_recog_temp_ssa_var (itype, NULL);
  	      def_stmt
! 		= gimple_build_assign (t1, LSHIFT_EXPR, var_div, shift);
  	      append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
  	      pattern_stmt
  		= gimple_build_assign (vect_recog_temp_ssa_var (itype, NULL),
! 				       MINUS_EXPR, oprnd0, t1);
! 	      if (is_flclrd_moddiv_p)
! 		{
! 		  append_pattern_def_seq (vinfo, stmt_vinfo, pattern_stmt);
! 		  pattern_stmt
! 		    = add_code_for_floorceilround_divmod (vectype, vinfo,
! 							  stmt_vinfo, rhs_code,
! 							  var_div, t1, oprnd0,
! 							  oprnd1, itype);
! 		  if (pattern_stmt == NULL)
! 		    return NULL;
! 		}
  	    }
  	  else
  	    pattern_stmt = div_stmt;
*************** vect_recog_divmod_pattern (vec_info *vin
*** 4973,4980 ****
  				      build_int_cst (itype, 0));
        append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt,
  			      truth_type_for (vectype), itype);
        if (rhs_code == TRUNC_DIV_EXPR
! 	  || rhs_code == EXACT_DIV_EXPR)
  	{
  	  tree var = vect_recog_temp_ssa_var (itype, NULL);
  	  tree shift;
--- 5272,5283 ----
  				      build_int_cst (itype, 0));
        append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt,
  			      truth_type_for (vectype), itype);
+       tree div_result = NULL_TREE;
        if (rhs_code == TRUNC_DIV_EXPR
! 	  || rhs_code == EXACT_DIV_EXPR
! 	  || rhs_code == FLOOR_DIV_EXPR
! 	  || rhs_code == CEIL_DIV_EXPR
! 	  || rhs_code == ROUND_DIV_EXPR)
  	{
  	  tree var = vect_recog_temp_ssa_var (itype, NULL);
  	  tree shift;
*************** vect_recog_divmod_pattern (vec_info *vin
*** 4991,5002 ****
  	  append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
  
  	  shift = build_int_cst (itype, tree_log2 (oprnd1));
  	  pattern_stmt
! 	    = gimple_build_assign (vect_recog_temp_ssa_var (itype, NULL),
! 				   RSHIFT_EXPR, var, shift);
  	}
!       else
  	{
  	  tree signmask;
  	  if (compare_tree_int (oprnd1, 2) == 0)
  	    {
--- 5294,5310 ----
  	  append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
  
  	  shift = build_int_cst (itype, tree_log2 (oprnd1));
+ 	  div_result = vect_recog_temp_ssa_var (itype, NULL);
  	  pattern_stmt
! 	    = gimple_build_assign (div_result, RSHIFT_EXPR, var, shift);
  	}
!       if (rhs_code == TRUNC_MOD_EXPR || is_flclrd_moddiv_p)
  	{
+ 	  if (rhs_code == FLOOR_DIV_EXPR
+ 	      || rhs_code == CEIL_DIV_EXPR
+ 	      || rhs_code == ROUND_DIV_EXPR)
+ 	    append_pattern_def_seq (vinfo, stmt_vinfo, pattern_stmt);
+ 
  	  tree signmask;
  	  if (compare_tree_int (oprnd1, 2) == 0)
  	    {
*************** vect_recog_divmod_pattern (vec_info *vin
*** 5041,5050 ****
  						build_int_cst (itype, 1)));
  	  append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
  
  	  pattern_stmt
! 	    = gimple_build_assign (vect_recog_temp_ssa_var (itype, NULL),
! 				   MINUS_EXPR, gimple_assign_lhs (def_stmt),
  				   signmask);
  	}
  
        return pattern_stmt;
--- 5349,5369 ----
  						build_int_cst (itype, 1)));
  	  append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
  
+ 	  tree r = vect_recog_temp_ssa_var (itype, NULL);
  	  pattern_stmt
! 	    = gimple_build_assign (r, MINUS_EXPR, gimple_assign_lhs (def_stmt),
  				   signmask);
+ 	  if (is_flclrd_moddiv_p)
+ 	    {
+ 	      append_pattern_def_seq (vinfo, stmt_vinfo, pattern_stmt);
+ 	      pattern_stmt
+ 		= add_code_for_floorceilround_divmod (vectype, vinfo,
+ 						      stmt_vinfo, rhs_code,
+ 						      div_result, r, oprnd0,
+ 						      oprnd1, itype);
+ 	      if (pattern_stmt == NULL)
+ 		return NULL;
+ 	    }
  	}
  
        return pattern_stmt;
*************** vect_recog_divmod_pattern (vec_info *vin
*** 5351,5357 ****
  	}
      }
  
!   if (rhs_code == TRUNC_MOD_EXPR)
      {
        tree r, t1;
  
--- 5670,5676 ----
  	}
      }
  
!   if (rhs_code == TRUNC_MOD_EXPR || is_flclrd_moddiv_p)
      {
        tree r, t1;
  
*************** vect_recog_divmod_pattern (vec_info *vin
*** 5366,5371 ****
--- 5685,5701 ----
  
        r = vect_recog_temp_ssa_var (itype, NULL);
        pattern_stmt = gimple_build_assign (r, MINUS_EXPR, oprnd0, t1);
+ 
+       if (is_flclrd_moddiv_p)
+ 	{
+ 	append_pattern_def_seq (vinfo, stmt_vinfo, pattern_stmt);
+ 	pattern_stmt
+ 	  = add_code_for_floorceilround_divmod (vectype, vinfo, stmt_vinfo,
+ 						rhs_code, q, r, oprnd0, oprnd1,
+ 						itype);
+ 	if (pattern_stmt == NULL)
+ 	  return NULL;
+ 	}
      }
  
    /* Pattern detected.  */
*************** vect_recog_mod_var_pattern (vec_info *vi
*** 5447,5458 ****
     same number of elements as VAR's vector type.  */
  
  static tree
! integer_type_for_mask (tree var, vec_info *vinfo)
  {
    if (!VECT_SCALAR_BOOLEAN_TYPE_P (TREE_TYPE (var)))
      return NULL_TREE;
  
    stmt_vec_info def_stmt_info = vinfo->lookup_def (var);
    if (!def_stmt_info
        || STMT_VINFO_DEF_TYPE (def_stmt_info) == vect_external_def
        || !vect_use_mask_type_p (def_stmt_info))
--- 5777,5795 ----
     same number of elements as VAR's vector type.  */
  
  static tree
! integer_type_for_mask (tree var, vec_info *vinfo, vect_def_type *dt = nullptr)
  {
    if (!VECT_SCALAR_BOOLEAN_TYPE_P (TREE_TYPE (var)))
      return NULL_TREE;
  
    stmt_vec_info def_stmt_info = vinfo->lookup_def (var);
+   if (dt)
+     {
+       if (!def_stmt_info)
+ 	*dt = vect_external_def;
+       else
+ 	*dt = STMT_VINFO_DEF_TYPE (def_stmt_info);
+     }
    if (!def_stmt_info
        || STMT_VINFO_DEF_TYPE (def_stmt_info) == vect_external_def
        || !vect_use_mask_type_p (def_stmt_info))
*************** vect_recog_bool_pattern (vec_info *vinfo
*** 5756,5775 ****
  
        return pattern_stmt;
      }
!   else if (rhs_code == BIT_XOR_EXPR
! 	   || rhs_code == BIT_AND_EXPR
! 	   || rhs_code == BIT_IOR_EXPR)
      {
        tree lhs_type = integer_type_for_mask (lhs, vinfo);
        if (!lhs_type)
  	return NULL;
        vectype = get_mask_type_for_scalar_type (vinfo, lhs_type);
        if (!vectype)
  	return NULL;
!       tree rhs2 = gimple_assign_rhs2 (last_stmt);
!       tree rhs1_type = integer_type_for_mask (var, vinfo);
!       tree rhs2_type = integer_type_for_mask (rhs2, vinfo);
!       if (rhs1_type && rhs2_type)
  	return NULL;
        /* When one input is a mask and the other is not create a pattern
  	 stmt sequence that creates a mask for the non-mask input and
--- 6093,6117 ----
  
        return pattern_stmt;
      }
!   else if ((rhs_code == BIT_XOR_EXPR
! 	    || rhs_code == BIT_AND_EXPR
! 	    || rhs_code == BIT_IOR_EXPR)
! 	   && TREE_CODE (var) == SSA_NAME)
      {
+       tree rhs2 = gimple_assign_rhs2 (last_stmt);
+       if (TREE_CODE (rhs2) != SSA_NAME)
+ 	return NULL;
        tree lhs_type = integer_type_for_mask (lhs, vinfo);
        if (!lhs_type)
  	return NULL;
        vectype = get_mask_type_for_scalar_type (vinfo, lhs_type);
        if (!vectype)
  	return NULL;
!       vect_def_type dt1, dt2;
!       tree rhs1_type = integer_type_for_mask (var, vinfo, &dt1);
!       tree rhs2_type = integer_type_for_mask (rhs2, vinfo, &dt2);
!       if ((rhs1_type || dt1 == vect_external_def)
! 	  && (rhs2_type || dt2 == vect_external_def))
  	return NULL;
        /* When one input is a mask and the other is not create a pattern
  	 stmt sequence that creates a mask for the non-mask input and
*************** vect_mark_pattern_stmts (vec_info *vinfo
*** 7175,7188 ****
  		    break;
  		  }
  	      /* Try harder to find a mid-entry into an earlier pattern
! 		 sequence.  This means that the initial 'lookfor' was
  		 bogus.  */
  	      if (!found)
  		{
  		  for (unsigned i = 0; i < op.num_ops; ++i)
  		    if (TREE_CODE (op.ops[i]) == SSA_NAME)
  		      if (auto def = vinfo->lookup_def (op.ops[i]))
! 			if (vect_is_reduction (def))
  			  {
  			    STMT_VINFO_REDUC_IDX (vinfo->lookup_stmt (s)) = i;
  			    lookfor = gimple_get_lhs (s);
--- 7517,7533 ----
  		    break;
  		  }
  	      /* Try harder to find a mid-entry into an earlier pattern
! 		 sequence.  Likewise an entry to a stmt skipping a conversion
! 		 on an input.  This means that the initial 'lookfor' was
  		 bogus.  */
  	      if (!found)
  		{
  		  for (unsigned i = 0; i < op.num_ops; ++i)
  		    if (TREE_CODE (op.ops[i]) == SSA_NAME)
  		      if (auto def = vinfo->lookup_def (op.ops[i]))
! 			if (vect_is_reduction (def)
! 			    || (is_a <gphi *> (def->stmt)
! 				&& STMT_VINFO_REDUC_DEF (def) != NULL))
  			  {
  			    STMT_VINFO_REDUC_IDX (vinfo->lookup_stmt (s)) = i;
  			    lookfor = gimple_get_lhs (s);
diff -Nrcpad gcc-16-20251012/gcc/tree-vect-slp.cc gcc-16-20251019/gcc/tree-vect-slp.cc
*** gcc-16-20251012/gcc/tree-vect-slp.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-vect-slp.cc	Sun Oct 19 22:32:39 2025
*************** along with GCC; see the file COPYING3.
*** 53,58 ****
--- 53,61 ----
  #include "sreal.h"
  #include "predict.h"
  
+ #define REDUC_GROUP_FIRST_ELEMENT(S) \
+   (gcc_checking_assert (!(S)->dr_aux.dr), (S)->first_element)
+ 
  static bool vect_transform_slp_perm_load_1 (vec_info *, slp_tree,
  					    load_permutation_t &,
  					    const vec<tree> &,
*************** vect_build_slp_instance (vec_info *vinfo
*** 4187,4227 ****
     Return FALSE if SLP build fails.  */
  
  static bool
! vect_analyze_slp_reduc_chain (vec_info *vinfo,
  			      scalar_stmts_to_slp_tree_map_t *bst_map,
! 			      stmt_vec_info stmt_info,
  			      unsigned max_tree_size, unsigned *limit)
  {
!   vec<stmt_vec_info> scalar_stmts;
  
!   /* Collect the reduction stmts and store them in scalar_stmts.  */
!   scalar_stmts.create (REDUC_GROUP_SIZE (stmt_info));
!   stmt_vec_info next_info = stmt_info;
!   while (next_info)
      {
!       scalar_stmts.quick_push (vect_stmt_to_vectorize (next_info));
!       next_info = REDUC_GROUP_NEXT_ELEMENT (next_info);
      }
!   /* Mark the first element of the reduction chain as reduction to properly
!      transform the node.  In the reduction analysis phase only the last
!      element of the chain is marked as reduction.  */
!   STMT_VINFO_DEF_TYPE (stmt_info)
!     = STMT_VINFO_DEF_TYPE (scalar_stmts.last ());
!   STMT_VINFO_REDUC_DEF (vect_orig_stmt (stmt_info))
!     = STMT_VINFO_REDUC_DEF (vect_orig_stmt (scalar_stmts.last ()));
  
    /* Build the tree for the SLP instance.  */
    vec<stmt_vec_info> root_stmt_infos = vNULL;
    vec<tree> remain = vNULL;
  
-   /* If there's no budget left bail out early.  */
-   if (*limit == 0)
-     return false;
- 
    if (dump_enabled_p ())
      {
        dump_printf_loc (MSG_NOTE, vect_location,
! 		       "Starting SLP discovery for\n");
        for (unsigned i = 0; i < scalar_stmts.length (); ++i)
  	dump_printf_loc (MSG_NOTE, vect_location,
  			 "  %G", scalar_stmts[i]->stmt);
--- 4190,4249 ----
     Return FALSE if SLP build fails.  */
  
  static bool
! vect_analyze_slp_reduc_chain (loop_vec_info vinfo,
  			      scalar_stmts_to_slp_tree_map_t *bst_map,
! 			      stmt_vec_info scalar_stmt,
  			      unsigned max_tree_size, unsigned *limit)
  {
!   vec<stmt_vec_info> scalar_stmts = vNULL;
  
!   bool fail = false;
!   /* ???  We could leave operation code checking to SLP discovery.  */
!   code_helper code = STMT_VINFO_REDUC_CODE (STMT_VINFO_REDUC_DEF
! 					      (vect_orig_stmt (scalar_stmt)));
!   bool first = true;
!   stmt_vec_info next_stmt = scalar_stmt;
!   do
      {
!       stmt_vec_info stmt = next_stmt;
!       gimple_match_op op;
!       if (!gimple_extract_op (STMT_VINFO_STMT (stmt), &op))
! 	gcc_unreachable ();
!       tree reduc_def = gimple_arg (STMT_VINFO_STMT (stmt),
! 				   STMT_VINFO_REDUC_IDX (stmt));
!       next_stmt = vect_stmt_to_vectorize (vinfo->lookup_def (reduc_def));
!       gcc_assert (is_a <gphi *> (STMT_VINFO_STMT (next_stmt))
! 		  || STMT_VINFO_REDUC_IDX (next_stmt) != -1);
!       if (!gimple_extract_op (STMT_VINFO_STMT (vect_orig_stmt (stmt)), &op))
! 	gcc_unreachable ();
!       if (CONVERT_EXPR_CODE_P (op.code)
! 	  && (first
! 	      || is_a <gphi *> (STMT_VINFO_STMT (next_stmt))))
! 	;
!       else if (code != op.code)
! 	{
! 	  fail = true;
! 	  break;
! 	}
!       else
! 	scalar_stmts.safe_push (stmt);
!       first = false;
      }
!   while (!is_a <gphi *> (STMT_VINFO_STMT (next_stmt)));
!   if (fail || scalar_stmts.length () <= 1)
!     return false;
! 
!   scalar_stmts.reverse ();
!   stmt_vec_info reduc_phi_info = next_stmt;
  
    /* Build the tree for the SLP instance.  */
    vec<stmt_vec_info> root_stmt_infos = vNULL;
    vec<tree> remain = vNULL;
  
    if (dump_enabled_p ())
      {
        dump_printf_loc (MSG_NOTE, vect_location,
! 		       "Starting SLP discovery of reduction chain for\n");
        for (unsigned i = 0; i < scalar_stmts.length (); ++i)
  	dump_printf_loc (MSG_NOTE, vect_location,
  			 "  %G", scalar_stmts[i]->stmt);
*************** vect_analyze_slp_reduc_chain (vec_info *
*** 4233,4368 ****
    poly_uint64 max_nunits = 1;
    unsigned tree_size = 0;
  
    slp_tree node = vect_build_slp_tree (vinfo, scalar_stmts, group_size,
  				       &max_nunits, matches, limit,
  				       &tree_size, bst_map);
    if (node != NULL)
      {
!       /* Calculate the unrolling factor based on the smallest type.  */
!       poly_uint64 unrolling_factor
! 	= calculate_unrolling_factor (max_nunits, group_size);
  
!       if (maybe_ne (unrolling_factor, 1U)
! 	  && is_a <bb_vec_info> (vinfo))
  	{
! 	  unsigned HOST_WIDE_INT const_max_nunits;
! 	  if (!max_nunits.is_constant (&const_max_nunits)
! 	      || const_max_nunits > group_size)
! 	    {
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				 "Build SLP failed: store group "
! 				 "size not a multiple of the vector size "
! 				 "in basic block SLP\n");
! 	      vect_free_slp_tree (node);
! 	      return false;
! 	    }
! 	  /* Fatal mismatch.  */
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "SLP discovery succeeded but node needs "
! 			     "splitting\n");
! 	  memset (matches, true, group_size);
! 	  matches[group_size / const_max_nunits * const_max_nunits] = false;
! 	  vect_free_slp_tree (node);
  	}
!       else
  	{
! 	  /* Create a new SLP instance.  */
! 	  slp_instance new_instance = XNEW (class _slp_instance);
! 	  SLP_INSTANCE_TREE (new_instance) = node;
! 	  SLP_INSTANCE_LOADS (new_instance) = vNULL;
! 	  SLP_INSTANCE_ROOT_STMTS (new_instance) = root_stmt_infos;
! 	  SLP_INSTANCE_REMAIN_DEFS (new_instance) = remain;
! 	  SLP_INSTANCE_KIND (new_instance) = slp_inst_kind_reduc_chain;
! 	  new_instance->reduc_phis = NULL;
! 	  new_instance->cost_vec = vNULL;
! 	  new_instance->subgraph_entries = vNULL;
  
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "SLP size %u vs. limit %u.\n",
! 			     tree_size, max_tree_size);
  
! 	  /* Fixup SLP reduction chains.  If this is a reduction chain with
! 	     a conversion in front amend the SLP tree with a node for that.  */
! 	  gimple *scalar_def
! 	    = vect_orig_stmt (scalar_stmts[group_size - 1])->stmt;
! 	  if (STMT_VINFO_DEF_TYPE (scalar_stmts[0]) != vect_reduction_def)
! 	    {
! 	      /* Get at the conversion stmt - we know it's the single use
! 		 of the last stmt of the reduction chain.  */
! 	      use_operand_p use_p;
! 	      bool r = single_imm_use (gimple_assign_lhs (scalar_def),
! 				       &use_p, &scalar_def);
! 	      gcc_assert (r);
! 	      stmt_vec_info next_info = vinfo->lookup_stmt (scalar_def);
! 	      next_info = vect_stmt_to_vectorize (next_info);
! 	      scalar_stmts = vNULL;
! 	      scalar_stmts.create (group_size);
! 	      for (unsigned i = 0; i < group_size; ++i)
! 		scalar_stmts.quick_push (next_info);
! 	      slp_tree conv = vect_create_new_slp_node (scalar_stmts, 1);
! 	      SLP_TREE_VECTYPE (conv)
! 		= get_vectype_for_scalar_type (vinfo,
! 					       TREE_TYPE
! 					       (gimple_assign_lhs (scalar_def)),
! 					       group_size);
! 	      SLP_TREE_REDUC_IDX (conv) = 0;
! 	      conv->cycle_info.id = node->cycle_info.id;
! 	      SLP_TREE_CHILDREN (conv).quick_push (node);
! 	      SLP_INSTANCE_TREE (new_instance) = conv;
! 	      /* We also have to fake this conversion stmt as SLP reduction
! 		 group so we don't have to mess with too much code
! 		 elsewhere.  */
! 	      REDUC_GROUP_FIRST_ELEMENT (next_info) = next_info;
! 	      REDUC_GROUP_NEXT_ELEMENT (next_info) = NULL;
! 	    }
! 	  /* Fill the backedge child of the PHI SLP node.  The
! 	     general matching code cannot find it because the
! 	     scalar code does not reflect how we vectorize the
! 	     reduction.  */
! 	  use_operand_p use_p;
! 	  imm_use_iterator imm_iter;
! 	  class loop *loop = LOOP_VINFO_LOOP (as_a <loop_vec_info> (vinfo));
! 	  FOR_EACH_IMM_USE_FAST (use_p, imm_iter,
! 				 gimple_get_lhs (scalar_def))
! 	    /* There are exactly two non-debug uses, the reduction
! 	       PHI and the loop-closed PHI node.  */
! 	      if (!is_gimple_debug (USE_STMT (use_p))
! 		  && gimple_bb (USE_STMT (use_p)) == loop->header)
! 		{
! 		  auto_vec<stmt_vec_info, 64> phis (group_size);
! 		  stmt_vec_info phi_info
! 		    = vinfo->lookup_stmt (USE_STMT (use_p));
! 		  for (unsigned i = 0; i < group_size; ++i)
! 		    phis.quick_push (phi_info);
! 		  slp_tree *phi_node = bst_map->get (phis);
! 		  unsigned dest_idx = loop_latch_edge (loop)->dest_idx;
! 		  SLP_TREE_CHILDREN (*phi_node)[dest_idx]
! 		    = SLP_INSTANCE_TREE (new_instance);
! 		  SLP_INSTANCE_TREE (new_instance)->refcnt++;
! 		}
  
! 	  vinfo->slp_instances.safe_push (new_instance);
  
! 	  /* ???  We've replaced the old SLP_INSTANCE_GROUP_SIZE with
! 	     the number of scalar stmts in the root in a few places.
! 	     Verify that assumption holds.  */
! 	  gcc_assert (SLP_TREE_SCALAR_STMTS (SLP_INSTANCE_TREE (new_instance))
! 			.length () == group_size);
  
! 	  if (dump_enabled_p ())
! 	    {
! 	      dump_printf_loc (MSG_NOTE, vect_location,
! 			       "Final SLP tree for instance %p:\n",
! 			       (void *) new_instance);
! 	      vect_print_slp_graph (MSG_NOTE, vect_location,
! 				    SLP_INSTANCE_TREE (new_instance));
! 	    }
  
! 	  return true;
  	}
      }
    /* Failed to SLP.  */
  
--- 4255,4449 ----
    poly_uint64 max_nunits = 1;
    unsigned tree_size = 0;
  
+   /* ???  We need this only for SLP discovery.  */
+   for (unsigned i = 0; i < scalar_stmts.length (); ++i)
+     REDUC_GROUP_FIRST_ELEMENT (scalar_stmts[i]) = scalar_stmts[0];
+ 
    slp_tree node = vect_build_slp_tree (vinfo, scalar_stmts, group_size,
  				       &max_nunits, matches, limit,
  				       &tree_size, bst_map);
+ 
+   for (unsigned i = 0; i < scalar_stmts.length (); ++i)
+     REDUC_GROUP_FIRST_ELEMENT (scalar_stmts[i]) = NULL;
+ 
    if (node != NULL)
      {
!       /* Create a new SLP instance.  */
!       slp_instance new_instance = XNEW (class _slp_instance);
!       SLP_INSTANCE_TREE (new_instance) = node;
!       SLP_INSTANCE_LOADS (new_instance) = vNULL;
!       SLP_INSTANCE_ROOT_STMTS (new_instance) = root_stmt_infos;
!       SLP_INSTANCE_REMAIN_DEFS (new_instance) = remain;
!       SLP_INSTANCE_KIND (new_instance) = slp_inst_kind_reduc_chain;
!       new_instance->reduc_phis = NULL;
!       new_instance->cost_vec = vNULL;
!       new_instance->subgraph_entries = vNULL;
  
!       vect_reduc_info reduc_info = info_for_reduction (vinfo, node);
!       reduc_info->is_reduc_chain = true;
! 
!       if (dump_enabled_p ())
! 	dump_printf_loc (MSG_NOTE, vect_location,
! 			 "SLP size %u vs. limit %u.\n",
! 			 tree_size, max_tree_size);
! 
!       /* Fixup SLP reduction chains.  If this is a reduction chain with
! 	 a conversion in front amend the SLP tree with a node for that.  */
!       gimple *scalar_def = STMT_VINFO_REDUC_DEF (reduc_phi_info)->stmt;
!       if (is_gimple_assign (scalar_def)
! 	  && CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (scalar_def)))
  	{
! 	  stmt_vec_info conv_info = vect_stmt_to_vectorize
! 					(STMT_VINFO_REDUC_DEF (reduc_phi_info));
! 	  scalar_stmts = vNULL;
! 	  scalar_stmts.create (group_size);
! 	  for (unsigned i = 0; i < group_size; ++i)
! 	    scalar_stmts.quick_push (conv_info);
! 	  slp_tree conv = vect_create_new_slp_node (scalar_stmts, 1);
! 	  SLP_TREE_VECTYPE (conv)
! 	    = get_vectype_for_scalar_type (vinfo,
! 					   TREE_TYPE
! 					     (gimple_assign_lhs (scalar_def)),
! 					   group_size);
! 	  SLP_TREE_REDUC_IDX (conv) = 0;
! 	  conv->cycle_info.id = node->cycle_info.id;
! 	  SLP_TREE_CHILDREN (conv).quick_push (node);
! 	  SLP_INSTANCE_TREE (new_instance) = conv;
  	}
!       /* Fill the backedge child of the PHI SLP node.  The
! 	 general matching code cannot find it because the
! 	 scalar code does not reflect how we vectorize the
! 	 reduction.  */
!       use_operand_p use_p;
!       imm_use_iterator imm_iter;
!       class loop *loop = LOOP_VINFO_LOOP (vinfo);
!       FOR_EACH_IMM_USE_FAST (use_p, imm_iter,
! 			     gimple_get_lhs (scalar_def))
! 	/* There are exactly two non-debug uses, the reduction
! 	   PHI and the loop-closed PHI node.  */
! 	if (!is_gimple_debug (USE_STMT (use_p))
! 	    && gimple_bb (USE_STMT (use_p)) == loop->header)
! 	  {
! 	    auto_vec<stmt_vec_info, 64> phis (group_size);
! 	    stmt_vec_info phi_info = vinfo->lookup_stmt (USE_STMT (use_p));
! 	    for (unsigned i = 0; i < group_size; ++i)
! 	      phis.quick_push (phi_info);
! 	    slp_tree *phi_node = bst_map->get (phis);
! 	    unsigned dest_idx = loop_latch_edge (loop)->dest_idx;
! 	    SLP_TREE_CHILDREN (*phi_node)[dest_idx]
! 	      = SLP_INSTANCE_TREE (new_instance);
! 	    SLP_INSTANCE_TREE (new_instance)->refcnt++;
! 	  }
! 
!       vinfo->slp_instances.safe_push (new_instance);
! 
!       /* ???  We've replaced the old SLP_INSTANCE_GROUP_SIZE with
! 	 the number of scalar stmts in the root in a few places.
! 	 Verify that assumption holds.  */
!       gcc_assert (SLP_TREE_SCALAR_STMTS (SLP_INSTANCE_TREE (new_instance))
! 		  .length () == group_size);
! 
!       if (dump_enabled_p ())
  	{
! 	  dump_printf_loc (MSG_NOTE, vect_location,
! 			   "Final SLP tree for instance %p:\n",
! 			   (void *) new_instance);
! 	  vect_print_slp_graph (MSG_NOTE, vect_location,
! 				SLP_INSTANCE_TREE (new_instance));
! 	}
  
!       return true;
!     }
  
!   /* Failed to SLP.  */
!   scalar_stmts.release ();
!   if (dump_enabled_p ())
!     dump_printf_loc (MSG_NOTE, vect_location,
! 		     "SLP discovery of reduction chain failed\n");
!   return false;
! }
  
! /* Analyze an SLP instance starting from SCALAR_STMTS which are a group
!    of KIND.  Return true if successful.  */
  
! static bool
! vect_analyze_slp_reduction (loop_vec_info vinfo,
! 			    stmt_vec_info scalar_stmt,
! 			    unsigned max_tree_size, unsigned *limit,
! 			    scalar_stmts_to_slp_tree_map_t *bst_map,
! 			    bool force_single_lane)
! {
!   slp_instance_kind kind = slp_inst_kind_reduc_group;
  
!   /* If there's no budget left bail out early.  */
!   if (*limit == 0)
!     return false;
  
!   /* Try to gather a reduction chain.  */
!   if (! force_single_lane
!       && STMT_VINFO_DEF_TYPE (scalar_stmt) == vect_reduction_def
!       && vect_analyze_slp_reduc_chain (vinfo, bst_map, scalar_stmt,
! 				       max_tree_size, limit))
!     return true;
! 
!   vec<stmt_vec_info> scalar_stmts;
!   scalar_stmts.create (1);
!   scalar_stmts.quick_push (scalar_stmt);
! 
!   if (dump_enabled_p ())
!     {
!       dump_printf_loc (MSG_NOTE, vect_location,
! 		       "Starting SLP discovery for\n");
!       for (unsigned i = 0; i < scalar_stmts.length (); ++i)
! 	dump_printf_loc (MSG_NOTE, vect_location,
! 			 "  %G", scalar_stmts[i]->stmt);
!     }
! 
!   /* Build the tree for the SLP instance.  */
!   unsigned int group_size = scalar_stmts.length ();
!   bool *matches = XALLOCAVEC (bool, group_size);
!   poly_uint64 max_nunits = 1;
!   unsigned tree_size = 0;
! 
!   slp_tree node = vect_build_slp_tree (vinfo, scalar_stmts, group_size,
! 				       &max_nunits, matches, limit,
! 				       &tree_size, bst_map);
!   if (node != NULL)
!     {
!       /* Create a new SLP instance.  */
!       slp_instance new_instance = XNEW (class _slp_instance);
!       SLP_INSTANCE_TREE (new_instance) = node;
!       SLP_INSTANCE_LOADS (new_instance) = vNULL;
!       SLP_INSTANCE_ROOT_STMTS (new_instance) = vNULL;
!       SLP_INSTANCE_REMAIN_DEFS (new_instance) = vNULL;
!       SLP_INSTANCE_KIND (new_instance) = kind;
!       new_instance->reduc_phis = NULL;
!       new_instance->cost_vec = vNULL;
!       new_instance->subgraph_entries = vNULL;
! 
!       if (dump_enabled_p ())
! 	dump_printf_loc (MSG_NOTE, vect_location,
! 			 "SLP size %u vs. limit %u.\n",
! 			 tree_size, max_tree_size);
! 
!       vinfo->slp_instances.safe_push (new_instance);
! 
!       /* ???  We've replaced the old SLP_INSTANCE_GROUP_SIZE with
! 	 the number of scalar stmts in the root in a few places.
! 	 Verify that assumption holds.  */
!       gcc_assert (SLP_TREE_SCALAR_STMTS (SLP_INSTANCE_TREE (new_instance))
! 		  .length () == group_size);
! 
!       if (dump_enabled_p ())
! 	{
! 	  dump_printf_loc (MSG_NOTE, vect_location,
! 			   "Final SLP tree for instance %p:\n",
! 			   (void *) new_instance);
! 	  vect_print_slp_graph (MSG_NOTE, vect_location,
! 				SLP_INSTANCE_TREE (new_instance));
  	}
+ 
+       return true;
      }
    /* Failed to SLP.  */
  
*************** vect_analyze_slp (vec_info *vinfo, unsig
*** 5256,5295 ****
  
    if (loop_vec_info loop_vinfo = dyn_cast <loop_vec_info> (vinfo))
      {
-       /* Find SLP sequences starting from reduction chains.  */
-       FOR_EACH_VEC_ELT (loop_vinfo->reduction_chains, i, first_element)
- 	if (! STMT_VINFO_RELEVANT_P (first_element)
- 	    && ! STMT_VINFO_LIVE_P (first_element))
- 	  ;
- 	else if (force_single_lane
- 		 || ! vect_analyze_slp_reduc_chain (vinfo, bst_map,
- 						    first_element,
- 						    max_tree_size, &limit))
- 	  {
- 	    if (dump_enabled_p ())
- 	      dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- 			       "SLP discovery of reduction chain failed\n");
- 	    /* Dissolve reduction chain group.  */
- 	    stmt_vec_info vinfo = first_element;
- 	    stmt_vec_info last = NULL;
- 	    while (vinfo)
- 	      {
- 		stmt_vec_info next = REDUC_GROUP_NEXT_ELEMENT (vinfo);
- 		REDUC_GROUP_FIRST_ELEMENT (vinfo) = NULL;
- 		REDUC_GROUP_NEXT_ELEMENT (vinfo) = NULL;
- 		last = vinfo;
- 		vinfo = next;
- 	      }
- 	    STMT_VINFO_DEF_TYPE (first_element) = vect_internal_def;
- 	    /* ???  When there's a conversion around the reduction
- 	       chain 'last' isn't the entry of the reduction.  */
- 	    if (STMT_VINFO_DEF_TYPE (last) != vect_reduction_def)
- 	      return opt_result::failure_at (vect_location,
- 					     "SLP build failed.\n");
- 	    /* It can be still vectorized as part of an SLP reduction.  */
- 	    loop_vinfo->reductions.safe_push (last);
- 	  }
- 
        /* Find SLP sequences starting from groups of reductions.  */
        if (loop_vinfo->reductions.length () > 0)
  	{
--- 5337,5342 ----
*************** vect_analyze_slp (vec_info *vinfo, unsig
*** 5315,5337 ****
  		  if (!force_single_lane
  		      && !lane_reducing_stmt_p (STMT_VINFO_STMT (next_info)))
  		    scalar_stmts.quick_push (next_info);
! 		  else
! 		    {
! 		      /* Do SLP discovery for single-lane reductions.  */
! 		      vec<stmt_vec_info> stmts;
! 		      vec<stmt_vec_info> roots = vNULL;
! 		      vec<tree> remain = vNULL;
! 		      stmts.create (1);
! 		      stmts.quick_push (next_info);
! 		      if (! vect_build_slp_instance (vinfo,
! 						     slp_inst_kind_reduc_group,
! 						     stmts, roots, remain,
! 						     max_tree_size, &limit,
! 						     bst_map,
! 						     force_single_lane))
! 			return opt_result::failure_at (vect_location,
! 						       "SLP build failed.\n");
! 		    }
  		}
  	    }
  	  /* Save for re-processing on failure.  */
--- 5362,5374 ----
  		  if (!force_single_lane
  		      && !lane_reducing_stmt_p (STMT_VINFO_STMT (next_info)))
  		    scalar_stmts.quick_push (next_info);
! 		  /* Do SLP discovery for single-lane reductions.  */
! 		  else if (! vect_analyze_slp_reduction (loop_vinfo, next_info,
! 							 max_tree_size, &limit,
! 							 bst_map,
! 							 force_single_lane))
! 		    return opt_result::failure_at (vect_location,
! 						   "SLP build failed.\n");
  		}
  	    }
  	  /* Save for re-processing on failure.  */
*************** vect_analyze_slp (vec_info *vinfo, unsig
*** 5349,5368 ****
  		scalar_stmts.release ();
  	      /* Do SLP discovery for single-lane reductions.  */
  	      for (auto stmt_info : saved_stmts)
! 		{
! 		  vec<stmt_vec_info> stmts;
! 		  vec<stmt_vec_info> roots = vNULL;
! 		  vec<tree> remain = vNULL;
! 		  stmts.create (1);
! 		  stmts.quick_push (vect_stmt_to_vectorize (stmt_info));
! 		  if (! vect_build_slp_instance (vinfo,
! 						 slp_inst_kind_reduc_group,
! 						 stmts, roots, remain,
! 						 max_tree_size, &limit,
! 						 bst_map, force_single_lane))
! 		    return opt_result::failure_at (vect_location,
! 						   "SLP build failed.\n");
! 		}
  	    }
  	  saved_stmts.release ();
  	}
--- 5386,5398 ----
  		scalar_stmts.release ();
  	      /* Do SLP discovery for single-lane reductions.  */
  	      for (auto stmt_info : saved_stmts)
! 		if (! vect_analyze_slp_reduction (loop_vinfo,
! 						  vect_stmt_to_vectorize
! 						    (stmt_info),
! 						  max_tree_size, &limit,
! 						  bst_map, force_single_lane))
! 		  return opt_result::failure_at (vect_location,
! 						 "SLP build failed.\n");
  	    }
  	  saved_stmts.release ();
  	}
diff -Nrcpad gcc-16-20251012/gcc/tree-vect-stmts.cc gcc-16-20251019/gcc/tree-vect-stmts.cc
*** gcc-16-20251012/gcc/tree-vect-stmts.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-vect-stmts.cc	Sun Oct 19 22:32:39 2025
*************** along with GCC; see the file COPYING3.
*** 62,67 ****
--- 62,70 ----
  /* For lang_hooks.types.type_for_mode.  */
  #include "langhooks.h"
  
+ static tree vector_vector_composition_type (tree, poly_uint64, tree *,
+ 					    bool = false);
+ 
  /* Return TRUE iff the given statement is in an inner loop relative to
     the loop being vectorized.  */
  bool
*************** vect_truncate_gather_scatter_offset (stm
*** 1723,1728 ****
--- 1726,1820 ----
    return false;
  }
  
+ /* Return true if we can use gather/scatter or strided internal functions
+    to vectorize STMT_INFO, which is a grouped or strided load or store
+    with multiple lanes and will be implemented by a type-punned access
+    of a vector with element size that matches the number of lanes.
+ 
+    MASKED_P is true if load or store is conditional.
+    When returning true, fill in GS_INFO with the information required to
+    perform the operation.  Also, store the punning type in PUNNED_VECTYPE.
+ 
+    If successful and ELSVALS is nonzero the supported
+    else values will be stored in the vector ELSVALS points to.  */
+ 
+ static bool
+ vect_use_grouped_gather (dr_vec_info *dr_info, tree vectype,
+ 			 loop_vec_info loop_vinfo, bool masked_p,
+ 			 unsigned int nelts,
+ 			 gather_scatter_info *info, vec<int> *elsvals,
+ 			 tree *pun_vectype)
+ {
+   data_reference *dr = dr_info->dr;
+ 
+   /* TODO: We can support nelts > BITS_PER_UNIT or non-power-of-two by
+      multiple gathers/scatter.  */
+   if (nelts > BITS_PER_UNIT || !pow2p_hwi (nelts))
+     return false;
+ 
+   /* Pun the vectype with one of the same size but an element spanning
+      NELTS elements of VECTYPE.
+      The punned type of a V16QI with NELTS = 4 would be V4SI.
+      */
+   tree tmp;
+   unsigned int pieces;
+   if (!can_div_trunc_p (TYPE_VECTOR_SUBPARTS (vectype), nelts, &pieces)
+       || !pieces)
+     return false;
+ 
+   *pun_vectype = vector_vector_composition_type (vectype, pieces, &tmp, true);
+ 
+   if (!*pun_vectype || !VECTOR_TYPE_P (*pun_vectype))
+     return false;
+ 
+   internal_fn ifn;
+   tree offset_vectype = *pun_vectype;
+ 
+   internal_fn strided_ifn = DR_IS_READ (dr)
+     ? IFN_MASK_LEN_STRIDED_LOAD : IFN_MASK_LEN_STRIDED_STORE;
+ 
+   /* Check if we have a gather/scatter with the new type.  We're just trying
+      with the type itself as offset for now.  If not, check if we have a
+      strided load/store.  These have fewer constraints (for example no offset
+      type must exist) so it is possible that even though a gather/scatter is
+      not available we still have a strided load/store.  */
+   bool ok = false;
+   if (vect_gather_scatter_fn_p
+       (loop_vinfo, DR_IS_READ (dr), masked_p, *pun_vectype,
+        TREE_TYPE (*pun_vectype), *pun_vectype, 1, &ifn,
+        &offset_vectype, elsvals))
+     ok = true;
+   else if (internal_strided_fn_supported_p (strided_ifn, *pun_vectype,
+ 					    elsvals))
+     {
+       /* Use gather/scatter IFNs, vect_get_strided_load_store_ops
+ 	 will switch back to the strided variants.  */
+       ifn = DR_IS_READ (dr) ? IFN_MASK_LEN_GATHER_LOAD :
+ 	IFN_MASK_LEN_SCATTER_STORE;
+       ok = true;
+     }
+ 
+   if (ok)
+     {
+       info->ifn = ifn;
+       info->decl = NULL_TREE;
+       info->base = dr->ref;
+       info->alias_ptr = build_int_cst
+ 	(reference_alias_ptr_type (DR_REF (dr)),
+ 	 get_object_alignment (DR_REF (dr)));
+       info->element_type = TREE_TYPE (*pun_vectype);
+       info->offset_vectype = offset_vectype;
+       /* No need to set the offset, vect_get_strided_load_store_ops
+ 	 will do that.  */
+       info->scale = 1;
+       info->memory_type = TREE_TYPE (DR_REF (dr));
+       return true;
+     }
+ 
+   return false;
+ }
+ 
+ 
  /* Return true if we can use gather/scatter internal functions to
     vectorize STMT_INFO, which is a grouped or strided load or store.
     MASKED_P is true if load or store is conditional.  When returning
*************** vect_get_store_rhs (stmt_vec_info stmt_i
*** 1888,1899 ****
  
  /* Function VECTOR_VECTOR_COMPOSITION_TYPE
  
!    This function returns a vector type which can be composed with NETLS pieces,
     whose type is recorded in PTYPE.  VTYPE should be a vector type, and has the
     same vector size as the return vector.  It checks target whether supports
     pieces-size vector mode for construction firstly, if target fails to, check
     pieces-size scalar mode for construction further.  It returns NULL_TREE if
!    fails to find the available composition.
  
     For example, for (vtype=V16QI, nelts=4), we can probably get:
       - V16QI with PTYPE V4QI.
--- 1980,1993 ----
  
  /* Function VECTOR_VECTOR_COMPOSITION_TYPE
  
!    This function returns a vector type which can be composed with NELTS pieces,
     whose type is recorded in PTYPE.  VTYPE should be a vector type, and has the
     same vector size as the return vector.  It checks target whether supports
     pieces-size vector mode for construction firstly, if target fails to, check
     pieces-size scalar mode for construction further.  It returns NULL_TREE if
!    fails to find the available composition.  If the caller only wants scalar
!    pieces where PTYPE e.g. is a possible gather/scatter element type
!    SCALAR_PTYPE_ONLY must be true.
  
     For example, for (vtype=V16QI, nelts=4), we can probably get:
       - V16QI with PTYPE V4QI.
*************** vect_get_store_rhs (stmt_vec_info stmt_i
*** 1901,1907 ****
       - NULL_TREE.  */
  
  static tree
! vector_vector_composition_type (tree vtype, poly_uint64 nelts, tree *ptype)
  {
    gcc_assert (VECTOR_TYPE_P (vtype));
    gcc_assert (known_gt (nelts, 0U));
--- 1995,2002 ----
       - NULL_TREE.  */
  
  static tree
! vector_vector_composition_type (tree vtype, poly_uint64 nelts, tree *ptype,
! 				bool scalar_ptype_only)
  {
    gcc_assert (VECTOR_TYPE_P (vtype));
    gcc_assert (known_gt (nelts, 0U));
*************** vector_vector_composition_type (tree vty
*** 1927,1933 ****
        scalar_mode elmode = SCALAR_TYPE_MODE (TREE_TYPE (vtype));
        poly_uint64 inelts = pbsize / GET_MODE_BITSIZE (elmode);
        machine_mode rmode;
!       if (related_vector_mode (vmode, elmode, inelts).exists (&rmode)
  	  && (convert_optab_handler (vec_init_optab, vmode, rmode)
  	      != CODE_FOR_nothing))
  	{
--- 2022,2029 ----
        scalar_mode elmode = SCALAR_TYPE_MODE (TREE_TYPE (vtype));
        poly_uint64 inelts = pbsize / GET_MODE_BITSIZE (elmode);
        machine_mode rmode;
!       if (!scalar_ptype_only
! 	  && related_vector_mode (vmode, elmode, inelts).exists (&rmode)
  	  && (convert_optab_handler (vec_init_optab, vmode, rmode)
  	      != CODE_FOR_nothing))
  	{
*************** vector_vector_composition_type (tree vty
*** 1938,1949 ****
        /* Otherwise check if exists an integer type of the same piece size and
  	 if vec_init optab supports construction from it directly.  */
        if (int_mode_for_size (pbsize, 0).exists (&elmode)
! 	  && related_vector_mode (vmode, elmode, nelts).exists (&rmode)
! 	  && (convert_optab_handler (vec_init_optab, rmode, elmode)
! 	      != CODE_FOR_nothing))
  	{
! 	  *ptype = build_nonstandard_integer_type (pbsize, 1);
! 	  return build_vector_type (*ptype, nelts);
  	}
      }
  
--- 2034,2048 ----
        /* Otherwise check if exists an integer type of the same piece size and
  	 if vec_init optab supports construction from it directly.  */
        if (int_mode_for_size (pbsize, 0).exists (&elmode)
! 	  && related_vector_mode (vmode, elmode, nelts).exists (&rmode))
  	{
! 	  if (scalar_ptype_only
! 	      || convert_optab_handler (vec_init_optab, rmode, elmode)
! 	      != CODE_FOR_nothing)
! 	    {
! 	      *ptype = build_nonstandard_integer_type (pbsize, 1);
! 	      return build_vector_type (*ptype, nelts);
! 	    }
  	}
      }
  
*************** vector_vector_composition_type (tree vty
*** 1963,1978 ****
     VECTYPE is the vector type that the vectorized statements will use.
  
     If ELSVALS is nonzero the supported else values will be stored in the
!    vector ELSVALS points to.
! 
!    For loads PERM_OK indicates whether we can code generate a
!    SLP_TREE_LOAD_PERMUTATION on the node.  */
  
  static bool
  get_load_store_type (vec_info  *vinfo, stmt_vec_info stmt_info,
  		     tree vectype, slp_tree slp_node,
  		     bool masked_p, vec_load_store_type vls_type,
! 		     bool perm_ok, vect_load_store_data *ls)
  {
    vect_memory_access_type *memory_access_type = &ls->memory_access_type;
    poly_int64 *poffset = &ls->poffset;
--- 2062,2074 ----
     VECTYPE is the vector type that the vectorized statements will use.
  
     If ELSVALS is nonzero the supported else values will be stored in the
!    vector ELSVALS points to.  */
  
  static bool
  get_load_store_type (vec_info  *vinfo, stmt_vec_info stmt_info,
  		     tree vectype, slp_tree slp_node,
  		     bool masked_p, vec_load_store_type vls_type,
! 		     vect_load_store_data *ls)
  {
    vect_memory_access_type *memory_access_type = &ls->memory_access_type;
    poly_int64 *poffset = &ls->poffset;
*************** get_load_store_type (vec_info  *vinfo, s
*** 1981,1986 ****
--- 2077,2085 ----
    int *misalignment = &ls->misalignment;
    internal_fn *lanes_ifn = &ls->lanes_ifn;
    vec<int> *elsvals = &ls->elsvals;
+   tree *ls_type = &ls->ls_type;
+   bool *slp_perm = &ls->slp_perm;
+   unsigned *n_perms = &ls->n_perms;
    loop_vec_info loop_vinfo = dyn_cast <loop_vec_info> (vinfo);
    poly_uint64 nunits = TYPE_VECTOR_SUBPARTS (vectype);
    class loop *loop = loop_vinfo ? LOOP_VINFO_LOOP (loop_vinfo) : NULL;
*************** get_load_store_type (vec_info  *vinfo, s
*** 1992,1997 ****
--- 2091,2106 ----
  
    *misalignment = DR_MISALIGNMENT_UNKNOWN;
    *poffset = 0;
+   *ls_type = NULL_TREE;
+   *slp_perm = false;
+   *n_perms = -1U;
+ 
+   bool perm_ok = true;
+   poly_int64 vf = loop_vinfo ? LOOP_VINFO_VECT_FACTOR (loop_vinfo) : 1;
+ 
+   if (SLP_TREE_LOAD_PERMUTATION (slp_node).exists ())
+     perm_ok = vect_transform_slp_perm_load (vinfo, slp_node, vNULL, NULL,
+ 					    vf, true, n_perms);
  
    if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
      {
*************** get_load_store_type (vec_info  *vinfo, s
*** 2298,2315 ****
       on nearby locations.  Or, even if it's a win over scalar code,
       it might not be a win over vectorizing at a lower VF, if that
       allows us to use contiguous accesses.  */
    if (loop_vinfo
        && (*memory_access_type == VMAT_ELEMENTWISE
  	  || *memory_access_type == VMAT_STRIDED_SLP)
!       && !STMT_VINFO_GATHER_SCATTER_P (stmt_info)
!       && SLP_TREE_LANES (slp_node) == 1
!       && (!SLP_TREE_LOAD_PERMUTATION (slp_node).exists ()
! 	  || single_element_p))
      {
        gather_scatter_info gs_info;
!       if (vect_use_strided_gather_scatters_p (stmt_info, vectype, loop_vinfo,
! 					      masked_p, &gs_info, elsvals,
! 					      group_size, single_element_p))
  	{
  	  SLP_TREE_GS_SCALE (slp_node) = gs_info.scale;
  	  SLP_TREE_GS_BASE (slp_node) = error_mark_node;
--- 2407,2425 ----
       on nearby locations.  Or, even if it's a win over scalar code,
       it might not be a win over vectorizing at a lower VF, if that
       allows us to use contiguous accesses.  */
+   vect_memory_access_type grouped_gather_fallback = VMAT_UNINITIALIZED;
    if (loop_vinfo
        && (*memory_access_type == VMAT_ELEMENTWISE
  	  || *memory_access_type == VMAT_STRIDED_SLP)
!       && !STMT_VINFO_GATHER_SCATTER_P (stmt_info))
      {
        gather_scatter_info gs_info;
!       if (SLP_TREE_LANES (slp_node) == 1
! 	  && (!SLP_TREE_LOAD_PERMUTATION (slp_node).exists ()
! 	      || single_element_p)
! 	  && vect_use_strided_gather_scatters_p (stmt_info, vectype, loop_vinfo,
! 						 masked_p, &gs_info, elsvals,
! 						 group_size, single_element_p))
  	{
  	  SLP_TREE_GS_SCALE (slp_node) = gs_info.scale;
  	  SLP_TREE_GS_BASE (slp_node) = error_mark_node;
*************** get_load_store_type (vec_info  *vinfo, s
*** 2317,2322 ****
--- 2427,2448 ----
  	  ls->strided_offset_vectype = gs_info.offset_vectype;
  	  *memory_access_type = VMAT_GATHER_SCATTER_IFN;
  	}
+       else if (SLP_TREE_LANES (slp_node) > 1
+ 	       && !masked_p
+ 	       && !single_element_p
+ 	       && vect_use_grouped_gather (STMT_VINFO_DR_INFO (stmt_info),
+ 					   vectype, loop_vinfo,
+ 					   masked_p, group_size,
+ 					   &gs_info, elsvals, ls_type))
+ 	{
+ 	  SLP_TREE_GS_SCALE (slp_node) = gs_info.scale;
+ 	  SLP_TREE_GS_BASE (slp_node) = error_mark_node;
+ 	  grouped_gather_fallback = *memory_access_type;
+ 	  *memory_access_type = VMAT_GATHER_SCATTER_IFN;
+ 	  ls->gs.ifn = gs_info.ifn;
+ 	  vectype = *ls_type;
+ 	  ls->strided_offset_vectype = gs_info.offset_vectype;
+ 	}
      }
  
    if (*memory_access_type == VMAT_CONTIGUOUS_DOWN
*************** get_load_store_type (vec_info  *vinfo, s
*** 2342,2347 ****
--- 2468,2485 ----
  	= vect_supportable_dr_alignment
  	   (vinfo, first_dr_info, vectype, *misalignment,
  	    mat_gather_scatter_p (*memory_access_type));
+       if (grouped_gather_fallback != VMAT_UNINITIALIZED
+ 	  && *alignment_support_scheme != dr_aligned
+ 	  && *alignment_support_scheme != dr_unaligned_supported)
+ 	{
+ 	  /* No supportable alignment for a grouped gather, fall back to the
+ 	     original memory access type.  Even though VMAT_STRIDED_SLP might
+ 	     also try aligned vector loads it can still choose vector
+ 	     construction from scalars.  */
+ 	  *memory_access_type = grouped_gather_fallback;
+ 	  *alignment_support_scheme = dr_unaligned_supported;
+ 	  *misalignment = DR_MISALIGNMENT_UNKNOWN;
+ 	}
      }
  
    if (overrun_p)
*************** get_load_store_type (vec_info  *vinfo, s
*** 2404,2410 ****
        poly_uint64 read_amount
  	= vf * TREE_INT_CST_LOW (TYPE_SIZE_UNIT (TREE_TYPE (vectype)));
        if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
! 	read_amount *= DR_GROUP_SIZE (DR_GROUP_FIRST_ELEMENT (stmt_info));
  
        auto target_alignment
  	= DR_TARGET_ALIGNMENT (STMT_VINFO_DR_INFO (stmt_info));
--- 2542,2548 ----
        poly_uint64 read_amount
  	= vf * TREE_INT_CST_LOW (TYPE_SIZE_UNIT (TREE_TYPE (vectype)));
        if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
! 	read_amount *= group_size;
  
        auto target_alignment
  	= DR_TARGET_ALIGNMENT (STMT_VINFO_DR_INFO (stmt_info));
*************** get_load_store_type (vec_info  *vinfo, s
*** 2497,2502 ****
--- 2635,2694 ----
    if (!loop_vinfo && *memory_access_type == VMAT_ELEMENTWISE)
      return false;
  
+   /* Some loads need to explicitly permute the loaded data if there
+      is a load permutation.  Among those are:
+       - VMAT_ELEMENTWISE.
+       - VMAT_STRIDED_SLP.
+       - VMAT_GATHER_SCATTER:
+ 	- Strided gather (fallback for VMAT_STRIDED_SLP if #lanes == 1).
+ 	- Grouped strided gather (ditto but for #lanes > 1).
+ 
+      For VMAT_ELEMENTWISE we can fold the load permutation into the
+      individual indices we access directly, eliding the permutation.
+      Strided gather only allows load permutations for the
+      single-element case.  */
+ 
+   if (SLP_TREE_LOAD_PERMUTATION (slp_node).exists ()
+       && !(*memory_access_type == VMAT_ELEMENTWISE
+ 	   || (mat_gather_scatter_p (*memory_access_type)
+ 	       && SLP_TREE_LANES (slp_node) == 1
+ 	       && single_element_p)))
+     {
+       if (!loop_vinfo)
+ 	{
+ 	  /* In BB vectorization we may not actually use a loaded vector
+ 	     accessing elements in excess of DR_GROUP_SIZE.  */
+ 	  stmt_vec_info group_info = SLP_TREE_SCALAR_STMTS (slp_node)[0];
+ 	  group_info = DR_GROUP_FIRST_ELEMENT (group_info);
+ 	  unsigned HOST_WIDE_INT nunits;
+ 	  unsigned j, k, maxk = 0;
+ 	  FOR_EACH_VEC_ELT (SLP_TREE_LOAD_PERMUTATION (slp_node), j, k)
+ 	    if (k > maxk)
+ 	      maxk = k;
+ 	  tree vectype = SLP_TREE_VECTYPE (slp_node);
+ 	  if (!TYPE_VECTOR_SUBPARTS (vectype).is_constant (&nunits)
+ 	      || maxk >= (DR_GROUP_SIZE (group_info) & ~(nunits - 1)))
+ 	    {
+ 	      if (dump_enabled_p ())
+ 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 				 "BB vectorization with gaps at the end of "
+ 				 "a load is not supported\n");
+ 	      return false;
+ 	    }
+ 	}
+ 
+       if (!perm_ok)
+ 	{
+ 	  if (dump_enabled_p ())
+ 	    dump_printf_loc (MSG_MISSED_OPTIMIZATION,
+ 			     vect_location,
+ 			     "unsupported load permutation\n");
+ 	  return false;
+ 	}
+ 
+       *slp_perm = true;
+     }
+ 
    return true;
  }
  
*************** vectorizable_store (vec_info *vinfo,
*** 7879,7885 ****
    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,
! 			       vls_type, false, &_ls_data))
      return false;
    /* Temporary aliases to analysis data, should not be modified through
       these.  */
--- 8071,8077 ----
    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,
! 			       vls_type, &_ls_data))
      return false;
    /* Temporary aliases to analysis data, should not be modified through
       these.  */
*************** vectorizable_store (vec_info *vinfo,
*** 8355,8364 ****
      {
        aggr_type = elem_type;
        if (!costing_p)
! 	vect_get_strided_load_store_ops (stmt_info, slp_node, vectype,
! 					 ls.strided_offset_vectype,
! 					 loop_vinfo, gsi,
! 					 &bump, &vec_offset, loop_lens);
      }
    else
      {
--- 8547,8559 ----
      {
        aggr_type = elem_type;
        if (!costing_p)
! 	{
! 	  tree vtype = ls.ls_type ? ls.ls_type : vectype;
! 	  vect_get_strided_load_store_ops (stmt_info, slp_node, vtype,
! 					   ls.strided_offset_vectype,
! 					   loop_vinfo, gsi,
! 					   &bump, &vec_offset, loop_lens);
! 	}
      }
    else
      {
*************** vectorizable_store (vec_info *vinfo,
*** 8544,8550 ****
  
    if (mat_gather_scatter_p (memory_access_type))
      {
!       gcc_assert (!grouped_store);
        auto_vec<tree> vec_offsets;
        unsigned int inside_cost = 0, prologue_cost = 0;
        int num_stmts = vec_num;
--- 8739,8747 ----
  
    if (mat_gather_scatter_p (memory_access_type))
      {
!       gcc_assert (!grouped_store || ls.ls_type);
!       if (ls.ls_type)
! 	vectype = ls.ls_type;
        auto_vec<tree> vec_offsets;
        unsigned int inside_cost = 0, prologue_cost = 0;
        int num_stmts = vec_num;
*************** vectorizable_store (vec_info *vinfo,
*** 8591,8598 ****
  	      if (mask_node)
  		vec_mask = vec_masks[j];
  	      /* We should have catched mismatched types earlier.  */
! 	      gcc_assert (useless_type_conversion_p (vectype,
! 						     TREE_TYPE (vec_oprnd)));
  	    }
  	  tree final_mask = NULL_TREE;
  	  tree final_len = NULL_TREE;
--- 8788,8796 ----
  	      if (mask_node)
  		vec_mask = vec_masks[j];
  	      /* We should have catched mismatched types earlier.  */
! 	      gcc_assert (ls.ls_type
! 			  || useless_type_conversion_p
! 			  (vectype, TREE_TYPE (vec_oprnd)));
  	    }
  	  tree final_mask = NULL_TREE;
  	  tree final_len = NULL_TREE;
*************** vectorizable_store (vec_info *vinfo,
*** 8645,8650 ****
--- 8843,8860 ----
  		    }
  		}
  
+ 	      if (ls.ls_type)
+ 		{
+ 		  gimple *conv_stmt
+ 		    = gimple_build_assign (make_ssa_name (vectype),
+ 					   VIEW_CONVERT_EXPR,
+ 					   build1 (VIEW_CONVERT_EXPR, vectype,
+ 						   vec_oprnd));
+ 		  vect_finish_stmt_generation (vinfo, stmt_info, conv_stmt,
+ 					       gsi);
+ 		  vec_oprnd = gimple_get_lhs (conv_stmt);
+ 		}
+ 
  	      gcall *call;
  	      if (final_len && final_mask)
  		{
*************** vectorizable_load (vec_info *vinfo,
*** 9306,9312 ****
    bool compute_in_loop = false;
    class loop *at_loop;
    int vec_num;
-   bool slp_perm = false;
    bb_vec_info bb_vinfo = dyn_cast <bb_vec_info> (vinfo);
    poly_uint64 vf;
    tree aggr_type;
--- 9516,9521 ----
*************** vectorizable_load (vec_info *vinfo,
*** 9444,9460 ****
    else
      group_size = 1;
  
-   bool perm_ok = true;
-   unsigned n_perms = -1U;
-   if (cost_vec && SLP_TREE_LOAD_PERMUTATION (slp_node).exists ())
-     perm_ok = vect_transform_slp_perm_load (vinfo, slp_node, vNULL, NULL, vf,
- 					    true, &n_perms);
- 
    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,
! 			       VLS_LOAD, perm_ok, &ls))
      return false;
    /* Temporary aliases to analysis data, should not be modified through
       these.  */
--- 9653,9663 ----
    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,
! 			       VLS_LOAD, &ls))
      return false;
    /* Temporary aliases to analysis data, should not be modified through
       these.  */
*************** vectorizable_load (vec_info *vinfo,
*** 9475,9530 ****
    bool type_mode_padding_p
      = TYPE_PRECISION (scalar_type) < GET_MODE_PRECISION (GET_MODE_INNER (mode));
  
-   /* ???  The following checks should really be part of
-      get_load_store_type.  */
-   if (SLP_TREE_LOAD_PERMUTATION (slp_node).exists ()
-       && !(memory_access_type == VMAT_ELEMENTWISE
- 	   || (mat_gather_scatter_p (memory_access_type)
- 	       && SLP_TREE_LANES (slp_node) == 1
- 	       && (!grouped_load
- 		   || !DR_GROUP_NEXT_ELEMENT (first_stmt_info)))))
-     {
-       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.  */
- 	  stmt_vec_info group_info = SLP_TREE_SCALAR_STMTS (slp_node)[0];
- 	  group_info = DR_GROUP_FIRST_ELEMENT (group_info);
- 	  unsigned HOST_WIDE_INT nunits;
- 	  unsigned j, k, maxk = 0;
- 	  FOR_EACH_VEC_ELT (SLP_TREE_LOAD_PERMUTATION (slp_node), j, k)
- 	      if (k > maxk)
- 		maxk = k;
- 	  tree vectype = SLP_TREE_VECTYPE (slp_node);
- 	  if (!TYPE_VECTOR_SUBPARTS (vectype).is_constant (&nunits)
- 	      || maxk >= (DR_GROUP_SIZE (group_info) & ~(nunits - 1)))
- 	    {
- 	      if (dump_enabled_p ())
- 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
- 				 "BB vectorization with gaps at the end of "
- 				 "a load is not supported\n");
- 	      return false;
- 	    }
- 	}
- 
-       if (cost_vec)
- 	{
- 	  if (!perm_ok)
- 	    {
- 	      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
        && memory_access_type != VMAT_LOAD_STORE_LANES)
      {
--- 9678,9683 ----
*************** vectorizable_load (vec_info *vinfo,
*** 9879,9885 ****
  	 not only the number of vector stmts the permutation result
  	 fits in.  */
        int ncopies;
!       if (slp_perm)
  	{
  	  gcc_assert (memory_access_type != VMAT_ELEMENTWISE);
  	  /* We don't yet generate SLP_TREE_LOAD_PERMUTATIONs for
--- 10032,10038 ----
  	 not only the number of vector stmts the permutation result
  	 fits in.  */
        int ncopies;
!       if (ls.slp_perm)
  	{
  	  gcc_assert (memory_access_type != VMAT_ELEMENTWISE);
  	  /* We don't yet generate SLP_TREE_LOAD_PERMUTATIONs for
*************** vectorizable_load (vec_info *vinfo,
*** 9987,10004 ****
  
  	  if (!costing_p)
  	    {
! 	      if (slp_perm)
  		dr_chain.quick_push (gimple_assign_lhs (new_stmt));
  	      else
  		slp_node->push_vec_def (new_stmt);
  	    }
  	}
!       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
--- 10140,10157 ----
  
  	  if (!costing_p)
  	    {
! 	      if (ls.slp_perm)
  		dr_chain.quick_push (gimple_assign_lhs (new_stmt));
  	      else
  		slp_node->push_vec_def (new_stmt);
  	    }
  	}
!       if (ls.slp_perm)
  	{
  	  if (costing_p)
  	    {
! 	      gcc_assert (ls.n_perms != -1U);
! 	      inside_cost += record_stmt_cost (cost_vec, ls.n_perms, vec_perm,
  					       slp_node, 0, vect_body);
  	    }
  	  else
*************** vectorizable_load (vec_info *vinfo,
*** 10006,10012 ****
  	      unsigned n_perms2;
  	      vect_transform_slp_perm_load (vinfo, slp_node, dr_chain, gsi, vf,
  					    false, &n_perms2);
! 	      gcc_assert (n_perms == n_perms2);
  	    }
  	}
  
--- 10159,10165 ----
  	      unsigned n_perms2;
  	      vect_transform_slp_perm_load (vinfo, slp_node, dr_chain, gsi, vf,
  					    false, &n_perms2);
! 	      gcc_assert (ls.n_perms == n_perms2);
  	    }
  	}
  
*************** vectorizable_load (vec_info *vinfo,
*** 10027,10033 ****
        return true;
      }
  
!   if (mat_gather_scatter_p (memory_access_type))
      grouped_load = false;
  
    if (grouped_load
--- 10180,10187 ----
        return true;
      }
  
!   if (mat_gather_scatter_p (memory_access_type)
!       && !ls.ls_type)
      grouped_load = false;
  
    if (grouped_load
*************** vectorizable_load (vec_info *vinfo,
*** 10070,10076 ****
  	   instead the access is contiguous but it might be
  	   permuted.  No gap adjustment is needed though.  */
  	;
!       else if (slp_perm
  	       && (group_size != scalar_lanes
  		   || !multiple_p (nunits, group_size)))
  	{
--- 10224,10230 ----
  	   instead the access is contiguous but it might be
  	   permuted.  No gap adjustment is needed though.  */
  	;
!       else if (ls.slp_perm
  	       && (group_size != scalar_lanes
  		   || !multiple_p (nunits, group_size)))
  	{
*************** vectorizable_load (vec_info *vinfo,
*** 10085,10090 ****
--- 10239,10245 ----
  	{
  	  group_gap_adj = group_size - scalar_lanes;
  	}
+       dr_chain.create (vec_num);
  
        ref_type = get_group_alias_ptr_type (first_stmt_info);
      }
*************** vectorizable_load (vec_info *vinfo,
*** 10418,10424 ****
  
    if (mat_gather_scatter_p (memory_access_type))
      {
!       gcc_assert (!grouped_load && !slp_perm);
  
        /* 1. Create the vector or array pointer update chain.  */
        if (STMT_VINFO_GATHER_SCATTER_P (stmt_info))
--- 10573,10586 ----
  
    if (mat_gather_scatter_p (memory_access_type))
      {
!       gcc_assert ((!grouped_load && !ls.slp_perm) || ls.ls_type);
! 
!       /* If we pun the original vectype the loads as well as costing, length,
! 	 etc. is performed with the new type.  After loading we VIEW_CONVERT
! 	 the data to the original vectype.  */
!       tree original_vectype = vectype;
!       if (ls.ls_type)
! 	vectype = ls.ls_type;
  
        /* 1. Create the vector or array pointer update chain.  */
        if (STMT_VINFO_GATHER_SCATTER_P (stmt_info))
*************** vectorizable_load (vec_info *vinfo,
*** 10759,10766 ****
  	      new_temp = new_temp2;
  	    }
  
  	  /* Store vector loads in the corresponding SLP_NODE.  */
! 	  slp_node->push_vec_def (new_stmt);
  	}
  
        if (costing_p && dump_enabled_p ())
--- 10921,10962 ----
  	      new_temp = new_temp2;
  	    }
  
+ 	  if (ls.ls_type)
+ 	    {
+ 	      new_stmt = gimple_build_assign (make_ssa_name
+ 					      (original_vectype),
+ 					      VIEW_CONVERT_EXPR,
+ 					      build1 (VIEW_CONVERT_EXPR,
+ 						      original_vectype,
+ 						      new_temp));
+ 	      vect_finish_stmt_generation (vinfo, stmt_info, new_stmt, gsi);
+ 	    }
+ 
  	  /* Store vector loads in the corresponding SLP_NODE.  */
! 	  if (!costing_p)
! 	    {
! 	      if (ls.slp_perm)
! 		dr_chain.quick_push (gimple_assign_lhs (new_stmt));
! 	      else
! 		slp_node->push_vec_def (new_stmt);
! 	    }
! 	}
! 
!       if (ls.slp_perm)
! 	{
! 	  if (costing_p)
! 	    {
! 	      gcc_assert (ls.n_perms != -1U);
! 	      inside_cost += record_stmt_cost (cost_vec, ls.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 (ls.n_perms == n_perms2);
! 	    }
  	}
  
        if (costing_p && dump_enabled_p ())
*************** vectorizable_load (vec_info *vinfo,
*** 10843,10849 ****
  				       stmt_info, bump);
      }
  
!   if (grouped_load || slp_perm)
      dr_chain.create (vec_num);
  
    gimple *new_stmt = NULL;
--- 11039,11045 ----
  				       stmt_info, bump);
      }
  
!   if (grouped_load || ls.slp_perm)
      dr_chain.create (vec_num);
  
    gimple *new_stmt = NULL;
*************** vectorizable_load (vec_info *vinfo,
*** 11340,11350 ****
  
        /* Collect vector loads and later create their permutation in
  	 vect_transform_slp_perm_load.  */
!       if (!costing_p && (grouped_load || slp_perm))
  	dr_chain.quick_push (new_temp);
  
        /* Store vector loads in the corresponding SLP_NODE.  */
!       if (!costing_p && !slp_perm)
  	slp_node->push_vec_def (new_stmt);
  
        /* With SLP permutation we load the gaps as well, without
--- 11536,11546 ----
  
        /* Collect vector loads and later create their permutation in
  	 vect_transform_slp_perm_load.  */
!       if (!costing_p && (grouped_load || ls.slp_perm))
  	dr_chain.quick_push (new_temp);
  
        /* Store vector loads in the corresponding SLP_NODE.  */
!       if (!costing_p && !ls.slp_perm)
  	slp_node->push_vec_def (new_stmt);
  
        /* With SLP permutation we load the gaps as well, without
*************** vectorizable_load (vec_info *vinfo,
*** 11353,11359 ****
        group_elt += nunits;
        if (!costing_p
  	  && maybe_ne (group_gap_adj, 0U)
! 	  && !slp_perm
  	  && known_eq (group_elt, group_size - group_gap_adj))
  	{
  	  poly_wide_int bump_val
--- 11549,11555 ----
        group_elt += nunits;
        if (!costing_p
  	  && maybe_ne (group_gap_adj, 0U)
! 	  && !ls.slp_perm
  	  && known_eq (group_elt, group_size - group_gap_adj))
  	{
  	  poly_wide_int bump_val
*************** vectorizable_load (vec_info *vinfo,
*** 11370,11376 ****
       elements loaded for a permuted SLP load.  */
    if (!costing_p
        && maybe_ne (group_gap_adj, 0U)
!       && slp_perm)
      {
        poly_wide_int bump_val
  	= (wi::to_wide (TYPE_SIZE_UNIT (elem_type)) * group_gap_adj);
--- 11566,11572 ----
       elements loaded for a permuted SLP load.  */
    if (!costing_p
        && maybe_ne (group_gap_adj, 0U)
!       && ls.slp_perm)
      {
        poly_wide_int bump_val
  	= (wi::to_wide (TYPE_SIZE_UNIT (elem_type)) * group_gap_adj);
*************** vectorizable_load (vec_info *vinfo,
*** 11381,11387 ****
  				     stmt_info, bump);
      }
  
!   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.
--- 11577,11583 ----
  				     stmt_info, bump);
      }
  
!   if (ls.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.
*************** vectorizable_load (vec_info *vinfo,
*** 11389,11397 ****
  	 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
--- 11585,11593 ----
  	 in PR101120 and friends.  */
        if (costing_p)
  	{
! 	  gcc_assert (ls.n_perms != -1U);
! 	  if (ls.n_perms != 0)
! 	    inside_cost = record_stmt_cost (cost_vec, ls.n_perms, vec_perm,
  					    slp_node, 0, vect_body);
  	}
        else
*************** vectorizable_load (vec_info *vinfo,
*** 11400,11406 ****
  	  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 ();
      }
--- 11596,11602 ----
  	  bool ok = vect_transform_slp_perm_load (vinfo, slp_node, dr_chain,
  						  gsi, vf, false, &n_perms2,
  						  nullptr, true);
! 	  gcc_assert (ok && ls.n_perms == n_perms2);
  	}
        dr_chain.release ();
      }
diff -Nrcpad gcc-16-20251012/gcc/tree-vectorizer.h gcc-16-20251019/gcc/tree-vectorizer.h
*** gcc-16-20251012/gcc/tree-vectorizer.h	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree-vectorizer.h	Sun Oct 19 22:32:39 2025
*************** struct vect_load_store_data : vect_data
*** 288,294 ****
--- 288,297 ----
        tree decl;	// VMAT_GATHER_SCATTER_DECL
    } gs;
    tree strided_offset_vectype; // VMAT_GATHER_SCATTER_IFN, originally strided
+   tree ls_type; // VMAT_GATHER_SCATTER_IFN
    auto_vec<int> elsvals;
+   /* True if the load requires a load permutation.  */
+   bool slp_perm;    // SLP_TREE_LOAD_PERMUTATION
    unsigned n_perms; // SLP_TREE_LOAD_PERMUTATION
  };
  
*************** public:
*** 843,848 ****
--- 846,854 ----
       following land-reducing operation would be assigned to.  */
    unsigned int reduc_result_pos;
  
+   /* Whether this represents a reduction chain.  */
+   bool is_reduc_chain;
+ 
    /* Whether we force a single cycle PHI during reduction vectorization.  */
    bool force_single_cycle;
  
*************** public:
*** 1065,1074 ****
    /* Reduction cycles detected in the loop. Used in loop-aware SLP.  */
    auto_vec<stmt_vec_info> reductions;
  
-   /* All reduction chains in the loop, represented by the first
-      stmt in the chain.  */
-   auto_vec<stmt_vec_info> reduction_chains;
- 
    /* Defs that could not be analyzed such as OMP SIMD calls without
       a LHS.  */
    auto_vec<stmt_vec_info> alternate_defs;
--- 1071,1076 ----
*************** public:
*** 1289,1295 ****
  #define LOOP_VINFO_SLP_INSTANCES(L)        (L)->slp_instances
  #define LOOP_VINFO_SLP_UNROLLING_FACTOR(L) (L)->slp_unrolling_factor
  #define LOOP_VINFO_REDUCTIONS(L)           (L)->reductions
- #define LOOP_VINFO_REDUCTION_CHAINS(L)     (L)->reduction_chains
  #define LOOP_VINFO_PEELING_FOR_GAPS(L)     (L)->peeling_for_gaps
  #define LOOP_VINFO_PEELING_FOR_NITER(L)    (L)->peeling_for_niter
  #define LOOP_VINFO_EARLY_BREAKS(L)         (L)->early_breaks
--- 1291,1296 ----
*************** public:
*** 1537,1543 ****
    /*  Whether the stmt is SLPed, loop-based vectorized, or both.  */
    enum slp_vect_type slp_type;
  
!   /* Interleaving and reduction chains info.  */
    /* First element in the group.  */
    stmt_vec_info first_element;
    /* Pointer to the next element in the group.  */
--- 1538,1544 ----
    /*  Whether the stmt is SLPed, loop-based vectorized, or both.  */
    enum slp_vect_type slp_type;
  
!   /* Interleaving chains info.  */
    /* First element in the group.  */
    stmt_vec_info first_element;
    /* Pointer to the next element in the group.  */
*************** struct gather_scatter_info {
*** 1710,1722 ****
  #define DR_GROUP_GAP(S) \
    (gcc_checking_assert ((S)->dr_aux.dr), (S)->gap)
  
- #define REDUC_GROUP_FIRST_ELEMENT(S) \
-   (gcc_checking_assert (!(S)->dr_aux.dr), (S)->first_element)
- #define REDUC_GROUP_NEXT_ELEMENT(S) \
-   (gcc_checking_assert (!(S)->dr_aux.dr), (S)->next_element)
- #define REDUC_GROUP_SIZE(S) \
-   (gcc_checking_assert (!(S)->dr_aux.dr), (S)->size)
- 
  #define STMT_VINFO_RELEVANT_P(S)          ((S)->relevant != vect_unused_in_scope)
  
  #define PURE_SLP_STMT(S)                  ((S)->slp_type == pure_slp)
--- 1711,1716 ----
diff -Nrcpad gcc-16-20251012/gcc/tree.cc gcc-16-20251019/gcc/tree.cc
*** gcc-16-20251012/gcc/tree.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/tree.cc	Sun Oct 19 22:32:39 2025
*************** along with GCC; see the file COPYING3.
*** 75,80 ****
--- 75,81 ----
  #include "dfp.h"
  #include "asan.h"
  #include "ubsan.h"
+ #include "attr-callback.h"
  
  /* Names of tree components.
     Used for printing out the tree and error messages.  */
*************** set_call_expr_flags (tree decl, int flag
*** 10000,10009 ****
      DECL_ATTRIBUTES (decl)
        = tree_cons (get_identifier ("expected_throw"),
  		   NULL, DECL_ATTRIBUTES (decl));
!   /* Looping const or pure is implied by noreturn.
       There is currently no way to declare looping const or looping pure alone.  */
    gcc_assert (!(flags & ECF_LOOPING_CONST_OR_PURE)
! 	      || ((flags & ECF_NORETURN) && (flags & (ECF_CONST | ECF_PURE))));
  }
  
  
--- 10001,10018 ----
      DECL_ATTRIBUTES (decl)
        = tree_cons (get_identifier ("expected_throw"),
  		   NULL, DECL_ATTRIBUTES (decl));
! 
!   if (flags & ECF_CB_1_2)
!     {
!       tree attr = callback_build_attr (1, 1, 2);
!       TREE_CHAIN (attr) = DECL_ATTRIBUTES (decl);
!       DECL_ATTRIBUTES (decl) = attr;
!     }
! 
!     /* Looping const or pure is implied by noreturn.
       There is currently no way to declare looping const or looping pure alone.  */
    gcc_assert (!(flags & ECF_LOOPING_CONST_OR_PURE)
! 	      || (flags & (ECF_CONST | ECF_PURE)));
  }
  
  
*************** build_common_builtin_nodes (void)
*** 10048,10053 ****
--- 10057,10063 ----
    if (!builtin_decl_explicit_p (BUILT_IN_UNREACHABLE)
        || !builtin_decl_explicit_p (BUILT_IN_TRAP)
        || !builtin_decl_explicit_p (BUILT_IN_UNREACHABLE_TRAP)
+       || !builtin_decl_explicit_p (BUILT_IN_OBSERVABLE_CHKPT)
        || !builtin_decl_explicit_p (BUILT_IN_ABORT))
      {
        ftype = build_function_type (void_type_node, void_list_node);
*************** build_common_builtin_nodes (void)
*** 10071,10076 ****
--- 10081,10092 ----
  	local_define_builtin ("__builtin_trap", ftype, BUILT_IN_TRAP,
  			      "__builtin_trap",
  			      ECF_NORETURN | ECF_NOTHROW | ECF_LEAF | ECF_COLD);
+       if (!builtin_decl_explicit_p (BUILT_IN_OBSERVABLE_CHKPT))
+ 	local_define_builtin ("__builtin_observable_checkpoint", ftype,
+ 			      BUILT_IN_OBSERVABLE_CHKPT,
+ 			      "__builtin_observable_checkpoint",
+ 			      ECF_NOTHROW | ECF_LEAF | ECF_CONST
+ 			      | ECF_LOOPING_CONST_OR_PURE);
      }
  
    if (!builtin_decl_explicit_p (BUILT_IN_MEMCPY)
diff -Nrcpad gcc-16-20251012/gcc/value-range.cc gcc-16-20251019/gcc/value-range.cc
*** gcc-16-20251012/gcc/value-range.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/value-range.cc	Sun Oct 19 22:32:39 2025
*************** irange_bitmask::irange_bitmask (tree typ
*** 55,60 ****
--- 55,147 ----
      }
  }
  
+ // Return a range in R of TYPE for this bitmask which encompasses
+ // a set of valid values which are allowable for this bitmask/value
+ // combination.  If false is returned, no range was set.
+ 
+ bool
+ irange_bitmask::range_from_mask (irange &r, tree type) const
+ {
+   if (unknown_p ())
+     return false;
+ 
+   gcc_checking_assert ((value () & mask ()) == 0);
+   unsigned popcount = wi::popcount (mask ());
+ 
+   // For 0, 1 or 2 bits set, create a range with only the allowed values.
+   if (popcount <= 2)
+     {
+       // VALUE is always a valid range.
+       r.set (type, value (), value ());
+       // If there are bits in mask, (VALUE | MASK) is also valid.
+       if (popcount >= 1)
+ 	r.union_ (int_range<1> (type, value () | mask (), value () | mask ()));
+       // If there are 2 bits set, add the other 2 possible values.
+       if (popcount == 2)
+ 	{
+ 	  // Extract the two 1-bit masks into lb and ub.
+ 	  wide_int lb = mask () & -mask ();		// Lowest set bit.
+ 	  wide_int ub = mask () & (mask () - 1);	// The other bit.
+ 	  r.union_ (int_range<1> (type, value () | lb, value () | lb));
+ 	  r.union_ (int_range<1> (type, value () | ub, value () | ub));
+ 	}
+       return true;
+     }
+ 
+   // Otherwise, calculate the valid range allowed by the bitmask.
+   int prec = TYPE_PRECISION (type);
+   wide_int ub = mask () | value ();
+   wide_int sign_bit = wi::one (prec) << (prec - 1);
+   wide_int sign_mask = mask () & sign_bit;
+   wide_int sign_value = value () & sign_bit;
+   // Create a lower and upper bound.
+   // If unsigned, or the sign is known to be positive, create [lb, ub]
+   if (TYPE_SIGN (type) == UNSIGNED || (sign_mask == 0 && sign_value == 0))
+     r.set (type, value (), mask () | value ());
+   // If the sign bit is KNOWN to be 1, we have a completely negative range.
+   else if (sign_mask == 0 && sign_value != 0)
+     r.set (type, value (), value () | (mask () & ~sign_bit));
+   else
+     {
+       // Otherwise there are 2 ranges, a negative and positive interval.
+       wide_int neg_base = value () | sign_bit;
+       wide_int pos_mask = mask () & ~sign_bit;
+       r.set  (type, neg_base , neg_base | pos_mask);
+       r.union_ (int_range<1> (type, value (), value () | pos_mask));
+     }
+ 
+   // If the mask doesn't have a trailing zero, there is nothing else to filter.
+   int z = wi::ctz (mask ());
+   if (z == 0)
+     return true;
+ 
+   // Remove the [0, X] values which the trailing-zero mask rules out.
+   // For example, if z == 4, the mask is 0xFFF0, and the lowest 4 bits
+   // define the range [0, 15]. Only (value & low_mask) is allowed.
+   ub = (wi::one (prec) << z) - 1;  // Upper bound of range.
+   int_range<4> mask_range (type, wi::zero (prec), ub);
+   // Remove the valid value from the excluded range and form an anti-range.
+   wide_int allow = value () & ub;
+   mask_range.intersect (int_range<2> (type, allow, allow, VR_ANTI_RANGE));
+   mask_range.invert ();
+   r.intersect (mask_range);
+ 
+   if (TYPE_SIGN (type) == SIGNED)
+     {
+       // For signed negative values, find the lowest value with trailing zeros.
+       // This forms a range such as [-512, -1] for z=9.
+       wide_int lb = -(wi::one (prec) << z);
+       int_range<4> mask_range (type, lb, wi::minus_one (prec));
+       // Remove the one allowed value from that set.
+       wide_int allow = value () | lb;
+       mask_range.intersect (int_range<2> (type, allow, allow, VR_ANTI_RANGE));
+       mask_range.invert ();
+       r.intersect (mask_range);
+     }
+   return true;
+ }
+ 
+ 
  void
  irange::accept (const vrange_visitor &v) const
  {
*************** irange::invert ()
*** 2275,2321 ****
  // This routine will take the bounds [LB, UB], and apply the bitmask to those
  // values such that both bounds satisfy the bitmask.  TRUE is returned
  // if either bound changes, and they are returned as [NEW_LB, NEW_UB].
! // if NEW_UB < NEW_LB, then the entire bound is to be removed as none of
! // the values are valid.
  //   ie,   [4, 14] MASK 0xFFFE  VALUE 0x1
! // means all values must be odd, the new bounds returned will be [5, 13].
  //   ie,   [4, 4] MASK 0xFFFE  VALUE 0x1
! // would return [1, 0] and as the LB < UB,   the entire subrange is invalid
! // and should be removed.
  
  bool
  irange::snap (const wide_int &lb, const wide_int &ub,
! 	      wide_int &new_lb, wide_int &new_ub)
  {
    int z = wi::ctz (m_bitmask.mask ());
    if (z == 0)
      return false;
  
    const wide_int step = (wi::one (TYPE_PRECISION (type ())) << z);
    const wide_int match_mask = step - 1;
    const wide_int value = m_bitmask.value () & match_mask;
  
-   bool ovf = false;
- 
    wide_int rem_lb = lb & match_mask;
    wide_int offset = (value - rem_lb) & match_mask;
    new_lb = lb + offset;
    // Check for overflows at +INF
    if (wi::lt_p (new_lb, lb, TYPE_SIGN (type ())))
!     ovf = true;
  
    wide_int rem_ub = ub & match_mask;
    wide_int offset_ub = (rem_ub - value) & match_mask;
    new_ub = ub - offset_ub;
    // Check for underflows at -INF
    if (wi::gt_p (new_ub, ub, TYPE_SIGN (type ())))
!     ovf = true;
  
!   // Overflow or inverted range = invalid
!   if (ovf || wi::lt_p (new_ub, new_lb, TYPE_SIGN (type ())))
      {
!       new_lb = wi::one (lb.get_precision ());
!       new_ub = wi::zero (ub.get_precision ());
        return true;
      }
    return (new_lb != lb) || (new_ub != ub);
--- 2362,2418 ----
  // This routine will take the bounds [LB, UB], and apply the bitmask to those
  // values such that both bounds satisfy the bitmask.  TRUE is returned
  // if either bound changes, and they are returned as [NEW_LB, NEW_UB].
! // If there is an overflow, or if (NEW_UB < NEW_LB), then the entire bound is
! // to be removed as none of the values are valid.   This is indicated by
! // teturning TRUE in OVF.   False indicates the bounds are fine.
  //   ie,   [4, 14] MASK 0xFFFE  VALUE 0x1
! // means all values must be odd, the new bounds returned will be [5, 13] with
! // OVF set to FALSE.
  //   ie,   [4, 4] MASK 0xFFFE  VALUE 0x1
! // would return TRUE and OVF == TRUE.  The entire subrange should be removed.
  
  bool
  irange::snap (const wide_int &lb, const wide_int &ub,
! 	      wide_int &new_lb, wide_int &new_ub, bool &ovf)
  {
+   ovf = false;
    int z = wi::ctz (m_bitmask.mask ());
    if (z == 0)
      return false;
  
+   // Shortcircuit check for values that are already good.
+   if ((((lb ^ m_bitmask.value ()) | (ub ^ m_bitmask.value ()))
+        & ~m_bitmask.mask ()) == 0)
+     return false;
+ 
    const wide_int step = (wi::one (TYPE_PRECISION (type ())) << z);
    const wide_int match_mask = step - 1;
    const wide_int value = m_bitmask.value () & match_mask;
  
    wide_int rem_lb = lb & match_mask;
    wide_int offset = (value - rem_lb) & match_mask;
    new_lb = lb + offset;
    // Check for overflows at +INF
    if (wi::lt_p (new_lb, lb, TYPE_SIGN (type ())))
!     {
!       ovf = true;
!       return true;
!     }
  
    wide_int rem_ub = ub & match_mask;
    wide_int offset_ub = (rem_ub - value) & match_mask;
    new_ub = ub - offset_ub;
    // Check for underflows at -INF
    if (wi::gt_p (new_ub, ub, TYPE_SIGN (type ())))
!     {
!       ovf = true;
!       return true;
!     }
  
!   // If inverted range is invalid, set overflow to TRUE.
!   if (wi::lt_p (new_ub, new_lb, TYPE_SIGN (type ())))
      {
!       ovf = true;
        return true;
      }
    return (new_lb != lb) || (new_ub != ub);
*************** irange::snap_subranges ()
*** 2334,2344 ****
    wide_int lb, ub;
    for (x = 0; x < m_num_ranges; x++)
      {
!       if (snap (lower_bound (x), upper_bound (x), lb, ub))
  	{
  	  changed = true;
! 	  //  This subrange is to be completely removed.
! 	  if (wi::lt_p (ub, lb, TYPE_SIGN (type ())))
  	    {
  	      int_range<1> tmp (type (), lower_bound (x), upper_bound (x));
  	      invalid.union_ (tmp);
--- 2431,2442 ----
    wide_int lb, ub;
    for (x = 0; x < m_num_ranges; x++)
      {
!       bool ovf;
!       if (snap (lower_bound (x), upper_bound (x), lb, ub, ovf))
  	{
  	  changed = true;
! 	  // Check if this subrange is to be completely removed.
! 	  if (ovf)
  	    {
  	      int_range<1> tmp (type (), lower_bound (x), upper_bound (x));
  	      invalid.union_ (tmp);
*************** irange::snap_subranges ()
*** 2359,2467 ****
    return changed;
  }
  
! // If the mask can be trivially converted to a range, do so.
! // Otherwise attempt to remove the lower bits from the range.
! // Return true if the range changed in any way.
  
  bool
  irange::set_range_from_bitmask ()
  {
    gcc_checking_assert (!undefined_p ());
!   if (m_bitmask.unknown_p ())
!     return false;
! 
!   // If all the bits are known, this is a singleton.
!   if (m_bitmask.mask () == 0)
!     {
!       // Make sure the singleton is within the range.
!       if (contains_p (m_bitmask.value ()))
! 	set (m_type, m_bitmask.value (), m_bitmask.value ());
!       else
! 	set_undefined ();
!       return true;
!     }
! 
!   unsigned popcount = wi::popcount (m_bitmask.get_nonzero_bits ());
! 
!   // If we have only one bit set in the mask, we can figure out the
!   // range immediately.
!   if (popcount == 1)
!     {
!       // Make sure we don't pessimize the range.
!       if (!contains_p (m_bitmask.get_nonzero_bits ()))
! 	return false;
! 
!       bool has_zero = contains_zero_p (*this);
!       wide_int nz = m_bitmask.get_nonzero_bits ();
!       set (m_type, nz, nz);
!       m_bitmask.set_nonzero_bits (nz);
!       if (has_zero)
! 	{
! 	  int_range<2> zero;
! 	  zero.set_zero (m_type);
! 	  union_ (zero);
! 	}
!       if (flag_checking)
! 	verify_range ();
!       return true;
!     }
!   else if (popcount == 0)
!     {
!       set_zero (m_type);
!       return true;
!     }
  
!   // If the mask doesn't have a trailing zero, theres nothing to filter.
!   int z = wi::ctz (m_bitmask.mask ());
!   if (!z)
      return false;
! 
!   int prec = TYPE_PRECISION (m_type);
!   wide_int value = m_bitmask.value ();
!   wide_int mask = m_bitmask.mask ();
! 
!   // Remove the [0, X] values which the trailing-zero mask rules out.
!   // For example, if z == 4, the mask is 0xFFF0, and the lowest 4 bits
!   // define the range [0, 15]. Only one of which (value & low_mask) is allowed.
!   wide_int ub = (wi::one (prec) << z) - 1;  // Upper bound of affected range.
!   int_range_max mask_range (m_type, wi::zero (prec), ub);
! 
!   // Remove the one valid value from the excluded range and form an anti-range.
!   wide_int allow = value & ub;
!   mask_range.intersect (int_range<2> (m_type, allow, allow, VR_ANTI_RANGE));
! 
!   // Invert it to get the allowed values and intersect it with the main range.
!   mask_range.invert ();
!   bool changed = intersect (mask_range);
! 
!   // Now handle the rest of the domain — the upper side for positive values,
!   // or [-X, -1] for signed negatives.
!   // Compute the maximum value representable under the mask/value constraint.
!   ub = mask | value;
! 
!   // If value is non-negative, adjust the upper limit to remove values above
!   // UB that conflict with known fixed bits.
!   if (TYPE_SIGN (m_type) == UNSIGNED || wi::clz (ub) > 0)
!     mask_range = int_range<1> (m_type, wi::zero (prec), ub);
!   else
!     {
!       // For signed negative values, find the lowest value with trailing zeros.
!       // This forms a range such as [-512, -1] for z=9.
!       wide_int lb = -(wi::one (prec) << z);
!       mask_range = int_range<2> (m_type, lb, wi::minus_one (prec));
! 
!       // Remove the one allowed value from that set.
!       allow = value | lb;
!       mask_range.intersect (int_range<2> (m_type, allow, allow, VR_ANTI_RANGE));
!       mask_range.invert ();
!     }
! 
!   // Make sure we call intersect, so do it first.
!   changed = intersect (mask_range) | changed;
!   // Now make sure each subrange endpoint matches the bitmask.
!   changed |= snap_subranges ();
! 
!   return changed;
  }
  
  void
--- 2457,2481 ----
    return changed;
  }
  
! // If the bitmask has a range representation, intersect this range with
! // the bitmasks range.  Then ensure all enpoints match the bitmask.
! // Return TRUE if the range changes at all.
  
  bool
  irange::set_range_from_bitmask ()
  {
    gcc_checking_assert (!undefined_p ());
!   // Snap subranmges when bitmask is first set.
!   snap_subranges ();
!   if (undefined_p ())
!     return true;
  
!   // Calculate the set of ranges valid for the bitmask.
!   int_range_max allow;
!   if (!m_bitmask.range_from_mask (allow, m_type))
      return false;
!   // And intersect that set of ranges with the current set.
!   return intersect (allow);
  }
  
  void
*************** test_irange_snap_bounds ()
*** 2932,2938 ****
    tree u1 = build_nonstandard_integer_type (1, /*unsigned=*/ 1);
  
    // Basic aligned range: even-only
!   assert_snap_result (5, 15, 6, 14, 0xFFFFFFFE, 0x0, u32);
    // Singleton that doesn't match mask: undefined.
    assert_snap_result (7, 7, 1, 0, 0xFFFFFFFE, 0x0, u32);
    // 8-bit signed char, mask 0xF0 (i.e. step of 16).
--- 2946,2952 ----
    tree u1 = build_nonstandard_integer_type (1, /*unsigned=*/ 1);
  
    // Basic aligned range: even-only
!   assert_snap_result (5, 15, 6, 14, 0xE, 0x0, u32);
    // Singleton that doesn't match mask: undefined.
    assert_snap_result (7, 7, 1, 0, 0xFFFFFFFE, 0x0, u32);
    // 8-bit signed char, mask 0xF0 (i.e. step of 16).
*************** range_tests_misc ()
*** 3204,3218 ****
  static void
  range_tests_nonzero_bits ()
  {
!   int_range<2> r0, r1;
  
    // Adding nonzero bits to a varying drops the varying.
    r0.set_varying (integer_type_node);
    r0.set_nonzero_bits (INT (255));
    ASSERT_TRUE (!r0.varying_p ());
-   // Dropping the nonzero bits brings us back to varying.
-   r0.set_nonzero_bits (INT (-1));
-   ASSERT_TRUE (r0.varying_p ());
  
    // Test contains_p with nonzero bits.
    r0.set_zero (integer_type_node);
--- 3218,3229 ----
  static void
  range_tests_nonzero_bits ()
  {
!   int_range<8> r0, r1;
  
    // Adding nonzero bits to a varying drops the varying.
    r0.set_varying (integer_type_node);
    r0.set_nonzero_bits (INT (255));
    ASSERT_TRUE (!r0.varying_p ());
  
    // Test contains_p with nonzero bits.
    r0.set_zero (integer_type_node);
*************** range_tests_nonzero_bits ()
*** 3244,3260 ****
    r0.intersect (r1);
    ASSERT_TRUE (r0.get_nonzero_bits () == 0xff);
  
-   // The union of a mask of 0xff..ffff00 with a mask of 0xff spans the
-   // entire domain, and makes the range a varying.
-   r0.set_varying (integer_type_node);
-   wide_int x = wi::shwi (0xff, TYPE_PRECISION (integer_type_node));
-   x = wi::bit_not (x);
-   r0.set_nonzero_bits (x); 	// 0xff..ff00
-   r1.set_varying (integer_type_node);
-   r1.set_nonzero_bits (INT (0xff));
-   r0.union_ (r1);
-   ASSERT_TRUE (r0.varying_p ());
- 
    // Test that setting a nonzero bit of 1 does not pessimize the range.
    r0.set_zero (integer_type_node);
    r0.set_nonzero_bits (INT (1));
--- 3255,3260 ----
diff -Nrcpad gcc-16-20251012/gcc/value-range.h gcc-16-20251019/gcc/value-range.h
*** gcc-16-20251012/gcc/value-range.h	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/gcc/value-range.h	Sun Oct 19 22:32:39 2025
*************** public:
*** 150,155 ****
--- 150,156 ----
    bool operator!= (const irange_bitmask &src) const { return !(*this == src); }
    void verify_mask () const;
    void dump (FILE *) const;
+   bool range_from_mask (irange &r, tree type) const;
  
    bool member_p (const wide_int &val) const;
  
*************** private:
*** 346,352 ****
    bool union_bitmask (const irange &r);
    bool set_range_from_bitmask ();
    bool snap_subranges ();
!   bool snap (const wide_int &, const wide_int &, wide_int &, wide_int &);
  
    bool intersect (const wide_int& lb, const wide_int& ub);
    bool union_append (const irange &r);
--- 347,354 ----
    bool union_bitmask (const irange &r);
    bool set_range_from_bitmask ();
    bool snap_subranges ();
!   bool snap (const wide_int &, const wide_int &, wide_int &, wide_int &,
! 	     bool &);
  
    bool intersect (const wide_int& lb, const wide_int& ub);
    bool union_append (const irange &r);
diff -Nrcpad gcc-16-20251012/include/ChangeLog gcc-16-20251019/include/ChangeLog
*** gcc-16-20251012/include/ChangeLog	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/include/ChangeLog	Sun Oct 19 22:32:39 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-10-16  David Faust  <david.faust@oracle.com>
+ 
+ 	* dwarf2.def (DW_TAG_GNU_annotation): Add link to wiki page
+ 	documenting the extension.
+ 	(DW_AT_GNU_annotation): Likewise.
+ 
  2025-10-10  Tobias Burnus  <tburnus@baylibre.com>
  
  	* hsa_ext_amd.h (enum hsa_amd_agent_info_s): Add
diff -Nrcpad gcc-16-20251012/include/dwarf2.def gcc-16-20251019/include/dwarf2.def
*** gcc-16-20251012/include/dwarf2.def	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/include/dwarf2.def	Sun Oct 19 22:32:39 2025
*************** DW_TAG (DW_TAG_GNU_formal_parameter_pack
*** 175,180 ****
--- 175,182 ----
  DW_TAG (DW_TAG_GNU_call_site, 0x4109)
  DW_TAG (DW_TAG_GNU_call_site_parameter, 0x410a)
  
+ /* GNU annotation extension used by btf_decl_tag and btf_type_tag.
+    See https://gcc.gnu.org/wiki/GNUAnnotationsDwarf .  */
  DW_TAG (DW_TAG_GNU_annotation, 0x6001)
  
  /* Extensions for UPC.  See: http://dwarfstd.org/doc/DWARF4.pdf.  */
*************** DW_AT (DW_AT_GNU_pubtypes, 0x2135)
*** 459,464 ****
--- 461,468 ----
  DW_AT (DW_AT_GNU_discriminator, 0x2136)
  DW_AT (DW_AT_GNU_locviews, 0x2137)
  DW_AT (DW_AT_GNU_entry_view, 0x2138)
+ /* GNU annotation extension used by btf_decl_tag and btf_type_tag.
+    See https://gcc.gnu.org/wiki/GNUAnnotationsDwarf .  */
  DW_AT (DW_AT_GNU_annotation, 0x2139)
  /* VMS extensions.  */
  DW_AT (DW_AT_VMS_rtnbeg_pd_address, 0x2201)
diff -Nrcpad gcc-16-20251012/libcpp/ChangeLog gcc-16-20251019/libcpp/ChangeLog
*** gcc-16-20251012/libcpp/ChangeLog	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/libcpp/ChangeLog	Sun Oct 19 22:32:40 2025
***************
*** 1,3 ****
--- 1,8 ----
+ 2025-10-13  Pierre Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* init.cc (read_original_directory): Attempt to decode escape
+ 	sequences with cpp_interpret_string_notranslate.
+ 
  2025-10-08  Jakub Jelinek  <jakub@redhat.com>
  
  	* makeucnid.cc (write_copyright): Adjust copyright year.
diff -Nrcpad gcc-16-20251012/libcpp/init.cc gcc-16-20251019/libcpp/init.cc
*** gcc-16-20251012/libcpp/init.cc	Sun Oct 12 22:33:41 2025
--- gcc-16-20251019/libcpp/init.cc	Sun Oct 19 22:32:40 2025
*************** read_original_directory (cpp_reader *pfi
*** 893,903 ****
  
        if (pfile->cb.dir_change)
  	{
! 	  /* Smash the string directly, it's dead at this point  */
! 	  char *smashy = (char *)text;
! 	  smashy[len - 3] = 0;
  
! 	  pfile->cb.dir_change (pfile, smashy + 1);
  	}
  
        /* We should be at EOL.  */
--- 893,926 ----
  
        if (pfile->cb.dir_change)
  	{
! 	  cpp_string s = { 0, 0 };
! 	  const char *dir_slashslash;
! 	  unsigned int dir_slashslash_len;
  
! 	  /* If we fail to decode escape sequences in the string literal, fall
! 	     back onto the literal itself, manually removing the opening and
! 	     closing quotes (").  */
! 	  if (cpp_interpret_string_notranslate (pfile, &string->val.str, 1, &s,
! 						CPP_STRING))
! 	    {
! 	      /* At this point, the trailing NUL byte in S is included in its
! 		 length, so take it out.  */
! 	      dir_slashslash = (const char *) s.text;
! 	      dir_slashslash_len = s.len - 1;
! 	    }
! 	  else
! 	    {
! 	      dir_slashslash = (const char *) string->val.str.text + 1;
! 	      dir_slashslash_len = string->val.str.len - 2;
! 	    }
! 
! 	  /* Strip the trailing double slash.  */
! 	  const unsigned dir_len = dir_slashslash_len - 2;
! 	  char *dir = (char *) alloca (dir_len + 1);
! 	  memcpy (dir, dir_slashslash, dir_len);
! 	  dir[dir_len] = '\0';
! 
! 	  pfile->cb.dir_change (pfile, dir);
  	}
  
        /* We should be at EOL.  */
diff -Nrcpad gcc-16-20251012/libgcobol/charmaps.cc gcc-16-20251019/libgcobol/charmaps.cc
*** gcc-16-20251012/libgcobol/charmaps.cc	Sun Oct 12 22:33:42 2025
--- gcc-16-20251019/libgcobol/charmaps.cc	Sun Oct 19 22:32:40 2025
*************** char *__gg__ct_currency_signs[256];  //
*** 94,106 ****
  // And we will take some pains to figure out if the source code file was done
  // as UTF-8; if not, we will assume 1252/8859-1
  
- // __gg__ebcdic_codeset_in_use is the ultimate determinator of whether the
- // internal codeset is ASCII/CP1252 or EBCDIC/CP1140.
- bool __gg__ebcdic_codeset_in_use = false ;
- 
- static text_codeset_t source_codeset  = cs_cp1252_e;
- static text_codeset_t console_codeset = cs_default_e;
- 
  #define UNICODE_REPLACEMENT 0xFFFD  // This a white question mark in a black diamond
  #define ASCII_REPLACEMENT 0x87     // In CP1252, 0x87 is a double-dagger
  
--- 94,99 ----
*************** __gg__ebcdic_to_cp1252_collation[256] =
*** 235,308 ****
      0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xB3, 0xDB, 0xDC, 0xD9, 0xDA, 0xFF,
      };
  
- 
- // Here is the list of function pointers establish which ones of the paired
- // possibilities of conversion routines are actually in use.
- 
- extern "C"
- void __gg__set_internal_codeset(int use_ebcdic)
-     {
-     __gg__ebcdic_codeset_in_use = !!use_ebcdic;
-     }
- 
- extern "C"
- void __gg__text_conversion_override(text_device_t device,
-                                     text_codeset_t codeset)
-     {
-     // Establish the default sourcecode and console codesets, and
-     // establish the codeset conversion routines:
- 
-     switch(device)
-         {
-         case td_default_e:
-           {
-           // We are setting our codesets to the defaults
- 
-           // First, sort out the console:
- 
-           // It is my understanding that the environment variable LANG is
-           // supposed to be set by the terminal to indicate the terminal's
-           // current character set.  Let's use that as the winner, even if
-           // that's not quite the way locale(3) works.
-           const char *envLANG = getenv("LANG");
-           if( !envLANG )
-             {
-             // This is odd.  No "LANG"?
-             envLANG = setlocale(LC_CTYPE, NULL);
-             }
-           if( !envLANG )
-             {
-             // This is even more odd. Pick something as a backup to the backup
-             envLANG = "UTF-8";
-             }
-           if( envLANG )
-             {
-             if( strcasestr(envLANG, "UTF-8") )
-               {
-               console_codeset = cs_utf8_e;
-               }
-             else
-               {
-               // If it isn't UTF-8, then figure on it being CP1252 as a
-               // convenient way of specifying an SBC codeset.
-               console_codeset  = cs_cp1252_e;
-               }
-             }
-           break;
-           }
- 
-         case td_sourcecode_e:
-             // Explicitly set the source code codeset:
-             source_codeset = codeset;
-             break;
- 
-         case td_console_e:
-             // Explicitly set the console codeset:
-             console_codeset = codeset;
-             break;
-         }
-     }
- 
  static encodings_t encodings[] = {
    { iconv_437_e, "437" },
    { iconv_500_e, "500" },
--- 228,233 ----
diff -Nrcpad gcc-16-20251012/libgcobol/charmaps.h gcc-16-20251019/libgcobol/charmaps.h
*** gcc-16-20251012/libgcobol/charmaps.h	Sun Oct 12 22:33:42 2025
--- gcc-16-20251019/libgcobol/charmaps.h	Sun Oct 19 22:32:40 2025
*************** extern char **__gg__currency_signs
*** 112,119 ****
  extern int    __gg__default_currency_sign;
  extern char  *__gg__ct_currency_signs[256];  // Compile-time currency signs
  
- extern bool __gg__ebcdic_codeset_in_use;
- 
  #define NULLCH ('\0')
  #define DEGENERATE_HIGH_VALUE 0xFF
  #define DEGENERATE_LOW_VALUE 0x00
--- 112,117 ----
*************** extern bool __gg__ebcdic_codeset_in_use;
*** 202,222 ****
  #define ascii_newline          ((uint8_t)('\n'))
  #define ascii_return           ((uint8_t)('\r'))
  
- enum text_device_t
-     {
-     td_default_e,
-     td_sourcecode_e,
-     td_console_e,
-     };
- 
- enum text_codeset_t
-     {
-     cs_default_e,
-     cs_utf8_e,
-     cs_cp1252_e,
-     cs_cp1140_e
-     };
- 
  extern unsigned char __gg__data_space[1]       ;
  extern unsigned char __gg__data_low_values[1]  ;
  extern unsigned char __gg__data_zeros[1]       ;
--- 200,205 ----
*************** extern const unsigned short __gg__cp1140
*** 234,252 ****
  extern const unsigned short __gg__cp1252_to_ebcdic_collation[256];
  extern const unsigned short __gg__ebcdic_to_cp1252_collation[256];
  
- // As described above, we have a number of operations we need to accomplish. But
- // the actual routines are dependent on whether EBCDIC or ASCII is in use. We
- // implement that by having a function pointer for each function; those pointers
- // are established when the __gg__ebcdic_codeset_in_use variable is established.
- 
- // These routines convert a single ASCII character to either ASCII or EBCDIC
- 
- extern "C" void __gg__set_internal_codeset(int use_ebcdic);
- 
- extern "C"
- void __gg__text_conversion_override(text_device_t device,
-                                     text_codeset_t codeset);
- 
  const char * __gg__encoding_iconv_name( cbl_encoding_t encoding );
  cbl_encoding_t __gg__encoding_iconv_type( const char *name );
  
--- 217,222 ----
diff -Nrcpad gcc-16-20251012/libgcobol/gfileio.cc gcc-16-20251019/libgcobol/gfileio.cc
*** gcc-16-20251012/libgcobol/gfileio.cc	Sun Oct 12 22:33:42 2025
--- gcc-16-20251019/libgcobol/gfileio.cc	Sun Oct 19 22:32:40 2025
*************** __gg__file_init(
*** 330,341 ****
    {
    if( !(file->flags & file_flag_initialized_e) )
      {
-     if( encoding != iconv_CP1140_e && __gg__ebcdic_codeset_in_use )
-       {
-       // This code is to be eliminated when 'encoding' is valid.
-       encoding = iconv_CP1140_e;
-       }
- 
      charmap_t *charmap = __gg__get_charmap(encoding);
  
      file->name                = strdup(name);
--- 330,335 ----
diff -Nrcpad gcc-16-20251012/libgcobol/libgcobol.cc gcc-16-20251019/libgcobol/libgcobol.cc
*** gcc-16-20251012/libgcobol/libgcobol.cc	Sun Oct 12 22:33:42 2025
--- gcc-16-20251019/libgcobol/libgcobol.cc	Sun Oct 19 22:32:40 2025
*************** int         __gg__default_compute_error
*** 139,144 ****
--- 139,145 ----
  int         __gg__rdigits                     = 0    ;
  int         __gg__nop                         = 0    ;
  int         __gg__main_called                 = 0    ;
+ void       *__gg__entry_label                 = NULL ;
  cbl_encoding_t __gg__console_encoding         = no_encoding_e    ;
  
  // During SORT operations, we don't want the end-of-file condition, which
*************** struct program_state
*** 484,499 ****
  
      memset(rt_currency_signs, 0, sizeof(rt_currency_signs));
  
!     // The default collating sequence:
!     if( __gg__ebcdic_codeset_in_use )
!       {
!       rt_collation = __gg__cp1140_to_cp1252_values;
!       }
!     else
!       {
!       rt_collation = __gg__one_to_one_values;
!       }
! //    rt_collation = __gg__one_to_one_values;
      rt_program_name = NULL;
      }
  
--- 485,491 ----
  
      memset(rt_currency_signs, 0, sizeof(rt_currency_signs));
  
!     rt_collation = __gg__one_to_one_values;
      rt_program_name = NULL;
      }
  
*************** void
*** 694,714 ****
  __gg__pop_program_state()
    {
    program_states.pop_back();
- 
- // #define decimal_point        (program_states.back().rt_decimal_point)
- // #define decimal_separator    (program_states.back().rt_decimal_separator)
- // #define quote_character      (program_states.back().rt_quote_character)
- // #define low_value_character  (program_states.back().rt_low_value_character)
- // #define high_value_character (program_states.back().rt_high_value_character)
- 
    __gg__decimal_point        = program_states.back().rt_decimal_point        ;
    __gg__decimal_separator    = program_states.back().rt_decimal_separator    ;
    __gg__quote_character      = program_states.back().rt_quote_character      ;
    __gg__low_value_character  = program_states.back().rt_low_value_character  ;
    __gg__high_value_character = program_states.back().rt_high_value_character ;
    __gg__currency_signs       = program_states.back().rt_currency_signs       ;
! 
! }
  
  static
  int
--- 686,698 ----
  __gg__pop_program_state()
    {
    program_states.pop_back();
    __gg__decimal_point        = program_states.back().rt_decimal_point        ;
    __gg__decimal_separator    = program_states.back().rt_decimal_separator    ;
    __gg__quote_character      = program_states.back().rt_quote_character      ;
    __gg__low_value_character  = program_states.back().rt_low_value_character  ;
    __gg__high_value_character = program_states.back().rt_high_value_character ;
    __gg__currency_signs       = program_states.back().rt_currency_signs       ;
!   }
  
  static
  int
*************** __gg__set_pointer(cblc_field_t       *ta
*** 10733,10739 ****
  
  extern "C"
  void
! __gg__alphabet_use( cbl_encoding_t encoding,
                      size_t alphabet_index)
    {
    // We simply replace the values in the current program_state.  If the
--- 10717,10724 ----
  
  extern "C"
  void
! __gg__alphabet_use( cbl_encoding_t alphabetic_encoding,
!                     cbl_encoding_t encoding,
                      size_t alphabet_index)
    {
    // We simply replace the values in the current program_state.  If the
*************** __gg__alphabet_use( cbl_encoding_t encod
*** 10743,10768 ****
    if( program_states.empty() )
      {
      // When there is no DATA DIVISION, program_states can be empty when
!     // we arrive here.  So, we need to remedy that:
      initialize_program_state();
      }
  
    switch( encoding )
      {
      case ASCII_e:
      case iso646_e:
        __gg__low_value_character  = DEGENERATE_LOW_VALUE;
        __gg__high_value_character = DEGENERATE_HIGH_VALUE;
  
        program_states.back().rt_low_value_character   = DEGENERATE_LOW_VALUE;
        program_states.back().rt_high_value_character  = DEGENERATE_HIGH_VALUE;
  
!       if( !__gg__ebcdic_codeset_in_use )
          {
          program_states.back().rt_collation = __gg__one_to_one_values;
          }
        else
          {
          program_states.back().rt_collation = __gg__ebcdic_to_cp1252_collation;
          }
  
--- 10728,10762 ----
    if( program_states.empty() )
      {
      // When there is no DATA DIVISION, program_states can be empty when
!     // we arrive here.  So, we need to remedy that.
      initialize_program_state();
      }
  
+   const charmap_t *charmap_alphabetic = __gg__get_charmap(alphabetic_encoding);
+ 
    switch( encoding )
      {
      case ASCII_e:
      case iso646_e:
+       // This is one of the very common standard situations; where we are using
+       // something like a CP1252 Western European ASCII-like character set.
+ 
        __gg__low_value_character  = DEGENERATE_LOW_VALUE;
        __gg__high_value_character = DEGENERATE_HIGH_VALUE;
  
        program_states.back().rt_low_value_character   = DEGENERATE_LOW_VALUE;
        program_states.back().rt_high_value_character  = DEGENERATE_HIGH_VALUE;
  
!       if( !charmap_alphabetic->is_like_ebcdic() )
          {
+         // The codeset is ascii-like, and the collation is ascii, so we use
+         // one-to-one values:
          program_states.back().rt_collation = __gg__one_to_one_values;
          }
        else
          {
+         // The codeset is ebcdic-like, but the collation is specified as
+         // ascii-like.  So, we need that collation:
          program_states.back().rt_collation = __gg__ebcdic_to_cp1252_collation;
          }
  
*************** __gg__alphabet_use( cbl_encoding_t encod
*** 10774,10785 ****
  
        program_states.back().rt_low_value_character   = DEGENERATE_LOW_VALUE;
        program_states.back().rt_high_value_character  = DEGENERATE_HIGH_VALUE;
!       if( __gg__ebcdic_codeset_in_use )
          {
          program_states.back().rt_collation = __gg__one_to_one_values;
          }
        else
          {
          program_states.back().rt_collation = __gg__cp1252_to_ebcdic_collation;
          }
        break;
--- 10768,10783 ----
  
        program_states.back().rt_low_value_character   = DEGENERATE_LOW_VALUE;
        program_states.back().rt_high_value_character  = DEGENERATE_HIGH_VALUE;
!       if( charmap_alphabetic->is_like_ebcdic() )
          {
+         // The alphanumeric codeset is ebcdic-like, and so is the specified
+         // collation:
          program_states.back().rt_collation = __gg__one_to_one_values;
          }
        else
          {
+         // The alphanumeric codeset is ebcdic-like, but the specified collation
+         // is ascii-like:
          program_states.back().rt_collation = __gg__cp1252_to_ebcdic_collation;
          }
        break;
diff -Nrcpad gcc-16-20251012/libgcobol/valconv.cc gcc-16-20251019/libgcobol/valconv.cc
*** gcc-16-20251012/libgcobol/valconv.cc	Sun Oct 12 22:33:42 2025
--- gcc-16-20251019/libgcobol/valconv.cc	Sun Oct 19 22:32:40 2025
*************** __gg__alphabet_create(  cbl_encoding_t e
*** 79,84 ****
--- 79,87 ----
  
    if( it == __gg__alphabet_states.end() )
      {
+     // This is an alphabet we don't know about.  So just assume the collation
+     // is the same as the character ordering:
+ 
      alphabet_state new_state;
      new_state.low_char  = low_char;
      new_state.high_char = high_char;
diff -Nrcpad gcc-16-20251012/libgomp/ChangeLog gcc-16-20251019/libgomp/ChangeLog
*** gcc-16-20251012/libgomp/ChangeLog	Sun Oct 12 22:33:46 2025
--- gcc-16-20251019/libgomp/ChangeLog	Sun Oct 19 22:32:43 2025
***************
*** 1,3 ****
--- 1,48 ----
+ 2025-10-16  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* testsuite/libgomp.c/declare-variant-4-gfx10-3-generic.c: Add
+ 	dg-excess-errors to handle possible missing libgomp multi lib.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1030.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1036.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx11-generic.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1100.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1103.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx9-4-generic.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx9-generic.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx900.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx906.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx908.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx90a.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx90c.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx942.c: Likewise.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1031.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1032.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1033.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1034.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1035.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1101.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1102.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1150.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1151.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1152.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx1153.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx902.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx904.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx909.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx950.c: New test.
+ 
+ 2025-10-15  Tobias Burnus  <tburnus@baylibre.com>
+ 
+ 	* libgomp.texi (OpenMP Context Selectors): Add note that there is
+ 	currently an exact match between ISA and compilation, ignoring
+ 	compatibilities in both ways.
+ 	* testsuite/libgomp.c/declare-variant-4.h: Add missing variant
+ 	functions for specific and generic AMD GPUs.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx10-3-generic.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx11-generic.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx9-4-generic.c: New test.
+ 	* testsuite/libgomp.c/declare-variant-4-gfx9-generic.c: New test.
+ 
  2025-10-10  Tobias Burnus  <tburnus@baylibre.com>
  
  	* plugin/plugin-gcn.c (is_integrated_apu): New; currently '#if 0'.
diff -Nrcpad gcc-16-20251012/libgomp/libgomp.texi gcc-16-20251019/libgomp/libgomp.texi
*** gcc-16-20251012/libgomp/libgomp.texi	Sun Oct 12 22:33:46 2025
--- gcc-16-20251019/libgomp/libgomp.texi	Sun Oct 19 22:32:43 2025
*************** the following traits are supported in ad
*** 6824,6829 ****
--- 6824,6836 ----
  on more architectures, GCC currently does not match any @code{arch} or
  @code{isa} traits for those.
  
+ Note that for AMD GCN and Nvidia PTX, the @code{isa} is currently an
+ exact match between the compiled-for ISA architecture and the matching
+ @code{isa} trait value.  For instance, when compiling for @code{gfx942},
+ the @code{isa} trait value @code{gfx9-4-generic} is not matched and,
+ likewise, @code{gfx942} is not matched when compiling for its generic
+ architecture.
+ 
  @multitable @columnfractions .65 .30
  @headitem @code{arch} @tab @code{isa}
  @item @code{x86}, @code{x86_64}, @code{i386}, @code{i486},
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx10-3-generic.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx10-3-generic.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx10-3-generic.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx10-3-generic.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx10-3-generic } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx10_3_generic \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available (as this is a generic config),
+    scan-offload-tree-dump will PASS - but linking fails with the
+    following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1030.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1030 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1031.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1031.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1031.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1031.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1031 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1031 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1032.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1032.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1032.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1032.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1032 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1032 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1033.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1033.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1033.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1033.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1033 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1033 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1034.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1034.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1034.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1034.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1034 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1034 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1035.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1035.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1035.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1035.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1035 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1035 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1036.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1036 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx11-generic.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx11-generic.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx11-generic.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx11-generic.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx11-generic } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx11_generic \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available (as this is a generic config),
+    scan-offload-tree-dump will PASS - but linking fails with the
+    following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1100.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1100 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1101.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1101.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1101.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1101.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1101 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1101 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1102.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1102.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1102.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1102.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1102 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1102 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1103.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1103.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1103.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1103.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1103 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1150.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1150.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1150.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1150.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1150 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1150 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1151.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1151.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1151.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1151.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1151 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1151 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1152.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1152.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1152.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1152.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1152 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1152 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1153.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1153.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1153.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx1153.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx1153 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx1153 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-4-generic.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-4-generic.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-4-generic.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-4-generic.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx9-4-generic } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx9_4_generic \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available (as this is a generic config),
+    scan-offload-tree-dump will PASS - but linking fails with the
+    following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-generic.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-generic.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-generic.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx9-generic.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx9-generic } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx9_generic \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available (as this is a generic config),
+    scan-offload-tree-dump will PASS - but linking fails with the
+    following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx900.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx900.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx900.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx900.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx900 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx902.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx902.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx902.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx902.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx902 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx902 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx904.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx904.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx904.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx904.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx904 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx904 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx906.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx906.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx906.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx906.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx906 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx908.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx908.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx908.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx908.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx908 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx909.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx909.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx909.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx909.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx909 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx909 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx90a.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx90a.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx90a.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx90a.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx90a \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx90c.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx90c.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx90c.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx90c.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx90c \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx942.c	Sun Oct 19 22:32:43 2025
***************
*** 6,8 ****
--- 6,33 ----
  #include "declare-variant-4.h"
  
  /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx942 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx950.c gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx950.c
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4-gfx950.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4-gfx950.c	Sun Oct 19 22:32:43 2025
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do link { target { offload_target_amdgcn } } } */
+ /* { dg-additional-options -foffload=amdgcn-amdhsa } */
+ /* { dg-additional-options -foffload=-march=gfx950 } */
+ /* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
+ 
+ #include "declare-variant-4.h"
+ 
+ /* { dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump "= gfx950 \\(\\);" "optimized" } } */
+ 
+ 
+ /* This code will link nicely if the multilib for that GPU architecture
+    has been build for GCC. In that case, scan-offload-tree-dump will
+    PASS and the linking will yield an XPASS message due to following line: */
+ 
+ /* { dg-excess-errors "ld: error: unable to find library -lgomp|gcn mkoffload: fatal error" } */
+ 
+ /* If the multi-lib config is not available, there are two options:
+ 
+    * If the generic multi-lib is available, mkoffload fails early,
+      yielding UNRESOLVED for scan-offload-tree-dump and an XFAIL
+      for the message:
+        gcn mkoffload: fatal error: GCC was built without library support
+        for '-march=gfx...'; consider compiling for the associated
+        generic architecture '-march=gfx...-generic' instead
+ 
+    * Or compling succeeds - then scan-offload-tree-dump will PASS -
+      but linking fails with the following error (XFAIL):
+        ld: error: unable to find library -lgomp
+        collect2: error: ld returned 1 exit status
+        gcn mkoffload: fatal error: ...-gnu-accel-amdgcn-amdhsa-gcc returned 1 exit status
+        compilation terminated.
+        lto-wrapper: fatal error: .../amdgcn-amdhsa/mkoffload returned 1 exit status
+        compilation terminated. */
diff -Nrcpad gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4.h gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4.h
*** gcc-16-20251012/libgomp/testsuite/libgomp.c/declare-variant-4.h	Sun Oct 12 22:33:47 2025
--- gcc-16-20251019/libgomp/testsuite/libgomp.c/declare-variant-4.h	Sun Oct 19 22:32:43 2025
*************** gfx900 (void)
*** 9,14 ****
--- 9,28 ----
  
  __attribute__ ((noipa))
  int
+ gfx902 (void)
+ {
+   return 0x902;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx904 (void)
+ {
+   return 0x904;
+ }
+ 
+ __attribute__ ((noipa))
+ int
  gfx906 (void)
  {
    return 0x906;
*************** gfx908 (void)
*** 23,28 ****
--- 37,49 ----
  
  __attribute__ ((noipa))
  int
+ gfx909 (void)
+ {
+   return 0x909;
+ }
+ 
+ __attribute__ ((noipa))
+ int
  gfx90a (void)
  {
    return 0x90a;
*************** gfx942 (void)
*** 44,49 ****
--- 65,77 ----
  
  __attribute__ ((noipa))
  int
+ gfx950 (void)
+ {
+   return 0x950;
+ }
+ 
+ __attribute__ ((noipa))
+ int
  gfx1030 (void)
  {
    return 0x1030;
*************** gfx1030 (void)
*** 51,56 ****
--- 79,119 ----
  
  __attribute__ ((noipa))
  int
+ gfx1031 (void)
+ {
+   return 0x1031;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx1032 (void)
+ {
+   return 0x1032;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx1033 (void)
+ {
+   return 0x1033;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx1034 (void)
+ {
+   return 0x1034;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx1035 (void)
+ {
+   return 0x1035;
+ }
+ 
+ __attribute__ ((noipa))
+ int
  gfx1036 (void)
  {
    return 0x1036;
*************** gfx1100 (void)
*** 65,85 ****
--- 128,238 ----
  
  __attribute__ ((noipa))
  int
+ gfx1101 (void)
+ {
+   return 0x1101;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx1102 (void)
+ {
+   return 0x1102;
+ }
+ 
+ __attribute__ ((noipa))
+ int
  gfx1103 (void)
  {
    return 0x1103;
  }
  
+ __attribute__ ((noipa))
+ int
+ gfx1150 (void)
+ {
+   return 0x1150;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx1151 (void)
+ {
+   return 0x1151;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx1152 (void)
+ {
+   return 0x1152;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx1153 (void)
+ {
+   return 0x1153;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx9_generic (void)
+ {
+   return 0x90ff;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx9_4_generic (void)
+ {
+   return 0x94ff;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx10_3_generic (void)
+ {
+   return 0x103ff;
+ }
+ 
+ __attribute__ ((noipa))
+ int
+ gfx11_generic (void)
+ {
+   return 0x110ff;
+ }
+ 
+ 
  #pragma omp declare variant(gfx900) match(device = {isa("gfx900")})
+ #pragma omp declare variant(gfx902) match(device = {isa("gfx902")})
+ #pragma omp declare variant(gfx904) match(device = {isa("gfx904")})
  #pragma omp declare variant(gfx906) match(device = {isa("gfx906")})
  #pragma omp declare variant(gfx908) match(device = {isa("gfx908")})
+ #pragma omp declare variant(gfx909) match(device = {isa("gfx909")})
  #pragma omp declare variant(gfx90a) match(device = {isa("gfx90a")})
  #pragma omp declare variant(gfx90c) match(device = {isa("gfx90c")})
  #pragma omp declare variant(gfx942) match(device = {isa("gfx942")})
+ #pragma omp declare variant(gfx950) match(device = {isa("gfx950")})
  #pragma omp declare variant(gfx1030) match(device = {isa("gfx1030")})
+ #pragma omp declare variant(gfx1031) match(device = {isa("gfx1031")})
+ #pragma omp declare variant(gfx1032) match(device = {isa("gfx1032")})
+ #pragma omp declare variant(gfx1033) match(device = {isa("gfx1033")})
+ #pragma omp declare variant(gfx1034) match(device = {isa("gfx1034")})
+ #pragma omp declare variant(gfx1035) match(device = {isa("gfx1035")})
  #pragma omp declare variant(gfx1036) match(device = {isa("gfx1036")})
  #pragma omp declare variant(gfx1100) match(device = {isa("gfx1100")})
+ #pragma omp declare variant(gfx1101) match(device = {isa("gfx1101")})
+ #pragma omp declare variant(gfx1102) match(device = {isa("gfx1102")})
  #pragma omp declare variant(gfx1103) match(device = {isa("gfx1103")})
+ #pragma omp declare variant(gfx1150) match(device = {isa("gfx1150")})
+ #pragma omp declare variant(gfx1151) match(device = {isa("gfx1151")})
+ #pragma omp declare variant(gfx1152) match(device = {isa("gfx1152")})
+ #pragma omp declare variant(gfx1153) match(device = {isa("gfx1153")})
+ #pragma omp declare variant(gfx9_generic) match(device = {isa("gfx9-generic")})
+ #pragma omp declare variant(gfx9_4_generic) match(device = {isa("gfx9-4-generic")})
+ #pragma omp declare variant(gfx10_3_generic) match(device = {isa("gfx10-3-generic")})
+ #pragma omp declare variant(gfx11_generic) match(device = {isa("gfx11-generic")})
  __attribute__ ((noipa))
  int
  f (void)
diff -Nrcpad gcc-16-20251012/libstdc++-v3/ChangeLog gcc-16-20251019/libstdc++-v3/ChangeLog
*** gcc-16-20251012/libstdc++-v3/ChangeLog	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/ChangeLog	Sun Oct 19 22:32:45 2025
***************
*** 1,3 ****
--- 1,231 ----
+ 2025-10-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/119060
+ 	* include/bits/version.def: Add observable_checkpoint at present
+ 	allowed from C++26.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/utility: Add std::observable_checkpoint().
+ 	* src/c++23/std.cc.in: Add obervable_checkpoint () to utility.
+ 
+ 2025-10-17  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/atomic_base.h
+ 	(__atomic_ref_base::_S_required_alignment): Renamed from...
+ 	(__atomic_ref_base::_S_required_aligment): Renamed.
+ 
+ 2025-10-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/stacktrace
+ 	(operator<<(ostream&, const stacktrace_entry&)): Improve output
+ 	when description() or source_file() returns an empty string,
+ 	or the stacktrace_entry is invalid. Append frame address to
+ 	output.
+ 	(operator<<(ostream&, const basic_stacktrace<A>&)): Use the
+ 	size_type of the correct specialization.
+ 
+ 2025-10-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* python/libstdcxx/v6/printers.py (StdStacktraceEntryPrinter):
+ 	New printer for std::stacktrace_entry.
+ 	(StdStacktracePrinter): New printer for std::basic_stacktrace.
+ 
+ 2025-10-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/stacktrace (basic_stacktrace::current): Call
+ 	_M_trim before returning.
+ 	(basic_stacktrace::_M_trim): New member function.
+ 
+ 2025-10-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122293
+ 	* include/bits/chrono.h (__to_timeout_timespec): Fix
+ 	preprocessor condition to match the conditions under which
+ 	callers of this function are defined.
+ 	* include/bits/this_thread_sleep.h: Remove unused include.
+ 
+ 2025-10-15  Chris Johns  <chrisj@rtems.org>
+ 
+ 	* configure: Regenerate.
+ 	* configure.ac (newlib, *-rtems*): Add HAVE_SYS_IOCTL_H,
+ 	HAVE_SYS_STAT_H, HAVE_SYS_TYPES_H, HAVE_S_ISREG, HAVE_UNISTD_H,
+ 	HAVE_UNLINKAT, _GLIBCXX_USE_CHMOD, _GLIBCXX_USE_MKDIR,
+ 	_GLIBCXX_USE_CHDIR, _GLIBCXX_USE_GETCWD, _GLIBCXX_USE_UTIME,
+ 	_GLIBCXX_USE_LINK, _GLIBCXX_USE_READLINK, _GLIBCXX_USE_SYMLINK,
+ 	_GLIBCXX_USE_TRUNCATE and _GLIBCXX_USE_FDOPENDIR.
+ 
+ 2025-10-14  Mike Crowe  <mac@mcrowe.com>
+ 
+ 	PR libstdc++/116586
+ 	* testsuite/30_threads/this_thread/sleep_for.cc: Add
+ 	test_negative() test.
+ 	* testsuite/30_threads/this_thread/sleep_until.cc: Make existing
+ 	test use both system_clock and steady_clock. Add test_negative()
+ 	test.
+ 
+ 2025-10-14  Mike Crowe  <mac@mcrowe.com>
+ 
+ 	PR libstdc++/116586
+ 	* testsuite/30_threads/timed_mutex/try_lock_until/116586.cc: New
+ 	test.
+ 
+ 2025-10-14  Mike Crowe  <mac@mcrowe.com>
+ 
+ 	PR libstdc++/116586
+ 	* testsuite/30_threads/recursive_timed_mutex/try_lock_until/116586.cc:
+ 	New test.
+ 
+ 2025-10-14  Mike Crowe  <mac@mcrowe.com>
+ 
+ 	PR libstdc++/116586
+ 	* testsuite/30_threads/future/members/116586.cc: New test.
+ 
+ 2025-10-14  Mike Crowe  <mac@mcrowe.com>
+ 
+ 	PR libstdc++/116586
+ 	* testsuite/30_threads/condition_variable/members/116586.cc: New
+ 	test.
+ 
+ 2025-10-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/116586
+ 	* testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc:
+ 	New test.
+ 
+ 2025-10-14  Mike Crowe  <mac@mcrowe.com>
+ 
+ 	PR libstdc++/116586
+ 	* testsuite/30_threads/semaphore/try_acquire_for.cc: Add tests.
+ 	* testsuite/30_threads/semaphore/try_acquire_until.cc: Add
+ 	tests.
+ 
+ 2025-10-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/113327
+ 	PR libstdc++/116586
+ 	PR libstdc++/119258
+ 	PR libstdc++/58931
+ 	* include/bits/chrono.h (__to_timeout_timespec): New overloaded
+ 	function templates for converting chrono types to timespec.
+ 	* include/bits/std_mutex.h (__to_timeout_gthread_time_t): New
+ 	function template for converting time_point to __gthread_time_t.
+ 	* include/bits/this_thread_sleep.h (sleep_for): Use
+ 	__to_timeout_timespec.
+ 	(__sleep_for): Remove namespace-scope declaration.
+ 	* include/std/condition_variable: Likewise.
+ 	* include/std/mutex: Likewise.
+ 	* include/std/shared_mutex: Likewise.
+ 	* src/c++11/thread.cc (limit): New helper function.
+ 	(__sleep_for): Use limit to prevent overflow when converting
+ 	chrono::seconds to time_t, unsigned, or chrono::milliseconds.
+ 	* src/c++20/atomic.cc: Use __to_timeout_timespec and
+ 	__to_timeout_gthread_time_t for timeouts.
+ 	* testsuite/30_threads/this_thread/113327.cc: New test.
+ 
+ 2025-10-14  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/format (_M_format_range): Remove unused local type
+ 	alias _String.
+ 
+ 2025-10-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/hashtable.h: Check specific feature test macros
+ 	instead of checking thevalue of __cplusplus.
+ 	* include/bits/stl_map.h: Likewise.
+ 	* include/bits/stl_multimap.h: Likewise.
+ 	* include/bits/stl_multiset.h: Likewise.
+ 	* include/bits/stl_set.h: Likewise.
+ 	* include/bits/stl_tree.h: Likewise.
+ 	* include/bits/unordered_map.h: Likewise.
+ 	* include/bits/unordered_set.h: Likewise.
+ 	* include/debug/map.h: Likewise.
+ 	* include/debug/multimap.h: Likewise.
+ 	* include/debug/multiset.h: Likewise.
+ 	* include/debug/set.h: Likewise.
+ 	* include/debug/unordered_map: Likewise.
+ 	* include/debug/unordered_set: Likewise.
+ 
+ 2025-10-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122255
+ 	* src/c++17/fs_path.cc (path::_List::_Impl::~_Impl): Define
+ 	destructor.
+ 	(path::_List::_Impl::copy): Use create_unchecked.
+ 	(path::_List::_Impl): Add static assertions.
+ 	(path::_List::_Impl::create): New static member function.
+ 	(path::_List::_Impl::create_unchecked): Likewise.
+ 	(path::_List::_Impl_deleter::operator()): Use destructor.
+ 	(path::_List::reserve): Use create.
+ 
+ 2025-10-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/format (__format::__write_escape_seqs)
+ 	(__format::_Escaping_sink): Define.
+ 	(__format::__write_escaped_unicode_part): Extract from
+ 	__format::__write_escaped_unicode.
+ 	(__format::__write_escaped_unicode): Forward to
+ 	__write_escaped_unicode_part.
+ 	(__formatter_str::_M_format_range): Use _Escaping sink.
+ 	* testsuite/std/format/ranges/string.cc: New tests for
+ 	character which codepoints will be split in buffer and
+ 	escaping. Invoked test_padding.
+ 
+ 2025-10-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/118757
+ 	* include/bits/shared_ptr_atomic.h (_Atomic_count::_M_wait_unlock):
+ 	Add parameter capturing reference to _M_ptr. Reimplement in terms
+ 	of __atomic_wait_address.
+ 	(_Atomic_count::~_Atomic_count, _Atomic_count::lock)
+ 	(_Atomic_count::unlock, _Atomic_count::_M_swap_unlock): Replace
+ 	invocation of atomic member funcitons with __atomic builtins.
+ 	(_Atomic_count::notify_one, _Atomic_count::notify_all):
+ 	Use __atomic_notify_address.
+ 	(_Sp_atomic::element_type): Define.
+ 	(_Sp_atomic::_M_val): Change type to uintptr_t.
+ 	(_Sp_atomic::wait): Pass _M_ptr to _M_wait_unlock.
+ 	* python/libstdcxx/v6/printers.py:
+ 	* testsuite/20_util/shared_ptr/atomic/pr118757.cc: New test.
+ 	* testsuite/20_util/weak_ptr/pr118757.cc: New test.
+ 
+ 2025-10-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/122267
+ 	* include/bits/atomic_base.h
+ 	(__atomic_ref_base<const _Tp>::_S_required_alignment):
+ 	Use __alignof__	instead of alignof.
+ 
+ 2025-10-14  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/std/time/month_day/io.cc: New formatting tests.
+ 	* testsuite/std/time/month_day_last/io.cc: Likewise.
+ 	* testsuite/std/time/month_weekday/io.cc: Likewise.
+ 	* testsuite/std/time/month_weekday_last/io.cc: Likewise.
+ 	* testsuite/std/time/weekday_indexed/io.cc: Likewise.
+ 	* testsuite/std/time/weekday_last/io.cc: Likewise.
+ 	* testsuite/std/time/year_month/io.cc: Likewise.
+ 
+ 2025-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_iterator_base_funcs.h (advance): Fix comment.
+ 
+ 2025-10-13  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* include/bits/atomic_base.h: Implement address().
+ 	* include/bits/version.def: Bump version number.
+ 	* include/bits/version.h: Regenerate.
+ 	* testsuite/29_atomics/atomic_ref/address.cc: New test.
+ 
+ 2025-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/unicode.h (_Utf_view::_M_read_reverse_utf16):
+ 	Fix check for high surrogate preceding low surrogate.
+ 	* testsuite/ext/unicode/view.cc: Check unpaired low surrogates.
+ 
+ 2025-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/unicode.h (__is_single_code_unit): Fix check for
+ 	7-bit ASCII characters.
+ 
  2025-10-11  Gerald Pfeifer  <gerald@pfeifer.com>
  
  	* doc/xml/manual/build_hacking.xml: Update Autoconf manual link.
diff -Nrcpad gcc-16-20251012/libstdc++-v3/configure gcc-16-20251019/libstdc++-v3/configure
*** gcc-16-20251012/libstdc++-v3/configure	Sun Oct 12 22:34:26 2025
--- gcc-16-20251019/libstdc++-v3/configure	Sun Oct 19 22:32:45 2025
*************** rm -f core conftest.err conftest.$ac_obj
*** 28744,28749 ****
--- 28744,28757 ----
  
          $as_echo "#define HAVE_LINK 1" >>confdefs.h
  
+         $as_echo "#define HAVE_SYS_IOCT4YL_H 1" >>confdefs.h
+ 
+         $as_echo "#define HAVE_SYS_STAT_H 1" >>confdefs.h
+ 
+         $as_echo "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
+ 
+         $as_echo "#define HAVE_S_ISREG 1" >>confdefs.h
+ 
          $as_echo "#define HAVE_QUICK_EXIT 1" >>confdefs.h
  
          $as_echo "#define HAVE_READLINK 1" >>confdefs.h
*************** rm -f core conftest.err conftest.$ac_obj
*** 28758,28765 ****
--- 28766,28807 ----
  
          $as_echo "#define HAVE_SYMLINK 1" >>confdefs.h
  
+         $as_echo "#define HAVE_SYS_IOCT4YL_H 1" >>confdefs.h
+ 
+         $as_echo "#define HAVE_SYS_STAT_H 1" >>confdefs.h
+ 
+         $as_echo "#define HAVE_SYS_TYPES_H 1" >>confdefs.h
+ 
+         $as_echo "#define HAVE_S_ISREG 1" >>confdefs.h
+ 
          $as_echo "#define HAVE_TRUNCATE 1" >>confdefs.h
  
+         $as_echo "#define HAVE_UNISTD_H 1" >>confdefs.h
+ 
+         $as_echo "#define HAVE_UNLINKAT 1" >>confdefs.h
+ 
+         $as_echo "#define HAVE_USLEEP 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_CHMOD 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_MKDIR 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_CHDIR 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_GETCWD 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_UTIME 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_LINK 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_READLINK 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_SYMLINK 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_TRUNCATE 1" >>confdefs.h
+ 
+         $as_echo "#define _GLIBCXX_USE_FDOPENDIR 1" >>confdefs.h
+ 
          $as_echo "#define HAVE_USLEEP 1" >>confdefs.h
  
  
*************** $as_echo "$glibcxx_cv_libbacktrace_atomi
*** 53919,53925 ****
      CXXFLAGS='-O0 -S'
  
      cat > conftest.$ac_ext << EOF
! #line 53922 "configure"
  #include <stddef.h>
  int main()
  {
--- 53961,53967 ----
      CXXFLAGS='-O0 -S'
  
      cat > conftest.$ac_ext << EOF
! #line 53964 "configure"
  #include <stddef.h>
  int main()
  {
diff -Nrcpad gcc-16-20251012/libstdc++-v3/configure.ac gcc-16-20251019/libstdc++-v3/configure.ac
*** gcc-16-20251012/libstdc++-v3/configure.ac	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/configure.ac	Sun Oct 19 22:32:45 2025
*************** dnl # rather than hardcoding that inform
*** 399,404 ****
--- 399,408 ----
          AC_DEFINE(HAVE_ALIGNED_ALLOC)
          AC_DEFINE(HAVE_AT_QUICK_EXIT)
          AC_DEFINE(HAVE_LINK)
+         AC_DEFINE(HAVE_SYS_IOCT4YL_H)
+         AC_DEFINE(HAVE_SYS_STAT_H)
+         AC_DEFINE(HAVE_SYS_TYPES_H)
+         AC_DEFINE(HAVE_S_ISREG)
          AC_DEFINE(HAVE_QUICK_EXIT)
          AC_DEFINE(HAVE_READLINK)
          AC_DEFINE(HAVE_SETENV)
*************** dnl # rather than hardcoding that inform
*** 406,412 ****
--- 410,433 ----
          AC_DEFINE(HAVE_SOCKATMARK)
          AC_DEFINE(HAVE_STRERROR_L)
          AC_DEFINE(HAVE_SYMLINK)
+         AC_DEFINE(HAVE_SYS_IOCT4YL_H)
+         AC_DEFINE(HAVE_SYS_STAT_H)
+         AC_DEFINE(HAVE_SYS_TYPES_H)
+         AC_DEFINE(HAVE_S_ISREG)
          AC_DEFINE(HAVE_TRUNCATE)
+         AC_DEFINE(HAVE_UNISTD_H)
+         AC_DEFINE(HAVE_UNLINKAT)
+         AC_DEFINE(HAVE_USLEEP)
+         AC_DEFINE(_GLIBCXX_USE_CHMOD)
+         AC_DEFINE(_GLIBCXX_USE_MKDIR)
+         AC_DEFINE(_GLIBCXX_USE_CHDIR)
+         AC_DEFINE(_GLIBCXX_USE_GETCWD)
+         AC_DEFINE(_GLIBCXX_USE_UTIME)
+         AC_DEFINE(_GLIBCXX_USE_LINK)
+         AC_DEFINE(_GLIBCXX_USE_READLINK)
+         AC_DEFINE(_GLIBCXX_USE_SYMLINK)
+         AC_DEFINE(_GLIBCXX_USE_TRUNCATE)
+         AC_DEFINE(_GLIBCXX_USE_FDOPENDIR)
          AC_DEFINE(HAVE_USLEEP)
  
          # These functions are defined in librtemscpu.  We don't use
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/atomic_base.h gcc-16-20251019/libstdc++-v3/include/bits/atomic_base.h
*** gcc-16-20251012/libstdc++-v3/include/bits/atomic_base.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/atomic_base.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1535,1544 ****
        }
  
        static consteval int
!       _S_required_aligment()
        {
  	if constexpr (is_floating_point_v<_Vt> || is_pointer_v<_Vt>)
! 	  return alignof(_Vt);
  	else if constexpr ((sizeof(_Vt) & (sizeof(_Vt) - 1)) || sizeof(_Vt) > 16)
  	  return alignof(_Vt);
  	else
--- 1535,1544 ----
        }
  
        static consteval int
!       _S_required_alignment()
        {
  	if constexpr (is_floating_point_v<_Vt> || is_pointer_v<_Vt>)
! 	  return __alignof__(_Vt);
  	else if constexpr ((sizeof(_Vt) & (sizeof(_Vt) - 1)) || sizeof(_Vt) > 16)
  	  return alignof(_Vt);
  	else
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1555,1561 ****
        static_assert(is_always_lock_free || !is_volatile_v<_Tp>,
  	"atomic operations on volatile T must be lock-free");
  
!       static constexpr size_t required_alignment = _S_required_aligment();
  
        __atomic_ref_base() = delete;
        __atomic_ref_base& operator=(const __atomic_ref_base&) = delete;
--- 1555,1561 ----
        static_assert(is_always_lock_free || !is_volatile_v<_Tp>,
  	"atomic operations on volatile T must be lock-free");
  
!       static constexpr size_t required_alignment = _S_required_alignment();
  
        __atomic_ref_base() = delete;
        __atomic_ref_base& operator=(const __atomic_ref_base&) = delete;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1589,1594 ****
--- 1589,1600 ----
        }
  #endif // __glibcxx_atomic_wait
  
+ #if __glibcxx_atomic_ref >= 202411L
+       _GLIBCXX_ALWAYS_INLINE constexpr const _Tp*
+       address() const noexcept
+       { return _M_ptr; }
+ #endif // __glibcxx_atomic_ref >= 202411L
+ 
      protected:
        _Tp* _M_ptr;
      };
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1672,1677 ****
--- 1678,1689 ----
  	__atomic_impl::notify_all(this->_M_ptr);
        }
  #endif // __glibcxx_atomic_wait
+ 
+ #if __glibcxx_atomic_ref >= 202411L
+       _GLIBCXX_ALWAYS_INLINE constexpr _Tp*
+       address() const noexcept
+       { return this->_M_ptr; }
+ #endif // __glibcxx_atomic_ref >= 202411L
      };
  
    template<typename _Tp,
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/chrono.h gcc-16-20251019/libstdc++-v3/include/bits/chrono.h
*** gcc-16-20251012/libstdc++-v3/include/bits/chrono.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/chrono.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1515,1520 ****
--- 1515,1594 ----
    } // namespace filesystem
  #endif // C++17 && HOSTED
  
+ #if _GLIBCXX_HOSTED
+ #if ! defined _GLIBCXX_NO_SLEEP || defined _GLIBCXX_HAS_GTHREADS \
+     || _GLIBCXX_HAVE_LINUX_FUTEX
+ namespace chrono
+ {
+ /// @cond undocumented
+ 
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wc++17-extensions"
+   // Convert a chrono::duration to a relative time represented as timespec
+   // (e.g. for use with nanosleep).
+   template<typename _Rep, typename _Period>
+     [[__nodiscard__]] _GLIBCXX14_CONSTEXPR inline
+     struct ::timespec
+     __to_timeout_timespec(const duration<_Rep, _Period>& __d)
+     {
+       struct ::timespec __ts{};
+ 
+       if (__d < __d.zero()) // Negative timeouts don't make sense.
+ 	return __ts;
+ 
+       if constexpr (ratio_greater<_Period, ratio<1>>::value
+ 		      || treat_as_floating_point<_Rep>::value)
+ 	{
+ 	  // Converting from e.g. chrono::hours::max() to chrono::seconds
+ 	  // would evaluate LLONG_MAX * 3600 which would overflow.
+ 	  // Limit to chrono::seconds::max().
+ 	  chrono::duration<double> __fmax(chrono::seconds::max());
+ 	  if (__d > __fmax) [[__unlikely__]]
+ 	    return chrono::__to_timeout_timespec(chrono::seconds::max());
+ 	}
+ 
+       auto __s = chrono::duration_cast<chrono::seconds>(__d);
+ 
+       if constexpr (is_integral<time_t>::value) // POSIX.1-2001 allows floating
+ 	{
+ 	  // Also limit to time_t maximum (only relevant for 32-bit time_t).
+ 	  constexpr auto __tmax = numeric_limits<time_t>::max();
+ 	  if (__s.count() > __tmax) [[__unlikely__]]
+ 	    {
+ 	      __ts.tv_sec = __tmax;
+ 	      return __ts;
+ 	    }
+ 	}
+ 
+       auto __ns = chrono::duration_cast<chrono::nanoseconds>(__d - __s);
+ 
+       if constexpr (treat_as_floating_point<_Rep>::value)
+ 	if (__ns.count() > 999999999) [[__unlikely__]]
+ 	  __ns = chrono::nanoseconds(999999999);
+ 
+       __ts.tv_sec = static_cast<time_t>(__s.count());
+       __ts.tv_nsec = static_cast<long>(__ns.count());
+       return __ts;
+     }
+ #pragma GCC diagnostic pop
+ 
+   // Convert a chrono::time_point to an absolute time represented as timespec.
+   // All times before the epoch get converted to the epoch, so this assumes
+   // that we only use it for clocks where that's true.
+   // It should be safe to use this for system_clock and steady_clock.
+   template<typename _Clock, typename _Dur>
+     [[__nodiscard__]] _GLIBCXX14_CONSTEXPR inline
+     struct ::timespec
+     __to_timeout_timespec(const time_point<_Clock, _Dur>& __t)
+     {
+       return chrono::__to_timeout_timespec(__t.time_since_epoch());
+     }
+ 
+ /// @endcond
+ } // namespace chrono
+ #endif // !NO_SLEEP || HAS_GTHREADS || HAVE_LINUX_FUTEX
+ #endif // HOSTED
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/hashtable.h gcc-16-20251019/libstdc++-v3/include/bits/hashtable.h
*** gcc-16-20251012/libstdc++-v3/include/bits/hashtable.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/hashtable.h	Sun Oct 19 22:32:45 2025
***************
*** 38,44 ****
  #include <bits/enable_special_members.h>
  #include <bits/stl_algobase.h> // fill_n, is_permutation
  #include <bits/stl_function.h> // __has_is_transparent_t
! #if __cplusplus > 201402L
  # include <bits/node_handle.h>
  #endif
  
--- 38,44 ----
  #include <bits/enable_special_members.h>
  #include <bits/stl_algobase.h> // fill_n, is_permutation
  #include <bits/stl_function.h> // __has_is_transparent_t
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
  # include <bits/node_handle.h>
  #endif
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 349,355 ****
        using size_type = typename __hashtable_base::size_type;
        using difference_type = typename __hashtable_base::difference_type;
  
! #if __cplusplus > 201402L
        using node_type = _Node_handle<_Key, _Value, __node_alloc_type>;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  #endif
--- 349,355 ----
        using size_type = typename __hashtable_base::size_type;
        using difference_type = typename __hashtable_base::difference_type;
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        using node_type = _Node_handle<_Key, _Value, __node_alloc_type>;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1931,1937 ****
      -> const_iterator
      { return const_iterator(_M_locate(__k)); }
  
! #if __cplusplus > 201703L
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
  	   typename _Hash, typename _RangeHash, typename _Unused,
--- 1931,1937 ----
      -> const_iterator
      { return const_iterator(_M_locate(__k)); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
  	   typename _Hash, typename _RangeHash, typename _Unused,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1979,1985 ****
  	std::size_t __bkt = _M_bucket_index(__code);
  	return const_iterator(_M_find_node_tr(__bkt, __k, __code));
        }
! #endif
  
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
--- 1979,1985 ----
  	std::size_t __bkt = _M_bucket_index(__code);
  	return const_iterator(_M_find_node_tr(__bkt, __k, __code));
        }
! #endif // C++20 __glibcxx_generic_unordered_lookup
  
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2007,2013 ****
        return __result;
      }
  
! #if __cplusplus > 201703L
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
  	   typename _Hash, typename _RangeHash, typename _Unused,
--- 2007,2013 ----
        return __result;
      }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
  	   typename _Hash, typename _RangeHash, typename _Unused,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2052,2058 ****
  
  	return __result;
        }
! #endif
  
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
--- 2052,2058 ----
  
  	return __result;
        }
! #endif // C++20 __glibcxx_generic_unordered_lookup
  
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2102,2108 ****
        return { __beg, __ite };
      }
  
! #if __cplusplus > 201703L
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
  	   typename _Hash, typename _RangeHash, typename _Unused,
--- 2102,2108 ----
        return { __beg, __ite };
      }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
    template<typename _Key, typename _Value, typename _Alloc,
  	   typename _ExtractKey, typename _Equal,
  	   typename _Hash, typename _RangeHash, typename _Unused,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2190,2196 ****
  
  	return { __beg, __ite };
        }
! #endif
  
    // Find the node before the one whose key compares equal to k in the bucket
    // bkt. Return nullptr if no node is found.
--- 2190,2196 ----
  
  	return { __beg, __ite };
        }
! #endif // C++20 __glibcxx_generic_unordered_lookup
  
    // Find the node before the one whose key compares equal to k in the bucket
    // bkt. Return nullptr if no node is found.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2966,2972 ****
      }
  #pragma GCC diagnostic pop
  
! #if __cplusplus > 201402L
    template<typename, typename, typename> class _Hash_merge_helper { };
  #endif // C++17
  
--- 2966,2972 ----
      }
  #pragma GCC diagnostic pop
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
    template<typename, typename, typename> class _Hash_merge_helper { };
  #endif // C++17
  
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/shared_ptr_atomic.h gcc-16-20251019/libstdc++-v3/include/bits/shared_ptr_atomic.h
*** gcc-16-20251012/libstdc++-v3/include/bits/shared_ptr_atomic.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/shared_ptr_atomic.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 392,397 ****
--- 392,398 ----
      class _Sp_atomic
      {
        using value_type = _Tp;
+       using element_type = typename _Tp::element_type;
  
        friend struct atomic<_Tp>;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 420,426 ****
  
  	~_Atomic_count()
  	{
! 	  auto __val = _M_val.load(memory_order_relaxed);
  	  _GLIBCXX_TSAN_MUTEX_DESTROY(&_M_val);
  	  __glibcxx_assert(!(__val & _S_lock_bit));
  	  if (auto __pi = reinterpret_cast<pointer>(__val))
--- 421,427 ----
  
  	~_Atomic_count()
  	{
! 	  auto __val = _AtomicRef(_M_val).load(memory_order_relaxed);
  	  _GLIBCXX_TSAN_MUTEX_DESTROY(&_M_val);
  	  __glibcxx_assert(!(__val & _S_lock_bit));
  	  if (auto __pi = reinterpret_cast<pointer>(__val))
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 442,459 ****
  	{
  	  // To acquire the lock we flip the LSB from 0 to 1.
  
! 	  auto __current = _M_val.load(memory_order_relaxed);
  	  while (__current & _S_lock_bit)
  	    {
  #if __glibcxx_atomic_wait
  	      __detail::__thread_relax();
  #endif
! 	      __current = _M_val.load(memory_order_relaxed);
  	    }
  
  	  _GLIBCXX_TSAN_MUTEX_TRY_LOCK(&_M_val);
  
! 	  while (!_M_val.compare_exchange_strong(__current,
  						 __current | _S_lock_bit,
  						 __o,
  						 memory_order_relaxed))
--- 443,461 ----
  	{
  	  // To acquire the lock we flip the LSB from 0 to 1.
  
! 	  _AtomicRef __aref(_M_val);
! 	  auto __current = __aref.load(memory_order_relaxed);
  	  while (__current & _S_lock_bit)
  	    {
  #if __glibcxx_atomic_wait
  	      __detail::__thread_relax();
  #endif
! 	      __current = __aref.load(memory_order_relaxed);
  	    }
  
  	  _GLIBCXX_TSAN_MUTEX_TRY_LOCK(&_M_val);
  
! 	  while (!__aref.compare_exchange_strong(__current,
  						 __current | _S_lock_bit,
  						 __o,
  						 memory_order_relaxed))
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 474,480 ****
  	unlock(memory_order __o) const noexcept
  	{
  	  _GLIBCXX_TSAN_MUTEX_PRE_UNLOCK(&_M_val);
! 	  _M_val.fetch_sub(1, __o);
  	  _GLIBCXX_TSAN_MUTEX_POST_UNLOCK(&_M_val);
  	}
  
--- 476,482 ----
  	unlock(memory_order __o) const noexcept
  	{
  	  _GLIBCXX_TSAN_MUTEX_PRE_UNLOCK(&_M_val);
! 	  _AtomicRef(_M_val).fetch_sub(1, __o);
  	  _GLIBCXX_TSAN_MUTEX_POST_UNLOCK(&_M_val);
  	}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 487,493 ****
  	    __o = memory_order_release;
  	  auto __x = reinterpret_cast<uintptr_t>(__c._M_pi);
  	  _GLIBCXX_TSAN_MUTEX_PRE_UNLOCK(&_M_val);
! 	  __x = _M_val.exchange(__x, __o);
  	  _GLIBCXX_TSAN_MUTEX_POST_UNLOCK(&_M_val);
  	  __c._M_pi = reinterpret_cast<pointer>(__x & ~_S_lock_bit);
  	}
--- 489,495 ----
  	    __o = memory_order_release;
  	  auto __x = reinterpret_cast<uintptr_t>(__c._M_pi);
  	  _GLIBCXX_TSAN_MUTEX_PRE_UNLOCK(&_M_val);
! 	  __x = _AtomicRef(_M_val).exchange(__x, __o);
  	  _GLIBCXX_TSAN_MUTEX_POST_UNLOCK(&_M_val);
  	  __c._M_pi = reinterpret_cast<pointer>(__x & ~_S_lock_bit);
  	}
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 495,513 ****
  #if __glibcxx_atomic_wait
  	// Precondition: caller holds lock!
  	void
! 	_M_wait_unlock(memory_order __o) const noexcept
  	{
  	  _GLIBCXX_TSAN_MUTEX_PRE_UNLOCK(&_M_val);
! 	  auto __v = _M_val.fetch_sub(1, memory_order_relaxed);
  	  _GLIBCXX_TSAN_MUTEX_POST_UNLOCK(&_M_val);
! 	  _M_val.wait(__v & ~_S_lock_bit, __o);
  	}
  
  	void
  	notify_one() noexcept
  	{
  	  _GLIBCXX_TSAN_MUTEX_PRE_SIGNAL(&_M_val);
! 	  _M_val.notify_one();
  	  _GLIBCXX_TSAN_MUTEX_POST_SIGNAL(&_M_val);
  	}
  
--- 497,541 ----
  #if __glibcxx_atomic_wait
  	// Precondition: caller holds lock!
  	void
! 	_M_wait_unlock(const element_type* const& __ptr, memory_order __o) const noexcept
  	{
+ 	  auto __old_ptr = __ptr;
  	  _GLIBCXX_TSAN_MUTEX_PRE_UNLOCK(&_M_val);
! 	  uintptr_t __old_pi 
! 	    = _AtomicRef(_M_val).fetch_sub(1, memory_order_relaxed) - 1u;
  	  _GLIBCXX_TSAN_MUTEX_POST_UNLOCK(&_M_val);
! 
!   	  // Ensure that the correct value of _M_ptr is visible after locking,
!  	  // by upgrading relaxed or consume to acquire.
! 	  auto __lo = __o;
! 	  if (__o != memory_order_seq_cst)
! 	    __lo = memory_order_acquire;
! 
! 	  std::__atomic_wait_address(
! 	    &_M_val,
! 	    [=, &__ptr, this](uintptr_t __new_pi)
! 	      {
! 		if (__old_pi != (__new_pi & ~_S_lock_bit))
! 		  // control block changed, we can wake up
! 		  return true;
! 
! 		// control block is same, we need to check if ptr changed,
! 		// the lock needs to be taken first, the value of pi may have
! 		// also been updated in meantime, so reload it
! 		__new_pi = reinterpret_cast<uintptr_t>(this->lock(__lo));
! 		auto __new_ptr = __ptr;
! 		this->unlock(memory_order_relaxed);
! 		// wake up if either of the values changed
! 		return __new_pi != __old_pi || __new_ptr != __old_ptr;
! 	      },
! 	    [__o, this] { return _AtomicRef(_M_val).load(__o); });
  	}
  
  	void
  	notify_one() noexcept
  	{
  	  _GLIBCXX_TSAN_MUTEX_PRE_SIGNAL(&_M_val);
! 	  _AtomicRef(_M_val).notify_one();
  	  _GLIBCXX_TSAN_MUTEX_POST_SIGNAL(&_M_val);
  	}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 515,531 ****
  	notify_all() noexcept
  	{
  	  _GLIBCXX_TSAN_MUTEX_PRE_SIGNAL(&_M_val);
! 	  _M_val.notify_all();
  	  _GLIBCXX_TSAN_MUTEX_POST_SIGNAL(&_M_val);
  	}
  #endif
  
        private:
! 	mutable __atomic_base<uintptr_t> _M_val{0};
  	static constexpr uintptr_t _S_lock_bit{1};
        };
  
!       typename _Tp::element_type* _M_ptr = nullptr;
        _Atomic_count _M_refcount;
  
        static typename _Atomic_count::pointer
--- 543,560 ----
  	notify_all() noexcept
  	{
  	  _GLIBCXX_TSAN_MUTEX_PRE_SIGNAL(&_M_val);
! 	  _AtomicRef(_M_val).notify_all();
  	  _GLIBCXX_TSAN_MUTEX_POST_SIGNAL(&_M_val);
  	}
  #endif
  
        private:
! 	using _AtomicRef = __atomic_ref<uintptr_t>;
! 	alignas(_AtomicRef::required_alignment) mutable uintptr_t _M_val{0};
  	static constexpr uintptr_t _S_lock_bit{1};
        };
  
!       element_type* _M_ptr = nullptr;
        _Atomic_count _M_refcount;
  
        static typename _Atomic_count::pointer
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 608,614 ****
        {
  	auto __pi = _M_refcount.lock(memory_order_acquire);
  	if (_M_ptr == __old._M_ptr && __pi == __old._M_refcount._M_pi)
! 	  _M_refcount._M_wait_unlock(__o);
  	else
  	  _M_refcount.unlock(memory_order_relaxed);
        }
--- 637,643 ----
        {
  	auto __pi = _M_refcount.lock(memory_order_acquire);
  	if (_M_ptr == __old._M_ptr && __pi == __old._M_refcount._M_pi)
! 	  _M_refcount._M_wait_unlock(_M_ptr, __o);
  	else
  	  _M_refcount.unlock(memory_order_relaxed);
        }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/std_mutex.h gcc-16-20251019/libstdc++-v3/include/bits/std_mutex.h
*** gcc-16-20251012/libstdc++-v3/include/bits/std_mutex.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/std_mutex.h	Sun Oct 19 22:32:45 2025
***************
*** 39,44 ****
--- 39,45 ----
  #else
  
  #include <errno.h> // EBUSY
+ #include <bits/chrono.h>
  #include <bits/functexcept.h>
  #include <bits/gthr.h>
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 210,217 ****
      __gthread_cond_t _M_cond;
  #endif
    };
-   /// @endcond
  
  #endif // _GLIBCXX_HAS_GTHREADS
  
    /// Do not acquire ownership of the mutex.
--- 211,241 ----
      __gthread_cond_t _M_cond;
  #endif
    };
  
+ namespace chrono
+ {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wc++17-extensions"
+   // Convert a time_point to an absolute time represented as __gthread_time_t
+   // (which is typically just a typedef for struct timespec).
+   template<typename _Clock, typename _Dur>
+     [[__nodiscard__]] _GLIBCXX14_CONSTEXPR inline
+     __gthread_time_t
+     __to_timeout_gthread_time_t(const time_point<_Clock, _Dur>& __t)
+     {
+       auto __ts = chrono::__to_timeout_timespec(__t.time_since_epoch());
+       if constexpr (is_same<::timespec, __gthread_time_t>::value)
+ 	return __ts;
+       else if constexpr (is_convertible<::timespec, __gthread_time_t>::value)
+ 	return __ts;
+       else if constexpr (is_scalar<__gthread_time_t>::value) // Assume seconds:
+ 	return static_cast<__gthread_time_t>(__ts.tv_sec);
+       else // Assume this works and the members are in the correct order:
+ 	return __gthread_time_t{ __ts.tv_sec, __ts.tv_nsec };
+     }
+ #pragma GCC diagnostic pop
+ }
+   /// @endcond
  #endif // _GLIBCXX_HAS_GTHREADS
  
    /// Do not acquire ownership of the mutex.
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/stl_iterator_base_funcs.h gcc-16-20251019/libstdc++-v3/include/bits/stl_iterator_base_funcs.h
*** gcc-16-20251012/libstdc++-v3/include/bits/stl_iterator_base_funcs.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/stl_iterator_base_funcs.h	Sun Oct 19 22:32:45 2025
*************** namespace __detail
*** 265,271 ****
        // A type which satisfies the C++20 bidirectional_iterator concept might
        // have input_iterator_tag as its iterator_category type, which would
        // mean we select the __advance overload which cannot move backwards.
!       // A C++20 random_access_iterator we might select the O(n) __advance
        // if it doesn't meet the Cpp17RandomAccessIterator requirements.
        // So for C++20 iterator types we can just choose to do the right thing.
        if constexpr (__detail::__promotable_iterator<_InputIterator>
--- 265,271 ----
        // A type which satisfies the C++20 bidirectional_iterator concept might
        // have input_iterator_tag as its iterator_category type, which would
        // mean we select the __advance overload which cannot move backwards.
!       // For a C++20 random_access_iterator we might select the O(n) __advance
        // if it doesn't meet the Cpp17RandomAccessIterator requirements.
        // So for C++20 iterator types we can just choose to do the right thing.
        if constexpr (__detail::__promotable_iterator<_InputIterator>
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/stl_map.h gcc-16-20251019/libstdc++-v3/include/bits/stl_map.h
*** gcc-16-20251012/libstdc++-v3/include/bits/stl_map.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/stl_map.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1259,1265 ****
        find(const key_type& __x)
        { return _M_t.find(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
--- 1259,1265 ----
        find(const key_type& __x)
        { return _M_t.find(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1284,1290 ****
        find(const key_type& __x) const
        { return _M_t.find(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
--- 1284,1290 ----
        find(const key_type& __x) const
        { return _M_t.find(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1305,1311 ****
        count(const key_type& __x) const
        { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
--- 1305,1311 ----
        count(const key_type& __x) const
        { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1348,1354 ****
        lower_bound(const key_type& __x)
        { return _M_t.lower_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x)
--- 1348,1354 ----
        lower_bound(const key_type& __x)
        { return _M_t.lower_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1373,1379 ****
        lower_bound(const key_type& __x) const
        { return _M_t.lower_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x) const
--- 1373,1379 ----
        lower_bound(const key_type& __x) const
        { return _M_t.lower_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1393,1399 ****
        upper_bound(const key_type& __x)
        { return _M_t.upper_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x)
--- 1393,1399 ----
        upper_bound(const key_type& __x)
        { return _M_t.upper_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1413,1419 ****
        upper_bound(const key_type& __x) const
        { return _M_t.upper_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x) const
--- 1413,1419 ----
        upper_bound(const key_type& __x) const
        { return _M_t.upper_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1442,1448 ****
        equal_range(const key_type& __x)
        { return _M_t.equal_range(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
--- 1442,1448 ----
        equal_range(const key_type& __x)
        { return _M_t.equal_range(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1471,1477 ****
        equal_range(const key_type& __x) const
        { return _M_t.equal_range(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
--- 1471,1477 ----
        equal_range(const key_type& __x) const
        { return _M_t.equal_range(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1649,1655 ****
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  
! #if __cplusplus > 201402L
    // Allow std::map access to internals of compatible maps.
    template<typename _Key, typename _Val, typename _Cmp1, typename _Alloc,
  	   typename _Cmp2>
--- 1649,1655 ----
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
    // Allow std::map access to internals of compatible maps.
    template<typename _Key, typename _Val, typename _Cmp1, typename _Alloc,
  	   typename _Cmp2>
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/stl_multimap.h gcc-16-20251019/libstdc++-v3/include/bits/stl_multimap.h
*** gcc-16-20251012/libstdc++-v3/include/bits/stl_multimap.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/stl_multimap.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 891,897 ****
        find(const key_type& __x)
        { return _M_t.find(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
--- 891,897 ----
        find(const key_type& __x)
        { return _M_t.find(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 915,921 ****
        find(const key_type& __x) const
        { return _M_t.find(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
--- 915,921 ----
        find(const key_type& __x) const
        { return _M_t.find(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 933,939 ****
        count(const key_type& __x) const
        { return _M_t.count(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
--- 933,939 ----
        count(const key_type& __x) const
        { return _M_t.count(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 976,982 ****
        lower_bound(const key_type& __x)
        { return _M_t.lower_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x)
--- 976,982 ----
        lower_bound(const key_type& __x)
        { return _M_t.lower_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1001,1007 ****
        lower_bound(const key_type& __x) const
        { return _M_t.lower_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x) const
--- 1001,1007 ----
        lower_bound(const key_type& __x) const
        { return _M_t.lower_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1021,1027 ****
        upper_bound(const key_type& __x)
        { return _M_t.upper_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x)
--- 1021,1027 ----
        upper_bound(const key_type& __x)
        { return _M_t.upper_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1041,1047 ****
        upper_bound(const key_type& __x) const
        { return _M_t.upper_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x) const
--- 1041,1047 ----
        upper_bound(const key_type& __x) const
        { return _M_t.upper_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1068,1074 ****
        equal_range(const key_type& __x)
        { return _M_t.equal_range(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
--- 1068,1074 ----
        equal_range(const key_type& __x)
        { return _M_t.equal_range(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1095,1101 ****
        equal_range(const key_type& __x) const
        { return _M_t.equal_range(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
--- 1095,1101 ----
        equal_range(const key_type& __x) const
        { return _M_t.equal_range(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1272,1278 ****
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  
! #if __cplusplus > 201402L
    // Allow std::multimap access to internals of compatible maps.
    template<typename _Key, typename _Val, typename _Cmp1, typename _Alloc,
  	   typename _Cmp2>
--- 1272,1278 ----
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
    // Allow std::multimap access to internals of compatible maps.
    template<typename _Key, typename _Val, typename _Cmp1, typename _Alloc,
  	   typename _Cmp2>
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/stl_multiset.h gcc-16-20251019/libstdc++-v3/include/bits/stl_multiset.h
*** gcc-16-20251012/libstdc++-v3/include/bits/stl_multiset.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/stl_multiset.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 773,779 ****
        count(const key_type& __x) const
        { return _M_t.count(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
--- 773,779 ----
        count(const key_type& __x) const
        { return _M_t.count(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 822,828 ****
        find(const key_type& __x) const
        { return _M_t.find(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x)
--- 822,828 ----
        find(const key_type& __x) const
        { return _M_t.find(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	find(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 857,863 ****
        lower_bound(const key_type& __x) const
        { return _M_t.lower_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x)
--- 857,863 ----
        lower_bound(const key_type& __x) const
        { return _M_t.lower_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 887,893 ****
        upper_bound(const key_type& __x) const
        { return _M_t.upper_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x)
--- 887,893 ----
        upper_bound(const key_type& __x) const
        { return _M_t.upper_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 926,932 ****
        equal_range(const key_type& __x) const
        { return _M_t.equal_range(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
--- 926,932 ----
        equal_range(const key_type& __x) const
        { return _M_t.equal_range(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1103,1109 ****
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  
! #if __cplusplus > 201402L
    // Allow std::multiset access to internals of compatible sets.
    template<typename _Val, typename _Cmp1, typename _Alloc, typename _Cmp2>
      struct
--- 1103,1109 ----
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
    // Allow std::multiset access to internals of compatible sets.
    template<typename _Val, typename _Cmp1, typename _Alloc, typename _Cmp2>
      struct
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/stl_set.h gcc-16-20251019/libstdc++-v3/include/bits/stl_set.h
*** gcc-16-20251012/libstdc++-v3/include/bits/stl_set.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/stl_set.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 794,800 ****
        count(const key_type& __x) const
        { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const
--- 794,800 ----
        count(const key_type& __x) const
        { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 844,850 ****
        find(const key_type& __x) const
        { return _M_t.find(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x)
--- 844,850 ----
        find(const key_type& __x) const
        { return _M_t.find(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	find(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 879,885 ****
        lower_bound(const key_type& __x) const
        { return _M_t.lower_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x)
--- 879,885 ----
        lower_bound(const key_type& __x) const
        { return _M_t.lower_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	lower_bound(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 909,915 ****
        upper_bound(const key_type& __x) const
        { return _M_t.upper_bound(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x)
--- 909,915 ----
        upper_bound(const key_type& __x) const
        { return _M_t.upper_bound(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	upper_bound(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 948,954 ****
        equal_range(const key_type& __x) const
        { return _M_t.equal_range(__x); }
  
! #if __cplusplus > 201103L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
--- 948,954 ----
        equal_range(const key_type& __x) const
        { return _M_t.equal_range(__x); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1119,1125 ****
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  
! #if __cplusplus > 201402L
    // Allow std::set access to internals of compatible sets.
    template<typename _Val, typename _Cmp1, typename _Alloc, typename _Cmp2>
      struct
--- 1119,1125 ----
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
    // Allow std::set access to internals of compatible sets.
    template<typename _Val, typename _Cmp1, typename _Alloc, typename _Cmp2>
      struct
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/stl_tree.h gcc-16-20251019/libstdc++-v3/include/bits/stl_tree.h
*** gcc-16-20251012/libstdc++-v3/include/bits/stl_tree.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/stl_tree.h	Sun Oct 19 22:32:45 2025
*************** namespace __rb_tree
*** 1918,1924 ****
        pair<const_iterator, const_iterator>
        equal_range(const key_type& __k) const;
  
! #if __cplusplus >= 201402L
        template<typename _Kt,
  	       typename _Req = __has_is_transparent_t<_Compare, _Kt>>
  	iterator
--- 1918,1924 ----
        pair<const_iterator, const_iterator>
        equal_range(const key_type& __k) const;
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req = __has_is_transparent_t<_Compare, _Kt>>
  	iterator
*************** namespace __rb_tree
*** 2007,2013 ****
  	    ++__high;
  	  return { __low, __high };
  	}
! #endif
  
        // Debugging.
        bool
--- 2007,2013 ----
  	    ++__high;
  	  return { __low, __high };
  	}
! #endif // __glibcxx_generic_associative_lookup
  
        // Debugging.
        bool
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/this_thread_sleep.h gcc-16-20251019/libstdc++-v3/include/bits/this_thread_sleep.h
*** gcc-16-20251012/libstdc++-v3/include/bits/this_thread_sleep.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/this_thread_sleep.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 59,69 ****
    {
  #ifndef _GLIBCXX_NO_SLEEP
  
- #ifndef _GLIBCXX_USE_NANOSLEEP
-     void
-     __sleep_for(chrono::seconds, chrono::nanoseconds);
- #endif
- 
      /// this_thread::sleep_for
      template<typename _Rep, typename _Period>
        inline void
--- 59,64 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 71,88 ****
        {
  	if (__rtime <= __rtime.zero())
  	  return;
! 	auto __s = chrono::duration_cast<chrono::seconds>(__rtime);
! 	auto __ns = chrono::duration_cast<chrono::nanoseconds>(__rtime - __s);
  #ifdef _GLIBCXX_USE_NANOSLEEP
- 	struct ::timespec __ts =
- 	  {
- 	    static_cast<std::time_t>(__s.count()),
- 	    static_cast<long>(__ns.count())
- 	  };
  	while (::nanosleep(&__ts, &__ts) == -1 && errno == EINTR)
  	  { }
  #else
! 	__sleep_for(__s, __ns);
  #endif
        }
  
--- 66,81 ----
        {
  	if (__rtime <= __rtime.zero())
  	  return;
! 
! 	struct timespec __ts = chrono::__to_timeout_timespec(__rtime);
  #ifdef _GLIBCXX_USE_NANOSLEEP
  	while (::nanosleep(&__ts, &__ts) == -1 && errno == EINTR)
  	  { }
  #else
! 	using chrono::seconds;
! 	using chrono::nanoseconds;
! 	void __sleep_for(seconds __s, nanoseconds __ns);
! 	__sleep_for(seconds(__ts.tv_sec), nanoseconds(__ts.tv_nsec));
  #endif
        }
  
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/unicode.h gcc-16-20251019/libstdc++-v3/include/bits/unicode.h
*** gcc-16-20251012/libstdc++-v3/include/bits/unicode.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/unicode.h	Sun Oct 19 22:32:45 2025
*************** namespace __unicode
*** 61,67 ****
      __is_single_code_unit(char32_t __c)
      {
        if constexpr (__gnu_cxx::__int_traits<_CharT>::__max <= 0xFF)
! 	return __c < 0x7F; // ASCII character
        else
  	return __c < __gnu_cxx::__int_traits<_CharT>::__max
  		       && __is_scalar_value(__c);
--- 61,67 ----
      __is_single_code_unit(char32_t __c)
      {
        if constexpr (__gnu_cxx::__int_traits<_CharT>::__max <= 0xFF)
! 	return __c <= 0x7F; // ASCII character
        else
  	return __c < __gnu_cxx::__int_traits<_CharT>::__max
  		       && __is_scalar_value(__c);
*************** namespace __unicode
*** 527,533 ****
  	  {
  	    // read a low surrogate, expect a high surrogate before it.
  	    uint16_t __u2 = *--_M_curr();
! 	    if (__u2 < 0xD800 || __u2 > 0xDC00) [[unlikely]]
  	      __c = _S_error(); // unpaired low surrogate
  	    else
  	      {
--- 527,533 ----
  	  {
  	    // read a low surrogate, expect a high surrogate before it.
  	    uint16_t __u2 = *--_M_curr();
! 	    if (__u2 < 0xD800 || __u2 >= 0xDC00) [[unlikely]]
  	      __c = _S_error(); // unpaired low surrogate
  	    else
  	      {
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/unordered_map.h gcc-16-20251019/libstdc++-v3/include/bits/unordered_map.h
*** gcc-16-20251012/libstdc++-v3/include/bits/unordered_map.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/unordered_map.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 961,967 ****
        find(const key_type& __x)
        { return _M_h.find(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) -> decltype(_M_h._M_find_tr(__x))
--- 961,967 ----
        find(const key_type& __x)
        { return _M_h.find(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) -> decltype(_M_h._M_find_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 972,978 ****
        find(const key_type& __x) const
        { return _M_h.find(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const -> decltype(_M_h._M_find_tr(__x))
--- 972,978 ----
        find(const key_type& __x) const
        { return _M_h.find(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const -> decltype(_M_h._M_find_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 994,1000 ****
        count(const key_type& __x) const
        { return _M_h.count(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_h._M_count_tr(__x))
--- 994,1000 ----
        count(const key_type& __x) const
        { return _M_h.count(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_h._M_count_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1034,1040 ****
        equal_range(const key_type& __x)
        { return _M_h.equal_range(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
--- 1034,1040 ----
        equal_range(const key_type& __x)
        { return _M_h.equal_range(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1046,1052 ****
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
--- 1046,1052 ----
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2039,2045 ****
        find(const key_type& __x)
        { return _M_h.find(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) -> decltype(_M_h._M_find_tr(__x))
--- 2039,2045 ----
        find(const key_type& __x)
        { return _M_h.find(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) -> decltype(_M_h._M_find_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2050,2056 ****
        find(const key_type& __x) const
        { return _M_h.find(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const -> decltype(_M_h._M_find_tr(__x))
--- 2050,2056 ----
        find(const key_type& __x) const
        { return _M_h.find(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const -> decltype(_M_h._M_find_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2068,2074 ****
        count(const key_type& __x) const
        { return _M_h.count(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_h._M_count_tr(__x))
--- 2068,2074 ----
        count(const key_type& __x) const
        { return _M_h.count(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_h._M_count_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2106,2112 ****
        equal_range(const key_type& __x)
        { return _M_h.equal_range(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
--- 2106,2112 ----
        equal_range(const key_type& __x)
        { return _M_h.equal_range(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2118,2124 ****
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
--- 2118,2124 ----
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/unordered_set.h gcc-16-20251019/libstdc++-v3/include/bits/unordered_set.h
*** gcc-16-20251012/libstdc++-v3/include/bits/unordered_set.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/unordered_set.h	Sun Oct 19 22:32:45 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 744,750 ****
        find(const key_type& __x)
        { return _M_h.find(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	find(const _Kt& __k)
--- 744,750 ----
        find(const key_type& __x)
        { return _M_h.find(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	find(const _Kt& __k)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 756,762 ****
        find(const key_type& __x) const
        { return _M_h.find(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	find(const _Kt& __k) const
--- 756,762 ----
        find(const key_type& __x) const
        { return _M_h.find(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	find(const _Kt& __k) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 779,785 ****
        count(const key_type& __x) const
        { return _M_h.count(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	count(const _Kt& __k) const
--- 779,785 ----
        count(const key_type& __x) const
        { return _M_h.count(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	count(const _Kt& __k) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 820,826 ****
        equal_range(const key_type& __x)
        { return _M_h.equal_range(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __k)
--- 820,826 ----
        equal_range(const key_type& __x)
        { return _M_h.equal_range(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __k)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 832,838 ****
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __k) const
--- 832,838 ----
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __k) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1745,1751 ****
        find(const key_type& __x)
        { return _M_h.find(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x)
--- 1745,1751 ----
        find(const key_type& __x)
        { return _M_h.find(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	find(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1757,1763 ****
        find(const key_type& __x) const
        { return _M_h.find(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const
--- 1757,1763 ----
        find(const key_type& __x) const
        { return _M_h.find(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	find(const _Kt& __x) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1776,1782 ****
        count(const key_type& __x) const
        { return _M_h.count(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_h._M_count_tr(__x))
--- 1776,1782 ----
        count(const key_type& __x) const
        { return _M_h.count(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	count(const _Kt& __x) const -> decltype(_M_h._M_count_tr(__x))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1814,1820 ****
        equal_range(const key_type& __x)
        { return _M_h.equal_range(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
--- 1814,1820 ----
        equal_range(const key_type& __x)
        { return _M_h.equal_range(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1826,1832 ****
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
  
! #if __cplusplus > 201703L
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
--- 1826,1832 ----
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt>
  	auto
  	equal_range(const _Kt& __x) const
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/version.def gcc-16-20251019/libstdc++-v3/include/bits/version.def
*** gcc-16-20251012/libstdc++-v3/include/bits/version.def	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/version.def	Sun Oct 19 22:32:45 2025
*************** ftms = {
*** 790,795 ****
--- 790,799 ----
  ftms = {
    name = atomic_ref;
    values = {
+     v = 202411;
+     cxxmin = 26;
+   };
+   values = {
      v = 201806;
      cxxmin = 20;
    };
*************** ftms = {
*** 1946,1951 ****
--- 1950,1964 ----
    };
  };
  
+ ftms = {
+   name = observable_checkpoint;
+   values = {
+     v = 202506;
+     cxxmin = 26;
+     extra_cond = "__has_builtin(__builtin_observable_checkpoint)";
+   };
+ };
+ 
  ftms = {
    name = algorithm_default_value_type;
    values = {
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/bits/version.h gcc-16-20251019/libstdc++-v3/include/bits/version.h
*** gcc-16-20251012/libstdc++-v3/include/bits/version.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/bits/version.h	Sun Oct 19 22:32:45 2025
***************
*** 880,886 ****
  #undef __glibcxx_want_atomic_lock_free_type_aliases
  
  #if !defined(__cpp_lib_atomic_ref)
! # if (__cplusplus >= 202002L)
  #  define __glibcxx_atomic_ref 201806L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_ref)
  #   define __cpp_lib_atomic_ref 201806L
--- 880,891 ----
  #undef __glibcxx_want_atomic_lock_free_type_aliases
  
  #if !defined(__cpp_lib_atomic_ref)
! # if (__cplusplus >  202302L)
! #  define __glibcxx_atomic_ref 202411L
! #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_ref)
! #   define __cpp_lib_atomic_ref 202411L
! #  endif
! # elif (__cplusplus >= 202002L)
  #  define __glibcxx_atomic_ref 201806L
  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_atomic_ref)
  #   define __cpp_lib_atomic_ref 201806L
***************
*** 2176,2181 ****
--- 2181,2196 ----
  #endif /* !defined(__cpp_lib_unreachable) */
  #undef __glibcxx_want_unreachable
  
+ #if !defined(__cpp_lib_observable_checkpoint)
+ # if (__cplusplus >  202302L) && (__has_builtin(__builtin_observable_checkpoint))
+ #  define __glibcxx_observable_checkpoint 202506L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_observable_checkpoint)
+ #   define __cpp_lib_observable_checkpoint 202506L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_observable_checkpoint) && defined(__glibcxx_want_observable_checkpoint) */
+ #undef __glibcxx_want_observable_checkpoint
+ 
  #if !defined(__cpp_lib_algorithm_default_value_type)
  # if (__cplusplus >  202302L)
  #  define __glibcxx_algorithm_default_value_type 202403L
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/debug/map.h gcc-16-20251019/libstdc++-v3/include/debug/map.h
*** gcc-16-20251012/libstdc++-v3/include/debug/map.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/debug/map.h	Sun Oct 19 22:32:46 2025
*************** namespace __debug
*** 455,461 ****
  	}
  #endif // C++17
  
! #if __cplusplus > 201402L
        using node_type = typename _Base::node_type;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  
--- 455,461 ----
  	}
  #endif // C++17
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        using node_type = typename _Base::node_type;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  
*************** namespace __debug
*** 601,607 ****
        find(const key_type& __x)
        { return iterator(_Base::find(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 601,607 ----
        find(const key_type& __x)
        { return iterator(_Base::find(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 614,620 ****
        find(const key_type& __x) const
        { return const_iterator(_Base::find(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 614,620 ----
        find(const key_type& __x) const
        { return const_iterator(_Base::find(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 629,635 ****
        lower_bound(const key_type& __x)
        { return iterator(_Base::lower_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 629,635 ----
        lower_bound(const key_type& __x)
        { return iterator(_Base::lower_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 642,648 ****
        lower_bound(const key_type& __x) const
        { return const_iterator(_Base::lower_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 642,648 ----
        lower_bound(const key_type& __x) const
        { return const_iterator(_Base::lower_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 655,661 ****
        upper_bound(const key_type& __x)
        { return iterator(_Base::upper_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 655,661 ----
        upper_bound(const key_type& __x)
        { return iterator(_Base::upper_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 668,674 ****
        upper_bound(const key_type& __x) const
        { return const_iterator(_Base::upper_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 668,674 ----
        upper_bound(const key_type& __x) const
        { return const_iterator(_Base::upper_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 686,692 ****
  			      iterator(__res.second, this));
        }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 686,692 ----
  			      iterator(__res.second, this));
        }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 707,713 ****
  			      const_iterator(__res.second, this));
        }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 707,713 ----
  			      const_iterator(__res.second, this));
        }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/debug/multimap.h gcc-16-20251019/libstdc++-v3/include/debug/multimap.h
*** gcc-16-20251012/libstdc++-v3/include/debug/multimap.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/debug/multimap.h	Sun Oct 19 22:32:46 2025
*************** namespace __debug
*** 340,346 ****
  	    _Base::insert(__first, __last);
  	}
  
! #if __cplusplus > 201402L
        using node_type = typename _Base::node_type;
  
        node_type
--- 340,346 ----
  	    _Base::insert(__first, __last);
  	}
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        using node_type = typename _Base::node_type;
  
        node_type
*************** namespace __debug
*** 483,489 ****
        find(const key_type& __x)
        { return iterator(_Base::find(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 483,489 ----
        find(const key_type& __x)
        { return iterator(_Base::find(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 496,502 ****
        find(const key_type& __x) const
        { return const_iterator(_Base::find(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 496,502 ----
        find(const key_type& __x) const
        { return const_iterator(_Base::find(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 511,517 ****
        lower_bound(const key_type& __x)
        { return iterator(_Base::lower_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 511,517 ----
        lower_bound(const key_type& __x)
        { return iterator(_Base::lower_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 524,530 ****
        lower_bound(const key_type& __x) const
        { return const_iterator(_Base::lower_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 524,530 ----
        lower_bound(const key_type& __x) const
        { return const_iterator(_Base::lower_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 537,543 ****
        upper_bound(const key_type& __x)
        { return iterator(_Base::upper_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 537,543 ----
        upper_bound(const key_type& __x)
        { return iterator(_Base::upper_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 550,556 ****
        upper_bound(const key_type& __x) const
        { return const_iterator(_Base::upper_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 550,556 ----
        upper_bound(const key_type& __x) const
        { return const_iterator(_Base::upper_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 568,574 ****
  			      iterator(__res.second, this));
        }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 568,574 ----
  			      iterator(__res.second, this));
        }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 589,595 ****
  			      const_iterator(__res.second, this));
        }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 589,595 ----
  			      const_iterator(__res.second, this));
        }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/debug/multiset.h gcc-16-20251019/libstdc++-v3/include/debug/multiset.h
*** gcc-16-20251012/libstdc++-v3/include/debug/multiset.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/debug/multiset.h	Sun Oct 19 22:32:46 2025
*************** namespace __debug
*** 311,317 ****
        { _Base::insert(__l); }
  #endif
  
! #if __cplusplus > 201402L
        using node_type = typename _Base::node_type;
  
        node_type
--- 311,317 ----
        { _Base::insert(__l); }
  #endif
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        using node_type = typename _Base::node_type;
  
        node_type
*************** namespace __debug
*** 457,463 ****
        find(const key_type& __x) const
        { return const_iterator(_Base::find(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 457,463 ----
        find(const key_type& __x) const
        { return const_iterator(_Base::find(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 485,491 ****
        lower_bound(const key_type& __x) const
        { return const_iterator(_Base::lower_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 485,491 ----
        lower_bound(const key_type& __x) const
        { return const_iterator(_Base::lower_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 511,517 ****
        upper_bound(const key_type& __x) const
        { return const_iterator(_Base::upper_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 511,517 ----
        upper_bound(const key_type& __x) const
        { return const_iterator(_Base::upper_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 547,553 ****
  			      const_iterator(__res.second, this));
        }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 547,553 ----
  			      const_iterator(__res.second, this));
        }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/debug/set.h gcc-16-20251019/libstdc++-v3/include/debug/set.h
*** gcc-16-20251012/libstdc++-v3/include/debug/set.h	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/debug/set.h	Sun Oct 19 22:32:46 2025
*************** namespace __debug
*** 319,325 ****
        { _Base::insert(__l); }
  #endif
  
! #if __cplusplus > 201402L
        using node_type = typename _Base::node_type;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  
--- 319,325 ----
        { _Base::insert(__l); }
  #endif
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        using node_type = typename _Base::node_type;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  
*************** namespace __debug
*** 468,474 ****
        find(const key_type& __x) const
        { return const_iterator(_Base::find(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 468,474 ----
        find(const key_type& __x) const
        { return const_iterator(_Base::find(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 496,502 ****
        lower_bound(const key_type& __x) const
        { return const_iterator(_Base::lower_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 496,502 ----
        lower_bound(const key_type& __x) const
        { return const_iterator(_Base::lower_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 522,528 ****
        upper_bound(const key_type& __x) const
        { return const_iterator(_Base::upper_bound(__x), this); }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 522,528 ----
        upper_bound(const key_type& __x) const
        { return const_iterator(_Base::upper_bound(__x), this); }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
*************** namespace __debug
*** 558,564 ****
  			      const_iterator(__res.second, this));
        }
  
! #if __cplusplus > 201103L
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
--- 558,564 ----
  			      const_iterator(__res.second, this));
        }
  
! #ifdef __glibcxx_generic_associative_lookup // C++ >= 14
        template<typename _Kt,
  	       typename _Req =
  		 typename __has_is_transparent<_Compare, _Kt>::type>
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/debug/unordered_map gcc-16-20251019/libstdc++-v3/include/debug/unordered_map
*** gcc-16-20251012/libstdc++-v3/include/debug/unordered_map	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/debug/unordered_map	Sun Oct 19 22:32:46 2025
*************** namespace __debug
*** 561,567 ****
  	}
  #endif // C++17
  
! #if __cplusplus > 201402L
        using node_type = typename _Base::node_type;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  
--- 561,567 ----
  	}
  #endif // C++17
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        using node_type = typename _Base::node_type;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  
*************** namespace __debug
*** 632,638 ****
        find(const key_type& __key)
        { return { _Base::find(__key), this }; }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 632,638 ----
        find(const key_type& __key)
        { return { _Base::find(__key), this }; }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 645,651 ****
        find(const key_type& __key) const
        { return { _Base::find(__key), this }; }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 645,651 ----
        find(const key_type& __key) const
        { return { _Base::find(__key), this }; }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 666,672 ****
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 666,672 ----
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 685,691 ****
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 685,691 ----
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 790,796 ****
  	return __next;
        }
  
! #if __cplusplus > 201402L
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
--- 790,796 ----
  	return __next;
        }
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
*************** namespace __debug
*** 1362,1368 ****
  	  _M_check_rehashed(__bucket_count);
  	}
  
! #if __cplusplus > 201402L
        using node_type = typename _Base::node_type;
  
        node_type
--- 1362,1368 ----
  	  _M_check_rehashed(__bucket_count);
  	}
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        using node_type = typename _Base::node_type;
  
        node_type
*************** namespace __debug
*** 1428,1434 ****
        find(const key_type& __key)
        { return { _Base::find(__key), this }; }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 1428,1434 ----
        find(const key_type& __key)
        { return { _Base::find(__key), this }; }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 1441,1447 ****
        find(const key_type& __key) const
        { return { _Base::find(__key), this }; }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 1441,1447 ----
        find(const key_type& __key) const
        { return { _Base::find(__key), this }; }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 1462,1468 ****
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 1462,1468 ----
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 1481,1487 ****
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 1481,1487 ----
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 1587,1593 ****
  	return __next;
        }
  
! #if __cplusplus > 201402L
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
--- 1587,1593 ----
  	return __next;
        }
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/debug/unordered_set gcc-16-20251019/libstdc++-v3/include/debug/unordered_set
*** gcc-16-20251012/libstdc++-v3/include/debug/unordered_set	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/debug/unordered_set	Sun Oct 19 22:32:46 2025
*************** namespace __debug
*** 448,454 ****
  	  _M_check_rehashed(__bucket_count);
  	}
  
! #if __cplusplus > 201402L
        using node_type = typename _Base::node_type;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  
--- 448,454 ----
  	  _M_check_rehashed(__bucket_count);
  	}
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        using node_type = typename _Base::node_type;
        using insert_return_type = _Node_insert_return<iterator, node_type>;
  
*************** namespace __debug
*** 519,525 ****
        find(const key_type& __key)
        { return { _Base::find(__key), this }; }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 519,525 ----
        find(const key_type& __key)
        { return { _Base::find(__key), this }; }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 532,538 ****
        find(const key_type& __key) const
        { return { _Base::find(__key), this }; }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 532,538 ----
        find(const key_type& __key) const
        { return { _Base::find(__key), this }; }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 554,560 ****
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 554,560 ----
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 573,579 ****
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 573,579 ----
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 672,678 ****
  	return __next;
        }
  
! #if __cplusplus > 201402L
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
--- 672,678 ----
  	return __next;
        }
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
*************** namespace __debug
*** 1183,1189 ****
  	  _M_check_rehashed(__bucket_count);
  	}
  
! #if __cplusplus > 201402L
        using node_type = typename _Base::node_type;
  
        node_type
--- 1183,1189 ----
  	  _M_check_rehashed(__bucket_count);
  	}
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        using node_type = typename _Base::node_type;
  
        node_type
*************** namespace __debug
*** 1249,1255 ****
        find(const key_type& __key)
        { return { _Base::find(__key), this }; }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 1249,1255 ----
        find(const key_type& __key)
        { return { _Base::find(__key), this }; }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 1262,1268 ****
        find(const key_type& __key) const
        { return { _Base::find(__key), this }; }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 1262,1268 ----
        find(const key_type& __key) const
        { return { _Base::find(__key), this }; }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 1284,1290 ****
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 1284,1290 ----
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 1303,1309 ****
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #if __cplusplus > 201703L
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
--- 1303,1309 ----
  	return { { __res.first, this }, { __res.second, this } };
        }
  
! #ifdef __glibcxx_generic_unordered_lookup // C++ >= 20 && HOSTED
        template<typename _Kt,
  	       typename = std::__has_is_transparent_t<_Hash, _Kt>,
  	       typename = std::__has_is_transparent_t<_Pred, _Kt>>
*************** namespace __debug
*** 1400,1406 ****
  	return __next;
        }
  
! #if __cplusplus > 201402L
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
--- 1400,1406 ----
  	return __next;
        }
  
! #ifdef __glibcxx_node_extract // >= C++17 && HOSTED
        node_type
        _M_extract(_Base_const_iterator __victim)
        {
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/std/condition_variable gcc-16-20251019/libstdc++-v3/include/std/condition_variable
*** gcc-16-20251012/libstdc++-v3/include/std/condition_variable	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/std/condition_variable	Sun Oct 19 22:32:46 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 193,207 ****
        __wait_until_impl(unique_lock<mutex>& __lock,
  			const chrono::time_point<steady_clock, _Dur>& __atime)
        {
! 	auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
! 	auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
! 	__gthread_time_t __ts =
! 	  {
! 	    static_cast<std::time_t>(__s.time_since_epoch().count()),
! 	    static_cast<long>(__ns.count())
! 	  };
! 
  	_M_cond.wait_until(*__lock.mutex(), CLOCK_MONOTONIC, __ts);
  
  	return (steady_clock::now() < __atime
--- 193,199 ----
        __wait_until_impl(unique_lock<mutex>& __lock,
  			const chrono::time_point<steady_clock, _Dur>& __atime)
        {
! 	__gthread_time_t __ts = chrono::__to_timeout_gthread_time_t(__atime);
  	_M_cond.wait_until(*__lock.mutex(), CLOCK_MONOTONIC, __ts);
  
  	return (steady_clock::now() < __atime
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 214,228 ****
        __wait_until_impl(unique_lock<mutex>& __lock,
  			const chrono::time_point<system_clock, _Dur>& __atime)
        {
! 	auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
! 	auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
! 	__gthread_time_t __ts =
! 	  {
! 	    static_cast<std::time_t>(__s.time_since_epoch().count()),
! 	    static_cast<long>(__ns.count())
! 	  };
! 
  	_M_cond.wait_until(*__lock.mutex(), __ts);
  
  	return (system_clock::now() < __atime
--- 206,212 ----
        __wait_until_impl(unique_lock<mutex>& __lock,
  			const chrono::time_point<system_clock, _Dur>& __atime)
        {
! 	__gthread_time_t __ts = chrono::__to_timeout_gthread_time_t(__atime);
  	_M_cond.wait_until(*__lock.mutex(), __ts);
  
  	return (system_clock::now() < __atime
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/std/format gcc-16-20251019/libstdc++-v3/include/std/format
*** gcc-16-20251012/libstdc++-v3/include/std/format	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/std/format	Sun Oct 19 22:32:46 2025
*************** namespace __format
*** 105,110 ****
--- 105,111 ----
    template<typename _CharT> class _Sink;
    template<typename _CharT> class _Fixedbuf_sink;
    template<typename _Out, typename _CharT> class _Padding_sink;
+   template<typename _Out, typename _CharT> class _Escaping_sink;
  
    // Output iterator that writes to a type-erase character sink.
    template<typename _CharT>
*************** namespace __format
*** 1068,1073 ****
--- 1069,1085 ----
  
    template<typename _Out, typename _CharT>
      _Out
+     __write_escape_seqs(_Out __out, basic_string_view<_CharT> __units)
+     {
+       using _UChar = make_unsigned_t<_CharT>;
+       for (_CharT __c : __units)
+ 	__out = __format::__write_escape_seq(
+ 		  __out, static_cast<_UChar>(__c), _Escapes<_CharT>::_S_x());
+       return __out;
+     }
+ 
+   template<typename _Out, typename _CharT>
+     _Out
      __write_escaped_char(_Out __out, _CharT __c)
      {
        using _UChar = make_unsigned_t<_CharT>;
*************** namespace __format
*** 1124,1135 ****
  
    template<typename _CharT, typename _Out>
      _Out
!     __write_escaped_unicode(_Out __out,
! 			    basic_string_view<_CharT> __str,
! 			    _Term_char __term)
      {
        using _Str_view = basic_string_view<_CharT>;
-       using _UChar = make_unsigned_t<_CharT>;
        using _Esc = _Escapes<_CharT>;
  
        static constexpr char32_t __replace = U'\uFFFD';
--- 1136,1145 ----
  
    template<typename _CharT, typename _Out>
      _Out
!     __write_escaped_unicode_part(_Out __out, basic_string_view<_CharT>& __str,
! 				 bool& __prev_esc, _Term_char __term)
      {
        using _Str_view = basic_string_view<_CharT>;
        using _Esc = _Escapes<_CharT>;
  
        static constexpr char32_t __replace = U'\uFFFD';
*************** namespace __format
*** 1143,1152 ****
  	}();
  
        __unicode::_Utf_view<char32_t, _Str_view> __v(std::move(__str));
        auto __first = __v.begin();
        auto const __last = __v.end();
- 
-       bool __prev_esc = true;
        while (__first != __last)
  	{
  	  bool __esc_ascii = false;
--- 1153,1162 ----
  	}();
  
        __unicode::_Utf_view<char32_t, _Str_view> __v(std::move(__str));
+       __str = {};
+ 
        auto __first = __v.begin();
        auto const __last = __v.end();
        while (__first != __last)
  	{
  	  bool __esc_ascii = false;
*************** namespace __format
*** 1185,1199 ****
  	    __out = __format::__write_escaped_char(__out, *__first.base());
  	  else if (__esc_unicode)
  	    __out = __format::__write_escape_seq(__out, *__first, _Esc::_S_u());
! 	  else // __esc_replace
! 	    for (_CharT __c : _Str_view(__first.base(), __first._M_units()))
! 	      __out = __format::__write_escape_seq(__out,
! 						   static_cast<_UChar>(__c),
! 						   _Esc::_S_x());
  	  __prev_esc = true;
  	  ++__first;
- 
  	}
        return __out;
      }
  
--- 1195,1226 ----
  	    __out = __format::__write_escaped_char(__out, *__first.base());
  	  else if (__esc_unicode)
  	    __out = __format::__write_escape_seq(__out, *__first, _Esc::_S_u());
! 	  // __esc_replace
! 	  else if (_Str_view __units(__first.base(), __first._M_units());
! 		   __units.end() != __last.base())
! 	    __out = __format::__write_escape_seqs(__out, __units);
! 	  else
! 	    {
! 	      __str = __units;
! 	      return __out;
! 	    }
! 
  	  __prev_esc = true;
  	  ++__first;
  	}
+ 
+       return __out;
+     }
+ 
+   template<typename _CharT, typename _Out>
+     _Out
+     __write_escaped_unicode(_Out __out, basic_string_view<_CharT> __str,
+ 			    _Term_char __term)
+     {
+       bool __prev_escape = true;
+       __out = __format::__write_escaped_unicode_part(__out, __str,
+ 						     __prev_escape, __term);
+       __out = __format::__write_escape_seqs(__out, __str);
        return __out;
      }
  
*************** namespace __format
*** 1399,1405 ****
  	_M_format_range(_Rg&& __rg, basic_format_context<_Out, _CharT>& __fc) const
  	{
  	  using _Range = remove_reference_t<_Rg>;
- 	  using _String = basic_string<_CharT>;
  	  using _String_view = basic_string_view<_CharT>;
  	  if constexpr (!is_lvalue_reference_v<_Rg>)
  	    return _M_format_range<_Range&>(__rg, __fc);
--- 1426,1431 ----
*************** namespace __format
*** 1412,1466 ****
  				 size_t(ranges::distance(__rg)));
  	      return format(__str, __fc);
  	    }
! 	  else if (!_M_spec._M_debug)
  	    {
  	      const size_t __padwidth = _M_spec._M_get_width(__fc);
  	      if (__padwidth == 0 && _M_spec._M_prec_kind == _WP_none)
! 		return ranges::copy(__rg, __fc.out()).out;
  
! 	      _Padding_sink<_Out, _CharT> __sink(__fc.out(), __padwidth,
! 						 _M_spec._M_get_precision(__fc));
! 	      ranges::copy(__rg, __sink.out());
  	      return __sink._M_finish(_M_spec._M_align, _M_spec._M_fill);
  	    }
- 	  else if constexpr (ranges::forward_range<_Rg> || ranges::sized_range<_Rg>)
- 	    {
- 	      const size_t __n(ranges::distance(__rg));
- 	      size_t __w = __n;
- 	      if constexpr (!__unicode::__literal_encoding_is_unicode<_CharT>())
- 		if (size_t __max = _M_spec._M_get_precision(__fc); __n > __max)
- 		  __w == __max;
- 
- 	      if (__w <= __format::__stackbuf_size<_CharT>)
- 		{
- 		  _CharT __buf[__format::__stackbuf_size<_CharT>];
- 		  ranges::copy_n(ranges::begin(__rg), __w, __buf);
- 		  return _M_format_escaped(_String_view(__buf, __n), __fc);
- 		}
- 	      else if constexpr (ranges::random_access_range<_Rg>)
- 		{
- 		  ranges::iterator_t<_Rg> __first = ranges::begin(__rg);
- 		  ranges::subrange __sub(__first, ranges::next(__first, __w));
- 		  return _M_format_escaped(_String(from_range, __sub), __fc);
- 		}
- 	      else if (__w <= __n)
- 		{
- 		  ranges::subrange __sub(
- 		    counted_iterator(ranges::begin(__rg), __w),
- 		    default_sentinel);
- 		  return _M_format_escaped(_String(from_range, __sub), __fc);
- 		}
- 	      else if constexpr (ranges::sized_range<_Rg>)
- 		return _M_format_escaped(_String(from_range, __rg), __fc);
- 	      else
- 		{
- 		  // N.B. preserve the computed size
- 		  ranges::subrange __sub(__rg, __n);
- 		  return _M_format_escaped(_String(from_range, __sub), __fc);
- 		}
- 	    }
- 	  else
- 	    return _M_format_escaped(_String(from_range, __rg), __fc);
  	}
  
        constexpr void
--- 1438,1465 ----
  				 size_t(ranges::distance(__rg)));
  	      return format(__str, __fc);
  	    }
! 	  else
  	    {
+ 	      auto __handle_debug = [this, &__rg]<typename _NOut>(_NOut __nout)
+ 		{
+ 		  if (!_M_spec._M_debug)
+ 		    return ranges::copy(__rg, std::move(__nout)).out;
+ 
+ 		  _Escaping_sink<_NOut, _CharT>
+ 		    __sink(std::move(__nout), _Term_quote);
+ 		  ranges::copy(__rg, __sink.out());
+ 		  return __sink._M_finish();
+ 		};
+ 
  	      const size_t __padwidth = _M_spec._M_get_width(__fc);
  	      if (__padwidth == 0 && _M_spec._M_prec_kind == _WP_none)
! 		return __handle_debug(__fc.out());
  
! 	      _Padding_sink<_Out, _CharT>
! 		__sink(__fc.out(), __padwidth, _M_spec._M_get_precision(__fc));
! 	      __handle_debug(__sink.out());
  	      return __sink._M_finish(_M_spec._M_align, _M_spec._M_fill);
  	    }
  	}
  
        constexpr void
*************** namespace __format
*** 3997,4002 ****
--- 3996,4088 ----
        }
      };
  
+   template<typename _Out, typename _CharT>
+     class _Escaping_sink : public _Buf_sink<_CharT>
+     {
+       using _Esc = _Escapes<_CharT>;
+ 
+       _Out _M_out;
+       _Term_char _M_term : 2;
+       unsigned _M_prev_escape : 1;
+       unsigned _M_out_discards : 1;
+ 
+       void
+       _M_sync_discarding()
+       {
+ 	if constexpr (is_same_v<_Out, _Sink_iter<_CharT>>)
+ 	  _M_out_discards = _M_out._M_discarding();
+       }
+ 
+       void
+       _M_write()
+       {
+ 	span<_CharT> __bytes = this->_M_used();
+ 	basic_string_view<_CharT> __str(__bytes.data(), __bytes.size());
+ 
+ 	size_t __rem = 0;
+ 	if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
+ 	  {
+ 	    bool __prev_escape = _M_prev_escape;
+ 	    _M_out = __format::__write_escaped_unicode_part(
+ 		       std::move(_M_out), __str, __prev_escape, _M_term);
+ 	    _M_prev_escape = __prev_escape;
+ 
+ 	    __rem = __str.size();
+ 	    if (__rem > 0 && __str.data() != this->_M_buf) [[unlikely]]
+ 	      ranges::move(__str, this->_M_buf);
+ 	  }
+ 	else
+ 	  _M_out = __format::__write_escaped_ascii(
+ 		     std::move(_M_out), __str, _M_term);
+ 
+ 	this->_M_reset(this->_M_buf, __rem);
+ 	_M_sync_discarding();
+       }
+ 
+       void
+       _M_overflow() override
+       {
+ 	if (_M_out_discards)
+ 	  this->_M_rewind();
+ 	else
+ 	  _M_write();
+       }
+ 
+       bool
+       _M_discarding() const override
+       { return _M_out_discards; }
+ 
+     public:
+       [[__gnu__::__always_inline__]]
+       explicit
+       _Escaping_sink(_Out __out, _Term_char __term)
+       : _M_out(std::move(__out)), _M_term(__term),
+ 	_M_prev_escape(true), _M_out_discards(false)
+       {
+ 	_M_out = __format::__write(std::move(_M_out), _Esc::_S_term(_M_term));
+ 	_M_sync_discarding();
+       }
+ 
+       _Out
+       _M_finish()
+       {
+ 	if (_M_out_discards)
+ 	  return std::move(_M_out);
+ 
+ 	if (!this->_M_used().empty())
+ 	{
+ 	  _M_write();
+ 	  if constexpr (__unicode::__literal_encoding_is_unicode<_CharT>())
+ 	    if (auto __rem = this->_M_used(); !__rem.empty())
+ 	      {
+ 		basic_string_view<_CharT> __str(__rem.data(), __rem.size());
+ 		_M_out = __format::__write_escape_seqs(std::move(_M_out), __str);
+ 	      }
+ 	}
+ 	return __format::__write(std::move(_M_out), _Esc::_S_term(_M_term));
+       }
+     };
+ 
    enum class _Arg_t : unsigned char {
      _Arg_none, _Arg_bool, _Arg_c, _Arg_i, _Arg_u, _Arg_ll, _Arg_ull,
      _Arg_flt, _Arg_dbl, _Arg_ldbl, _Arg_str, _Arg_sv, _Arg_ptr, _Arg_handle,
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/std/mutex gcc-16-20251019/libstdc++-v3/include/std/mutex
*** gcc-16-20251012/libstdc++-v3/include/std/mutex	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/std/mutex	Sun Oct 19 22:32:46 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 179,192 ****
  	_M_try_lock_until(const chrono::time_point<chrono::system_clock,
  						   _Duration>& __atime)
  	{
! 	  auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
! 	  auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
! 	  __gthread_time_t __ts = {
! 	    static_cast<std::time_t>(__s.time_since_epoch().count()),
! 	    static_cast<long>(__ns.count())
! 	  };
! 
  	  return static_cast<_Derived*>(this)->_M_timedlock(__ts);
  	}
  
--- 179,185 ----
  	_M_try_lock_until(const chrono::time_point<chrono::system_clock,
  						   _Duration>& __atime)
  	{
! 	  __gthread_time_t __ts = chrono::__to_timeout_gthread_time_t(__atime);
  	  return static_cast<_Derived*>(this)->_M_timedlock(__ts);
  	}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 196,209 ****
  	_M_try_lock_until(const chrono::time_point<chrono::steady_clock,
  						   _Duration>& __atime)
  	{
! 	  auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
! 	  auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
! 	  __gthread_time_t __ts = {
! 	    static_cast<std::time_t>(__s.time_since_epoch().count()),
! 	    static_cast<long>(__ns.count())
! 	  };
! 
  	  return static_cast<_Derived*>(this)->_M_clocklock(CLOCK_MONOTONIC,
  							    __ts);
  	}
--- 189,195 ----
  	_M_try_lock_until(const chrono::time_point<chrono::steady_clock,
  						   _Duration>& __atime)
  	{
! 	  __gthread_time_t __ts = chrono::__to_timeout_gthread_time_t(__atime);
  	  return static_cast<_Derived*>(this)->_M_clocklock(CLOCK_MONOTONIC,
  							    __ts);
  	}
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/std/shared_mutex gcc-16-20251019/libstdc++-v3/include/std/shared_mutex
*** gcc-16-20251012/libstdc++-v3/include/std/shared_mutex	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/std/shared_mutex	Sun Oct 19 22:32:46 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 520,534 ****
        try_lock_until(const chrono::time_point<chrono::system_clock,
  		     _Duration>& __atime)
        {
! 	auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
! 	auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
! 	__gthread_time_t __ts =
! 	  {
! 	    static_cast<std::time_t>(__s.time_since_epoch().count()),
! 	    static_cast<long>(__ns.count())
! 	  };
! 
  	int __ret = __glibcxx_rwlock_timedwrlock(&_M_rwlock, &__ts);
  	// On self-deadlock, we just fail to acquire the lock.  Technically,
  	// the program violated the precondition.
--- 520,526 ----
        try_lock_until(const chrono::time_point<chrono::system_clock,
  		     _Duration>& __atime)
        {
! 	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  	int __ret = __glibcxx_rwlock_timedwrlock(&_M_rwlock, &__ts);
  	// On self-deadlock, we just fail to acquire the lock.  Technically,
  	// the program violated the precondition.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 546,560 ****
        try_lock_until(const chrono::time_point<chrono::steady_clock,
  		   _Duration>& __atime)
        {
! 	auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
! 	auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
! 	__gthread_time_t __ts =
! 	  {
! 	    static_cast<std::time_t>(__s.time_since_epoch().count()),
! 	    static_cast<long>(__ns.count())
! 	  };
! 
  	int __ret = pthread_rwlock_clockwrlock(&_M_rwlock, CLOCK_MONOTONIC,
  					       &__ts);
  	// On self-deadlock, we just fail to acquire the lock.  Technically,
--- 538,544 ----
        try_lock_until(const chrono::time_point<chrono::steady_clock,
  		   _Duration>& __atime)
        {
! 	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  	int __ret = pthread_rwlock_clockwrlock(&_M_rwlock, CLOCK_MONOTONIC,
  					       &__ts);
  	// On self-deadlock, we just fail to acquire the lock.  Technically,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 596,609 ****
        try_lock_shared_until(const chrono::time_point<chrono::system_clock,
  			    _Duration>& __atime)
        {
! 	auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
! 	auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
! 	__gthread_time_t __ts =
! 	  {
! 	    static_cast<std::time_t>(__s.time_since_epoch().count()),
! 	    static_cast<long>(__ns.count())
! 	  };
  
  	int __ret;
  	// Unlike for lock(), we are not allowed to throw an exception so if
--- 580,586 ----
        try_lock_shared_until(const chrono::time_point<chrono::system_clock,
  			    _Duration>& __atime)
        {
! 	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  
  	int __ret;
  	// Unlike for lock(), we are not allowed to throw an exception so if
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 636,650 ****
        try_lock_shared_until(const chrono::time_point<chrono::steady_clock,
  			    _Duration>& __atime)
        {
! 	auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
! 	auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
! 	__gthread_time_t __ts =
! 	  {
! 	    static_cast<std::time_t>(__s.time_since_epoch().count()),
! 	    static_cast<long>(__ns.count())
! 	  };
! 
  	int __ret = pthread_rwlock_clockrdlock(&_M_rwlock, CLOCK_MONOTONIC,
  					       &__ts);
  	// On self-deadlock, we just fail to acquire the lock.  Technically,
--- 613,619 ----
        try_lock_shared_until(const chrono::time_point<chrono::steady_clock,
  			    _Duration>& __atime)
        {
! 	struct timespec __ts = chrono::__to_timeout_timespec(__atime);
  	int __ret = pthread_rwlock_clockrdlock(&_M_rwlock, CLOCK_MONOTONIC,
  					       &__ts);
  	// On self-deadlock, we just fail to acquire the lock.  Technically,
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/std/stacktrace gcc-16-20251019/libstdc++-v3/include/std/stacktrace
*** gcc-16-20251012/libstdc++-v3/include/std/stacktrace	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/std/stacktrace	Sun Oct 19 22:32:46 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 208,213 ****
--- 208,215 ----
  	  {
  	    if (_S_current(__cb, std::__addressof(__ret)))
  	      __ret._M_clear();
+ 	    else
+ 	      __ret._M_trim();
  	  }
  	return __ret;
        }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 224,229 ****
--- 226,233 ----
  	  {
  	    if (_S_current(__cb, std::__addressof(__ret), __skip))
  	      __ret._M_clear();
+ 	    else
+ 	      __ret._M_trim();
  	  }
  
  	return __ret;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 260,265 ****
--- 264,271 ----
  		      }
  		  }
  	      }
+ 	    else
+ 	      __ret._M_trim();
  	  }
  	return __ret;
        }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 651,656 ****
--- 657,670 ----
  	}
        };
  
+       void
+       _M_trim() noexcept
+       {
+ 	// libbacktrace adds an invalid -1UL entry at the end, remove it.
+ 	if (!empty() && !end()[-1])
+ 	  _M_impl._M_resize(size() - 1, _M_alloc);
+       }
+ 
        [[no_unique_address]] allocator_type  _M_alloc{};
  
        _Impl _M_impl{};
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 669,681 ****
    inline ostream&
    operator<<(ostream& __os, const stacktrace_entry& __f)
    {
      string __desc, __file;
      int __line;
!     if (__f._M_get_info(&__desc, &__file, &__line))
        {
! 	__os.width(4);
! 	__os << __desc << " at " << __file << ':' << __line;
        }
      return __os;
    }
  
--- 683,714 ----
    inline ostream&
    operator<<(ostream& __os, const stacktrace_entry& __f)
    {
+     if (!__f) [[unlikely]]
+       return __os << "<unknown>";
+ 
      string __desc, __file;
      int __line;
!     if (__f._M_get_info(&__desc, &__file, &__line)) [[likely]]
        {
! 	__os << ' ';
! 	if (__desc.empty()) [[unlikely]]
! 	  __os << "<unknown>";
! 	else
! 	  __os << __desc;
! 	if (!__file.empty()) [[likely]]
! 	  __os << " at " << __file << ':' << __line;
        }
+ 
+     struct _Flag_guard // Set and restore hex format
+     {
+       _Flag_guard(ios& __s) : _M_ios(__s) { }
+       ~_Flag_guard() { _M_ios.setf(_M_f); }
+ 
+       ios& _M_ios;
+       ios::fmtflags _M_f = _M_ios.setf(ios::hex, ios::basefield);
+     };
+     _Flag_guard __g(__os);
+     __os << " [0x" << __f.native_handle() << ']';
      return __os;
    }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 683,689 ****
      inline ostream&
      operator<<(ostream& __os, const basic_stacktrace<_Allocator>& __st)
      {
!       for (stacktrace::size_type __i = 0; __i < __st.size(); ++__i)
  	{
  	  __os.width(4);
  	  __os << __i << "# " << __st[__i] << '\n';
--- 716,723 ----
      inline ostream&
      operator<<(ostream& __os, const basic_stacktrace<_Allocator>& __st)
      {
!       using size_type = typename basic_stacktrace<_Allocator>::size_type;
!       for (size_type __i = 0, __size = __st.size(); __i < __size; ++__i)
  	{
  	  __os.width(4);
  	  __os << __i << "# " << __st[__i] << '\n';
diff -Nrcpad gcc-16-20251012/libstdc++-v3/include/std/utility gcc-16-20251019/libstdc++-v3/include/std/utility
*** gcc-16-20251012/libstdc++-v3/include/std/utility	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/include/std/utility	Sun Oct 19 22:32:46 2025
***************
*** 98,103 ****
--- 98,104 ----
  #define __glibcxx_want_tuple_element_t
  #define __glibcxx_want_tuples_by_type
  #define __glibcxx_want_unreachable
+ #define __glibcxx_want_observable_checkpoint
  #define __glibcxx_want_tuple_like
  #define __glibcxx_want_constrained_equality
  #include <bits/version.h>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 234,239 ****
--- 235,258 ----
    }
  #endif
  
+ 
+ #ifdef __cpp_lib_observable_checkpoint // C++ >= 26
+   /// Informs the compiler that prior actions are considered observable.
+   /**
+    * This may be used to limit the extent to which optimisations based on the
+    * assumed unreachability of undefined behaviour can propagate to earlier
+    * code.
+    *
+    * @since C++26
+    */
+   [[__gnu__::__always_inline__]]
+   inline void
+   observable_checkpoint() noexcept
+   {
+     return __builtin_observable_checkpoint();
+   }
+ #endif
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
diff -Nrcpad gcc-16-20251012/libstdc++-v3/python/libstdcxx/v6/printers.py gcc-16-20251019/libstdc++-v3/python/libstdcxx/v6/printers.py
*** gcc-16-20251012/libstdc++-v3/python/libstdcxx/v6/printers.py	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/python/libstdcxx/v6/printers.py	Sun Oct 19 22:32:46 2025
*************** class SharedPointerPrinter(printer_base)
*** 287,293 ****
      def _get_refcounts(self):
          if self._typename == 'std::atomic':
              # A tagged pointer is stored as uintptr_t.
!             ptr_val = self._val['_M_refcount']['_M_val']['_M_i']
              ptr_val = ptr_val - (ptr_val % 2)  # clear lock bit
              ptr_type = find_type(self._val['_M_refcount'].type, 'pointer')
              return ptr_val.cast(ptr_type)
--- 287,297 ----
      def _get_refcounts(self):
          if self._typename == 'std::atomic':
              # A tagged pointer is stored as uintptr_t.
!             val = self._val['_M_refcount']['_M_val']
!             if val.type.is_scalar: # GCC 16 stores uintptr_t
!                 ptr_val = val
!             else: # GCC 12-15 stores std::atomic<uintptr_t>
!                 ptr_val = val['_M_i']
              ptr_val = ptr_val - (ptr_val % 2)  # clear lock bit
              ptr_type = find_type(self._val['_M_refcount'].type, 'pointer')
              return ptr_val.cast(ptr_type)
*************** class StdTextEncodingPrinter(printer_bas
*** 2353,2358 ****
--- 2357,2393 ----
              return 'unknown'
          return rep['_M_name']
  
+ class StdStacktraceEntryPrinter(printer_base):
+     """Print a std::stacktrace_entry."""
+ 
+     def __init__(self, typename, val):
+         self._val = val
+         self._typename = typename
+ 
+     def to_string(self):
+         block = gdb.current_progspace().block_for_pc(self._val['_M_pc'])
+         if block is None or block.function is None:
+             return "<unknown>"
+         sym = block.function
+         return "{{{} at {}:{}}}".format(sym.print_name, sym.symtab.filename, sym.line)
+ 
+ class StdStacktracePrinter(printer_base):
+     """Print a std::stacktrace."""
+ 
+     def __init__(self, typename, val):
+         self._val = val
+         self._typename = typename
+         self._size = self._val['_M_impl']['_M_size']
+ 
+     def to_string(self):
+         return '%s of length %d' % (self._typename, self._size)
+ 
+     def children(self):
+         return StdSpanPrinter._iterator(self._val['_M_impl']['_M_frames'], self._size)
+ 
+     def display_hint(self):
+         return 'array'
+ 
  # A "regular expression" printer which conforms to the
  # "SubPrettyPrinter" protocol from gdb.printing.
  class RxPrinter(object):
*************** def build_libstdcxx_dictionary():
*** 2973,2978 ****
--- 3008,3019 ----
      # libstdcxx_printer.add_version('std::chrono::(anonymous namespace)', 'Rule',
      #                              StdChronoTimeZoneRulePrinter)
  
+     # C++23 components
+     libstdcxx_printer.add_version('std::', 'stacktrace_entry',
+                                   StdStacktraceEntryPrinter)
+     libstdcxx_printer.add_version('std::', 'basic_stacktrace',
+                                   StdStacktracePrinter)
+ 
      # C++26 components
      libstdcxx_printer.add_version('std::', 'text_encoding',
                                    StdTextEncodingPrinter)
diff -Nrcpad gcc-16-20251012/libstdc++-v3/src/c++11/thread.cc gcc-16-20251019/libstdc++-v3/src/c++11/thread.cc
*** gcc-16-20251012/libstdc++-v3/src/c++11/thread.cc	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/src/c++11/thread.cc	Sun Oct 19 22:32:46 2025
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 231,240 ****
--- 231,260 ----
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  namespace this_thread
  {
+ namespace
+ {
+   // returns min(s, Dur::max())
+   template<typename Dur>
+     inline chrono::seconds
+     limit(chrono::seconds s)
+     {
+       static_assert(ratio_equal<typename Dur::period, ratio<1>>::value,
+ 		    "period must be seconds to avoid potential overflow");
+ 
+       if (s > Dur::max()) [[__unlikely__]]
+ 	s = chrono::duration_cast<chrono::seconds>(Dur::max());
+       return s;
+     }
+ }
+ 
    void
    __sleep_for(chrono::seconds __s, chrono::nanoseconds __ns)
    {
  #ifdef _GLIBCXX_USE_NANOSLEEP
+ #pragma GCC diagnostic ignored "-Wc++17-extensions"
+     if constexpr (is_integral<time_t>::value) // POSIX.1-2001 allows floating
+       __s = limit<chrono::duration<time_t>>(__s);
+ 
      struct ::timespec __ts =
        {
  	static_cast<std::time_t>(__s.count()),
*************** namespace this_thread
*** 246,251 ****
--- 266,273 ----
      const auto target = chrono::steady_clock::now() + __s + __ns;
      while (true)
        {
+ 	__s = limit<chrono::duration<unsigned>>(__s);
+ 
  	unsigned secs = __s.count();
  	if (__ns.count() > 0)
  	  {
*************** namespace this_thread
*** 271,282 ****
  	  break;
  	__s = chrono::duration_cast<chrono::seconds>(target - now);
  	__ns = chrono::duration_cast<chrono::nanoseconds>(target - (now + __s));
!     }
  #elif defined(_GLIBCXX_USE_WIN32_SLEEP)
!     unsigned long ms = __ns.count() / 1000000;
!     if (__ns.count() > 0 && ms == 0)
!       ms = 1;
!     ::Sleep(chrono::milliseconds(__s).count() + ms);
  #endif
    }
  }
--- 293,320 ----
  	  break;
  	__s = chrono::duration_cast<chrono::seconds>(target - now);
  	__ns = chrono::duration_cast<chrono::nanoseconds>(target - (now + __s));
!       }
  #elif defined(_GLIBCXX_USE_WIN32_SLEEP)
! 
!     // Can't use limit<chrono::milliseconds>(__s) here because it would
!     // multiply __s by 1000 which could overflow.
!     // Limit to milliseconds::max() and truncate to seconds:
!     chrono::milliseconds ms = chrono::milliseconds::max();
!     if (__s < chrono::duration_cast<chrono::seconds>(ms))
!       {
! 	ms = __s;
! 	ms += chrono::__detail::ceil<chrono::milliseconds>(__ns);
!       }
! 
!     // Use Sleep(DWORD millis) where DWORD is uint32_t.
!     constexpr chrono::milliseconds max_sleep(INFINITE - 1u);
!     while (ms > max_sleep)
!       {
! 	::Sleep(max_sleep.count());
! 	ms -= max_sleep;
!       }
! 
!     ::Sleep(ms.count());
  #endif
    }
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/src/c++17/fs_path.cc gcc-16-20251019/libstdc++-v3/src/c++17/fs_path.cc
*** gcc-16-20251012/libstdc++-v3/src/c++17/fs_path.cc	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/src/c++17/fs_path.cc	Sun Oct 19 22:32:46 2025
***************
*** 34,39 ****
--- 34,40 ----
  #include <filesystem>
  #include <algorithm>
  #include <array>
+ #include <new>
  #include <bits/stl_uninitialized.h>
  #include <ext/numeric_traits.h> // __gnu_cxx::__int_traits
  
*************** struct path::_List::_Impl
*** 207,212 ****
--- 208,217 ----
  
    _Impl(int cap) : _M_size(0), _M_capacity(cap) { }
  
+   ~_Impl() { clear(); }
+ 
+   // Align the first member like the value_type so that we can store one or
+   // more objects of that type immediately after the memory occupied by *this.
    alignas(value_type) int _M_size;
    int _M_capacity;
  
*************** struct path::_List::_Impl
*** 246,274 ****
    unique_ptr<_Impl, _Impl_deleter> copy() const
    {
      const auto n = size();
!     void* p = ::operator new(sizeof(_Impl) + n * sizeof(value_type));
!     unique_ptr<_Impl, _Impl_deleter> newptr(::new (p) _Impl{n});
      std::uninitialized_copy_n(begin(), n, newptr->begin());
      newptr->_M_size = n;
      return newptr;
    }
  
    // Clear the lowest two bits from the pointer (i.e. remove the _Type value)
    static _Impl* notype(_Impl* p)
    {
      constexpr uintptr_t mask = ~(uintptr_t)0x3;
      return reinterpret_cast<_Impl*>(reinterpret_cast<uintptr_t>(p) & mask);
    }
  };
  
! void path::_List::_Impl_deleter::operator()(_Impl* p) const noexcept
  {
    p = _Impl::notype(p);
    if (p)
      {
!       __glibcxx_assert(p->_M_size <= p->_M_capacity);
!       p->clear();
!       ::operator delete(p, sizeof(*p) + p->_M_capacity * sizeof(value_type));
      }
  }
  
--- 251,317 ----
    unique_ptr<_Impl, _Impl_deleter> copy() const
    {
      const auto n = size();
!     // *this already has n elements so don't need to check if n overflows:
!     auto newptr = create_unchecked(n);
      std::uninitialized_copy_n(begin(), n, newptr->begin());
      newptr->_M_size = n;
      return newptr;
    }
  
+   // We use the two least significant bits to store a _Type value so
+   // require memory aligned to at least 4 bytes:
+   static_assert(__STDCPP_DEFAULT_NEW_ALIGNMENT__ >= 4);
+   // Require memory suitably aligned for an _Impl and its value types:
+   static_assert(__STDCPP_DEFAULT_NEW_ALIGNMENT__ >= alignof(value_type));
+ 
    // Clear the lowest two bits from the pointer (i.e. remove the _Type value)
    static _Impl* notype(_Impl* p)
    {
      constexpr uintptr_t mask = ~(uintptr_t)0x3;
      return reinterpret_cast<_Impl*>(reinterpret_cast<uintptr_t>(p) & mask);
    }
+ 
+   // Create a new _Impl with capacity for n components.
+   static unique_ptr<_Impl, _Impl_deleter>
+   create(int n)
+   {
+     using __gnu_cxx::__int_traits;
+     // Nobody should need paths with this many components.
+     if (n >= __int_traits<int>::__max / 4)
+       std::__throw_bad_alloc();
+ 
+     if constexpr (__int_traits<int>::__max >= __int_traits<size_t>::__max)
+       {
+ 	// Check that the calculation in create_unchecked(n) won't overflow.
+ 	size_t bytes;
+ 	if (__builtin_mul_overflow(n, sizeof(value_type), &bytes)
+ 	      || __builtin_add_overflow(sizeof(_Impl), bytes, &bytes))
+ 	  std::__throw_bad_alloc();
+       }
+     // Otherwise, it can't overflow, even for 20-bit size_t on msp430.
+ 
+     return create_unchecked(n);
+   }
+ 
+   // pre: no overflow in Si + n * Sv
+   static unique_ptr<_Impl, _Impl_deleter>
+   create_unchecked(int n)
+   {
+     void* p = ::operator new(sizeof(_Impl) + n * sizeof(value_type));
+     return std::unique_ptr<_Impl, _Impl_deleter>(::new(p) _Impl{n});
+   }
  };
  
! // Destroy and deallocate an _Impl.
! void
! path::_List::_Impl_deleter::operator()(_Impl* p) const noexcept
  {
    p = _Impl::notype(p);
    if (p)
      {
!       const auto n = p->_M_capacity;
!       p->~_Impl();
!       ::operator delete(p, sizeof(_Impl) + n * sizeof(_Impl::value_type));
      }
  }
  
*************** path::_List::reserve(int newcap, bool ex
*** 455,478 ****
  	    newcap = nextcap;
  	}
  
!       using __gnu_cxx::__int_traits;
!       // Nobody should need paths with this many components.
!       if (newcap >= __int_traits<int>::__max / 4)
! 	std::__throw_bad_alloc();
! 
!       size_t bytes;
!       if constexpr (__int_traits<int>::__max >= __int_traits<size_t>::__max)
! 	{
! 	  size_t components;
! 	  if (__builtin_mul_overflow(newcap, sizeof(value_type), &components)
! 		|| __builtin_add_overflow(sizeof(_Impl), components, &bytes))
! 	    std::__throw_bad_alloc();
! 	}
!       else // This won't overflow, even for 20-bit size_t on msp430.
! 	bytes = sizeof(_Impl) + newcap * sizeof(value_type);
! 
!       void* p = ::operator new(bytes);
!       std::unique_ptr<_Impl, _Impl_deleter> newptr(::new(p) _Impl{newcap});
        const int cursize = curptr ? curptr->size() : 0;
        if (cursize)
  	{
--- 498,504 ----
  	    newcap = nextcap;
  	}
  
!       auto newptr = _Impl::create(newcap);
        const int cursize = curptr ? curptr->size() : 0;
        if (cursize)
  	{
diff -Nrcpad gcc-16-20251012/libstdc++-v3/src/c++20/atomic.cc gcc-16-20251019/libstdc++-v3/src/c++20/atomic.cc
*** gcc-16-20251012/libstdc++-v3/src/c++20/atomic.cc	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/src/c++20/atomic.cc	Sun Oct 19 22:32:46 2025
*************** __platform_wait_until(const __platform_w
*** 350,363 ****
  		      __platform_wait_t __old,
  		      const __wait_clock_t::time_point& __atime) noexcept
  {
!   auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
!   auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
!   struct timespec __rt =
!   {
!     static_cast<std::time_t>(__s.time_since_epoch().count()),
!     static_cast<long>(__ns.count())
!   };
  
    if (syscall (SYS_futex, __addr,
  	       static_cast<int>(__futex_wait_flags::__wait_bitset_private),
--- 350,356 ----
  		      __platform_wait_t __old,
  		      const __wait_clock_t::time_point& __atime) noexcept
  {
!   struct timespec __rt = chrono::__to_timeout_timespec(__atime);
  
    if (syscall (SYS_futex, __addr,
  	       static_cast<int>(__futex_wait_flags::__wait_bitset_private),
*************** bool
*** 378,391 ****
  __cond_wait_until(__condvar& __cv, mutex& __mx,
  		  const __wait_clock_t::time_point& __atime)
  {
!   auto __s = chrono::time_point_cast<chrono::seconds>(__atime);
!   auto __ns = chrono::duration_cast<chrono::nanoseconds>(__atime - __s);
! 
!   __gthread_time_t __ts =
!   {
!     static_cast<std::time_t>(__s.time_since_epoch().count()),
!     static_cast<long>(__ns.count())
!   };
  
  #ifdef _GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT
    if constexpr (is_same_v<chrono::steady_clock, __wait_clock_t>)
--- 371,377 ----
  __cond_wait_until(__condvar& __cv, mutex& __mx,
  		  const __wait_clock_t::time_point& __atime)
  {
!   __gthread_time_t __ts = chrono::__to_timeout_gthread_time_t(__atime);
  
  #ifdef _GLIBCXX_USE_PTHREAD_COND_CLOCKWAIT
    if constexpr (is_same_v<chrono::steady_clock, __wait_clock_t>)
diff -Nrcpad gcc-16-20251012/libstdc++-v3/src/c++23/std.cc.in gcc-16-20251019/libstdc++-v3/src/c++23/std.cc.in
*** gcc-16-20251012/libstdc++-v3/src/c++23/std.cc.in	Sun Oct 12 22:33:50 2025
--- gcc-16-20251019/libstdc++-v3/src/c++23/std.cc.in	Sun Oct 19 22:32:46 2025
*************** export namespace std
*** 3337,3342 ****
--- 3337,3345 ----
  #if __cpp_lib_unreachable
    using std::unreachable;
  #endif
+ #if __cpp_lib_observable_checkpoint
+   using std::observable_checkpoint;
+ #endif
  }
  
  // <valarray>
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/pr118757.cc gcc-16-20251019/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/pr118757.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/pr118757.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libstdc++-v3/testsuite/20_util/shared_ptr/atomic/pr118757.cc	Sun Oct 19 22:32:47 2025
***************
*** 0 ****
--- 1,29 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-gthreads "" }
+ // { dg-require-effective-target hosted }
+ 
+ #include <memory>
+ #include <chrono>
+ #include <thread>
+ #include <barrier>
+ 
+ std::shared_ptr<int> q = std::make_shared<int>(42);
+ std::atomic<std::shared_ptr<int>> p = q;
+ 
+ std::barrier bar(2);
+ 
+ void signaller()
+ {
+   std::this_thread::sleep_for(std::chrono::seconds(1));
+   p.store(std::shared_ptr<int>(q, nullptr));
+   p.notify_one();
+   bar.arrive_and_wait();
+ }
+ 
+ int main(int, char**)
+ {
+   std::thread thr(signaller);
+   p.wait(q);
+   bar.arrive_and_wait();
+   thr.join();
+ }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/20_util/weak_ptr/pr118757.cc gcc-16-20251019/libstdc++-v3/testsuite/20_util/weak_ptr/pr118757.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/20_util/weak_ptr/pr118757.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libstdc++-v3/testsuite/20_util/weak_ptr/pr118757.cc	Sun Oct 19 22:32:47 2025
***************
*** 0 ****
--- 1,30 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-gthreads "" }
+ // { dg-require-effective-target hosted }
+ 
+ #include <memory>
+ #include <chrono>
+ #include <thread>
+ #include <barrier>
+ 
+ std::shared_ptr<int> s = std::make_shared<int>(42);
+ std::weak_ptr<int> q = s;
+ std::atomic<std::weak_ptr<int>> p = q;
+ 
+ std::barrier bar(2);
+ 
+ void signaller()
+ {
+   std::this_thread::sleep_for(std::chrono::seconds(1));
+   p.store(std::shared_ptr<int>(s, nullptr));
+   p.notify_one();
+   bar.arrive_and_wait();
+ }
+ 
+ int main(int, char**)
+ {
+   std::thread thr(signaller);
+   p.wait(q);
+   bar.arrive_and_wait();
+   thr.join();
+ }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc gcc-16-20251019/libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libstdc++-v3/testsuite/29_atomics/atomic_ref/address.cc	Sun Oct 19 22:32:52 2025
***************
*** 0 ****
--- 1,39 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-atomic-cmpxchg-word "" }
+ // { dg-add-options libatomic }
+ 
+ #include <atomic>
+ #include <memory>
+ #include <type_traits>
+ 
+ #include <testsuite_hooks.h>
+ 
+ template <typename T>
+ void testAtomicRefAddress()
+ {
+   T x(T(42));
+   const std::atomic_ref<T> a(x);
+ 
+   static_assert( noexcept(a.address()) );
+   static_assert( std::is_same_v<decltype(a.address()), T*> );
+   VERIFY( std::addressof(x) == a.address() );
+ }
+ 
+ template <typename T>
+ void testAtomicRefAddressForCV()
+ {
+   testAtomicRefAddress<T>();
+   testAtomicRefAddress<const T>();
+   testAtomicRefAddress<volatile T>();
+   testAtomicRefAddress<const volatile T>();
+ }
+ 
+ int
+ main ()
+ {
+   struct X { int c; };
+   testAtomicRefAddressForCV<X>();
+   testAtomicRefAddressForCV<int>();
+   testAtomicRefAddressForCV<float>();
+   testAtomicRefAddressForCV<char*>();
+ }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/condition_variable/members/116586.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/condition_variable/members/116586.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/condition_variable/members/116586.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/condition_variable/members/116586.cc	Sun Oct 19 22:32:52 2025
***************
*** 0 ****
--- 1,60 ----
+ // { dg-do run { target c++11 } }
+ 
+ #include <condition_variable>
+ #include <chrono>
+ #include <mutex>
+ #include <initializer_list>
+ #include <testsuite_hooks.h>
+ 
+ namespace chrono = std::chrono;
+ 
+ // thread.timedmutex.requirements.general:
+ //   If abs_time has already passed, the function attempts to obtain
+ //   ownership without blocking (as if by calling try_lock()).
+ 
+ template <typename Clock>
+ void
+ test_absolute(chrono::nanoseconds offset)
+ {
+   std::mutex mtx;
+   std::condition_variable cv;
+   chrono::time_point<Clock> tp(offset);
+   std::unique_lock<std::mutex> lock(mtx);
+   // Doesn't cope with spurious wakeup
+   VERIFY(cv.wait_until(lock, tp) == std::cv_status::timeout);
+ }
+ 
+ // The type of clock used for the actual wait depends on whether
+ // _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK is defined. We might as well just test
+ // both steady_clock and system_clock.
+ template <typename Clock>
+ void
+ test_relative(chrono::nanoseconds offset)
+ {
+   std::mutex mtx;
+   std::condition_variable cv;
+   const auto d = -Clock::now().time_since_epoch() + offset;
+   std::unique_lock<std::mutex> lock(mtx);
+   // Doesn't cope with spurious wakeup
+   VERIFY(cv.wait_for(lock, d) == std::cv_status::timeout);
+ }
+ 
+ int main()
+ {
+   // It's not really possible to arrange for the relative calls to have
+   // tv_nsec == 0 due to time advancing.
+   for (const chrono::nanoseconds offset : {
+       // tv_sec == 0, tv_nsec == 0
+       chrono::nanoseconds{0},
+       // tv_sec == 0, tv_nsec < 0
+       chrono::duration_cast<chrono::nanoseconds>(chrono::milliseconds{-10}),
+       // tv_sec < 0
+       chrono::duration_cast<chrono::nanoseconds>(chrono::seconds{-10})
+     }) {
+     test_absolute<chrono::system_clock>(offset);
+     test_relative<chrono::system_clock>(offset);
+ 
+     test_absolute<chrono::steady_clock>(offset);
+     test_relative<chrono::steady_clock>(offset);
+   }
+ }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/future/members/116586.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/future/members/116586.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/future/members/116586.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/future/members/116586.cc	Sun Oct 19 22:32:52 2025
***************
*** 0 ****
--- 1,55 ----
+ // { dg-do run { target c++11 } }
+ 
+ #include <future>
+ #include <chrono>
+ #include <initializer_list>
+ #include <testsuite_hooks.h>
+ 
+ namespace chrono = std::chrono;
+ 
+ // thread.timedmutex.requirements.general:
+ //   If abs_time has already passed, the function attempts to obtain
+ //   ownership without blocking (as if by calling try_lock()).
+ 
+ template <typename Clock>
+ void
+ test_absolute(chrono::nanoseconds offset)
+ {
+   std::promise<int> p;
+   std::future<int> f = p.get_future();
+   const chrono::time_point<Clock> tp(offset);
+   VERIFY(f.wait_until(tp) == std::future_status::timeout);
+ }
+ 
+ // The type of clock used for the actual wait depends on whether
+ // _GLIBCXX_HAVE_LINUX_FUTEX is defined.  We might as well just test both
+ // steady_clock and system_clock.
+ template <typename Clock>
+ void
+ test_relative(chrono::nanoseconds offset)
+ {
+   std::promise<int> p;
+   std::future<int> f = p.get_future();
+   const auto d = -Clock::now().time_since_epoch() + offset;
+   VERIFY(f.wait_for(d) == std::future_status::timeout);
+ }
+ 
+ int main()
+ {
+   // It's not really possible to arrange for the relative calls to have tv_nsec
+   // == 0 due to time advancing.
+   for (const chrono::nanoseconds offset : {
+       // tv_sec == 0, tv_nsec == 0
+       chrono::nanoseconds{0},
+       // tv_sec == 0, tv_nsec < 0
+       chrono::duration_cast<chrono::nanoseconds>(chrono::milliseconds{-10}),
+       // tv_sec < 0
+       chrono::duration_cast<chrono::nanoseconds>(chrono::seconds{-10})
+     }) {
+     test_absolute<chrono::system_clock>(offset);
+     test_relative<chrono::system_clock>(offset);
+ 
+     test_absolute<chrono::steady_clock>(offset);
+     test_relative<chrono::steady_clock>(offset);
+   }
+ }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/116586.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/116586.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/116586.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/116586.cc	Sun Oct 19 22:32:52 2025
***************
*** 0 ****
--- 1,72 ----
+ // { dg-do run { target c++11 } }
+ 
+ #include <mutex>
+ #include <chrono>
+ #include <future>
+ #include <initializer_list>
+ #include <testsuite_hooks.h>
+ 
+ namespace chrono = std::chrono;
+ 
+ // thread.timedmutex.requirements.general:
+ //   If abs_time has already passed, the function attempts to obtain
+ //   ownership without blocking (as if by calling try_lock()).
+ 
+ template <typename Clock>
+ void
+ test_absolute(chrono::nanoseconds offset)
+ {
+   std::recursive_timed_mutex mtx;
+   chrono::time_point<Clock> tp(offset);
+   VERIFY(mtx.try_lock_until(tp));
+ 
+   {
+     // To test failing to lock a recursive mutex we need to try to lock on a
+     // different thread.
+     auto t = std::async(std::launch::async, [&mtx, tp]() {
+ 	VERIFY(!mtx.try_lock_until(tp));
+       });
+   }
+ }
+ 
+ // The type of clock used for the actual wait depends on whether
+ // _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK is defined. We might as well just test
+ // both steady_clock and system_clock.
+ template <typename Clock>
+ void
+ test_relative(chrono::nanoseconds offset)
+ {
+   std::recursive_timed_mutex mtx;
+   const auto d = -Clock::now().time_since_epoch() + offset;
+   VERIFY(mtx.try_lock_for(d));
+ 
+   {
+     // To test failing to lock a recursive mutex we need to try to lock on a
+     // different thread.
+     auto t = std::async(std::launch::async, [&mtx, d]() {
+ 	VERIFY(!mtx.try_lock_for(d));
+       });
+   }
+ }
+ 
+ int main()
+ {
+   // Try once with an offset that ought to result in tv_sec == 0, tv_nsec < 0
+   // and one with an offset that ought to result in tv_sec < 0, tv_nsec == 0
+   // for the absolute calls at least.  It's not really possible to arrange for
+   // the relative calls to have tv_nsec == 0 due to time advancing.
+   for (const chrono::nanoseconds offset : {
+       // tv_sec == 0, tv_nsec == 0
+       chrono::nanoseconds{0},
+       // tv_sec == 0, tv_nsec < 0
+       chrono::duration_cast<chrono::nanoseconds>(chrono::milliseconds{-10}),
+       // tv_sec < 0
+       chrono::duration_cast<chrono::nanoseconds>(chrono::seconds{-10})
+     }) {
+     test_absolute<chrono::system_clock>(offset);
+     test_relative<chrono::system_clock>(offset);
+ 
+     test_absolute<chrono::steady_clock>(offset);
+     test_relative<chrono::steady_clock>(offset);
+   }
+ }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_for.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_for.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_for.cc	Sun Oct 12 22:33:55 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_for.cc	Sun Oct 19 22:32:52 2025
***************
*** 24,29 ****
--- 24,30 ----
  #include <chrono>
  #include <thread>
  #include <atomic>
+ #include <initializer_list>
  #include <testsuite_hooks.h>
  
  void test01()
*************** test03()
*** 90,98 ****
--- 91,120 ----
    s.try_acquire_for(timeout);
  }
  
+ // Prove semaphore doesn't suffer from PR116586
+ template <typename Clock>
+ void
+ test_relative(std::chrono::nanoseconds offset)
+ {
+   std::binary_semaphore sem(1);
+   VERIFY(sem.try_acquire_for(offset));
+   VERIFY(!sem.try_acquire_for(offset));
+ }
+ 
  int main()
  {
    test01();
    test02();
    test03();
+   using namespace std::chrono;
+   for (const nanoseconds offset : {
+       nanoseconds{0},
+       nanoseconds{-10ms},
+       nanoseconds{-10s}
+     }) {
+     test_relative<std::chrono::system_clock>(offset);
+     test_relative<std::chrono::system_clock>(offset - std::chrono::system_clock::now().time_since_epoch());
+     test_relative<std::chrono::steady_clock>(offset);
+     test_relative<std::chrono::steady_clock>(offset - std::chrono::steady_clock::now().time_since_epoch());
+   }
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc	Sun Oct 12 22:33:55 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc	Sun Oct 19 22:32:52 2025
***************
*** 24,29 ****
--- 24,30 ----
  #include <chrono>
  #include <thread>
  #include <atomic>
+ #include <initializer_list>
  #include <testsuite_hooks.h>
  
  void test01()
*************** void test02()
*** 87,94 ****
--- 88,118 ----
    b.wait(1);
  }
  
+ // Prove semaphore doesn't suffer from PR116586
+ template <typename Clock>
+ void
+ test_absolute(std::chrono::nanoseconds offset)
+ {
+   std::binary_semaphore sem(1);
+   std::chrono::time_point<Clock> tp(offset);
+   VERIFY(sem.try_acquire_until(tp));
+   VERIFY(!sem.try_acquire_until(tp));
+ }
+ 
  int main()
  {
    test01();
    test02();
+   using namespace std::chrono;
+   for (const nanoseconds offset : {
+       // tv_sec == 0, tv_nsec == 0
+       nanoseconds{0},
+       // tv_sec == 0, tv_nsec < 0
+       nanoseconds{-10ms},
+       // tv_sec < 0
+       nanoseconds{-10s}
+     }) {
+     test_absolute<std::chrono::system_clock>(offset);
+     test_absolute<std::chrono::steady_clock>(offset);
+   }
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/116586.cc	Sun Oct 19 22:32:52 2025
***************
*** 0 ****
--- 1,97 ----
+ // { dg-do run { target c++14 } }
+ 
+ #include <shared_mutex>
+ #include <chrono>
+ #include <future>
+ #include <initializer_list>
+ #include <testsuite_hooks.h>
+ 
+ namespace chrono = std::chrono;
+ 
+ // thread.timedmutex.requirements.general:
+ //   If abs_time has already passed, the function attempts to obtain
+ //   ownership without blocking (as if by calling try_lock()).
+ 
+ template <typename Clock>
+ void
+ test_exclusive_absolute(chrono::nanoseconds offset)
+ {
+   std::shared_timed_mutex stm;
+   chrono::time_point<Clock> tp(offset);
+   VERIFY(stm.try_lock_until(tp));
+   VERIFY(!stm.try_lock_until(tp));
+ }
+ 
+ template <typename Clock>
+ void
+ test_shared_absolute(chrono::nanoseconds offset)
+ {
+   std::shared_timed_mutex stm;
+   chrono::time_point<Clock> tp(offset);
+   VERIFY(stm.try_lock_shared_until(tp));
+   stm.unlock_shared();
+ 
+   VERIFY(stm.try_lock_for(chrono::seconds{10}));
+ 
+   {
+     // NPTL will give us EDEADLK if pthread_rwlock_timedrdlock() is called on
+     // the same thread that already holds the exclusive (write) lock, so let's
+     // arrange for a different thread to try to acquire the shared lock.
+     auto t = std::async(std::launch::async, [&stm, tp]() {
+ 	VERIFY(!stm.try_lock_shared_until(tp));
+       });
+   }
+ }
+ 
+ // The type of clock used for the actual wait depends on whether
+ // _GLIBCXX_USE_PTHREAD_RWLOCK_CLOCKLOCK is defined. We might as well just test
+ // both steady_clock and system_clock.
+ template <typename Clock>
+ void
+ test_exclusive_relative(chrono::nanoseconds offset)
+ {
+   std::shared_timed_mutex stm;
+   const auto d = -Clock::now().time_since_epoch() + offset;
+   VERIFY(stm.try_lock_for(d));
+   VERIFY(!stm.try_lock_for(d));
+ }
+ 
+ template <typename Clock>
+ void
+ test_shared_relative(chrono::nanoseconds offset)
+ {
+   std::shared_timed_mutex stm;
+   const auto d = -Clock::now().time_since_epoch() + offset;
+   VERIFY(stm.try_lock_shared_for(d));
+   stm.unlock_shared();
+   // Should complete immediately
+   VERIFY(stm.try_lock_for(chrono::seconds{10}));
+   VERIFY(!stm.try_lock_shared_for(d));
+ }
+ 
+ int main()
+ {
+   // Try once with an offset that ought to result in tv_sec == 0, tv_nsec < 0
+   // and one with an offset that ought to result in tv_sec < 0, tv_nsec == 0
+   // for the absolute calls at least.  It's not really possible to arrange for
+   // the relative calls to have tv_nsec == 0 due to time advancing.
+   using namespace std::chrono_literals;
+   for (const chrono::nanoseconds offset : {
+       // tv_sec == 0, tv_nsec == 0
+       chrono::nanoseconds{0},
+       // tv_sec == 0, tv_nsec < 0
+       chrono::nanoseconds{-10ms},
+       // tv_sec < 0
+       chrono::nanoseconds{-10s}
+     }) {
+     test_exclusive_absolute<chrono::system_clock>(offset);
+     test_shared_absolute<chrono::system_clock>(offset);
+     test_exclusive_relative<chrono::system_clock>(offset);
+     test_shared_relative<chrono::system_clock>(offset);
+ 
+     test_exclusive_absolute<chrono::steady_clock>(offset);
+     test_shared_absolute<chrono::steady_clock>(offset);
+     test_exclusive_relative<chrono::steady_clock>(offset);
+     test_shared_relative<chrono::steady_clock>(offset);
+   }
+ }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/this_thread/113327.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/this_thread/113327.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/this_thread/113327.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/this_thread/113327.cc	Sun Oct 19 22:32:52 2025
***************
*** 0 ****
--- 1,29 ----
+ // { dg-do run { target c++11 } }
+ // { dg-additional-options "-pthread" { target pthread } }
+ // { dg-require-gthreads "" }
+ 
+ // PR libstdc++/113327
+ // std::sleep_for(std::chrono::hours::max()) returns immediately
+ 
+ #include <thread>
+ #include <chrono>
+ #include <cstdlib>
+ #include <csignal>
+ 
+ int main()
+ {
+   std::thread sleepy([] {
+     // Rather than overflowing to a negative value, the timeout should be
+     // truncated to seconds::max() and so sleep for 292 billion years.
+     std::this_thread::sleep_for(std::chrono::minutes::max());
+     // This should not happen:
+     throw 1;
+   });
+   // Give the new thread a chance to start sleeping:
+   std::this_thread::yield();
+   std::this_thread::sleep_for(std::chrono::seconds(2));
+   // If we get here without the other thread throwing an exception
+   // then it should be sleeping peacefully, so the test passed.
+   // pthread_kill(sleepy.native_handle(), SIGINT);
+   std::_Exit(0);
+ }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/this_thread/sleep_for.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/this_thread/sleep_for.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/this_thread/sleep_for.cc	Sun Oct 12 22:33:55 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/this_thread/sleep_for.cc	Sun Oct 19 22:32:52 2025
*************** test01()
*** 37,43 ****
--- 37,56 ----
    VERIFY( (chr::system_clock::now() - begin) >= ms );
  }
  
+ void
+ test_negative()
+ {
+   chr::system_clock::time_point begin = chr::system_clock::now();
+ 
+   std::this_thread::sleep_for(-chr::hours(8));
+ 
+   // That should have completed immediately, but be generous because we don't
+   // want spurious failures on busy machines.
+   VERIFY( (chr::system_clock::now() - begin) < chr::seconds(10) );
+ }
+ 
  int main()
  {
    test01();
+   test_negative();
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/this_thread/sleep_until.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/this_thread/sleep_until.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/this_thread/sleep_until.cc	Sun Oct 12 22:33:55 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/this_thread/sleep_until.cc	Sun Oct 19 22:32:52 2025
***************
*** 26,43 ****
  
  namespace chr = std::chrono;
  
  void
  test01()
  {
!   chr::system_clock::time_point begin = chr::system_clock::now();
    chr::microseconds ms(500);
  
!   std::this_thread::sleep_until(chr::system_clock::now() + ms);
  
!   VERIFY( (chr::system_clock::now() - begin) >= ms );
  }
  
  int main()
  {
!   test01();
  }
--- 26,61 ----
  
  namespace chr = std::chrono;
  
+ template <typename Clock>
  void
  test01()
  {
!   typename Clock::time_point begin = Clock::now();
    chr::microseconds ms(500);
  
!   std::this_thread::sleep_until(Clock::now() + ms);
  
!   VERIFY( (Clock::now() - begin) >= ms );
! }
! 
! template <typename Clock>
! void
! test_negative()
! {
!   typename Clock::time_point begin = Clock::now();
! 
!   typename Clock::time_point tp(-chr::hours(8));
!   std::this_thread::sleep_until(tp);
! 
!   // That should have completed immediately, but be generous because we don't
!   // want spurious failures on busy machines.
!   VERIFY( (Clock::now() - begin) < chr::seconds(10) );
  }
  
  int main()
  {
!   test01<chr::steady_clock>();
!   test01<chr::system_clock>();
!   test_negative<chr::steady_clock>();
!   test_negative<chr::system_clock>();
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/116586.cc gcc-16-20251019/libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/116586.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/116586.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20251019/libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/116586.cc	Sun Oct 19 22:32:52 2025
***************
*** 0 ****
--- 1,57 ----
+ // { dg-do run { target c++11 } }
+ 
+ #include <chrono>
+ #include <mutex>
+ #include <initializer_list>
+ #include <testsuite_hooks.h>
+ 
+ namespace chrono = std::chrono;
+ 
+ // thread.timedmutex.requirements.general:
+ //   If abs_time has already passed, the function attempts to obtain
+ //   ownership without blocking (as if by calling try_lock()).
+ 
+ template <typename Clock>
+ void
+ test_absolute(chrono::nanoseconds offset)
+ {
+   std::timed_mutex mtx;
+   chrono::time_point<Clock> tp(offset);
+   VERIFY(mtx.try_lock_until(tp));
+   VERIFY(!mtx.try_lock_until(tp));
+ }
+ 
+ // The type of clock used for the actual wait depends on whether
+ // _GLIBCXX_USE_PTHREAD_MUTEX_CLOCKLOCK is defined. We might as well just test
+ // both steady_clock and system_clock.
+ template <typename Clock>
+ void
+ test_relative(chrono::nanoseconds offset)
+ {
+   std::timed_mutex mtx;
+   const auto d = -Clock::now().time_since_epoch() + offset;
+   VERIFY(mtx.try_lock_for(d));
+   VERIFY(!mtx.try_lock_for(d));
+ }
+ 
+ int main()
+ {
+   // Try once with an offset that ought to result in tv_sec == 0, tv_nsec < 0
+   // and one with an offset that ought to result in tv_sec < 0, tv_nsec == 0
+   // for the absolute calls at least.  It's not really possible to arrange for
+   // the relative calls to have tv_nsec == 0 due to time advancing.
+   for (const chrono::nanoseconds offset : {
+       // tv_sec == 0, tv_nsec == 0
+       chrono::nanoseconds{0},
+       // tv_sec == 0, tv_nsec < 0
+       chrono::duration_cast<chrono::nanoseconds>(chrono::milliseconds{-10}),
+       // tv_sec < 0
+       chrono::duration_cast<chrono::nanoseconds>(chrono::seconds{-10})
+     }) {
+     test_absolute<chrono::system_clock>(offset);
+     test_relative<chrono::system_clock>(offset);
+ 
+     test_absolute<chrono::steady_clock>(offset);
+     test_relative<chrono::steady_clock>(offset);
+   }
+ }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/ext/unicode/view.cc gcc-16-20251019/libstdc++-v3/testsuite/ext/unicode/view.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/ext/unicode/view.cc	Sun Oct 12 22:33:56 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/ext/unicode/view.cc	Sun Oct 19 22:32:53 2025
*************** test_illformed_utf16()
*** 94,99 ****
--- 94,104 ----
    compare(uc::_Utf16_view(s4), u"\uFFFD\uFFFD"sv);
    std::array s5{ s[1], s[0], s[1] };
    compare(uc::_Utf16_view(s5), u"\uFFFD\N{CLOWN FACE}"sv);
+ 
+   std::array<char16_t, 2> s6{ 0xDC00, 0xDC01 };
+   compare(uc::_Utf16_view(s6), u"\uFFFD\uFFFD"sv);
+   std::array<char16_t, 2> s7{ 0xD7FF, 0xDC00 };
+   compare(uc::_Utf16_view(s7), u"\uD7FF\uFFFD"sv);
  }
  
  constexpr void
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/std/format/ranges/string.cc gcc-16-20251019/libstdc++-v3/testsuite/std/format/ranges/string.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/std/format/ranges/string.cc	Sun Oct 12 22:33:56 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/std/format/ranges/string.cc	Sun Oct 19 22:32:54 2025
*************** void test_padding()
*** 279,284 ****
--- 279,371 ----
    VERIFY( strip_prefix(resv, 46, '*') );
    VERIFY( strip_quotes(resv) );
    VERIFY( resv == in );
+ 
+   // width is 5, size is 15
+   in = "\u2160\u2161\u2162\u2163\u2164";
+   in += in; // width is 10, size is 30
+   in += in; // width is 20, size is 60
+   in += in; // width is 40, size is 120
+   in += in; // width is 80, size is 240
+   in += in; // width is 160, size is 480
+ 
+   lc.assign_range(in);
+ 
+   resv = res = std::format("{:s}", lc);
+   VERIFY( resv == in );
+ 
+   resv = res = std::format("{:*>10s}", lc);
+   VERIFY( resv == in );
+ 
+   resv = res = std::format("{:*>200s}", lc);
+   VERIFY( strip_prefix(resv, 40, '*') );
+   VERIFY( resv == in );
+ 
+   resv = res = std::format("{:?s}", lc);
+   VERIFY( strip_quotes(resv) );
+   VERIFY( resv == in );
+ 
+   resv = res = std::format("{:*>10?s}", lc);
+   VERIFY( strip_quotes(resv) );
+   VERIFY( resv == in );
+ 
+   resv = res = std::format("{:*>200?s}", lc);
+   VERIFY( strip_prefix(resv, 38, '*') );
+   VERIFY( strip_quotes(resv) );
+   VERIFY( resv == in );
+ }
+ 
+ void test_escaping()
+ {
+   std::string res;
+   std::string_view resv;
+ 
+   const std::string_view input =
+     "\t\n\r\\\""
+     "\u008a"     // Cc, Control,             Line Tabulation Set,
+     "\u00ad"     // Cf, Format,              Soft Hyphen
+     "\u1d3d"     // Lm, Modifier letter,     Modifier Letter Capital Ou
+     "\u00a0"     // Zs, Space Separator,     No-Break Space (NBSP)
+     "\u2029"     // Zp, Paragraph Separator, Paragraph Separator
+     "\U0001f984" // So, Other Symbol,        Unicorn Face
+   ;
+   const std::string_view output =
+    R"(\t\n\r\\\")"
+    R"(\u{8a})"
+    R"(\u{ad})"
+    "\u1d3d"
+    R"(\u{a0})"
+    R"(\u{2029})"
+    "\U0001f984";
+ 
+   std::forward_list<char> lc(std::from_range, input);
+   resv = res = std::format("{:s}", lc);
+   VERIFY( resv == input );
+   resv = res = std::format("{:?s}", lc);
+   VERIFY( strip_quotes(resv) );
+   VERIFY( resv == output );
+ 
+   // width is 5, size is 15
+   std::string in = "\u2160\u2161\u2162\u2163\u2164";
+   in += in; // width is 10, size is 30
+   in += in; // width is 20, size is 60
+   in += in; // width is 40, size is 120
+   in += in; // width is 80, size is 240
+   in += in; // width is 160, size is 480
+   std::string_view inv = in;
+ 
+   // last charcter is incomplete
+   lc.assign_range(inv.substr(0, 479));
+ 
+   // non-debug format, chars copied as is
+   resv = res = std::format("{:s}", lc);
+   VERIFY( resv == inv.substr(0, 479) );
+ 
+   // debug-format, incomplete code-point sequence is esaped
+   resv = res = std::format("{:?s}", lc);
+   VERIFY( strip_quotes(resv) );
+   VERIFY( resv.substr(0, 477) == inv.substr(0, 477) );
+   resv.remove_prefix(477);
+   VERIFY( resv == R"(\x{e2}\x{85})" );
  }
  
  int main()
*************** int main()
*** 287,290 ****
--- 374,379 ----
    test_outputs<char>();
    test_outputs<wchar_t>();
    test_nested();
+   test_padding();
+   test_escaping();
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/std/time/month_day/io.cc gcc-16-20251019/libstdc++-v3/testsuite/std/time/month_day/io.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/std/time/month_day/io.cc	Sun Oct 12 22:33:57 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/std/time/month_day/io.cc	Sun Oct 19 22:32:54 2025
*************** test_ostream()
*** 23,28 ****
--- 23,67 ----
  }
  
  void
+ test_format()
+ {
+   using namespace std::chrono;
+   std::locale loc_fr(ISO_8859(15,fr_FR));
+ 
+   auto s = std::format("{:%b%%%B%t%m%n %d%%%e}", month(1)/day(3));
+   VERIFY( s == "Jan%January\t01\n 03% 3" );
+   s = std::format(loc_fr, "{:L%b%%%B%t%m%n %d%%%e}", month(1)/day(3));
+   VERIFY( s == "janv.%janvier\t01\n 03% 3");
+ 
+   s = std::format("{0:%m/%d} {0}", month(10)/day(13));
+   VERIFY( s == "10/13 Oct/13" );
+   s = std::format("{0:%m/%d} {0}", month(13)/day(34));
+   VERIFY( s == "13/34 13 is not a valid month/34 is not a valid day" );
+ 
+   std::string_view specs = "aAbBcCdDeFgGhHIjmMpqQrRSTuUVwWxXyYzZ";
+   std::string_view my_specs = "bBdehm";
+   for (char c : specs)
+   {
+     char fmt[] = { '{', ':', '%', c, '}' };
+     try
+     {
+       auto md = month(1)/day(10);
+       (void) std::vformat(std::string_view(fmt, 5), std::make_format_args(md));
+       // The call above should throw for any conversion-spec not in my_specs:
+       VERIFY(my_specs.find(c) != my_specs.npos);
+     }
+     catch (const std::format_error& e)
+     {
+       VERIFY(my_specs.find(c) == my_specs.npos);
+       std::string_view s = e.what();
+       // Libstdc++-specific message:
+       VERIFY(s.find("format argument does not contain the information "
+ 		    "required by the chrono-specs") != s.npos);
+     }
+   }
+ }
+ 
+ void
  test_parse()
  {
    using namespace std::chrono;
*************** test_parse()
*** 102,107 ****
  int main()
  {
    test_ostream();
!   // TODO: test_format();
    test_parse();
  }
--- 141,146 ----
  int main()
  {
    test_ostream();
!   test_format();
    test_parse();
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/std/time/month_day_last/io.cc gcc-16-20251019/libstdc++-v3/testsuite/std/time/month_day_last/io.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/std/time/month_day_last/io.cc	Sun Oct 12 22:33:57 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/std/time/month_day_last/io.cc	Sun Oct 19 22:32:54 2025
*************** test_ostream()
*** 22,29 ****
    VERIFY( ss.str() == "juil./last" );
  }
  
  int main()
  {
    test_ostream();
!   // TODO: test_format();
  }
--- 22,68 ----
    VERIFY( ss.str() == "juil./last" );
  }
  
+ void
+ test_format()
+ {
+   using namespace std::chrono;
+   std::locale loc_fr(ISO_8859(15,fr_FR));
+ 
+   auto s = std::format("{:%b%%%B%t%m%n}", month(3)/last);
+   VERIFY( s == "Mar%March\t03\n" );
+   s = std::format(loc_fr, "{:L%b%%%B%t%m%n}", month(3)/last);
+   VERIFY( s == "mars%mars\t03\n");
+ 
+   s = std::format("{0:%m/last} {0}", month(4)/last);
+   VERIFY( s == "04/last Apr/last" );
+   s = std::format("{0:%m/last} {0}", month(0)/last);
+   VERIFY( s == "00/last 0 is not a valid month/last" );
+ 
+   std::string_view specs = "aAbBcCdDeFgGhHIjmMpqQrRSTuUVwWxXyYzZ";
+   std::string_view my_specs = "bBhm";
+   for (char c : specs)
+   {
+     char fmt[] = { '{', ':', '%', c, '}' };
+     try
+     {
+       auto mdl = month(1)/last;
+       (void) std::vformat(std::string_view(fmt, 5), std::make_format_args(mdl));
+       // The call above should throw for any conversion-spec not in my_specs:
+       VERIFY(my_specs.find(c) != my_specs.npos);
+     }
+     catch (const std::format_error& e)
+     {
+       VERIFY(my_specs.find(c) == my_specs.npos);
+       std::string_view s = e.what();
+       // Libstdc++-specific message:
+       VERIFY(s.find("format argument does not contain the information "
+ 		    "required by the chrono-specs") != s.npos);
+     }
+   }
+ }
+ 
  int main()
  {
    test_ostream();
!   test_format();
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/std/time/month_weekday/io.cc gcc-16-20251019/libstdc++-v3/testsuite/std/time/month_weekday/io.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/std/time/month_weekday/io.cc	Sun Oct 12 22:33:57 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/std/time/month_weekday/io.cc	Sun Oct 19 22:32:54 2025
*************** test_ostream()
*** 23,30 ****
    VERIFY( ss.str() == "juil./jeu.[4]" );
  }
  
  int main()
  {
    test_ostream();
!   // TODO: test_format();
  }
--- 23,69 ----
    VERIFY( ss.str() == "juil./jeu.[4]" );
  }
  
+ void
+ test_format()
+ {
+   using namespace std::chrono;
+   std::locale loc_fr(ISO_8859(15,fr_FR));
+ 
+   auto s = std::format("{:%b%%%B%t%m%n %a%%%A%t%u%n%w}", month(5)/weekday(1)[2]);
+   VERIFY( s == "May%May\t05\n Mon%Monday\t1\n1" );
+   s = std::format(loc_fr, "{:L%b%%%B%t%m%n %a%%%A%t%u%n%w}", month(5)/weekday(1)[2]);
+   VERIFY( s == "mai%mai\t05\n lun.%lundi\t1\n1");
+ 
+   s = std::format("{0:%m/%u[]} {0}", month(9)/weekday(0)[2]);
+   VERIFY( s == "09/7[] Sep/Sun[2]" );
+   s = std::format("{0:%m/%u[]} {0}", month(111)/weekday(8)[0]);
+   VERIFY( s == "111/8[] 111 is not a valid month/8 is not a valid weekday[0 is not a valid index]" );
+ 
+   std::string_view specs = "aAbBcCdDeFgGhHIjmMpqQrRSTuUVwWxXyYzZ";
+   std::string_view my_specs = "aAbBhmuw";
+   for (char c : specs)
+   {
+     char fmt[] = { '{', ':', '%', c, '}' };
+     try
+     {
+       auto mwi = month(1)/weekday(1)[1];
+       (void) std::vformat(std::string_view(fmt, 5), std::make_format_args(mwi));
+       // The call above should throw for any conversion-spec not in my_specs:
+       VERIFY(my_specs.find(c) != my_specs.npos);
+     }
+     catch (const std::format_error& e)
+     {
+       VERIFY(my_specs.find(c) == my_specs.npos);
+       std::string_view s = e.what();
+       // Libstdc++-specific message:
+       VERIFY(s.find("format argument does not contain the information "
+ 		    "required by the chrono-specs") != s.npos);
+     }
+   }
+ }
+ 
  int main()
  {
    test_ostream();
!   test_format();
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/std/time/month_weekday_last/io.cc gcc-16-20251019/libstdc++-v3/testsuite/std/time/month_weekday_last/io.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/std/time/month_weekday_last/io.cc	Sun Oct 12 22:33:57 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/std/time/month_weekday_last/io.cc	Sun Oct 19 22:32:54 2025
*************** test_ostream()
*** 23,30 ****
    VERIFY( ss.str() == "juil./jeu.[last]" );
  }
  
  int main()
  {
    test_ostream();
!   // TODO: test_format();
  }
--- 23,69 ----
    VERIFY( ss.str() == "juil./jeu.[last]" );
  }
  
+ void
+ test_format()
+ {
+   using namespace std::chrono;
+   std::locale loc_fr(ISO_8859(15,fr_FR));
+ 
+   auto s = std::format("{:%b%%%B%t%m%n %a%%%A%t%u%n%w}", month(6)/weekday(2)[last]);
+   VERIFY( s == "Jun%June\t06\n Tue%Tuesday\t2\n2" );
+   s = std::format(loc_fr, "{:L%b%%%B%t%m%n %a%%%A%t%u%n%w}", month(6)/weekday(2)[last]);
+   VERIFY( s == "juin%juin\t06\n mar.%mardi\t2\n2");
+ 
+   s = std::format("{0:%m/%w[last]} {0}", month(8)/weekday(7)[last]);
+   VERIFY( s == "08/0[last] Aug/Sun[last]" );
+   s = std::format("{0:%m/%w[last]} {0}", month(70)/weekday(9)[last]);
+   VERIFY( s == "70/9[last] 70 is not a valid month/9 is not a valid weekday[last]" );
+ 
+   std::string_view specs = "aAbBcCdDeFgGhHIjmMpqQrRSTuUVwWxXyYzZ";
+   std::string_view my_specs = "aAbBhmuw";
+   for (char c : specs)
+   {
+     char fmt[] = { '{', ':', '%', c, '}' };
+     try
+     {
+       auto mwl = month(1)/weekday(1)[last];
+       (void) std::vformat(std::string_view(fmt, 5), std::make_format_args(mwl));
+       // The call above should throw for any conversion-spec not in my_specs:
+       VERIFY(my_specs.find(c) != my_specs.npos);
+     }
+     catch (const std::format_error& e)
+     {
+       VERIFY(my_specs.find(c) == my_specs.npos);
+       std::string_view s = e.what();
+       // Libstdc++-specific message:
+       VERIFY(s.find("format argument does not contain the information "
+ 		    "required by the chrono-specs") != s.npos);
+     }
+   }
+ }
+ 
  int main()
  {
    test_ostream();
!   test_format();
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/std/time/weekday_indexed/io.cc gcc-16-20251019/libstdc++-v3/testsuite/std/time/weekday_indexed/io.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/std/time/weekday_indexed/io.cc	Sun Oct 12 22:33:57 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/std/time/weekday_indexed/io.cc	Sun Oct 19 22:32:54 2025
*************** test_ostream()
*** 22,29 ****
    VERIFY( ss.str() == "sam.[1]" );
  }
  
  int main()
  {
    test_ostream();
!   // TODO: test_format();
  }
--- 22,68 ----
    VERIFY( ss.str() == "sam.[1]" );
  }
  
+ void
+ test_format()
+ {
+   using namespace std::chrono;
+   std::locale loc_fr(ISO_8859(15,fr_FR));
+ 
+   auto s = std::format("{:%a%%%A%t%u%n%w}", weekday(7)[3]);
+   VERIFY( s == "Sun%Sunday\t7\n0" );
+   s = std::format(loc_fr, "{:L%a%%%A%t%u%n%w}", weekday(7)[3]);
+   VERIFY( s == "dim.%dimanche\t7\n0");
+ 
+   s = std::format("{0:%w[]} {0}", weekday(4)[4]);
+   VERIFY( s == "4[] Thu[4]" );
+   s = std::format("{0:%w[]} {0}", weekday(10)[7]);
+   VERIFY( s == "10[] 10 is not a valid weekday[7 is not a valid index]" );
+ 
+   std::string_view specs = "aAbBcCdDeFgGhHIjmMpqQrRSTuUVwWxXyYzZ";
+   std::string_view my_specs = "aAuw";
+   for (char c : specs)
+   {
+     char fmt[] = { '{', ':', '%', c, '}' };
+     try
+     {
+       auto wi = weekday(1)[1];
+       (void) std::vformat(std::string_view(fmt, 5), std::make_format_args(wi));
+       // The call above should throw for any conversion-spec not in my_specs:
+       VERIFY(my_specs.find(c) != my_specs.npos);
+     }
+     catch (const std::format_error& e)
+     {
+       VERIFY(my_specs.find(c) == my_specs.npos);
+       std::string_view s = e.what();
+       // Libstdc++-specific message:
+       VERIFY(s.find("format argument does not contain the information "
+ 		    "required by the chrono-specs") != s.npos);
+     }
+   }
+ }
+ 
  int main()
  {
    test_ostream();
!   test_format();
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/std/time/weekday_last/io.cc gcc-16-20251019/libstdc++-v3/testsuite/std/time/weekday_last/io.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/std/time/weekday_last/io.cc	Sun Oct 12 22:33:57 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/std/time/weekday_last/io.cc	Sun Oct 19 22:32:54 2025
*************** test_ostream()
*** 22,29 ****
    VERIFY( ss.str() == "sam.[last]" );
  }
  
  int main()
  {
    test_ostream();
!   // TODO: test_format();
  }
--- 22,68 ----
    VERIFY( ss.str() == "sam.[last]" );
  }
  
+ void
+ test_format()
+ {
+   using namespace std::chrono;
+   std::locale loc_fr(ISO_8859(15,fr_FR));
+ 
+   auto s = std::format("{:%a%%%A%t%u%n%w}", weekday(5)[last]);
+   VERIFY( s == "Fri%Friday\t5\n5" );
+   s = std::format(loc_fr, "{:L%a%%%A%t%u%n%w}", weekday(5)[last]);
+   VERIFY( s == "ven.%vendredi\t5\n5");
+ 
+   s = std::format("{0:%w[last]} {0}", weekday(6)[last]);
+   VERIFY( s == "6[last] Sat[last]" );
+   s = std::format("{0:%w[last]} {0}", weekday(9)[last]);
+   VERIFY( s == "9[last] 9 is not a valid weekday[last]" );
+ 
+   std::string_view specs = "aAbBcCdDeFgGhHIjmMpqQrRSTuUVwWxXyYzZ";
+   std::string_view my_specs = "aAuw";
+   for (char c : specs)
+   {
+     char fmt[] = { '{', ':', '%', c, '}' };
+     try
+     {
+       auto wl = weekday(1)[last];
+       (void) std::vformat(std::string_view(fmt, 5), std::make_format_args(wl));
+       // The call above should throw for any conversion-spec not in my_specs:
+       VERIFY(my_specs.find(c) != my_specs.npos);
+     }
+     catch (const std::format_error& e)
+     {
+       VERIFY(my_specs.find(c) == my_specs.npos);
+       std::string_view s = e.what();
+       // Libstdc++-specific message:
+       VERIFY(s.find("format argument does not contain the information "
+ 		    "required by the chrono-specs") != s.npos);
+     }
+   }
+ }
+ 
  int main()
  {
    test_ostream();
!   test_format();
  }
diff -Nrcpad gcc-16-20251012/libstdc++-v3/testsuite/std/time/year_month/io.cc gcc-16-20251019/libstdc++-v3/testsuite/std/time/year_month/io.cc
*** gcc-16-20251012/libstdc++-v3/testsuite/std/time/year_month/io.cc	Sun Oct 12 22:33:57 2025
--- gcc-16-20251019/libstdc++-v3/testsuite/std/time/year_month/io.cc	Sun Oct 19 22:32:54 2025
*************** test_ostream()
*** 23,28 ****
--- 23,67 ----
  }
  
  void
+ test_format()
+ {
+   using namespace std::chrono;
+   std::locale loc_fr(ISO_8859(15,fr_FR));
+ 
+   auto s = std::format("{:%C%%%y\t%Y %b%%%B%t%m%n}", year(2019)/month(4));
+   VERIFY( s == "20%19\t2019 Apr%April\t04\n" );
+   s = std::format(loc_fr, "{:L%C%%%y\t%Y %b%%%B%t%m%n}", year(2019)/month(4));
+   VERIFY( s == "20%19\t2019 avril%avril\t04\n");
+ 
+   s = std::format("{0:%Y/%m} {0}", year(2018)/month(2));
+   VERIFY( s == "2018/02 2018/Feb" );
+   s = std::format("{0:%Y/%m} {0}", year(-32768)/month(15));
+   VERIFY( s == "-32768/15 -32768 is not a valid year/15 is not a valid month" );
+ 
+   std::string_view specs = "aAbBcCdDeFgGhHIjmMpqQrRSTuUVwWxXyYzZ";
+   std::string_view my_specs = "CbBhmyY";
+   for (char c : specs)
+   {
+     char fmt[] = { '{', ':', '%', c, '}' };
+     try
+     {
+       auto ym = year(2013)/month(1);
+       (void) std::vformat(std::string_view(fmt, 5), std::make_format_args(ym));
+       // The call above should throw for any conversion-spec not in my_specs:
+       VERIFY(my_specs.find(c) != my_specs.npos);
+     }
+     catch (const std::format_error& e)
+     {
+       VERIFY(my_specs.find(c) == my_specs.npos);
+       std::string_view s = e.what();
+       // Libstdc++-specific message:
+       VERIFY(s.find("format argument does not contain the information "
+ 		    "required by the chrono-specs") != s.npos);
+     }
+   }
+ }
+ 
+ void
  test_parse()
  {
    using namespace std::chrono;
*************** test_parse()
*** 73,78 ****
  int main()
  {
    test_ostream();
!   // TODO: test_format();
    test_parse();
  }
--- 112,117 ----
  int main()
  {
    test_ostream();
!   test_format();
    test_parse();
  }
