diff -Nrcpad gcc-16-20250921/.editorconfig gcc-16-20250928/.editorconfig
*** gcc-16-20250921/.editorconfig	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/.editorconfig	Sun Sep 28 22:33:01 2025
***************
*** 0 ****
--- 1,38 ----
+ # top-most EditorConfig file for gcc
+ root = true
+ 
+ [*]
+ end_of_line = lf
+ insert_final_newline = true
+ 
+ [*.{h,cc}]
+ charset = utf-8
+ indent_style = tab
+ indent_size = 2
+ tab_width = 8
+ trim_trailing_whitespace = true
+ 
+ [{Makefile,ChangeLog}*]
+ indent_style = tab
+ indent_size = 8
+ trim_trailing_whitespace = true
+ 
+ [ChangeLog*]
+ charset = utf-8
+ 
+ [*.texi]
+ charset = utf-8
+ indent_size = 2
+ tab_width = 8
+ trim_trailing_whitespace = true
+ 
+ [*.py]
+ indent_style = space
+ indent_size = 4
+ trim_trailing_whitespace = true
+ 
+ [*.exp]
+ indent_style = tab
+ indent_size = 4
+ tab_width = 8
+ trim_trailing_whitespace = true
diff -Nrcpad gcc-16-20250921/ChangeLog gcc-16-20250928/ChangeLog
*** gcc-16-20250921/ChangeLog	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/ChangeLog	Sun Sep 28 22:33:01 2025
***************
*** 1,3 ****
--- 1,11 ----
+ 2025-09-23  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* .editorconfig: Fix glob patterns.
+ 
+ 2025-09-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* .editorconfig: New file.
+ 
  2025-09-04  Wilco Dijkstra  <wilco.dijkstra@arm.com>
  
  	* MAINTAINERS (Reviewers): Add myself for the aarch64 port.
diff -Nrcpad gcc-16-20250921/LAST_UPDATED gcc-16-20250928/LAST_UPDATED
*** gcc-16-20250921/LAST_UPDATED	Sun Sep 21 22:34:33 2025
--- gcc-16-20250928/LAST_UPDATED	Sun Sep 28 22:35:32 2025
***************
*** 1 ****
! Obtained from git: master revision c6781f5558bdb4f241a3597c528ed7020a5cfce7
--- 1 ----
! Obtained from git: master revision 143cec1646ae2e0cfdb1874defdc65e6d535e27c
diff -Nrcpad gcc-16-20250921/MD5SUMS gcc-16-20250928/MD5SUMS
*** gcc-16-20250921/MD5SUMS	Sun Sep 21 22:34:44 2025
--- gcc-16-20250928/MD5SUMS	Sun Sep 28 22:35:41 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20250921.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-20250928.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
***************
*** 10,15 ****
--- 10,16 ----
  #
  e8eeef33ef071516ce3f689e9c71e0b5  .b4-config
  fd78d02fa55fcdb78ddb2f37a7868dbb  .dir-locals.el
+ 4913aa3ca91398499f84b9de170d1890  .editorconfig
  b91d600742b62d1860809cb184055a3d  .forgejo/PULL_REQUEST_TEMPLATE.md
  5b296b32e07d2a84f4ac051ed7f95b91  .gitattributes
  426ab4ae9cc194b71b388a6471471772  .github/CONTRIBUTING.md
*************** ac5a8807f431d3dab46a7425b96379e4  .gitig
*** 21,31 ****
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 6398716c8dd89c04b8ad97a8128e1798  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 6020c21afb470cd5d7e900a4ecd6f920  LAST_UPDATED
  8e87c2f135d3885c0640f7f2229b11ae  MAINTAINERS
  95166ed050922b15d201d1fa647b5872  Makefile.def
  7dcc983bfbcda6838b504185562b60a3  Makefile.in
--- 22,32 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 687e24053445c456b29bd0901df86205  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 6afad176b3471599e2d045c25d7d6cae  LAST_UPDATED
  8e87c2f135d3885c0640f7f2229b11ae  MAINTAINERS
  95166ed050922b15d201d1fa647b5872  Makefile.def
  7dcc983bfbcda6838b504185562b60a3  Makefile.in
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 154,160 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  9d9c5508a65175be5f9e10721e55ebbc  configure
  82e46c5338f6449fa0a149b6adf12797  configure.ac
! fa1e1b9c86031312b1c4887dd2e11d2a  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
--- 155,161 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  9d9c5508a65175be5f9e10721e55ebbc  configure
  82e46c5338f6449fa0a149b6adf12797  configure.ac
! fa090df1850ecc9da7f2a60860c900f2  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  13605e5ba7b533ecbe3a902b8ebe4079  contrib/analyze_brprob.py
*************** d85bf7c26cbc82a590e488ae41605403  contri
*** 352,358 ****
  b43dc8f19341ef09bf927ea0485d2f1a  contrib/unicode/gen-box-drawing-chars.py
  9f1d172363dc56ad17938788adaf02b1  contrib/unicode/gen-combining-chars.py
  bfd0156a35f146cd1fd12934ede7764f  contrib/unicode/gen-printable-chars.py
! 19b21b896feb739e5f10476a415eb677  contrib/unicode/gen_libstdcxx_unicode_data.py
  8ec0eeb5656a711cd81ffedbb2b98f54  contrib/unicode/gen_wcwidth.py
  8b5fa928c1da8636733a0a76a2da5bc8  contrib/unicode/unicode-license.txt
  93fd39f4c6ff7bf4e5f9e035b65e6e1a  contrib/unicode/utf8-dump.py
--- 353,359 ----
  b43dc8f19341ef09bf927ea0485d2f1a  contrib/unicode/gen-box-drawing-chars.py
  9f1d172363dc56ad17938788adaf02b1  contrib/unicode/gen-combining-chars.py
  bfd0156a35f146cd1fd12934ede7764f  contrib/unicode/gen-printable-chars.py
! b2259bdd0f4345034b674b64dabb75c2  contrib/unicode/gen_libstdcxx_unicode_data.py
  8ec0eeb5656a711cd81ffedbb2b98f54  contrib/unicode/gen_wcwidth.py
  8b5fa928c1da8636733a0a76a2da5bc8  contrib/unicode/unicode-license.txt
  93fd39f4c6ff7bf4e5f9e035b65e6e1a  contrib/unicode/utf8-dump.py
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 516,522 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 6eace8fce77a3f12966b8e85b6c115fa  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 517,523 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 7a3aa9d7531045c43231fe70ea29cf7f  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 553,559 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 04abbe46546e41340d59aadbffdc222f  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 554,560 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 9b7501141e226d60b85c12cccf8f4006  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 565,571 ****
  23d99b5becf269aa690a91a6f95228b9  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 11556c0472e23f0b8db39fc960ee0ef8  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 566,572 ----
  23d99b5becf269aa690a91a6f95228b9  gcc/acinclude.m4
  18db4664d7e31002aac43ebcf20e075f  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! d873c4d7895cb984771340abc9b140cc  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** a012e0cb5df366014b5a4988036a509a  gcc/ad
*** 681,687 ****
  95f36013115a0d2964f52a340712b135  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
  e720005d40bb3f5789a5c87a764fb82e  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  ae3d832d67eb0561de58deff709050db  gcc/ada/doc/gnat_rm/implementation_advice.rst
! 4ef0af28325df2c1534cc73b9f4ed108  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
  42a86d66ceb034b24a71d53a737e46ea  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
  0ddf58bc4a9fdbe10cc6696d32b3c8b1  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
--- 682,688 ----
  95f36013115a0d2964f52a340712b135  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
  e720005d40bb3f5789a5c87a764fb82e  gcc/ada/doc/gnat_rm/gnat_language_extensions.rst
  ae3d832d67eb0561de58deff709050db  gcc/ada/doc/gnat_rm/implementation_advice.rst
! 4f7bb8fec58a615cfdd25754812dbe70  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
  687e948eae92592a9bb4b738fd473d80  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
  42a86d66ceb034b24a71d53a737e46ea  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
  0ddf58bc4a9fdbe10cc6696d32b3c8b1  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
*************** acd9838ed6c44495a93b84c6e2585b57  gcc/ad
*** 699,705 ****
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  97271c06a675f62b05d2a744164c36e1  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 51260329363a6ef895294b22c5b252d4  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2bd1b4bce35f627e35f3316337a622f2  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  56a5718b224a18464cc8f770c1288a14  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  6f289cabdb2ee5e2e1818f135c23020e  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
--- 700,706 ----
  391d17bf855af400348685ff678c6a6a  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  97271c06a675f62b05d2a744164c36e1  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! a71d7bc3a09331eded6e45fcc92c9c8f  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
  2bd1b4bce35f627e35f3316337a622f2  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  56a5718b224a18464cc8f770c1288a14  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  6f289cabdb2ee5e2e1818f135c23020e  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
*************** d05e426d95c24c54af666c18b1fb547c  gcc/ad
*** 708,714 ****
  f7e7179ad111262b98d743c63002bc82  gcc/ada/doc/gnat_ugn/inline_assembler.rst
  fb97e551cf32ed76280cd4f8cd40825c  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! dabdb39aa357ff33aa282a1d08e32586  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
  32b64eb2bfda56adcea7d1f563bee6bb  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
--- 709,715 ----
  f7e7179ad111262b98d743c63002bc82  gcc/ada/doc/gnat_ugn/inline_assembler.rst
  fb97e551cf32ed76280cd4f8cd40825c  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! 2beabef2edddb52bfa57ca9360bed6fb  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
  32b64eb2bfda56adcea7d1f563bee6bb  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
*************** d1b7c8ba53a4cc5868e87b17370562ce  gcc/ad
*** 767,773 ****
  ef982b9647c35560ae7ff386e547bd16  gcc/ada/exp_ch4.ads
  a6101b8ff6b37d2b8018d7081f04151a  gcc/ada/exp_ch5.adb
  f0c7dc0ade3f9639e946e709a9288f31  gcc/ada/exp_ch5.ads
! 22af16ce6d5e89b6427f51310b2d1f6f  gcc/ada/exp_ch6.adb
  54a1ff576d38d91bbd44c24ee1a6a5ff  gcc/ada/exp_ch6.ads
  c57a021ec5e6cc614c6092d2b1d41b56  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
--- 768,774 ----
  ef982b9647c35560ae7ff386e547bd16  gcc/ada/exp_ch4.ads
  a6101b8ff6b37d2b8018d7081f04151a  gcc/ada/exp_ch5.adb
  f0c7dc0ade3f9639e946e709a9288f31  gcc/ada/exp_ch5.ads
! ec400268d76003a9b617cb0a701ac88d  gcc/ada/exp_ch6.adb
  54a1ff576d38d91bbd44c24ee1a6a5ff  gcc/ada/exp_ch6.ads
  c57a021ec5e6cc614c6092d2b1d41b56  gcc/ada/exp_ch7.adb
  31ee5e50c565d4788d9b794acb5bfebb  gcc/ada/exp_ch7.ads
*************** be98a1e6f04922fb22c79c4540070fe5  gcc/ad
*** 871,878 ****
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! e3ddb0ee022aa1a702b7eccdba675560  gcc/ada/gnat_rm.texi
! 2e97e932a7f0177640c9024388e2a1c4  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  aef32d71626b4170f80d299f2304d737  gcc/ada/gnatchop.adb
--- 872,879 ----
  917ea7311a30ec4c5cec3e610ca640c2  gcc/ada/gnat2.gpr
  49c5329fd360e2bf4e549bc7de93aab7  gcc/ada/gnat_cuda.adb
  de69fc271ce889490809004600fcac0f  gcc/ada/gnat_cuda.ads
! 8f95916d85a8f64017f21c2b41e362c3  gcc/ada/gnat_rm.texi
! 054f9a42aefee62c4dab8fe25beee502  gcc/ada/gnat_ugn.texi
  957e02fdb4684d592d9172cea8dfb4cb  gcc/ada/gnatbind.adb
  fff8dfca966e9d6f779ce90e57344a0f  gcc/ada/gnatbind.ads
  aef32d71626b4170f80d299f2304d737  gcc/ada/gnatchop.adb
*************** e204de79f4f6b64632812ec5d99d0161  gcc/ad
*** 895,901 ****
  d84f29439bcbc88c275e531630e2e14e  gcc/ada/gnatprep.ads
  0379d608ffd6184838fab6a63cea3bcd  gcc/ada/gnatvsn.adb
  78c482a261b45ba578d801b564bc7d38  gcc/ada/gnatvsn.ads
! b06692d44846cc28fe529c1ea2f3ded6  gcc/ada/gprep.adb
  56f06790ba3f6dfe539fa7f244e80e53  gcc/ada/gprep.ads
  c5800bf428d690955e4f8f9f3efd4017  gcc/ada/gsocket.h
  e4efe68d0e25214fe54b93342a51d8bd  gcc/ada/hostparm.ads
--- 896,902 ----
  d84f29439bcbc88c275e531630e2e14e  gcc/ada/gnatprep.ads
  0379d608ffd6184838fab6a63cea3bcd  gcc/ada/gnatvsn.adb
  78c482a261b45ba578d801b564bc7d38  gcc/ada/gnatvsn.ads
! 2b143a86d8c09deb7b64838a109685ca  gcc/ada/gprep.adb
  56f06790ba3f6dfe539fa7f244e80e53  gcc/ada/gprep.ads
  c5800bf428d690955e4f8f9f3efd4017  gcc/ada/gsocket.h
  e4efe68d0e25214fe54b93342a51d8bd  gcc/ada/hostparm.ads
*************** d9322225886886bb45307ab213ae42e8  gcc/ad
*** 1068,1074 ****
  de5e113bdba75d0ef1a26eb16f785be1  gcc/ada/libgnarl/s-qnx.ads
  814bcd91d4b539d7bd20024c8c507881  gcc/ada/libgnarl/s-solita.adb
  4d820958426efff634a0d493ff53d34a  gcc/ada/libgnarl/s-solita.ads
! 1cdf5498ce5d53d47910c453b7520e08  gcc/ada/libgnarl/s-stusta.adb
  b11059929f065d4d1e1b673b9277fa04  gcc/ada/libgnarl/s-stusta.ads
  c89a036a39ffacecc45eb509f8bb6772  gcc/ada/libgnarl/s-taasde.adb
  3927a6965bb4832625cd9b69d3e143b0  gcc/ada/libgnarl/s-taasde.ads
--- 1069,1075 ----
  de5e113bdba75d0ef1a26eb16f785be1  gcc/ada/libgnarl/s-qnx.ads
  814bcd91d4b539d7bd20024c8c507881  gcc/ada/libgnarl/s-solita.adb
  4d820958426efff634a0d493ff53d34a  gcc/ada/libgnarl/s-solita.ads
! a61bcba4bccfa2dd563fd53f9b1c15c4  gcc/ada/libgnarl/s-stusta.adb
  b11059929f065d4d1e1b673b9277fa04  gcc/ada/libgnarl/s-stusta.ads
  c89a036a39ffacecc45eb509f8bb6772  gcc/ada/libgnarl/s-taasde.adb
  3927a6965bb4832625cd9b69d3e143b0  gcc/ada/libgnarl/s-taasde.ads
*************** e352a12b4d9f9fa805da7e6f658fdf64  gcc/ad
*** 2601,2608 ****
  96c313f30fdba62de433fb092458877f  gcc/ada/libgnat/s-stalib.ads
  55323d3e45389ad9fef892d1cd81d1fc  gcc/ada/libgnat/s-statxd.adb
  fafaec7e1407523ff707cd31b2f133b7  gcc/ada/libgnat/s-statxd.ads
! 8c19400b3750004a523d06f3c33a9a0f  gcc/ada/libgnat/s-stausa.adb
! 134b7c102d83020b2b045e0b61cceace  gcc/ada/libgnat/s-stausa.ads
  8807ad512b03355051bfd5fb569a37e3  gcc/ada/libgnat/s-stchop.adb
  77ae5ab61ffcb4e91b6a831c69bb9008  gcc/ada/libgnat/s-stchop.ads
  cf4e9c9c6b5846a66a92e76ff6939db8  gcc/ada/libgnat/s-stchop__limit.ads
--- 2602,2609 ----
  96c313f30fdba62de433fb092458877f  gcc/ada/libgnat/s-stalib.ads
  55323d3e45389ad9fef892d1cd81d1fc  gcc/ada/libgnat/s-statxd.adb
  fafaec7e1407523ff707cd31b2f133b7  gcc/ada/libgnat/s-statxd.ads
! cf0332594bc0bd98d19f4aaf45d90a33  gcc/ada/libgnat/s-stausa.adb
! 2b4e3a1ca4d26f7871160c429566e114  gcc/ada/libgnat/s-stausa.ads
  8807ad512b03355051bfd5fb569a37e3  gcc/ada/libgnat/s-stchop.adb
  77ae5ab61ffcb4e91b6a831c69bb9008  gcc/ada/libgnat/s-stchop.ads
  cf4e9c9c6b5846a66a92e76ff6939db8  gcc/ada/libgnat/s-stchop__limit.ads
*************** daa568b1e0b9067b5486a55027d04fda  gcc/ad
*** 2762,2779 ****
  f97d1985b145ccee335d9b5a65dd43e5  gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
  a46e1dd21ef540bbee2845f2c54d9faa  gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
  79f806dc9a64349acfb1127e0aa06abc  gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
! 74d2789538ace951f735ee639250eebe  gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
  5f84f3dc6595ea1eded63b859c6ccb76  gcc/ada/libgnat/system-vxworks7-aarch64.ads
  0bb7876992108f27965f86667e08a0fe  gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
  72f130fa039dd7909c45d2b1b027e146  gcc/ada/libgnat/system-vxworks7-arm.ads
  e366528eb9bf8b17d442199d44cc76e1  gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
! b9b48161b2432d18906f33ad6c690f63  gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
  d9d483058efebf4c4493eaec576a2d4a  gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
! c11ba5374781e889a447a6e034154874  gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
  e7e3576352adfb4d8827ad1e67061e0b  gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
! 3e738c94e40c10a46ad7683f9a061b9d  gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
  3f9900dde069b4dd876bcb6cc3d1a969  gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
! 8722177602501b336d2e2a74da475d7c  gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
  5b5a0f33d6b1cd316c17c759b05d17b6  gcc/ada/libgnat/text_io.ads
  22a85f08e1699f308a9b60bf5ce4a6d0  gcc/ada/libgnat/unchconv.ads
  91a6872657c72c6647e2e8f6edb008ba  gcc/ada/libgnat/unchdeal.ads
--- 2763,2780 ----
  f97d1985b145ccee335d9b5a65dd43e5  gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
  a46e1dd21ef540bbee2845f2c54d9faa  gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
  79f806dc9a64349acfb1127e0aa06abc  gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
! 7e30ba4bda9c7643a904d1602859adf1  gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
  5f84f3dc6595ea1eded63b859c6ccb76  gcc/ada/libgnat/system-vxworks7-aarch64.ads
  0bb7876992108f27965f86667e08a0fe  gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
  72f130fa039dd7909c45d2b1b027e146  gcc/ada/libgnat/system-vxworks7-arm.ads
  e366528eb9bf8b17d442199d44cc76e1  gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
! 67575cfacfba0060038792329791a143  gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
  d9d483058efebf4c4493eaec576a2d4a  gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
! a64c9b295aa890f1013c828ae81a1779  gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
  e7e3576352adfb4d8827ad1e67061e0b  gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
! ac0940ff276ff40fb8d82e942126932c  gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
  3f9900dde069b4dd876bcb6cc3d1a969  gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
! 103229916d48105110b292d4465e6176  gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
  5b5a0f33d6b1cd316c17c759b05d17b6  gcc/ada/libgnat/text_io.ads
  22a85f08e1699f308a9b60bf5ce4a6d0  gcc/ada/libgnat/unchconv.ads
  91a6872657c72c6647e2e8f6edb008ba  gcc/ada/libgnat/unchdeal.ads
*************** cd6c342cc127610beca7bb72cbcc907a  gcc/ad
*** 2808,2814 ****
  aef70af2835279de8e33b52eb8375d45  gcc/ada/nlists.ads
  276eb125c0df313227d9ecfb3f38866d  gcc/ada/nlists.h
  9ce5e0762672a4136ff3130c472711ce  gcc/ada/opt.adb
! 694e55e88cd30e918ce97a02720baab8  gcc/ada/opt.ads
  fcbd079f712fd349c109f5ecd640096b  gcc/ada/osint-b.adb
  2604c4a51297a9867c69ce9985c3fb8b  gcc/ada/osint-b.ads
  4f31614f93bd69a85fe6c1f144e04b37  gcc/ada/osint-c.adb
--- 2809,2815 ----
  aef70af2835279de8e33b52eb8375d45  gcc/ada/nlists.ads
  276eb125c0df313227d9ecfb3f38866d  gcc/ada/nlists.h
  9ce5e0762672a4136ff3130c472711ce  gcc/ada/opt.adb
! c18134a486e4ea7da48aede766477a96  gcc/ada/opt.ads
  fcbd079f712fd349c109f5ecd640096b  gcc/ada/osint-b.adb
  2604c4a51297a9867c69ce9985c3fb8b  gcc/ada/osint-b.ads
  4f31614f93bd69a85fe6c1f144e04b37  gcc/ada/osint-c.adb
*************** b0a53260cce47acbd0de8d046175c63f  gcc/ad
*** 2846,2854 ****
  2674a374e947c03703d34f6603994424  gcc/ada/par_sco.ads
  60eed5b3f55a0639b078f452fcdf5cdc  gcc/ada/pprint.adb
  d4e0d990ec706c00861a684898856c8d  gcc/ada/pprint.ads
! 91aac53800a72e557fe679a71ba9085b  gcc/ada/prep.adb
  6dcc5289c9c7b452765a51d5831985bd  gcc/ada/prep.ads
! ad6cb6b61cacdf44f450f4a4bef3bcf6  gcc/ada/prepcomp.adb
  d28fe9bf503081b92048e26c8842b408  gcc/ada/prepcomp.ads
  fcfa33c29572e4f892bd68b226e0184d  gcc/ada/put_scos.adb
  3b031a53f556fd6a205a13665cd77c74  gcc/ada/put_scos.ads
--- 2847,2855 ----
  2674a374e947c03703d34f6603994424  gcc/ada/par_sco.ads
  60eed5b3f55a0639b078f452fcdf5cdc  gcc/ada/pprint.adb
  d4e0d990ec706c00861a684898856c8d  gcc/ada/pprint.ads
! fbe313370e3346c60d157f273c9e49bd  gcc/ada/prep.adb
  6dcc5289c9c7b452765a51d5831985bd  gcc/ada/prep.ads
! 7bf9d723298487ce1e1d9a2c3e0b6234  gcc/ada/prepcomp.adb
  d28fe9bf503081b92048e26c8842b408  gcc/ada/prepcomp.ads
  fcfa33c29572e4f892bd68b226e0184d  gcc/ada/put_scos.adb
  3b031a53f556fd6a205a13665cd77c74  gcc/ada/put_scos.ads
*************** d9e9e67a1e6554ab3bc7e11269dd3763  gcc/ad
*** 2891,2905 ****
  2a239613f39312b54ea82d1e690a3ea2  gcc/ada/sem_attr.ads
  67c9535c9fd384cc23ba9aafbc93defb  gcc/ada/sem_aux.adb
  e15b069fa2ff472febda85c8b9cacb81  gcc/ada/sem_aux.ads
! 1b4e45ef8df3f33dae9b6710ce3bbf7a  gcc/ada/sem_case.adb
  88daa5c9b6e135316b52695cae25a496  gcc/ada/sem_case.ads
  84667b3de209c0b04f82a349c6125ab0  gcc/ada/sem_cat.adb
  e364f4e3ae92066699cc93a8f7b828c1  gcc/ada/sem_cat.ads
! 8ea0c65f64aca33fec9707551c238717  gcc/ada/sem_ch10.adb
  6e34ce648cfc10b24c12b68e0e59dcb8  gcc/ada/sem_ch10.ads
  5980a02146588bf0e31ced2382290670  gcc/ada/sem_ch11.adb
  1b6f89866a5d427002df059be3847d62  gcc/ada/sem_ch11.ads
! 727519d2f6167e2da1688215100d2af1  gcc/ada/sem_ch12.adb
  f981520c42b732545be8bb5c8813ccfd  gcc/ada/sem_ch12.ads
  d6ef5724397901e11d6ea6485aa07816  gcc/ada/sem_ch13.adb
  42a7b1073e168e8be85f2203fbddd148  gcc/ada/sem_ch13.ads
--- 2892,2906 ----
  2a239613f39312b54ea82d1e690a3ea2  gcc/ada/sem_attr.ads
  67c9535c9fd384cc23ba9aafbc93defb  gcc/ada/sem_aux.adb
  e15b069fa2ff472febda85c8b9cacb81  gcc/ada/sem_aux.ads
! a42bf57eedc6f047301e698b7b6c4924  gcc/ada/sem_case.adb
  88daa5c9b6e135316b52695cae25a496  gcc/ada/sem_case.ads
  84667b3de209c0b04f82a349c6125ab0  gcc/ada/sem_cat.adb
  e364f4e3ae92066699cc93a8f7b828c1  gcc/ada/sem_cat.ads
! efb8983a0d800885901944d42ede5985  gcc/ada/sem_ch10.adb
  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
*************** ec8d5a42c27c46e4969c16d6e18ed276  gcc/ad
*** 2919,2925 ****
  f0b4e317e5d5515a6ec337bc5acf5fe0  gcc/ada/sem_ch8.ads
  546c616e1a0e3e76b6220644a605da51  gcc/ada/sem_ch9.adb
  7b283bd6453de444c7075a8c6f215dda  gcc/ada/sem_ch9.ads
! dea2a3321bde0d3ed6be665ade24a2c6  gcc/ada/sem_dim.adb
  d0ed9c569455451ee26c8e2565b7125b  gcc/ada/sem_dim.ads
  afc0c6c63f3b4af535cbedd72c00385e  gcc/ada/sem_disp.adb
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
--- 2920,2926 ----
  f0b4e317e5d5515a6ec337bc5acf5fe0  gcc/ada/sem_ch8.ads
  546c616e1a0e3e76b6220644a605da51  gcc/ada/sem_ch9.adb
  7b283bd6453de444c7075a8c6f215dda  gcc/ada/sem_ch9.ads
! a3ec3b68d1191d6cfaaaa4ba524b8896  gcc/ada/sem_dim.adb
  d0ed9c569455451ee26c8e2565b7125b  gcc/ada/sem_dim.ads
  afc0c6c63f3b4af535cbedd72c00385e  gcc/ada/sem_disp.adb
  40937cb7584e45e4c545aa3e4c20fbb2  gcc/ada/sem_disp.ads
*************** db6f5a37bd59fd83ff3286e71ab985fe  gcc/ad
*** 2945,2951 ****
  89d73c108bd8921f6d6cd84d98726ea5  gcc/ada/sem_smem.ads
  d0a2f5b2f65a874363f7fbe2b9a79f8b  gcc/ada/sem_type.adb
  dee50852181adfada17fb5b7423ed973  gcc/ada/sem_type.ads
! ee5b2abe4ca79e23d619229662cf88f7  gcc/ada/sem_util.adb
  4c258be138ab7760a8329aa8913fe358  gcc/ada/sem_util.ads
  9668d6a37fe84f41a81a7ffcb66d5ecc  gcc/ada/sem_warn.adb
  441e0f80657ef72324e40dd20cebfc82  gcc/ada/sem_warn.ads
--- 2946,2952 ----
  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
*************** b6c2c8048a20845da038e67e918b8afc  gcc/ad
*** 2981,2987 ****
  efc103042b1bc17447f48a276dc860ab  gcc/ada/socket.c
  8bdf1e57c628c071b503b49f5c5078f6  gcc/ada/spark_xrefs.adb
  2753ed3eddef50a315406d42f653c5d3  gcc/ada/spark_xrefs.ads
! 1036fd7b697d46c21d8f46848c14bceb  gcc/ada/sprint.adb
  3e9a55e0b0a74656ccf4d6b370f9f3b9  gcc/ada/sprint.ads
  ced5aeedc927cb85d789249204874ea1  gcc/ada/stand.ads
  995259a03fc6743547480930ff72b93a  gcc/ada/standard.ads.h
--- 2982,2988 ----
  efc103042b1bc17447f48a276dc860ab  gcc/ada/socket.c
  8bdf1e57c628c071b503b49f5c5078f6  gcc/ada/spark_xrefs.adb
  2753ed3eddef50a315406d42f653c5d3  gcc/ada/spark_xrefs.ads
! 42caacb8fde838870ec1ce0cb72052b5  gcc/ada/sprint.adb
  3e9a55e0b0a74656ccf4d6b370f9f3b9  gcc/ada/sprint.ads
  ced5aeedc927cb85d789249204874ea1  gcc/ada/stand.ads
  995259a03fc6743547480930ff72b93a  gcc/ada/standard.ads.h
*************** ceaa52edf6355622601cd30f7c096b06  gcc/ad
*** 2998,3004 ****
  072e20e96999b6e3137326e76e71b03d  gcc/ada/stylesw.ads
  280b043e991285d0e2dd469546dc80b0  gcc/ada/switch-b.adb
  564abc18b3d01ff76cff00fcb90fa03f  gcc/ada/switch-b.ads
! 36258c36e5f55fd214a0e6a377ea0e05  gcc/ada/switch-c.adb
  276c746b48c55f010cd06e04a2d1ccfb  gcc/ada/switch-c.ads
  7149d4feea0dd2cd75afe673ce2bb0b2  gcc/ada/switch-m.adb
  2ee5998b92d56bf9c5cc341e1f1ad78e  gcc/ada/switch-m.ads
--- 2999,3005 ----
  072e20e96999b6e3137326e76e71b03d  gcc/ada/stylesw.ads
  280b043e991285d0e2dd469546dc80b0  gcc/ada/switch-b.adb
  564abc18b3d01ff76cff00fcb90fa03f  gcc/ada/switch-b.ads
! 289311eb482c61e5f7f0814be12197aa  gcc/ada/switch-c.adb
  276c746b48c55f010cd06e04a2d1ccfb  gcc/ada/switch-c.ads
  7149d4feea0dd2cd75afe673ce2bb0b2  gcc/ada/switch-m.adb
  2ee5998b92d56bf9c5cc341e1f1ad78e  gcc/ada/switch-m.ads
*************** aa571047977f5d4eede1b3c590cfca1a  gcc/ad
*** 3030,3036 ****
  b04795771a6e485551c5422be454c896  gcc/ada/urealp.adb
  3efbeacc845581e3689901f319e061f0  gcc/ada/urealp.ads
  8da16dc7040064c1822811f3aa2b0741  gcc/ada/urealp.h
! e6ac139438e5cf4af1d7dc4b66d8dfe0  gcc/ada/usage.adb
  39aa1ad0590789d255e892abebddfe14  gcc/ada/usage.ads
  711166db03aab3b4aa42d708e165cdcb  gcc/ada/validsw.adb
  0fff79e753ec9a011dbe7450d07825bf  gcc/ada/validsw.ads
--- 3031,3037 ----
  b04795771a6e485551c5422be454c896  gcc/ada/urealp.adb
  3efbeacc845581e3689901f319e061f0  gcc/ada/urealp.ads
  8da16dc7040064c1822811f3aa2b0741  gcc/ada/urealp.h
! 94ccd0d455bff7f52ba6094122b3c173  gcc/ada/usage.adb
  39aa1ad0590789d255e892abebddfe14  gcc/ada/usage.ads
  711166db03aab3b4aa42d708e165cdcb  gcc/ada/validsw.adb
  0fff79e753ec9a011dbe7450d07825bf  gcc/ada/validsw.ads
*************** eeb42b412edc2884a4c60d6f38f7473b  gcc/ar
*** 3162,3172 ****
  135df8f25422fc20afd9efad9dffdd54  gcc/asan.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
! 7a214714d8af2c54f02789cfcb196d6c  gcc/attribs.cc
! 6e6a84b213adacaae73a6cb01cc52027  gcc/attribs.h
  54fb3cb1cab63227c50a50819ea1a3c3  gcc/auto-inc-dec.cc
  c25bbcb70f43e3c72a329043adf2c6c2  gcc/auto-obstack.h
! b31a3c960ab296b251634c7306c392e5  gcc/auto-profile.cc
  750f46d563af89307c9b19bbb4a2dd18  gcc/auto-profile.h
  1fd4de40d068f0ae7857fb0c2e22e46e  gcc/avoid-store-forwarding.cc
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
--- 3163,3173 ----
  135df8f25422fc20afd9efad9dffdd54  gcc/asan.h
  c77616ec7ed7ec81357de9544f955910  gcc/attr-fnspec.h
  3d7a71537ed817b2c8f0c30cd04c9201  gcc/attr-urls.def
! 953cd02e0323f4e1c637be64592f0df8  gcc/attribs.cc
! 2e0b1fab14d234393864ca83149dfcae  gcc/attribs.h
  54fb3cb1cab63227c50a50819ea1a3c3  gcc/auto-inc-dec.cc
  c25bbcb70f43e3c72a329043adf2c6c2  gcc/auto-obstack.h
! f5b1c3a1ef2f7d4efb253ed6dba4e8d2  gcc/auto-profile.cc
  750f46d563af89307c9b19bbb4a2dd18  gcc/auto-profile.h
  1fd4de40d068f0ae7857fb0c2e22e46e  gcc/avoid-store-forwarding.cc
  b187aaef50f37afeeee1f8239d5aa033  gcc/avoid-store-forwarding.h
*************** fe292df4b7f3e3ef7c0b8305084b6844  gcc/bi
*** 3180,3193 ****
  7cd04e6f25d02f9f2cecc8ce50e73e76  gcc/btfout.cc
  644ae78fbe2e513e06637aa080774d55  gcc/builtin-attrs.def
  9b2538f67781c7ccab3891a929caaaf0  gcc/builtin-types.def
! 9a19defef3c48e371d4ffc9f79b15414  gcc/builtins.cc
  ffcb644f7e9f6080db34e56bb66567f5  gcc/builtins.def
! bd61b50b47560dc1324bf507bea5d87e  gcc/builtins.h
! 51cb77c55b5629dbdccbbe1b6b718806  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  9c7ff39ab2ffc5f0938f59efc3657201  gcc/c-family/c-ada-spec.cc
  4e83011bee68d9607834ed5335191d65  gcc/c-family/c-ada-spec.h
! b0a3988bc562e15d99ab6207aee9a244  gcc/c-family/c-attribs.cc
  78c56cfdab4bb19086143ab771281aa3  gcc/c-family/c-common.cc
  c273c4ad95ccdbfe677146505900c62e  gcc/c-family/c-common.def
  5f94e80bb1dd7054acb7744c4b436011  gcc/c-family/c-common.h
--- 3181,3194 ----
  7cd04e6f25d02f9f2cecc8ce50e73e76  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
! 4befef49ed4660aeca6df8964c7f6729  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
! 1c49d68797b113a2b8fa07914f0a8df4  gcc/c-family/c-attribs.cc
  78c56cfdab4bb19086143ab771281aa3  gcc/c-family/c-common.cc
  c273c4ad95ccdbfe677146505900c62e  gcc/c-family/c-common.def
  5f94e80bb1dd7054acb7744c4b436011  gcc/c-family/c-common.h
*************** fa75a627653e32708fb43cab7ad5c929  gcc/c-
*** 3206,3213 ****
  6e53d008a0c4738339154c353a50ff0a  gcc/c-family/c-ppoutput.cc
  cfc760e3be8b3db6dfc8fef49282c0aa  gcc/c-family/c-pragma.cc
  10932d88b49c31cc0912970b8f153a0f  gcc/c-family/c-pragma.h
! 6b06dfa990e7bab82095a54e9f6b9aee  gcc/c-family/c-pretty-print.cc
! 65ddbb97d9d65906a812f9c61b9ca1d1  gcc/c-family/c-pretty-print.h
  5da7f0820eba217160736031aeaeabbd  gcc/c-family/c-semantics.cc
  d04c864b0365d3a88d504c664a8b3791  gcc/c-family/c-spellcheck.cc
  fbe4c16a6f553a7307aaae6124921e16  gcc/c-family/c-spellcheck.h
--- 3207,3214 ----
  6e53d008a0c4738339154c353a50ff0a  gcc/c-family/c-ppoutput.cc
  cfc760e3be8b3db6dfc8fef49282c0aa  gcc/c-family/c-pragma.cc
  10932d88b49c31cc0912970b8f153a0f  gcc/c-family/c-pragma.h
! 5e3dbb79036e1205b779ab076c679263  gcc/c-family/c-pretty-print.cc
! 3a8e76e3d28170a6aad7c88d4d1fd05d  gcc/c-family/c-pretty-print.h
  5da7f0820eba217160736031aeaeabbd  gcc/c-family/c-semantics.cc
  d04c864b0365d3a88d504c664a8b3791  gcc/c-family/c-spellcheck.cc
  fbe4c16a6f553a7307aaae6124921e16  gcc/c-family/c-spellcheck.h
*************** fc808567009babd00ebcf49b5b985691  gcc/c-
*** 3219,3247 ****
  48e5431bc15452653e41b37b5c3643e5  gcc/c-family/c-ubsan.cc
  a28f2477c85a17e42026521322b3649a  gcc/c-family/c-ubsan.h
  47faafdef0d76034184e171880096959  gcc/c-family/c-warn.cc
! 2dabbb620e89302bf45003691068ee46  gcc/c-family/c.opt
  a977ddda313933a15767f0f354618de3  gcc/c-family/c.opt.urls
  22bd7478421befafcfbd805e3ca373ac  gcc/c-family/cppspec.cc
  801075b0f2da341a38f761b3b7ffd7cd  gcc/c-family/known-headers.cc
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 0b631e3e3abe2d63e0fd83ae893e08fd  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! 08441bc97a51cf0da58afd07c9c3b4e8  gcc/c/c-decl.cc
  10e620f790089957c832097206d0d6d6  gcc/c/c-errors.cc
  837fc5f348c64d1c90a4430cc0fb3662  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
  4be9de2ca25340adb8f350478db6a3d8  gcc/c/c-lang.h
! e0b7650de772103a6ae330552c1960bc  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
  61216a7e2abee97e6045d125dea17652  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  e61cde6629f6e6274d475cc7fcb76210  gcc/c/c-tree.h
! 3ccbd67bcf958fb03d88fb60f0664e77  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  1ed203cdf15f14eb7bfe0eaabf41f503  gcc/c/gimple-parser.cc
--- 3220,3248 ----
  48e5431bc15452653e41b37b5c3643e5  gcc/c-family/c-ubsan.cc
  a28f2477c85a17e42026521322b3649a  gcc/c-family/c-ubsan.h
  47faafdef0d76034184e171880096959  gcc/c-family/c-warn.cc
! 10ff950a30d62854a9cd935ec9ab2ec0  gcc/c-family/c.opt
  a977ddda313933a15767f0f354618de3  gcc/c-family/c.opt.urls
  22bd7478421befafcfbd805e3ca373ac  gcc/c-family/cppspec.cc
  801075b0f2da341a38f761b3b7ffd7cd  gcc/c-family/known-headers.cc
  ac5daa4f7d7788a3f68dde7fe7a25316  gcc/c-family/known-headers.h
  f09c431056b5138e7cfe8376e05de9a6  gcc/c-family/name-hint.h
  d71f74b5b48d9ec5e4e6463e7330121d  gcc/c-family/stub-objc.cc
! 2bb75757f7af1e15961fefc4f823718f  gcc/c/ChangeLog
  b1fc09d2244c8e8a72b4df9bc9af30d7  gcc/c/Make-lang.in
  f1e5593aebd5cffb4b3cbffe6bd0860a  gcc/c/c-aux-info.cc
  178d24653bb20936d73bad078e70763c  gcc/c/c-convert.cc
! f04b63a64831614d7bcad26f94ce6980  gcc/c/c-decl.cc
  10e620f790089957c832097206d0d6d6  gcc/c/c-errors.cc
  837fc5f348c64d1c90a4430cc0fb3662  gcc/c/c-fold.cc
  d9c0725d061adffdf400457d91be3aed  gcc/c/c-lang.cc
  4be9de2ca25340adb8f350478db6a3d8  gcc/c/c-lang.h
! c2644975781d9f78ae4c387d01a3270e  gcc/c/c-objc-common.cc
  757f583d06a3ec98336adbfc92b4e6a8  gcc/c/c-objc-common.h
  61216a7e2abee97e6045d125dea17652  gcc/c/c-parser.cc
  9c122bd6feb8ae4a94420c890e654801  gcc/c/c-parser.h
  9179f46b6a06c7d734278f5ce2c55883  gcc/c/c-tree.def
  e61cde6629f6e6274d475cc7fcb76210  gcc/c/c-tree.h
! 61a63f3efaa44e2a5e75eef234311501  gcc/c/c-typeck.cc
  cd371895d730dd64e947066b2e4378f8  gcc/c/config-lang.in
  1bd76a24d1322659f048abe2272a6f34  gcc/c/gccspec.cc
  1ed203cdf15f14eb7bfe0eaabf41f503  gcc/c/gimple-parser.cc
*************** bbad65845fcf9cdbc5137d96f92eacab  gcc/cf
*** 3271,3281 ****
  7c2358ab451ca13a153f64b7682d772a  gcc/cfgloopmanip.h
  86fd277253913430380bc5d51e4b395b  gcc/cfgrtl.cc
  132f0eb682ec622dc563cfc697da1fb8  gcc/cfgrtl.h
! 9e297c72930ffff22f14939e3318bc48  gcc/cgraph.cc
! 9ef6759756353339978bc8b97942c871  gcc/cgraph.h
  5fa2e94f261a8a6fc0d80b1c4b227d25  gcc/cgraphbuild.cc
! c5b7ca04197fcc4e5da54fde8ad44c3f  gcc/cgraphclones.cc
! 0f66c996f10f0bf02ea42e4e3088d9e7  gcc/cgraphunit.cc
  70fa61377ff65ad3f25778a40159f510  gcc/cif-code.def
  b78f31ef38addf5472c2ea4acecfdddc  gcc/cobol/ChangeLog
  38de2f3ba3eff58bbacc8dcdbdcd5be7  gcc/cobol/Make-lang.in
--- 3272,3282 ----
  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
  b78f31ef38addf5472c2ea4acecfdddc  gcc/cobol/ChangeLog
  38de2f3ba3eff58bbacc8dcdbdcd5be7  gcc/cobol/Make-lang.in
*************** b5a916bb9dd788754ac9e4ad7174ee74  gcc/co
*** 3398,3404 ****
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! 8e79868122df56900d0000a650e3dd1a  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  9f90e78b127d8b71b269593c1734d1ce  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
--- 3399,3405 ----
  b209201703dd766f76ff5e16b99191e5  gcc/compare-elim.cc
  618780fbce0ce0cb6f9b86e079ce4e54  gcc/conditions.h
  1b4bc58c657bf910929d06d51bc8fa6c  gcc/config.build
! fa7ba4d77c21bef6a56837f585f8f8ca  gcc/config.gcc
  053bb14b428d0f073932e88b9a29a8bd  gcc/config.host
  9f90e78b127d8b71b269593c1734d1ce  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
*************** f931bc8e97c2f1358ad3ad91e902d553  gcc/co
*** 3433,3439 ****
  fd3b89b2d66ea57bd77a12740d2748d6  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  a349e9ba39f96f10f6c9f5e13bb8b661  gcc/config/aarch64/aarch64-passes.def
! 370531fbf21fa3201c387501beadfc19  gcc/config/aarch64/aarch64-protos.h
  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
--- 3434,3442 ----
  fd3b89b2d66ea57bd77a12740d2748d6  gcc/config/aarch64/aarch64-option-extensions.def
  eb901cf32e942a31db5999eda012dc00  gcc/config/aarch64/aarch64-opts.h
  a349e9ba39f96f10f6c9f5e13bb8b661  gcc/config/aarch64/aarch64-passes.def
! a29e8a2ccb74ff2bba522f8c2a794afd  gcc/config/aarch64/aarch64-protos.h
! 7beff4ec013b184132d7c933faa51208  gcc/config/aarch64/aarch64-sched-dispatch.cc
! b824341b8f6fdb8eb1667425adf63db8  gcc/config/aarch64/aarch64-sched-dispatch.h
  7cfa3d0cdd28cdcd73a29c2c8a925548  gcc/config/aarch64/aarch64-simd-builtin-types.def
  8f28d55d0c7fc64387352822e99a37ff  gcc/config/aarch64/aarch64-simd-builtins.def
  33ce4a896b77324d9be6448637daf9ca  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
*************** e2d80b89552da0c6b4cb6bede3b2e573  gcc/co
*** 3455,3470 ****
  5efdf9c0eed50224410c2d6d9f07c4c3  gcc/config/aarch64/aarch64-sve-builtins.cc
  30d08305d5bc784af521254aea449949  gcc/config/aarch64/aarch64-sve-builtins.def
  7fd6d8764884c5b95a20329cf9b10465  gcc/config/aarch64/aarch64-sve-builtins.h
! 6b4c78e39d414797929d4ce3c07354b2  gcc/config/aarch64/aarch64-sve.md
! 22e46b0f0125a4df3106ce29ae1e6be7  gcc/config/aarch64/aarch64-sve2.md
  85eca95263cb099f09b18daca655f091  gcc/config/aarch64/aarch64-sys-regs.def
  b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
! d10a350a80f8f12ee435c64d236e2767  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! f5392a2f3f5eb7a0e35fda438aa84c99  gcc/config/aarch64/aarch64.cc
  e88bf184a2d9e804f5493fe2a553b3df  gcc/config/aarch64/aarch64.h
! e5594dcb6e1edd8b514ab0d4f4de81aa  gcc/config/aarch64/aarch64.md
! ae13780a8296e9c52f9e9b8cd95dc312  gcc/config/aarch64/aarch64.opt
  21fd50b19307096b8be37549ae0f6f77  gcc/config/aarch64/aarch64.opt.urls
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
  d8c2d46b77748c711b5354380ee49819  gcc/config/aarch64/arm_bf16.h
--- 3458,3473 ----
  5efdf9c0eed50224410c2d6d9f07c4c3  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
  b301dc231a69a28202d2b7d79ea75f5d  gcc/config/aarch64/aarch64-tune.md
! 586e3b2fd446baa0a6fb8da7c8cdd660  gcc/config/aarch64/aarch64-tuning-flags.def
  a5cfcce7c9dd86a597161f8bde3497bc  gcc/config/aarch64/aarch64-vxworks.h
! 8da114e0722b72ea8d7f30df563f7a25  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
  7b468a20f0362cbe02c7699720a962fa  gcc/config/aarch64/arm_acle.h
  d8c2d46b77748c711b5354380ee49819  gcc/config/aarch64/arm_bf16.h
*************** f7165d62ef852e1929a8fc9a85c01ab2  gcc/co
*** 3488,3497 ****
  dfcdbda4a3bb64a86fdf64ce6fce0ae3  gcc/config/aarch64/geniterators.sh
  bc3b4ebfac8bfd42d3e9098f33585afd  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 30fb58dfc761ea072a37a552c0bec782  gcc/config/aarch64/iterators.md
  dccd7ab23543b643345fc7fb161eb98d  gcc/config/aarch64/predicates.md
  a4e902ee1494ba5eee811ea46ecdf995  gcc/config/aarch64/rtems.h
! 92e464bd2841e049cf1b85debd6a39a4  gcc/config/aarch64/t-aarch64
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-freebsd
  7c93b24bd00b44291884d34b3213b75e  gcc/config/aarch64/t-aarch64-linux
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-netbsd
--- 3491,3501 ----
  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
! 74ca0ed7fd56ec1d94a1a9efe5113485  gcc/config/aarch64/t-aarch64
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-freebsd
  7c93b24bd00b44291884d34b3213b75e  gcc/config/aarch64/t-aarch64-linux
  5a6fa47ba2bb65a12cd953f8edee028d  gcc/config/aarch64/t-aarch64-netbsd
*************** a40b8d46a9bba2c521b822a618ffab41  gcc/co
*** 3501,3539 ****
  1f263d211aad08e7724d93ec6ef63ed9  gcc/config/aarch64/thunderx2t99.md
  01ee7babaa32efd33b82cc9d4e474d91  gcc/config/aarch64/thunderx3t110.md
  a256904bc4af7c0fc078f42f85bcf729  gcc/config/aarch64/tsv110.md
! 370262749f0a8c412bd61b09a4c15825  gcc/config/aarch64/tuning_models/a64fx.h
! 202b8ba341c169bceb93cb89d11d0e0a  gcc/config/aarch64/tuning_models/ampere1.h
! c633e98d62352f61803e2a2dfe93c5a8  gcc/config/aarch64/tuning_models/ampere1a.h
! 7ad1c269acdfee60668f5cb93cc2aeb0  gcc/config/aarch64/tuning_models/ampere1b.h
! 9962430cb6aca61241df5d5b326713d8  gcc/config/aarch64/tuning_models/cortexa35.h
! e09fcbbb84683bbe1da505bf33e22d52  gcc/config/aarch64/tuning_models/cortexa53.h
! a1de86c0a558e79a951a6a24ed1e133a  gcc/config/aarch64/tuning_models/cortexa57.h
! a3ffc0ff21c2d3597768451a5afa4027  gcc/config/aarch64/tuning_models/cortexa72.h
! 95f68b1784447f4df0a62736209bcbe6  gcc/config/aarch64/tuning_models/cortexa73.h
! 65bc204d3d3af003377a1a5424015e9b  gcc/config/aarch64/tuning_models/cortexx925.h
! a817cc8c0648af85cd26652c17c0f063  gcc/config/aarch64/tuning_models/emag.h
! c414f4f4b0ca18716b952cdc996cd336  gcc/config/aarch64/tuning_models/exynosm1.h
! c20726a55db2926c898f89280cf7b685  gcc/config/aarch64/tuning_models/fujitsu_monaka.h
! 9f73f9910638c9e0a3139320e38ed6f0  gcc/config/aarch64/tuning_models/generic.h
! 3db39fdaa1e6c980b54f842eeff2fa0a  gcc/config/aarch64/tuning_models/generic_armv8_a.h
! 0db810e30e690da11d859a4af1caaaff  gcc/config/aarch64/tuning_models/generic_armv9_a.h
! e3084154e4d8706cd3825dad493faefd  gcc/config/aarch64/tuning_models/neoverse512tvb.h
! ce0f856b5d88ad7f8a33a6e05b88176b  gcc/config/aarch64/tuning_models/neoversen1.h
! a3d9fb503080c4d2fcb58c74d82ef235  gcc/config/aarch64/tuning_models/neoversen2.h
! b78970b203ff4a643967bb24ad8fd280  gcc/config/aarch64/tuning_models/neoversen3.h
! d1b95435bb177952f26d761fee7430d6  gcc/config/aarch64/tuning_models/neoversev1.h
! 53bd673d7fb1c3609910aed044c63115  gcc/config/aarch64/tuning_models/neoversev2.h
! c21a147250fbf237121e7c8a7d3235f7  gcc/config/aarch64/tuning_models/neoversev3.h
! c0ded296d88fb746d5a2ce61df32c849  gcc/config/aarch64/tuning_models/neoversev3ae.h
! 7384cb5a512d446afe4c8d5d99ac4735  gcc/config/aarch64/tuning_models/olympus.h
! e0ea9a60e19c47697127edd6550da663  gcc/config/aarch64/tuning_models/qdf24xx.h
! 1846be94d3382c182fb7d9a19bc9e042  gcc/config/aarch64/tuning_models/saphira.h
! 9f37e6e78ab3e5e066a76b94257321a5  gcc/config/aarch64/tuning_models/thunderx.h
! 11a566b9faf74fdd3e17cbd8482500fd  gcc/config/aarch64/tuning_models/thunderx2t99.h
! 7136df5699b8b31e7d880f1bfa9ab4f0  gcc/config/aarch64/tuning_models/thunderx3t110.h
! 8a081f4ae895a340c088b28edaca059f  gcc/config/aarch64/tuning_models/thunderxt88.h
! b0a0fde3e8ef96d695ab4fd0033110ea  gcc/config/aarch64/tuning_models/tsv110.h
! ccb8eaf7dbfa9552e6f94bb45cdf4f01  gcc/config/aarch64/tuning_models/xgene1.h
  73f622005e7fda6d36e6cc106567cf33  gcc/config/aarch64/x-aarch64
  a07ee362a4961e9d41cb0ab83553de74  gcc/config/aarch64/x-darwin
  d51a0766c060e725ac291bdfb7029579  gcc/config/alpha/alpha-modes.def
--- 3505,3543 ----
  1f263d211aad08e7724d93ec6ef63ed9  gcc/config/aarch64/thunderx2t99.md
  01ee7babaa32efd33b82cc9d4e474d91  gcc/config/aarch64/thunderx3t110.md
  a256904bc4af7c0fc078f42f85bcf729  gcc/config/aarch64/tsv110.md
! cadb474937c14f5ba8eea7f58fd5d3de  gcc/config/aarch64/tuning_models/a64fx.h
! ed27d78e6e8646185c437ab851f30bf2  gcc/config/aarch64/tuning_models/ampere1.h
! 4782af82b25ba8d7af9b09f92df8f324  gcc/config/aarch64/tuning_models/ampere1a.h
! 84b8c25f9d9f19b9957db3e25b6192e3  gcc/config/aarch64/tuning_models/ampere1b.h
! 135f2df3f211f5ef21ecdc025da79b84  gcc/config/aarch64/tuning_models/cortexa35.h
! 1cd8773e67ce163dcee545055a244c4b  gcc/config/aarch64/tuning_models/cortexa53.h
! 727f2b0a736de354ecbde8abbbaf39fd  gcc/config/aarch64/tuning_models/cortexa57.h
! 24cc3b00b8c9b02664a5e41b343600f2  gcc/config/aarch64/tuning_models/cortexa72.h
! dde8921c5393470a78beb0855ddb28bb  gcc/config/aarch64/tuning_models/cortexa73.h
! 279b18d6d0a1c42c86e3af1658f9ba96  gcc/config/aarch64/tuning_models/cortexx925.h
! b1ed1f1b06a7eb027bb504e1ad1ba11d  gcc/config/aarch64/tuning_models/emag.h
! c0a20a8f36b0e72b5be1fe8518e7c55e  gcc/config/aarch64/tuning_models/exynosm1.h
! 9df85ec4788543162a5a1054e01fdd3f  gcc/config/aarch64/tuning_models/fujitsu_monaka.h
! a1ee0043e935de6644a4db3d8fbea653  gcc/config/aarch64/tuning_models/generic.h
! 9dc467712011459c12db8e701f7e9345  gcc/config/aarch64/tuning_models/generic_armv8_a.h
! 8b2274e5510e8e52d63352160cc3446f  gcc/config/aarch64/tuning_models/generic_armv9_a.h
! af5cf08b218a58580f721de0803b2c46  gcc/config/aarch64/tuning_models/neoverse512tvb.h
! 95fd45312e7ef572279925a375492c3b  gcc/config/aarch64/tuning_models/neoversen1.h
! 5094e3bdc62674c2ee33bf0e1971b236  gcc/config/aarch64/tuning_models/neoversen2.h
! 034249608d7dffd291089278f3b5bf63  gcc/config/aarch64/tuning_models/neoversen3.h
! 470bfcf0c186ffab3e6757e5ba38302c  gcc/config/aarch64/tuning_models/neoversev1.h
! 580c319ed787494654a89603535b16eb  gcc/config/aarch64/tuning_models/neoversev2.h
! 4c0c4f0872cebbc1f03c7458d9ee68a1  gcc/config/aarch64/tuning_models/neoversev3.h
! a773c098793d3faf0c196e93fb0e1bdf  gcc/config/aarch64/tuning_models/neoversev3ae.h
! 031ac7d2898eac53b05d7540506fcbd6  gcc/config/aarch64/tuning_models/olympus.h
! cff8765d9b9b855a1d90b5496e8f559c  gcc/config/aarch64/tuning_models/qdf24xx.h
! d55f39c6f0f17b514eb02e3d34d21d13  gcc/config/aarch64/tuning_models/saphira.h
! a1d2ac92f9a8fb9d62a422b63db82278  gcc/config/aarch64/tuning_models/thunderx.h
! 805c0cd118d02f54a08903461586629e  gcc/config/aarch64/tuning_models/thunderx2t99.h
! 225acc3f2f20e75365a818eda61d9bb2  gcc/config/aarch64/tuning_models/thunderx3t110.h
! ca1d72c481ab49e8222f8d2bd7d2e7c3  gcc/config/aarch64/tuning_models/thunderxt88.h
! bbb8e488692e6dd615d4108be67b4bcc  gcc/config/aarch64/tuning_models/tsv110.h
! e0137d3599c0be4235b05f22abed7e1b  gcc/config/aarch64/tuning_models/xgene1.h
  73f622005e7fda6d36e6cc106567cf33  gcc/config/aarch64/x-aarch64
  a07ee362a4961e9d41cb0ab83553de74  gcc/config/aarch64/x-darwin
  d51a0766c060e725ac291bdfb7029579  gcc/config/alpha/alpha-modes.def
*************** b1bb4aedc65a975961957373495f8b3a  gcc/co
*** 3699,3705 ****
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! 2ceb00fd47c9ae2553581737206a0c2f  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
--- 3703,3709 ----
  e432241ef743dc9fad65a3e982e51711  gcc/config/arm/linux-gas.h
  0143017c5054dbb4839079ed89df7fc4  gcc/config/arm/marvell-pj4.md
  5b6e3779ce7193a5b2496230da7b4ef7  gcc/config/arm/mmintrin.h
! c712d243ea24536e8d936ecb76937992  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
*************** b395ed990d9e6d7c2698fdd602685d3f  gcc/co
*** 3973,3979 ****
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
  654b7f66a42c9d8a31a94dddbc21e69d  gcc/config/gcn/gcn-valu.md
! 01ed228066750cacd884939126facb9e  gcc/config/gcn/gcn.cc
  686d66a24f66638a6a8dc76ddae3acb6  gcc/config/gcn/gcn.h
  f736fc2e3a86be8105f7e8f77e5460c1  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
--- 3977,3983 ----
  ca8c1935ac88d760dc3a5b7e97558f28  gcc/config/gcn/gcn-tables.opt.urls
  23106fa0b82354400a9c82b82a9af33a  gcc/config/gcn/gcn-tree.cc
  654b7f66a42c9d8a31a94dddbc21e69d  gcc/config/gcn/gcn-valu.md
! d8a5e4785acf79ea5ad147b431fc55fd  gcc/config/gcn/gcn.cc
  686d66a24f66638a6a8dc76ddae3acb6  gcc/config/gcn/gcn.h
  f736fc2e3a86be8105f7e8f77e5460c1  gcc/config/gcn/gcn.md
  ea362cc71f1b9679e105d57822167b51  gcc/config/gcn/gcn.opt
*************** d3fb594d11281112ff8d8f304a000c4e  gcc/co
*** 4160,4183 ****
  a4a1a27264871bfba9de0f4fbdb4f3ac  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! 783951434d4582b0d666d74ee845fc5a  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! 7c6ed0dee4ccb56d115ae98caeba7a81  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
  66732512f01bad0bbb26cb3c09ec773e  gcc/config/i386/i386-isa.def
  09f791543c9ad5918bde13160f0de1df  gcc/config/i386/i386-modes.def
! af769e63b0f01ece7eccbbdb1687868a  gcc/config/i386/i386-options.cc
! 08c877d750ab52ddb4fe7c99c90d62de  gcc/config/i386/i386-options.h
  02c486451c524cfc143358e07b88cd70  gcc/config/i386/i386-opts.h
  3c7d0006f2f31d8607f2c9e74557fbee  gcc/config/i386/i386-passes.def
  8cebb1520a2af0d79c07912261577eae  gcc/config/i386/i386-protos.h
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! ff1152b8b73c88a6a94ccb515ebdcd41  gcc/config/i386/i386.cc
! c3dad483122ca944d97d1d46a6beccf4  gcc/config/i386/i386.h
  a09e6b5d7bccbe486409dda3aac21d1d  gcc/config/i386/i386.md
! 38707ff756deaf312cfeca2c52f2954e  gcc/config/i386/i386.opt
  59cb9adff8fe9d24eed1cfac0c5bf62c  gcc/config/i386/i386.opt.urls
  f22876926ff4a2cb67b105ac266c72ea  gcc/config/i386/i386elf.h
  12088706f0584b21b2bf165c3cde88e8  gcc/config/i386/ia32intrin.h
--- 4164,4187 ----
  a4a1a27264871bfba9de0f4fbdb4f3ac  gcc/config/i386/i386-c.cc
  54909bb70e074c14dcf4499a5baedc54  gcc/config/i386/i386-d.cc
  172dcd61afc5800b61ebb688838d9adc  gcc/config/i386/i386-d.h
! 1a5b0eaa2a1d0dc878d31526994b4550  gcc/config/i386/i386-expand.cc
  c9c3969c00808c9b6809fbeab3e4a1d2  gcc/config/i386/i386-expand.h
! e707f156b2c8a06da554994840710970  gcc/config/i386/i386-features.cc
  1ee34fa5f2ae92fd7d48419d8fc529f8  gcc/config/i386/i386-features.h
  66732512f01bad0bbb26cb3c09ec773e  gcc/config/i386/i386-isa.def
  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
  8cebb1520a2af0d79c07912261577eae  gcc/config/i386/i386-protos.h
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  b19c27e8a900f9eeb7d73e2bb4b8d313  gcc/config/i386/i386-rust.cc
  24065393854cd1e08e3285bd707210fe  gcc/config/i386/i386-rust.h
! afd59d4129acda1d0cfc612453d5b5e9  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
*************** b4cde95b709fc93c90bf4d6b3edc7fd0  gcc/co
*** 4287,4298 ****
  78c5d4aaa3e531354ff15f5de8bbe5f6  gcc/config/i386/x-mingw32
  1453972221e67e9b66910b97c6444e98  gcc/config/i386/x-mingw32-utf8
  458dd4e367214623fc01b5e796d65485  gcc/config/i386/x86-64.h
! 0e9b3d12cc831ff7f1e1d1f8be2e6466  gcc/config/i386/x86-tune-costs.h
  17e3f95274600e3d41c671903847d8ec  gcc/config/i386/x86-tune-sched-atom.cc
  acfa3e6ce1f37bbad35e49e06b663ea9  gcc/config/i386/x86-tune-sched-bd.cc
  13fcb5234b2d8208c12932d96efef72b  gcc/config/i386/x86-tune-sched-core.cc
  386439c1f5e6c412caa51de1d9a2c2e0  gcc/config/i386/x86-tune-sched.cc
! 3939aca78b78bac721ccbc1e23e9119d  gcc/config/i386/x86-tune.def
  95b91fd21504348ecd2f8510ebab204c  gcc/config/i386/x86gprintrin.h
  1ef1746c703bfdb9c245f7b7276b7d56  gcc/config/i386/x86intrin.h
  709155b5a0371d397baf22295493b77b  gcc/config/i386/xm-cygwin.h
--- 4291,4302 ----
  78c5d4aaa3e531354ff15f5de8bbe5f6  gcc/config/i386/x-mingw32
  1453972221e67e9b66910b97c6444e98  gcc/config/i386/x-mingw32-utf8
  458dd4e367214623fc01b5e796d65485  gcc/config/i386/x86-64.h
! 42c0a0a536b541307e24f43bb390582e  gcc/config/i386/x86-tune-costs.h
  17e3f95274600e3d41c671903847d8ec  gcc/config/i386/x86-tune-sched-atom.cc
  acfa3e6ce1f37bbad35e49e06b663ea9  gcc/config/i386/x86-tune-sched-bd.cc
  13fcb5234b2d8208c12932d96efef72b  gcc/config/i386/x86-tune-sched-core.cc
  386439c1f5e6c412caa51de1d9a2c2e0  gcc/config/i386/x86-tune-sched.cc
! 537c2dfb5d0f93958052814a1fd437ac  gcc/config/i386/x86-tune.def
  95b91fd21504348ecd2f8510ebab204c  gcc/config/i386/x86gprintrin.h
  1ef1746c703bfdb9c245f7b7276b7d56  gcc/config/i386/x86intrin.h
  709155b5a0371d397baf22295493b77b  gcc/config/i386/xm-cygwin.h
*************** d3ad067b1fa15bbce42fd3cc4499966e  gcc/co
*** 4410,4418 ****
  c72c4d71f42573934ede3a3fe4e132b1  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! f6ade76d2b651009425a004e44a4cfdf  gcc/config/loongarch/loongarch.cc
  d4fcc746efc8475a01557c5c09179c9a  gcc/config/loongarch/loongarch.h
! ec46785efb7afdd2deb34ce71a037c59  gcc/config/loongarch/loongarch.md
  7eb1817de89953d405ead07dfb2c5316  gcc/config/loongarch/loongarch.opt
  3e1c4af9b4ae813a611788681e7934f1  gcc/config/loongarch/loongarch.opt.urls
  a1ceaab52de5f1950f6c6b63c5a718ea  gcc/config/loongarch/lsx.md
--- 4414,4422 ----
  c72c4d71f42573934ede3a3fe4e132b1  gcc/config/loongarch/loongarch-str.h
  a8cd9a4a3d712802475e91e0ec9a3274  gcc/config/loongarch/loongarch-target-attr.cc
  f539c2da7e8d7a3ef7c741bceee19eed  gcc/config/loongarch/loongarch-tune.h
! a55fc44258e0f9cfb8402411445235a1  gcc/config/loongarch/loongarch.cc
  d4fcc746efc8475a01557c5c09179c9a  gcc/config/loongarch/loongarch.h
! 5f744a937e0a5911106cc265d8348b0b  gcc/config/loongarch/loongarch.md
  7eb1817de89953d405ead07dfb2c5316  gcc/config/loongarch/loongarch.opt
  3e1c4af9b4ae813a611788681e7934f1  gcc/config/loongarch/loongarch.opt.urls
  a1ceaab52de5f1950f6c6b63c5a718ea  gcc/config/loongarch/lsx.md
*************** f973e381561e255314508a55abacf3fa  gcc/co
*** 4597,4605 ****
  beaf066ed06870bef361adf40e122f78  gcc/config/mips/mips-ps-3d.md
  453ffe6fe7bd722fe86fcbd20ad8c571  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
! ada8015fb5b7a28ae8e6000f7cff5ba5  gcc/config/mips/mips.cc
  5390074a96bd88c37709897a13163810  gcc/config/mips/mips.h
! e60b3aa2a8b65b4efe7979085ee6e9ad  gcc/config/mips/mips.md
  b0ee02ac417ab7f573eb8399f8c88228  gcc/config/mips/mips.opt
  1f687c2ccb6cc2541cbbbe637fca085e  gcc/config/mips/mips.opt.urls
  d89c4346d4e58dfefe64a850c4bfdbdb  gcc/config/mips/msa.h
--- 4601,4609 ----
  beaf066ed06870bef361adf40e122f78  gcc/config/mips/mips-ps-3d.md
  453ffe6fe7bd722fe86fcbd20ad8c571  gcc/config/mips/mips-tables.opt
  216c87627424d946f6245f736be7b5f1  gcc/config/mips/mips-tables.opt.urls
! c9eb403c5f0a96a7a3ad9fc4856025fd  gcc/config/mips/mips.cc
  5390074a96bd88c37709897a13163810  gcc/config/mips/mips.h
! 500caa79972031bcc689037dab20fb2d  gcc/config/mips/mips.md
  b0ee02ac417ab7f573eb8399f8c88228  gcc/config/mips/mips.opt
  1f687c2ccb6cc2541cbbbe637fca085e  gcc/config/mips/mips.opt.urls
  d89c4346d4e58dfefe64a850c4bfdbdb  gcc/config/mips/msa.h
*************** b8805afcdac54accbc2845d9afcc06f3  gcc/co
*** 4861,4870 ****
  5da072ab23ad2c00ead12c1904bf931a  gcc/config/pru/constraints.md
  c7d2a0ff524d2118e134910f92d499bc  gcc/config/pru/predicates.md
  ecc43d433158dff36044d7980b74eaea  gcc/config/pru/pru-opts.h
! a47c1d9626258e961f58aaa938dff7c0  gcc/config/pru/pru-passes.cc
! 3806bf704354931780e8f243f2ac4b5b  gcc/config/pru/pru-passes.def
  d8610d2a280d5d48126151a545999a40  gcc/config/pru/pru-pragma.cc
! df8b52fbbd51989d1de781552c98b95d  gcc/config/pru/pru-protos.h
  26874fed3e832a5cc22d54d5018705dc  gcc/config/pru/pru.cc
  69a8d3f1d3a56cc431a0a0283ffe8285  gcc/config/pru/pru.h
  c02c28dcba5af34ad86e26f316044b17  gcc/config/pru/pru.md
--- 4865,4874 ----
  5da072ab23ad2c00ead12c1904bf931a  gcc/config/pru/constraints.md
  c7d2a0ff524d2118e134910f92d499bc  gcc/config/pru/predicates.md
  ecc43d433158dff36044d7980b74eaea  gcc/config/pru/pru-opts.h
! 47c6023154662c1550cf7c2c64e57529  gcc/config/pru/pru-passes.cc
! b51b4aa4315b4c5a6b13b61d16cbdc9b  gcc/config/pru/pru-passes.def
  d8610d2a280d5d48126151a545999a40  gcc/config/pru/pru-pragma.cc
! d85b651ce6063bd29d1705d8196631e6  gcc/config/pru/pru-protos.h
  26874fed3e832a5cc22d54d5018705dc  gcc/config/pru/pru.cc
  69a8d3f1d3a56cc431a0a0283ffe8285  gcc/config/pru/pru.h
  c02c28dcba5af34ad86e26f316044b17  gcc/config/pru/pru.md
*************** b1bc6d82a24b7b0e658a43956a37419c  gcc/co
*** 4930,4943 ****
  9638ea683767d52ade2e23fff486b0a7  gcc/config/riscv/riscv-opts.h
  c5393897179939c1b5af9631e66d78a8  gcc/config/riscv/riscv-passes.def
  121d0828b2622389b84f15f8664c88d0  gcc/config/riscv/riscv-profiles.def
! 2f7efbb0d32d75e656452347472eeb02  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  003d5626ce3adcac7ca55401c7dec2bc  gcc/config/riscv/riscv-selftests.cc
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
  f565a42da3474d73faf1ea727e2d7dcb  gcc/config/riscv/riscv-string.cc
  3b52301e3425e6de33a2436af4de6bd8  gcc/config/riscv/riscv-subset.h
! 4421697a26c0e7f7b9eac1623c99387c  gcc/config/riscv/riscv-target-attr.cc
  9f2abb48bd2f7c8491bf9617de5bde37  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
--- 4934,4947 ----
  9638ea683767d52ade2e23fff486b0a7  gcc/config/riscv/riscv-opts.h
  c5393897179939c1b5af9631e66d78a8  gcc/config/riscv/riscv-passes.def
  121d0828b2622389b84f15f8664c88d0  gcc/config/riscv/riscv-profiles.def
! 2cbcf303a04aaea69989c4b7e91d42a4  gcc/config/riscv/riscv-protos.h
  446f0f39c6f980e246ea56f1233e9271  gcc/config/riscv/riscv-scalar-crypto.def
  003d5626ce3adcac7ca55401c7dec2bc  gcc/config/riscv/riscv-selftests.cc
  da4e034d23a8f2754b1dfce0122f286e  gcc/config/riscv/riscv-shorten-memrefs.cc
  62b31689063eeeca8f0e7ae25da92d0a  gcc/config/riscv/riscv-sr.cc
  f565a42da3474d73faf1ea727e2d7dcb  gcc/config/riscv/riscv-string.cc
  3b52301e3425e6de33a2436af4de6bd8  gcc/config/riscv/riscv-subset.h
! 94d10cea518da6cdd8058f2f6f5f4290  gcc/config/riscv/riscv-target-attr.cc
  9f2abb48bd2f7c8491bf9617de5bde37  gcc/config/riscv/riscv-v.cc
  0d419e9df116fed7ce6e0ae15131417e  gcc/config/riscv/riscv-v.h
  c5f3161dedd668dfb126ffb191cfb236  gcc/config/riscv/riscv-vect-permconst.cc
*************** f51037a9e437f8e9ce7215b2da5ad4e2  gcc/co
*** 4956,4964 ****
  5a1dc434073ed565843a91456f836a9a  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! e9cb9ac87a1fc13739fb46b03fbc03d7  gcc/config/riscv/riscv.cc
  0766a701a8c90815575fae86f92cc4a6  gcc/config/riscv/riscv.h
! 464164f3b242382443bb440b81635224  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
--- 4960,4968 ----
  5a1dc434073ed565843a91456f836a9a  gcc/config/riscv/riscv-vsetvl.cc
  d120ed6eb2847b636271b3a1ef82ecbf  gcc/config/riscv/riscv-vsetvl.def
  7082a18dbfc574d47bf71f4d50dd30f9  gcc/config/riscv/riscv-zicfilp.cc
! 57acd43dc219753ed2e416ac965343ec  gcc/config/riscv/riscv.cc
  0766a701a8c90815575fae86f92cc4a6  gcc/config/riscv/riscv.h
! 3ed7ad3eba485c81e37e28497a993f02  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
*************** fe202105dd9e81b9ce8fdcc11d52c294  gcc/co
*** 4990,4996 ****
  bcf728ad2379630774fd5bb529d4ee86  gcc/config/riscv/thead-vector.md
  48f9dcd9a5cd1980bd2db7697cdb717a  gcc/config/riscv/thead.cc
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
! 77cbfbc9ab58a5e1e4112e275f18b317  gcc/config/riscv/tt-ascalon-d8.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
  272e0e076fad4b77c195a95427b2a0d8  gcc/config/riscv/vector-iterators.md
--- 4994,5000 ----
  bcf728ad2379630774fd5bb529d4ee86  gcc/config/riscv/thead-vector.md
  48f9dcd9a5cd1980bd2db7697cdb717a  gcc/config/riscv/thead.cc
  fd8e9517de64ab23821ea1284ea6d7f6  gcc/config/riscv/thead.md
! 27cf4e9b6199721b239c10c84ecdc2e4  gcc/config/riscv/tt-ascalon-d8.md
  b5e46305db1116cc1758b504ea37fe74  gcc/config/riscv/vector-bfloat16.md
  88f7597398d0c8b8b87baba5fd207996  gcc/config/riscv/vector-crypto.md
  272e0e076fad4b77c195a95427b2a0d8  gcc/config/riscv/vector-iterators.md
*************** dce39de8bb20b88ffeb8b2073101dcfe  gcc/co
*** 5123,5129 ****
  5621b2aa0be1c71c3955c4e3bad6cf49  gcc/config/rs6000/rs6000-string.cc
  062e9e612338d86d0d47a3e1131384fa  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! 0455cc02c22a47ca3b1dd910eefa4bd3  gcc/config/rs6000/rs6000.cc
  1d91827dae3ab7a332473805ac3cf40c  gcc/config/rs6000/rs6000.h
  4514b71437fdeefa2f229ece6a128945  gcc/config/rs6000/rs6000.md
  77c1c38e6705e421b8838bf19f938cef  gcc/config/rs6000/rs6000.opt
--- 5127,5133 ----
  5621b2aa0be1c71c3955c4e3bad6cf49  gcc/config/rs6000/rs6000-string.cc
  062e9e612338d86d0d47a3e1131384fa  gcc/config/rs6000/rs6000-tables.opt
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
! 8a58e14c1c15b0361fdcb4b87e72e401  gcc/config/rs6000/rs6000.cc
  1d91827dae3ab7a332473805ac3cf40c  gcc/config/rs6000/rs6000.h
  4514b71437fdeefa2f229ece6a128945  gcc/config/rs6000/rs6000.md
  77c1c38e6705e421b8838bf19f938cef  gcc/config/rs6000/rs6000.opt
*************** fa062fdcbed6412a676fa477d87ba334  gcc/co
*** 5502,5508 ****
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! ad2c7f59db9f26be33cfc80ce70beaae  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5506,5512 ----
  5d31df44fc0a5b17beb74ce0ff38e214  gcc/coroutine-passes.cc
  02796caeaa2f14f72dc3c9c23cc97dfc  gcc/coverage.cc
  722fb5fda78e55c5af5da72cad78751f  gcc/coverage.h
! 71d4d758f6466059e79bce627a5642e2  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** bcf7c5d02934e40f17edeb18d58c4d4d  gcc/cp
*** 5538,5547 ****
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  2315f072c416e98144559bbdb5312c21  gcc/cp/Make-lang.in
! e52d539d2165f7cb7850846d0bc87b86  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
! 0414c494620e2ace88b96b92413b56d0  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  5ec243f8828ba1d004801071dcfd04be  gcc/cp/constexpr.cc
  d6cbf9f4441b7af5436e73a63106b11b  gcc/cp/constraint.cc
--- 5542,5551 ----
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  2315f072c416e98144559bbdb5312c21  gcc/cp/Make-lang.in
! adb6bbfff49370bef13726dd9afc81a5  gcc/cp/call.cc
  fce8de27014c109814b3f69be6a5d4f6  gcc/cp/cfns.gperf
  68fc21d4889b1c70ccf89747b98b1fb4  gcc/cp/cfns.h
! a096f968454d0245d006f9f559a56a08  gcc/cp/class.cc
  ee3fb2cc9b9557d3895f527353160bd4  gcc/cp/config-lang.in
  5ec243f8828ba1d004801071dcfd04be  gcc/cp/constexpr.cc
  d6cbf9f4441b7af5436e73a63106b11b  gcc/cp/constraint.cc
*************** b4452de3b42a36f42cdd92b905d201b6  gcc/cp
*** 5549,5579 ****
  1e70d5eb4e7210b177ea2f5fa77983b8  gcc/cp/contracts.h
  de31e99c416f73448d9f45f50a7d4823  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
! f98c51d3f8d9c48132c285bf7353260e  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  1ec19d66166f9323ce2dd00328ed7b3f  gcc/cp/cp-objcp-common.cc
  acb30767d403ad5a0d7ae97437159ebe  gcc/cp/cp-objcp-common.h
  d5644190822515e85d926791e40530a0  gcc/cp/cp-trait.def
  d219c7261c4e8b7d170b10d9b450f256  gcc/cp/cp-tree.def
! 40c7df9b12b867dadb90784e8011b4a6  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
  b7ae95468b0150bbe2b3cba351e96a2c  gcc/cp/cvt.cc
  8e454e3f7746836df899a46698f5af3e  gcc/cp/cxx-pretty-print.cc
! 955ecfa636599a39229757737e271819  gcc/cp/cxx-pretty-print.h
  c1cc5dac36866c611933c037cc1d6f2f  gcc/cp/cxxapi-data.csv
! 58bfdeb2e0c7b8dd6e87f47294c3b0fe  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! 0684d974d6b3ca002e29615383665292  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
! 3b0c8688648a0e18bad29a56b158fc3a  gcc/cp/error.cc
  856ffef082c6d62b43386d99e03e94b0  gcc/cp/except.cc
  73d53be529221aad38fb412e9e7d1ee3  gcc/cp/expr.cc
  3b7c086cfb4ed89e6ae40a09ca796704  gcc/cp/friend.cc
  3d079dd21f8a1ab95fb2d1f96d799283  gcc/cp/g++spec.cc
  30b9ed40d39cf78b95792ef5dca2aebb  gcc/cp/gen-cxxapi-file.py
  3d6cb26f32533fe963daa0e473559f31  gcc/cp/init.cc
! a1706890eae20598ac1aeeb34cb89c59  gcc/cp/lambda.cc
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
  b1fd7f71ea0372fd8228b79f373b9e51  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
--- 5553,5583 ----
  1e70d5eb4e7210b177ea2f5fa77983b8  gcc/cp/contracts.h
  de31e99c416f73448d9f45f50a7d4823  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
! 04b058bd0b72e2fa7892f049b467f0c2  gcc/cp/cp-gimplify.cc
  3bf6da2fd9bef7475fae5ee6d9cdcf15  gcc/cp/cp-lang.cc
  0083c32822e7d365ab0074f1807e8679  gcc/cp/cp-name-hint.h
  1ec19d66166f9323ce2dd00328ed7b3f  gcc/cp/cp-objcp-common.cc
  acb30767d403ad5a0d7ae97437159ebe  gcc/cp/cp-objcp-common.h
  d5644190822515e85d926791e40530a0  gcc/cp/cp-trait.def
  d219c7261c4e8b7d170b10d9b450f256  gcc/cp/cp-tree.def
! 664886e4e5cbdaedb4f5cbb6105a95ec  gcc/cp/cp-tree.h
  e5ccdda9d62d96ac397910d0fa391b0a  gcc/cp/cp-ubsan.cc
  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
! 2f277fdf1df76ba8b8b4b40b0e4a6ba7  gcc/cp/decl.cc
  7f116fdc50b24dcb13cdcf096636aef9  gcc/cp/decl.h
! ca53d780eac3ddcf2cbaa42864f7d234  gcc/cp/decl2.cc
  691a10b3246d19925433648ba9a4ea9a  gcc/cp/dump.cc
! 3409bd183943bde1b74a44930f80406e  gcc/cp/error.cc
  856ffef082c6d62b43386d99e03e94b0  gcc/cp/except.cc
  73d53be529221aad38fb412e9e7d1ee3  gcc/cp/expr.cc
  3b7c086cfb4ed89e6ae40a09ca796704  gcc/cp/friend.cc
  3d079dd21f8a1ab95fb2d1f96d799283  gcc/cp/g++spec.cc
  30b9ed40d39cf78b95792ef5dca2aebb  gcc/cp/gen-cxxapi-file.py
  3d6cb26f32533fe963daa0e473559f31  gcc/cp/init.cc
! 312af9dd99a9ac177de3c6c65d1392d7  gcc/cp/lambda.cc
  ac5d78393361c1bcb930119a896a14ca  gcc/cp/lang-specs.h
  b1fd7f71ea0372fd8228b79f373b9e51  gcc/cp/lex.cc
  aaf76a9b03fd0532d2904aef004fd66a  gcc/cp/logic.cc
*************** aaf76a9b03fd0532d2904aef004fd66a  gcc/cp
*** 5582,5595 ****
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  0456b59fb105d3d30371131d063a685a  gcc/cp/method.cc
! e885c60e868a727125d1d19a3d050143  gcc/cp/module.cc
  552b0381f070c0ad8d92d57d098cd50f  gcc/cp/name-lookup.cc
  5a9aeceb329cf9c3d8c374b77f39f2b4  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  4e247010b8aa821446c1f2f62b45424d  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
! b4fdfedaf9ca61f866f9c458576a1dc8  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
--- 5586,5599 ----
  6c77b1fab5f6d146677090285a202a50  gcc/cp/mapper-client.h
  44e22b51797f89c9da996523a6d97f1c  gcc/cp/mapper-resolver.cc
  0456b59fb105d3d30371131d063a685a  gcc/cp/method.cc
! a767d667b481fd0940518a1948ec6e5c  gcc/cp/module.cc
  552b0381f070c0ad8d92d57d098cd50f  gcc/cp/name-lookup.cc
  5a9aeceb329cf9c3d8c374b77f39f2b4  gcc/cp/name-lookup.h
  e7fe06956aada61bcaae5168ad47a9c1  gcc/cp/operators.def
  813c253a000ee20d8d6598f56edc400e  gcc/cp/optimize.cc
  4e247010b8aa821446c1f2f62b45424d  gcc/cp/parser.cc
  db6ae85b922989f89eda229cb29e4690  gcc/cp/parser.h
! 820e2cfdf3f77a5c35a0a5e040a4bafd  gcc/cp/pt.cc
  b606903e35fe6806362fe4eee7a89fef  gcc/cp/ptree.cc
  ee1ddf1e1b9554bb1a10109ce8c6dee5  gcc/cp/rtti.cc
  9c5477f737d2c390510c3fe72454f657  gcc/cp/search.cc
*************** b58bf61fbfed45af179b7104e72a9486  gcc/cp
*** 5598,5604 ****
  2425db76c32085977eff047c982cebab  gcc/cp/std-name-hint.h
  ee9192c187b31cc5519ead8ef2a2ed74  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! efd06edefdaa485e12b0d677c6d6d2e6  gcc/cp/typeck.cc
  d5322228a4b4ea22ae20c897e9baaf69  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
--- 5602,5608 ----
  2425db76c32085977eff047c982cebab  gcc/cp/std-name-hint.h
  ee9192c187b31cc5519ead8ef2a2ed74  gcc/cp/tree.cc
  bb1304379ac1bf9a568942bc7e976e8a  gcc/cp/type-utils.h
! 1c4f49035de5b59ea8159ca5c1905b00  gcc/cp/typeck.cc
  d5322228a4b4ea22ae20c897e9baaf69  gcc/cp/typeck2.cc
  aa6906e22dc44502ca268580e5b8dfdd  gcc/cp/vtable-class-hierarchy.cc
  c74d2f6cc5dcb1bf1953c093eb903b37  gcc/cppbuiltin.cc
*************** b0ff42bf6006919b540d993e76ef7a74  gcc/di
*** 5935,5941 ****
  f804348b86b5dda4ae2b27490ef6174a  gcc/diagnostics/paths-output.cc
  51d4d6e54884c6e6761d5dc2cdffa683  gcc/diagnostics/paths.cc
  ab20f8a7e64efd9ea6670e6447014d6f  gcc/diagnostics/paths.h
! 9e239a9c60208578eecdff90f5249862  gcc/diagnostics/sarif-sink.cc
  2e5b6abdac74dd6e43e3985e6a54b648  gcc/diagnostics/sarif-sink.h
  3e342054c83a59cc481a893e6d5bd6c5  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
--- 5939,5945 ----
  f804348b86b5dda4ae2b27490ef6174a  gcc/diagnostics/paths-output.cc
  51d4d6e54884c6e6761d5dc2cdffa683  gcc/diagnostics/paths.cc
  ab20f8a7e64efd9ea6670e6447014d6f  gcc/diagnostics/paths.h
! 738ad4f4cd936bbac8c974a26b276b81  gcc/diagnostics/sarif-sink.cc
  2e5b6abdac74dd6e43e3985e6a54b648  gcc/diagnostics/sarif-sink.h
  3e342054c83a59cc481a893e6d5bd6c5  gcc/diagnostics/selftest-context.cc
  0c9931582348dcf2e668dad28878e073  gcc/diagnostics/selftest-context.h
*************** acdfc663791e4321372e79932070d05d  gcc/do
*** 5972,5978 ****
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! 405b664169204a870507f988263f9d7c  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
--- 5976,5982 ----
  81ae745aed5479afae430c578fa29055  gcc/doc/cppinternals.texi
  1a2d44757bb0f40b09493ac3863eba93  gcc/doc/cppopts.texi
  14b0532614eb25d7d84e7efd6664ecf3  gcc/doc/cppwarnopts.texi
! bb72c609d1000f866c1ed802d43b1970  gcc/doc/extend.texi
  ddcdbcb699f5252a1c1219d92d87ed8b  gcc/doc/fragments.texi
  cd346f0c279f68138ef08c7addc796de  gcc/doc/frontends.texi
  a28615d9873d98f0d5f4ef8dd3e4c39d  gcc/doc/gcc.texi
*************** ee4c7654f733cefcb73d4fd24f3e1b82  gcc/do
*** 5996,6007 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  840715392034007a3ef3fdebf22e2781  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! ccf8240fd9837b0a9d7dd63034107c2e  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
  8258127c283eb86e07e4235453e8f336  gcc/doc/libgdiagnostics/conf.py
! ad0e2d047092c8659655e677a43966ee  gcc/doc/libgdiagnostics/index.rst
  642a964912e66e816e321e71891b81ec  gcc/doc/libgdiagnostics/make.bat
  3942e6c2efaed7566fa62e036b8f62dc  gcc/doc/libgdiagnostics/topics/compatibility.rst
  4761a880e4b1105b0fdcdc91ec2a42a9  gcc/doc/libgdiagnostics/topics/diagnostic-manager.rst
--- 6000,6011 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  840715392034007a3ef3fdebf22e2781  gcc/doc/install.texi
  0f98706361e63fac2c35c2c4491eaac4  gcc/doc/install.texi2html
! 5a6ae4cd7fbc3d983bb9ae56a37630fb  gcc/doc/invoke.texi
  47f1f55b3595acf670eb6193a0cbd933  gcc/doc/languages.texi
  8783f1b0b6c204d4417b00f3b772beea  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
  8258127c283eb86e07e4235453e8f336  gcc/doc/libgdiagnostics/conf.py
! cecdb88606104c486df0fbfec20595e5  gcc/doc/libgdiagnostics/index.rst
  642a964912e66e816e321e71891b81ec  gcc/doc/libgdiagnostics/make.bat
  3942e6c2efaed7566fa62e036b8f62dc  gcc/doc/libgdiagnostics/topics/compatibility.rst
  4761a880e4b1105b0fdcdc91ec2a42a9  gcc/doc/libgdiagnostics/topics/diagnostic-manager.rst
*************** a1f65f3aec3cc5d5b6505fb976d4c216  gcc/do
*** 6034,6040 ****
  c98feb0a43876ed3ef2fca3c8448e8f8  gcc/doc/lto.texi
  26f08ad01720c082109915a4ec33c80f  gcc/doc/makefile.texi
  2f8484fc473d3a7141e34a260b920ea3  gcc/doc/match-and-simplify.texi
! a58a85b76cefc772c78803e4beced39f  gcc/doc/md.texi
  8836b7001f069e8dead6a4643108258b  gcc/doc/objc.texi
  9673b2a6dd62d5ac08afb00421e98cdb  gcc/doc/optinfo.texi
  a7117c4fee8c54e338b967886f3b2dcb  gcc/doc/options.texi
--- 6038,6044 ----
  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
*************** a44260feebffd50db9ea51aed431d69c  gcc/do
*** 6049,6056 ****
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
  7ace68f81059516a6c2c6cc8cd9fb830  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
! f42e743435ee8b98620d93a258360c66  gcc/doc/tm.texi
! 4daf70f27425e03ecbb9f0fad3e8fb62  gcc/doc/tm.texi.in
  c4168f9f01adf4dd8adc647c04107142  gcc/doc/tree-ssa.texi
  5f62752970e47d350c8cbce47123d1cf  gcc/doc/trouble.texi
  7f44041407f24d2851135ae497914475  gcc/doc/ux.texi
--- 6053,6060 ----
  bd20fd07c5ee8f444bf1d3f5e64e066a  gcc/doc/service.texi
  7ace68f81059516a6c2c6cc8cd9fb830  gcc/doc/sourcebuild.texi
  c6eb228a6da301194f3963b6d42729e7  gcc/doc/standards.texi
! 297bbf0951b15500e8c6fef4e402598b  gcc/doc/tm.texi
! e2ce87f15ada522a36af78d6d6404607  gcc/doc/tm.texi.in
  c4168f9f01adf4dd8adc647c04107142  gcc/doc/tree-ssa.texi
  5f62752970e47d350c8cbce47123d1cf  gcc/doc/trouble.texi
  7f44041407f24d2851135ae497914475  gcc/doc/ux.texi
*************** ada0afb884a142f8214291990679be13  gcc/fo
*** 6109,6115 ****
  ab65c11488de8f259592eef4bca9338b  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! 1ddadadda95b445b23128b4cd5f593b9  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6113,6119 ----
  ab65c11488de8f259592eef4bca9338b  gcc/fold-const.cc
  f23dec03425a07611492fa2c061cd7d2  gcc/fold-const.h
  cd4e6baf5d162fbd41160606055f8297  gcc/fold-mem-offsets.cc
! f55697b1e64055ed7a57b5ceb6b99113  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** aed3aedb6378a970055dff9e11eedc2d  gcc/fo
*** 6150,6156 ****
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! 87782c227997fe3666ed9e9141493acd  gcc/fortran/decl.cc
  c33e2c4c7527bec8a125dd093dc59f2a  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9f708de69558a334a8fec77d40a2a376  gcc/fortran/dump-parse-tree.cc
--- 6154,6160 ----
  b7e224f665bb5044ce35ed09435bd4fb  gcc/fortran/cpp.h
  a232f4d280ad08511e2718281b3d1ab6  gcc/fortran/data.cc
  d85e2f2fc3ee4721563bd47719063fb6  gcc/fortran/data.h
! 0ef25697737e8de23dd152e01f1aa639  gcc/fortran/decl.cc
  c33e2c4c7527bec8a125dd093dc59f2a  gcc/fortran/dependency.cc
  70111b1c7592e650c281b513c3cf2f47  gcc/fortran/dependency.h
  9f708de69558a334a8fec77d40a2a376  gcc/fortran/dump-parse-tree.cc
*************** cc253aa18378a960466507b449eb64b6  gcc/fo
*** 6187,6199 ****
  2ac54dd304f0494202ed99c637998d1d  gcc/fortran/options.cc
  44ee980cc04645c25872621b20fc36fa  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
! 1195268dd6bafe6c8398be7d7f3903b3  gcc/fortran/primary.cc
  759b86ece024d31144f0fc291f135f0d  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  71190056d6f36d3d43d4b6ed27f23032  gcc/fortran/simplify.cc
  ebfc538fb0470443c527273e8a50c2a1  gcc/fortran/st.cc
! 7fc6fb7f159830fc0d98a9cd72e5cdf9  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
  27fbaa6ecc9d498ac188da6586c2cb1b  gcc/fortran/trans-array.cc
--- 6191,6203 ----
  2ac54dd304f0494202ed99c637998d1d  gcc/fortran/options.cc
  44ee980cc04645c25872621b20fc36fa  gcc/fortran/parse.cc
  c1b40e866a8bbe611aa65278fe2508d3  gcc/fortran/parse.h
! d1e81eada4426f36095f17808a571a26  gcc/fortran/primary.cc
  759b86ece024d31144f0fc291f135f0d  gcc/fortran/resolve.cc
  8dc2391850ee95634781b6e296a096f6  gcc/fortran/scanner.cc
  3c39e0eef946c7f557ac375f23b9f3db  gcc/fortran/scanner.h
  71190056d6f36d3d43d4b6ed27f23032  gcc/fortran/simplify.cc
  ebfc538fb0470443c527273e8a50c2a1  gcc/fortran/st.cc
! 72c617ddd58e2640f57a4c4a8f0fe1f0  gcc/fortran/symbol.cc
  c9238712914e77b971fde08221a31bf7  gcc/fortran/target-memory.cc
  50451f5a575ab606948f8e72d8cc4721  gcc/fortran/target-memory.h
  27fbaa6ecc9d498ac188da6586c2cb1b  gcc/fortran/trans-array.cc
*************** f794cc4abf2da4754b43e56a62948d9a  gcc/fo
*** 6208,6214 ****
  27df041e4caff610df844e7a22e291e3  gcc/fortran/trans-openmp.cc
  ef3436c60285865c7e4a611b65ebca7d  gcc/fortran/trans-stmt.cc
  9caf8a2f93e6cf5e2a567a3aa18f957c  gcc/fortran/trans-stmt.h
! 0b405184ad3e56a1925640ad482c036e  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  47d7a4f95fe5f62d3f8d58763509ad3d  gcc/fortran/trans.cc
  8a38c2ad1fcb6836d2f0f58ff2080f22  gcc/fortran/trans.h
--- 6212,6218 ----
  27df041e4caff610df844e7a22e291e3  gcc/fortran/trans-openmp.cc
  ef3436c60285865c7e4a611b65ebca7d  gcc/fortran/trans-stmt.cc
  9caf8a2f93e6cf5e2a567a3aa18f957c  gcc/fortran/trans-stmt.h
! 3f1fc6806b5968b5a63f8bed8b3b4bcf  gcc/fortran/trans-types.cc
  422959ab20fd75df3766a03597227fd2  gcc/fortran/trans-types.h
  47d7a4f95fe5f62d3f8d58763509ad3d  gcc/fortran/trans.cc
  8a38c2ad1fcb6836d2f0f58ff2080f22  gcc/fortran/trans.h
*************** da09d1e31d3994eb3d6958074d7b7ce5  gcc/gi
*** 6300,6306 ****
  fea7635818b5d7cefd4c7a0b268a254c  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! 3e95abe4764be81478aae6852ee6a13f  gcc/gimple-fold.cc
  86c6a1d00a802fd45372d34d131819e5  gcc/gimple-fold.h
  43ad47e8cd99d438040cf6937a3cbe5e  gcc/gimple-harden-conditionals.cc
  78586a1c0ce6834da91809b77f98c6d7  gcc/gimple-harden-control-flow.cc
--- 6304,6310 ----
  fea7635818b5d7cefd4c7a0b268a254c  gcc/gimple-crc-optimization.cc
  1e3c7b3ded904be69c3703ac6d27fa44  gcc/gimple-expr.cc
  7b4f02095ce9b7a43bee8570917b9dc7  gcc/gimple-expr.h
! 4f4e9622ad39e3fc9553933d22bc28e2  gcc/gimple-fold.cc
  86c6a1d00a802fd45372d34d131819e5  gcc/gimple-fold.h
  43ad47e8cd99d438040cf6937a3cbe5e  gcc/gimple-harden-conditionals.cc
  78586a1c0ce6834da91809b77f98c6d7  gcc/gimple-harden-control-flow.cc
*************** a7fb406037fcb6153b3c205f2980edde  gcc/ha
*** 6485,6492 ****
  05faf5b4c677908ea390646f27b4bcf3  gcc/hash-table.h
  e531d2d7a846b45997d9ce4da6b88cd0  gcc/hash-traits.h
  567be238041b4ce45f03c6dbb8e40066  gcc/highlev-plugin-common.h
! bab40605909b2dfc01edcaa747fadd3e  gcc/hooks.cc
! 9d37e741e68ca676b0729bf5ab52c337  gcc/hooks.h
  88f38b44d5ea3276b162d5c2a90627e0  gcc/host-default.cc
  81180ff70e7ab751a0d3a90a29e9a832  gcc/hosthooks-def.h
  22efb32e9073f3ce01bd24f2d4b37e9a  gcc/hosthooks.h
--- 6489,6496 ----
  05faf5b4c677908ea390646f27b4bcf3  gcc/hash-table.h
  e531d2d7a846b45997d9ce4da6b88cd0  gcc/hash-traits.h
  567be238041b4ce45f03c6dbb8e40066  gcc/highlev-plugin-common.h
! 6e87d431ca42865c4be4a0bb8492aa9c  gcc/hooks.cc
! b997f8373ba0004a3b0b6df43035d40d  gcc/hooks.h
  88f38b44d5ea3276b162d5c2a90627e0  gcc/host-default.cc
  81180ff70e7ab751a0d3a90a29e9a832  gcc/hosthooks-def.h
  22efb32e9073f3ce01bd24f2d4b37e9a  gcc/hosthooks.h
*************** d4930f12a999a28238b013539b631f2f  gcc/ip
*** 6552,6558 ****
  15fb2e7205c9068dc163478055d814aa  gcc/ipa-utils.cc
  3123c1da10da09196605cf2b230afdcd  gcc/ipa-utils.h
  ee440e6aefa2af85a2a7e53c77974413  gcc/ipa-visibility.cc
! 1c6b1bd1032d2a1be3c22a87e0fb2501  gcc/ipa.cc
  c293da53973fb7a7f436f875b73a9753  gcc/ira-build.cc
  f1cdf777c45e6f0680cdad6e0c02c31a  gcc/ira-color.cc
  d57cb77872c8989b131d3c2c14a685db  gcc/ira-conflicts.cc
--- 6556,6562 ----
  15fb2e7205c9068dc163478055d814aa  gcc/ipa-utils.cc
  3123c1da10da09196605cf2b230afdcd  gcc/ipa-utils.h
  ee440e6aefa2af85a2a7e53c77974413  gcc/ipa-visibility.cc
! 32824db5845e283ff117eeb88f4acdf2  gcc/ipa.cc
  c293da53973fb7a7f436f875b73a9753  gcc/ira-build.cc
  f1cdf777c45e6f0680cdad6e0c02c31a  gcc/ira-color.cc
  d57cb77872c8989b131d3c2c14a685db  gcc/ira-conflicts.cc
*************** e44c0bf9cc0411d7bd57c6585eb6d0e4  gcc/lt
*** 6734,6740 ****
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! 3a5ac3ea31ec756db14e4f094a8a6c5d  gcc/m2/ChangeLog
  1d2d898532b0cf3b1ff9cd13a86f1e39  gcc/m2/Make-lang.in
  e212443a3231afc28440b22d94debe50  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6738,6744 ----
  b417a4bd52371186803e70c49d24764d  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! d866449e6a8ceeea3986d37c7be9071f  gcc/m2/ChangeLog
  1d2d898532b0cf3b1ff9cd13a86f1e39  gcc/m2/Make-lang.in
  e212443a3231afc28440b22d94debe50  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7700,7706 ****
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! e9a41c67e4ae6260d0e393d4f329ac98  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
--- 7704,7710 ----
  88e10618d6f39a411b34e2245b93307b  gcc/machmode.def
  550bdb35d0e034ca0050c574ba896d61  gcc/machmode.h
  486412acbbb6de10b080e31410a14f33  gcc/main.cc
! 70a639a15d49da8579a5e58f13326853  gcc/match.pd
  63bf182c7c3a100e101b2129976be89b  gcc/mcf.cc
  795fbbc034a60f5af7e79dbe3bac65a0  gcc/mem-stats-traits.h
  295dcd7618653c13dcf063266752d06f  gcc/mem-stats.h
*************** b82061b2c90528a47ea29b04cf44de77  gcc/mk
*** 7711,7717 ****
  a9772a5a6b37efbf620593d1ecb9a9a2  gcc/mode-classes.def
  1ac97ddc1ff27aeab691ccffead79f6f  gcc/mode-switching.cc
  05dd9bcbee4ec681bdb25810f43cfb53  gcc/modulo-sched.cc
! 9c6a28ae7944e5f796f3439aa2df1d22  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
  def148be0dd316c1c852d83f7fe9f6c9  gcc/objc/ChangeLog
  8d082f55b0cdfd75ea3681dfa074f5b2  gcc/objc/Make-lang.in
--- 7715,7721 ----
  a9772a5a6b37efbf620593d1ecb9a9a2  gcc/mode-classes.def
  1ac97ddc1ff27aeab691ccffead79f6f  gcc/mode-switching.cc
  05dd9bcbee4ec681bdb25810f43cfb53  gcc/modulo-sched.cc
! 23a74680fff89135d535323207234bf7  gcc/multiple_target.cc
  cc17503ba43ac2b4a57f3a09d7a25fec  gcc/mux-utils.h
  def148be0dd316c1c852d83f7fe9f6c9  gcc/objc/ChangeLog
  8d082f55b0cdfd75ea3681dfa074f5b2  gcc/objc/Make-lang.in
*************** a980acc6c0e992211a74f81526025c7e  gcc/pa
*** 7796,7802 ****
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  818628b1b793b8f87f62d0c18fd1219a  gcc/pass_manager.h
  38b9f60b5fd192ab2d5c201b4aff3f29  gcc/passes.cc
! 878f2d0101bfecf12ea867d08b703340  gcc/passes.def
  e3f908061f2b051f55381b513a49022b  gcc/path-coverage.cc
  9077bd1d4c611da16e24019cc5f1cdcd  gcc/pex.cc
  5f3fc8b9c6ba6a91676e512a41e3de7e  gcc/pex.h
--- 7800,7806 ----
  2cc794e23d80a8c9f057a7e402c65fb8  gcc/params.opt.urls
  818628b1b793b8f87f62d0c18fd1219a  gcc/pass_manager.h
  38b9f60b5fd192ab2d5c201b4aff3f29  gcc/passes.cc
! 90fcb68d869305ff42c26dc35d5affb4  gcc/passes.def
  e3f908061f2b051f55381b513a49022b  gcc/path-coverage.cc
  9077bd1d4c611da16e24019cc5f1cdcd  gcc/pex.cc
  5f3fc8b9c6ba6a91676e512a41e3de7e  gcc/pex.h
*************** a4c4b609df2262702bd9691ce3ef1b39  gcc/pr
*** 7841,7847 ****
  8b012f60c9f103ffb724c1b1d376f543  gcc/pretty-print-format-impl.h
  632683d988f73b65e11e73cc27d8fa3b  gcc/pretty-print-markup.h
  445beb21a2f28b79808b2eebd0fe4856  gcc/pretty-print-urlifier.h
! 58eef20b24ac0cfae49e2ec154e10668  gcc/pretty-print.cc
  a7b954c4a7bcd0141c6405a59ac196b7  gcc/pretty-print.h
  3612c0ba4344ce8d21ab5bab244d397b  gcc/prime-paths.cc
  a6e4e4fab174379976dcb09269c8de98  gcc/print-rtl-function.cc
--- 7845,7851 ----
  8b012f60c9f103ffb724c1b1d376f543  gcc/pretty-print-format-impl.h
  632683d988f73b65e11e73cc27d8fa3b  gcc/pretty-print-markup.h
  445beb21a2f28b79808b2eebd0fe4856  gcc/pretty-print-urlifier.h
! c2e0d17d130b20430e0357ec374becdc  gcc/pretty-print.cc
  a7b954c4a7bcd0141c6405a59ac196b7  gcc/pretty-print.h
  3612c0ba4344ce8d21ab5bab244d397b  gcc/prime-paths.cc
  a6e4e4fab174379976dcb09269c8de98  gcc/print-rtl-function.cc
*************** a5461dd81ec55dc6f56817a1f356f345  gcc/pr
*** 7850,7856 ****
  b049f30300658003f485bb43bf69c2cc  gcc/print-tree.cc
  b92d7f51ae16cdd854cf95fa6ab0f456  gcc/print-tree.h
  cd06e8a941b6bfa758b3577f67840bab  gcc/profile-count.cc
! 68d5148a556d8d408b4d7155a9f8c27b  gcc/profile-count.h
  bc21f26b6df11eea0b28a669f74f6e24  gcc/profile.cc
  cd641a4dec9a0a4cf7cf888cfa37e386  gcc/profile.h
  be6c71b25f10a45cfc8d05a37affe9ed  gcc/pta-andersen.cc
--- 7854,7860 ----
  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
*************** b1497a03867668af210c32280876fdd7  gcc/sy
*** 8519,8530 ****
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
  84051f22ca8c9ee213931106395ac151  gcc/target-hooks-macros.h
  354306a484432bca2f94887455f25599  gcc/target-insns.def
! 5d76e47656eeab889abf8256938b2e97  gcc/target.def
  5e326cfe9b9871c8077b30f9a44e6663  gcc/target.h
  36518341b4945aa5d165121235c9e14f  gcc/targhooks.cc
  f0958b8c3fce1fd760a502da6e954283  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 03fc1ff01fb8b882957f0be8c6db5258  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8523,8534 ----
  32c99c974fd34089d47160168688da1d  gcc/target-globals.h
  84051f22ca8c9ee213931106395ac151  gcc/target-hooks-macros.h
  354306a484432bca2f94887455f25599  gcc/target-insns.def
! bbef0067dbe6d8e34fb4b72617195f90  gcc/target.def
  5e326cfe9b9871c8077b30f9a44e6663  gcc/target.h
  36518341b4945aa5d165121235c9e14f  gcc/targhooks.cc
  f0958b8c3fce1fd760a502da6e954283  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! a4d9b54730187630c9169086df9edee0  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** f77090a8c54bd7c9695bd1baea42b2ad  gcc/te
*** 19877,19883 ****
  33e222185e271580e5b1227936c867ca  gcc/testsuite/c-c++-common/ubsan/align-2.c
  fff9a866ffaa3beb1d96455b3c496362  gcc/testsuite/c-c++-common/ubsan/align-3.c
  23a589389435e7f1d0daefd5a3259770  gcc/testsuite/c-c++-common/ubsan/align-4.c
! dcb530cb7f303a23cd60919969cb794b  gcc/testsuite/c-c++-common/ubsan/align-5.c
  90dde247618151c35b3bca50f7c3e3d0  gcc/testsuite/c-c++-common/ubsan/align-6.c
  a7a38e8a32e9f420307680f9fd7c64d0  gcc/testsuite/c-c++-common/ubsan/align-7.c
  30278b21084814925748c526392c249e  gcc/testsuite/c-c++-common/ubsan/align-8.c
--- 19881,19888 ----
  33e222185e271580e5b1227936c867ca  gcc/testsuite/c-c++-common/ubsan/align-2.c
  fff9a866ffaa3beb1d96455b3c496362  gcc/testsuite/c-c++-common/ubsan/align-3.c
  23a589389435e7f1d0daefd5a3259770  gcc/testsuite/c-c++-common/ubsan/align-4.c
! a1c1942e4c2e6341c0f3c9ce229db3ff  gcc/testsuite/c-c++-common/ubsan/align-5.c
! 8e08ee7824bcc3f0354e094285c52ae4  gcc/testsuite/c-c++-common/ubsan/align-5a.c
  90dde247618151c35b3bca50f7c3e3d0  gcc/testsuite/c-c++-common/ubsan/align-6.c
  a7a38e8a32e9f420307680f9fd7c64d0  gcc/testsuite/c-c++-common/ubsan/align-7.c
  30278b21084814925748c526392c249e  gcc/testsuite/c-c++-common/ubsan/align-8.c
*************** d91a981f54ab2a15c0e9427ccb338f24  gcc/te
*** 25731,25736 ****
--- 25736,25742 ----
  5272ec327005dde6e5a2aaffb7102e42  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this3.C
  85be199d2e0d4a7142fba0bb5f749ab7  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this4.C
  575f67ce02ade2344a76bcfc5971fb64  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this5.C
+ 2fdf9da2a46e065e8da8779316de871e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C
  06ba6684e3759115ec5098f38667687b  gcc/testsuite/g++.dg/cpp1y/lambda-generic-trailing1.C
  e947551033232c5abe95cce5adfd22aa  gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
  7515a5372d247dd5a94ef0626c25c2ae  gcc/testsuite/g++.dg/cpp1y/lambda-generic-uneval1.C
*************** ad90458ad42ff08d4a1c948d0770dd89  gcc/te
*** 26789,26794 ****
--- 26795,26801 ----
  4e4eee2cc98e967eb67c2b28b145f331  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda16.C
  fe56bf124d429ccaa887937cdd60d625  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda17.C
  d3a5a9df5514968709862976635c8094  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda18.C
+ 4882304f120b6e2ec91e0db6c07d5eb4  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C
  87abca8eb660254fbf201e771eef3751  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C
  e8adbb443f8b231b244ffbcd64ee7da2  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda3.C
  0a50eb80a181d4196ff68849d37d2615  gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda4.C
*************** edf4737c87df798414be7024fe3a8da9  gcc/te
*** 27191,27196 ****
--- 27198,27204 ----
  3797e31584c1026d45ee1b5b08c4188b  gcc/testsuite/g++.dg/cpp2a/concepts-conv2.C
  3dfc2b34ff14f4caaefbb3aa208ead6a  gcc/testsuite/g++.dg/cpp2a/concepts-conv3.C
  c9bd56a9892857fac63c37d445f93faa  gcc/testsuite/g++.dg/cpp2a/concepts-conv3a.C
+ 7185156beeddb2da2b8e0b8e795d890e  gcc/testsuite/g++.dg/cpp2a/concepts-conv4.C
  c7b9c33b4c64892adbf5412ad5123053  gcc/testsuite/g++.dg/cpp2a/concepts-ctad1.C
  fb0e127ecb1cec0db6d4a1f2dc191508  gcc/testsuite/g++.dg/cpp2a/concepts-ctad2.C
  b767b966d12988229b81b213bca08722  gcc/testsuite/g++.dg/cpp2a/concepts-ctad3.C
*************** d78c1de0f7d9cac90e50c0208adc2926  gcc/te
*** 32741,32746 ****
--- 32749,32757 ----
  37de4dbdbe8e0e57b0f65d374829f234  gcc/testsuite/g++.dg/modules/keyword-1_b.C
  827c75baa7a6aa915ca300a3b69c2249  gcc/testsuite/g++.dg/modules/lambda-10_a.H
  19a555ec51a2362dce69d5e03c7b04a9  gcc/testsuite/g++.dg/modules/lambda-10_b.C
+ 62e7f6f61022bc772dcc984ba06b0b3e  gcc/testsuite/g++.dg/modules/lambda-11.h
+ 8c9596d790271d8547290c1515a3350b  gcc/testsuite/g++.dg/modules/lambda-11_a.H
+ 967c2f48b085f1c18832266697fac4ee  gcc/testsuite/g++.dg/modules/lambda-11_b.C
  d40eb3b191ce03c71ec885f4126c9c01  gcc/testsuite/g++.dg/modules/lambda-1_a.C
  0c208993fd82c4dab83fb16f53f43099  gcc/testsuite/g++.dg/modules/lambda-1_b.C
  0b364ead1b387b5505e2f7bf2e5dc3b5  gcc/testsuite/g++.dg/modules/lambda-2.h
*************** e3f1bd8fef51acc6ca737521f975ab1c  gcc/te
*** 32776,32781 ****
--- 32787,32794 ----
  f691889108c3ab41c26b216899719992  gcc/testsuite/g++.dg/modules/lang-3_a.C
  29a3330000780d86555efc7480e1ea5b  gcc/testsuite/g++.dg/modules/lang-3_b.C
  7a61baf64b6b2df1f68f1344f599ce44  gcc/testsuite/g++.dg/modules/lang-3_c.C
+ f028acee4ae7cfe2d00c7bbae3a12adb  gcc/testsuite/g++.dg/modules/lang-4_a.C
+ 85f6fdb774d151ded1f900d5b64a83c4  gcc/testsuite/g++.dg/modules/lang-4_b.C
  f9e6b80b1e66a7547173ff7f3f39a78a  gcc/testsuite/g++.dg/modules/late-ret-1.H
  c363febb29cf4d3eccc01979daac4c46  gcc/testsuite/g++.dg/modules/late-ret-2_a.H
  9f2ead4d0b90ea087689b20fd95f201f  gcc/testsuite/g++.dg/modules/late-ret-2_b.H
*************** c11e5f97e7a5971cc5c5017024f54496  gcc/te
*** 43168,43187 ****
  e488781ad97c2cdafc1c66ede7aa1e0f  gcc/testsuite/g++.target/aarch64/fp8_scalar_typecheck_2.C
  4320de0414b96b162e7734443992dd38  gcc/testsuite/g++.target/aarch64/interference.C
  277b5d3e6c910137a4093c33ad09513e  gcc/testsuite/g++.target/aarch64/lane-bound-1.C
! 32454f8b53eb88a62fd52c8ef8787a0d  gcc/testsuite/g++.target/aarch64/mv-1.C
  ca19a153be1c3b13d8d571904f321ec1  gcc/testsuite/g++.target/aarch64/mv-cpu-features.C
! 38810b08abce980f7f945577bf5d7cda  gcc/testsuite/g++.target/aarch64/mv-pragma.C
! 3f3392f2e48050ab54f5d990f1d4fe2f  gcc/testsuite/g++.target/aarch64/mv-symbols1.C
! 5f1e60b72fb9c2d51a355fba7056a615  gcc/testsuite/g++.target/aarch64/mv-symbols2.C
! 8a825e45355fad6891eed9d4742ce94f  gcc/testsuite/g++.target/aarch64/mv-symbols3.C
! 4b66ce68ce05acc58db1f4d02906d94b  gcc/testsuite/g++.target/aarch64/mv-symbols4.C
! eb7f5d564a95eeabaabdc65d61d5e059  gcc/testsuite/g++.target/aarch64/mv-symbols5.C
! 92f1cf8a2598c437c67c9108ec35da66  gcc/testsuite/g++.target/aarch64/mv-warning1.C
! 9ddc27a2766539d6b6133e03f6dd33a1  gcc/testsuite/g++.target/aarch64/mvc-symbols1.C
! d245d7e3c3c19d3d947fc20f92df0eb2  gcc/testsuite/g++.target/aarch64/mvc-symbols2.C
! 57979ff34aa2692a7065daec33c925fc  gcc/testsuite/g++.target/aarch64/mvc-symbols3.C
! f25a95bd3fd87aae03957cba4cb83752  gcc/testsuite/g++.target/aarch64/mvc-symbols4.C
! b3ffd91f5d27a6d5714e2d8b581ac471  gcc/testsuite/g++.target/aarch64/mvc-warning1.C
  4d5fd415b9746bcd53f093e8282fb37d  gcc/testsuite/g++.target/aarch64/no_unique_address_1.C
  20b857cf626aad749264f74e19d94347  gcc/testsuite/g++.target/aarch64/no_unique_address_2.C
  ff91378a7ee794cf81b35b9b219bd4b2  gcc/testsuite/g++.target/aarch64/pr103147-1.C
--- 43181,43224 ----
  e488781ad97c2cdafc1c66ede7aa1e0f  gcc/testsuite/g++.target/aarch64/fp8_scalar_typecheck_2.C
  4320de0414b96b162e7734443992dd38  gcc/testsuite/g++.target/aarch64/interference.C
  277b5d3e6c910137a4093c33ad09513e  gcc/testsuite/g++.target/aarch64/lane-bound-1.C
! 1d4d4a8de3da70578c27a82a12ea16d2  gcc/testsuite/g++.target/aarch64/mv-1.C
! 58ae6c894ed5d99c839b1c81b5a97e52  gcc/testsuite/g++.target/aarch64/mv-and-mvc-error1.C
! ec07e0126ff8d719e4bd754ac0832156  gcc/testsuite/g++.target/aarch64/mv-and-mvc-error2.C
! a17023c8b8a75987e2f6e22048b1a6a1  gcc/testsuite/g++.target/aarch64/mv-and-mvc-error3.C
! f9c816e11be2c3ccda058034e7d7ced9  gcc/testsuite/g++.target/aarch64/mv-and-mvc1.C
! 5996f76c5dc2c10268e90ada8a82f601  gcc/testsuite/g++.target/aarch64/mv-and-mvc2.C
! a1a60bca035f8f311226147d1158241e  gcc/testsuite/g++.target/aarch64/mv-and-mvc3.C
! b19ce4ea0a0bc08bdd001978bf2abb12  gcc/testsuite/g++.target/aarch64/mv-and-mvc4.C
  ca19a153be1c3b13d8d571904f321ec1  gcc/testsuite/g++.target/aarch64/mv-cpu-features.C
! 8d2a32642ea29e8bd5424824b7cca34c  gcc/testsuite/g++.target/aarch64/mv-error1.C
! ea0619cbe10911dcca70e535067d6e46  gcc/testsuite/g++.target/aarch64/mv-error2.C
! 979c02e9b8d1a3dc5d30ec5b6188db42  gcc/testsuite/g++.target/aarch64/mv-error3.C
! 03d34330e3bd067c7120b1231d8e4bd6  gcc/testsuite/g++.target/aarch64/mv-error4.C
! 18706616d044ed2011f22655fba6fb73  gcc/testsuite/g++.target/aarch64/mv-error5.C
! f3dd8881f8de095d8643f79b80e59e27  gcc/testsuite/g++.target/aarch64/mv-error6.C
! 64aa4e34c460ec0610cac4f45c9601ee  gcc/testsuite/g++.target/aarch64/mv-error7.C
! bb04d310d9aeb868b6d45865338642f2  gcc/testsuite/g++.target/aarch64/mv-error8.C
! 48d1f2ca95056b77c6d78e74ad9b692f  gcc/testsuite/g++.target/aarch64/mv-pragma.C
! 745abe274e13fcf82b8d32023c43155a  gcc/testsuite/g++.target/aarch64/mv-symbols1.C
! a9a8292d84794b6548bec9bd891f0fae  gcc/testsuite/g++.target/aarch64/mv-symbols10.C
! 8621c58d2bdbe143b5688c4bb639e865  gcc/testsuite/g++.target/aarch64/mv-symbols11.C
! 42df51f18b6ac565bbc53fa33d53b929  gcc/testsuite/g++.target/aarch64/mv-symbols12.C
! 06562fb55fc2c0a4e4e0d029ae6309b3  gcc/testsuite/g++.target/aarch64/mv-symbols13.C
! acc31fb5c33dbea2d9a976e8027f43d7  gcc/testsuite/g++.target/aarch64/mv-symbols2.C
! 756567fd6adf497b7ff7a776b1fd1865  gcc/testsuite/g++.target/aarch64/mv-symbols3.C
! 034020d7a23138b6bcdb90aa1dea0722  gcc/testsuite/g++.target/aarch64/mv-symbols4.C
! e6f1fa1fe4b50498f93a4b85d7dc36ae  gcc/testsuite/g++.target/aarch64/mv-symbols5.C
! 78cd0cfd54ab7d1a1f57ee950942f25c  gcc/testsuite/g++.target/aarch64/mv-symbols6.C
! e052aeb0b1c0c71a8c0988f09fa4f73a  gcc/testsuite/g++.target/aarch64/mv-symbols7.C
! d0e48d875681155d4d876ec0000ea30f  gcc/testsuite/g++.target/aarch64/mv-symbols8.C
! 18f1f429700cdb4c752ea944f60681b3  gcc/testsuite/g++.target/aarch64/mv-symbols9.C
! d4b779e4ea92fb94762b14bbd77d1ef3  gcc/testsuite/g++.target/aarch64/mvc-error1.C
! 5d58902a540cbbcdaec186b52e664cb6  gcc/testsuite/g++.target/aarch64/mvc-error2.C
! 4efebffa315440fbfcc099a15970e251  gcc/testsuite/g++.target/aarch64/mvc-symbols1.C
! 9b82c13ebfb83bbf05485deaba395be3  gcc/testsuite/g++.target/aarch64/mvc-symbols2.C
! cb3703685c9d5d1dea7ddb9b1e75905d  gcc/testsuite/g++.target/aarch64/mvc-symbols3.C
! 894c3e02c93fdfa48d0fdbd4a413958d  gcc/testsuite/g++.target/aarch64/mvc-symbols4.C
! 1aafb43e0b8dc4fe6aedfdaeffe11794  gcc/testsuite/g++.target/aarch64/mvc-warning1.C
  4d5fd415b9746bcd53f093e8282fb37d  gcc/testsuite/g++.target/aarch64/no_unique_address_1.C
  20b857cf626aad749264f74e19d94347  gcc/testsuite/g++.target/aarch64/no_unique_address_2.C
  ff91378a7ee794cf81b35b9b219bd4b2  gcc/testsuite/g++.target/aarch64/pr103147-1.C
*************** ae8574e23abf3d9af1504b3bec6f9ec6  gcc/te
*** 43475,43485 ****
  f83ec71de661b08fc9f19ffc5630e79f  gcc/testsuite/g++.target/i386/memset-pr118276-1a.C
  8e913008098c373f3a04c6635b2c7aed  gcc/testsuite/g++.target/i386/memset-pr118276-1b.C
  c5465550486cf8ae79d0d35ba75ade1f  gcc/testsuite/g++.target/i386/memset-pr118276-1c.C
! 4e700e994b817984ed104fabbd34d2c4  gcc/testsuite/g++.target/i386/mv-symbols1.C
  c0b24207688618b815731387510d9bed  gcc/testsuite/g++.target/i386/mv-symbols2.C
! 9d62ccf3abbeb46b904b5883b04e23eb  gcc/testsuite/g++.target/i386/mv-symbols3.C
! 033c2350ee83928b63a175abd3ca193c  gcc/testsuite/g++.target/i386/mv-symbols4.C
! 67a61614c9369134cad01c88a6a753ea  gcc/testsuite/g++.target/i386/mv-symbols5.C
  d9283642c1e353810c049d439e8f3c60  gcc/testsuite/g++.target/i386/mv1.C
  c996cc7c2a4c7d02d3a6fcb89d3bc8db  gcc/testsuite/g++.target/i386/mv10.C
  5dc72e87fb3dc9a6c73b652710d87007  gcc/testsuite/g++.target/i386/mv11.C
--- 43512,43522 ----
  f83ec71de661b08fc9f19ffc5630e79f  gcc/testsuite/g++.target/i386/memset-pr118276-1a.C
  8e913008098c373f3a04c6635b2c7aed  gcc/testsuite/g++.target/i386/memset-pr118276-1b.C
  c5465550486cf8ae79d0d35ba75ade1f  gcc/testsuite/g++.target/i386/memset-pr118276-1c.C
! d1b609c14400a770816be904e2e0cee2  gcc/testsuite/g++.target/i386/mv-symbols1.C
  c0b24207688618b815731387510d9bed  gcc/testsuite/g++.target/i386/mv-symbols2.C
! b621d2ff4930c57a97eff571164cd394  gcc/testsuite/g++.target/i386/mv-symbols3.C
! 630bd692c85631af0f1159167b54178b  gcc/testsuite/g++.target/i386/mv-symbols4.C
! 7b6d81513820d7fe37461618d6e2c06e  gcc/testsuite/g++.target/i386/mv-symbols5.C
  d9283642c1e353810c049d439e8f3c60  gcc/testsuite/g++.target/i386/mv1.C
  c996cc7c2a4c7d02d3a6fcb89d3bc8db  gcc/testsuite/g++.target/i386/mv10.C
  5dc72e87fb3dc9a6c73b652710d87007  gcc/testsuite/g++.target/i386/mv11.C
*************** e8a006e5050e191010d1a6ecff4873a3  gcc/te
*** 43619,43625 ****
  a9182e6d928d363b56a91bded6231bb9  gcc/testsuite/g++.target/i386/pr59492.C
  43859c370dc310a07fe27e045648c6cd  gcc/testsuite/g++.target/i386/pr61747.C
  012e05b29975321373f213709028cdd2  gcc/testsuite/g++.target/i386/pr79173-1.C
! 92bfd1274dc31d83a99a0adf29a6639f  gcc/testsuite/g++.target/i386/pr80566-1.C
  416c15961210911f05403163d661a2e5  gcc/testsuite/g++.target/i386/pr80566-2.C
  d4f5b66ebc38c1d8b40fcbe48e7a1f34  gcc/testsuite/g++.target/i386/pr81501-1.C
  819ecf07fe897248c2153cdb9dee2292  gcc/testsuite/g++.target/i386/pr82625.C
--- 43656,43662 ----
  a9182e6d928d363b56a91bded6231bb9  gcc/testsuite/g++.target/i386/pr59492.C
  43859c370dc310a07fe27e045648c6cd  gcc/testsuite/g++.target/i386/pr61747.C
  012e05b29975321373f213709028cdd2  gcc/testsuite/g++.target/i386/pr79173-1.C
! 6f35902f19eeea336cfa082d15cc8b42  gcc/testsuite/g++.target/i386/pr80566-1.C
  416c15961210911f05403163d661a2e5  gcc/testsuite/g++.target/i386/pr80566-2.C
  d4f5b66ebc38c1d8b40fcbe48e7a1f34  gcc/testsuite/g++.target/i386/pr81501-1.C
  819ecf07fe897248c2153cdb9dee2292  gcc/testsuite/g++.target/i386/pr82625.C
*************** fb915623fe5d0c1208c53c6de33e722a  gcc/te
*** 43798,43810 ****
  13fbd035f1483c414ba4dab326db8f4e  gcc/testsuite/g++.target/riscv/call-with-empty-struct.H
  bda24fd764e95be6398892d48adf8be7  gcc/testsuite/g++.target/riscv/frflags.C
  8c94273bff4b0e14c18fa3beda218be6  gcc/testsuite/g++.target/riscv/mv-symbols1.C
! af4c0a0f5ed69a8450f83634f706f725  gcc/testsuite/g++.target/riscv/mv-symbols2.C
! 6c1a41a6c4e93f333009da1e5a752f6c  gcc/testsuite/g++.target/riscv/mv-symbols3.C
! 04c331f574d60d386cdb704652c9b8ca  gcc/testsuite/g++.target/riscv/mv-symbols4.C
! 154191254928bf4fc4658db636778670  gcc/testsuite/g++.target/riscv/mv-symbols5.C
  4d73c9b3272819998cb87dbace9b7ef3  gcc/testsuite/g++.target/riscv/mvc-symbols1.C
  2957c21b7adcadad9bd18515b4488d37  gcc/testsuite/g++.target/riscv/mvc-symbols2.C
! 70b97714537133ddff4da9419b8fa1ff  gcc/testsuite/g++.target/riscv/mvc-symbols3.C
  e24f0e502cef393d2dbeeea684980651  gcc/testsuite/g++.target/riscv/mvc-symbols4.C
  6ccfbdc79a3df2fd72928d9b5b8e49eb  gcc/testsuite/g++.target/riscv/pr115458.C
  d8ba8c12676113bab781623c9b4c8a1f  gcc/testsuite/g++.target/riscv/pr119832.C
--- 43835,43847 ----
  13fbd035f1483c414ba4dab326db8f4e  gcc/testsuite/g++.target/riscv/call-with-empty-struct.H
  bda24fd764e95be6398892d48adf8be7  gcc/testsuite/g++.target/riscv/frflags.C
  8c94273bff4b0e14c18fa3beda218be6  gcc/testsuite/g++.target/riscv/mv-symbols1.C
! 249bfd52c38dfb0d435f570090b62bd0  gcc/testsuite/g++.target/riscv/mv-symbols2.C
! 615fcfeeb8405364989999823949504e  gcc/testsuite/g++.target/riscv/mv-symbols3.C
! 5f8f93b57d4c3fa9eba2c6fc06ff3abe  gcc/testsuite/g++.target/riscv/mv-symbols4.C
! 508eeedfc6c0cc51fa2ef6d5e9e939af  gcc/testsuite/g++.target/riscv/mv-symbols5.C
  4d73c9b3272819998cb87dbace9b7ef3  gcc/testsuite/g++.target/riscv/mvc-symbols1.C
  2957c21b7adcadad9bd18515b4488d37  gcc/testsuite/g++.target/riscv/mvc-symbols2.C
! 014c61bbae64e614a8717bb82492cd74  gcc/testsuite/g++.target/riscv/mvc-symbols3.C
  e24f0e502cef393d2dbeeea684980651  gcc/testsuite/g++.target/riscv/mvc-symbols4.C
  6ccfbdc79a3df2fd72928d9b5b8e49eb  gcc/testsuite/g++.target/riscv/pr115458.C
  d8ba8c12676113bab781623c9b4c8a1f  gcc/testsuite/g++.target/riscv/pr119832.C
*************** fe1b12514d94c73791e0a965cfc2a6ce  gcc/te
*** 48428,48433 ****
--- 48465,48471 ----
  d2ae1e4b2fef59498e152708d155c0ae  gcc/testsuite/gcc.dg/Wmissing-parameter-type.c
  cae851a97f94d8ee7b316fc225a43f4d  gcc/testsuite/gcc.dg/Wmissing-profile.c
  c26e007c4c37c6a75ec7ae5f4b7772d7  gcc/testsuite/gcc.dg/Wmissing-variable-declarations.c
+ 69bffc588aca48800de6eae3fc04c7b0  gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c
  cf21dd47d3e7a7fd332e4ebdad43f47f  gcc/testsuite/gcc.dg/Wnested-externs-1.c
  7fdd14ff39022d393dca83d4d3b830d1  gcc/testsuite/gcc.dg/Wnested-externs-2.c
  2fb7927f6cb43b738ac0c6c4695c7fed  gcc/testsuite/gcc.dg/Wno-all.c
*************** fca4c7f52a46ab4ff35166ad34a2092f  gcc/te
*** 50265,50270 ****
--- 50303,50309 ----
  c4253823407e42b2041cd4f87c079b68  gcc/testsuite/gcc.dg/c23-complit-6.c
  822939abe10b0e2ccf49d5bb1a71561e  gcc/testsuite/gcc.dg/c23-complit-7.c
  6c015cd3478782c8fdd2dd00957cdea2  gcc/testsuite/gcc.dg/c23-complit-8.c
+ 7c5ebf042769fc394238e8d5d5d28eeb  gcc/testsuite/gcc.dg/c23-complit-9.c
  7d184166c5e693fa68ced1095002174d  gcc/testsuite/gcc.dg/c23-concat-1.c
  e25f5029937f09bdae8538ceadd8a34a  gcc/testsuite/gcc.dg/c23-constexpr-1.c
  5c0096f09bfd4e58c211727c4673cff6  gcc/testsuite/gcc.dg/c23-constexpr-10.c
*************** e29dfebcc91efb4a6141cc6831d3fb23  gcc/te
*** 50511,50516 ****
--- 50550,50556 ----
  017d911a779988d341ef2fe9cff89c28  gcc/testsuite/gcc.dg/c2y-incomplete-1.c
  fac4d983506fe771aab24bcdf0cd6eb5  gcc/testsuite/gcc.dg/c2y-incomplete-2.c
  41c1686e328289238d317f92a564bf4c  gcc/testsuite/gcc.dg/c2y-incomplete-3.c
+ 4f2c0342859eaf05bddab76191975b41  gcc/testsuite/gcc.dg/c2y-init-1.c
  8445ec4e0665a4141a7afa27a0e6c095  gcc/testsuite/gcc.dg/c2y-inline-1.c
  2b3f94dac416975326ac382d854e7d20  gcc/testsuite/gcc.dg/c2y-linkage-1.c
  95420752b61a34eafb01a473a5863268  gcc/testsuite/gcc.dg/c2y-linkage-2.c
*************** fdf6d2f3e4906aec199d43bc561b5a5d  gcc/te
*** 58371,58376 ****
--- 58411,58418 ----
  f68ce1034eb287a51fd088881eed3a57  gcc/testsuite/gcc.dg/sarif-output/bad-binary-op.py
  e67d08df2740253fbd775d0cecadb674  gcc/testsuite/gcc.dg/sarif-output/bad-pragma.c
  fc8a5312453aa6c9b35ca224e4f25936  gcc/testsuite/gcc.dg/sarif-output/bad-pragma.py
+ 11c406043066508f1c8c1d68038c665f  gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.c
+ f5241916ba89197ea97f36973548b7d1  gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.py
  8f8b84d2a2c3a40aa471376ef3ad86d4  gcc/testsuite/gcc.dg/sarif-output/include-chain-1-1.h
  d3793bbe48652d7af1be40301a35eae3  gcc/testsuite/gcc.dg/sarif-output/include-chain-1-2.h
  579c4b601aac5ae14e1340f88250575d  gcc/testsuite/gcc.dg/sarif-output/include-chain-1.c
*************** ec17506807c0ad221173ac50eb2b7117  gcc/te
*** 58380,58386 ****
  472dad2057e4615f1f0f19f292968314  gcc/testsuite/gcc.dg/sarif-output/include-chain-2.h
  ca7553d76ac8b430a8cfeac7248e81d5  gcc/testsuite/gcc.dg/sarif-output/include-chain-2.py
  59bdcef55b29b7c5ef21ae717011bfec  gcc/testsuite/gcc.dg/sarif-output/missing-semicolon.c
! 3af1297812eb004e222716d3f9c08a47  gcc/testsuite/gcc.dg/sarif-output/missing-semicolon.py
  9d641adf49f55dae22077122b93d6aac  gcc/testsuite/gcc.dg/sarif-output/multiple-outputs.c
  4ef5a497018b5bad6e606a1b074fb710  gcc/testsuite/gcc.dg/sarif-output/multiple-outputs.py
  cf03b659dd286192e4e791fd9d544479  gcc/testsuite/gcc.dg/sarif-output/no-diagnostics.c
--- 58422,58428 ----
  472dad2057e4615f1f0f19f292968314  gcc/testsuite/gcc.dg/sarif-output/include-chain-2.h
  ca7553d76ac8b430a8cfeac7248e81d5  gcc/testsuite/gcc.dg/sarif-output/include-chain-2.py
  59bdcef55b29b7c5ef21ae717011bfec  gcc/testsuite/gcc.dg/sarif-output/missing-semicolon.c
! 670d7794a5d54e56bb9da430aa144d80  gcc/testsuite/gcc.dg/sarif-output/missing-semicolon.py
  9d641adf49f55dae22077122b93d6aac  gcc/testsuite/gcc.dg/sarif-output/multiple-outputs.c
  4ef5a497018b5bad6e606a1b074fb710  gcc/testsuite/gcc.dg/sarif-output/multiple-outputs.py
  cf03b659dd286192e4e791fd9d544479  gcc/testsuite/gcc.dg/sarif-output/no-diagnostics.c
*************** f42b1c4e861e4207759994e34bbd715d  gcc/te
*** 59909,59914 ****
--- 59951,59957 ----
  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
  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
*************** fe71df0cf859d65ae142b535f5c03b1d  gcc/te
*** 64690,64695 ****
--- 64733,64739 ----
  6fcb6fd116ca771471e029793e00ac1a  gcc/testsuite/gcc.dg/vect/pr121767.c
  a235811cfa051b76b4dd21ee24e8cc63  gcc/testsuite/gcc.dg/vect/pr121768.c
  f1a49246f84d8fbab3d2b6aa5c89949e  gcc/testsuite/gcc.dg/vect/pr121830.c
+ 8cbd2daa28dcf298c1e79004b6ec12cf  gcc/testsuite/gcc.dg/vect/pr122023.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  915cf38408eaa7fee5013d90ec1c3251  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** f2a5ad411f636671016e7bd6ad858b09  gcc/te
*** 75893,75899 ****
  ee12e8ca5824715b40bd53e5bd847687  gcc/testsuite/gcc.target/arm/acle/pr100856.c
  c351089daa0fb41b19888a703d2c10c8  gcc/testsuite/gcc.target/arm/acle/sat_no_smlatb.c
  52edc26e05c5a7011e01e793b188666a  gcc/testsuite/gcc.target/arm/acle/saturation.c
! aba97f9977e18f8c2b8fd7ce559b513f  gcc/testsuite/gcc.target/arm/acle/simd32.c
  ad7292efdc490279906e7c95bdda09d7  gcc/testsuite/gcc.target/arm/acle/simd32_sel.c
  142b21041a309b18a6c1b2d726793af0  gcc/testsuite/gcc.target/arm/acle/stc.c
  69fb9fba690d815775812437aa4169cb  gcc/testsuite/gcc.target/arm/acle/stc2.c
--- 75937,75943 ----
  ee12e8ca5824715b40bd53e5bd847687  gcc/testsuite/gcc.target/arm/acle/pr100856.c
  c351089daa0fb41b19888a703d2c10c8  gcc/testsuite/gcc.target/arm/acle/sat_no_smlatb.c
  52edc26e05c5a7011e01e793b188666a  gcc/testsuite/gcc.target/arm/acle/saturation.c
! 47c5900b5c85abcbf51f999b553935ca  gcc/testsuite/gcc.target/arm/acle/simd32.c
  ad7292efdc490279906e7c95bdda09d7  gcc/testsuite/gcc.target/arm/acle/simd32_sel.c
  142b21041a309b18a6c1b2d726793af0  gcc/testsuite/gcc.target/arm/acle/stc.c
  69fb9fba690d815775812437aa4169cb  gcc/testsuite/gcc.target/arm/acle/stc2.c
*************** c6c1c759a610556eca59987a77084f45  gcc/te
*** 75926,75937 ****
  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
! 43365e7220d0c89c221983b0088e64ec  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
! fa5db58aee2ae5b90cd3abd3c09395cf  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
  992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
! 8f88cdcfdc86a7068680b15dfe795b54  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
  4bad0a804fdff0fae8f92991ef639b11  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-2.c
! 662f95b68b4da4be16c54b9f1ab1730c  gcc/testsuite/gcc.target/arm/asm-flag-1.c
  f3fa0198457b98710b26072dfa716655  gcc/testsuite/gcc.target/arm/asm-flag-3.c
  e9acf444a22759b1ea52f56e919edf4a  gcc/testsuite/gcc.target/arm/asm-flag-4.c
  d594ca95d990ca9c3f2561ed11ac28ca  gcc/testsuite/gcc.target/arm/asm-flag-5.c
--- 75970,75981 ----
  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
! 653ceffd9d77cb2069b6d3b069feadb4  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
  4bad0a804fdff0fae8f92991ef639b11  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-2.c
! 134e847d0826c2c0982624c72c75bdd1  gcc/testsuite/gcc.target/arm/asm-flag-1.c
  f3fa0198457b98710b26072dfa716655  gcc/testsuite/gcc.target/arm/asm-flag-3.c
  e9acf444a22759b1ea52f56e919edf4a  gcc/testsuite/gcc.target/arm/asm-flag-4.c
  d594ca95d990ca9c3f2561ed11ac28ca  gcc/testsuite/gcc.target/arm/asm-flag-5.c
*************** e4e7e97477f4d414552607a539ce1961  gcc/te
*** 76197,76203 ****
  ed2b50cc975209c386ac092f41e1de71  gcc/testsuite/gcc.target/arm/crypto-vstrq_p128.c
  b9c14ca46b24367094afd644db9eaf9a  gcc/testsuite/gcc.target/arm/csinc-1.c
  d76eded64cae6085a1584ebc332960fc  gcc/testsuite/gcc.target/arm/csinv-1.c
! f260318b0e6b2694e5754bdaaf9bcdf2  gcc/testsuite/gcc.target/arm/csneg.c
  04180c39197ac7213180f12bdd3f5a76  gcc/testsuite/gcc.target/arm/ctz.c
  e74ff9f47d550052bb53055028bce7ad  gcc/testsuite/gcc.target/arm/data-rel-1.c
  8761624a901e2a8e7d1b277c5e540b4c  gcc/testsuite/gcc.target/arm/data-rel-2.c
--- 76241,76247 ----
  ed2b50cc975209c386ac092f41e1de71  gcc/testsuite/gcc.target/arm/crypto-vstrq_p128.c
  b9c14ca46b24367094afd644db9eaf9a  gcc/testsuite/gcc.target/arm/csinc-1.c
  d76eded64cae6085a1584ebc332960fc  gcc/testsuite/gcc.target/arm/csinv-1.c
! cd168a5d88c048d7130a8b4da2202507  gcc/testsuite/gcc.target/arm/csneg.c
  04180c39197ac7213180f12bdd3f5a76  gcc/testsuite/gcc.target/arm/ctz.c
  e74ff9f47d550052bb53055028bce7ad  gcc/testsuite/gcc.target/arm/data-rel-1.c
  8761624a901e2a8e7d1b277c5e540b4c  gcc/testsuite/gcc.target/arm/data-rel-2.c
*************** aa168ab73051b82a62ea3739df9b7948  gcc/te
*** 76371,76377 ****
  dd181d86d78e4af9dc8a97924e0e82c1  gcc/testsuite/gcc.target/arm/mtp_4.c
  71071d5d08b1b5524c9a5bd22d4f3035  gcc/testsuite/gcc.target/arm/multilib.exp
  1c6df99c167e122c3ce87f610c408a1e  gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-1.c
! aff7137737a09c3bf63170f62f63d438  gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c
  781e32b800a7d858cc670f788ea1fac3  gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-3.c
  3ae19d506b071cf6f1834aae331cb5c1  gcc/testsuite/gcc.target/arm/mve/dlstp-int16x8-run.c
  dff11dcf0ade00e4fba9118e404aadf4  gcc/testsuite/gcc.target/arm/mve/dlstp-int16x8.c
--- 76415,76421 ----
  dd181d86d78e4af9dc8a97924e0e82c1  gcc/testsuite/gcc.target/arm/mtp_4.c
  71071d5d08b1b5524c9a5bd22d4f3035  gcc/testsuite/gcc.target/arm/multilib.exp
  1c6df99c167e122c3ce87f610c408a1e  gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-1.c
! 77d3814c02278cb525be3b9b8ff07d7a  gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c
  781e32b800a7d858cc670f788ea1fac3  gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-3.c
  3ae19d506b071cf6f1834aae331cb5c1  gcc/testsuite/gcc.target/arm/mve/dlstp-int16x8-run.c
  dff11dcf0ade00e4fba9118e404aadf4  gcc/testsuite/gcc.target/arm/mve/dlstp-int16x8.c
*************** fb0ced273ef16306ca42c89de5e05c4c  gcc/te
*** 77175,77190 ****
  bd107c34bdf08a12683facdbe50fc31a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f32.c
  33fd50313bb612ca3d11f34913c71905  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c
  dff25999b2db1e26ece4cb6a143094ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c
! a7885a4fa2e376a4d4dfb0fc044917d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c
! fb1a495fd4d60ccc8dd701b99908f8ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
! 53b72f9961c6673f642721664ef92661  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
! bea9e8fdf93c00a8cc8388ed6bee43d4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
  118164a375f651a3817e6fa89c2b9482  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
! 81fe049808f30df435aae27084ffd7f5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
! ca8fc175292b81b70decf89029745e9b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
! ead51aa932f54ce080e763a9d560716f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
  a3b7d26a1d14371254a3c36462110c35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
! 555de40671413a541c288777ba86e237  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
  456367251ea09d02e1b559ac0fda6cd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c
  666a634c92812f22f3e579287bf86de2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c
  90add2bcd9e418fec40810e0db7340d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c
--- 77219,77234 ----
  bd107c34bdf08a12683facdbe50fc31a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_f32.c
  33fd50313bb612ca3d11f34913c71905  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f16.c
  dff25999b2db1e26ece4cb6a143094ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmsq_m_f32.c
! b01552c789266c987118b7195eba4894  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c
! 11ba3930de77fed6c8f0d1978d3091ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
! 3ce166a22b1f4fc4c27c7993b3e59937  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
! e569afc199dbae8029c3c45ae7b1146b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
  118164a375f651a3817e6fa89c2b9482  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s64.c
! 8fa92932441a04bfec453dd3bf9027c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
! bc931a6565f86d708e452c006a2f2d0c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
! d762f3b873217bbad76a2cccbb6f3c3a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
  a3b7d26a1d14371254a3c36462110c35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
! 7a61457044c43af29fefd61e3eb1e6a3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
  456367251ea09d02e1b559ac0fda6cd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c
  666a634c92812f22f3e579287bf86de2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c
  90add2bcd9e418fec40810e0db7340d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c
*************** ec64d74d91ed819f110fdc6f8f90197e  gcc/te
*** 86022,86028 ****
  8a9325754f481fbe42e35a28aa1b451b  gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c
  9f8568a66133d16283b57d8a97c3dc49  gcc/testsuite/gcc.target/i386/pie-copyrelocs-4.c
  f91cf99532e69c383485f6be3f62eb99  gcc/testsuite/gcc.target/i386/pie.c
! bfa37686c6affd9e18d5a37af31e5391  gcc/testsuite/gcc.target/i386/pieces-memcmp-2.c
  5d062b099437fb64de565760ffa381a8  gcc/testsuite/gcc.target/i386/pieces-memcpy-1.c
  218b3a474389edf04ac9387e6402f79e  gcc/testsuite/gcc.target/i386/pieces-memcpy-10.c
  c8299c32a2fde2871d46799e54ca9c20  gcc/testsuite/gcc.target/i386/pieces-memcpy-11.c
--- 86066,86072 ----
  8a9325754f481fbe42e35a28aa1b451b  gcc/testsuite/gcc.target/i386/pie-copyrelocs-3.c
  9f8568a66133d16283b57d8a97c3dc49  gcc/testsuite/gcc.target/i386/pie-copyrelocs-4.c
  f91cf99532e69c383485f6be3f62eb99  gcc/testsuite/gcc.target/i386/pie.c
! 4173a5731d7387a48c275274bcdd9728  gcc/testsuite/gcc.target/i386/pieces-memcmp-2.c
  5d062b099437fb64de565760ffa381a8  gcc/testsuite/gcc.target/i386/pieces-memcpy-1.c
  218b3a474389edf04ac9387e6402f79e  gcc/testsuite/gcc.target/i386/pieces-memcpy-10.c
  c8299c32a2fde2871d46799e54ca9c20  gcc/testsuite/gcc.target/i386/pieces-memcpy-11.c
*************** cbaafd43310e10a7ba4ce687bafe06da  gcc/te
*** 86033,86041 ****
  437a6c001b5f504cb8a978424f9f229c  gcc/testsuite/gcc.target/i386/pieces-memcpy-16.c
  a0fc0b89838032f850b17823a354b986  gcc/testsuite/gcc.target/i386/pieces-memcpy-17.c
  7a34703054f1d16fc3e3de2cc1b87012  gcc/testsuite/gcc.target/i386/pieces-memcpy-18.c
! b5f6fb3aaac27e15ae52d9111e60d98d  gcc/testsuite/gcc.target/i386/pieces-memcpy-19.c
  279c04d20615905ca5bf2f44eb5a231d  gcc/testsuite/gcc.target/i386/pieces-memcpy-2.c
! 7e2d486487e1f536c226d8bc290fd8ad  gcc/testsuite/gcc.target/i386/pieces-memcpy-20.c
  9d90237b50551a44a67d354724502ebb  gcc/testsuite/gcc.target/i386/pieces-memcpy-21.c
  483ed3c0a5b3efe685343cb5dc87d54d  gcc/testsuite/gcc.target/i386/pieces-memcpy-22.c
  2820c9b91ec98c38843764eea07d4b75  gcc/testsuite/gcc.target/i386/pieces-memcpy-3.c
--- 86077,86085 ----
  437a6c001b5f504cb8a978424f9f229c  gcc/testsuite/gcc.target/i386/pieces-memcpy-16.c
  a0fc0b89838032f850b17823a354b986  gcc/testsuite/gcc.target/i386/pieces-memcpy-17.c
  7a34703054f1d16fc3e3de2cc1b87012  gcc/testsuite/gcc.target/i386/pieces-memcpy-18.c
! 9c7d83d79e63cea325215f50547e660a  gcc/testsuite/gcc.target/i386/pieces-memcpy-19.c
  279c04d20615905ca5bf2f44eb5a231d  gcc/testsuite/gcc.target/i386/pieces-memcpy-2.c
! 6a4eab7501e3febcfbba6ddf600581cc  gcc/testsuite/gcc.target/i386/pieces-memcpy-20.c
  9d90237b50551a44a67d354724502ebb  gcc/testsuite/gcc.target/i386/pieces-memcpy-21.c
  483ed3c0a5b3efe685343cb5dc87d54d  gcc/testsuite/gcc.target/i386/pieces-memcpy-22.c
  2820c9b91ec98c38843764eea07d4b75  gcc/testsuite/gcc.target/i386/pieces-memcpy-3.c
*************** cd997974279df052137a9eb6b7161224  gcc/te
*** 86047,86081 ****
  4a7d1a3d782fc80de77eb424e11408a6  gcc/testsuite/gcc.target/i386/pieces-memcpy-9.c
  a2c913299d352a6451775b290ec1815e  gcc/testsuite/gcc.target/i386/pieces-memset-1.c
  c41f980df778f8d15a4483383b7d8511  gcc/testsuite/gcc.target/i386/pieces-memset-10.c
! 36699977c9823831dcdc918a5f0e56e6  gcc/testsuite/gcc.target/i386/pieces-memset-11.c
  bee0e3ab99ebaaa281b982a8bb48cf7c  gcc/testsuite/gcc.target/i386/pieces-memset-12.c
  45f3a78ec4b0fcf169b2aa73d9282e11  gcc/testsuite/gcc.target/i386/pieces-memset-13.c
! f638273a9ead84bb946dc71dd7abee3a  gcc/testsuite/gcc.target/i386/pieces-memset-14.c
  d058923567ffc9376b1bfb6ba2c93340  gcc/testsuite/gcc.target/i386/pieces-memset-15.c
  b4a884cb8469cb35d8158bcb48c6e6a5  gcc/testsuite/gcc.target/i386/pieces-memset-16.c
  d6f6e6aa1a4cbbc851db78c34979ab20  gcc/testsuite/gcc.target/i386/pieces-memset-17.c
  b3f4ffe2d016b082155af80884489ade  gcc/testsuite/gcc.target/i386/pieces-memset-18.c
  c97e68fa59c5f886baf83a2e12c998f6  gcc/testsuite/gcc.target/i386/pieces-memset-19.c
! 5b2eac126ff01faf8648524199b8f0a2  gcc/testsuite/gcc.target/i386/pieces-memset-2.c
! 686f24b785543586a710fc3267072466  gcc/testsuite/gcc.target/i386/pieces-memset-20.c
  840c89477629ff575f8f87882dd486db  gcc/testsuite/gcc.target/i386/pieces-memset-21.c
  c5387195c56efb1dc4ee3aea30c3e6cc  gcc/testsuite/gcc.target/i386/pieces-memset-22.c
! 48e21ce9e2f53676f915a11496d611cf  gcc/testsuite/gcc.target/i386/pieces-memset-23.c
  27817c160b2383c67e9c259b1b249d1d  gcc/testsuite/gcc.target/i386/pieces-memset-24.c
  345c60f8fb0fd9595e972159cb0346d5  gcc/testsuite/gcc.target/i386/pieces-memset-25.c
  4f087c0b5fb21c6da53d8bd6bacd505b  gcc/testsuite/gcc.target/i386/pieces-memset-26.c
  e0bb92a526955a1789440ebafb809f58  gcc/testsuite/gcc.target/i386/pieces-memset-27.c
  1c439878817e3fad97e118a4daddf77e  gcc/testsuite/gcc.target/i386/pieces-memset-28.c
! 7018e77ee0514f6fe0ee280b75f6ab0f  gcc/testsuite/gcc.target/i386/pieces-memset-29.c
  bb245b3bbe402f7fd5e914e9819a64e1  gcc/testsuite/gcc.target/i386/pieces-memset-3.c
! dfdb563e4ff7bbe491b12bbbe647b9dc  gcc/testsuite/gcc.target/i386/pieces-memset-30.c
  4920af6ef8af7487a957349a29dbab5a  gcc/testsuite/gcc.target/i386/pieces-memset-31.c
  5a1d68c281d8c3d69242275385fca73b  gcc/testsuite/gcc.target/i386/pieces-memset-32.c
! 924e5e7e92512605ec9367e612f23eb7  gcc/testsuite/gcc.target/i386/pieces-memset-33.c
! 16f63d88d853af6b12c879750e183960  gcc/testsuite/gcc.target/i386/pieces-memset-34.c
  181b017254dd31eb2223399402d99647  gcc/testsuite/gcc.target/i386/pieces-memset-35.c
  2470a2e9bf55b8c93f14b390efa3a27b  gcc/testsuite/gcc.target/i386/pieces-memset-36.c
! 706f5c92442e84a05ac86f5049be1023  gcc/testsuite/gcc.target/i386/pieces-memset-37.c
  76256be4c59ba8c53e1f3432c5c48e2d  gcc/testsuite/gcc.target/i386/pieces-memset-38.c
  46290722ded2b4db346c0397ed4a4f6e  gcc/testsuite/gcc.target/i386/pieces-memset-39.c
  1bf16fae349290026eded0b2214cc165  gcc/testsuite/gcc.target/i386/pieces-memset-4.c
--- 86091,86125 ----
  4a7d1a3d782fc80de77eb424e11408a6  gcc/testsuite/gcc.target/i386/pieces-memcpy-9.c
  a2c913299d352a6451775b290ec1815e  gcc/testsuite/gcc.target/i386/pieces-memset-1.c
  c41f980df778f8d15a4483383b7d8511  gcc/testsuite/gcc.target/i386/pieces-memset-10.c
! 64b92480d31d1713e4ced63f50dcb992  gcc/testsuite/gcc.target/i386/pieces-memset-11.c
  bee0e3ab99ebaaa281b982a8bb48cf7c  gcc/testsuite/gcc.target/i386/pieces-memset-12.c
  45f3a78ec4b0fcf169b2aa73d9282e11  gcc/testsuite/gcc.target/i386/pieces-memset-13.c
! 044621b765b2c4905ec8f2524f4e0f0e  gcc/testsuite/gcc.target/i386/pieces-memset-14.c
  d058923567ffc9376b1bfb6ba2c93340  gcc/testsuite/gcc.target/i386/pieces-memset-15.c
  b4a884cb8469cb35d8158bcb48c6e6a5  gcc/testsuite/gcc.target/i386/pieces-memset-16.c
  d6f6e6aa1a4cbbc851db78c34979ab20  gcc/testsuite/gcc.target/i386/pieces-memset-17.c
  b3f4ffe2d016b082155af80884489ade  gcc/testsuite/gcc.target/i386/pieces-memset-18.c
  c97e68fa59c5f886baf83a2e12c998f6  gcc/testsuite/gcc.target/i386/pieces-memset-19.c
! 8bb7a2cdbd70a44a708055c032a985c3  gcc/testsuite/gcc.target/i386/pieces-memset-2.c
! 5a372288b951a009be554d0914924688  gcc/testsuite/gcc.target/i386/pieces-memset-20.c
  840c89477629ff575f8f87882dd486db  gcc/testsuite/gcc.target/i386/pieces-memset-21.c
  c5387195c56efb1dc4ee3aea30c3e6cc  gcc/testsuite/gcc.target/i386/pieces-memset-22.c
! 98c68e0b6a2c620026fb47275baba8ae  gcc/testsuite/gcc.target/i386/pieces-memset-23.c
  27817c160b2383c67e9c259b1b249d1d  gcc/testsuite/gcc.target/i386/pieces-memset-24.c
  345c60f8fb0fd9595e972159cb0346d5  gcc/testsuite/gcc.target/i386/pieces-memset-25.c
  4f087c0b5fb21c6da53d8bd6bacd505b  gcc/testsuite/gcc.target/i386/pieces-memset-26.c
  e0bb92a526955a1789440ebafb809f58  gcc/testsuite/gcc.target/i386/pieces-memset-27.c
  1c439878817e3fad97e118a4daddf77e  gcc/testsuite/gcc.target/i386/pieces-memset-28.c
! 1a885b5fc3ac3d260e8253ebe6c81fbf  gcc/testsuite/gcc.target/i386/pieces-memset-29.c
  bb245b3bbe402f7fd5e914e9819a64e1  gcc/testsuite/gcc.target/i386/pieces-memset-3.c
! 9e17f5db11177b5e7875de236be5d359  gcc/testsuite/gcc.target/i386/pieces-memset-30.c
  4920af6ef8af7487a957349a29dbab5a  gcc/testsuite/gcc.target/i386/pieces-memset-31.c
  5a1d68c281d8c3d69242275385fca73b  gcc/testsuite/gcc.target/i386/pieces-memset-32.c
! c34c46570862c2e08cd26df3722fa4ef  gcc/testsuite/gcc.target/i386/pieces-memset-33.c
! 4eac1caeead50771a30ab0b831775dd8  gcc/testsuite/gcc.target/i386/pieces-memset-34.c
  181b017254dd31eb2223399402d99647  gcc/testsuite/gcc.target/i386/pieces-memset-35.c
  2470a2e9bf55b8c93f14b390efa3a27b  gcc/testsuite/gcc.target/i386/pieces-memset-36.c
! 9a26a9dbfd66ef7e02dd7f92d9c117a7  gcc/testsuite/gcc.target/i386/pieces-memset-37.c
  76256be4c59ba8c53e1f3432c5c48e2d  gcc/testsuite/gcc.target/i386/pieces-memset-38.c
  46290722ded2b4db346c0397ed4a4f6e  gcc/testsuite/gcc.target/i386/pieces-memset-39.c
  1bf16fae349290026eded0b2214cc165  gcc/testsuite/gcc.target/i386/pieces-memset-4.c
*************** b9c9bb2f91b8846b24897588c41194c3  gcc/te
*** 86083,86095 ****
  ba492b7f152647f62ce69a59e78fe981  gcc/testsuite/gcc.target/i386/pieces-memset-41.c
  ab6fa2bfe98c867fab182d157d457706  gcc/testsuite/gcc.target/i386/pieces-memset-42.c
  d98f40e3e5aa8e8b9f5499569f688965  gcc/testsuite/gcc.target/i386/pieces-memset-43.c
! 2b47b7f82aeabc7a238642520819b3f0  gcc/testsuite/gcc.target/i386/pieces-memset-44.c
! 86947bff2a1eb3faba119670600994db  gcc/testsuite/gcc.target/i386/pieces-memset-45.c
  3647374ee718421444609e296cfa0ad2  gcc/testsuite/gcc.target/i386/pieces-memset-46.c
! 8f0614f1d8cbc09d9e6e515b9c85586c  gcc/testsuite/gcc.target/i386/pieces-memset-47.c
! fab4224ceed336ed6902793909c0c6c2  gcc/testsuite/gcc.target/i386/pieces-memset-48.c
  9f2ed79a200ad2a71bf00d1e582aae79  gcc/testsuite/gcc.target/i386/pieces-memset-49.c
! e59e962761850423b307c01f720c8e84  gcc/testsuite/gcc.target/i386/pieces-memset-5.c
  f6afe5571570af54d1d2e02c0e28d3f6  gcc/testsuite/gcc.target/i386/pieces-memset-50.c
  587ca57e48d1c64f4cb91b6203512c99  gcc/testsuite/gcc.target/i386/pieces-memset-51.c
  9a26520df010055f642c2ece0b8228da  gcc/testsuite/gcc.target/i386/pieces-memset-6.c
--- 86127,86139 ----
  ba492b7f152647f62ce69a59e78fe981  gcc/testsuite/gcc.target/i386/pieces-memset-41.c
  ab6fa2bfe98c867fab182d157d457706  gcc/testsuite/gcc.target/i386/pieces-memset-42.c
  d98f40e3e5aa8e8b9f5499569f688965  gcc/testsuite/gcc.target/i386/pieces-memset-43.c
! 594c3b20aef6081c4b6fa3cead77414c  gcc/testsuite/gcc.target/i386/pieces-memset-44.c
! 32440b246e7ae403174c7dc12f5acd38  gcc/testsuite/gcc.target/i386/pieces-memset-45.c
  3647374ee718421444609e296cfa0ad2  gcc/testsuite/gcc.target/i386/pieces-memset-46.c
! eb85498cf73e7590b98d2c24cd3bedd7  gcc/testsuite/gcc.target/i386/pieces-memset-47.c
! 126f946213273fb7469ca8d668469964  gcc/testsuite/gcc.target/i386/pieces-memset-48.c
  9f2ed79a200ad2a71bf00d1e582aae79  gcc/testsuite/gcc.target/i386/pieces-memset-49.c
! 51ed74ecbf2110bdc708d17611a3663d  gcc/testsuite/gcc.target/i386/pieces-memset-5.c
  f6afe5571570af54d1d2e02c0e28d3f6  gcc/testsuite/gcc.target/i386/pieces-memset-50.c
  587ca57e48d1c64f4cb91b6203512c99  gcc/testsuite/gcc.target/i386/pieces-memset-51.c
  9a26520df010055f642c2ece0b8228da  gcc/testsuite/gcc.target/i386/pieces-memset-6.c
*************** d6be9416b5a692dcf10f49538e62c72a  gcc/te
*** 86135,86141 ****
  a62f6df63fc4be6e37901b08c83e8ecc  gcc/testsuite/gcc.target/i386/pr100711-6.c
  21342a2d589a99d18c416c9c8cb14e73  gcc/testsuite/gcc.target/i386/pr100722.c
  293660d266715c7814b0758f24d54f69  gcc/testsuite/gcc.target/i386/pr100865-1.c
! 5897140defc06e5ec0c1df1ca44dc11b  gcc/testsuite/gcc.target/i386/pr100865-10a.c
  216788a5980b50f5799c0c181e94faa0  gcc/testsuite/gcc.target/i386/pr100865-10b.c
  f5bc9b077ed43bdc9a703fbae0412df9  gcc/testsuite/gcc.target/i386/pr100865-11a.c
  0386e3fab23fe7e48eee2cfa3b04d7ff  gcc/testsuite/gcc.target/i386/pr100865-11b.c
--- 86179,86185 ----
  a62f6df63fc4be6e37901b08c83e8ecc  gcc/testsuite/gcc.target/i386/pr100711-6.c
  21342a2d589a99d18c416c9c8cb14e73  gcc/testsuite/gcc.target/i386/pr100722.c
  293660d266715c7814b0758f24d54f69  gcc/testsuite/gcc.target/i386/pr100865-1.c
! 78f0e3844baaf11368a3e02e0e0e61a7  gcc/testsuite/gcc.target/i386/pr100865-10a.c
  216788a5980b50f5799c0c181e94faa0  gcc/testsuite/gcc.target/i386/pr100865-10b.c
  f5bc9b077ed43bdc9a703fbae0412df9  gcc/testsuite/gcc.target/i386/pr100865-11a.c
  0386e3fab23fe7e48eee2cfa3b04d7ff  gcc/testsuite/gcc.target/i386/pr100865-11b.c
*************** bfc29b0613a8b50ad05723222e02fca0  gcc/te
*** 86145,86151 ****
  609a6efc8f26048c66413a6b2cd5337e  gcc/testsuite/gcc.target/i386/pr100865-12c.c
  34a761a63cd2014d84ca26fea2853a7f  gcc/testsuite/gcc.target/i386/pr100865-2.c
  41996af8c078f368a0eaf732c28fde57  gcc/testsuite/gcc.target/i386/pr100865-3.c
! ae222d570e09d9116b7c2f9853f5e702  gcc/testsuite/gcc.target/i386/pr100865-4a.c
  7205f8bbba2d63098a67ea2e0f0a2a3a  gcc/testsuite/gcc.target/i386/pr100865-4b.c
  78ea55b8818c2a0569b83153050c7528  gcc/testsuite/gcc.target/i386/pr100865-5a.c
  d251b3b4e25ec1e31408e14d0c051fb6  gcc/testsuite/gcc.target/i386/pr100865-5b.c
--- 86189,86195 ----
  609a6efc8f26048c66413a6b2cd5337e  gcc/testsuite/gcc.target/i386/pr100865-12c.c
  34a761a63cd2014d84ca26fea2853a7f  gcc/testsuite/gcc.target/i386/pr100865-2.c
  41996af8c078f368a0eaf732c28fde57  gcc/testsuite/gcc.target/i386/pr100865-3.c
! 94272e9b3ca7a0c9f0bce53428b05cbd  gcc/testsuite/gcc.target/i386/pr100865-4a.c
  7205f8bbba2d63098a67ea2e0f0a2a3a  gcc/testsuite/gcc.target/i386/pr100865-4b.c
  78ea55b8818c2a0569b83153050c7528  gcc/testsuite/gcc.target/i386/pr100865-5a.c
  d251b3b4e25ec1e31408e14d0c051fb6  gcc/testsuite/gcc.target/i386/pr100865-5b.c
*************** a92681d4c2c5095462e23684946fe9fd  gcc/te
*** 86366,86372 ****
  6f32caf69432ac867dd42051bcfa22a8  gcc/testsuite/gcc.target/i386/pr104502.c
  2bb2b636832da9741d92fab7c29a5ffc  gcc/testsuite/gcc.target/i386/pr104551.c
  3201dd2903e2d244e5e562f28327059d  gcc/testsuite/gcc.target/i386/pr104610-2.c
! b1ac4c44221a37640b0fc40086d39cb8  gcc/testsuite/gcc.target/i386/pr104610.c
  21083ed0382a1c184689d3a9ee1bc7ee  gcc/testsuite/gcc.target/i386/pr104637.c
  1c3cbf71b8260b841b1623172a27e2dd  gcc/testsuite/gcc.target/i386/pr104658.c
  c10378a2d73ee5141b52663c27dd9ab3  gcc/testsuite/gcc.target/i386/pr104664.c
--- 86410,86416 ----
  6f32caf69432ac867dd42051bcfa22a8  gcc/testsuite/gcc.target/i386/pr104502.c
  2bb2b636832da9741d92fab7c29a5ffc  gcc/testsuite/gcc.target/i386/pr104551.c
  3201dd2903e2d244e5e562f28327059d  gcc/testsuite/gcc.target/i386/pr104610-2.c
! 36e5cfcdd25c13ac8384fda907a7960e  gcc/testsuite/gcc.target/i386/pr104610.c
  21083ed0382a1c184689d3a9ee1bc7ee  gcc/testsuite/gcc.target/i386/pr104637.c
  1c3cbf71b8260b841b1623172a27e2dd  gcc/testsuite/gcc.target/i386/pr104658.c
  c10378a2d73ee5141b52663c27dd9ab3  gcc/testsuite/gcc.target/i386/pr104664.c
*************** d4ebe08b4cb963582547d8bb5712e712  gcc/te
*** 86941,86947 ****
  5064c3ab2b92e2f20dcd604d557d738c  gcc/testsuite/gcc.target/i386/pr121208-3b.c
  12e796120a8d76792772ddd159f57f3f  gcc/testsuite/gcc.target/i386/pr121274.c
  9e5e7825e0736b7812bd1fc447f5443f  gcc/testsuite/gcc.target/i386/pr121303.c
! 284de263b19344a83d99ed3bcd71381a  gcc/testsuite/gcc.target/i386/pr121410.c
  04a35de4c1236189e2a79120121c9b9b  gcc/testsuite/gcc.target/i386/pr121497.c
  03795a7004932e2bf1d168c07ef28bcd  gcc/testsuite/gcc.target/i386/pr121540-1.c
  ddf82710152a977ee9b135ac1ed24bee  gcc/testsuite/gcc.target/i386/pr121540-2.c
--- 86985,86991 ----
  5064c3ab2b92e2f20dcd604d557d738c  gcc/testsuite/gcc.target/i386/pr121208-3b.c
  12e796120a8d76792772ddd159f57f3f  gcc/testsuite/gcc.target/i386/pr121274.c
  9e5e7825e0736b7812bd1fc447f5443f  gcc/testsuite/gcc.target/i386/pr121303.c
! d776a3b50c6898b016b55e83ce09a8f1  gcc/testsuite/gcc.target/i386/pr121410.c
  04a35de4c1236189e2a79120121c9b9b  gcc/testsuite/gcc.target/i386/pr121497.c
  03795a7004932e2bf1d168c07ef28bcd  gcc/testsuite/gcc.target/i386/pr121540-1.c
  ddf82710152a977ee9b135ac1ed24bee  gcc/testsuite/gcc.target/i386/pr121540-2.c
*************** bfd29f032b9eb39df2f519ce5350db9a  gcc/te
*** 86980,86985 ****
--- 87024,87030 ----
  dff684f08a4dc4184ca929f14d99767e  gcc/testsuite/gcc.target/i386/pr121934-4b.c
  d2e0d6146b057e3b3cbcbdb57a656d82  gcc/testsuite/gcc.target/i386/pr121934-5a.c
  9049f7716994299e74114bae9313a56b  gcc/testsuite/gcc.target/i386/pr121934-5b.c
+ de69502695dcbc8a5a967bb1c49ea11c  gcc/testsuite/gcc.target/i386/pr122021-0.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
*************** c48294add9b28d052daf4ec43673f18f  gcc/te
*** 88525,88534 ****
  91b619d01a947fbd9e263614f1000278  gcc/testsuite/gcc.target/i386/pr90773-18.c
  700d4a7ed37c9f9247b66f3967dc24c1  gcc/testsuite/gcc.target/i386/pr90773-19.c
  f80a713960f0646d35d5cd99ddc87102  gcc/testsuite/gcc.target/i386/pr90773-2.c
! 5fa9c561dde23d97ac790aff8cb8e83d  gcc/testsuite/gcc.target/i386/pr90773-20.c
! 2b433e52b2c381c1508a26267c24ea60  gcc/testsuite/gcc.target/i386/pr90773-21.c
! 9705238b58cde2fb78fac84b31c2572c  gcc/testsuite/gcc.target/i386/pr90773-22.c
! 8ef00f74aefd7db4b0e39743ffa5bc4c  gcc/testsuite/gcc.target/i386/pr90773-23.c
  02a80269a71a00c4d622823fa50ec6dd  gcc/testsuite/gcc.target/i386/pr90773-24.c
  b9441c7790b11e31803b469f75453364  gcc/testsuite/gcc.target/i386/pr90773-25.c
  7a537e43b7169ce5c42b66a28332fa9a  gcc/testsuite/gcc.target/i386/pr90773-26.c
--- 88570,88579 ----
  91b619d01a947fbd9e263614f1000278  gcc/testsuite/gcc.target/i386/pr90773-18.c
  700d4a7ed37c9f9247b66f3967dc24c1  gcc/testsuite/gcc.target/i386/pr90773-19.c
  f80a713960f0646d35d5cd99ddc87102  gcc/testsuite/gcc.target/i386/pr90773-2.c
! c7e91b176bb2dd0b36f216cf347e9afe  gcc/testsuite/gcc.target/i386/pr90773-20.c
! b9676142efad188f0bc17506be0ad85c  gcc/testsuite/gcc.target/i386/pr90773-21.c
! 8c5560428e9a937dcfe3d1ba208629f3  gcc/testsuite/gcc.target/i386/pr90773-22.c
! 34618f53c1c57804c4f2f7102c383546  gcc/testsuite/gcc.target/i386/pr90773-23.c
  02a80269a71a00c4d622823fa50ec6dd  gcc/testsuite/gcc.target/i386/pr90773-24.c
  b9441c7790b11e31803b469f75453364  gcc/testsuite/gcc.target/i386/pr90773-25.c
  7a537e43b7169ce5c42b66a28332fa9a  gcc/testsuite/gcc.target/i386/pr90773-26.c
*************** d6d72f67d9c86c49fe483871b08cc2c0  gcc/te
*** 90249,90254 ****
--- 90294,90305 ----
  ca8ab2fdd097231be9dd3f7bfdcebb7b  gcc/testsuite/gcc.target/loongarch/builtin_thread_pointer.c
  9c31e2b0b719536d37a3b720ea2be5ad  gcc/testsuite/gcc.target/loongarch/bytepick_combine.c
  828a53a834899f6cac56d99b1ec04d3b  gcc/testsuite/gcc.target/loongarch/bytepick_shift_128.c
+ 40d027f26b529d9286fbb712ca2a7342  gcc/testsuite/gcc.target/loongarch/can_inline_1.c
+ 7c4687586877a635387320076067d17b  gcc/testsuite/gcc.target/loongarch/can_inline_2.c
+ a1db2bbf996d48ba701c8efc582dad3d  gcc/testsuite/gcc.target/loongarch/can_inline_3.c
+ a1783fd9344ba40d5aa08ba39ced7efb  gcc/testsuite/gcc.target/loongarch/can_inline_4.c
+ e7871060f6568ccbaf0d8c13ef970b0e  gcc/testsuite/gcc.target/loongarch/can_inline_5.c
+ bde7ba2405e4971efe4fb79faf6333ec  gcc/testsuite/gcc.target/loongarch/can_inline_6.c
  00fd27046cb10694212b8b3aa9811204  gcc/testsuite/gcc.target/loongarch/cas-acquire.c
  866599c9e8b38ceef59bdaefc066abd5  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-1.c
  69239f6c22a4bce44a4b781091a5a1dc  gcc/testsuite/gcc.target/loongarch/cmodel-extreme-2.c
*************** a0974c41c2d76b1294fb1d2efc48bd2f  gcc/te
*** 90283,90290 ****
  b90d585b99c59a2e3f6f7cce1bac5d6a  gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-auto-tls-ld-gd.c
  aaabc24a35d397c6567d048e65a87c90  gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-call36-auto-tls-ld-gd.c
  ad5117326114603de5f0e93ecd058244  gcc/testsuite/gcc.target/loongarch/explicit-relocs-tls-desc.c
! bf8c814161752dc53f3ddcbd91714a2f  gcc/testsuite/gcc.target/loongarch/fclass-compile.c
! fb204039d7653b103ceffb23101d6d7e  gcc/testsuite/gcc.target/loongarch/fclass-run.c
  ddf9ecd0daf6d14ef98de40e7fd68f34  gcc/testsuite/gcc.target/loongarch/fcopysign.c
  e37813bf5456a9a963e9baeb8753628b  gcc/testsuite/gcc.target/loongarch/float-load.c
  256bb0a8b0fff1f225a70fa39849ccd6  gcc/testsuite/gcc.target/loongarch/flogb.c
--- 90334,90341 ----
  b90d585b99c59a2e3f6f7cce1bac5d6a  gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-auto-tls-ld-gd.c
  aaabc24a35d397c6567d048e65a87c90  gcc/testsuite/gcc.target/loongarch/explicit-relocs-medium-call36-auto-tls-ld-gd.c
  ad5117326114603de5f0e93ecd058244  gcc/testsuite/gcc.target/loongarch/explicit-relocs-tls-desc.c
! 119ee122b14ed99349ce1179d5100a0e  gcc/testsuite/gcc.target/loongarch/fclass-compile.c
! 2adb5c2fba43850d5c2b753f7a75ef1b  gcc/testsuite/gcc.target/loongarch/fclass-run.c
  ddf9ecd0daf6d14ef98de40e7fd68f34  gcc/testsuite/gcc.target/loongarch/fcopysign.c
  e37813bf5456a9a963e9baeb8753628b  gcc/testsuite/gcc.target/loongarch/float-load.c
  256bb0a8b0fff1f225a70fa39849ccd6  gcc/testsuite/gcc.target/loongarch/flogb.c
*************** dde2cba27bc4292492e4c0dd492a70e0  gcc/te
*** 90380,90385 ****
--- 90431,90437 ----
  359760e5160f4b52d2fa349806589a0d  gcc/testsuite/gcc.target/loongarch/pr121064.c
  acf1fac916847c2064b8d2bbb6535828  gcc/testsuite/gcc.target/loongarch/pr121542.c
  754f11f1533603a4d550b593afc0c673  gcc/testsuite/gcc.target/loongarch/pr121634.c
+ d1eee63ffd26f53d2b788cb0eb55f5a6  gcc/testsuite/gcc.target/loongarch/pr121875.c
  1dd25b33f6fd8d4c4dc750865d86f404  gcc/testsuite/gcc.target/loongarch/pr121906.c
  1eac553341d725c6e59615b593aedb0d  gcc/testsuite/gcc.target/loongarch/pragma-push-pop.c
  3adba2a8ae6f671eb22ec8228777c1ac  gcc/testsuite/gcc.target/loongarch/prolog-opt.c
*************** e29cf040ff47381ec220169736b7446a  gcc/te
*** 91298,91303 ****
--- 91350,91356 ----
  6a6ce5a5256ee007497a783c1382b893  gcc/testsuite/gcc.target/mips/mips-minamaxa.c
  f66b68d537d5e2ad33f2dc0f9e3914a7  gcc/testsuite/gcc.target/mips/mips-minmax1.c
  ec45a33fcd22a3352ccedca890054f42  gcc/testsuite/gcc.target/mips/mips-minmax2.c
+ 3de1aeb6add591d9503ba7210563c97d  gcc/testsuite/gcc.target/mips/mips-msubf.c
  ac0eac27ce36577271214325207ba1f6  gcc/testsuite/gcc.target/mips/mips-nonpic/README
  0e86fc6b72b862d940296b6decd5d983  gcc/testsuite/gcc.target/mips/mips-nonpic/main-1.c
  84eb9316a2c541350e627b08dd891336  gcc/testsuite/gcc.target/mips/mips-nonpic/main-10.c
*************** c4ac04d8c733f747b25b5f56130e96a6  gcc/te
*** 91347,91356 ****
  61309df197bd69375b9390be669c2859  gcc/testsuite/gcc.target/mips/mips16-attributes-6.c
  0d2e7e54ca55ba8f4126d2168560cb54  gcc/testsuite/gcc.target/mips/mips16-attributes.c
  07ba7e6d8ae3ebf058722d2b5d276292  gcc/testsuite/gcc.target/mips/mips16e-extends.c
! a7510ef1991cfa9c9824c280d6a977e2  gcc/testsuite/gcc.target/mips/mips16e2-cache.c
! 78a7aac3f3e38a7d49c7318bf45dc97f  gcc/testsuite/gcc.target/mips/mips16e2-cmov.c
! 39d6de185b9fa5aaf8fc776a8ab76b77  gcc/testsuite/gcc.target/mips/mips16e2-gp.c
! 4eb4d2540c6bf19f8a39f3cd5734a1d7  gcc/testsuite/gcc.target/mips/mips16e2.c
  0960e18594df8b61a3087d8d4f347f1c  gcc/testsuite/gcc.target/mips/mips32-dsp-accinit-1.c
  3dc69728f988eb5b16cf78b02d604c45  gcc/testsuite/gcc.target/mips/mips32-dsp-accinit-2.c
  30497bf44801046ae08202eee83ee391  gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
--- 91400,91409 ----
  61309df197bd69375b9390be669c2859  gcc/testsuite/gcc.target/mips/mips16-attributes-6.c
  0d2e7e54ca55ba8f4126d2168560cb54  gcc/testsuite/gcc.target/mips/mips16-attributes.c
  07ba7e6d8ae3ebf058722d2b5d276292  gcc/testsuite/gcc.target/mips/mips16e-extends.c
! 5e94074c36e953a2fc931ba449069058  gcc/testsuite/gcc.target/mips/mips16e2-cache.c
! 10e4b945efe227096bee076b7de113e4  gcc/testsuite/gcc.target/mips/mips16e2-cmov.c
! 4b4bbe14c5b5a1233f822546decb20b2  gcc/testsuite/gcc.target/mips/mips16e2-gp.c
! 8a18e5ffc1322fe13c6407675f92cfbe  gcc/testsuite/gcc.target/mips/mips16e2.c
  0960e18594df8b61a3087d8d4f347f1c  gcc/testsuite/gcc.target/mips/mips32-dsp-accinit-1.c
  3dc69728f988eb5b16cf78b02d604c45  gcc/testsuite/gcc.target/mips/mips32-dsp-accinit-2.c
  30497bf44801046ae08202eee83ee391  gcc/testsuite/gcc.target/mips/mips32-dsp-run.c
*************** d946887666581a01ba252e6f7f60ff15  gcc/te
*** 91516,91521 ****
--- 91569,91575 ----
  ae0e3bf279bfdc631da5f4c109d681d3  gcc/testsuite/gcc.target/mips/pr82981.c
  d16ca6ac6a955a86b18beecc197b9ccf  gcc/testsuite/gcc.target/mips/pr88349.c
  883d2c60e32348644a3be6f91c7e2b65  gcc/testsuite/gcc.target/mips/pr91769.c
+ eb60b05f029f5cbd0dbadc2472f4ed8d  gcc/testsuite/gcc.target/mips/pr99217.c
  a3d18616f89634c190f4bb31b9165dbc  gcc/testsuite/gcc.target/mips/r10k-cache-barrier-1.c
  668f845b2b56ba796d8efa350bd5f072  gcc/testsuite/gcc.target/mips/r10k-cache-barrier-10.c
  32ddce9e3a3bbe0a7c0283da638073ae  gcc/testsuite/gcc.target/mips/r10k-cache-barrier-11.c
*************** a71f924d37c55643c417681737768eee  gcc/te
*** 94686,94698 ****
  6b66e7c3542bcb548f7be2dc15327a78  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-1.c
  8c19dc6643f242dac0f633e28aed3859  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-2.c
  b76541e78d6c0a4a83f038a91722260c  gcc/testsuite/gcc.target/pru/lshiftrtdi-1.c
! 3ef624a9acc199b79a2e7fdb3d02524e  gcc/testsuite/gcc.target/pru/mabi-ti-1.c
! 139ed36d4d0fc027ab815f8bbfd4ab0f  gcc/testsuite/gcc.target/pru/mabi-ti-2.c
! 19eab9f9f5dfcf20929abd7149593d5d  gcc/testsuite/gcc.target/pru/mabi-ti-3.c
  2aedf3d3d162d1199881386fb1b8dea6  gcc/testsuite/gcc.target/pru/mabi-ti-4.c
! 1540ee6c974fb4e808afaaef37a52835  gcc/testsuite/gcc.target/pru/mabi-ti-5.c
! 76eb68b6c145a36a9dda4bdc30703da6  gcc/testsuite/gcc.target/pru/mabi-ti-6.c
! a5d8400fbc1e042d4b59d52b3b6e800b  gcc/testsuite/gcc.target/pru/mabi-ti-7.c
  42d8d99a0e73a3a6d3751b7543369b21  gcc/testsuite/gcc.target/pru/minrt-1.c
  87e159b16768d67c3f3c34b2ba3b8354  gcc/testsuite/gcc.target/pru/minrt-2.c
  3c447d71c9dbea654422b220051c773d  gcc/testsuite/gcc.target/pru/minrt-3.c
--- 94740,94756 ----
  6b66e7c3542bcb548f7be2dc15327a78  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-1.c
  8c19dc6643f242dac0f633e28aed3859  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-2.c
  b76541e78d6c0a4a83f038a91722260c  gcc/testsuite/gcc.target/pru/lshiftrtdi-1.c
! 6932f7fce6c443f0bf0311d62b51f17d  gcc/testsuite/gcc.target/pru/mabi-ti-1.c
! 904c471d0d2b167535127117f4491907  gcc/testsuite/gcc.target/pru/mabi-ti-11.c
! 901e62817ac6f5bf01e71887fd225a2f  gcc/testsuite/gcc.target/pru/mabi-ti-12.c
! 6ae40782f369503bd4e50e8004238e60  gcc/testsuite/gcc.target/pru/mabi-ti-2.c
! 7bb892064da78563aa2326b6d555e4a3  gcc/testsuite/gcc.target/pru/mabi-ti-3.c
  2aedf3d3d162d1199881386fb1b8dea6  gcc/testsuite/gcc.target/pru/mabi-ti-4.c
! 7e241dd67d0e43eecda8778237fc30f1  gcc/testsuite/gcc.target/pru/mabi-ti-5.c
! 2fd14696206d973c8b8f6243a1fbf68b  gcc/testsuite/gcc.target/pru/mabi-ti-6.c
! a0ddd4d4af5dc8819cb7f610be61a493  gcc/testsuite/gcc.target/pru/mabi-ti-7.c
! f55f7776340776c2c6c8e95f64add536  gcc/testsuite/gcc.target/pru/mabi-ti-8.c
! 69430092bd3ad25727d7df931bb1eea6  gcc/testsuite/gcc.target/pru/mabi-ti-9.c
  42d8d99a0e73a3a6d3751b7543369b21  gcc/testsuite/gcc.target/pru/minrt-1.c
  87e159b16768d67c3f3c34b2ba3b8354  gcc/testsuite/gcc.target/pru/minrt-2.c
  3c447d71c9dbea654422b220051c773d  gcc/testsuite/gcc.target/pru/minrt-3.c
*************** d8e76b4cd45daa82499151eedc966298  gcc/te
*** 95843,95849 ****
--- 95901,95910 ----
  6437d8ec53cc1530c20baacd9ca47eba  gcc/testsuite/gcc.target/riscv/pr121113.c
  25c459137bd9938c72fff727f3c7b5d4  gcc/testsuite/gcc.target/riscv/pr121160.c
  0b64699a31b25d6d22c6908dabe89a74  gcc/testsuite/gcc.target/riscv/pr121531.c
+ 772299c8bb90d3144f704368bdbc7dff  gcc/testsuite/gcc.target/riscv/pr121778-1.c
+ 49f89ac2be2926412e68fbe76976697f  gcc/testsuite/gcc.target/riscv/pr121778-2.c
  052b9719ef24512ba3a9a1495eebcb2a  gcc/testsuite/gcc.target/riscv/pr121878.c
+ 5da4efb1b887254a32f3e50ca5a0ea7e  gcc/testsuite/gcc.target/riscv/pr121982.c
  ea89beffad7d3445e7faf4e7b1b31944  gcc/testsuite/gcc.target/riscv/pr121983.c
  37a08389ba95284cc27832767dfc1430  gcc/testsuite/gcc.target/riscv/pr43644.c
  db206807e7e87fc388e039471812c6e0  gcc/testsuite/gcc.target/riscv/pr58727.c
*************** ae253cdb3b48e6898f25a6a884085caf  gcc/te
*** 100420,100428 ****
--- 100481,100498 ----
  46f39225e1d986ce206163d2f348ac1e  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv32.c
  cbe5fc9dc5bb96c2c91e2afdfa0a7c81  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-5-u8-from-u64.rv64.c
  9247bd53000cbd57332fcfa13602fb82  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u128.c
+ 9a183539857b831db1646e520d9a53ce  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u32.c
+ 9f4bcf22c54f1c2603ed739e25d47c04  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv32.c
+ 86e7e2707b933d361f3a08eee7d7744d  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv64.c
  e0389e6eb531cc3123ab18dc40b9ce8c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u128.c
+ bfa214e835df04a9526323412b239e0f  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv32.c
+ b041ce7fa9c02872d2037f0a6531c56f  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv64.c
  8e58b1d36cce34fdbef559241201e4ce  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u64-from-u128.c
  d1bf56463c7251298be6700786292ee2  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u128.c
+ f08f0341d3d7d898dcbbd582622f1741  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u16.c
+ 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
  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
*************** c2ca006bc7edb3f2955e6195faa37d32  gcc/te
*** 100461,100469 ****
--- 100531,100545 ----
  59365e028b7d97757228ecf92633684b  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u32.c
  ef26294b4e42f4cda3877129c397e6b6  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-5-u8-from-u64.c
  5070cd9304c2ae1039e021a535b3fc46  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u128.c
+ 805500b2603ee28decca3b2715393a6c  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u32.c
+ c4f94dff2a5d24fc9665e137cf1205e9  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u64.c
  1839efee75434bd5f24727cef120cd7e  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u32-from-u128.c
+ 992ed4ae72316594f2644752f0437a28  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u32-from-u64.c
  bb5ec1f458c12fce3953f4abdff7370e  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u64-from-u128.c
  5070cd9304c2ae1039e021a535b3fc46  gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u128.c
+ 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
  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
*************** c8ca7a67e0b9c502e7883c6187a3b1f3  gcc/te
*** 109670,109676 ****
  f69f56fb4872918c466c7554afc79da9  gcc/testsuite/gfortran.dg/deferred_character_36.f90
  0c1889dba05d51d0a09b189a6caa16c0  gcc/testsuite/gfortran.dg/deferred_character_37.f90
  51fc8b5f96812427754c555184ed2c63  gcc/testsuite/gfortran.dg/deferred_character_38.f90
! e771f7628a938e44ac0c994b8c7b8a3e  gcc/testsuite/gfortran.dg/deferred_character_39.f90
  5eede6c791f6d272034f9b84850ac6af  gcc/testsuite/gfortran.dg/deferred_character_4.f90
  981b809300de368e8fac65be4b40099c  gcc/testsuite/gfortran.dg/deferred_character_5.f90
  b8df78111bec4d4d4b97da6a15228361  gcc/testsuite/gfortran.dg/deferred_character_6.f90
--- 109746,109752 ----
  f69f56fb4872918c466c7554afc79da9  gcc/testsuite/gfortran.dg/deferred_character_36.f90
  0c1889dba05d51d0a09b189a6caa16c0  gcc/testsuite/gfortran.dg/deferred_character_37.f90
  51fc8b5f96812427754c555184ed2c63  gcc/testsuite/gfortran.dg/deferred_character_38.f90
! 215823acf008351c1205acdb4e513f5e  gcc/testsuite/gfortran.dg/deferred_character_39.f90
  5eede6c791f6d272034f9b84850ac6af  gcc/testsuite/gfortran.dg/deferred_character_4.f90
  981b809300de368e8fac65be4b40099c  gcc/testsuite/gfortran.dg/deferred_character_5.f90
  b8df78111bec4d4d4b97da6a15228361  gcc/testsuite/gfortran.dg/deferred_character_6.f90
*************** c81eb638a36b687e5dc5d831b100a2ae  gcc/te
*** 113173,113179 ****
  21fba33fca53db94c9d9c501ea7a1a0d  gcc/testsuite/gfortran.dg/pdt_45.f03
  3d693f5ae134fee41983008264ef3bb0  gcc/testsuite/gfortran.dg/pdt_46.f03
  743c13d00cb00139a1f209ced4c4ee65  gcc/testsuite/gfortran.dg/pdt_47.f03
! 653560ec66bbc42c537d8cc5c9b66aae  gcc/testsuite/gfortran.dg/pdt_48.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
--- 113249,113255 ----
  21fba33fca53db94c9d9c501ea7a1a0d  gcc/testsuite/gfortran.dg/pdt_45.f03
  3d693f5ae134fee41983008264ef3bb0  gcc/testsuite/gfortran.dg/pdt_46.f03
  743c13d00cb00139a1f209ced4c4ee65  gcc/testsuite/gfortran.dg/pdt_47.f03
! 6300d0e63eabdd0e66d6748d290dfdd3  gcc/testsuite/gfortran.dg/pdt_48.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
*************** f2ba2e64941d368a0af432859dc114fe  gcc/te
*** 113322,113327 ****
--- 113398,113404 ----
  b624133cafd19857eb2915c507731455  gcc/testsuite/gfortran.dg/pr103504.f90
  0ca27f571c157feff083b371f4147538  gcc/testsuite/gfortran.dg/pr103505.f90
  bb48aa0d2e0434d5fff259663b128e23  gcc/testsuite/gfortran.dg/pr103506_1.f90
+ 28a2da8782b99d7cb750c9809c9acb09  gcc/testsuite/gfortran.dg/pr103508.f90
  dc7a57f897711dfb7a3fba377198c10c  gcc/testsuite/gfortran.dg/pr103588.f90
  a27b232d198fc2463c04af17903b1b4c  gcc/testsuite/gfortran.dg/pr103606.f90
  ea7b00fcccc1df091b8087b16e502d92  gcc/testsuite/gfortran.dg/pr103607.f90
*************** aa943f2bec85bb461999d2cb2adfc73a  gcc/te
*** 115099,115104 ****
--- 115176,115182 ----
  701cab3628ee98dbcccc1d64e72d4ed6  gcc/testsuite/gfortran.dg/submodule_31.f08
  2d0d1435c8fc29f13f4d8d923dcdddc5  gcc/testsuite/gfortran.dg/submodule_32.f08
  e87560f12976c9545d8b7ae479b2618c  gcc/testsuite/gfortran.dg/submodule_33.f08
+ ce6def9eadc42b1a4cd9adf6d9fe55ee  gcc/testsuite/gfortran.dg/submodule_34.f90
  68f9f70d888318a31160ba732171726f  gcc/testsuite/gfortran.dg/submodule_4.f08
  d470cf2de70b478f82f67f0729c09b76  gcc/testsuite/gfortran.dg/submodule_5.f08
  125419a41557152ac79de8af903ef20a  gcc/testsuite/gfortran.dg/submodule_6.f08
*************** e5dab780574c0d74817ec92d13624028  gcc/te
*** 123231,123237 ****
  b6b809ba55fffd705af5519134a20e8a  gcc/testsuite/libgdiagnostics.dg/test-error.c
  4be086e5364c44565ef31bdccbf38795  gcc/testsuite/libgdiagnostics.dg/test-error.cc
  0d4eeb7f9b5b7e98c20124552bfe3d7d  gcc/testsuite/libgdiagnostics.dg/test-example-1.c
! 6668a83974b655e154128e4e04835943  gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint-c.py
  a94d6ed40eb56b13b3aa84af9140e7aa  gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint.c
  5f31b3ade9fbfb9d91ff8c2e2453e3b9  gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint.cc
  7eaf1baff5b689a5908671384535941e  gcc/testsuite/libgdiagnostics.dg/test-helpers++.h
--- 123309,123315 ----
  b6b809ba55fffd705af5519134a20e8a  gcc/testsuite/libgdiagnostics.dg/test-error.c
  4be086e5364c44565ef31bdccbf38795  gcc/testsuite/libgdiagnostics.dg/test-error.cc
  0d4eeb7f9b5b7e98c20124552bfe3d7d  gcc/testsuite/libgdiagnostics.dg/test-example-1.c
! 936e4ff3a50edcb8d81d2ad5076a701d  gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint-c.py
  a94d6ed40eb56b13b3aa84af9140e7aa  gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint.c
  5f31b3ade9fbfb9d91ff8c2e2453e3b9  gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint.cc
  7eaf1baff5b689a5908671384535941e  gcc/testsuite/libgdiagnostics.dg/test-helpers++.h
*************** c724c8becbea9eec0f806e3335942c32  gcc/tr
*** 125841,125847 ****
  b8450f3f71eba56c45cfa47b8a520ef2  gcc/tree-ssa-alias-compare.h
  1e7d1b7025bec7ac1b3ef3e07d75b4ec  gcc/tree-ssa-alias.cc
  9d359861d05b5dfbc59cbf45c70feb0f  gcc/tree-ssa-alias.h
! 71051582e10271aed20de0c0dd941c99  gcc/tree-ssa-ccp.cc
  0facf771754439bdf307ff1c5ae92cb5  gcc/tree-ssa-ccp.h
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
  44217fe298d550aecd4800f65391c931  gcc/tree-ssa-coalesce.h
--- 125919,125925 ----
  b8450f3f71eba56c45cfa47b8a520ef2  gcc/tree-ssa-alias-compare.h
  1e7d1b7025bec7ac1b3ef3e07d75b4ec  gcc/tree-ssa-alias.cc
  9d359861d05b5dfbc59cbf45c70feb0f  gcc/tree-ssa-alias.h
! c985687279cce7b8e312d1db5b519ac0  gcc/tree-ssa-ccp.cc
  0facf771754439bdf307ff1c5ae92cb5  gcc/tree-ssa-ccp.h
  56468d0bf8f8f4c754ea03008cc6c0eb  gcc/tree-ssa-coalesce.cc
  44217fe298d550aecd4800f65391c931  gcc/tree-ssa-coalesce.h
*************** fbcc93539b376489c1256eb8cf2d4800  gcc/tr
*** 125870,125876 ****
  57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! 7338d27cec6bb97f637438cf4345eda3  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
--- 125948,125954 ----
  57dcd3919dadb6f23e2bcefe55f7cd14  gcc/tree-ssa-loop-unswitch.cc
  2f97e7f187f4f4cce48b71489ef542a0  gcc/tree-ssa-loop.cc
  538146c17730f67ffcc58afdfcc93712  gcc/tree-ssa-loop.h
! 889e8ffdba46e492407a92ae3df97ceb  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
*************** bc94d7017980d97ff957feb308ae771c  gcc/tr
*** 125881,125887 ****
  fc4f0e674e345822394ee5645ce22429  gcc/tree-ssa-propagate.h
  128e45b0a401ad495d13d7de1062bd6e  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
! d0eb9de4eedf03bc98d9f63d2f4b4682  gcc/tree-ssa-sccvn.cc
  952cb2484413ce2cf094a52b596dc078  gcc/tree-ssa-sccvn.h
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
--- 125959,125965 ----
  fc4f0e674e345822394ee5645ce22429  gcc/tree-ssa-propagate.h
  128e45b0a401ad495d13d7de1062bd6e  gcc/tree-ssa-reassoc.cc
  258492cd7ef04be49374ea1e670f3b5b  gcc/tree-ssa-reassoc.h
! 117d2a484c92d24ea615d38abecb9f62  gcc/tree-ssa-sccvn.cc
  952cb2484413ce2cf094a52b596dc078  gcc/tree-ssa-sccvn.h
  a27c58eccc3d8929767feb76dc99399f  gcc/tree-ssa-scopedtables.cc
  aa25adbcb019dd38a66ce237df54ae1d  gcc/tree-ssa-scopedtables.h
*************** c98debbdc978c10e8934f3b4fb7e2504  gcc/tr
*** 125917,125935 ****
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  f840a486e62fde7baf6f487e0c0912bb  gcc/tree-vect-loop-manip.cc
  14395a99ace54a81840d19607f9d79a7  gcc/tree-vect-loop.cc
! 7ee8dcefd015e579a263a22081671ddb  gcc/tree-vect-patterns.cc
  f0e64752211e2caf975148f28e7b4caf  gcc/tree-vect-slp-patterns.cc
  bdbb899ad6a9db173421fa2bd75d520c  gcc/tree-vect-slp.cc
! f9822faaca6647e08c430d57e311d7e9  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  317f74f101effd03e454446f484bb840  gcc/tree-vectorizer.cc
  4a828e4ebe4daa8ffadaeeb2311baaea  gcc/tree-vectorizer.h
  1bed475667cbd8dee00c3b7da964ca5b  gcc/tree-vrp.cc
  a19edad681d27130bd2a0d83768ac946  gcc/tree-vrp.h
! 7d052ce623433f7f7d8b9e0bd53415cc  gcc/tree.cc
  2b3067f4ee14760d08fdfee4eb6b8a00  gcc/tree.def
! 8928e1b061e537e34f6dccda9abc9c78  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
  84205f5a5b424f30ce8c527b234e3f94  gcc/tristate.cc
  ea37ace5dddab6f4b2b9608516bebc35  gcc/tristate.h
--- 125995,126013 ----
  5d8bb0df796ceea958fd65c5aedb5bce  gcc/tree-vect-generic.cc
  f840a486e62fde7baf6f487e0c0912bb  gcc/tree-vect-loop-manip.cc
  14395a99ace54a81840d19607f9d79a7  gcc/tree-vect-loop.cc
! 7ea0fa1340a67ccdeb68550f5c873ce3  gcc/tree-vect-patterns.cc
  f0e64752211e2caf975148f28e7b4caf  gcc/tree-vect-slp-patterns.cc
  bdbb899ad6a9db173421fa2bd75d520c  gcc/tree-vect-slp.cc
! 6f2bae7a65b7aa3e8404d07d7f664f22  gcc/tree-vect-stmts.cc
  c8efeee600d612c4bae8dda4bd45ee54  gcc/tree-vector-builder.cc
  258611ff1e83cc7680e8c9f033499665  gcc/tree-vector-builder.h
  317f74f101effd03e454446f484bb840  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
! f73dafbfada467e2c9b4b1909524d7eb  gcc/tree.h
  b642c83968cda285afc700da2fb276d5  gcc/treestruct.def
  84205f5a5b424f30ce8c527b234e3f94  gcc/tristate.cc
  ea37ace5dddab6f4b2b9608516bebc35  gcc/tristate.h
*************** aaf0af38ca06cc1703c89538b7bcca5b  libbac
*** 126178,126184 ****
  5a71ff6f0fd1766e96f55eb563d3ebd5  libbacktrace/edtest2.c
  2340e85e632b477107fb87f1cda296d3  libbacktrace/elf.c
  962fabf4ee4a08a430a7eebba3665f31  libbacktrace/fileline.c
! 4fefdf2c043fdefb2736e03efee4b2c3  libbacktrace/filetype.awk
  132482064e1f62e11dedf7f5f0d763ab  libbacktrace/install-debuginfo-for-buildid.sh.in
  ccbe1ee456955e502f963737ace9dfce  libbacktrace/instrumented_alloc.c
  802884d8bf3d8975553371886fd801d4  libbacktrace/internal.h
--- 126256,126262 ----
  5a71ff6f0fd1766e96f55eb563d3ebd5  libbacktrace/edtest2.c
  2340e85e632b477107fb87f1cda296d3  libbacktrace/elf.c
  962fabf4ee4a08a430a7eebba3665f31  libbacktrace/fileline.c
! 2101239b2b163b2ca53d5ae30bbfaadf  libbacktrace/filetype.awk
  132482064e1f62e11dedf7f5f0d763ab  libbacktrace/install-debuginfo-for-buildid.sh.in
  ccbe1ee456955e502f963737ace9dfce  libbacktrace/instrumented_alloc.c
  802884d8bf3d8975553371886fd801d4  libbacktrace/internal.h
*************** cffdeae41b78da05839b193e90188f55  libcod
*** 126261,126267 ****
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! 2b494e9cbe7e1bd7d738a00bea6daba2  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
--- 126339,126345 ----
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! eecf8cd50064d0445a070a7719ed69a4  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  e80a909ca87015a009bee9588bb84a64  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
*************** afbc7662b6b89d8d2eda44c65840759f  libcpp
*** 126280,126286 ****
  ac88522f7fec46badcd2623d11a4b61e  libcpp/include/label-text.h
  6e9cd1cd5302cadeeee219ac9b519871  libcpp/include/line-map.h
  4779aaa10e24fd2398a105e78bdd88a5  libcpp/include/mkdeps.h
! 4425f3f8462ed9bfc4a7255738750310  libcpp/include/rich-location.h
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  45bb530dc147453672601e59319ca355  libcpp/init.cc
  3e462ce9a600968eb061f2c013777a32  libcpp/internal.h
--- 126358,126364 ----
  ac88522f7fec46badcd2623d11a4b61e  libcpp/include/label-text.h
  6e9cd1cd5302cadeeee219ac9b519871  libcpp/include/line-map.h
  4779aaa10e24fd2398a105e78bdd88a5  libcpp/include/mkdeps.h
! e7ac00cffa78c0e155998831a5cd5a1e  libcpp/include/rich-location.h
  d516a30568fd33a5e69be4374f27812f  libcpp/include/symtab.h
  45bb530dc147453672601e59319ca355  libcpp/init.cc
  3e462ce9a600968eb061f2c013777a32  libcpp/internal.h
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 126785,126791 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! b8aed87d5b85be9cbfa7e81728a6efcf  libgcc/ChangeLog
  e63b544f83f9b69bd08ddb095b34235a  libgcc/Makefile.in
  3909078d285165298c78eb97ea152e90  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 126863,126869 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! 5d6dbaf9986a327d801d022b27a6371b  libgcc/ChangeLog
  e63b544f83f9b69bd08ddb095b34235a  libgcc/Makefile.in
  3909078d285165298c78eb97ea152e90  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** c2b0ea966c806ed2f8effdc0ba0ee6ba  libgcc
*** 127786,127792 ****
  666c38faadf35ad97379044e7f1c4cb4  libgcc/config/pa/sfp-exceptions.c
  f1b59723483b1606db86ff39f32ff542  libgcc/config/pa/sfp-machine.h
  4ae4175ce96af38ca14d4d8d2476db06  libgcc/config/pa/stublib.c
! 835468be8768eccdb9da6bb9ddf9b667  libgcc/config/pa/sync-libfuncs.c
  be1d29d3044d55ee3e60d3e74a9e98fe  libgcc/config/pa/t-dimode
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
--- 127864,127870 ----
  666c38faadf35ad97379044e7f1c4cb4  libgcc/config/pa/sfp-exceptions.c
  f1b59723483b1606db86ff39f32ff542  libgcc/config/pa/sfp-machine.h
  4ae4175ce96af38ca14d4d8d2476db06  libgcc/config/pa/stublib.c
! dad046f496c322a0d47fc62585edfbc9  libgcc/config/pa/sync-libfuncs.c
  be1d29d3044d55ee3e60d3e74a9e98fe  libgcc/config/pa/t-dimode
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
*************** d680e7307fb59fe24f8431e179191f16  libssp
*** 140010,140016 ****
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 26db29328f884d8957b47a3b8bbbcd53  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 140088,140094 ----
  534c3fb4a88e5c1f70db35c12b7742c3  libssp/vsnprintf-chk.c
  34daeb04a522ee796098df4446d6ce61  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 754b11f378e3aa2f82e1e470a1c466c5  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** b820e3490221bb85cbf6bcdde0aa8150  libstd
*** 140671,140678 ****
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! 1dfbaeed6daae4f966161ce37b2853ab  libstdc++-v3/include/Makefile.am
! 8c52733ef761fef71eb7d419a89e53f4  libstdc++-v3/include/Makefile.in
  9909a8468983e231e92c9e286c9765fb  libstdc++-v3/include/backward/auto_ptr.h
  83254dbbadebf6a7aeb58f3cdbf117e9  libstdc++-v3/include/backward/backward_warning.h
  38985095b8ea422bf8bfa31ec65d803c  libstdc++-v3/include/backward/binders.h
--- 140749,140756 ----
  c587674e0c370a2d6ccc5213ab3e4e65  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! d38876d5dc082b8fda24331aee421400  libstdc++-v3/include/Makefile.am
! ca75e2514af0756617fd5739f02ca06b  libstdc++-v3/include/Makefile.in
  9909a8468983e231e92c9e286c9765fb  libstdc++-v3/include/backward/auto_ptr.h
  83254dbbadebf6a7aeb58f3cdbf117e9  libstdc++-v3/include/backward/backward_warning.h
  38985095b8ea422bf8bfa31ec65d803c  libstdc++-v3/include/backward/binders.h
*************** e3c307e48b9e12b0736fde183ffa8bd7  libstd
*** 140701,140713 ****
  5384dfbb9eb9731df3aca40e40d55350  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
! 137c7e3d07339b64c6a652fc79a69ba2  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
  e999e0783a5ca2165919f352526501e9  libstdc++-v3/include/bits/cow_string.h
  ab10cb2f08652ed880121613c166fb90  libstdc++-v3/include/bits/cpp_type_traits.h
  1a6ab365d16951ef25f6a0b562b27ede  libstdc++-v3/include/bits/cpyfunc_impl.h
! 7cddddf44455557aa3a51978b5887fff  libstdc++-v3/include/bits/deque.tcc
  be08582d1795753f6e8fb613a7ec9fe0  libstdc++-v3/include/bits/elements_of.h
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
--- 140779,140791 ----
  5384dfbb9eb9731df3aca40e40d55350  libstdc++-v3/include/bits/char_traits.h
  195dabcb74f9b313c574745539925b0e  libstdc++-v3/include/bits/charconv.h
  8a303c55e1a9a90d751641a38581e2bc  libstdc++-v3/include/bits/chrono.h
! c3da2bcd413cceebc2d3875df950f16b  libstdc++-v3/include/bits/chrono_io.h
  2ff73cb405cb01626a751e0fa0f339f3  libstdc++-v3/include/bits/codecvt.h
  23fc42ee8644308c793f44d20f00420e  libstdc++-v3/include/bits/concept_check.h
  e999e0783a5ca2165919f352526501e9  libstdc++-v3/include/bits/cow_string.h
  ab10cb2f08652ed880121613c166fb90  libstdc++-v3/include/bits/cpp_type_traits.h
  1a6ab365d16951ef25f6a0b562b27ede  libstdc++-v3/include/bits/cpyfunc_impl.h
! 57a11de44210dce26e42e6cb05249448  libstdc++-v3/include/bits/deque.tcc
  be08582d1795753f6e8fb613a7ec9fe0  libstdc++-v3/include/bits/elements_of.h
  397af990234a7f718cce0f629f7d8b13  libstdc++-v3/include/bits/enable_special_members.h
  b194eb42ed4e3bc3a3f65805561d45c8  libstdc++-v3/include/bits/erase_if.h
*************** b3da24b61a3e8219dde982b2734707ec  libstd
*** 140722,140728 ****
  02a8c025eda02a35e6a87a42955684fc  libstdc++-v3/include/bits/funcref_impl.h
  bda3ca60f2214f1bd6656e6612aff428  libstdc++-v3/include/bits/functexcept.h
  68bc2b242e62bd27a00ee3f202c736de  libstdc++-v3/include/bits/functional_hash.h
! b18e1c6bffd82f50b6389fe000077718  libstdc++-v3/include/bits/funcwrap.h
  f656180781457f5f36a26b5902da4b6f  libstdc++-v3/include/bits/gslice.h
  a94b98a38c3eb27aa6644a5fb468c9de  libstdc++-v3/include/bits/gslice_array.h
  df03a6e1a88ea69759bc32441b171cb9  libstdc++-v3/include/bits/hashtable.h
--- 140800,140806 ----
  02a8c025eda02a35e6a87a42955684fc  libstdc++-v3/include/bits/funcref_impl.h
  bda3ca60f2214f1bd6656e6612aff428  libstdc++-v3/include/bits/functexcept.h
  68bc2b242e62bd27a00ee3f202c736de  libstdc++-v3/include/bits/functional_hash.h
! 76e7e84f1fdf371c5315513dc4ba2f07  libstdc++-v3/include/bits/funcwrap.h
  f656180781457f5f36a26b5902da4b6f  libstdc++-v3/include/bits/gslice.h
  a94b98a38c3eb27aa6644a5fb468c9de  libstdc++-v3/include/bits/gslice_array.h
  df03a6e1a88ea69759bc32441b171cb9  libstdc++-v3/include/bits/hashtable.h
*************** f0db6753fd67e8ef172c6851da248f62  libstd
*** 140757,140767 ****
  a0ff2aff5e6b290f02129d8fd5066f94  libstdc++-v3/include/bits/out_ptr.h
  8a8a359cdcce476304e0c7a41f405f02  libstdc++-v3/include/bits/parse_numbers.h
  5c23229552297aa0937e1eac544c60e6  libstdc++-v3/include/bits/postypes.h
! 5f3f6621fe24c343d0311ca670a32765  libstdc++-v3/include/bits/predefined_ops.h
  26211880ae17ac4d714473ad1bc786e4  libstdc++-v3/include/bits/ptr_traits.h
  083ee9dbf4a8803183e5f6a5d02a1c4f  libstdc++-v3/include/bits/quoted_string.h
! 053e1de38aef43bbaf1a9a4af1e3ad2f  libstdc++-v3/include/bits/random.h
! 924981b1c29c7c7b010418607af71d7b  libstdc++-v3/include/bits/random.tcc
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
  035d554aee03ff3b4aaec00ee2b7c36a  libstdc++-v3/include/bits/ranges_algo.h
  603de5fc22f9ccbe5726390148fc3a09  libstdc++-v3/include/bits/ranges_algobase.h
--- 140835,140845 ----
  a0ff2aff5e6b290f02129d8fd5066f94  libstdc++-v3/include/bits/out_ptr.h
  8a8a359cdcce476304e0c7a41f405f02  libstdc++-v3/include/bits/parse_numbers.h
  5c23229552297aa0937e1eac544c60e6  libstdc++-v3/include/bits/postypes.h
! e2b07d6bac5a54e44812c2b83a5ccb42  libstdc++-v3/include/bits/predefined_ops.h
  26211880ae17ac4d714473ad1bc786e4  libstdc++-v3/include/bits/ptr_traits.h
  083ee9dbf4a8803183e5f6a5d02a1c4f  libstdc++-v3/include/bits/quoted_string.h
! 5a585228d9f12f64e771f3cd5fc3176f  libstdc++-v3/include/bits/random.h
! 4593452a515fffc6707a958d6847c516  libstdc++-v3/include/bits/random.tcc
  b0c29f09a819ac9aa11c3507409c11ef  libstdc++-v3/include/bits/range_access.h
  035d554aee03ff3b4aaec00ee2b7c36a  libstdc++-v3/include/bits/ranges_algo.h
  603de5fc22f9ccbe5726390148fc3a09  libstdc++-v3/include/bits/ranges_algobase.h
*************** de3723b929f14af1731389010c14893b  libstd
*** 140795,140807 ****
  c35a5da0369f3af2e9e202c9c8510914  libstdc++-v3/include/bits/std_function.h
  5b3bd66db6802c89905c016f488a41d0  libstdc++-v3/include/bits/std_mutex.h
  bb19c550085b43f6251959e05791f4c6  libstdc++-v3/include/bits/std_thread.h
! 47f320876ac9a6b9e293843fecadc1d8  libstdc++-v3/include/bits/stl_algo.h
! 161d5a3091624ba835db0849863091ac  libstdc++-v3/include/bits/stl_algobase.h
  50378fb402a4f63ad663a2763f5cd08a  libstdc++-v3/include/bits/stl_bvector.h
! c2ca446fe3c0e405c49faaad2b28e9aa  libstdc++-v3/include/bits/stl_construct.h
! 914ee95a80c9537f434a34cddd3409fb  libstdc++-v3/include/bits/stl_deque.h
! 8bd7e182b77be76921e6f1bead44217f  libstdc++-v3/include/bits/stl_function.h
! 2d1ceae672eb00b521fa6d8c7e03015f  libstdc++-v3/include/bits/stl_heap.h
  7f15896f0e815aaa22a610841ad076bd  libstdc++-v3/include/bits/stl_iterator.h
  0785a7212d2b637a0dcdad049af90133  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
  54bf96df9d7600b71ab8d00f28c7e6de  libstdc++-v3/include/bits/stl_iterator_base_types.h
--- 140873,140885 ----
  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
  50378fb402a4f63ad663a2763f5cd08a  libstdc++-v3/include/bits/stl_bvector.h
! 8abaf8c2264c2af42f3e3ac2a8bb1941  libstdc++-v3/include/bits/stl_construct.h
! ca1849d33a84098658d3310146abebf0  libstdc++-v3/include/bits/stl_deque.h
! 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
*************** a229b5c8ad2904a3b3173239225596c4  libstd
*** 140842,140849 ****
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  6adf2ccea897e9d5fc8e7650eceac96f  libstdc++-v3/include/bits/vector.tcc
! 64f544527293a6a61ee80d2ceacb3412  libstdc++-v3/include/bits/version.def
! a2cdf9d27e7f25d4593ffda2dfa1a2b0  libstdc++-v3/include/bits/version.h
  0db0dfc5d016435e64398e3bb70098d3  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
--- 140920,140927 ----
  3ddbcccf58411251c2825ae41b697844  libstdc++-v3/include/bits/valarray_array.tcc
  a4c99020fc6d28e94d24a3f60a71b6ec  libstdc++-v3/include/bits/valarray_before.h
  6adf2ccea897e9d5fc8e7650eceac96f  libstdc++-v3/include/bits/vector.tcc
! 9eaf0a953ed2cc346d4ec77db14dd27a  libstdc++-v3/include/bits/version.def
! 2b441819b8f145088a45459b18521df0  libstdc++-v3/include/bits/version.h
  0db0dfc5d016435e64398e3bb70098d3  libstdc++-v3/include/bits/version.tpl
  6ccd70c0c36dd38ba559c1fc5a05fbd0  libstdc++-v3/include/c/cassert
  c31b54f25b2f8c7ca3ca3eec930d4e1d  libstdc++-v3/include/c/cctype
*************** a90e2b9ed2c236c92f3f2387a39a0ac8  libstd
*** 141404,141410 ****
  4d4392c4b49029819ced576ee163366b  libstdc++-v3/include/std/condition_variable
  264518c8a6bbba954d8dfbc74162a7e2  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
! 55eed7b7857afaaeaf8138c0485a60fa  libstdc++-v3/include/std/deque
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
  c7512fdd688111026ada39c2eff08f8e  libstdc++-v3/include/std/expected
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
--- 141482,141488 ----
  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
  ae96a272e65886b9386e26db37971da1  libstdc++-v3/include/std/execution
  c7512fdd688111026ada39c2eff08f8e  libstdc++-v3/include/std/expected
  c2e511ae49957a9f02446e544d201582  libstdc++-v3/include/std/filesystem
*************** e790ae6877466aa86b47f36d201e8563  libstd
*** 141416,141422 ****
  2e2a3e068304b1e949291e4e2e32c780  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
! 26d2e4ff32739cdce0f87c94a551c38c  libstdc++-v3/include/std/inplace_vector
  90e01b4e65cec5c0a3786580b2529edb  libstdc++-v3/include/std/iomanip
  bf5ea5fbda7bfdc1dc462f0303fc4e99  libstdc++-v3/include/std/ios
  4623e874877c5e927587c4bfe1a03c84  libstdc++-v3/include/std/iosfwd
--- 141494,141500 ----
  2e2a3e068304b1e949291e4e2e32c780  libstdc++-v3/include/std/functional
  d472ad4b1b5c12e2f731980802d15b50  libstdc++-v3/include/std/future
  d91bc94f2a9c1ff7f642d23c27ec66ae  libstdc++-v3/include/std/generator
! 37226c50eb4ef0d66b4715fc86748c79  libstdc++-v3/include/std/inplace_vector
  90e01b4e65cec5c0a3786580b2529edb  libstdc++-v3/include/std/iomanip
  bf5ea5fbda7bfdc1dc462f0303fc4e99  libstdc++-v3/include/std/ios
  4623e874877c5e927587c4bfe1a03c84  libstdc++-v3/include/std/iosfwd
*************** e8ef6ca7c551cefb5d53bde7cf7c1c75  libstd
*** 141428,141435 ****
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! c7b78db2858d54519f476912fb458f9a  libstdc++-v3/include/std/mdspan
! 9c15f6b44ef37f2af899836df04c1db0  libstdc++-v3/include/std/memory
  9e86c11ff29d60fddf403674e9182b36  libstdc++-v3/include/std/memory_resource
  96d4004072aee0df9b1cac29de7649c2  libstdc++-v3/include/std/mutex
  ef0d0725f5b70a4c1b5b62b84b2b63f7  libstdc++-v3/include/std/numbers
--- 141506,141513 ----
  c9ef2791c2dc0d6c98a1a85c8f6aa473  libstdc++-v3/include/std/list
  f4af31191dea172207576960ad71d42d  libstdc++-v3/include/std/locale
  8b76fc7da76f0579c2fd1f22821d03be  libstdc++-v3/include/std/map
! 7c053ea2859c2b5a6ff050527511bcd9  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  libstd
*** 141438,141444 ****
  5d2c4f92cc15a2b4491886b629aabc08  libstdc++-v3/include/std/ostream
  8883599080e145869428c2dc9e59e2d3  libstdc++-v3/include/std/print
  edcf23ae5a0a665fe8b4c0b76d8bfca1  libstdc++-v3/include/std/queue
! 01746ff9db8573f15b943b0c36cce6a8  libstdc++-v3/include/std/random
  b2c8adc712b229eb8f3ea4f887d6c1ad  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  400d95a1fd416911b5c47562d7a586cf  libstdc++-v3/include/std/regex
--- 141516,141522 ----
  5d2c4f92cc15a2b4491886b629aabc08  libstdc++-v3/include/std/ostream
  8883599080e145869428c2dc9e59e2d3  libstdc++-v3/include/std/print
  edcf23ae5a0a665fe8b4c0b76d8bfca1  libstdc++-v3/include/std/queue
! 553e2f4fd74c3e0258a774ab683470fd  libstdc++-v3/include/std/random
  b2c8adc712b229eb8f3ea4f887d6c1ad  libstdc++-v3/include/std/ranges
  a28bf4bed6789b61535d4b05ff48ba76  libstdc++-v3/include/std/ratio
  400d95a1fd416911b5c47562d7a586cf  libstdc++-v3/include/std/regex
*************** a28bf4bed6789b61535d4b05ff48ba76  libstd
*** 141448,141454 ****
  ee32950ba29d7cda3e788de0776d8c16  libstdc++-v3/include/std/shared_mutex
  61856a4d90554afdb8c60710d5dea8c5  libstdc++-v3/include/std/source_location
  522a5acff0bbc10f78a18d5e279f0cf6  libstdc++-v3/include/std/span
! 148ae450ade3ff3a68ef3e55c1b19e46  libstdc++-v3/include/std/spanstream
  1ffc378f8e8e686e82a35a2717c0da50  libstdc++-v3/include/std/sstream
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
--- 141526,141532 ----
  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
  996b935103050e40bdc3c486d0a1dc98  libstdc++-v3/include/std/stack
  ceee5b8e3956e8b0b5cf0c37821eb61a  libstdc++-v3/include/std/stacktrace
*************** ceee5b8e3956e8b0b5cf0c37821eb61a  libstd
*** 141456,141462 ****
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
  23b5b63af5cceb0d44d8c2aab32c8e30  libstdc++-v3/include/std/stop_token
  56f8a72abc9e7160f18f9a373325a008  libstdc++-v3/include/std/streambuf
! 905475b4fea23e39df3f56c178517ade  libstdc++-v3/include/std/string
  c5a4df8fdbbe4b3d33d0b52db500e16d  libstdc++-v3/include/std/string_view
  b9cf79d1edae688927d40109f321047a  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
--- 141534,141540 ----
  ece7d2fc2f03efd22a5d6ce6dc618b1b  libstdc++-v3/include/std/stdfloat
  23b5b63af5cceb0d44d8c2aab32c8e30  libstdc++-v3/include/std/stop_token
  56f8a72abc9e7160f18f9a373325a008  libstdc++-v3/include/std/streambuf
! 21546d9b4293395d638636284ce392ac  libstdc++-v3/include/std/string
  c5a4df8fdbbe4b3d33d0b52db500e16d  libstdc++-v3/include/std/string_view
  b9cf79d1edae688927d40109f321047a  libstdc++-v3/include/std/syncstream
  21988a8b4bf87b01fc566fe8659ab2cc  libstdc++-v3/include/std/system_error
*************** c82be32edefaa23cc1228b092d319315  libstd
*** 141470,141476 ****
  a05198d154ee4b152da6854fa6433ee7  libstdc++-v3/include/std/utility
  e0096e013b19127692d1ed454892142d  libstdc++-v3/include/std/valarray
  6dfedd974a960950b7ce23a1bbb999f2  libstdc++-v3/include/std/variant
! 0d0a38cd1a88e2528f889586625f8305  libstdc++-v3/include/std/vector
  1c10633087657ad7a31f6c3569a3ebe0  libstdc++-v3/include/std/version
  e0951486c7e6c5afe3105fe5004effb9  libstdc++-v3/include/tr1/array
  d26e5ca1b5598f236aebe125082c5efb  libstdc++-v3/include/tr1/bessel_function.tcc
--- 141548,141554 ----
  a05198d154ee4b152da6854fa6433ee7  libstdc++-v3/include/std/utility
  e0096e013b19127692d1ed454892142d  libstdc++-v3/include/std/valarray
  6dfedd974a960950b7ce23a1bbb999f2  libstdc++-v3/include/std/variant
! b00bcad4d043e764b5c328173f5bd92b  libstdc++-v3/include/std/vector
  1c10633087657ad7a31f6c3569a3ebe0  libstdc++-v3/include/std/version
  e0951486c7e6c5afe3105fe5004effb9  libstdc++-v3/include/tr1/array
  d26e5ca1b5598f236aebe125082c5efb  libstdc++-v3/include/tr1/bessel_function.tcc
*************** d100df3b99954e5e2a1e25ac7967528c  libstd
*** 141867,141873 ****
  fa6dd9de47fc1161957dd77bcc925b13  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
  e4a354a67235724c5f38b1fc51630071  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
  1b083d4d975f6db8c98c387c2bf43571  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! a50567fc977e250fd51cdb956bb79858  libstdc++-v3/testsuite/17_intro/names.cc
  d4446489cc9fd961dbc2f15b2b21fca7  libstdc++-v3/testsuite/17_intro/names_fortify.cc
  047ad714f0a1ac010ab86a084dfbeee7  libstdc++-v3/testsuite/17_intro/names_pstl.cc
  441838fc5a4a7a22a784014872e61926  libstdc++-v3/testsuite/17_intro/no_library_allocation.cc
--- 141945,141951 ----
  fa6dd9de47fc1161957dd77bcc925b13  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
  e4a354a67235724c5f38b1fc51630071  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
  1b083d4d975f6db8c98c387c2bf43571  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! 6a729deafe62a06fa8e6f43ddba0bc4c  libstdc++-v3/testsuite/17_intro/names.cc
  d4446489cc9fd961dbc2f15b2b21fca7  libstdc++-v3/testsuite/17_intro/names_fortify.cc
  047ad714f0a1ac010ab86a084dfbeee7  libstdc++-v3/testsuite/17_intro/names_pstl.cc
  441838fc5a4a7a22a784014872e61926  libstdc++-v3/testsuite/17_intro/no_library_allocation.cc
*************** edd256ad9310906c2d51eb8584c07672  libstd
*** 142171,142178 ****
  46be2eaeeac01371e9fe24d81e996eb0  libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
  a768e5494344491bd05c3b81506c8798  libstdc++-v3/testsuite/20_util/allocator_traits/members/108619.cc
  4ac8a2af6d642dcecf45f0bd1bf2868b  libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc
! 08f2c937a1a5db2657a79729f9c08296  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
! 22d35c29ce9ef8a217ec63f6d8efe2a6  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
  938b989c94336f1d3fca6f91cb9d5c65  libstdc++-v3/testsuite/20_util/allocator_traits/members/construct.cc
  97a9b0da6e52573281707014948dfdca  libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
  12616b451a7379a80d5ad1bd9c5560c2  libstdc++-v3/testsuite/20_util/allocator_traits/members/is_always_equal.cc
--- 142249,142256 ----
  46be2eaeeac01371e9fe24d81e996eb0  libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
  a768e5494344491bd05c3b81506c8798  libstdc++-v3/testsuite/20_util/allocator_traits/members/108619.cc
  4ac8a2af6d642dcecf45f0bd1bf2868b  libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc
! abb87dcf25d2822288b16dc9ef1569c5  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
! 50ce2042d2af269e0e1ce2668420d2e7  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
  938b989c94336f1d3fca6f91cb9d5c65  libstdc++-v3/testsuite/20_util/allocator_traits/members/construct.cc
  97a9b0da6e52573281707014948dfdca  libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
  12616b451a7379a80d5ad1bd9c5560c2  libstdc++-v3/testsuite/20_util/allocator_traits/members/is_always_equal.cc
*************** c9ae45c4ccb2ad75cfbd460ab4222b4e  libstd
*** 142340,142346 ****
  a9c18d48ec583488c95ac905b89802ce  libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
  d7822fa130031d56fae2abfdeeed11cf  libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc
  93dd57a8841c7326d590daae0288315a  libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc
! 0623727991b764e8fe5d0e737d63679e  libstdc++-v3/testsuite/20_util/duration/114244.cc
  dde2a285a6f1923642bd9de285fd87d8  libstdc++-v3/testsuite/20_util/duration/arithmetic/1.cc
  1451175c522eeb3ceb37fdcf4650c61e  libstdc++-v3/testsuite/20_util/duration/arithmetic/2.cc
  32ccdc2960db80e0641bf8ea6fcb63fa  libstdc++-v3/testsuite/20_util/duration/arithmetic/58850.cc
--- 142418,142424 ----
  a9c18d48ec583488c95ac905b89802ce  libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
  d7822fa130031d56fae2abfdeeed11cf  libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc
  93dd57a8841c7326d590daae0288315a  libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc
! d9265c5c4c0781d0d4fc7335c52eec93  libstdc++-v3/testsuite/20_util/duration/114244.cc
  dde2a285a6f1923642bd9de285fd87d8  libstdc++-v3/testsuite/20_util/duration/arithmetic/1.cc
  1451175c522eeb3ceb37fdcf4650c61e  libstdc++-v3/testsuite/20_util/duration/arithmetic/2.cc
  32ccdc2960db80e0641bf8ea6fcb63fa  libstdc++-v3/testsuite/20_util/duration/arithmetic/58850.cc
*************** c48b716bd057277baf9f02d09f7f7d68  libstd
*** 142363,142369 ****
  d7ad26e90ba10c6ea74caa1adf157f4f  libstdc++-v3/testsuite/20_util/duration/cons/dr2094.cc
  bac08585f7f9163dc273a6d043b71a17  libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc
  de34f29f1b5696f3e24a14be8b78259e  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
! 93cf20e0b55060e0dcd05410b753e29e  libstdc++-v3/testsuite/20_util/duration/io.cc
  1613349c492474a2a8b5b56152b12345  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
  be9eeae7f88865def6489c1113824d53  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
  9dd3351f1bf1eb22dcd96cd1190f9461  libstdc++-v3/testsuite/20_util/duration/literals/84671.cc
--- 142441,142447 ----
  d7ad26e90ba10c6ea74caa1adf157f4f  libstdc++-v3/testsuite/20_util/duration/cons/dr2094.cc
  bac08585f7f9163dc273a6d043b71a17  libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc
  de34f29f1b5696f3e24a14be8b78259e  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
! db17f9e1a80c812f715e3171c6825515  libstdc++-v3/testsuite/20_util/duration/io.cc
  1613349c492474a2a8b5b56152b12345  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
  be9eeae7f88865def6489c1113824d53  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
  9dd3351f1bf1eb22dcd96cd1190f9461  libstdc++-v3/testsuite/20_util/duration/literals/84671.cc
*************** ff6c4579fd9a68a2d44a0b8d16f91b70  libstd
*** 142537,142544 ****
  aa8d69634a029bc703f7e9108347b384  libstdc++-v3/testsuite/20_util/function_objects/not_fn/111327.cc
  09052f313029340fd1ab81b3fb208f6e  libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc
  09755c5f4b9f88cb66ad1af5db8c2de8  libstdc++-v3/testsuite/20_util/function_objects/not_fn/constexpr.cc
! 6db33e0a9ff52622394d1e38c0461bb5  libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc
  3410c0de8790ca4226e2476bce02a139  libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp_neg.cc
  91cfdce8c977003b54d30276c3da4de7  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/equal_to.cc
  b1e66e2c7061c4da356d95b75e45b9f1  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater.cc
  9e953a7e9438d39f962eb82c52623a4a  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater_equal.cc
--- 142615,142623 ----
  aa8d69634a029bc703f7e9108347b384  libstdc++-v3/testsuite/20_util/function_objects/not_fn/111327.cc
  09052f313029340fd1ab81b3fb208f6e  libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc
  09755c5f4b9f88cb66ad1af5db8c2de8  libstdc++-v3/testsuite/20_util/function_objects/not_fn/constexpr.cc
! 6e30c5232d6e71264472803c49008e6f  libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc
  3410c0de8790ca4226e2476bce02a139  libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp_neg.cc
+ e5ccaf5a6309a0cce460a0f74c59eeac  libstdc++-v3/testsuite/20_util/function_objects/not_fn/version.cc
  91cfdce8c977003b54d30276c3da4de7  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/equal_to.cc
  b1e66e2c7061c4da356d95b75e45b9f1  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater.cc
  9e953a7e9438d39f962eb82c52623a4a  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater_equal.cc
*************** f75ada21895a46443c0cf6c6c4272819  libstd
*** 142552,142558 ****
  e6bab8c83483438e3bf29c2ea7c9df3b  libstdc++-v3/testsuite/20_util/function_ref/cons.cc
  3de18ca48e3562cca5c9ed68264b9830  libstdc++-v3/testsuite/20_util/function_ref/cons_neg.cc
  6769087af53b9f703272c8bf23f3c862  libstdc++-v3/testsuite/20_util/function_ref/conv.cc
! 251b2d0a159c5328e727be53f574da1f  libstdc++-v3/testsuite/20_util/function_ref/deduction.cc
  fe11d1f21c6bd06aa902315e0eb169b2  libstdc++-v3/testsuite/20_util/function_ref/incomplete_neg.cc
  07ac98f7c18f41e232e70b8b3bbe462d  libstdc++-v3/testsuite/20_util/function_ref/mutation.cc
  73764ddebcfc0e9d84061e05bfaa4b19  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
--- 142631,142637 ----
  e6bab8c83483438e3bf29c2ea7c9df3b  libstdc++-v3/testsuite/20_util/function_ref/cons.cc
  3de18ca48e3562cca5c9ed68264b9830  libstdc++-v3/testsuite/20_util/function_ref/cons_neg.cc
  6769087af53b9f703272c8bf23f3c862  libstdc++-v3/testsuite/20_util/function_ref/conv.cc
! 82eda6ef185d2d0d4f09530af8f80924  libstdc++-v3/testsuite/20_util/function_ref/deduction.cc
  fe11d1f21c6bd06aa902315e0eb169b2  libstdc++-v3/testsuite/20_util/function_ref/incomplete_neg.cc
  07ac98f7c18f41e232e70b8b3bbe462d  libstdc++-v3/testsuite/20_util/function_ref/mutation.cc
  73764ddebcfc0e9d84061e05bfaa4b19  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
*************** db6d0eb5e7f585877361f6ef87401fc0  libstd
*** 143887,143898 ****
  55866146245c65ac793d7a32ce34935c  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/errno.cc
  ebde987c113a55b32ea322fba95ec3f2  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc
  de68a2633d601fbfd9f5501202a433c5  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc
! 6b6735c2885477b5563b6455ce0a063c  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
! c46e9466d31d10951084cd80a85a6df2  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
  fc17d1cda5b1fd12f5cb9cd79de92450  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
! 8bfb66475758e82e18afb690a98e3300  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
! 7a0e335930b576532d833cc34357e350  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
! 89c59f7c29485df591ce3b0741ac26c2  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
  c42d1d871553450a1513e54826bc8660  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc
  a18fb67b3cd283797c0270b2dffcd9fd  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc
  946598561a0910962b4172b37f6ed585  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_int.cc
--- 143966,143977 ----
  55866146245c65ac793d7a32ce34935c  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/errno.cc
  ebde987c113a55b32ea322fba95ec3f2  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc
  de68a2633d601fbfd9f5501202a433c5  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc
! e4df7ae13ce86cc6e83bc4e436200883  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
! f2f50e06c9938bf5ddbb9546f5e6b8d0  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
  fc17d1cda5b1fd12f5cb9cd79de92450  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
! 4609550e5e72938d297a3bea1c1d80d4  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
! 06512b5e3cef43a7fb85885988de1a72  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
! 724fef0dd9393878972aea5dbad32400  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
  c42d1d871553450a1513e54826bc8660  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc
  a18fb67b3cd283797c0270b2dffcd9fd  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_float.cc
  946598561a0910962b4172b37f6ed585  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_int.cc
*************** a6b6a9a6139a9783749ab68361f3c902  libstd
*** 143900,143911 ****
  2796e960412dc435b6a6d9aa69058935  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc
  f4e026c2e8260e3ce2e84d6cfc5d870d  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
  4e73eba81dcd7c87a8cb88baaaf7da5b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
! 66885b13aa81d44b0981ded4c005357e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
! 6b5187adc96c256e5a4f7a0cacd84b1d  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
  e00866609954d9d4e09b9ee43d56039a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
! c74617b7cb5947f79c93794519e33de6  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
! 054abb6ea1e57a4cb2c18e900ffe8fb4  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
! dd27d37e228d376460f2fda9aee33443  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
  3b08188db997d606499bfea78a86a3d7  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
  fecb5f76794dcb7b16941f3d83836e9e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_float.cc
  07566e373883a954b71c561432ec0678  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
--- 143979,143990 ----
  2796e960412dc435b6a6d9aa69058935  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc
  f4e026c2e8260e3ce2e84d6cfc5d870d  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
  4e73eba81dcd7c87a8cb88baaaf7da5b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
! 629496db3f2c2f268fed3cfd6f9879c2  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
! c2601e1458007d49fa474a53bd61b95b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
  e00866609954d9d4e09b9ee43d56039a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
! ca74fbaed28ff3818fb442be85fc439b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
! af92e20d874b9abc1cdb8ff7e4c664d4  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
! 9c0a416efef72efddf8948b640b38e78  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
  3b08188db997d606499bfea78a86a3d7  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
  fecb5f76794dcb7b16941f3d83836e9e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring_float.cc
  07566e373883a954b71c561432ec0678  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
*************** d6389dca6900efed9092c757879cb4bb  libstd
*** 144926,144931 ****
--- 145005,145011 ----
  be1cdb99e2d8cc902e0fa86221ea595c  libstdc++-v3/testsuite/23_containers/deque/modifiers/assign/1.cc
  4a86c29df4110cc1da37d6a22ee13c88  libstdc++-v3/testsuite/23_containers/deque/modifiers/assign/assign_range.cc
  5b30438ec704fa2989c2780d4b7988b0  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/1.cc
+ c04a522f2e4cc1acfa2bd2f288f33d76  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/118087.cc
  0ff485943b32fb63316f65b20ffe13b8  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/90389.cc
  86e4c93c9c08920cf9749fc590d5b57a  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc
  46bbcc8a91f4e6758407a442926aa036  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
*************** d12fbe32efaa977e8bb457fcf560fdfb  libstd
*** 145299,145305 ****
  cff9faa220513d3bdaf1133e4e84785d  libstdc++-v3/testsuite/23_containers/map/allocator/swap.cc
  c7ebc5ef6d95a77e079321eabfed370d  libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
  275e75cbebbe83c003079ab27c9ea9c5  libstdc++-v3/testsuite/23_containers/map/cons/deduction.cc
! cf45047e58136ca226d0dacf322a7bd8  libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc
  09ed0fef475ed3e5f3f64a50a804df1c  libstdc++-v3/testsuite/23_containers/map/cons/moveable.cc
  033cb096bd5033db7b28c465b0ed21af  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
  684d8c537316b2619b2e286cbef7d729  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
--- 145379,145385 ----
  cff9faa220513d3bdaf1133e4e84785d  libstdc++-v3/testsuite/23_containers/map/allocator/swap.cc
  c7ebc5ef6d95a77e079321eabfed370d  libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
  275e75cbebbe83c003079ab27c9ea9c5  libstdc++-v3/testsuite/23_containers/map/cons/deduction.cc
! f68214b51031c34da920a3b620ba3175  libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc
  09ed0fef475ed3e5f3f64a50a804df1c  libstdc++-v3/testsuite/23_containers/map/cons/moveable.cc
  033cb096bd5033db7b28c465b0ed21af  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
  684d8c537316b2619b2e286cbef7d729  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
*************** bead52db525471c98d26137e05743c97  libstd
*** 145398,145405 ****
  09f60c1da783ed561b487e9441ae6882  libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
  bfd42a535aa33a3b5315bf669715ffb4  libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
  ea1a2f61fac46b6b55b9ff2c52289540  libstdc++-v3/testsuite/23_containers/mdspan/layouts/debug/out_of_bounds_neg.cc
! dd7692786bb4cc01e8e54a11e77eef69  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
! a65c4b5056c3c06dc115e0ce959f26b4  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
  3f96813b92ac712ab8210f7eb24e7158  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
  94e1c258b4d0ee973edbc3f9311a7883  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
--- 145478,145485 ----
  09f60c1da783ed561b487e9441ae6882  libstdc++-v3/testsuite/23_containers/mdspan/layouts/class_mandate_neg.cc
  bfd42a535aa33a3b5315bf669715ffb4  libstdc++-v3/testsuite/23_containers/mdspan/layouts/ctors.cc
  ea1a2f61fac46b6b55b9ff2c52289540  libstdc++-v3/testsuite/23_containers/mdspan/layouts/debug/out_of_bounds_neg.cc
! 9e2c2722b410c7063410f494f3167abc  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
! 79af5cefa49e1104b70c46a6a73a9ad8  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
  3f96813b92ac712ab8210f7eb24e7158  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
  94e1c258b4d0ee973edbc3f9311a7883  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
*************** d6b1a09c9ea9d780b4de5acdae3be570  libstd
*** 145422,145428 ****
  96cdd753c3b4051c8d3ae02d75d64bf7  libstdc++-v3/testsuite/23_containers/multimap/allocator/swap.cc
  6f75d965f8f0cedef9c412617a181607  libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
  1a8ef5aa88657ddac49ca7e05e7bc306  libstdc++-v3/testsuite/23_containers/multimap/cons/deduction.cc
! 94933b66266c98911381f71a67191e10  libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc
  8c28ca28b236123ece1cad21e48effc3  libstdc++-v3/testsuite/23_containers/multimap/cons/moveable.cc
  24dc1212a66a79c4e381497c9de4d35b  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
  c537ade094ed25b49d5b15012f5ec343  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
--- 145502,145508 ----
  96cdd753c3b4051c8d3ae02d75d64bf7  libstdc++-v3/testsuite/23_containers/multimap/allocator/swap.cc
  6f75d965f8f0cedef9c412617a181607  libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
  1a8ef5aa88657ddac49ca7e05e7bc306  libstdc++-v3/testsuite/23_containers/multimap/cons/deduction.cc
! 67e10336044b5eee40db91d5b499d8b9  libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc
  8c28ca28b236123ece1cad21e48effc3  libstdc++-v3/testsuite/23_containers/multimap/cons/moveable.cc
  24dc1212a66a79c4e381497c9de4d35b  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
  c537ade094ed25b49d5b15012f5ec343  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
*************** a618836d524957820997977e4b5bdf87  libstd
*** 145501,145507 ****
  fdbac16d5a2329ae21ebbc420a024f6d  libstdc++-v3/testsuite/23_containers/multiset/allocator/swap.cc
  1941c422603874ea5fc447af7fe02355  libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
  bbb896871fd7c7c3f4be6d45db152294  libstdc++-v3/testsuite/23_containers/multiset/cons/deduction.cc
! 93db749c371bc6921c917cf1d6ec0fbc  libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc
  4870bd2ded5c5c2a58bde7896089a966  libstdc++-v3/testsuite/23_containers/multiset/cons/moveable.cc
  45529da7f9670a2d359c2b87160de893  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
  1e53c638526c7ac837364f1df451bb2a  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
--- 145581,145587 ----
  fdbac16d5a2329ae21ebbc420a024f6d  libstdc++-v3/testsuite/23_containers/multiset/allocator/swap.cc
  1941c422603874ea5fc447af7fe02355  libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
  bbb896871fd7c7c3f4be6d45db152294  libstdc++-v3/testsuite/23_containers/multiset/cons/deduction.cc
! 779aabcf59c7b7e95ec9d91e468ea260  libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc
  4870bd2ded5c5c2a58bde7896089a966  libstdc++-v3/testsuite/23_containers/multiset/cons/moveable.cc
  45529da7f9670a2d359c2b87160de893  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
  1e53c638526c7ac837364f1df451bb2a  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
*************** f63daab9032e8d471bfcd68b801ffeba  libstd
*** 145620,145626 ****
  894b1f9a691778ee9bca9a11466531c7  libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
  dd79a3ed18ad8daf26a9d2d20cd91548  libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
  481e4d5cd05c18aecc038aaa29dea042  libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
! 5f41b250597ab0af500a2624ab73c09c  libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc
  a99d2e12bb7472b7254116c815c584ed  libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
  acf907d8b94f4f2d74579f2f8245167e  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
  6c1be252c3ab065ba0bfe60bbdc092be  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
--- 145700,145706 ----
  894b1f9a691778ee9bca9a11466531c7  libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
  dd79a3ed18ad8daf26a9d2d20cd91548  libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
  481e4d5cd05c18aecc038aaa29dea042  libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
! a4a9414eb9939f07d9d9f26a637cbd95  libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc
  a99d2e12bb7472b7254116c815c584ed  libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
  acf907d8b94f4f2d74579f2f8245167e  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
  6c1be252c3ab065ba0bfe60bbdc092be  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
*************** fb7850bf473c7fed5d10ac6e55ec9410  libstd
*** 145762,145768 ****
  6cbf222c3adcd95d7d6bab2f2524ba36  libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc
  86f501580d612079b4b125917a4fa3f2  libstdc++-v3/testsuite/23_containers/unordered_map/cons/deduction.cc
  85f9f0cfc8a07ac716292470ac0bda11  libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc
! adb1e258b3edb4ffcb3feba9f6552969  libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc
  1a12396bee69153d53949ba0277827ee  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
  105aaf9b7a6a75fdd976d4ce76e0937d  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc
  145d7ad4a2e8b71f838ac49dd505119e  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc
--- 145842,145848 ----
  6cbf222c3adcd95d7d6bab2f2524ba36  libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc
  86f501580d612079b4b125917a4fa3f2  libstdc++-v3/testsuite/23_containers/unordered_map/cons/deduction.cc
  85f9f0cfc8a07ac716292470ac0bda11  libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc
! 1db8b458a0e84569800e7eee5613a312  libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc
  1a12396bee69153d53949ba0277827ee  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
  105aaf9b7a6a75fdd976d4ce76e0937d  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc
  145d7ad4a2e8b71f838ac49dd505119e  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc
*************** ebc749fbd9537791ef75f9dc04d961ff  libstd
*** 145881,145887 ****
  87351ed8cae9f731b42325b9857ec26b  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/swap.cc
  294fa3ddd6a1903c4ed44d50601c1b9c  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/66055.cc
  2d679e35ff56ba9da3b959dd2f8c0c39  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/deduction.cc
! ad78e8e22c08cfacf89de174fea2680d  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc
  70c2c4716ad4929b089a632b133112f4  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/moveable.cc
  ff7971214c7a0c1a041e98b1c7c50991  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc
  b35a95ddeb5d98a456f47d0e8f64b45a  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc
--- 145961,145967 ----
  87351ed8cae9f731b42325b9857ec26b  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/swap.cc
  294fa3ddd6a1903c4ed44d50601c1b9c  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/66055.cc
  2d679e35ff56ba9da3b959dd2f8c0c39  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/deduction.cc
! e90e00b755e9d3daf294441924a757ab  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc
  70c2c4716ad4929b089a632b133112f4  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/moveable.cc
  ff7971214c7a0c1a041e98b1c7c50991  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc
  b35a95ddeb5d98a456f47d0e8f64b45a  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc
*************** e0662f8f290eaa08f77eb2fb62245070  libstd
*** 145987,145993 ****
  f5fa71bd0d6e1cd4eaa786958b3a1d61  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/66055.cc
  d60757fac5dc060b24d128ba4c04477f  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/copy.cc
  f76cb3f2154e72e337635c0c8daaea7e  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/deduction.cc
! 17d60c799a6711a62410319c734bbbd2  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc
  712f35ec6acfb8a86b2075053328b5e5  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/moveable.cc
  8080e575551f67dcd2c4711d04de0f93  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc
  42378ca06026c81e3f8ab8b4140e08c5  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc
--- 146067,146073 ----
  f5fa71bd0d6e1cd4eaa786958b3a1d61  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/66055.cc
  d60757fac5dc060b24d128ba4c04477f  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/copy.cc
  f76cb3f2154e72e337635c0c8daaea7e  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/deduction.cc
! d3cef346e6568c15f69089e47e6cc7ff  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc
  712f35ec6acfb8a86b2075053328b5e5  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/moveable.cc
  8080e575551f67dcd2c4711d04de0f93  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc
  42378ca06026c81e3f8ab8b4140e08c5  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc
*************** df993599149bb4fee2ac2d28cb9fa46e  libstd
*** 146097,146103 ****
  a3f80356b94f4f31b1f306c228588757  libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc
  b110396d62674d1f92078416b29e203b  libstdc++-v3/testsuite/23_containers/unordered_set/cons/deduction.cc
  247af40f0de6e07e87bdde64812f8659  libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc
! 2623c2766e76075e353324899deabd4b  libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc
  1f4e76a316647eeddc0710484de4e3dd  libstdc++-v3/testsuite/23_containers/unordered_set/cons/moveable.cc
  962ddb897d50d2fbb9a798ef2cef5f7d  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc
  28ee73031ca5967508143d3fe46d6dea  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc
--- 146177,146183 ----
  a3f80356b94f4f31b1f306c228588757  libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc
  b110396d62674d1f92078416b29e203b  libstdc++-v3/testsuite/23_containers/unordered_set/cons/deduction.cc
  247af40f0de6e07e87bdde64812f8659  libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc
! c64e1cc29aa7b1b73a9c6fc7784573c3  libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc
  1f4e76a316647eeddc0710484de4e3dd  libstdc++-v3/testsuite/23_containers/unordered_set/cons/moveable.cc
  962ddb897d50d2fbb9a798ef2cef5f7d  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc
  28ee73031ca5967508143d3fe46d6dea  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc
*************** a1171fa6c47f7cd7e10491c30f83fa83  libstd
*** 147045,147051 ****
  ddae76c67bc42cd22a1f198c2e7591c6  libstdc++-v3/testsuite/25_algorithms/minmax/3.cc
  21ad77cdaa4acf02917f38f40822f5ce  libstdc++-v3/testsuite/25_algorithms/minmax/37547.cc
  7c63c3fa741a57d163d924c87f08c391  libstdc++-v3/testsuite/25_algorithms/minmax/constexpr.cc
! 6c1a9ea897ea83a28db30408df02385d  libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc
  aece909b115a810da11a54d042b67c99  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/2.cc
  5d37f289efe01a755f23c643f172c469  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/3.cc
  0de055b1fcd4da33364f786de555ed96  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod.cc
--- 147125,147131 ----
  ddae76c67bc42cd22a1f198c2e7591c6  libstdc++-v3/testsuite/25_algorithms/minmax/3.cc
  21ad77cdaa4acf02917f38f40822f5ce  libstdc++-v3/testsuite/25_algorithms/minmax/37547.cc
  7c63c3fa741a57d163d924c87f08c391  libstdc++-v3/testsuite/25_algorithms/minmax/constexpr.cc
! d7d6589657f3730c539351d2c8ee1238  libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc
  aece909b115a810da11a54d042b67c99  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/2.cc
  5d37f289efe01a755f23c643f172c469  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/3.cc
  0de055b1fcd4da33364f786de555ed96  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod.cc
*************** cda00f041bc7c766be518fce9f533d54  libstd
*** 147814,147819 ****
--- 147894,147908 ----
  23f65a251c55843e9da2ee98b63a9e1e  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc
  a1110c1451e4a44827a2e6970c8b7233  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/explicit_instantiation/1.cc
  d651f18a094c3dfc0e8c45c131f3cb7f  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/typedefs.cc
+ 4455732d2736b7709b1c8639bd241c58  libstdc++-v3/testsuite/26_numerics/random/philox4x32.cc
+ 593d9afb7990d09a1447e933e3ff2338  libstdc++-v3/testsuite/26_numerics/random/philox4x64.cc
+ cc19166fbb0ace21df9b897388d7dbfd  libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/copy.cc
+ ac57eb09cc97a06ca1819d5c54fb7450  libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/default.cc
+ c83ca039cc9c67f1f5071d11619c8791  libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/seed.cc
+ a2123a99800980e0a83c036b268d2b88  libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/equal.cc
+ f4220b9dfaed5314c9d6ba8c29a0c096  libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/serialize.cc
+ cfe7effda6056656c48d4c02f33d25d7  libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/constants.cc
+ 29798ea2f2291e1e79f65e51f04a00ae  libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/typedefs.cc
  8af781af7df41c657a94ff0828bdaafe  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc
  14729ec22164b6cdcf385a2d1b90b755  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/initlist_fun.cc
  9b0f96efc6c0d7e3986d215840097ef2  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/num_xbound_fun.cc
*************** acc288d04b3a73568d5201ad5d6c08e0  libstd
*** 147824,147829 ****
--- 147913,147919 ----
  b17776ecba967116e9d79caa7701413a  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc
  2a0447d8d19bae4620c991f9cf77009d  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/explicit_instantiation/1.cc
  5afae932ca0107a29bf73a8c55da95cd  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc
+ c6b9a866c77dbfde316664357479e98d  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc
  a9c2727c68b0bf8115dd197939502cca  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc
  99546b5e1ad01df10d3956ccc0fa48c4  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/initlist_fun.cc
  69e3b80ed51308d2bcbd9b1196852310  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/num_xbound_fun.cc
*************** f50f08ea0f3c56fb4f3f904226197961  libstd
*** 147842,147848 ****
  d83d81a4149ce8c9ff230914f3cf74c1  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
  737dbd8856530e44be7a70115fa0ce96  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
  64087aa200aa0ddee5d103b4cb4b77b5  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! 3f15109f74cf20d4093cd3601daabd08  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
  1c30a2a995b0786c632ceb76a66a91b0  libstdc++-v3/testsuite/26_numerics/random/random_device/85494.cc
  dd58fca2d95b558ae402a2cbee1158fd  libstdc++-v3/testsuite/26_numerics/random/random_device/94087.cc
  26c74a52d1fac9cc4f712bf483f369d6  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default-cow.cc
--- 147932,147938 ----
  d83d81a4149ce8c9ff230914f3cf74c1  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
  737dbd8856530e44be7a70115fa0ce96  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
  64087aa200aa0ddee5d103b4cb4b77b5  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! f5de27e758179ab56b8b4f1bf9f56890  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
  1c30a2a995b0786c632ceb76a66a91b0  libstdc++-v3/testsuite/26_numerics/random/random_device/85494.cc
  dd58fca2d95b558ae402a2cbee1158fd  libstdc++-v3/testsuite/26_numerics/random/random_device/94087.cc
  26c74a52d1fac9cc4f712bf483f369d6  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default-cow.cc
*************** a10caeff98ffba4a534ee168a2227d04  libstd
*** 149034,149040 ****
  f4920f7469ce2f2ea5f7cd4b4e216828  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc
  ff367b161b7c1e1001008f5353af4fe5  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/1.cc
  d3cf38cc49c8d8bbddf8b6cc8c74d83f  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
! 01caa26d687f37447ec9f62e433e434a  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc
  9c44a00519ecbf72020411e6e3632a31  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
  74767619ede9787fd0bf1bf544a89f95  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/1.cc
  c10ea17bf23165a0edf23e1a71a51ef5  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/51288.cc
--- 149124,149130 ----
  f4920f7469ce2f2ea5f7cd4b4e216828  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc
  ff367b161b7c1e1001008f5353af4fe5  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/1.cc
  d3cf38cc49c8d8bbddf8b6cc8c74d83f  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
! 7ba82eaf93fad3052b84793bc986e6e7  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc
  9c44a00519ecbf72020411e6e3632a31  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
  74767619ede9787fd0bf1bf544a89f95  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/1.cc
  c10ea17bf23165a0edf23e1a71a51ef5  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/51288.cc
*************** a87e1152f6bc2804b93ce070a51eeb54  libstd
*** 151205,151211 ****
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
  1cfa2f31c3dde7297b8ca55ba69d3f47  libstdc++-v3/testsuite/std/time/exceptions.cc
  83b64b8147bb28b41838db46eca9e6d8  libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc
! 4f253228dd524225aeec83d818d60c60  libstdc++-v3/testsuite/std/time/format/empty_spec.cc
  e3cddacbee26bc7849538026a96928e7  libstdc++-v3/testsuite/std/time/format/format.cc
  06b738d93b3d78681b0da48efd0a60bf  libstdc++-v3/testsuite/std/time/format/localized.cc
  9cd4d6791c125e40939cae77277f928d  libstdc++-v3/testsuite/std/time/format/pr117085.cc
--- 151295,151301 ----
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
  1cfa2f31c3dde7297b8ca55ba69d3f47  libstdc++-v3/testsuite/std/time/exceptions.cc
  83b64b8147bb28b41838db46eca9e6d8  libstdc++-v3/testsuite/std/time/format/data_not_present_neg.cc
! 39ae6d803e9c62ccac8ac41441636c0b  libstdc++-v3/testsuite/std/time/format/empty_spec.cc
  e3cddacbee26bc7849538026a96928e7  libstdc++-v3/testsuite/std/time/format/format.cc
  06b738d93b3d78681b0da48efd0a60bf  libstdc++-v3/testsuite/std/time/format/localized.cc
  9cd4d6791c125e40939cae77277f928d  libstdc++-v3/testsuite/std/time/format/pr117085.cc
*************** f3bc72e48f5192cf9f187425e1bc3ab2  libstd
*** 151268,151274 ****
  3f9fcbf0af1cdb5c5b503cef22cd9394  libstdc++-v3/testsuite/std/time/year_month_day/2.cc
  b7c64f232b54b107438e4d09b7a482a0  libstdc++-v3/testsuite/std/time/year_month_day/3.cc
  fb81614a5410f53328449fdd57e18a7a  libstdc++-v3/testsuite/std/time/year_month_day/4.cc
! b597635bbd22b3f5d50f097629012342  libstdc++-v3/testsuite/std/time/year_month_day/io.cc
  2bf8f80dc7da8604e27e6654433dd7ea  libstdc++-v3/testsuite/std/time/year_month_day_last/1.cc
  9aaae50fe881bb76fea156e9419bde1d  libstdc++-v3/testsuite/std/time/year_month_day_last/2.cc
  88d90bf0d08da6a2546594d62c819008  libstdc++-v3/testsuite/std/time/year_month_day_last/io.cc
--- 151358,151364 ----
  3f9fcbf0af1cdb5c5b503cef22cd9394  libstdc++-v3/testsuite/std/time/year_month_day/2.cc
  b7c64f232b54b107438e4d09b7a482a0  libstdc++-v3/testsuite/std/time/year_month_day/3.cc
  fb81614a5410f53328449fdd57e18a7a  libstdc++-v3/testsuite/std/time/year_month_day/4.cc
! 818f3cf86eaf14826d288441c5722cb2  libstdc++-v3/testsuite/std/time/year_month_day/io.cc
  2bf8f80dc7da8604e27e6654433dd7ea  libstdc++-v3/testsuite/std/time/year_month_day_last/1.cc
  9aaae50fe881bb76fea156e9419bde1d  libstdc++-v3/testsuite/std/time/year_month_day_last/2.cc
  88d90bf0d08da6a2546594d62c819008  libstdc++-v3/testsuite/std/time/year_month_day_last/io.cc
diff -Nrcpad gcc-16-20250921/contrib/ChangeLog gcc-16-20250928/contrib/ChangeLog
*** gcc-16-20250921/contrib/ChangeLog	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/contrib/ChangeLog	Sun Sep 28 22:33:01 2025
***************
*** 1,3 ****
--- 1,13 ----
+ 2025-09-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* unicode/gen_libstdcxx_unicode_data.py: Fix comment type.
+ 
+ 2025-09-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* unicode/gen_libstdcxx_unicode_data.py: Update comment at the
+ 	top of the file to mention DerivedGeneralCategory.txt
+ 	prerequisite.
+ 
  2025-09-17  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
  
  	* uninclude: Add `lib/gcc/<anything>/include`.
diff -Nrcpad gcc-16-20250921/contrib/unicode/gen_libstdcxx_unicode_data.py gcc-16-20250928/contrib/unicode/gen_libstdcxx_unicode_data.py
*** gcc-16-20250921/contrib/unicode/gen_libstdcxx_unicode_data.py	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/contrib/unicode/gen_libstdcxx_unicode_data.py	Sun Sep 28 22:33:01 2025
***************
*** 23,28 ****
--- 23,29 ----
  # ftp://ftp.unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
  # ftp://ftp.unicode.org/Public/UNIDATA/auxiliary/GraphemeBreakProperty.txt
  # ftp://ftp.unicode.org/Public/UNIDATA/emoji/emoji-data.txt
+ # ftp://ftp.unicode.org/Public/UNIDATA/extracted/DerivedGeneralCategory.txt
  # Then run this script and save the output to
  # ../../libstdc++-v3/include/bits/unicode-data.h
  
*************** escaped_general_categories = {
*** 148,154 ****
      "Cc", "Cf", "Cs", "Co", "Cn",
  }
  
! # Extract General_Category and detrmine if it should be escaped 
  # for all code points.
  for line in open("DerivedGeneralCategory.txt", "r"):
      # Example lines:
--- 149,155 ----
      "Cc", "Cf", "Cs", "Co", "Cn",
  }
  
! # Extract General_Category and determine if it should be escaped
  # for all code points.
  for line in open("DerivedGeneralCategory.txt", "r"):
      # Example lines:
diff -Nrcpad gcc-16-20250921/gcc/ChangeLog gcc-16-20250928/gcc/ChangeLog
*** gcc-16-20250921/gcc/ChangeLog	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/ChangeLog	Sun Sep 28 22:33:01 2025
***************
*** 1,3 ****
--- 1,475 ----
+ 2025-09-27  ChengLulu  <chenglulu@loongson.cn>
+ 
+ 	PR target/99217
+ 	* config/mips/mips.cc (mips_start_function_definition):
+ 	Implements the functionality of '-fpatchable-function-entry='.
+ 	(mips_print_patchable_function_entry): Define empty function.
+ 	(TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY): Define macro.
+ 
+ 2025-09-27  Jie Mei  <jie.mei@oss.cipunited.com>
+ 
+ 	* config/mips/mips.cc(mips_option_override):Add conditions
+ 	for use of the -mmips16e2 and -mips16 option.
+ 
+ 2025-09-27  Jie Mei  <jie.mei@oss.cipunited.com>
+ 
+ 	* config/mips/mips.md (fms<mode>4): Generates MSUBF.fmt
+ 	instructions.
+ 	(*fms<mode>4_msubf): Same as above.
+ 	(fnma<mode>4): Same as above.
+ 	(*fnma<mode>4_msubf): Same as above.
+ 
+ 2025-09-26  Alejandro Colomar  <alx@kernel.org>
+ 
+ 	* doc/extend.texi: Clarify documentation about lists of
+ 	parameter forward declarations, and mention that more than one
+ 	of them are unnecessary.
+ 	* doc/invoke.texi: Document the new
+ 	-Wmultiple-parameter-fwd-decl-lists.
+ 
+ 2025-09-26  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* auto-profile.cc (afdo_propagate_edge): Fix handling of precize 0
+ 	counts.
+ 
+ 2025-09-26  Andrew Stubbs  <ams@baylibre.com>
+ 
+ 	* config/gcn/gcn.cc
+ 	(gcn_vectorize_support_vector_misalignment): Allow any alignment, as
+ 	long as it's not packed.
+ 
+ 2025-09-26  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* profile-count.h (profile_probability::operator/): Do not cap
+ 	twice.
+ 	(profile_probability::operator/=): Likewise.
+ 	(profile_probability::apply_scale): Do not watch for overflow.
+ 	(profile_count::probability_in): Watch overflow.
+ 
+ 2025-09-26  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/121875
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_can_inline_p): New function.
+ 	(TARGET_CAN_INLINE_P): Define.
+ 
+ 2025-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/invoke.texi (Warning Options): Use "bitwise" over
+ 	"bit-wise".
+ 	* doc/extend.texi (Vector Extensions): Use "elementwise"
+ 	over "element-wise".
+ 	* doc/md.texi (Standard Names): Ditto.
+ 
+ 2025-09-25  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/extend.texi (Vector Extensions): Fix grammar.
+ 
+ 2025-09-25  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* doc/invoke.texi (-ffp-int-builtin-inexact): Reword to match
+ 	the default value with the default C standard.
+ 
+ 2025-09-24  Dusan Stojkovic  <Dusan.Stojkovic@rt-rk.com>
+ 
+ 	PR target/121778
+ 	* config/riscv/riscv.md: Add define_split pattern.
+ 
+ 2025-09-24  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121762
+ 	* gimple-fold.cc (gimple_fold_builtin_assume_aligned): New function.
+ 	(gimple_fold_builtin): Call gimple_fold_builtin_assume_aligned
+ 	for BUILT_IN_ASSUME_ALIGNED.
+ 	* tree-ssa-ccp.cc (pass_fold_builtins::execute): Remove handling
+ 	of BUILT_IN_ASSUME_ALIGNED.
+ 
+ 2025-09-24  Jennifer Schmitz  <jschmitz@nvidia.com>
+ 
+ 	* config/aarch64/aarch64.md: Include neoversev2.md.
+ 	* config/aarch64/tuning_models/neoversev2.h: Enable dispatch
+ 	scheduling and add dispatch constraints.
+ 	* config/aarch64/neoversev2.md: New file and new instruction attribute
+ 	neoversev2_dispatch.
+ 
+ 2025-09-24  Jennifer Schmitz  <jschmitz@nvidia.com>
+ 
+ 	* config.gcc: Add aarch64-sched-dispatch.o to extra_objs.
+ 	* config/aarch64/aarch64-protos.h (struct tune_params): New
+ 	field for dispatch scheduling.
+ 	(struct dispatch_constraint_info): New struct for dispatch scheduling.
+ 	* config/aarch64/aarch64-tuning-flags.def
+ 	(AARCH64_EXTRA_TUNING_OPTION): New flag to enable dispatch scheduling.
+ 	* config/aarch64/aarch64.cc (TARGET_SCHED_DISPATCH): Implement
+ 	target hook.
+ 	(TARGET_SCHED_DISPATCH_DO): Likewise.
+ 	(aarch64_override_options_internal): Add check for definition of
+ 	dispatch constraints if dispatch-scheduling tune flag is set.
+ 	* config/aarch64/t-aarch64: Add aarch64-sched-dispatch.o.
+ 	* config/aarch64/tuning_models/a64fx.h: Initialize fields for
+ 	dispatch scheduling in tune_params.
+ 	* config/aarch64/tuning_models/ampere1.h: Likewise.
+ 	* config/aarch64/tuning_models/ampere1a.h: Likewise.
+ 	* config/aarch64/tuning_models/ampere1b.h: Likewise.
+ 	* config/aarch64/tuning_models/cortexa35.h: Likewise.
+ 	* config/aarch64/tuning_models/cortexa53.h: Likewise.
+ 	* config/aarch64/tuning_models/cortexa57.h: Likewise.
+ 	* config/aarch64/tuning_models/cortexa72.h: Likewise.
+ 	* config/aarch64/tuning_models/cortexa73.h: Likewise.
+ 	* config/aarch64/tuning_models/cortexx925.h: Likewise.
+ 	* config/aarch64/tuning_models/emag.h: Likewise.
+ 	* config/aarch64/tuning_models/exynosm1.h: Likewise.
+ 	* config/aarch64/tuning_models/fujitsu_monaka.h: Likewise.
+ 	* config/aarch64/tuning_models/generic.h: Likewise.
+ 	* config/aarch64/tuning_models/generic_armv8_a.h: Likewise.
+ 	* config/aarch64/tuning_models/generic_armv9_a.h: Likewise.
+ 	* config/aarch64/tuning_models/neoverse512tvb.h: Likewise.
+ 	* config/aarch64/tuning_models/neoversen1.h: Likewise.
+ 	* config/aarch64/tuning_models/neoversen2.h: Likewise.
+ 	* config/aarch64/tuning_models/neoversen3.h: Likewise.
+ 	* config/aarch64/tuning_models/neoversev1.h: Likewise.
+ 	* config/aarch64/tuning_models/neoversev2.h: Likewise.
+ 	* config/aarch64/tuning_models/neoversev3.h: Likewise.
+ 	* config/aarch64/tuning_models/neoversev3ae.h: Likewise.
+ 	* config/aarch64/tuning_models/olympus.h: Likewise.
+ 	* config/aarch64/tuning_models/qdf24xx.h: Likewise.
+ 	* config/aarch64/tuning_models/saphira.h: Likewise.
+ 	* config/aarch64/tuning_models/thunderx.h: Likewise.
+ 	* config/aarch64/tuning_models/thunderx2t99.h: Likewise.
+ 	* config/aarch64/tuning_models/thunderx3t110.h: Likewise.
+ 	* config/aarch64/tuning_models/thunderxt88.h: Likewise.
+ 	* config/aarch64/tuning_models/tsv110.h: Likewise.
+ 	* config/aarch64/tuning_models/xgene1.h: Likewise.
+ 	* config/aarch64/aarch64-sched-dispatch.cc: New file for
+ 	dispatch scheduling for aarch64.
+ 	* config/aarch64/aarch64-sched-dispatch.h: New header file.
+ 
+ 2025-09-24  Jennifer Schmitz  <jschmitz@nvidia.com>
+ 
+ 	* config/aarch64/aarch64-sve.md: Annotate instructions with
+ 	attribute sve_type.
+ 	* config/aarch64/aarch64-sve2.md: Likewise.
+ 	* config/aarch64/aarch64.md (sve_type): New attribute sve_type.
+ 	* config/aarch64/iterators.md (sve_type_unspec): New int attribute.
+ 	(sve_type_int): New code attribute.
+ 	(sve_type_fp): New int attribute.
+ 
+ 2025-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/116816
+ 	* tree-vect-stmts.cc (get_load_store_type): Allow multi-lane
+ 	single-element interleaving to fall back to VMAT_ELEMENTWISE.
+ 	Fall back to VMAT_ELEMENTWISE when we cannot handle a load
+ 	permutation.
+ 	(vectorizable_load): Do not check a load permutation
+ 	for VMAT_ELEMENTWISE.  Handle grouped loads with
+ 	VMAT_ELEMENTWISE and directly apply a load permutation.
+ 
+ 2025-09-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-stmts.cc (get_load_store_type): Explicitly fail
+ 	when we end up with VMAT_ELEMENTWISE for BB vectorization.
+ 
+ 2025-09-24  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR tree-optimization/122040
+ 	* doc/invoke.texi (-fisolate-erroneous-paths-dereference):
+ 	Mention it also turns division by zero into a trap in addition
+ 	to null dereference.
+ 
+ 2025-09-24  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR middle-end/66462
+ 	* config/loongarch/loongarch.md (FCLASS_MASK): Add 3.
+ 	(fclass_optab): Assign isnan for 3.
+ 	(<FCLASS_MASK:fclass_optab><ANYF:mode>2): If FCLASS_MASK is 3,
+ 	only enable when -fsignaling-nans.
+ 
+ 2025-09-24  Pan Li  <pan2.li@intel.com>
+ 
+ 	* match.pd: Add pattern of mult and reuse the widen-mul
+ 	by for keyword.
+ 
+ 2025-09-23  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/121986
+ 	* diagnostics/sarif-sink.cc: Include "intl.h".
+ 	(sarif_builder::make_message_describing_fix_it_hint): New.
+ 	(sarif_builder::make_fix_object): Attempt to auto-generate a
+ 	description for fix-it hints.
+ 
+ 2025-09-23  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/121810
+ 	* config/arm/mve.md (mve_mov<mode>): Move the Ui constraint
+ 	and pool_range attributes to the final alternative.  Fix
+ 	the forward range value and correctly name the negative
+ 	range.
+ 
+ 2025-09-23  Pan Li  <pan2.li@intel.com>
+ 
+ 	PR middle-end/122031
+ 	* tree-ssa-math-opts.cc (build_and_insert_cast): Fix the typo
+ 	of self assignment.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_process_target_version_attr):
+ 	Remove warning.
+ 	* config/aarch64/aarch64.opt: Mark -Wno-experimental-fmv-target
+ 	deprecated.
+ 	* doc/invoke.texi: Ditto.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* attribs.cc (is_function_default_version): Update to handle
+ 	target_clones.
+ 	* cgraph.h (FOR_EACH_FUNCTION_REMOVABLE): New macro.
+ 	* multiple_target.cc (expand_target_clones): Update logic to delete
+ 	empty target_clones and modify diagnostic.
+ 	(ipa_target_clone): Update to use FOR_EACH_FUNCTION_REMOVABLE.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* attribs.h (common_function_versions): Removed.
+ 	* attribs.cc (common_function_versions): Removed.
+ 	* config/aarch64/aarch64.cc (aarch64_common_function_versions): Removed.
+ 	(aarch64_same_function_versions): New function to check if two version
+ 	strings imply the same version.
+ 	(TARGET_OPTION_FUNCTION_VERSIONS): Removed.
+ 	(TARGET_OPTION_SAME_FUNCTION_VERSIONS): New macro.
+ 	* config/i386/i386.cc (TARGET_OPTION_FUNCTION_VERSIONS): Removed.
+ 	* config/rs6000/rs6000.cc (TARGET_OPTION_FUNCTION_VERSIONS): Removed.
+ 	* config/riscv/riscv.cc (riscv_same_function_versions):  New function
+ 	to check if two version strings imply the same version.
+ 	(riscv_common_function_versions): Removed.
+ 	(TARGET_OPTION_FUNCTION_VERSIONS): Removed.
+ 	(TARGET_OPTION_SAME_FUNCTION_VERSIONS): New macro.
+ 	* doc/tm.texi: Regenerated.
+ 	* target.def: Remove common_version hook and add same_function_version
+ 	hook.
+ 	* doc/tm.texi.in: Ditto.
+ 	* tree.cc (distinct_version_decls): New function.
+ 	(mergeable_version_decls): Ditto.
+ 	* tree.h (distinct_version_decls): New function.
+ 	(mergeable_version_decls): Ditto.
+ 	* hooks.h (hook_stringslice_stringslice_unreachable): New function.
+ 	* hooks.cc (hook_stringslice_stringslice_unreachable): New function.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	PR target/118313
+ 	* cgraph.cc (delete_function_version): Made public static member of
+ 	cgraph_node.
+ 	* cgraph.h (delete_function_version): Ditto.
+ 	* cgraphunit.cc (analyze_functions): Add logic for target version
+ 	dependencies.
+ 	* ipa.cc (symbol_table::remove_unreachable_nodes): Ditto.
+ 	* multiple_target.cc (create_dispatcher_calls): Change to support
+ 	target version semantics.
+ 	(ipa_target_clone): Change to dispatch all function sets in
+ 	target_version semantics, and to have early and late pass.
+ 	(expand_target_clones): Add logic for cases of target_clones with no
+ 	defaults.
+ 	(is_simple_target_clones_case): New function.
+ 	(class pass_target_clone): New parameter for early or late pass.
+ 	* config/aarch64/aarch64.cc: (aarch64_get_function_versions_dispatcher):
+ 	Refactor with the assumption that the DECL node will be default.
+ 	* config/riscv/riscv.cc: (riscv_get_function_versions_dispatcher):
+ 	Refactor with the assumption that the DECL node will be default.
+ 	* passes.def: Split target_clones pass into early and late version.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	PR target/118339
+ 	* target.def: Add check_target_clone_version hook.
+ 	* tree.cc (get_clone_attr_versions): Add filter argument.
+ 	(get_clone_versions): Add filter argument.
+ 	* tree.h (get_clone_attr_versions): Add filter.
+ 	(get_clone_versions): Add filter argument.
+ 	* config/aarch64/aarch64.cc (aarch64_check_target_clone_version):
+ 	New function
+ 	(TARGET_CHECK_TARGET_CLONE_VERSION): New define.
+ 	* config/riscv/riscv.cc (riscv_check_target_clone_version):
+ 	New function.
+ 	(TARGET_CHECK_TARGET_CLONE_VERSION): New define.
+ 	* doc/tm.texi: Regenerated.
+ 	* doc/tm.texi.in: Add documentation for new hook.
+ 	* hooks.h (hook_stringslice_locationtptr_true): New function.
+ 	* hooks.cc (hook_stringslice_locationtptr_true): New function.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* config/riscv/riscv-protos.h (riscv_process_target_version_str): New function..
+ 	* config/riscv/riscv-target-attr.cc (riscv_process_target_attr): Refactor to take
+ 	string_slice.
+ 	(riscv_process_target_version_str): New function.
+ 	* config/riscv/riscv.cc (parse_features_for_version): Refactor to take
+ 	string_slice.
+ 	(riscv_compare_version_priority): Ditto.
+ 	(dispatch_function_versions): Change to pass location.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* attribs.cc (make_dispatcher_decl): Move duplicated cgraph logic into
+ 	this function and change to use targetm.mangle_decl_assembler_name for
+ 	mangling.
+ 	* cgraph.cc (cgraph_node::insert_new_function_version): Record
+ 	assembler_name.
+ 	* cgraph.h (struct cgraph_function_version_info): Add assembler_name.
+ 	(struct cgraph_node): Add dispatcher_resolver_function and
+ 	is_target_clone.
+ 	* config/aarch64/aarch64.cc (aarch64_parse_fmv_features): Change to
+ 	support string_slice.
+ 	(aarch64_process_target_version_attr): Ditto.
+ 	(get_feature_mask_for_version): Ditto.
+ 	(aarch64_mangle_decl_assembler_name): Add logic for mangling dispatched
+ 	symbol and resolver.
+ 	(get_suffixed_assembler_name): Removed.
+ 	(make_resolver_func): Refactor to use
+ 	aarch64_mangle_decl_assembler_name for mangling.
+ 	(aarch64_generate_version_dispatcher_body): Remove remangling.
+ 	(aarch64_get_function_versions_dispatcher): Refactor to remove
+ 	duplicated cgraph logic.
+ 	* config/i386/i386-features.cc
+ 	(ix86_mangle_function_version_assembler_name): Refactor to use
+ 	clone_identifier and to mangle default.
+ 	(ix86_mangle_decl_assembler_name): Add logic for mangling dispatched
+ 	symbol and resolver.
+ 	(ix86_get_function_versions_dispatcher): Remove duplicated cgraph
+ 	logic.
+ 	(make_resolver_func): Refactor to use ix86_mangle_decl_assembler_name
+ 	for mangling.
+ 	* config/riscv/riscv.cc (riscv_mangle_decl_assembler_name): Add logic
+ 	for FMV mangling.
+ 	(get_suffixed_assembler_name): Removed.
+ 	(make_resolver_func): Refactor to use riscv_mangle_decl_assembler_name
+ 	for mangling.
+ 	(riscv_generate_version_dispatcher_body): Remove unnecessary remangling.
+ 	(riscv_get_function_versions_dispatcher): Remove duplicated cgraph
+ 	logic.
+ 	* config/rs6000/rs6000.cc (rs6000_mangle_decl_assembler_name): New
+ 	function.
+ 	(rs6000_get_function_versions_dispatcher): Remove duplicated cgraph
+ 	logic.
+ 	(make_resolver_func): Refactor to use rs6000_mangle_decl_assembler_name
+ 	for mangling.
+ 	(rs6000_mangle_function_version_assembler_name): New function.
+ 	* multiple_target.cc (create_dispatcher_calls): Remove mangling code.
+ 	(get_attr_str): Removed.
+ 	(separate_attrs): Ditto.
+ 	(is_valid_asm_symbol): Removed.
+ 	(create_new_asm_name): Ditto.
+ 	(expand_target_clones): Refactor to use
+ 	targetm.mangle_decl_assembler_name for mangling and be more general.
+ 	* tree.cc (get_target_clone_attr_len): Removed.
+ 	* tree.h (get_target_clone_attr_len): Removed.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* cgraph.h (clone_identifier): New function.
+ 	* cgraphclones.cc (clone_identifier): New function.
+ 	(clone_function_name): Refactored to use clone_identifier.
+ 	(is_valid_asm_symbol): New helper function.
+ 
+ 2025-09-23  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/121994
+ 	* config/i386/x86-tune-costs.h (znver2_cost): Set
+ 	vect_unroll_limit to 1.
+ 	(znver1_cost): Ditto.
+ 	* config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
+ 	Adjust count number for	{AVX256,AVX512}_SPLIT_REGS.
+ 
+ 2025-09-22  Peter Bergner  <bergner@tenstorrent.com>
+ 
+ 	PR target/121982
+ 	* config/riscv/tt-ascalon-d8.md (tt_ascalon_d8_vec_idiv_byte): New
+ 	define_insn_reservation.
+ 
+ 2025-09-22  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121762
+ 	* builtins.cc (fold_builtin_constant_p): Make non-static.
+ 	* builtins.h (fold_builtin_constant_p): New declaration.
+ 	* gimple-fold.cc (gimple_fold_builtin_constant_p): New function.
+ 	(gimple_fold_builtin): Call gimple_fold_builtin_constant_p
+ 	for BUILT_IN_CONSTANT_P.
+ 	* tree-ssa-ccp.cc (pass_fold_builtins::execute): Set PROP_last_full_fold
+ 	on curr_properties. Remove handling of BUILT_IN_CONSTANT_P.
+ 
+ 2025-09-22  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/libgdiagnostics/index.rst: Drop broken reference to
+ 	`modindex`.
+ 
+ 2025-09-22  Pan Li  <pan2.li@intel.com>
+ 
+ 	PR middle-end/122021
+ 	* tree-ssa-math-opts.cc (build_and_insert_cast): Add sign-extend
+ 	check before prop.
+ 
+ 2025-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122016
+ 	* tree-ssa-sccvn.cc (vn_nary_simplify): Do not use the
+ 	simplified expression when it references abnormals.
+ 
+ 2025-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122023
+ 	* tree-vect-patterns.cc (vect_recog_rotate_pattern): Disable
+ 	for rotates.
+ 
+ 2025-09-22  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	PR target/116205
+ 	* config/pru/pru-passes.cc (class pass_pru_tiabi_check): Make
+ 	this an IPA pass.
+ 	(chkp_type_has_function_pointer): Remove.
+ 	(check_type_tiabi_compatibility): New function.
+ 	(chk_function_decl): Rename.
+ 	(check_function_decl): Simplify.
+ 	(check_op_callback): Rework to use
+ 	check_type_tiabi_compatibility.
+ 	(pass_pru_tiabi_check::execute): Rework to scan all symbols and
+ 	gimple contents of all defined functions.
+ 	* config/pru/pru-passes.def (INSERT_PASS_AFTER): Move after
+ 	pass_ipa_auto_profile_offline.
+ 	* config/pru/pru-protos.h (make_pru_tiabi_check): New
+ 	declaration to mark as IPA pass.
+ 	(make_pru_minrt_check): Specify it is making a gimple pass.
+ 	* doc/invoke.texi: Document that bit-fields are now rejected for
+ 	TI ABI.
+ 
+ 2025-09-21  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-ccp.cc (optimize_unreachable): Don't check for forced labels.
+ 
+ 2025-09-21  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* cgraphclones.cc (cgraph_node::create_version_clone): Recompute
+ 	calls_comdat_local
+ 
+ 2025-09-21  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* cgraph.cc (cgraph_edge::maybe_hot_p): For AFDO profiles force
+ 	count to be non-zero.
+ 
+ 2025-09-21  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* auto-profile.cc (autofdo_source_profile::read): Scale profile up to
+ 	profile_count::n_bits - 10.
+ 
+ 2025-09-21  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* ipa-inline-transform.cc (clone_inlined_nodes): Add KEEP_OFFLINE_COPY
+ 	parameter.
+ 	(inline_call): Sanity check profile and if it is clearly broken do
+ 	not subtract profile from original function.
+ 	* ipa-inline.cc (recursive_inlining): Update.
+ 	* ipa-inline.h (clone_inlined_nodes): Update.
+ 
  2025-09-20  Jan Hubicka  <jh@suse.cz>
  
  	* doc/invoke.texi (--param max-devirt-targets) Document.
diff -Nrcpad gcc-16-20250921/gcc/DATESTAMP gcc-16-20250928/gcc/DATESTAMP
*** gcc-16-20250921/gcc/DATESTAMP	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/DATESTAMP	Sun Sep 28 22:33:01 2025
***************
*** 1 ****
! 20250921
--- 1 ----
! 20250928
diff -Nrcpad gcc-16-20250921/gcc/ada/ChangeLog gcc-16-20250928/gcc/ada/ChangeLog
*** gcc-16-20250921/gcc/ada/ChangeLog	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/ada/ChangeLog	Sun Sep 28 22:33:01 2025
***************
*** 1,3 ****
--- 1,108 ----
+ 2025-09-23  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch6.adb (Prepend_Constructor_Procedure_Prologue):
+ 	Push/Pop the procedure scope, so that temps created herein
+ 	get the right Scope.
+ 
+ 2025-09-23  Jose Ruiz  <ruiz@adacore.com>
+ 
+ 	* libgnarl/s-stusta.adb (Report_Impl): Export a copy of
+ 	the current stack usage while holding the runtime lock.
+ 	(Report_For_Task): Do not compute stack usage for a task
+ 	that has not yet initialized its stack with the expected
+ 	pattern.
+ 	(Report_For_Task): The Stack_Analyzer object for the
+ 	environment task is not part of its ATCB. For the rest of
+ 	the tasks wait until we have initialized the stack pattern
+ 	before computing stack usage.
+ 	(Report_All_Tasks, Get_All_Tasks_Usage,
+ 	Get_Current_Task_Usage): Adapt to the new interface from
+ 	Report_Impl. Take into account that Result_Array can be
+ 	null. When we don't store stack results for a task we
+ 	need to compute it when requested.
+ 	(Print): Handle the case when we don't know the stack
+ 	usage to be reported.
+ 	* libgnat/s-stausa.adb (Initialize): For the environment
+ 	task, approximate the stack origin with the topmost
+ 	stack address that is known.
+ 	* libgnat/s-stausa.ads: Clarify comments.
+ 
+ 2025-09-23  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_util.adb (Ultimate_Prefix): Clean-up the loop condition by using
+ 	Has_prefix instead of an explicit list of node kinds.
+ 
+ 2025-09-23  Denis Mazzucato  <mazzucato@adacore.com>
+ 
+ 	* sem_ch10.adb (Install_Siblings): Fix condition to emit warning.
+ 
+ 2025-09-23  Viljar Indus  <indus@adacore.com>
+ 
+ 	* sem_case.adb (Is_Case_Choice_Pattern): Return False for allocators.
+ 
+ 2025-09-23  Douglas B Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads (Linker_Options):
+ 	Remove pragma for RTP specs.
+ 	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
+ 
+ 2025-09-23  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Add doc
+ 	for addition of -gnateG options b, c, and e.
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst: Add doc for "-e" optionn
+ 	on gnatprep and integrated preprocessing. Add doc for addition of
+ 	-gnateG options b, c, and e.
+ 	* gprep.adb (Scan_Command_Line): Add 'e' to the list of allowed switch
+ 	letters in the string passed to GNAT.Command_Line.Getopt. Set the flag
+ 	Opt.Empty_Comment_Deleted_Lines to True when the "-e" switch is found.
+ 	(Usage): Output a switch description for the "-e" switch.
+ 	* opt.ads: Add new flag variable Empty_Comment_Deleted_Lines. Add
+ 	"GNAT" to the "GNATPREP" comment line for Comment_Deleted_Lines.
+ 	* prep.adb (Output_Line): Add handling for Empty_Comment_Deleted_Lines,
+ 	outputting comment lines consisting of "--!" for lines that are removed
+ 	in the preprocessed source file when Empty_Comment_Deleted_Lines is True.
+ 	* prepcomp.adb (Preproc_Data): Add Empty_Comments component (defaulting
+ 	to False).
+ 	(No_Preproc_Data): Add association for Empty_Comments component.
+ 	(Parse_Preprocessing_Data_File): Add handling for new switch -e.
+ 	(Prepare_To_Preprocess): Add logic for setting the new option
+ 	Empty_Comment_Deleted_Lines (and making it the default for
+ 	integrated preprocessing in the absence of other switches).
+ 	* switch-c.adb (Scan_Front_End_Switches): Add support adding a single
+ 	character 'b', 'c', 'e' to the "-gnateG" switch, to select any of the
+ 	three options for replacing deleted lines in preprocessing output file.
+ 	* usage.adb: Update usage info for -gnateG, to reflect the option of
+ 	appending b, c, or e to the switch.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-09-23  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sprint.adb (Sprint_Node_Actual): Print finally statements, if
+ 	present.
+ 
+ 2025-09-23  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_util.adb (Is_Partially_Initialized_Type): Return False
+ 	for record types with no components.
+ 
+ 2025-09-23  Steve Baird  <baird@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_aspects.rst: Document the
+ 	Extended_Access aspect.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2025-09-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/121968
+ 	* sem_ch12.adb (Associations.Find_Assoc): Add guard for clauses.
+ 	* sem_dim.adb (Analyze_Dimension_Array_Aggregate): Add test for
+ 	N_Iterated_Component_Association nodes.
+ 
  2025-09-19  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gcc-interface/gigi.h (create_var_decl): Add LINKONCE_FLAG boolean
diff -Nrcpad gcc-16-20250921/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst gcc-16-20250928/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
*** gcc-16-20250921/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Sun Sep 28 22:33:01 2025
*************** or propagate an exception).
*** 267,272 ****
--- 267,355 ----
  For the syntax and semantics of this aspect, see the SPARK 2014 Reference
  Manual, section 6.1.10.
  
+ Aspect Extended_Access
+ ======================
+ 
+ This nonoverridable boolean-valued type-related representation aspect can be
+ specified as part of a full_type_declaration for a general access type
+ designating an unconstrained array subtype.
+ 
+ The absence of an Extended_Access aspect specification for such a
+ full_type_declaration is equivalent to an explicit
+ "Extended_Access => False" specification. This implies
+ that the aspect is never unspecified for an eligible access type.
+ An access type for which this aspect is True is said to be an extended access
+ type; this includes the case of a type derived from an extended access type.
+ Similarly, a value of such a type is said to be an extended access value.
+ 
+ The representation of an extended access value is different than that of
+ other access values. This representation makes it possible to designate
+ objects that cannot be designated using the usual "thin" or "fat" access
+ representations for an access type designating an unconstrained array
+ subtype (notably slices and array objects imported from other languages).
+ 
+ In particular, two rules are modified in determining the legality of an Access
+ or Unchecked_Access attribute reference if the expected access type is
+ an extended access type:
+ 
+ * A slice of an aliased array object of a non-bitpacked type (more precisely,
+   of an array type having independently addressable components) is considered
+   to be aliased (and the accessibility level of a slice of an array object is
+   defined to be that of the array object); this also applies to renamings
+   of such slices, slices of such renamings, etc.
+ 
+ * The requirement that the nominal subtype of the prefix shall statically
+   match the designated subtype of the access type need not be met.
+ 
+ The Size aspect (and other aspects including Stream_Size, Object_Size,
+ and Alignment) of an extended access type may depend on the properties of the
+ designated type. Further details of this dependence are not documented.
+ 
+ An extended access value is not convertible to a non-extended access type,
+ although conversions in the opposite direction are allowed. We don't want
+ to allow
+ 
+ .. code-block:: ada
+ 
+    type Big_Ref is access all String with Extended_Access;
+    type Small_Ref is access all String;
+    Obj : aliased String := "abcde";
+    Big_Ptr : Big_Ref := Obj (2 .. 4)'Access; -- OK
+    Small_Ptr : Small_Ref := Small_Ref (Big_Ptr); -- ERROR: illegal conversion
+ 
+ because there is no way to represent the result of such a conversion.
+ 
+ A dereference of an extended access value (or a reference to a renaming
+ thereof) shall not occur in any of the following contexts:
+ 
+ * as an operative constituent of the prefix of an Access or
+   Unchecked_Access attribute reference whose expected type is not extended; or
+ 
+ * as an operative constituent of an actual parameter in a call where
+   the corresponding formal parameter is explicitly aliased.
+ 
+ For the same reasons that explicit conversions from an extended access type to a
+ non-extended access type are forbidden, we also need to disallow getting the
+ same effect via a Extended_Ptr.all'Access reference; this includes the case
+ of passing Extended_Ptr.all as an actual parameter in a call where the
+ corresponding formal parameter is explicitly aliased (because the callee
+ could evaluate Formal_Parameter'Access). This goal is accomplished by
+ adjusting the definition of the term "aliased". A dereference of an extended
+ value occurring in one of these contexts is defined to denote
+ a nonaliased view. This has the desired effect because these contexts require
+ an aliased view. Continuing the preceding example, this rule disallows
+ 
+ .. code-block:: ada
+ 
+    Sneaky_1 : Small_Ptr := Big_Ptr.all'Access; -- ERROR: illegal 'Access prefix
+ 
+    function Make (Str : aliased in out String) return Small_Ptr
+      is (Str'Access); -- OK
+ 
+    Sneaky_2 : Small_Ptr := Make (Str => Big_Ptr.all); -- ERROR: bad parameter
+ 
+ for the same reason given above in the case of an explicit type conversion.
+ 
  Aspect Extensions_Visible
  =========================
  .. index:: Extensions_Visible
diff -Nrcpad gcc-16-20250921/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-16-20250928/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-16-20250921/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Sun Sep 28 22:33:01 2025
*************** Alphabetical List of All Switches
*** 1608,1615 ****
  
  .. index:: -gnateG  (gcc)
  
! :switch:`-gnateG`
!   Save result of preprocessing in a text file.
  
  
  .. index:: -gnateH  (gcc)
--- 1608,1619 ----
  
  .. index:: -gnateG  (gcc)
  
! :switch:`-gnateG[bce]`
!   Save result of preprocessing in a text file. An optional character (b, c,
!   or e) can be appended to indicate that filtered lines are to be replaced by
!   blank lines, comment lines that include the filtered line, or empty comment
!   lines ("--!"), respectively. The default is to replace filtered lines with
!   blank lines.
  
  
  .. index:: -gnateH  (gcc)
diff -Nrcpad gcc-16-20250921/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst gcc-16-20250928/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
*** gcc-16-20250921/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Sun Sep 28 22:33:01 2025
*************** Switches for ``gnatprep``
*** 2931,2936 ****
--- 2931,2948 ----
    don't specify a value, the symbol is defined to be ``True``. You can
    use this switch instead of providing a definition file.
  
+ .. index:: -e (gnatprep)
+ 
+ :switch:`-e`
+   Causes both preprocessor lines and the lines deleted by
+   preprocessing to be replaced by empty comment lines marked
+   with ``"--!"`` (and no other text) in the output source file,
+   preserving line numbers in the output file. This option can
+   be useful as an alternative to :switch:`-b` and :switch:`-c`
+   when compilation style switches like :switch:`-gnatyu` or
+   :switch:`-gnatyM` are used (to avoid warnings about multiple
+   blank lines or lines too long).
+ 
  .. index:: -r (gnatprep)
  
  :switch:`-r`
*************** that relate to integrated preprocessing.
*** 3248,3254 ****
      Causes both preprocessor lines and the lines deleted by
      preprocessing to be replaced by blank lines, preserving the line number.
      This switch is always implied; however, if specified after :switch:`-c`
!     it cancels the effect of :switch:`-c`.
  
    :switch:`-c`
      Causes both preprocessor lines and the lines deleted
--- 3260,3266 ----
      Causes both preprocessor lines and the lines deleted by
      preprocessing to be replaced by blank lines, preserving the line number.
      This switch is always implied; however, if specified after :switch:`-c`
!     or :switch:`-e` it cancels the effect of those switches.
  
    :switch:`-c`
      Causes both preprocessor lines and the lines deleted
*************** that relate to integrated preprocessing.
*** 3266,3271 ****
--- 3278,3289 ----
      name defined in a definition file.
  
  
+   :switch:`-e`
+     Causes both preprocessor lines and the lines deleted by
+     preprocessing to be replaced by empty comment lines marked
+     with '`--!`' (and no other text) in the output source file,
+ 
+ 
    :switch:`-s`
      Causes a sorted list of symbol names and values to be
      listed on the standard output file.
*************** that relate to integrated preprocessing.
*** 3306,3317 ****
    This switch is similar to switch :switch:`-D` of ``gnatprep``.
  
  
! :switch:`-gnateG`
    When integrated preprocessing is performed on source file :file:`filename.extension`,
    create or overwrite :file:`filename.extension.prep` to contain
    the result of the preprocessing.
    For example if the source file is :file:`foo.adb` then
    the output file is :file:`foo.adb.prep`.
  
  
  .. _Mixed_Language_Programming:
--- 3324,3342 ----
    This switch is similar to switch :switch:`-D` of ``gnatprep``.
  
  
! .. index:: -gnateG (gcc)
! 
! :switch:`-gnateG[bce]`
    When integrated preprocessing is performed on source file :file:`filename.extension`,
    create or overwrite :file:`filename.extension.prep` to contain
    the result of the preprocessing.
    For example if the source file is :file:`foo.adb` then
    the output file is :file:`foo.adb.prep`.
+   An optional character (b, c, or e) can be appended to indicate that filtered
+   lines are to be replaced by blank lines, comments, or empty comments (see
+   documentation above about :switch:`-b`, :switch:`-c`, and :switch:`-e`).
+   If one of those switches is given in a preprocessor data file, then it
+   will override any option included with :switch:`-gnateG`.
  
  
  .. _Mixed_Language_Programming:
diff -Nrcpad gcc-16-20250921/gcc/ada/exp_ch6.adb gcc-16-20250928/gcc/ada/exp_ch6.adb
*** gcc-16-20250921/gcc/ada/exp_ch6.adb	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/ada/exp_ch6.adb	Sun Sep 28 22:33:01 2025
*************** package body Exp_Ch6 is
*** 6249,6255 ****
  
        procedure Prepend_Constructor_Procedure_Prologue
          (Spec_Id : Entity_Id; Body_Id : Entity_Id; L : List_Id);
- 
        --  If N is the body of a constructor procedure (that is, a procedure
        --  named in a Constructor aspect specification for the type of the
        --  procedure's first parameter), then prepend and analyze the
--- 6249,6254 ----
*************** package body Exp_Ch6 is
*** 6353,6358 ****
--- 6352,6359 ----
              return; -- the usual case
           end if;
  
+          Push_Scope (Spec_Id);
+ 
           --  Initialize the first parameter.
           --  First_Param_Type is a record type (tagged or untagged) or
           --  a type extension. If it is a type extension, then we begin by
*************** package body Exp_Ch6 is
*** 6621,6626 ****
--- 6622,6629 ----
  
              Insert_List_Before_And_Analyze (First (L), Init_List);
           end;
+ 
+          Pop_Scope;
        end Prepend_Constructor_Procedure_Prologue;
  
        --  Local variables
diff -Nrcpad gcc-16-20250921/gcc/ada/gnat_rm.texi gcc-16-20250928/gcc/ada/gnat_rm.texi
*** gcc-16-20250921/gcc/ada/gnat_rm.texi	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/ada/gnat_rm.texi	Sun Sep 28 22:33:02 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT Reference Manual , Sep 19, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT Reference Manual , Sep 23, 2025
  
  AdaCore
  
*************** Implementation Defined Aspects
*** 323,328 ****
--- 323,329 ----
  * Aspect Effective_Writes:: 
  * Aspect Exceptional_Cases:: 
  * Aspect Exit_Cases:: 
+ * Aspect Extended_Access:: 
  * Aspect Extensions_Visible:: 
  * Aspect Favor_Top_Level:: 
  * Aspect Ghost:: 
*************** or attribute definition clause.
*** 9542,9547 ****
--- 9543,9549 ----
  * Aspect Effective_Writes:: 
  * Aspect Exceptional_Cases:: 
  * Aspect Exit_Cases:: 
+ * Aspect Extended_Access:: 
  * Aspect Extensions_Visible:: 
  * Aspect Favor_Top_Level:: 
  * Aspect Ghost:: 
*************** with a specific postcondition.
*** 9844,9850 ****
  For the syntax and semantics of this aspect, see the SPARK 2014 Reference
  Manual, section 6.1.9.
  
! @node Aspect Exit_Cases,Aspect Extensions_Visible,Aspect Exceptional_Cases,Implementation Defined Aspects
  @anchor{gnat_rm/implementation_defined_aspects aspect-exit-cases}@anchor{140}
  @section Aspect Exit_Cases
  
--- 9846,9852 ----
  For the syntax and semantics of this aspect, see the SPARK 2014 Reference
  Manual, section 6.1.9.
  
! @node Aspect Exit_Cases,Aspect Extended_Access,Aspect Exceptional_Cases,Implementation Defined Aspects
  @anchor{gnat_rm/implementation_defined_aspects aspect-exit-cases}@anchor{140}
  @section Aspect Exit_Cases
  
*************** or propagate an exception).
*** 9859,9866 ****
  For the syntax and semantics of this aspect, see the SPARK 2014 Reference
  Manual, section 6.1.10.
  
! @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Exit_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{141}
  @section Aspect Extensions_Visible
  
  
--- 9861,9965 ----
  For the syntax and semantics of this aspect, see the SPARK 2014 Reference
  Manual, section 6.1.10.
  
! @node Aspect Extended_Access,Aspect Extensions_Visible,Aspect Exit_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extended-access}@anchor{141}
! @section Aspect Extended_Access
! 
! 
! This nonoverridable boolean-valued type-related representation aspect can be
! specified as part of a full_type_declaration for a general access type
! designating an unconstrained array subtype.
! 
! The absence of an Extended_Access aspect specification for such a
! full_type_declaration is equivalent to an explicit
! “Extended_Access => False” specification. This implies
! that the aspect is never unspecified for an eligible access type.
! An access type for which this aspect is True is said to be an extended access
! type; this includes the case of a type derived from an extended access type.
! Similarly, a value of such a type is said to be an extended access value.
! 
! The representation of an extended access value is different than that of
! other access values. This representation makes it possible to designate
! objects that cannot be designated using the usual “thin” or “fat” access
! representations for an access type designating an unconstrained array
! subtype (notably slices and array objects imported from other languages).
! 
! In particular, two rules are modified in determining the legality of an Access
! or Unchecked_Access attribute reference if the expected access type is
! an extended access type:
! 
! 
! @itemize *
! 
! @item 
! A slice of an aliased array object of a non-bitpacked type (more precisely,
! of an array type having independently addressable components) is considered
! to be aliased (and the accessibility level of a slice of an array object is
! defined to be that of the array object); this also applies to renamings
! of such slices, slices of such renamings, etc.
! 
! @item 
! The requirement that the nominal subtype of the prefix shall statically
! match the designated subtype of the access type need not be met.
! @end itemize
! 
! The Size aspect (and other aspects including Stream_Size, Object_Size,
! and Alignment) of an extended access type may depend on the properties of the
! designated type. Further details of this dependence are not documented.
! 
! An extended access value is not convertible to a non-extended access type,
! although conversions in the opposite direction are allowed. We don’t want
! to allow
! 
! @example
! type Big_Ref is access all String with Extended_Access;
! type Small_Ref is access all String;
! Obj : aliased String := "abcde";
! Big_Ptr : Big_Ref := Obj (2 .. 4)'Access; -- OK
! Small_Ptr : Small_Ref := Small_Ref (Big_Ptr); -- ERROR: illegal conversion
! @end example
! 
! because there is no way to represent the result of such a conversion.
! 
! A dereference of an extended access value (or a reference to a renaming
! thereof) shall not occur in any of the following contexts:
! 
! 
! @itemize *
! 
! @item 
! as an operative constituent of the prefix of an Access or
! Unchecked_Access attribute reference whose expected type is not extended; or
! 
! @item 
! as an operative constituent of an actual parameter in a call where
! the corresponding formal parameter is explicitly aliased.
! @end itemize
! 
! For the same reasons that explicit conversions from an extended access type to a
! non-extended access type are forbidden, we also need to disallow getting the
! same effect via a Extended_Ptr.all’Access reference; this includes the case
! of passing Extended_Ptr.all as an actual parameter in a call where the
! corresponding formal parameter is explicitly aliased (because the callee
! could evaluate Formal_Parameter’Access). This goal is accomplished by
! adjusting the definition of the term “aliased”. A dereference of an extended
! value occurring in one of these contexts is defined to denote
! a nonaliased view. This has the desired effect because these contexts require
! an aliased view. Continuing the preceding example, this rule disallows
! 
! @example
! Sneaky_1 : Small_Ptr := Big_Ptr.all'Access; -- ERROR: illegal 'Access prefix
! 
! function Make (Str : aliased in out String) return Small_Ptr
!   is (Str'Access); -- OK
! 
! Sneaky_2 : Small_Ptr := Make (Str => Big_Ptr.all); -- ERROR: bad parameter
! @end example
! 
! for the same reason given above in the case of an explicit type conversion.
! 
! @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Extended_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{142}
  @section Aspect Extensions_Visible
  
  
*************** Manual, section 6.1.10.
*** 9869,9875 ****
  This aspect is equivalent to @ref{6d,,pragma Extensions_Visible}.
  
  @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{142}
  @section Aspect Favor_Top_Level
  
  
--- 9968,9974 ----
  This aspect is equivalent to @ref{6d,,pragma Extensions_Visible}.
  
  @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{143}
  @section Aspect Favor_Top_Level
  
  
*************** This aspect is equivalent to @ref{6d,,pr
*** 9878,9884 ****
  This boolean aspect is equivalent to @ref{72,,pragma Favor_Top_Level}.
  
  @node Aspect Ghost,Aspect Ghost_Predicate,Aspect Favor_Top_Level,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{143}
  @section Aspect Ghost
  
  
--- 9977,9983 ----
  This boolean aspect is equivalent to @ref{72,,pragma Favor_Top_Level}.
  
  @node Aspect Ghost,Aspect Ghost_Predicate,Aspect Favor_Top_Level,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{144}
  @section Aspect Ghost
  
  
*************** This boolean aspect is equivalent to @re
*** 9887,9893 ****
  This aspect is equivalent to @ref{76,,pragma Ghost}.
  
  @node Aspect Ghost_Predicate,Aspect Global,Aspect Ghost,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost-predicate}@anchor{144}
  @section Aspect Ghost_Predicate
  
  
--- 9986,9992 ----
  This aspect is equivalent to @ref{76,,pragma Ghost}.
  
  @node Aspect Ghost_Predicate,Aspect Global,Aspect Ghost,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost-predicate}@anchor{145}
  @section Aspect Ghost_Predicate
  
  
*************** For the detailed semantics of this aspec
*** 9900,9906 ****
  in the SPARK Reference Manual, section 3.2.4.
  
  @node Aspect Global,Aspect Initial_Condition,Aspect Ghost_Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{145}
  @section Aspect Global
  
  
--- 9999,10005 ----
  in the SPARK Reference Manual, section 3.2.4.
  
  @node Aspect Global,Aspect Initial_Condition,Aspect Ghost_Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{146}
  @section Aspect Global
  
  
*************** in the SPARK Reference Manual, section 3
*** 9909,9915 ****
  This aspect is equivalent to @ref{78,,pragma Global}.
  
  @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{146}
  @section Aspect Initial_Condition
  
  
--- 10008,10014 ----
  This aspect is equivalent to @ref{78,,pragma Global}.
  
  @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{147}
  @section Aspect Initial_Condition
  
  
*************** This aspect is equivalent to @ref{78,,pr
*** 9918,9924 ****
  This aspect is equivalent to @ref{85,,pragma Initial_Condition}.
  
  @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{147}
  @section Aspect Initializes
  
  
--- 10017,10023 ----
  This aspect is equivalent to @ref{85,,pragma Initial_Condition}.
  
  @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{148}
  @section Aspect Initializes
  
  
*************** This aspect is equivalent to @ref{85,,pr
*** 9927,9933 ****
  This aspect is equivalent to @ref{88,,pragma Initializes}.
  
  @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{148}
  @section Aspect Inline_Always
  
  
--- 10026,10032 ----
  This aspect is equivalent to @ref{88,,pragma Initializes}.
  
  @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{149}
  @section Aspect Inline_Always
  
  
*************** This aspect is equivalent to @ref{88,,pr
*** 9936,9942 ****
  This boolean aspect is equivalent to @ref{8a,,pragma Inline_Always}.
  
  @node Aspect Invariant,Aspect Invariant’Class,Aspect Inline_Always,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{149}
  @section Aspect Invariant
  
  
--- 10035,10041 ----
  This boolean aspect is equivalent to @ref{8a,,pragma Inline_Always}.
  
  @node Aspect Invariant,Aspect Invariant’Class,Aspect Inline_Always,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{14a}
  @section Aspect Invariant
  
  
*************** synonym for the language defined aspect
*** 9947,9953 ****
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Invariant’Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{14a}
  @section Aspect Invariant’Class
  
  
--- 10046,10052 ----
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Invariant’Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{14b}
  @section Aspect Invariant’Class
  
  
*************** synonym for the language defined aspect
*** 9958,9964 ****
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant’Class,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{14b}
  @section Aspect Iterable
  
  
--- 10057,10063 ----
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant’Class,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{14c}
  @section Aspect Iterable
  
  
*************** function Get_Element (Cont : Container;
*** 10042,10048 ****
  This aspect is used in the GNAT-defined formal container packages.
  
  @node Aspect Linker_Section,Aspect Local_Restrictions,Aspect Iterable,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{14c}
  @section Aspect Linker_Section
  
  
--- 10141,10147 ----
  This aspect is used in the GNAT-defined formal container packages.
  
  @node Aspect Linker_Section,Aspect Local_Restrictions,Aspect Iterable,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{14d}
  @section Aspect Linker_Section
  
  
*************** This aspect is used in the GNAT-defined
*** 10051,10057 ****
  This aspect is equivalent to @ref{9a,,pragma Linker_Section}.
  
  @node Aspect Local_Restrictions,Aspect Lock_Free,Aspect Linker_Section,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-local-restrictions}@anchor{14d}
  @section Aspect Local_Restrictions
  
  
--- 10150,10156 ----
  This aspect is equivalent to @ref{9a,,pragma Linker_Section}.
  
  @node Aspect Local_Restrictions,Aspect Lock_Free,Aspect Linker_Section,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-local-restrictions}@anchor{14e}
  @section Aspect Local_Restrictions
  
  
*************** case of a declaration that occurs within
*** 10105,10111 ****
  a Local_Restrictions specification).
  
  @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Local_Restrictions,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{14e}
  @section Aspect Lock_Free
  
  
--- 10204,10210 ----
  a Local_Restrictions specification).
  
  @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Local_Restrictions,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{14f}
  @section Aspect Lock_Free
  
  
*************** a Local_Restrictions specification).
*** 10114,10120 ****
  This boolean aspect is equivalent to @ref{9c,,pragma Lock_Free}.
  
  @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{14f}
  @section Aspect Max_Queue_Length
  
  
--- 10213,10219 ----
  This boolean aspect is equivalent to @ref{9c,,pragma Lock_Free}.
  
  @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{150}
  @section Aspect Max_Queue_Length
  
  
*************** This boolean aspect is equivalent to @re
*** 10123,10129 ****
  This aspect is equivalent to @ref{a4,,pragma Max_Queue_Length}.
  
  @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{150}
  @section Aspect No_Caching
  
  
--- 10222,10228 ----
  This aspect is equivalent to @ref{a4,,pragma Max_Queue_Length}.
  
  @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{151}
  @section Aspect No_Caching
  
  
*************** This aspect is equivalent to @ref{a4,,pr
*** 10132,10138 ****
  This boolean aspect is equivalent to @ref{a7,,pragma No_Caching}.
  
  @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{151}
  @section Aspect No_Elaboration_Code_All
  
  
--- 10231,10237 ----
  This boolean aspect is equivalent to @ref{a7,,pragma No_Caching}.
  
  @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{152}
  @section Aspect No_Elaboration_Code_All
  
  
*************** This aspect is equivalent to @ref{aa,,pr
*** 10142,10148 ****
  for a program unit.
  
  @node Aspect No_Inline,Aspect No_Raise,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{152}
  @section Aspect No_Inline
  
  
--- 10241,10247 ----
  for a program unit.
  
  @node Aspect No_Inline,Aspect No_Raise,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{153}
  @section Aspect No_Inline
  
  
*************** for a program unit.
*** 10151,10157 ****
  This boolean aspect is equivalent to @ref{ad,,pragma No_Inline}.
  
  @node Aspect No_Raise,Aspect No_Tagged_Streams,Aspect No_Inline,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-raise}@anchor{153}
  @section Aspect No_Raise
  
  
--- 10250,10256 ----
  This boolean aspect is equivalent to @ref{ad,,pragma No_Inline}.
  
  @node Aspect No_Raise,Aspect No_Tagged_Streams,Aspect No_Inline,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-raise}@anchor{154}
  @section Aspect No_Raise
  
  
*************** This boolean aspect is equivalent to @re
*** 10160,10166 ****
  This boolean aspect is equivalent to @ref{af,,pragma No_Raise}.
  
  @node Aspect No_Tagged_Streams,Aspect No_Task_Parts,Aspect No_Raise,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{154}
  @section Aspect No_Tagged_Streams
  
  
--- 10259,10265 ----
  This boolean aspect is equivalent to @ref{af,,pragma No_Raise}.
  
  @node Aspect No_Tagged_Streams,Aspect No_Task_Parts,Aspect No_Raise,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{155}
  @section Aspect No_Tagged_Streams
  
  
*************** argument specifying a root tagged type (
*** 10171,10177 ****
  applied to such a type).
  
  @node Aspect No_Task_Parts,Aspect Object_Size,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{155}
  @section Aspect No_Task_Parts
  
  
--- 10270,10276 ----
  applied to such a type).
  
  @node Aspect No_Task_Parts,Aspect Object_Size,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{156}
  @section Aspect No_Task_Parts
  
  
*************** away certain tasking-related code that w
*** 10187,10202 ****
  for T’Class, because descendants of T might contain tasks.
  
  @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Task_Parts,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{156}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{157,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{158}
  @section Aspect Obsolescent
  
  
--- 10286,10301 ----
  for T’Class, because descendants of T might contain tasks.
  
  @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Task_Parts,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{157}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{158,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{159}
  @section Aspect Obsolescent
  
  
*************** evaluation of this aspect happens at the
*** 10207,10213 ****
  delayed until the freeze point.
  
  @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{159}
  @section Aspect Part_Of
  
  
--- 10306,10312 ----
  delayed until the freeze point.
  
  @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{15a}
  @section Aspect Part_Of
  
  
*************** delayed until the freeze point.
*** 10216,10222 ****
  This aspect is equivalent to @ref{bc,,pragma Part_Of}.
  
  @node Aspect Persistent_BSS,Aspect Potentially_Invalid,Aspect Part_Of,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{15a}
  @section Aspect Persistent_BSS
  
  
--- 10315,10321 ----
  This aspect is equivalent to @ref{bc,,pragma Part_Of}.
  
  @node Aspect Persistent_BSS,Aspect Potentially_Invalid,Aspect Part_Of,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{15b}
  @section Aspect Persistent_BSS
  
  
*************** This aspect is equivalent to @ref{bc,,pr
*** 10225,10231 ****
  This boolean aspect is equivalent to @ref{c0,,pragma Persistent_BSS}.
  
  @node Aspect Potentially_Invalid,Aspect Predicate,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-potentially-invalid}@anchor{15b}
  @section Aspect Potentially_Invalid
  
  
--- 10324,10330 ----
  This boolean aspect is equivalent to @ref{c0,,pragma Persistent_BSS}.
  
  @node Aspect Potentially_Invalid,Aspect Predicate,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-potentially-invalid}@anchor{15c}
  @section Aspect Potentially_Invalid
  
  
*************** For the syntax and semantics of this asp
*** 10235,10241 ****
  Manual, section 13.9.1.
  
  @node Aspect Predicate,Aspect Program_Exit,Aspect Potentially_Invalid,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{15c}
  @section Aspect Predicate
  
  
--- 10334,10340 ----
  Manual, section 13.9.1.
  
  @node Aspect Predicate,Aspect Program_Exit,Aspect Potentially_Invalid,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{15d}
  @section Aspect Predicate
  
  
*************** expression. It is also separately contro
*** 10249,10255 ****
  @code{Assertion_Policy}.
  
  @node Aspect Program_Exit,Aspect Pure_Function,Aspect Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-program-exit}@anchor{15d}
  @section Aspect Program_Exit
  
  
--- 10348,10354 ----
  @code{Assertion_Policy}.
  
  @node Aspect Program_Exit,Aspect Pure_Function,Aspect Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-program-exit}@anchor{15e}
  @section Aspect Program_Exit
  
  
*************** expression. It is also separately contro
*** 10258,10264 ****
  This boolean aspect is equivalent to @ref{d0,,pragma Program_Exit}.
  
  @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Program_Exit,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{15e}
  @section Aspect Pure_Function
  
  
--- 10357,10363 ----
  This boolean aspect is equivalent to @ref{d0,,pragma Program_Exit}.
  
  @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Program_Exit,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{15f}
  @section Aspect Pure_Function
  
  
*************** This boolean aspect is equivalent to @re
*** 10267,10273 ****
  This boolean aspect is equivalent to @ref{d5,,pragma Pure_Function}.
  
  @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{15f}
  @section Aspect Refined_Depends
  
  
--- 10366,10372 ----
  This boolean aspect is equivalent to @ref{d5,,pragma Pure_Function}.
  
  @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{160}
  @section Aspect Refined_Depends
  
  
*************** This boolean aspect is equivalent to @re
*** 10276,10282 ****
  This aspect is equivalent to @ref{d9,,pragma Refined_Depends}.
  
  @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{160}
  @section Aspect Refined_Global
  
  
--- 10375,10381 ----
  This aspect is equivalent to @ref{d9,,pragma Refined_Depends}.
  
  @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{161}
  @section Aspect Refined_Global
  
  
*************** This aspect is equivalent to @ref{d9,,pr
*** 10285,10291 ****
  This aspect is equivalent to @ref{db,,pragma Refined_Global}.
  
  @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{161}
  @section Aspect Refined_Post
  
  
--- 10384,10390 ----
  This aspect is equivalent to @ref{db,,pragma Refined_Global}.
  
  @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{162}
  @section Aspect Refined_Post
  
  
*************** This aspect is equivalent to @ref{db,,pr
*** 10294,10300 ****
  This aspect is equivalent to @ref{dd,,pragma Refined_Post}.
  
  @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{162}
  @section Aspect Refined_State
  
  
--- 10393,10399 ----
  This aspect is equivalent to @ref{dd,,pragma Refined_Post}.
  
  @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{163}
  @section Aspect Refined_State
  
  
*************** This aspect is equivalent to @ref{dd,,pr
*** 10303,10309 ****
  This aspect is equivalent to @ref{df,,pragma Refined_State}.
  
  @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{163}
  @section Aspect Relaxed_Initialization
  
  
--- 10402,10408 ----
  This aspect is equivalent to @ref{df,,pragma Refined_State}.
  
  @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{164}
  @section Aspect Relaxed_Initialization
  
  
*************** For the syntax and semantics of this asp
*** 10313,10319 ****
  Manual, section 6.10.
  
  @node Aspect Remote_Access_Type,Aspect Scalar_Storage_Order,Aspect Relaxed_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{164}
  @section Aspect Remote_Access_Type
  
  
--- 10412,10418 ----
  Manual, section 6.10.
  
  @node Aspect Remote_Access_Type,Aspect Scalar_Storage_Order,Aspect Relaxed_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{165}
  @section Aspect Remote_Access_Type
  
  
*************** Manual, section 6.10.
*** 10322,10337 ****
  This aspect is equivalent to @ref{e2,,pragma Remote_Access_Type}.
  
  @node Aspect Scalar_Storage_Order,Aspect Secondary_Stack_Size,Aspect Remote_Access_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{165}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{166,,attribute Scalar_Storage_Order}.
  
  @node Aspect Secondary_Stack_Size,Aspect Shared,Aspect Scalar_Storage_Order,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{167}
  @section Aspect Secondary_Stack_Size
  
  
--- 10421,10436 ----
  This aspect is equivalent to @ref{e2,,pragma Remote_Access_Type}.
  
  @node Aspect Scalar_Storage_Order,Aspect Secondary_Stack_Size,Aspect Remote_Access_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{166}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{167,,attribute Scalar_Storage_Order}.
  
  @node Aspect Secondary_Stack_Size,Aspect Shared,Aspect Scalar_Storage_Order,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{168}
  @section Aspect Secondary_Stack_Size
  
  
*************** This aspect is equivalent to a @ref{166,
*** 10340,10346 ****
  This aspect is equivalent to @ref{e8,,pragma Secondary_Stack_Size}.
  
  @node Aspect Shared,Aspect Side_Effects,Aspect Secondary_Stack_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{168}
  @section Aspect Shared
  
  
--- 10439,10445 ----
  This aspect is equivalent to @ref{e8,,pragma Secondary_Stack_Size}.
  
  @node Aspect Shared,Aspect Side_Effects,Aspect Secondary_Stack_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{169}
  @section Aspect Shared
  
  
*************** This boolean aspect is equivalent to @re
*** 10350,10356 ****
  and is thus a synonym for aspect @code{Atomic}.
  
  @node Aspect Side_Effects,Aspect Simple_Storage_Pool,Aspect Shared,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-side-effects}@anchor{169}
  @section Aspect Side_Effects
  
  
--- 10449,10455 ----
  and is thus a synonym for aspect @code{Atomic}.
  
  @node Aspect Side_Effects,Aspect Simple_Storage_Pool,Aspect Shared,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-side-effects}@anchor{16a}
  @section Aspect Side_Effects
  
  
*************** and is thus a synonym for aspect @code{A
*** 10359,10365 ****
  This aspect is equivalent to @ref{ef,,pragma Side_Effects}.
  
  @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Side_Effects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{16a}
  @section Aspect Simple_Storage_Pool
  
  
--- 10458,10464 ----
  This aspect is equivalent to @ref{ef,,pragma Side_Effects}.
  
  @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Side_Effects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{16b}
  @section Aspect Simple_Storage_Pool
  
  
*************** This aspect is equivalent to @ref{ef,,pr
*** 10368,10374 ****
  This aspect is equivalent to @ref{f2,,attribute Simple_Storage_Pool}.
  
  @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{16b}
  @section Aspect Simple_Storage_Pool_Type
  
  
--- 10467,10473 ----
  This aspect is equivalent to @ref{f2,,attribute Simple_Storage_Pool}.
  
  @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{16c}
  @section Aspect Simple_Storage_Pool_Type
  
  
*************** This aspect is equivalent to @ref{f2,,at
*** 10377,10383 ****
  This boolean aspect is equivalent to @ref{f1,,pragma Simple_Storage_Pool_Type}.
  
  @node Aspect SPARK_Mode,Aspect Subprogram_Variant,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{16c}
  @section Aspect SPARK_Mode
  
  
--- 10476,10482 ----
  This boolean aspect is equivalent to @ref{f1,,pragma Simple_Storage_Pool_Type}.
  
  @node Aspect SPARK_Mode,Aspect Subprogram_Variant,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{16d}
  @section Aspect SPARK_Mode
  
  
*************** may be specified for either or both of t
*** 10388,10394 ****
  of a subprogram or package.
  
  @node Aspect Subprogram_Variant,Aspect Suppress_Debug_Info,Aspect SPARK_Mode,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-subprogram-variant}@anchor{16d}
  @section Aspect Subprogram_Variant
  
  
--- 10487,10493 ----
  of a subprogram or package.
  
  @node Aspect Subprogram_Variant,Aspect Suppress_Debug_Info,Aspect SPARK_Mode,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-subprogram-variant}@anchor{16e}
  @section Aspect Subprogram_Variant
  
  
*************** For the syntax and semantics of this asp
*** 10398,10404 ****
  Manual, section 6.1.8.
  
  @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect Subprogram_Variant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{16e}
  @section Aspect Suppress_Debug_Info
  
  
--- 10497,10503 ----
  Manual, section 6.1.8.
  
  @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect Subprogram_Variant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{16f}
  @section Aspect Suppress_Debug_Info
  
  
*************** Manual, section 6.1.8.
*** 10407,10413 ****
  This boolean aspect is equivalent to @ref{102,,pragma Suppress_Debug_Info}.
  
  @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{16f}
  @section Aspect Suppress_Initialization
  
  
--- 10506,10512 ----
  This boolean aspect is equivalent to @ref{102,,pragma Suppress_Debug_Info}.
  
  @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{170}
  @section Aspect Suppress_Initialization
  
  
*************** This boolean aspect is equivalent to @re
*** 10416,10422 ****
  This boolean aspect is equivalent to @ref{105,,pragma Suppress_Initialization}.
  
  @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{170}
  @section Aspect Test_Case
  
  
--- 10515,10521 ----
  This boolean aspect is equivalent to @ref{105,,pragma Suppress_Initialization}.
  
  @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{171}
  @section Aspect Test_Case
  
  
*************** This boolean aspect is equivalent to @re
*** 10425,10431 ****
  This aspect is equivalent to @ref{109,,pragma Test_Case}.
  
  @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{171}
  @section Aspect Thread_Local_Storage
  
  
--- 10524,10530 ----
  This aspect is equivalent to @ref{109,,pragma Test_Case}.
  
  @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{172}
  @section Aspect Thread_Local_Storage
  
  
*************** This aspect is equivalent to @ref{109,,p
*** 10434,10440 ****
  This boolean aspect is equivalent to @ref{10b,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Unmodified,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{172}
  @section Aspect Universal_Aliasing
  
  
--- 10533,10539 ----
  This boolean aspect is equivalent to @ref{10b,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Unmodified,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{173}
  @section Aspect Universal_Aliasing
  
  
*************** This boolean aspect is equivalent to @re
*** 10443,10449 ****
  This boolean aspect is equivalent to @ref{116,,pragma Universal_Aliasing}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{173}
  @section Aspect Unmodified
  
  
--- 10542,10548 ----
  This boolean aspect is equivalent to @ref{116,,pragma Universal_Aliasing}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{174}
  @section Aspect Unmodified
  
  
*************** This boolean aspect is equivalent to @re
*** 10452,10458 ****
  This boolean aspect is equivalent to @ref{118,,pragma Unmodified}.
  
  @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{174}
  @section Aspect Unreferenced
  
  
--- 10551,10557 ----
  This boolean aspect is equivalent to @ref{118,,pragma Unmodified}.
  
  @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{175}
  @section Aspect Unreferenced
  
  
*************** parameters, which is in particular the o
*** 10465,10471 ****
  functions.
  
  @node Aspect Unreferenced_Objects,Aspect User_Aspect,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{175}
  @section Aspect Unreferenced_Objects
  
  
--- 10564,10570 ----
  functions.
  
  @node Aspect Unreferenced_Objects,Aspect User_Aspect,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{176}
  @section Aspect Unreferenced_Objects
  
  
*************** functions.
*** 10474,10480 ****
  This boolean aspect is equivalent to @ref{11c,,pragma Unreferenced_Objects}.
  
  @node Aspect User_Aspect,Aspect Value_Size,Aspect Unreferenced_Objects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-user-aspect}@anchor{176}
  @section Aspect User_Aspect
  
  
--- 10573,10579 ----
  This boolean aspect is equivalent to @ref{11c,,pragma Unreferenced_Objects}.
  
  @node Aspect User_Aspect,Aspect Value_Size,Aspect Unreferenced_Objects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-user-aspect}@anchor{177}
  @section Aspect User_Aspect
  
  
*************** replicating the set of aspect specificat
*** 10487,10502 ****
  pragma-defined aspect.
  
  @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect User_Aspect,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{177}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{178,,attribute Value_Size}.
  
  @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{179}
  @section Aspect Volatile_Full_Access
  
  
--- 10586,10601 ----
  pragma-defined aspect.
  
  @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect User_Aspect,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{178}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{179,,attribute Value_Size}.
  
  @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{17a}
  @section Aspect Volatile_Full_Access
  
  
*************** This aspect is equivalent to @ref{178,,a
*** 10505,10511 ****
  This boolean aspect is equivalent to @ref{126,,pragma Volatile_Full_Access}.
  
  @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{17a}
  @section Aspect Volatile_Function
  
  
--- 10604,10610 ----
  This boolean aspect is equivalent to @ref{126,,pragma Volatile_Full_Access}.
  
  @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{17b}
  @section Aspect Volatile_Function
  
  
*************** This boolean aspect is equivalent to @re
*** 10514,10520 ****
  This boolean aspect is equivalent to @ref{128,,pragma Volatile_Function}.
  
  @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{17b}
  @section Aspect Warnings
  
  
--- 10613,10619 ----
  This boolean aspect is equivalent to @ref{128,,pragma Volatile_Function}.
  
  @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{17c}
  @section Aspect Warnings
  
  
*************** where the first argument is @code{ON} or
*** 10525,10531 ****
  is the entity.
  
  @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top
! @anchor{gnat_rm/implementation_defined_attributes doc}@anchor{17c}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{17d}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}
  @chapter Implementation Defined Attributes
  
  
--- 10624,10630 ----
  is the entity.
  
  @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top
! @anchor{gnat_rm/implementation_defined_attributes doc}@anchor{17d}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{17e}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}
  @chapter Implementation Defined Attributes
  
  
*************** consideration, you should minimize the u
*** 10631,10637 ****
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{17e}
  @section Attribute Abort_Signal
  
  
--- 10730,10736 ----
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{17f}
  @section Attribute Abort_Signal
  
  
*************** completely outside the normal semantics
*** 10645,10651 ****
  intercept the abort exception).
  
  @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{17f}
  @section Attribute Address_Size
  
  
--- 10744,10750 ----
  intercept the abort exception).
  
  @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{180}
  @section Attribute Address_Size
  
  
*************** reference to System.Address’Size is no
*** 10661,10667 ****
  is a private type.
  
  @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{180}
  @section Attribute Asm_Input
  
  
--- 10760,10766 ----
  is a private type.
  
  @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{181}
  @section Attribute Asm_Input
  
  
*************** to be a static expression, and is the co
*** 10675,10684 ****
  value to be used as the input argument.  The possible values for the
  constant are the same as those used in the RTL, and are dependent on
  the configuration file used to built the GCC back end.
! @ref{181,,Machine Code Insertions}
  
  @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{182}
  @section Attribute Asm_Output
  
  
--- 10774,10783 ----
  value to be used as the input argument.  The possible values for the
  constant are the same as those used in the RTL, and are dependent on
  the configuration file used to built the GCC back end.
! @ref{182,,Machine Code Insertions}
  
  @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{183}
  @section Attribute Asm_Output
  
  
*************** result.  The possible values for constra
*** 10694,10703 ****
  the RTL, and are dependent on the configuration file used to build the
  GCC back end.  If there are no output operands, then this argument may
  either be omitted, or explicitly given as @code{No_Output_Operands}.
! @ref{181,,Machine Code Insertions}
  
  @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{183}
  @section Attribute Atomic_Always_Lock_Free
  
  
--- 10793,10802 ----
  the RTL, and are dependent on the configuration file used to build the
  GCC back end.  If there are no output operands, then this argument may
  either be omitted, or explicitly given as @code{No_Output_Operands}.
! @ref{182,,Machine Code Insertions}
  
  @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{184}
  @section Attribute Atomic_Always_Lock_Free
  
  
*************** result indicates whether atomic operatio
*** 10708,10714 ****
  for the given type.
  
  @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{184}
  @section Attribute Bit
  
  
--- 10807,10813 ----
  for the given type.
  
  @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{185}
  @section Attribute Bit
  
  
*************** This attribute is designed to be compati
*** 10739,10745 ****
  and implementation of the @code{Bit} attribute.
  
  @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{185}
  @section Attribute Bit_Position
  
  
--- 10838,10844 ----
  and implementation of the @code{Bit} attribute.
  
  @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{186}
  @section Attribute Bit_Position
  
  
*************** type `universal_integer'.  The value dep
*** 10754,10760 ****
  the containing record @code{R}.
  
  @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{186}
  @section Attribute Code_Address
  
  
--- 10853,10859 ----
  the containing record @code{R}.
  
  @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{187}
  @section Attribute Code_Address
  
  
*************** the same value as is returned by the cor
*** 10797,10803 ****
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{187}
  @section Attribute Compiler_Version
  
  
--- 10896,10902 ----
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{188}
  @section Attribute Compiler_Version
  
  
*************** prefix) yields a static string identifyi
*** 10808,10814 ****
  being used to compile the unit containing the attribute reference.
  
  @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{188}
  @section Attribute Constrained
  
  
--- 10907,10913 ----
  being used to compile the unit containing the attribute reference.
  
  @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{189}
  @section Attribute Constrained
  
  
*************** record type without discriminants is alw
*** 10823,10829 ****
  compatible with older Ada compilers, including notably DEC Ada.
  
  @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{189}
  @section Attribute Default_Bit_Order
  
  
--- 10922,10928 ----
  compatible with older Ada compilers, including notably DEC Ada.
  
  @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{18a}
  @section Attribute Default_Bit_Order
  
  
*************** as a @code{Pos} value (0 for @code{High_
*** 10840,10846 ****
  @code{Default_Bit_Order} in package @code{System}.
  
  @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{18a}
  @section Attribute Default_Scalar_Storage_Order
  
  
--- 10939,10945 ----
  @code{Default_Bit_Order} in package @code{System}.
  
  @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{18b}
  @section Attribute Default_Scalar_Storage_Order
  
  
*************** equal to @code{Default_Bit_Order} if uns
*** 10857,10863 ****
  @code{System.Bit_Order} value. This is a static attribute.
  
  @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{18b}
  @section Attribute Deref
  
  
--- 10956,10962 ----
  @code{System.Bit_Order} value. This is a static attribute.
  
  @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{18c}
  @section Attribute Deref
  
  
*************** a named access-to-@cite{typ} type, excep
*** 10870,10876 ****
  used on the left side of an assignment.
  
  @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{18c}
  @section Attribute Descriptor_Size
  
  
--- 10969,10975 ----
  used on the left side of an assignment.
  
  @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{18d}
  @section Attribute Descriptor_Size
  
  
*************** since @code{Positive} has an alignment o
*** 10899,10905 ****
  which yields a size of 32 bits, i.e. including 16 bits of padding.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{18d}
  @section Attribute Elaborated
  
  
--- 10998,11004 ----
  which yields a size of 32 bits, i.e. including 16 bits of padding.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{18e}
  @section Attribute Elaborated
  
  
*************** units has been completed.  An exception
*** 10914,10920 ****
  elaboration, the value is always False for such units.
  
  @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{18e}
  @section Attribute Elab_Body
  
  
--- 11013,11019 ----
  elaboration, the value is always False for such units.
  
  @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{18f}
  @section Attribute Elab_Body
  
  
*************** e.g., if it is necessary to do selective
*** 10930,10936 ****
  error.
  
  @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{18f}
  @section Attribute Elab_Spec
  
  
--- 11029,11035 ----
  error.
  
  @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{190}
  @section Attribute Elab_Spec
  
  
*************** Ada code, e.g., if it is necessary to do
*** 10946,10952 ****
  some error.
  
  @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{190}
  @section Attribute Elab_Subp_Body
  
  
--- 11045,11051 ----
  some error.
  
  @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{191}
  @section Attribute Elab_Subp_Body
  
  
*************** elaboration procedure by the binder in C
*** 10960,10966 ****
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{191}
  @section Attribute Emax
  
  
--- 11059,11065 ----
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{192}
  @section Attribute Emax
  
  
*************** the Ada 83 reference manual for an exact
*** 10973,10979 ****
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{192}
  @section Attribute Enabled
  
  
--- 11072,11078 ----
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{193}
  @section Attribute Enabled
  
  
*************** a @code{pragma Suppress} or @code{pragma
*** 10997,11003 ****
  the package or subprogram, controlling whether the check will be present.
  
  @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{193}
  @section Attribute Enum_Rep
  
  
--- 11096,11102 ----
  the package or subprogram, controlling whether the check will be present.
  
  @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{194}
  @section Attribute Enum_Rep
  
  
*************** integer calculation is done at run time,
*** 11037,11043 ****
  may raise @code{Constraint_Error}.
  
  @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{194}
  @section Attribute Enum_Val
  
  
--- 11136,11142 ----
  may raise @code{Constraint_Error}.
  
  @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{195}
  @section Attribute Enum_Val
  
  
*************** absence of an enumeration representation
*** 11063,11069 ****
  attribute (i.e., the result is static if the argument is static).
  
  @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{195}
  @section Attribute Epsilon
  
  
--- 11162,11168 ----
  attribute (i.e., the result is static if the argument is static).
  
  @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{196}
  @section Attribute Epsilon
  
  
*************** the Ada 83 reference manual for an exact
*** 11076,11082 ****
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{196}
  @section Attribute Fast_Math
  
  
--- 11175,11181 ----
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{197}
  @section Attribute Fast_Math
  
  
*************** prefix) yields a static Boolean value th
*** 11087,11093 ****
  @code{Fast_Math} is active, and False otherwise.
  
  @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{197}
  @section Attribute Finalization_Size
  
  
--- 11186,11192 ----
  @code{Fast_Math} is active, and False otherwise.
  
  @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{198}
  @section Attribute Finalization_Size
  
  
*************** class-wide type whose tag denotes a type
*** 11105,11111 ****
  Note that only heap-allocated objects contain finalization data.
  
  @node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{198}
  @section Attribute Fixed_Value
  
  
--- 11204,11210 ----
  Note that only heap-allocated objects contain finalization data.
  
  @node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{199}
  @section Attribute Fixed_Value
  
  
*************** This attribute is primarily intended for
*** 11132,11138 ****
  input-output functions for fixed-point values.
  
  @node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{199}
  @section Attribute From_Any
  
  
--- 11231,11237 ----
  input-output functions for fixed-point values.
  
  @node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{19a}
  @section Attribute From_Any
  
  
*************** This internal attribute is used for the
*** 11142,11148 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{19a}
  @section Attribute Has_Access_Values
  
  
--- 11241,11247 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{19b}
  @section Attribute Has_Access_Values
  
  
*************** definitions.  If the attribute is applie
*** 11160,11166 ****
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{19b}
  @section Attribute Has_Discriminants
  
  
--- 11259,11265 ----
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{19c}
  @section Attribute Has_Discriminants
  
  
*************** definitions.  If the attribute is applie
*** 11176,11182 ****
  indicates whether or not the corresponding actual type has discriminants.
  
  @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{19c}
  @section Attribute Has_Tagged_Values
  
  
--- 11275,11281 ----
  indicates whether or not the corresponding actual type has discriminants.
  
  @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{19d}
  @section Attribute Has_Tagged_Values
  
  
*************** definitions. If the attribute is applied
*** 11193,11199 ****
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{19d}
  @section Attribute Img
  
  
--- 11292,11298 ----
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{19e}
  @section Attribute Img
  
  
*************** that returns the appropriate string when
*** 11223,11229 ****
  in an instantiation as a function parameter.
  
  @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{19e}
  @section Attribute Initialized
  
  
--- 11322,11328 ----
  in an instantiation as a function parameter.
  
  @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{19f}
  @section Attribute Initialized
  
  
*************** For the syntax and semantics of this att
*** 11233,11239 ****
  Manual, section 6.10.
  
  @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{19f}
  @section Attribute Integer_Value
  
  
--- 11332,11338 ----
  Manual, section 6.10.
  
  @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{1a0}
  @section Attribute Integer_Value
  
  
*************** This attribute is primarily intended for
*** 11261,11267 ****
  standard input-output functions for fixed-point values.
  
  @node Attribute Invalid_Value,Attribute Large,Attribute Integer_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{1a0}
  @section Attribute Invalid_Value
  
  
--- 11360,11366 ----
  standard input-output functions for fixed-point values.
  
  @node Attribute Invalid_Value,Attribute Large,Attribute Integer_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{1a1}
  @section Attribute Invalid_Value
  
  
*************** including the ability to modify the valu
*** 11275,11281 ****
  relevant environment variables at run time.
  
  @node Attribute Large,Attribute Library_Level,Attribute Invalid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{1a1}
  @section Attribute Large
  
  
--- 11374,11380 ----
  relevant environment variables at run time.
  
  @node Attribute Large,Attribute Library_Level,Attribute Invalid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{1a2}
  @section Attribute Large
  
  
*************** the Ada 83 reference manual for an exact
*** 11288,11294 ****
  this attribute.
  
  @node Attribute Library_Level,Attribute Loop_Entry,Attribute Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{1a2}
  @section Attribute Library_Level
  
  
--- 11387,11393 ----
  this attribute.
  
  @node Attribute Library_Level,Attribute Loop_Entry,Attribute Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{1a3}
  @section Attribute Library_Level
  
  
*************** end Gen;
*** 11314,11320 ****
  @end example
  
  @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Library_Level,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{1a3}
  @section Attribute Loop_Entry
  
  
--- 11413,11419 ----
  @end example
  
  @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Library_Level,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{1a4}
  @section Attribute Loop_Entry
  
  
*************** entry. This copy is not performed if the
*** 11347,11353 ****
  corresponding pragmas are ignored or disabled.
  
  @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{1a4}
  @section Attribute Machine_Size
  
  
--- 11446,11452 ----
  corresponding pragmas are ignored or disabled.
  
  @node Attribute Machine_Size,Attribute Mantissa,Attribute Loop_Entry,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-machine-size}@anchor{1a5}
  @section Attribute Machine_Size
  
  
*************** This attribute is identical to the @code
*** 11357,11363 ****
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{1a5}
  @section Attribute Mantissa
  
  
--- 11456,11462 ----
  provided for compatibility with the DEC Ada 83 attribute of this name.
  
  @node Attribute Mantissa,Attribute Maximum_Alignment,Attribute Machine_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mantissa}@anchor{1a6}
  @section Attribute Mantissa
  
  
*************** the Ada 83 reference manual for an exact
*** 11370,11376 ****
  this attribute.
  
  @node Attribute Maximum_Alignment,Attribute Max_Integer_Size,Attribute Mantissa,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{1a6}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{1a7}
  @section Attribute Maximum_Alignment
  
  
--- 11469,11475 ----
  this attribute.
  
  @node Attribute Maximum_Alignment,Attribute Max_Integer_Size,Attribute Mantissa,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-maximum-alignment}@anchor{1a7}@anchor{gnat_rm/implementation_defined_attributes id2}@anchor{1a8}
  @section Attribute Maximum_Alignment
  
  
*************** for an object, guaranteeing that it is p
*** 11386,11392 ****
  cases.
  
  @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{1a8}
  @section Attribute Max_Integer_Size
  
  
--- 11485,11491 ----
  cases.
  
  @node Attribute Max_Integer_Size,Attribute Mechanism_Code,Attribute Maximum_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-max-integer-size}@anchor{1a9}
  @section Attribute Max_Integer_Size
  
  
*************** prefix) provides the size of the largest
*** 11397,11403 ****
  the target. The result is a static constant.
  
  @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Max_Integer_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{1a9}
  @section Attribute Mechanism_Code
  
  
--- 11496,11502 ----
  the target. The result is a static constant.
  
  @node Attribute Mechanism_Code,Attribute Null_Parameter,Attribute Max_Integer_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-mechanism-code}@anchor{1aa}
  @section Attribute Mechanism_Code
  
  
*************** by reference
*** 11428,11434 ****
  @end table
  
  @node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{1aa}
  @section Attribute Null_Parameter
  
  
--- 11527,11533 ----
  @end table
  
  @node Attribute Null_Parameter,Attribute Object_Size,Attribute Mechanism_Code,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-null-parameter}@anchor{1ab}
  @section Attribute Null_Parameter
  
  
*************** There is no way of indicating this witho
*** 11453,11459 ****
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{157}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{1ab}
  @section Attribute Object_Size
  
  
--- 11552,11558 ----
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{158}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{1ac}
  @section Attribute Object_Size
  
  
*************** Similar additional checks are performed
*** 11523,11529 ****
  statically matching subtypes.
  
  @node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{1ac}
  @section Attribute Old
  
  
--- 11622,11628 ----
  statically matching subtypes.
  
  @node Attribute Old,Attribute Passed_By_Reference,Attribute Object_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-old}@anchor{1ad}
  @section Attribute Old
  
  
*************** definition are allowed under control of
*** 11538,11544 ****
  implementation defined pragma @code{Unevaluated_Use_Of_Old}.
  
  @node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{1ad}
  @section Attribute Passed_By_Reference
  
  
--- 11637,11643 ----
  implementation defined pragma @code{Unevaluated_Use_Of_Old}.
  
  @node Attribute Passed_By_Reference,Attribute Pool_Address,Attribute Old,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-passed-by-reference}@anchor{1ae}
  @section Attribute Passed_By_Reference
  
  
*************** passed by copy in calls.  For scalar typ
*** 11554,11560 ****
  and is static.  For non-scalar types, the result is nonstatic.
  
  @node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{1ae}
  @section Attribute Pool_Address
  
  
--- 11653,11659 ----
  and is static.  For non-scalar types, the result is nonstatic.
  
  @node Attribute Pool_Address,Attribute Range_Length,Attribute Passed_By_Reference,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-pool-address}@anchor{1af}
  @section Attribute Pool_Address
  
  
*************** For an object created by @code{new}, @co
*** 11576,11582 ****
  what is passed to @code{Allocate} and returned from @code{Deallocate}.
  
  @node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{1af}
  @section Attribute Range_Length
  
  
--- 11675,11681 ----
  what is passed to @code{Allocate} and returned from @code{Deallocate}.
  
  @node Attribute Range_Length,Attribute Restriction_Set,Attribute Pool_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-range-length}@anchor{1b0}
  @section Attribute Range_Length
  
  
*************** applied to the index subtype of a one di
*** 11589,11595 ****
  same result as @code{Length} applied to the array itself.
  
  @node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{1b0}
  @section Attribute Restriction_Set
  
  
--- 11688,11694 ----
  same result as @code{Length} applied to the array itself.
  
  @node Attribute Restriction_Set,Attribute Result,Attribute Range_Length,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-restriction-set}@anchor{1b1}
  @section Attribute Restriction_Set
  
  
*************** Restrictions pragma, they are not analyz
*** 11659,11665 ****
  so they do not have a type.
  
  @node Attribute Result,Attribute Round,Attribute Restriction_Set,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{1b1}
  @section Attribute Result
  
  
--- 11758,11764 ----
  so they do not have a type.
  
  @node Attribute Result,Attribute Round,Attribute Restriction_Set,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-result}@anchor{1b2}
  @section Attribute Result
  
  
*************** For a further discussion of the use of t
*** 11672,11678 ****
  see the description of pragma Postcondition.
  
  @node Attribute Round,Attribute Safe_Emax,Attribute Result,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-round}@anchor{1b2}
  @section Attribute Round
  
  
--- 11771,11777 ----
  see the description of pragma Postcondition.
  
  @node Attribute Round,Attribute Safe_Emax,Attribute Result,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-round}@anchor{1b3}
  @section Attribute Round
  
  
*************** also permits the use of the @code{'Round
*** 11683,11689 ****
  fixed point types.
  
  @node Attribute Safe_Emax,Attribute Safe_Large,Attribute Round,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{1b3}
  @section Attribute Safe_Emax
  
  
--- 11782,11788 ----
  fixed point types.
  
  @node Attribute Safe_Emax,Attribute Safe_Large,Attribute Round,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-emax}@anchor{1b4}
  @section Attribute Safe_Emax
  
  
*************** the Ada 83 reference manual for an exact
*** 11696,11702 ****
  this attribute.
  
  @node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{1b4}
  @section Attribute Safe_Large
  
  
--- 11795,11801 ----
  this attribute.
  
  @node Attribute Safe_Large,Attribute Safe_Small,Attribute Safe_Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-large}@anchor{1b5}
  @section Attribute Safe_Large
  
  
*************** the Ada 83 reference manual for an exact
*** 11709,11715 ****
  this attribute.
  
  @node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{1b5}
  @section Attribute Safe_Small
  
  
--- 11808,11814 ----
  this attribute.
  
  @node Attribute Safe_Small,Attribute Scalar_Storage_Order,Attribute Safe_Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-safe-small}@anchor{1b6}
  @section Attribute Safe_Small
  
  
*************** the Ada 83 reference manual for an exact
*** 11722,11728 ****
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{166}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1b6}
  @section Attribute Scalar_Storage_Order
  
  
--- 11821,11827 ----
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{167}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{1b7}
  @section Attribute Scalar_Storage_Order
  
  
*************** Note that debuggers may be unable to dis
*** 11885,11891 ****
  components of a type for which the opposite storage order is specified.
  
  @node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{f2}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1b7}
  @section Attribute Simple_Storage_Pool
  
  
--- 11984,11990 ----
  components of a type for which the opposite storage order is specified.
  
  @node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{f2}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{1b8}
  @section Attribute Simple_Storage_Pool
  
  
*************** as defined in section 13.11.2 of the Ada
*** 11948,11954 ****
  term `simple storage pool' is substituted for `storage pool'.
  
  @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1b8}
  @section Attribute Small
  
  
--- 12047,12053 ----
  term `simple storage pool' is substituted for `storage pool'.
  
  @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{1b9}
  @section Attribute Small
  
  
*************** the Ada 83 reference manual for an exact
*** 11964,11970 ****
  this attribute when applied to floating-point types.
  
  @node Attribute Small_Denominator,Attribute Small_Numerator,Attribute Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{1b9}
  @section Attribute Small_Denominator
  
  
--- 12063,12069 ----
  this attribute when applied to floating-point types.
  
  @node Attribute Small_Denominator,Attribute Small_Numerator,Attribute Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small-denominator}@anchor{1ba}
  @section Attribute Small_Denominator
  
  
*************** denominator in the representation of @co
*** 11977,11983 ****
  with coprime factors (i.e. as an irreducible fraction).
  
  @node Attribute Small_Numerator,Attribute Storage_Unit,Attribute Small_Denominator,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{1ba}
  @section Attribute Small_Numerator
  
  
--- 12076,12082 ----
  with coprime factors (i.e. as an irreducible fraction).
  
  @node Attribute Small_Numerator,Attribute Storage_Unit,Attribute Small_Denominator,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-small-numerator}@anchor{1bb}
  @section Attribute Small_Numerator
  
  
*************** numerator in the representation of @code
*** 11990,11996 ****
  with coprime factors (i.e. as an irreducible fraction).
  
  @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small_Numerator,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1bb}
  @section Attribute Storage_Unit
  
  
--- 12089,12095 ----
  with coprime factors (i.e. as an irreducible fraction).
  
  @node Attribute Storage_Unit,Attribute Stub_Type,Attribute Small_Numerator,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-storage-unit}@anchor{1bc}
  @section Attribute Storage_Unit
  
  
*************** with coprime factors (i.e. as an irreduc
*** 12000,12006 ****
  prefix) provides the same value as @code{System.Storage_Unit}.
  
  @node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1bc}
  @section Attribute Stub_Type
  
  
--- 12099,12105 ----
  prefix) provides the same value as @code{System.Storage_Unit}.
  
  @node Attribute Stub_Type,Attribute System_Allocator_Alignment,Attribute Storage_Unit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-stub-type}@anchor{1bd}
  @section Attribute Stub_Type
  
  
*************** unit @code{System.Partition_Interface}.
*** 12024,12030 ****
  an implicit dependency on this unit.
  
  @node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1bd}
  @section Attribute System_Allocator_Alignment
  
  
--- 12123,12129 ----
  an implicit dependency on this unit.
  
  @node Attribute System_Allocator_Alignment,Attribute Target_Name,Attribute Stub_Type,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-system-allocator-alignment}@anchor{1be}
  @section Attribute System_Allocator_Alignment
  
  
*************** with alignment too large or to enable a
*** 12041,12047 ****
  alignment request is larger than this value.
  
  @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1be}
  @section Attribute Target_Name
  
  
--- 12140,12146 ----
  alignment request is larger than this value.
  
  @node Attribute Target_Name,Attribute To_Address,Attribute System_Allocator_Alignment,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-target-name}@anchor{1bf}
  @section Attribute Target_Name
  
  
*************** standard gcc target name without the ter
*** 12054,12060 ****
  example, GNAT 5.0 on windows yields “i586-pc-mingw32msv”).
  
  @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1bf}
  @section Attribute To_Address
  
  
--- 12153,12159 ----
  example, GNAT 5.0 on windows yields “i586-pc-mingw32msv”).
  
  @node Attribute To_Address,Attribute To_Any,Attribute Target_Name,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-address}@anchor{1c0}
  @section Attribute To_Address
  
  
*************** modular manner (e.g., -1 means the same
*** 12077,12083 ****
  a 32 bits machine).
  
  @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1c0}
  @section Attribute To_Any
  
  
--- 12176,12182 ----
  a 32 bits machine).
  
  @node Attribute To_Any,Attribute Type_Class,Attribute To_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-to-any}@anchor{1c1}
  @section Attribute To_Any
  
  
*************** This internal attribute is used for the
*** 12087,12093 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1c1}
  @section Attribute Type_Class
  
  
--- 12186,12192 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Type_Class,Attribute Type_Key,Attribute To_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-class}@anchor{1c2}
  @section Attribute Type_Class
  
  
*************** applies to all concurrent types.  This a
*** 12117,12123 ****
  be compatible with the DEC Ada 83 attribute of the same name.
  
  @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1c2}
  @section Attribute Type_Key
  
  
--- 12216,12222 ----
  be compatible with the DEC Ada 83 attribute of the same name.
  
  @node Attribute Type_Key,Attribute TypeCode,Attribute Type_Class,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-type-key}@anchor{1c3}
  @section Attribute Type_Key
  
  
*************** about the type or subtype. This provides
*** 12129,12135 ****
  other implementations that support this attribute.
  
  @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1c3}
  @section Attribute TypeCode
  
  
--- 12228,12234 ----
  other implementations that support this attribute.
  
  @node Attribute TypeCode,Attribute Unconstrained_Array,Attribute Type_Key,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-typecode}@anchor{1c4}
  @section Attribute TypeCode
  
  
*************** This internal attribute is used for the
*** 12139,12145 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1c4}
  @section Attribute Unconstrained_Array
  
  
--- 12238,12244 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Unconstrained_Array,Attribute Universal_Literal_String,Attribute TypeCode,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unconstrained-array}@anchor{1c5}
  @section Attribute Unconstrained_Array
  
  
*************** still static, and yields the result of a
*** 12153,12159 ****
  generic actual.
  
  @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1c5}
  @section Attribute Universal_Literal_String
  
  
--- 12252,12258 ----
  generic actual.
  
  @node Attribute Universal_Literal_String,Attribute Unrestricted_Access,Attribute Unconstrained_Array,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-universal-literal-string}@anchor{1c6}
  @section Attribute Universal_Literal_String
  
  
*************** end;
*** 12181,12187 ****
  @end example
  
  @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1c6}
  @section Attribute Unrestricted_Access
  
  
--- 12280,12286 ----
  @end example
  
  @node Attribute Unrestricted_Access,Attribute Update,Attribute Universal_Literal_String,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-unrestricted-access}@anchor{1c7}
  @section Attribute Unrestricted_Access
  
  
*************** In general this is a risky approach. It
*** 12368,12374 ****
  of GNAT to another, so are best avoided if possible.
  
  @node Attribute Update,Attribute Valid_Value,Attribute Unrestricted_Access,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1c7}
  @section Attribute Update
  
  
--- 12467,12473 ----
  of GNAT to another, so are best avoided if possible.
  
  @node Attribute Update,Attribute Valid_Value,Attribute Unrestricted_Access,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1c8}
  @section Attribute Update
  
  
*************** A := A'Update ((1, 2) => 20, (3, 4) => 3
*** 12449,12455 ****
  which changes element (1,2) to 20 and (3,4) to 30.
  
  @node Attribute Valid_Value,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1c8}
  @section Attribute Valid_Value
  
  
--- 12548,12554 ----
  which changes element (1,2) to 20 and (3,4) to 30.
  
  @node Attribute Valid_Value,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1c9}
  @section Attribute Valid_Value
  
  
*************** a function that takes a String, and retu
*** 12461,12467 ****
  returns True if and only if @code{T'Value (S)} would not raise Constraint_Error.
  
  @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1c9}
  @section Attribute Valid_Scalars
  
  
--- 12560,12566 ----
  returns True if and only if @code{T'Value (S)} would not raise Constraint_Error.
  
  @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1ca}
  @section Attribute Valid_Scalars
  
  
*************** write a function with a single use of th
*** 12495,12501 ****
  function from multiple places.
  
  @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1ca}
  @section Attribute VADS_Size
  
  
--- 12594,12600 ----
  function from multiple places.
  
  @node Attribute VADS_Size,Attribute Value_Size,Attribute Valid_Scalars,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-vads-size}@anchor{1cb}
  @section Attribute VADS_Size
  
  
*************** gives the result that would be obtained
*** 12515,12521 ****
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{178}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1cb}
  @section Attribute Value_Size
  
  
--- 12614,12620 ----
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{179}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1cc}
  @section Attribute Value_Size
  
  
*************** a value of the given subtype.  It is the
*** 12529,12535 ****
  but, unlike @code{Size}, may be set for non-first subtypes.
  
  @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1cc}
  @section Attribute Wchar_T_Size
  
  
--- 12628,12634 ----
  but, unlike @code{Size}, may be set for non-first subtypes.
  
  @node Attribute Wchar_T_Size,Attribute Word_Size,Attribute Value_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-wchar-t-size}@anchor{1cd}
  @section Attribute Wchar_T_Size
  
  
*************** primarily for constructing the definitio
*** 12541,12547 ****
  package @code{Interfaces.C}. The result is a static constant.
  
  @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1cd}
  @section Attribute Word_Size
  
  
--- 12640,12646 ----
  package @code{Interfaces.C}. The result is a static constant.
  
  @node Attribute Word_Size,,Attribute Wchar_T_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-word-size}@anchor{1ce}
  @section Attribute Word_Size
  
  
*************** prefix) provides the value @code{System.
*** 12552,12558 ****
  a static constant.
  
  @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1ce}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1cf}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}
  @chapter Standard and Implementation Defined Restrictions
  
  
--- 12651,12657 ----
  a static constant.
  
  @node Standard and Implementation Defined Restrictions,Implementation Advice,Implementation Defined Attributes,Top
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions doc}@anchor{1cf}@anchor{gnat_rm/standard_and_implementation_defined_restrictions id1}@anchor{1d0}@anchor{gnat_rm/standard_and_implementation_defined_restrictions standard-and-implementation-defined-restrictions}@anchor{9}
  @chapter Standard and Implementation Defined Restrictions
  
  
*************** language defined or GNAT-specific, are l
*** 12581,12587 ****
  @end menu
  
  @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1d0}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1d1}
  @section Partition-Wide Restrictions
  
  
--- 12680,12686 ----
  @end menu
  
  @node Partition-Wide Restrictions,Program Unit Level Restrictions,,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id2}@anchor{1d1}@anchor{gnat_rm/standard_and_implementation_defined_restrictions partition-wide-restrictions}@anchor{1d2}
  @section Partition-Wide Restrictions
  
  
*************** then all compilation units in the partit
*** 12674,12680 ****
  @end menu
  
  @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1d2}
  @subsection Immediate_Reclamation
  
  
--- 12773,12779 ----
  @end menu
  
  @node Immediate_Reclamation,Max_Asynchronous_Select_Nesting,,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions immediate-reclamation}@anchor{1d3}
  @subsection Immediate_Reclamation
  
  
*************** deallocation, any storage reserved at ru
*** 12686,12692 ****
  immediately reclaimed when the object no longer exists.
  
  @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1d3}
  @subsection Max_Asynchronous_Select_Nesting
  
  
--- 12785,12791 ----
  immediately reclaimed when the object no longer exists.
  
  @node Max_Asynchronous_Select_Nesting,Max_Entry_Queue_Length,Immediate_Reclamation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-asynchronous-select-nesting}@anchor{1d4}
  @subsection Max_Asynchronous_Select_Nesting
  
  
*************** detected at compile time. Violations of
*** 12698,12704 ****
  other than zero cause Storage_Error to be raised.
  
  @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1d4}
  @subsection Max_Entry_Queue_Length
  
  
--- 12797,12803 ----
  other than zero cause Storage_Error to be raised.
  
  @node Max_Entry_Queue_Length,Max_Protected_Entries,Max_Asynchronous_Select_Nesting,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-entry-queue-length}@anchor{1d5}
  @subsection Max_Entry_Queue_Length
  
  
*************** compatibility purposes (and a warning wi
*** 12719,12725 ****
  warnings on obsolescent features are activated).
  
  @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1d5}
  @subsection Max_Protected_Entries
  
  
--- 12818,12824 ----
  warnings on obsolescent features are activated).
  
  @node Max_Protected_Entries,Max_Select_Alternatives,Max_Entry_Queue_Length,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-protected-entries}@anchor{1d6}
  @subsection Max_Protected_Entries
  
  
*************** bounds of every entry family of a protec
*** 12730,12736 ****
  defined by a discriminant of a subtype whose corresponding bound is static.
  
  @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1d6}
  @subsection Max_Select_Alternatives
  
  
--- 12829,12835 ----
  defined by a discriminant of a subtype whose corresponding bound is static.
  
  @node Max_Select_Alternatives,Max_Storage_At_Blocking,Max_Protected_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-select-alternatives}@anchor{1d7}
  @subsection Max_Select_Alternatives
  
  
*************** defined by a discriminant of a subtype w
*** 12739,12745 ****
  [RM D.7] Specifies the maximum number of alternatives in a selective accept.
  
  @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1d7}
  @subsection Max_Storage_At_Blocking
  
  
--- 12838,12844 ----
  [RM D.7] Specifies the maximum number of alternatives in a selective accept.
  
  @node Max_Storage_At_Blocking,Max_Task_Entries,Max_Select_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-storage-at-blocking}@anchor{1d8}
  @subsection Max_Storage_At_Blocking
  
  
*************** Storage_Size that can be retained by a b
*** 12750,12756 ****
  restriction causes Storage_Error to be raised.
  
  @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1d8}
  @subsection Max_Task_Entries
  
  
--- 12849,12855 ----
  restriction causes Storage_Error to be raised.
  
  @node Max_Task_Entries,Max_Tasks,Max_Storage_At_Blocking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-task-entries}@anchor{1d9}
  @subsection Max_Task_Entries
  
  
*************** defined by a discriminant of a subtype w
*** 12763,12769 ****
  corresponding bound is static.
  
  @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1d9}
  @subsection Max_Tasks
  
  
--- 12862,12868 ----
  corresponding bound is static.
  
  @node Max_Tasks,No_Abort_Statements,Max_Task_Entries,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions max-tasks}@anchor{1da}
  @subsection Max_Tasks
  
  
*************** time. Violations of this restriction wit
*** 12776,12782 ****
  Storage_Error to be raised.
  
  @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1da}
  @subsection No_Abort_Statements
  
  
--- 12875,12881 ----
  Storage_Error to be raised.
  
  @node No_Abort_Statements,No_Access_Parameter_Allocators,Max_Tasks,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-abort-statements}@anchor{1db}
  @subsection No_Abort_Statements
  
  
*************** Storage_Error to be raised.
*** 12786,12792 ****
  no calls to Task_Identification.Abort_Task.
  
  @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1db}
  @subsection No_Access_Parameter_Allocators
  
  
--- 12885,12891 ----
  no calls to Task_Identification.Abort_Task.
  
  @node No_Access_Parameter_Allocators,No_Access_Subprograms,No_Abort_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-parameter-allocators}@anchor{1dc}
  @subsection No_Access_Parameter_Allocators
  
  
*************** occurrences of an allocator as the actua
*** 12797,12803 ****
  parameter.
  
  @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1dc}
  @subsection No_Access_Subprograms
  
  
--- 12896,12902 ----
  parameter.
  
  @node No_Access_Subprograms,No_Allocators,No_Access_Parameter_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-access-subprograms}@anchor{1dd}
  @subsection No_Access_Subprograms
  
  
*************** parameter.
*** 12807,12813 ****
  declarations of access-to-subprogram types.
  
  @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1dd}
  @subsection No_Allocators
  
  
--- 12906,12912 ----
  declarations of access-to-subprogram types.
  
  @node No_Allocators,No_Anonymous_Allocators,No_Access_Subprograms,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-allocators}@anchor{1de}
  @subsection No_Allocators
  
  
*************** declarations of access-to-subprogram typ
*** 12817,12823 ****
  occurrences of an allocator.
  
  @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1de}
  @subsection No_Anonymous_Allocators
  
  
--- 12916,12922 ----
  occurrences of an allocator.
  
  @node No_Anonymous_Allocators,No_Asynchronous_Control,No_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-anonymous-allocators}@anchor{1df}
  @subsection No_Anonymous_Allocators
  
  
*************** occurrences of an allocator.
*** 12827,12833 ****
  occurrences of an allocator of anonymous access type.
  
  @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1df}
  @subsection No_Asynchronous_Control
  
  
--- 12926,12932 ----
  occurrences of an allocator of anonymous access type.
  
  @node No_Asynchronous_Control,No_Calendar,No_Anonymous_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-asynchronous-control}@anchor{1e0}
  @subsection No_Asynchronous_Control
  
  
*************** occurrences of an allocator of anonymous
*** 12837,12843 ****
  dependences on the predefined package Asynchronous_Task_Control.
  
  @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1e0}
  @subsection No_Calendar
  
  
--- 12936,12942 ----
  dependences on the predefined package Asynchronous_Task_Control.
  
  @node No_Calendar,No_Coextensions,No_Asynchronous_Control,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-calendar}@anchor{1e1}
  @subsection No_Calendar
  
  
*************** dependences on the predefined package As
*** 12847,12853 ****
  dependences on package Calendar.
  
  @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1e1}
  @subsection No_Coextensions
  
  
--- 12946,12952 ----
  dependences on package Calendar.
  
  @node No_Coextensions,No_Default_Initialization,No_Calendar,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-coextensions}@anchor{1e2}
  @subsection No_Coextensions
  
  
*************** dependences on package Calendar.
*** 12857,12863 ****
  coextensions. See 3.10.2.
  
  @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1e2}
  @subsection No_Default_Initialization
  
  
--- 12956,12962 ----
  coextensions. See 3.10.2.
  
  @node No_Default_Initialization,No_Delay,No_Coextensions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-default-initialization}@anchor{1e3}
  @subsection No_Default_Initialization
  
  
*************** is to prohibit all cases of variables de
*** 12874,12880 ****
  initializer (including the case of OUT scalar parameters).
  
  @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1e3}
  @subsection No_Delay
  
  
--- 12973,12979 ----
  initializer (including the case of OUT scalar parameters).
  
  @node No_Delay,No_Dependence,No_Default_Initialization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-delay}@anchor{1e4}
  @subsection No_Delay
  
  
*************** initializer (including the case of OUT s
*** 12884,12890 ****
  delay statements and no semantic dependences on package Calendar.
  
  @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1e4}
  @subsection No_Dependence
  
  
--- 12983,12989 ----
  delay statements and no semantic dependences on package Calendar.
  
  @node No_Dependence,No_Direct_Boolean_Operators,No_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dependence}@anchor{1e5}
  @subsection No_Dependence
  
  
*************** to support specific constructs of the la
*** 12927,12933 ****
  @end itemize
  
  @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1e5}
  @subsection No_Direct_Boolean_Operators
  
  
--- 13026,13032 ----
  @end itemize
  
  @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1e6}
  @subsection No_Direct_Boolean_Operators
  
  
*************** protocol requires the use of short-circu
*** 12940,12946 ****
  composite boolean operations.
  
  @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1e6}
  @subsection No_Dispatch
  
  
--- 13039,13045 ----
  composite boolean operations.
  
  @node No_Dispatch,No_Dispatching_Calls,No_Direct_Boolean_Operators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatch}@anchor{1e7}
  @subsection No_Dispatch
  
  
*************** composite boolean operations.
*** 12950,12956 ****
  occurrences of @code{T'Class}, for any (tagged) subtype @code{T}.
  
  @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1e7}
  @subsection No_Dispatching_Calls
  
  
--- 13049,13055 ----
  occurrences of @code{T'Class}, for any (tagged) subtype @code{T}.
  
  @node No_Dispatching_Calls,No_Dynamic_Attachment,No_Dispatch,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dispatching-calls}@anchor{1e8}
  @subsection No_Dispatching_Calls
  
  
*************** end Example;
*** 13011,13017 ****
  @end example
  
  @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1e8}
  @subsection No_Dynamic_Attachment
  
  
--- 13110,13116 ----
  @end example
  
  @node No_Dynamic_Attachment,No_Dynamic_Priorities,No_Dispatching_Calls,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-attachment}@anchor{1e9}
  @subsection No_Dynamic_Attachment
  
  
*************** compatibility purposes (and a warning wi
*** 13030,13036 ****
  warnings on obsolescent features are activated).
  
  @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1e9}
  @subsection No_Dynamic_Priorities
  
  
--- 13129,13135 ----
  warnings on obsolescent features are activated).
  
  @node No_Dynamic_Priorities,No_Entry_Calls_In_Elaboration_Code,No_Dynamic_Attachment,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-priorities}@anchor{1ea}
  @subsection No_Dynamic_Priorities
  
  
*************** warnings on obsolescent features are act
*** 13039,13045 ****
  [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities.
  
  @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1ea}
  @subsection No_Entry_Calls_In_Elaboration_Code
  
  
--- 13138,13144 ----
  [RM D.7] There are no semantic dependencies on the package Dynamic_Priorities.
  
  @node No_Entry_Calls_In_Elaboration_Code,No_Enumeration_Maps,No_Dynamic_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-calls-in-elaboration-code}@anchor{1eb}
  @subsection No_Entry_Calls_In_Elaboration_Code
  
  
*************** restriction, the compiler can assume tha
*** 13051,13057 ****
  in a task can be executed at elaboration time.
  
  @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1eb}
  @subsection No_Enumeration_Maps
  
  
--- 13150,13156 ----
  in a task can be executed at elaboration time.
  
  @node No_Enumeration_Maps,No_Exception_Handlers,No_Entry_Calls_In_Elaboration_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-enumeration-maps}@anchor{1ec}
  @subsection No_Enumeration_Maps
  
  
*************** enumeration maps are used (that is Image
*** 13062,13068 ****
  to enumeration types).
  
  @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1ec}
  @subsection No_Exception_Handlers
  
  
--- 13161,13167 ----
  to enumeration types).
  
  @node No_Exception_Handlers,No_Exception_Propagation,No_Enumeration_Maps,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-handlers}@anchor{1ed}
  @subsection No_Exception_Handlers
  
  
*************** the raise statement generated by the com
*** 13087,13093 ****
  represents the line number in the source program where the raise occurs.
  
  @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1ed}
  @subsection No_Exception_Propagation
  
  
--- 13186,13192 ----
  represents the line number in the source program where the raise occurs.
  
  @node No_Exception_Propagation,No_Exception_Registration,No_Exception_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-propagation}@anchor{1ee}
  @subsection No_Exception_Propagation
  
  
*************** the package GNAT.Current_Exception is no
*** 13104,13110 ****
  statements (raise with no operand) are not permitted.
  
  @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1ee}
  @subsection No_Exception_Registration
  
  
--- 13203,13209 ----
  statements (raise with no operand) are not permitted.
  
  @node No_Exception_Registration,No_Exceptions,No_Exception_Propagation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exception-registration}@anchor{1ef}
  @subsection No_Exception_Registration
  
  
*************** code is simplified by omitting the other
*** 13118,13124 ****
  of exceptions when they are declared.
  
  @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1ef}
  @subsection No_Exceptions
  
  
--- 13217,13223 ----
  of exceptions when they are declared.
  
  @node No_Exceptions,No_Finalization,No_Exception_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-exceptions}@anchor{1f0}
  @subsection No_Exceptions
  
  
*************** raise statements and no exception handle
*** 13129,13135 ****
  generation of language-defined run-time checks.
  
  @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1f0}
  @subsection No_Finalization
  
  
--- 13228,13234 ----
  generation of language-defined run-time checks.
  
  @node No_Finalization,No_Fixed_Point,No_Exceptions,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-finalization}@anchor{1f1}
  @subsection No_Finalization
  
  
*************** object or a nested component, either dec
*** 13170,13176 ****
  deallocation of a controlled object no longer finalizes its contents.
  
  @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1f1}
  @subsection No_Fixed_Point
  
  
--- 13269,13275 ----
  deallocation of a controlled object no longer finalizes its contents.
  
  @node No_Fixed_Point,No_Floating_Point,No_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-fixed-point}@anchor{1f2}
  @subsection No_Fixed_Point
  
  
*************** deallocation of a controlled object no l
*** 13180,13186 ****
  occurrences of fixed point types and operations.
  
  @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1f2}
  @subsection No_Floating_Point
  
  
--- 13279,13285 ----
  occurrences of fixed point types and operations.
  
  @node No_Floating_Point,No_Implicit_Conditionals,No_Fixed_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-floating-point}@anchor{1f3}
  @subsection No_Floating_Point
  
  
*************** occurrences of fixed point types and ope
*** 13190,13196 ****
  occurrences of floating point types and operations.
  
  @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1f3}
  @subsection No_Implicit_Conditionals
  
  
--- 13289,13295 ----
  occurrences of floating point types and operations.
  
  @node No_Implicit_Conditionals,No_Implicit_Dynamic_Code,No_Floating_Point,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-conditionals}@anchor{1f4}
  @subsection No_Implicit_Conditionals
  
  
*************** normal manner. Constructs generating imp
*** 13206,13212 ****
  of composite objects and the Max/Min attributes.
  
  @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1f4}
  @subsection No_Implicit_Dynamic_Code
  
  
--- 13305,13311 ----
  of composite objects and the Max/Min attributes.
  
  @node No_Implicit_Dynamic_Code,No_Implicit_Heap_Allocations,No_Implicit_Conditionals,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-dynamic-code}@anchor{1f5}
  @subsection No_Implicit_Dynamic_Code
  
  
*************** foreign-language convention; primitive o
*** 13236,13242 ****
  types.
  
  @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1f5}
  @subsection No_Implicit_Heap_Allocations
  
  
--- 13335,13341 ----
  types.
  
  @node No_Implicit_Heap_Allocations,No_Implicit_Protected_Object_Allocations,No_Implicit_Dynamic_Code,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-heap-allocations}@anchor{1f6}
  @subsection No_Implicit_Heap_Allocations
  
  
*************** types.
*** 13245,13251 ****
  [RM D.7] No constructs are allowed to cause implicit heap allocation.
  
  @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1f6}
  @subsection No_Implicit_Protected_Object_Allocations
  
  
--- 13344,13350 ----
  [RM D.7] No constructs are allowed to cause implicit heap allocation.
  
  @node No_Implicit_Protected_Object_Allocations,No_Implicit_Task_Allocations,No_Implicit_Heap_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-protected-object-allocations}@anchor{1f7}
  @subsection No_Implicit_Protected_Object_Allocations
  
  
*************** types.
*** 13255,13261 ****
  protected object.
  
  @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1f7}
  @subsection No_Implicit_Task_Allocations
  
  
--- 13354,13360 ----
  protected object.
  
  @node No_Implicit_Task_Allocations,No_Initialize_Scalars,No_Implicit_Protected_Object_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-task-allocations}@anchor{1f8}
  @subsection No_Implicit_Task_Allocations
  
  
*************** protected object.
*** 13264,13270 ****
  [GNAT] No constructs are allowed to cause implicit heap allocation of a task.
  
  @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1f8}
  @subsection No_Initialize_Scalars
  
  
--- 13363,13369 ----
  [GNAT] No constructs are allowed to cause implicit heap allocation of a task.
  
  @node No_Initialize_Scalars,No_IO,No_Implicit_Task_Allocations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-initialize-scalars}@anchor{1f9}
  @subsection No_Initialize_Scalars
  
  
*************** code, and in particular eliminates dummy
*** 13276,13282 ****
  are otherwise generated for some record and array types.
  
  @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1f9}
  @subsection No_IO
  
  
--- 13375,13381 ----
  are otherwise generated for some record and array types.
  
  @node No_IO,No_Local_Allocators,No_Initialize_Scalars,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-io}@anchor{1fa}
  @subsection No_IO
  
  
*************** dependences on any of the library units
*** 13287,13293 ****
  Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO.
  
  @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1fa}
  @subsection No_Local_Allocators
  
  
--- 13386,13392 ----
  Text_IO, Wide_Text_IO, Wide_Wide_Text_IO, or Stream_IO.
  
  @node No_Local_Allocators,No_Local_Protected_Objects,No_IO,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-allocators}@anchor{1fb}
  @subsection No_Local_Allocators
  
  
*************** occurrences of an allocator in subprogra
*** 13298,13304 ****
  and entry bodies.
  
  @node No_Local_Protected_Objects,No_Local_Tagged_Types,No_Local_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1fb}
  @subsection No_Local_Protected_Objects
  
  
--- 13397,13403 ----
  and entry bodies.
  
  @node No_Local_Protected_Objects,No_Local_Tagged_Types,No_Local_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1fc}
  @subsection No_Local_Protected_Objects
  
  
*************** and entry bodies.
*** 13308,13314 ****
  only declared at the library level.
  
  @node No_Local_Tagged_Types,No_Local_Timing_Events,No_Local_Protected_Objects,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1fc}
  @subsection No_Local_Tagged_Types
  
  
--- 13407,13413 ----
  only declared at the library level.
  
  @node No_Local_Tagged_Types,No_Local_Timing_Events,No_Local_Protected_Objects,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1fd}
  @subsection No_Local_Tagged_Types
  
  
*************** only declared at the library level.
*** 13318,13324 ****
  declared at the library level.
  
  @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Tagged_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1fd}
  @subsection No_Local_Timing_Events
  
  
--- 13417,13423 ----
  declared at the library level.
  
  @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Tagged_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1fe}
  @subsection No_Local_Timing_Events
  
  
*************** declared at the library level.
*** 13328,13334 ****
  declared at the library level.
  
  @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1fe}
  @subsection No_Long_Long_Integers
  
  
--- 13427,13433 ----
  declared at the library level.
  
  @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1ff}
  @subsection No_Long_Long_Integers
  
  
*************** implicit base type is Long_Long_Integer,
*** 13340,13346 ****
  Long_Integer’Size.
  
  @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1ff}
  @subsection No_Multiple_Elaboration
  
  
--- 13439,13445 ----
  Long_Integer’Size.
  
  @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{200}
  @subsection No_Multiple_Elaboration
  
  
*************** possible, including non-Ada main program
*** 13356,13362 ****
  permitted and will be diagnosed by the binder.
  
  @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{200}
  @subsection No_Nested_Finalization
  
  
--- 13455,13461 ----
  permitted and will be diagnosed by the binder.
  
  @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{201}
  @subsection No_Nested_Finalization
  
  
*************** permitted and will be diagnosed by the b
*** 13365,13371 ****
  [RM D.7] All objects requiring finalization are declared at the library level.
  
  @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{201}
  @subsection No_Protected_Type_Allocators
  
  
--- 13464,13470 ----
  [RM D.7] All objects requiring finalization are declared at the library level.
  
  @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{202}
  @subsection No_Protected_Type_Allocators
  
  
*************** permitted and will be diagnosed by the b
*** 13375,13381 ****
  expressions that attempt to allocate protected objects.
  
  @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{202}
  @subsection No_Protected_Types
  
  
--- 13474,13480 ----
  expressions that attempt to allocate protected objects.
  
  @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{203}
  @subsection No_Protected_Types
  
  
*************** expressions that attempt to allocate pro
*** 13385,13391 ****
  declarations of protected types or protected objects.
  
  @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{203}
  @subsection No_Recursion
  
  
--- 13484,13490 ----
  declarations of protected types or protected objects.
  
  @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{204}
  @subsection No_Recursion
  
  
*************** declarations of protected types or prote
*** 13395,13401 ****
  part of its execution.
  
  @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{204}
  @subsection No_Reentrancy
  
  
--- 13494,13500 ----
  part of its execution.
  
  @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{205}
  @subsection No_Reentrancy
  
  
*************** part of its execution.
*** 13405,13411 ****
  two tasks at the same time.
  
  @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{205}
  @subsection No_Relative_Delay
  
  
--- 13504,13510 ----
  two tasks at the same time.
  
  @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{206}
  @subsection No_Relative_Delay
  
  
*************** relative statements and prevents express
*** 13416,13422 ****
  appearing in source code.
  
  @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{206}
  @subsection No_Requeue_Statements
  
  
--- 13515,13521 ----
  appearing in source code.
  
  @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{207}
  @subsection No_Requeue_Statements
  
  
*************** compatibility purposes (and a warning wi
*** 13434,13440 ****
  warnings on oNobsolescent features are activated).
  
  @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{207}
  @subsection No_Secondary_Stack
  
  
--- 13533,13539 ----
  warnings on oNobsolescent features are activated).
  
  @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{208}
  @subsection No_Secondary_Stack
  
  
*************** stack is used to implement functions ret
*** 13447,13453 ****
  secondary stacks for tasks (excluding the environment task) at run time.
  
  @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{208}
  @subsection No_Select_Statements
  
  
--- 13546,13552 ----
  secondary stacks for tasks (excluding the environment task) at run time.
  
  @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{209}
  @subsection No_Select_Statements
  
  
*************** secondary stacks for tasks (excluding th
*** 13457,13463 ****
  kind are permitted, that is the keyword @code{select} may not appear.
  
  @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{209}
  @subsection No_Specific_Termination_Handlers
  
  
--- 13556,13562 ----
  kind are permitted, that is the keyword @code{select} may not appear.
  
  @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{20a}
  @subsection No_Specific_Termination_Handlers
  
  
*************** kind are permitted, that is the keyword
*** 13467,13473 ****
  or to Ada.Task_Termination.Specific_Handler.
  
  @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{20a}
  @subsection No_Specification_of_Aspect
  
  
--- 13566,13572 ----
  or to Ada.Task_Termination.Specific_Handler.
  
  @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{20b}
  @subsection No_Specification_of_Aspect
  
  
*************** specification, attribute definition clau
*** 13478,13484 ****
  given aspect.
  
  @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{20b}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
--- 13577,13583 ----
  given aspect.
  
  @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{20c}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
*************** library items of the partition has compl
*** 13490,13496 ****
  is raised.
  
  @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{20c}
  @subsection No_Standard_Storage_Pools
  
  
--- 13589,13595 ----
  is raised.
  
  @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{20d}
  @subsection No_Standard_Storage_Pools
  
  
*************** have an explicit Storage_Pool attribute
*** 13502,13508 ****
  user-defined storage pool.
  
  @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{20d}
  @subsection No_Stream_Optimizations
  
  
--- 13601,13607 ----
  user-defined storage pool.
  
  @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{20e}
  @subsection No_Stream_Optimizations
  
  
*************** due to their superior performance. When
*** 13515,13521 ****
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{20e}
  @subsection No_Streams
  
  
--- 13614,13620 ----
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{20f}
  @subsection No_Streams
  
  
*************** configuration pragmas to avoid exposing
*** 13542,13548 ****
  entire partition.
  
  @node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{20f}
  @subsection No_Tagged_Type_Registration
  
  
--- 13641,13647 ----
  entire partition.
  
  @node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{210}
  @subsection No_Tagged_Type_Registration
  
  
*************** are declared. This restriction may be ne
*** 13557,13563 ****
  the No_Elaboration_Code restriction.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{210}
  @subsection No_Task_Allocators
  
  
--- 13656,13662 ----
  the No_Elaboration_Code restriction.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{211}
  @subsection No_Task_Allocators
  
  
*************** the No_Elaboration_Code restriction.
*** 13567,13573 ****
  or types containing task subcomponents.
  
  @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{211}
  @subsection No_Task_At_Interrupt_Priority
  
  
--- 13666,13672 ----
  or types containing task subcomponents.
  
  @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{212}
  @subsection No_Task_At_Interrupt_Priority
  
  
*************** a consequence, the tasks are always crea
*** 13579,13585 ****
  that an interrupt priority.
  
  @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{212}
  @subsection No_Task_Attributes_Package
  
  
--- 13678,13684 ----
  that an interrupt priority.
  
  @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{213}
  @subsection No_Task_Attributes_Package
  
  
*************** compatibility purposes (and a warning wi
*** 13596,13602 ****
  warnings on obsolescent features are activated).
  
  @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{213}
  @subsection No_Task_Hierarchy
  
  
--- 13695,13701 ----
  warnings on obsolescent features are activated).
  
  @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{214}
  @subsection No_Task_Hierarchy
  
  
*************** warnings on obsolescent features are act
*** 13606,13612 ****
  directly on the environment task of the partition.
  
  @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{214}
  @subsection No_Task_Termination
  
  
--- 13705,13711 ----
  directly on the environment task of the partition.
  
  @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{215}
  @subsection No_Task_Termination
  
  
*************** directly on the environment task of the
*** 13615,13621 ****
  [RM D.7] Tasks that terminate are erroneous.
  
  @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{215}
  @subsection No_Tasking
  
  
--- 13714,13720 ----
  [RM D.7] Tasks that terminate are erroneous.
  
  @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{216}
  @subsection No_Tasking
  
  
*************** and cause an error message to be output
*** 13628,13634 ****
  binder.
  
  @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{216}
  @subsection No_Terminate_Alternatives
  
  
--- 13727,13733 ----
  binder.
  
  @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{217}
  @subsection No_Terminate_Alternatives
  
  
*************** binder.
*** 13637,13643 ****
  [RM D.7] There are no selective accepts with terminate alternatives.
  
  @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{217}
  @subsection No_Unchecked_Access
  
  
--- 13736,13742 ----
  [RM D.7] There are no selective accepts with terminate alternatives.
  
  @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{218}
  @subsection No_Unchecked_Access
  
  
*************** binder.
*** 13647,13653 ****
  occurrences of the Unchecked_Access attribute.
  
  @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{218}
  @subsection No_Unchecked_Conversion
  
  
--- 13746,13752 ----
  occurrences of the Unchecked_Access attribute.
  
  @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{219}
  @subsection No_Unchecked_Conversion
  
  
*************** occurrences of the Unchecked_Access attr
*** 13657,13663 ****
  dependences on the predefined generic function Unchecked_Conversion.
  
  @node No_Unchecked_Deallocation,No_Use_Of_Attribute,No_Unchecked_Conversion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{219}
  @subsection No_Unchecked_Deallocation
  
  
--- 13756,13762 ----
  dependences on the predefined generic function Unchecked_Conversion.
  
  @node No_Unchecked_Deallocation,No_Use_Of_Attribute,No_Unchecked_Conversion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{21a}
  @subsection No_Unchecked_Deallocation
  
  
*************** dependences on the predefined generic fu
*** 13667,13673 ****
  dependences on the predefined generic procedure Unchecked_Deallocation.
  
  @node No_Use_Of_Attribute,No_Use_Of_Entity,No_Unchecked_Deallocation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{21a}
  @subsection No_Use_Of_Attribute
  
  
--- 13766,13772 ----
  dependences on the predefined generic procedure Unchecked_Deallocation.
  
  @node No_Use_Of_Attribute,No_Use_Of_Entity,No_Unchecked_Deallocation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-attribute}@anchor{21b}
  @subsection No_Use_Of_Attribute
  
  
*************** dependences on the predefined generic pr
*** 13677,13683 ****
  earlier versions of Ada.
  
  @node No_Use_Of_Entity,No_Use_Of_Pragma,No_Use_Of_Attribute,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{21b}
  @subsection No_Use_Of_Entity
  
  
--- 13776,13782 ----
  earlier versions of Ada.
  
  @node No_Use_Of_Entity,No_Use_Of_Pragma,No_Use_Of_Attribute,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{21c}
  @subsection No_Use_Of_Entity
  
  
*************** No_Use_Of_Entity => Ada.Text_IO.Put_Line
*** 13697,13703 ****
  @end example
  
  @node No_Use_Of_Pragma,Pure_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{21c}
  @subsection No_Use_Of_Pragma
  
  
--- 13796,13802 ----
  @end example
  
  @node No_Use_Of_Pragma,Pure_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-pragma}@anchor{21d}
  @subsection No_Use_Of_Pragma
  
  
*************** No_Use_Of_Entity => Ada.Text_IO.Put_Line
*** 13707,13713 ****
  earlier versions of Ada.
  
  @node Pure_Barriers,Simple_Barriers,No_Use_Of_Pragma,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{21d}
  @subsection Pure_Barriers
  
  
--- 13806,13812 ----
  earlier versions of Ada.
  
  @node Pure_Barriers,Simple_Barriers,No_Use_Of_Pragma,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{21e}
  @subsection Pure_Barriers
  
  
*************** but still ensures absence of side effect
*** 13758,13764 ****
  during the evaluation of the barriers.
  
  @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{21e}
  @subsection Simple_Barriers
  
  
--- 13857,13863 ----
  during the evaluation of the barriers.
  
  @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{21f}
  @subsection Simple_Barriers
  
  
*************** compatibility purposes (and a warning wi
*** 13777,13783 ****
  warnings on obsolescent features are activated).
  
  @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{21f}
  @subsection Static_Priorities
  
  
--- 13876,13882 ----
  warnings on obsolescent features are activated).
  
  @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{220}
  @subsection Static_Priorities
  
  
*************** are static, and that there are no depend
*** 13788,13794 ****
  @code{Ada.Dynamic_Priorities}.
  
  @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{220}
  @subsection Static_Storage_Size
  
  
--- 13887,13893 ----
  @code{Ada.Dynamic_Priorities}.
  
  @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{221}
  @subsection Static_Storage_Size
  
  
*************** are static, and that there are no depend
*** 13798,13804 ****
  in a Storage_Size pragma or attribute definition clause is static.
  
  @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{221}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{222}
  @section Program Unit Level Restrictions
  
  
--- 13897,13903 ----
  in a Storage_Size pragma or attribute definition clause is static.
  
  @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{222}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{223}
  @section Program Unit Level Restrictions
  
  
*************** other compilation units in the partition
*** 13829,13835 ****
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{223}
  @subsection No_Elaboration_Code
  
  
--- 13928,13934 ----
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{224}
  @subsection No_Elaboration_Code
  
  
*************** associated with the unit. This counter i
*** 13885,13891 ****
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{224}
  @subsection No_Dynamic_Accessibility_Checks
  
  
--- 13984,13990 ----
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{225}
  @subsection No_Dynamic_Accessibility_Checks
  
  
*************** In all other cases, the level of T is as
*** 13934,13940 ****
  @end itemize
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{225}
  @subsection No_Dynamic_Sized_Objects
  
  
--- 14033,14039 ----
  @end itemize
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{226}
  @subsection No_Dynamic_Sized_Objects
  
  
*************** access discriminants. It is often a good
*** 13952,13958 ****
  with No_Secondary_Stack.
  
  @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{226}
  @subsection No_Entry_Queue
  
  
--- 14051,14057 ----
  with No_Secondary_Stack.
  
  @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{227}
  @subsection No_Entry_Queue
  
  
*************** checked at compile time.  A program exec
*** 13965,13971 ****
  is made to queue a second task on such an entry.
  
  @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{227}
  @subsection No_Implementation_Aspect_Specifications
  
  
--- 14064,14070 ----
  is made to queue a second task on such an entry.
  
  @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{228}
  @subsection No_Implementation_Aspect_Specifications
  
  
*************** GNAT-defined aspects are present.  With
*** 13976,13982 ****
  aspects that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{228}
  @subsection No_Implementation_Attributes
  
  
--- 14075,14081 ----
  aspects that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{229}
  @subsection No_Implementation_Attributes
  
  
*************** attributes that can be used are those de
*** 13988,13994 ****
  Manual.
  
  @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{229}
  @subsection No_Implementation_Identifiers
  
  
--- 14087,14093 ----
  Manual.
  
  @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{22a}
  @subsection No_Implementation_Identifiers
  
  
*************** implementation-defined identifiers (mark
*** 13999,14005 ****
  occur within language-defined packages.
  
  @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{22a}
  @subsection No_Implementation_Pragmas
  
  
--- 14098,14104 ----
  occur within language-defined packages.
  
  @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{22b}
  @subsection No_Implementation_Pragmas
  
  
*************** GNAT-defined pragmas are present.  With
*** 14010,14016 ****
  pragmas that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{22b}
  @subsection No_Implementation_Restrictions
  
  
--- 14109,14115 ----
  pragmas that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{22c}
  @subsection No_Implementation_Restrictions
  
  
*************** are present.  With this restriction, the
*** 14022,14028 ****
  that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{22c}
  @subsection No_Implementation_Units
  
  
--- 14121,14127 ----
  that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{22d}
  @subsection No_Implementation_Units
  
  
*************** mention in the context clause of any imp
*** 14033,14039 ****
  of packages Ada, Interfaces, or System.
  
  @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{22d}
  @subsection No_Implicit_Aliasing
  
  
--- 14132,14138 ----
  of packages Ada, Interfaces, or System.
  
  @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{22e}
  @subsection No_Implicit_Aliasing
  
  
*************** to be aliased, and in such cases, it can
*** 14048,14054 ****
  the standard attribute Unchecked_Access which is preferable.
  
  @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{22e}
  @subsection No_Implicit_Loops
  
  
--- 14147,14153 ----
  the standard attribute Unchecked_Access which is preferable.
  
  @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{22f}
  @subsection No_Implicit_Loops
  
  
*************** arrays larger than about 5000 scalar com
*** 14065,14071 ****
  is set in the spec of a package, it will not apply to its body.
  
  @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{22f}
  @subsection No_Obsolescent_Features
  
  
--- 14164,14170 ----
  is set in the spec of a package, it will not apply to its body.
  
  @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{230}
  @subsection No_Obsolescent_Features
  
  
*************** is set in the spec of a package, it will
*** 14075,14081 ****
  features are used, as defined in Annex J of the Ada Reference Manual.
  
  @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{230}
  @subsection No_Wide_Characters
  
  
--- 14174,14180 ----
  features are used, as defined in Annex J of the Ada Reference Manual.
  
  @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{231}
  @subsection No_Wide_Characters
  
  
*************** appear in the program (that is literals
*** 14089,14095 ****
  type @code{Character}).
  
  @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{231}
  @subsection Static_Dispatch_Tables
  
  
--- 14188,14194 ----
  type @code{Character}).
  
  @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{232}
  @subsection Static_Dispatch_Tables
  
  
*************** type @code{Character}).
*** 14099,14105 ****
  associated with dispatch tables can be placed in read-only memory.
  
  @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{232}
  @subsection SPARK_05
  
  
--- 14198,14204 ----
  associated with dispatch tables can be placed in read-only memory.
  
  @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{233}
  @subsection SPARK_05
  
  
*************** gnatprove -P project.gpr --mode=check_al
*** 14122,14128 ****
  @end example
  
  @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{233}@anchor{gnat_rm/implementation_advice id1}@anchor{234}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}
  @chapter Implementation Advice
  
  
--- 14221,14227 ----
  @end example
  
  @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{234}@anchor{gnat_rm/implementation_advice id1}@anchor{235}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}
  @chapter Implementation Advice
  
  
*************** case the text describes what GNAT does a
*** 14220,14226 ****
  @end menu
  
  @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{235}
  @section RM 1.1.3(20): Error Detection
  
  
--- 14319,14325 ----
  @end menu
  
  @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{236}
  @section RM 1.1.3(20): Error Detection
  
  
*************** or diagnosed at compile time.
*** 14237,14243 ****
  @geindex Child Units
  
  @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{236}
  @section RM 1.1.3(31): Child Units
  
  
--- 14336,14342 ----
  @geindex Child Units
  
  @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{237}
  @section RM 1.1.3(31): Child Units
  
  
*************** Followed.
*** 14253,14259 ****
  @geindex Bounded errors
  
  @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{237}
  @section RM 1.1.5(12): Bounded Errors
  
  
--- 14352,14358 ----
  @geindex Bounded errors
  
  @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{238}
  @section RM 1.1.5(12): Bounded Errors
  
  
*************** runtime.
*** 14270,14276 ****
  @geindex Pragmas
  
  @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice
! @anchor{gnat_rm/implementation_advice id2}@anchor{238}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{239}
  @section RM 2.8(16): Pragmas
  
  
--- 14369,14375 ----
  @geindex Pragmas
  
  @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice
! @anchor{gnat_rm/implementation_advice id2}@anchor{239}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{23a}
  @section RM 2.8(16): Pragmas
  
  
*************** that this advice not be followed.  For d
*** 14383,14389 ****
  @ref{7,,Implementation Defined Pragmas}.
  
  @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{23a}
  @section RM 2.8(17-19): Pragmas
  
  
--- 14482,14488 ----
  @ref{7,,Implementation Defined Pragmas}.
  
  @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{23b}
  @section RM 2.8(17-19): Pragmas
  
  
*************** replacing @code{library_items}.”
*** 14404,14417 ****
  @end itemize
  @end quotation
  
! See @ref{239,,RM 2.8(16); Pragmas}.
  
  @geindex Character Sets
  
  @geindex Alternative Character Sets
  
  @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{23b}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
--- 14503,14516 ----
  @end itemize
  @end quotation
  
! See @ref{23a,,RM 2.8(16); Pragmas}.
  
  @geindex Character Sets
  
  @geindex Alternative Character Sets
  
  @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{23c}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
*************** there is no such restriction.
*** 14439,14445 ****
  @geindex Integer types
  
  @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{23c}
  @section RM 3.5.4(28): Integer Types
  
  
--- 14538,14544 ----
  @geindex Integer types
  
  @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{23d}
  @section RM 3.5.4(28): Integer Types
  
  
*************** are supported for convenient interface t
*** 14458,14464 ****
  types of the machine are easily available.
  
  @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{23d}
  @section RM 3.5.4(29): Integer Types
  
  
--- 14557,14563 ----
  types of the machine are easily available.
  
  @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{23e}
  @section RM 3.5.4(29): Integer Types
  
  
*************** Followed.
*** 14474,14480 ****
  @geindex Enumeration values
  
  @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{23e}
  @section RM 3.5.5(8): Enumeration Values
  
  
--- 14573,14579 ----
  @geindex Enumeration values
  
  @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{23f}
  @section RM 3.5.5(8): Enumeration Values
  
  
*************** Followed.
*** 14494,14500 ****
  @geindex Float types
  
  @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{23f}
  @section RM 3.5.7(17): Float Types
  
  
--- 14593,14599 ----
  @geindex Float types
  
  @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{240}
  @section RM 3.5.7(17): Float Types
  
  
*************** is a software rather than a hardware for
*** 14524,14530 ****
  @geindex multidimensional
  
  @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{240}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
--- 14623,14629 ----
  @geindex multidimensional
  
  @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{241}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
*************** Followed.
*** 14542,14548 ****
  @geindex Duration'Small
  
  @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{241}
  @section RM 9.6(30-31): Duration’Small
  
  
--- 14641,14647 ----
  @geindex Duration'Small
  
  @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{242}
  @section RM 9.6(30-31): Duration’Small
  
  
*************** it need not be the same time base as use
*** 14563,14569 ****
  Followed.
  
  @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{242}
  @section RM 10.2.1(12): Consistent Representation
  
  
--- 14662,14668 ----
  Followed.
  
  @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{243}
  @section RM 10.2.1(12): Consistent Representation
  
  
*************** advice without severely impacting effici
*** 14585,14591 ****
  @geindex Exception information
  
  @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{243}
  @section RM 11.4.1(19): Exception Information
  
  
--- 14684,14690 ----
  @geindex Exception information
  
  @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{244}
  @section RM 11.4.1(19): Exception Information
  
  
*************** Pragma @code{Discard_Names}.
*** 14616,14622 ****
  @geindex suppression of
  
  @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{244}
  @section RM 11.5(28): Suppression of Checks
  
  
--- 14715,14721 ----
  @geindex suppression of
  
  @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{245}
  @section RM 11.5(28): Suppression of Checks
  
  
*************** Followed.
*** 14631,14637 ****
  @geindex Representation clauses
  
  @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{245}
  @section RM 13.1 (21-24): Representation Clauses
  
  
--- 14730,14736 ----
  @geindex Representation clauses
  
  @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{246}
  @section RM 13.1 (21-24): Representation Clauses
  
  
*************** Followed.
*** 14683,14689 ****
  @geindex Packed types
  
  @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{246}
  @section RM 13.2(6-8): Packed Types
  
  
--- 14782,14788 ----
  @geindex Packed types
  
  @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{247}
  @section RM 13.2(6-8): Packed Types
  
  
*************** subcomponent of the packed type.
*** 14714,14720 ****
  @geindex Address clauses
  
  @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{247}
  @section RM 13.3(14-19): Address Clauses
  
  
--- 14813,14819 ----
  @geindex Address clauses
  
  @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{248}
  @section RM 13.3(14-19): Address Clauses
  
  
*************** Followed.
*** 14767,14773 ****
  @geindex Alignment clauses
  
  @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{248}
  @section RM 13.3(29-35): Alignment Clauses
  
  
--- 14866,14872 ----
  @geindex Alignment clauses
  
  @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{249}
  @section RM 13.3(29-35): Alignment Clauses
  
  
*************** Followed.
*** 14824,14830 ****
  @geindex Size clauses
  
  @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{249}
  @section RM 13.3(42-43): Size Clauses
  
  
--- 14923,14929 ----
  @geindex Size clauses
  
  @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{24a}
  @section RM 13.3(42-43): Size Clauses
  
  
*************** object’s @code{Alignment} (if the @cod
*** 14842,14848 ****
  Followed.
  
  @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{24a}
  @section RM 13.3(50-56): Size Clauses
  
  
--- 14941,14947 ----
  Followed.
  
  @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{24b}
  @section RM 13.3(50-56): Size Clauses
  
  
*************** Followed.
*** 14893,14899 ****
  @geindex Component_Size clauses
  
  @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{24b}
  @section RM 13.3(71-73): Component Size Clauses
  
  
--- 14992,14998 ----
  @geindex Component_Size clauses
  
  @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{24c}
  @section RM 13.3(71-73): Component Size Clauses
  
  
*************** Followed.
*** 14927,14933 ****
  @geindex enumeration
  
  @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{24c}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
--- 15026,15032 ----
  @geindex enumeration
  
  @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{24d}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
*************** Followed.
*** 14949,14955 ****
  @geindex records
  
  @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{24d}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
--- 15048,15054 ----
  @geindex records
  
  @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{24e}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
*************** and all mentioned features are implement
*** 15009,15015 ****
  @geindex Storage place attributes
  
  @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{24e}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
--- 15108,15114 ----
  @geindex Storage place attributes
  
  @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{24f}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
*************** Followed.  There are no such components
*** 15029,15035 ****
  @geindex Bit ordering
  
  @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{24f}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
--- 15128,15134 ----
  @geindex Bit ordering
  
  @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{250}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
*************** Followed.
*** 15047,15053 ****
  @geindex as private type
  
  @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{250}
  @section RM 13.7(37): Address as Private
  
  
--- 15146,15152 ----
  @geindex as private type
  
  @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{251}
  @section RM 13.7(37): Address as Private
  
  
*************** Followed.
*** 15065,15071 ****
  @geindex operations of
  
  @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{251}
  @section RM 13.7.1(16): Address Operations
  
  
--- 15164,15170 ----
  @geindex operations of
  
  @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{252}
  @section RM 13.7.1(16): Address Operations
  
  
*************** operation raises @code{Program_Error}, s
*** 15083,15089 ****
  @geindex Unchecked conversion
  
  @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{252}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
--- 15182,15188 ----
  @geindex Unchecked conversion
  
  @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{253}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
*************** Followed.
*** 15127,15133 ****
  @geindex implicit
  
  @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{253}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
--- 15226,15232 ----
  @geindex implicit
  
  @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{254}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
*************** Followed.
*** 15178,15184 ****
  @geindex Unchecked deallocation
  
  @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{254}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
--- 15277,15283 ----
  @geindex Unchecked deallocation
  
  @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{255}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
*************** Followed.
*** 15193,15199 ****
  @geindex Stream oriented attributes
  
  @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{255}
  @section RM 13.13.2(1.6): Stream Oriented Attributes
  
  
--- 15292,15298 ----
  @geindex Stream oriented attributes
  
  @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{256}
  @section RM 13.13.2(1.6): Stream Oriented Attributes
  
  
*************** scalar types. This XDR alternative can b
*** 15224,15230 ****
  @geindex Stream oriented attributes
  
  @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{256}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
--- 15323,15329 ----
  @geindex Stream oriented attributes
  
  @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{257}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
*************** Followed.
*** 15242,15248 ****
  @geindex Ada.Characters.Handling
  
  @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{257}
  @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
--- 15341,15347 ----
  @geindex Ada.Characters.Handling
  
  @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{258}
  @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
*************** Followed.  GNAT provides no such localiz
*** 15259,15265 ****
  @geindex Bounded-length strings
  
  @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{258}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
--- 15358,15364 ----
  @geindex Bounded-length strings
  
  @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{259}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
*************** Followed.  No implicit pointers or dynam
*** 15274,15280 ****
  @geindex Random number generation
  
  @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{259}
  @section RM A.5.2(46-47): Random Number Generation
  
  
--- 15373,15379 ----
  @geindex Random number generation
  
  @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{25a}
  @section RM A.5.2(46-47): Random Number Generation
  
  
*************** condition here to hold true.
*** 15303,15309 ****
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{25a}
  @section RM A.10.7(23): @code{Get_Immediate}
  
  
--- 15402,15408 ----
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{25b}
  @section RM A.10.7(23): @code{Get_Immediate}
  
  
*************** this functionality.
*** 15327,15333 ****
  @geindex Containers
  
  @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{25b}
  @section RM A.18: @code{Containers}
  
  
--- 15426,15432 ----
  @geindex Containers
  
  @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{25c}
  @section RM A.18: @code{Containers}
  
  
*************** follow the implementation advice.
*** 15348,15354 ****
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{25c}
  @section RM B.1(39-41): Pragma @code{Export}
  
  
--- 15447,15453 ----
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{25d}
  @section RM B.1(39-41): Pragma @code{Export}
  
  
*************** Followed.
*** 15396,15402 ****
  @geindex Interfaces
  
  @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{25d}
  @section RM B.2(12-13): Package @code{Interfaces}
  
  
--- 15495,15501 ----
  @geindex Interfaces
  
  @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{25e}
  @section RM B.2(12-13): Package @code{Interfaces}
  
  
*************** Followed.  GNAT provides all the package
*** 15426,15432 ****
  @geindex interfacing with
  
  @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{25e}
  @section RM B.3(63-71): Interfacing with C
  
  
--- 15525,15531 ----
  @geindex interfacing with
  
  @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{25f}
  @section RM B.3(63-71): Interfacing with C
  
  
*************** Followed.
*** 15514,15520 ****
  @geindex interfacing with
  
  @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{25f}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
--- 15613,15619 ----
  @geindex interfacing with
  
  @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{260}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
*************** Followed.
*** 15555,15561 ****
  @geindex interfacing with
  
  @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{260}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
--- 15654,15660 ----
  @geindex interfacing with
  
  @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{261}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
*************** Followed.
*** 15606,15612 ****
  @geindex Machine operations
  
  @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{261}
  @section RM C.1(3-5): Access to Machine Operations
  
  
--- 15705,15711 ----
  @geindex Machine operations
  
  @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{262}
  @section RM C.1(3-5): Access to Machine Operations
  
  
*************** object that is specified as exported.”
*** 15641,15647 ****
  Followed.
  
  @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{262}
  @section RM C.1(10-16): Access to Machine Operations
  
  
--- 15740,15746 ----
  Followed.
  
  @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{263}
  @section RM C.1(10-16): Access to Machine Operations
  
  
*************** Followed on any target supporting such o
*** 15702,15708 ****
  @geindex Interrupt support
  
  @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{263}
  @section RM C.3(28): Interrupt Support
  
  
--- 15801,15807 ----
  @geindex Interrupt support
  
  @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{264}
  @section RM C.3(28): Interrupt Support
  
  
*************** of interrupt blocking.
*** 15720,15726 ****
  @geindex Protected procedure handlers
  
  @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{264}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
--- 15819,15825 ----
  @geindex Protected procedure handlers
  
  @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{265}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
*************** Followed.  Compile time warnings are giv
*** 15746,15752 ****
  @geindex Interrupts
  
  @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{265}
  @section RM C.3.2(25): Package @code{Interrupts}
  
  
--- 15845,15851 ----
  @geindex Interrupts
  
  @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{266}
  @section RM C.3.2(25): Package @code{Interrupts}
  
  
*************** Followed.
*** 15764,15770 ****
  @geindex Pre-elaboration requirements
  
  @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{266}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
--- 15863,15869 ----
  @geindex Pre-elaboration requirements
  
  @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{267}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
*************** Followed.  Executable code is generated
*** 15780,15786 ****
  to initialize large arrays.
  
  @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{267}
  @section RM C.5(8): Pragma @code{Discard_Names}
  
  
--- 15879,15885 ----
  to initialize large arrays.
  
  @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{268}
  @section RM C.5(8): Pragma @code{Discard_Names}
  
  
*************** Followed.
*** 15798,15804 ****
  @geindex Task_Attributes
  
  @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{268}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
--- 15897,15903 ----
  @geindex Task_Attributes
  
  @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{269}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
*************** Not followed.  This implementation is no
*** 15819,15825 ****
  @geindex Locking Policies
  
  @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{269}
  @section RM D.3(17): Locking Policies
  
  
--- 15918,15924 ----
  @geindex Locking Policies
  
  @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{26a}
  @section RM D.3(17): Locking Policies
  
  
*************** whose names (@code{Inheritance_Locking}
*** 15836,15842 ****
  @geindex Entry queuing policies
  
  @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{26a}
  @section RM D.4(16): Entry Queuing Policies
  
  
--- 15935,15941 ----
  @geindex Entry queuing policies
  
  @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{26b}
  @section RM D.4(16): Entry Queuing Policies
  
  
*************** Followed.  No such implementation-define
*** 15851,15857 ****
  @geindex Preemptive abort
  
  @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{26b}
  @section RM D.6(9-10): Preemptive Abort
  
  
--- 15950,15956 ----
  @geindex Preemptive abort
  
  @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{26c}
  @section RM D.6(9-10): Preemptive Abort
  
  
*************** Followed.
*** 15877,15883 ****
  @geindex Tasking restrictions
  
  @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{26c}
  @section RM D.7(21): Tasking Restrictions
  
  
--- 15976,15982 ----
  @geindex Tasking restrictions
  
  @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{26d}
  @section RM D.7(21): Tasking Restrictions
  
  
*************** pragma @code{Profile (Restricted)} for m
*** 15896,15902 ****
  @geindex monotonic
  
  @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{26d}
  @section RM D.8(47-49): Monotonic Time
  
  
--- 15995,16001 ----
  @geindex monotonic
  
  @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{26e}
  @section RM D.8(47-49): Monotonic Time
  
  
*************** Followed.
*** 15931,15937 ****
  @geindex PCS
  
  @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{26e}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
--- 16030,16036 ----
  @geindex PCS
  
  @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{26f}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
*************** write the @code{Item} into the stream.�
*** 15955,15961 ****
  @geindex COBOL support
  
  @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{26f}
  @section RM F(7): COBOL Support
  
  
--- 16054,16060 ----
  @geindex COBOL support
  
  @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{270}
  @section RM F(7): COBOL Support
  
  
*************** Followed.
*** 15975,15981 ****
  @geindex Decimal radix support
  
  @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{270}
  @section RM F.1(2): Decimal Radix Support
  
  
--- 16074,16080 ----
  @geindex Decimal radix support
  
  @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{271}
  @section RM F.1(2): Decimal Radix Support
  
  
*************** representations.
*** 15991,15997 ****
  @geindex Numerics
  
  @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{271}
  @section RM G: Numerics
  
  
--- 16090,16096 ----
  @geindex Numerics
  
  @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{272}
  @section RM G: Numerics
  
  
*************** Followed.
*** 16011,16017 ****
  @geindex Complex types
  
  @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{272}
  @section RM G.1.1(56-58): Complex Types
  
  
--- 16110,16116 ----
  @geindex Complex types
  
  @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{273}
  @section RM G.1.1(56-58): Complex Types
  
  
*************** Followed.
*** 16073,16079 ****
  @geindex Complex elementary functions
  
  @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{273}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
--- 16172,16178 ----
  @geindex Complex elementary functions
  
  @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{274}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
*************** Followed.
*** 16095,16101 ****
  @geindex Accuracy requirements
  
  @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{274}
  @section RM G.2.4(19): Accuracy Requirements
  
  
--- 16194,16200 ----
  @geindex Accuracy requirements
  
  @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{275}
  @section RM G.2.4(19): Accuracy Requirements
  
  
*************** Followed.
*** 16119,16125 ****
  @geindex complex arithmetic
  
  @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{275}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
--- 16218,16224 ----
  @geindex complex arithmetic
  
  @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{276}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
*************** Followed.
*** 16137,16143 ****
  @geindex Sequential elaboration policy
  
  @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{276}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
--- 16236,16242 ----
  @geindex Sequential elaboration policy
  
  @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{277}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
*************** immediately terminated.”
*** 16152,16158 ****
  Not followed.
  
  @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
! @anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{277}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{278}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}
  @chapter Implementation Defined Characteristics
  
  
--- 16251,16257 ----
  Not followed.
  
  @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
! @anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{278}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{279}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}
  @chapter Implementation Defined Characteristics
  
  
*************** When the @code{Pattern} parameter is not
*** 17442,17448 ****
  according to the syntax of regular expressions as defined in the
  @code{GNAT.Regexp} package.
  
! See @ref{279,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
--- 17541,17547 ----
  according to the syntax of regular expressions as defined in the
  @code{GNAT.Regexp} package.
  
! See @ref{27a,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
*************** Information on those subjects is not yet
*** 18540,18546 ****
  Execution is erroneous in that case.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{27a}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{27b}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}
  @chapter Intrinsic Subprograms
  
  
--- 18639,18645 ----
  Execution is erroneous in that case.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{27b}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{27c}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}
  @chapter Intrinsic Subprograms
  
  
*************** Ada standard does not require Ada compil
*** 18578,18584 ****
  @end menu
  
  @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{27c}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{27d}
  @section Intrinsic Operators
  
  
--- 18677,18683 ----
  @end menu
  
  @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{27d}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{27e}
  @section Intrinsic Operators
  
  
*************** It is also possible to specify such oper
*** 18609,18615 ****
  full views are appropriate arithmetic types.
  
  @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{27e}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{27f}
  @section Compilation_ISO_Date
  
  
--- 18708,18714 ----
  full views are appropriate arithmetic types.
  
  @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{27f}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{280}
  @section Compilation_ISO_Date
  
  
*************** application program should simply call t
*** 18623,18629 ****
  the current compilation (in local time format YYYY-MM-DD).
  
  @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{280}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{281}
  @section Compilation_Date
  
  
--- 18722,18728 ----
  the current compilation (in local time format YYYY-MM-DD).
  
  @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{281}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{282}
  @section Compilation_Date
  
  
*************** Same as Compilation_ISO_Date, except the
*** 18633,18639 ****
  MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{282}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{283}
  @section Compilation_Time
  
  
--- 18732,18738 ----
  MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{283}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{284}
  @section Compilation_Time
  
  
*************** application program should simply call t
*** 18647,18653 ****
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{284}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{285}
  @section Enclosing_Entity
  
  
--- 18746,18752 ----
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{285}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{286}
  @section Enclosing_Entity
  
  
*************** application program should simply call t
*** 18661,18667 ****
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{286}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{287}
  @section Exception_Information
  
  
--- 18760,18766 ----
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{287}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{288}
  @section Exception_Information
  
  
*************** so an application program should simply
*** 18675,18681 ****
  the exception information associated with the current exception.
  
  @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{288}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{289}
  @section Exception_Message
  
  
--- 18774,18780 ----
  the exception information associated with the current exception.
  
  @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{289}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{28a}
  @section Exception_Message
  
  
*************** so an application program should simply
*** 18689,18695 ****
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{28a}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{28b}
  @section Exception_Name
  
  
--- 18788,18794 ----
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{28b}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{28c}
  @section Exception_Name
  
  
*************** so an application program should simply
*** 18703,18709 ****
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms file}@anchor{28c}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{28d}
  @section File
  
  
--- 18802,18808 ----
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms file}@anchor{28d}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{28e}
  @section File
  
  
*************** application program should simply call t
*** 18717,18723 ****
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{28e}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{28f}
  @section Line
  
  
--- 18816,18822 ----
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{28f}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{290}
  @section Line
  
  
*************** application program should simply call t
*** 18731,18737 ****
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id12}@anchor{290}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{291}
  @section Shifts and Rotates
  
  
--- 18830,18836 ----
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id12}@anchor{291}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{292}
  @section Shifts and Rotates
  
  
*************** corresponding operator for modular type.
*** 18774,18780 ****
  number may change its sign bit to positive.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id13}@anchor{292}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{293}
  @section Source_Location
  
  
--- 18873,18879 ----
  number may change its sign bit to positive.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id13}@anchor{293}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{294}
  @section Source_Location
  
  
*************** application program should simply call t
*** 18788,18794 ****
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{294}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{295}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}
  @chapter Representation Clauses and Pragmas
  
  
--- 18887,18893 ----
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{295}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}
  @chapter Representation Clauses and Pragmas
  
  
*************** and this section describes the additiona
*** 18834,18840 ****
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{297}
  @section Alignment Clauses
  
  
--- 18933,18939 ----
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{297}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{298}
  @section Alignment Clauses
  
  
*************** For elementary types, the alignment is t
*** 18856,18862 ****
  objects of the type divided by @code{Storage_Unit},
  and the maximum alignment supported by the target.
  (This maximum alignment is given by the GNAT-specific attribute
! @code{Standard'Maximum_Alignment}; see @ref{1a6,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
  
--- 18955,18961 ----
  objects of the type divided by @code{Storage_Unit},
  and the maximum alignment supported by the target.
  (This maximum alignment is given by the GNAT-specific attribute
! @code{Standard'Maximum_Alignment}; see @ref{1a7,,Attribute Maximum_Alignment}.)
  
  @geindex Maximum_Alignment attribute
  
*************** assumption is non-portable, and other co
*** 18965,18971 ****
  alignments for the subtype @code{RS}.
  
  @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{299}
  @section Size Clauses
  
  
--- 19064,19070 ----
  alignments for the subtype @code{RS}.
  
  @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{299}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{29a}
  @section Size Clauses
  
  
*************** if it is known that a Size value can be
*** 19042,19048 ****
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{29b}
  @section Storage_Size Clauses
  
  
--- 19141,19147 ----
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{29b}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{29c}
  @section Storage_Size Clauses
  
  
*************** Of course in practice, there will not be
*** 19115,19121 ****
  case of such an access declaration.
  
  @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{29c}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{29d}
  @section Size of Variant Record Objects
  
  
--- 19214,19220 ----
  case of such an access declaration.
  
  @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{29d}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{29e}
  @section Size of Variant Record Objects
  
  
*************** the maximum size, regardless of the curr
*** 19225,19231 ****
  variant value.
  
  @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{29e}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{29f}
  @section Biased Representation
  
  
--- 19324,19330 ----
  variant value.
  
  @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{29f}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{2a0}
  @section Biased Representation
  
  
*************** biased representation can be used for al
*** 19263,19269 ****
  enumeration types for which a representation clause is given.
  
  @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{2a0}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{2a1}
  @section Value_Size and Object_Size Clauses
  
  
--- 19362,19368 ----
  enumeration types for which a representation clause is given.
  
  @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{2a1}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{2a2}
  @section Value_Size and Object_Size Clauses
  
  
*************** definition clause forces biased represen
*** 19579,19585 ****
  warning can be turned off using @code{-gnatw.B}.
  
  @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{2a2}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{2a3}
  @section Component_Size Clauses
  
  
--- 19678,19684 ----
  warning can be turned off using @code{-gnatw.B}.
  
  @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{2a3}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{2a4}
  @section Component_Size Clauses
  
  
*************** and a pragma Pack for the same array typ
*** 19627,19633 ****
  clauses are given, the pragma Pack will be ignored.
  
  @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{2a4}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{2a5}
  @section Bit_Order Clauses
  
  
--- 19726,19732 ----
  clauses are given, the pragma Pack will be ignored.
  
  @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{2a5}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{2a6}
  @section Bit_Order Clauses
  
  
*************** if desired.  The following section conta
*** 19733,19739 ****
  details regarding the issue of byte ordering.
  
  @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{2a6}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{2a7}
  @section Effect of Bit_Order on Byte Ordering
  
  
--- 19832,19838 ----
  details regarding the issue of byte ordering.
  
  @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{2a7}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{2a8}
  @section Effect of Bit_Order on Byte Ordering
  
  
*************** to set the boolean constant @code{Master
*** 19990,19996 ****
  an appropriate manner.
  
  @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{2a8}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{2a9}
  @section Pragma Pack for Arrays
  
  
--- 20089,20095 ----
  an appropriate manner.
  
  @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{2a9}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{2aa}
  @section Pragma Pack for Arrays
  
  
*************** Here 31-bit packing is achieved as requi
*** 20110,20116 ****
  since in this case the programmer intention is clear.
  
  @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{2aa}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{2ab}
  @section Pragma Pack for Records
  
  
--- 20209,20215 ----
  since in this case the programmer intention is clear.
  
  @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{2ab}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{2ac}
  @section Pragma Pack for Records
  
  
*************** array that is longer than 64 bits, so it
*** 20194,20200 ****
  boundary, and takes an integral number of bytes, i.e., 72 bits.
  
  @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2ac}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2ad}
  @section Record Representation Clauses
  
  
--- 20293,20299 ----
  boundary, and takes an integral number of bytes, i.e., 72 bits.
  
  @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{2ad}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{2ae}
  @section Record Representation Clauses
  
  
*************** end record;
*** 20273,20279 ****
  @end example
  
  @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2ae}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2af}
  @section Handling of Records with Holes
  
  
--- 20372,20378 ----
  @end example
  
  @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{2af}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{2b0}
  @section Handling of Records with Holes
  
  
*************** for Hrec'Size use 64;
*** 20349,20355 ****
  @end example
  
  @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2b0}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2b1}
  @section Enumeration Clauses
  
  
--- 20448,20454 ----
  @end example
  
  @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{2b1}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{2b2}
  @section Enumeration Clauses
  
  
*************** the overhead of converting representatio
*** 20392,20398 ****
  positional values, (i.e., the value delivered by the @code{Pos} attribute).
  
  @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2b2}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2b3}
  @section Address Clauses
  
  
--- 20491,20497 ----
  positional values, (i.e., the value delivered by the @code{Pos} attribute).
  
  @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{2b3}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{2b4}
  @section Address Clauses
  
  
*************** then the program compiles without the wa
*** 20732,20738 ****
  the output @code{X was not clobbered}.
  
  @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2b4}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2b5}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
--- 20831,20837 ----
  the output @code{X was not clobbered}.
  
  @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{2b5}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{2b6}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
*************** provides the pragma @code{Volatile_Full_
*** 20790,20796 ****
  pragma @code{Atomic} and will give the additional guarantee.
  
  @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2b6}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2b7}
  @section Effect of Convention on Representation
  
  
--- 20889,20895 ----
  pragma @code{Atomic} and will give the additional guarantee.
  
  @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{2b7}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{2b8}
  @section Effect of Convention on Representation
  
  
*************** when one of these values is read, any no
*** 20868,20874 ****
  @end itemize
  
  @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2b8}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2b9}
  @section Conventions and Anonymous Access Types
  
  
--- 20967,20973 ----
  @end itemize
  
  @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{2b9}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{2ba}
  @section Conventions and Anonymous Access Types
  
  
*************** package ConvComp is
*** 20944,20950 ****
  @end example
  
  @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2ba}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2bb}
  @section Determining the Representations chosen by GNAT
  
  
--- 21043,21049 ----
  @end example
  
  @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{2bb}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{2bc}
  @section Determining the Representations chosen by GNAT
  
  
*************** generated by the compiler into the origi
*** 21096,21102 ****
  the actual representation to be used.
  
  @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top
! @anchor{gnat_rm/standard_library_routines doc}@anchor{2bc}@anchor{gnat_rm/standard_library_routines id1}@anchor{2bd}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e}
  @chapter Standard Library Routines
  
  
--- 21195,21201 ----
  the actual representation to be used.
  
  @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top
! @anchor{gnat_rm/standard_library_routines doc}@anchor{2bd}@anchor{gnat_rm/standard_library_routines id1}@anchor{2be}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e}
  @chapter Standard Library Routines
  
  
*************** For packages in Interfaces and System, a
*** 21923,21929 ****
  available in GNAT, see the Ada 2012 RM for full details.
  
  @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top
! @anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2bf}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f}
  @chapter The Implementation of Standard I/O
  
  
--- 22022,22028 ----
  available in GNAT, see the Ada 2012 RM for full details.
  
  @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top
! @anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2bf}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f}
  @chapter The Implementation of Standard I/O
  
  
*************** these additional facilities are also des
*** 21975,21981 ****
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2c1}
  @section Standard I/O Packages
  
  
--- 22074,22080 ----
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2c1}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2c2}
  @section Standard I/O Packages
  
  
*************** flush the common I/O streams and in part
*** 22046,22052 ****
  elaborating the Ada code.
  
  @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2c3}
  @section FORM Strings
  
  
--- 22145,22151 ----
  elaborating the Ada code.
  
  @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2c3}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2c4}
  @section FORM Strings
  
  
*************** unrecognized keyword appears in a form s
*** 22072,22078 ****
  and not considered invalid.
  
  @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2c5}
  @section Direct_IO
  
  
--- 22171,22177 ----
  and not considered invalid.
  
  @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2c5}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2c6}
  @section Direct_IO
  
  
*************** There is no limit on the size of Direct_
*** 22091,22097 ****
  necessary to accommodate whatever records are written to the file.
  
  @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2c7}
  @section Sequential_IO
  
  
--- 22190,22196 ----
  necessary to accommodate whatever records are written to the file.
  
  @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2c7}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2c8}
  @section Sequential_IO
  
  
*************** using Stream_IO, and this is the preferr
*** 22138,22144 ****
  above program fragment rewritten to use Stream_IO will work correctly.
  
  @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2c9}
  @section Text_IO
  
  
--- 22237,22243 ----
  above program fragment rewritten to use Stream_IO will work correctly.
  
  @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2c9}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2ca}
  @section Text_IO
  
  
*************** the file.
*** 22221,22227 ****
  @end menu
  
  @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2cb}
  @subsection Stream Pointer Positioning
  
  
--- 22320,22326 ----
  @end menu
  
  @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2cb}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2cc}
  @subsection Stream Pointer Positioning
  
  
*************** between two Ada files, then the differen
*** 22257,22263 ****
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2cd}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 22356,22362 ----
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2cd}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2ce}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** to read data past that end of
*** 22308,22314 ****
  file indication, until another end of file indication is entered.
  
  @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2cf}
  @subsection Get_Immediate
  
  
--- 22407,22413 ----
  file indication, until another end of file indication is entered.
  
  @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2cf}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2d0}
  @subsection Get_Immediate
  
  
*************** possible), it is undefined whether the F
*** 22326,22332 ****
  page mark.
  
  @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2d1}
  @subsection Treating Text_IO Files as Streams
  
  
--- 22425,22431 ----
  page mark.
  
  @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2d1}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2d2}
  @subsection Treating Text_IO Files as Streams
  
  
*************** skipped and the effect is similar to tha
*** 22342,22348 ****
  @code{Get_Immediate}.
  
  @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2d3}
  @subsection Text_IO Extensions
  
  
--- 22441,22447 ----
  @code{Get_Immediate}.
  
  @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2d3}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2d4}
  @subsection Text_IO Extensions
  
  
*************** the string is to be read.
*** 22370,22376 ****
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2d4}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2d5}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
--- 22469,22475 ----
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2d5}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2d6}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
*************** files @code{a-szuzti.ads} and @code{a-sz
*** 22418,22424 ****
  @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings.
  
  @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2d6}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2d7}
  @section Wide_Text_IO
  
  
--- 22517,22523 ----
  @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings.
  
  @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2d7}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2d8}
  @section Wide_Text_IO
  
  
*************** input also causes Constraint_Error to be
*** 22665,22676 ****
  @end menu
  
  @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2d8}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2d9}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2c9,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the
--- 22764,22775 ----
  @end menu
  
  @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2d9}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2da}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2ca,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the
*************** to a normal program using @code{Wide_Tex
*** 22689,22695 ****
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2da}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2db}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 22788,22794 ----
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2db}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2dc}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 22700,22706 ****
  it is possible to read beyond an end of file.
  
  @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2dc}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2dd}
  @section Wide_Wide_Text_IO
  
  
--- 22799,22805 ----
  it is possible to read beyond an end of file.
  
  @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2dd}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2de}
  @section Wide_Wide_Text_IO
  
  
*************** input also causes Constraint_Error to be
*** 22869,22880 ****
  @end menu
  
  @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2de}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2df}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2c9,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the
--- 22968,22979 ----
  @end menu
  
  @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2df}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2e0}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2ca,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the
*************** to a normal program using @code{Wide_Wid
*** 22893,22899 ****
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2e0}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2e1}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 22992,22998 ----
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2e1}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2e2}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 22904,22910 ****
  it is possible to read beyond an end of file.
  
  @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2e2}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2e3}
  @section Stream_IO
  
  
--- 23003,23009 ----
  it is possible to read beyond an end of file.
  
  @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2e3}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2e4}
  @section Stream_IO
  
  
*************** manner described for stream attributes.
*** 22926,22932 ****
  @end itemize
  
  @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2e4}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2e5}
  @section Text Translation
  
  
--- 23025,23031 ----
  @end itemize
  
  @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2e5}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2e6}
  @section Text Translation
  
  
*************** mode. (corresponds to_O_U16TEXT).
*** 22960,22966 ****
  @end itemize
  
  @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2e6}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2e7}
  @section Shared Files
  
  
--- 23059,23065 ----
  @end itemize
  
  @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2e7}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2e8}
  @section Shared Files
  
  
*************** heterogeneous input-output.  Although th
*** 23023,23029 ****
  for this purpose (using the stream attributes).
  
  @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2e8}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2e9}
  @section Filenames encoding
  
  
--- 23122,23128 ----
  for this purpose (using the stream attributes).
  
  @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2e9}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2ea}
  @section Filenames encoding
  
  
*************** platform. On the other Operating Systems
*** 23063,23069 ****
  UTF-8 natively.
  
  @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2ea}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2eb}
  @section File content encoding
  
  
--- 23162,23168 ----
  UTF-8 natively.
  
  @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2eb}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2ec}
  @section File content encoding
  
  
*************** Unicode 8-bit encoding
*** 23096,23102 ****
  This encoding is only supported on the Windows platform.
  
  @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2ec}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2ed}
  @section Open Modes
  
  
--- 23195,23201 ----
  This encoding is only supported on the Windows platform.
  
  @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2ed}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2ee}
  @section Open Modes
  
  
*************** subsequently requires switching from rea
*** 23199,23205 ****
  then the file is reopened in @code{r+} mode to permit the required operation.
  
  @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2ee}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2ef}
  @section Operations on C Streams
  
  
--- 23298,23304 ----
  then the file is reopened in @code{r+} mode to permit the required operation.
  
  @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2ef}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2f0}
  @section Operations on C Streams
  
  
*************** end Interfaces.C_Streams;
*** 23359,23365 ****
  @end example
  
  @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2f0}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2f1}
  @section Interfacing to C Streams
  
  
--- 23458,23464 ----
  @end example
  
  @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2f1}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2f2}
  @section Interfacing to C Streams
  
  
*************** imported from a C program, allowing an A
*** 23452,23458 ****
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library doc}@anchor{2f2}@anchor{gnat_rm/the_gnat_library id1}@anchor{2f3}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}
  @chapter The GNAT Library
  
  
--- 23551,23557 ----
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library doc}@anchor{2f3}@anchor{gnat_rm/the_gnat_library id1}@anchor{2f4}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}
  @chapter The GNAT Library
  
  
*************** of GNAT, and will generate a warning mes
*** 23638,23644 ****
  @end menu
  
  @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2f4}@anchor{gnat_rm/the_gnat_library id2}@anchor{2f5}
  @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
--- 23737,23743 ----
  @end menu
  
  @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2f5}@anchor{gnat_rm/the_gnat_library id2}@anchor{2f6}
  @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23655,23661 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2f6}@anchor{gnat_rm/the_gnat_library id3}@anchor{2f7}
  @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
--- 23754,23760 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2f7}@anchor{gnat_rm/the_gnat_library id3}@anchor{2f8}
  @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23672,23678 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2f8}@anchor{gnat_rm/the_gnat_library id4}@anchor{2f9}
  @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila9.ads})
  
  
--- 23771,23777 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2f9}@anchor{gnat_rm/the_gnat_library id4}@anchor{2fa}
  @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23689,23695 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2fa}@anchor{gnat_rm/the_gnat_library id5}@anchor{2fb}
  @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
--- 23788,23794 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2fb}@anchor{gnat_rm/the_gnat_library id5}@anchor{2fc}
  @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23706,23712 ****
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Bounded_Holders a-coboho ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2fc}@anchor{gnat_rm/the_gnat_library id6}@anchor{2fd}
  @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
--- 23805,23811 ----
  (RM A.3.3(27)).
  
  @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Bounded_Holders a-coboho ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2fd}@anchor{gnat_rm/the_gnat_library id6}@anchor{2fe}
  @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
*************** is specifically authorized by the Ada Re
*** 23723,23729 ****
  (RM A.3.3(27)).
  
  @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2fe}@anchor{gnat_rm/the_gnat_library id7}@anchor{2ff}
  @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
--- 23822,23828 ----
  (RM A.3.3(27)).
  
  @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2ff}@anchor{gnat_rm/the_gnat_library id7}@anchor{300}
  @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
*************** This child of @code{Ada.Containers} defi
*** 23735,23741 ****
  Indefinite_Holders that avoids heap allocation.
  
  @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{300}@anchor{gnat_rm/the_gnat_library id8}@anchor{301}
  @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
--- 23834,23840 ----
  Indefinite_Holders that avoids heap allocation.
  
  @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{301}@anchor{gnat_rm/the_gnat_library id8}@anchor{302}
  @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
*************** provides a mechanism for obtaining envir
*** 23748,23754 ****
  where this concept makes sense.
  
  @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id9}@anchor{303}
  @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
--- 23847,23853 ----
  where this concept makes sense.
  
  @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{303}@anchor{gnat_rm/the_gnat_library id9}@anchor{304}
  @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
*************** to further calls to the subprograms in @
*** 23766,23772 ****
  will not see the removed argument.
  
  @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id10}@anchor{305}
  @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
--- 23865,23871 ----
  will not see the removed argument.
  
  @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{305}@anchor{gnat_rm/the_gnat_library id10}@anchor{306}
  @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
*************** Using a response file allow passing a se
*** 23786,23792 ****
  than the maximum allowed by the system on the command line.
  
  @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id11}@anchor{307}
  @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
--- 23885,23891 ----
  than the maximum allowed by the system on the command line.
  
  @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{307}@anchor{gnat_rm/the_gnat_library id11}@anchor{308}
  @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23801,23807 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{308}@anchor{gnat_rm/the_gnat_library id12}@anchor{309}
  @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
--- 23900,23906 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{309}@anchor{gnat_rm/the_gnat_library id12}@anchor{30a}
  @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
*************** exception occurrence (@code{Null_Occurre
*** 23815,23821 ****
  an exception.
  
  @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{30a}@anchor{gnat_rm/the_gnat_library id13}@anchor{30b}
  @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
--- 23914,23920 ----
  an exception.
  
  @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{30b}@anchor{gnat_rm/the_gnat_library id13}@anchor{30c}
  @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
*************** exceptions (hence the name last chance),
*** 23829,23835 ****
  terminating the program. Note that this subprogram never returns.
  
  @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id14}@anchor{30d}
  @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
--- 23928,23934 ----
  terminating the program. Note that this subprogram never returns.
  
  @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{30d}@anchor{gnat_rm/the_gnat_library id14}@anchor{30e}
  @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
*************** give a traceback array of addresses base
*** 23842,23848 ****
  occurrence.
  
  @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id15}@anchor{30f}
  @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
--- 23941,23947 ----
  occurrence.
  
  @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{30f}@anchor{gnat_rm/the_gnat_library id15}@anchor{310}
  @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23857,23863 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{310}@anchor{gnat_rm/the_gnat_library id16}@anchor{311}
  @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
--- 23956,23962 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{311}@anchor{gnat_rm/the_gnat_library id16}@anchor{312}
  @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23872,23878 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id17}@anchor{313}
  @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
--- 23971,23977 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{313}@anchor{gnat_rm/the_gnat_library id17}@anchor{314}
  @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
*************** strings, avoiding the necessity for an i
*** 23889,23895 ****
  with ordinary strings.
  
  @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id18}@anchor{315}
  @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
--- 23988,23994 ----
  with ordinary strings.
  
  @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{315}@anchor{gnat_rm/the_gnat_library id18}@anchor{316}
  @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
*************** wide strings, avoiding the necessity for
*** 23906,23912 ****
  with ordinary wide strings.
  
  @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{316}@anchor{gnat_rm/the_gnat_library id19}@anchor{317}
  @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
--- 24005,24011 ----
  with ordinary wide strings.
  
  @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{317}@anchor{gnat_rm/the_gnat_library id19}@anchor{318}
  @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
*************** wide wide strings, avoiding the necessit
*** 23923,23929 ****
  with ordinary wide wide strings.
  
  @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{318}@anchor{gnat_rm/the_gnat_library id20}@anchor{319}
  @section @code{Ada.Task_Initialization} (@code{a-tasini.ads})
  
  
--- 24022,24028 ----
  with ordinary wide wide strings.
  
  @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{319}@anchor{gnat_rm/the_gnat_library id20}@anchor{31a}
  @section @code{Ada.Task_Initialization} (@code{a-tasini.ads})
  
  
*************** parameterless procedures. Note that such
*** 23935,23941 ****
  those tasks activated after the handler is set.
  
  @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{31a}@anchor{gnat_rm/the_gnat_library id21}@anchor{31b}
  @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
--- 24034,24040 ----
  those tasks activated after the handler is set.
  
  @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{31b}@anchor{gnat_rm/the_gnat_library id21}@anchor{31c}
  @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23950,23956 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id22}@anchor{31d}
  @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
--- 24049,24055 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{31d}@anchor{gnat_rm/the_gnat_library id22}@anchor{31e}
  @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
*************** execution (for example a standard input
*** 23965,23971 ****
  interactive).
  
  @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id23}@anchor{31f}
  @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
--- 24064,24070 ----
  interactive).
  
  @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{31f}@anchor{gnat_rm/the_gnat_library id23}@anchor{320}
  @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
*************** This package provides subprograms that a
*** 23978,23984 ****
  Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id24}@anchor{321}
  @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
--- 24077,24083 ----
  Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{321}@anchor{gnat_rm/the_gnat_library id24}@anchor{322}
  @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23993,23999 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id25}@anchor{323}
  @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
--- 24092,24098 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{323}@anchor{gnat_rm/the_gnat_library id25}@anchor{324}
  @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
*************** execution (for example a standard input
*** 24008,24014 ****
  interactive).
  
  @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id26}@anchor{325}
  @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
--- 24107,24113 ----
  interactive).
  
  @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{325}@anchor{gnat_rm/the_gnat_library id26}@anchor{326}
  @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
*************** This package provides subprograms that a
*** 24021,24027 ****
  Wide_Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id27}@anchor{327}
  @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
--- 24120,24126 ----
  Wide_Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{327}@anchor{gnat_rm/the_gnat_library id27}@anchor{328}
  @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 24036,24042 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{328}@anchor{gnat_rm/the_gnat_library id28}@anchor{329}
  @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
--- 24135,24141 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{329}@anchor{gnat_rm/the_gnat_library id28}@anchor{32a}
  @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
*************** change during execution (for example a s
*** 24051,24057 ****
  redefined to be interactive).
  
  @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id29}@anchor{32b}
  @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
--- 24150,24156 ----
  redefined to be interactive).
  
  @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{32b}@anchor{gnat_rm/the_gnat_library id29}@anchor{32c}
  @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
*************** definitions of constants and types commo
*** 24064,24070 ****
  binding.
  
  @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{32c}@anchor{gnat_rm/the_gnat_library id30}@anchor{32d}
  @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
--- 24163,24169 ----
  binding.
  
  @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{32d}@anchor{gnat_rm/the_gnat_library id30}@anchor{32e}
  @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
*************** binding.
*** 24075,24081 ****
  This package provides the Vector/View conversion routines.
  
  @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{32e}@anchor{gnat_rm/the_gnat_library id31}@anchor{32f}
  @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
--- 24174,24180 ----
  This package provides the Vector/View conversion routines.
  
  @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{32f}@anchor{gnat_rm/the_gnat_library id31}@anchor{330}
  @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
*************** library. The hard binding is provided as
*** 24089,24095 ****
  is common to both bindings.
  
  @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id32}@anchor{331}
  @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
--- 24188,24194 ----
  is common to both bindings.
  
  @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{331}@anchor{gnat_rm/the_gnat_library id32}@anchor{332}
  @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
*************** This package exposes the various vector
*** 24101,24107 ****
  to AltiVec facilities.
  
  @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id33}@anchor{333}
  @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
--- 24200,24206 ----
  to AltiVec facilities.
  
  @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{333}@anchor{gnat_rm/the_gnat_library id33}@anchor{334}
  @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
*************** vector elements and provides a simple wa
*** 24116,24122 ****
  objects.
  
  @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{334}@anchor{gnat_rm/the_gnat_library id34}@anchor{335}
  @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
--- 24215,24221 ----
  objects.
  
  @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{335}@anchor{gnat_rm/the_gnat_library id34}@anchor{336}
  @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
*************** an array wherever the separators appear,
*** 24129,24135 ****
  to the resulting slices.
  
  @node GNAT AWK g-awk ads,GNAT Binary_Search g-binsea ads,GNAT Array_Split g-arrspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id35}@anchor{337}
  @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
--- 24228,24234 ----
  to the resulting slices.
  
  @node GNAT AWK g-awk ads,GNAT Binary_Search g-binsea ads,GNAT Array_Split g-arrspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{337}@anchor{gnat_rm/the_gnat_library id35}@anchor{338}
  @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
*************** or more files containing formatted data.
*** 24144,24150 ****
  where each record is a line and a field is a data element in this line.
  
  @node GNAT Binary_Search g-binsea ads,GNAT Bind_Environment g-binenv ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id36}@anchor{339}
  @section @code{GNAT.Binary_Search} (@code{g-binsea.ads})
  
  
--- 24243,24249 ----
  where each record is a line and a field is a data element in this line.
  
  @node GNAT Binary_Search g-binsea ads,GNAT Bind_Environment g-binenv ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{339}@anchor{gnat_rm/the_gnat_library id36}@anchor{33a}
  @section @code{GNAT.Binary_Search} (@code{g-binsea.ads})
  
  
*************** Allow binary search of a sorted array (o
*** 24156,24162 ****
  the generic does not reference the array directly).
  
  @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT Binary_Search g-binsea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id37}@anchor{33b}
  @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
--- 24255,24261 ----
  the generic does not reference the array directly).
  
  @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT Binary_Search g-binsea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{33b}@anchor{gnat_rm/the_gnat_library id37}@anchor{33c}
  @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
*************** These associations can be specified usin
*** 24169,24175 ****
  line switch.
  
  @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{33c}@anchor{gnat_rm/the_gnat_library id38}@anchor{33d}
  @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
  
  
--- 24268,24274 ----
  line switch.
  
  @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{33d}@anchor{gnat_rm/the_gnat_library id38}@anchor{33e}
  @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
  
  
*************** line switch.
*** 24180,24186 ****
  Provides routines giving hints to the branch predictor of the code generator.
  
  @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id39}@anchor{33f}
  @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
--- 24279,24285 ----
  Provides routines giving hints to the branch predictor of the code generator.
  
  @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{33f}@anchor{gnat_rm/the_gnat_library id39}@anchor{340}
  @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
*************** useful directly or as parts of the imple
*** 24195,24201 ****
  such as mailboxes.
  
  @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{340}@anchor{gnat_rm/the_gnat_library id40}@anchor{341}
  @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
--- 24294,24300 ----
  such as mailboxes.
  
  @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{341}@anchor{gnat_rm/the_gnat_library id40}@anchor{342}
  @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
*************** such as mailboxes.
*** 24208,24214 ****
  Provides a thread-safe asynchronous intertask mailbox communication facility.
  
  @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{342}@anchor{gnat_rm/the_gnat_library id41}@anchor{343}
  @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
--- 24307,24313 ----
  Provides a thread-safe asynchronous intertask mailbox communication facility.
  
  @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{343}@anchor{gnat_rm/the_gnat_library id41}@anchor{344}
  @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
*************** data items.  Exchange and comparison pro
*** 24223,24229 ****
  access-to-procedure values.
  
  @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{344}@anchor{gnat_rm/the_gnat_library id42}@anchor{345}
  @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
--- 24322,24328 ----
  access-to-procedure values.
  
  @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{345}@anchor{gnat_rm/the_gnat_library id42}@anchor{346}
  @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
*************** access-to-procedure values. This is an o
*** 24239,24245 ****
  compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable.
  
  @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id43}@anchor{347}
  @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
--- 24338,24344 ----
  compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable.
  
  @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{347}@anchor{gnat_rm/the_gnat_library id43}@anchor{348}
  @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 24255,24261 ****
  multiple instantiations.
  
  @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id44}@anchor{349}
  @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
--- 24354,24360 ----
  multiple instantiations.
  
  @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{349}@anchor{gnat_rm/the_gnat_library id44}@anchor{34a}
  @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
*************** the encoding of the string. The routine
*** 24271,24277 ****
  sequences for various UCS input formats.
  
  @node GNAT Byte_Swapping g-bytswa ads,GNAT C_Time g-c_time ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{34a}@anchor{gnat_rm/the_gnat_library id45}@anchor{34b}
  @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
--- 24370,24376 ----
  sequences for various UCS input formats.
  
  @node GNAT Byte_Swapping g-bytswa ads,GNAT C_Time g-c_time ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{34b}@anchor{gnat_rm/the_gnat_library id45}@anchor{34c}
  @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
*************** General routines for swapping the bytes
*** 24285,24291 ****
  Machine-specific implementations are available in some cases.
  
  @node GNAT C_Time g-c_time ads,GNAT Calendar g-calend ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-c-time-g-c-time-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id46}@anchor{34d}
  @section @code{GNAT.C_Time} (@code{g-c_time.ads})
  
  
--- 24384,24390 ----
  Machine-specific implementations are available in some cases.
  
  @node GNAT C_Time g-c_time ads,GNAT Calendar g-calend ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-c-time-g-c-time-ads}@anchor{34d}@anchor{gnat_rm/the_gnat_library id46}@anchor{34e}
  @section @code{GNAT.C_Time} (@code{g-c_time.ads})
  
  
*************** Provides the time_t, timeval and timespe
*** 24297,24303 ****
  types defined by the OS, as well as various conversion functions.
  
  @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT C_Time g-c_time ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id47}@anchor{34f}
  @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
--- 24396,24402 ----
  types defined by the OS, as well as various conversion functions.
  
  @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT C_Time g-c_time ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{34f}@anchor{gnat_rm/the_gnat_library id47}@anchor{350}
  @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
*************** Extends the facilities provided by @code
*** 24309,24315 ****
  of days of the week, an extended @code{Split} and @code{Time_Of} capability.
  
  @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{350}@anchor{gnat_rm/the_gnat_library id48}@anchor{351}
  @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
--- 24408,24414 ----
  of days of the week, an extended @code{Split} and @code{Time_Of} capability.
  
  @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{351}@anchor{gnat_rm/the_gnat_library id48}@anchor{352}
  @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
*************** of days of the week, an extended @code{S
*** 24320,24326 ****
  @geindex GNAT.Calendar.Time_IO (g-catiio.ads)
  
  @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id49}@anchor{353}
  @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
--- 24419,24425 ----
  @geindex GNAT.Calendar.Time_IO (g-catiio.ads)
  
  @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{353}@anchor{gnat_rm/the_gnat_library id49}@anchor{354}
  @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
*************** of this algorithm see
*** 24337,24343 ****
  Aug. 1988.  Sarwate, D.V.
  
  @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id50}@anchor{355}
  @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
--- 24436,24442 ----
  Aug. 1988.  Sarwate, D.V.
  
  @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{355}@anchor{gnat_rm/the_gnat_library id50}@anchor{356}
  @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
*************** without the overhead of the full casing
*** 24352,24358 ****
  in @code{Ada.Characters.Handling}.
  
  @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{356}@anchor{gnat_rm/the_gnat_library id51}@anchor{357}
  @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
--- 24451,24457 ----
  in @code{Ada.Characters.Handling}.
  
  @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{357}@anchor{gnat_rm/the_gnat_library id51}@anchor{358}
  @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
*************** builds a table whose index is the key an
*** 24367,24373 ****
  with this table.
  
  @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id52}@anchor{359}
  @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
--- 24466,24472 ----
  with this table.
  
  @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{359}@anchor{gnat_rm/the_gnat_library id52}@anchor{35a}
  @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
*************** Common Gateway Interface (CGI).  It expo
*** 24382,24388 ****
  cookies (piece of information kept in the Web client software).
  
  @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{35a}@anchor{gnat_rm/the_gnat_library id53}@anchor{35b}
  @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
--- 24481,24487 ----
  cookies (piece of information kept in the Web client software).
  
  @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{35b}@anchor{gnat_rm/the_gnat_library id53}@anchor{35c}
  @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
*************** This is a package to help debugging CGI
*** 24394,24400 ****
  programs written in Ada.
  
  @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{35c}@anchor{gnat_rm/the_gnat_library id54}@anchor{35d}
  @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
--- 24493,24499 ----
  programs written in Ada.
  
  @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{35d}@anchor{gnat_rm/the_gnat_library id54}@anchor{35e}
  @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
*************** including the ability to scan for named
*** 24407,24413 ****
  and expand file names using wildcard notations.
  
  @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id55}@anchor{35f}
  @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
--- 24506,24512 ----
  and expand file names using wildcard notations.
  
  @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{35f}@anchor{gnat_rm/the_gnat_library id55}@anchor{360}
  @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
*************** of the compiler if a consistent tool set
*** 24425,24431 ****
  of a partition).
  
  @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id56}@anchor{361}
  @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
--- 24524,24530 ----
  of a partition).
  
  @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{361}@anchor{gnat_rm/the_gnat_library id56}@anchor{362}
  @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
*************** of a partition).
*** 24436,24442 ****
  Provides a simple interface to handle Ctrl-C keyboard events.
  
  @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id57}@anchor{363}
  @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
--- 24535,24541 ----
  Provides a simple interface to handle Ctrl-C keyboard events.
  
  @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{363}@anchor{gnat_rm/the_gnat_library id57}@anchor{364}
  @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
*************** This is particularly useful in simulatin
*** 24453,24459 ****
  obtaining information about exceptions provided by Ada 83 compilers.
  
  @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id58}@anchor{365}
  @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
--- 24552,24558 ----
  obtaining information about exceptions provided by Ada 83 compilers.
  
  @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{365}@anchor{gnat_rm/the_gnat_library id58}@anchor{366}
  @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
*************** problems.
*** 24470,24476 ****
  See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}.
  
  @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id59}@anchor{367}
  @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
--- 24569,24575 ----
  See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}.
  
  @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{367}@anchor{gnat_rm/the_gnat_library id59}@anchor{368}
  @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
*************** to and from string images of address val
*** 24483,24489 ****
  for hexadecimal literals.
  
  @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id60}@anchor{369}
  @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
--- 24582,24588 ----
  for hexadecimal literals.
  
  @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{369}@anchor{gnat_rm/the_gnat_library id60}@anchor{36a}
  @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
*************** Useful in conjunction with Unicode chara
*** 24507,24513 ****
  preinstantiation for UTF-8. See next entry.
  
  @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{36a}@anchor{gnat_rm/the_gnat_library id61}@anchor{36b}
  @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
--- 24606,24612 ----
  preinstantiation for UTF-8. See next entry.
  
  @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{36b}@anchor{gnat_rm/the_gnat_library id61}@anchor{36c}
  @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
*************** preinstantiation for UTF-8. See next ent
*** 24528,24534 ****
  A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding.
  
  @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{36c}@anchor{gnat_rm/the_gnat_library id62}@anchor{36d}
  @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
--- 24627,24633 ----
  A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding.
  
  @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{36d}@anchor{gnat_rm/the_gnat_library id62}@anchor{36e}
  @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
*************** the current directory, making new direct
*** 24541,24547 ****
  directory.
  
  @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{36e}@anchor{gnat_rm/the_gnat_library id63}@anchor{36f}
  @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
--- 24640,24646 ----
  directory.
  
  @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{36f}@anchor{gnat_rm/the_gnat_library id63}@anchor{370}
  @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
*************** A child unit of GNAT.Directory_Operation
*** 24553,24559 ****
  for iterating through directories.
  
  @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{370}@anchor{gnat_rm/the_gnat_library id64}@anchor{371}
  @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
--- 24652,24658 ----
  for iterating through directories.
  
  @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{371}@anchor{gnat_rm/the_gnat_library id64}@anchor{372}
  @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
*************** dynamic instances of the hash table, whi
*** 24571,24577 ****
  @code{GNAT.HTable} creates a single instance of the hash table.
  
  @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{372}@anchor{gnat_rm/the_gnat_library id65}@anchor{373}
  @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
--- 24670,24676 ----
  @code{GNAT.HTable} creates a single instance of the hash table.
  
  @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{373}@anchor{gnat_rm/the_gnat_library id65}@anchor{374}
  @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
*************** dynamic instances of the table, while an
*** 24591,24597 ****
  @code{GNAT.Table} creates a single instance of the table type.
  
  @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id66}@anchor{375}
  @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
--- 24690,24696 ----
  @code{GNAT.Table} creates a single instance of the table type.
  
  @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{375}@anchor{gnat_rm/the_gnat_library id66}@anchor{376}
  @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
*************** encoding method. Useful in conjunction w
*** 24613,24619 ****
  Note there is a preinstantiation for UTF-8. See next entry.
  
  @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{376}@anchor{gnat_rm/the_gnat_library id67}@anchor{377}
  @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
--- 24712,24718 ----
  Note there is a preinstantiation for UTF-8. See next entry.
  
  @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{377}@anchor{gnat_rm/the_gnat_library id67}@anchor{378}
  @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
*************** Note there is a preinstantiation for UTF
*** 24634,24640 ****
  A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding.
  
  @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{378}@anchor{gnat_rm/the_gnat_library id68}@anchor{379}
  @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
--- 24733,24739 ----
  A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding.
  
  @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{379}@anchor{gnat_rm/the_gnat_library id68}@anchor{37a}
  @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
*************** for specific exceptions, or when any exc
*** 24647,24653 ****
  can be used for instance to force a core dump to ease debugging.
  
  @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{37a}@anchor{gnat_rm/the_gnat_library id69}@anchor{37b}
  @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
--- 24746,24752 ----
  can be used for instance to force a core dump to ease debugging.
  
  @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{37b}@anchor{gnat_rm/the_gnat_library id69}@anchor{37c}
  @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
*************** Provides an interface allowing to contro
*** 24661,24667 ****
  occurrences.
  
  @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{37c}@anchor{gnat_rm/the_gnat_library id70}@anchor{37d}
  @section @code{GNAT.Exceptions} (@code{g-except.ads})
  
  
--- 24760,24766 ----
  occurrences.
  
  @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{37d}@anchor{gnat_rm/the_gnat_library id70}@anchor{37e}
  @section @code{GNAT.Exceptions} (@code{g-except.ads})
  
  
*************** predefined exceptions, and for example a
*** 24682,24688 ****
  @code{Constraint_Error} with a message from a pure subprogram.
  
  @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{37e}@anchor{gnat_rm/the_gnat_library id71}@anchor{37f}
  @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
--- 24781,24787 ----
  @code{Constraint_Error} with a message from a pure subprogram.
  
  @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{37f}@anchor{gnat_rm/the_gnat_library id71}@anchor{380}
  @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
*************** It is not implemented for cross ports, a
*** 24698,24704 ****
  implemented for VxWorks or LynxOS.
  
  @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{380}@anchor{gnat_rm/the_gnat_library id72}@anchor{381}
  @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
--- 24797,24803 ----
  implemented for VxWorks or LynxOS.
  
  @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{381}@anchor{gnat_rm/the_gnat_library id72}@anchor{382}
  @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
*************** ports. It is not implemented for cross p
*** 24710,24716 ****
  in particular is not implemented for VxWorks or LynxOS.
  
  @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{382}@anchor{gnat_rm/the_gnat_library id73}@anchor{383}
  @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
--- 24809,24815 ----
  in particular is not implemented for VxWorks or LynxOS.
  
  @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{383}@anchor{gnat_rm/the_gnat_library id73}@anchor{384}
  @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
*************** library calls may cause this mode to be
*** 24724,24730 ****
  in this package can be used to reestablish the required mode.
  
  @node GNAT Formatted_String g-forstr ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Float_Control g-flocon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{384}@anchor{gnat_rm/the_gnat_library id74}@anchor{385}
  @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
--- 24823,24829 ----
  in this package can be used to reestablish the required mode.
  
  @node GNAT Formatted_String g-forstr ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Float_Control g-flocon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{385}@anchor{gnat_rm/the_gnat_library id74}@anchor{386}
  @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
*************** derived from Integer, Float or enumerati
*** 24739,24745 ****
  formatted string.
  
  @node GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Heap_Sort g-heasor ads,GNAT Formatted_String g-forstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{386}@anchor{gnat_rm/the_gnat_library id75}@anchor{387}
  @section @code{GNAT.Generic_Fast_Math_Functions} (@code{g-gfmafu.ads})
  
  
--- 24838,24844 ----
  formatted string.
  
  @node GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Heap_Sort g-heasor ads,GNAT Formatted_String g-forstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{387}@anchor{gnat_rm/the_gnat_library id75}@anchor{388}
  @section @code{GNAT.Generic_Fast_Math_Functions} (@code{g-gfmafu.ads})
  
  
*************** have a vector implementation that can be
*** 24757,24763 ****
  compiler when auto-vectorization is enabled.
  
  @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id76}@anchor{389}
  @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
--- 24856,24862 ----
  compiler when auto-vectorization is enabled.
  
  @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{389}@anchor{gnat_rm/the_gnat_library id76}@anchor{38a}
  @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
*************** access-to-procedure values.  The algorit
*** 24771,24777 ****
  that performs approximately N*log(N) comparisons in the worst case.
  
  @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id77}@anchor{38b}
  @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
--- 24870,24876 ----
  that performs approximately N*log(N) comparisons in the worst case.
  
  @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{38b}@anchor{gnat_rm/the_gnat_library id77}@anchor{38c}
  @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
*************** This differs from @code{GNAT.Heap_Sort}
*** 24787,24793 ****
  interface, but may be slightly more efficient.
  
  @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id78}@anchor{38d}
  @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
--- 24886,24892 ----
  interface, but may be slightly more efficient.
  
  @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{38d}@anchor{gnat_rm/the_gnat_library id78}@anchor{38e}
  @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 24801,24807 ****
  multiple instantiations.
  
  @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id79}@anchor{38f}
  @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
--- 24900,24906 ----
  multiple instantiations.
  
  @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{38f}@anchor{gnat_rm/the_gnat_library id79}@anchor{390}
  @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
*************** data.  Provides two approaches, one a si
*** 24814,24820 ****
  allowing arbitrary dynamic hash tables.
  
  @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id80}@anchor{391}
  @section @code{GNAT.IO} (@code{g-io.ads})
  
  
--- 24913,24919 ----
  allowing arbitrary dynamic hash tables.
  
  @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{391}@anchor{gnat_rm/the_gnat_library id80}@anchor{392}
  @section @code{GNAT.IO} (@code{g-io.ads})
  
  
*************** Standard_Input, and writing characters,
*** 24830,24836 ****
  Standard_Output or Standard_Error.
  
  @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id81}@anchor{393}
  @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
--- 24929,24935 ----
  Standard_Output or Standard_Error.
  
  @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{393}@anchor{gnat_rm/the_gnat_library id81}@anchor{394}
  @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
*************** Provides some auxiliary functions for us
*** 24844,24850 ****
  for whether a file exists, and functions for reading a line of text.
  
  @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id82}@anchor{395}
  @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
--- 24943,24949 ----
  for whether a file exists, and functions for reading a line of text.
  
  @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{395}@anchor{gnat_rm/the_gnat_library id82}@anchor{396}
  @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
*************** Provides a general interface for using f
*** 24858,24864 ****
  providing program level synchronization.
  
  @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{396}@anchor{gnat_rm/the_gnat_library id83}@anchor{397}
  @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
--- 24957,24963 ----
  providing program level synchronization.
  
  @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{397}@anchor{gnat_rm/the_gnat_library id83}@anchor{398}
  @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
*************** The original implementation of @code{Ada
*** 24870,24876 ****
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{398}@anchor{gnat_rm/the_gnat_library id84}@anchor{399}
  @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
--- 24969,24975 ----
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{399}@anchor{gnat_rm/the_gnat_library id84}@anchor{39a}
  @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
*************** The original implementation of @code{Ada
*** 24882,24888 ****
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{39a}@anchor{gnat_rm/the_gnat_library id85}@anchor{39b}
  @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
--- 24981,24987 ----
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{39b}@anchor{gnat_rm/the_gnat_library id85}@anchor{39c}
  @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
*************** the HMAC-MD5 message authentication func
*** 24895,24901 ****
  FIPS PUB 198.
  
  @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{39c}@anchor{gnat_rm/the_gnat_library id86}@anchor{39d}
  @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
--- 24994,25000 ----
  FIPS PUB 198.
  
  @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{39d}@anchor{gnat_rm/the_gnat_library id86}@anchor{39e}
  @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
*************** standard output or standard error files.
*** 24908,24914 ****
  output.
  
  @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{39e}@anchor{gnat_rm/the_gnat_library id87}@anchor{39f}
  @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
--- 25007,25013 ----
  output.
  
  @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{39f}@anchor{gnat_rm/the_gnat_library id87}@anchor{3a0}
  @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
*************** various logging purposes, including dupl
*** 24922,24928 ****
  Ada 83 implementation dependent extensions.
  
  @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{3a0}@anchor{gnat_rm/the_gnat_library id88}@anchor{3a1}
  @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
--- 25021,25027 ----
  Ada 83 implementation dependent extensions.
  
  @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{3a1}@anchor{gnat_rm/the_gnat_library id88}@anchor{3a2}
  @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
*************** including a portable spawn procedure, an
*** 24938,24944 ****
  and error return codes.
  
  @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{3a2}@anchor{gnat_rm/the_gnat_library id89}@anchor{3a3}
  @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
--- 25037,25043 ----
  and error return codes.
  
  @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{3a3}@anchor{gnat_rm/the_gnat_library id89}@anchor{3a4}
  @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
*************** hashcode are in the same order. These ha
*** 24956,24962 ****
  convenient for use with realtime applications.
  
  @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{3a4}@anchor{gnat_rm/the_gnat_library id90}@anchor{3a5}
  @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
--- 25055,25061 ----
  convenient for use with realtime applications.
  
  @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{3a5}@anchor{gnat_rm/the_gnat_library id90}@anchor{3a6}
  @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
*************** however NOT suitable for situations requ
*** 24970,24976 ****
  randomness.
  
  @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{279}@anchor{gnat_rm/the_gnat_library id91}@anchor{3a6}
  @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
--- 25069,25075 ----
  randomness.
  
  @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{27a}@anchor{gnat_rm/the_gnat_library id91}@anchor{3a7}
  @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
*************** simplest of the three pattern matching p
*** 24986,24992 ****
  suitable for ‘file globbing’ applications.
  
  @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{3a7}@anchor{gnat_rm/the_gnat_library id92}@anchor{3a8}
  @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
--- 25085,25091 ----
  suitable for ‘file globbing’ applications.
  
  @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{3a8}@anchor{gnat_rm/the_gnat_library id92}@anchor{3a9}
  @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
*************** registry API, but at a lower level of ab
*** 25000,25006 ****
  package provided with the Win32Ada binding
  
  @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{3a9}@anchor{gnat_rm/the_gnat_library id93}@anchor{3aa}
  @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
--- 25099,25105 ----
  package provided with the Win32Ada binding
  
  @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{3aa}@anchor{gnat_rm/the_gnat_library id93}@anchor{3ab}
  @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
*************** from the original V7 style regular expre
*** 25015,25021 ****
  Henry Spencer (and binary compatible with this C library).
  
  @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{3ab}@anchor{gnat_rm/the_gnat_library id94}@anchor{3ac}
  @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
--- 25114,25120 ----
  Henry Spencer (and binary compatible with this C library).
  
  @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{3ac}@anchor{gnat_rm/the_gnat_library id94}@anchor{3ad}
  @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
*************** full content to be processed is not load
*** 25029,25035 ****
  this interface usable for large files or socket streams.
  
  @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{3ad}@anchor{gnat_rm/the_gnat_library id95}@anchor{3ae}
  @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
--- 25128,25134 ----
  this interface usable for large files or socket streams.
  
  @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{3ae}@anchor{gnat_rm/the_gnat_library id95}@anchor{3af}
  @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
*************** Provides the capability to query the hig
*** 25041,25047 ****
  secondary stack.
  
  @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3af}@anchor{gnat_rm/the_gnat_library id96}@anchor{3b0}
  @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
--- 25140,25146 ----
  secondary stack.
  
  @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{3b0}@anchor{gnat_rm/the_gnat_library id96}@anchor{3b1}
  @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
*************** secondary stack.
*** 25052,25058 ****
  Provides classic counting and binary semaphores using protected types.
  
  @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3b1}@anchor{gnat_rm/the_gnat_library id97}@anchor{3b2}
  @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
--- 25151,25157 ----
  Provides classic counting and binary semaphores using protected types.
  
  @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3b2}@anchor{gnat_rm/the_gnat_library id97}@anchor{3b3}
  @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
*************** Provides a simple interface to send and
*** 25064,25070 ****
  port. This is only supported on GNU/Linux and Windows.
  
  @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3b3}@anchor{gnat_rm/the_gnat_library id98}@anchor{3b4}
  @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
--- 25163,25169 ----
  port. This is only supported on GNU/Linux and Windows.
  
  @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3b4}@anchor{gnat_rm/the_gnat_library id98}@anchor{3b5}
  @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
*************** and RFC 3174, and the HMAC-SHA1 message
*** 25077,25083 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id99}@anchor{3b6}
  @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
--- 25176,25182 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3b6}@anchor{gnat_rm/the_gnat_library id99}@anchor{3b7}
  @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
*************** and the HMAC-SHA224 message authenticati
*** 25090,25096 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3b7}@anchor{gnat_rm/the_gnat_library id100}@anchor{3b8}
  @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
--- 25189,25195 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3b8}@anchor{gnat_rm/the_gnat_library id100}@anchor{3b9}
  @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
*************** and the HMAC-SHA256 message authenticati
*** 25103,25109 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id101}@anchor{3ba}
  @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
--- 25202,25208 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3ba}@anchor{gnat_rm/the_gnat_library id101}@anchor{3bb}
  @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
*************** and the HMAC-SHA384 message authenticati
*** 25116,25122 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3bb}@anchor{gnat_rm/the_gnat_library id102}@anchor{3bc}
  @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
--- 25215,25221 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3bc}@anchor{gnat_rm/the_gnat_library id102}@anchor{3bd}
  @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
*************** and the HMAC-SHA512 message authenticati
*** 25129,25135 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3bd}@anchor{gnat_rm/the_gnat_library id103}@anchor{3be}
  @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
--- 25228,25234 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3be}@anchor{gnat_rm/the_gnat_library id103}@anchor{3bf}
  @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
*************** Provides the ability to manipulate the b
*** 25141,25147 ****
  targets.
  
  @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id104}@anchor{3c0}
  @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
--- 25240,25246 ----
  targets.
  
  @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3c0}@anchor{gnat_rm/the_gnat_library id104}@anchor{3c1}
  @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
*************** on all native GNAT ports and on VxWorks
*** 25156,25162 ****
  the LynxOS cross port.
  
  @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id105}@anchor{3c2}
  @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
--- 25255,25261 ----
  the LynxOS cross port.
  
  @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3c2}@anchor{gnat_rm/the_gnat_library id105}@anchor{3c3}
  @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
*************** subprograms yielding the date and time o
*** 25170,25176 ****
  C macros @code{__DATE__} and @code{__TIME__})
  
  @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id106}@anchor{3c4}
  @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
--- 25269,25275 ----
  C macros @code{__DATE__} and @code{__TIME__})
  
  @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3c4}@anchor{gnat_rm/the_gnat_library id106}@anchor{3c5}
  @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
*************** Provides a function for determining whet
*** 25182,25188 ****
  near misspelling of another string.
  
  @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id107}@anchor{3c6}
  @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
--- 25281,25287 ----
  near misspelling of another string.
  
  @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3c6}@anchor{gnat_rm/the_gnat_library id107}@anchor{3c7}
  @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
*************** determining whether one string is a plau
*** 25195,25201 ****
  string.
  
  @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3c7}@anchor{gnat_rm/the_gnat_library id108}@anchor{3c8}
  @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
--- 25294,25300 ----
  string.
  
  @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3c8}@anchor{gnat_rm/the_gnat_library id108}@anchor{3c9}
  @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
*************** the SNOBOL4 dynamic pattern construction
*** 25211,25217 ****
  efficient algorithm developed by Robert Dewar for the SPITBOL system.
  
  @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3c9}@anchor{gnat_rm/the_gnat_library id109}@anchor{3ca}
  @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
--- 25310,25316 ----
  efficient algorithm developed by Robert Dewar for the SPITBOL system.
  
  @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3ca}@anchor{gnat_rm/the_gnat_library id109}@anchor{3cb}
  @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
*************** useful for constructing arbitrary mappin
*** 25226,25232 ****
  the SNOBOL4 TABLE function.
  
  @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3cb}@anchor{gnat_rm/the_gnat_library id110}@anchor{3cc}
  @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
--- 25325,25331 ----
  the SNOBOL4 TABLE function.
  
  @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3cc}@anchor{gnat_rm/the_gnat_library id110}@anchor{3cd}
  @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
*************** for type @code{Standard.Boolean}, giving
*** 25241,25247 ****
  string values.
  
  @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3cd}@anchor{gnat_rm/the_gnat_library id111}@anchor{3ce}
  @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
--- 25340,25346 ----
  string values.
  
  @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3ce}@anchor{gnat_rm/the_gnat_library id111}@anchor{3cf}
  @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
*************** for type @code{Standard.Integer}, giving
*** 25258,25264 ****
  from string to integer values.
  
  @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3cf}@anchor{gnat_rm/the_gnat_library id112}@anchor{3d0}
  @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
--- 25357,25363 ----
  from string to integer values.
  
  @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3d0}@anchor{gnat_rm/the_gnat_library id112}@anchor{3d1}
  @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
*************** a variable length string type, giving an
*** 25275,25281 ****
  maps from strings to strings.
  
  @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id113}@anchor{3d2}
  @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
--- 25374,25380 ----
  maps from strings to strings.
  
  @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3d2}@anchor{gnat_rm/the_gnat_library id113}@anchor{3d3}
  @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
*************** targets.  It exposes vector component ty
*** 25287,25293 ****
  introduction to the binding contents and use.
  
  @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3d3}@anchor{gnat_rm/the_gnat_library id114}@anchor{3d4}
  @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
--- 25386,25392 ----
  introduction to the binding contents and use.
  
  @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3d4}@anchor{gnat_rm/the_gnat_library id114}@anchor{3d5}
  @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
*************** introduction to the binding contents and
*** 25296,25302 ****
  SSE vector types for use with SSE related intrinsics.
  
  @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id115}@anchor{3d6}
  @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
--- 25395,25401 ----
  SSE vector types for use with SSE related intrinsics.
  
  @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3d6}@anchor{gnat_rm/the_gnat_library id115}@anchor{3d7}
  @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
*************** Provides a generic hash function working
*** 25308,25314 ****
  type and the hash result type are parameters.
  
  @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id116}@anchor{3d8}
  @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
--- 25407,25413 ----
  type and the hash result type are parameters.
  
  @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3d8}@anchor{gnat_rm/the_gnat_library id116}@anchor{3d9}
  @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
*************** Common String access types and related s
*** 25318,25324 ****
  defines a string access and an array of string access types.
  
  @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id117}@anchor{3da}
  @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
--- 25417,25423 ----
  defines a string access and an array of string access types.
  
  @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3da}@anchor{gnat_rm/the_gnat_library id117}@anchor{3db}
  @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
*************** to the resulting slices. This package is
*** 25332,25338 ****
  @code{GNAT.Array_Split}.
  
  @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id118}@anchor{3dc}
  @section @code{GNAT.Table} (@code{g-table.ads})
  
  
--- 25431,25437 ----
  @code{GNAT.Array_Split}.
  
  @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3dc}@anchor{gnat_rm/the_gnat_library id118}@anchor{3dd}
  @section @code{GNAT.Table} (@code{g-table.ads})
  
  
*************** while an instantiation of @code{GNAT.Dyn
*** 25352,25358 ****
  used to define dynamic instances of the table.
  
  @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id119}@anchor{3de}
  @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
--- 25451,25457 ----
  used to define dynamic instances of the table.
  
  @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3de}@anchor{gnat_rm/the_gnat_library id119}@anchor{3df}
  @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
*************** single global task lock.  Appropriate fo
*** 25369,25375 ****
  between tasks is very rarely expected.
  
  @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id120}@anchor{3e0}
  @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
--- 25468,25474 ----
  between tasks is very rarely expected.
  
  @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3e0}@anchor{gnat_rm/the_gnat_library id120}@anchor{3e1}
  @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
*************** represents the current date and time in
*** 25384,25390 ****
  routine with minimal code and there are no dependencies on any other unit.
  
  @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id121}@anchor{3e2}
  @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
--- 25483,25489 ----
  routine with minimal code and there are no dependencies on any other unit.
  
  @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3e2}@anchor{gnat_rm/the_gnat_library id121}@anchor{3e3}
  @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
*************** further details if your program has thre
*** 25401,25407 ****
  environment which then accesses Ada code.
  
  @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3e3}@anchor{gnat_rm/the_gnat_library id122}@anchor{3e4}
  @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
--- 25500,25506 ----
  environment which then accesses Ada code.
  
  @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3e4}@anchor{gnat_rm/the_gnat_library id122}@anchor{3e5}
  @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
*************** Provides a facility for obtaining non-sy
*** 25413,25419 ****
  in various debugging situations.
  
  @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-utf_32 ads,GNAT Traceback g-traceb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3e5}@anchor{gnat_rm/the_gnat_library id123}@anchor{3e6}
  @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
--- 25512,25518 ----
  in various debugging situations.
  
  @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-utf_32 ads,GNAT Traceback g-traceb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3e6}@anchor{gnat_rm/the_gnat_library id123}@anchor{3e7}
  @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
*************** in various debugging situations.
*** 25422,25428 ****
  @geindex Trace back facilities
  
  @node GNAT UTF_32 g-utf_32 ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3e7}@anchor{gnat_rm/the_gnat_library id124}@anchor{3e8}
  @section @code{GNAT.UTF_32} (@code{g-utf_32.ads})
  
  
--- 25521,25527 ----
  @geindex Trace back facilities
  
  @node GNAT UTF_32 g-utf_32 ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3e8}@anchor{gnat_rm/the_gnat_library id124}@anchor{3e9}
  @section @code{GNAT.UTF_32} (@code{g-utf_32.ads})
  
  
*************** lower case to upper case fold routine co
*** 25441,25447 ****
  the Ada 2005 rules for identifier equivalence.
  
  @node GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-utf_32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3e9}@anchor{gnat_rm/the_gnat_library id125}@anchor{3ea}
  @section @code{GNAT.UTF_32_Spelling_Checker} (@code{g-u3spch.ads})
  
  
--- 25540,25546 ----
  the Ada 2005 rules for identifier equivalence.
  
  @node GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-utf_32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3ea}@anchor{gnat_rm/the_gnat_library id125}@anchor{3eb}
  @section @code{GNAT.UTF_32_Spelling_Checker} (@code{g-u3spch.ads})
  
  
*************** near misspelling of another wide wide st
*** 25454,25460 ****
  using the UTF_32_String type defined in System.Wch_Cnv.
  
  @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3eb}@anchor{gnat_rm/the_gnat_library id126}@anchor{3ec}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
--- 25553,25559 ----
  using the UTF_32_String type defined in System.Wch_Cnv.
  
  @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3ec}@anchor{gnat_rm/the_gnat_library id126}@anchor{3ed}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
*************** Provides a function for determining whet
*** 25466,25472 ****
  near misspelling of another wide string.
  
  @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3ed}@anchor{gnat_rm/the_gnat_library id127}@anchor{3ee}
  @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
--- 25565,25571 ----
  near misspelling of another wide string.
  
  @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3ee}@anchor{gnat_rm/the_gnat_library id127}@anchor{3ef}
  @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 25480,25486 ****
  @code{GNAT.Array_Split}.
  
  @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3ef}@anchor{gnat_rm/the_gnat_library id128}@anchor{3f0}
  @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
--- 25579,25585 ----
  @code{GNAT.Array_Split}.
  
  @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3f0}@anchor{gnat_rm/the_gnat_library id128}@anchor{3f1}
  @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
*************** Provides a function for determining whet
*** 25492,25498 ****
  near misspelling of another wide wide string.
  
  @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3f1}@anchor{gnat_rm/the_gnat_library id129}@anchor{3f2}
  @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
--- 25591,25597 ----
  near misspelling of another wide wide string.
  
  @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3f2}@anchor{gnat_rm/the_gnat_library id129}@anchor{3f3}
  @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 25506,25512 ****
  @code{GNAT.Array_Split}.
  
  @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id130}@anchor{3f3}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3f4}
  @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
--- 25605,25611 ----
  @code{GNAT.Array_Split}.
  
  @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id130}@anchor{3f4}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3f5}
  @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
*************** for use with either manually or automati
*** 25517,25523 ****
  to C libraries.
  
  @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id131}@anchor{3f5}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3f6}
  @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
--- 25616,25622 ----
  to C libraries.
  
  @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id131}@anchor{3f6}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3f7}
  @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
*************** This package is a binding for the most c
*** 25530,25536 ****
  on C streams.
  
  @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id132}@anchor{3f7}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3f8}
  @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
--- 25629,25635 ----
  on C streams.
  
  @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id132}@anchor{3f8}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3f9}
  @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
*************** from a packed decimal format compatible
*** 25545,25551 ****
  mainframes.
  
  @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id133}@anchor{3f9}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3fa}
  @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
--- 25644,25650 ----
  mainframes.
  
  @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id133}@anchor{3fa}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3fb}
  @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
*************** mainframes.
*** 25559,25565 ****
  This package provides a limited binding to the VxWorks API.
  
  @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks i-vxwork ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id134}@anchor{3fb}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3fc}
  @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
--- 25658,25664 ----
  This package provides a limited binding to the VxWorks API.
  
  @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks i-vxwork ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id134}@anchor{3fc}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3fd}
  @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
*************** function codes. A particular use of this
*** 25582,25588 ****
  to enable the use of Get_Immediate under VxWorks.
  
  @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id135}@anchor{3fd}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3fe}
  @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
--- 25681,25687 ----
  to enable the use of Get_Immediate under VxWorks.
  
  @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id135}@anchor{3fe}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3ff}
  @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
*************** function that gives an (implementation d
*** 25598,25604 ****
  string which identifies an address.
  
  @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id136}@anchor{3ff}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{400}
  @section @code{System.Assertions} (@code{s-assert.ads})
  
  
--- 25697,25703 ----
  string which identifies an address.
  
  @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id136}@anchor{400}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{401}
  @section @code{System.Assertions} (@code{s-assert.ads})
  
  
*************** by an run-time assertion failure, as wel
*** 25614,25620 ****
  is used internally to raise this assertion.
  
  @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id137}@anchor{401}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{402}
  @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
--- 25713,25719 ----
  is used internally to raise this assertion.
  
  @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id137}@anchor{402}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{403}
  @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
*************** on most targets, including all Alpha, AA
*** 25628,25634 ****
  x86, and x86_64 platforms.
  
  @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id138}@anchor{403}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{404}
  @section @code{System.Memory} (@code{s-memory.ads})
  
  
--- 25727,25733 ----
  x86, and x86_64 platforms.
  
  @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id138}@anchor{404}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{405}
  @section @code{System.Memory} (@code{s-memory.ads})
  
  
*************** calls to this unit may be made for low l
*** 25646,25652 ****
  example see the body of @code{GNAT.Tables}).
  
  @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id139}@anchor{405}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{406}
  @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
--- 25745,25751 ----
  example see the body of @code{GNAT.Tables}).
  
  @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id139}@anchor{406}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{407}
  @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 25659,25665 ****
  technically an implementation-defined addition).
  
  @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id140}@anchor{407}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{408}
  @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
--- 25758,25764 ----
  technically an implementation-defined addition).
  
  @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id140}@anchor{408}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{409}
  @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 25672,25678 ****
  technically an implementation-defined addition).
  
  @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id141}@anchor{409}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{40a}
  @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
--- 25771,25777 ----
  technically an implementation-defined addition).
  
  @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id141}@anchor{40a}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{40b}
  @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
*************** is used primarily in a distribution cont
*** 25685,25691 ****
  with @code{PolyORB}.
  
  @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id142}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{40c}
  @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
--- 25784,25790 ----
  with @code{PolyORB}.
  
  @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id142}@anchor{40c}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{40d}
  @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
*************** declared. It uses malloc/free to allocat
*** 25702,25708 ****
  do any automatic reclamation.
  
  @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id143}@anchor{40d}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{40e}
  @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
--- 25801,25807 ----
  do any automatic reclamation.
  
  @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id143}@anchor{40e}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{40f}
  @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
*************** a list of allocated blocks, so that all
*** 25719,25725 ****
  be freed automatically when the pool is finalized.
  
  @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id144}@anchor{40f}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{410}
  @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
--- 25818,25824 ----
  be freed automatically when the pool is finalized.
  
  @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id144}@anchor{410}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{411}
  @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
*************** compiler determined information on which
*** 25735,25741 ****
  are violated by one or more packages in the partition.
  
  @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id145}@anchor{411}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{412}
  @section @code{System.Rident} (@code{s-rident.ads})
  
  
--- 25834,25840 ----
  are violated by one or more packages in the partition.
  
  @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id145}@anchor{412}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{413}
  @section @code{System.Rident} (@code{s-rident.ads})
  
  
*************** since the necessary instantiation is inc
*** 25751,25757 ****
  package System.Restrictions.
  
  @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id146}@anchor{413}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{414}
  @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
--- 25850,25856 ----
  package System.Restrictions.
  
  @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id146}@anchor{414}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{415}
  @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
*************** stream attributes are applied to string
*** 25767,25773 ****
  package can be used directly by application programs.
  
  @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id147}@anchor{415}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{416}
  @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
--- 25866,25872 ----
  package can be used directly by application programs.
  
  @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id147}@anchor{416}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{417}
  @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
*************** also contains some related definitions f
*** 25780,25786 ****
  used by the compiler in connection with packed array types.
  
  @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id148}@anchor{417}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{418}
  @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
--- 25879,25885 ----
  used by the compiler in connection with packed array types.
  
  @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id148}@anchor{418}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{419}
  @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
*************** encoding method.  It uses definitions in
*** 25801,25807 ****
  package @code{System.Wch_Con}.
  
  @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id149}@anchor{419}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{41a}
  @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
--- 25900,25906 ----
  package @code{System.Wch_Con}.
  
  @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id149}@anchor{41a}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{41b}
  @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
*************** in ordinary strings.  These definitions
*** 25813,25819 ****
  the package @code{System.Wch_Cnv}.
  
  @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top
! @anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{41b}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{41c}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11}
  @chapter Interfacing to Other Languages
  
  
--- 25912,25918 ----
  the package @code{System.Wch_Cnv}.
  
  @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top
! @anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{41c}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{41d}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11}
  @chapter Interfacing to Other Languages
  
  
*************** provided.
*** 25831,25837 ****
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{41d}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{41e}
  @section Interfacing to C
  
  
--- 25930,25936 ----
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{41e}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{41f}
  @section Interfacing to C
  
  
*************** of the length corresponding to the @code
*** 25971,25977 ****
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{49}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{41f}
  @section Interfacing to C++
  
  
--- 26070,26076 ----
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{49}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{420}
  @section Interfacing to C++
  
  
*************** builds an opaque @code{Type_Info_Ptr} to
*** 26188,26194 ****
  object at a given @code{System.Address}.
  
  @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{420}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{421}
  @section Interfacing to COBOL
  
  
--- 26287,26293 ----
  object at a given @code{System.Address}.
  
  @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{421}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{422}
  @section Interfacing to COBOL
  
  
*************** Interfacing to COBOL is achieved as desc
*** 26196,26202 ****
  the Ada Reference Manual.
  
  @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{422}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{423}
  @section Interfacing to Fortran
  
  
--- 26295,26301 ----
  the Ada Reference Manual.
  
  @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{423}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{424}
  @section Interfacing to Fortran
  
  
*************** multi-dimensional array causes the array
*** 26206,26212 ****
  order as required for convenient interface to Fortran.
  
  @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{424}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{425}
  @section Interfacing to non-GNAT Ada code
  
  
--- 26305,26311 ----
  order as required for convenient interface to Fortran.
  
  @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{425}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{426}
  @section Interfacing to non-GNAT Ada code
  
  
*************** values or simple record types without va
*** 26230,26236 ****
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes doc}@anchor{426}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{427}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}
  @chapter Specialized Needs Annexes
  
  
--- 26329,26335 ----
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes doc}@anchor{427}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{428}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}
  @chapter Specialized Needs Annexes
  
  
*************** in Ada 2005) is fully implemented.
*** 26268,26274 ****
  @end table
  
  @node Implementation of Specific Ada Features,Implementation of Ada 2022 Features,Specialized Needs Annexes,Top
! @anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{429}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13}
  @chapter Implementation of Specific Ada Features
  
  
--- 26367,26373 ----
  @end table
  
  @node Implementation of Specific Ada Features,Implementation of Ada 2022 Features,Specialized Needs Annexes,Top
! @anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{429}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13}
  @chapter Implementation of Specific Ada Features
  
  
*************** facilities.
*** 26287,26293 ****
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{181}
  @section Machine Code Insertions
  
  
--- 26386,26392 ----
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{42b}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{182}
  @section Machine Code Insertions
  
  
*************** according to normal visibility rules. In
*** 26455,26461 ****
  qualification is required.
  
  @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{42b}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{42c}
  @section GNAT Implementation of Tasking
  
  
--- 26554,26560 ----
  qualification is required.
  
  @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{42d}
  @section GNAT Implementation of Tasking
  
  
*************** to compliance with the Real-Time Systems
*** 26471,26477 ****
  @end menu
  
  @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{42d}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{42e}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
--- 26570,26576 ----
  @end menu
  
  @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{42f}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
*************** support this functionality when the pare
*** 26540,26546 ****
  @geindex Forking a new process
  
  @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{42f}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{430}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
--- 26639,26645 ----
  @geindex Forking a new process
  
  @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{431}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
*************** placed at the end.
*** 26591,26597 ****
  @c Support_for_Locking_Policies
  
  @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{431}
  @subsection Support for Locking Policies
  
  
--- 26690,26696 ----
  @c Support_for_Locking_Policies
  
  @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{432}
  @subsection Support for Locking Policies
  
  
*************** then ceiling locking is used.
*** 26625,26631 ****
  Otherwise, the @code{Ceiling_Locking} policy is ignored.
  
  @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{432}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{433}
  @section GNAT Implementation of Shared Passive Packages
  
  
--- 26724,26730 ----
  Otherwise, the @code{Ceiling_Locking} policy is ignored.
  
  @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{433}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{434}
  @section GNAT Implementation of Shared Passive Packages
  
  
*************** This is used to provide the required loc
*** 26723,26729 ****
  semantics for proper protected object synchronization.
  
  @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{434}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{435}
  @section Code Generation for Array Aggregates
  
  
--- 26822,26828 ----
  semantics for proper protected object synchronization.
  
  @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{435}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{436}
  @section Code Generation for Array Aggregates
  
  
*************** component values and static subtypes als
*** 26754,26760 ****
  @end menu
  
  @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{436}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{437}
  @subsection Static constant aggregates with static bounds
  
  
--- 26853,26859 ----
  @end menu
  
  @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{437}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{438}
  @subsection Static constant aggregates with static bounds
  
  
*************** Zero2: constant two_dim := (others => (o
*** 26801,26807 ****
  @end example
  
  @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{438}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{439}
  @subsection Constant aggregates with unconstrained nominal types
  
  
--- 26900,26906 ----
  @end example
  
  @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{439}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{43a}
  @subsection Constant aggregates with unconstrained nominal types
  
  
*************** Cr_Unc : constant One_Unc := (12,24,36);
*** 26816,26822 ****
  @end example
  
  @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{43a}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{43b}
  @subsection Aggregates with static bounds
  
  
--- 26915,26921 ----
  @end example
  
  @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{43b}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{43c}
  @subsection Aggregates with static bounds
  
  
*************** end loop;
*** 26844,26850 ****
  @end example
  
  @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{43c}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{43d}
  @subsection Aggregates with nonstatic bounds
  
  
--- 26943,26949 ----
  @end example
  
  @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{43d}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{43e}
  @subsection Aggregates with nonstatic bounds
  
  
*************** have to be applied to sub-arrays individ
*** 26855,26861 ****
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{43e}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{43f}
  @subsection Aggregates in assignment statements
  
  
--- 26954,26960 ----
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{43f}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{440}
  @subsection Aggregates in assignment statements
  
  
*************** a temporary (created either by the front
*** 26897,26903 ****
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{440}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{441}
  @section The Size of Discriminated Records with Default Discriminants
  
  
--- 26996,27002 ----
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{441}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{442}
  @section The Size of Discriminated Records with Default Discriminants
  
  
*************** say) must be consistent, so it is impera
*** 26977,26983 ****
  remain invariant.
  
  @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{442}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{443}
  @section Image Values For Nonscalar Types
  
  
--- 27076,27082 ----
  remain invariant.
  
  @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{443}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{444}
  @section Image Values For Nonscalar Types
  
  
*************** control of image text is required for so
*** 26997,27003 ****
  explicitly specified.
  
  @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{444}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{445}
  @section Strict Conformance to the Ada Reference Manual
  
  
--- 27096,27102 ----
  explicitly specified.
  
  @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{445}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{446}
  @section Strict Conformance to the Ada Reference Manual
  
  
*************** behavior (although at the cost of a sign
*** 27024,27030 ****
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2022 Features,GNAT language extensions,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2022_features doc}@anchor{446}@anchor{gnat_rm/implementation_of_ada_2022_features id1}@anchor{447}@anchor{gnat_rm/implementation_of_ada_2022_features implementation-of-ada-2022-features}@anchor{14}
  @chapter Implementation of Ada 2022 Features
  
  
--- 27123,27129 ----
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2022 Features,GNAT language extensions,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2022_features doc}@anchor{447}@anchor{gnat_rm/implementation_of_ada_2022_features id1}@anchor{448}@anchor{gnat_rm/implementation_of_ada_2022_features implementation-of-ada-2022-features}@anchor{14}
  @chapter Implementation of Ada 2022 Features
  
  
*************** RM references: 3.02.04 (31/5) 4.06 (51.1
*** 30443,30449 ****
  @end itemize
  
  @node GNAT language extensions,Security Hardening Features,Implementation of Ada 2022 Features,Top
! @anchor{gnat_rm/gnat_language_extensions doc}@anchor{448}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{449}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{44a}
  @chapter GNAT language extensions
  
  
--- 30542,30548 ----
  @end itemize
  
  @node GNAT language extensions,Security Hardening Features,Implementation of Ada 2022 Features,Top
! @anchor{gnat_rm/gnat_language_extensions doc}@anchor{449}@anchor{gnat_rm/gnat_language_extensions gnat-language-extensions}@anchor{44a}@anchor{gnat_rm/gnat_language_extensions id1}@anchor{44b}
  @chapter GNAT language extensions
  
  
*************** These features might be removed or heavi
*** 30475,30481 ****
  @end menu
  
  @node How to activate the extended GNAT Ada superset,Curated Extensions,,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{44b}
  @section How to activate the extended GNAT Ada superset
  
  
--- 30574,30580 ----
  @end menu
  
  @node How to activate the extended GNAT Ada superset,Curated Extensions,,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions how-to-activate-the-extended-gnat-ada-superset}@anchor{44c}
  @section How to activate the extended GNAT Ada superset
  
  
*************** for use in playground experiments.
*** 30516,30522 ****
  @end cartouche
  
  @node Curated Extensions,Experimental Language Extensions,How to activate the extended GNAT Ada superset,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{44c}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{6a}
  @section Curated Extensions
  
  
--- 30615,30621 ----
  @end cartouche
  
  @node Curated Extensions,Experimental Language Extensions,How to activate the extended GNAT Ada superset,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions curated-extensions}@anchor{44d}@anchor{gnat_rm/gnat_language_extensions curated-language-extensions}@anchor{6a}
  @section Curated Extensions
  
  
*************** Features activated via @code{-gnatX} or
*** 30539,30545 ****
  @end menu
  
  @node Local Declarations Without Block,Deep delta Aggregates,,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{44d}
  @subsection Local Declarations Without Block
  
  
--- 30638,30644 ----
  @end menu
  
  @node Local Declarations Without Block,Deep delta Aggregates,,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions local-declarations-without-block}@anchor{44e}
  @subsection Local Declarations Without Block
  
  
*************** And as such the second `@w{`}A`@w{`} dec
*** 30632,30638 ****
  @end cartouche
  
  @node Deep delta Aggregates,Fixed lower bounds for array types and subtypes,Local Declarations Without Block,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions deep-delta-aggregates}@anchor{44e}
  @subsection Deep delta Aggregates
  
  
--- 30731,30737 ----
  @end cartouche
  
  @node Deep delta Aggregates,Fixed lower bounds for array types and subtypes,Local Declarations Without Block,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions deep-delta-aggregates}@anchor{44f}
  @subsection Deep delta Aggregates
  
  
*************** The syntax of delta aggregates in the ex
*** 30654,30660 ****
  @end menu
  
  @node Syntax,Legality Rules,,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions syntax}@anchor{44f}
  @subsubsection Syntax
  
  
--- 30753,30759 ----
  @end menu
  
  @node Syntax,Legality Rules,,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions syntax}@anchor{450}
  @subsubsection Syntax
  
  
*************** array_subcomponent_choice ::=
*** 30700,30706 ****
  @end example
  
  @node Legality Rules,Dynamic Semantics,Syntax,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions legality-rules}@anchor{450}
  @subsubsection Legality Rules
  
  
--- 30799,30805 ----
  @end example
  
  @node Legality Rules,Dynamic Semantics,Syntax,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions legality-rules}@anchor{451}
  @subsubsection Legality Rules
  
  
*************** the object denoted by the base_expressio
*** 30737,30743 ****
  @end enumerate
  
  @node Dynamic Semantics,Examples,Legality Rules,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions dynamic-semantics}@anchor{451}
  @subsubsection Dynamic Semantics
  
  
--- 30836,30842 ----
  @end enumerate
  
  @node Dynamic Semantics,Examples,Legality Rules,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions dynamic-semantics}@anchor{452}
  @subsubsection Dynamic Semantics
  
  
*************** and assigned to the corresponding subcom
*** 30794,30800 ****
  @end itemize
  
  @node Examples,,Dynamic Semantics,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions examples}@anchor{452}
  @subsubsection Examples
  
  
--- 30893,30899 ----
  @end itemize
  
  @node Examples,,Dynamic Semantics,Deep delta Aggregates
! @anchor{gnat_rm/gnat_language_extensions examples}@anchor{453}
  @subsubsection Examples
  
  
*************** end;
*** 30822,30828 ****
  @end example
  
  @node Fixed lower bounds for array types and subtypes,Prefixed-view notation for calls to primitive subprograms of untagged types,Deep delta Aggregates,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{453}
  @subsection Fixed lower bounds for array types and subtypes
  
  
--- 30921,30927 ----
  @end example
  
  @node Fixed lower bounds for array types and subtypes,Prefixed-view notation for calls to primitive subprograms of untagged types,Deep delta Aggregates,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions fixed-lower-bounds-for-array-types-and-subtypes}@anchor{454}
  @subsection Fixed lower bounds for array types and subtypes
  
  
*************** lower bound of unconstrained array forma
*** 30873,30879 ****
  ranges with static fixed lower bounds.
  
  @node Prefixed-view notation for calls to primitive subprograms of untagged types,Expression defaults for generic formal functions,Fixed lower bounds for array types and subtypes,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{454}
  @subsection Prefixed-view notation for calls to primitive subprograms of untagged types
  
  
--- 30972,30978 ----
  ranges with static fixed lower bounds.
  
  @node Prefixed-view notation for calls to primitive subprograms of untagged types,Expression defaults for generic formal functions,Fixed lower bounds for array types and subtypes,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions prefixed-view-notation-for-calls-to-primitive-subprograms-of-untagged-types}@anchor{455}
  @subsection Prefixed-view notation for calls to primitive subprograms of untagged types
  
  
*************** pragma Assert (V.Nth_Element(1) = 42);
*** 30923,30929 ****
  @end example
  
  @node Expression defaults for generic formal functions,String interpolation,Prefixed-view notation for calls to primitive subprograms of untagged types,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{455}
  @subsection Expression defaults for generic formal functions
  
  
--- 31022,31028 ----
  @end example
  
  @node Expression defaults for generic formal functions,String interpolation,Prefixed-view notation for calls to primitive subprograms of untagged types,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions expression-defaults-for-generic-formal-functions}@anchor{456}
  @subsection Expression defaults for generic formal functions
  
  
*************** If the default is used (i.e. there is no
*** 30954,30960 ****
  then calls to Copy in the instance will simply return Item.
  
  @node String interpolation,Constrained attribute for generic objects,Expression defaults for generic formal functions,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{456}
  @subsection String interpolation
  
  
--- 31053,31059 ----
  then calls to Copy in the instance will simply return Item.
  
  @node String interpolation,Constrained attribute for generic objects,Expression defaults for generic formal functions,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions string-interpolation}@anchor{457}
  @subsection String interpolation
  
  
*************** a double quote is " and an open brace is
*** 31121,31127 ****
  @end example
  
  @node Constrained attribute for generic objects,Static aspect on intrinsic functions,String interpolation,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{457}
  @subsection Constrained attribute for generic objects
  
  
--- 31220,31226 ----
  @end example
  
  @node Constrained attribute for generic objects,Static aspect on intrinsic functions,String interpolation,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions constrained-attribute-for-generic-objects}@anchor{458}
  @subsection Constrained attribute for generic objects
  
  
*************** The @code{Constrained} attribute is perm
*** 31129,31135 ****
  result indicates whether the corresponding actual is constrained.
  
  @node Static aspect on intrinsic functions,First Controlling Parameter,Constrained attribute for generic objects,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{458}
  @subsection @code{Static} aspect on intrinsic functions
  
  
--- 31228,31234 ----
  result indicates whether the corresponding actual is constrained.
  
  @node Static aspect on intrinsic functions,First Controlling Parameter,Constrained attribute for generic objects,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions static-aspect-on-intrinsic-functions}@anchor{459}
  @subsection @code{Static} aspect on intrinsic functions
  
  
*************** and the compiler will evaluate some of t
*** 31138,31144 ****
  particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
  @node First Controlling Parameter,Unsigned_Base_Range aspect,Static aspect on intrinsic functions,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions first-controlling-parameter}@anchor{459}
  @subsection First Controlling Parameter
  
  
--- 31237,31243 ----
  particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
  @node First Controlling Parameter,Unsigned_Base_Range aspect,Static aspect on intrinsic functions,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions first-controlling-parameter}@anchor{45a}
  @subsection First Controlling Parameter
  
  
*************** The result of a function is never a cont
*** 31238,31244 ****
  @end itemize
  
  @node Unsigned_Base_Range aspect,Generalized Finalization,First Controlling Parameter,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions unsigned-base-range-aspect}@anchor{45a}
  @subsection @code{Unsigned_Base_Range} aspect
  
  
--- 31337,31343 ----
  @end itemize
  
  @node Unsigned_Base_Range aspect,Generalized Finalization,First Controlling Parameter,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions unsigned-base-range-aspect}@anchor{45b}
  @subsection @code{Unsigned_Base_Range} aspect
  
  
*************** It ensures that arithmetic operations of
*** 31264,31270 ****
  out using 64 bits.
  
  @node Generalized Finalization,,Unsigned_Base_Range aspect,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions generalized-finalization}@anchor{45b}
  @subsection Generalized Finalization
  
  
--- 31363,31369 ----
  out using 64 bits.
  
  @node Generalized Finalization,,Unsigned_Base_Range aspect,Curated Extensions
! @anchor{gnat_rm/gnat_language_extensions generalized-finalization}@anchor{45c}
  @subsection Generalized Finalization
  
  
*************** in this case.
*** 31335,31341 ****
  
  @item 
  The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{45c,,No_Raise aspect} specified for them. In particular, the
  compiler has permission to enforce none of the guarantees specified by the
  RM 7.6.1 (14/1) and subsequent subclauses.
  @end itemize
--- 31434,31440 ----
  
  @item 
  The @code{Adjust} and @code{Finalize} procedures are automatically considered as
! having the @ref{45d,,No_Raise aspect} specified for them. In particular, the
  compiler has permission to enforce none of the guarantees specified by the
  RM 7.6.1 (14/1) and subsequent subclauses.
  @end itemize
*************** end P;
*** 31396,31402 ****
  @end menu
  
  @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{45d}
  @subsubsection Finalizable tagged types
  
  
--- 31495,31501 ----
  @end menu
  
  @node Finalizable tagged types,Composite types,,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions finalizable-tagged-types}@anchor{45e}
  @subsubsection Finalizable tagged types
  
  
*************** dispatching whenever it makes sense, i.e
*** 31406,31412 ****
  class-wide type and the class includes at least one finalizable tagged type.
  
  @node Composite types,Interoperability with controlled types,Finalizable tagged types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions composite-types}@anchor{45e}
  @subsubsection Composite types
  
  
--- 31505,31511 ----
  class-wide type and the class includes at least one finalizable tagged type.
  
  @node Composite types,Interoperability with controlled types,Finalizable tagged types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions composite-types}@anchor{45f}
  @subsubsection Composite types
  
  
*************** in order to call the primitives of their
*** 31416,31422 ****
  the same as for controlled components of composite types.
  
  @node Interoperability with controlled types,,Composite types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions interoperability-with-controlled-types}@anchor{45f}
  @subsubsection Interoperability with controlled types
  
  
--- 31515,31521 ----
  the same as for controlled components of composite types.
  
  @node Interoperability with controlled types,,Composite types,Generalized Finalization
! @anchor{gnat_rm/gnat_language_extensions interoperability-with-controlled-types}@anchor{460}
  @subsubsection Interoperability with controlled types
  
  
*************** versa, but the stricter dynamic semantic
*** 31426,31432 ****
  types, is applied in this case.
  
  @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6b}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{460}
  @section Experimental Language Extensions
  
  
--- 31525,31531 ----
  types, is applied in this case.
  
  @node Experimental Language Extensions,,Curated Extensions,GNAT language extensions
! @anchor{gnat_rm/gnat_language_extensions experimental-language-extensions}@anchor{6b}@anchor{gnat_rm/gnat_language_extensions id2}@anchor{461}
  @section Experimental Language Extensions
  
  
*************** Features activated via @code{-gnatX0} or
*** 31452,31458 ****
  @end menu
  
  @node Conditional when constructs,Implicit With,,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{461}
  @subsection Conditional when constructs
  
  
--- 31551,31557 ----
  @end menu
  
  @node Conditional when constructs,Implicit With,,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions conditional-when-constructs}@anchor{462}
  @subsection Conditional when constructs
  
  
*************** end;
*** 31521,31527 ****
  @end example
  
  @node Implicit With,Storage Model,Conditional when constructs,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions implicit-with}@anchor{462}
  @subsection Implicit With
  
  
--- 31620,31626 ----
  @end example
  
  @node Implicit With,Storage Model,Conditional when constructs,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions implicit-with}@anchor{463}
  @subsection Implicit With
  
  
*************** end;
*** 31538,31544 ****
  @end example
  
  @node Storage Model,Attribute Super,Implicit With,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{463}
  @subsection Storage Model
  
  
--- 31637,31643 ----
  @end example
  
  @node Storage Model,Attribute Super,Implicit With,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions storage-model}@anchor{464}
  @subsection Storage Model
  
  
*************** memory models, in particular to support
*** 31555,31561 ****
  @end menu
  
  @node Aspect Storage_Model_Type,Aspect Designated_Storage_Model,,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-storage-model-type}@anchor{464}
  @subsubsection Aspect Storage_Model_Type
  
  
--- 31654,31660 ----
  @end menu
  
  @node Aspect Storage_Model_Type,Aspect Designated_Storage_Model,,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-storage-model-type}@anchor{465}
  @subsubsection Aspect Storage_Model_Type
  
  
*************** end CUDA_Memory;
*** 31689,31695 ****
  @end example
  
  @node Aspect Designated_Storage_Model,Legacy Storage Pools,Aspect Storage_Model_Type,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-designated-storage-model}@anchor{465}
  @subsubsection Aspect Designated_Storage_Model
  
  
--- 31788,31794 ----
  @end example
  
  @node Aspect Designated_Storage_Model,Legacy Storage Pools,Aspect Storage_Model_Type,Storage Model
! @anchor{gnat_rm/gnat_language_extensions aspect-designated-storage-model}@anchor{466}
  @subsubsection Aspect Designated_Storage_Model
  
  
*************** begin
*** 31767,31773 ****
  @end example
  
  @node Legacy Storage Pools,,Aspect Designated_Storage_Model,Storage Model
! @anchor{gnat_rm/gnat_language_extensions legacy-storage-pools}@anchor{466}
  @subsubsection Legacy Storage Pools
  
  
--- 31866,31872 ----
  @end example
  
  @node Legacy Storage Pools,,Aspect Designated_Storage_Model,Storage Model
! @anchor{gnat_rm/gnat_language_extensions legacy-storage-pools}@anchor{467}
  @subsubsection Legacy Storage Pools
  
  
*************** type Acc is access Integer_Array with St
*** 31818,31824 ****
  can still be accepted as a shortcut for the new syntax.
  
  @node Attribute Super,Simpler Accessibility Model,Storage Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{467}
  @subsection Attribute Super
  
  
--- 31917,31923 ----
  can still be accepted as a shortcut for the new syntax.
  
  @node Attribute Super,Simpler Accessibility Model,Storage Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions attribute-super}@anchor{468}
  @subsection Attribute Super
  
  
*************** end;
*** 31853,31859 ****
  @end example
  
  @node Simpler Accessibility Model,Case pattern matching,Attribute Super,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{468}
  @subsection Simpler Accessibility Model
  
  
--- 31952,31958 ----
  @end example
  
  @node Simpler Accessibility Model,Case pattern matching,Attribute Super,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions simpler-accessibility-model}@anchor{469}
  @subsection Simpler Accessibility Model
  
  
*************** All of the refined rules are compatible
*** 31884,31890 ****
  @end menu
  
  @node Stand-alone objects,Subprogram parameters,,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions stand-alone-objects}@anchor{469}
  @subsubsection Stand-alone objects
  
  
--- 31983,31989 ----
  @end menu
  
  @node Stand-alone objects,Subprogram parameters,,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions stand-alone-objects}@anchor{46a}
  @subsubsection Stand-alone objects
  
  
*************** of the RM 4.6 rule “The accessibility
*** 31932,31938 ****
  statically deeper than that of the target type …”.
  
  @node Subprogram parameters,Function results,Stand-alone objects,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions subprogram-parameters}@anchor{46a}
  @subsubsection Subprogram parameters
  
  
--- 32031,32037 ----
  statically deeper than that of the target type …”.
  
  @node Subprogram parameters,Function results,Stand-alone objects,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions subprogram-parameters}@anchor{46b}
  @subsubsection Subprogram parameters
  
  
*************** end;
*** 32025,32031 ****
  @end example
  
  @node Function results,,Subprogram parameters,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions function-results}@anchor{46b}
  @subsubsection Function results
  
  
--- 32124,32130 ----
  @end example
  
  @node Function results,,Subprogram parameters,Simpler Accessibility Model
! @anchor{gnat_rm/gnat_language_extensions function-results}@anchor{46c}
  @subsubsection Function results
  
  
*************** end;
*** 32153,32159 ****
  @end example
  
  @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler Accessibility Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{46c}
  @subsection Case pattern matching
  
  
--- 32252,32258 ----
  @end example
  
  @node Case pattern matching,Mutably Tagged Types with Size’Class Aspect,Simpler Accessibility Model,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions case-pattern-matching}@anchor{46d}
  @subsection Case pattern matching
  
  
*************** message generated in such cases is usual
*** 32283,32289 ****
  case statement with composite selector type”.
  
  @node Mutably Tagged Types with Size’Class Aspect,No_Raise aspect,Case pattern matching,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{46d}
  @subsection Mutably Tagged Types with Size’Class Aspect
  
  
--- 32382,32388 ----
  case statement with composite selector type”.
  
  @node Mutably Tagged Types with Size’Class Aspect,No_Raise aspect,Case pattern matching,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions mutably-tagged-types-with-size-class-aspect}@anchor{46e}
  @subsection Mutably Tagged Types with Size’Class Aspect
  
  
*************** parameter exists (that is, before leavin
*** 32454,32460 ****
  This is analogous to the RM 6.4.1(18) rule about discriminated parameters.
  
  @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Mutably Tagged Types with Size’Class Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions id3}@anchor{46e}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{45c}
  @subsection No_Raise aspect
  
  
--- 32553,32559 ----
  This is analogous to the RM 6.4.1(18) rule about discriminated parameters.
  
  @node No_Raise aspect,Inference of Dependent Types in Generic Instantiations,Mutably Tagged Types with Size’Class Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions id3}@anchor{46f}@anchor{gnat_rm/gnat_language_extensions no-raise-aspect}@anchor{45d}
  @subsection No_Raise aspect
  
  
*************** be raised during the execution of the su
*** 32464,32470 ****
  this execution and @code{Program_Error} is propagated to the caller.
  
  @node Inference of Dependent Types in Generic Instantiations,External_Initialization Aspect,No_Raise aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations}@anchor{46f}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
--- 32563,32569 ----
  this execution and @code{Program_Error} is propagated to the caller.
  
  @node Inference of Dependent Types in Generic Instantiations,External_Initialization Aspect,No_Raise aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions inference-of-dependent-types-in-generic-instantiations}@anchor{470}
  @subsection Inference of Dependent Types in Generic Instantiations
  
  
*************** package Int_Array_Operations is new Arra
*** 32541,32547 ****
  @end example
  
  @node External_Initialization Aspect,Finally construct,Inference of Dependent Types in Generic Instantiations,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions external-initialization-aspect}@anchor{470}
  @subsection External_Initialization Aspect
  
  
--- 32640,32646 ----
  @end example
  
  @node External_Initialization Aspect,Finally construct,Inference of Dependent Types in Generic Instantiations,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions external-initialization-aspect}@anchor{471}
  @subsection External_Initialization Aspect
  
  
*************** The maximum size of loaded files is limi
*** 32582,32588 ****
  @end cartouche
  
  @node Finally construct,Continue statement,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{471}
  @subsection Finally construct
  
  
--- 32681,32687 ----
  @end cartouche
  
  @node Finally construct,Continue statement,External_Initialization Aspect,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions finally-construct}@anchor{472}
  @subsection Finally construct
  
  
*************** This feature is similar to the one with
*** 32599,32605 ****
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{472}
  @subsubsection Syntax
  
  
--- 32698,32704 ----
  @end menu
  
  @node Syntax<2>,Legality Rules<2>,,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id4}@anchor{473}
  @subsubsection Syntax
  
  
*************** handled_sequence_of_statements ::=
*** 32614,32620 ****
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{473}
  @subsubsection Legality Rules
  
  
--- 32713,32719 ----
  @end example
  
  @node Legality Rules<2>,Dynamic Semantics<2>,Syntax<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id5}@anchor{474}
  @subsubsection Legality Rules
  
  
*************** to be transferred outside the finally pa
*** 32624,32630 ****
  Goto & exit where the target is outside of the finally’s @code{sequence_of_statements} are forbidden
  
  @node Dynamic Semantics<2>,,Legality Rules<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id6}@anchor{474}
  @subsubsection Dynamic Semantics
  
  
--- 32723,32729 ----
  Goto & exit where the target is outside of the finally’s @code{sequence_of_statements} are forbidden
  
  @node Dynamic Semantics<2>,,Legality Rules<2>,Finally construct
! @anchor{gnat_rm/gnat_language_extensions id6}@anchor{475}
  @subsubsection Dynamic Semantics
  
  
*************** execution, that is the finally block mus
*** 32639,32645 ****
  aborted, or if the control is transferred out of the block.
  
  @node Continue statement,Destructors,Finally construct,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions continue-statement}@anchor{475}
  @subsection Continue statement
  
  
--- 32738,32744 ----
  aborted, or if the control is transferred out of the block.
  
  @node Continue statement,Destructors,Finally construct,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions continue-statement}@anchor{476}
  @subsection Continue statement
  
  
*************** Note that @code{continue} is a keyword b
*** 32657,32663 ****
  configuration that does not exist in standard Ada.
  
  @node Destructors,Structural Generic Instantiation,Continue statement,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions destructors}@anchor{476}
  @subsection Destructors
  
  
--- 32756,32762 ----
  configuration that does not exist in standard Ada.
  
  @node Destructors,Structural Generic Instantiation,Continue statement,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions destructors}@anchor{477}
  @subsection Destructors
  
  
*************** imposing that rule on outside types that
*** 32727,32733 ****
  type.
  
  @node Structural Generic Instantiation,,Destructors,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions structural-generic-instantiation}@anchor{477}
  @subsection Structural Generic Instantiation
  
  
--- 32826,32832 ----
  type.
  
  @node Structural Generic Instantiation,,Destructors,Experimental Language Extensions
! @anchor{gnat_rm/gnat_language_extensions structural-generic-instantiation}@anchor{478}
  @subsection Structural Generic Instantiation
  
  
*************** where a name is accepted by the language
*** 32753,32759 ****
  @end menu
  
  @node Syntax<3>,Legality Rules<3>,,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id7}@anchor{478}
  @subsubsection Syntax
  
  
--- 32852,32858 ----
  @end menu
  
  @node Syntax<3>,Legality Rules<3>,,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id7}@anchor{479}
  @subsubsection Syntax
  
  
*************** structural_generic_instance_name ::= nam
*** 32765,32771 ****
  @end example
  
  @node Legality Rules<3>,Static Semantics,Syntax<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id8}@anchor{479}
  @subsubsection Legality Rules
  
  
--- 32864,32870 ----
  @end example
  
  @node Legality Rules<3>,Static Semantics,Syntax<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions id8}@anchor{47a}
  @subsubsection Legality Rules
  
  
*************** unit if the structural instance is also
*** 32784,32790 ****
  dependence on the former.
  
  @node Static Semantics,,Legality Rules<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions static-semantics}@anchor{47a}
  @subsubsection Static Semantics
  
  
--- 32883,32889 ----
  dependence on the former.
  
  @node Static Semantics,,Legality Rules<3>,Structural Generic Instantiation
! @anchor{gnat_rm/gnat_language_extensions static-semantics}@anchor{47b}
  @subsubsection Static Semantics
  
  
*************** end;
*** 32896,32902 ****
  @end example
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{47b}@anchor{gnat_rm/security_hardening_features id1}@anchor{47c}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
--- 32995,33001 ----
  @end example
  
  @node Security Hardening Features,Obsolescent Features,GNAT language extensions,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{47c}@anchor{gnat_rm/security_hardening_features id1}@anchor{47d}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
*************** These features are supported only by the
*** 32920,32926 ****
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{47d}
  @section Register Scrubbing
  
  
--- 33019,33025 ----
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{47e}
  @section Register Scrubbing
  
  
*************** programming languages, see @cite{Using t
*** 32956,32962 ****
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{47e}
  @section Stack Scrubbing
  
  
--- 33055,33061 ----
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{47f}
  @section Stack Scrubbing
  
  
*************** Bar_Callable_Ptr.
*** 33100,33106 ****
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{47f}
  @section Hardened Conditionals
  
  
--- 33199,33205 ----
  @c Hardened Conditionals:
  
  @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{480}
  @section Hardened Conditionals
  
  
*************** be used with other programming languages
*** 33190,33196 ****
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{480}
  @section Hardened Booleans
  
  
--- 33289,33295 ----
  @c Hardened Booleans:
  
  @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{481}
  @section Hardened Booleans
  
  
*************** and more details on that attribute, see
*** 33251,33257 ****
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{481}
  @section Control Flow Redundancy
  
  
--- 33350,33356 ----
  @c Control Flow Redundancy:
  
  @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{482}
  @section Control Flow Redundancy
  
  
*************** see @cite{Using the GNU Compiler Collect
*** 33419,33425 ****
  can be used with other programming languages supported by GCC.
  
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{482}@anchor{gnat_rm/obsolescent_features id1}@anchor{483}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
--- 33518,33524 ----
  can be used with other programming languages supported by GCC.
  
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{483}@anchor{gnat_rm/obsolescent_features id1}@anchor{484}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
*************** compatibility purposes.
*** 33438,33444 ****
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{484}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{485}
  @section pragma No_Run_Time
  
  
--- 33537,33543 ----
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{485}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{486}
  @section pragma No_Run_Time
  
  
*************** preferred usage is to use an appropriate
*** 33451,33457 ****
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{486}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{487}
  @section pragma Ravenscar
  
  
--- 33550,33556 ----
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{487}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{488}
  @section pragma Ravenscar
  
  
*************** The pragma @code{Ravenscar} has exactly
*** 33460,33466 ****
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{488}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{489}
  @section pragma Restricted_Run_Time
  
  
--- 33559,33565 ----
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{489}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{48a}
  @section pragma Restricted_Run_Time
  
  
*************** preferred since the Ada 2005 pragma @cod
*** 33470,33476 ****
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{48a}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{48b}
  @section pragma Task_Info
  
  
--- 33569,33575 ----
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{48b}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{48c}
  @section pragma Task_Info
  
  
*************** in the spec of package System.Task_Info
*** 33496,33502 ****
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{48c}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{48d}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
--- 33595,33601 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{48d}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{48e}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
*************** to support the @code{Task_Info} pragma.
*** 33506,33512 ****
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{48e}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{48f}
  @chapter Compatibility and Porting Guide
  
  
--- 33605,33611 ----
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{48f}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{490}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 33528,33534 ****
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{490}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{491}
  @section Writing Portable Fixed-Point Declarations
  
  
--- 33627,33633 ----
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{491}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{492}
  @section Writing Portable Fixed-Point Declarations
  
  
*************** If you follow this scheme you will be gu
*** 33650,33656 ****
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{492}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{493}
  @section Compatibility with Ada 83
  
  
--- 33749,33755 ----
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{493}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{494}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 33678,33684 ****
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{494}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{495}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
--- 33777,33783 ----
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{495}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{496}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** the fix is usually simply to add the @co
*** 33778,33784 ****
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{496}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{497}
  @subsection More deterministic semantics
  
  
--- 33877,33883 ----
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{497}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{498}
  @subsection More deterministic semantics
  
  
*************** which open select branches are executed.
*** 33806,33812 ****
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{498}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{499}
  @subsection Changed semantics
  
  
--- 33905,33911 ----
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{499}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{49a}
  @subsection Changed semantics
  
  
*************** covers only the restricted range.
*** 33848,33854 ****
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{49a}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{49b}
  @subsection Other language compatibility issues
  
  
--- 33947,33953 ----
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{49b}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{49c}
  @subsection Other language compatibility issues
  
  
*************** include @code{pragma Interface} and the
*** 33881,33887 ****
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{49c}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{49d}
  @section Compatibility between Ada 95 and Ada 2005
  
  
--- 33980,33986 ----
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{49d}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{49e}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** can declare a function returning a value
*** 33953,33959 ****
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{49e}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{49f}
  @section Implementation-dependent characteristics
  
  
--- 34052,34058 ----
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{49f}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{4a0}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 33976,33982 ****
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{4a0}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{4a1}
  @subsection Implementation-defined pragmas
  
  
--- 34075,34081 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{4a1}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{4a2}
  @subsection Implementation-defined pragmas
  
  
*************** avoiding compiler rejection of units tha
*** 33998,34004 ****
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{4a2}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{4a3}
  @subsection Implementation-defined attributes
  
  
--- 34097,34103 ----
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{4a3}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{4a4}
  @subsection Implementation-defined attributes
  
  
*************** Ada 83, GNAT supplies the attributes @co
*** 34012,34018 ****
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{4a4}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{4a5}
  @subsection Libraries
  
  
--- 34111,34117 ----
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{4a5}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{4a6}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 34041,34047 ****
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{4a6}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{4a7}
  @subsection Elaboration order
  
  
--- 34140,34146 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{4a7}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{4a8}
  @subsection Elaboration order
  
  
*************** pragmas either globally (as an effect of
*** 34077,34083 ****
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{4a8}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4a9}
  @subsection Target-specific aspects
  
  
--- 34176,34182 ----
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{4a9}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{4aa}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 34090,34099 ****
  Ada 2005, Ada 2012, and Ada 2022) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{4aa,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{4ab}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4ac}
  @section Compatibility with Other Ada Systems
  
  
--- 34189,34198 ----
  Ada 2005, Ada 2012, and Ada 2022) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{4ab,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{4ac}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{4ad}
  @section Compatibility with Other Ada Systems
  
  
*************** far beyond this minimal set, as describe
*** 34136,34142 ****
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{4ad}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4aa}
  @section Representation Clauses
  
  
--- 34235,34241 ----
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{4ae}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{4ab}
  @section Representation Clauses
  
  
*************** with thin pointers.
*** 34229,34235 ****
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{4ae}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4af}
  @section Compatibility with HP Ada 83
  
  
--- 34328,34334 ----
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{4af}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{4b0}
  @section Compatibility with HP Ada 83
  
  
*************** extension of package System.
*** 34259,34265 ****
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4b0}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4b1}
  @chapter GNU Free Documentation License
  
  
--- 34358,34364 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{4b1}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{4b2}
  @chapter GNU Free Documentation License
  
  
diff -Nrcpad gcc-16-20250921/gcc/ada/gnat_ugn.texi gcc-16-20250928/gcc/ada/gnat_ugn.texi
*** gcc-16-20250921/gcc/ada/gnat_ugn.texi	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/ada/gnat_ugn.texi	Sun Sep 28 22:33:02 2025
***************
*** 19,25 ****
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Sep 19, 2025
  
  AdaCore
  
--- 19,25 ----
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Sep 23, 2025
  
  AdaCore
  
*************** don’t specify a value, the symbol is d
*** 4628,4633 ****
--- 4628,4650 ----
  use this switch instead of providing a definition file.
  @end table
  
+ @geindex -e (gnatprep)
+ 
+ 
+ @table @asis
+ 
+ @item @code{-e}
+ 
+ Causes both preprocessor lines and the lines deleted by
+ preprocessing to be replaced by empty comment lines marked
+ with @code{"--!"} (and no other text) in the output source file,
+ preserving line numbers in the output file. This option can
+ be useful as an alternative to @code{-b} and @code{-c}
+ when compilation style switches like @code{-gnatyu} or
+ @code{-gnatyM} are used (to avoid warnings about multiple
+ blank lines or lines too long).
+ @end table
+ 
  @geindex -r (gnatprep)
  
  
*************** Finally, switches similar to those of @c
*** 5023,5029 ****
  Causes both preprocessor lines and the lines deleted by
  preprocessing to be replaced by blank lines, preserving the line number.
  This switch is always implied; however, if specified after @code{-c}
! it cancels the effect of @code{-c}.
  
  @item @code{-c}
  
--- 5040,5046 ----
  Causes both preprocessor lines and the lines deleted by
  preprocessing to be replaced by blank lines, preserving the line number.
  This switch is always implied; however, if specified after @code{-c}
! or @code{-e} it cancels the effect of those switches.
  
  @item @code{-c}
  
*************** literal string, an Ada identifier or any
*** 5041,5046 ****
--- 5058,5069 ----
  symbol declared with this switch replaces a symbol with the same
  name defined in a definition file.
  
+ @item @code{-e}
+ 
+ Causes both preprocessor lines and the lines deleted by
+ preprocessing to be replaced by empty comment lines marked
+ with ‘@cite{–!}’ (and no other text) in the output source file,
+ 
  @item @code{-s}
  
  Causes a sorted list of symbol names and values to be
*************** symbol with the same name either in a de
*** 5088,5101 ****
  switch @code{-D} in the preprocessor data file.
  
  This switch is similar to switch @code{-D} of @code{gnatprep}.
  
! @item @code{-gnateG}
  
  When integrated preprocessing is performed on source file @code{filename.extension},
  create or overwrite @code{filename.extension.prep} to contain
  the result of the preprocessing.
  For example if the source file is @code{foo.adb} then
  the output file is @code{foo.adb.prep}.
  @end table
  
  @node Mixed Language Programming,GNAT and Other Compilation Models,Conditional Compilation,The GNAT Compilation Model
--- 5111,5135 ----
  switch @code{-D} in the preprocessor data file.
  
  This switch is similar to switch @code{-D} of @code{gnatprep}.
+ @end table
  
! @geindex -gnateG (gcc)
! 
! 
! @table @asis
! 
! @item @code{-gnateG[bce]}
  
  When integrated preprocessing is performed on source file @code{filename.extension},
  create or overwrite @code{filename.extension.prep} to contain
  the result of the preprocessing.
  For example if the source file is @code{foo.adb} then
  the output file is @code{foo.adb.prep}.
+ An optional character (b, c, or e) can be appended to indicate that filtered
+ lines are to be replaced by blank lines, comments, or empty comments (see
+ documentation above about @code{-b}, @code{-c}, and @code{-e}).
+ If one of those switches is given in a preprocessor data file, then it
+ will override any option included with @code{-gnateG}.
  @end table
  
  @node Mixed Language Programming,GNAT and Other Compilation Models,Conditional Compilation,The GNAT Compilation Model
*************** information.
*** 9155,9163 ****
  
  @table @asis
  
! @item @code{-gnateG}
  
! Save result of preprocessing in a text file.
  @end table
  
  @geindex -gnateH (gcc)
--- 9189,9201 ----
  
  @table @asis
  
! @item @code{-gnateG[bce]}
  
! Save result of preprocessing in a text file. An optional character (b, c,
! or e) can be appended to indicate that filtered lines are to be replaced by
! blank lines, comment lines that include the filtered line, or empty comment
! lines (”–!”), respectively. The default is to replace filtered lines with
! blank lines.
  @end table
  
  @geindex -gnateH (gcc)
diff -Nrcpad gcc-16-20250921/gcc/ada/gprep.adb gcc-16-20250928/gcc/ada/gprep.adb
*** gcc-16-20250921/gcc/ada/gprep.adb	Sun Sep 21 22:32:34 2025
--- gcc-16-20250928/gcc/ada/gprep.adb	Sun Sep 28 22:33:02 2025
*************** package body GPrep is
*** 735,741 ****
  
        loop
           begin
!             Switch := GNAT.Command_Line.Getopt ("D: a b c C r s T u v");
  
              case Switch is
                 when ASCII.NUL =>
--- 735,741 ----
  
        loop
           begin
!             Switch := GNAT.Command_Line.Getopt ("D: a b c C e r s T u v");
  
              case Switch is
                 when ASCII.NUL =>
*************** package body GPrep is
*** 755,760 ****
--- 755,763 ----
                 when 'c' =>
                    Opt.Comment_Deleted_Lines := True;
  
+                when 'e' =>
+                   Opt.Empty_Comment_Deleted_Lines := True;
+ 
                 when 'C' =>
                    Opt.Replace_In_Comments := True;
  
*************** package body GPrep is
*** 831,836 ****
--- 834,840 ----
        Write_Line ("   -c  Keep preprocessor lines as comments");
        Write_Line ("   -C  Do symbol replacements within comments");
        Write_Line ("   -D  Associate symbol with value");
+       Write_Line ("   -e  Replace preprocessor lines by empty comment lines");
        Write_Line ("   -r  Generate Source_Reference pragma");
        Write_Line ("   -s  Print a sorted list of symbol names and values");
        Write_Line ("   -T  Use LF as line terminators");
diff -Nrcpad gcc-16-20250921/gcc/ada/libgnarl/s-stusta.adb gcc-16-20250928/gcc/ada/libgnarl/s-stusta.adb
*** gcc-16-20250921/gcc/ada/libgnarl/s-stusta.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/libgnarl/s-stusta.adb	Sun Sep 28 22:33:02 2025
*************** package body System.Stack_Usage.Tasking
*** 51,64 ****
     --  Compute the stack usage for a given task and saves it in the precise
     --  slot in System.Stack_Usage.Result_Array;
  
!    procedure Report_Impl (All_Tasks : Boolean; Do_Print : Boolean);
     --  Report the stack usage of either all tasks (All_Tasks = True) or of the
     --  current task (All_Task = False). If Print is True, then results are
!    --  printed on stderr
  
     procedure Convert
!      (TS  : System.Stack_Usage.Task_Result;
!       Res : out Stack_Usage_Result);
     --  Convert an object of type System.Stack_Usage in a Stack_Usage_Result
  
     -------------
--- 51,68 ----
     --  Compute the stack usage for a given task and saves it in the precise
     --  slot in System.Stack_Usage.Result_Array;
  
!    procedure Report_Impl
!      (All_Tasks   : Boolean;
!       Do_Print    : Boolean;
!       Result_Data : out Stack_Usage_Result_Array);
     --  Report the stack usage of either all tasks (All_Tasks = True) or of the
     --  current task (All_Task = False). If Print is True, then results are
!    --  printed on stderr. Otherwise, we fill the referred structure with the
!    --  stack information for later processing. We do this copy to avoid reading
!    --  System.Stack_Usage.Result_Array without locking the runtime.
  
     procedure Convert
!      (TS : System.Stack_Usage.Task_Result; Res : out Stack_Usage_Result);
     --  Convert an object of type System.Stack_Usage in a Stack_Usage_Result
  
     -------------
*************** package body System.Stack_Usage.Tasking
*** 66,73 ****
     -------------
  
     procedure Convert
!      (TS  : System.Stack_Usage.Task_Result;
!       Res : out Stack_Usage_Result) is
     begin
        Res := TS;
     end Convert;
--- 70,76 ----
     -------------
  
     procedure Convert
!      (TS : System.Stack_Usage.Task_Result; Res : out Stack_Usage_Result) is
     begin
        Res := TS;
     end Convert;
*************** package body System.Stack_Usage.Tasking
*** 77,85 ****
     ---------------------
  
     procedure Report_For_Task (Id : System.Tasking.Task_Id) is
     begin
!       System.Stack_Usage.Compute_Result (Id.Common.Analyzer);
!       System.Stack_Usage.Report_Result (Id.Common.Analyzer);
     end Report_For_Task;
  
     -----------------------
--- 80,117 ----
     ---------------------
  
     procedure Report_For_Task (Id : System.Tasking.Task_Id) is
+       use type System.Tasking.Task_Id;
     begin
!       --  Special treatment of the environment task that uses a Stack_Analyzer
!       --  object that is not part of its ATCB.
!       if Id = System.Task_Primitives.Operations.Environment_Task then
! 
!          --  Check whether we are tracking stack usage for the environment task
!          if Compute_Environment_Task then
!             Compute_Result (Environment_Task_Analyzer);
!             Report_Result (Environment_Task_Analyzer);
! 
!          else
!             Put_Line
!               ("Stack usage for environment task needs GNAT_STACK_LIMIT");
!          end if;
! 
!       --  Regular task
! 
!       else
!          declare
!             Name_Length : constant Natural :=
!               Natural'Min (Id.Common.Task_Image_Len, Task_Name_Length);
!          begin
!             --  Skip the task if it hasn't initialized the stack pattern yet
!             if Id.Common.Task_Image (1 .. Name_Length) =
!                Id.Common.Analyzer.Task_Name (1 .. Name_Length)
!             then
!                System.Stack_Usage.Compute_Result (Id.Common.Analyzer);
!                System.Stack_Usage.Report_Result (Id.Common.Analyzer);
!             end if;
!          end;
!       end if;
     end Report_For_Task;
  
     -----------------------
*************** package body System.Stack_Usage.Tasking
*** 104,109 ****
--- 136,144 ----
  
              --  Calculate the task usage for a given task
  
+             --  Skip if the task is terminated because the ATCB can be already
+             --  destroyed.
+ 
              if not System.Tasking.Stages.Terminated (Id) then
                 Report_For_Task (Id);
              end if;
*************** package body System.Stack_Usage.Tasking
*** 133,142 ****
     -- Report_Impl --
     -----------------
  
!    procedure Report_Impl (All_Tasks : Boolean; Do_Print : Boolean) is
     begin
  
!       --  Lock the runtime
  
        System.Task_Primitives.Operations.Lock_RTS;
  
--- 168,180 ----
     -- Report_Impl --
     -----------------
  
!    procedure Report_Impl
!      (All_Tasks   : Boolean;
!       Do_Print    : Boolean;
!       Result_Data : out Stack_Usage_Result_Array) is
     begin
  
!       --  Lock the runtime to compute and display stack usage
  
        System.Task_Primitives.Operations.Lock_RTS;
  
*************** package body System.Stack_Usage.Tasking
*** 148,156 ****
           Compute_Current_Task;
        end if;
  
!       --  Output results
        if Do_Print then
           System.Stack_Usage.Output_Results;
        end if;
  
        --  Unlock the runtime
--- 186,207 ----
           Compute_Current_Task;
        end if;
  
!       --  Output results, either printing it or in the out parameter
! 
        if Do_Print then
           System.Stack_Usage.Output_Results;
+ 
+       else
+          --  Extract data from the snapshot in System.Stack_Usage.Result_Array
+ 
+          pragma Assert
+            (System.Stack_Usage.Result_Array = null or else
+             (System.Stack_Usage.Result_Array'First = Result_Data'First and then
+              System.Stack_Usage.Result_Array'Last = Result_Data'Last));
+ 
+          for J in Result_Data'Range loop
+             Convert (System.Stack_Usage.Result_Array (J), Result_Data (J));
+          end loop;
        end if;
  
        --  Unlock the runtime
*************** package body System.Stack_Usage.Tasking
*** 164,171 ****
     ----------------------
  
     procedure Report_All_Tasks is
     begin
!       Report_Impl (True, True);
     end Report_All_Tasks;
  
     -------------------------
--- 215,223 ----
     ----------------------
  
     procedure Report_All_Tasks is
+       Empty_Result_Array : Stack_Usage_Result_Array (1 .. 0);
     begin
!       Report_Impl (True, True, Empty_Result_Array);
     end Report_All_Tasks;
  
     -------------------------
*************** package body System.Stack_Usage.Tasking
*** 185,197 ****
  
     function Get_All_Tasks_Usage return Stack_Usage_Result_Array is
        Res : Stack_Usage_Result_Array
!         (1 .. System.Stack_Usage.Result_Array'Length);
     begin
!       Report_Impl (True, False);
! 
!       for J in Res'Range loop
!          Convert (System.Stack_Usage.Result_Array (J), Res (J));
!       end loop;
  
        return Res;
     end Get_All_Tasks_Usage;
--- 237,247 ----
  
     function Get_All_Tasks_Usage return Stack_Usage_Result_Array is
        Res : Stack_Usage_Result_Array
!         (1 ..
!            (if System.Stack_Usage.Result_Array = null then 0
!             else System.Stack_Usage.Result_Array'Length));
     begin
!       Report_Impl (True, False, Res);
  
        return Res;
     end Get_All_Tasks_Usage;
*************** package body System.Stack_Usage.Tasking
*** 201,231 ****
     ----------------------------
  
     function Get_Current_Task_Usage return Stack_Usage_Result is
!       Res : Stack_Usage_Result;
!       Original : System.Stack_Usage.Task_Result;
!       Found : Boolean := False;
!    begin
  
!       Report_Impl (False, False);
  
!       --  Look for the task info in System.Stack_Usage.Result_Array;
!       --  the search is based on task name
  
!       for T in System.Stack_Usage.Result_Array'Range loop
!          if System.Stack_Usage.Result_Array (T).Task_Name =
!            System.Tasking.Self.Common.Analyzer.Task_Name
           then
!             Original := System.Stack_Usage.Result_Array (T);
              Found := True;
              exit;
           end if;
        end loop;
  
!       --  Be sure a task has been found
  
!       pragma Assert (Found);
  
-       Convert (Original, Res);
        return Res;
     end Get_Current_Task_Usage;
  
--- 251,320 ----
     ----------------------------
  
     function Get_Current_Task_Usage return Stack_Usage_Result is
!       use type System.Tasking.Task_Id;
  
!       Self_ID     : constant System.Tasking.Task_Id := System.Tasking.Self;
!       Is_Env_Task : constant Boolean :=
!         Self_ID = System.Task_Primitives.Operations.Environment_Task;
  
!       Res_Array : Stack_Usage_Result_Array
!         (1 ..
!            (if System.Stack_Usage.Result_Array = null then 0
!             else System.Stack_Usage.Result_Array'Length));
!       Res       : Stack_Usage_Result;
!       Found     : Boolean := False;
  
!    begin
!       Report_Impl (False, False, Res_Array);
! 
!       --  Look for the task info in the copy of System.Stack_Usage.Result_Array
!       --  (the search is based on task name).
! 
!       for Stack_Usage of Res_Array loop
!          if Stack_Usage.Task_Name = Self_ID.Common.Analyzer.Task_Name or else
!            (Is_Env_Task and then
!             Stack_Usage.Task_Name (1 .. 16) = "ENVIRONMENT TASK")
           then
!             Res := Stack_Usage;
              Found := True;
              exit;
           end if;
        end loop;
  
!       if not Found then
!          --  Not found because the task is not part of those for which we store
!          --  the results. Hence we need to compute now.
  
!          --  Environment task
!          if Is_Env_Task then
!             Res.Task_Name :=
!               "ENVIRONMENT TASK" & (1 .. Task_Name_Length - 16 => ASCII.NUL);
! 
!             if Compute_Environment_Task then
!                Res.Stack_Size := Environment_Task_Analyzer.Stack_Size;
!                Res.Value :=
!                  Stack_Size
!                    (To_Stack_Address
!                       (Environment_Task_Analyzer.Topmost_Touched_Mark),
!                     To_Stack_Address (Environment_Task_Analyzer.Stack_Base));
!             else
!                Res.Stack_Size := 0;
!                Res.Value := 0;
!             end if;
! 
!          --  Other tasks
! 
!          else
!             Res.Task_Name := Self_ID.Common.Analyzer.Task_Name;
!             Res.Stack_Size := Self_ID.Common.Analyzer.Stack_Size;
!             Res.Value :=
!               Stack_Size
!                 (To_Stack_Address
!                    (Self_ID.Common.Analyzer.Topmost_Touched_Mark),
!                  To_Stack_Address (Self_ID.Common.Analyzer.Stack_Base));
!          end if;
!       end if;
  
        return Res;
     end Get_Current_Task_Usage;
  
*************** package body System.Stack_Usage.Tasking
*** 248,258 ****
  
        declare
           T_Name : constant String :=
!                     Obj.Task_Name (Obj.Task_Name'First .. Pos);
        begin
           Put_Line
!            ("| " & T_Name & " | " & Natural'Image (Obj.Stack_Size) &
!             Natural'Image (Obj.Value));
        end;
     end Print;
  
--- 337,350 ----
  
        declare
           T_Name : constant String :=
!            Obj.Task_Name (Obj.Task_Name'First .. Pos);
        begin
+          --  Notify when we don't know stack usage
           Put_Line
!            ("| " & T_Name & "|" &
!             (if Obj.Stack_Size = 0 then " NA | NA"
!              else Natural'Image (Obj.Stack_Size) & " |" &
!                   Natural'Image (Obj.Value)));
        end;
     end Print;
  
diff -Nrcpad gcc-16-20250921/gcc/ada/libgnat/s-stausa.adb gcc-16-20250928/gcc/ada/libgnat/s-stausa.adb
*** gcc-16-20250921/gcc/ada/libgnat/s-stausa.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/libgnat/s-stausa.adb	Sun Sep 28 22:33:03 2025
*************** package body System.Stack_Usage is
*** 99,108 ****
     --  Now the implementation of the services offered by this unit, on top of
     --  the Stack_Slots abstraction above.
  
!    Index_Str       : constant String  := "Index";
!    Task_Name_Str   : constant String  := "Task Name";
!    Stack_Size_Str  : constant String  := "Stack Size";
!    Actual_Size_Str : constant String  := "Stack usage";
  
     procedure Output_Result
       (Result_Id          : Natural;
--- 99,108 ----
     --  Now the implementation of the services offered by this unit, on top of
     --  the Stack_Slots abstraction above.
  
!    Index_Str       : constant String := "Index";
!    Task_Name_Str   : constant String := "Task Name";
!    Stack_Size_Str  : constant String := "Stack Size";
!    Actual_Size_Str : constant String := "Stack usage";
  
     procedure Output_Result
       (Result_Id          : Natural;
*************** package body System.Stack_Usage is
*** 128,136 ****
        Result_Array := new Result_Array_Type (1 .. Buffer_Size);
        Result_Array.all :=
          [others =>
!            (Task_Name   => [others => ASCII.NUL],
!             Value       => 0,
!             Stack_Size  => 0)];
  
        --  Set the Is_Enabled flag to true, so that the task wrapper knows that
        --  it has to handle dynamic stack analysis
--- 128,134 ----
        Result_Array := new Result_Array_Type (1 .. Buffer_Size);
        Result_Array.all :=
          [others =>
!            (Task_Name => [others => ASCII.NUL], Value => 0, Stack_Size => 0)];
  
        --  Set the Is_Enabled flag to true, so that the task wrapper knows that
        --  it has to handle dynamic stack analysis
*************** package body System.Stack_Usage is
*** 151,161 ****
           begin
              My_Stack_Size := System.CRTL.atoi (Stack_Size_Chars) * 1024;
  
              Initialize_Analyzer
                (Environment_Task_Analyzer,
                 "ENVIRONMENT TASK",
                 My_Stack_Size,
!                0,
                 My_Stack_Size);
  
              Fill_Stack (Environment_Task_Analyzer);
--- 149,161 ----
           begin
              My_Stack_Size := System.CRTL.atoi (Stack_Size_Chars) * 1024;
  
+             --  Approximate Stack_Base with the topmost stack address that is
+             --  known here.
              Initialize_Analyzer
                (Environment_Task_Analyzer,
                 "ENVIRONMENT TASK",
                 My_Stack_Size,
!                Stack_Size_Chars'Address,
                 My_Stack_Size);
  
              Fill_Stack (Environment_Task_Analyzer);
*************** package body System.Stack_Usage is
*** 207,214 ****
              --  Reduce pattern size to prevent local frame overwrite
  
              Analyzer.Pattern_Size :=
!               Integer (To_Stack_Address (Current_Stack_Level'Address) - Guard
!                          - To_Stack_Address (Analyzer.Pattern_Limit));
           end if;
  
           Analyzer.Pattern_Overlay_Address := Analyzer.Pattern_Limit;
--- 207,214 ----
              --  Reduce pattern size to prevent local frame overwrite
  
              Analyzer.Pattern_Size :=
!               Integer (To_Stack_Address (Current_Stack_Level'Address) - Guard -
!                        To_Stack_Address (Analyzer.Pattern_Limit));
           end if;
  
           Analyzer.Pattern_Overlay_Address := Analyzer.Pattern_Limit;
*************** package body System.Stack_Usage is
*** 267,288 ****
     -------------------------
  
     procedure Initialize_Analyzer
!      (Analyzer         : in out Stack_Analyzer;
!       Task_Name        : String;
!       Stack_Size       : Natural;
!       Stack_Base       : System.Address;
!       Pattern_Size     : Natural;
!       Pattern          : Interfaces.Unsigned_32 := 16#DEAD_BEEF#)
!    is
     begin
        --  Initialize the analyzer fields
  
!       Analyzer.Stack_Base    := Stack_Base;
!       Analyzer.Stack_Size    := Stack_Size;
!       Analyzer.Pattern_Size  := Pattern_Size;
!       Analyzer.Pattern       := Pattern;
!       Analyzer.Result_Id     := Next_Id;
!       Analyzer.Task_Name     := [others => ' '];
  
        --  Compute the task name, and truncate if bigger than Task_Name_Length
  
--- 267,287 ----
     -------------------------
  
     procedure Initialize_Analyzer
!      (Analyzer     : in out Stack_Analyzer;
!       Task_Name    : String;
!       Stack_Size   : Natural;
!       Stack_Base   : System.Address;
!       Pattern_Size : Natural;
!       Pattern      : Interfaces.Unsigned_32 := 16#DEAD_BEEF#) is
     begin
        --  Initialize the analyzer fields
  
!       Analyzer.Stack_Base   := Stack_Base;
!       Analyzer.Stack_Size   := Stack_Size;
!       Analyzer.Pattern_Size := Pattern_Size;
!       Analyzer.Pattern      := Pattern;
!       Analyzer.Result_Id    := Next_Id;
!       Analyzer.Task_Name    := [others => ' '];
  
        --  Compute the task name, and truncate if bigger than Task_Name_Length
  
*************** package body System.Stack_Usage is
*** 290,299 ****
           Analyzer.Task_Name (1 .. Task_Name'Length) := Task_Name;
        else
           Analyzer.Task_Name :=
!            Task_Name (Task_Name'First ..
!                       Task_Name'First + Task_Name_Length - 1);
        end if;
  
        Next_Id := Next_Id + 1;
     end Initialize_Analyzer;
  
--- 289,300 ----
           Analyzer.Task_Name (1 .. Task_Name'Length) := Task_Name;
        else
           Analyzer.Task_Name :=
!            Task_Name
!              (Task_Name'First .. Task_Name'First + Task_Name_Length - 1);
        end if;
  
+       --  Next_Id does not need any explicit protection against race conditions
+       --  because Initialize_Analyzer is called holding the runtime lock.
        Next_Id := Next_Id + 1;
     end Initialize_Analyzer;
  
*************** package body System.Stack_Usage is
*** 302,310 ****
     ----------------
  
     function Stack_Size
!      (SP_Low  : Stack_Address;
!       SP_High : Stack_Address) return Natural
!    is
     begin
        if SP_Low > SP_High then
           return Natural (SP_Low - SP_High);
--- 303,309 ----
     ----------------
  
     function Stack_Size
!      (SP_Low : Stack_Address; SP_High : Stack_Address) return Natural is
     begin
        if SP_Low > SP_High then
           return Natural (SP_Low - SP_High);
*************** package body System.Stack_Usage is
*** 379,394 ****
        Stack_Size_Str : constant String := Natural'Image (Result.Stack_Size);
        Actual_Use_Str : constant String := Natural'Image (Result.Value);
  
!       Result_Id_Blanks  : constant
!         String (1 .. Index_Str'Length - Result_Id_Str'Length)    :=
            (others => ' ');
  
!       Stack_Size_Blanks : constant
!         String (1 .. Max_Stack_Size_Len - Stack_Size_Str'Length) :=
            (others => ' ');
  
!       Actual_Use_Blanks : constant
!         String (1 .. Max_Actual_Use_Len - Actual_Use_Str'Length) :=
            (others => ' ');
  
     begin
--- 378,393 ----
        Stack_Size_Str : constant String := Natural'Image (Result.Stack_Size);
        Actual_Use_Str : constant String := Natural'Image (Result.Value);
  
!       Result_Id_Blanks :
!         constant String (1 .. Index_Str'Length - Result_Id_Str'Length) :=
            (others => ' ');
  
!       Stack_Size_Blanks :
!         constant String (1 .. Max_Stack_Size_Len - Stack_Size_Str'Length) :=
            (others => ' ');
  
!       Actual_Use_Blanks :
!         constant String (1 .. Max_Actual_Use_Len - Actual_Use_Str'Length) :=
            (others => ' ');
  
     begin
*************** package body System.Stack_Usage is
*** 412,421 ****
        Max_Stack_Usage                        : Natural := 0;
        Max_Stack_Size_Len, Max_Actual_Use_Len : Natural := 0;
  
!       Task_Name_Blanks : constant
!                            String
!                              (1 .. Task_Name_Length - Task_Name_Str'Length) :=
!                                (others => ' ');
  
     begin
        Set_Output (Standard_Error);
--- 411,419 ----
        Max_Stack_Usage                        : Natural := 0;
        Max_Stack_Size_Len, Max_Actual_Use_Len : Natural := 0;
  
!       Task_Name_Blanks :
!         constant String (1 .. Task_Name_Length - Task_Name_Str'Length) :=
!           (others => ' ');
  
     begin
        Set_Output (Standard_Error);
*************** package body System.Stack_Usage is
*** 431,436 ****
--- 429,435 ----
           --  in order to do correct column alignment.
  
           for J in Result_Array'Range loop
+             --  Slots at Next_Id or higher haven't been allocated to tasks
              exit when J >= Next_Id;
  
              if Result_Array (J).Value > Max_Stack_Usage then
*************** package body System.Stack_Usage is
*** 450,464 ****
           --  labels if needed.
  
           declare
!             Stack_Size_Blanks  : constant
!                                    String (1 .. Max_Stack_Size_Len -
!                                                   Stack_Size_Str'Length) :=
!                                       [others => ' '];
  
!             Stack_Usage_Blanks : constant
!                                    String (1 .. Max_Actual_Use_Len -
!                                                   Actual_Size_Str'Length) :=
!                                       [others => ' '];
  
           begin
              if Stack_Size_Str'Length > Max_Stack_Size_Len then
--- 449,463 ----
           --  labels if needed.
  
           declare
!             Stack_Size_Blanks :
!               constant String
!                          (1 .. Max_Stack_Size_Len - Stack_Size_Str'Length) :=
!                 [others => ' '];
  
!             Stack_Usage_Blanks :
!               constant String
!                          (1 .. Max_Actual_Use_Len - Actual_Size_Str'Length) :=
!                 [others => ' '];
  
           begin
              if Stack_Size_Str'Length > Max_Stack_Size_Len then
*************** package body System.Stack_Usage is
*** 480,485 ****
--- 479,485 ----
           --  Now display the individual results
  
           for J in Result_Array'Range loop
+             --  Slots at Next_Id or higher haven't been allocated to tasks
              exit when J >= Next_Id;
              Output_Result
                (J, Result_Array (J), Max_Stack_Size_Len, Max_Actual_Use_Len);
*************** package body System.Stack_Usage is
*** 489,496 ****
  
        else
           Put
!            (Index_Str & " | " & Task_Name_Str & Task_Name_Blanks & " | "
!             & Stack_Size_Str & " | " & Actual_Size_Str);
           New_Line;
        end if;
     end Output_Results;
--- 489,502 ----
  
        else
           Put
!            (Index_Str
!             & " | "
!             & Task_Name_Str
!             & Task_Name_Blanks
!             & " | "
!             & Stack_Size_Str
!             & " | "
!             & Actual_Size_Str);
           New_Line;
        end if;
     end Output_Results;
*************** package body System.Stack_Usage is
*** 500,508 ****
     -------------------
  
     procedure Report_Result (Analyzer : Stack_Analyzer) is
!       Result : Task_Result := (Task_Name  => Analyzer.Task_Name,
!                                Stack_Size => Analyzer.Stack_Size,
!                                Value      => 0);
     begin
        if Analyzer.Pattern_Size = 0 then
  
--- 506,515 ----
     -------------------
  
     procedure Report_Result (Analyzer : Stack_Analyzer) is
!       Result : Task_Result :=
!         (Task_Name  => Analyzer.Task_Name,
!          Stack_Size => Analyzer.Stack_Size,
!          Value      => 0);
     begin
        if Analyzer.Pattern_Size = 0 then
  
*************** package body System.Stack_Usage is
*** 513,520 ****
  
        else
           Result.Value :=
!            Stack_Size (To_Stack_Address (Analyzer.Topmost_Touched_Mark),
!                        To_Stack_Address (Analyzer.Stack_Base));
        end if;
  
        if Analyzer.Result_Id in Result_Array'Range then
--- 520,528 ----
  
        else
           Result.Value :=
!            Stack_Size
!              (To_Stack_Address (Analyzer.Topmost_Touched_Mark),
!               To_Stack_Address (Analyzer.Stack_Base));
        end if;
  
        if Analyzer.Result_Id in Result_Array'Range then
*************** package body System.Stack_Usage is
*** 528,536 ****
  
           declare
              Result_Str_Len : constant Natural :=
!                                Natural'Image (Result.Value)'Length;
              Size_Str_Len   : constant Natural :=
!                                Natural'Image (Analyzer.Stack_Size)'Length;
  
              Max_Stack_Size_Len : Natural;
              Max_Actual_Use_Len : Natural;
--- 536,544 ----
  
           declare
              Result_Str_Len : constant Natural :=
!               Natural'Image (Result.Value)'Length;
              Size_Str_Len   : constant Natural :=
!               Natural'Image (Analyzer.Stack_Size)'Length;
  
              Max_Stack_Size_Len : Natural;
              Max_Actual_Use_Len : Natural;
diff -Nrcpad gcc-16-20250921/gcc/ada/libgnat/s-stausa.ads gcc-16-20250928/gcc/ada/libgnat/s-stausa.ads
*** gcc-16-20250921/gcc/ada/libgnat/s-stausa.ads	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/libgnat/s-stausa.ads	Sun Sep 28 22:33:03 2025
*************** package System.Stack_Usage is
*** 41,49 ****
     subtype Stack_Address is SSE.Integer_Address;
     --  Address on the stack
  
!    function To_Stack_Address
!      (Value : System.Address) return Stack_Address
!       renames System.Storage_Elements.To_Integer;
  
     Task_Name_Length : constant := 32;
     --  The maximum length of task name displayed.
--- 41,48 ----
     subtype Stack_Address is SSE.Integer_Address;
     --  Address on the stack
  
!    function To_Stack_Address (Value : System.Address) return Stack_Address
!    renames System.Storage_Elements.To_Integer;
  
     Task_Name_Length : constant := 32;
     --  The maximum length of task name displayed.
*************** package System.Stack_Usage is
*** 85,91 ****
  
     --     Bottom_Of_Stack : aliased Integer;
     --     --  Bottom_Of_Stack'Address will be used as an approximation of
!    --     --  the bottom of stack. A good practise is to avoid allocating
     --     --  other local variables on this stack, as it would degrade
     --     --  the quality of this approximation.
  
--- 84,90 ----
  
     --     Bottom_Of_Stack : aliased Integer;
     --     --  Bottom_Of_Stack'Address will be used as an approximation of
!    --     --  the bottom of stack. A good practice is to avoid allocating
     --     --  other local variables on this stack, as it would degrade
     --     --  the quality of this approximation.
  
*************** package System.Stack_Usage is
*** 227,238 ****
     --
  
     procedure Initialize_Analyzer
!      (Analyzer         : in out Stack_Analyzer;
!       Task_Name        : String;
!       Stack_Size       : Natural;
!       Stack_Base       : System.Address;
!       Pattern_Size     : Natural;
!       Pattern          : Interfaces.Unsigned_32 := 16#DEAD_BEEF#);
     --  Should be called before any use of a Stack_Analyzer, to initialize it.
     --  Max_Pattern_Size is the size of the pattern zone, might be smaller than
     --  the full stack size Stack_Size in order to take into account e.g. the
--- 226,237 ----
     --
  
     procedure Initialize_Analyzer
!      (Analyzer     : in out Stack_Analyzer;
!       Task_Name    : String;
!       Stack_Size   : Natural;
!       Stack_Base   : System.Address;
!       Pattern_Size : Natural;
!       Pattern      : Interfaces.Unsigned_32 := 16#DEAD_BEEF#);
     --  Should be called before any use of a Stack_Analyzer, to initialize it.
     --  Max_Pattern_Size is the size of the pattern zone, might be smaller than
     --  the full stack size Stack_Size in order to take into account e.g. the
*************** package System.Stack_Usage is
*** 244,265 ****
     --  When this flag is true, then stack analysis is enabled
  
     procedure Compute_Result (Analyzer : in out Stack_Analyzer);
!    --  Read the pattern zone and deduce the stack usage. It should be called
!    --  from the same frame as Fill_Stack. If Analyzer.Probe is not null, an
!    --  array of Unsigned_32 with Analyzer.Probe elements is allocated on
!    --  Compute_Result's stack frame. Probe can be used to detect  the error:
!    --  "instrumentation threshold at reading". See above. After the call
     --  to this procedure, the memory will look like:
     --
     --                                                             Stack growing
     --  ----------------------------------------------------------------------->
!    --  |<---------------------->|<-------------->|<--------->|<--------->|
!    --  |  Stack frames          | Array of       | used      |  Memory   |
!    --  |  to Compute_Result     | Analyzer.Probe | during    |   filled  |
!    --  |                        | elements       |  the      |    with   |
!    --  |                        |                | execution |  pattern  |
!    --  |                                                     |           |
!    --  |<---------------------------------------------------->           |
     --                  Stack used                                        ^
     --                                                           Pattern_Limit
  
--- 243,258 ----
     --  When this flag is true, then stack analysis is enabled
  
     procedure Compute_Result (Analyzer : in out Stack_Analyzer);
!    --  Read the pattern zone and deduce the stack usage. After the call
     --  to this procedure, the memory will look like:
     --
     --                                                             Stack growing
     --  ----------------------------------------------------------------------->
!    --  |<---------------------->|<-------------------->|<--------------->|
!    --  |  Stack frame           | Used during the      | Memory filled   |
!    --  |  to Compute_Result     | execution            | with pattern    |
!    --  |                        |                      |                 |
!    --  |<--------------------------------------------->|                 |
     --                  Stack used                                        ^
     --                                                           Pattern_Limit
  
*************** package System.Stack_Usage is
*** 277,284 ****
  
  private
  
!    package Unsigned_32_Addr is
!      new System.Address_To_Access_Conversions (Interfaces.Unsigned_32);
  
     subtype Pattern_Type is Interfaces.Unsigned_32;
     Bytes_Per_Pattern : constant := Pattern_Type'Object_Size / Storage_Unit;
--- 270,277 ----
  
  private
  
!    package Unsigned_32_Addr is new
!      System.Address_To_Access_Conversions (Interfaces.Unsigned_32);
  
     subtype Pattern_Type is Interfaces.Unsigned_32;
     Bytes_Per_Pattern : constant := Pattern_Type'Object_Size / Storage_Unit;
*************** private
*** 320,326 ****
  
     Environment_Task_Analyzer : Stack_Analyzer;
  
!    Compute_Environment_Task  : Boolean;
  
     type Result_Array_Ptr is access all Result_Array_Type;
  
--- 313,319 ----
  
     Environment_Task_Analyzer : Stack_Analyzer;
  
!    Compute_Environment_Task : Boolean;
  
     type Result_Array_Ptr is access all Result_Array_Type;
  
*************** private
*** 332,339 ****
     --  Id of the next stack analyzer
  
     function Stack_Size
!      (SP_Low  : Stack_Address;
!       SP_High : Stack_Address) return Natural;
     pragma Inline (Stack_Size);
     --  Return the size of a portion of stack delimited by SP_High and SP_Low
     --  (), i.e. the difference between SP_High and SP_Low. The storage element
--- 325,331 ----
     --  Id of the next stack analyzer
  
     function Stack_Size
!      (SP_Low : Stack_Address; SP_High : Stack_Address) return Natural;
     pragma Inline (Stack_Size);
     --  Return the size of a portion of stack delimited by SP_High and SP_Low
     --  (), i.e. the difference between SP_High and SP_Low. The storage element
diff -Nrcpad gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
*** gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads	Sun Sep 28 22:33:03 2025
*************** package System is
*** 120,128 ****
  
  private
  
-    pragma Linker_Options ("--specs=vxworks7-rtp-base-link.spec");
-    --  Define the symbol wrs_rtp_base
- 
     type Address is mod Memory_Size;
     for Address'Size use Standard'Address_Size;
  
--- 120,125 ----
diff -Nrcpad gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
*** gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads	Sun Sep 28 22:33:03 2025
*************** package System is
*** 120,128 ****
  
  private
  
-    pragma Linker_Options ("--specs=vxworks7-rtp-base-link.spec");
-    --  Define the symbol wrs_rtp_base
- 
     type Address is mod Memory_Size;
     for Address'Size use Standard'Address_Size;
  
--- 120,125 ----
diff -Nrcpad gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
*** gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads	Sun Sep 28 22:33:03 2025
*************** package System is
*** 120,128 ****
  
  private
  
-    pragma Linker_Options ("--specs=vxworks7-ppc64-rtp-base-link.spec");
-    --  Define the symbol wrs_rtp_base
- 
     type Address is mod Memory_Size;
     for Address'Size use Standard'Address_Size;
  
--- 120,125 ----
diff -Nrcpad gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
*** gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads	Sun Sep 28 22:33:03 2025
*************** package System is
*** 118,126 ****
  
  private
  
-    pragma Linker_Options ("--specs=vxworks7-x86-rtp-base-link.spec");
-    --  Define the symbol wrs_rtp_base
- 
     type Address is mod Memory_Size;
     for Address'Size use Standard'Address_Size;
  
--- 118,123 ----
diff -Nrcpad gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
*** gcc-16-20250921/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads	Sun Sep 28 22:33:03 2025
*************** package System is
*** 118,126 ****
  
  private
  
-    pragma Linker_Options ("--specs=vxworks7-x86_64-rtp-base-link.spec");
-    --  Define the symbol wrs_rtp_base
- 
     type Address is mod Memory_Size;
     for Address'Size use Standard'Address_Size;
  
--- 118,123 ----
diff -Nrcpad gcc-16-20250921/gcc/ada/opt.ads gcc-16-20250928/gcc/ada/opt.ads
*** gcc-16-20250921/gcc/ada/opt.ads	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/opt.ads	Sun Sep 28 22:33:03 2025
*************** package Opt is
*** 338,344 ****
     --  True if echoed commands to be written to stdout instead of stderr
  
     Comment_Deleted_Lines : Boolean := False;
!    --  GNATPREP
     --  True if source lines removed by the preprocessor should be commented
     --  in the output file.
  
--- 338,344 ----
     --  True if echoed commands to be written to stdout instead of stderr
  
     Comment_Deleted_Lines : Boolean := False;
!    --  GNAT, GNATPREP
     --  True if source lines removed by the preprocessor should be commented
     --  in the output file.
  
*************** package Opt is
*** 509,514 ****
--- 509,519 ----
     --  GNATBIND
     --  Set to True to output chosen elaboration order
  
+    Empty_Comment_Deleted_Lines : Boolean := False;
+    --  GNAT, GNATPREP
+    --  True if source lines removed by the preprocessor are to be replaced
+    --  by empty comment lines ("--!" and no other text) in the output file.
+ 
     Enable_128bit_Types : Boolean := False;
     --  GNAT
     --  Set to True to enable the support for 128-bit types in the compiler.
diff -Nrcpad gcc-16-20250921/gcc/ada/prep.adb gcc-16-20250928/gcc/ada/prep.adb
*** gcc-16-20250921/gcc/ada/prep.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/prep.adb	Sun Sep 28 22:33:03 2025
*************** package body Prep is
*** 1211,1216 ****
--- 1211,1223 ----
                 end if;
  
                 New_EOL.all;
+ 
+             elsif Empty_Comment_Deleted_Lines then
+                Put_Char ('-');
+                Put_Char ('-');
+                Put_Char ('!');
+ 
+                New_EOL.all;
              end if;
  
           else
diff -Nrcpad gcc-16-20250921/gcc/ada/prepcomp.adb gcc-16-20250928/gcc/ada/prepcomp.adb
*** gcc-16-20250921/gcc/ada/prepcomp.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/prepcomp.adb	Sun Sep 28 22:33:03 2025
*************** package body Prepcomp is
*** 54,82 ****
     pragma Warnings (On);
  
     type Preproc_Data is record
!       Mapping      : Symbol_Table.Instance;
!       File_Name    : File_Name_Type := No_File;
!       Deffile      : String_Id      := No_String;
!       Undef_False  : Boolean        := False;
!       Always_Blank : Boolean        := False;
!       Comments     : Boolean        := False;
!       No_Deletion  : Boolean        := False;
!       List_Symbols : Boolean        := False;
!       Processed    : Boolean        := False;
     end record;
     --  Structure to keep the preprocessing data for a file name or for the
     --  default (when Name_Id = No_Name).
  
     No_Preproc_Data : constant Preproc_Data :=
!      (Mapping      => No_Mapping,
!       File_Name    => No_File,
!       Deffile      => No_String,
!       Undef_False  => False,
!       Always_Blank => False,
!       Comments     => False,
!       No_Deletion  => False,
!       List_Symbols => False,
!       Processed    => False);
  
     Default_Data : Preproc_Data := No_Preproc_Data;
     --  The preprocessing data to be used when no specific preprocessing data
--- 54,84 ----
     pragma Warnings (On);
  
     type Preproc_Data is record
!       Mapping        : Symbol_Table.Instance;
!       File_Name      : File_Name_Type := No_File;
!       Deffile        : String_Id      := No_String;
!       Undef_False    : Boolean        := False;
!       Always_Blank   : Boolean        := False;
!       Comments       : Boolean        := False;
!       Empty_Comments : Boolean        := False;
!       No_Deletion    : Boolean        := False;
!       List_Symbols   : Boolean        := False;
!       Processed      : Boolean        := False;
     end record;
     --  Structure to keep the preprocessing data for a file name or for the
     --  default (when Name_Id = No_Name).
  
     No_Preproc_Data : constant Preproc_Data :=
!      (Mapping        => No_Mapping,
!       File_Name      => No_File,
!       Deffile        => No_String,
!       Undef_False    => False,
!       Always_Blank   => False,
!       Comments       => False,
!       Empty_Comments => False,
!       No_Deletion    => False,
!       List_Symbols   => False,
!       Processed      => False);
  
     Default_Data : Preproc_Data := No_Preproc_Data;
     --  The preprocessing data to be used when no specific preprocessing data
*************** package body Prepcomp is
*** 170,175 ****
--- 172,188 ----
           No_Preprocessing := False;
           Current_Data.Processed := True;
  
+          if Opt.Blank_Deleted_Lines then
+             Current_Data.Always_Blank := True;
+ 
+          elsif Opt.Comment_Deleted_Lines then
+             Current_Data.Comments := True;
+ 
+          elsif Opt.Empty_Comment_Deleted_Lines then
+             Current_Data.Empty_Comments := True;
+ 
+          end if;
+ 
           --  Start with an empty, initialized mapping table; use Prep.Mapping,
           --  because Prep.Index_Of uses Prep.Mapping.
  
*************** package body Prepcomp is
*** 379,384 ****
--- 392,406 ----
                          OK := True;
                       end if;
  
+                   when 'e' =>
+ 
+                      --  Replace removed lines with empty comment lines ("--!")
+ 
+                      if Name_Len = 1 then
+                         Current_Data.Empty_Comments := True;
+                         OK := True;
+                      end if;
+ 
                    when 's' =>
  
                       --  List symbols
*************** package body Prepcomp is
*** 601,612 ****
  
        --  Set the preprocessing flags according to the preprocessing data
  
!       if Current_Data.Comments and not Current_Data.Always_Blank then
!          Comment_Deleted_Lines := True;
!          Blank_Deleted_Lines   := False;
        else
!          Comment_Deleted_Lines := False;
!          Blank_Deleted_Lines   := True;
        end if;
  
        No_Deletion                 := Current_Data.No_Deletion;
--- 623,644 ----
  
        --  Set the preprocessing flags according to the preprocessing data
  
!       if Current_Data.Comments then
!          Comment_Deleted_Lines       := True;
!          Empty_Comment_Deleted_Lines := False;
!          Blank_Deleted_Lines         := False;
! 
!       elsif Current_Data.Always_Blank then
!          Comment_Deleted_Lines       := False;
!          Empty_Comment_Deleted_Lines := False;
!          Blank_Deleted_Lines         := True;
! 
!       --  By default, emit empty comment lines in place of deleted lines
! 
        else
!          Comment_Deleted_Lines       := False;
!          Empty_Comment_Deleted_Lines := True;
!          Blank_Deleted_Lines         := False;
        end if;
  
        No_Deletion                 := Current_Data.No_Deletion;
diff -Nrcpad gcc-16-20250921/gcc/ada/sem_case.adb gcc-16-20250928/gcc/ada/sem_case.adb
*** gcc-16-20250921/gcc/ada/sem_case.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/sem_case.adb	Sun Sep 28 22:33:03 2025
*************** package body Sem_Case is
*** 3890,3895 ****
--- 3890,3896 ----
                 return True;
  
              when N_Empty
+                | N_Allocator
                 | N_Statement_Other_Than_Procedure_Call
                 | N_Procedure_Call_Statement
                 | N_Declaration
diff -Nrcpad gcc-16-20250921/gcc/ada/sem_ch10.adb gcc-16-20250928/gcc/ada/sem_ch10.adb
*** gcc-16-20250921/gcc/ada/sem_ch10.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/sem_ch10.adb	Sun Sep 28 22:33:03 2025
*************** package body Sem_Ch10 is
*** 176,182 ****
     --  use-package clauses to avoid circularities when installing context.
  
     procedure Install_Siblings (U_Name : Entity_Id; N : Node_Id);
!    --  In the compilation of a child unit, a child of any of the  ancestor
     --  units is directly visible if it is visible, because the parent is in
     --  an enclosing scope. Iterate over context to find child units of U_Name
     --  or of some ancestor of it.
--- 176,182 ----
     --  use-package clauses to avoid circularities when installing context.
  
     procedure Install_Siblings (U_Name : Entity_Id; N : Node_Id);
!    --  In the compilation of a child unit, a child of any of the ancestor
     --  units is directly visible if it is visible, because the parent is in
     --  an enclosing scope. Iterate over context to find child units of U_Name
     --  or of some ancestor of it.
*************** package body Sem_Ch10 is
*** 4803,4811 ****
     ----------------------
  
     procedure Install_Siblings (U_Name : Entity_Id; N : Node_Id) is
!       Item : Node_Id;
!       Id   : Entity_Id;
!       Prev : Entity_Id;
  
     begin
        --  Iterate over explicit with clauses, and check whether the scope of
--- 4803,4810 ----
     ----------------------
  
     procedure Install_Siblings (U_Name : Entity_Id; N : Node_Id) is
!       Item   : Node_Id;
!       Item_E : Entity_Id;
  
     begin
        --  Iterate over explicit with clauses, and check whether the scope of
*************** package body Sem_Ch10 is
*** 4836,4877 ****
             or else Private_Present (N)
             or else Nkind (Unit (N)) = N_Package_Body
           then
!             Id := Entity (Name (Item));
  
!             if Is_Child_Unit (Id)
!               and then Is_Ancestor_Package (Scope (Id), U_Name)
              then
!                Set_Is_Immediately_Visible (Id);
  
                 --  Check for the presence of another unit in the context that
                 --  may be inadvertently hidden by the child.
  
!                Prev := Current_Entity (Id);
  
!                if Present (Prev)
!                  and then Is_Immediately_Visible (Prev)
!                  and then not Is_Child_Unit (Prev)
!                then
!                   declare
!                      Clause : Node_Id;
  
!                   begin
!                      Clause := First (Context_Items (N));
!                      while Present (Clause) loop
!                         if Nkind (Clause) = N_With_Clause
!                           and then Entity (Name (Clause)) = Prev
                          then
                             Error_Msg_NE
!                               ("child unit& hides compilation unit " &
!                                "with the same name??",
!                                  Name (Item), Id);
                             exit;
                          end if;
  
!                         Next (Clause);
!                      end loop;
!                   end;
!                end if;
  
              --  The With_Clause may be on a grandchild or one of its further
              --  descendants, which makes a child immediately visible. Examine
--- 4835,4880 ----
             or else Private_Present (N)
             or else Nkind (Unit (N)) = N_Package_Body
           then
!             Item_E := Entity (Name (Item));
  
!             if Is_Child_Unit (Item_E)
!               and then Is_Ancestor_Package (Scope (Item_E), U_Name)
              then
!                Set_Is_Immediately_Visible (Item_E);
  
                 --  Check for the presence of another unit in the context that
                 --  may be inadvertently hidden by the child.
  
!                declare
!                   Clause : Node_Id;
!                   Clause_E : Entity_Id;
  
!                begin
!                   Clause := First (Context_Items (N));
!                   while Present (Clause) loop
!                      if Clause /= Item
!                        and then Nkind (Clause) = N_With_Clause
!                        and then not Limited_Present (Clause)
!                      then
!                         Clause_E := Entity (Name (Clause));
  
!                         if not Is_Ancestor_Package (Clause_E, U_Name)
!                           and then Chars (Clause_E) = Chars (Item_E)
!                           and then not Has_Prefix (Name (Clause))
!                           and then not In_Use (Clause_E)
                          then
                             Error_Msg_NE
!                              ("child unit& hides compilation unit "
!                               & "with the same name??",
!                               Name (Item),
!                               Item_E);
                             exit;
                          end if;
+                      end if;
  
!                      Next (Clause);
!                   end loop;
!                end;
  
              --  The With_Clause may be on a grandchild or one of its further
              --  descendants, which makes a child immediately visible. Examine
*************** package body Sem_Ch10 is
*** 4879,4890 ****
              --  if current unit is A.C, and with_clause is on A.X.Y.Z, then X
              --  is immediately visible.
  
!             elsif Is_Child_Unit (Id) then
                 declare
                    Par : Entity_Id;
  
                 begin
!                   Par := Scope (Id);
                    while Is_Child_Unit (Par) loop
                       if Is_Ancestor_Package (Scope (Par), U_Name) then
                          Set_Is_Immediately_Visible (Par);
--- 4882,4893 ----
              --  if current unit is A.C, and with_clause is on A.X.Y.Z, then X
              --  is immediately visible.
  
!             elsif Is_Child_Unit (Item_E) then
                 declare
                    Par : Entity_Id;
  
                 begin
!                   Par := Scope (Item_E);
                    while Is_Child_Unit (Par) loop
                       if Is_Ancestor_Package (Scope (Par), U_Name) then
                          Set_Is_Immediately_Visible (Par);
*************** package body Sem_Ch10 is
*** 4902,4910 ****
           --  is already a regular with_clause for it in the current unit.
  
           elsif Private_Present (Item) then
!             Id := Entity (Name (Item));
  
!             if Is_Child_Unit (Id) then
                 declare
                    Clause : Node_Id;
  
--- 4905,4913 ----
           --  is already a regular with_clause for it in the current unit.
  
           elsif Private_Present (Item) then
!             Item_E := Entity (Name (Item));
  
!             if Is_Child_Unit (Item_E) then
                 declare
                    Clause : Node_Id;
  
*************** package body Sem_Ch10 is
*** 4928,4939 ****
                            and then Is_Entity_Name (Name (Clause))
                            and then not Private_Present (Clause)
                          then
!                            if Entity (Name (Clause)) = Id
                               or else
                                 (Nkind (Name (Clause)) = N_Expanded_Name
                                   and then
                                     Is_Entity_Name (Prefix (Name (Clause)))
!                                  and then Entity (Prefix (Name (Clause))) = Id)
                             then
                                return True;
                             end if;
--- 4931,4943 ----
                            and then Is_Entity_Name (Name (Clause))
                            and then not Private_Present (Clause)
                          then
!                            if Entity (Name (Clause)) = Item_E
                               or else
                                 (Nkind (Name (Clause)) = N_Expanded_Name
                                   and then
                                     Is_Entity_Name (Prefix (Name (Clause)))
!                                  and then Entity (Prefix (Name (Clause)))
!                                           = Item_E)
                             then
                                return True;
                             end if;
*************** package body Sem_Ch10 is
*** 4946,4952 ****
                    end In_Context;
  
                 begin
!                   Set_Is_Visible_Lib_Unit (Id, In_Context);
                 end;
              end if;
           end if;
--- 4950,4956 ----
                    end In_Context;
  
                 begin
!                   Set_Is_Visible_Lib_Unit (Item_E, In_Context);
                 end;
              end if;
           end if;
diff -Nrcpad gcc-16-20250921/gcc/ada/sem_ch12.adb gcc-16-20250928/gcc/ada/sem_ch12.adb
*** gcc-16-20250921/gcc/ada/sem_ch12.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/sem_ch12.adb	Sun Sep 28 22:33:03 2025
*************** package body Sem_Ch12 is
*** 2073,2081 ****
        is
        begin
           for Index in Match.Assocs'Range loop
!             if Defining_Entity (Match.Assocs (Index).An_Formal) = F then
!                return Index;
!             end if;
           end loop;
  
           raise Program_Error; -- it must be present
--- 2073,2087 ----
        is
        begin
           for Index in Match.Assocs'Range loop
!             declare
!                An_F : constant Node_Id := Match.Assocs (Index).An_Formal;
!             begin
!                if Nkind (An_F) not in N_Use_Package_Clause | N_Use_Type_Clause
!                  and then Defining_Entity (An_F) = F
!                then
!                   return Index;
!                end if;
!             end;
           end loop;
  
           raise Program_Error; -- it must be present
diff -Nrcpad gcc-16-20250921/gcc/ada/sem_dim.adb gcc-16-20250928/gcc/ada/sem_dim.adb
*** gcc-16-20250921/gcc/ada/sem_dim.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/sem_dim.adb	Sun Sep 28 22:33:03 2025
*************** package body Sem_Dim is
*** 1273,1279 ****
  
           --  Get the expression from the component
  
!          if Nkind (Comp) = N_Component_Association then
              Expr := Expression (Comp);
           else
              Expr := Comp;
--- 1273,1281 ----
  
           --  Get the expression from the component
  
!          if Nkind (Comp) in N_Component_Association
!                           | N_Iterated_Component_Association
!          then
              Expr := Expression (Comp);
           else
              Expr := Comp;
diff -Nrcpad gcc-16-20250921/gcc/ada/sem_util.adb gcc-16-20250928/gcc/ada/sem_util.adb
*** gcc-16-20250921/gcc/ada/sem_util.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/sem_util.adb	Sun Sep 28 22:33:03 2025
*************** package body Sem_Util is
*** 20240,20246 ****
           elsif Is_Tagged_Type (Typ) then
              return True;
  
!          --  Case of nondiscriminated record
  
           else
              declare
--- 20240,20251 ----
           elsif Is_Tagged_Type (Typ) then
              return True;
  
!          --  Case of record type with no components
! 
!          elsif No (First_Component (Typ)) then
!             return False;
! 
!          --  Case of record type with components
  
           else
              declare
*************** package body Sem_Util is
*** 29610,29620 ****
  
     begin
        Pref := N;
!       while Nkind (Pref) in N_Explicit_Dereference
!                           | N_Indexed_Component
!                           | N_Selected_Component
!                           | N_Slice
!       loop
           Pref := Prefix (Pref);
        end loop;
  
--- 29615,29621 ----
  
     begin
        Pref := N;
!       while Has_Prefix (Pref) loop
           Pref := Prefix (Pref);
        end loop;
  
diff -Nrcpad gcc-16-20250921/gcc/ada/sprint.adb gcc-16-20250928/gcc/ada/sprint.adb
*** gcc-16-20250921/gcc/ada/sprint.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/sprint.adb	Sun Sep 28 22:33:03 2025
*************** package body Sprint is
*** 2190,2195 ****
--- 2190,2202 ----
                 Indent_End;
              end if;
  
+             if Present (Finally_Statements (Node)) then
+                Write_Indent_Str ("finally");
+                Indent_Begin;
+                Sprint_Node_List (Finally_Statements (Node));
+                Indent_End;
+             end if;
+ 
              Sprint_At_End_Proc (Node);
  
           when N_Identifier =>
diff -Nrcpad gcc-16-20250921/gcc/ada/switch-c.adb gcc-16-20250928/gcc/ada/switch-c.adb
*** gcc-16-20250921/gcc/ada/switch-c.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/switch-c.adb	Sun Sep 28 22:33:03 2025
*************** package body Switch.C is
*** 636,641 ****
--- 636,681 ----
                       Generate_Processed_File := True;
                       Ptr := Ptr + 1;
  
+                      if Ptr <= Max
+                        and then Switch_Chars (Ptr) in 'b' | 'c' | 'e'
+                      then
+                         case Switch_Chars (Ptr) is
+                            when 'b' =>
+                               Opt.Blank_Deleted_Lines         := True;
+                               Opt.Comment_Deleted_Lines       := False;
+                               Opt.Empty_Comment_Deleted_Lines := False;
+ 
+                            when 'c' =>
+                               Opt.Blank_Deleted_Lines         := False;
+                               Opt.Comment_Deleted_Lines       := True;
+                               Opt.Empty_Comment_Deleted_Lines := False;
+ 
+                            when 'e' =>
+                               Opt.Blank_Deleted_Lines         := False;
+                               Opt.Comment_Deleted_Lines       := False;
+                               Opt.Empty_Comment_Deleted_Lines := True;
+ 
+                            when others =>
+                               raise Program_Error;
+                         end case;
+ 
+                         Ptr := Ptr + 1;
+ 
+                      --  Default to emitting blank lines for deleted lines
+                      --  when generating a preprocessor output file. This is
+                      --  despite the fact that when the file isn't being
+                      --  generated, we emit empty comment lines for the
+                      --  internally generated output (to avoid conflicts
+                      --  with style switches -gnatyu and -gnatyM), but is
+                      --  done for compatibility with the behavior of -gnateG
+                      --  prior to adding support for empty comment lines.
+ 
+                      else
+                         Opt.Blank_Deleted_Lines         := True;
+                         Opt.Comment_Deleted_Lines       := False;
+                         Opt.Empty_Comment_Deleted_Lines := False;
+                      end if;
+ 
                    --  -gnateH (set reverse Bit_Order threshold to 64)
  
                    when 'H' =>
diff -Nrcpad gcc-16-20250921/gcc/ada/usage.adb gcc-16-20250928/gcc/ada/usage.adb
*** gcc-16-20250921/gcc/ada/usage.adb	Sun Sep 21 22:32:35 2025
--- gcc-16-20250928/gcc/ada/usage.adb	Sun Sep 28 22:33:03 2025
*************** begin
*** 196,203 ****
  
     --  Line for -gnateG switch
  
!    Write_Switch_Char ("eG");
!    Write_Line ("Generate preprocessed source");
  
     --  Line for -gnateH switch
  
--- 196,203 ----
  
     --  Line for -gnateG switch
  
!    Write_Switch_Char ("eG[?]");
!    Write_Line ("Generate preprocessed source (?=b/c/e)");
  
     --  Line for -gnateH switch
  
diff -Nrcpad gcc-16-20250921/gcc/attribs.cc gcc-16-20250928/gcc/attribs.cc
*** gcc-16-20250921/gcc/attribs.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/attribs.cc	Sun Sep 28 22:33:03 2025
*************** along with GCC; see the file COPYING3.
*** 39,44 ****
--- 39,45 ----
  #include "tree-pretty-print.h"
  #include "intl.h"
  #include "gcc-urlifier.h"
+ #include "cgraph.h"
  
  /* Table of the tables of attributes (common, language, format, machine)
     searched.  */
*************** make_attribute (string_slice name, strin
*** 1085,1092 ****
    return attr;
  }
  
- /* Common functions used for target clone support.  */
- 
  /* Comparator function to be used in qsort routine to sort attribute
     specification strings to "target".  */
  
--- 1086,1091 ----
*************** sorted_attr_string (tree arglist)
*** 1176,1246 ****
    return ret_str;
  }
  
- 
- /* This function returns true if FN1 and FN2 are versions of the same function,
-    that is, the target strings of the function decls are different.  This assumes
-    that FN1 and FN2 have the same signature.  */
- 
- bool
- common_function_versions (tree fn1, tree fn2)
- {
-   tree attr1, attr2;
-   char *target1, *target2;
-   bool result;
- 
-   if (TREE_CODE (fn1) != FUNCTION_DECL
-       || TREE_CODE (fn2) != FUNCTION_DECL)
-     return false;
- 
-   attr1 = lookup_attribute ("target", DECL_ATTRIBUTES (fn1));
-   attr2 = lookup_attribute ("target", DECL_ATTRIBUTES (fn2));
- 
-   /* At least one function decl should have the target attribute specified.  */
-   if (attr1 == NULL_TREE && attr2 == NULL_TREE)
-     return false;
- 
-   /* Diagnose missing target attribute if one of the decls is already
-      multi-versioned.  */
-   if (attr1 == NULL_TREE || attr2 == NULL_TREE)
-     {
-       if (DECL_FUNCTION_VERSIONED (fn1) || DECL_FUNCTION_VERSIONED (fn2))
- 	{
- 	  if (attr2 != NULL_TREE)
- 	    {
- 	      std::swap (fn1, fn2);
- 	      attr1 = attr2;
- 	    }
- 	  auto_diagnostic_group d;
- 	  error_at (DECL_SOURCE_LOCATION (fn2),
- 		    "missing %<target%> attribute for multi-versioned %qD",
- 		    fn2);
- 	  inform (DECL_SOURCE_LOCATION (fn1),
- 		  "previous declaration of %qD", fn1);
- 	  /* Prevent diagnosing of the same error multiple times.  */
- 	  DECL_ATTRIBUTES (fn2)
- 	    = tree_cons (get_identifier ("target"),
- 			 copy_node (TREE_VALUE (attr1)),
- 			 DECL_ATTRIBUTES (fn2));
- 	}
-       return false;
-     }
- 
-   target1 = sorted_attr_string (TREE_VALUE (attr1));
-   target2 = sorted_attr_string (TREE_VALUE (attr2));
- 
-   /* The sorted target strings must be different for fn1 and fn2
-      to be versions.  */
-   if (strcmp (target1, target2) == 0)
-     result = false;
-   else
-     result = true;
- 
-   XDELETEVEC (target1);
-   XDELETEVEC (target2);
- 
-   return result;
- }
- 
  /* Make a dispatcher declaration for the multi-versioned function DECL.
     Calls to DECL function will be replaced with calls to the dispatcher
     by the front-end.  Return the decl created.  */
--- 1175,1180 ----
*************** common_function_versions (tree fn1, tree
*** 1248,1265 ****
  tree
  make_dispatcher_decl (const tree decl)
  {
!   tree func_decl;
!   char *func_name;
!   tree fn_type, func_type;
! 
!   func_name = xstrdup (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
! 
!   fn_type = TREE_TYPE (decl);
!   func_type = build_function_type (TREE_TYPE (fn_type),
! 				   TYPE_ARG_TYPES (fn_type));
  
-   func_decl = build_fn_decl (func_name, func_type);
-   XDELETEVEC (func_name);
    TREE_USED (func_decl) = 1;
    DECL_CONTEXT (func_decl) = NULL_TREE;
    DECL_INITIAL (func_decl) = error_mark_node;
--- 1182,1193 ----
  tree
  make_dispatcher_decl (const tree decl)
  {
!   tree fn_type = TREE_TYPE (decl);
!   tree func_type = build_function_type (TREE_TYPE (fn_type),
! 					TYPE_ARG_TYPES (fn_type));
!   tree func_decl = build_fn_decl (IDENTIFIER_POINTER (DECL_NAME (decl)),
! 				  func_type);
  
    TREE_USED (func_decl) = 1;
    DECL_CONTEXT (func_decl) = NULL_TREE;
    DECL_INITIAL (func_decl) = error_mark_node;
*************** make_dispatcher_decl (const tree decl)
*** 1269,1274 ****
--- 1197,1230 ----
    DECL_EXTERNAL (func_decl) = 1;
    /* This will be of type IFUNCs have to be externally visible.  */
    TREE_PUBLIC (func_decl) = 1;
+   TREE_NOTHROW (func_decl) = TREE_NOTHROW (decl);
+ 
+   /* Set the decl name to avoid graph_node re-mangling it.  */
+   SET_DECL_ASSEMBLER_NAME (func_decl, DECL_ASSEMBLER_NAME (decl));
+ 
+   cgraph_node *node = cgraph_node::get (decl);
+   gcc_assert (node);
+   cgraph_function_version_info *node_v = node->function_version ();
+   gcc_assert (node_v);
+ 
+   /* Set flags on the cgraph_node for the new decl.  */
+   cgraph_node *func_node = cgraph_node::get_create (func_decl);
+   func_node->dispatcher_function = true;
+   func_node->definition = true;
+ 
+   cgraph_function_version_info *func_v
+     = func_node->insert_new_function_version ();
+   func_v->next = node_v;
+   func_v->assembler_name = node_v->assembler_name;
+ 
+   /* If the default node is from a target_clone, mark the dispatcher as from
+      target_clone.  */
+   func_node->is_target_clone = node->is_target_clone;
+ 
+   /* Get the assembler name by mangling with the base assembler name.  */
+   tree id = targetm.mangle_decl_assembler_name
+     (func_decl, func_v->assembler_name);
+   symtab->change_decl_assembler_name (func_decl, id);
  
    return func_decl;
  }
*************** make_dispatcher_decl (const tree decl)
*** 1277,1283 ****
     With the target attribute semantics, returns true if the function is marked
     as default with the target version.
     With the target_version attribute semantics, returns true if the function
!    is either not annotated, or annotated as default.  */
  
  bool
  is_function_default_version (const tree decl)
--- 1233,1240 ----
     With the target attribute semantics, returns true if the function is marked
     as default with the target version.
     With the target_version attribute semantics, returns true if the function
!    is either not annotated, annotated as default, or is a target_clone
!    containing the default declaration.  */
  
  bool
  is_function_default_version (const tree decl)
*************** is_function_default_version (const tree
*** 1294,1299 ****
--- 1251,1263 ----
      }
    else
      {
+       if (lookup_attribute ("target_clones", DECL_ATTRIBUTES (decl)))
+ 	{
+ 	  int num_defaults = 0;
+ 	  get_clone_versions (decl, &num_defaults);
+ 	  return num_defaults > 0;
+ 	}
+ 
        attr = lookup_attribute ("target_version", DECL_ATTRIBUTES (decl));
        if (!attr)
  	return true;
diff -Nrcpad gcc-16-20250921/gcc/attribs.h gcc-16-20250928/gcc/attribs.h
*** gcc-16-20250921/gcc/attribs.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/attribs.h	Sun Sep 28 22:33:03 2025
*************** extern struct scoped_attributes *
*** 54,60 ****
    register_scoped_attributes (const scoped_attribute_specs &, bool = false);
  
  extern char *sorted_attr_string (tree);
- extern bool common_function_versions (tree, tree);
  extern tree make_dispatcher_decl (const tree);
  extern bool is_function_default_version (const tree);
  extern void handle_ignored_attributes_option (vec<char *> *);
--- 54,59 ----
diff -Nrcpad gcc-16-20250921/gcc/auto-profile.cc gcc-16-20250928/gcc/auto-profile.cc
*** gcc-16-20250921/gcc/auto-profile.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/auto-profile.cc	Sun Sep 28 22:33:03 2025
*************** afdo_propagate_edge (bool is_succ, bb_se
*** 3181,3186 ****
--- 3181,3188 ----
  	changed = true;
        }
      else if (is_bb_annotated (bb, *annotated_bb)
+ 	     /* We do not want to consider 0 (afdo) > 0 (precise)  */
+ 	     && total_known_count.nonzero_p ()
  	     && bb->count < total_known_count)
        {
  	if (dump_file)
diff -Nrcpad gcc-16-20250921/gcc/builtins.cc gcc-16-20250928/gcc/builtins.cc
*** gcc-16-20250921/gcc/builtins.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/builtins.cc	Sun Sep 28 22:33:03 2025
*************** static rtx expand_builtin_stack_address
*** 156,162 ****
  static tree stabilize_va_list_loc (location_t, tree, int);
  static rtx expand_builtin_expect (tree, rtx);
  static rtx expand_builtin_expect_with_probability (tree, rtx);
- static tree fold_builtin_constant_p (tree);
  static tree fold_builtin_classify_type (tree);
  static tree fold_builtin_strlen (location_t, tree, tree, tree);
  static tree fold_builtin_inf (location_t, tree, int);
--- 156,161 ----
*************** builtin_mathfn_code (const_tree t)
*** 9150,9156 ****
  /* Fold a call to __builtin_constant_p, if we know its argument ARG will
     evaluate to a constant.  */
  
! static tree
  fold_builtin_constant_p (tree arg)
  {
    /* We return 1 for a numeric type that's known to be a constant
--- 9149,9155 ----
  /* Fold a call to __builtin_constant_p, if we know its argument ARG will
     evaluate to a constant.  */
  
! tree
  fold_builtin_constant_p (tree arg)
  {
    /* We return 1 for a numeric type that's known to be a constant
diff -Nrcpad gcc-16-20250921/gcc/builtins.h gcc-16-20250928/gcc/builtins.h
*** gcc-16-20250921/gcc/builtins.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/builtins.h	Sun Sep 28 22:33:03 2025
*************** extern rtx expand_builtin_crc_table_base
*** 139,144 ****
--- 139,145 ----
  extern rtx expand_builtin (tree, rtx, rtx, machine_mode, int);
  extern enum built_in_function builtin_mathfn_code (const_tree);
  extern tree fold_builtin_expect (location_t, tree, tree, tree, tree);
+ extern tree fold_builtin_constant_p (tree);
  extern bool avoid_folding_inline_builtin (tree);
  extern tree fold_call_expr (location_t, tree, bool);
  extern tree fold_builtin_call_array (location_t, tree, tree, int, tree *);
diff -Nrcpad gcc-16-20250921/gcc/c/ChangeLog gcc-16-20250928/gcc/c/ChangeLog
*** gcc-16-20250921/gcc/c/ChangeLog	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/c/ChangeLog	Sun Sep 28 22:33:03 2025
***************
*** 1,3 ****
--- 1,32 ----
+ 2025-09-26  Alejandro Colomar  <alx@kernel.org>
+ 
+ 	* c-decl.cc (c_scope): Rename {warned > had}_forward_parm_decls.
+ 	(mark_forward_parm_decls): Add
+ 	-Wmultiple-parameter-fwd-decl-lists.
+ 
+ 2025-09-26  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	PR c/88642
+ 	* c-typeck.cc (constructor_braced_scalar): New variable.
+ 	(struct constructor_stack): Add braced_scalar field.
+ 	(really_start_incremental_init): Handle constructor_braced_scalar
+ 	and braced_scalar field.
+ 	(push_init_level): Handle constructor_braced_scalar and
+ 	braced_scalar field.  Give permerror rather than warning for
+ 	nested braces around scalar initializer.
+ 	(pop_init_level): Handle constructor_braced_scalar and
+ 	braced_scalar field.
+ 
+ 2025-09-24  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* c-typeck.cc (really_atomic_lvalue): For a COMPOUND_LITERAL_EXPR,
+ 	check C_DECL_REGISTER on the COMPOUND_LITERAL_EXPR_DECL.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* c-objc-common.cc (c_tree_printer): Add printing of target_clone and
+ 	target_version in decl diagnostics.
+ 
  2025-09-20  Joseph Myers  <josmyers@redhat.com>
  
  	* c-typeck.cc (really_atomic_lvalue): Return false for incomplete
diff -Nrcpad gcc-16-20250921/gcc/c/c-decl.cc gcc-16-20250928/gcc/c/c-decl.cc
*** gcc-16-20250921/gcc/c/c-decl.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/c/c-decl.cc	Sun Sep 28 22:33:03 2025
*************** struct GTY((chain_next ("%h.outer"))) c_
*** 504,513 ****
       if these appears in a function definition.  */
    BOOL_BITFIELD had_vla_unspec : 1;
  
!   /* True if we already complained about forward parameter decls
!      in this scope.  This prevents double warnings on
!      foo (int a; int b; ...)  */
!   BOOL_BITFIELD warned_forward_parm_decls : 1;
  
    /* True if this is the outermost block scope of a function body.
       This scope contains the parameters, the local variables declared
--- 504,511 ----
       if these appears in a function definition.  */
    BOOL_BITFIELD had_vla_unspec : 1;
  
!   /* True if we parsed a list of forward parameter decls in this scope.  */
!   BOOL_BITFIELD had_forward_parm_decls : 1;
  
    /* True if this is the outermost block scope of a function body.
       This scope contains the parameters, the local variables declared
*************** mark_forward_parm_decls (void)
*** 6269,6280 ****
  {
    struct c_binding *b;
  
!   if (pedantic && !current_scope->warned_forward_parm_decls)
!     {
!       pedwarn (input_location, OPT_Wpedantic,
! 	       "ISO C forbids forward parameter declarations");
!       current_scope->warned_forward_parm_decls = true;
!     }
  
    for (b = current_scope->bindings; b; b = b->prev)
      if (TREE_CODE (b->decl) == PARM_DECL)
--- 6267,6280 ----
  {
    struct c_binding *b;
  
!   if (current_scope->had_forward_parm_decls)
!     warning_at (input_location, OPT_Wmultiple_parameter_fwd_decl_lists,
! 		"more than one list of forward declarations of parameters");
!   if (pedantic && !current_scope->had_forward_parm_decls)
!     pedwarn (input_location, OPT_Wpedantic,
! 	     "ISO C forbids forward parameter declarations");
! 
!   current_scope->had_forward_parm_decls = true;
  
    for (b = current_scope->bindings; b; b = b->prev)
      if (TREE_CODE (b->decl) == PARM_DECL)
diff -Nrcpad gcc-16-20250921/gcc/c/c-objc-common.cc gcc-16-20250928/gcc/c/c-objc-common.cc
*** gcc-16-20250921/gcc/c/c-objc-common.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/c/c-objc-common.cc	Sun Sep 28 22:33:03 2025
*************** along with GCC; see the file COPYING3.
*** 23,28 ****
--- 23,29 ----
  #include "c-tree.h"
  #include "intl.h"
  #include "c-family/c-pretty-print.h"
+ #include "tree-core.h"
  #include "tree-pretty-print.h"
  #include "tree-pretty-print-markup.h"
  #include "gimple-pretty-print.h"
*************** c_tree_printer (pretty_printer *pp, text
*** 359,364 ****
--- 360,370 ----
        if (DECL_NAME (t))
  	{
  	  pp_identifier (cpp, lang_hooks.decl_printable_name (t, 2));
+ 	  if (TREE_CODE (t) == FUNCTION_DECL)
+ 	    {
+ 	      pp_c_function_target_version (cpp, t);
+ 	      pp_c_function_target_clones (cpp, t);
+ 	    }
  	  return true;
  	}
        break;
diff -Nrcpad gcc-16-20250921/gcc/c/c-typeck.cc gcc-16-20250928/gcc/c/c-typeck.cc
*** gcc-16-20250921/gcc/c/c-typeck.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/c/c-typeck.cc	Sun Sep 28 22:33:03 2025
*************** really_atomic_lvalue (tree expr)
*** 2531,2536 ****
--- 2531,2538 ----
  	return false;
        expr = TREE_OPERAND (expr, 0);
      }
+   if (TREE_CODE (expr) == COMPOUND_LITERAL_EXPR)
+     expr = COMPOUND_LITERAL_EXPR_DECL (expr);
    if (DECL_P (expr) && C_DECL_REGISTER (expr))
      return false;
    return true;
*************** static int constructor_zeroinit;
*** 10130,10135 ****
--- 10132,10141 ----
  /* 1 if this constructor should have padding bits zeroed (C23 {}.  */
  static bool constructor_zero_padding_bits;
  
+ /* 1 if this constructor is a braced scalar initializer (further nested levels
+    of braces are an error).  */
+ static bool constructor_braced_scalar;
+ 
  /* Structure for managing pending initializer elements, organized as an
     AVL tree.  */
  
*************** struct constructor_stack
*** 10201,10206 ****
--- 10207,10213 ----
    char incremental;
    char designated;
    bool zero_padding_bits;
+   bool braced_scalar;
    int designator_depth;
  };
  
*************** really_start_incremental_init (tree type
*** 10377,10382 ****
--- 10384,10390 ----
    p->incremental = constructor_incremental;
    p->designated = constructor_designated;
    p->zero_padding_bits = constructor_zero_padding_bits;
+   p->braced_scalar = constructor_braced_scalar;
    p->designator_depth = designator_depth;
    p->next = 0;
    constructor_stack = p;
*************** really_start_incremental_init (tree type
*** 10392,10397 ****
--- 10400,10406 ----
    constructor_designated = 0;
    constructor_zero_padding_bits = false;
    constructor_zeroinit = 1;
+   constructor_braced_scalar = false;
    designator_depth = 0;
    designator_erroneous = 0;
  
*************** really_start_incremental_init (tree type
*** 10451,10456 ****
--- 10460,10466 ----
        /* Handle the case of int x = {5}; */
        constructor_fields = constructor_type;
        constructor_unfilled_fields = constructor_type;
+       constructor_braced_scalar = true;
      }
  }
  
*************** push_init_level (location_t loc, int imp
*** 10527,10532 ****
--- 10537,10543 ----
    p->incremental = constructor_incremental;
    p->designated = constructor_designated;
    p->zero_padding_bits = constructor_zero_padding_bits;
+   p->braced_scalar = constructor_braced_scalar;
    p->designator_depth = designator_depth;
    p->next = constructor_stack;
    p->range_stack = 0;
*************** push_init_level (location_t loc, int imp
*** 10544,10549 ****
--- 10555,10561 ----
    /* If the upper initializer has padding bits zeroed, that includes
       all nested initializers as well.  */
    constructor_zero_padding_bits = p->zero_padding_bits;
+   constructor_braced_scalar = false;
    constructor_pending_elts = 0;
    if (!implicit)
      {
*************** push_init_level (location_t loc, int imp
*** 10662,10668 ****
    else
      {
        if (constructor_type != error_mark_node)
! 	warning_init (input_location, 0, "braces around scalar initializer");
        constructor_fields = constructor_type;
        constructor_unfilled_fields = constructor_type;
      }
--- 10674,10688 ----
    else
      {
        if (constructor_type != error_mark_node)
! 	{
! 	  if (p->braced_scalar)
! 	    permerror_init (input_location, 0,
! 			    "braces around scalar initializer");
! 	  else
! 	    warning_init (input_location, 0,
! 			  "braces around scalar initializer");
! 	  constructor_braced_scalar = true;
! 	}
        constructor_fields = constructor_type;
        constructor_unfilled_fields = constructor_type;
      }
*************** pop_init_level (location_t loc, int impl
*** 10884,10889 ****
--- 10904,10910 ----
    constructor_incremental = p->incremental;
    constructor_designated = p->designated;
    constructor_zero_padding_bits = p->zero_padding_bits;
+   constructor_braced_scalar = p->braced_scalar;
    designator_depth = p->designator_depth;
    constructor_pending_elts = p->pending_elts;
    constructor_depth = p->depth;
diff -Nrcpad gcc-16-20250921/gcc/c-family/ChangeLog gcc-16-20250928/gcc/c-family/ChangeLog
*** gcc-16-20250921/gcc/c-family/ChangeLog	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/c-family/ChangeLog	Sun Sep 28 22:33:03 2025
***************
*** 1,3 ****
--- 1,24 ----
+ 2025-09-26  Alejandro Colomar  <alx@kernel.org>
+ 
+ 	* c.opt: Add -Wmultiple-parameter-fwd-decl-lists
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* c-attribs.cc: Add support for target_version and target_clone mixing.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* c-pretty-print.cc (pp_c_function_target_version): New function.
+ 	(pp_c_function_target_clones): New function.
+ 	(pp_c_maybe_whitespace): Move to c-pretty-print.h.
+ 	* c-pretty-print.h (pp_c_function_target_version): New function.
+ 	(pp_c_function_target_clones): New function.
+ 	(pp_c_maybe_whitespace): Moved here from c-pretty-print.cc.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* c-attribs.cc (handle_target_clones_attribute): Update to use new hook.
+ 
  2025-09-08  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/121544
diff -Nrcpad gcc-16-20250921/gcc/c-family/c-attribs.cc gcc-16-20250928/gcc/c-family/c-attribs.cc
*** gcc-16-20250921/gcc/c-family/c-attribs.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/c-family/c-attribs.cc	Sun Sep 28 22:33:03 2025
*************** static const struct attribute_spec::excl
*** 249,261 ****
    ATTR_EXCL ("always_inline", true, true, true),
    ATTR_EXCL ("target", TARGET_HAS_FMV_TARGET_ATTRIBUTE,
  	     TARGET_HAS_FMV_TARGET_ATTRIBUTE, TARGET_HAS_FMV_TARGET_ATTRIBUTE),
-   ATTR_EXCL ("target_version", true, true, true),
-   ATTR_EXCL (NULL, false, false, false),
- };
- 
- static const struct attribute_spec::exclusions attr_target_version_exclusions[] =
- {
-   ATTR_EXCL ("target_clones", true, true, true),
    ATTR_EXCL (NULL, false, false, false),
  };
  
--- 249,254 ----
*************** const struct attribute_spec c_common_gnu
*** 543,549 ****
  			      attr_target_exclusions },
    { "target_version",         1, 1, true, false, false, false,
  			      handle_target_version_attribute,
! 			      attr_target_version_exclusions },
    { "target_clones",          1, -1, true, false, false, false,
  			      handle_target_clones_attribute,
  			      attr_target_clones_exclusions },
--- 536,542 ----
  			      attr_target_exclusions },
    { "target_version",         1, 1, true, false, false, false,
  			      handle_target_version_attribute,
! 			      NULL },
    { "target_clones",          1, -1, true, false, false, false,
  			      handle_target_clones_attribute,
  			      attr_target_clones_exclusions },
*************** handle_target_clones_attribute (tree *no
*** 6282,6293 ****
  	    }
  	}
  
!       auto_vec<string_slice> versions = get_clone_attr_versions (args, NULL);
  
!       if (versions.length () == 1)
  	{
! 	  warning (OPT_Wattributes,
! 		   "single %<target_clones%> attribute is ignored");
  	  *no_add_attrs = true;
  	}
        else
--- 6275,6299 ----
  	    }
  	}
  
!       int num_defaults = 0;
!       auto_vec<string_slice> versions = get_clone_attr_versions
! 					  (args,
! 					   &num_defaults,
! 					   false);
  
!       for (auto v : versions)
! 	targetm.check_target_clone_version
! 	  (v, &DECL_SOURCE_LOCATION (*node));
! 
!       /* Lone target_clones version is always ignored for target attr semantics.
! 	 Only ignore under target_version semantics if it is a default
! 	 version.  */
!       if (versions.length () == 1
! 	  && (TARGET_HAS_FMV_TARGET_ATTRIBUTE || num_defaults == 1))
  	{
! 	  if (TARGET_HAS_FMV_TARGET_ATTRIBUTE)
! 	    warning (OPT_Wattributes,
! 		     "single %<target_clones%> attribute is ignored");
  	  *no_add_attrs = true;
  	}
        else
diff -Nrcpad gcc-16-20250921/gcc/c-family/c-pretty-print.cc gcc-16-20250928/gcc/c-family/c-pretty-print.cc
*** gcc-16-20250921/gcc/c-family/c-pretty-print.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/c-family/c-pretty-print.cc	Sun Sep 28 22:33:03 2025
*************** along with GCC; see the file COPYING3.
*** 36,41 ****
--- 36,42 ----
  #include "function.h"
  #include "basic-block.h"
  #include "gimple.h"
+ #include "tm.h"
  
  /* The pretty-printer code is primarily designed to closely follow
     (GNU) C and C++ grammars.  That is to be contrasted with spaghetti
*************** along with GCC; see the file COPYING3.
*** 45,56 ****
     takes expression or declaration contexts into account.  */
  
  
- #define pp_c_maybe_whitespace(PP)            \
-    do {                                      \
-      if ((PP)->get_padding () == pp_before)  \
-        pp_c_whitespace (PP);                 \
-    } while (0)
- 
  /* literal  */
  static void pp_c_char (c_pretty_printer *, int);
  
--- 46,51 ----
*************** pp_c_tree_decl_identifier (c_pretty_prin
*** 3054,3059 ****
--- 3049,3124 ----
    pp_c_identifier (pp, name);
  }
  
+ /* Prints "[version: VERSION]" for a versioned function decl.
+    This will only print for targets with target_version semantics.  */
+ void
+ pp_c_function_target_version (c_pretty_printer *pp, tree t)
+ {
+   if (TARGET_HAS_FMV_TARGET_ATTRIBUTE)
+     return;
+ 
+   string_slice version = get_target_version (t);
+   if (!version.is_valid ())
+     return;
+ 
+   pp_c_whitespace (pp);
+ 
+   pp_c_left_bracket (pp);
+   pp_c_left_bracket (pp);
+   pp_string (pp, "target_version");
+   pp_c_left_paren (pp);
+   pp_doublequote (pp);
+   pp_string_n (pp, version.begin (), version.size ());
+   pp_doublequote (pp);
+   pp_c_right_paren (pp);
+   pp_c_right_bracket (pp);
+   pp_c_right_bracket (pp);
+ 
+   pp->set_padding (pp_before);
+ }
+ 
+ /* Prints "[clones: VERSION, +]" for a versioned function decl.
+    This only works for targets with target_version semantics.  */
+ void
+ pp_c_function_target_clones (c_pretty_printer *pp, tree t)
+ {
+   /* Only print for target_version semantics.
+      This is because for target FMV semantics a target_clone always defines
+      the entire FMV set.  target_version semantics can mix target_clone and
+      target_version decls in the definition of a FMV set and so the
+      target_clone becomes a part of the identity of the declaration.  */
+   if (TARGET_HAS_FMV_TARGET_ATTRIBUTE)
+     return;
+ 
+   auto_vec<string_slice> versions = get_clone_versions (t, NULL, false);
+   if (versions.is_empty ())
+     return;
+ 
+   pp_c_whitespace (pp);
+ 
+   string_slice final_version = versions.pop ();
+   pp_c_left_bracket (pp);
+   pp_c_left_bracket (pp);
+   pp_string (pp, "target_clones");
+   pp_c_left_paren (pp);
+   for (string_slice version : versions)
+     {
+       pp_doublequote (pp);
+       pp_string_n (pp, version.begin (), version.size ());
+       pp_doublequote (pp);
+       pp_string (pp, ",");
+       pp_c_whitespace (pp);
+     }
+   pp_doublequote (pp);
+   pp_string_n (pp, final_version.begin (), final_version.size ());
+   pp_doublequote (pp);
+   pp_c_right_paren (pp);
+   pp_c_right_bracket (pp);
+   pp_c_right_bracket (pp);
+ 
+   pp->set_padding (pp_before);
+ }
+ 
  #if CHECKING_P
  
  namespace selftest {
diff -Nrcpad gcc-16-20250921/gcc/c-family/c-pretty-print.h gcc-16-20250928/gcc/c-family/c-pretty-print.h
*** gcc-16-20250921/gcc/c-family/c-pretty-print.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/c-family/c-pretty-print.h	Sun Sep 28 22:33:03 2025
*************** public:
*** 102,107 ****
--- 102,113 ----
  #define pp_ptr_operator(PP, D)          (PP)->ptr_operator (PP, D)
  #define pp_parameter_list(PP, T)        (PP)->parameter_list (PP, T)
  
+ #define pp_c_maybe_whitespace(PP)            \
+    do {                                      \
+      if ((PP)->get_padding () == pp_before)  \
+        pp_c_whitespace (PP);                 \
+    } while (0)
+ 
  void pp_c_whitespace (c_pretty_printer *);
  void pp_c_left_paren (c_pretty_printer *);
  void pp_c_right_paren (c_pretty_printer *);
*************** void pp_c_ws_string (c_pretty_printer *,
*** 138,143 ****
--- 144,151 ----
  void pp_c_identifier (c_pretty_printer *, const char *);
  void pp_c_string_literal (c_pretty_printer *, tree);
  void pp_c_integer_constant (c_pretty_printer *, tree);
+ void pp_c_function_target_version (c_pretty_printer *, tree);
+ void pp_c_function_target_clones (c_pretty_printer *, tree);
  
  void print_c_tree (FILE *file, tree t, dump_flags_t);
  
diff -Nrcpad gcc-16-20250921/gcc/c-family/c.opt gcc-16-20250928/gcc/c-family/c.opt
*** gcc-16-20250921/gcc/c-family/c.opt	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/c-family/c.opt	Sun Sep 28 22:33:03 2025
*************** Wmultiple-inheritance
*** 1086,1091 ****
--- 1086,1095 ----
  C++ ObjC++ Var(warn_multiple_inheritance) Warning
  Warn on direct multiple inheritance.
  
+ Wmultiple-parameter-fwd-decl-lists
+ C ObjC Var(warn_multiple_parameter_fwd_decl_lists) Warning EnabledBy(Wextra)
+ Warn for multiple lists of forward declarations of function parameters.
+ 
  Wmultistatement-macros
  C ObjC C++ ObjC++ Var(warn_multistatement_macros) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
  Warn about unsafe macros expanding to multiple statements used as a body of a clause such as if, else, while, switch, or for.
diff -Nrcpad gcc-16-20250921/gcc/cgraph.cc gcc-16-20250928/gcc/cgraph.cc
*** gcc-16-20250921/gcc/cgraph.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/cgraph.cc	Sun Sep 28 22:33:03 2025
*************** cgraph_node::insert_new_function_version
*** 322,327 ****
--- 322,328 ----
    version_info_node = NULL;
    version_info_node = ggc_cleared_alloc<cgraph_function_version_info> ();
    version_info_node->this_node = this;
+   version_info_node->assembler_name = DECL_ASSEMBLER_NAME (this->decl);
  
    if (cgraph_fnver_htab == NULL)
      cgraph_fnver_htab = hash_table<function_version_hasher>::create_ggc (2);
*************** cgraph_node::insert_new_function_version
*** 332,339 ****
  }
  
  /* Remove the cgraph_function_version_info node given by DECL_V.  */
! static void
! delete_function_version (cgraph_function_version_info *decl_v)
  {
    if (decl_v == NULL)
      return;
--- 333,340 ----
  }
  
  /* Remove the cgraph_function_version_info node given by DECL_V.  */
! void
! cgraph_node::delete_function_version (cgraph_function_version_info *decl_v)
  {
    if (decl_v == NULL)
      return;
diff -Nrcpad gcc-16-20250921/gcc/cgraph.h gcc-16-20250928/gcc/cgraph.h
*** gcc-16-20250921/gcc/cgraph.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/cgraph.h	Sun Sep 28 22:33:03 2025
*************** struct GTY((for_user)) cgraph_function_v
*** 856,861 ****
--- 856,864 ----
       dispatcher. The dispatcher decl is an alias to the resolver
       function decl.  */
    tree dispatcher_resolver;
+ 
+   /* The assmbly name of the function set before version mangling.  */
+   tree assembler_name;
  };
  
  #define DEFCIFCODE(code, type, string)	CIF_ ## code,
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 904,910 ****
        used_as_abstract_origin (false),
        lowered (false), process (false), frequency (NODE_FREQUENCY_NORMAL),
        only_called_at_startup (false), only_called_at_exit (false),
!       tm_clone (false), dispatcher_function (false), calls_comdat_local (false),
        icf_merged (false), nonfreeing_fn (false), merged_comdat (false),
        merged_extern_inline (false), parallelized_function (false),
        split_part (false), indirect_call_target (false), local (false),
--- 907,915 ----
        used_as_abstract_origin (false),
        lowered (false), process (false), frequency (NODE_FREQUENCY_NORMAL),
        only_called_at_startup (false), only_called_at_exit (false),
!       tm_clone (false), dispatcher_function (false),
!       dispatcher_resolver_function (false), is_target_clone (false),
!       calls_comdat_local (false),
        icf_merged (false), nonfreeing_fn (false), merged_comdat (false),
        merged_extern_inline (false), parallelized_function (false),
        split_part (false), indirect_call_target (false), local (false),
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1347,1352 ****
--- 1352,1359 ----
       DECL is a duplicate declaration.  */
    static void delete_function_version_by_decl (tree decl);
  
+   static void delete_function_version (cgraph_function_version_info *);
+ 
    /* Add the function FNDECL to the call graph.
       Unlike finalize_function, this function is intended to be used
       by middle end and allows insertion of new function at arbitrary point
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1482,1487 ****
--- 1489,1500 ----
    unsigned tm_clone : 1;
    /* True if this decl is a dispatcher for function versions.  */
    unsigned dispatcher_function : 1;
+   /* True if this decl is a resolver for function versions.  */
+   unsigned dispatcher_resolver_function : 1;
+   /* True this is part of a multiversioned set and this version comes from a
+      target_clone attribute.  Or if this is a dispatched symbol or resolver
+      and the default version comes from a target_clones.  */
+   unsigned is_target_clone : 1;
    /* True if this decl calls a COMDAT-local function.  This is set up in
       compute_fn_summary and inline_call.  */
    unsigned calls_comdat_local : 1;
*************** tree clone_function_name (const char *na
*** 2648,2653 ****
--- 2661,2668 ----
  tree clone_function_name (tree decl, const char *suffix,
  			  unsigned long number);
  tree clone_function_name (tree decl, const char *suffix);
+ tree clone_identifier (tree decl, const char *suffix,
+ 		       bool filter_suffix = false);
  
  void tree_function_versioning (tree, tree, vec<ipa_replace_map *, va_gc> *,
  			       ipa_param_adjustments *,
*************** symbol_table::next_function_with_gimple_
*** 3109,3114 ****
--- 3124,3136 ----
     for ((node) = symtab->first_function (); (node); \
  	(node) = symtab->next_function ((node)))
  
+ /* Walk all functions but precompute so a node can be deleted if needed.  */
+ #define FOR_EACH_FUNCTION_REMOVABLE(node) \
+    cgraph_node *next; \
+    for ((node) = symtab->first_function (), \
+ 	next = (node) ? symtab->next_function ((node)) : NULL; (node); \
+ 	(node) = next, next = (node) ? symtab->next_function ((node)) : NULL)
+ 
  /* Return true when callgraph node is a function with Gimple body defined
     in current unit.  Functions can also be define externally or they
     can be thunks with no Gimple representation.
diff -Nrcpad gcc-16-20250921/gcc/cgraphclones.cc gcc-16-20250928/gcc/cgraphclones.cc
*** gcc-16-20250921/gcc/cgraphclones.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/cgraphclones.cc	Sun Sep 28 22:33:03 2025
*************** clone_function_name (tree decl, const ch
*** 570,575 ****
--- 570,601 ----
    /* For consistency this needs to behave the same way as
       ASM_FORMAT_PRIVATE_NAME does, but without the final number
       suffix.  */
+   return clone_identifier (identifier, suffix);
+ }
+ 
+ /*  Return true if symbol is valid in assembler name.  */
+ 
+ static bool
+ is_valid_asm_symbol (char c)
+ {
+   if ('a' <= c && c <= 'z')
+     return true;
+   if ('A' <= c && c <= 'Z')
+     return true;
+   if ('0' <= c && c <= '9')
+     return true;
+   if (c == '_')
+     return true;
+   return false;
+ }
+ 
+ /* Return a new clone of ID ending with the string SUFFIX.
+    If FILTER_SUFFIX is true, any illegal asm characters in the SUFFIX are
+    replaced with _.  */
+ 
+ tree
+ clone_identifier (tree id, const char *suffix, bool filter_suffix)
+ {
    char *separator = XALLOCAVEC (char, 2);
    separator[0] = symbol_table::symbol_suffix_separator ();
    separator[1] = 0;
*************** clone_function_name (tree decl, const ch
*** 578,591 ****
  #else
    const char *prefix = "";
  #endif
!   char *result = ACONCAT ((prefix,
! 			   IDENTIFIER_POINTER (identifier),
! 			   separator,
! 			   suffix,
! 			   (char*)0));
!   return get_identifier (result);
! }
  
  
  /* Create callgraph node clone with new declaration.  The actual body will be
     copied later at compilation stage.  The name of the new clone will be
--- 604,635 ----
  #else
    const char *prefix = "";
  #endif
!   if (!suffix)
!     suffix = "";
  
+   if (!filter_suffix)
+     {
+       char *result = ACONCAT (
+ 	(prefix, IDENTIFIER_POINTER (id), separator, suffix, (char *) 0));
+       return get_identifier (result);
+     }
+   else
+     {
+       /* Replace any illegal chars with _.  */
+       int suffix_len = strlen (suffix);
+       char *converted_suffix = XALLOCAVEC (char, suffix_len + 1);
+       for (int i = 0; i < suffix_len; i++)
+ 	if (!is_valid_asm_symbol (suffix[i]))
+ 	  converted_suffix[i] = '_';
+ 	else
+ 	  converted_suffix[i] = suffix[i];
+       converted_suffix[suffix_len] = '\0';
+ 
+       char *result = ACONCAT ((prefix, IDENTIFIER_POINTER (id), separator,
+ 			       converted_suffix, (char *) 0));
+       return get_identifier (result);
+     }
+ }
  
  /* Create callgraph node clone with new declaration.  The actual body will be
     copied later at compilation stage.  The name of the new clone will be
diff -Nrcpad gcc-16-20250921/gcc/cgraphunit.cc gcc-16-20250928/gcc/cgraphunit.cc
*** gcc-16-20250921/gcc/cgraphunit.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/cgraphunit.cc	Sun Sep 28 22:33:03 2025
*************** analyze_functions (bool first_time)
*** 1264,1269 ****
--- 1264,1278 ----
  	      if (!cnode->analyzed)
  		cnode->analyze ();
  
+ 	      /* A reference to a default node in a function set implies a
+ 		 reference to all versions in the set.  */
+ 	      cgraph_function_version_info *node_v = cnode->function_version ();
+ 	      if (node_v && is_function_default_version (node->decl))
+ 		for (cgraph_function_version_info *fvi = node_v->next;
+ 		     fvi;
+ 		     fvi = fvi->next)
+ 		  enqueue_node (fvi->this_node);
+ 
  	      for (edge = cnode->callees; edge; edge = edge->next_callee)
  		if (edge->callee->definition
  		    && (!DECL_EXTERNAL (edge->callee->decl)
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/aarch64-protos.h gcc-16-20250928/gcc/config/aarch64/aarch64-protos.h
*** gcc-16-20250921/gcc/config/aarch64/aarch64-protos.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/aarch64-protos.h	Sun Sep 28 22:33:03 2025
*************** struct tune_params
*** 581,586 ****
--- 581,589 ----
  
    /* Define models for the aarch64_ldp_stp_policy.  */
    enum aarch64_ldp_stp_policy ldp_policy_model, stp_policy_model;
+ 
+   /* Dispatch constraints for instruction scheduling.  */
+   const struct dispatch_constraint_info *dispatch_constraints;
  };
  
  /* Classifies an address.
*************** enum aarch64_extra_tuning_flags_index
*** 654,659 ****
--- 657,670 ----
    AARCH64_EXTRA_TUNE_index_END
  };
  
+ /* Dispatch constraints configuration for instruction scheduling.  */
+ struct dispatch_constraint_info
+ {
+   const int *max_slots;
+   int num_constraints;
+   vec<std::pair<int, int>> (*callback) (rtx_insn *);
+ };
+ 
  
  #define AARCH64_EXTRA_TUNING_OPTION(x, name) \
    AARCH64_EXTRA_TUNE_##name = (1u << AARCH64_EXTRA_TUNE_##name##_index),
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/aarch64-sched-dispatch.cc gcc-16-20250928/gcc/config/aarch64/aarch64-sched-dispatch.cc
*** gcc-16-20250921/gcc/config/aarch64/aarch64-sched-dispatch.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/config/aarch64/aarch64-sched-dispatch.cc	Sun Sep 28 22:33:03 2025
***************
*** 0 ****
--- 1,229 ----
+ /* Dispatch scheduling hooks for AArch64.
+    Copyright The GNU Toolchain Authors.
+ 
+    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 "backend.h"
+ #include "rtl.h"
+ #include "insn-attr.h"
+ #include "insn-attr-common.h"
+ #include "aarch64-protos.h"
+ #include "aarch64-sched-dispatch.h"
+ #include "regset.h"
+ #include "sched-int.h"
+ #include "dumpfile.h"
+ #include "print-rtl.h"
+ 
+ /* This file implements the target hooks for dispatch scheduling for AArch64.
+    Instructions are scheduled into the current dispatch window according to
+    dispatch constraints provided by the tuning model.
+ 
+    To enable dispatch scheduling for a core (see Neoverse V2 for an example):
+    - in the tuning model, add the AARCH64_EXTRA_TUNE_DISPATCH_SCHED tune flag
+    - in the tuning model, add an array of max slot counts for each constraint
+      and add its reference and length to the tune_params struct
+    - in the tuning model, add a callback function to determine slot requirements
+    - optionally, create a new instruction attribute to classify instructions
+      into dispatch groups (e.g. neoversev2_dispatch)  */
+ 
+ static dispatch_window *current_dispatch_window;
+ 
+ /* Constructor for class dispatch_window.  */
+ dispatch_window::dispatch_window (const dispatch_constraint_info &constraint_info)
+   : m_max_slots (constraint_info.max_slots),
+     m_num_constraints (constraint_info.num_constraints),
+     m_callback (constraint_info.callback),
+     m_violation (false)
+ {
+   m_free_slots = XNEWVEC (int, m_num_constraints);
+   reset_constraints ();
+ }
+ 
+ /* Destructor for class dispatch_window.  */
+ dispatch_window::~dispatch_window ()
+ {
+   XDELETEVEC (m_free_slots);
+ }
+ 
+ /* Return TRUE iff the given constraints fit into the dispatch window.  */
+ bool
+ dispatch_window::fits_window (rtx_insn *insn,
+ 			      const vec<std::pair<int, int>> &constraints) const
+ {
+   if (INSN_CODE (insn) < 0)
+     return true;
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "Checking if insn fits into dispatch window:\n");
+       print_rtl_single (dump_file, insn);
+     }
+ 
+   for (const auto &constraint : constraints)
+     {
+       if (constraint.second > m_free_slots[constraint.first])
+ 	{
+ 	  if (dump_file && (dump_flags & TDF_DETAILS))
+ 	    {
+ 	      fprintf (dump_file, "Constraint %d needs %d slot(s), "
+ 		       "only %d free.\n",
+ 		       constraint.first, constraint.second,
+ 		       m_free_slots[constraint.first]);
+ 	    }
+ 	  return false;
+ 	}
+     }
+   return true;
+ }
+ 
+ /* Get the constraints for an instruction.  */
+ vec<std::pair<int, int>>
+ dispatch_window::get_constraints (rtx_insn *insn) const
+ {
+   return m_callback (insn);
+ }
+ 
+ /* Add INSN to the dispatch window and set the violation flag
+    if there is a constraint violation.  */
+ void
+ dispatch_window::add_insn_to_window (rtx_insn *insn)
+ {
+   if (INSN_CODE (insn) < 0)
+     return;
+ 
+   auto constraints = m_callback (insn);
+ 
+   if (!fits_window (insn, constraints))
+     {
+       if (dump_file)
+ 	fprintf (dump_file, "Window full. Starting new dispatch window.\n");
+       reset_constraints ();
+     }
+ 
+   for (const auto &constraint : constraints)
+     {
+       m_free_slots[constraint.first] -= constraint.second;
+       if (m_free_slots[constraint.first] < 0)
+ 	m_violation = true;
+     }
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "Insn added to dispatch window.\n");
+       if (dump_flags & TDF_DETAILS)
+ 	print_window (dump_file);
+     }
+ }
+ 
+ /* Return TRUE iff there is a dispatch violation, i.e. one of the dispatch
+    constraints has a negative number of free slots.  */
+ bool
+ dispatch_window::has_violation () const
+ {
+   return m_violation;
+ }
+ 
+ /* Print information about the dispatch window to the given FILE.  */
+ void
+ dispatch_window::print_window (FILE *file) const
+ {
+   fprintf (file, "==== Current dispatch window ====\n");
+   fprintf (file, "Violation: %s\n", m_violation ? "true" : "false");
+   for (int i = 0; i < m_num_constraints; i++)
+     {
+       fprintf (file, "Constraint %d: %d of %d slots free\n",
+ 	       i, m_free_slots[i], m_max_slots[i]);
+     }
+   fprintf (file, "\n");
+ }
+ 
+ /* For all dispatch constraints, reset the number of free slots to the
+    maximum number of slots.
+    This is called when the next dispatch window is started.  */
+ void
+ dispatch_window::reset_constraints ()
+ {
+   for (int i = 0; i < m_num_constraints; i++)
+     m_free_slots[i] = m_max_slots[i];
+   m_violation = false;
+ }
+ 
+ /* Initialize the dispatch window using the constraints from the tuning model.
+    This is called once at the beginning of scheduling.  */
+ void
+ init_dispatch_window (void)
+ {
+   const struct dispatch_constraint_info *dispatch_constraints
+     = aarch64_tune_params.dispatch_constraints;
+   current_dispatch_window = new dispatch_window (*dispatch_constraints);
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "DISPATCH WINDOW INITIALIZED\n");
+       if (dump_flags & TDF_DETAILS)
+ 	current_dispatch_window->print_window (dump_file);
+     }
+ }
+ 
+ /* The next two functions implement the dispatch-scheduling target hooks
+    for aarch64 and are the drivers of the dispatch scheduler.  */
+ void
+ aarch64_sched_dispatch_do (rtx_insn *insn, int mode)
+ {
+   if (mode == DISPATCH_INIT)
+     init_dispatch_window ();
+   else if (mode == ADD_TO_DISPATCH_WINDOW && current_dispatch_window)
+     current_dispatch_window->add_insn_to_window (insn);
+ }
+ 
+ bool
+ aarch64_sched_dispatch (rtx_insn *insn, int action)
+ {
+   /* We only want dispatch scheduling to be enabled during the last
+      scheduling pass, i.e. after reload and sched_fusion.  */
+   if ((aarch64_tune_params.extra_tuning_flags
+        & AARCH64_EXTRA_TUNE_DISPATCH_SCHED)
+       && reload_completed && !sched_fusion)
+     switch (action)
+       {
+       case IS_DISPATCH_ON:
+ 	return true;
+ 
+       /* IS_CMP may be used to delay scheduling of flag setting instructions
+ 	 to keep them close to their consumers, e.g. branches at the end of a BB.
+ 	 However, we don't want to delay scheduling of flag setting instructions,
+ 	 because many consumers are not branches.  */
+       case IS_CMP:
+ 	return false;
+ 
+       case DISPATCH_VIOLATION:
+ 	return current_dispatch_window->has_violation ();
+ 
+       case FITS_DISPATCH_WINDOW:
+ 	{
+ 	  auto constraints = current_dispatch_window->get_constraints (insn);
+ 	  return current_dispatch_window->fits_window (insn, constraints);
+ 	}
+ 
+       default:
+ 	return false;
+       }
+   return false;
+ }
\ No newline at end of file
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/aarch64-sched-dispatch.h gcc-16-20250928/gcc/config/aarch64/aarch64-sched-dispatch.h
*** gcc-16-20250921/gcc/config/aarch64/aarch64-sched-dispatch.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/config/aarch64/aarch64-sched-dispatch.h	Sun Sep 28 22:33:03 2025
***************
*** 0 ****
--- 1,52 ----
+ /* Dispatch scheduling hooks for AArch64.
+    Copyright The GNU Toolchain Authors.
+ 
+    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_AARCH64_SCHED_DISPATCH_H
+ #define GCC_AARCH64_SCHED_DISPATCH_H
+ 
+ void aarch64_sched_dispatch_do (rtx_insn *, int);
+ bool aarch64_sched_dispatch (rtx_insn *, int);
+ 
+ /* Describes a dispatch window and keeps track of the dispatch constraints.
+    The constraints are represented as array of slot counts, where each
+    index corresponds to a dispatch constraint type. */
+ class dispatch_window
+ {
+ public:
+   dispatch_window (const dispatch_constraint_info &constraint_info);
+   ~dispatch_window ();
+ 
+   bool fits_window (rtx_insn *insn,
+ 		    const vec<std::pair<int, int>> &constraints) const;
+   vec<std::pair<int, int>> get_constraints (rtx_insn *) const;
+   void add_insn_to_window (rtx_insn *);
+   bool has_violation () const;
+   void print_window (FILE *) const;
+ 
+ private:
+   void reset_constraints ();
+ 
+   const int *m_max_slots;
+   int *m_free_slots;
+   const int m_num_constraints;
+   vec<std::pair<int, int>> (*const m_callback) (rtx_insn *);
+   bool m_violation;
+ };
+ 
+ #endif /* GCC_AARCH64_SCHED_DISPATCH_H */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/aarch64-sve.md gcc-16-20250928/gcc/config/aarch64/aarch64-sve.md
*** gcc-16-20250921/gcc/config/aarch64/aarch64-sve.md	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/aarch64-sve.md	Sun Sep 28 22:33:03 2025
***************
*** 696,706 ****
     && ((lra_in_progress || reload_completed)
         || (register_operand (operands[0], <MODE>mode)
  	   && nonmemory_operand (operands[1], <MODE>mode)))"
!   {@ [ cons: =0 , 1    ]
!      [ w        , Utr  ] ldr\t%0, %1
!      [ Utr      , w    ] str\t%1, %0
!      [ w        , w    ] mov\t%0.d, %1.d
!      [ w        , Dn   ] << aarch64_output_sve_mov_immediate (operands[1]);
    }
  )
  
--- 696,706 ----
     && ((lra_in_progress || reload_completed)
         || (register_operand (operands[0], <MODE>mode)
  	   && nonmemory_operand (operands[1], <MODE>mode)))"
!   {@ [ cons: =0 , 1   ; attrs: sve_type ]
!      [ w        , Utr ; sve_load_1reg   ] ldr\t%0, %1
!      [ Utr      , w   ; sve_store_1reg  ] str\t%1, %0
!      [ w        , w   ; *               ] mov\t%0.d, %1.d
!      [ w        , Dn  ; *               ] << aarch64_output_sve_mov_immediate (operands[1]);
    }
  )
  
***************
*** 719,725 ****
    "#"
    "&& 1"
    [(set (match_dup 0)
! 	(match_dup 2))])
  
  ;; Unpredicated moves that cannot use LDR and STR, i.e. partial vectors
  ;; or vectors for which little-endian ordering isn't acceptable.  Memory
--- 719,728 ----
    "#"
    "&& 1"
    [(set (match_dup 0)
! 	(match_dup 2))]
!   {}
!   [(set_attr "sve_type" "sve_load_1reg,sve_store_1reg")]
! )
  
  ;; Unpredicated moves that cannot use LDR and STR, i.e. partial vectors
  ;; or vectors for which little-endian ordering isn't acceptable.  Memory
***************
*** 772,781 ****
    "TARGET_SVE
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[2], <MODE>mode))"
!   {@ [ cons: =0 , 1   , 2  ]
!      [ w        , Upl , w  ] #
!      [ w        , Upl , m  ] ld1<Vesize>\t%0.<Vctype>, %1/z, %2
!      [ m        , Upl , w  ] st1<Vesize>\t%2.<Vctype>, %1, %0
    }
    "&& register_operand (operands[0], <MODE>mode)
     && register_operand (operands[2], <MODE>mode)"
--- 775,784 ----
    "TARGET_SVE
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[2], <MODE>mode))"
!   {@ [ cons: =0 , 1   , 2 ; attrs: sve_type ]
!      [ w        , Upl , w ; *               ] #
!      [ w        , Upl , m ; sve_load_1reg   ] ld1<Vesize>\t%0.<Vctype>, %1/z, %2
!      [ m        , Upl , w ; sve_store_1reg  ] st1<Vesize>\t%2.<Vctype>, %1, %0
    }
    "&& register_operand (operands[0], <MODE>mode)
     && register_operand (operands[2], <MODE>mode)"
***************
*** 976,986 ****
    "TARGET_SVE
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
!   {@ [ cons: =0 , 1    ]
!      [ Upa      , Upa  ] mov\t%0.b, %1.b
!      [ m        , Upa  ] str\t%1, %0
!      [ Upa      , m    ] ldr\t%0, %1
!      [ Upa      , Dn   ] << aarch64_output_sve_mov_immediate (operands[1]);
    }
  )
  
--- 979,989 ----
    "TARGET_SVE
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
!   {@ [ cons: =0 , 1   ; attrs: sve_type ]
!      [ Upa      , Upa ; sve_pred_misc   ] mov\t%0.b, %1.b
!      [ m        , Upa ; sve_store_pred  ] str\t%1, %0
!      [ Upa      , m   ; sve_load_pred   ] ldr\t%0, %1
!      [ Upa      , Dn  ; sve_pred_misc   ] << aarch64_output_sve_mov_immediate (operands[1]);
    }
  )
  
***************
*** 1007,1012 ****
--- 1010,1016 ----
    {
      operands[2] = operands[3] = CONSTM1_RTX (VNx16BImode);
    }
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; Match PTRUES Pn.[HSD] when both the predicate and flags are useful.
***************
*** 1034,1039 ****
--- 1038,1044 ----
      operands[2] = CONSTM1_RTX (VNx16BImode);
      operands[3] = CONSTM1_RTX (<MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; Match PTRUES Pn.B when only the flags result is useful (which is
***************
*** 1059,1064 ****
--- 1064,1070 ----
    {
      operands[2] = operands[3] = CONSTM1_RTX (VNx16BImode);
    }
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; Match PTRUES Pn.[HWD] when only the flags result is useful (which is
***************
*** 1086,1091 ****
--- 1092,1098 ----
      operands[2] = CONSTM1_RTX (VNx16BImode);
      operands[3] = CONSTM1_RTX (<MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1131,1136 ****
--- 1138,1144 ----
       [ Dm      ] setffr
       [ Upa     ] wrffr\t%0.b
    }
+   [(set_attr "sve_type" "sve_ffr")]
  )
  
  ;; [L2 in the block comment above about FFR handling]
***************
*** 1170,1175 ****
--- 1178,1184 ----
  	(reg:VNx16BI FFRT_REGNUM))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    "rdffr\t%0.b"
+   [(set_attr "sve_type" "sve_ffr")]
  )
  
  ;; Likewise with zero predication.
***************
*** 1184,1189 ****
--- 1193,1199 ----
       [ ?Upa    , 0Upa; yes                 ] ^
       [ Upa     , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_ffr")]
  )
  
  ;; Read the FFR to test for a fault, without using the predicate result.
***************
*** 1204,1209 ****
--- 1214,1220 ----
       [ ?Upa    , 0Upa; yes                 ] ^
       [ Upa     , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_ffr")]
  )
  
  ;; Same for unpredicated RDFFR when tested with a known PTRUE.
***************
*** 1222,1227 ****
--- 1233,1239 ----
       [ ?Upa    , 0Upa; yes                 ] ^
       [ Upa     , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_ffr")]
  )
  
  ;; Read the FFR with zero predication and test the result.
***************
*** 1245,1250 ****
--- 1257,1263 ----
       [ ?Upa    , 0Upa; yes                 ] ^
       [ Upa     , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_ffr")]
  )
  
  ;; Same for unpredicated RDFFR when tested with a known PTRUE.
***************
*** 1264,1269 ****
--- 1277,1283 ----
       [ ?Upa    , 0Upa; yes                 ] ^
       [ Upa     , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_ffr")]
  )
  
  ;; [R3 in the block comment above about FFR handling]
***************
*** 1331,1336 ****
--- 1345,1351 ----
  	  UNSPEC_LD1_SVE))]
    "TARGET_SVE"
    "ld1<Vesize>\t%0.<Vctype>, %2/z, %1"
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  ;; Unpredicated LD[234].
***************
*** 1358,1363 ****
--- 1373,1379 ----
  	  UNSPEC_LDN))]
    "TARGET_SVE"
    "ld<vector_count><Vesize>\t%0, %2/z, %1"
+   [(set_attr "sve_type" "sve_load_<vector_count>reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1390,1395 ****
--- 1406,1412 ----
    {
      operands[3] = CONSTM1_RTX (<SVE_HSDI:VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  ;; Same as above without the maskload_else_operand to still allow combine to
***************
*** 1410,1415 ****
--- 1427,1433 ----
    {
      operands[3] = CONSTM1_RTX (<SVE_HSDI:VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1436,1441 ****
--- 1454,1460 ----
  	  SVE_LDFF1_LDNF1))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    "ld<fn>f1<Vesize>\t%0.<Vetype>, %2/z, %1"
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1476,1481 ****
--- 1495,1501 ----
    {
      operands[3] = CONSTM1_RTX (<SVE_HSDI:VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1498,1503 ****
--- 1518,1524 ----
  	  UNSPEC_LDNT1_SVE))]
    "TARGET_SVE"
    "ldnt1<Vesize>\t%0.<Vetype>, %2/z, %1"
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1555,1560 ****
--- 1576,1582 ----
       [&w, rk,         w, Ui1, i,   Upl] ld1<Vesize>\t%0.s, %5/z, [%1, %2.s, uxtw %p4]
       [?w, rk,         0, Ui1, i,   Upl] ^
    }
+   [(set_attr "sve_type" "sve_gatherload_32")]
  )
  
  ;; Predicated gather loads for 64-bit elements.  The value of operand 3
***************
*** 1581,1586 ****
--- 1603,1609 ----
       [&w, rk,         w, i, i,   Upl] ld1<Vesize>\t%0.d, %5/z, [%1, %2.d, lsl %p4]
       [?w, rk,         0, i, i,   Upl] ^
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being extended from 32 bits.
***************
*** 1610,1615 ****
--- 1633,1639 ----
    {
      operands[6] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being truncated to 32 bits and then
***************
*** 1641,1646 ****
--- 1665,1671 ----
    {
      operands[6] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being truncated to 32 bits and then
***************
*** 1665,1670 ****
--- 1690,1696 ----
       [&w, rk, w, i, i,   Upl ] ld1<Vesize>\t%0.d, %5/z, [%1, %2.d, uxtw %p4]
       [?w, rk, 0, i, i,   Upl ] ^
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1717,1722 ****
--- 1743,1749 ----
    {
      operands[6] = CONSTM1_RTX (VNx4BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_32")]
  )
  
  ;; Predicated extending gather loads for 64-bit elements.  The value of
***************
*** 1753,1758 ****
--- 1780,1786 ----
    {
      operands[6] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being extended from 32 bits.
***************
*** 1789,1794 ****
--- 1817,1823 ----
      operands[6] = CONSTM1_RTX (VNx2BImode);
      operands[7] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being truncated to 32 bits and then
***************
*** 1827,1832 ****
--- 1856,1862 ----
      operands[6] = CONSTM1_RTX (VNx2BImode);
      operands[7] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being truncated to 32 bits and then
***************
*** 1861,1866 ****
--- 1891,1897 ----
    {
      operands[7] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1899,1904 ****
--- 1930,1936 ----
       [&w, rk,  w, Ui1, i,   Upl] ldff1w\t%0.s, %5/z, [%1, %2.s, uxtw %p4]
       [?w, rk,  0, Ui1, i,   Upl] ^
    }
+   [(set_attr "sve_type" "sve_gatherload_32")]
  )
  
  ;; Predicated first-faulting gather loads for 64-bit elements.  The value
***************
*** 1925,1930 ****
--- 1957,1963 ----
       [&w, rk,  w, i, i,   Upl ] ldff1d\t%0.d, %5/z, [%1, %2.d, lsl %p4]
       [?w, rk,  0, i, i,   Upl ] ^
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being sign-extended from 32 bits.
***************
*** 1955,1960 ****
--- 1988,1994 ----
    {
      operands[6] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being zero-extended from 32 bits.
***************
*** 1978,1983 ****
--- 2012,2018 ----
       [&w, rk, w, i, i,   Upl ] ldff1d\t%0.d, %5/z, [%1, %2.d, uxtw %p4]
       [?w, rk, 0, i, i,   Upl ] ^
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2028,2033 ****
--- 2063,2069 ----
    {
      operands[6] = CONSTM1_RTX (VNx4BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_32")]
  )
  
  ;; Predicated extending first-faulting gather loads for 64-bit elements.
***************
*** 2062,2067 ****
--- 2098,2104 ----
    {
      operands[6] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being sign-extended from 32 bits.
***************
*** 2097,2102 ****
--- 2134,2140 ----
      operands[6] = CONSTM1_RTX (VNx2BImode);
      operands[7] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Likewise, but with the offset being zero-extended from 32 bits.
***************
*** 2128,2133 ****
--- 2166,2172 ----
    {
      operands[7] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; =========================================================================
***************
*** 2349,2354 ****
--- 2388,2394 ----
  	  UNSPEC_ST1_SVE))]
    "TARGET_SVE"
    "st1<Vesize>\t%1.<Vctype>, %2, %0"
+   [(set_attr "sve_type" "sve_store_1reg")]
  )
  
  ;; Unpredicated ST[234].  This is always a full update, so the dependence
***************
*** 2379,2384 ****
--- 2419,2425 ----
  	  UNSPEC_STN))]
    "TARGET_SVE"
    "st<vector_count><Vesize>\t%1, %2, %0"
+   [(set_attr "sve_type" "sve_store_<vector_count>reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2401,2406 ****
--- 2442,2448 ----
  	  UNSPEC_ST1_SVE))]
    "TARGET_SVE"
    "st1<VNx8_NARROW:Vesize>\t%1.<VNx8_WIDE:Vetype>, %2, %0"
+   [(set_attr "sve_type" "sve_store_1reg")]
  )
  
  ;; Predicated truncate and store, with 4 elements per 128-bit block.
***************
*** 2414,2419 ****
--- 2456,2462 ----
  	  UNSPEC_ST1_SVE))]
    "TARGET_SVE"
    "st1<VNx4_NARROW:Vesize>\t%1.<VNx4_WIDE:Vetype>, %2, %0"
+   [(set_attr "sve_type" "sve_store_1reg")]
  )
  
  ;; Predicated truncate and store, with 2 elements per 128-bit block.
***************
*** 2427,2432 ****
--- 2470,2476 ----
  	  UNSPEC_ST1_SVE))]
    "TARGET_SVE"
    "st1<VNx2_NARROW:Vesize>\t%1.<VNx2_WIDE:Vetype>, %2, %0"
+   [(set_attr "sve_type" "sve_store_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2448,2453 ****
--- 2492,2498 ----
  	  UNSPEC_STNT1_SVE))]
    "TARGET_SVE"
    "stnt1<Vesize>\t%1.<Vetype>, %2, %0"
+   [(set_attr "sve_type" "sve_store_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2496,2501 ****
--- 2541,2547 ----
       [ rk         , w , Z   , i   , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, sxtw %p3]
       [ rk         , w , Ui1 , i   , w , Upl  ] st1<Vesize>\t%4.s, %5, [%0, %1.s, uxtw %p3]
    }
+   [(set_attr "sve_type" "sve_scatterstore_32")]
  )
  
  ;; Predicated scatter stores for 64-bit elements.  The value of operand 2
***************
*** 2517,2522 ****
--- 2563,2569 ----
       [ rk         , w , Ui1 , w , Upl  ] st1<Vesize>\t%4.d, %5, [%0, %1.d]
       [ rk         , w , i   , w , Upl  ] st1<Vesize>\t%4.d, %5, [%0, %1.d, lsl %p3]
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; Likewise, but with the offset being extended from 32 bits.
***************
*** 2543,2548 ****
--- 2590,2596 ----
    {
      operands[6] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; Likewise, but with the offset being truncated to 32 bits and then
***************
*** 2571,2576 ****
--- 2619,2625 ----
    {
      operands[6] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; Likewise, but with the offset being truncated to 32 bits and then
***************
*** 2592,2597 ****
--- 2641,2647 ----
       [ rk      , w , Ui1 , w , Upl  ] st1<Vesize>\t%4.d, %5, [%0, %1.d, uxtw]
       [ rk      , w , i   , w , Upl  ] st1<Vesize>\t%4.d, %5, [%0, %1.d, uxtw %p3]
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2625,2630 ****
--- 2675,2681 ----
       [ w       , Z   , w , Upl  ] st1<VNx4_NARROW:Vesize>\t%4.s, %5, [%0, %1.s, sxtw %p3]
       [ w       , Ui1 , w , Upl  ] st1<VNx4_NARROW:Vesize>\t%4.s, %5, [%0, %1.s, uxtw %p3]
    }
+   [(set_attr "sve_type" "sve_scatterstore_32")]
  )
  
  ;; Predicated truncating scatter stores for 64-bit elements.  The value of
***************
*** 2647,2652 ****
--- 2698,2704 ----
       [ w       , w , Upl  ] st1<VNx2_NARROW:Vesize>\t%4.d, %5, [%0, %1.d]
       [ w       , w , Upl  ] st1<VNx2_NARROW:Vesize>\t%4.d, %5, [%0, %1.d, lsl %p3]
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; Likewise, but with the offset being sign-extended from 32 bits.
***************
*** 2675,2680 ****
--- 2727,2733 ----
    {
      operands[6] = copy_rtx (operands[5]);
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; Likewise, but with the offset being zero-extended from 32 bits.
***************
*** 2696,2701 ****
--- 2749,2755 ----
       [ rk      , w , w , Upl  ] st1<VNx2_NARROW:Vesize>\t%4.d, %5, [%0, %1.d, uxtw]
       [ rk      , w , w , Upl  ] st1<VNx2_NARROW:Vesize>\t%4.d, %5, [%0, %1.d, uxtw %p3]
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; =========================================================================
***************
*** 2808,2813 ****
--- 2862,2868 ----
      emit_insn (gen_aarch64_sve_ld1rq<mode> (operands[0], operands[1], gp));
      DONE;
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Duplicate an Advanced SIMD vector to fill an SVE vector (BE version).
***************
*** 2829,2834 ****
--- 2884,2890 ----
      operands[1] = gen_rtx_REG (<MODE>mode, REGNO (operands[1]));
      return "dup\t%0.q, %1.q[0]";
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; This is used for vec_duplicate<mode>s from memory, but can also
***************
*** 2844,2849 ****
--- 2900,2906 ----
  	  UNSPEC_SEL))]
    "TARGET_SVE"
    "ld1r<Vesize>\t%0.<Vetype>, %1/z, %2"
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  ;; Load 128 bits from memory under predicate control and duplicate to
***************
*** 2859,2864 ****
--- 2916,2922 ----
      operands[1] = gen_rtx_MEM (<VEL>mode, XEXP (operands[1], 0));
      return "ld1rq<Vesize>\t%0.<Vetype>, %2/z, %1";
    }
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  (define_insn "@aarch64_sve_ld1ro<mode>"
***************
*** 2873,2878 ****
--- 2931,2937 ----
      operands[1] = gen_rtx_MEM (<VEL>mode, XEXP (operands[1], 0));
      return "ld1ro<Vesize>\t%0.<Vetype>, %2/z, %1";
    }
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2939,2944 ****
--- 2998,3004 ----
       [ ??&w     , w , rZ ; yes            ] movprfx\t%0, %1\;insr\t%0.<Vetype>, %<vwcore>2
       [ ?&w      , w , w  ; yes            ] movprfx\t%0, %1\;insr\t%0.<Vetype>, %<Vetype>2
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2954,2963 ****
  	  (match_operand:<VEL> 1 "aarch64_sve_index_operand")
  	  (match_operand:<VEL> 2 "aarch64_sve_index_operand")))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2    ]
!      [ w        , Usi , r    ] index\t%0.<Vctype>, #%1, %<vccore>2
!      [ w        , r   , Usi  ] index\t%0.<Vctype>, %<vccore>1, #%2
!      [ w        , r   , r    ] index\t%0.<Vctype>, %<vccore>1, %<vccore>2
    }
  )
  
--- 3014,3023 ----
  	  (match_operand:<VEL> 1 "aarch64_sve_index_operand")
  	  (match_operand:<VEL> 2 "aarch64_sve_index_operand")))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2   ; attrs: sve_type   ]
!      [ w        , Usi , r   ; sve_int_index     ] index\t%0.<Vctype>, #%1, %<vccore>2
!      [ w        , r   , Usi ; sve_int_index     ] index\t%0.<Vctype>, %<vccore>1, #%2
!      [ w        , r   , r   ; sve_int_index     ] index\t%0.<Vctype>, %<vccore>1, %<vccore>2
    }
  )
  
***************
*** 2974,2979 ****
--- 3034,3040 ----
      operands[2] = aarch64_check_zero_based_sve_index_immediate (operands[2]);
      return "index\t%0.<Vctype>, %<vccore>1, #%2";
    }
+   [(set_attr "sve_type" "sve_int_index")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3124,3129 ****
--- 3185,3191 ----
      operands[0] = gen_rtx_REG (<MODE>mode, REGNO (operands[0]));
      return "dup\t%0.<Vetype>, %1.<Vetype>[%2]";
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Extract an element outside the range of DUP.  This pattern requires the
***************
*** 3141,3147 ****
  	    ? "ext\t%0.b, %0.b, %0.b, #%2"
  	    : "movprfx\t%0, %1\;ext\t%0.b, %0.b, %1.b, #%2");
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 3203,3210 ----
  	    ? "ext\t%0.b, %0.b, %0.b, #%2"
  	    : "movprfx\t%0, %1\;ext\t%0.b, %0.b, %1.b, #%2");
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3161,3169 ****
  	   (match_operand:SVE_ALL 2 "register_operand")]
  	  LAST))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2  ]
!      [ ?r       , Upl , w  ] last<ab>\t%<vccore>0, %1, %2.<Vctype>
!      [ w        , Upl , w  ] last<ab>\t%<Vctype>0, %1, %2.<Vctype>
    }
  )
  
--- 3224,3232 ----
  	   (match_operand:SVE_ALL 2 "register_operand")]
  	  LAST))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1   , 2 ; attrs: sve_type ]
!      [ ?r       , Upl , w ; sve_int_extract ] last<ab>\t%<vccore>0, %1, %2.<Vctype>
!      [ w        , Upl , w ; sve_int_extract ] last<ab>\t%<Vctype>0, %1, %2.<Vctype>
    }
  )
  
***************
*** 3253,3258 ****
--- 3316,3322 ----
       [ w        , Upl , 0 ; *              ] <sve_int_op>\t%Z0.<Vetype>, %1/m, %Z2.<Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%Z0, %Z2\;<sve_int_op>\t%Z0.<Vetype>, %1/m, %Z2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated integer unary arithmetic with merging.
***************
*** 3281,3286 ****
--- 3345,3351 ----
       [ w        , Upl , 0 ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated integer unary arithmetic, merging with an independent value.
***************
*** 3304,3309 ****
--- 3369,3375 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  
***************
*** 3385,3390 ****
--- 3451,3457 ----
       [ w        , Upl , 0 ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Another way of expressing the REVB, REVH and REVW patterns, with this
***************
*** 3404,3409 ****
--- 3471,3477 ----
       [ w        , Upl , 0 ; *              ] rev<SVE_ALL:Vcwtype>\t%0.<PRED_HSD:Vetype>, %1/m, %2.<PRED_HSD:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;rev<SVE_ALL:Vcwtype>\t%0.<PRED_HSD:Vetype>, %1/m, %2.<PRED_HSD:Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated integer unary operations with merging.
***************
*** 3422,3427 ****
--- 3490,3496 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3463,3468 ****
--- 3532,3538 ----
       [ w        , Upl , 0 ; *              ] <su>xt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<su>xt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
    }
+   [(set_attr "sve_type" "sve_int_extend")]
  )
  
  ;; Predicated truncate-and-sign-extend operations.
***************
*** 3480,3485 ****
--- 3550,3556 ----
       [ w        , Upl , 0 ; *              ] sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
+   [(set_attr "sve_type" "sve_int_extend")]
  )
  
  ;; Predicated truncate-and-sign-extend operations with merging.
***************
*** 3499,3504 ****
--- 3570,3576 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;sxt<SVE_PARTIAL_I:Vesize>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
+   [(set_attr "sve_type" "sve_int_extend")]
  )
  
  ;; Predicated truncate-and-zero-extend operations, merging with the
***************
*** 3520,3525 ****
--- 3592,3598 ----
       [ w        , Upl , 0 ; *              ] uxt%e3\t%0.<Vetype>, %1/m, %0.<Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;uxt%e3\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_extend")]
  )
  
  ;; Predicated truncate-and-zero-extend operations, merging with an
***************
*** 3545,3550 ****
--- 3618,3624 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;uxt%e3\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %4\;uxt%e3\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_extend")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3616,3621 ****
--- 3690,3696 ----
       [ w        , Upl , 0 ; *              ] cnot\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;cnot\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated logical inverse with merging.
***************
*** 3672,3677 ****
--- 3747,3753 ----
    {
      operands[5] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated logical inverse, merging with an independent value.
***************
*** 3709,3714 ****
--- 3785,3791 ----
    {
      operands[5] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3726,3731 ****
--- 3803,3809 ----
  	  SVE_FP_UNARY_INT))]
    "TARGET_SVE"
    "<sve_fp_op>\t%0.<Vetype>, %1.<Vetype>"
+   [(set_attr "sve_type" "sve_fp_exp")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3755,3760 ****
--- 3833,3839 ----
  	  SVE_FP_UNARY))]
    "TARGET_SVE"
    "<sve_fp_op>\t%0.<Vetype>, %1.<Vetype>"
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Unpredicated floating-point unary operations.
***************
*** 3800,3805 ****
--- 3879,3885 ----
       [ w        , Upl , 0 ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Predicated floating-point unary arithmetic with merging.
***************
*** 3838,3843 ****
--- 3918,3924 ----
    {
      operands[3] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "*cond_<optab><mode>_2_strict"
***************
*** 3856,3861 ****
--- 3937,3943 ----
       [ w        , Upl , 0 ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Predicated floating-point unary arithmetic, merging with an independent
***************
*** 3887,3892 ****
--- 3969,3975 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "*cond_<optab><mode>_any_strict"
***************
*** 3906,3911 ****
--- 3989,3995 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3986,3991 ****
--- 4070,4076 ----
  	  (match_operand:PRED_ALL 1 "register_operand" "Upa")))]
    "TARGET_SVE"
    "not\t%0.b, %1/z, %2.b"
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; Predicated predicate inverse in which the flags are set in the same
***************
*** 4005,4010 ****
--- 4090,4096 ----
  	(and:PRED_ALL (not:PRED_ALL (match_dup 2)) (match_dup 3)))]
    "TARGET_SVE"
    "nots\t%0.b, %1/z, %2.b"
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; Same, where only the flags result is interesting.
***************
*** 4022,4027 ****
--- 4108,4114 ----
     (clobber (match_scratch:PRED_ALL 0 "=Upa"))]
    "TARGET_SVE"
    "nots\t%0.b, %1/z, %2.b"
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; =========================================================================
***************
*** 4121,4126 ****
--- 4208,4214 ----
    [(set (match_dup 0)
  	(SVE_INT_BINARY_IMM:SVE_I_SIMD_DI (match_dup 2) (match_dup 3)))]
    ""
+   [(set_attr "sve_type" "sve_<sve_type_int>")]
  )
  
  ;; Unpredicated binary operations with a constant (post-RA only).
***************
*** 4135,4141 ****
    "@
     <sve_int_op>\t%Z0.<Vetype>, %Z0.<Vetype>, #%<sve_imm_prefix>2
     movprfx\t%Z0, %Z1\;<sve_int_op>\t%Z0.<Vetype>, %Z0.<Vetype>, #%<sve_imm_prefix>2"
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; Predicated integer operations with merging.
--- 4223,4230 ----
    "@
     <sve_int_op>\t%Z0.<Vetype>, %Z0.<Vetype>, #%<sve_imm_prefix>2
     movprfx\t%Z0, %Z1\;<sve_int_op>\t%Z0.<Vetype>, %Z0.<Vetype>, #%<sve_imm_prefix>2"
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_<sve_type_int>")]
  )
  
  ;; Predicated integer operations with merging.
***************
*** 4166,4171 ****
--- 4255,4261 ----
       [ w        , Upl , 0 , w ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_int>")]
  )
  
  ;; Predicated integer operations, merging with the second input.
***************
*** 4183,4188 ****
--- 4273,4279 ----
       [ w        , Upl , w , 0 ; *              ] <sve_int_op_rev>\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %3\;<sve_int_op_rev>\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_int>")]
  )
  
  ;; Predicated integer operations, merging with an independent value.
***************
*** 4213,4219 ****
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 4304,4311 ----
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_<sve_type_int>")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 4246,4251 ****
--- 4338,4344 ----
       [ ?w       , w  , vsn ; yes            ] movprfx\t%0, %1\;sub\t%0.<Vetype>, %0.<Vetype>, #%N2
       [ w        , w  , w   ; *              ] add\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Merging forms are handled through SVE_INT_BINARY.
***************
*** 4269,4274 ****
--- 4362,4368 ----
       [ w        , vsa , 0 ; *              ] subr\t%0.<Vetype>, %0.<Vetype>, #%D1
       [ ?&w      , vsa , w ; yes            ] movprfx\t%0, %2\;subr\t%0.<Vetype>, %0.<Vetype>, #%D1
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Merging forms are handled through SVE_INT_BINARY.
***************
*** 4290,4295 ****
--- 4384,4390 ----
  	  UNSPEC_ADR))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    "adr\t%0.<Vetype>, [%1.<Vetype>, %2.<Vetype>]"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Same, but with the offset being sign-extended from the low 32 bits.
***************
*** 4310,4315 ****
--- 4405,4411 ----
    {
      operands[3] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Same, but with the offset being zero-extended from the low 32 bits.
***************
*** 4323,4328 ****
--- 4419,4425 ----
  	  UNSPEC_ADR))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    "adr\t%0.d, [%1.d, %2.d, uxtw]"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Same, matching as a PLUS rather than unspec.
***************
*** 4335,4340 ****
--- 4432,4438 ----
  	  (match_operand:VNx2DI 1 "register_operand" "w")))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    "adr\t%0.d, [%1.d, %2.d, uxtw]"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; ADR with a nonzero shift.
***************
*** 4357,4362 ****
--- 4455,4461 ----
  	  (match_operand:SVE_24I 1 "register_operand" "w")))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    "adr\t%0.<Vctype>, [%1.<Vctype>, %2.<Vctype>, lsl %3]"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Same, but with the index being sign-extended from the low 32 bits.
***************
*** 4378,4383 ****
--- 4477,4483 ----
    {
      operands[4] = CONSTM1_RTX (VNx2BImode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Same, but with the index being zero-extended from the low 32 bits.
***************
*** 4392,4397 ****
--- 4492,4498 ----
  	  (match_operand:VNx2DI 1 "register_operand" "w")))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    "adr\t%0.d, [%1.d, %2.d, uxtw %3]"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 4438,4443 ****
--- 4539,4545 ----
       [ w        , Upl , 0  , w ; *              ] <su>abd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w  , w ; yes            ] movprfx\t%0, %2\;<su>abd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_expand "@aarch64_cond_<su>abd<mode>"
***************
*** 4494,4499 ****
--- 4596,4602 ----
    {
      operands[4] = operands[5] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated integer absolute difference, merging with the second input.
***************
*** 4525,4530 ****
--- 4628,4634 ----
    {
      operands[4] = operands[5] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated integer absolute difference, merging with an independent value.
***************
*** 4572,4578 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 4676,4683 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 4598,4603 ****
--- 4703,4709 ----
       [ ?&w      , w , vsS ; yes            ] movprfx\t%0, %1\;<binqops_op_rev>\t%0.<Vetype>, %0.<Vetype>, #%N2
       [ w        , w , w   ; *              ] <binqops_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Unpredicated saturating unsigned addition and subtraction.
***************
*** 4612,4617 ****
--- 4718,4724 ----
       [ ?&w      , w , vsa ; yes            ] movprfx\t%0, %1\;<binqops_op>\t%0.<Vetype>, %0.<Vetype>, #%D2
       [ w        , w , w   ; *              ] <binqops_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 4653,4658 ****
--- 4760,4766 ----
       [ w        , Upl , 0  , w ; *              ] <su>mulh\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w  , w ; yes            ] movprfx\t%0, %2\;<su>mulh\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; Predicated highpart multiplications with merging.
***************
*** 4690,4695 ****
--- 4798,4804 ----
       [ w        , Upl , 0 , w ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; Predicated highpart multiplications, merging with zero.
***************
*** 4708,4714 ****
       [ &w       , Upl , 0  , w  ] movprfx\t%0.<Vetype>, %1/z, %0.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ &w       , Upl , w  , w  ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
!   [(set_attr "movprfx" "yes")])
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Division
--- 4817,4825 ----
       [ &w       , Upl , 0  , w  ] movprfx\t%0.<Vetype>, %1/z, %0.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ &w       , Upl , w  , w  ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_mul")]
! )
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Division
***************
*** 4753,4758 ****
--- 4864,4870 ----
       [ w        , Upl , w , 0 ; *              ] <sve_int_op>r\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, %Z2.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%Z0, %Z2\;<sve_int_op>\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, %Z3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_div")]
  )
  
  ;; Predicated integer division with merging.
***************
*** 4783,4788 ****
--- 4895,4901 ----
       [ w        , Upl , 0 , w ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_div")]
  )
  
  ;; Predicated integer division, merging with the second input.
***************
*** 4800,4805 ****
--- 4913,4919 ----
       [ w        , Upl , w , 0 ; *              ] <sve_int_op_rev>\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %3\;<sve_int_op_rev>\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_div")]
  )
  
  ;; Predicated integer division, merging with an independent value.
***************
*** 4830,4836 ****
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 4944,4951 ----
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_div")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 4854,4859 ****
--- 4969,4975 ----
       [ ?w       , w  , vsl ; yes            ] movprfx\t%0, %1\;<logical>\t%0.<Vetype>, %0.<Vetype>, #%C2
       [ w        , w  , w   ; *              ] <logical>\t%0.d, %1.d, %2.d
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Merging forms are handled through SVE_INT_BINARY.
***************
*** 4896,4901 ****
--- 5012,5018 ----
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated BIC with merging.
***************
*** 4927,4932 ****
--- 5044,5050 ----
       [ w        , Upl , 0 , w ; *              ] bic\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;bic\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated integer BIC, merging with an independent value.
***************
*** 4955,4961 ****
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 5073,5080 ----
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 5058,5063 ****
--- 5177,5183 ----
    "&& !register_operand (operands[3], <MODE>mode)"
    [(set (match_dup 0) (ASHIFT:SVE_I (match_dup 2) (match_dup 3)))]
    ""
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Unpredicated shift operations by a constant.
***************
*** 5069,5077 ****
  	  (match_operand:SVE_I 1 "register_operand")
  	  (match_operand:SVE_I 2 "aarch64_simd_lshift_imm")))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1 , 2   ]
!      [ w	, w , vs1 ] add\t%0.<Vetype>, %1.<Vetype>, %1.<Vetype>
!      [ w	, w , Dl  ] lsl\t%0.<Vetype>, %1.<Vetype>, #%2
    }
  )
  
--- 5189,5197 ----
  	  (match_operand:SVE_I 1 "register_operand")
  	  (match_operand:SVE_I 2 "aarch64_simd_lshift_imm")))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1 , 2   ; attrs: sve_type ]
!      [ w	, w , vs1 ; sve_int_general    ] add\t%0.<Vetype>, %1.<Vetype>, %1.<Vetype>
!      [ w	, w , Dl  ; sve_int_shift   ] lsl\t%0.<Vetype>, %1.<Vetype>, #%2
    }
  )
  
***************
*** 5082,5087 ****
--- 5202,5208 ----
  	  (match_operand:SVE_I 2 "aarch64_simd_rshift_imm")))]
    "TARGET_SVE"
    "<shift>\t%0.<Vetype>, %1.<Vetype>, #%2"
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Predicated integer shift, merging with the first input.
***************
*** 5099,5104 ****
--- 5220,5226 ----
       [ w        , Upl , 0 ; *              ] <shift>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<shift>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
    }
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Predicated integer shift, merging with an independent value.
***************
*** 5125,5131 ****
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; Unpredicated shifts of narrow elements by 64-bit amounts.
--- 5247,5254 ----
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Unpredicated shifts of narrow elements by 64-bit amounts.
***************
*** 5137,5142 ****
--- 5260,5266 ----
  	  SVE_SHIFT_WIDE))]
    "TARGET_SVE"
    "<sve_int_op>\t%0.<Vetype>, %1.<Vetype>, %2.d"
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Merging predicated shifts of narrow elements by 64-bit amounts.
***************
*** 5170,5175 ****
--- 5294,5300 ----
       [ w        , Upl , 0 , w ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.d
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.d
    }
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Predicated shifts of narrow elements by 64-bit amounts, merging with zero.
***************
*** 5188,5194 ****
       [ &w       , Upl , 0 , w  ] movprfx\t%0.<Vetype>, %1/z, %0.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.d
       [ &w       , Upl , w , w  ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.d
    }
!   [(set_attr "movprfx" "yes")])
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Shifts (rounding towards 0)
--- 5313,5320 ----
       [ &w       , Upl , 0 , w  ] movprfx\t%0.<Vetype>, %1/z, %0.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.d
       [ &w       , Upl , w , w  ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.d
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_shift")])
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Shifts (rounding towards 0)
***************
*** 5231,5236 ****
--- 5357,5363 ----
       [ w        , Upl , 0 ; *              ] asrd\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, #%3
       [ ?&w      , Upl , w ; yes            ] movprfx\t%Z0, %Z2\;asrd\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, #%3
    }
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Predicated shift with merging.
***************
*** 5276,5281 ****
--- 5403,5409 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Predicated shift, merging with an independent value.
***************
*** 5306,5312 ****
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 5434,5441 ----
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 5343,5348 ****
--- 5472,5478 ----
  	  SVE_FP_BINARY_INT))]
    "TARGET_SVE"
    "<sve_fp_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Predicated floating-point binary operations that take an integer
***************
*** 5360,5365 ****
--- 5490,5496 ----
       [ w        , Upl , 0 , w ; *              ] <sve_fp_op>\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, %Z3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%Z0, %Z2\;<sve_fp_op>\t%Z0.<Vetype>, %1/m, %Z0.<Vetype>, %Z3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Predicated floating-point binary operations with merging, taking an
***************
*** 5402,5407 ****
--- 5533,5539 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn "*cond_<optab><mode>_2_strict"
***************
*** 5421,5426 ****
--- 5553,5559 ----
       [ w        , Upl , 0 , w ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Predicated floating-point binary operations that take an integer as
***************
*** 5460,5466 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
--- 5593,5600 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
***************
*** 5490,5496 ****
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 5624,5631 ----
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 5528,5534 ****
  	  (match_operand:SVE_F_B16B16 1 "register_operand" "w")
  	  (match_operand:SVE_F_B16B16 2 "register_operand" "w")))]
    "TARGET_SVE && reload_completed"
!   "<b><sve_fp_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>")
  
  ;; -------------------------------------------------------------------------
  ;; ---- [FP] General binary arithmetic corresponding to unspecs
--- 5663,5671 ----
  	  (match_operand:SVE_F_B16B16 1 "register_operand" "w")
  	  (match_operand:SVE_F_B16B16 2 "register_operand" "w")))]
    "TARGET_SVE && reload_completed"
!   "<b><sve_fp_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
!   [(set_attr "sve_type" "sve_<sve_type_fp>")]
! )
  
  ;; -------------------------------------------------------------------------
  ;; ---- [FP] General binary arithmetic corresponding to unspecs
***************
*** 5565,5570 ****
--- 5702,5708 ----
  	  SVE_FP_BINARY))]
    "TARGET_SVE"
    "<sve_fp_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Unpredicated floating-point binary operations that need to be predicated
***************
*** 5598,5603 ****
--- 5736,5742 ----
       [ w        , Upl , w , 0 ; *              ] <sve_fp_op_rev>\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Predicated floating-point operations with merging.
***************
*** 5641,5646 ****
--- 5780,5786 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "*cond_<optab><mode>_2_strict"
***************
*** 5660,5665 ****
--- 5800,5806 ----
       [ w        , Upl , 0 , w ; *              ] <b><sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<b><sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Same for operations that take a 1-bit constant.
***************
*** 5684,5689 ****
--- 5825,5831 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "*cond_<optab><mode>_2_const_strict"
***************
*** 5703,5708 ****
--- 5845,5851 ----
       [ w        , Upl , 0 ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
       [ ?w       , Upl , w ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Predicated floating-point operations, merging with the second input.
***************
*** 5727,5732 ****
--- 5870,5876 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "*cond_<optab><mode>_3_strict"
***************
*** 5746,5751 ****
--- 5890,5896 ----
       [ w        , Upl , w , 0 ; *              ] <b><sve_fp_op_rev>\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %3\;<b><sve_fp_op_rev>\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Predicated floating-point operations, merging with an independent value.
***************
*** 5790,5796 ****
    }
    [(set_attr "movprfx" "yes")
     (set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "<supports_bf16_rev>")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
--- 5935,5942 ----
    }
    [(set_attr "movprfx" "yes")
     (set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "<supports_bf16_rev>")
!    (set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
***************
*** 5827,5833 ****
    }
    [(set_attr "movprfx" "yes")
     (set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "<supports_bf16_rev>")]
  )
  
  ;; Same for operations that take a 1-bit constant.
--- 5973,5980 ----
    }
    [(set_attr "movprfx" "yes")
     (set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "<supports_bf16_rev>")
!    (set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Same for operations that take a 1-bit constant.
***************
*** 5864,5870 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_const_strict"
--- 6011,6018 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_const_strict"
***************
*** 5893,5899 ****
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 6041,6048 ----
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 5923,5928 ****
--- 6072,6078 ----
       [ ?&w      , Upl , w  , vsN , i   ; yes            ] movprfx\t%0, %2\;fsub\t%0.<Vetype>, %1/m, %0.<Vetype>, #%N3
       [ ?&w      , Upl , w  , w   , Ui1 ; yes            ] movprfx\t%0, %2\;fadd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; Predicated floating-point addition of a constant, merging with the
***************
*** 5950,5955 ****
--- 6100,6106 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_insn "*cond_add<mode>_2_const_strict"
***************
*** 5971,5976 ****
--- 6122,6128 ----
       [ ?w       , Upl , w , vsA ; yes            ] movprfx\t%0, %2\;fadd\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
       [ ?w       , Upl , w , vsN ; yes            ] movprfx\t%0, %2\;fsub\t%0.<Vetype>, %1/m, %0.<Vetype>, #%N3
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; Predicated floating-point addition of a constant, merging with an
***************
*** 6011,6017 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  (define_insn_and_rewrite "*cond_add<mode>_any_const_strict"
--- 6163,6170 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_insn_and_rewrite "*cond_add<mode>_any_const_strict"
***************
*** 6043,6049 ****
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; Register merging forms are handled through SVE_COND_FP_BINARY.
--- 6196,6203 ----
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; Register merging forms are handled through SVE_COND_FP_BINARY.
***************
*** 6069,6074 ****
--- 6223,6229 ----
       [ w        , Upl , 0 , w ; *              ] fcadd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>, #<rot>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;fcadd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>, #<rot>
    }
+   [(set_attr "sve_type" "sve_fp_misc")]
  )
  
  ;; Predicated FCADD with merging.
***************
*** 6123,6128 ****
--- 6278,6284 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_misc")]
  )
  
  (define_insn "*cond_<optab><mode>_2_strict"
***************
*** 6142,6147 ****
--- 6298,6304 ----
       [ w        , Upl , 0 , w ; *              ] fcadd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>, #<rot>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;fcadd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>, #<rot>
    }
+   [(set_attr "sve_type" "sve_fp_misc")]
  )
  
  ;; Predicated FCADD, merging with an independent value.
***************
*** 6179,6185 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
--- 6336,6343 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_misc")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
***************
*** 6209,6215 ****
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 6367,6374 ----
  					     operands[4], operands[1]));
      operands[4] = operands[2] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_misc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 6238,6243 ****
--- 6397,6403 ----
       [ ?&w      , Upl , vsA , w , i   ; yes            ] movprfx\t%0, %3\;fsubr\t%0.<Vetype>, %1/m, %0.<Vetype>, #%2
       [ ?&w      , Upl , w   , w , Ui1 ; yes            ] movprfx\t%0, %2\;fsub\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; Predicated floating-point subtraction from a constant, merging with the
***************
*** 6263,6268 ****
--- 6423,6429 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_insn "*cond_sub<mode>_3_const_strict"
***************
*** 6282,6287 ****
--- 6443,6449 ----
       [ w        , Upl , 0 ; *              ] fsubr\t%0.<Vetype>, %1/m, %0.<Vetype>, #%2
       [ ?w       , Upl , w ; yes            ] movprfx\t%0, %3\;fsubr\t%0.<Vetype>, %1/m, %0.<Vetype>, #%2
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; Predicated floating-point subtraction from a constant, merging with an
***************
*** 6319,6325 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  (define_insn_and_rewrite "*cond_sub<mode>_const_strict"
--- 6481,6488 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_insn_and_rewrite "*cond_sub<mode>_const_strict"
***************
*** 6348,6354 ****
                                               operands[4], operands[1]));
      operands[4] = operands[3] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  ;; Register merging forms are handled through SVE_COND_FP_BINARY.
  
--- 6511,6518 ----
                                               operands[4], operands[1]));
      operands[4] = operands[3] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_arith")]
  )
  ;; Register merging forms are handled through SVE_COND_FP_BINARY.
  
***************
*** 6397,6402 ****
--- 6561,6567 ----
    {
      operands[5] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_insn "*aarch64_pred_abd<mode>_strict"
***************
*** 6416,6421 ****
--- 6581,6587 ----
       [ w        , Upl , 0  , w ; *              ] fabd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w  , w ; yes            ] movprfx\t%0, %2\;fabd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_expand "@aarch64_cond_abd<mode>"
***************
*** 6469,6474 ****
--- 6635,6641 ----
      operands[4] = copy_rtx (operands[1]);
      operands[5] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_insn "*aarch64_cond_abd<mode>_2_strict"
***************
*** 6492,6497 ****
--- 6659,6665 ----
       [ w        , Upl , 0 , w ; *              ] fabd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;fabd\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; Predicated floating-point absolute difference, merging with the second
***************
*** 6523,6528 ****
--- 6691,6697 ----
      operands[4] = copy_rtx (operands[1]);
      operands[5] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_insn "*aarch64_cond_abd<mode>_3_strict"
***************
*** 6546,6551 ****
--- 6715,6721 ----
       [ w        , Upl , w , 0 ; *              ] fabd\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %3\;fabd\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; Predicated floating-point absolute difference, merging with an
***************
*** 6595,6601 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  (define_insn_and_rewrite "*aarch64_cond_abd<mode>_any_strict"
--- 6765,6772 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_insn_and_rewrite "*aarch64_cond_abd<mode>_any_strict"
***************
*** 6632,6638 ****
  					     operands[4], operands[1]));
      operands[4] = operands[3] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 6803,6810 ----
  					     operands[4], operands[1]));
      operands[4] = operands[3] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 6660,6665 ****
--- 6832,6838 ----
       [ ?&w      , Upl , w  , vsM , i   ; yes            ] movprfx\t%0, %2\;fmul\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
       [ ?&w      , Upl , w  , w   , Ui1 ; yes            ] movprfx\t%0, %2\;fmul\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Merging forms are handled through SVE_COND_FP_BINARY and
***************
*** 6676,6681 ****
--- 6849,6855 ----
  	  (match_operand:SVE_FULL_F_B16B16 1 "register_operand" "w")))]
    "TARGET_SVE"
    "<b>fmul\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>[%3]"
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 6739,6744 ****
--- 6913,6919 ----
  	  LOGICALF))]
    "TARGET_SVE"
    "<logicalf_op>\t%0.d, %1.d, %2.d"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 6893,6898 ****
--- 7068,7074 ----
       [ ?&w      , Upl , w  , vsB ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
       [ ?&w      , Upl , w  , w   ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; Merging forms are handled through SVE_COND_FP_BINARY and
***************
*** 6923,6928 ****
--- 7099,7105 ----
       [ ?Upa    , 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; Unpredicated predicate EOR and ORR.
***************
*** 6953,6958 ****
--- 7130,7136 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; Perform a logical operation on operands 2 and 3, using operand 1 as
***************
*** 6979,6984 ****
--- 7157,7163 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; Same with just the flags result.
***************
*** 7001,7006 ****
--- 7180,7186 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 7025,7030 ****
--- 7205,7211 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; Same, but set the flags as a side-effect.
***************
*** 7052,7057 ****
--- 7233,7239 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; Same with just the flags result.
***************
*** 7075,7080 ****
--- 7257,7263 ----
       [ ?Upa     , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa      , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 7099,7104 ****
--- 7282,7288 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; Same, but set the flags as a side-effect.
***************
*** 7127,7132 ****
--- 7311,7317 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; Same with just the flags result.
***************
*** 7151,7156 ****
--- 7336,7342 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; =========================================================================
***************
*** 7201,7206 ****
--- 7387,7393 ----
       [ w        , Upl , w  , w , 0 ; *              ] mla\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w  , w , w ; yes            ] movprfx\t%0, %4\;mla\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; Predicated integer addition of product with merging.
***************
*** 7243,7248 ****
--- 7430,7436 ----
       [ w        , Upl , 0 , w , w ; *              ] mad\t%0.<Vetype>, %1/m, %3.<Vetype>, %4.<Vetype>
       [ ?&w      , Upl , w , w , w ; yes            ] movprfx\t%0, %2\;mad\t%0.<Vetype>, %1/m, %3.<Vetype>, %4.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; Predicated integer addition of product, merging with the third input.
***************
*** 7262,7267 ****
--- 7450,7456 ----
       [ w        , Upl , w , w , 0 ; *              ] mla\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w , w ; yes            ] movprfx\t%0, %4\;mla\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; Predicated integer addition of product, merging with an independent value.
***************
*** 7296,7302 ****
  					     operands[5], operands[1]));
      operands[5] = operands[4] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 7485,7492 ----
  					     operands[5], operands[1]));
      operands[5] = operands[4] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 7343,7348 ****
--- 7533,7539 ----
       [ w        , Upl , w  , w , 0 ; *              ] mls\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w  , w , w ; yes            ] movprfx\t%0, %4\;mls\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; Predicated integer subtraction of product with merging.
***************
*** 7385,7390 ****
--- 7576,7582 ----
       [ w        , Upl , 0 , w , w ; *              ] msb\t%0.<Vetype>, %1/m, %3.<Vetype>, %4.<Vetype>
       [ ?&w      , Upl , w , w , w ; yes            ] movprfx\t%0, %2\;msb\t%0.<Vetype>, %1/m, %3.<Vetype>, %4.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; Predicated integer subtraction of product, merging with the third input.
***************
*** 7404,7409 ****
--- 7596,7602 ----
       [ w        , Upl , w , w , 0 ; *              ] mls\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w , w ; yes            ] movprfx\t%0, %4\;mls\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; Predicated integer subtraction of product, merging with an
***************
*** 7439,7445 ****
  					     operands[5], operands[1]));
      operands[5] = operands[4] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 7632,7639 ----
  					     operands[5], operands[1]));
      operands[5] = operands[4] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 7466,7471 ****
--- 7660,7666 ----
       [ w        , w , w , 0 ; *              ] <sur>dot\t%0.<Vetype>, %1.<Vetype_fourth>, %2.<Vetype_fourth>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %3\;<sur>dot\t%0.<Vetype>, %1.<Vetype_fourth>, %2.<Vetype_fourth>
    }
+   [(set_attr "sve_type" "sve_int_dot")]
  )
  
  ;; Four-element integer dot-product by selected lanes with accumulation.
***************
*** 7489,7494 ****
--- 7684,7690 ----
       [ w        , w , <SVE_FULL_SDI:sve_lane_con> , 0 ; *              ] <sur>dot\t%0.<SVE_FULL_SDI:Vetype>, %1.<SVE_FULL_BHI:Vetype>, %2.<SVE_FULL_BHI:Vetype>[%3]
       [ ?&w      , w , <SVE_FULL_SDI:sve_lane_con> , w ; yes            ] movprfx\t%0, %4\;<sur>dot\t%0.<SVE_FULL_SDI:Vetype>, %1.<SVE_FULL_BHI:Vetype>, %2.<SVE_FULL_BHI:Vetype>[%3]
    }
+   [(set_attr "sve_type" "sve_int_dot")]
  )
  
  (define_insn "@<sur>dot_prod<mode><vsi2qi>"
***************
*** 7504,7509 ****
--- 7700,7706 ----
       [ w        , w , w , 0 ; *              ] <sur>dot\t%0.s, %1.b, %2.b
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %3\;<sur>dot\t%0.s, %1.b, %2.b
    }
+   [(set_attr "sve_type" "sve_int_dot")]
  )
  
  (define_insn "@aarch64_<sur>dot_prod_lane<VNx4SI_ONLY:mode><VNx16QI_ONLY:mode>"
***************
*** 7522,7527 ****
--- 7719,7725 ----
       [ w        , w , y , 0 ; *              ] <sur>dot\t%0.s, %1.b, %2.b[%3]
       [ ?&w      , w , y , w ; yes            ] movprfx\t%0, %4\;<sur>dot\t%0.s, %1.b, %2.b[%3]
    }
+   [(set_attr "sve_type" "sve_int_dot")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 7577,7582 ****
--- 7775,7781 ----
       [ w        , 0 , w , w ; *              ] <sur>mmla\t%0.s, %2.b, %3.b
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sur>mmla\t%0.s, %2.b, %3.b
    }
+   [(set_attr "sve_type" "sve_int_dot")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 7626,7632 ****
       [ ?&w      , Upl , w  , w , w ; yes , *    ] movprfx\t%0, %4\;<b><sve_fmla_op>\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
    }
    [(set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "false")]
  )
  
  ;; Predicated floating-point ternary operations with merging.
--- 7825,7832 ----
       [ ?&w      , Upl , w  , w , w ; yes , *    ] movprfx\t%0, %4\;<b><sve_fmla_op>\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
    }
    [(set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "false")
!    (set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Predicated floating-point ternary operations with merging.
***************
*** 7677,7682 ****
--- 7877,7883 ----
    {
      operands[5] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn "*cond_<optab><mode>_2_strict"
***************
*** 7697,7702 ****
--- 7898,7904 ----
       [ w        , Upl , 0 , w , w ; *              ] <sve_fmad_op>\t%0.<Vetype>, %1/m, %3.<Vetype>, %4.<Vetype>
       [ ?&w      , Upl , w , w , w ; yes            ] movprfx\t%0, %2\;<sve_fmad_op>\t%0.<Vetype>, %1/m, %3.<Vetype>, %4.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Predicated floating-point ternary operations, merging with the
***************
*** 7723,7728 ****
--- 7925,7931 ----
    {
      operands[5] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn "*cond_<optab><mode>_4_strict"
***************
*** 7743,7748 ****
--- 7946,7952 ----
       [ w        , Upl , w , w , 0 ; *              ] <b><sve_fmla_op>\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w , w ; yes            ] movprfx\t%0, %4\;<b><sve_fmla_op>\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Predicated floating-point ternary operations, merging with an
***************
*** 7790,7796 ****
    }
    [(set_attr "movprfx" "yes")
     (set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "false")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
--- 7994,8001 ----
    }
    [(set_attr "movprfx" "yes")
     (set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "false")
!    (set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
***************
*** 7829,7835 ****
    }
    [(set_attr "movprfx" "yes")
     (set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "false")]
  )
  
  ;; Unpredicated FMLA and FMLS by selected lanes.  It doesn't seem worth using
--- 8034,8041 ----
    }
    [(set_attr "movprfx" "yes")
     (set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "false")
!    (set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Unpredicated FMLA and FMLS by selected lanes.  It doesn't seem worth using
***************
*** 7849,7854 ****
--- 8055,8061 ----
       [ w        , w , <sve_lane_con> , 0 ; *              ] <b><sve_fp_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>[%3]
       [ ?&w      , w , <sve_lane_con> , w ; yes            ] movprfx\t%0, %4\;<b><sve_fp_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>[%3]
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 7873,7878 ****
--- 8080,8086 ----
       [ w        , Upl , w , w , 0 ; *              ] fcmla\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>, #<rot>
       [ ?&w      , Upl , w , w , w ; yes            ] movprfx\t%0, %4\;fcmla\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>, #<rot>
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; unpredicated optab pattern for auto-vectorizer
***************
*** 7971,7976 ****
--- 8179,8185 ----
    {
      operands[5] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn "*cond_<optab><mode>_4_strict"
***************
*** 7991,7996 ****
--- 8200,8206 ----
       [ w        , Upl , w , w , 0 ; *              ] fcmla\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>, #<rot>
       [ ?&w      , Upl , w , w , w ; yes            ] movprfx\t%0, %4\;fcmla\t%0.<Vetype>, %1/m, %2.<Vetype>, %3.<Vetype>, #<rot>
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Predicated FCMLA, merging with an independent value.
***************
*** 8029,8035 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
--- 8239,8246 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn_and_rewrite "*cond_<optab><mode>_any_strict"
***************
*** 8060,8066 ****
  					     operands[5], operands[1]));
      operands[5] = operands[4] = operands[0];
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; Unpredicated FCMLA with indexing.
--- 8271,8278 ----
  					     operands[5], operands[1]));
      operands[5] = operands[4] = operands[0];
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; Unpredicated FCMLA with indexing.
***************
*** 8079,8084 ****
--- 8291,8297 ----
       [ w        , w , <sve_lane_pair_con> , 0 ; *              ] fcmla\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>[%3], #<rot>
       [ ?&w      , w , <sve_lane_pair_con> , w ; yes            ] movprfx\t%0, %4\;fcmla\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>[%3], #<rot>
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 8100,8105 ****
--- 8313,8319 ----
       [ w        , 0 , w ; *              ] ftmad\t%0.<Vetype>, %0.<Vetype>, %2.<Vetype>, #%3
       [ ?&w      , w , w ; yes            ] movprfx\t%0, %1\;ftmad\t%0.<Vetype>, %0.<Vetype>, %2.<Vetype>, #%3
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 8126,8131 ****
--- 8340,8346 ----
       [ w        , 0 , w , w ; *              ] <sve_fp_op>\t%0.s, %2.h, %3.h
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sve_fp_op>\t%0.s, %2.h, %3.h
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; The immediate range is enforced before generating the instruction.
***************
*** 8142,8147 ****
--- 8357,8363 ----
       [ w        , 0 , w , y ; *              ] <sve_fp_op>\t%0.s, %2.h, %3.h[%4]
       [ ?&w      , w , w , y ; yes            ] movprfx\t%0, %1\;<sve_fp_op>\t%0.s, %2.h, %3.h[%4]
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 8164,8169 ****
--- 8380,8386 ----
       [ w        , 0 , w , w ; *              ] <sve_fp_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sve_fp_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; =========================================================================
***************
*** 8356,8361 ****
--- 8573,8579 ----
       [ ?Upl     , 0  , w , w            ; yes                 ] ^
       [ Upa      , Upl, w , w            ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_int_cmp_set")]
  )
  
  ;; Likewise, but yield a VNx16BI result regardless of the element width.
***************
*** 8462,8467 ****
--- 8680,8686 ----
      operands[6] = copy_rtx (operands[4]);
      operands[7] = operands[5];
    }
+   [(set_attr "sve_type" "sve_int_cmp_set")]
  )
  
  (define_insn_and_rewrite "*cmp<cmp_op><mode>_acle_cc"
***************
*** 8539,8544 ****
--- 8758,8764 ----
      operands[6] = copy_rtx (operands[4]);
      operands[7] = operands[5];
    }
+   [(set_attr "sve_type" "sve_int_cmp_set")]
  )
  
  ;; Predicated integer comparisons, formed by combining a PTRUE-predicated
***************
*** 8570,8575 ****
--- 8790,8797 ----
  		(match_dup 3))]
  	     UNSPEC_PRED_Z))
        (clobber (reg:CC_NZC CC_REGNUM))])]
+   {}
+   [(set_attr "sve_type" "sve_int_cmp_set")]
  )
  
  (define_insn_and_split "*cmp<cmp_op><mode>_acle_and"
***************
*** 8628,8633 ****
--- 8850,8856 ----
       [ ?Upl    ,  0  ,  , w, w; yes                 ] ^
       [ Upa     ,  Upl,  , w, w; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_int_cmp_set")]
  )
  
  (define_expand "@aarch64_pred_cmp<cmp_op><mode>_wide"
***************
*** 8713,8718 ****
--- 8936,8942 ----
      operands[6] = copy_rtx (operands[4]);
      operands[7] = operands[5];
    }
+   [(set_attr "sve_type" "sve_int_cmp_set")]
  )
  
  (define_insn_and_rewrite "*aarch64_pred_cmp<cmp_op><mode>_wide_cc"
***************
*** 8755,8760 ****
--- 8979,8985 ----
      operands[6] = copy_rtx (operands[4]);
      operands[7] = operands[5];
    }
+   [(set_attr "sve_type" "sve_int_cmp_set")]
  )
  
  ;; Predicated integer wide comparisons in which only the flags result
***************
*** 8787,8792 ****
--- 9012,9018 ----
      operands[6] = copy_rtx (operands[4]);
      operands[7] = operands[5];
    }
+   [(set_attr "sve_type" "sve_int_cmp_set")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 8822,8827 ****
--- 9048,9054 ----
     (clobber (reg:CC_NZC CC_REGNUM))]
    "TARGET_SVE"
    "while<cmp_op>\t%0.<PRED_ALL:Vetype>, %<w>1, %<w>2"
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; Likewise, but yield a VNx16BI result regardless of the element width.
***************
*** 8905,8910 ****
--- 9132,9138 ----
      operands[3] = CONSTM1_RTX (VNx16BImode);
      operands[4] = CONSTM1_RTX (<PRED_ALL:MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  (define_insn_and_rewrite "*while_<while_optab_cmp><GPI:mode><PRED_HSD:mode>_acle_cc"
***************
*** 8962,8967 ****
--- 9190,9196 ----
      operands[3] = CONSTM1_RTX (VNx16BImode);
      operands[4] = CONSTM1_RTX (<PRED_ALL:MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9007,9012 ****
--- 9236,9242 ----
       [ Upa      , Upl , w , Dz  ] fcm<cmp_op>\t%0.<Vetype>, %1/z, %3.<Vetype>, #0.0
       [ Upa      , Upl , w , w   ] fcm<cmp_op>\t%0.<Vetype>, %1/z, %3.<Vetype>, %4.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  (define_expand "@aarch64_pred_fcm<cmp_op><mode>_acle"
***************
*** 9057,9062 ****
--- 9287,9293 ----
  	  UNSPEC_COND_FCMUO))]
    "TARGET_SVE"
    "fcmuo\t%0.<Vetype>, %1/z, %3.<Vetype>, %4.<Vetype>"
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  (define_expand "@aarch64_pred_fcmuo<mode>_acle"
***************
*** 9121,9126 ****
--- 9352,9359 ----
  	   (match_dup 2)
  	   (match_dup 3)]
  	  SVE_COND_FP_CMP_I0))]
+   {}
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  ;; Same for unordered comparisons.
***************
*** 9144,9149 ****
--- 9377,9384 ----
  	   (match_dup 2)
  	   (match_dup 3)]
  	  UNSPEC_COND_FCMUO))]
+   {}
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  ;; Similar to *fcm<cmp_op><mode>_and_combine, but for BIC rather than AND.
***************
*** 9182,9187 ****
--- 9417,9423 ----
    if (can_create_pseudo_p ())
      operands[5] = gen_reg_rtx (<VPRED>mode);
  }
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  ;; Make sure that we expand to a nor when the operand 4 of
***************
*** 9223,9228 ****
--- 9459,9465 ----
    if (can_create_pseudo_p ())
      operands[5] = gen_reg_rtx (<VPRED>mode);
  }
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  ;; Same for unordered comparisons.
***************
*** 9259,9264 ****
--- 9496,9502 ----
    if (can_create_pseudo_p ())
      operands[5] = gen_reg_rtx (<VPRED>mode);
  }
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  (define_insn_and_split "*fcmuo<mode>_nor_combine"
***************
*** 9298,9303 ****
--- 9536,9542 ----
    if (can_create_pseudo_p ())
      operands[5] = gen_reg_rtx (<VPRED>mode);
  }
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9361,9366 ****
--- 9600,9606 ----
      operands[5] = copy_rtx (operands[1]);
      operands[6] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  (define_insn "*aarch64_pred_fac<cmp_op><mode>_strict"
***************
*** 9381,9386 ****
--- 9621,9627 ----
  	  SVE_COND_FP_ABS_CMP))]
    "TARGET_SVE"
    "fac<cmp_op>\t%0.<Vetype>, %1/z, %2.<Vetype>, %3.<Vetype>"
+   [(set_attr "sve_type" "sve_fp_cmp")]
  )
  
  (define_insn "*aarch64_pred_fac<cmp_op><mode>_strict_acle"
***************
*** 9425,9430 ****
--- 9666,9672 ----
  	    (match_operand:PRED_ALL 2 "register_operand" "Upa"))))]
    "TARGET_SVE"
    "sel\t%0.b, %3, %1.b, %2.b"
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9473,9478 ****
--- 9715,9721 ----
  		       UNSPEC_PTEST))]
    "TARGET_SVE"
    "ptest\t%0, %3.b"
+   [(set_attr "sve_type" "sve_pred_logical")]
  )
  
  ;; =========================================================================
***************
*** 9497,9506 ****
  	   (match_operand:SVE_ALL 3 "register_operand")]
  	  CLAST))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1 , 2   , 3  ]
!      [ ?r       , 0 , Upl , w  ] clast<ab>\t%<vccore>0, %2, %<vccore>0, %3.<Vctype>
!      [ w        , 0 , Upl , w  ] clast<ab>\t%<Vctype>0, %2, %<Vctype>0, %3.<Vctype>
    }
  )
  
  (define_insn "@aarch64_fold_extract_vector_<last_op>_<mode>"
--- 9740,9750 ----
  	   (match_operand:SVE_ALL 3 "register_operand")]
  	  CLAST))]
    "TARGET_SVE"
!   {@ [ cons: =0 , 1 , 2   , 3 ]
!      [ ?r       , 0 , Upl , w ] clast<ab>\t%<vccore>0, %2, %<vccore>0, %3.<Vctype>
!      [ w        , 0 , Upl , w ] clast<ab>\t%<Vctype>0, %2, %<Vctype>0, %3.<Vctype>
    }
+   [(set_attr "sve_type" "sve_int_extract")]
  )
  
  (define_insn "@aarch64_fold_extract_vector_<last_op>_<mode>"
***************
*** 9515,9520 ****
--- 9759,9765 ----
       [ w        , 0 , Upl , w  ] clast<ab>\t%0.<Vctype>, %2, %0.<Vctype>, %3.<Vctype>
       [ ?&w      , w , Upl , w  ] movprfx\t%0, %1\;clast<ab>\t%0.<Vctype>, %2, %0.<Vctype>, %3.<Vctype>
    }
+   [(set_attr "sve_type" "sve_int_extract")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9555,9560 ****
--- 9800,9806 ----
  		   SVE_INT_ADDV))]
    "TARGET_SVE && <max_elem_bits> >= <elem_bits>"
    "<su>addv\t%d0, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_reduc")]
  )
  
  ;; Unpredicated integer reductions.
***************
*** 9577,9582 ****
--- 9823,9829 ----
  		      SVE_INT_REDUCTION))]
    "TARGET_SVE"
    "<sve_int_op>\t%<Vetype>0, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_reduc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9621,9626 ****
--- 9868,9874 ----
  		      SVE_FP_REDUCTION))]
    "TARGET_SVE"
    "<sve_fp_op>\t%<Vetype>0, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_fp_reduc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9652,9657 ****
--- 9900,9906 ----
  		      UNSPEC_FADDA))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    "fadda\t%<Vetype>0, %3, %<Vetype>0, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_fp_assoc_add")]
  )
  
  ;; =========================================================================
***************
*** 9687,9692 ****
--- 9936,9942 ----
  	  SVE_TBL))]
    "TARGET_SVE"
    "<perm_insn>\t%0.<Vetype>, {%1.<Vetype>}, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9707,9712 ****
--- 9957,9963 ----
  	  UNSPEC_SVE_COMPACT))]
    "TARGET_SVE && TARGET_NON_STREAMING"
    "compact\t%0.<Vetype>, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_extract")]
  )
  
  ;; Duplicate one element of a vector.
***************
*** 9719,9724 ****
--- 9970,9976 ----
    "TARGET_SVE
     && IN_RANGE (INTVAL (operands[2]) * <container_bits> / 8, 0, 63)"
    "dup\t%0.<Vctype>, %1.<Vctype>[%2]"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Use DUP.Q to duplicate a 128-bit segment of a register.
***************
*** 9755,9760 ****
--- 10007,10013 ----
      operands[2] = gen_int_mode (byte / 16, DImode);
      return "dup\t%0.q, %1.q[%2]";
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Reverse the order of elements within a full vector.
***************
*** 9764,9770 ****
  	  [(match_operand:SVE_ALL 1 "register_operand" "w")]
  	  UNSPEC_REV))]
    "TARGET_SVE"
!   "rev\t%0.<Vctype>, %1.<Vctype>")
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT,FP] Special-purpose binary permutes
--- 10017,10025 ----
  	  [(match_operand:SVE_ALL 1 "register_operand" "w")]
  	  UNSPEC_REV))]
    "TARGET_SVE"
!   "rev\t%0.<Vctype>, %1.<Vctype>"
!   [(set_attr "sve_type" "sve_int_general")]
! )
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT,FP] Special-purpose binary permutes
***************
*** 9797,9802 ****
--- 10052,10058 ----
       [ w        , Upl , 0 , w ; *              ] splice\t%0.<Vetype>, %1, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;splice\t%0.<Vetype>, %1, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_extract")]
  )
  
  ;; Permutes that take half the elements from one vector and half the
***************
*** 9809,9814 ****
--- 10065,10071 ----
  	  SVE_PERMUTE))]
    "TARGET_SVE"
    "<perm_insn>\t%0.<Vctype>, %1.<Vctype>, %2.<Vctype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Apply PERMUTE to 128-bit sequences.  The behavior of these patterns
***************
*** 9821,9826 ****
--- 10078,10084 ----
  	  PERMUTEQ))]
    "TARGET_SVE_F64MM"
    "<perm_insn>\t%0.q, %1.q, %2.q"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Concatenate two vectors and extract a subvector.  Note that the
***************
*** 9840,9846 ****
  	    ? "ext\\t%0.b, %0.b, %2.b, #%3"
  	    : "movprfx\t%0, %1\;ext\\t%0.b, %0.b, %2.b, #%3");
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 10098,10105 ----
  	    ? "ext\\t%0.b, %0.b, %2.b, #%3"
  	    : "movprfx\t%0, %1\;ext\\t%0.b, %0.b, %2.b, #%3");
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9856,9861 ****
--- 10115,10121 ----
  			 UNSPEC_REV))]
    "TARGET_SVE"
    "rev\t%0.<Vetype>, %1.<Vetype>"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  (define_expand "@aarch64_sve_rev<mode>_acle"
***************
*** 9878,9883 ****
--- 10138,10144 ----
  	  UNSPEC_REV_PRED))]
    "TARGET_SVE"
    "rev\t%0.<Vetype>, %1.<Vetype>"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9901,9906 ****
--- 10162,10168 ----
  			 PERMUTE))]
    "TARGET_SVE"
    "<perm_insn>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; Special-purpose permutes used by the ACLE intrinsics and predicate
***************
*** 9936,9941 ****
--- 10198,10204 ----
  			UNSPEC_PERMUTE_PRED))]
    "TARGET_SVE"
    "<perm_insn>\t%0.<PRED_ALL:Vetype>, %1.<PRED_ALL:Vetype>, %2.<PRED_ALL:Vetype>"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; =========================================================================
***************
*** 9959,9964 ****
--- 10222,10228 ----
  	  UNSPEC_PACK))]
    "TARGET_SVE"
    "uzp1\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Integer partial pack packing two partial SVE types into a single full SVE
***************
*** 9972,9977 ****
--- 10236,10242 ----
  	  (match_operand:<VHALF> 2 "register_operand" "w")))]
    "TARGET_SVE"
    "uzp1\t%0.<Vctype>, %1.<Vctype>, %2.<Vctype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 10008,10013 ****
--- 10273,10279 ----
  	  UNPACK))]
    "TARGET_SVE"
    "<su>unpk<perm_hilo>\t%0.<Vewtype>, %1.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 10065,10070 ****
--- 10331,10337 ----
       [ w        , Upl , 0 ; *              ] fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; As above, for pairs used by the auto-vectorizer only.
***************
*** 10081,10086 ****
--- 10348,10354 ----
       [ w        , Upl , 0 ; *              ] fcvtz<su>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_PARTIAL_F:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;fcvtz<su>\t%0.<SVE_HSDI:Vetype>, %1/m, %2.<SVE_PARTIAL_F:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated narrowing float-to-integer conversion.  The VNx2DF->VNx4SI
***************
*** 10099,10104 ****
--- 10367,10373 ----
       [ w        , Upl , 0 ; *              ] fcvtz<su>\t%0.<SVE_SI:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;fcvtz<su>\t%0.<SVE_SI:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated float-to-integer conversion with merging, either to the same
***************
*** 10143,10148 ****
--- 10412,10418 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; As above, for pairs that are used by the auto-vectorizer only.
***************
*** 10187,10192 ****
--- 10457,10463 ----
       [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvtz<su>\t%0.<SVE_FULL_HSDI:Vetype>, %1/m, %2.<SVE_FULL_F:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated narrowing float-to-integer conversion with merging.
***************
*** 10221,10226 ****
--- 10492,10498 ----
       [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<VNx2DF_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>\;fcvtz<su>\t%0.<VNx4SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvtz<su>\t%0.<VNx4SI_ONLY:Vetype>, %1/m, %2.<VNx2DF_ONLY:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  (define_insn_and_rewrite "*cond_<optab>_trunc<VNx2DF_ONLY:mode><VNx2SI_ONLY:mode>_relaxed"
***************
*** 10320,10325 ****
--- 10592,10598 ----
       [ w        , Upl , 0 ; *              ] <su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
+   [(set_attr "sve_type" "sve_int_cvt")]
  )
  
  ;; As above, for pairs that are used by the auto-vectorizer only.
***************
*** 10336,10341 ****
--- 10609,10615 ----
       [ w        , Upl , 0 ; *              ] <su>cvtf\t%0.<SVE_PARTIAL_F:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<su>cvtf\t%0.<SVE_PARTIAL_F:Vetype>, %1/m, %2.<SVE_HSDI:Vetype>
    }
+   [(set_attr "sve_type" "sve_int_cvt")]
  )
  
  ;; Predicated widening integer-to-float conversion.
***************
*** 10351,10356 ****
--- 10625,10631 ----
       [ w        , Upl , 0 ; *              ] <su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
    }
+   [(set_attr "sve_type" "sve_int_cvt")]
  )
  
  ;; Predicated integer-to-float conversion with merging, either to the same
***************
*** 10395,10400 ****
--- 10670,10676 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_int_cvt")]
  )
  
  ;; As above, for pairs that are used by the auto-vectorizer only.
***************
*** 10439,10444 ****
--- 10715,10721 ----
       [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_HSDI:Vetype>, %1/z, %2.<SVE_FULL_HSDI:Vetype>\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<su>cvtf\t%0.<SVE_FULL_F:Vetype>, %1/m, %2.<SVE_FULL_HSDI:Vetype>
    }
+   [(set_attr "sve_type" "sve_int_cvt")]
  )
  
  ;; Predicated widening integer-to-float conversion with merging.
***************
*** 10473,10478 ****
--- 10750,10756 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<VNx2DF_ONLY:Vetype>, %1/z, %2.<VNx2DF_ONLY:Vetype>\;<su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<su>cvtf\t%0.<VNx2DF_ONLY:Vetype>, %1/m, %2.<VNx4SI_ONLY:Vetype>
    }
+   [(set_attr "sve_type" "sve_int_cvt")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 10580,10585 ****
--- 10858,10864 ----
       [ w        , Upl , 0 ; *              ] fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; As above, for pairs that are used by the auto-vectorizer only.
***************
*** 10595,10600 ****
--- 10874,10880 ----
       [ w        , Upl , 0 ; *              ] fcvt\t%0.<SVE_PARTIAL_HSF:Vetype>, %1/m, %2.<SVE_SDF:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;fcvt\t%0.<SVE_PARTIAL_HSF:Vetype>, %1/m, %2.<SVE_SDF:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated float-to-float truncation with merging.
***************
*** 10629,10634 ****
--- 10909,10915 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_SDF:Vetype>, %1/z, %2.<SVE_FULL_SDF:Vetype>\;fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvt\t%0.<SVE_FULL_HSF:Vetype>, %1/m, %2.<SVE_FULL_SDF:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; As above, for pairs that are used by the auto-vectorizer only.
***************
*** 10676,10681 ****
--- 10957,10963 ----
       [ w        , Upl , 0 ; *              ] bfcvt\t%0.h, %1/m, %2.s
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;bfcvt\t%0.h, %1/m, %2.s
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated BFCVT with merging.
***************
*** 10710,10715 ****
--- 10992,10998 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.s, %1/z, %2.s\;bfcvt\t%0.h, %1/m, %2.s
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;bfcvt\t%0.h, %1/m, %2.s
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated BFCVTNT.  This doesn't give a natural aarch64_pred_*/cond_*
***************
*** 10727,10732 ****
--- 11010,11016 ----
  	  UNSPEC_COND_FCVTNT))]
    "TARGET_SVE_BF16"
    "bfcvtnt\t%0.h, %2/m, %3.s"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 10797,10802 ****
--- 11081,11087 ----
       [ w        , Upl , 0 ; *              ] fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; As above, for pairs that are used by the auto-vectorizer only.
***************
*** 10812,10817 ****
--- 11097,11103 ----
       [ w        , Upl , 0 ; *              ] fcvt\t%0.<SVE_SDF:Vetype>, %1/m, %2.<SVE_PARTIAL_HSF:Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;fcvt\t%0.<SVE_SDF:Vetype>, %1/m, %2.<SVE_PARTIAL_HSF:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated float-to-float extension with merging.
***************
*** 10846,10851 ****
--- 11132,11138 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<SVE_FULL_SDF:Vetype>, %1/z, %2.<SVE_FULL_SDF:Vetype>\;fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;fcvt\t%0.<SVE_FULL_SDF:Vetype>, %1/m, %2.<SVE_FULL_HSF:Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; As above, for pairs that are used by the auto-vectorizer only.
***************
*** 10889,10894 ****
--- 11176,11182 ----
  	  UNSPEC_PACK))]
    "TARGET_SVE"
    "uzp1\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 10922,10927 ****
--- 11210,11216 ----
  			UNPACK_UNSIGNED))]
    "TARGET_SVE"
    "punpk<perm_hilo>\t%0.h, %1.b"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  (define_expand "@aarch64_sve_punpk<perm_hilo>_acle"
***************
*** 10985,10990 ****
--- 11274,11280 ----
       [ ?Upa     ,  0Upa, 0Upa, 0 ; yes                 ] ^
       [ Upa      ,  Upa , Upa , 0 ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; Same, but also producing a flags result.
***************
*** 11012,11017 ****
--- 11302,11308 ----
       [ ?Upa    , 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; Same, but with only the flags result being interesting.
***************
*** 11034,11039 ****
--- 11325,11331 ----
       [ ?Upa    , 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 11062,11067 ****
--- 11354,11360 ----
       [ ?Upa    , 0Upa, 0Upa, 0<brk_reg_con>; yes                 ] ^
       [ Upa     , Upa , Upa , <brk_reg_con> ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; BRKN, producing both a predicate and a flags result.  Unlike other
***************
*** 11092,11097 ****
--- 11385,11391 ----
      operands[4] = CONST0_RTX (VNx16BImode);
      operands[5] = CONST0_RTX (VNx16BImode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; Same, but with only the flags result being interesting.
***************
*** 11116,11121 ****
--- 11410,11416 ----
      operands[4] = CONST0_RTX (VNx16BImode);
      operands[5] = CONST0_RTX (VNx16BImode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; BRKPA and BRKPB, producing both a predicate and a flags result.
***************
*** 11143,11148 ****
--- 11438,11444 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa,  ; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ,  ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; Same, but with only the flags result being interesting.
***************
*** 11165,11170 ****
--- 11461,11467 ----
       [ ?Upa    , 0Upa, 0Upa, 0Upa; yes                 ] ^
       [ Upa     , Upa , Upa , Upa ; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 11220,11225 ****
--- 11517,11523 ----
     (clobber (reg:CC_NZC CC_REGNUM))]
    "TARGET_SVE"
    "<sve_pred_op>\t%0.<Vetype>, %1, %0.<Vetype>"
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; Same, but also producing a flags result.
***************
*** 11250,11255 ****
--- 11548,11554 ----
      operands[4] = operands[2];
      operands[5] = operands[3];
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  (define_insn_and_rewrite "*aarch64_sve_<sve_pred_op><mode>_cc"
***************
*** 11307,11312 ****
--- 11606,11612 ----
      operands[4] = operands[2];
      operands[5] = operands[3];
    }
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; =========================================================================
***************
*** 11339,11344 ****
--- 11639,11645 ----
    {
      return aarch64_output_sve_cnt_pat_immediate ("cnt", "%x0", operands + 1);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 11365,11370 ****
--- 11666,11672 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%x0",
  						 operands + 2);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; Increment an SImode register by the number of elements in an svpattern
***************
*** 11381,11386 ****
--- 11683,11689 ----
    {
      return aarch64_output_sve_cnt_pat_immediate ("inc", "%x0", operands + 2);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; Increment an SImode register by the number of elements in an svpattern
***************
*** 11402,11407 ****
--- 11705,11711 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", registers,
  						 operands + 2);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 11432,11438 ****
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; Increment a vector of SIs by the number of elements in an svpattern.
--- 11736,11743 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; Increment a vector of SIs by the number of elements in an svpattern.
***************
*** 11453,11459 ****
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; Increment a vector of HIs by the number of elements in an svpattern.
--- 11758,11765 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; Increment a vector of HIs by the number of elements in an svpattern.
***************
*** 11488,11494 ****
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 11794,11801 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 11515,11520 ****
--- 11822,11828 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%x0",
  						 operands + 2);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; Decrement an SImode register by the number of elements in an svpattern
***************
*** 11531,11536 ****
--- 11839,11845 ----
    {
      return aarch64_output_sve_cnt_pat_immediate ("dec", "%x0", operands + 2);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; Decrement an SImode register by the number of elements in an svpattern
***************
*** 11552,11557 ****
--- 11861,11867 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", registers,
  						 operands + 2);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 11582,11588 ****
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; Decrement a vector of SIs by the number of elements in an svpattern.
--- 11892,11899 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; Decrement a vector of SIs by the number of elements in an svpattern.
***************
*** 11603,11609 ****
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; Decrement a vector of HIs by the number of elements in an svpattern.
--- 11914,11921 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; Decrement a vector of HIs by the number of elements in an svpattern.
***************
*** 11638,11644 ****
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 11950,11957 ----
      return aarch64_output_sve_cnt_pat_immediate ("<inc_dec>", "%0.<Vetype>",
  						 operands + 2);
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 11658,11664 ****
  		      (match_operand:PRED_ALL 3 "register_operand" "Upa")]
  		     UNSPEC_CNTP)))]
    "TARGET_SVE"
!   "cntp\t%x0, %1, %3.<Vetype>")
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Increment by the number of elements in a predicate (scalar)
--- 11971,11979 ----
  		      (match_operand:PRED_ALL 3 "register_operand" "Upa")]
  		     UNSPEC_CNTP)))]
    "TARGET_SVE"
!   "cntp\t%x0, %1, %3.<Vetype>"
!   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
! )
  
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Increment by the number of elements in a predicate (scalar)
***************
*** 11701,11706 ****
--- 12016,12022 ----
    {
      operands[3] = CONSTM1_RTX (<PRED_ALL:MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; Increment an SImode register by the number of set bits in a predicate
***************
*** 11720,11725 ****
--- 12036,12042 ----
    {
      operands[3] = CONSTM1_RTX (<MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; Increment an SImode register by the number of set bits in a predicate
***************
*** 11761,11766 ****
--- 12078,12084 ----
    {
      operands[3] = CONSTM1_RTX (<PRED_ALL:MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 11811,11816 ****
--- 12129,12135 ----
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; Increment a vector of SIs by the number of set bits in a predicate.
***************
*** 11850,11855 ****
--- 12169,12175 ----
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; Increment a vector of HIs by the number of set bits in a predicate.
***************
*** 11891,11896 ****
--- 12211,12217 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 11934,11939 ****
--- 12255,12261 ----
    {
      operands[3] = CONSTM1_RTX (<PRED_ALL:MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; Decrement an SImode register by the number of set bits in a predicate
***************
*** 11953,11958 ****
--- 12275,12281 ----
    {
      operands[3] = CONSTM1_RTX (<MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; Decrement an SImode register by the number of set bits in a predicate
***************
*** 11994,11999 ****
--- 12317,12323 ----
    {
      operands[3] = CONSTM1_RTX (<PRED_ALL:MODE>mode);
    }
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 12044,12049 ****
--- 12368,12374 ----
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; Decrement a vector of SIs by the number of set bits in a predicate.
***************
*** 12083,12088 ****
--- 12408,12414 ----
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; Decrement a vector of HIs by the number of set bits in a predicate.
***************
*** 12124,12129 ****
--- 12450,12456 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  (define_insn_and_split "@aarch64_sve_get_neonq_<mode>"
***************
*** 12153,12156 ****
--- 12480,12484 ----
    "TARGET_SVE
     && BYTES_BIG_ENDIAN"
    "sel\t%0.<Vetype>, %3, %Z2.<Vetype>, %1.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/aarch64-sve2.md gcc-16-20250928/gcc/config/aarch64/aarch64-sve2.md
*** gcc-16-20250921/gcc/config/aarch64/aarch64-sve2.md	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/aarch64-sve2.md	Sun Sep 28 22:33:03 2025
***************
*** 153,158 ****
--- 153,159 ----
  	  UNSPEC_PMOV_UNPACK))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "pmov\t%0, %1.<Vetype>"
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  (define_insn "@aarch64_pmov_lane_to_<mode>"
***************
*** 164,169 ****
--- 165,171 ----
  	  UNSPEC_PMOV_UNPACK_LANE))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "pmov\t%0[%3], %2.<Vetype>"
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 180,185 ****
--- 182,188 ----
  	  UNSPEC_PMOV_PACK))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "pmov\t%0.<Vetype>, %1"
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  (define_insn "@aarch64_pmov_lane_from_<mode>"
***************
*** 190,195 ****
--- 193,199 ----
  	  UNSPEC_PMOV_PACK_LANE))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "pmov\t%0.<Vetype>, %1[%2]"
+   [(set_attr "sve_type" "sve_pred_vec")]
  )
  
  ;; =========================================================================
***************
*** 228,233 ****
--- 232,238 ----
  	  UNSPEC_LD1_EXTENDQ))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "ld1<Vesize>\t{%0.q}, %2/z, %1"
+   [(set_attr "sve_type" "sve_load_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 248,253 ****
--- 253,259 ----
  	  UNSPEC_LDNQ))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "ld<vector_count>q\t{%S0.q - %<Vendreg>0.q}, %2/z, %1"
+   [(set_attr "sve_type" "sve_load_<vector_count>reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 274,280 ****
  	  LD1_COUNT))]
    "TARGET_SVE2p1_OR_SME2"
    "<optab><Vesize>\t%0, %K2/z, %1"
!   [(set_attr "stride_type" "ld1_consecutive")]
  )
  
  (define_insn "@aarch64_<optab><mode>_strided2"
--- 280,287 ----
  	  LD1_COUNT))]
    "TARGET_SVE2p1_OR_SME2"
    "<optab><Vesize>\t%0, %K2/z, %1"
!   [(set_attr "stride_type" "ld1_consecutive")
!    (set_attr "sve_type" "sve_load_<vector_count>reg")]
  )
  
  (define_insn "@aarch64_<optab><mode>_strided2"
***************
*** 293,299 ****
    "TARGET_STREAMING_SME2
     && aarch64_strided_registers_p (operands, 2, 8)"
    "<optab><Vesize>\t{%0.<Vetype>, %1.<Vetype>}, %K3/z, %2"
!   [(set_attr "stride_type" "ld1_strided")]
  )
  
  (define_insn "@aarch64_<optab><mode>_strided4"
--- 300,307 ----
    "TARGET_STREAMING_SME2
     && aarch64_strided_registers_p (operands, 2, 8)"
    "<optab><Vesize>\t{%0.<Vetype>, %1.<Vetype>}, %K3/z, %2"
!   [(set_attr "stride_type" "ld1_strided")
!    (set_attr "sve_type" "sve_load_2reg")]
  )
  
  (define_insn "@aarch64_<optab><mode>_strided4"
***************
*** 324,330 ****
    "TARGET_STREAMING_SME2
     && aarch64_strided_registers_p (operands, 4, 4)"
    "<optab><Vesize>\t{%0.<Vetype>, %1.<Vetype>, %2.<Vetype>, %3.<Vetype>}, %K5/z, %4"
!   [(set_attr "stride_type" "ld1_strided")]
  )
  
  ;; -------------------------------------------------------------------------
--- 332,339 ----
    "TARGET_STREAMING_SME2
     && aarch64_strided_registers_p (operands, 4, 4)"
    "<optab><Vesize>\t{%0.<Vetype>, %1.<Vetype>, %2.<Vetype>, %3.<Vetype>}, %K5/z, %4"
!   [(set_attr "stride_type" "ld1_strided")
!    (set_attr "sve_type" "sve_load_4reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 361,366 ****
--- 370,376 ----
       [&w, Upl, r, w] ld1q\t{%0.q}, %1/z, [%3.d, %2]
       [?w, Upl, r, 0] ^
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 389,394 ****
--- 399,405 ----
       [&w, Upl, r, w    ] ldnt1<Vesize>\t%0.<Vetype>, %1/z, [%3.<Vetype>, %2]
       [?w, Upl, r, 0    ] ^
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; Extending loads.
***************
*** 417,422 ****
--- 428,434 ----
    {
      operands[4] = CONSTM1_RTX (<SVE_FULL_SDI:VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_gatherload_64")]
  )
  
  ;; =========================================================================
***************
*** 442,447 ****
--- 454,460 ----
  	  UNSPEC_ST1_TRUNCQ))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "st1<Vesize>\t{%1.q}, %2, %0"
+   [(set_attr "sve_type" "sve_store_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 463,468 ****
--- 476,482 ----
  	  UNSPEC_STNQ))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "st<vector_count>q\t{%S1.q - %<Vendreg>1.q}, %2, %0"
+   [(set_attr "sve_type" "sve_store_<vector_count>reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 488,494 ****
  	  ST1_COUNT))]
    "TARGET_SVE2p1_OR_SME2"
    "<optab><Vesize>\t%1, %K2, %0"
!   [(set_attr "stride_type" "st1_consecutive")]
  )
  
  (define_insn "@aarch64_<optab><mode>_strided2"
--- 502,509 ----
  	  ST1_COUNT))]
    "TARGET_SVE2p1_OR_SME2"
    "<optab><Vesize>\t%1, %K2, %0"
!   [(set_attr "stride_type" "st1_consecutive")
!    (set_attr "sve_type" "sve_store_1reg")]
  )
  
  (define_insn "@aarch64_<optab><mode>_strided2"
***************
*** 502,508 ****
    "TARGET_STREAMING_SME2
     && aarch64_strided_registers_p (operands + 2, 2, 8)"
    "<optab><Vesize>\t{%2.<Vetype>, %3.<Vetype>}, %K1, %0"
!   [(set_attr "stride_type" "st1_strided")]
  )
  
  (define_insn "@aarch64_<optab><mode>_strided4"
--- 517,524 ----
    "TARGET_STREAMING_SME2
     && aarch64_strided_registers_p (operands + 2, 2, 8)"
    "<optab><Vesize>\t{%2.<Vetype>, %3.<Vetype>}, %K1, %0"
!   [(set_attr "stride_type" "st1_strided")
!    (set_attr "sve_type" "sve_store_1reg")]
  )
  
  (define_insn "@aarch64_<optab><mode>_strided4"
***************
*** 518,524 ****
    "TARGET_STREAMING_SME2
     && aarch64_strided_registers_p (operands + 2, 4, 4)"
    "<optab><Vesize>\t{%2.<Vetype>, %3.<Vetype>, %4.<Vetype>, %5.<Vetype>}, %K1, %0"
!   [(set_attr "stride_type" "st1_strided")]
  )
  
  ;; -------------------------------------------------------------------------
--- 534,541 ----
    "TARGET_STREAMING_SME2
     && aarch64_strided_registers_p (operands + 2, 4, 4)"
    "<optab><Vesize>\t{%2.<Vetype>, %3.<Vetype>, %4.<Vetype>, %5.<Vetype>}, %K1, %0"
!   [(set_attr "stride_type" "st1_strided")
!    (set_attr "sve_type" "sve_store_1reg")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 541,546 ****
--- 558,564 ----
       [ Upl     , Z , w , w  ] st1q\t{%3.q}, %0, [%2.d]
       [ Upl     , r , w , w  ] st1q\t{%3.q}, %0, [%2.d, %1]
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 568,573 ****
--- 586,592 ----
       [ Upl     , Z , w , w  ] stnt1<Vesize>\t%3.<Vetype>, %0, [%2.<Vetype>]
       [ Upl     , r , w , w  ] stnt1<Vesize>\t%3.<Vetype>, %0, [%2.<Vetype>, %1]
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; Truncating stores.
***************
*** 587,592 ****
--- 606,612 ----
       [ Upl     , Z , w , w  ] stnt1<SVE_PARTIAL_I:Vesize>\t%3.<SVE_FULL_SDI:Vetype>, %0, [%2.<SVE_FULL_SDI:Vetype>]
       [ Upl     , r , w , w  ] stnt1<SVE_PARTIAL_I:Vesize>\t%3.<SVE_FULL_SDI:Vetype>, %0, [%2.<SVE_FULL_SDI:Vetype>, %1]
    }
+   [(set_attr "sve_type" "sve_scatterstore_64")]
  )
  
  ;; =========================================================================
***************
*** 604,609 ****
--- 624,630 ----
  	(unspec:VNx16BI [(const_int BHSD_BITS)] UNSPEC_PTRUE_C))]
    "TARGET_SVE2p1_OR_SME2"
    "ptrue\t%K0.<bits_etype>"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 622,627 ****
--- 643,649 ----
  	  UNSPEC_PEXT))]
    "TARGET_SVE2p1_OR_SME2"
    "pext\t%0.<bits_etype>, %K1[%2]"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  (define_insn "@aarch64_sve_pext<BHSD_BITS>x2"
***************
*** 633,638 ****
--- 655,661 ----
  	  UNSPEC_PEXTx2))]
    "TARGET_SVE2p1_OR_SME2"
    "pext\t{%S0.<bits_etype>, %T0.<bits_etype>}, %K1[%2]"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 652,657 ****
--- 675,681 ----
  	  UNSPEC_PSEL))]
    "TARGET_SVE2p1_OR_SME"
    "psel\t%0, %1, %2.<bits_etype>[%w3, 0]"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  (define_insn "*aarch64_sve_psel<BHSD_BITS>_plus"
***************
*** 667,672 ****
--- 691,697 ----
    "TARGET_SVE2p1_OR_SME
     && UINTVAL (operands[4]) < 128 / <BHSD_BITS>"
    "psel\t%0, %1, %2.<bits_etype>[%w3, %4]"
+   [(set_attr "sve_type" "sve_pred_misc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 685,690 ****
--- 710,716 ----
  	  UNSPEC_CNTP_C))]
    "TARGET_SVE2p1_OR_SME2"
    "cntp\t%x0, %K1.<bits_etype>, vlx%2"
+   [(set_attr "sve_type" "sve_pred_cnt_scalar")]
  )
  
  ;; =========================================================================
***************
*** 708,713 ****
--- 734,740 ----
  	  SVE2_SFx24_UNARY))]
    "TARGET_STREAMING_SME2"
    "frint<frint_suffix>\t%0, %1"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; =========================================================================
***************
*** 743,748 ****
--- 770,776 ----
  	  (match_operand:SVE_Ix24 2 "aligned_register_operand" "Uw<vector_count>")))]
    "TARGET_STREAMING_SME2"
    "<sve_int_op>\t%0, %0, %2"
+   [(set_attr "sve_type" "sve_<sve_type_int>")]
  )
  
  (define_insn "@aarch64_sve_single_<optab><mode>"
***************
*** 753,758 ****
--- 781,787 ----
  	    (match_operand:<VSINGLE> 2 "register_operand" "x"))))]
    "TARGET_STREAMING_SME2"
    "<sve_int_op>\t%0, %0, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_<sve_type_int>")]
  )
  
  (define_insn "@aarch64_sve_<sve_int_op><mode>"
***************
*** 763,768 ****
--- 792,798 ----
  	  SVE_INT_BINARY_MULTI))]
    "TARGET_STREAMING_SME2"
    "<sve_int_op>\t%0, %0, %2"
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "@aarch64_sve_single_<sve_int_op><mode>"
***************
*** 774,779 ****
--- 804,810 ----
  	  SVE_INT_BINARY_MULTI))]
    "TARGET_STREAMING_SME2"
    "<sve_int_op>\t%0, %0, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 797,802 ****
--- 828,834 ----
       [       w,  0, w, w; *             ] <su>clamp\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
       [     ?&w,  w, w, w; yes           ] movprfx\t%0, %1\;<su>clamp\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn_and_split "*aarch64_sve_<su>clamp<mode>_x"
***************
*** 837,842 ****
--- 869,875 ----
  	    (match_operand:<VSINGLE> 3 "register_operand" "w"))))]
    "TARGET_STREAMING_SME2"
    "<su>clamp\t%0, %2.<Vetype>, %3.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 856,861 ****
--- 889,895 ----
  	  (match_operand:SVE_FULL_HSDI_SIMD_DI 1 "register_operand" "w")))]
    "TARGET_SVE2"
    "mul\t%Z0.<Vetype>, %Z1.<Vetype>, %Z2.<Vetype>[%3]"
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; The 2nd and 3rd alternatives are valid for just TARGET_SVE as well but
***************
*** 871,876 ****
--- 905,911 ----
       [ w        , 0 , vsm ; *              ] mul\t%Z0.<Vetype>, %Z0.<Vetype>, #%2
       [ ?&w      , w , vsm ; yes            ] movprfx\t%Z0, %Z1\;mul\t%Z0.<Vetype>, %Z0.<Vetype>, #%2
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 990,996 ****
    "@
     sqadd\t%0.<Vetype>, %0.<Vetype>, #%D2
     movprfx\t%0, %1\;sqadd\t%0.<Vetype>, %0.<Vetype>, #%D2"
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; General predicated binary arithmetic.  All operations handled here
--- 1025,1032 ----
    "@
     sqadd\t%0.<Vetype>, %0.<Vetype>, #%D2
     movprfx\t%0, %1\;sqadd\t%0.<Vetype>, %0.<Vetype>, #%D2"
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_int_general")]
  )
  
  ;; General predicated binary arithmetic.  All operations handled here
***************
*** 1010,1015 ****
--- 1046,1052 ----
       [ w        , Upl , w , 0 ; *              ] <sve_int_op_rev>\t%0.<Vetype>, %1/m, %0.<Vetype>, %2.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated binary arithmetic with merging.
***************
*** 1055,1060 ****
--- 1092,1098 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated binary arithmetic, merging with the second input.
***************
*** 1080,1085 ****
--- 1118,1124 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated binary operations, merging with an independent value.
***************
*** 1121,1127 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; Predicated binary operations with no reverse form, merging with zero.
--- 1160,1167 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Predicated binary operations with no reverse form, merging with zero.
***************
*** 1150,1156 ****
    {
      operands[5] = CONSTM1_RTX (<VPRED>mode);
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 1190,1197 ----
    {
      operands[5] = CONSTM1_RTX (<VPRED>mode);
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1182,1187 ****
--- 1223,1229 ----
  	  SVE2_INT_BINARY_LANE))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>[%3]"
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1212,1217 ****
--- 1254,1260 ----
       [ ?&w      , Upl , w , D<lr> ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, #%3
       [ ?&w      , Upl , w , w     ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Predicated left shifts with merging.
***************
*** 1259,1264 ****
--- 1302,1308 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Predicated left shifts, merging with the second input.
***************
*** 1284,1289 ****
--- 1328,1334 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; Predicated left shifts, merging with an independent value.
***************
*** 1329,1335 ****
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 1374,1381 ----
      else
        FAIL;
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1360,1366 ****
       [ ?&w      , Upl , w , w ; yes , *    ] movprfx\t%0, %2\;<b><sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
    [(set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "<supports_bf16_rev>")]
  )
  
  ;; -------------------------------------------------------------------------
--- 1406,1413 ----
       [ ?&w      , Upl , w , w ; yes , *    ] movprfx\t%0, %2\;<b><sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
    [(set_attr "is_bf16" "<is_bf16>")
!    (set_attr "supports_bf16_rev" "<supports_bf16_rev>")
!    (set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1386,1391 ****
--- 1433,1439 ----
       [       w,  0, w, w; *             ] <b>fclamp\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
       [     ?&w,  w, w, w; yes           ] movprfx\t%0, %1\;<b>fclamp\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  (define_insn_and_split "*aarch64_sve_fclamp<mode>_x"
***************
*** 1430,1435 ****
--- 1478,1484 ----
  	  UNSPEC_FMINNM))]
    "TARGET_STREAMING_SME2"
    "<b>fclamp\t%0, %2.<Vetype>, %3.<Vetype>"
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; =========================================================================
***************
*** 1462,1467 ****
--- 1511,1517 ----
       [ w        , 0 , w , w ; *              ] <sve_int_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sve_int_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "@aarch64_sve_<sve_int_op>_lane_<mode>"
***************
*** 1479,1484 ****
--- 1529,1535 ----
       [ w        , 0 , w , <sve_lane_con> ; *              ] <sve_int_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>[%4]
       [ ?&w      , w , w , <sve_lane_con> ; yes            ] movprfx\t%0, %1\;<sve_int_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>[%4]
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1504,1509 ****
--- 1555,1561 ----
       [ w        , 0 , w , <sve_lane_con> ; *              ] mla\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>[%4]
       [ ?&w      , w , w , <sve_lane_con> ; yes            ] movprfx\t%0, %1\;mla\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>[%4]
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  (define_insn "@aarch64_sve_sub_mul_lane_<mode>"
***************
*** 1521,1526 ****
--- 1573,1579 ----
       [ w        , 0 , w , <sve_lane_con> ; *              ] mls\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>[%4]
       [ ?&w      , w , w , <sve_lane_con> ; yes            ] movprfx\t%0, %1\;mls\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>[%4]
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1551,1557 ****
        return "xar\t%Z0.<Vetype>, %Z0.<Vetype>, %Z2.<Vetype>, #%3";
      return "movprfx\t%Z0, %Z1\;xar\t%Z0.<Vetype>, %Z0.<Vetype>, %Z2.<Vetype>, #%3";
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 1604,1611 ----
        return "xar\t%Z0.<Vetype>, %Z0.<Vetype>, %Z2.<Vetype>, #%3";
      return "movprfx\t%Z0, %Z1\;xar\t%Z0.<Vetype>, %Z0.<Vetype>, %Z2.<Vetype>, #%3";
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_crypto_sha3")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 1604,1609 ****
--- 1658,1664 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_crypto_sha3")]
  )
  
  ;; Unpredicated 3-way exclusive OR.
***************
*** 1621,1626 ****
--- 1676,1682 ----
       [ w        , w , w , 0 ; *              ] eor3\t%0.d, %0.d, %1.d, %2.d
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;eor3\t%0.d, %0.d, %2.d, %3.d
    }
+   [(set_attr "sve_type" "sve_crypto_sha3")]
  )
  
  ;; Use NBSL for vector NOR.
***************
*** 1643,1648 ****
--- 1699,1705 ----
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "*aarch64_sve2_unpred_nor<mode>"
***************
*** 1657,1662 ****
--- 1714,1720 ----
       [ w        , 0  , w ; *              ] nbsl\t%Z0.d, %Z0.d, %Z2.d, %Z0.d
       [ ?&w      , w  , w ; yes            ] movprfx\t%Z0, %Z1\;nbsl\t%Z0.d, %Z0.d, %Z2.d, %Z1.d
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Use NBSL for vector NAND.
***************
*** 1679,1684 ****
--- 1737,1743 ----
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Same as above but unpredicated and including Advanced SIMD modes.
***************
*** 1694,1699 ****
--- 1753,1759 ----
       [ w        , 0  , w ; *              ] nbsl\t%Z0.d, %Z0.d, %Z2.d, %Z2.d
       [ ?&w      , w  , w ; yes            ] movprfx\t%Z0, %Z1\;nbsl\t%Z0.d, %Z0.d, %Z2.d, %Z2.d
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Unpredicated bitwise select.
***************
*** 1724,1729 ****
--- 1784,1790 ----
       [ w        , <bsl_1st> , <bsl_2nd> , w ; *              ] bsl\t%0.d, %0.d, %<bsl_dup>.d, %3.d
       [ ?&w      , w         , w         , w ; yes            ] movprfx\t%0, %<bsl_mov>\;bsl\t%0.d, %0.d, %<bsl_dup>.d, %3.d
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Unpredicated bitwise inverted select.
***************
*** 1769,1774 ****
--- 1830,1836 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "*aarch64_sve2_nbsl_unpred<mode>"
***************
*** 1786,1791 ****
--- 1848,1854 ----
       [ w        , <bsl_1st> , <bsl_2nd> , w ; *              ] nbsl\t%Z0.d, %Z0.d, %Z<bsl_dup>.d, %Z3.d
       [ ?&w      , w         , w         , w ; yes            ] movprfx\t%Z0, %Z<bsl_mov>\;nbsl\t%Z0.d, %Z0.d, %Z<bsl_dup>.d, %Z3.d
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Unpredicated bitwise select with inverted first operand.
***************
*** 1831,1836 ****
--- 1894,1900 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "*aarch64_sve2_bsl1n_unpred<mode>"
***************
*** 1848,1853 ****
--- 1912,1918 ----
       [ w        , <bsl_1st> , <bsl_2nd> , w ; *              ] bsl1n\t%Z0.d, %Z0.d, %Z<bsl_dup>.d, %Z3.d
       [ ?&w      , w         , w         , w ; yes            ] movprfx\t%Z0, %Z<bsl_mov>\;bsl1n\t%Z0.d, %Z0.d, %Z<bsl_dup>.d, %Z3.d
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Unpredicated bitwise select with inverted second operand.
***************
*** 1895,1900 ****
--- 1960,1966 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Unpredicated bitwise select with inverted second operand, alternative form.
***************
*** 1922,1927 ****
--- 1988,1994 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "*aarch64_sve2_bsl2n_unpred<mode>"
***************
*** 1938,1943 ****
--- 2005,2011 ----
       [ w        , <bsl_1st> , <bsl_2nd> , w ; *              ] bsl2n\t%Z0.d, %Z0.d, %Z3.d, %Z<bsl_dup>.d
       [ ?&w      , w         , w         , w ; yes            ] movprfx\t%Z0, %Z<bsl_mov>\;bsl2n\t%Z0.d, %Z0.d, %Z3.d, %Z<bsl_dup>.d
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "*aarch64_sve2_bsl2n_unpred<mode>"
***************
*** 1954,1959 ****
--- 2022,2028 ----
       [ w        , <bsl_1st> , <bsl_2nd> , w ; *              ] bsl2n\t%Z0.d, %Z0.d, %Z3.d, %Z<bsl_dup>.d
       [ ?&w      , w         , w         , w ; yes            ] movprfx\t%Z0, %Z<bsl_mov>\;bsl2n\t%Z0.d, %Z0.d, %Z3.d, %Z<bsl_dup>.d
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Vector EON (~(x, y)) using BSL2N.
***************
*** 1975,1980 ****
--- 2044,2050 ----
    {
      operands[3] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "*aarch64_sve2_eon_bsl2n_unpred<mode>"
***************
*** 1988,1993 ****
--- 2058,2064 ----
       [ w  ,      0, w ; *              ] bsl2n\t%Z0.d, %Z0.d, %Z0.d, %Z2.d
       [ ?&w,      w, w ; yes            ] movprfx\t%Z0, %Z1\;bsl2n\t%Z0.d, %Z0.d, %Z1.d, %Z2.d
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2025,2030 ****
--- 2096,2102 ----
       [ w        , 0 , w ; *              ] <sra_op>sra\t%0.<Vetype>, %2.<Vetype>, #%3
       [ ?&w      , w , w ; yes            ] movprfx\t%0, %1\;<sra_op>sra\t%0.<Vetype>, %2.<Vetype>, #%3
    }
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; SRSRA and URSRA.
***************
*** 2041,2046 ****
--- 2113,2119 ----
       [ w        , 0 , w ; *              ] <sur>sra\t%0.<Vetype>, %2.<Vetype>, #%3
       [ ?&w      , w , w ; yes            ] movprfx\t%0, %1\;<sur>sra\t%0.<Vetype>, %2.<Vetype>, #%3
    }
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2061,2066 ****
--- 2134,2140 ----
  	  SVE2_INT_SHIFT_INSERT))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Vetype>, %2.<Vetype>, #%3"
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2119,2124 ****
--- 2193,2199 ----
       [ w        , 0 , w , w ; *              ] <su>aba\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<su>aba\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_accum")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2152,2157 ****
--- 2227,2233 ----
       [ w        , 0 , w , w ; *              ] <insn>\t%0.h, %2.b, %3.b
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<insn>\t%0.h, %2.b, %3.b
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn "@aarch64_sve_add_<insn><mode>"
***************
*** 2167,2172 ****
--- 2243,2249 ----
       [ w        , 0 , w , w ; *              ] <insn>\t%0.s, %2.b, %3.b
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<insn>\t%0.s, %2.b, %3.b
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn "@aarch64_sve_add_lane_<insn><mode>"
***************
*** 2183,2188 ****
--- 2260,2266 ----
       [ w        , 0 , w , y ; *              ] <insn>\t%0.h, %2.b, %3.b[%4]
       [ ?&w      , w , w , y ; yes            ] movprfx\t%0, %1\;<insn>\t%0.h, %2.b, %3.b[%4]
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn "@aarch64_sve_add_lane_<insn><mode>"
***************
*** 2199,2204 ****
--- 2277,2283 ----
       [ w        , 0 , w , y ; *              ] <insn>\t%0.s, %2.b, %3.b[%4]
       [ ?&w      , w , w , y ; yes            ] movprfx\t%0, %1\;<insn>\t%0.s, %2.b, %3.b[%4]
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2223,2228 ****
--- 2302,2308 ----
       [ w        , 0 , w , w ; *              ] fdot\t%0.<Vetype>, %2.b, %3.b
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;fdot\t%0.<Vetype>, %2.b, %3.b
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn "@aarch64_sve_dot_lane<mode>"
***************
*** 2239,2244 ****
--- 2319,2325 ----
       [ w        , 0 , w , y ; *              ] fdot\t%0.<Vetype>, %2.b, %3.b[%4]
       [ ?&w      , w , w , y ; yes            ] movprfx\t%0, %1\;fdot\t%0.<Vetype>, %2.b, %3.b[%4]
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; =========================================================================
***************
*** 2259,2264 ****
--- 2340,2346 ----
  	  (match_operand:SVE_FULL_BHSI 1 "register_operand" "w")))]
    "TARGET_STREAMING_SME2"
    "<su>unpk\t%0, %1.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "<optab><mode><v2xwide>2"
***************
*** 2267,2272 ****
--- 2349,2355 ----
  	  (match_operand:SVE_FULL_BHSIx2 1 "aligned_register_operand" "Uw2")))]
    "TARGET_STREAMING_SME2"
    "<su>unpk\t%0, %1"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2291,2296 ****
--- 2374,2380 ----
  	  SVE2_INT_BINARY_WIDE))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Ventype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2328,2333 ****
--- 2412,2418 ----
  	  SVE2_INT_BINARY_LONG))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Vetype>, %1.<Ventype>, %2.<Ventype>"
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "@aarch64_sve_<sve_int_op>_lane_<mode>"
***************
*** 2341,2346 ****
--- 2426,2432 ----
  	  SVE2_INT_BINARY_LONG_LANE))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Vetype>, %1.<Ventype>, %2.<Ventype>[%3]"
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2362,2367 ****
--- 2448,2454 ----
  	  SVE2_INT_SHIFT_IMM_LONG))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Vetype>, %1.<Ventype>, #%2"
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2404,2409 ****
--- 2491,2497 ----
       [ w        , 0 , w , w ; *              ] <sve_int_add_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sve_int_add_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Non-saturating MLA operations with lane select.
***************
*** 2423,2428 ****
--- 2511,2517 ----
       [ w        , 0 , w , <sve_lane_con> ; *              ] <sve_int_add_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>[%4]
       [ ?&w      , w , w , <sve_lane_con> ; yes            ] movprfx\t%0, %1\;<sve_int_add_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>[%4]
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Saturating MLA operations.
***************
*** 2439,2444 ****
--- 2528,2534 ----
       [ w        , 0 , w , w ; *              ] <sve_int_qadd_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sve_int_qadd_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Saturating MLA operations with lane select.
***************
*** 2458,2463 ****
--- 2548,2554 ----
       [ w        , 0 , w , <sve_lane_con> ; *              ] <sve_int_qadd_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>[%4]
       [ ?&w      , w , w , <sve_lane_con> ; yes            ] movprfx\t%0, %1\;<sve_int_qadd_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>[%4]
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Non-saturating MLS operations.
***************
*** 2474,2479 ****
--- 2565,2571 ----
       [ w        , 0 , w , w ; *              ] <sve_int_sub_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sve_int_sub_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Non-saturating MLS operations with lane select.
***************
*** 2493,2498 ****
--- 2585,2591 ----
       [ w        , 0 , w , <sve_lane_con> ; *              ] <sve_int_sub_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>[%4]
       [ ?&w      , w , w , <sve_lane_con> ; yes            ] movprfx\t%0, %1\;<sve_int_sub_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>[%4]
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Saturating MLS operations.
***************
*** 2509,2514 ****
--- 2602,2608 ----
       [ w        , 0 , w , w ; *              ] <sve_int_qsub_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sve_int_qsub_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Saturating MLS operations with lane select.
***************
*** 2528,2533 ****
--- 2622,2628 ----
       [ w        , 0 , w , <sve_lane_con> ; *              ] <sve_int_qsub_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>[%4]
       [ ?&w      , w , w , <sve_lane_con> ; yes            ] movprfx\t%0, %1\;<sve_int_qsub_op>\t%0.<Vetype>, %2.<Ventype>, %3.<Ventype>[%4]
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Two-way dot-product.
***************
*** 2544,2549 ****
--- 2639,2645 ----
       [ w        , w , w , 0 ; *              ] <sur>dot\t%0.s, %1.h, %2.h
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %3\;<sur>dot\t%0.s, %1.h, %2.h
    }
+   [(set_attr "sve_type" "sve_int_dot")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2573,2578 ****
--- 2669,2675 ----
  	  SVE_FP_BINARY_MULTI))]
    "TARGET_STREAMING_SME2"
    "<b><maxmin_uns_op>\t%0, %0, %2"
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "@aarch64_sve_single_<maxmin_uns_op><mode>"
***************
*** 2584,2589 ****
--- 2681,2687 ----
  	  SVE_FP_BINARY_MULTI))]
    "TARGET_STREAMING_SME2"
    "<b><maxmin_uns_op>\t%0, %0, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2609,2614 ****
--- 2707,2713 ----
       [ w        , w , w , 0 ; *              ] <sve_fp_op>\t%0.<Vetype>, %1.<Ventype>, %2.<Ventype>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1.<Ventype>, %2.<Ventype>
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  (define_insn "@aarch64_<sve_fp_op>_lane_<mode>"
***************
*** 2626,2631 ****
--- 2725,2731 ----
       [ w        , w , <sve_lane_con> , 0 ; *              ] <sve_fp_op>\t%0.<Vetype>, %1.<Ventype>, %2.<Ventype>[%3]
       [ ?&w      , w , <sve_lane_con> , w ; yes            ] movprfx\t%0, %4\;<sve_fp_op>\t%0.<Vetype>, %1.<Ventype>, %2.<Ventype>[%3]
    }
+   [(set_attr "sve_type" "sve_<sve_type_unspec>")]
  )
  
  ;; Two-way dot-product.
***************
*** 2642,2647 ****
--- 2742,2748 ----
       [ w        , w , w , 0 ; *              ] fdot\t%0.s, %1.h, %2.h
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %3\;fdot\t%0.s, %1.h, %2.h
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  (define_insn "aarch64_fdot_prod_lanevnx4sfvnx8hf"
***************
*** 2660,2665 ****
--- 2761,2767 ----
       [ w        , w , y , 0 ; *              ] fdot\t%0.s, %1.h, %2.h[%3]
       [ ?&w      , w , y , w ; yes            ] movprfx\t%0, %4\;fdot\t%0.s, %1.h, %2.h[%3]
    }
+   [(set_attr "sve_type" "sve_fp_mul")]
  )
  
  ;; =========================================================================
***************
*** 2685,2690 ****
--- 2787,2793 ----
  	  SVE2_INT_UNARY_NARROWB))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Ventype>, %1.<Vetype>"
+   [(set_attr "sve_type" "sve_int_extract")]
  )
  
  ;; These instructions do not take MOVPRFX.
***************
*** 2696,2701 ****
--- 2799,2805 ----
  	  SVE2_INT_UNARY_NARROWT))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Ventype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_extract")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2715,2720 ****
--- 2819,2825 ----
  	  SVE_QCVTxN))]
    "TARGET_STREAMING_SME2"
    "<optab>\t%0.b, %1"
+   [(set_attr "sve_type" "sve_int_extract")]
  )
  
  (define_insn "@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8SI_ONLY:mode>"
***************
*** 2724,2729 ****
--- 2829,2835 ----
  	  SVE_QCVTxN))]
    ""
    "<optab>\t%0.h, %1"
+   [(set_attr "sve_type" "sve_int_extract")]
  )
  
  (define_insn "@aarch64_sve_<optab><VNx8HI_ONLY:mode><VNx8DI_ONLY:mode>"
***************
*** 2733,2738 ****
--- 2839,2845 ----
  	  SVE_QCVTxN))]
    "TARGET_STREAMING_SME2"
    "<optab>\t%0.h, %1"
+   [(set_attr "sve_type" "sve_int_extract")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2757,2762 ****
--- 2864,2870 ----
  	  SVE2_INT_BINARY_NARROWB))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Ventype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; These instructions do not take MOVPRFX.
***************
*** 2769,2774 ****
--- 2877,2883 ----
  	  SVE2_INT_BINARY_NARROWT))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Ventype>, %2.<Vetype>, %3.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; Optimize ((a + b) >> n) where n is half the bitsize of the vector
***************
*** 2782,2787 ****
--- 2891,2897 ----
  	    "aarch64_simd_shift_imm_vec_exact_top" "")))]
    "TARGET_SVE2"
    "addhnb\t%0.<Ventype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2815,2820 ****
--- 2925,2931 ----
  	  SVE2_INT_SHIFT_IMM_NARROWB))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Ventype>, %1.<Vetype>, #%2"
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; The immediate range is enforced before generating the instruction.
***************
*** 2828,2833 ****
--- 2939,2945 ----
  	  SVE2_INT_SHIFT_IMM_NARROWT))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Ventype>, %2.<Vetype>, #%3"
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2850,2855 ****
--- 2962,2968 ----
  	  SVE2_INT_SHIFT_IMM_NARROWxN))]
    "(<MODE>mode == VNx8SImode || TARGET_STREAMING_SME2)"
    "<sve_int_op>\t%0.<Ventype>, %1, #%2"
+   [(set_attr "sve_type" "sve_int_shift")]
  )
  
  ;; =========================================================================
***************
*** 2879,2884 ****
--- 2992,2998 ----
       [ w        , Upl , 0 , w ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2904,2909 ****
--- 3018,3024 ----
       [ w        , Upl , 0 , w ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
       [ ?&w      , Upl , w , w ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Vetype>, %3.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 2956,2961 ****
--- 3071,3077 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_accum")]
  )
  
  ;; Predicated pairwise absolute difference and accumulate, merging with zero.
***************
*** 2979,2985 ****
    {
      operands[5] = CONSTM1_RTX (<VPRED>mode);
    }
!   [(set_attr "movprfx" "yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 3095,3102 ----
    {
      operands[5] = CONSTM1_RTX (<VPRED>mode);
    }
!   [(set_attr "movprfx" "yes")
!    (set_attr "sve_type" "sve_int_accum")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3017,3022 ****
--- 3134,3140 ----
      operands[5] = copy_rtx (operands[1]);
      operands[6] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_arith")]
  )
  
  ;; =========================================================================
***************
*** 3042,3047 ****
--- 3160,3166 ----
       [ w        , 0 , w ; *              ] <sve_int_op>\t%0.<Vetype>, %0.<Vetype>, %2.<Vetype>, #<rot>
       [ ?&w      , w , w ; yes            ] movprfx\t%0, %1\;<sve_int_op>\t%0.<Vetype>, %0.<Vetype>, %2.<Vetype>, #<rot>
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; unpredicated optab pattern for auto-vectorizer
***************
*** 3074,3079 ****
--- 3193,3199 ----
       [ w        , 0 , w , w ; *              ] <sve_int_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>, #<rot>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sve_int_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>, #<rot>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  (define_insn "@aarch64_<optab>_lane_<mode>"
***************
*** 3091,3096 ****
--- 3211,3217 ----
       [ w        , 0 , w , <sve_lane_con> ; *              ] <sve_int_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>[%4], #<rot>
       [ ?&w      , w , w , <sve_lane_con> ; yes            ] movprfx\t%0, %1\;<sve_int_op>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>[%4], #<rot>
    }
+   [(set_attr "sve_type" "sve_int_mul")]
  )
  
  ;; unpredicated optab pattern for auto-vectorizer
***************
*** 3154,3159 ****
--- 3275,3281 ----
       [ w        , 0 , w , w ; *              ] <sve_int_op>\t%0.<Vetype>, %2.<Vetype_fourth>, %3.<Vetype_fourth>, #<rot>
       [ ?&w      , w , w , w ; yes            ] movprfx\t%0, %1\;<sve_int_op>\t%0.<Vetype>, %2.<Vetype_fourth>, %3.<Vetype_fourth>, #<rot>
    }
+   [(set_attr "sve_type" "sve_int_dot")]
  )
  
  (define_insn "@aarch64_<optab>_lane_<mode>"
***************
*** 3171,3176 ****
--- 3293,3299 ----
       [ w        , 0 , w , <sve_lane_con> ; *              ] <sve_int_op>\t%0.<Vetype>, %2.<Vetype_fourth>, %3.<Vetype_fourth>[%4], #<rot>
       [ ?&w      , w , w , <sve_lane_con> ; yes            ] movprfx\t%0, %1\;<sve_int_op>\t%0.<Vetype>, %2.<Vetype_fourth>, %3.<Vetype_fourth>[%4], #<rot>
    }
+   [(set_attr "sve_type" "sve_int_dot")]
  )
  
  ;; =========================================================================
***************
*** 3202,3207 ****
--- 3325,3331 ----
  	  SVE2_COND_FP_UNARY_LONG))]
    "TARGET_SVE2"
    "<sve_fp_op>\t%0.<Vetype>, %1/m, %0.<Ventype>"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated convert long top with merging.
***************
*** 3237,3242 ****
--- 3361,3367 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  (define_insn "*cond_<sve_fp_op><mode>_strict"
***************
*** 3252,3257 ****
--- 3377,3383 ----
  	  UNSPEC_SEL))]
    "TARGET_SVE2"
    "<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Ventype>"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  (define_insn "@aarch64_sve2_fp8_cvt_<fp8_cvt_uns_op><mode>"
***************
*** 3262,3267 ****
--- 3388,3394 ----
  	  FP8CVT_UNS))]
    "TARGET_SSVE_FP8"
    "<b><fp8_cvt_uns_op>\t%0.h, %1.b"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3288,3293 ****
--- 3415,3421 ----
  	  UNSPEC_COND_FCVTNT))]
    "TARGET_SVE2"
    "fcvtnt\t%0.<Vetype>, %2/m, %3.<Vewtype>"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated FCVTX (equivalent to what would be FCVTXNB, except that
***************
*** 3304,3309 ****
--- 3432,3438 ----
       [ w        , Upl , 0 ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated FCVTX with merging.
***************
*** 3342,3347 ****
--- 3471,3477 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  (define_insn "*cond_<sve_fp_op><mode>_any_strict"
***************
*** 3361,3366 ****
--- 3491,3497 ----
       [ &w       , Upl , w , Dz ; yes            ] movprfx\t%0.<Vewtype>, %1/z, %2.<Vewtype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
       [ &w       , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vewtype>
    }
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; Predicated FCVTXNT.  This doesn't give a natural aarch64_pred_*/cond_*
***************
*** 3378,3383 ****
--- 3509,3515 ----
  	  UNSPEC_COND_FCVTXNT))]
    "TARGET_SVE2"
    "fcvtxnt\t%0.<Ventype>, %2/m, %3.<Vetype>"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3394,3399 ****
--- 3526,3532 ----
  	  (match_operand:VNx8HF 1 "register_operand" "w")))]
    "TARGET_STREAMING_SME_F16F16"
    "fcvt\t%0, %1.h"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  (define_insn "@aarch64_sve_cvtl<mode>"
***************
*** 3403,3408 ****
--- 3536,3542 ----
  	  UNSPEC_FCVTL))]
    "TARGET_STREAMING_SME_F16F16"
    "fcvtl\t%0, %1.h"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3423,3428 ****
--- 3557,3563 ----
  	  (match_operand:VNx8SF 1 "aligned_register_operand" "Uw2")))]
    "TARGET_STREAMING_SME2"
    "<b>fcvt\t%0.h, %1"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  (define_insn "@aarch64_sve_cvtn<mode>"
***************
*** 3432,3437 ****
--- 3567,3573 ----
  	  UNSPEC_FCVTN))]
    "TARGET_STREAMING_SME2"
    "<b>fcvtn\t%0.h, %1"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  (define_insn "@aarch64_sve2_fp8_cvtn<mode>"
***************
*** 3442,3447 ****
--- 3578,3584 ----
  	  UNSPEC_FP8FCVTN))]
    "TARGET_SSVE_FP8"
    "<b>fcvtn\t%0.b, %1"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  (define_insn "@aarch64_sve2_fp8_cvtnb<mode>"
***************
*** 3452,3457 ****
--- 3589,3595 ----
  	  UNSPEC_FCVTNB))]
    "TARGET_SSVE_FP8"
    "fcvtnb\t%0.b, %1"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  (define_insn "@aarch64_sve_cvtnt<mode>"
***************
*** 3463,3468 ****
--- 3601,3607 ----
  	  UNSPEC_FCVTNT))]
    "TARGET_SSVE_FP8"
    "fcvtnt\t%0.b, %2"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3479,3484 ****
--- 3618,3624 ----
  	  (match_operand:<V_INT_EQUIV> 1 "aligned_register_operand" "Uw<vector_count>")))]
    "TARGET_STREAMING_SME2"
    "<su_optab>cvtf\t%0, %1"
+   [(set_attr "sve_type" "sve_int_cvt")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3495,3500 ****
--- 3635,3641 ----
  	  (match_operand:SVE_SFx24 1 "aligned_register_operand" "Uw<vector_count>")))]
    "TARGET_STREAMING_SME2"
    "fcvtz<su>\t%0, %1"
+   [(set_attr "sve_type" "sve_fp_cvt")]
  )
  
  ;; =========================================================================
***************
*** 3523,3528 ****
--- 3664,3670 ----
       [ w        , Upl , 0 ; *              ] <sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<sve_int_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_int_recip_est")]
  )
  
  ;; Predicated integer unary operations with merging.
***************
*** 3566,3571 ****
--- 3708,3714 ----
    {
      operands[4] = CONSTM1_RTX (<VPRED>mode);
    }
+   [(set_attr "sve_type" "sve_int_recip_est")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3588,3593 ****
--- 3731,3737 ----
       [ w        , Upl , 0 ; *              ] <sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_log")]
  )
  
  ;; Predicated FLOGB with merging.
***************
*** 3626,3631 ****
--- 3770,3776 ----
    {
      operands[4] = copy_rtx (operands[1]);
    }
+   [(set_attr "sve_type" "sve_fp_log")]
  )
  
  (define_insn "*cond_<sve_fp_op><mode>_strict"
***************
*** 3645,3650 ****
--- 3790,3796 ----
       [ ?&w      , Upl , w , Dz ; yes            ] movprfx\t%0.<Vetype>, %1/z, %2.<Vetype>\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;<sve_fp_op>\t%0.<Vetype>, %1/m, %2.<Vetype>
    }
+   [(set_attr "sve_type" "sve_fp_log")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3665,3670 ****
--- 3811,3817 ----
  	  UNSPEC_PMUL))]
    "TARGET_SVE2"
    "pmul\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_pmul")]
  )
  
  ;; Extending PMUL, with the results modeled as wider vectors.
***************
*** 3677,3682 ****
--- 3824,3830 ----
  	  SVE2_PMULL))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Vetype>, %1.<Ventype>, %2.<Ventype>"
+   [(set_attr "sve_type" "sve_int_pmul")]
  )
  
  ;; Extending PMUL, with the results modeled as pairs of values.
***************
*** 3690,3695 ****
--- 3838,3844 ----
  	  SVE2_PMULL_PAIR))]
    "TARGET_SVE2"
    "<sve_int_op>\t%0.<Vewtype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_pmul")]
  )
  
  ;; =========================================================================
***************
*** 3709,3714 ****
--- 3858,3864 ----
  	  UNSPEC_SEL))]
    "TARGET_STREAMING_SME2"
    "sel\t%0, %K3, %1, %2"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3736,3741 ****
--- 3886,3892 ----
     (clobber (reg:CC_NZC CC_REGNUM))]
    "TARGET_SVE2p1_OR_SME2"
    "while<cmp_op>\t{%S0.<bits_etype>, %T0.<bits_etype>}, %x1, %x2"
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  (define_insn "@aarch64_sve_while<while_optab_cmp>_c<BHSD_BITS>"
***************
*** 3750,3755 ****
--- 3901,3907 ----
     (clobber (reg:CC_NZC CC_REGNUM))]
    "TARGET_SVE2p1_OR_SME2"
    "while<cmp_op>\t%K0.<bits_etype>, %x1, %x2, vlx%3"
+   [(set_attr "sve_type" "sve_pred_cnt_ctrl")]
  )
  
  ;; =========================================================================
***************
*** 3778,3783 ****
--- 3930,3936 ----
  	  SVE_INT_REDUCTION_128))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "<optab>\t%0.<Vtype>, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_reduc")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3799,3804 ****
--- 3952,3958 ----
  	  SVE_FP_REDUCTION_128))]
    "TARGET_SVE2p1 && TARGET_NON_STREAMING"
    "<optab>\t%0.<Vtype>, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_fp_reduc")]
  )
  
  ;; =========================================================================
***************
*** 3825,3830 ****
--- 3979,3985 ----
       [ w        , Upl , 0 ; *              ] revd\t%0.q, %1/m, %2.q
       [ ?&w      , Upl , w ; yes            ] movprfx\t%0, %2\;revd\t%0.q, %1/m, %2.q
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "@cond_<optab><mode>"
***************
*** 3841,3846 ****
--- 3996,4002 ----
       [ w        , Upl , w , 0  ; *              ] revd\t%0.q, %1/m, %2.q
       [ ?&w      , Upl , w , w  ; yes            ] movprfx\t%0, %3\;revd\t%0.q, %1/m, %2.q
    }
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3861,3866 ****
--- 4017,4023 ----
     && TARGET_NON_STREAMING
     && IN_RANGE (INTVAL (operands[2]) * (<elem_bits> / 8), 0, 15)"
    "dupq\t%0.<Vetype>, %1.<Vetype>[%2]"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "@aarch64_sve_extq<mode>"
***************
*** 3879,3885 ****
  	    ? "extq\\t%0.b, %0.b, %2.b, #%3"
  	    : "movprfx\t%0, %1\;extq\\t%0.b, %0.b, %2.b, #%3");
    }
!   [(set_attr "movprfx" "*,yes")]
  )
  
  ;; -------------------------------------------------------------------------
--- 4036,4043 ----
  	    ? "extq\\t%0.b, %0.b, %2.b, #%3"
  	    : "movprfx\t%0, %1\;extq\\t%0.b, %0.b, %2.b, #%3");
    }
!   [(set_attr "movprfx" "*,yes")
!    (set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3900,3905 ****
--- 4058,4064 ----
  	  UNSPEC_TBL2))]
    "TARGET_SVE2"
    "tbl\t%0.<Vetype>, %1, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; TBX(Q).  These instructions do not take MOVPRFX.
***************
*** 3912,3917 ****
--- 4071,4077 ----
  	  SVE_TBX))]
    "TARGET_SVE2"
    "<perm_insn>\t%0.<Vetype>, %2.<Vetype>, %3.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3930,3935 ****
--- 4090,4096 ----
  	  SVE2_x24_PERMUTE))]
    "TARGET_STREAMING_SME2"
    "<perm_insn>\t%0, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "@aarch64_sve_<optab><mode>"
***************
*** 3940,3945 ****
--- 4101,4107 ----
  	  SVE2_x24_PERMUTEQ))]
    "TARGET_STREAMING_SME2"
    "<perm_insn>\t{%S0.q - %T0.q}, %1.q, %2.q"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "@aarch64_sve_<optab><mode>"
***************
*** 3949,3954 ****
--- 4111,4117 ----
  	  SVE2_x24_PERMUTE))]
    "TARGET_STREAMING_SME2"
    "<perm_insn>\t%0, %1"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "@aarch64_sve_<optab><mode>"
***************
*** 3958,3963 ****
--- 4121,4127 ----
  	  SVE2_x24_PERMUTEQ))]
    "TARGET_STREAMING_SME2"
    "<perm_insn>\t{%S0.q - %V0.q}, {%S1.q - %V1.q}"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 3977,3982 ****
--- 4141,4147 ----
  	  SVE2_INT_BITPERM))]
    "TARGET_SVE2_BITPERM"
    "<sve_int_op>\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_bit_perm")]
  )
  
  ;; =========================================================================
***************
*** 4041,4046 ****
--- 4206,4212 ----
  	  UNSPEC_HISTCNT))]
    "TARGET_SVE2 && TARGET_NON_STREAMING"
    "histcnt\t%0.<Vetype>, %1/z, %2.<Vetype>, %3.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "@aarch64_sve2_histseg<mode>"
***************
*** 4051,4056 ****
--- 4217,4223 ----
  	  UNSPEC_HISTSEG))]
    "TARGET_SVE2 && TARGET_NON_STREAMING"
    "histseg\t%0.<Vetype>, %1.<Vetype>, %2.<Vetype>"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 4079,4084 ****
--- 4246,4252 ----
       [ ?Upl    , 0  , w, w; yes                 ] ^
       [ Upa     , Upl, w, w; no                  ] ^
    }
+   [(set_attr "sve_type" "sve_int_match")]
  )
  
  (define_expand "@aarch64_pred_<sve_int_op><mode>"
***************
*** 4161,4166 ****
--- 4329,4335 ----
      operands[6] = copy_rtx (operands[4]);
      operands[7] = operands[5];
    }
+   [(set_attr "sve_type" "sve_int_match")]
  )
  
  (define_insn_and_rewrite "*aarch64_pred_<sve_int_op><mode>_cc"
***************
*** 4228,4233 ****
--- 4397,4403 ----
      operands[6] = copy_rtx (operands[4]);
      operands[7] = operands[5];
    }
+   [(set_attr "sve_type" "sve_int_match")]
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 4248,4253 ****
--- 4418,4424 ----
  	 UNSPEC_SVE_LUTI))]
    "TARGET_LUT && TARGET_SVE2_OR_SME2"
    "luti<LUTI_BITS>\t%0.<Vetype>, { %1.<Vetype> }, %2[%3]"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  (define_insn "@aarch64_sve_luti<LUTI_BITS><mode>"
***************
*** 4260,4265 ****
--- 4431,4437 ----
  	  UNSPEC_SVE_LUTI))]
    "TARGET_LUT && TARGET_SVE2_OR_SME2"
    "luti<LUTI_BITS>\t%0.<Vetype>, %1, %2[%3]"
+   [(set_attr "sve_type" "sve_int_general")]
  )
  
  ;; =========================================================================
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/aarch64-tuning-flags.def gcc-16-20250928/gcc/config/aarch64/aarch64-tuning-flags.def
*** gcc-16-20250921/gcc/config/aarch64/aarch64-tuning-flags.def	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/aarch64-tuning-flags.def	Sun Sep 28 22:33:03 2025
*************** AARCH64_EXTRA_TUNING_OPTION ("cheap_fpmr
*** 69,72 ****
--- 69,75 ----
  #define AARCH64_EXTRA_TUNE_BASE (AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND	\
  				 | AARCH64_EXTRA_TUNE_FULLY_PIPELINED_FMA)
  
+ /* Enables dispatch scheduling.  */
+ AARCH64_EXTRA_TUNING_OPTION ("dispatch_sched", DISPATCH_SCHED)
+ 
  #undef AARCH64_EXTRA_TUNING_OPTION
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/aarch64.cc gcc-16-20250928/gcc/config/aarch64/aarch64.cc
*** gcc-16-20250921/gcc/config/aarch64/aarch64.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/aarch64.cc	Sun Sep 28 22:33:03 2025
***************
*** 98,103 ****
--- 98,104 ----
  #include "ipa-prop.h"
  #include "ipa-fnsummary.h"
  #include "hash-map.h"
+ #include "aarch64-sched-dispatch.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** aarch64_override_options_internal (struc
*** 19251,19256 ****
--- 19252,19263 ----
      SET_OPTION_IF_UNSET (opts, &global_options_set, param_fully_pipelined_fma,
  			 1);
  
+   /* If dispatch scheduling is enabled, the dispatch_constraints in the
+      tune_params struct must be defined.  */
+   if (aarch64_tune_params.extra_tuning_flags
+       & AARCH64_EXTRA_TUNE_DISPATCH_SCHED)
+     gcc_assert (aarch64_tune_params.dispatch_constraints != NULL);
+ 
    /* TODO: SME codegen without SVE2 is not supported, once this support is added
       remove this 'sorry' and the implicit enablement of SVE2 in the checks for
       streaming mode above in this function.  */
*************** static aarch64_fmv_feature_datum aarch64
*** 20382,20388 ****
  #include "config/aarch64/aarch64-option-extensions.def"
  };
  
! /* Parse a function multiversioning feature string STR, as found in a
     target_version or target_clones attribute.
  
     If ISA_FLAGS is nonnull, then update it with the specified architecture
--- 20389,20395 ----
  #include "config/aarch64/aarch64-option-extensions.def"
  };
  
! /* Parse a function multiversioning feature string_slice STR, as found in a
     target_version or target_clones attribute.
  
     If ISA_FLAGS is nonnull, then update it with the specified architecture
*************** static aarch64_fmv_feature_datum aarch64
*** 20394,20430 ****
     the extension string is created and stored to INVALID_EXTENSION.  */
  
  static enum aarch_parse_opt_result
! aarch64_parse_fmv_features (const char *str, aarch64_feature_flags *isa_flags,
  			    aarch64_fmv_feature_mask *feature_mask,
  			    std::string *invalid_extension)
  {
    if (feature_mask)
      *feature_mask = 0ULL;
  
!   if (strcmp (str, "default") == 0)
      return AARCH_PARSE_OK;
  
!   while (str != NULL && *str != 0)
      {
!       const char *ext;
!       size_t len;
  
!       ext = strchr (str, '+');
  
!       if (ext != NULL)
! 	len = ext - str;
!       else
! 	len = strlen (str);
  
!       if (len == 0)
  	return AARCH_PARSE_MISSING_ARG;
  
        int num_features = ARRAY_SIZE (aarch64_fmv_feature_data);
        int i;
        for (i = 0; i < num_features; i++)
  	{
! 	  if (strlen (aarch64_fmv_feature_data[i].name) == len
! 	      && strncmp (aarch64_fmv_feature_data[i].name, str, len) == 0)
  	    {
  	      if (isa_flags)
  		*isa_flags |= aarch64_fmv_feature_data[i].opt_flags;
--- 20401,20434 ----
     the extension string is created and stored to INVALID_EXTENSION.  */
  
  static enum aarch_parse_opt_result
! aarch64_parse_fmv_features (string_slice str, aarch64_feature_flags *isa_flags,
  			    aarch64_fmv_feature_mask *feature_mask,
  			    std::string *invalid_extension)
  {
    if (feature_mask)
      *feature_mask = 0ULL;
  
!   if (str == "default")
      return AARCH_PARSE_OK;
  
!   gcc_assert (str.is_valid ());
! 
!   while (str.is_valid ())
      {
!       string_slice ext;
  
!       ext = string_slice::tokenize (&str, "+");
  
!       gcc_assert (ext.is_valid ());
  
!       if (!ext.is_valid () || ext.empty ())
  	return AARCH_PARSE_MISSING_ARG;
  
        int num_features = ARRAY_SIZE (aarch64_fmv_feature_data);
        int i;
        for (i = 0; i < num_features; i++)
  	{
! 	  if (aarch64_fmv_feature_data[i].name == ext)
  	    {
  	      if (isa_flags)
  		*isa_flags |= aarch64_fmv_feature_data[i].opt_flags;
*************** aarch64_parse_fmv_features (const char *
*** 20436,20442 ****
  		    {
  		      /* Duplicate feature.  */
  		      if (invalid_extension)
! 			*invalid_extension = std::string (str, len);
  		      return AARCH_PARSE_DUPLICATE_FEATURE;
  		    }
  		}
--- 20440,20447 ----
  		    {
  		      /* Duplicate feature.  */
  		      if (invalid_extension)
! 			*invalid_extension
! 			  = std::string (ext.begin (), ext.size ());
  		      return AARCH_PARSE_DUPLICATE_FEATURE;
  		    }
  		}
*************** aarch64_parse_fmv_features (const char *
*** 20448,20461 ****
  	{
  	  /* Feature not found in list.  */
  	  if (invalid_extension)
! 	    *invalid_extension = std::string (str, len);
  	  return AARCH_PARSE_INVALID_FEATURE;
  	}
- 
-       str = ext;
-       if (str)
- 	/* Skip over the next '+'.  */
- 	str++;
      }
  
    return AARCH_PARSE_OK;
--- 20453,20461 ----
  	{
  	  /* Feature not found in list.  */
  	  if (invalid_extension)
! 	    *invalid_extension = std::string (ext.begin (), ext.size ());
  	  return AARCH_PARSE_INVALID_FEATURE;
  	}
      }
  
    return AARCH_PARSE_OK;
*************** aarch64_parse_fmv_features (const char *
*** 20467,20481 ****
  static bool
  aarch64_process_target_version_attr (tree args)
  {
-   static bool issued_warning = false;
-   if (!issued_warning)
-     {
-       warning (OPT_Wexperimental_fmv_target,
- 	       "Function Multi Versioning support is experimental, and the "
- 	       "behavior is likely to change");
-       issued_warning = true;
-     }
- 
    if (TREE_CODE (args) == TREE_LIST)
      {
        if (TREE_CHAIN (args))
--- 20467,20472 ----
*************** aarch64_process_target_version_attr (tre
*** 20492,20498 ****
        return false;
      }
  
!   const char *str = TREE_STRING_POINTER (args);
  
    enum aarch_parse_opt_result parse_res;
    auto isa_flags = aarch64_asm_isa_flags;
--- 20483,20489 ----
        return false;
      }
  
!   string_slice str = TREE_STRING_POINTER (args);
  
    enum aarch_parse_opt_result parse_res;
    auto isa_flags = aarch64_asm_isa_flags;
*************** aarch64_process_target_version_attr (tre
*** 20516,20528 ****
      case AARCH_PARSE_INVALID_FEATURE:
        error ("invalid feature modifier %qs of value %qs in "
  	     "%<target_version%> attribute", invalid_extension.c_str (),
! 	     str);
        break;
  
      case AARCH_PARSE_DUPLICATE_FEATURE:
        error ("duplicate feature modifier %qs of value %qs in "
  	     "%<target_version%> attribute", invalid_extension.c_str (),
! 	     str);
        break;
  
      default:
--- 20507,20519 ----
      case AARCH_PARSE_INVALID_FEATURE:
        error ("invalid feature modifier %qs of value %qs in "
  	     "%<target_version%> attribute", invalid_extension.c_str (),
! 	     TREE_STRING_POINTER (args));
        break;
  
      case AARCH_PARSE_DUPLICATE_FEATURE:
        error ("duplicate feature modifier %qs of value %qs in "
  	     "%<target_version%> attribute", invalid_extension.c_str (),
! 	     TREE_STRING_POINTER (args));
        break;
  
      default:
*************** get_feature_mask_for_version (tree decl)
*** 20594,20606 ****
    if (version_attr == NULL)
      return 0;
  
!   const char *version_string = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE
! 						    (version_attr)));
    enum aarch_parse_opt_result parse_res;
    aarch64_fmv_feature_mask feature_mask;
  
!   parse_res = aarch64_parse_fmv_features (version_string, NULL, &feature_mask,
! 					  NULL);
  
    /* We should have detected any errors before getting here.  */
    gcc_assert (parse_res == AARCH_PARSE_OK);
--- 20585,20598 ----
    if (version_attr == NULL)
      return 0;
  
!   string_slice version_string
!     = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (version_attr)));
! 
    enum aarch_parse_opt_result parse_res;
    aarch64_fmv_feature_mask feature_mask;
  
!   parse_res = aarch64_parse_fmv_features (version_string, NULL,
! 					  &feature_mask, NULL);
  
    /* We should have detected any errors before getting here.  */
    gcc_assert (parse_res == AARCH_PARSE_OK);
*************** tree
*** 20707,20762 ****
  aarch64_mangle_decl_assembler_name (tree decl, tree id)
  {
    /* For function version, add the target suffix to the assembler name.  */
!   if (TREE_CODE (decl) == FUNCTION_DECL
!       && DECL_FUNCTION_VERSIONED (decl))
      {
!       aarch64_fmv_feature_mask feature_mask = get_feature_mask_for_version (decl);
! 
!       std::string name = IDENTIFIER_POINTER (id);
! 
!       /* For the default version, append ".default".  */
!       if (feature_mask == 0ULL)
  	{
! 	  name += ".default";
! 	  return get_identifier (name.c_str());
! 	}
  
!       name += "._";
  
!       int num_features = ARRAY_SIZE (aarch64_fmv_feature_data);
!       for (int i = 0; i < num_features; i++)
! 	{
! 	  if (feature_mask & aarch64_fmv_feature_data[i].feature_mask)
! 	    {
! 	      name += "M";
! 	      name += aarch64_fmv_feature_data[i].name;
! 	    }
! 	}
  
!       if (DECL_ASSEMBLER_NAME_SET_P (decl))
! 	SET_DECL_RTL (decl, NULL);
  
!       id = get_identifier (name.c_str());
      }
    return id;
  }
  
- /* Return an identifier for the base assembler name of a versioned function.
-    This is computed by taking the default version's assembler name, and
-    stripping off the ".default" suffix if it's already been appended.  */
- 
- static tree
- get_suffixed_assembler_name (tree default_decl, const char *suffix)
- {
-   std::string name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (default_decl));
- 
-   auto size = name.size ();
-   if (size >= 8 && name.compare (size - 8, 8, ".default") == 0)
-     name.resize (size - 8);
-   name += suffix;
-   return get_identifier (name.c_str());
- }
- 
  /* Make the resolver function decl to dispatch the versions of
     a multi-versioned function,  DEFAULT_DECL.  IFUNC_ALIAS_DECL is
     ifunc alias that will point to the created resolver.  Create an
--- 20699,20735 ----
  aarch64_mangle_decl_assembler_name (tree decl, tree id)
  {
    /* For function version, add the target suffix to the assembler name.  */
!   if (TREE_CODE (decl) == FUNCTION_DECL)
      {
!       cgraph_node *node = cgraph_node::get (decl);
!       if (node && node->dispatcher_function)
! 	return id;
!       else if (node && node->dispatcher_resolver_function)
! 	return clone_identifier (id, "resolver");
!       else if (DECL_FUNCTION_VERSIONED (decl))
  	{
! 	  aarch64_fmv_feature_mask feature_mask
! 	    = get_feature_mask_for_version (decl);
  
! 	  if (feature_mask == 0ULL)
! 	    return clone_identifier (id, "default");
  
! 	  std::string suffix = "_";
  
! 	  int num_features = ARRAY_SIZE (aarch64_fmv_feature_data);
! 	  for (int i = 0; i < num_features; i++)
! 	    if (feature_mask & aarch64_fmv_feature_data[i].feature_mask)
! 	      {
! 		suffix += "M";
! 		suffix += aarch64_fmv_feature_data[i].name;
! 	      }
  
! 	  id = clone_identifier (id, suffix.c_str (), true);
! 	}
      }
    return id;
  }
  
  /* Make the resolver function decl to dispatch the versions of
     a multi-versioned function,  DEFAULT_DECL.  IFUNC_ALIAS_DECL is
     ifunc alias that will point to the created resolver.  Create an
*************** make_resolver_func (const tree default_d
*** 20770,20780 ****
  {
    tree decl, type, t;
  
-   /* Create resolver function name based on default_decl.  We need to remove an
-      existing ".default" suffix if this has already been appended.  */
-   tree decl_name = get_suffixed_assembler_name (default_decl, ".resolver");
-   const char *resolver_name = IDENTIFIER_POINTER (decl_name);
- 
    /* The resolver function should have signature
       (void *) resolver (uint64_t, const __ifunc_arg_t *) */
    type = build_function_type_list (ptr_type_node,
--- 20743,20748 ----
*************** make_resolver_func (const tree default_d
*** 20782,20791 ****
  				   build_ifunc_arg_type (),
  				   NULL_TREE);
  
!   decl = build_fn_decl (resolver_name, type);
!   SET_DECL_ASSEMBLER_NAME (decl, decl_name);
  
-   DECL_NAME (decl) = decl_name;
    TREE_USED (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
--- 20750,20770 ----
  				   build_ifunc_arg_type (),
  				   NULL_TREE);
  
!   cgraph_node *node = cgraph_node::get (default_decl);
!   gcc_assert (node && node->function_version ());
! 
!   decl = build_fn_decl (IDENTIFIER_POINTER (DECL_NAME (default_decl)), type);
! 
!   /* Set the assembler name to prevent cgraph_node attempting to mangle.  */
!   SET_DECL_ASSEMBLER_NAME (decl, DECL_ASSEMBLER_NAME (default_decl));
! 
!   cgraph_node *resolver_node = cgraph_node::get_create (decl);
!   resolver_node->dispatcher_resolver_function = true;
! 
!   tree id = aarch64_mangle_decl_assembler_name
!     (decl, node->function_version ()->assembler_name);
!   symtab->change_decl_assembler_name (decl, id);
  
    TREE_USED (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
*************** make_resolver_func (const tree default_d
*** 20850,20856 ****
    gcc_assert (ifunc_alias_decl != NULL);
    /* Mark ifunc_alias_decl as "ifunc" with resolver as resolver_name.  */
    DECL_ATTRIBUTES (ifunc_alias_decl)
!     = make_attribute ("ifunc", resolver_name,
  		      DECL_ATTRIBUTES (ifunc_alias_decl));
  
    /* Create the alias for dispatch to resolver here.  */
--- 20829,20835 ----
    gcc_assert (ifunc_alias_decl != NULL);
    /* Mark ifunc_alias_decl as "ifunc" with resolver as resolver_name.  */
    DECL_ATTRIBUTES (ifunc_alias_decl)
!     = make_attribute ("ifunc", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
  		      DECL_ATTRIBUTES (ifunc_alias_decl));
  
    /* Create the alias for dispatch to resolver here.  */
*************** aarch64_generate_version_dispatcher_body
*** 21127,21213 ****
    cgraph_edge::rebuild_edges ();
    pop_cfun ();
  
-   /* Fix up symbol names.  First we need to obtain the base name, which may
-      have already been mangled.  */
-   tree base_name = get_suffixed_assembler_name (default_ver_decl, "");
- 
-   /* We need to redo the version mangling on the non-default versions for the
-      target_clones case.  Redoing the mangling for the target_version case is
-      redundant but does no harm.  We need to skip the default version, because
-      expand_clones will append ".default" later; fortunately that suffix is the
-      one we want anyway.  */
-   for (versn_info = node_version_info->next->next; versn_info;
-        versn_info = versn_info->next)
-     {
-       tree version_decl = versn_info->this_node->decl;
-       tree name = aarch64_mangle_decl_assembler_name (version_decl,
- 						      base_name);
-       symtab->change_decl_assembler_name (version_decl, name);
-     }
- 
-   /* We also need to use the base name for the ifunc declaration.  */
-   symtab->change_decl_assembler_name (node->decl, base_name);
- 
    return resolver_decl;
  }
  
! /* Make a dispatcher declaration for the multi-versioned function DECL.
!    Calls to DECL function will be replaced with calls to the dispatcher
!    by the front-end.  Returns the decl of the dispatcher function.  */
  
  tree
  aarch64_get_function_versions_dispatcher (void *decl)
  {
!   tree fn = (tree) decl;
!   struct cgraph_node *node = NULL;
!   struct cgraph_node *default_node = NULL;
!   struct cgraph_function_version_info *node_v = NULL;
! 
    tree dispatch_decl = NULL;
  
!   struct cgraph_function_version_info *default_version_info = NULL;
! 
!   gcc_assert (fn != NULL && DECL_FUNCTION_VERSIONED (fn));
! 
!   node = cgraph_node::get (fn);
!   gcc_assert (node != NULL);
! 
!   node_v = node->function_version ();
!   gcc_assert (node_v != NULL);
  
!   if (node_v->dispatcher_resolver != NULL)
!     return node_v->dispatcher_resolver;
  
!   /* The default node is always the beginning of the chain.  */
!   default_version_info = node_v;
!   while (default_version_info->prev)
!     default_version_info = default_version_info->prev;
!   default_node = default_version_info->this_node;
  
!   /* If there is no default node, just return NULL.  */
!   if (!is_function_default_version (default_node->decl))
!     return NULL;
  
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
-       struct cgraph_node *dispatcher_node = NULL;
-       struct cgraph_function_version_info *dispatcher_version_info = NULL;
  
        /* Right now, the dispatching is done via ifunc.  */
        dispatch_decl = make_dispatcher_decl (default_node->decl);
-       TREE_NOTHROW (dispatch_decl) = TREE_NOTHROW (fn);
- 
-       dispatcher_node = cgraph_node::get_create (dispatch_decl);
-       gcc_assert (dispatcher_node != NULL);
-       dispatcher_node->dispatcher_function = 1;
-       dispatcher_version_info
- 	= dispatcher_node->insert_new_function_version ();
-       dispatcher_version_info->next = default_version_info;
-       dispatcher_node->definition = 1;
  
        /* Set the dispatcher for all the versions.  */
!       it_v = default_version_info;
        while (it_v != NULL)
  	{
  	  it_v->dispatcher_resolver = dispatch_decl;
--- 21106,21147 ----
    cgraph_edge::rebuild_edges ();
    pop_cfun ();
  
    return resolver_decl;
  }
  
! /* Make a dispatcher declaration for the multi-versioned default function DECL.
!    Calls to DECL function will be replaced with calls to the dispatcher by
!    the target_clones pass.  Returns the decl of the dispatcher function.  */
  
  tree
  aarch64_get_function_versions_dispatcher (void *decl)
  {
!   tree default_decl = (tree) decl;
    tree dispatch_decl = NULL;
  
!   gcc_assert (decl != NULL
! 	      && DECL_FUNCTION_VERSIONED (default_decl)
! 	      && is_function_default_version (default_decl));
  
!   struct cgraph_node *default_node = cgraph_node::get (default_decl);
!   gcc_assert (default_node != NULL);
  
!   struct cgraph_function_version_info *default_node_v
!     = default_node->function_version ();
!   gcc_assert (default_node_v != NULL && !default_node_v->prev);
  
!   if (default_node_v->dispatcher_resolver != NULL)
!     return default_node_v->dispatcher_resolver;
  
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
  
        /* Right now, the dispatching is done via ifunc.  */
        dispatch_decl = make_dispatcher_decl (default_node->decl);
  
        /* Set the dispatcher for all the versions.  */
!       it_v = default_node_v;
        while (it_v != NULL)
  	{
  	  it_v->dispatcher_resolver = dispatch_decl;
*************** aarch64_get_function_versions_dispatcher
*** 21224,21241 ****
    return dispatch_decl;
  }
  
! /* This function returns true if FN1 and FN2 are versions of the same function,
!    that is, the target_version attributes of the function decls are different.
!    This assumes that FN1 and FN2 have the same signature.  */
  
  bool
! aarch64_common_function_versions (tree fn1, tree fn2)
  {
!   if (TREE_CODE (fn1) != FUNCTION_DECL
!       || TREE_CODE (fn2) != FUNCTION_DECL)
!     return false;
  
!   return (aarch64_compare_version_priority (fn1, fn2) != 0);
  }
  
  /* Implement TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P.  Use an opt-out
--- 21158,21180 ----
    return dispatch_decl;
  }
  
! /* This function returns true if STR1 and STR2 are version strings for the same
!    function.  */
  
  bool
! aarch64_same_function_versions (string_slice str1, string_slice str2)
  {
!   enum aarch_parse_opt_result parse_res;
!   aarch64_fmv_feature_mask feature_mask1;
!   aarch64_fmv_feature_mask feature_mask2;
!   parse_res = aarch64_parse_fmv_features (str1, NULL,
! 					  &feature_mask1, NULL);
!   gcc_assert (parse_res == AARCH_PARSE_OK);
!   parse_res = aarch64_parse_fmv_features (str2, NULL,
! 					  &feature_mask2, NULL);
!   gcc_assert (parse_res == AARCH_PARSE_OK);
  
!   return feature_mask1 == feature_mask2;
  }
  
  /* Implement TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P.  Use an opt-out
*************** aarch64_expand_fp_spaceship (rtx dest, r
*** 31996,32001 ****
--- 31935,31990 ----
      }
  }
  
+ /* Implement TARGET_CHECK_TARGET_CLONE_VERSION.  */
+ 
+ bool
+ aarch64_check_target_clone_version (string_slice str, location_t *loc)
+ {
+   str = str.strip ();
+ 
+   if (str == "default")
+     return true;
+ 
+   enum aarch_parse_opt_result parse_res;
+   auto isa_flags = aarch64_asm_isa_flags;
+   std::string invalid_extension;
+ 
+   parse_res
+     = aarch64_parse_fmv_features (str, &isa_flags, NULL, &invalid_extension);
+ 
+   if (loc == NULL)
+     return parse_res == AARCH_PARSE_OK;
+ 
+   switch (parse_res)
+     {
+     case AARCH_PARSE_OK:
+       return true;
+     case AARCH_PARSE_MISSING_ARG:
+       warning_at (*loc, OPT_Wattributes,
+ 		  "empty string not valid for a %<target_clones%> version");
+       return false;
+     case AARCH_PARSE_INVALID_FEATURE:
+       warning_at (*loc, OPT_Wattributes,
+ 		  "invalid feature modifier %qs in version %qB for "
+ 		  "%<target_clones%> attribute",
+ 		  invalid_extension.c_str (), &str);
+       return false;
+     case AARCH_PARSE_DUPLICATE_FEATURE:
+       warning_at (*loc, OPT_Wattributes,
+ 		  "duplicate feature modifier %qs in version %qB for "
+ 		  "%<target_clones%> attribute",
+ 		  invalid_extension.c_str (), &str);
+       return false;
+     case AARCH_PARSE_INVALID_ARG:
+       warning_at (*loc, OPT_Wattributes,
+ 		  "invalid feature %qs in version %qB for "
+ 		  "%<target_clones%> attribute",
+ 		  invalid_extension.c_str (), &str);
+       return false;
+     }
+   gcc_unreachable ();
+ }
+ 
  /* Target-specific selftests.  */
  
  #if CHECKING_P
*************** aarch64_libgcc_floating_mode_supported_p
*** 32484,32489 ****
--- 32473,32484 ----
  #undef TARGET_SCHED_REASSOCIATION_WIDTH
  #define TARGET_SCHED_REASSOCIATION_WIDTH aarch64_reassociation_width
  
+ #undef TARGET_SCHED_DISPATCH
+ #define TARGET_SCHED_DISPATCH aarch64_sched_dispatch
+ 
+ #undef TARGET_SCHED_DISPATCH_DO
+ #define TARGET_SCHED_DISPATCH_DO aarch64_sched_dispatch_do
+ 
  #undef TARGET_DWARF_FRAME_REG_MODE
  #define TARGET_DWARF_FRAME_REG_MODE aarch64_dwarf_frame_reg_mode
  
*************** aarch64_libgcc_floating_mode_supported_p
*** 32850,32857 ****
  #undef TARGET_EMIT_EPILOGUE_FOR_SIBCALL
  #define TARGET_EMIT_EPILOGUE_FOR_SIBCALL aarch64_expand_epilogue
  
! #undef TARGET_OPTION_FUNCTION_VERSIONS
! #define TARGET_OPTION_FUNCTION_VERSIONS aarch64_common_function_versions
  
  #undef TARGET_COMPARE_VERSION_PRIORITY
  #define TARGET_COMPARE_VERSION_PRIORITY aarch64_compare_version_priority
--- 32845,32855 ----
  #undef TARGET_EMIT_EPILOGUE_FOR_SIBCALL
  #define TARGET_EMIT_EPILOGUE_FOR_SIBCALL aarch64_expand_epilogue
  
! #undef TARGET_OPTION_SAME_FUNCTION_VERSIONS
! #define TARGET_OPTION_SAME_FUNCTION_VERSIONS aarch64_same_function_versions
! 
! #undef TARGET_CHECK_TARGET_CLONE_VERSION
! #define TARGET_CHECK_TARGET_CLONE_VERSION aarch64_check_target_clone_version
  
  #undef TARGET_COMPARE_VERSION_PRIORITY
  #define TARGET_COMPARE_VERSION_PRIORITY aarch64_compare_version_priority
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/aarch64.md gcc-16-20250928/gcc/config/aarch64/aarch64.md
*** gcc-16-20250921/gcc/config/aarch64/aarch64.md	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/aarch64.md	Sun Sep 28 22:33:03 2025
***************
*** 647,652 ****
--- 647,672 ----
  ;; patterns.
  (define_attr "ldpstp" "ldp,stp,none" (const_string "none"))
  
+ ;; Attribute that classifies SVE instructions by their functional type.
+ ;; This attribute is currently only used for dispatch scheduling.
+ (define_attr "sve_type"
+   "none,\
+    sve_pred_logical,sve_pred_cnt_ctrl,sve_pred_cnt_scalar,sve_pred_misc,\
+    sve_pred_vec,\
+    sve_fp_arith,sve_fp_mul,sve_fp_assoc_add,sve_fp_cmp,sve_fp_cvt,sve_fp_log,\
+    sve_fp_exp,sve_fp_div,sve_fp_sqrt,sve_fp_reduc,sve_fp_misc,\
+    sve_int_general,sve_int_shift,sve_int_mul,sve_int_dot,sve_int_cmp_set,\
+    sve_int_extend,sve_int_extract,sve_int_cvt,sve_int_div,sve_int_index,\
+    sve_int_match,sve_int_recip_est,sve_int_reduc,sve_int_accum,\
+    sve_int_pmul,sve_int_bit_perm,\
+    sve_load_pred,sve_load_1reg,sve_load_2reg,sve_load_3reg,sve_load_4reg,\
+    sve_gatherload_32,sve_gatherload_64,\
+    sve_store_pred,sve_store_1reg,sve_store_2reg,sve_store_3reg,sve_store_4reg,\
+    sve_scatterstore_32,sve_scatterstore_64,\
+    sve_ffr,\
+    sve_crypto_sha3"
+   (const_string "none"))
+ 
  ;; -------------------------------------------------------------------
  ;; Pipeline descriptions and scheduling
  ;; -------------------------------------------------------------------
***************
*** 664,669 ****
--- 684,692 ----
  (include "tsv110.md")
  (include "thunderx3t110.md")
  
+ ;; Dispatch scheduling
+ (include "neoversev2.md")
+ 
  ;; -------------------------------------------------------------------
  ;; Jumps and other miscellaneous insns
  ;; -------------------------------------------------------------------
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/aarch64.opt gcc-16-20250928/gcc/config/aarch64/aarch64.opt
*** gcc-16-20250921/gcc/config/aarch64/aarch64.opt	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/aarch64.opt	Sun Sep 28 22:33:03 2025
*************** trailing destructive updates of the base
*** 445,448 ****
  
  Wexperimental-fmv-target
  Target Var(warn_experimental_fmv) Warning Init(1)
! Warn about usage of experimental Function Multi Versioning.
--- 445,448 ----
  
  Wexperimental-fmv-target
  Target Var(warn_experimental_fmv) Warning Init(1)
! This option is deprecated.
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/iterators.md gcc-16-20250928/gcc/config/aarch64/iterators.md
*** gcc-16-20250921/gcc/config/aarch64/iterators.md	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/iterators.md	Sun Sep 28 22:33:03 2025
***************
*** 4681,4686 ****
--- 4681,4782 ----
  				  (UNSPEC_SQDMULLBT "sqdmlslbt")
  				  (UNSPEC_SQDMULLT "sqdmlslt")])
  
+ ;; The value of the attribute "sve_type" associated with an unspec.
+ (define_int_attr sve_type_unspec [(UNSPEC_COND_FABS "fp_arith")
+ 				  (UNSPEC_COND_FNEG "fp_arith")
+ 				  (UNSPEC_FRECPE "fp_log")
+ 				  (UNSPEC_COND_FRECPX "fp_log")
+ 				  (UNSPEC_COND_FRINTA "fp_cvt")
+ 				  (UNSPEC_COND_FRINTI "fp_cvt")
+ 				  (UNSPEC_COND_FRINTM "fp_cvt")
+ 				  (UNSPEC_COND_FRINTN "fp_cvt")
+ 				  (UNSPEC_COND_FRINTP "fp_cvt")
+ 				  (UNSPEC_COND_FRINTX "fp_cvt")
+ 				  (UNSPEC_COND_FRINTZ "fp_cvt")
+ 				  (UNSPEC_RSQRTE "fp_log")
+ 				  (UNSPEC_COND_FSQRT "fp_sqrt")
+ 				  (UNSPEC_FRECPS "fp_mul")
+ 				  (UNSPEC_RSQRTS "fp_mul")
+ 				  (UNSPEC_COND_FDIV "fp_div")
+ 				  (UNSPEC_COND_FMULX "fp_mul")
+ 				  (UNSPEC_COND_FAMAX "fp_arith")
+ 				  (UNSPEC_COND_FAMIN "fp_arith")
+ 				  (UNSPEC_COND_FADD "fp_arith")
+ 				  (UNSPEC_COND_FMAX "fp_arith")
+ 				  (UNSPEC_COND_FMAXNM "fp_arith")
+ 				  (UNSPEC_COND_FMIN "fp_arith")
+ 				  (UNSPEC_COND_FMINNM "fp_arith")
+ 				  (UNSPEC_COND_FMUL "fp_mul")
+ 				  (UNSPEC_COND_FSUB "fp_arith")
+ 				  (UNSPEC_FMLALB "fp_mul")
+ 				  (UNSPEC_FMLALT "fp_mul")
+ 				  (UNSPEC_FMLSLB "fp_mul")
+ 				  (UNSPEC_FMLSLT "fp_mul")
+ 				  (UNSPEC_FMAX "fp_arith")
+ 				  (UNSPEC_FMAXNM "fp_arith")
+ 				  (UNSPEC_FMIN "fp_arith")
+ 				  (UNSPEC_FMINNM "fp_arith")
+ 				  (UNSPEC_FDOT "fp_mul")
+ 				  (UNSPEC_COND_SMAX "fp_arith")
+ 				  (UNSPEC_COND_SMIN "fp_arith")
+ 				  (UNSPEC_ADCLB "int_general")
+ 				  (UNSPEC_ADCLT "int_general")
+ 				  (UNSPEC_EORBT "int_general")
+ 				  (UNSPEC_EORTB "int_general")
+ 				  (UNSPEC_SBCLB "int_general")
+ 				  (UNSPEC_SBCLT "int_general")
+ 				  (UNSPEC_SQRDMLAH "int_mul")
+ 				  (UNSPEC_SQRDMLSH "int_mul")
+ 				  (UNSPEC_SABDLB "int_general")
+ 				  (UNSPEC_SABDLT "int_general")
+ 				  (UNSPEC_SADDLB "int_general")
+ 				  (UNSPEC_SADDLBT "int_general")
+ 				  (UNSPEC_SADDLT "int_general")
+ 				  (UNSPEC_SMULLB "int_mul")
+ 				  (UNSPEC_SMULLT "int_mul")
+ 				  (UNSPEC_SQDMULLB "int_mul")
+ 				  (UNSPEC_SQDMULLBT "int_mul")
+ 				  (UNSPEC_SQDMULLT "int_mul")
+ 				  (UNSPEC_SSUBLB "int_general")
+ 				  (UNSPEC_SSUBLBT "int_general")
+ 				  (UNSPEC_SSUBLT "int_general")
+ 				  (UNSPEC_SSUBLTB "int_general")
+ 				  (UNSPEC_UABDLB "int_general")
+ 				  (UNSPEC_UABDLT "int_general")
+ 				  (UNSPEC_UADDLB "int_general")
+ 				  (UNSPEC_UADDLT "int_general")
+ 				  (UNSPEC_UMULLB "int_mul")
+ 				  (UNSPEC_UMULLT "int_mul")
+ 				  (UNSPEC_USUBLB "int_general")
+ 				  (UNSPEC_USUBLT "int_general")
+ 				  (UNSPEC_SQDMULH "int_mul")
+ 				  (UNSPEC_URSHL "int_shift")
+ 				  (UNSPEC_SRSHL "int_shift")])
+ 
+ ;; The value of the attribute "sve_type" associated with an int code.
+ (define_code_attr sve_type_int [(mult "int_mul")
+ 				(smax "int_general")
+ 				(smin "int_general")
+ 				(umax "int_general")
+ 				(umin "int_general")
+ 				(plus "int_general")
+ 				(minus "int_general")
+ 				(ashift "int_shift")
+ 				(ashiftrt "int_shift")
+ 				(lshiftrt "int_shift")
+ 				(and "int_general")
+ 				(ior "int_general")
+ 				(xor "int_general")
+ 				(ss_plus "int_general")
+ 				(us_plus "int_general")
+ 				(ss_minus "int_general")
+ 				(us_minus "int_general")])
+ 
+ ;; The value of the attribute "sve_type" associated with an fp code.
+ (define_code_attr sve_type_fp [(mult "fp_mul")
+ 			       (plus "fp_arith")
+ 			       (minus "fp_arith")])
+ 
  (define_int_attr sve_fp_op [(UNSPEC_BFDOT "bfdot")
  			    (UNSPEC_BFMLALB "bfmlalb")
  			    (UNSPEC_BFMLALT "bfmlalt")
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/neoversev2.md gcc-16-20250928/gcc/config/aarch64/neoversev2.md
*** gcc-16-20250921/gcc/config/aarch64/neoversev2.md	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/config/aarch64/neoversev2.md	Sun Sep 28 22:33:03 2025
***************
*** 0 ****
--- 1,192 ----
+ ;; Instruction attribute for dispatch scheduling for Neoverse V2.
+ ;; Copyright The GNU Toolchain Authors.
+ ;;
+ ;; 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/>.
+ 
+ ;; Attribute that groups other instruction attributes into dispatch groups
+ ;; for Neoverse V2 cores.  Dispatch groups are groups of pipelines for which
+ ;; the SWOG specifies a dispatch constraint.  For example: Because the SWOG
+ ;; contains a dispatch constraint for the V02 pipelines, there is an attribute
+ ;; value "v02" that groups instructions that are processed by the V0 and V2
+ ;; pipelines.
+ ;; Values that contain a "_" represent combinations of dispatch groups.
+ ;; For example, there are dispatch constraints for the M0 and V pipelines.
+ ;; The value "m0_v" groups instructions that utilize the M0 as well as the
+ ;; V pipelines, such that both dispatch constraints apply.
+ 
+ (define_attr "neoversev2_dispatch"
+   "none,bs01,bsm,m,m0,v02,v13,v,l01,l,bsm_l,m_l,m0_v,v_v13,v_l,\
+    l01_d,l01_v"
+   (cond [(eq_attr "type" "branch,call")
+ 	 (const_string "bs01")
+ 	 (ior
+ 	   (eq_attr "type" "adc_reg,alu_ext,alu_imm,alu_sreg,alus_ext,\
+ 	    alus_imm,alus_sreg,clz,csel,logic_imm,logic_reg,logics_imm,\
+ 	    logics_reg,mov_imm,rbit,rev,shift_reg")
+ 	   (eq_attr "sve_type" "sve_pred_cnt_scalar"))
+ 	 (const_string "bsm")
+ 	 (ior
+ 	   (eq_attr "type" "alu_ext,alus_ext,bfm,bfx,mul,rotate_imm,\
+ 	    smull,umull")
+ 	   (eq_attr "autodetect_type" "alu_shift_asr_op2,alu_shift_lsl_op2,\
+ 	    alu_shift_lsr_op2")
+ 	   (eq_attr "sve_type" "sve_pred_cnt_ctrl,sve_pred_misc"))
+ 	 (const_string "m")
+ 	 (ior
+ 	   (eq_attr "type" "crc,f_cvti2f,mla,neon_from_gp,neon_from_gp_q,\
+ 	    sdiv,smlal,udiv,umlal")
+ 	   (eq_attr "sve_type" "sve_ffr,sve_pred_logical"))
+ 	 (const_string "m0")
+ 	 (ior
+ 	   (eq_attr "type"
+ 	    "crypto_sha256_slow,crypto_sha3,crypto_sha512,crypto_sm3,\
+ 	     crypto_sm4,f_rintd,f_rints,fccmpd,fccmps,fcmpd,fcmps,fdivd,\
+ 	     fdivs,fsqrtd,fsqrts,neon_fp_cvt_narrow_d_q,\
+ 	     neon_fp_cvt_narrow_s_q,neon_fp_cvt_widen_h,neon_fp_cvt_widen_s,\
+ 	     neon_fp_div_d,neon_fp_div_d_q,neon_fp_div_s,neon_fp_div_s_q,\
+ 	     neon_fp_recpe_d,neon_fp_recpe_d_q,neon_fp_recpe_s,\
+ 	     neon_fp_recpe_s_q,neon_fp_recps_d,neon_fp_recps_d_q,\
+ 	     neon_fp_recps_s,neon_fp_recps_s_q,neon_fp_recpx_d,\
+ 	     neon_fp_recpx_d_q,neon_fp_recpx_s,neon_fp_recpx_s_q,\
+ 	     neon_fp_round_d,neon_fp_round_d_q,neon_fp_round_s,\
+ 	     neon_fp_round_s_q,neon_fp_rsqrte_d,neon_fp_rsqrte_d_q,\
+ 	     neon_fp_rsqrte_s,neon_fp_rsqrte_s_q,neon_fp_rsqrts_d,\
+ 	     neon_fp_rsqrts_d_q,neon_fp_rsqrts_s,neon_fp_rsqrts_s_q,\
+ 	     neon_fp_sqrt_d,neon_fp_sqrt_d_q,neon_fp_sqrt_s,\
+ 	     neon_fp_sqrt_s_q,neon_fp_to_int_d,neon_fp_to_int_d_q,\
+ 	     neon_fp_to_int_s,neon_fp_to_int_s_q,neon_int_to_fp_d,\
+ 	     neon_int_to_fp_d_q,neon_int_to_fp_s,neon_int_to_fp_s_q,\
+ 	     neon_mla_b,neon_mla_b_q,neon_mla_h,neon_mla_h_q,\
+ 	     neon_mla_s,neon_mla_s_q,neon_mla_b_long,neon_mla_h_long,\
+ 	     neon_mla_h_scalar,neon_mla_h_scalar_q,neon_mla_s_long,\
+ 	     neon_mla_s_scalar,neon_mla_s_scalar_q,neon_mla_h_scalar_long,\
+ 	     neon_mla_s_scalar_long,neon_mul_b,neon_mul_b_q,\
+ 	     neon_mul_d_long,neon_mul_h,neon_mul_h_q,neon_mul_h_long,\
+ 	     neon_mul_h_scalar,neon_mul_h_scalar_q,neon_mul_h_scalar_long,\
+ 	     neon_mul_s,neon_mul_s_q,neon_mul_s_long,neon_mul_s_scalar,\
+ 	     neon_mul_s_scalar_q,neon_mul_s_scalar_long,neon_sat_mla_b_long,\
+ 	     neon_sat_mla_h_long,neon_sat_mla_h_scalar_long,\
+ 	     neon_sat_mla_s_long,neon_sat_mla_s_scalar_long,\
+ 	     neon_sat_mul_b,neon_sat_mul_b_q,neon_sat_mul_b_long,\
+ 	     neon_sat_mul_h,neon_sat_mul_h_q,neon_sat_mul_h_long,\
+ 	     neon_sat_mul_h_scalar,neon_sat_mul_h_scalar_q,\
+ 	     neon_sat_mul_h_scalar_long,neon_sat_mul_s,neon_sat_mul_s_q,\
+ 	     neon_sat_mul_s_long,neon_sat_mul_s_scalar,\
+ 	     neon_sat_mul_s_scalar_q,neon_sat_mul_s_scalar_long")
+ 	   (eq_attr "sve_type"
+ 	    "sve_crypto_sha3,sve_fp_cmp,sve_fp_cvt,sve_fp_div,sve_fp_log,\
+ 	     sve_fp_sqrt,sve_int_cvt,sve_int_div,sve_int_dot,sve_int_index,\
+ 	     sve_int_mul,sve_int_recip_est"))
+ 	 (const_string "v02")
+ 	 (ior
+ 	   (eq_attr "type"
+ 	    "neon_arith_acc,neon_arith_acc_q,neon_reduc_add,\
+ 	     neon_reduc_add_long,neon_reduc_add_q,neon_reduc_minmax,\
+ 	     neon_reduc_minmax_q,neon_sat_shift_imm,\
+ 	     neon_sat_shift_imm_narrow_q,neon_sat_shift_imm_q,\
+ 	     neon_sat_shift_reg,neon_sat_shift_reg_q,neon_shift_acc,\
+ 	     neon_shift_acc_q,neon_shift_imm,neon_shift_imm_long,\
+ 	     neon_shift_imm_narrow_q,neon_shift_imm_q,neon_shift_reg,\
+ 	     neon_shift_reg_q")
+ 	   (eq_attr "sve_type"
+ 	    "sve_fp_assoc_add,sve_fp_exp,sve_int_accum,sve_int_bit_perm,\
+ 	     sve_int_extend,sve_int_extract,sve_int_shift"))
+ 	 (const_string "v13")
+ 	 (ior
+ 	   (eq_attr "type" "crypto_pmull,f_cvt,f_cvtf2i,f_minmaxd,f_minmaxs,\
+ 	    faddd,fadds,fconstd,fconsts,fcsel,ffarithd,ffariths,fmacd,fmacs,\
+ 	    fmov,fmuld,fmuls,f_mcr,f_mrc,neon_abd,\
+ 	    neon_abd_long,neon_abd_q,neon_abs,neon_abs_q,neon_add,\
+ 	    neon_add_halve,neon_add_halve_narrow_q,neon_add_halve_q,\
+ 	    neon_add_long,neon_add_q,neon_add_widen,neon_bsl,neon_bsl_q,\
+ 	    neon_cls,neon_cls_q,neon_cnt,neon_cnt_q,neon_compare,\
+ 	    neon_compare_q,neon_compare_zero,neon_compare_zero_q,\
+ 	    neon_dup,neon_dup_q,neon_ext,neon_ext_q,neon_fcadd,neon_fcmla,\
+ 	    neon_fp_abd_d,neon_fp_abd_d_q,neon_fp_abd_s,neon_fp_abd_s_q,\
+ 	    neon_fp_abs_d,neon_fp_abs_d_q,neon_fp_abs_s,neon_fp_abs_s_q,\
+ 	    neon_fp_addsub_d,neon_fp_addsub_d_q,neon_fp_addsub_s,\
+ 	    neon_fp_addsub_s_q,neon_fp_compare_d,neon_fp_compare_d_q,\
+ 	    neon_fp_compare_s,neon_fp_compare_s_q,neon_fp_minmax_d,\
+ 	    neon_fp_minmax_d_q,neon_fp_minmax_s,neon_fp_minmax_s_q,\
+ 	    neon_fp_mla_d,neon_fp_mla_d_q,neon_fp_mla_d_scalar_q,\
+ 	    neon_fp_mla_s,neon_fp_mla_s_q,neon_fp_mla_s_scalar,\
+ 	    neon_fp_mla_s_scalar_q,neon_fp_mul_d,neon_fp_mul_d_q,\
+ 	    neon_fp_mul_d_scalar_q,neon_fp_mul_s,neon_fp_mul_s_q,\
+ 	    neon_fp_mul_s_scalar,neon_fp_mul_s_scalar_q,neon_fp_neg_d,\
+ 	    neon_fp_neg_d_q,neon_fp_neg_s,neon_fp_neg_s_q,neon_fp_reduc_add_d,\
+ 	    neon_fp_reduc_add_d_q,neon_fp_reduc_add_s,neon_fp_reduc_add_s_q,\
+ 	    neon_fp_reduc_minmax_d,neon_fp_reduc_minmax_d_q,\
+ 	    neon_fp_reduc_minmax_s,neon_fp_reduc_minmax_s_q,neon_logic,\
+ 	    neon_logic_q,neon_minmax,neon_minmax_q,neon_move,\
+ 	    neon_move_narrow_q,neon_move_q,neon_neg,neon_neg_q,neon_permute,\
+ 	    neon_permute_q,neon_qabs,neon_qabs_q,neon_qadd,neon_qadd_q,\
+ 	    neon_qneg,neon_qneg_q,neon_qsub,neon_qsub_q,neon_rbit,\
+ 	    neon_rbit_q,neon_rev,neon_rev_q,neon_sub,neon_sub_halve,\
+ 	    neon_sub_halve_narrow_q,neon_sub_halve_q,neon_sub_long,\
+ 	    neon_sub_q,neon_sub_widen,neon_tbl1,neon_tbl1_q,neon_tbl2,\
+ 	    neon_tbl2_q,neon_tbl3,neon_tbl3_q,neon_tbl4,neon_tbl4_q,\
+ 	    neon_to_gp,neon_to_gp_q,neon_tst,neon_tst_q,neon_zip,\
+ 	    neon_zip_q")
+ 	   (eq_attr "sve_type" "sve_fp_arith,sve_fp_misc,sve_fp_mul,\
+ 	    sve_fp_reduc,sve_int_general,sve_int_pmul"))
+ 	 (const_string "v")
+ 	 (eq_attr "sve_type" "sve_store_pred")
+ 	 (const_string "l01")
+ 	 (ior
+ 	   (eq_attr "type" "neon_ldp,neon_ldp_q,neon_load1_1reg,\
+ 	    neon_load1_1reg_q,neon_load1_2reg,neon_load1_2reg_q,\
+ 	    neon_load1_3reg,neon_load1_3reg_q,neon_load1_4reg,\
+ 	    neon_load1_4reg_q")
+ 	   (eq_attr "sve_type" "sve_load_1reg"))
+ 	 (const_string "l")
+ 	 (eq_attr "type" "f_loadd,f_loads")
+ 	 (const_string "bsm_l")
+ 	 (eq_attr "sve_type" "sve_load_pred")
+ 	 (const_string "m_l")
+ 	 (ior
+ 	   (eq_attr "type" "neon_ins,neon_ins_q")
+ 	   (eq_attr "sve_type" "sve_int_cmp_set,sve_int_match,sve_pred_vec"))
+ 	 (const_string "m0_v")
+ 	 (eq_attr "sve_type" "sve_int_reduc")
+ 	 (const_string "v_v13")
+ 	 (ior
+ 	   (eq_attr "type" "neon_load1_all_lanes,neon_load1_one_lane,\
+ 	    neon_load1_one_lane_q,neon_load2_2reg,neon_load2_2reg_q,\
+ 	    neon_load2_all_lanes,neon_load2_all_lanes_q,neon_load2_one_lane,\
+ 	    neon_load3_3reg,neon_load3_3reg_q,neon_load3_all_lanes,\
+ 	    neon_load3_all_lanes_q,neon_load3_one_lane,neon_load4_4reg,\
+ 	    neon_load4_4reg_q,neon_load4_all_lanes,neon_load4_all_lanes_q,\
+ 	    neon_load4_one_lane")
+ 	   (eq_attr "sve_type" "sve_gatherload_32,sve_gatherload_64,\
+ 	    sve_load_2reg,sve_load_3reg,sve_load_4reg"))
+ 	 (const_string "v_l")
+ 	 (eq_attr "type" "load_16,load_4,load_8,store_16,store_4,store_8")
+ 	 (const_string "l01_d")
+ 	 (ior
+ 	   (eq_attr "type" "f_stored,f_stores,neon_stp,neon_stp_q,\
+ 	    neon_store1_1reg,neon_store1_1reg_q,neon_store1_2reg,\
+ 	    neon_store1_2reg_q,neon_store1_3reg,neon_store1_3reg_q,\
+ 	    neon_store1_4reg,neon_store1_4reg_q,neon_store1_one_lane,\
+ 	    neon_store1_one_lane_q,neon_store2_2reg,neon_store2_2reg_q,\
+ 	    neon_store2_one_lane,neon_store2_one_lane_q,neon_store3_3reg,\
+ 	    neon_store3_3reg_q,neon_store3_one_lane,neon_store3_one_lane_q,\
+ 	    neon_store4_4reg,neon_store4_4reg_q,neon_store4_one_lane,\
+ 	    neon_store4_one_lane_q")
+ 	   (eq_attr "sve_type" "sve_scatterstore_32,sve_scatterstore_64,\
+ 	    sve_store_1reg,sve_store_2reg,sve_store_3reg,sve_store_4reg"))
+ 	 (const_string "l01_v")]
+ 	(const_string "none")))
\ No newline at end of file
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/t-aarch64 gcc-16-20250928/gcc/config/aarch64/t-aarch64
*** gcc-16-20250921/gcc/config/aarch64/t-aarch64	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/t-aarch64	Sun Sep 28 22:33:03 2025
*************** aarch64-ldp-fusion.o: $(srcdir)/config/a
*** 202,207 ****
--- 202,215 ----
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/aarch64/aarch64-ldp-fusion.cc
  
+ aarch64-sched-dispatch.o: $(srcdir)/config/aarch64/aarch64-sched-dispatch.cc \
+     $(CONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(BACKEND_H) $(RTL_H) \
+     $(INSN_ATTR_H) $(REGSET_H) sched-int.h $(DUMPFILE_H) \
+     $(srcdir)/config/aarch64/aarch64-protos.h \
+     $(srcdir)/config/aarch64/aarch64-sched-dispatch.h
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ 		$(srcdir)/config/aarch64/aarch64-sched-dispatch.cc
+ 
  comma=,
  MULTILIB_OPTIONS    = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
  MULTILIB_DIRNAMES   = $(subst $(comma), ,$(TM_MULTILIB_CONFIG))
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/a64fx.h gcc-16-20250928/gcc/config/aarch64/tuning_models/a64fx.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/a64fx.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/a64fx.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params a64fx_tu
*** 165,171 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &a64fx_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_A64FX.  */
--- 165,172 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &a64fx_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_A64FX.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/ampere1.h gcc-16-20250928/gcc/config/aarch64/tuning_models/ampere1.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/ampere1.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/ampere1.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params ampere1_
*** 105,111 ****
     | AARCH64_EXTRA_TUNE_FULLY_PIPELINED_FMA), /* tune_flags.  */
    &ampere1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_AMPERE1.  */
--- 105,112 ----
     | AARCH64_EXTRA_TUNE_FULLY_PIPELINED_FMA), /* tune_flags.  */
    &ampere1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_AMPERE1.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/ampere1a.h gcc-16-20250928/gcc/config/aarch64/tuning_models/ampere1a.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/ampere1a.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/ampere1a.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params ampere1a
*** 57,63 ****
     | AARCH64_EXTRA_TUNE_FULLY_PIPELINED_FMA), /* tune_flags.  */
    &ampere1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_AMPERE1A.  */
--- 57,64 ----
     | AARCH64_EXTRA_TUNE_FULLY_PIPELINED_FMA), /* tune_flags.  */
    &ampere1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_AMPERE1A.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/ampere1b.h gcc-16-20250928/gcc/config/aarch64/tuning_models/ampere1b.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/ampere1b.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/ampere1b.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params ampere1b
*** 106,112 ****
     | AARCH64_EXTRA_TUNE_AVOID_CROSS_LOOP_FMA), /* tune_flags.  */
    &ampere1b_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_AMPERE1B */
--- 106,113 ----
     | AARCH64_EXTRA_TUNE_AVOID_CROSS_LOOP_FMA), /* tune_flags.  */
    &ampere1b_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_AMPERE1B */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa35.h gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa35.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa35.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa35.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params cortexa3
*** 56,62 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXA35.  */
--- 56,63 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXA35.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa53.h gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa53.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa53.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa53.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params cortexa5
*** 65,71 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXA53.  */
--- 65,72 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXA53.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa57.h gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa57.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa57.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa57.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params cortexa5
*** 102,108 ****
    (AARCH64_EXTRA_TUNE_RENAME_FMA_REGS),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXA57.  */
--- 102,109 ----
    (AARCH64_EXTRA_TUNE_RENAME_FMA_REGS),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXA57.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa72.h gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa72.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa72.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa72.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params cortexa7
*** 54,60 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXA72.  */
--- 54,61 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXA72.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa73.h gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa73.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexa73.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexa73.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params cortexa7
*** 55,61 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  
--- 55,62 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexx925.h gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexx925.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/cortexx925.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/cortexx925.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params cortexx9
*** 226,232 ****
     | AARCH64_EXTRA_TUNE_AVOID_LDAPUR),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXX925.  */
--- 226,233 ----
     | AARCH64_EXTRA_TUNE_AVOID_LDAPUR),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_CORTEXX925.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/emag.h gcc-16-20250928/gcc/config/aarch64/tuning_models/emag.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/emag.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/emag.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params emag_tun
*** 54,60 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &xgene1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_EMAG.  */
--- 54,61 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &xgene1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_EMAG.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/exynosm1.h gcc-16-20250928/gcc/config/aarch64/tuning_models/exynosm1.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/exynosm1.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/exynosm1.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params exynosm1
*** 138,144 ****
    (AARCH64_EXTRA_TUNE_NONE), /* tune_flags.  */
    &exynosm1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_EXYNOSM1.  */
--- 138,145 ----
    (AARCH64_EXTRA_TUNE_NONE), /* tune_flags.  */
    &exynosm1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_EXYNOSM1.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/fujitsu_monaka.h gcc-16-20250928/gcc/config/aarch64/tuning_models/fujitsu_monaka.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/fujitsu_monaka.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/fujitsu_monaka.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params fujitsu_
*** 58,64 ****
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_FUJITSU_MONAKA.  */
--- 58,65 ----
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_FUJITSU_MONAKA.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/generic.h gcc-16-20250928/gcc/config/aarch64/tuning_models/generic.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/generic.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/generic.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params generic_
*** 186,192 ****
    (AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_GENERIC.  */
--- 186,193 ----
    (AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS),	/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_GENERIC.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/generic_armv8_a.h gcc-16-20250928/gcc/config/aarch64/tuning_models/generic_armv8_a.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/generic_armv8_a.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/generic_armv8_a.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params generic_
*** 186,192 ****
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
    &generic_armv8_a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_GENERIC_ARMV8_A.  */
--- 186,193 ----
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
    &generic_armv8_a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_GENERIC_ARMV8_A.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/generic_armv9_a.h gcc-16-20250928/gcc/config/aarch64/tuning_models/generic_armv9_a.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/generic_armv9_a.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/generic_armv9_a.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params generic_
*** 254,260 ****
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_GENERIC_ARMV9_A.  */
--- 254,261 ----
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_GENERIC_ARMV9_A.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/neoverse512tvb.h gcc-16-20250928/gcc/config/aarch64/tuning_models/neoverse512tvb.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/neoverse512tvb.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/neoverse512tvb.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params neoverse
*** 161,167 ****
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSE512TVB.  */
--- 161,168 ----
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSE512TVB.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversen1.h gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversen1.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversen1.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversen1.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params neoverse
*** 54,60 ****
    (AARCH64_EXTRA_TUNE_BASE),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEN1.  */
--- 54,61 ----
    (AARCH64_EXTRA_TUNE_BASE),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEN1.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversen2.h gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversen2.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversen2.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversen2.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params neoverse
*** 223,229 ****
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEN2.  */
--- 223,230 ----
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEN2.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversen3.h gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversen3.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversen3.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversen3.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params neoverse
*** 222,228 ****
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEN3.  */
--- 222,229 ----
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEN3.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversev1.h gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversev1.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversev1.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversev1.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params neoverse
*** 232,238 ****
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  
--- 232,239 ----
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversev2.h gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversev2.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversev2.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversev2.h	Sun Sep 28 22:33:03 2025
***************
*** 21,26 ****
--- 21,28 ----
  #define GCC_AARCH64_H_NEOVERSEV2
  
  #include "generic.h"
+ #include "vec.h"
+ #include "../aarch64-sched-dispatch.h"
  
  static const struct cpu_regmove_cost neoversev2_regmove_cost =
  {
*************** static const struct cpu_vector_cost neov
*** 188,193 ****
--- 190,331 ----
    &neoversev2_vec_issue_info /* issue_info  */
  };
  
+ /* Neoverse V2 dispatch constraint types.  */
+ enum neoversev2_dispatch_constraint_type
+ {
+   TOTAL_SLOTS, /* total slots  */
+   BS01_PIPE,   /* b, s0, s1 pipelines  */
+   M0_PIPE,     /* m0 pipeline  */
+   M_PIPE,      /* m pipelines  */
+   BSM_PIPE,    /* b, s, m pipelines  */
+   V02_PIPE,    /* v0, v2 pipelines  */
+   V13_PIPE,    /* v1, v3 pipelines  */
+   V_PIPE,      /* v pipelines  */
+   L_PIPE       /* l pipelines  */
+ };
+ 
+ /* Neoverse V2 dispatch constraints for instruction scheduling.  */
+ static const int neoversev2_dispatch_max_slots[] = {
+   16, /* total slots  */
+   4,  /* b, s0, s1 pipelines  */
+   2,  /* m0 pipeline  */
+   4,  /* m pipelines  */
+   8,  /* b, s, m pipelines  */
+   2,  /* v0, v2 pipelines  */
+   2,  /* v1, v3 pipelines  */
+   4,  /* v pipelines  */
+   6   /* l pipelines  */
+ };
+ 
+ /* Neoverse V2 dispatch constraint callback function.
+    Determines which constraints apply to an instruction and how many slots
+    it requires.  Returns a vec of (constraint_index, slots_required) pairs.  */
+ static vec<std::pair<int, int>>
+ neoversev2_dispatch_constraint_callback (rtx_insn *insn)
+ {
+   auto dispatch_group = get_attr_neoversev2_dispatch (insn);
+   vec<std::pair<int, int>> constraints = vNULL;
+   int total_slots = 1;
+ 
+   switch (dispatch_group)
+     {
+     case NEOVERSEV2_DISPATCH_NONE:
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_BS01:
+       constraints.safe_push ({BS01_PIPE, 1});
+       constraints.safe_push ({BSM_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_BSM:
+       constraints.safe_push ({BSM_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_M:
+       constraints.safe_push ({M_PIPE, 1});
+       constraints.safe_push ({BSM_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_M0:
+       constraints.safe_push ({M0_PIPE, 1});
+       constraints.safe_push ({M_PIPE, 1});
+       constraints.safe_push ({BSM_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_V02:
+       constraints.safe_push ({V02_PIPE, 1});
+       constraints.safe_push ({V_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_V13:
+       constraints.safe_push ({V13_PIPE, 1});
+       constraints.safe_push ({V_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_V:
+       constraints.safe_push ({V_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_L01:
+       constraints.safe_push ({L_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_L:
+       constraints.safe_push ({L_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_BSM_L:
+       constraints.safe_push ({BSM_PIPE, 1});
+       constraints.safe_push ({L_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_M_L:
+       constraints.safe_push ({M_PIPE, 1});
+       constraints.safe_push ({BSM_PIPE, 1});
+       constraints.safe_push ({L_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_M0_V:
+       constraints.safe_push ({M0_PIPE, 1});
+       constraints.safe_push ({M_PIPE, 1});
+       constraints.safe_push ({BSM_PIPE, 1});
+       constraints.safe_push ({V_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_V_V13:
+       constraints.safe_push ({V_PIPE, 2});
+       total_slots = 2;
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_V_L:
+       constraints.safe_push ({V_PIPE, 1});
+       constraints.safe_push ({L_PIPE, 1});
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_L01_D:
+       constraints.safe_push ({L_PIPE, 2});
+       total_slots = 2;
+       break;
+ 
+     case NEOVERSEV2_DISPATCH_L01_V:
+       constraints.safe_push ({V_PIPE, 1});
+       constraints.safe_push ({L_PIPE, 1});
+       break;
+     }
+ 
+   /* Add total slots constraint  */
+   constraints.safe_push ({TOTAL_SLOTS, total_slots});
+ 
+   return constraints;
+ };
+ 
+ /* Neoverse V2 dispatch constraints configuration.  */
+ static const struct dispatch_constraint_info neoversev2_dispatch_constraint_info = {
+   neoversev2_dispatch_max_slots, /* max_slots  */
+   ARRAY_SIZE (neoversev2_dispatch_max_slots), /* num_constraints  */
+   neoversev2_dispatch_constraint_callback /* callback  */
+ };
+ 
  static const struct tune_params neoversev2_tunings =
  {
    &cortexa76_extra_costs,
*************** static const struct tune_params neoverse
*** 221,230 ****
     | AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW
!    | AARCH64_EXTRA_TUNE_AVOID_LDAPUR),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEV2.  */
--- 359,370 ----
     | AARCH64_EXTRA_TUNE_CSE_SVE_VL_CONSTANTS
     | AARCH64_EXTRA_TUNE_MATCHED_VECTOR_THROUGHPUT
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW
!    | AARCH64_EXTRA_TUNE_AVOID_LDAPUR
!    | AARCH64_EXTRA_TUNE_DISPATCH_SCHED),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   &neoversev2_dispatch_constraint_info  /* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEV2.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversev3.h gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversev3.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversev3.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversev3.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params neoverse
*** 224,230 ****
     | AARCH64_EXTRA_TUNE_AVOID_LDAPUR),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEV3.  */
--- 224,231 ----
     | AARCH64_EXTRA_TUNE_AVOID_LDAPUR),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEV3.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversev3ae.h gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversev3ae.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/neoversev3ae.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/neoversev3ae.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params neoverse
*** 224,230 ****
     | AARCH64_EXTRA_TUNE_AVOID_LDAPUR),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEV3AE.  */
--- 224,231 ----
     | AARCH64_EXTRA_TUNE_AVOID_LDAPUR),	/* tune_flags.  */
    &generic_armv9a_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_NEOVERSEV3AE.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/olympus.h gcc-16-20250928/gcc/config/aarch64/tuning_models/olympus.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/olympus.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/olympus.h	Sun Sep 28 22:33:03 2025
*************** static struct tune_params olympus_tuning
*** 204,210 ****
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW),	/* tune_flags.  */
    &olympus_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS	   /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_OLYMPUS.  */
--- 204,211 ----
     | AARCH64_EXTRA_TUNE_AVOID_PRED_RMW),	/* tune_flags.  */
    &olympus_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_OLYMPUS.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/qdf24xx.h gcc-16-20250928/gcc/config/aarch64/tuning_models/qdf24xx.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/qdf24xx.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/qdf24xx.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params qdf24xx_
*** 130,136 ****
    (AARCH64_EXTRA_TUNE_NONE), /* tune_flags.  */
    &qdf24xx_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_QDF24XX.  */
--- 130,137 ----
    (AARCH64_EXTRA_TUNE_NONE), /* tune_flags.  */
    &qdf24xx_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_QDF24XX.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/saphira.h gcc-16-20250928/gcc/config/aarch64/tuning_models/saphira.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/saphira.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/saphira.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params saphira_
*** 56,62 ****
    (AARCH64_EXTRA_TUNE_NONE),		/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_SAPHIRA.  */
--- 56,63 ----
    (AARCH64_EXTRA_TUNE_NONE),		/* tune_flags.  */
    &generic_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_SAPHIRA.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/thunderx.h gcc-16-20250928/gcc/config/aarch64/tuning_models/thunderx.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/thunderx.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/thunderx.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params thunderx
*** 111,117 ****
    (AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND),	/* tune_flags.  */
    &thunderx_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_THUNDERX.  */
--- 111,118 ----
    (AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND),	/* tune_flags.  */
    &thunderx_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_THUNDERX.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/thunderx2t99.h gcc-16-20250928/gcc/config/aarch64/tuning_models/thunderx2t99.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/thunderx2t99.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/thunderx2t99.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params thunderx
*** 131,137 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &thunderx2t99_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_THUNDERX2T99.  */
--- 131,138 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &thunderx2t99_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_THUNDERX2T99.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/thunderx3t110.h gcc-16-20250928/gcc/config/aarch64/tuning_models/thunderx3t110.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/thunderx3t110.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/thunderx3t110.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params thunderx
*** 130,136 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &thunderx3t110_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_THUNDERX3T110.  */
--- 130,137 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &thunderx3t110_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_THUNDERX3T110.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/thunderxt88.h gcc-16-20250928/gcc/config/aarch64/tuning_models/thunderxt88.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/thunderxt88.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/thunderxt88.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params thunderx
*** 66,72 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &thunderxt88_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_THUNDERXT88.  */
--- 66,73 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &thunderxt88_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALIGNED,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALIGNED,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_THUNDERXT88.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/tsv110.h gcc-16-20250928/gcc/config/aarch64/tuning_models/tsv110.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/tsv110.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/tsv110.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params tsv110_t
*** 131,137 ****
    (AARCH64_EXTRA_TUNE_NONE),     /* tune_flags.  */
    &tsv110_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_TSV110.  */
--- 131,138 ----
    (AARCH64_EXTRA_TUNE_NONE),     /* tune_flags.  */
    &tsv110_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_TSV110.  */
diff -Nrcpad gcc-16-20250921/gcc/config/aarch64/tuning_models/xgene1.h gcc-16-20250928/gcc/config/aarch64/tuning_models/xgene1.h
*** gcc-16-20250921/gcc/config/aarch64/tuning_models/xgene1.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/aarch64/tuning_models/xgene1.h	Sun Sep 28 22:33:03 2025
*************** static const struct tune_params xgene1_t
*** 139,145 ****
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &xgene1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS    /* stp_policy_model.  */
  };
  
  #endif /* GCC_AARCH64_H_XGENE1.  */
--- 139,146 ----
    (AARCH64_EXTRA_TUNE_NONE),	/* tune_flags.  */
    &xgene1_prefetch_tune,
    AARCH64_LDP_STP_POLICY_ALWAYS,   /* ldp_policy_model.  */
!   AARCH64_LDP_STP_POLICY_ALWAYS,   /* stp_policy_model.  */
!   nullptr	/* dispatch_constraints.  */
  };
  
  #endif /* GCC_AARCH64_H_XGENE1.  */
diff -Nrcpad gcc-16-20250921/gcc/config/arm/mve.md gcc-16-20250928/gcc/config/arm/mve.md
*** gcc-16-20250921/gcc/config/arm/mve.md	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/arm/mve.md	Sun Sep 28 22:33:03 2025
***************
*** 18,25 ****
  ;; <http://www.gnu.org/licenses/>.
  
  (define_insn "mve_mov<mode>"
!   [(set (match_operand:MVE_types 0 "nonimmediate_operand" "=w,w,r,w   , w,   r,Ux,w")
! 	(match_operand:MVE_types 1 "general_operand"      " w,r,w,DnDm,UxUi,r,w, Ul"))]
    "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
  {
    switch (which_alternative)
--- 18,25 ----
  ;; <http://www.gnu.org/licenses/>.
  
  (define_insn "mve_mov<mode>"
!   [(set (match_operand:MVE_types 0 "nonimmediate_operand" "=w,w,r,w   ,w, r,Ux,w")
! 	(match_operand:MVE_types 1 "general_operand"      " w,r,w,DnDm,Ux,r,w, UlUi"))]
    "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
  {
    switch (which_alternative)
***************
*** 56,62 ****
  	  }
        }
  
!     case 4:  /* [w,UxUi].  */
        if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode
  	  || <MODE>mode == TImode)
  	return "vldrw.u32\t%q0, %E1";
--- 56,62 ----
  	  }
        }
  
!     case 4:  /* [w,Ux].  */
        if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode
  	  || <MODE>mode == TImode)
  	return "vldrw.u32\t%q0, %E1";
***************
*** 73,79 ****
        else
  	return "vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0";
  
!     case 7:  /* [w,Ul].  */
  	return output_move_neon (operands);
  
      default:
--- 73,79 ----
        else
  	return "vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0";
  
!     case 7:  /* [w,UlUi].  */
  	return output_move_neon (operands);
  
      default:
***************
*** 91,98 ****
  						   (symbol_ref "CODE_FOR_nothing")])
     (set_attr "type" "mve_move,mve_move,mve_move,mve_move,mve_load,multiple,mve_store,mve_load")
     (set_attr "length" "4,8,8,4,4,8,4,8")
!    (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*")
!    (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*")])
  
  ;;
  ;; [vdupq_n_u, vdupq_n_s, vdupq_n_f]
--- 91,98 ----
  						   (symbol_ref "CODE_FOR_nothing")])
     (set_attr "type" "mve_move,mve_move,mve_move,mve_move,mve_load,multiple,mve_store,mve_load")
     (set_attr "length" "4,8,8,4,4,8,4,8")
!    (set_attr "thumb2_pool_range" "*,*,*,*,*,*,*,1016")
!    (set_attr "thumb2_neg_pool_range" "*,*,*,*,*,*,*,996")])
  
  ;;
  ;; [vdupq_n_u, vdupq_n_s, vdupq_n_f]
diff -Nrcpad gcc-16-20250921/gcc/config/gcn/gcn.cc gcc-16-20250928/gcc/config/gcn/gcn.cc
*** gcc-16-20250921/gcc/config/gcn/gcn.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/gcn/gcn.cc	Sun Sep 28 22:33:04 2025
*************** gcn_preferred_vector_alignment (const_tr
*** 5368,5393 ****
  
  static bool
  gcn_vectorize_support_vector_misalignment (machine_mode ARG_UNUSED (mode),
! 					   const_tree type, int misalignment,
  					   bool is_packed,
! 					   bool is_gather_scatter)
  {
!   if (is_gather_scatter)
!     return true;
! 
!   if (is_packed)
!     return false;
! 
!   /* If the misalignment is unknown, we should be able to handle the access
!      so long as it is not to a member of a packed data structure.  */
!   if (misalignment == -1)
!     return true;
! 
!   /* Return true if the misalignment is a multiple of the natural alignment
!      of the vector's element type.  This is probably always going to be
!      true in practice, since we've already established that this isn't a
!      packed access.  */
!   return misalignment % TYPE_ALIGN_UNIT (type) == 0;
  }
  
  /* Implement TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE.
--- 5368,5385 ----
  
  static bool
  gcn_vectorize_support_vector_misalignment (machine_mode ARG_UNUSED (mode),
! 					   const_tree ARG_UNUSED (type),
! 					   int ARG_UNUSED (misalignment),
  					   bool is_packed,
! 					   bool ARG_UNUSED (is_gather_scatter))
  {
!   /* All Flat and Global load instructions support arbitrary alignment, so
!      the types and such are irrelevant (Buffer instructions are not used).  */
!  
!   /* Disallow packed accesses because expand attempts to take scalar subregs of
!      vector registers, which is nonsense.
!      Testcase: gfortran.dg/recursive_alloc_comp_4.f08   */
!   return !is_packed;
  }
  
  /* Implement TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE.
diff -Nrcpad gcc-16-20250921/gcc/config/i386/i386-expand.cc gcc-16-20250928/gcc/config/i386/i386-expand.cc
*** gcc-16-20250921/gcc/config/i386/i386-expand.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/i386/i386-expand.cc	Sun Sep 28 22:33:04 2025
*************** ix86_expand_builtin (tree exp, rtx targe
*** 13915,13922 ****
        char *opts = ix86_target_string (bisa, bisa2, 0, 0, NULL, NULL,
  				       (enum fpmath_unit) 0,
  				       (enum prefer_vector_width) 0,
! 				       PVW_NONE, PVW_NONE,
! 				       false, add_abi_p);
        if (!opts)
  	error ("%qE needs unknown isa option", fndecl);
        else
--- 13915,13921 ----
        char *opts = ix86_target_string (bisa, bisa2, 0, 0, NULL, NULL,
  				       (enum fpmath_unit) 0,
  				       (enum prefer_vector_width) 0,
! 				       PVW_NONE, false, add_abi_p);
        if (!opts)
  	error ("%qE needs unknown isa option", fndecl);
        else
diff -Nrcpad gcc-16-20250921/gcc/config/i386/i386-features.cc gcc-16-20250928/gcc/config/i386/i386-features.cc
*** gcc-16-20250921/gcc/config/i386/i386-features.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/i386/i386-features.cc	Sun Sep 28 22:33:04 2025
*************** static tree
*** 5299,5306 ****
  ix86_mangle_function_version_assembler_name (tree decl, tree id)
  {
    tree version_attr;
!   const char *orig_name, *version_string;
!   char *attr_str, *assembler_name;
  
    if (DECL_DECLARED_INLINE_P (decl)
        && lookup_attribute ("gnu_inline",
--- 5299,5305 ----
  ix86_mangle_function_version_assembler_name (tree decl, tree id)
  {
    tree version_attr;
!   char *attr_str;
  
    if (DECL_DECLARED_INLINE_P (decl)
        && lookup_attribute ("gnu_inline",
*************** ix86_mangle_function_version_assembler_n
*** 5318,5342 ****
    /* target attribute string cannot be NULL.  */
    gcc_assert (version_attr != NULL_TREE);
  
-   orig_name = IDENTIFIER_POINTER (id);
-   version_string
-     = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (version_attr)));
- 
-   if (strcmp (version_string, "default") == 0)
-     return id;
- 
    attr_str = sorted_attr_string (TREE_VALUE (version_attr));
-   assembler_name = XNEWVEC (char, strlen (orig_name) + strlen (attr_str) + 2);
- 
-   sprintf (assembler_name, "%s.%s", orig_name, attr_str);
  
    /* Allow assembler name to be modified if already set.  */
    if (DECL_ASSEMBLER_NAME_SET_P (decl))
      SET_DECL_RTL (decl, NULL);
  
!   tree ret = get_identifier (assembler_name);
    XDELETEVEC (attr_str);
!   XDELETEVEC (assembler_name);
    return ret;
  }
  
--- 5317,5332 ----
    /* target attribute string cannot be NULL.  */
    gcc_assert (version_attr != NULL_TREE);
  
    attr_str = sorted_attr_string (TREE_VALUE (version_attr));
  
    /* Allow assembler name to be modified if already set.  */
    if (DECL_ASSEMBLER_NAME_SET_P (decl))
      SET_DECL_RTL (decl, NULL);
  
!   tree ret = clone_identifier (id, attr_str, true);
! 
    XDELETEVEC (attr_str);
! 
    return ret;
  }
  
*************** tree
*** 5344,5352 ****
  ix86_mangle_decl_assembler_name (tree decl, tree id)
  {
    /* For function version, add the target suffix to the assembler name.  */
!   if (TREE_CODE (decl) == FUNCTION_DECL
!       && DECL_FUNCTION_VERSIONED (decl))
!     id = ix86_mangle_function_version_assembler_name (decl, id);
  #ifdef SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME
    id = SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME (decl, id);
  #endif
--- 5334,5354 ----
  ix86_mangle_decl_assembler_name (tree decl, tree id)
  {
    /* For function version, add the target suffix to the assembler name.  */
!   if (TREE_CODE (decl) == FUNCTION_DECL)
!     {
!       cgraph_node *node = cgraph_node::get (decl);
!       /* Mangle all versions when annotated with target_clones, but only
! 	 non-default versions when annotated with target attributes.  */
!       if (DECL_FUNCTION_VERSIONED (decl)
! 	  && (node->is_target_clone
! 	      || !is_function_default_version (node->decl)))
! 	id = ix86_mangle_function_version_assembler_name (decl, id);
!       /* Mangle the dispatched symbol but only in the case of target clones.  */
!       else if (node && node->dispatcher_function && !node->is_target_clone)
! 	id = clone_identifier (id, "ifunc");
!       else if (node && node->dispatcher_resolver_function)
! 	id = clone_identifier (id, "resolver");
!     }
  #ifdef SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME
    id = SUBTARGET_MANGLE_DECL_ASSEMBLER_NAME (decl, id);
  #endif
*************** ix86_get_function_versions_dispatcher (v
*** 5395,5414 ****
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
-       struct cgraph_node *dispatcher_node = NULL;
-       struct cgraph_function_version_info *dispatcher_version_info = NULL;
  
        /* Right now, the dispatching is done via ifunc.  */
        dispatch_decl = make_dispatcher_decl (default_node->decl);
-       TREE_NOTHROW (dispatch_decl) = TREE_NOTHROW (fn);
- 
-       dispatcher_node = cgraph_node::get_create (dispatch_decl);
-       gcc_assert (dispatcher_node != NULL);
-       dispatcher_node->dispatcher_function = 1;
-       dispatcher_version_info
- 	= dispatcher_node->insert_new_function_version ();
-       dispatcher_version_info->next = default_version_info;
-       dispatcher_node->definition = 1;
  
        /* Set the dispatcher for all the versions.  */
        it_v = default_version_info;
--- 5397,5405 ----
*************** make_resolver_func (const tree default_d
*** 5442,5458 ****
  {
    tree decl, type, t;
  
-   /* Create resolver function name based on default_decl.  */
-   tree decl_name = clone_function_name (default_decl, "resolver");
-   const char *resolver_name = IDENTIFIER_POINTER (decl_name);
- 
    /* The resolver function should return a (void *). */
    type = build_function_type_list (ptr_type_node, NULL_TREE);
  
!   decl = build_fn_decl (resolver_name, type);
!   SET_DECL_ASSEMBLER_NAME (decl, decl_name);
  
!   DECL_NAME (decl) = decl_name;
    TREE_USED (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
--- 5433,5460 ----
  {
    tree decl, type, t;
  
    /* The resolver function should return a (void *). */
    type = build_function_type_list (ptr_type_node, NULL_TREE);
  
!   cgraph_node *node = cgraph_node::get (default_decl);
!   gcc_assert (node && node->function_version ());
  
!   decl = build_fn_decl (IDENTIFIER_POINTER (DECL_NAME (default_decl)), type);
! 
!   /* Set the assembler name to prevent cgraph_node attempting to mangle.  */
!   SET_DECL_ASSEMBLER_NAME (decl, DECL_ASSEMBLER_NAME (default_decl));
! 
!   cgraph_node *resolver_node = cgraph_node::get_create (decl);
!   resolver_node->dispatcher_resolver_function = true;
! 
!   if (node->is_target_clone)
!     resolver_node->is_target_clone = true;
! 
!   tree id = ix86_mangle_decl_assembler_name
!     (decl, node->function_version ()->assembler_name);
!   SET_DECL_ASSEMBLER_NAME (decl, id);
! 
!   DECL_NAME (decl) = DECL_NAME (default_decl);
    TREE_USED (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
*************** make_resolver_func (const tree default_d
*** 5499,5505 ****
    gcc_assert (ifunc_alias_decl != NULL);
    /* Mark ifunc_alias_decl as "ifunc" with resolver as resolver_name.  */
    DECL_ATTRIBUTES (ifunc_alias_decl)
!     = make_attribute ("ifunc", resolver_name,
  		      DECL_ATTRIBUTES (ifunc_alias_decl));
  
    /* Create the alias for dispatch to resolver here.  */
--- 5501,5507 ----
    gcc_assert (ifunc_alias_decl != NULL);
    /* Mark ifunc_alias_decl as "ifunc" with resolver as resolver_name.  */
    DECL_ATTRIBUTES (ifunc_alias_decl)
!     = make_attribute ("ifunc", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
  		      DECL_ATTRIBUTES (ifunc_alias_decl));
  
    /* Create the alias for dispatch to resolver here.  */
diff -Nrcpad gcc-16-20250921/gcc/config/i386/i386-options.cc gcc-16-20250928/gcc/config/i386/i386-options.cc
*** gcc-16-20250921/gcc/config/i386/i386-options.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/i386/i386-options.cc	Sun Sep 28 22:33:04 2025
*************** ix86_target_string (HOST_WIDE_INT isa, H
*** 401,407 ****
  		    enum fpmath_unit fpmath,
  		    enum prefer_vector_width pvw,
  		    enum prefer_vector_width move_max,
- 		    enum prefer_vector_width store_max,
  		    bool add_nl_p, bool add_abi_p)
  {
    /* Flag options.  */
--- 401,406 ----
*************** ix86_target_string (HOST_WIDE_INT isa, H
*** 611,620 ****
    if (move_max)
      add_vector_width (move_max, "-mmove-max=");
  
-   /* Add -mstore-max= option.  */
-   if (store_max)
-     add_vector_width (store_max, "-mstore-max=");
- 
    /* Any options?  */
    if (num == 0)
      return NULL;
--- 610,615 ----
*************** ix86_debug_options (void)
*** 680,687 ****
  				   target_flags, ix86_target_flags,
  				   ix86_arch_string, ix86_tune_string,
  				   ix86_fpmath, prefer_vector_width_type,
! 				   ix86_move_max, ix86_store_max,
! 				   true, true);
  
    if (opts)
      {
--- 675,681 ----
  				   target_flags, ix86_target_flags,
  				   ix86_arch_string, ix86_tune_string,
  				   ix86_fpmath, prefer_vector_width_type,
! 				   ix86_move_max, true, true);
  
    if (opts)
      {
*************** ix86_function_specific_print (FILE *file
*** 956,963 ****
  			  ptr->x_target_flags, ptr->x_ix86_target_flags,
  			  NULL, NULL, ptr->x_ix86_fpmath,
  			  ptr->x_prefer_vector_width_type,
! 			  ptr->x_ix86_move_max, ptr->x_ix86_store_max,
! 			  false, true);
  
    gcc_assert (ptr->arch < PROCESSOR_max);
    fprintf (file, "%*sarch = %d (%s)\n",
--- 950,956 ----
  			  ptr->x_target_flags, ptr->x_ix86_target_flags,
  			  NULL, NULL, ptr->x_ix86_fpmath,
  			  ptr->x_prefer_vector_width_type,
! 			  ptr->x_ix86_move_max, false, true);
  
    gcc_assert (ptr->arch < PROCESSOR_max);
    fprintf (file, "%*sarch = %d (%s)\n",
*************** ix86_valid_target_attribute_tree (tree f
*** 1410,1417 ****
    enum prefer_vector_width orig_pvw_set = opts_set->x_prefer_vector_width_type;
    enum prefer_vector_width orig_ix86_move_max_set
      = opts_set->x_ix86_move_max;
-   enum prefer_vector_width orig_ix86_store_max_set
-     = opts_set->x_ix86_store_max;
    int orig_tune_defaulted = ix86_tune_defaulted;
    int orig_arch_specified = ix86_arch_specified;
    char *option_strings[IX86_FUNCTION_SPECIFIC_MAX] = { NULL, NULL };
--- 1403,1408 ----
*************** ix86_valid_target_attribute_tree (tree f
*** 1492,1498 ****
        opts_set->x_ix86_fpmath = orig_fpmath_set;
        opts_set->x_prefer_vector_width_type = orig_pvw_set;
        opts_set->x_ix86_move_max = orig_ix86_move_max_set;
-       opts_set->x_ix86_store_max = orig_ix86_store_max_set;
        opts->x_ix86_excess_precision = orig_ix86_excess_precision;
        opts->x_ix86_unsafe_math_optimizations
  	= orig_ix86_unsafe_math_optimizations;
--- 1483,1488 ----
*************** ix86_option_override_internal (bool main
*** 2939,2970 ****
  	    }
  	}
      }
- 
-   if (opts_set->x_ix86_store_max == PVW_NONE)
-     {
-       /* Set the maximum number of bits can be stored to memory
- 	 efficiently.  */
-       if (opts_set->x_prefer_vector_width_type != PVW_NONE)
- 	opts->x_ix86_store_max = opts->x_prefer_vector_width_type;
-       else if (ix86_tune_features[X86_TUNE_AVX512_STORE_BY_PIECES])
- 	opts->x_ix86_store_max = PVW_AVX512;
-       else if (ix86_tune_features[X86_TUNE_AVX256_STORE_BY_PIECES])
- 	opts->x_ix86_store_max = PVW_AVX256;
-       else
- 	{
- 	  opts->x_ix86_store_max = opts->x_prefer_vector_width_type;
- 	  if (opts_set->x_ix86_store_max == PVW_NONE)
- 	    {
- 	      if (TARGET_AVX512F_P (opts->x_ix86_isa_flags))
- 		opts->x_ix86_store_max = PVW_AVX512;
- 	      /* Align with vectorizer to avoid potential STLF issue.  */
- 	      else if (TARGET_AVX_P (opts->x_ix86_isa_flags))
- 		opts->x_ix86_store_max = PVW_AVX256;
- 	      else
- 		opts->x_ix86_store_max = PVW_AVX128;
- 	    }
- 	}
-     }
  
    if (opts->x_ix86_recip_name)
      {
--- 2929,2934 ----
diff -Nrcpad gcc-16-20250921/gcc/config/i386/i386-options.h gcc-16-20250928/gcc/config/i386/i386-options.h
*** gcc-16-20250921/gcc/config/i386/i386-options.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/i386/i386-options.h	Sun Sep 28 22:33:04 2025
*************** char *ix86_target_string (HOST_WIDE_INT
*** 28,34 ****
  			  enum fpmath_unit fpmath,
  			  enum prefer_vector_width pvw,
  			  enum prefer_vector_width move_max,
- 			  enum prefer_vector_width store_max,
  			  bool add_nl_p, bool add_abi_p);
  
  extern enum attr_cpu ix86_schedule;
--- 28,33 ----
diff -Nrcpad gcc-16-20250921/gcc/config/i386/i386.cc gcc-16-20250928/gcc/config/i386/i386.cc
*** gcc-16-20250921/gcc/config/i386/i386.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/i386/i386.cc	Sun Sep 28 22:33:04 2025
*************** ix86_vector_costs::add_stmt_cost (int co
*** 26144,26149 ****
--- 26144,26157 ----
    /* Record number of load/store/gather/scatter in vectorized body.  */
    if (where == vect_body && !m_costing_for_scalar)
      {
+       int scale = 1;
+       if (vectype
+ 	  && ((GET_MODE_SIZE (TYPE_MODE (vectype)) == 64
+ 	      && TARGET_AVX512_SPLIT_REGS)
+ 	      || (GET_MODE_SIZE (TYPE_MODE (vectype)) == 32
+ 		  && TARGET_AVX256_SPLIT_REGS)))
+ 	scale = 2;
+ 
        switch (kind)
  	{
  	  /* Emulated gather/scatter or any scalarization.  */
*************** ix86_vector_costs::add_stmt_cost (int co
*** 26166,26172 ****
  	      /* Handle __builtin_fma.  */
  	      if (gimple_call_combined_fn (stmt_info->stmt) == CFN_FMA)
  		{
! 		  m_num_reduc[X86_REDUC_FMA] += count;
  		  break;
  		}
  
--- 26174,26180 ----
  	      /* Handle __builtin_fma.  */
  	      if (gimple_call_combined_fn (stmt_info->stmt) == CFN_FMA)
  		{
! 		  m_num_reduc[X86_REDUC_FMA] += count * scale;
  		  break;
  		}
  
*************** ix86_vector_costs::add_stmt_cost (int co
*** 26203,26214 ****
  		      && (def = SSA_NAME_DEF_STMT (rhs1), true)
  		      && is_gimple_assign (def)
  		      && gimple_assign_rhs_code (def) == MULT_EXPR)
! 		    m_num_reduc[X86_REDUC_FMA] += count;
  		  else if (TREE_CODE (rhs2) == SSA_NAME
  			   && (def = SSA_NAME_DEF_STMT (rhs2), true)
  			   && is_gimple_assign (def)
  			   && gimple_assign_rhs_code (def) == MULT_EXPR)
! 		    m_num_reduc[X86_REDUC_FMA] += count;
  		  break;
  
  		  /* Vectorizer lane_reducing_op_p supports DOT_PROX_EXPR,
--- 26211,26222 ----
  		      && (def = SSA_NAME_DEF_STMT (rhs1), true)
  		      && is_gimple_assign (def)
  		      && gimple_assign_rhs_code (def) == MULT_EXPR)
! 		    m_num_reduc[X86_REDUC_FMA] += count * scale;
  		  else if (TREE_CODE (rhs2) == SSA_NAME
  			   && (def = SSA_NAME_DEF_STMT (rhs2), true)
  			   && is_gimple_assign (def)
  			   && gimple_assign_rhs_code (def) == MULT_EXPR)
! 		    m_num_reduc[X86_REDUC_FMA] += count * scale;
  		  break;
  
  		  /* Vectorizer lane_reducing_op_p supports DOT_PROX_EXPR,
*************** ix86_vector_costs::add_stmt_cost (int co
*** 26237,26243 ****
  			     ? TARGET_AVX10_2
  			     : (TARGET_AVXVNNIINT8 || TARGET_AVX10_2));
  		    }
! 		  m_num_reduc[X86_REDUC_DOT_PROD] += count;
  
  		  /* Dislike to do unroll and partial sum for
  		     emulated DOT_PROD_EXPR.  */
--- 26245,26251 ----
  			     ? TARGET_AVX10_2
  			     : (TARGET_AVXVNNIINT8 || TARGET_AVX10_2));
  		    }
! 		  m_num_reduc[X86_REDUC_DOT_PROD] += count * scale;
  
  		  /* Dislike to do unroll and partial sum for
  		     emulated DOT_PROD_EXPR.  */
*************** ix86_vector_costs::add_stmt_cost (int co
*** 26246,26252 ****
  		  break;
  
  		case SAD_EXPR:
! 		  m_num_reduc[X86_REDUC_SAD] += count;
  		  break;
  
  		default:
--- 26254,26260 ----
  		  break;
  
  		case SAD_EXPR:
! 		  m_num_reduc[X86_REDUC_SAD] += count * scale;
  		  break;
  
  		default:
*************** ix86_libgcc_floating_mode_supported_p
*** 28244,28252 ****
  #undef TARGET_OPTION_PRINT
  #define TARGET_OPTION_PRINT ix86_function_specific_print
  
- #undef TARGET_OPTION_FUNCTION_VERSIONS
- #define TARGET_OPTION_FUNCTION_VERSIONS common_function_versions
- 
  #undef TARGET_CAN_INLINE_P
  #define TARGET_CAN_INLINE_P ix86_can_inline_p
  
--- 28252,28257 ----
diff -Nrcpad gcc-16-20250921/gcc/config/i386/i386.h gcc-16-20250928/gcc/config/i386/i386.h
*** gcc-16-20250921/gcc/config/i386/i386.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/i386/i386.h	Sun Sep 28 22:33:04 2025
*************** typedef struct ix86_args {
*** 1916,1928 ****
     MOVE_MAX_PIECES defaults to MOVE_MAX.  */
  
  #define MOVE_MAX \
!   ((TARGET_AVX512F \
!     && (ix86_move_max == PVW_AVX512 \
! 	|| ix86_store_max == PVW_AVX512)) \
     ? 64 \
!    : ((TARGET_AVX \
!        && (ix86_move_max >= PVW_AVX256 \
! 	   || ix86_store_max >= PVW_AVX256)) \
        ? 32 \
        : ((TARGET_SSE2 \
  	  && TARGET_SSE_UNALIGNED_LOAD_OPTIMAL \
--- 1916,1924 ----
     MOVE_MAX_PIECES defaults to MOVE_MAX.  */
  
  #define MOVE_MAX \
!   ((TARGET_AVX512F && ix86_move_max == PVW_AVX512) \
     ? 64 \
!    : ((TARGET_AVX && ix86_move_max >= PVW_AVX256) \
        ? 32 \
        : ((TARGET_SSE2 \
  	  && TARGET_SSE_UNALIGNED_LOAD_OPTIMAL \
*************** typedef struct ix86_args {
*** 1935,1949 ****
     store_by_pieces of 16/32/64 bytes.  */
  #define STORE_MAX_PIECES \
    (TARGET_INTER_UNIT_MOVES_TO_VEC \
!    ? ((TARGET_AVX512F && ix86_store_max == PVW_AVX512) \
        ? 64 \
!       : ((TARGET_AVX \
! 	  && ix86_store_max >= PVW_AVX256) \
  	  ? 32 \
  	  : ((TARGET_SSE2 \
  	      && TARGET_SSE_UNALIGNED_STORE_OPTIMAL) \
! 	      ? 16 : UNITS_PER_WORD))) \
!    : UNITS_PER_WORD)
  
  /* If a memory-to-memory move would take MOVE_RATIO or more simple
     move-instruction pairs, we will do a cpymem or libcall instead.
--- 1931,1944 ----
     store_by_pieces of 16/32/64 bytes.  */
  #define STORE_MAX_PIECES \
    (TARGET_INTER_UNIT_MOVES_TO_VEC \
!    ? ((TARGET_AVX512F && ix86_move_max == PVW_AVX512) \
        ? 64 \
!       : ((TARGET_AVX && ix86_move_max >= PVW_AVX256) \
  	  ? 32 \
  	  : ((TARGET_SSE2 \
  	      && TARGET_SSE_UNALIGNED_STORE_OPTIMAL) \
! 	     ? 16 : UNITS_PER_WORD)))		     \
!       : UNITS_PER_WORD)
  
  /* If a memory-to-memory move would take MOVE_RATIO or more simple
     move-instruction pairs, we will do a cpymem or libcall instead.
diff -Nrcpad gcc-16-20250921/gcc/config/i386/i386.opt gcc-16-20250928/gcc/config/i386/i386.opt
*** gcc-16-20250921/gcc/config/i386/i386.opt	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/i386/i386.opt	Sun Sep 28 22:33:04 2025
*************** Target RejectNegative Joined Var(ix86_mo
*** 644,651 ****
  Maximum number of bits that can be moved from memory to memory efficiently.
  
  mstore-max=
! Target RejectNegative Joined Var(ix86_store_max) Enum(prefer_vector_width) Init(PVW_NONE) Save
! Maximum number of bits that can be stored to memory efficiently.
  
  mnoreturn-no-callee-saved-registers
  Target Var(ix86_noreturn_no_callee_saved_registers)
--- 644,650 ----
  Maximum number of bits that can be moved from memory to memory efficiently.
  
  mstore-max=
! Target RejectNegative Joined Uncoumented Var(ix86_move_max) Enum(prefer_vector_width) Init(PVW_NONE) Warn(%<-mstore-max=%> is deprecated; use %<-mmove-max=%> instead)
  
  mnoreturn-no-callee-saved-registers
  Target Var(ix86_noreturn_no_callee_saved_registers)
diff -Nrcpad gcc-16-20250921/gcc/config/i386/x86-tune-costs.h gcc-16-20250928/gcc/config/i386/x86-tune-costs.h
*** gcc-16-20250921/gcc/config/i386/x86-tune-costs.h	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/i386/x86-tune-costs.h	Sun Sep 28 22:33:04 2025
*************** struct processor_costs znver1_cost = {
*** 1744,1750 ****
  					   FMA/DOT_PROD_EXPR/SAD_EXPR,
  					   it's used to determine unroll
  					   factor in the vectorizer.  */
!   4,					/* Limit how much the autovectorizer
  					   may unroll a loop.  */
    znver1_memcpy,
    znver1_memset,
--- 1744,1750 ----
  					   FMA/DOT_PROD_EXPR/SAD_EXPR,
  					   it's used to determine unroll
  					   factor in the vectorizer.  */
!   1,					/* Limit how much the autovectorizer
  					   may unroll a loop.  */
    znver1_memcpy,
    znver1_memset,
*************** struct processor_costs znver2_cost = {
*** 1918,1924 ****
  					   FMA/DOT_PROD_EXPR/SAD_EXPR,
  					   it's used to determine unroll
  					   factor in the vectorizer.  */
!   4,					/* Limit how much the autovectorizer
  					   may unroll a loop.  */
    znver2_memcpy,
    znver2_memset,
--- 1918,1924 ----
  					   FMA/DOT_PROD_EXPR/SAD_EXPR,
  					   it's used to determine unroll
  					   factor in the vectorizer.  */
!   1,					/* Limit how much the autovectorizer
  					   may unroll a loop.  */
    znver2_memcpy,
    znver2_memset,
diff -Nrcpad gcc-16-20250921/gcc/config/i386/x86-tune.def gcc-16-20250928/gcc/config/i386/x86-tune.def
*** gcc-16-20250921/gcc/config/i386/x86-tune.def	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/i386/x86-tune.def	Sun Sep 28 22:33:04 2025
*************** DEF_TUNE (X86_TUNE_AVX512_SPLIT_REGS, "a
*** 619,639 ****
  DEF_TUNE (X86_TUNE_AVX256_MOVE_BY_PIECES, "avx256_move_by_pieces",
  	  m_CORE_HYBRID | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3)
  
- /* X86_TUNE_AVX256_STORE_BY_PIECES: Optimize store_by_pieces with 256-bit
-    AVX instructions.  */
- DEF_TUNE (X86_TUNE_AVX256_STORE_BY_PIECES, "avx256_store_by_pieces",
- 	  m_CORE_HYBRID | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3)
- 
  /* X86_TUNE_AVX512_MOVE_BY_PIECES: Optimize move_by_pieces with 512-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX512_MOVE_BY_PIECES, "avx512_move_by_pieces",
  	   m_ZNVER4 | m_ZNVER5)
  
- /* X86_TUNE_AVX512_STORE_BY_PIECES: Optimize store_by_pieces with 512-bit
-    AVX instructions.  */
- DEF_TUNE (X86_TUNE_AVX512_STORE_BY_PIECES, "avx512_store_by_pieces",
- 	  m_ZNVER4 | m_ZNVER5)
- 
  /* X86_TUNE_AVX512_TWO_EPILOGUES: Use two vector epilogues for 512-bit
     vectorized loops.  */
  DEF_TUNE (X86_TUNE_AVX512_TWO_EPILOGUES, "avx512_two_epilogues",
--- 619,629 ----
diff -Nrcpad gcc-16-20250921/gcc/config/loongarch/loongarch.cc gcc-16-20250928/gcc/config/loongarch/loongarch.cc
*** gcc-16-20250921/gcc/config/loongarch/loongarch.cc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/loongarch/loongarch.cc	Sun Sep 28 22:33:04 2025
*************** loongarch_compute_pressure_classes (reg_
*** 11202,11207 ****
--- 11202,11270 ----
    return i;
  }
  
+ /* Implement TARGET_CAN_INLINE_P.  Determine whether inlining the function
+    CALLER into the function CALLEE is safe.  Inlining should be rejected if
+    there is no always_inline attribute and the target options differ except
+    for differences in ISA extensions or performance tuning options like the
+    code model, TLS dialect, etc.  */
+ 
+ static bool
+ loongarch_can_inline_p (tree caller, tree callee)
+ {
+   tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (callee);
+   tree caller_tree = DECL_FUNCTION_SPECIFIC_TARGET (caller);
+ 
+   if (!callee_tree)
+     callee_tree = target_option_default_node;
+ 
+   if (!caller_tree)
+     caller_tree = target_option_default_node;
+ 
+   /* If both caller and callee have attributes, assume that if the
+      pointer is different, the two functions have different target
+      options since build_target_option_node uses a hash table for the
+      options.  */
+   if (callee_tree == caller_tree)
+     return true;
+ 
+   struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree);
+   struct cl_target_option *caller_opts = TREE_TARGET_OPTION (caller_tree);
+ 
+   /* Callee and caller should have the same target options.  */
+   int callee_target_flags = callee_opts->x_target_flags;
+   int caller_target_flags = caller_opts->x_target_flags;
+ 
+   if (callee_target_flags != caller_target_flags)
+     return false;
+ 
+   /* If callee enables the isa extension that the caller does not enable,
+      inlining is disabled.  */
+   if (~caller_opts->x_la_isa_evolution
+       & callee_opts->x_la_isa_evolution)
+     return false;
+ 
+   /* If simd extensions are enabled for the callee but not for the caller,
+      inlining is disabled.  */
+   if ((caller_opts->x_la_opt_simd == ISA_EXT_NONE
+        && callee_opts->x_la_opt_simd != ISA_EXT_NONE)
+       || (caller_opts->x_la_opt_simd == ISA_EXT_SIMD_LSX
+ 	  && callee_opts->x_la_opt_simd == ISA_EXT_SIMD_LASX))
+     return false;
+ 
+   bool always_inline
+     = lookup_attribute ("always_inline", DECL_ATTRIBUTES (callee));
+ 
+   /* If the architectural features match up and the callee is always_inline
+      then the other attributes don't matter.  */
+   if (always_inline)
+     return true;
+ 
+   if (caller_opts->x_la_opt_cmodel != callee_opts->x_la_opt_cmodel)
+     return false;
+ 
+   return true;
+ }
+ 
  /* Initialize the GCC target structure.  */
  #undef TARGET_ASM_ALIGNED_HI_OP
  #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
*************** loongarch_compute_pressure_classes (reg_
*** 11482,11487 ****
--- 11545,11553 ----
  #undef TARGET_COMPUTE_PRESSURE_CLASSES
  #define TARGET_COMPUTE_PRESSURE_CLASSES loongarch_compute_pressure_classes
  
+ #undef TARGET_CAN_INLINE_P
+ #define TARGET_CAN_INLINE_P loongarch_can_inline_p
+ 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-loongarch.h"
diff -Nrcpad gcc-16-20250921/gcc/config/loongarch/loongarch.md gcc-16-20250928/gcc/config/loongarch/loongarch.md
*** gcc-16-20250921/gcc/config/loongarch/loongarch.md	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config/loongarch/loongarch.md	Sun Sep 28 22:33:04 2025
***************
*** 4193,4209 ****
    [(set_attr "type" "unknown")
     (set_attr "mode" "<MODE>")])
  
! (define_int_iterator FCLASS_MASK [68 136 952])
  (define_int_attr fclass_optab
    [(68	"isinf")
     (136	"isnormal")
!    (952	"isfinite")])
  
  (define_expand "<FCLASS_MASK:fclass_optab><ANYF:mode>2"
    [(match_operand:SI   0 "register_operand" "=r")
     (match_operand:ANYF 1 "register_operand" " f")
     (const_int FCLASS_MASK)]
!   "TARGET_HARD_FLOAT"
    {
      rtx ft0 = gen_reg_rtx (SImode);
      rtx t0 = gen_reg_rtx (word_mode);
--- 4193,4210 ----
    [(set_attr "type" "unknown")
     (set_attr "mode" "<MODE>")])
  
! (define_int_iterator FCLASS_MASK [68 136 952 3])
  (define_int_attr fclass_optab
    [(68	"isinf")
     (136	"isnormal")
!    (952	"isfinite")
!    (3	"isnan")])
  
  (define_expand "<FCLASS_MASK:fclass_optab><ANYF:mode>2"
    [(match_operand:SI   0 "register_operand" "=r")
     (match_operand:ANYF 1 "register_operand" " f")
     (const_int FCLASS_MASK)]
!   "TARGET_HARD_FLOAT && (<FCLASS_MASK> != 3 || flag_signaling_nans)"
    {
      rtx ft0 = gen_reg_rtx (SImode);
      rtx t0 = gen_reg_rtx (word_mode);
diff -Nrcpad gcc-16-20250921/gcc/config/mips/mips.cc gcc-16-20250928/gcc/config/mips/mips.cc
*** gcc-16-20250921/gcc/config/mips/mips.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/mips/mips.cc	Sun Sep 28 22:33:04 2025
*************** static void
*** 7476,7481 ****
--- 7476,7484 ----
  mips_start_function_definition (const char *name, bool mips16_p,
  				tree decl ATTRIBUTE_UNUSED)
  {
+   unsigned HOST_WIDE_INT patch_area_size = crtl->patch_area_size;
+   unsigned HOST_WIDE_INT patch_area_entry = crtl->patch_area_entry;
+ 
    if (mips16_p)
      fprintf (asm_out_file, "\t.set\tmips16\n");
    else
*************** mips_start_function_definition (const ch
*** 7488,7493 ****
--- 7491,7500 ----
      fprintf (asm_out_file, "\t.set\tnomicromips\n");
  #endif
  
+   /* Emit the patching area before the entry label, if any.  */
+   if (patch_area_entry > 0)
+     default_print_patchable_function_entry (asm_out_file,
+ 					    patch_area_entry, true);
    if (!flag_inhibit_size_directive)
      {
        fputs ("\t.ent\t", asm_out_file);
*************** mips_start_function_definition (const ch
*** 7499,7504 ****
--- 7506,7518 ----
  
    /* Start the definition proper.  */
    ASM_OUTPUT_FUNCTION_LABEL (asm_out_file, name, decl);
+ 
+   /* And the area after the label.  Record it if we haven't done so yet.  */
+   if (patch_area_size > patch_area_entry)
+     default_print_patchable_function_entry (asm_out_file,
+ 					    patch_area_size
+ 					    - patch_area_entry,
+ 					    patch_area_entry == 0);
  }
  
  /* End a function definition started by mips_start_function_definition.  */
*************** mips_option_override (void)
*** 20419,20424 ****
--- 20433,20448 ----
    if (TARGET_MICROMIPS && TARGET_MIPS16)
      error ("unsupported combination: %s", "-mips16 -mmicromips");
  
+   /* Make -mmips16e2 imply -mips16 and forbid its coexistence with
+      -mmicromips as the ASE requires.  */
+   if (TARGET_MIPS16E2)
+   {
+     if (TARGET_MICROMIPS)
+       error ("unsupported combination: %s", "-mmips16e2 -mmicromips");
+ 
+     target_flags |= MASK_MIPS16;
+   }
+ 
    /* Prohibit Paired-Single and MSA combination.  This is software restriction
       rather than architectural.  */
    if (ISA_HAS_MSA && TARGET_PAIRED_SINGLE_FLOAT)
*************** mips_option_override (void)
*** 20671,20676 ****
--- 20695,20709 ----
  	      "-mcompact-branches=never");
      }
  
+   /* MIPS16* ASE is forbidden in Release 6, so -mips16 is not available
+      for MIPS R6 onwards.  */
+   if ((mips_base_compression_flags & MASK_MIPS16) && mips_isa_rev >= 6)
+     error ("MIPS16* ASE is forbidden in Release 6");
+ 
+   /* Make sure that the user use Release[2,5] when using -mmips16e2.  */
+   if (TARGET_MIPS16E2 && mips_isa_rev < 2)
+     error ("%<-mmips16e2%> requires Release[2,5]");
+ 
    /* Require explicit relocs for MIPS R6 onwards.  This enables simplification
       of the compact branch and jump support through the backend.  */
    if (!TARGET_EXPLICIT_RELOCS && mips_isa_rev >= 6)
*************** mips_bit_clear_p (enum machine_mode mode
*** 23331,23336 ****
--- 23364,23384 ----
    return false;
  }
  
+ /* define TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY */
+ 
+ /* The MIPS function start is implemented in the prologue function.
+    TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY needs to be inserted
+    before or after the function name, so this function does not
+    use a public implementation. This function is implemented in
+    mips_start_function_definition. */
+ 
+ void
+ mips_print_patchable_function_entry (FILE *file ATTRIBUTE_UNUSED,
+ 				     unsigned HOST_WIDE_INT
+ 				     patch_area_size ATTRIBUTE_UNUSED,
+ 				     bool record_p ATTRIBUTE_UNUSED)
+ {}
+ 
  /* Initialize the GCC target structure.  */
  #undef TARGET_ASM_ALIGNED_HI_OP
  #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
*************** mips_bit_clear_p (enum machine_mode mode
*** 23644,23649 ****
--- 23692,23701 ----
  #undef TARGET_DOCUMENTATION_NAME
  #define TARGET_DOCUMENTATION_NAME "MIPS"
  
+ #undef TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY
+ #define TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY \
+ mips_print_patchable_function_entry
+ 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-mips.h"
diff -Nrcpad gcc-16-20250921/gcc/config/mips/mips.md gcc-16-20250928/gcc/config/mips/mips.md
*** gcc-16-20250921/gcc/config/mips/mips.md	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/mips/mips.md	Sun Sep 28 22:33:04 2025
***************
*** 2617,2623 ****
  	(fma:ANYF (match_operand:ANYF 1 "register_operand")
  		  (match_operand:ANYF 2 "register_operand")
  		  (neg:ANYF (match_operand:ANYF 3 "register_operand"))))]
!   "(ISA_HAS_FUSED_MADD3 || ISA_HAS_FUSED_MADD4)")
  
  (define_insn "*fms<mode>4_msub3"
    [(set (match_operand:ANYF 0 "register_operand" "=f")
--- 2617,2624 ----
  	(fma:ANYF (match_operand:ANYF 1 "register_operand")
  		  (match_operand:ANYF 2 "register_operand")
  		  (neg:ANYF (match_operand:ANYF 3 "register_operand"))))]
!   "(ISA_HAS_FUSED_MADD3 || ISA_HAS_FUSED_MADD4)
!    || ISA_HAS_FUSED_MADDF")
  
  (define_insn "*fms<mode>4_msub3"
    [(set (match_operand:ANYF 0 "register_operand" "=f")
***************
*** 2639,2644 ****
--- 2640,2655 ----
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
  
+ (define_insn "*fms<mode>4_msubf"
+   [(set (match_operand:ANYF 0 "register_operand" "=f")
+ 	(fma:ANYF (match_operand:ANYF 1 "register_operand" "f")
+ 		  (match_operand:ANYF 2 "register_operand" "f")
+ 		  (neg:ANYF (match_operand:ANYF 3 "register_operand" "0"))))]
+   "ISA_HAS_FUSED_MADDF"
+   "msubf.<fmt>\t%0,%1,%2"
+   [(set_attr "type" "fmadd")
+    (set_attr "mode" "<UNITMODE>")])
+ 
  ;; fnma is defined in GCC as (fma (neg op1) op2 op3)
  ;; (-op1 * op2) + op3 ==> -(op1 * op2) + op3 ==> -((op1 * op2) - op3)
  ;; The mips nmsub instructions implement -((op1 * op2) - op3)
***************
*** 2650,2657 ****
  	(fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand"))
  		  (match_operand:ANYF 2 "register_operand")
  		  (match_operand:ANYF 3 "register_operand")))]
!   "(ISA_HAS_FUSED_MADD3 || ISA_HAS_FUSED_MADD4)
!    && !HONOR_SIGNED_ZEROS (<MODE>mode)")
  
  (define_insn "*fnma<mode>4_nmsub3"
    [(set (match_operand:ANYF 0 "register_operand" "=f")
--- 2661,2669 ----
  	(fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand"))
  		  (match_operand:ANYF 2 "register_operand")
  		  (match_operand:ANYF 3 "register_operand")))]
!   "((ISA_HAS_FUSED_MADD3 || ISA_HAS_FUSED_MADD4)
!    && !HONOR_SIGNED_ZEROS (<MODE>mode))
!    || ISA_HAS_FUSED_MADDF")
  
  (define_insn "*fnma<mode>4_nmsub3"
    [(set (match_operand:ANYF 0 "register_operand" "=f")
***************
*** 2673,2678 ****
--- 2685,2700 ----
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
  
+ (define_insn "*fnma<mode>4_msubf"
+   [(set (match_operand:ANYF 0 "register_operand" "=f")
+ 	(fma:ANYF (neg:ANYF (match_operand:ANYF 1 "register_operand" "f"))
+ 		  (match_operand:ANYF 2 "register_operand" "f")
+ 		  (match_operand:ANYF 3 "register_operand" "0")))]
+   "ISA_HAS_FUSED_MADDF"
+   "msubf.<fmt>\t%0,%1,%2"
+   [(set_attr "type" "fmadd")
+    (set_attr "mode" "<UNITMODE>")])
+ 
  ;; fnms is defined as: (fma (neg op1) op2 (neg op3))
  ;; ((-op1) * op2) - op3 ==> -(op1 * op2) - op3 ==> -((op1 * op2) + op3)
  ;; The mips nmadd instructions implement -((op1 * op2) + op3)
diff -Nrcpad gcc-16-20250921/gcc/config/pru/pru-passes.cc gcc-16-20250928/gcc/config/pru/pru-passes.cc
*** gcc-16-20250921/gcc/config/pru/pru-passes.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/pru/pru-passes.cc	Sun Sep 28 22:33:04 2025
***************
*** 35,40 ****
--- 35,41 ----
  #include "gimple-iterator.h"
  #include "gimple-walk.h"
  #include "gimple-expr.h"
+ #include "cgraph.h"
  #include "tree-pass.h"
  
  #include "pru-protos.h"
*************** namespace {
*** 46,56 ****
     output a conforming code, raise an error.  */
  const pass_data pass_data_pru_tiabi_check =
  {
!   GIMPLE_PASS, /* type */
    "*pru_tiabi_check", /* name */
    OPTGROUP_NONE, /* optinfo_flags */
    TV_NONE, /* tv_id */
!   PROP_gimple_any, /* properties_required */
    0, /* properties_provided */
    0, /* properties_destroyed */
    0, /* todo_flags_start */
--- 47,57 ----
     output a conforming code, raise an error.  */
  const pass_data pass_data_pru_tiabi_check =
  {
!   SIMPLE_IPA_PASS, /* type */
    "*pru_tiabi_check", /* name */
    OPTGROUP_NONE, /* optinfo_flags */
    TV_NONE, /* tv_id */
!   0, /* properties_required */
    0, /* properties_provided */
    0, /* properties_destroyed */
    0, /* todo_flags_start */
*************** const pass_data pass_data_pru_tiabi_chec
*** 58,68 ****
  };
  
  /* Implementation class for the TI ABI compliance-check pass.  */
! class pass_pru_tiabi_check : public gimple_opt_pass
  {
  public:
    pass_pru_tiabi_check (gcc::context *ctxt)
!     : gimple_opt_pass (pass_data_pru_tiabi_check, ctxt)
    {}
  
    /* opt_pass methods: */
--- 59,69 ----
  };
  
  /* Implementation class for the TI ABI compliance-check pass.  */
! class pass_pru_tiabi_check : public simple_ipa_opt_pass
  {
  public:
    pass_pru_tiabi_check (gcc::context *ctxt)
!     : simple_ipa_opt_pass (pass_data_pru_tiabi_check, ctxt)
    {}
  
    /* opt_pass methods: */
*************** public:
*** 75,128 ****
  
  }; // class pass_pru_tiabi_check
  
! /* Return 1 if type TYPE is a pointer to function type or a
!    structure having a pointer to function type as one of its fields.
!    Otherwise return 0.  */
! static bool
! chkp_type_has_function_pointer (const_tree type)
  {
!   bool res = false;
  
!   if (POINTER_TYPE_P (type) && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (type)))
!     res = true;
    else if (RECORD_OR_UNION_TYPE_P (type))
      {
!       tree field;
! 
!       for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
  	if (TREE_CODE (field) == FIELD_DECL)
! 	  res = res || chkp_type_has_function_pointer (TREE_TYPE (field));
      }
    else if (TREE_CODE (type) == ARRAY_TYPE)
!     res = chkp_type_has_function_pointer (TREE_TYPE (type));
! 
!   return res;
  }
  
! /* Check the function declaration FNTYPE for TI ABI compatibility.  */
  static void
! chk_function_decl (const_tree fntype, location_t call_location)
  {
    /* GCC does not check if the RETURN VALUE pointer is NULL,
       so do not allow GCC functions with large return values.  */
    if (!VOID_TYPE_P (TREE_TYPE (fntype))
        && pru_return_in_memory (TREE_TYPE (fntype), fntype))
!     error_at (call_location,
  	      "large return values not supported with %<-mabi=ti%> option");
  
    /* Check this function's arguments.  */
    for (tree p = TYPE_ARG_TYPES (fntype); p; p = TREE_CHAIN (p))
!     {
!       tree arg_type = TREE_VALUE (p);
!       if (chkp_type_has_function_pointer (arg_type))
! 	error_at (call_location,
! 		  "function pointers not supported with %<-mabi=ti%> option");
!     }
  }
  
! /* Callback for walk_gimple_seq that checks TP tree for TI ABI compliance.  */
  static tree
! check_op_callback (tree *tp, int *walk_subtrees, void *data)
  {
    struct walk_stmt_info *wi = (struct walk_stmt_info *) data;
  
--- 76,154 ----
  
  }; // class pass_pru_tiabi_check
  
! /* Issue an error diagnostic if the given TYPE is not compatible with
!    TI's ABI.  */
! static void
! check_type_tiabi_compatibility (tree type, location_t loc,
! 				hash_set<tree> *visited_nodes)
  {
!   /* Do not visit the same type twice.  */
!   if (visited_nodes->add (type))
!     return;
  
!   if (POINTER_TYPE_P (type))
!     {
!       /* TODO: All declarations and statements share the same object for a
! 	 function pointer tree type.  So if there are several variables
! 	 with the same type (function pointer with same function signature),
! 	 only the first declaration would get a diagnostic.  */
!       if (FUNC_OR_METHOD_TYPE_P (TREE_TYPE (type)))
! 	{
! 	  location_t ptrloc = DECL_P (type) ? DECL_SOURCE_LOCATION (type) : loc;
! 	  error_at (ptrloc,
! 		    "function pointers not supported with %<-mabi=ti%> option");
! 	}
!       else
! 	check_type_tiabi_compatibility (TREE_TYPE (type), loc, visited_nodes);
!     }
    else if (RECORD_OR_UNION_TYPE_P (type))
      {
!       for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
  	if (TREE_CODE (field) == FIELD_DECL)
! 	  {
! 	    if (DECL_BIT_FIELD (field))
! 	      error_at (DECL_SOURCE_LOCATION (field),
! 			"bit-fields not supported with %<-mabi=ti%> option");
! 
! 	    check_type_tiabi_compatibility (TREE_TYPE (field),
! 					    DECL_SOURCE_LOCATION (field),
! 					    visited_nodes);
! 	  }
      }
    else if (TREE_CODE (type) == ARRAY_TYPE)
!     check_type_tiabi_compatibility (TREE_TYPE (type), loc, visited_nodes);
  }
  
! /* Check the GCC function declaration FNTYPE for TI ABI compatibility.  */
  static void
! check_function_decl (tree fntype, location_t loc,
! 		     hash_set<tree> *visited_nodes)
  {
+   /* Do not visit the same type twice.  */
+   if (visited_nodes->add (fntype))
+     return;
+ 
    /* GCC does not check if the RETURN VALUE pointer is NULL,
       so do not allow GCC functions with large return values.  */
    if (!VOID_TYPE_P (TREE_TYPE (fntype))
        && pru_return_in_memory (TREE_TYPE (fntype), fntype))
!     error_at (loc,
  	      "large return values not supported with %<-mabi=ti%> option");
  
+   /* Rest of checks for the returned type.  */
+   check_type_tiabi_compatibility (TREE_TYPE (fntype), loc, visited_nodes);
+ 
    /* Check this function's arguments.  */
    for (tree p = TYPE_ARG_TYPES (fntype); p; p = TREE_CHAIN (p))
!     check_type_tiabi_compatibility (TREE_VALUE (p), loc, visited_nodes);
  }
  
! /* Callback for walk_gimple_seq that checks TP tree for TI ABI compliance.
!    Note that TP would have been marked as visited before calling
!    this function.  But the underlying type of TP may or may not have
!    been visited before.  */
  static tree
! check_op_callback (tree *tp, int *, void *data)
  {
    struct walk_stmt_info *wi = (struct walk_stmt_info *) data;
  
*************** check_op_callback (tree *tp, int *walk_s
*** 150,215 ****
      {
      case FUNCTION_TYPE:
      case METHOD_TYPE:
! 	{
! 	  /* Note: Do not enforce a small return value.  It is safe to
! 	     call any TI ABI function from GCC, since GCC will
! 	     never pass NULL.  */
  
! 	  /* Check arguments for function pointers.  */
! 	  for (tree p = TYPE_ARG_TYPES (type); p; p = TREE_CHAIN (p))
! 	    {
! 	      tree arg_type = TREE_VALUE (p);
! 	      if (chkp_type_has_function_pointer (arg_type))
! 		error_at (gimple_location (wi->stmt), "function pointers "
! 			  "not supported with %<-mabi=ti%> option");
! 	    }
! 	  break;
! 	}
      case RECORD_TYPE:
      case UNION_TYPE:
      case QUAL_UNION_TYPE:
!     case POINTER_TYPE:
! 	{
! 	  if (chkp_type_has_function_pointer (type))
! 	    {
! 	      error_at (gimple_location (wi->stmt),
! 			"function pointers not supported with "
! 			"%<-mabi=ti%> option");
! 	      *walk_subtrees = false;
! 	    }
! 	  break;
! 	}
      default:
! 	  break;
      }
    return NULL;
  }
  
  /* Pass implementation.  */
  unsigned
! pass_pru_tiabi_check::execute (function *fun)
  {
!   struct walk_stmt_info wi;
!   const_tree fntype = TREE_TYPE (fun->decl);
  
!   gimple_seq body = gimple_body (current_function_decl);
  
!   memset (&wi, 0, sizeof (wi));
!   wi.info = NULL;
!   wi.want_locations = true;
  
!   /* Check the function body.  */
!   walk_gimple_seq (body, NULL, check_op_callback, &wi);
  
!   /* Check the function declaration.  */
!   chk_function_decl (fntype, fun->function_start_locus);
  
    return 0;
  }
  
  } // anon namespace
  
! gimple_opt_pass *
  make_pru_tiabi_check (gcc::context *ctxt)
  {
    return new pass_pru_tiabi_check (ctxt);
--- 176,266 ----
      {
      case FUNCTION_TYPE:
      case METHOD_TYPE:
!       {
! 	/* Has this function already been inspected?  */
! 	if (wi->pset->add (type))
! 	  return NULL;
  
! 	/* Note: Do not enforce a small return value.  It is safe to
! 	   call any TI ABI function from GCC, since GCC will
! 	   never pass NULL.  */
! 
! 	/* Check arguments for function pointers.  */
! 	for (tree p = TYPE_ARG_TYPES (type); p; p = TREE_CHAIN (p))
! 	  check_type_tiabi_compatibility (TREE_VALUE (p),
! 					  gimple_location (wi->stmt),
! 					  wi->pset);
! 	break;
!       }
      case RECORD_TYPE:
      case UNION_TYPE:
      case QUAL_UNION_TYPE:
!       {
! 	/* walk_tree would not descend and visit field declarations.
! 	   So do it here.  */
! 	check_type_tiabi_compatibility (type,
! 					gimple_location (wi->stmt),
! 					wi->pset);
! 	break;
!       }
      default:
!       break;
      }
    return NULL;
  }
  
  /* Pass implementation.  */
  unsigned
! pass_pru_tiabi_check::execute (function *)
  {
!   struct cgraph_node *node;
!   hash_set<tree> visited_nodes;
!   symtab_node *snode;
  
!   FOR_EACH_SYMBOL (snode)
!     {
!       tree decl = snode->decl;
!       if (decl)
! 	{
! 	  if (FUNC_OR_METHOD_TYPE_P (TREE_TYPE (decl)))
! 	    check_function_decl (TREE_TYPE (decl),
! 				 DECL_SOURCE_LOCATION (decl),
! 				 &visited_nodes);
! 	  else
! 	    check_type_tiabi_compatibility (TREE_TYPE (decl),
! 					    DECL_SOURCE_LOCATION (decl),
! 					    &visited_nodes);
! 	}
!     }
  
!   FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node)
!     {
!       function *fn = node->get_fun ();
!       gimple_stmt_iterator gsi;
!       basic_block bb;
  
!       FOR_EACH_BB_FN (bb, fn)
! 	{
! 	  for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
! 	    {
! 	      struct walk_stmt_info wi;
! 	      memset (&wi, 0, sizeof (wi));
! 	      wi.info = NULL;
! 	      wi.want_locations = true;
  
! 	      wi.pset = &visited_nodes;
  
+ 	      /* Check the function body.  */
+ 	      walk_gimple_stmt (&gsi, NULL, check_op_callback, &wi);
+ 	    }
+ 	}
+     }
    return 0;
  }
  
  } // anon namespace
  
! simple_ipa_opt_pass *
  make_pru_tiabi_check (gcc::context *ctxt)
  {
    return new pass_pru_tiabi_check (ctxt);
diff -Nrcpad gcc-16-20250921/gcc/config/pru/pru-passes.def gcc-16-20250928/gcc/config/pru/pru-passes.def
*** gcc-16-20250921/gcc/config/pru/pru-passes.def	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/pru/pru-passes.def	Sun Sep 28 22:33:04 2025
***************
*** 21,27 ****
     that the compiled code by GCC conforms to the TI ABI specification.
     If GCC cannot output a conforming code, then an error is raised.  */
  
! INSERT_PASS_AFTER (pass_warn_unused_result, 1, pru_tiabi_check);
  
  /* If -minrt option is used, then this pass would validate
     that the compiled code by GCC is compatible with the minimal
--- 21,27 ----
     that the compiled code by GCC conforms to the TI ABI specification.
     If GCC cannot output a conforming code, then an error is raised.  */
  
! INSERT_PASS_AFTER (pass_ipa_auto_profile_offline, 1, pru_tiabi_check);
  
  /* If -minrt option is used, then this pass would validate
     that the compiled code by GCC is compatible with the minimal
diff -Nrcpad gcc-16-20250921/gcc/config/pru/pru-protos.h gcc-16-20250928/gcc/config/pru/pru-protos.h
*** gcc-16-20250921/gcc/config/pru/pru-protos.h	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/pru/pru-protos.h	Sun Sep 28 22:33:04 2025
*************** extern int pru_get_ctable_base_offset (H
*** 72,79 ****
  
  extern int pru_symref2ioregno (rtx op);
  
! extern rtl_opt_pass *make_pru_tiabi_check (gcc::context *);
! extern rtl_opt_pass *make_pru_minrt_check (gcc::context *);
  
  #endif /* RTX_CODE */
  
--- 72,83 ----
  
  extern int pru_symref2ioregno (rtx op);
  
! /* Forward declarations to avoid unnecessarily including headers.  */
! class simple_ipa_opt_pass;
! class gimple_opt_pass;
! 
! extern simple_ipa_opt_pass *make_pru_tiabi_check (gcc::context *);
! extern gimple_opt_pass *make_pru_minrt_check (gcc::context *);
  
  #endif /* RTX_CODE */
  
diff -Nrcpad gcc-16-20250921/gcc/config/riscv/riscv-protos.h gcc-16-20250928/gcc/config/riscv/riscv-protos.h
*** gcc-16-20250921/gcc/config/riscv/riscv-protos.h	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/riscv/riscv-protos.h	Sun Sep 28 22:33:04 2025
*************** extern bool
*** 840,845 ****
--- 840,847 ----
  riscv_option_valid_version_attribute_p (tree, tree, tree, int);
  extern bool
  riscv_process_target_version_attr (tree, location_t *);
+ extern bool
+ riscv_process_target_version_str (string_slice, location_t *);
  extern void
  riscv_override_options_internal (struct gcc_options *);
  extern void riscv_option_override (void);
diff -Nrcpad gcc-16-20250921/gcc/config/riscv/riscv-target-attr.cc gcc-16-20250928/gcc/config/riscv/riscv-target-attr.cc
*** gcc-16-20250921/gcc/config/riscv/riscv-target-attr.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/riscv/riscv-target-attr.cc	Sun Sep 28 22:33:04 2025
*************** num_occurrences_in_str (char c, char *st
*** 356,366 ****
     diagnostics against location *LOC, otherwise remain silent.  */
  
  bool
! riscv_process_target_attr (const char *args,
! 			   location_t *loc,
! 			   const struct riscv_attribute_info *attrs)
  {
!   size_t len = strlen (args);
  
    /* No need to emit warning or error on empty string here, generic code already
       handle this case.  */
--- 356,366 ----
     diagnostics against location *LOC, otherwise remain silent.  */
  
  bool
! riscv_process_target_str (string_slice args,
! 			  location_t *loc,
! 			  const struct riscv_attribute_info *attrs)
  {
!   size_t len = args.size ();
  
    /* No need to emit warning or error on empty string here, generic code already
       handle this case.  */
*************** riscv_process_target_attr (const char *a
*** 371,377 ****
  
    std::unique_ptr<char[]> buf (new char[len+1]);
    char *str_to_check = buf.get ();
!   strcpy (str_to_check, args);
  
    /* Used to catch empty spaces between semi-colons i.e.
       attribute ((target ("attr1;;attr2"))).  */
--- 371,377 ----
  
    std::unique_ptr<char[]> buf (new char[len+1]);
    char *str_to_check = buf.get ();
!   strncpy (str_to_check, args.begin (), args.size ());
  
    /* Used to catch empty spaces between semi-colons i.e.
       attribute ((target ("attr1;;attr2"))).  */
*************** riscv_process_target_attr (const char *a
*** 394,400 ****
    if (num_attrs != num_semicolons + 1)
      {
        if (loc)
! 	error_at (*loc, "malformed %<target(\"%s\")%> attribute", args);
        return false;
      }
  
--- 394,400 ----
    if (num_attrs != num_semicolons + 1)
      {
        if (loc)
! 	error_at (*loc, "malformed %<target(\"%B\")%> attribute", &args);
        return false;
      }
  
*************** riscv_process_target_attr (tree args,
*** 436,442 ****
        return false;
      }
  
!   return riscv_process_target_attr (TREE_STRING_POINTER (args), loc, attrs);
  }
  
  /* Implement TARGET_OPTION_VALID_ATTRIBUTE_P.
--- 436,442 ----
        return false;
      }
  
!   return riscv_process_target_str (TREE_STRING_POINTER (args), loc, attrs);
  }
  
  /* Implement TARGET_OPTION_VALID_ATTRIBUTE_P.
*************** riscv_process_target_version_attr (tree
*** 518,526 ****
    if (strcmp (str, "default") == 0)
      return true;
  
!   return riscv_process_target_attr (str, loc, riscv_target_version_attrs);
  }
  
  
  /* Implement TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P.  This is used to
     process attribute ((target_version ("..."))).  */
--- 518,535 ----
    if (strcmp (str, "default") == 0)
      return true;
  
!   return riscv_process_target_str (str, loc, riscv_target_version_attrs);
  }
  
+ /* Parse the version string in STR and update the global target options space.
+    If LOC is nonnull, report diagnostics against location *LOC, otherwise
+    remain silent.  */
+ 
+ bool
+ riscv_process_target_version_str (string_slice str, location_t *loc)
+ {
+   return riscv_process_target_str (str, loc, riscv_target_version_attrs);
+ }
  
  /* Implement TARGET_OPTION_VALID_VERSION_ATTRIBUTE_P.  This is used to
     process attribute ((target_version ("..."))).  */
diff -Nrcpad gcc-16-20250921/gcc/config/riscv/riscv.cc gcc-16-20250928/gcc/config/riscv/riscv.cc
*** gcc-16-20250921/gcc/config/riscv/riscv.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/riscv/riscv.cc	Sun Sep 28 22:33:04 2025
*************** riscv_c_mode_for_floating_type (enum tre
*** 14001,14034 ****
    return default_mode_for_floating_type (ti);
  }
  
! /* Parse the attribute arguments to target_version in DECL and modify
!    the feature mask and priority required to select those targets.
     If LOC is nonnull, report diagnostics against *LOC, otherwise
     remain silent.  */
  static void
! parse_features_for_version (tree decl,
  			    location_t *loc,
  			    struct riscv_feature_bits &res,
  			    int &priority)
  {
!   tree version_attr = lookup_attribute ("target_version",
! 					DECL_ATTRIBUTES (decl));
!   if (version_attr == NULL_TREE)
      {
        res.length = 0;
        priority = 0;
        return;
      }
  
-   const char *version_string = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE
- 						    (version_attr)));
-   gcc_assert (version_string != NULL);
-   if (strcmp (version_string, "default") == 0)
-     {
-       res.length = 0;
-       priority = 0;
-       return;
-     }
    struct cl_target_option cur_target;
    cl_target_option_save (&cur_target, &global_options,
  			 &global_options_set);
--- 14001,14024 ----
    return default_mode_for_floating_type (ti);
  }
  
! /* This parses the version string STR and modifies the feature mask and
!    priority required to select those targets.
     If LOC is nonnull, report diagnostics against *LOC, otherwise
     remain silent.  */
  static void
! parse_features_for_version (string_slice version_str,
  			    location_t *loc,
  			    struct riscv_feature_bits &res,
  			    int &priority)
  {
!   gcc_assert (version_str.is_valid ());
!   if (version_str == "default")
      {
        res.length = 0;
        priority = 0;
        return;
      }
  
    struct cl_target_option cur_target;
    cl_target_option_save (&cur_target, &global_options,
  			 &global_options_set);
*************** parse_features_for_version (tree decl,
*** 14038,14044 ****
    cl_target_option_restore (&global_options, &global_options_set,
  			    default_opts);
  
!   riscv_process_target_version_attr (TREE_VALUE (version_attr), loc);
  
    priority = global_options.x_riscv_fmv_priority;
    const char *arch_string = global_options.x_riscv_arch_string;
--- 14028,14034 ----
    cl_target_option_restore (&global_options, &global_options_set,
  			    default_opts);
  
!   riscv_process_target_version_str (version_str, loc);
  
    priority = global_options.x_riscv_fmv_priority;
    const char *arch_string = global_options.x_riscv_arch_string;
*************** compare_fmv_features (const struct riscv
*** 14090,14095 ****
--- 14080,14102 ----
    return 0;
  }
  
+ /* This function returns true if V1 and V2 specify the same function
+    version.  */
+ 
+ bool
+ riscv_same_function_versions (string_slice v1, string_slice v2)
+ {
+   struct riscv_feature_bits mask1, mask2;
+   int prio1, prio2;
+ 
+   /* Invalid features should have already been rejected by this point so
+      providing no location should be okay.  */
+   parse_features_for_version (v1, UNKNOWN_LOCATION, mask1, prio1);
+   parse_features_for_version (v2, UNKNOWN_LOCATION, mask2, prio2);
+ 
+   return compare_fmv_features (mask1, mask2, prio1, prio2) == 0;
+ }
+ 
  /* Compare priorities of two version decls.  Return:
       1: mask1 is higher priority
      -1: mask2 is higher priority
*************** riscv_compare_version_priority (tree dec
*** 14100,14123 ****
    struct riscv_feature_bits mask1, mask2;
    int prio1, prio2;
  
!   parse_features_for_version (decl1, nullptr, mask1, prio1);
!   parse_features_for_version (decl2, nullptr, mask2, prio2);
  
    return compare_fmv_features (mask1, mask2, prio1, prio2);
  }
  
! /* This function returns true if FN1 and FN2 are versions of the same function,
!    that is, the target_version attributes of the function decls are different.
!    This assumes that FN1 and FN2 have the same signature.  */
  
  bool
! riscv_common_function_versions (tree fn1, tree fn2)
  {
!   if (TREE_CODE (fn1) != FUNCTION_DECL
!       || TREE_CODE (fn2) != FUNCTION_DECL)
!     return false;
  
!   return riscv_compare_version_priority (fn1, fn2) != 0;
  }
  
  /* Implement TARGET_MANGLE_DECL_ASSEMBLER_NAME, to add function multiversioning
--- 14107,14143 ----
    struct riscv_feature_bits mask1, mask2;
    int prio1, prio2;
  
!   string_slice v1 = get_target_version (decl1);
!   string_slice v2 = get_target_version (decl2);
! 
!   if (!v1.is_valid ())
!     v1 = "default";
!   if (!v2.is_valid ())
!     v2 = "default";
! 
!   parse_features_for_version (v1, nullptr, mask1, prio1);
!   parse_features_for_version (v2, nullptr, mask2, prio2);
  
    return compare_fmv_features (mask1, mask2, prio1, prio2);
  }
  
! /* Checks if the function version specifying string STR parses correctly.
!    If it is an invalid string, currently emits a diagnostic at LOC.
!    Always returns true.  */
  
  bool
! riscv_check_target_clone_version (string_slice str, location_t *loc_p)
  {
!   struct riscv_feature_bits mask;
!   int prio;
  
!   /* Currently it is not possible to parse without emitting errors on failure
!      so do not reject on a failed parse, as this would then emit two
!      diagnostics.  Instead let errors be emitted which will halt
!      compilation.  */
!   parse_features_for_version (str, loc_p, mask, prio);
! 
!   return true;
  }
  
  /* Implement TARGET_MANGLE_DECL_ASSEMBLER_NAME, to add function multiversioning
*************** tree
*** 14127,14158 ****
  riscv_mangle_decl_assembler_name (tree decl, tree id)
  {
    /* For function version, add the target suffix to the assembler name.  */
!   if (TREE_CODE (decl) == FUNCTION_DECL
!       && DECL_FUNCTION_VERSIONED (decl))
      {
!       std::string name = IDENTIFIER_POINTER (id) + std::string (".");
!       tree target_attr = lookup_attribute ("target_version",
! 					   DECL_ATTRIBUTES (decl));
! 
!       if (target_attr == NULL_TREE)
  	{
! 	  name += "default";
! 	  return get_identifier (name.c_str ());
! 	}
  
!       const char *version_string = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE
! 							(target_attr)));
  
!       /* Replace non-alphanumeric characters with underscores as the suffix.  */
!       for (const char *c = version_string; *c; c++)
! 	name += ISALNUM (*c) == 0 ? '_' : *c;
  
!       if (DECL_ASSEMBLER_NAME_SET_P (decl))
! 	SET_DECL_RTL (decl, NULL);
  
!       id = get_identifier (name.c_str ());
      }
- 
    return id;
  }
  
--- 14147,14177 ----
  riscv_mangle_decl_assembler_name (tree decl, tree id)
  {
    /* For function version, add the target suffix to the assembler name.  */
!   if (TREE_CODE (decl) == FUNCTION_DECL)
      {
!       cgraph_node *node = cgraph_node::get (decl);
!       if (node && node->dispatcher_resolver_function)
! 	return clone_identifier (id, "resolver");
!       else if (DECL_FUNCTION_VERSIONED (decl))
  	{
! 	  tree target_attr
! 	    = lookup_attribute ("target_version", DECL_ATTRIBUTES (decl));
  
! 	  if (target_attr == NULL_TREE)
! 	    return clone_identifier (id, "default");
  
! 	  const char *version_string
! 	    = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (target_attr)));
  
! 	  /* Replace non-alphanumeric characters with underscores as the suffix.
! 	   */
! 	  std::string suffix = "";
! 	  for (const char *c = version_string; *c; c++)
! 	    suffix += ISALNUM (*c) == 0 ? '_' : *c;
  
! 	  id = clone_identifier (id, suffix.c_str ());
! 	}
      }
    return id;
  }
  
*************** dispatch_function_versions (tree dispatc
*** 14403,14409 ****
        struct function_version_info version_info;
        version_info.version_decl = version_decl;
        // Get attribute string, parse it and find the right features.
!       parse_features_for_version (version_decl,
  				  &DECL_SOURCE_LOCATION (version_decl),
  				  version_info.features,
  				  version_info.prio);
--- 14422,14431 ----
        struct function_version_info version_info;
        version_info.version_decl = version_decl;
        // Get attribute string, parse it and find the right features.
!       string_slice v = get_target_version (version_decl);
!       if (!v.is_valid ())
! 	v = "default";
!       parse_features_for_version (v,
  				  &DECL_SOURCE_LOCATION (version_decl),
  				  version_info.features,
  				  version_info.prio);
*************** dispatch_function_versions (tree dispatc
*** 14434,14455 ****
    return 0;
  }
  
- /* Return an identifier for the base assembler name of a versioned function.
-    This is computed by taking the default version's assembler name, and
-    stripping off the ".default" suffix if it's already been appended.  */
- 
- static tree
- get_suffixed_assembler_name (tree default_decl, const char *suffix)
- {
-   std::string name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (default_decl));
- 
-   auto size = name.size ();
-   if (size >= 8 && name.compare (size - 8, 8, ".default") == 0)
-     name.resize (size - 8);
-   name += suffix;
-   return get_identifier (name.c_str ());
- }
- 
  /* Make the resolver function decl to dispatch the versions of
     a multi-versioned function,  DEFAULT_DECL.  IFUNC_ALIAS_DECL is
     ifunc alias that will point to the created resolver.  Create an
--- 14456,14461 ----
*************** make_resolver_func (const tree default_d
*** 14463,14472 ****
  {
    tree decl, type, t;
  
!   /* Create resolver function name based on default_decl.  We need to remove an
!      existing ".default" suffix if this has already been appended.  */
!   tree decl_name = get_suffixed_assembler_name (default_decl, ".resolver");
!   const char *resolver_name = IDENTIFIER_POINTER (decl_name);
  
    /* The resolver function should have signature
       (void *) resolver (uint64_t, void *) */
--- 14469,14476 ----
  {
    tree decl, type, t;
  
!   cgraph_node *node = cgraph_node::get (default_decl);
!   gcc_assert (node && node->function_version ());
  
    /* The resolver function should have signature
       (void *) resolver (uint64_t, void *) */
*************** make_resolver_func (const tree default_d
*** 14475,14484 ****
  				   ptr_type_node,
  				   NULL_TREE);
  
!   decl = build_fn_decl (resolver_name, type);
!   SET_DECL_ASSEMBLER_NAME (decl, decl_name);
  
-   DECL_NAME (decl) = decl_name;
    TREE_USED (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
--- 14479,14499 ----
  				   ptr_type_node,
  				   NULL_TREE);
  
!   decl = build_fn_decl (IDENTIFIER_POINTER (DECL_NAME (default_decl)), type);
! 
!   /* Set the assembler name to prevent cgraph_node attempting to mangle.  */
!   SET_DECL_ASSEMBLER_NAME (decl, DECL_ASSEMBLER_NAME (default_decl));
! 
!   cgraph_node *resolver_node = cgraph_node::get_create (decl);
!   resolver_node->dispatcher_resolver_function = true;
! 
!   if (node->is_target_clone)
!     resolver_node->is_target_clone = true;
! 
!   tree id = riscv_mangle_decl_assembler_name
!     (decl, node->function_version ()->assembler_name);
!   symtab->change_decl_assembler_name (decl, id);
  
    TREE_USED (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
*************** make_resolver_func (const tree default_d
*** 14543,14549 ****
    gcc_assert (ifunc_alias_decl != NULL);
    /* Mark ifunc_alias_decl as "ifunc" with resolver as resolver_name.  */
    DECL_ATTRIBUTES (ifunc_alias_decl)
!     = make_attribute ("ifunc", resolver_name,
  		      DECL_ATTRIBUTES (ifunc_alias_decl));
  
    /* Create the alias for dispatch to resolver here.  */
--- 14558,14564 ----
    gcc_assert (ifunc_alias_decl != NULL);
    /* Mark ifunc_alias_decl as "ifunc" with resolver as resolver_name.  */
    DECL_ATTRIBUTES (ifunc_alias_decl)
!     = make_attribute ("ifunc", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
  		      DECL_ATTRIBUTES (ifunc_alias_decl));
  
    /* Create the alias for dispatch to resolver here.  */
*************** riscv_generate_version_dispatcher_body (
*** 14608,14694 ****
    cgraph_edge::rebuild_edges ();
    pop_cfun ();
  
-   /* Fix up symbol names.  First we need to obtain the base name, which may
-      have already been mangled.  */
-   tree base_name = get_suffixed_assembler_name (default_ver_decl, "");
- 
-   /* We need to redo the version mangling on the non-default versions for the
-      target_clones case.  Redoing the mangling for the target_version case is
-      redundant but does no harm.  We need to skip the default version, because
-      expand_clones will append ".default" later; fortunately that suffix is the
-      one we want anyway.  */
-   for (versn_info = node_version_info->next->next; versn_info;
-        versn_info = versn_info->next)
-     {
-       tree version_decl = versn_info->this_node->decl;
-       tree name = riscv_mangle_decl_assembler_name (version_decl,
- 						    base_name);
-       symtab->change_decl_assembler_name (version_decl, name);
-     }
- 
-   /* We also need to use the base name for the ifunc declaration.  */
-   symtab->change_decl_assembler_name (node->decl, base_name);
- 
    return resolver_decl;
  }
  
! /* Make a dispatcher declaration for the multi-versioned function DECL.
!    Calls to DECL function will be replaced with calls to the dispatcher
!    by the front-end.  Returns the decl of the dispatcher function.  */
  
  tree
  riscv_get_function_versions_dispatcher (void *decl)
  {
!   tree fn = (tree) decl;
!   struct cgraph_node *node = NULL;
!   struct cgraph_node *default_node = NULL;
!   struct cgraph_function_version_info *node_v = NULL;
! 
    tree dispatch_decl = NULL;
  
!   struct cgraph_function_version_info *default_version_info = NULL;
! 
!   gcc_assert (fn != NULL && DECL_FUNCTION_VERSIONED (fn));
! 
!   node = cgraph_node::get (fn);
!   gcc_assert (node != NULL);
! 
!   node_v = node->function_version ();
!   gcc_assert (node_v != NULL);
  
!   if (node_v->dispatcher_resolver != NULL)
!     return node_v->dispatcher_resolver;
  
!   /* The default node is always the beginning of the chain.  */
!   default_version_info = node_v;
!   while (default_version_info->prev)
!     default_version_info = default_version_info->prev;
!   default_node = default_version_info->this_node;
  
!   /* If there is no default node, just return NULL.  */
!   if (!is_function_default_version (default_node->decl))
!     return NULL;
  
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
-       struct cgraph_node *dispatcher_node = NULL;
-       struct cgraph_function_version_info *dispatcher_version_info = NULL;
  
        /* Right now, the dispatching is done via ifunc.  */
        dispatch_decl = make_dispatcher_decl (default_node->decl);
-       TREE_NOTHROW (dispatch_decl) = TREE_NOTHROW (fn);
- 
-       dispatcher_node = cgraph_node::get_create (dispatch_decl);
-       gcc_assert (dispatcher_node != NULL);
-       dispatcher_node->dispatcher_function = 1;
-       dispatcher_version_info
- 	= dispatcher_node->insert_new_function_version ();
-       dispatcher_version_info->next = default_version_info;
-       dispatcher_node->definition = 1;
  
        /* Set the dispatcher for all the versions.  */
!       it_v = default_version_info;
        while (it_v != NULL)
  	{
  	  it_v->dispatcher_resolver = dispatch_decl;
--- 14623,14664 ----
    cgraph_edge::rebuild_edges ();
    pop_cfun ();
  
    return resolver_decl;
  }
  
! /* Make a dispatcher declaration for the multi-versioned default function DECL.
!    Calls to DECL function will be replaced with calls to the dispatcher by
!    the target_clones pass.  Returns the decl of the dispatcher function.  */
  
  tree
  riscv_get_function_versions_dispatcher (void *decl)
  {
!   tree default_decl = (tree) decl;
    tree dispatch_decl = NULL;
  
!   gcc_assert (decl != NULL
! 	      && DECL_FUNCTION_VERSIONED (default_decl)
! 	      && is_function_default_version (default_decl));
  
!   struct cgraph_node *default_node = cgraph_node::get (default_decl);
!   gcc_assert (default_node != NULL);
  
!   struct cgraph_function_version_info *default_node_v
!     = default_node->function_version ();
!   gcc_assert (default_node_v != NULL && !default_node_v->prev);
  
!   if (default_node_v->dispatcher_resolver != NULL)
!     return default_node_v->dispatcher_resolver;
  
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
  
        /* Right now, the dispatching is done via ifunc.  */
        dispatch_decl = make_dispatcher_decl (default_node->decl);
  
        /* Set the dispatcher for all the versions.  */
!       it_v = default_node_v;
        while (it_v != NULL)
  	{
  	  it_v->dispatcher_resolver = dispatch_decl;
*************** riscv_prefetch_offset_address_p (rtx x,
*** 16006,16013 ****
  #undef TARGET_COMPARE_VERSION_PRIORITY
  #define TARGET_COMPARE_VERSION_PRIORITY riscv_compare_version_priority
  
! #undef TARGET_OPTION_FUNCTION_VERSIONS
! #define TARGET_OPTION_FUNCTION_VERSIONS riscv_common_function_versions
  
  #undef TARGET_MANGLE_DECL_ASSEMBLER_NAME
  #define TARGET_MANGLE_DECL_ASSEMBLER_NAME riscv_mangle_decl_assembler_name
--- 15976,15986 ----
  #undef TARGET_COMPARE_VERSION_PRIORITY
  #define TARGET_COMPARE_VERSION_PRIORITY riscv_compare_version_priority
  
! #undef TARGET_CHECK_TARGET_CLONE_VERSION
! #define TARGET_CHECK_TARGET_CLONE_VERSION riscv_check_target_clone_version
! 
! #undef TARGET_OPTION_SAME_FUNCTION_VERSIONS
! #define TARGET_OPTION_SAME_FUNCTION_VERSIONS riscv_same_function_versions
  
  #undef TARGET_MANGLE_DECL_ASSEMBLER_NAME
  #define TARGET_MANGLE_DECL_ASSEMBLER_NAME riscv_mangle_decl_assembler_name
diff -Nrcpad gcc-16-20250921/gcc/config/riscv/riscv.md gcc-16-20250928/gcc/config/riscv/riscv.md
*** gcc-16-20250921/gcc/config/riscv/riscv.md	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/riscv/riscv.md	Sun Sep 28 22:33:04 2025
***************
*** 4614,4619 ****
--- 4614,4639 ----
      FAIL;
  })
  
+ ; Split (A<<1) | (A>=0) into a rotate + xor. Using two’s-complement identities:
+ ; (A>=0) == ((A >> (W-1)) ^ 1) and (A<<1) | (A>>(W-1)) == ROL1 (A), so the whole
+ ; expression equals ROL1 (A) ^ 1.
+ (define_split
+   [(set (match_operand:X 0 "register_operand")
+      (ior:X
+        (ashift:X (match_operand:X 1 "register_operand")
+ 		  (const_int 1))
+ 		(ge:X (match_dup 1) (const_int 0))))]
+   "TARGET_ZBB"
+   [(set (match_dup 0)
+        (rotatert:X (match_dup 1) (match_operand 2 "const_int_operand")))
+    (set (match_dup 0)
+        (xor:X (match_dup 0) (const_int 1)))]
+   {
+     HOST_WIDE_INT rotval;
+     rotval = GET_MODE_BITSIZE (GET_MODE (operands[1])).to_constant () - 1;
+     operands[2] = GEN_INT (rotval);
+   })
+ 
  (define_insn "*large_load_address"
    [(set (match_operand:DI 0 "register_operand" "=r")
          (mem:DI (match_operand 1 "pcrel_symbol_operand" "")))]
diff -Nrcpad gcc-16-20250921/gcc/config/riscv/tt-ascalon-d8.md gcc-16-20250928/gcc/config/riscv/tt-ascalon-d8.md
*** gcc-16-20250921/gcc/config/riscv/tt-ascalon-d8.md	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/riscv/tt-ascalon-d8.md	Sun Sep 28 22:33:05 2025
***************
*** 282,287 ****
--- 282,293 ----
    "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
  
  ;; Vector integer division
+ (define_insn_reservation "tt_ascalon_d8_vec_idiv_byte" 16
+   (and (eq_attr "tune" "tt_ascalon_d8")
+        (eq_attr "type" "vidiv")
+        (eq_attr "sew" "8"))
+   "tt_ascalon_d8_decode,(tt_ascalon_d8_vec0*3 | tt_ascalon_d8_vec1*3)")
+ 
  (define_insn_reservation "tt_ascalon_d8_vec_idiv_half" 16
    (and (eq_attr "tune" "tt_ascalon_d8")
         (eq_attr "type" "vidiv")
diff -Nrcpad gcc-16-20250921/gcc/config/rs6000/rs6000.cc gcc-16-20250928/gcc/config/rs6000/rs6000.cc
*** gcc-16-20250921/gcc/config/rs6000/rs6000.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/config/rs6000/rs6000.cc	Sun Sep 28 22:33:05 2025
***************
*** 87,92 ****
--- 87,93 ----
  extern tree rs6000_builtin_mask_for_load (void);
  extern tree rs6000_builtin_md_vectorized_function (tree, tree, tree);
  extern tree rs6000_builtin_reciprocal (tree);
+ static tree rs6000_mangle_decl_assembler_name (tree, tree);
  
    /* Set -mabi=ieeelongdouble on some old targets.  In the future, power server
       systems will also set long double to be IEEE 128-bit.  AIX and Darwin
*************** static const scoped_attribute_specs *con
*** 1729,1737 ****
  #define TARGET_GET_FUNCTION_VERSIONS_DISPATCHER				\
    rs6000_get_function_versions_dispatcher
  
- #undef TARGET_OPTION_FUNCTION_VERSIONS
- #define TARGET_OPTION_FUNCTION_VERSIONS common_function_versions
- 
  #undef TARGET_HARD_REGNO_NREGS
  #define TARGET_HARD_REGNO_NREGS rs6000_hard_regno_nregs_hook
  #undef TARGET_HARD_REGNO_MODE_OK
--- 1730,1735 ----
*************** rs6000_get_function_versions_dispatcher
*** 25366,25385 ****
    if (targetm.has_ifunc_p ())
      {
        struct cgraph_function_version_info *it_v = NULL;
-       struct cgraph_node *dispatcher_node = NULL;
-       struct cgraph_function_version_info *dispatcher_version_info = NULL;
  
        /* Right now, the dispatching is done via ifunc.  */
        dispatch_decl = make_dispatcher_decl (default_node->decl);
-       TREE_NOTHROW (dispatch_decl) = TREE_NOTHROW (fn);
- 
-       dispatcher_node = cgraph_node::get_create (dispatch_decl);
-       gcc_assert (dispatcher_node != NULL);
-       dispatcher_node->dispatcher_function = 1;
-       dispatcher_version_info
- 	= dispatcher_node->insert_new_function_version ();
-       dispatcher_version_info->next = default_version_info;
-       dispatcher_node->definition = 1;
  
        /* Set the dispatcher for all the versions.  */
        it_v = default_version_info;
--- 25364,25372 ----
*************** make_resolver_func (const tree default_d
*** 25412,25424 ****
  {
    /* Make the resolver function static.  The resolver function returns
       void *.  */
-   tree decl_name = clone_function_name (default_decl, "resolver");
-   const char *resolver_name = IDENTIFIER_POINTER (decl_name);
    tree type = build_function_type_list (ptr_type_node, NULL_TREE);
!   tree decl = build_fn_decl (resolver_name, type);
!   SET_DECL_ASSEMBLER_NAME (decl, decl_name);
  
!   DECL_NAME (decl) = decl_name;
    TREE_USED (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 0;
--- 25399,25422 ----
  {
    /* Make the resolver function static.  The resolver function returns
       void *.  */
    tree type = build_function_type_list (ptr_type_node, NULL_TREE);
!   tree decl = build_fn_decl (IDENTIFIER_POINTER (DECL_NAME (default_decl)),
! 			     type);
  
!   cgraph_node *node = cgraph_node::get (default_decl);
!   gcc_assert (node && node->function_version ());
! 
!   /* Set the assembler name to prevent cgraph_node attempting to mangle.  */
!   SET_DECL_ASSEMBLER_NAME (decl, DECL_ASSEMBLER_NAME (default_decl));
! 
!   cgraph_node *resolver_node = cgraph_node::get_create (decl);
!   resolver_node->dispatcher_resolver_function = true;
! 
!   tree id = rs6000_mangle_decl_assembler_name
!     (decl, node->function_version ()->assembler_name);
!   symtab->change_decl_assembler_name (decl, id);
! 
!   DECL_NAME (decl) = DECL_NAME (default_decl);
    TREE_USED (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 0;
*************** make_resolver_func (const tree default_d
*** 25464,25470 ****
  
    /* Mark dispatch_decl as "ifunc" with resolver as resolver_name.  */
    DECL_ATTRIBUTES (dispatch_decl)
!     = make_attribute ("ifunc", resolver_name, DECL_ATTRIBUTES (dispatch_decl));
  
    cgraph_node::create_same_body_alias (dispatch_decl, decl);
  
--- 25462,25469 ----
  
    /* Mark dispatch_decl as "ifunc" with resolver as resolver_name.  */
    DECL_ATTRIBUTES (dispatch_decl)
!     = make_attribute ("ifunc", IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)),
! 		      DECL_ATTRIBUTES (dispatch_decl));
  
    cgraph_node::create_same_body_alias (dispatch_decl, decl);
  
*************** complex_divide_builtin_code (machine_mod
*** 28507,28512 ****
--- 28506,28549 ----
    return (built_in_function) func;
  }
  
+ /* This function changes the assembler name for functions that are
+    versions.  If DECL is a function version and has a "target"
+    attribute, it appends the attribute string to its assembler name.  */
+ 
+ static tree
+ rs6000_mangle_function_version_assembler_name (tree decl, tree id)
+ {
+   tree version_attr;
+   const char *version_string;
+   char *attr_str;
+ 
+   if (DECL_DECLARED_INLINE_P (decl)
+       && lookup_attribute ("gnu_inline", DECL_ATTRIBUTES (decl)))
+     error_at (DECL_SOURCE_LOCATION (decl),
+ 	      "function versions cannot be marked as %<gnu_inline%>,"
+ 	      " bodies have to be generated");
+ 
+   if (DECL_VIRTUAL_P (decl) || DECL_VINDEX (decl))
+     sorry ("virtual function multiversioning not supported");
+ 
+   version_attr = lookup_attribute ("target", DECL_ATTRIBUTES (decl));
+ 
+   /* target attribute string cannot be NULL.  */
+   gcc_assert (version_attr != NULL_TREE);
+ 
+   version_string = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (version_attr)));
+ 
+   if (strcmp (version_string, "default") == 0)
+     return clone_identifier (id, "default");
+ 
+   attr_str = sorted_attr_string (TREE_VALUE (version_attr));
+ 
+   tree ret = clone_identifier (id, attr_str, true);
+ 
+   XDELETEVEC (attr_str);
+   return ret;
+ }
+ 
  /* On 64-bit Linux and Freebsd systems, possibly switch the long double library
     function names from <foo>l to <foo>f128 if the default long double type is
     IEEE 128-bit.  Typically, with the C and C++ languages, the standard math.h
*************** rs6000_mangle_decl_assembler_name (tree
*** 28692,28697 ****
--- 28729,28742 ----
  	}
      }
  
+   if (TREE_CODE (decl) == FUNCTION_DECL)
+     {
+       cgraph_node *node = cgraph_node::get (decl);
+       if (node && node->dispatcher_resolver_function)
+ 	id = clone_identifier (id, "resolver");
+       else if (DECL_FUNCTION_VERSIONED (decl))
+ 	id = rs6000_mangle_function_version_assembler_name (decl, id);
+     }
    return id;
  }
  
diff -Nrcpad gcc-16-20250921/gcc/config.gcc gcc-16-20250928/gcc/config.gcc
*** gcc-16-20250921/gcc/config.gcc	Sun Sep 21 22:32:36 2025
--- gcc-16-20250928/gcc/config.gcc	Sun Sep 28 22:33:03 2025
*************** aarch64*-*-*)
*** 351,357 ****
  	c_target_objs="aarch64-c.o"
  	cxx_target_objs="aarch64-c.o"
  	d_target_objs="aarch64-d.o"
! 	extra_objs="aarch64-builtins.o aarch-common.o aarch64-elf-metadata.o aarch64-sve-builtins.o aarch64-sve-builtins-shapes.o aarch64-sve-builtins-base.o aarch64-sve-builtins-sve2.o aarch64-sve-builtins-sme.o cortex-a57-fma-steering.o aarch64-speculation.o aarch-bti-insert.o aarch64-early-ra.o aarch64-ldp-fusion.o"
  	target_gtfiles="\$(srcdir)/config/aarch64/aarch64-protos.h \$(srcdir)/config/aarch64/aarch64-builtins.h \$(srcdir)/config/aarch64/aarch64-builtins.cc \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
  	target_has_targetm_common=yes
  	;;
--- 351,357 ----
  	c_target_objs="aarch64-c.o"
  	cxx_target_objs="aarch64-c.o"
  	d_target_objs="aarch64-d.o"
! 	extra_objs="aarch64-builtins.o aarch-common.o aarch64-elf-metadata.o aarch64-sve-builtins.o aarch64-sve-builtins-shapes.o aarch64-sve-builtins-base.o aarch64-sve-builtins-sve2.o aarch64-sve-builtins-sme.o cortex-a57-fma-steering.o aarch64-speculation.o aarch-bti-insert.o aarch64-early-ra.o aarch64-ldp-fusion.o aarch64-sched-dispatch.o"
  	target_gtfiles="\$(srcdir)/config/aarch64/aarch64-protos.h \$(srcdir)/config/aarch64/aarch64-builtins.h \$(srcdir)/config/aarch64/aarch64-builtins.cc \$(srcdir)/config/aarch64/aarch64-sve-builtins.h \$(srcdir)/config/aarch64/aarch64-sve-builtins.cc"
  	target_has_targetm_common=yes
  	;;
diff -Nrcpad gcc-16-20250921/gcc/cp/ChangeLog gcc-16-20250928/gcc/cp/ChangeLog
*** gcc-16-20250921/gcc/cp/ChangeLog	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/ChangeLog	Sun Sep 28 22:33:05 2025
***************
*** 1,3 ****
--- 1,80 ----
+ 2025-09-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/112632
+ 	* pt.cc (convert_template_argument): Also force IMPLICIT_CONV_EXPR
+ 	if the argument is value-dependent.
+ 
+ 2025-09-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/122048
+ 	* pt.cc (tsubst_expr): Don't use a lambda current_class_ptr.
+ 
+ 2025-09-25  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122015
+ 	PR c++/122019
+ 	* module.cc (trees_in::install_entity): Remove incorrect
+ 	assertion.
+ 
+ 2025-09-24  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122019
+ 	* module.cc (trees_in::install_entity): Don't be affected by
+ 	global language linkage state.
+ 	(trees_in::is_matching_decl): Check mismatching language linkage
+ 	for variables too.
+ 	(module_may_redeclare): Report the correct module name for
+ 	partitions and implementation units.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* class.cc (resolve_address_of_overloaded_function): Updated to use
+ 	dijoint_versions_decls instead of common_function_version hook.
+ 	* decl.cc (decls_match): Refacture to use disjoint_version_decls and
+ 	to pass through conflicting_version argument.
+ 	(maybe_version_functions): Updated to use
+ 	disjoint_version_decls instead of common_function_version hook.
+ 	(duplicate_decls): Add logic to handle conflicting unmergable decls
+ 	and improve diagnostics for conflicting versions.
+ 	* decl2.cc (check_classfn): Updated to use
+ 	disjoint_version_decls instead of common_function_version hook.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* cxx-pretty-print.h (pp_cxx_function_target_version): New macro.
+ 	(pp_cxx_function_target_clones): Ditto.
+ 	(pp_cxx_maybe_whitespace): Ditto.
+ 	* error.cc (dump_function_decl): Add printing of target_clone and
+ 	target_version in decl diagnostics.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	PR target/118313
+ 	* call.cc (add_candidates): Change to not resolve non-default versions
+ 	in target_version semantics.
+ 	* class.cc (resolve_address_of_overloaded_function): Ditto.
+ 	* cp-gimplify.cc (cp_genericize_r): Change logic to not apply for
+ 	target_version semantics.
+ 	* decl.cc (maybe_mark_function_versioned): Remove static.
+ 	* cp-tree.h (maybe_mark_function_versioned): New function.
+ 	* decl2.cc (cplus_decl_attributes ): Change to mark and therefore
+ 	mangle all target_version decls in target_version semantics.
+ 	* typeck.cc (cp_build_function_call_vec): Add error for calling
+ 	unresolvable non-default node in target_version semantics.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* decl.cc (maybe_mark_function_versioned): Change to insert function version
+ 	and therefore record assembler name.
+ 
+ 2025-09-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122015
+ 	* cp-tree.h (make_auto_pack): Declare.
+ 	* lambda.cc (lambda_capture_field_type): Use make_auto_pack to
+ 	ensure TYPE_CANONICAL is set correctly.
+ 	* pt.cc (make_auto_pack): New function.
+ 
  2025-09-20  Patrick Palka  <ppalka@redhat.com>
  
  	PR c++/121981
diff -Nrcpad gcc-16-20250921/gcc/cp/call.cc gcc-16-20250928/gcc/cp/call.cc
*** gcc-16-20250921/gcc/cp/call.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/call.cc	Sun Sep 28 22:33:05 2025
*************** add_candidates (tree fns, tree first_arg
*** 6931,6936 ****
--- 6931,6946 ----
  	    continue;
  	}
  
+       /* Do not resolve any non-default function.  Only the default version
+ 	 is resolvable (for the target_version attribute semantics.)  */
+       if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
+ 	  && TREE_CODE (fn) == FUNCTION_DECL
+ 	  && !is_function_default_version (fn))
+ 	{
+ 	  add_ignored_candidate (candidates, fn);
+ 	  continue;
+ 	}
+ 
        if (TREE_CODE (fn) == TEMPLATE_DECL)
  	add_template_candidate (candidates,
  				fn,
diff -Nrcpad gcc-16-20250921/gcc/cp/class.cc gcc-16-20250928/gcc/cp/class.cc
*** gcc-16-20250921/gcc/cp/class.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/class.cc	Sun Sep 28 22:33:05 2025
*************** resolve_address_of_overloaded_function (
*** 8974,8979 ****
--- 8974,8986 ----
  	if (!constraints_satisfied_p (fn))
  	  continue;
  
+ 	/* For target_version semantics, never resolve a non-default
+ 	   version.  */
+ 	if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
+ 	    && TREE_CODE (fn) == FUNCTION_DECL
+ 	    && !is_function_default_version (fn))
+ 	  continue;
+ 
  	if (undeduced_auto_decl (fn))
  	  {
  	    /* Force instantiation to do return type deduction.  */
*************** resolve_address_of_overloaded_function (
*** 9120,9127 ****
  	 decls_match will return false as they are different.  */
        for (match = TREE_CHAIN (matches); match; match = TREE_CHAIN (match))
  	if (!decls_match (fn, TREE_PURPOSE (match))
! 	    && !targetm.target_option.function_versions
! 	       (fn, TREE_PURPOSE (match)))
            break;
  
        if (match)
--- 9127,9133 ----
  	 decls_match will return false as they are different.  */
        for (match = TREE_CHAIN (matches); match; match = TREE_CHAIN (match))
  	if (!decls_match (fn, TREE_PURPOSE (match))
! 	    && !disjoint_version_decls (fn, TREE_PURPOSE (match)))
            break;
  
        if (match)
*************** resolve_address_of_overloaded_function (
*** 9199,9206 ****
    /* If a pointer to a function that is multi-versioned is requested, the
       pointer to the dispatcher function is returned instead.  This works
       well because indirectly calling the function will dispatch the right
!      function version at run-time.  */
!   if (DECL_FUNCTION_VERSIONED (fn))
      {
        fn = get_function_version_dispatcher (fn);
        if (fn == NULL)
--- 9205,9214 ----
    /* If a pointer to a function that is multi-versioned is requested, the
       pointer to the dispatcher function is returned instead.  This works
       well because indirectly calling the function will dispatch the right
!      function version at run-time.
!      This is done at multiple_target.cc for target_version semantics.  */
! 
!   if (DECL_FUNCTION_VERSIONED (fn) && TARGET_HAS_FMV_TARGET_ATTRIBUTE)
      {
        fn = get_function_version_dispatcher (fn);
        if (fn == NULL)
diff -Nrcpad gcc-16-20250921/gcc/cp/cp-gimplify.cc gcc-16-20250928/gcc/cp/cp-gimplify.cc
*** gcc-16-20250921/gcc/cp/cp-gimplify.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/cp-gimplify.cc	Sun Sep 28 22:33:05 2025
*************** cp_genericize_r (tree *stmt_p, int *walk
*** 2166,2178 ****
  	 returns the function with the highest target priority, that is,
  	 the version that will checked for dispatching first.  If this
  	 version is inlinable, a direct call to this version can be made
! 	 otherwise the call should go through the dispatcher.  */
        {
  	tree fn = cp_get_callee_fndecl_nofold (stmt);
! 	if (fn && DECL_FUNCTION_VERSIONED (fn)
  	    && (current_function_decl == NULL
! 		|| !targetm.target_option.can_inline_p (current_function_decl,
! 							fn)))
  	  if (tree dis = get_function_version_dispatcher (fn))
  	    {
  	      mark_versions_used (dis);
--- 2166,2181 ----
  	 returns the function with the highest target priority, that is,
  	 the version that will checked for dispatching first.  If this
  	 version is inlinable, a direct call to this version can be made
! 	 otherwise the call should go through the dispatcher.
! 	 This is done at multiple_target.cc for target_version semantics.  */
        {
  	tree fn = cp_get_callee_fndecl_nofold (stmt);
! 	if (TARGET_HAS_FMV_TARGET_ATTRIBUTE
! 	    && fn
! 	    && DECL_FUNCTION_VERSIONED (fn)
  	    && (current_function_decl == NULL
! 		|| !targetm.target_option.can_inline_p
! 		      (current_function_decl, fn)))
  	  if (tree dis = get_function_version_dispatcher (fn))
  	    {
  	      mark_versions_used (dis);
diff -Nrcpad gcc-16-20250921/gcc/cp/cp-tree.h gcc-16-20250928/gcc/cp/cp-tree.h
*** gcc-16-20250921/gcc/cp/cp-tree.h	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/cp-tree.h	Sun Sep 28 22:33:05 2025
*************** extern tree build_explicit_specifier		(t
*** 7381,7386 ****
--- 7381,7387 ----
  extern bool use_eh_spec_block			(tree);
  extern void do_push_parm_decls			(tree, tree, tree *);
  extern tree do_aggregate_paren_init		(tree, tree);
+ extern void maybe_mark_function_versioned	(tree);
  
  /* in decl2.cc */
  extern void record_mangling			(tree, bool);
*************** extern tree make_constrained_auto		(tree
*** 7835,7840 ****
--- 7836,7842 ----
  extern tree make_constrained_decltype_auto	(tree, tree);
  extern tree make_template_placeholder		(tree);
  extern tree make_cast_auto			(void);
+ extern tree make_auto_pack			(void);
  extern bool template_placeholder_p		(tree);
  extern bool ctad_template_p			(tree);
  extern bool unparenthesized_id_or_class_member_access_p (tree);
diff -Nrcpad gcc-16-20250921/gcc/cp/cxx-pretty-print.h gcc-16-20250928/gcc/cp/cxx-pretty-print.h
*** gcc-16-20250921/gcc/cp/cxx-pretty-print.h	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/cxx-pretty-print.h	Sun Sep 28 22:33:05 2025
*************** public:
*** 81,88 ****
--- 81,93 ----
  
  #define pp_cxx_ws_string(PP, I)		pp_c_ws_string (PP, I)
  #define pp_cxx_identifier(PP, I)	pp_c_identifier (PP, I)
+ #define pp_cxx_maybe_whitespace(PP)	pp_c_maybe_whitespace (PP)
  #define pp_cxx_tree_identifier(PP, T) \
    pp_c_tree_identifier (PP, T)
+ #define pp_cxx_function_target_version(PP, T) \
+   pp_c_function_target_version (PP, T)
+ #define pp_cxx_function_target_clones(PP, T) \
+   pp_c_function_target_clones (PP, T)
  
  void pp_cxx_begin_template_argument_list (cxx_pretty_printer *);
  void pp_cxx_end_template_argument_list (cxx_pretty_printer *);
diff -Nrcpad gcc-16-20250921/gcc/cp/decl.cc gcc-16-20250928/gcc/cp/decl.cc
*** gcc-16-20250921/gcc/cp/decl.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/decl.cc	Sun Sep 28 22:33:05 2025
*************** decls_match (tree newdecl, tree olddecl,
*** 1212,1218 ****
        if (types_match
  	  && !DECL_EXTERN_C_P (newdecl)
  	  && !DECL_EXTERN_C_P (olddecl)
! 	  && targetm.target_option.function_versions (newdecl, olddecl))
  	{
  	  if (record_versions)
  	    maybe_version_functions (newdecl, olddecl);
--- 1212,1218 ----
        if (types_match
  	  && !DECL_EXTERN_C_P (newdecl)
  	  && !DECL_EXTERN_C_P (olddecl)
! 	  && disjoint_version_decls (newdecl, olddecl))
  	{
  	  if (record_versions)
  	    maybe_version_functions (newdecl, olddecl);
*************** decls_match (tree newdecl, tree olddecl,
*** 1268,1278 ****
  
  /* Mark DECL as versioned if it isn't already.  */
  
! static void
  maybe_mark_function_versioned (tree decl)
  {
    if (!DECL_FUNCTION_VERSIONED (decl))
      {
        DECL_FUNCTION_VERSIONED (decl) = 1;
        /* If DECL_ASSEMBLER_NAME has already been set, re-mangle
  	 to include the version marker.  */
--- 1268,1285 ----
  
  /* Mark DECL as versioned if it isn't already.  */
  
! void
  maybe_mark_function_versioned (tree decl)
  {
    if (!DECL_FUNCTION_VERSIONED (decl))
      {
+       /* We need to insert function version now to make sure the correct
+ 	 pre-mangled assembler name is recorded.  */
+       cgraph_node *node = cgraph_node::get_create (decl);
+ 
+       if (!node->function_version ())
+ 	node->insert_new_function_version ();
+ 
        DECL_FUNCTION_VERSIONED (decl) = 1;
        /* If DECL_ASSEMBLER_NAME has already been set, re-mangle
  	 to include the version marker.  */
*************** maybe_mark_function_versioned (tree decl
*** 1288,1294 ****
  bool
  maybe_version_functions (tree newdecl, tree olddecl)
  {
!   if (!targetm.target_option.function_versions (newdecl, olddecl))
      return false;
  
    maybe_mark_function_versioned (olddecl);
--- 1295,1301 ----
  bool
  maybe_version_functions (tree newdecl, tree olddecl)
  {
!   if (!disjoint_version_decls (newdecl, olddecl))
      return false;
  
    maybe_mark_function_versioned (olddecl);
*************** duplicate_decls (tree newdecl, tree oldd
*** 2100,2105 ****
--- 2107,2116 ----
        /* Leave it to update_binding to merge or report error.  */
        return NULL_TREE;
      }
+   /* Check if the two decls are non-mergeable versioned decls.  */
+   else if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
+ 	   && diagnose_versioned_decls (olddecl, newdecl))
+     return error_mark_node;
    else
      {
        const char *errmsg = redeclaration_error_message (newdecl, olddecl);
diff -Nrcpad gcc-16-20250921/gcc/cp/decl2.cc gcc-16-20250928/gcc/cp/decl2.cc
*** gcc-16-20250921/gcc/cp/decl2.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/decl2.cc	Sun Sep 28 22:33:05 2025
*************** check_classfn (tree ctype, tree function
*** 877,883 ****
        if (same_type_p (TREE_TYPE (TREE_TYPE (function)),
  		       TREE_TYPE (TREE_TYPE (fndecl)))
  	  && compparms (p1, p2)
! 	  && !targetm.target_option.function_versions (function, fndecl)
  	  && (!is_template
  	      || comp_template_parms (template_parms,
  				      DECL_TEMPLATE_PARMS (fndecl)))
--- 877,883 ----
        if (same_type_p (TREE_TYPE (TREE_TYPE (function)),
  		       TREE_TYPE (TREE_TYPE (fndecl)))
  	  && compparms (p1, p2)
! 	  && !disjoint_version_decls (function, fndecl)
  	  && (!is_template
  	      || comp_template_parms (template_parms,
  				      DECL_TEMPLATE_PARMS (fndecl)))
*************** cplus_decl_attributes (tree *decl, tree
*** 2026,2031 ****
--- 2026,2038 ----
  	    set_decl_tls_model (*decl, default_model);
  	}
      }
+ 
+   /* For target_version semantics, mark any annotated function as versioned
+      so that it gets mangled even when on its own in a TU.  */
+   if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
+       && TREE_CODE (*decl) == FUNCTION_DECL
+       && get_target_version (*decl).is_valid ())
+     maybe_mark_function_versioned (*decl);
  }
  
  /* Walks through the namespace- or function-scope anonymous union
diff -Nrcpad gcc-16-20250921/gcc/cp/error.cc gcc-16-20250928/gcc/cp/error.cc
*** gcc-16-20250921/gcc/cp/error.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/error.cc	Sun Sep 28 22:33:05 2025
*************** dump_function_decl (cxx_pretty_printer *
*** 2008,2013 ****
--- 2008,2021 ----
  
    dump_function_name (pp, t, dump_function_name_flags);
  
+   /* By default we need no padding here, but if we emit target_version or
+      target_clones then we need some.  */
+   pp->set_padding (pp_none);
+   pp_cxx_function_target_version (pp, t);
+   pp_cxx_maybe_whitespace (pp);
+   pp_cxx_function_target_clones (pp, t);
+   pp_cxx_maybe_whitespace (pp);
+ 
    if (!(flags & TFF_NO_FUNCTION_ARGUMENTS))
      {
        int const parm_flags
diff -Nrcpad gcc-16-20250921/gcc/cp/lambda.cc gcc-16-20250928/gcc/cp/lambda.cc
*** gcc-16-20250921/gcc/cp/lambda.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/lambda.cc	Sun Sep 28 22:33:05 2025
*************** lambda_capture_field_type (tree expr, bo
*** 220,237 ****
  
    if (explicit_init_p)
      {
-       tree auto_node = make_auto ();
- 
-       type = auto_node;
-       if (by_reference_p)
- 	/* Add the reference now, so deduction doesn't lose
- 	   outermost CV qualifiers of EXPR.  */
- 	type = build_reference_type (type);
        if (uses_parameter_packs (expr))
! 	/* Stick with 'auto' even if the type could be deduced.  */
! 	TEMPLATE_TYPE_PARAMETER_PACK (auto_node) = true;
        else
! 	type = do_auto_deduction (type, expr, auto_node);
      }
    else if (!type_deducible_expression_p (expr))
      {
--- 220,242 ----
  
    if (explicit_init_p)
      {
        if (uses_parameter_packs (expr))
! 	{
! 	  /* Stick with 'auto...' even if the type could be deduced.  */
! 	  type = make_auto_pack ();
! 	  if (by_reference_p)
! 	    type = build_reference_type (type);
! 	}
        else
! 	{
! 	  tree auto_node = make_auto ();
! 	  type = auto_node;
! 	  if (by_reference_p)
! 	    /* Add the reference now, so deduction doesn't lose
! 	       outermost CV qualifiers of EXPR.  */
! 	    type = build_reference_type (type);
! 	  type = do_auto_deduction (type, expr, auto_node);
! 	}
      }
    else if (!type_deducible_expression_p (expr))
      {
diff -Nrcpad gcc-16-20250921/gcc/cp/module.cc gcc-16-20250928/gcc/cp/module.cc
*** gcc-16-20250921/gcc/cp/module.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/module.cc	Sun Sep 28 22:33:05 2025
*************** trees_in::install_entity (tree decl)
*** 8144,8150 ****
    if (!DECL_LANG_SPECIFIC (not_tmpl)
        || !DECL_MODULE_ENTITY_P (not_tmpl))
      {
!       retrofit_lang_decl (not_tmpl);
        DECL_MODULE_ENTITY_P (not_tmpl) = true;
  
        /* Insert into the entity hash (it cannot already be there).  */
--- 8144,8156 ----
    if (!DECL_LANG_SPECIFIC (not_tmpl)
        || !DECL_MODULE_ENTITY_P (not_tmpl))
      {
!       /* We don't want to use retrofit_lang_decl directly so that we aren't
! 	 affected by the language state when we load in.  */
!       if (!DECL_LANG_SPECIFIC (not_tmpl))
! 	{
! 	  maybe_add_lang_decl_raw (not_tmpl, false);
! 	  SET_DECL_LANGUAGE (not_tmpl, lang_cplusplus);
! 	}
        DECL_MODULE_ENTITY_P (not_tmpl) = true;
  
        /* Insert into the entity hash (it cannot already be there).  */
*************** trees_in::is_matching_decl (tree existin
*** 12320,12326 ****
  
    // FIXME: do more precise errors at point of mismatch
    const char *mismatch_msg = nullptr;
!   if (TREE_CODE (d_inner) == FUNCTION_DECL)
      {
        tree e_ret = fndecl_declared_return_type (existing);
        tree d_ret = fndecl_declared_return_type (decl);
--- 12326,12340 ----
  
    // FIXME: do more precise errors at point of mismatch
    const char *mismatch_msg = nullptr;
! 
!   if (VAR_OR_FUNCTION_DECL_P (d_inner)
!       && DECL_EXTERN_C_P (d_inner) != DECL_EXTERN_C_P (e_inner))
!     {
!       mismatch_msg = G_("conflicting language linkage for imported "
! 			"declaration %#qD");
!       goto mismatch;
!     }
!   else if (TREE_CODE (d_inner) == FUNCTION_DECL)
      {
        tree e_ret = fndecl_declared_return_type (existing);
        tree d_ret = fndecl_declared_return_type (decl);
*************** trees_in::is_matching_decl (tree existin
*** 12337,12349 ****
        tree e_type = TREE_TYPE (e_inner);
        tree d_type = TREE_TYPE (d_inner);
  
-       if (DECL_EXTERN_C_P (d_inner) != DECL_EXTERN_C_P (e_inner))
- 	{
- 	  mismatch_msg = G_("conflicting language linkage for imported "
- 			    "declaration %#qD");
- 	  goto mismatch;
- 	}
- 
        for (tree e_args = TYPE_ARG_TYPES (e_type),
  	     d_args = TYPE_ARG_TYPES (d_type);
  	   e_args != d_args && (e_args || d_args);
--- 12351,12356 ----
*************** module_may_redeclare (tree olddecl, tree
*** 21151,21157 ****
      // FIXME: Should we be checking this in more places on the scope chain?
      return true;
  
!   module_state *old_mod = this_module ();
    module_state *new_mod = old_mod;
  
    tree old_origin = get_originating_module_decl (decl);
--- 21158,21164 ----
      // FIXME: Should we be checking this in more places on the scope chain?
      return true;
  
!   module_state *old_mod = get_primary (this_module ());
    module_state *new_mod = old_mod;
  
    tree old_origin = get_originating_module_decl (decl);
*************** module_may_redeclare (tree olddecl, tree
*** 21161,21167 ****
    if (DECL_LANG_SPECIFIC (old_inner) && DECL_MODULE_IMPORT_P (old_inner))
      {
        unsigned index = import_entity_index (old_origin);
!       old_mod = import_entity_module (index);
      }
  
    bool newdecl_attached_p = module_attach_p ();
--- 21168,21174 ----
    if (DECL_LANG_SPECIFIC (old_inner) && DECL_MODULE_IMPORT_P (old_inner))
      {
        unsigned index = import_entity_index (old_origin);
!       old_mod = get_primary (import_entity_module (index));
      }
  
    bool newdecl_attached_p = module_attach_p ();
*************** module_may_redeclare (tree olddecl, tree
*** 21174,21180 ****
        if (DECL_LANG_SPECIFIC (new_inner) && DECL_MODULE_IMPORT_P (new_inner))
  	{
  	  unsigned index = import_entity_index (new_origin);
! 	  new_mod = import_entity_module (index);
  	}
      }
  
--- 21181,21187 ----
        if (DECL_LANG_SPECIFIC (new_inner) && DECL_MODULE_IMPORT_P (new_inner))
  	{
  	  unsigned index = import_entity_index (new_origin);
! 	  new_mod = get_primary (import_entity_module (index));
  	}
      }
  
*************** module_may_redeclare (tree olddecl, tree
*** 21185,21192 ****
  	/* Both are GM entities, OK.  */
  	return true;
  
!       if (new_mod == old_mod
! 	  || (new_mod && get_primary (new_mod) == get_primary (old_mod)))
  	/* Both attached to same named module, OK.  */
  	return true;
      }
--- 21192,21198 ----
  	/* Both are GM entities, OK.  */
  	return true;
  
!       if (new_mod == old_mod)
  	/* Both attached to same named module, OK.  */
  	return true;
      }
diff -Nrcpad gcc-16-20250921/gcc/cp/pt.cc gcc-16-20250928/gcc/cp/pt.cc
*** gcc-16-20250921/gcc/cp/pt.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/pt.cc	Sun Sep 28 22:33:05 2025
*************** convert_template_argument (tree parm,
*** 8927,8934 ****
  	  && same_type_p (TREE_TYPE (orig_arg), t))
  	orig_arg = TREE_OPERAND (orig_arg, 0);
  
!       if (!type_dependent_expression_p (orig_arg)
! 	  && !uses_template_parms (t))
  	/* We used to call digest_init here.  However, digest_init
  	   will report errors, which we don't want when complain
  	   is zero.  More importantly, digest_init will try too
--- 8927,8935 ----
  	  && same_type_p (TREE_TYPE (orig_arg), t))
  	orig_arg = TREE_OPERAND (orig_arg, 0);
  
!       if (!uses_template_parms (t)
! 	  && !(force_conv ? uses_template_parms (orig_arg)
! 	       : type_dependent_expression_p (orig_arg)))
  	/* We used to call digest_init here.  However, digest_init
  	   will report errors, which we don't want when complain
  	   is zero.  More importantly, digest_init will try too
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 22330,22336 ****
  	  if (r == NULL_TREE && TREE_CODE (t) == PARM_DECL)
  	    {
  	      /* We get here for a use of 'this' in an NSDMI.  */
! 	      if (DECL_NAME (t) == this_identifier && current_class_ptr)
  		RETURN (current_class_ptr);
  
  	      /* Parameters of non-templates map to themselves (e.g. in
--- 22331,22338 ----
  	  if (r == NULL_TREE && TREE_CODE (t) == PARM_DECL)
  	    {
  	      /* We get here for a use of 'this' in an NSDMI.  */
! 	      if (DECL_NAME (t) == this_identifier && current_class_ptr
! 		  && !LAMBDA_TYPE_P (TREE_TYPE (TREE_TYPE (current_class_ptr))))
  		RETURN (current_class_ptr);
  
  	      /* Parameters of non-templates map to themselves (e.g. in
*************** make_constrained_decltype_auto (tree con
*** 30493,30498 ****
--- 30495,30512 ----
    return make_constrained_placeholder_type (type, con, args);
  }
  
+ /* Create an "auto..." type-specifier.  */
+ 
+ tree
+ make_auto_pack ()
+ {
+   tree type = make_auto_1 (auto_identifier, false);
+   TEMPLATE_TYPE_PARAMETER_PACK (type) = true;
+   /* Our canonical type depends on being a pack.  */
+   TYPE_CANONICAL (type) = canonical_type_parameter (type);
+   return type;
+ }
+ 
  /* Returns true if the placeholder type constraint T has any dependent
     (explicit) template arguments.  */
  
diff -Nrcpad gcc-16-20250921/gcc/cp/typeck.cc gcc-16-20250928/gcc/cp/typeck.cc
*** gcc-16-20250921/gcc/cp/typeck.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/cp/typeck.cc	Sun Sep 28 22:33:05 2025
*************** cp_build_function_call_vec (tree functio
*** 4495,4500 ****
--- 4495,4510 ----
  	return error_mark_node;
        fndecl = function;
  
+       /* For target_version semantics, the function set cannot be called
+ 	 if there is no default version in scope.  */
+       if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
+ 	   && !is_function_default_version (fndecl))
+ 	 {
+ 	   if (complain & tf_error)
+ 	    error ("no default version in scope");
+ 	   return error_mark_node;
+ 	 }
+ 
        /* Convert anything with function type to a pointer-to-function.  */
        if (DECL_MAIN_P (function))
  	{
diff -Nrcpad gcc-16-20250921/gcc/diagnostics/sarif-sink.cc gcc-16-20250928/gcc/diagnostics/sarif-sink.cc
*** gcc-16-20250921/gcc/diagnostics/sarif-sink.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/diagnostics/sarif-sink.cc	Sun Sep 28 22:33:05 2025
*************** along with GCC; see the file COPYING3.
*** 54,59 ****
--- 54,60 ----
  #include "demangle.h"
  #include "backtrace.h"
  #include "xml.h"
+ #include "intl.h"
  
  namespace diagnostics {
  
*************** private:
*** 948,953 ****
--- 949,956 ----
  				      int start_line,
  				      int end_line,
  				      const content_renderer *r) const;
+   std::unique_ptr<sarif_message>
+   make_message_describing_fix_it_hint (const fixit_hint &hint) const;
    std::unique_ptr<sarif_fix>
    make_fix_object (const rich_location &rich_loc);
    std::unique_ptr<sarif_artifact_change>
*************** maybe_make_artifact_content_object (cons
*** 3747,3752 ****
--- 3750,3814 ----
    return artifact_content_obj;
  }
  
+ /* Attempt to generate a "message" object describing a fix-it hint,
+    or null if there was a problem.  */
+ 
+ std::unique_ptr<sarif_message>
+ sarif_builder::
+ make_message_describing_fix_it_hint (const fixit_hint &hint) const
+ {
+   pretty_printer pp;
+   if (hint.insertion_p ())
+     pp_printf (&pp, G_("Insert %qs"), hint.get_string ());
+   else
+     {
+       /* Try to get prior content.  */
+       expanded_location start = expand_location (hint.get_start_loc ());
+       expanded_location next_loc = expand_location (hint.get_next_loc ());
+       if (start.file != next_loc.file)
+ 	return nullptr;
+       if (start.line != next_loc.line)
+ 	return nullptr;
+       if (start.column == 0)
+ 	return nullptr;
+       if (next_loc.column == 0)
+ 	return nullptr;
+ 
+       const int start_offset = start.column - 1;
+       const int next_offset = next_loc.column - 1;
+       if (next_offset <= start_offset)
+ 	return nullptr;
+ 
+       size_t victim_len = next_offset - start_offset;
+ 
+       char_span existing_line = get_context ()
+ 	.get_file_cache ()
+ 	.get_source_line (start.file, start.line);
+       if (!existing_line)
+ 	return nullptr;
+ 
+       label_text existing_text
+ 	= label_text::take (existing_line.subspan (start_offset,
+ 						   victim_len).xstrdup ());
+ 
+       if (hint.deletion_p ())
+ 	{
+ 	  // Removal
+ 	  pp_printf (&pp, G_("Delete %qs"),
+ 		     existing_text.get ());
+ 	}
+       else
+ 	{
+ 	  // Replacement
+ 	  gcc_assert (hint.replacement_p ());
+ 	  pp_printf (&pp, G_("Replace %qs with %qs"),
+ 		     existing_text.get (),
+ 		     hint.get_string ());
+ 	}
+     }
+   return make_message_object (pp_formatted_text (&pp));
+ }
+ 
  /* Make a "fix" object (SARIF v2.1.0 section 3.55) for RICHLOC.  */
  
  std::unique_ptr<sarif_fix>
*************** sarif_builder::make_fix_object (const ri
*** 3762,3767 ****
--- 3824,3841 ----
    fix_obj->set<json::array> ("artifactChanges",
  			     std::move (artifact_change_arr));
  
+   // 3.55.2 "description" property
+   /* Attempt to generate a description.  We can only do this
+      if there was a single hint.  */
+   if (richloc.get_num_fixit_hints () == 1)
+     {
+       const fixit_hint *hint = richloc.get_fixit_hint (0);
+       gcc_assert (hint);
+       if (auto desc_msg = make_message_describing_fix_it_hint (*hint))
+ 	fix_obj->set<sarif_message> ("description",
+ 				     std::move (desc_msg));
+     }
+ 
    return fix_obj;
  }
  
diff -Nrcpad gcc-16-20250921/gcc/doc/extend.texi gcc-16-20250928/gcc/doc/extend.texi
*** gcc-16-20250921/gcc/doc/extend.texi	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/doc/extend.texi	Sun Sep 28 22:33:05 2025
*************** tester (int len; char data[len][len], in
*** 670,685 ****
  @end smallexample
  
  @cindex parameter forward declaration
! The @samp{int len} before the semicolon is a @dfn{parameter forward
! declaration}, and it serves the purpose of making the name @code{len}
! known when the declaration of @code{data} is parsed.
  
! You can write any number of such parameter forward declarations in the
! parameter list.  They can be separated by commas or semicolons, but the
! last one must end with a semicolon, which is followed by the ``real''
! parameter declarations.  Each forward declaration must match a ``real''
! declaration in parameter name and data type.  ISO C99 does not support
! parameter forward declarations.
  
  @node Zero Length
  @subsection Arrays of Length Zero
--- 670,690 ----
  @end smallexample
  
  @cindex parameter forward declaration
! The @samp{int len} before the semicolon
! is a @dfn{parameter forward declaration},
! and it serves the purpose of making the name @code{len} known
! when the declaration of @code{data} is parsed.
  
! Lists of parameter forward declarations are terminated by semicolons,
! and parameter forward declarations are separated within such lists by commas,
! just like in the regular list of parameter declarations.
! 
! You can write any number of lists of parameter forward declaration,
! but using more than one is unnecessary.
! The last semicolon is followed by the list of parameter declarations.
! Each parameter forward declaration must match
! a parameter declaration in parameter name and data type.
! ISO C99 does not support parameter forward declarations.
  
  @node Zero Length
  @subsection Arrays of Length Zero
*************** result of the comparison is a vector of
*** 16529,16537 ****
  elements as the comparison operands with a signed integral element
  type.
  
! Vectors are compared element-wise producing 0 when comparison is false
! and -1 (constant of the appropriate type where all bits are set)
! otherwise. Consider the following example.
  
  @smallexample
  typedef int v4si __attribute__ ((vector_size (16)));
--- 16534,16542 ----
  elements as the comparison operands with a signed integral element
  type.
  
! Vectors are compared elementwise producing 0 when the comparison is false
! and -1 (a constant of the appropriate type where all bits are set)
! otherwise. Consider the following example:
  
  @smallexample
  typedef int v4si __attribute__ ((vector_size (16)));
diff -Nrcpad gcc-16-20250921/gcc/doc/invoke.texi gcc-16-20250928/gcc/doc/invoke.texi
*** gcc-16-20250921/gcc/doc/invoke.texi	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/doc/invoke.texi	Sun Sep 28 22:33:05 2025
*************** Objective-C and Objective-C++ Dialects}.
*** 540,546 ****
  @gccoptlist{-Wbad-function-cast -Wdeprecated-non-prototype -Wfree-labels
  -Wmissing-declarations -Wmissing-parameter-name -Wmissing-parameter-type
  -Wdeclaration-missing-parameter-type -Wmissing-prototypes
! -Wmissing-variable-declarations -Wnested-externs -Wold-style-declaration
  -Wold-style-definition -Wstrict-prototypes -Wtraditional
  -Wtraditional-conversion -Wdeclaration-after-statement -Wpointer-sign}
  
--- 540,548 ----
  @gccoptlist{-Wbad-function-cast -Wdeprecated-non-prototype -Wfree-labels
  -Wmissing-declarations -Wmissing-parameter-name -Wmissing-parameter-type
  -Wdeclaration-missing-parameter-type -Wmissing-prototypes
! -Wmissing-variable-declarations
! -Wmultiple-parameter-fwd-decl-lists
! -Wnested-externs -Wold-style-declaration
  -Wold-style-definition -Wstrict-prototypes -Wtraditional
  -Wtraditional-conversion -Wdeclaration-after-statement -Wpointer-sign}
  
*************** Objective-C and Objective-C++ Dialects}.
*** 592,598 ****
  -fearly-inlining  -fipa-sra  -fexpensive-optimizations  -ffat-lto-objects
  -ffast-math  -ffinite-math-only  -ffloat-store  -fexcess-precision=@var{style}
  -ffinite-loops
! -fforward-propagate  -ffp-contract=@var{style}  -ffunction-sections
  -fgcse  -fgcse-after-reload  -fgcse-las  -fgcse-lm  -fgraphite-identity
  -fgcse-sm  -fhoist-adjacent-loads  -fif-conversion
  -fif-conversion2  -findirect-inlining
--- 594,601 ----
  -fearly-inlining  -fipa-sra  -fexpensive-optimizations  -ffat-lto-objects
  -ffast-math  -ffinite-math-only  -ffloat-store  -fexcess-precision=@var{style}
  -ffinite-loops
! -fforward-propagate  -ffp-contract=@var{style}  -ffp-int-builtin-inexact
! -ffunction-sections
  -fgcse  -fgcse-after-reload  -fgcse-las  -fgcse-lm  -fgraphite-identity
  -fgcse-sm  -fhoist-adjacent-loads  -fif-conversion
  -fif-conversion2  -findirect-inlining
*************** Objective-C and Objective-C++ Dialects}.
*** 616,622 ****
  -flto-incremental-cache-size=@var{n} -fmalloc-dce -fmerge-all-constants
  -fmerge-constants  -fmodulo-sched  -fmodulo-sched-allow-regmoves
  -fmove-loop-invariants  -fmove-loop-stores  -fno-branch-count-reg
! -fno-defer-pop  -fno-fp-int-builtin-inexact  -fno-function-cse
  -fno-guess-branch-probability  -fno-inline  -fno-math-errno  -fno-peephole
  -fno-peephole2  -fno-printf-return-value  -fno-sched-interblock
  -fno-sched-spec  -fno-signed-zeros
--- 619,625 ----
  -flto-incremental-cache-size=@var{n} -fmalloc-dce -fmerge-all-constants
  -fmerge-constants  -fmodulo-sched  -fmodulo-sched-allow-regmoves
  -fmove-loop-invariants  -fmove-loop-stores  -fno-branch-count-reg
! -fno-defer-pop  -fno-function-cse
  -fno-guess-branch-probability  -fno-inline  -fno-math-errno  -fno-peephole
  -fno-peephole2  -fno-printf-return-value  -fno-sched-interblock
  -fno-sched-spec  -fno-signed-zeros
*************** name is still supported, but the newer n
*** 6682,6687 ****
--- 6685,6691 ----
  -Wmissing-parameter-name @r{(C/ObjC only)}
  -Wmissing-parameter-type @r{(C/ObjC only)}
  -Wold-style-declaration @r{(C/ObjC only)}
+ -Wmultiple-parameter-fwd-decl-lists @r{(C/ObjC only)}
  -Woverride-init @r{(C/ObjC only)}
  -Wredundant-move @r{(C++ and Objective-C++ only)}
  -Wshift-negative-value @r{(in C++11 to C++17 and in C99 and newer)}
*************** void h (char *s)
*** 10135,10141 ****
  @opindex Wno-date-time
  @item -Wdate-time
  Warn when macros @code{__TIME__}, @code{__DATE__} or @code{__TIMESTAMP__}
! are encountered as they might prevent bit-wise-identical reproducible
  compilations.
  
  @opindex Wempty-body
--- 10139,10145 ----
  @opindex Wno-date-time
  @item -Wdate-time
  Warn when macros @code{__TIME__}, @code{__DATE__} or @code{__TIMESTAMP__}
! are encountered as they might prevent bitwise-identical reproducible
  compilations.
  
  @opindex Wempty-body
*************** enabled by default.
*** 10375,10381 ****
  @item -Wlogical-op
  Warn about suspicious uses of logical operators in expressions.
  This includes using logical operators in contexts where a
! bit-wise operator is likely to be expected.  Also warns when
  the operands of a logical operator are the same:
  @smallexample
  extern int a;
--- 10379,10385 ----
  @item -Wlogical-op
  Warn about suspicious uses of logical operators in expressions.
  This includes using logical operators in contexts where a
! bitwise operator is likely to be expected.  Also warns when
  the operands of a logical operator are the same:
  @smallexample
  extern int a;
*************** is not considered an old-style definitio
*** 10535,10540 ****
--- 10539,10551 ----
  equivalent to @samp{(void)} in that case, but is considered an
  old-style definition for older standards.
  
+ @opindex Wmultiple-parameter-fwd-decl-lists
+ @opindex Wno-multiple-parameter-fwd-decl-lists
+ @item -Wmultiple-parameter-fwd-decl-lists @r{(C and Objective-C only)}
+ Warn if more than one list of forward declarations of parameters
+ appears in a function prototype.
+ This warning is also enabled by @option{-Wextra}.
+ 
  @opindex Wdeprecated-non-prototype
  @opindex Wno-deprecated-non-prototype
  @item -Wdeprecated-non-prototype @r{(C and Objective-C only)}
*************** different statements.
*** 13289,13294 ****
--- 13300,13323 ----
  The default is @option{-ffp-contract=off} for C in a standards compliant mode
  (@option{-std=c11} or similar), @option{-ffp-contract=fast} otherwise.
  
+ @opindex ffp-int-builtin-inexact
+ @item -ffp-int-builtin-inexact
+ Allow the built-in functions @code{ceil}, @code{floor},
+ @code{round} and @code{trunc}, and their @code{float} and @code{long
+ double} variants, to generate code that raises the ``inexact''
+ floating-point exception for noninteger arguments.  ISO C99 and C11
+ allow these functions to raise the ``inexact'' exception, but ISO/IEC
+ TS 18661-1:2014, the C bindings to IEEE 754-2008, as integrated into
+ ISO C23, does not allow these functions to do so.
+ 
+ The default is @option{-fno-fp-int-builtin-inexact}, disallowing the
+ exception to be raised, unless C17 or an earlier C standard is selected.
+ This option does nothing unless @option{-ftrapping-math} is in effect.
+ 
+ Even if @option{-fno-fp-int-builtin-inexact} is used, if the functions
+ generate a call to a library function then the ``inexact'' exception
+ may be raised if the library implementation does not follow TS 18661.
+ 
  @opindex fomit-frame-pointer
  @item -fomit-frame-pointer
  Omit the frame pointer in functions that don't need one.  This avoids the
*************** Note that @option{-flive-patching} is no
*** 14359,14368 ****
  @opindex fisolate-erroneous-paths-dereference
  @item -fisolate-erroneous-paths-dereference
  Detect paths that trigger erroneous or undefined behavior due to
! dereferencing a null pointer.  Isolate those paths from the main control
! flow and turn the statement with erroneous or undefined behavior into a trap.
! This flag is enabled by default at @option{-O2} and higher and depends on
! @option{-fdelete-null-pointer-checks} also being enabled.
  
  @opindex fisolate-erroneous-paths-attribute
  @item -fisolate-erroneous-paths-attribute
--- 14388,14397 ----
  @opindex fisolate-erroneous-paths-dereference
  @item -fisolate-erroneous-paths-dereference
  Detect paths that trigger erroneous or undefined behavior due to
! dereferencing a null pointer (with @option{-fdelete-null-pointer-checks}
! enabled) or a division by zero.  Isolate those paths from the main control
! flow and turn the statement with erroneous or undefined behavior into a
! trap.  This flag is enabled by default at @option{-O2} and higher.
  
  @opindex fisolate-erroneous-paths-attribute
  @item -fisolate-erroneous-paths-attribute
*************** The default is @option{-fno-signaling-na
*** 15895,15919 ****
  This option is experimental and does not currently guarantee to
  disable all GCC optimizations that affect signaling NaN behavior.
  
- @opindex fno-fp-int-builtin-inexact
- @opindex ffp-int-builtin-inexact
- @item -fno-fp-int-builtin-inexact
- Do not allow the built-in functions @code{ceil}, @code{floor},
- @code{round} and @code{trunc}, and their @code{float} and @code{long
- double} variants, to generate code that raises the ``inexact''
- floating-point exception for noninteger arguments.  ISO C99 and C11
- allow these functions to raise the ``inexact'' exception, but ISO/IEC
- TS 18661-1:2014, the C bindings to IEEE 754-2008, as integrated into
- ISO C23, does not allow these functions to do so.
- 
- The default is @option{-ffp-int-builtin-inexact}, allowing the
- exception to be raised, unless C23 or a later C standard is selected.
- This option does nothing unless @option{-ftrapping-math} is in effect.
- 
- Even if @option{-fno-fp-int-builtin-inexact} is used, if the functions
- generate a call to a library function then the ``inexact'' exception
- may be raised if the library implementation does not follow TS 18661.
- 
  @opindex fsingle-precision-constant
  @item -fsingle-precision-constant
  Treat floating-point constants as single precision instead of
--- 15924,15929 ----
*************** vector-length agnostic code.
*** 22533,22542 ****
  @opindex Wexperimental-fmv-target
  @opindex Wno-experimental-fmv-target
  @item -Wexperimental-fmv-target
! Warn about use of experimental Function Multi Versioning.
! The Arm C Language Extension specification for Function Multi Versioning
! is beta and subject to change. Any usage of FMV is caveated that future
! behavior change and incompatibility is likely.
  @end table
  
  @subsubsection @option{-march} and @option{-mcpu} Feature Modifiers
--- 22543,22549 ----
  @opindex Wexperimental-fmv-target
  @opindex Wno-experimental-fmv-target
  @item -Wexperimental-fmv-target
! This option is deprecated.
  @end table
  
  @subsubsection @option{-march} and @option{-mcpu} Feature Modifiers
*************** pointer as the first argument of the fun
*** 31367,31372 ****
--- 31374,31402 ----
  the pointer can be NULL in case the caller is not using the returned value.
  GNU always passes and expects a valid return value pointer.
  
+ @item Size Of Struct Containing Bit-fields
+ TI ABI mandates that struct size is determined by the bit-field type, if it
+ contains any.  Whereas GNU allocates the smallest amount of bytes which would
+ fit the bit-field.
+ 
+ For example, TI ABI reserves 4 bytes for this struct, whereas GNU reserves
+ a single byte:
+ 
+ @smallexample
+ struct S @{ int i:1; @};
+ @end smallexample
+ 
+ @item Access Size For Volatile Bit-fields
+ TI ABI mandates that volatile bit-fields are accessed using their type.
+ In contrast, GNU ABI uses the smallest integer type fitting the bit-field.
+ 
+ For example, TI ABI requires a single load of 4 bytes for the
+ following bit-field.  Whereas GNU generates a load of 1 byte:
+ 
+ @smallexample
+ struct S @{ volatile int i:1; @};
+ @end smallexample
+ 
  @end table
  
  The current @option{-mabi=ti} implementation simply raises a compile error
diff -Nrcpad gcc-16-20250921/gcc/doc/libgdiagnostics/index.rst gcc-16-20250928/gcc/doc/libgdiagnostics/index.rst
*** gcc-16-20250921/gcc/doc/libgdiagnostics/index.rst	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/doc/libgdiagnostics/index.rst	Sun Sep 28 22:33:05 2025
*************** Indices and tables
*** 109,113 ****
  ******************
  
  * :ref:`genindex`
- * :ref:`modindex`
  * :ref:`search`
--- 109,112 ----
diff -Nrcpad gcc-16-20250921/gcc/doc/md.texi gcc-16-20250928/gcc/doc/md.texi
*** gcc-16-20250921/gcc/doc/md.texi	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/doc/md.texi	Sun Sep 28 22:33:05 2025
*************** The split is possible in this case if:
*** 5330,5336 ****
  @item @samp{vec_cmp@var{m}@var{n}}
  Output a vector comparison.  Operand 0 of mode @var{n} is the destination for
  predicate in operand 1 which is a signed vector comparison with operands of
! mode @var{m} in operands 2 and 3.  Predicate is computed by element-wise
  evaluation of the vector comparison with a truth value of all-ones and a false
  value of all-zeros.
  
--- 5330,5336 ----
  @item @samp{vec_cmp@var{m}@var{n}}
  Output a vector comparison.  Operand 0 of mode @var{n} is the destination for
  predicate in operand 1 which is a signed vector comparison with operands of
! mode @var{m} in operands 2 and 3.  Predicate is computed by elementwise
  evaluation of the vector comparison with a truth value of all-ones and a false
  value of all-zeros.
  
diff -Nrcpad gcc-16-20250921/gcc/doc/tm.texi gcc-16-20250928/gcc/doc/tm.texi
*** gcc-16-20250921/gcc/doc/tm.texi	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/doc/tm.texi	Sun Sep 28 22:33:05 2025
*************** changed via the optimize attribute or pr
*** 10978,10989 ****
  @code{TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE}
  @end deftypefn
  
! @deftypefn {Target Hook} bool TARGET_OPTION_FUNCTION_VERSIONS (tree @var{decl1}, tree @var{decl2})
! This target hook returns @code{true} if @var{DECL1} and @var{DECL2} are
! versions of the same function.  @var{DECL1} and @var{DECL2} are function
! versions if and only if they have the same function signature and
! different target specific attributes, that is, they are compiled for
! different target machines.
  @end deftypefn
  
  @deftypefn {Target Hook} bool TARGET_CAN_INLINE_P (tree @var{caller}, tree @var{callee})
--- 10978,10986 ----
  @code{TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE}
  @end deftypefn
  
! @deftypefn {Target Hook} bool TARGET_OPTION_SAME_FUNCTION_VERSIONS (string_slice @var{fn1}, string_slice @var{fn2})
! This target hook returns @code{true} if the target/target-version strings
! @var{fn1} and @var{fn2} imply the same function version.
  @end deftypefn
  
  @deftypefn {Target Hook} bool TARGET_CAN_INLINE_P (tree @var{caller}, tree @var{callee})
*************** function version at run-time for a given
*** 12290,12295 ****
--- 12287,12301 ----
  body must be generated.
  @end deftypefn
  
+ @deftypefn {Target Hook} bool TARGET_CHECK_TARGET_CLONE_VERSION (string_slice @var{str}, location_t *@var{loc})
+ This hook is used to check if a version specified in a @code{target_clones}
+ annotation is valid. @var{str} is the version to be considered.
+ If @var{loc} is not @code{NULL} then emit warnings for invalid versions at
+ that location.  Otherwise emit no diagnostics.
+ Returns @code{true} if @var{str} is a valid version string, and @code{false}
+ otherwise
+ @end deftypefn
+ 
  @deftypefn {Target Hook} bool TARGET_PREDICT_DOLOOP_P (class loop *@var{loop})
  Return true if we can predict it is possible to use a low-overhead loop
  for a particular loop.  The parameter @var{loop} is a pointer to the loop.
diff -Nrcpad gcc-16-20250921/gcc/doc/tm.texi.in gcc-16-20250928/gcc/doc/tm.texi.in
*** gcc-16-20250921/gcc/doc/tm.texi.in	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/doc/tm.texi.in	Sun Sep 28 22:33:05 2025
*************** with the target specific attributes.  Th
*** 7140,7146 ****
  
  @hook TARGET_OPTION_OVERRIDE
  
! @hook TARGET_OPTION_FUNCTION_VERSIONS
  
  @hook TARGET_CAN_INLINE_P
  
--- 7140,7146 ----
  
  @hook TARGET_OPTION_OVERRIDE
  
! @hook TARGET_OPTION_SAME_FUNCTION_VERSIONS
  
  @hook TARGET_CAN_INLINE_P
  
*************** to by @var{ce_info}.
*** 7897,7902 ****
--- 7897,7904 ----
  
  @hook TARGET_GENERATE_VERSION_DISPATCHER_BODY
  
+ @hook TARGET_CHECK_TARGET_CLONE_VERSION
+ 
  @hook TARGET_PREDICT_DOLOOP_P
  
  @hook TARGET_HAVE_COUNT_REG_DECR_P
diff -Nrcpad gcc-16-20250921/gcc/fortran/ChangeLog gcc-16-20250928/gcc/fortran/ChangeLog
*** gcc-16-20250921/gcc/fortran/ChangeLog	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/fortran/ChangeLog	Sun Sep 28 22:33:05 2025
***************
*** 1,3 ****
--- 1,65 ----
+ 2025-09-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/87908
+ 	* interface.cc (check_interface0): Revert changes.
+ 
+ 2025-09-26  Harald Anlauf  <anlauf@gcc.gnu.org>
+ 
+ 	PR fortran/122002
+ 	* decl.cc (gfc_get_pdt_instance): Initialize 'instance' to NULL
+ 	and set 'kind_value' to zero before calling gfc_extract_int.
+ 	* primary.cc (gfc_match_rvalue): Intitialize 'ctr_arglist' to
+ 	NULL and test for default values if gfc_get_pdt_instance
+ 	returns NULL.
+ 
+ 2025-09-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121939
+ 	* trans-types.cc (gfc_init_types): Set string flag for all
+ 	character types.
+ 
+ 2025-09-24  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	PR fortran/122046
+ 	* symbol.cc (gfc_get_procedure_ns): Try to find the namespace
+ 	among the list of contained namespaces before returning the
+ 	value from the formal_ns field.
+ 
+ 2025-09-24  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/87908
+ 	* interface.cc (check_interface0): If a vtable is found in the
+ 	interface list, check that it is either a subroutine or a
+ 	function. Let resolve.cc do any further checking.
+ 
+ 2025-09-22  Steve Kargl  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/103508
+ 	* decl.cc (gfc_match_end): Remove only the current partial
+ 	rather than removing the entire sibling chain.
+ 
+ 2025-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/109010
+ 	* st.cc (gfc_free_statement): Also free components expr3 and expr4.
+ 
+ 2025-09-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/121161
+ 	* invoke.texi: Mention that -ffrontend-optimize is required
+ 	for -fexternal-blas64.
+ 	* options.cc (gfc_post_options): Fatal error if -fexternal-blas64
+ 	is specified without -ffrontend-optimize.
+ 	* trans-types.cc (gfc_init_kinds): Fatal error if -fexternal-blas64
+ 	is specified on a system which does not have 64-bit ptrdiff_t.
+ 
+ 2025-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/108581
+ 	* trans-array.cc (gfc_conv_expr_descriptor): Take the dynamic
+ 	string length into account when deriving the dataptr offset for
+ 	a deferred-length character array.
+ 
  2025-09-20  Paul Thomas  <pault@gcc.gnu.org>
  
  	PR fortran/83746
***************
*** 15,21 ****
  
  2025-09-18  Paul Thomas  <pault@gcc.gnu.org>
  
! 	PR fortran/114815
  	* decl.cc (gfc_get_pdt_instance): Copy the contents of 'tb' and
  	not the pointer.
  	* primary.cc (gfc_match_rvalue): If there is only one actual
--- 77,83 ----
  
  2025-09-18  Paul Thomas  <pault@gcc.gnu.org>
  
! 	PR fortran/121948
  	* decl.cc (gfc_get_pdt_instance): Copy the contents of 'tb' and
  	not the pointer.
  	* primary.cc (gfc_match_rvalue): If there is only one actual
diff -Nrcpad gcc-16-20250921/gcc/fortran/decl.cc gcc-16-20250928/gcc/fortran/decl.cc
*** gcc-16-20250921/gcc/fortran/decl.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/fortran/decl.cc	Sun Sep 28 22:33:05 2025
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 3857,3863 ****
    /* The symbol for the parameter in the template f2k_namespace.  */
    gfc_symbol *param;
    /* The hoped for instance of the PDT.  */
!   gfc_symbol *instance;
    /* The list of parameters appearing in the PDT declaration.  */
    gfc_formal_arglist *type_param_name_list;
    /* Used to store the parameter specification list during recursive calls.  */
--- 3857,3863 ----
    /* The symbol for the parameter in the template f2k_namespace.  */
    gfc_symbol *param;
    /* The hoped for instance of the PDT.  */
!   gfc_symbol *instance = NULL;
    /* The list of parameters appearing in the PDT declaration.  */
    gfc_formal_arglist *type_param_name_list;
    /* Used to store the parameter specification list during recursive calls.  */
*************** gfc_get_pdt_instance (gfc_actual_arglist
*** 4037,4042 ****
--- 4037,4043 ----
  	  goto error_return;
  	}
  
+       kind_value = 0;
        gfc_extract_int (kind_expr, &kind_value);
        sprintf (name + strlen (name), "_%d", kind_value);
  
*************** cleanup:
*** 8986,8992 ****
    /* If we are missing an END BLOCK, we created a half-ready namespace.
       Remove it from the parent namespace's sibling list.  */
  
!   while (state == COMP_BLOCK && !got_matching_end)
      {
        parent_ns = gfc_current_ns->parent;
  
--- 8987,8993 ----
    /* If we are missing an END BLOCK, we created a half-ready namespace.
       Remove it from the parent namespace's sibling list.  */
  
!   if (state == COMP_BLOCK && !got_matching_end)
      {
        parent_ns = gfc_current_ns->parent;
  
diff -Nrcpad gcc-16-20250921/gcc/fortran/primary.cc gcc-16-20250928/gcc/fortran/primary.cc
*** gcc-16-20250921/gcc/fortran/primary.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/fortran/primary.cc	Sun Sep 28 22:33:05 2025
*************** gfc_match_rvalue (gfc_expr **result)
*** 4067,4073 ****
  	{
  	  gfc_symtree *pdt_st;
  	  gfc_symbol *pdt_sym;
! 	  gfc_actual_arglist *ctr_arglist, *tmp;
  	  gfc_component *c;
  
  	  /* Obtain the template.  */
--- 4067,4073 ----
  	{
  	  gfc_symtree *pdt_st;
  	  gfc_symbol *pdt_sym;
! 	  gfc_actual_arglist *ctr_arglist = NULL, *tmp;
  	  gfc_component *c;
  
  	  /* Obtain the template.  */
*************** gfc_match_rvalue (gfc_expr **result)
*** 4088,4094 ****
  		 first argument list and return the parameter list in
  		 ctr_arglist.  */
  	      m = gfc_get_pdt_instance (actual_arglist, &pdt_sym, &ctr_arglist);
! 	      if (m != MATCH_YES)
  		{
  		  if (ctr_arglist)
  		    gfc_free_actual_arglist (ctr_arglist);
--- 4088,4094 ----
  		 first argument list and return the parameter list in
  		 ctr_arglist.  */
  	      m = gfc_get_pdt_instance (actual_arglist, &pdt_sym, &ctr_arglist);
! 	      if (m != MATCH_YES || !ctr_arglist)
  		{
  		  if (ctr_arglist)
  		    gfc_free_actual_arglist (ctr_arglist);
diff -Nrcpad gcc-16-20250921/gcc/fortran/symbol.cc gcc-16-20250928/gcc/fortran/symbol.cc
*** gcc-16-20250921/gcc/fortran/symbol.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/fortran/symbol.cc	Sun Sep 28 22:33:05 2025
*************** gfc_namespace *
*** 5500,5506 ****
  gfc_get_procedure_ns (gfc_symbol *sym)
  {
    if (sym->formal_ns
!       && sym->formal_ns->proc_name == sym)
      return sym->formal_ns;
  
    /* The above should have worked in most cases.  If it hasn't, try some other
--- 5500,5515 ----
  gfc_get_procedure_ns (gfc_symbol *sym)
  {
    if (sym->formal_ns
!       && sym->formal_ns->proc_name == sym
!       /* For module procedures used in submodules, there are two namespaces.
! 	 The one generated by the host association of the module is directly
! 	 accessible through SYM->FORMAL_NS but doesn't have any parent set.
! 	 The one generated by the parser is only accessible by walking the
! 	 contained namespace but has its parent set.  Prefer the one generated
! 	 by the parser below.  */
!       && !(sym->attr.used_in_submodule
! 	   && sym->attr.contained
! 	   && sym->formal_ns->parent == nullptr))
      return sym->formal_ns;
  
    /* The above should have worked in most cases.  If it hasn't, try some other
*************** gfc_get_procedure_ns (gfc_symbol *sym)
*** 5515,5520 ****
--- 5524,5533 ----
        if (ns->proc_name == sym)
  	return ns;
  
+   if (sym->formal_ns
+       && sym->formal_ns->proc_name == sym)
+     return sym->formal_ns;
+ 
    if (sym->formal)
      for (gfc_formal_arglist *f = sym->formal; f != nullptr; f = f->next)
        if (f->sym)
diff -Nrcpad gcc-16-20250921/gcc/fortran/trans-types.cc gcc-16-20250928/gcc/fortran/trans-types.cc
*** gcc-16-20250921/gcc/fortran/trans-types.cc	Sun Sep 21 22:32:37 2025
--- gcc-16-20250928/gcc/fortran/trans-types.cc	Sun Sep 28 22:33:05 2025
*************** gfc_init_types (void)
*** 1135,1140 ****
--- 1135,1141 ----
      {
        type = gfc_build_uint_type (gfc_character_kinds[index].bit_size);
        type = build_qualified_type (type, TYPE_UNQUALIFIED);
+       TYPE_STRING_FLAG (type) = 1;
        snprintf (name_buf, sizeof(name_buf), "character(kind=%d)",
  		gfc_character_kinds[index].kind);
        PUSH_TYPE (name_buf, type);
diff -Nrcpad gcc-16-20250921/gcc/gimple-fold.cc gcc-16-20250928/gcc/gimple-fold.cc
*** gcc-16-20250921/gcc/gimple-fold.cc	Sun Sep 21 22:32:38 2025
--- gcc-16-20250928/gcc/gimple-fold.cc	Sun Sep 28 22:33:06 2025
*************** along with GCC; see the file COPYING3.
*** 69,74 ****
--- 69,75 ----
  #include "varasm.h"
  #include "internal-fn.h"
  #include "gimple-range.h"
+ #include "tree-pass.h"
  
  enum strlen_range_kind {
    /* Compute the exact constant string length.  */
*************** gimple_fold_builtin_clear_padding (gimpl
*** 5206,5211 ****
--- 5207,5257 ----
    return true;
  }
  
+ /* Fold __builtin_constant_p builtin.  */
+ 
+ static bool
+ gimple_fold_builtin_constant_p (gimple_stmt_iterator *gsi)
+ {
+   gcall *call = as_a<gcall*>(gsi_stmt (*gsi));
+ 
+   if (gimple_call_num_args (call) != 1)
+     return false;
+ 
+   tree arg = gimple_call_arg (call, 0);
+   tree result = fold_builtin_constant_p (arg);
+ 
+   /* Resolve __builtin_constant_p.  If it hasn't been
+      folded to integer_one_node by now, it's fairly
+      certain that the value simply isn't constant.  */
+   if (!result
+       && (cfun->curr_properties & PROP_last_full_fold))
+     result = integer_zero_node;
+ 
+   if (!result)
+     return false;
+ 
+   gimplify_and_update_call_from_tree (gsi, result);
+   return true;
+ }
+ 
+ /* Fold __builtin_assume_aligned builtin.  */
+ 
+ static bool
+ gimple_fold_builtin_assume_aligned (gimple_stmt_iterator *gsi)
+ {
+   if (!(cfun->curr_properties & PROP_last_full_fold))
+     return false;
+ 
+   gcall *call = as_a<gcall*>(gsi_stmt (*gsi));
+ 
+   if (gimple_call_num_args (call) < 2)
+     return false;
+ 
+   gimplify_and_update_call_from_tree (gsi, gimple_call_arg (call, 0));
+ 
+   return true;
+ }
+ 
  /* Fold the non-target builtin at *GSI and return whether any simplification
     was made.  */
  
*************** gimple_fold_builtin (gimple_stmt_iterato
*** 5375,5380 ****
--- 5421,5432 ----
      case BUILT_IN_CLEAR_PADDING:
        return gimple_fold_builtin_clear_padding (gsi);
  
+     case BUILT_IN_CONSTANT_P:
+       return gimple_fold_builtin_constant_p (gsi);
+ 
+     case BUILT_IN_ASSUME_ALIGNED:
+       return gimple_fold_builtin_assume_aligned (gsi);
+ 
      default:;
      }
  
diff -Nrcpad gcc-16-20250921/gcc/hooks.cc gcc-16-20250928/gcc/hooks.cc
*** gcc-16-20250921/gcc/hooks.cc	Sun Sep 21 22:32:38 2025
--- gcc-16-20250928/gcc/hooks.cc	Sun Sep 28 22:33:06 2025
*************** hook_optmode_mode_uhwi_none (machine_mod
*** 585,587 ****
--- 585,601 ----
  {
    return opt_machine_mode ();
  }
+ 
+ /* Generic hook that takes a string_slice and a locations and returns false.  */
+ 
+ bool
+ hook_stringslice_locationtptr_true (string_slice, location_t *)
+ {
+   return true;
+ }
+ 
+ bool
+ hook_stringslice_stringslice_unreachable (string_slice, string_slice)
+ {
+   gcc_unreachable ();
+ }
diff -Nrcpad gcc-16-20250921/gcc/hooks.h gcc-16-20250928/gcc/hooks.h
*** gcc-16-20250921/gcc/hooks.h	Sun Sep 21 22:32:38 2025
--- gcc-16-20250928/gcc/hooks.h	Sun Sep 28 22:33:06 2025
*************** extern const char *hook_constcharptr_int
*** 137,140 ****
--- 137,144 ----
  
  extern opt_machine_mode hook_optmode_mode_uhwi_none (machine_mode,
  						     unsigned HOST_WIDE_INT);
+ 
+ extern bool hook_stringslice_locationtptr_true (string_slice, location_t *);
+ extern bool hook_stringslice_stringslice_unreachable (string_slice, string_slice);
+ 
  #endif
diff -Nrcpad gcc-16-20250921/gcc/ipa.cc gcc-16-20250928/gcc/ipa.cc
*** gcc-16-20250921/gcc/ipa.cc	Sun Sep 21 22:32:38 2025
--- gcc-16-20250928/gcc/ipa.cc	Sun Sep 28 22:33:06 2025
*************** symbol_table::remove_unreachable_nodes (
*** 433,438 ****
--- 433,449 ----
  						       e, &first, &reachable);
  		    }
  		}
+ 
+ 	      /* A reference to the default node implies use of all the other
+ 		 versions (they get used in the function resolver made later
+ 		 in multiple_target.cc)  */
+ 	      cgraph_function_version_info *node_v = cnode->function_version ();
+ 	      if (node_v && is_function_default_version (node->decl))
+ 		for (cgraph_function_version_info *fvi = node_v->next;
+ 		     fvi;
+ 		     fvi = fvi->next)
+ 		  enqueue_node (fvi->this_node, &first, &reachable);
+ 
  	      for (e = cnode->callees; e; e = e->next_callee)
  		{
  	          symtab_node *body = e->callee->function_symbol ();
diff -Nrcpad gcc-16-20250921/gcc/m2/ChangeLog gcc-16-20250928/gcc/m2/ChangeLog
*** gcc-16-20250921/gcc/m2/ChangeLog	Sun Sep 21 22:32:38 2025
--- gcc-16-20250928/gcc/m2/ChangeLog	Sun Sep 28 22:33:06 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-09-21  Mark Wielaard  <mark@klomp.org>
+ 
+ 	* lang.opt.urls: Regenerate.
+ 
  2025-09-20  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	PR modula2/122009
diff -Nrcpad gcc-16-20250921/gcc/match.pd gcc-16-20250928/gcc/match.pd
*** gcc-16-20250921/gcc/match.pd	Sun Sep 21 22:32:38 2025
--- gcc-16-20250928/gcc/match.pd	Sun Sep 28 22:33:06 2025
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3695,3725 ****
        bool c2_is_type_precision_p = c2 == prec;
       }
       (if (widen_prec > prec && c2_is_type_precision_p && c4_is_max_p)))))
!   (match (unsigned_integer_sat_mul @0 @1)
!    /* SAT_U_MUL (X, Y) = {
! 	WT x = (WT)a * (WT)b;
! 	NT hi = x >> (sizeof(NT) * 8);
! 	NT lo = (NT)x;
! 	return lo | -!!hi;
!       } while WT is uint128_t, T is uint8_t, uint16_t, uint32_t or uint64_t.  */
!    (convert1?
!     (bit_ior (convert? (negate (convert (ne (convert (rshift @3 INTEGER_CST@2))
! 					    integer_zerop))))
! 	     (convert (widen_mult:c@3 (convert@4 @0)
! 				      (convert@5 @1)))))
!    (if (types_match (type, @0, @1))
!     (with
!      {
!       unsigned widen_prec = TYPE_PRECISION (TREE_TYPE (@3));
!       unsigned cvt4_prec = TYPE_PRECISION (TREE_TYPE (@4));
!       unsigned cvt5_prec = TYPE_PRECISION (TREE_TYPE (@5));
!       bool widen_mult_p = cvt4_prec == cvt5_prec && widen_prec == cvt5_prec * 2;
  
!       unsigned c2 = tree_to_uhwi (@2);
!       unsigned prec = TYPE_PRECISION (type);
!       bool c2_is_type_precision_p = c2 == prec;
!      }
!      (if (widen_mult_p && c2_is_type_precision_p)))))
  )
  
  /* The boundary condition for case 10: IMM = 1:
--- 3695,3730 ----
        bool c2_is_type_precision_p = c2 == prec;
       }
       (if (widen_prec > prec && c2_is_type_precision_p && c4_is_max_p)))))
!   (for mult_op (mult widen_mult)
!    (match (unsigned_integer_sat_mul @0 @1)
!     /* SAT_U_MUL (X, Y) = {
! 	 WT x = (WT)a * (WT)b;
! 	 NT hi = x >> (sizeof(NT) * 8);
!          NT lo = (NT)x;
!          return lo | -!!hi;
!        } while WT is uint128_t, uint64_t, uint32_t, uint16_t,
!          and T is uint64_t, uint32_t, uint16_t, uint8_t.  */
!     (convert1?
!      (bit_ior
!       (convert?
!        (negate
! 	(convert (ne (convert2? (rshift @3 INTEGER_CST@2)) integer_zerop))))
!       (convert (mult_op:c@3 (convert@4 @0) (convert@5 @1)))))
!     (if (types_match (type, @0, @1))
!      (with
!       {
!        unsigned prec = TYPE_PRECISION (type);
!        unsigned widen_prec = TYPE_PRECISION (TREE_TYPE (@3));
!        unsigned cvt4_prec = TYPE_PRECISION (TREE_TYPE (@4));
!        unsigned cvt5_prec = TYPE_PRECISION (TREE_TYPE (@5));
  
!        bool widen_mult_p = mult_op == WIDEN_MULT_EXPR && cvt4_prec == cvt5_prec
! 	 && widen_prec == cvt5_prec * 2;
!        bool mult_p = mult_op == MULT_EXPR && cvt4_prec == cvt5_prec
! 	 && cvt4_prec == widen_prec && widen_prec > prec;
!        bool c2_is_type_precision_p = tree_to_uhwi (@2) == prec;
!       }
!       (if (c2_is_type_precision_p && (mult_p || widen_mult_p)))))))
  )
  
  /* The boundary condition for case 10: IMM = 1:
diff -Nrcpad gcc-16-20250921/gcc/multiple_target.cc gcc-16-20250928/gcc/multiple_target.cc
*** gcc-16-20250921/gcc/multiple_target.cc	Sun Sep 21 22:32:38 2025
--- gcc-16-20250928/gcc/multiple_target.cc	Sun Sep 28 22:33:06 2025
*************** replace_function_decl (tree *op, int *wa
*** 58,65 ****
    return NULL;
  }
  
! /* If the call in NODE has multiple target attribute with multiple fields,
!    replace it with dispatcher call and create dispatcher (once).  */
  
  static void
  create_dispatcher_calls (struct cgraph_node *node)
--- 58,72 ----
    return NULL;
  }
  
! /* In target FMV attributes, if the call in NODE has multiple target attribute
!    with multiple fields, replace it with calls to the dispatched symbol and
!    create the dispatcher body (once).
! 
!    In target_version semantics, if it is a lone annotated default, then
!    the dispatched symbol is changed to be an alias and no resolver is
!    required.  Otherwise, redirect all calls and references to the dispatched
!    symbol, but only create the resolver body if the default version is
!    implemented.  */
  
  static void
  create_dispatcher_calls (struct cgraph_node *node)
*************** create_dispatcher_calls (struct cgraph_n
*** 90,102 ****
  
    cgraph_node *inode = cgraph_node::get (idecl);
    gcc_assert (inode);
!   tree resolver_decl = targetm.generate_version_dispatcher_body (inode);
  
!   /* Update aliases.  */
!   inode->alias = true;
!   inode->alias_target = resolver_decl;
!   if (!inode->analyzed)
!     inode->resolve_alias (cgraph_node::get (resolver_decl));
  
    auto_vec<cgraph_edge *> edges_to_redirect;
    /* We need to capture the references by value rather than just pointers to them
--- 97,144 ----
  
    cgraph_node *inode = cgraph_node::get (idecl);
    gcc_assert (inode);
!   cgraph_function_version_info *inode_info = inode->function_version ();
!   gcc_assert (inode_info);
  
!   tree resolver_decl = NULL;
! 
!   /* For target_version semantics, if there is a lone default declaration
!      it needs to be mangled, with an alias from the dispatched symbol to the
!      default version.  */
!   if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
!       && TREE_STATIC (node->decl)
!       && inode_info->next
!       && !inode_info->next->next)
!     {
!       inode->alias = true;
!       inode->alias_target = inode_info->next->this_node->decl;
!       inode->externally_visible = true;
!       if (!inode->analyzed)
! 	inode->resolve_alias
! 	  (cgraph_node::get (inode_info->next->this_node->decl));
! 
!       DECL_ATTRIBUTES (idecl)
! 	= make_attribute ("alias",
! 			  IDENTIFIER_POINTER
! 			    (DECL_ASSEMBLER_NAME
! 			       (inode_info->next->this_node->decl)),
! 			  DECL_ATTRIBUTES (node->decl));
!       TREE_USED (idecl) = true;
!       DECL_EXTERNAL (idecl) = false;
!       TREE_STATIC (idecl) = true;
!       return;
!     }
!   /* In target_version semantics, only create the resolver if the
!      default node is implemented.  */
!   else if (TARGET_HAS_FMV_TARGET_ATTRIBUTE || TREE_STATIC (node->decl))
!     {
!       resolver_decl = targetm.generate_version_dispatcher_body (inode);
!       /* Update aliases.  */
!       inode->alias = true;
!       inode->alias_target = resolver_decl;
!       if (!inode->analyzed)
! 	inode->resolve_alias (cgraph_node::get (resolver_decl));
!     }
  
    auto_vec<cgraph_edge *> edges_to_redirect;
    /* We need to capture the references by value rather than just pointers to them
*************** create_dispatcher_calls (struct cgraph_n
*** 166,174 ****
  	}
      }
  
-   tree fname = clone_function_name (node->decl, "default");
-   symtab->change_decl_assembler_name (node->decl, fname);
- 
    if (node->definition)
      {
        /* FIXME: copy of cgraph_node::make_local that should be cleaned up
--- 208,213 ----
*************** create_dispatcher_calls (struct cgraph_n
*** 184,283 ****
      }
  }
  
- /* Create string with attributes separated by TARGET_CLONES_ATTR_SEPARATOR.
-    Return number of attributes.  */
- 
- static int
- get_attr_str (tree arglist, char *attr_str)
- {
-   tree arg;
-   size_t str_len_sum = 0;
-   int argnum = 0;
- 
-   for (arg = arglist; arg; arg = TREE_CHAIN (arg))
-     {
-       const char *str = TREE_STRING_POINTER (TREE_VALUE (arg));
-       size_t len = strlen (str);
-       for (const char *p = strchr (str, TARGET_CLONES_ATTR_SEPARATOR);
- 	   p;
- 	   p = strchr (p + 1, TARGET_CLONES_ATTR_SEPARATOR))
- 	argnum++;
-       memcpy (attr_str + str_len_sum, str, len);
-       attr_str[str_len_sum + len]
- 	= TREE_CHAIN (arg) ? TARGET_CLONES_ATTR_SEPARATOR : '\0';
-       str_len_sum += len + 1;
-       argnum++;
-     }
-   return argnum;
- }
- 
- /* Return number of attributes separated by TARGET_CLONES_ATTR_SEPARATOR
-    and put them into ARGS.
-    If there is no DEFAULT attribute return -1.
-    If there is an empty string in attribute return -2.
-    If there are multiple DEFAULT attributes return -3.
-    */
- 
- static int
- separate_attrs (char *attr_str, char **attrs, int attrnum)
- {
-   int i = 0;
-   int default_count = 0;
-   static const char separator_str[] = { TARGET_CLONES_ATTR_SEPARATOR, 0 };
- 
-   for (char *attr = strtok (attr_str, separator_str);
-        attr != NULL; attr = strtok (NULL, separator_str))
-     {
-       if (strcmp (attr, "default") == 0)
- 	{
- 	  default_count++;
- 	  continue;
- 	}
-       attrs[i++] = attr;
-     }
-   if (default_count == 0)
-     return -1;
-   else if (default_count > 1)
-     return -3;
-   else if (i + default_count < attrnum)
-     return -2;
- 
-   return i;
- }
- 
- /*  Return true if symbol is valid in assembler name.  */
- 
- static bool
- is_valid_asm_symbol (char c)
- {
-   if ('a' <= c && c <= 'z')
-     return true;
-   if ('A' <= c && c <= 'Z')
-     return true;
-   if ('0' <= c && c <= '9')
-     return true;
-   if (c == '_')
-     return true;
-   return false;
- }
- 
- /*  Replace all not valid assembler symbols with '_'.  */
- 
- static void
- create_new_asm_name (char *old_asm_name, char *new_asm_name)
- {
-   int i;
-   int old_name_len = strlen (old_asm_name);
- 
-   /* Replace all not valid assembler symbols with '_'.  */
-   for (i = 0; i < old_name_len; i++)
-     if (!is_valid_asm_symbol (old_asm_name[i]))
-       new_asm_name[i] = '_';
-     else
-       new_asm_name[i] = old_asm_name[i];
-   new_asm_name[old_name_len] = '\0';
- }
- 
  /*  Creates target clone of NODE.  */
  
  static cgraph_node *
--- 223,228 ----
*************** create_target_clone (cgraph_node *node,
*** 313,319 ****
  static bool
  expand_target_clones (struct cgraph_node *node, bool definition)
  {
-   int i;
    /* Parsing target attributes separated by TARGET_CLONES_ATTR_SEPARATOR.  */
    tree attr_target = lookup_attribute ("target_clones",
  				       DECL_ATTRIBUTES (node->decl));
--- 258,263 ----
*************** expand_target_clones (struct cgraph_node
*** 321,337 ****
    if (!attr_target)
      return false;
  
!   tree arglist = TREE_VALUE (attr_target);
!   int attr_len = get_target_clone_attr_len (arglist);
  
    /* No need to clone for 1 target attribute.  */
!   if (attr_len == -1)
      {
        warning_at (DECL_SOURCE_LOCATION (node->decl),
  		  0, "single %<target_clones%> attribute is ignored");
        return false;
      }
  
    if (node->definition
        && (node->alias || !tree_versionable_function_p (node->decl)))
      {
--- 265,296 ----
    if (!attr_target)
      return false;
  
!   int num_defaults = 0;
!   auto_vec<string_slice> attr_list = get_clone_versions (node->decl,
! 							 &num_defaults);
! 
!   /* If the target clones list is empty after filtering, remove this node.  */
!   if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE && attr_list.is_empty ())
!     {
!       node->remove ();
!       return false;
!     }
  
    /* No need to clone for 1 target attribute.  */
!   if (attr_list.length () == 1 && TARGET_HAS_FMV_TARGET_ATTRIBUTE)
      {
        warning_at (DECL_SOURCE_LOCATION (node->decl),
  		  0, "single %<target_clones%> attribute is ignored");
        return false;
      }
  
+   /* For target_version semantics, a target clone with just a default version
+      is the same as an unannotated decl, so can ignore.  */
+   if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE
+       && attr_list.length () == 1
+       && num_defaults == 1)
+     return false;
+ 
    if (node->definition
        && (node->alias || !tree_versionable_function_p (node->decl)))
      {
*************** expand_target_clones (struct cgraph_node
*** 352,446 ****
        return false;
      }
  
!   char *attr_str = XNEWVEC (char, attr_len);
!   int attrnum = get_attr_str (arglist, attr_str);
!   char **attrs = XNEWVEC (char *, attrnum);
! 
!   attrnum = separate_attrs (attr_str, attrs, attrnum);
!   switch (attrnum)
      {
-     case -1:
-       error_at (DECL_SOURCE_LOCATION (node->decl),
- 		"%<default%> target was not set");
-       break;
-     case -2:
-       error_at (DECL_SOURCE_LOCATION (node->decl),
- 		"an empty string cannot be in %<target_clones%> attribute");
-       break;
-     case -3:
        error_at (DECL_SOURCE_LOCATION (node->decl),
  		"multiple %<default%> targets were set");
!       break;
!     default:
!       break;
      }
  
!   if (attrnum < 0)
      {
!       XDELETEVEC (attrs);
!       XDELETEVEC (attr_str);
        return false;
      }
  
!   const char *new_attr_name = (TARGET_HAS_FMV_TARGET_ATTRIBUTE
! 			       ? "target" : "target_version");
!   cgraph_function_version_info *decl1_v = NULL;
!   cgraph_function_version_info *decl2_v = NULL;
!   cgraph_function_version_info *before = NULL;
!   cgraph_function_version_info *after = NULL;
!   decl1_v = node->function_version ();
!   if (decl1_v == NULL)
!     decl1_v = node->insert_new_function_version ();
!   before = decl1_v;
!   DECL_FUNCTION_VERSIONED (node->decl) = 1;
  
!   for (i = 0; i < attrnum; i++)
      {
!       char *attr = attrs[i];
  
        /* Create new target clone.  */
!       tree attributes = make_attribute (new_attr_name, attr,
! 					DECL_ATTRIBUTES (node->decl));
  
!       char *suffix = XNEWVEC (char, strlen (attr) + 1);
!       create_new_asm_name (attr, suffix);
!       cgraph_node *new_node = create_target_clone (node, definition, suffix,
! 						   attributes);
!       XDELETEVEC (suffix);
        if (new_node == NULL)
! 	{
! 	  XDELETEVEC (attrs);
! 	  XDELETEVEC (attr_str);
! 	  return false;
! 	}
        new_node->local = false;
  
!       decl2_v = new_node->function_version ();
!       if (decl2_v != NULL)
!         continue;
!       decl2_v = new_node->insert_new_function_version ();
  
!       /* Chain decl2_v and decl1_v.  All semantically identical versions
! 	 will be chained together.  */
!       after = decl2_v;
!       while (before->next != NULL)
! 	before = before->next;
!       while (after->prev != NULL)
! 	after = after->prev;
  
!       before->next = after;
!       after->prev = before;
!       DECL_FUNCTION_VERSIONED (new_node->decl) = 1;
      }
  
!   XDELETEVEC (attrs);
!   XDELETEVEC (attr_str);
  
-   /* Setting new attribute to initial function.  */
-   tree attributes = make_attribute (new_attr_name, "default",
- 				    DECL_ATTRIBUTES (node->decl));
-   DECL_ATTRIBUTES (node->decl) = attributes;
-   node->local = false;
    return true;
  }
  
--- 311,425 ----
        return false;
      }
  
!   /* Disallow multiple defaults.  */
!   if (num_defaults > 1)
      {
        error_at (DECL_SOURCE_LOCATION (node->decl),
  		"multiple %<default%> targets were set");
!       return false;
      }
  
!   /* For target FMV semantics, where target and target_clone mixing
!      is not supported, disallow target clones with no defaults.  */
!   if (TARGET_HAS_FMV_TARGET_ATTRIBUTE && num_defaults == 0)
      {
!       error_at (DECL_SOURCE_LOCATION (node->decl),
! 		"%<default%> target was not set");
        return false;
      }
  
!   /* Disallow any empty values in the clone attr.  */
!   for (string_slice attr : attr_list)
!     if (attr.empty () || !attr.is_valid ())
!       {
! 	error_at (DECL_SOURCE_LOCATION (node->decl),
! 		  "an empty string cannot be in %<target_clones%> attribute");
! 	return false;
!       }
  
!   string_slice new_attr_name = TARGET_HAS_FMV_TARGET_ATTRIBUTE
! 			       ? "target"
! 			       : "target_version";
! 
!   cgraph_function_version_info *node_v = node->function_version ();
! 
!   if (!node_v)
!     node_v = node->insert_new_function_version ();
! 
!   /* If this target_clones contains a default, then convert this node to the
!      default.  If this node does not contain default (this is only possible
!      in target_version semantics) then remove the node.  This is safe at this
!      point as only target_clones declarations containing default version is
!      resolvable so this decl will have no calls/references.  */
! 
!   tree attrs = remove_attribute ("target_clones",
! 				  DECL_ATTRIBUTES (node->decl));
!   tree assembler_name = node_v->assembler_name;
! 
!   /* Change the current node into the default node.  */
!   if (num_defaults == 1)
      {
!       /* Setting new attribute to initial function.  */
!       tree attributes = make_attribute (new_attr_name, "default", attrs);
!       DECL_ATTRIBUTES (node->decl) = attributes;
!       DECL_FUNCTION_VERSIONED (node->decl) = true;
! 
!       node->is_target_clone = true;
!       node->local = false;
! 
!       /* Remangle base node after new target version string set.  */
!       tree id = targetm.mangle_decl_assembler_name (node->decl, assembler_name);
!       symtab->change_decl_assembler_name (node->decl, id);
!     }
!   else
!     {
!       /* Target clones without a default are only allowed for target_version
! 	 semantics where we can have target_clones/target_version mixing.  */
!       gcc_assert (!TARGET_HAS_FMV_TARGET_ATTRIBUTE);
! 
!       /* If there isn't a default version, can safely remove this version.
! 	 The node itself gets removed after the other versions are created.  */
!       cgraph_function_version_info *temp = node_v;
!       node_v = node_v->next ? node_v->next : node_v->prev;
!       cgraph_node::delete_function_version (temp);
!     }
! 
!   for (string_slice attr : attr_list)
!     {
!       /* Skip default nodes.  */
!       if (attr == "default")
! 	continue;
  
        /* Create new target clone.  */
!       tree attributes = make_attribute (new_attr_name, attr, attrs);
  
!       cgraph_node *new_node
! 	= create_target_clone (node, definition, NULL, attributes);
        if (new_node == NULL)
! 	return false;
        new_node->local = false;
  
!       DECL_FUNCTION_VERSIONED (new_node->decl) = true;
!       if (!node_v)
! 	node_v = new_node->insert_new_function_version ();
!       else
! 	cgraph_node::add_function_version (node_v, new_node->decl);
  
!       /* Use the base node's assembler name for all created nodes.  */
!       new_node->function_version ()->assembler_name = assembler_name;
!       new_node->is_target_clone = true;
  
!       /* Mangle all new nodes.  */
!       tree id = targetm.mangle_decl_assembler_name
! 	(new_node->decl, new_node->function_version ()->assembler_name);
!       symtab->change_decl_assembler_name (new_node->decl, id);
      }
  
!   /* If there are no default versions in the target_clones, this node is not
!      reused, so can delete this node.  */
!   if (num_defaults == 0)
!     node->remove ();
  
    return true;
  }
  
*************** redirect_to_specific_clone (cgraph_node
*** 502,516 ****
      }
  }
  
  static unsigned int
! ipa_target_clone (void)
  {
    struct cgraph_node *node;
    auto_vec<cgraph_node *> to_dispatch;
  
!   FOR_EACH_FUNCTION (node)
!     if (expand_target_clones (node, node->definition))
!       to_dispatch.safe_push (node);
  
    for (unsigned i = 0; i < to_dispatch.length (); i++)
      create_dispatcher_calls (to_dispatch[i]);
--- 481,567 ----
      }
  }
  
+ /* Checks if NODE is in the 'simple' target_clones case, which is where NODE
+    is a declaration annotated with target_clones containing the default, and it
+    is the sole function declaration in the FMV function set.  */
+ 
+ static bool
+ is_simple_target_clones_case (cgraph_node *node)
+ {
+   /* target attribute semantics doesnt support the complex case,
+      so this is always true.  */
+   if (TARGET_HAS_FMV_TARGET_ATTRIBUTE)
+     return true;
+ 
+   int num_defaults = 0;
+   auto versions = get_clone_versions (node->decl, &num_defaults);
+   if (versions.is_empty () || num_defaults != 1)
+     return false;
+ 
+   cgraph_function_version_info *fv = node->function_version ();
+ 
+   if (fv && (fv->next || fv->prev))
+     return false;
+ 
+   return true;
+ }
+ 
  static unsigned int
! ipa_target_clone (bool early)
  {
    struct cgraph_node *node;
    auto_vec<cgraph_node *> to_dispatch;
  
!   /* Don't need to do anything early for target attribute semantics.  */
!   if (early && TARGET_HAS_FMV_TARGET_ATTRIBUTE)
!     return 0;
! 
!   /* For target attribute semantics, this pass skips the early phase, and in
!      the later stage is only responsible for expanding and dispatching
!      target_clone declarations, as target annotated functions are dispatched
!      in the front end.
! 
!      The expanding and dispatching can be done at the late stage as the
!      target_clone functions aren't allowed to be part of a larger FMV set, so
!      all versions will all have the same body, so early optimisations are safe
!      to treat a call to a target_clones set as a call to one function.
! 
!      For target_version semantics, this pass is responsible for expanding
!      target_clones and dispatching all FMV function sets, including ones only
!      made up of target_version declarations.
! 
!      Cases where there is more than one declaration must be expanded and
!      dispatched at the early stage, as the declarations may have different
!      bodies, and so the early optimisation passes would not be valid.
! 
!      The late stage is only used for the expansion and dispatching of the simple
!      case where the FMV set is defined by a single target_clone attribute.  */
! 
!   FOR_EACH_FUNCTION_REMOVABLE (node)
!     {
!       /* In the early stage, we need to expand any target clone that is not
! 	 the simple case.  Simple cases are dispatched in the later stage.  */
! 
!       if (early == !is_simple_target_clones_case (node))
! 	if (expand_target_clones (node, node->definition)
! 	    && TARGET_HAS_FMV_TARGET_ATTRIBUTE)
! 	  /* In non target_version semantics, dispatch all target clones.  */
! 	  to_dispatch.safe_push (node);
!     }
! 
!   /* In target_version semantics dispatch all FMV function sets with a default
!      implementation in the early stage.
!      Also dispatch any default versions generated by expanding target_clones
!      in the late stage.  */
! 
!   if (!TARGET_HAS_FMV_TARGET_ATTRIBUTE)
!     FOR_EACH_FUNCTION (node)
!       if (is_function_default_version (node->decl)
! 	  && DECL_FUNCTION_VERSIONED (node->decl)
! 	  /* Don't dispatch target clones, as they haven't been expanded so
! 	     are simple.  */
! 	  && !lookup_attribute ("target_clones", DECL_ATTRIBUTES (node->decl)))
! 	to_dispatch.safe_push (node);
  
    for (unsigned i = 0; i < to_dispatch.length (); i++)
      create_dispatcher_calls (to_dispatch[i]);
*************** class pass_target_clone : public simple_
*** 541,554 ****
  {
  public:
    pass_target_clone (gcc::context *ctxt)
!     : simple_ipa_opt_pass (pass_data_target_clone, ctxt)
    {}
  
    /* opt_pass methods: */
    bool gate (function *) final override;
    unsigned int execute (function *) final override
    {
!     return ipa_target_clone ();
    }
  };
  
--- 592,612 ----
  {
  public:
    pass_target_clone (gcc::context *ctxt)
!     : simple_ipa_opt_pass (pass_data_target_clone, ctxt), early_p (false)
    {}
+   bool early_p;
  
+   void set_pass_param (unsigned int n, bool param) final override
+     {
+       gcc_assert (n == 0);
+       early_p = param;
+     }
    /* opt_pass methods: */
    bool gate (function *) final override;
+   opt_pass * clone () final override { return new pass_target_clone (m_ctxt); }
    unsigned int execute (function *) final override
    {
!     return ipa_target_clone (early_p);
    }
  };
  
diff -Nrcpad gcc-16-20250921/gcc/passes.def gcc-16-20250928/gcc/passes.def
*** gcc-16-20250921/gcc/passes.def	Sun Sep 21 22:32:38 2025
--- gcc-16-20250928/gcc/passes.def	Sun Sep 28 22:33:07 2025
*************** along with GCC; see the file COPYING3.
*** 66,71 ****
--- 66,72 ----
        NEXT_PASS (pass_nothrow);
        NEXT_PASS (pass_rebuild_cgraph_edges);
    POP_INSERT_PASSES ()
+   NEXT_PASS (pass_target_clone, true);
  
    NEXT_PASS (pass_local_optimization_passes);
    PUSH_INSERT_PASSES_WITHIN (pass_local_optimization_passes)
*************** along with GCC; see the file COPYING3.
*** 143,149 ****
        POP_INSERT_PASSES ()
    POP_INSERT_PASSES ()
  
!   NEXT_PASS (pass_target_clone);
    NEXT_PASS (pass_ipa_auto_profile);
    PUSH_INSERT_PASSES_WITHIN (pass_ipa_auto_profile)
        NEXT_PASS (pass_feedback_split_functions);
--- 144,150 ----
        POP_INSERT_PASSES ()
    POP_INSERT_PASSES ()
  
!   NEXT_PASS (pass_target_clone, false);
    NEXT_PASS (pass_ipa_auto_profile);
    PUSH_INSERT_PASSES_WITHIN (pass_ipa_auto_profile)
        NEXT_PASS (pass_feedback_split_functions);
diff -Nrcpad gcc-16-20250921/gcc/pretty-print.cc gcc-16-20250928/gcc/pretty-print.cc
*** gcc-16-20250921/gcc/pretty-print.cc	Sun Sep 21 22:32:39 2025
--- gcc-16-20250928/gcc/pretty-print.cc	Sun Sep 28 22:33:07 2025
*************** along with GCC; see the file COPYING3.
*** 38,48 ****
--- 38,55 ----
  #include <iconv.h>
  #endif
  
+ static int
+ decode_utf8_char (const unsigned char *, size_t len, unsigned int *);
+ 
  #ifdef __MINGW32__
  
  /* Replacement for fputs() that handles ANSI escape codes on Windows NT.
     Contributed by: Liu Hao (lh_mouse at 126 dot com)
  
+    Extended by: Peter Damianov
+    Converts UTF-8 to UTF-16 if outputting to a console, so that emojis and
+    various other unicode characters don't get mojibak'd.
+ 
     XXX: This file is compiled into libcommon.a that will be self-contained.
  	It looks like that these functions can be put nowhere else.  */
  
*************** along with GCC; see the file COPYING3.
*** 50,60 ****
  #define WIN32_LEAN_AND_MEAN 1
  #include <windows.h>
  
  /* Write all bytes in [s,s+n) into the specified stream.
!    Errors are ignored.  */
  static void
  write_all (HANDLE h, const char *s, size_t n)
  {
    size_t rem = n;
    DWORD step;
  
--- 57,188 ----
  #define WIN32_LEAN_AND_MEAN 1
  #include <windows.h>
  
+ /* Convert UTF-8 string to UTF-16.
+    Returns true if conversion was performed, false if string is pure ASCII.
+ 
+    If the string contains only ASCII characters, returns false
+    without allocating any memory.  Otherwise, a buffer that the caller
+    must free is allocated and the string is converted into it.  */
+ static bool
+ mingw_utf8_str_to_utf16_str (const char *utf8_str, size_t utf8_len, wchar_t **utf16_str,
+ 	       size_t *utf16_len)
+ {
+   if (utf8_len == 0)
+     {
+       *utf16_str = NULL;
+       *utf16_len = 0;
+       return false;  /* No conversion needed for empty string.  */
+     }
+ 
+   /* First pass: scan for non-ASCII and count UTF-16 code units needed.  */
+   size_t utf16_count = 0;
+   const unsigned char *p = (const unsigned char *) utf8_str;
+   const unsigned char *end = p + utf8_len;
+   bool found_non_ascii = false;
+ 
+   while (p < end)
+     {
+       if (*p <= 127)
+ 	{
+ 	  /* ASCII character - count as 1 UTF-16 unit and advance.  */
+ 	  utf16_count++;
+ 	  p++;
+ 	}
+       else
+ 	{
+ 	  /* Non-ASCII character - decode UTF-8 sequence.  */
+ 	  found_non_ascii = true;
+ 	  unsigned int codepoint;
+ 	  int utf8_char_len = decode_utf8_char (p, end - p, &codepoint);
+ 
+ 	  if (utf8_char_len == 0)
+ 	    return false;  /* Invalid UTF-8.  */
+ 
+ 	  if (codepoint <= 0xFFFF)
+ 	    utf16_count += 1;  /* Single UTF-16 unit.  */
+ 	  else
+ 	    utf16_count += 2;  /* Surrogate pair.  */
+ 
+ 	  p += utf8_char_len;
+ 	}
+     }
+ 
+   /* If string is pure ASCII, no conversion needed.  */
+   if (!found_non_ascii)
+     return false;
+ 
+   *utf16_str = (wchar_t *) xmalloc (utf16_count * sizeof (wchar_t));
+   *utf16_len = utf16_count;
+ 
+   /* Second pass: convert UTF-8 to UTF-16.  */
+   wchar_t *out = *utf16_str;
+   p = (const unsigned char *) utf8_str;
+ 
+   while (p < end)
+     {
+       if (*p <= 127)
+ 	{
+ 	  /* ASCII character.  */
+ 	  *out++ = (wchar_t) *p++;
+ 	}
+       else
+ 	{
+ 	  /* Non-ASCII character - decode and convert.  */
+ 	  unsigned int codepoint;
+ 	  int utf8_char_len = decode_utf8_char (p, end - p, &codepoint);
+ 
+ 	  if (codepoint <= 0xFFFF)
+ 	    {
+ 	      *out++ = (wchar_t) codepoint;
+ 	    }
+ 	  else
+ 	    {
+ 	      /* Convert to UTF-16 surrogate pair.  */
+ 	      codepoint -= 0x10000;
+ 	      *out++ = (wchar_t) (0xD800 + (codepoint >> 10));
+ 	      *out++ = (wchar_t) (0xDC00 + (codepoint & 0x3FF));
+ 	    }
+ 
+ 	  p += utf8_char_len;
+ 	}
+     }
+ 
+   return true;
+ }
+ 
+ /* Check if the handle is a console.  */
+ static bool
+ is_console_handle (HANDLE h)
+ {
+ 	DWORD mode;
+ 	return GetConsoleMode (h, &mode);
+ }
+ 
  /* Write all bytes in [s,s+n) into the specified stream.
! 	 If outputting to a Windows console, convert UTF-8 to UTF-16 if needed.
! 	 Errors are ignored.  */
  static void
  write_all (HANDLE h, const char *s, size_t n)
  {
+ 	/* If writing to console, try to convert from UTF-8 to UTF-16 and use
+ 	   WriteConsoleW.  utf8_to_utf16 will return false if the string is pure
+ 	   ASCII, in which case we fall back to the regular WriteFile path.  */
+ 	if (is_console_handle (h))
+ 	  {
+ 	    wchar_t *utf16_str;
+ 	    size_t utf16_len;
+ 
+ 	    if (mingw_utf8_str_to_utf16_str (s, n, &utf16_str, &utf16_len))
+ 	{
+ 	  DWORD written;
+ 	  WriteConsoleW (h, utf16_str, utf16_len, &written, NULL);
+ 	  free (utf16_str);
+ 	  return;
+ 	}
+       /* If UTF-8 conversion returned false, fall back to WriteFile.  */
+     }
+ 
+   /* WriteFile for regular files or when UTF-16 conversion is not needed.  */
    size_t rem = n;
    DWORD step;
  
*************** mingw_ansi_fputs (const char *str, FILE
*** 712,719 ****
  
  #endif /* __MINGW32__ */
  
- static int
- decode_utf8_char (const unsigned char *, size_t len, unsigned int *);
  static void pp_quoted_string (pretty_printer *, const char *, size_t = -1);
  
  extern void
--- 840,845 ----
diff -Nrcpad gcc-16-20250921/gcc/profile-count.h gcc-16-20250928/gcc/profile-count.h
*** gcc-16-20250921/gcc/profile-count.h	Sun Sep 21 22:32:39 2025
--- gcc-16-20250928/gcc/profile-count.h	Sun Sep 28 22:33:07 2025
*************** public:
*** 450,458 ****
        else
  	{
  	  gcc_checking_assert (other.m_val);
! 	  ret.m_val = MIN (RDIV ((uint64_t)m_val * max_probability,
! 				 other.m_val),
! 			   max_probability);
  	}
        ret.set_quality (MIN (MIN (quality (), other.quality ()), ADJUSTED));
        return ret;
--- 450,456 ----
        else
  	{
  	  gcc_checking_assert (other.m_val);
! 	  ret.m_val = RDIV ((uint64_t)m_val * max_probability, other.m_val);
  	}
        ret.set_quality (MIN (MIN (quality (), other.quality ()), ADJUSTED));
        return ret;
*************** public:
*** 480,488 ****
  	  else
  	    {
  	      gcc_checking_assert (other.m_val);
! 	      m_val = MIN (RDIV ((uint64_t)m_val * max_probability,
! 				 other.m_val),
! 			   max_probability);
  	    }
  	  set_quality (MIN (MIN (quality (), other.quality ()), ADJUSTED));
  	}
--- 478,484 ----
  	  else
  	    {
  	      gcc_checking_assert (other.m_val);
! 	      m_val = RDIV ((uint64_t)m_val * max_probability, other.m_val);
  	    }
  	  set_quality (MIN (MIN (quality (), other.quality ()), ADJUSTED));
  	}
*************** public:
*** 576,584 ****
        gcc_checking_assert (den.m_val);
  
        profile_probability ret;
!       uint64_t val;
!       safe_scale_64bit (m_val, num.m_val, den.m_val, &val);
!       ret.m_val = MIN (val, max_probability);
        ret.set_quality (MIN (MIN (MIN (quality (), ADJUSTED),
  			    num.quality ()), den.quality ()));
        return ret;
--- 572,579 ----
        gcc_checking_assert (den.m_val);
  
        profile_probability ret;
!       ret.m_val = MIN (RDIV ((uint64_t)m_val * num.m_val, den.m_val),
! 		       max_probability);
        ret.set_quality (MIN (MIN (MIN (quality (), ADJUSTED),
  			    num.quality ()), den.quality ()));
        return ret;
*************** public:
*** 1331,1338 ****
  	  return ret;
  	}
        else
! 	ret.m_val = RDIV (m_val * profile_probability::max_probability,
! 			  overall.m_val);
        ret.set_quality (MIN (MAX (MIN (m_quality, overall.m_quality),
  				 GUESSED), ADJUSTED));
        return ret;
--- 1326,1339 ----
  	  return ret;
  	}
        else
! 	{
! 	  gcc_checking_assert (overall.m_val);
! 	  uint64_t tmp;
! 	  safe_scale_64bit (m_val, profile_probability::max_probability,
! 			    overall.m_val, &tmp);
! 	  gcc_checking_assert (tmp <= profile_probability::max_probability);
! 	  ret.m_val = tmp;
! 	}
        ret.set_quality (MIN (MAX (MIN (m_quality, overall.m_quality),
  				 GUESSED), ADJUSTED));
        return ret;
diff -Nrcpad gcc-16-20250921/gcc/target.def gcc-16-20250928/gcc/target.def
*** gcc-16-20250921/gcc/target.def	Sun Sep 21 22:32:39 2025
--- gcc-16-20250928/gcc/target.def	Sun Sep 28 22:33:08 2025
*************** version at run-time. @var{decl} is one v
*** 2606,2611 ****
--- 2606,2624 ----
  identical versions.",
   tree, (void *decl), NULL)
  
+ /* Target hook is used to ignore certain versions specified in a target_clones
+    annoration.  STR is the version to be considered.  */
+ DEFHOOK
+ (check_target_clone_version ,
+  "This hook is used to check if a version specified in a @code{target_clones}\n\
+ annotation is valid. @var{str} is the version to be considered.\n\
+ If @var{loc} is not @code{NULL} then emit warnings for invalid versions at\n\
+ that location.  Otherwise emit no diagnostics.\n\
+ Returns @code{true} if @var{str} is a valid version string, and @code{false}\n\
+ otherwise",
+  bool, (string_slice str, location_t *loc),
+  hook_stringslice_locationtptr_true)
+ 
  /* Returns a code for a target-specific builtin that implements
     reciprocal of a target-specific function, or NULL_TREE if not available.  */
  DEFHOOK
*************** changed via the optimize attribute or pr
*** 6912,6930 ****
   void, (void),
   hook_void_void)
  
! /* This function returns true if DECL1 and DECL2 are versions of the same
!    function.  DECL1 and DECL2 are function versions if and only if they
!    have the same function signature and different target specific attributes,
!    that is, they are compiled for different target machines.  */
  DEFHOOK
! (function_versions,
!  "This target hook returns @code{true} if @var{DECL1} and @var{DECL2} are\n\
! versions of the same function.  @var{DECL1} and @var{DECL2} are function\n\
! versions if and only if they have the same function signature and\n\
! different target specific attributes, that is, they are compiled for\n\
! different target machines.",
!  bool, (tree decl1, tree decl2),
!  hook_bool_tree_tree_false)
  
  /* Function to determine if one function can inline another function.  */
  #undef HOOK_PREFIX
--- 6925,6938 ----
   void, (void),
   hook_void_void)
  
! /* This function returns true if FN1 and FN2 define the same version of a
!    function.  */
  DEFHOOK
! (same_function_versions,
!  "This target hook returns @code{true} if the target/target-version strings\n\
! @var{fn1} and @var{fn2} imply the same function version.",
!  bool, (string_slice fn1, string_slice fn2),
!  hook_stringslice_stringslice_unreachable)
  
  /* Function to determine if one function can inline another function.  */
  #undef HOOK_PREFIX
diff -Nrcpad gcc-16-20250921/gcc/testsuite/ChangeLog gcc-16-20250928/gcc/testsuite/ChangeLog
*** gcc-16-20250921/gcc/testsuite/ChangeLog	Sun Sep 21 22:32:39 2025
--- gcc-16-20250928/gcc/testsuite/ChangeLog	Sun Sep 28 22:33:08 2025
***************
*** 1,3 ****
--- 1,323 ----
+ 2025-09-27  YunQiang Su  <syq@gcc.gnu.org>
+ 
+ 	* gcc.target/mips/mips16e2.c: Use isa_rev=2 instead of >=2.
+ 	* gcc.target/mips/mips16e2-cache.c: Ditto.
+ 	* gcc.target/mips/mips16e2-cmov.c: Ditto.
+ 	* gcc.target/mips/mips16e2-gp.c: Ditto.
+ 
+ 2025-09-27  ChengLulu  <chenglulu@loongson.cn>
+ 
+ 	PR target/99217
+ 	* gcc.target/mips/pr99217.c: New test.
+ 
+ 2025-09-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/112632
+ 	* g++.dg/cpp2a/concepts-conv4.C: New test.
+ 
+ 2025-09-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/121854
+ 	* g++.dg/cpp23/explicit-obj-lambda19.C: New test.
+ 
+ 2025-09-27  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/122048
+ 	* g++.dg/cpp1y/lambda-generic-this6.C: New test.
+ 
+ 2025-09-27  Jie Mei  <jie.mei@oss.cipunited.com>
+ 
+ 	* gcc.target/mips/mips16e2-cache.c: Use isa_rev>=2 instead of
+ 	-mips32r2 and remove -mips16 option.
+ 	* gcc.target/mips/mips16e2-cmov.c: Add isa_rev>=2 and remove
+ 	-mips16 option.
+ 	* gcc.target/mips/mips16e2-gp.c: Same as above.
+ 	* gcc.target/mips/mips16e2.c: Same as above.
+ 
+ 2025-09-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/87908
+ 	* gfortran.dg/pr87908.f90: Delete.
+ 
+ 2025-09-27  Jie Mei  <jie.mei@oss.cipunited.com>
+ 
+ 	* gcc.target/mips/mips-msubf.c: New tests for MIPSr6.
+ 
+ 2025-09-26  Alejandro Colomar  <alx@kernel.org>
+ 
+ 	* gcc.dg/Wmultiple-parameter-fwd-decl-lists.c: New test.
+ 
+ 2025-09-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	* gfortran.dg/pdt_48.f03:
+ 
+ 2025-09-26  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	PR c/88642
+ 	* gcc.dg/c2y-init-1.c: New test.
+ 
+ 2025-09-26  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/121875
+ 	* gcc.target/loongarch/can_inline_1.c: New test.
+ 	* gcc.target/loongarch/can_inline_2.c: New test.
+ 	* gcc.target/loongarch/can_inline_3.c: New test.
+ 	* gcc.target/loongarch/can_inline_4.c: New test.
+ 	* gcc.target/loongarch/can_inline_5.c: New test.
+ 	* gcc.target/loongarch/can_inline_6.c: New test.
+ 	* gcc.target/loongarch/pr121875.c: New test.
+ 
+ 2025-09-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121939
+ 	* gfortran.dg/deferred_character_39.f90: Disable temporary
+ 	workaround for character(kind=4) deferred-length bug.
+ 
+ 2025-09-24  Dusan Stojkovic  <Dusan.Stojkovic@rt-rk.com>
+ 
+ 	PR target/121778
+ 	* gcc.target/riscv/pr121778-1.c: New test.
+ 	* gcc.target/riscv/pr121778-2.c: New test.
+ 
+ 2025-09-24  Joseph Myers  <josmyers@redhat.com>
+ 
+ 	* gcc.dg/c23-complit-9.c: New test.
+ 
+ 2025-09-24  Mikael Morin  <morin-mikael@orange.fr>
+ 
+ 	PR fortran/122046
+ 	* gfortran.dg/submodule_34.f90: New test.
+ 
+ 2025-09-24  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/121762
+ 	* c-c++-common/ubsan/align-5.c: Update as __builtin_assume_aligned
+ 	is no longer taked into account.
+ 	* c-c++-common/ubsan/align-5a.c: New test.
+ 
+ 2025-09-24  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR middle-end/66462
+ 	* gcc.target/loongarch/fclass-compile.c: Update test.
+ 	* gcc.target/loongarch/fclass-run.c: Likewise.
+ 
+ 2025-09-24  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122019
+ 	* g++.dg/modules/lang-4_a.C: New test.
+ 	* g++.dg/modules/lang-4_b.C: New test.
+ 
+ 2025-09-24  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/87908
+ 	* gfortran.dg/pr87908.f90: New test.
+ 
+ 2025-09-24  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/sat/sat_u_mul-6-u16-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-6-u8-from-u16.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-6-u8-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-6-u32-from-u64.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u16.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u32.c: New test.
+ 	* gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u64.c: New test.
+ 
+ 2025-09-23  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/121986
+ 	* gcc.dg/sarif-output/extra-semicolon.c: New test.
+ 	* gcc.dg/sarif-output/extra-semicolon.py: New test.
+ 	* gcc.dg/sarif-output/missing-semicolon.py: Verify the description
+ 	of the insertion fix-it hint.
+ 	* libgdiagnostics.dg/test-fix-it-hint-c.py: Verify the description
+ 	of the replacement fix-it hint.
+ 
+ 2025-09-23  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* gcc.target/arm/acle/simd32.c (test_sadd16): Scan for sadd16.
+ 	* gcc.target/arm/armv8_2-fp16-neon-1.c (vcgtz, 128-bit): Scan for vcgt.
+ 	* gcc.target/arm/armv8_2-fp16-neon-2.c (vcgtz, 128-bit): Scan for vcgt.
+ 	(vmul, vmul N): Use check function bodies to avoid ambiguity.
+ 	* gcc.target/arm/armv8_2-fp16-scalar-1.c (vrndm): Scan for vrintm.
+ 	(vrndn): Scan for vrintn.
+ 	(vrndp): Scan for vrintp.
+ 	(vrndx): Scan for vrintx.
+ 	* gcc.target/arm/asm-flag-1.c: Scan for movlt.
+ 	* gcc.target/arm/csneg.c: Convert to check-function-bodies.
+ 	* gcc.target/arm/mve/dlstp-compile-asm-2.c (test10): Fix comment that caused test9 scan
+ 	to be run twice.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c: Convert to check-function-bodies.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c: Likewise.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* g++.target/aarch64/mv-1.C: Remove option.
+ 	* g++.target/aarch64/mv-and-mvc-error1.C: Ditto.
+ 	* g++.target/aarch64/mv-and-mvc-error2.C: Ditto.
+ 	* g++.target/aarch64/mv-and-mvc-error3.C: Ditto.
+ 	* g++.target/aarch64/mv-and-mvc1.C: Ditto.
+ 	* g++.target/aarch64/mv-and-mvc2.C: Ditto.
+ 	* g++.target/aarch64/mv-and-mvc3.C: Ditto.
+ 	* g++.target/aarch64/mv-and-mvc4.C: Ditto.
+ 	* g++.target/aarch64/mv-error1.C: Ditto.
+ 	* g++.target/aarch64/mv-error2.C: Ditto.
+ 	* g++.target/aarch64/mv-error3.C: Ditto.
+ 	* g++.target/aarch64/mv-error4.C: Ditto.
+ 	* g++.target/aarch64/mv-error5.C: Ditto.
+ 	* g++.target/aarch64/mv-error6.C: Ditto.
+ 	* g++.target/aarch64/mv-error7.C: Ditto.
+ 	* g++.target/aarch64/mv-error8.C: Ditto.
+ 	* g++.target/aarch64/mv-pragma.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols1.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols10.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols11.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols12.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols13.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols2.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols3.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols4.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols5.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols6.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols7.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols8.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols9.C: Ditto.
+ 	* g++.target/aarch64/mvc-error1.C: Ditto.
+ 	* g++.target/aarch64/mvc-error2.C: Ditto.
+ 	* g++.target/aarch64/mvc-symbols1.C: Ditto.
+ 	* g++.target/aarch64/mvc-symbols2.C: Ditto.
+ 	* g++.target/aarch64/mvc-symbols3.C: Ditto.
+ 	* g++.target/aarch64/mvc-symbols4.C: Ditto.
+ 	* g++.target/aarch64/mv-warning1.C: Removed.
+ 	* g++.target/aarch64/mvc-warning1.C: Removed.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* g++.target/aarch64/mv-and-mvc-error1.C: New test.
+ 	* g++.target/aarch64/mv-and-mvc-error2.C: New test.
+ 	* g++.target/aarch64/mv-and-mvc-error3.C: New test.
+ 	* g++.target/aarch64/mv-error1.C: New test.
+ 	* g++.target/aarch64/mv-error2.C: New test.
+ 	* g++.target/aarch64/mv-error3.C: New test.
+ 	* g++.target/aarch64/mv-error4.C: New test.
+ 	* g++.target/aarch64/mv-error5.C: New test.
+ 	* g++.target/aarch64/mv-error6.C: New test.
+ 	* g++.target/aarch64/mv-error7.C: New test.
+ 	* g++.target/aarch64/mv-error8.C: New test.
+ 	* g++.target/aarch64/mvc-error1.C: New test.
+ 	* g++.target/aarch64/mvc-error2.C: New test.
+ 	* g++.target/aarch64/mvc-warning1.C: Modified test.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* g++.target/aarch64/mv-and-mvc1.C: New test.
+ 	* g++.target/aarch64/mv-and-mvc2.C: New test.
+ 	* g++.target/aarch64/mv-and-mvc3.C: New test.
+ 	* g++.target/aarch64/mv-and-mvc4.C: New test.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* g++.target/aarch64/mv-1.C: Change for target_version semantics.
+ 	* g++.target/aarch64/mv-symbols2.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols3.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols4.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols5.C: Ditto.
+ 	* g++.target/aarch64/mvc-symbols3.C: Ditto.
+ 	* g++.target/riscv/mv-symbols2.C: Ditto.
+ 	* g++.target/riscv/mv-symbols3.C: Ditto.
+ 	* g++.target/riscv/mv-symbols4.C: Ditto.
+ 	* g++.target/riscv/mv-symbols5.C: Ditto.
+ 	* g++.target/riscv/mvc-symbols3.C: Ditto.
+ 	* g++.target/aarch64/mv-symbols10.C: New test.
+ 	* g++.target/aarch64/mv-symbols11.C: New test.
+ 	* g++.target/aarch64/mv-symbols12.C: New test.
+ 	* g++.target/aarch64/mv-symbols13.C: New test.
+ 	* g++.target/aarch64/mv-symbols6.C: New test.
+ 	* g++.target/aarch64/mv-symbols7.C: New test.
+ 	* g++.target/aarch64/mv-symbols8.C: New test.
+ 	* g++.target/aarch64/mv-symbols9.C: New test.
+ 
+ 2025-09-23  Alfie Richards  <alfie.richards@arm.com>
+ 
+ 	* g++.target/i386/mv-symbols1.C: Update x86 FMV mangling.
+ 	* g++.target/i386/mv-symbols3.C: Ditto.
+ 	* g++.target/i386/mv-symbols4.C: Ditto.
+ 	* g++.target/i386/mv-symbols5.C: Ditto.
+ 
+ 2025-09-22  Peter Bergner  <bergner@tenstorrent.com>
+ 
+ 	PR target/121982
+ 	* gcc.target/riscv/pr121982.c: New test.
+ 
+ 2025-09-22  Nathaniel Shead  <nathanieloshead@gmail.com>
+ 
+ 	PR c++/122015
+ 	* g++.dg/modules/lambda-11.h: New test.
+ 	* g++.dg/modules/lambda-11_a.H: New test.
+ 	* g++.dg/modules/lambda-11_b.C: New test.
+ 
+ 2025-09-22  Pan Li  <pan2.li@intel.com>
+ 
+ 	PR middle-end/122021
+ 	* gcc.target/i386/pr122021-0.c: New test.
+ 
+ 2025-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122016
+ 	* gcc.dg/torture/pr122016.c: New testcase.
+ 
+ 2025-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/122023
+ 	* gcc.dg/vect/pr122023.c: New testcase.
+ 
+ 2025-09-22  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	PR target/116205
+ 	* gcc.target/pru/mabi-ti-1.c: Adjust diagnostic location.
+ 	* gcc.target/pru/mabi-ti-2.c: Ditto.
+ 	* gcc.target/pru/mabi-ti-3.c: Ditto.
+ 	* gcc.target/pru/mabi-ti-5.c: Ditto.
+ 	* gcc.target/pru/mabi-ti-6.c: Ditto.
+ 	* gcc.target/pru/mabi-ti-7.c: Adjust diagnostic locations and
+ 	add global variables for checking.
+ 	* gcc.target/pru/mabi-ti-11.c: New test.
+ 	* gcc.target/pru/mabi-ti-12.c: New test.
+ 	* gcc.target/pru/mabi-ti-8.c: New test.
+ 	* gcc.target/pru/mabi-ti-9.c: New test.
+ 
+ 2025-09-22  Steve Kargl  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/103508
+ 	* gfortran.dg/pr103508.f90: New test.
+ 
+ 2025-09-21  Andrew Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* gcc.dg/builtin-unreachable-7.c: New test.
+ 
+ 2025-09-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/121161
+ 	* gfortran.dg/matmul_blas_3.f90: Add effective target lp64.
+ 
+ 2025-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/108581
+ 	* gfortran.dg/deferred_character_39.f90: New test.
+ 
  2025-09-20  Patrick Palka  <ppalka@redhat.com>
  
  	PR c++/121981
***************
*** 130,136 ****
  
  2025-09-18  Paul Thomas  <pault@gcc.gnu.org>
  
! 	PR fortran/114815
  	* gfortran.dg/pdt_3.f03: Add missing deallocation of 'matrix'.
  	* gfortran.dg/pdt_17.f03: Change dg-error text.
  	* gfortran.dg/pdt_47.f03: New test.
--- 450,456 ----
  
  2025-09-18  Paul Thomas  <pault@gcc.gnu.org>
  
! 	PR fortran/121948
  	* gfortran.dg/pdt_3.f03: Add missing deallocation of 'matrix'.
  	* gfortran.dg/pdt_17.f03: Change dg-error text.
  	* gfortran.dg/pdt_47.f03: New test.
diff -Nrcpad gcc-16-20250921/gcc/testsuite/c-c++-common/ubsan/align-5.c gcc-16-20250928/gcc/testsuite/c-c++-common/ubsan/align-5.c
*** gcc-16-20250921/gcc/testsuite/c-c++-common/ubsan/align-5.c	Sun Sep 21 22:32:41 2025
--- gcc-16-20250928/gcc/testsuite/c-c++-common/ubsan/align-5.c	Sun Sep 28 22:33:14 2025
***************
*** 1,8 ****
  /* { dg-do compile } */
  /* { dg-options "-fno-sanitize=null -fsanitize=alignment -O2" } */
! /* Check that when optimizing if we know the alignment is right
!    and we are not doing -fsanitize=null instrumentation we don't
!    instrument the alignment check.  */
  
  __attribute__((noinline, noclone)) int
  foo (char *p)
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-fno-sanitize=null -fsanitize=alignment -O2" } */
! /* __builtin_assume_aligned should be instrumented too. UBSAN alignment
!    should not depend on it.  */
  
  __attribute__((noinline, noclone)) int
  foo (char *p)
*************** foo (char *p)
*** 12,15 ****
    return *q;
  }
  
! /* { dg-final { scan-assembler-not "__ubsan_handle" } } */
--- 11,14 ----
    return *q;
  }
  
! /* { dg-final { scan-assembler "__ubsan_handle" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/c-c++-common/ubsan/align-5a.c gcc-16-20250928/gcc/testsuite/c-c++-common/ubsan/align-5a.c
*** gcc-16-20250921/gcc/testsuite/c-c++-common/ubsan/align-5a.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/c-c++-common/ubsan/align-5a.c	Sun Sep 28 22:33:14 2025
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fno-sanitize=null -fsanitize=alignment -O2" } */
+ /* Check that when optimizing if we know the alignment is right
+    and we are not doing -fsanitize=null instrumentation we don't
+    instrument the alignment check.  */
+ 
+ __attribute__((noinline, noclone)) int
+ foo (int *p)
+ {
+   /* Align the pointer explictly. */
+   __INTPTR_TYPE__ t = (__INTPTR_TYPE__)p;
+   t &= ~0xf;
+   p = (int*)t;
+ 
+   return *p;
+ }
+ 
+ /* { dg-final { scan-assembler-not "__ubsan_handle" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C gcc-16-20250928/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C
*** gcc-16-20250921/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this6.C	Sun Sep 28 22:33:16 2025
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/122048
+ // { dg-do compile { target c++14 } }
+ 
+ class X {
+   void f();
+   int i;
+ };
+ void X::f() {[&](auto) {sizeof i;}(1);}
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C gcc-16-20250928/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C
*** gcc-16-20250921/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda19.C	Sun Sep 28 22:33:16 2025
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/121854
+ // { dg-do compile { target c++23 } }
+ 
+ struct S
+ {
+     static void static_func(){}
+ 
+     void func()
+     {
+         auto lambda = [](this auto)
+         {
+             static_func();
+         };
+     }
+ };
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.dg/cpp2a/concepts-conv4.C gcc-16-20250928/gcc/testsuite/g++.dg/cpp2a/concepts-conv4.C
*** gcc-16-20250921/gcc/testsuite/g++.dg/cpp2a/concepts-conv4.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.dg/cpp2a/concepts-conv4.C	Sun Sep 28 22:33:16 2025
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/112632
+ // { dg-do compile { target c++20 } }
+ 
+ template<int N> concept A = N != 0;
+ template<char C> concept B = A<C>;
+ template<int N> concept C = B<N>;
+ 
+ static_assert(A<256>);
+ static_assert(!C<256>);
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.dg/modules/lambda-11.h gcc-16-20250928/gcc/testsuite/g++.dg/modules/lambda-11.h
*** gcc-16-20250921/gcc/testsuite/g++.dg/modules/lambda-11.h	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.dg/modules/lambda-11.h	Sun Sep 28 22:33:19 2025
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/122015
+ 
+ template <typename> auto declval();
+ template <typename... _BindArgs> void bind_front() {
+   [... __bound_args(_BindArgs{})] {};
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.dg/modules/lambda-11_a.H gcc-16-20250928/gcc/testsuite/g++.dg/modules/lambda-11_a.H
*** gcc-16-20250921/gcc/testsuite/g++.dg/modules/lambda-11_a.H	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.dg/modules/lambda-11_a.H	Sun Sep 28 22:33:19 2025
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/122015
+ // { dg-do compile { target c++20 } }
+ // { dg-additional-options "-fmodule-header" }
+ // { dg-module-cmi {} }
+ 
+ #include "lambda-11.h"
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.dg/modules/lambda-11_b.C gcc-16-20250928/gcc/testsuite/g++.dg/modules/lambda-11_b.C
*** gcc-16-20250921/gcc/testsuite/g++.dg/modules/lambda-11_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.dg/modules/lambda-11_b.C	Sun Sep 28 22:33:19 2025
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/122015
+ // { dg-do compile { target c++20 } }
+ // { dg-additional-options "-fmodules -fno-module-lazy" }
+ 
+ #include "lambda-11.h"
+ import "lambda-11_a.H";
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.dg/modules/lang-4_a.C gcc-16-20250928/gcc/testsuite/g++.dg/modules/lang-4_a.C
*** gcc-16-20250921/gcc/testsuite/g++.dg/modules/lang-4_a.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.dg/modules/lang-4_a.C	Sun Sep 28 22:33:19 2025
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/122019
+ // { dg-additional-options "-fmodules -Wno-global-module" }
+ 
+ module;
+ 
+ typedef int pthread_once_t;
+ 
+ export module M;
+ 
+ namespace ns {
+   using ::pthread_once_t;
+ }
+ 
+ // note: non-function types don't have language linkage
+ extern "C++" enum E { c };
+ extern "C" typedef int T;
+ 
+ extern "C" int foo;
+ extern "C++" int bar;
+ 
+ extern "C" int qux;
+ extern "C++" int zap;
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.dg/modules/lang-4_b.C gcc-16-20250928/gcc/testsuite/g++.dg/modules/lang-4_b.C
*** gcc-16-20250921/gcc/testsuite/g++.dg/modules/lang-4_b.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.dg/modules/lang-4_b.C	Sun Sep 28 22:33:19 2025
***************
*** 0 ****
--- 1,26 ----
+ // PR c++/122019
+ // { dg-additional-options "-fmodules -Wno-global-module" }
+ // Language linkage for types, variables, and lazy-loading in extern contexts.
+ 
+ module;
+ 
+ extern "C" enum E { c };
+ extern "C++" typedef int T;
+ 
+ extern "C++" int foo;  // { dg-message "existing" }
+ extern "C" int bar;  // { dg-message "existing" }
+ 
+ module M;
+ 
+ extern "C" ns::pthread_once_t x;
+ 
+ E e;
+ T t;
+ 
+ extern "C" { int use1 = foo; }  // { dg-message "during load" }
+ extern "C" { int use2 = bar; }  // { dg-message "during load" }
+ // { dg-error "conflicting language linkage for imported declaration 'int foo'" "" { target *-*-* } 0 }
+ // { dg-error "conflicting language linkage for imported declaration 'int bar'" "" { target *-*-* } 0 }
+ 
+ extern "C++" int qux;  // { dg-error "conflicting declaration" }
+ extern "C" int zap;  // { dg-error "conflicting declaration" }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-1.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-1.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-1.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  __attribute__((target_version("default")))
  int foo ()
--- 1,6 ----
*************** int bar()
*** 37,39 ****
--- 36,42 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mrng:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._MrngMflagm:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mflagm:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error1.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error1.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo () { return 3; } /* { dg-message "previous declaration of .int foo \\\[\\\[target_version\\(.dotprod.\\)\\\]\\\] \\(\\)." } */
+ 
+ __attribute__ ((target_clones ("dotprod", "sve"))) int
+ foo () { return 1; } /* { dg-error ".int foo \\\[\\\[target_clones\\(.dotprod., .sve.\\)\\\]\\\] \\(\\). conflicts for version .dotprod." } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error2.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error2.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error2.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("default"))) int
+ foo () { return 1; } /* { dg-message "old declaration .int foo \\\[\\\[target_version\\(.default.\\)\\\]\\\] \\(\\)." } */
+ 
+ __attribute__ ((target_clones ("dotprod", "sve"))) float
+ foo () { return 3; } /* { dg-error "ambiguating new declaration of .float foo \\\[\\\[target_clones\\(.dotprod., .sve.\\)\\\]\\\] \\(\\)." } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error3.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error3.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc-error3.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ float foo () { return 1; } /* { dg-message ".float foo\\(\\). previously defined here" } */
+ 
+ __attribute__ ((target_clones ("default", "dotprod", "sve"))) float
+ foo () { return 3; } /* { dg-error "redefinition of .float foo \\\[\\\[target_clones\\(.default., .dotprod., .sve.\\)\\\]\\\] \\(\\)." } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc1.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc1.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__((target_version("default")))
+ int foo ()
+ {
+   return 0;
+ }
+ 
+ __attribute__((target_clones("dotprod", "sve+sve2")))
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_clones("sve2+sme", "sve2+sme2")))
+ int foo ()
+ {
+   return 2;
+ }
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Msve2Msme:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Msve2Msme2:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc2.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc2.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc2.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__((target_version("default")))
+ int foo ();
+ 
+ __attribute__((target_clones("dotprod", "sve+sve2")))
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_clones("sve2+sme", "sve2+sme2")))
+ int foo ()
+ {
+   return 2;
+ }
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov:\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Msve2Msme:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Msve2Msme2:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc3.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc3.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc3.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,40 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__((target_clones("dotprod", "sve+sve2")))
+ int foo ();
+ 
+ __attribute__((target_version("default")))
+ int foo ()
+ {
+   return 0;
+ }
+ 
+ __attribute__((target_clones("sve2+sme", "sve2+sme2")))
+ int foo ()
+ {
+   return 2;
+ }
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Msve2Msme:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Msve2Msme2:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
+ // { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\.default\n" 1 } }
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._Mdotprod\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._MsveMsve2\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._Msve2Msme\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._Msve2Msme2\n" 1 } } */
+ 
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc4.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc4.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-and-mvc4.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-and-mvc4.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__((target_version("dotprod")))
+ int foo ()
+ {
+   return 0;
+ }
+ 
+ __attribute__((target_clones("default", "sve+sve2")))
+ int foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__((target_clones("sve2+sme", "sve2+sme2")))
+ int foo ()
+ {
+   return 2;
+ }
+ 
+ int bar()
+ {
+   return foo ();
+ }
+ 
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Msve2Msme:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Msve2Msme2:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error1.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error1.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("default"))) int
+ foo ();
+ 
+ __attribute__ ((target_version ("default"))) int
+ foo () { return 1; } /* { dg-message "old declaration .int foo \\\[\\\[target_version\\(.default.\\)\\\]\\\] \\(\\)." } */
+ 
+ __attribute__ ((target_version ("dotprod"))) float
+ foo () { return 3; } /* { dg-error "ambiguating new declaration of .float foo \\\[\\\[target_version\\(.dotprod.\\)\\\]\\\] \\(\\)." } */
+ 
+ __attribute__ ((target_version ("sve"))) int
+ foo2 () { return 1; } /* { dg-message "old declaration" } */
+ 
+ __attribute__ ((target_version ("dotprod"))) float
+ foo2 () { return 3; } /* { dg-error "ambiguating new declaration of" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error2.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error2.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error2.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("dotprod"))) float
+ foo () { return 3; } /* { dg-message ".float foo \\\[\\\[target_version\\(.dotprod.\\)\\\]\\\] \\(\\). previously defined here" } */
+ 
+ __attribute__ ((target_version ("dotprod"))) float
+ foo () { return 3; } /* { dg-error "redefinition of .float foo \\\[\\\[target_version\\(.dotprod.\\)\\\]\\\] \\(\\)." } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error3.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error3.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error3.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error3.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("dotprod"))) float
+ foo () { return 3; }
+ 
+ __attribute__ ((target_version ("default"))) float
+ foo () { return 3; } /* { dg-message "previously defined here" } */
+ 
+ __attribute__ ((target_version ("default"))) float
+ foo () { return 3; } /* { dg-error "redefinition of" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error4.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error4.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error4.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error4.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("test"))) float
+ foo () { return 3; } /* { dg-error "invalid feature modifier .test. of value .test. in .target_version. attribute" } */
+ 
+ __attribute__ ((target_version ("sve+test"))) float
+ foo2 () { return 3; } /* { dg-error "invalid feature modifier .test. of value .sve.test. in .target_version. attribute" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error5.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error5.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error5.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error5.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("sve+sve2"))) int
+ foo();
+ 
+ int bar () { return foo (); } /* { dg-error "no default version in scope" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error6.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error6.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error6.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error6.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("sve+sve2"))) int
+ foo () {
+ 	return 1;
+ }
+ 
+ __attribute__ ((target_version ("sve"))) int
+ foo () {
+ 	return 1;
+ }
+ 
+ int bar () { return foo (); } /* { dg-error "no matching function for call to" } */
+ 
+ __attribute__ ((target_version ("sve+sve2"))) int
+ foo2();
+ 
+ int bar2 () { return foo2 (); } /* { dg-error "no default version in scope" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error7.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error7.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error7.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error7.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo ();
+ 
+ __attribute__ ((target_version ("sve+sve2"))) int
+ foo ();
+ 
+ int bar () { return foo (); } /* { dg-error "no matching function for call to" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error8.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error8.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-error8.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-error8.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo ();
+ 
+ int
+ bar ()
+ {
+   return foo (); /* { dg-error "no default version in scope" } */
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-pragma.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-pragma.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-pragma.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-pragma.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  #pragma GCC target ("+sve")
  
--- 1,6 ----
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols1.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols1.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols1.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  int foo ()
  {
--- 1,6 ----
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols10.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols10.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols10.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols10.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("default"))) void
+ foo (int a = 3);
+ 
+ __attribute__ ((target_version ("sve"))) void
+ foo (int a = 4);
+ 
+ void bar() {
+   foo();
+ }
+ 
+ __attribute__ ((target_version ("sve"))) void
+ foo2 (int a = 6);
+ 
+ __attribute__ ((target_version ("default"))) void
+ foo2 (int a = 5);
+ 
+ void bar2() {
+   foo2();
+ }
+ 
+ 
+ /* { dg-final { scan-assembler-times "\n\tmov\tw\[0-9\]\+, 3\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tmov\tw\[0-9\]\+, 5\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols11.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols11.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols11.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols11.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("default"))) int
+ foo () { return 1; }
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo () { return 3; }
+ 
+ int (*test)();
+ 
+ void bar ()
+ {
+   test = foo;
+ }
+ 
+ __attribute__ ((target_version ("default"))) int
+ foo2 ();
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo2 ();
+ 
+ void bar2 ()
+ {
+   test = foo2;
+ }
+ 
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z4foo2v\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols12.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols12.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols12.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols12.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O0" } */
+ 
+ int foo () {
+   return 1;
+ }
+ 
+ void
+ bar ()
+ {
+   foo ();
+ }
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo ();
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._Mdotprod\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\.default\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols13.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols13.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols13.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols13.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O0" } */
+ 
+ int foo () {
+   return 1;
+ }
+ 
+ void bar ()
+ {
+   int (*test)() = foo;
+ 
+   test();
+ }
+ 
+ __attribute__ ((target_version ("dotprod"))) int foo ();
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._Mdotprod\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\.default\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols2.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols2.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols2.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols2.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  __attribute__((target_version("default")))
  int foo ()
--- 1,6 ----
*************** int foo (int)
*** 41,53 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
--- 40,52 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols3.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols3.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols3.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols3.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  __attribute__((target_version("default")))
  int foo ();
--- 1,6 ----
*************** int bar()
*** 29,38 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */
--- 28,37 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols4.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols4.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols4.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols4.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  __attribute__((target_version("default")))
  int foo ()
--- 1,6 ----
*************** int bar()
*** 44,49 ****
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
--- 43,48 ----
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols5.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols5.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols5.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols5.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  __attribute__((target_version("default")))
  int foo ();
--- 1,6 ----
*************** int bar()
*** 44,53 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 1 } } */
--- 43,52 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols6.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols6.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols6.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols6.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("default"))) int
+ foo ()
+ {
+   return 1;
+ }
+ 
+ int bar()
+ {
+   return foo();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov:\n" 0 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
+ /* { dg-final { scan-assembler-times "bl\t_Z3foov.default\n" 1 } } */
+ /* { dg-final { scan-assembler-times ".global\t_Z3foov\n" 1 } } */
+ /* { dg-final { scan-assembler-times ".set\t_Z3foov,_Z3foov.default\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols7.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols7.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols7.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols7.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo ();
+ 
+ __attribute__ ((target_version ("sve+sve2"))) int
+ foo ();
+ 
+ __attribute__ ((target_version ("default"))) int
+ foo ();
+ 
+ __attribute__ ((target_version ("sve+sve2"))) int
+ foo ()
+ {
+   return 5;
+ }
+ __attribute__ ((target_version ("dotprod"))) int
+ foo ()
+ {
+   return 3;
+ }
+ __attribute__ ((target_version ("default"))) int
+ foo ()
+ {
+   return 1;
+ }
+ 
+ int
+ bar ()
+ {
+   return foo ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._MsveMsve2\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._Mdotprod\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\.default\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols8.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols8.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols8.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols8.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,45 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo ();
+ __attribute__ ((target_version ("sve+sve2"))) int
+ foo ();
+ 
+ int
+ foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo ()
+ {
+   return 3;
+ }
+ __attribute__ ((target_version ("sve+sve2"))) int
+ foo ()
+ {
+   return 5;
+ }
+ 
+ int
+ bar ()
+ {
+   return foo ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._MsveMsve2\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._Mdotprod\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\.default\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols9.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols9.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-symbols9.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-symbols9.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,42 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O0" } */
+ 
+ int
+ foo ();
+ 
+ int
+ foo ()
+ {
+   return 1;
+ }
+ 
+ __attribute__ ((target_version ("dotprod"))) int
+ foo ()
+ {
+   return 3;
+ }
+ __attribute__ ((target_version ("sve+sve2"))) int
+ foo ()
+ {
+   return 5;
+ }
+ 
+ int
+ bar ()
+ {
+   return foo ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._MsveMsve2\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\._Mdotprod\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\tadrp\tx\[0-9\]+, _Z3foov\.default\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
+ 
+ /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
+ /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-warning1.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-warning1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mv-warning1.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mv-warning1.C	Thu Jan  1 00:00:00 1970
***************
*** 1,9 ****
- /* { dg-do compile } */
- /* { dg-require-ifunc "" } */
- /* { dg-options "-O0" } */
- 
- __attribute__((target_version("default")))
- int foo () { return 1; }/* { dg-warning "Function Multi Versioning support is experimental, and the behavior is likely to change" } */
- 
- __attribute__((target_version("rng")))
- int foo () { return 1; }
--- 0 ----
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-error1.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-error1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-error1.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-error1.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_clones ("default, dotprod"))) float
+ foo (); /* { dg-message "previous declaration of .float foo \\\[\\\[target_clones\\(.default., .dotprod.\\)\\\]\\\] \\(\\)." } */
+ 
+ __attribute__ ((target_clones ("dotprod", "sve"))) float
+ foo () { return 3; } /* { dg-error ".float foo \\\[\\\[target_clones\\(.dotprod., .sve.\\)\\\]\\\] \\(\\). conflicts with overlapping .target_clone. declaration" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-error2.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-error2.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-error2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-error2.C	Sun Sep 28 22:33:23 2025
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-require-ifunc "" } */
+ /* { dg-options "-O0" } */
+ 
+ __attribute__ ((target_clones ("default, dotprod"))) float
+ foo () { return 3; } /* { dg-message "previous declaration" } */
+ 
+ __attribute__ ((target_clones ("dotprod", "sve"))) float
+ foo () { return 3; } /* { dg-error "conflicts with overlapping .target_clone. declaration" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-symbols1.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-symbols1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-symbols1.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-symbols1.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  __attribute__((target_clones("default", "dotprod", "sve+sve2")))
  int foo ()
--- 1,6 ----
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-symbols2.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-symbols2.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-symbols2.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-symbols2.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  __attribute__((target_clones("default", "dotprod", "sve+sve2")))
  int foo ()
--- 1,6 ----
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-symbols3.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-symbols3.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-symbols3.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-symbols3.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  __attribute__((target_clones("default", "dotprod", "sve+sve2")))
  int foo ();
--- 1,6 ----
*************** int bar(int x)
*** 22,36 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tbl\t_Z3fooi\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
--- 21,35 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._Mdotprod:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\._MsveMsve2:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tbl\t_Z3foov\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, %gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._Mdotprod:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\._MsveMsve2:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tbl\t_Z3fooi\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, %gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-symbols4.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-symbols4.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-symbols4.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-symbols4.C	Sun Sep 28 22:33:23 2025
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
- /* { dg-additional-options "-Wno-experimental-fmv-target" } */
  
  __attribute__((target_clones("default", "dotprod", "sve+sve2")))
  int foo ();
--- 1,6 ----
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-warning1.C gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-warning1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/aarch64/mvc-warning1.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/aarch64/mvc-warning1.C	Sun Sep 28 22:33:23 2025
***************
*** 2,6 ****
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
  
! __attribute__((target_clones("default", "sve")))
! int foo () { return 1; }/* { dg-warning "Function Multi Versioning support is experimental, and the behavior is likely to change" } */
--- 2,13 ----
  /* { dg-require-ifunc "" } */
  /* { dg-options "-O0" } */
  
! __attribute__((target_clones("default", "dotprod", "sve+sve2")))
! int foo () {
!   return 1;
! }
! 
! __attribute__((target_clones("invalid1+sve")))
! int foo () { /* { dg-warning "invalid feature modifier .invalid1. in version .invalid1\\+sve. for .target_clones. attribute" } */
!   return 2;
! }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/i386/mv-symbols1.C gcc-16-20250928/gcc/testsuite/g++.target/i386/mv-symbols1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/i386/mv-symbols1.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/i386/mv-symbols1.C	Sun Sep 28 22:33:23 2025
*************** int bar(int x)
*** 55,68 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_slm:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.sse4.2:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z7_Z3foovv\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3foovv, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3foovv,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_slm:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.sse4.2:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z7_Z3fooii\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3fooii, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3fooii,_Z3fooi\.resolver\n" 1 } } */
--- 55,68 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_slm:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.sse4.2:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov.ifunc\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov.ifunc, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov.ifunc,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_slm:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.sse4.2:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi.ifunc\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi.ifunc, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi.ifunc,_Z3fooi\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/i386/mv-symbols3.C gcc-16-20250928/gcc/testsuite/g++.target/i386/mv-symbols3.C
*** gcc-16-20250921/gcc/testsuite/g++.target/i386/mv-symbols3.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/i386/mv-symbols3.C	Sun Sep 28 22:33:23 2025
*************** int bar()
*** 32,44 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_slm:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.sse4.2:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z7_Z3foovv\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3foovv, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3foovv,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_slm:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.sse4.2:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3fooii, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3fooii,_Z3fooi\.resolver\n" 0 } } */
--- 32,44 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_slm:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.sse4.2:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov.ifunc\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov.ifunc, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov.ifunc,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_slm:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.sse4.2:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi.ifunc, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi.ifunc,_Z3fooi\.resolver\n" 0 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/i386/mv-symbols4.C gcc-16-20250928/gcc/testsuite/g++.target/i386/mv-symbols4.C
*** gcc-16-20250921/gcc/testsuite/g++.target/i386/mv-symbols4.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/i386/mv-symbols4.C	Sun Sep 28 22:33:23 2025
*************** int bar()
*** 38,50 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_slm:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.sse4.2:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z7_Z3foovv\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3foovv, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3foovv,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_slm:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.sse4.2:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3fooii, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3fooii,_Z3fooi\.resolver\n" 0 } } */
--- 38,50 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_slm:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.sse4.2:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov.ifunc\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov.ifunc, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov.ifunc,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_slm:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.sse4.2:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi.ifunc, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi.ifunc,_Z3fooi\.resolver\n" 0 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/i386/mv-symbols5.C gcc-16-20250928/gcc/testsuite/g++.target/i386/mv-symbols5.C
*** gcc-16-20250921/gcc/testsuite/g++.target/i386/mv-symbols5.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/i386/mv-symbols5.C	Sun Sep 28 22:33:23 2025
*************** int bar()
*** 44,56 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_slm:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.sse4.2:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z7_Z3foovv\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3foovv, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3foovv,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_slm:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.sse4.2:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z7_Z3fooii, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z7_Z3fooii,_Z3fooi\.resolver\n" 0 } } */
--- 44,56 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch_slm:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.sse4.2:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov.ifunc\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov.ifunc, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov.ifunc,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch_slm:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.sse4.2:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi.ifunc, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi.ifunc,_Z3fooi\.resolver\n" 0 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/i386/pr80566-1.C gcc-16-20250928/gcc/testsuite/g++.target/i386/pr80566-1.C
*** gcc-16-20250921/gcc/testsuite/g++.target/i386/pr80566-1.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/i386/pr80566-1.C	Sun Sep 28 22:33:23 2025
***************
*** 1,5 ****
  // { dg-do compile }
! // { dg-options "-O2 -march=haswell -mtune-ctrl=avx256_store_by_pieces" }
  // { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
  
  #include <cstring>
--- 1,5 ----
  // { dg-do compile }
! // { dg-options "-O2 -march=haswell -mtune-ctrl=avx256_move_by_pieces" }
  // { dg-skip-if "requires hosted libstdc++ for cstring" { ! hostedlib } }
  
  #include <cstring>
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/riscv/mv-symbols2.C gcc-16-20250928/gcc/testsuite/g++.target/riscv/mv-symbols2.C
*** gcc-16-20250921/gcc/testsuite/g++.target/riscv/mv-symbols2.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/riscv/mv-symbols2.C	Sun Sep 28 22:33:23 2025
*************** int foo (int)
*** 47,61 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
--- 47,61 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/riscv/mv-symbols3.C gcc-16-20250928/gcc/testsuite/g++.target/riscv/mv-symbols3.C
*** gcc-16-20250921/gcc/testsuite/g++.target/riscv/mv-symbols3.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/riscv/mv-symbols3.C	Sun Sep 28 22:33:23 2025
*************** int bar()
*** 36,45 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 0 } } */
--- 36,45 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 0 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/riscv/mv-symbols4.C gcc-16-20250928/gcc/testsuite/g++.target/riscv/mv-symbols4.C
*** gcc-16-20250921/gcc/testsuite/g++.target/riscv/mv-symbols4.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/riscv/mv-symbols4.C	Sun Sep 28 22:33:23 2025
*************** int bar()
*** 50,56 ****
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi(?:@plt)?\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
--- 50,56 ----
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi(?:@plt)?\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/riscv/mv-symbols5.C gcc-16-20250928/gcc/testsuite/g++.target/riscv/mv-symbols5.C
*** gcc-16-20250921/gcc/testsuite/g++.target/riscv/mv-symbols5.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/riscv/mv-symbols5.C	Sun Sep 28 22:33:23 2025
*************** int bar()
*** 48,57 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 1 } } */
--- 48,57 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 1 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/g++.target/riscv/mvc-symbols3.C gcc-16-20250928/gcc/testsuite/g++.target/riscv/mvc-symbols3.C
*** gcc-16-20250921/gcc/testsuite/g++.target/riscv/mvc-symbols3.C	Sun Sep 21 22:32:44 2025
--- gcc-16-20250928/gcc/testsuite/g++.target/riscv/mvc-symbols3.C	Sun Sep 28 22:33:23 2025
*************** int bar(int x)
*** 28,42 ****
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi(?:@plt)?\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
--- 28,42 ----
  /* { dg-final { scan-assembler-times "\n_Z3foov\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 0 } } */
  
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.default:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
  /* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi(?:@plt)?\n" 1 } } */
! /* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 0 } } */
! /* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c gcc-16-20250928/gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c
*** gcc-16-20250921/gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.dg/Wmultiple-parameter-fwd-decl-lists.c	Sun Sep 28 22:33:26 2025
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Wmultiple-parameter-fwd-decl-lists" } */
+ 
+ void f(int n, int m; int n, int m);
+ void g(int n; int m; int n, int m); /* { dg-warning "more than one list of forward declarations" } */
+ void h(int n; int n; int n); /* { dg-warning "more than one list of forward declarations" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.dg/c23-complit-9.c gcc-16-20250928/gcc/testsuite/gcc.dg/c23-complit-9.c
*** gcc-16-20250921/gcc/testsuite/gcc.dg/c23-complit-9.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.dg/c23-complit-9.c	Sun Sep 28 22:33:27 2025
***************
*** 0 ****
--- 1,9 ----
+ /* Test register _Atomic compound literals.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c23 -pedantic-errors" } */
+ 
+ void
+ f ()
+ {
+   (register _Atomic int) { 1 };
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.dg/c2y-init-1.c gcc-16-20250928/gcc/testsuite/gcc.dg/c2y-init-1.c
*** gcc-16-20250921/gcc/testsuite/gcc.dg/c2y-init-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.dg/c2y-init-1.c	Sun Sep 28 22:33:27 2025
***************
*** 0 ****
--- 1,48 ----
+ /* Test invalid initializers that are consistent with the syntax: undefined
+    behavior ("shall" in Semantics not Constraints) before C2y, constraint
+    violation in C2y.  Scalar cases; see bug 88642.  */
+ /* { dg-do compile } */
+ /* { dg-options "-std=c2y -pedantic-errors" } */
+ 
+ struct s { int a; };
+ union u { int a; };
+ 
+ int i1 = { 1, 2 }; /* { dg-error "excess elements in scalar initializer" } */
+ int i2 = { { 1 } }; /* { dg-error "braces around scalar initializer" } */
+ int i3 = { { 1, } }; /* { dg-error "braces around scalar initializer" } */
+ int i4 = { { 1 }, }; /* { dg-error "braces around scalar initializer" } */
+ int i5 = { 1, { } }; /* { dg-error "excess elements in scalar initializer" } */
+ /* { dg-error "braces around scalar initializer" "braces" { target *-*-* } .-1 } */
+ int i6 = { { } }; /* { dg-error "braces around scalar initializer" } */
+ int i7 = { { }, }; /* { dg-error "braces around scalar initializer" } */
+ int i8 = { { { 1 } } }; /* { dg-error "braces around scalar initializer" } */
+ struct s s1 =
+   {
+     { /* { dg-warning "braces around scalar initializer" } */
+       { 1 } /* { dg-error "braces around scalar initializer" } */
+     }
+   };
+ union u u1 =
+   {
+     { /* { dg-warning "braces around scalar initializer" } */
+       { 1 } /* { dg-error "braces around scalar initializer" } */
+     }
+   };
+ int a1[1] =
+   {
+     { /* { dg-warning "braces around scalar initializer" } */
+       { 1 } /* { dg-error "braces around scalar initializer" } */
+     }
+   };
+ int *p1 = &(int) { { 1 } }; /* { dg-error "braces around scalar initializer" } */
+ int *p2 = &(int) { { 1, } }; /* { dg-error "braces around scalar initializer" } */
+ 
+ int ok1 = { 1 };
+ struct s ok2 = { { 1 } }; /* { dg-warning "braces around scalar initializer" } */
+ struct s ok3 = { { 1, } }; /* { dg-warning "braces around scalar initializer" } */
+ int *ok4 = &(int) { 1 };
+ int *ok5 = &(int) { 1, };
+ int ok6[1] = { { 1 } }; /* { dg-warning "braces around scalar initializer" } */
+ int ok7[1] = { { 1, } }; /* { dg-warning "braces around scalar initializer" } */
+ union u ok8 = { { 1 } }; /* { dg-warning "braces around scalar initializer" } */
+ union u ok9 = { { 1, } }; /* { dg-warning "braces around scalar initializer" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.c gcc-16-20250928/gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.c
*** gcc-16-20250921/gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.c	Sun Sep 28 22:33:28 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fdiagnostics-format=sarif-file -Wpedantic" } */
+ 
+ /* Verify SARIF output for a deletion fix-it hint.  */
+ 
+ struct foo
+ {
+   int color;;  
+ };
+ 
+ /* Verify that some JSON was written to a file with the expected name:
+    { dg-final { verify-sarif-file } } */
+ 
+ /* Use a Python script to verify various properties about the generated
+    .sarif file:
+    { dg-final { run-sarif-pytest extra-semicolon.c "extra-semicolon.py" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.py gcc-16-20250928/gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.py
*** gcc-16-20250921/gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.py	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.dg/sarif-output/extra-semicolon.py	Sun Sep 28 22:33:28 2025
***************
*** 0 ****
--- 1,37 ----
+ from sarif import *
+ 
+ import pytest
+ 
+ @pytest.fixture(scope='function', autouse=True)
+ def sarif():
+     return sarif_from_env()
+ 
+ def test_deletion_fixit(sarif):
+     runs = sarif['runs']
+     run = runs[0]
+     results = run['results']
+ 
+     # We expect a single error with a secondary location and a fix-it hint.
+     #
+     # The textual form of the diagnostic would look like this:
+     #  . PATH/extra-semicolon.c:8:13: warning: extra semicolon in struct or union specified [-Wpedantic]
+     #  .     8 |   int color;;
+     #  .       |             ^
+     #  .       |             -
+     assert len(results) == 1
+     
+     result = results[0]
+     assert result['level'] == 'warning'
+     assert result['message']['text'] == "extra semicolon in struct or union specified"
+ 
+     # We expect one fix-it hint representing a deletion of ';'
+     assert len(result['fixes']) == 1
+     fix = result['fixes'][0]
+     assert fix['description']['text'] == "Delete ';'"
+     assert len(fix['artifactChanges']) == 1
+     change = fix['artifactChanges'][0]
+     replacement = change['replacements'][0]
+     assert replacement['deletedRegion']['startLine'] == 8
+     assert replacement['deletedRegion']['startColumn'] == 13
+     assert replacement['deletedRegion']['endColumn'] == 14
+     assert replacement['insertedContent']['text'] == ''
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.dg/sarif-output/missing-semicolon.py gcc-16-20250928/gcc/testsuite/gcc.dg/sarif-output/missing-semicolon.py
*** gcc-16-20250921/gcc/testsuite/gcc.dg/sarif-output/missing-semicolon.py	Sun Sep 21 22:33:00 2025
--- gcc-16-20250928/gcc/testsuite/gcc.dg/sarif-output/missing-semicolon.py	Sun Sep 28 22:33:28 2025
*************** def test_location_relationships(sarif):
*** 79,86 ****
  
      # We expect one fix-it hint representing an insertion of ';'
      assert len(result['fixes']) == 1
!     assert len(result['fixes'][0]['artifactChanges']) == 1
!     change = result['fixes'][0]['artifactChanges'][0]
      assert change['artifactLocation']['uri'].endswith('missing-semicolon.c')
      assert len(change['replacements']) == 1
      replacement = change['replacements'][0]
--- 79,88 ----
  
      # We expect one fix-it hint representing an insertion of ';'
      assert len(result['fixes']) == 1
!     fix = result['fixes'][0]
!     assert fix['description']['text'] == "Insert ';'"
!     assert len(fix['artifactChanges']) == 1
!     change = fix['artifactChanges'][0]
      assert change['artifactLocation']['uri'].endswith('missing-semicolon.c')
      assert len(change['replacements']) == 1
      replacement = change['replacements'][0]
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.dg/torture/pr122016.c gcc-16-20250928/gcc/testsuite/gcc.dg/torture/pr122016.c
*** gcc-16-20250921/gcc/testsuite/gcc.dg/torture/pr122016.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.dg/torture/pr122016.c	Sun Sep 28 22:33:28 2025
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-ftree-pre" } */
+ 
+ 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) {
+     if (strncmp("", &merge_parse_args_argv_0, 2))
+       help_found = TRUE;
+     else {
+       for (;;) {
+         _setjmp();
+         break;
+       }
+       i++;
+       directory_exists();
+     }
+     i++;
+   }
+   _setjmp();
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.dg/vect/pr122023.c gcc-16-20250928/gcc/testsuite/gcc.dg/vect/pr122023.c
*** gcc-16-20250921/gcc/testsuite/gcc.dg/vect/pr122023.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.dg/vect/pr122023.c	Sun Sep 28 22:33:30 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target int32plus } */
+ 
+ unsigned int gvar1;
+ int gvar2;
+ void f ()
+ {
+   unsigned int temp1;
+   while (gvar1--)
+     {
+       temp1 = gvar2;
+       gvar2 >>= 1;
+       gvar2 &= 2147483647;
+       temp1 <<= 31;
+       gvar2 |= temp1;
+     }
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/acle/simd32.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/acle/simd32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/acle/simd32.c	Sun Sep 21 22:33:06 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/acle/simd32.c	Sun Sep 28 22:33:42 2025
*************** test_sadd16 (int16x2_t a, int16x2_t b)
*** 315,321 ****
    return __sadd16 (a, b);
  }
  
! /* { dg-final { scan-assembler-times "\tsadd8\t...?, ...?, ...?" 1 } } */
  
  int16x2_t
  test_sasx (int16x2_t a, int16x2_t b)
--- 315,321 ----
    return __sadd16 (a, b);
  }
  
! /* { dg-final { scan-assembler-times "\tsadd16\t...?, ...?, ...?" 1 } } */
  
  int16x2_t
  test_sasx (int16x2_t a, int16x2_t b)
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c	Sun Sep 21 22:33:06 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c	Sun Sep 28 22:33:42 2025
*************** VCMP1_TEST (vceqz)
*** 142,148 ****
  
  VCMP1_TEST (vcgtz)
  /* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  */
! /* { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, #0} 1 } }  */
  
  VCMP1_TEST (vcgez)
  /* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  */
--- 142,148 ----
  
  VCMP1_TEST (vcgtz)
  /* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  */
! /* { dg-final { scan-assembler-times {vcgt\.f16\tq[0-9]+, q[0-9]+, #0} 1 } }  */
  
  VCMP1_TEST (vcgez)
  /* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c	Sun Sep 21 22:33:06 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c	Sun Sep 28 22:33:42 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-require-effective-target arm_v8_2a_fp16_neon_ok }  */
  /* { dg-options "-O2 -ffast-math" }  */
  /* { dg-add-options arm_v8_2a_fp16_neon }  */
+ /* { dg-final { check-function-bodies "**" "" "" } }  */
  
  /* Test instructions generated for the FP16 vector intrinsics with
     -ffast-math */
*************** VCMP1_TEST (vceqz)
*** 143,149 ****
  
  VCMP1_TEST (vcgtz)
  /* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  */
! /* { dg-final { scan-assembler-times {vceq\.f16\tq[0-9]+, q[0-9]+, #0} 1 } }  */
  
  VCMP1_TEST (vcgez)
  /* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  */
--- 144,150 ----
  
  VCMP1_TEST (vcgtz)
  /* { dg-final { scan-assembler-times {vcgt\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  */
! /* { dg-final { scan-assembler-times {vcgt\.f16\tq[0-9]+, q[0-9]+, #0} 1 } }  */
  
  VCMP1_TEST (vcgez)
  /* { dg-final { scan-assembler-times {vcge\.f16\td[0-9]+, d[0-9]+, #0} 1 } }  */
*************** VCVT_N_TEST (vcvt, _u16_f16, uint, float
*** 187,229 ****
  
  VCVT_TEST (vcvta, _s16_f16, int, float)
  /* { dg-final { scan-assembler-times {vcvta\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvta\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
! */
  
  VCVT_TEST (vcvta, _u16_f16, uint, float)
  /* { dg-final { scan-assembler-times {vcvta\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvta\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
! */
  
  VCVT_TEST (vcvtm, _s16_f16, int, float)
  /* { dg-final { scan-assembler-times {vcvtm\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtm\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
! */
  
  VCVT_TEST (vcvtm, _u16_f16, uint, float)
  /* { dg-final { scan-assembler-times {vcvtm\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtm\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
! */
  
  VCVT_TEST (vcvtn, _s16_f16, int, float)
  /* { dg-final { scan-assembler-times {vcvtn\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtn\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
! */
  
  VCVT_TEST (vcvtn, _u16_f16, uint, float)
  /* { dg-final { scan-assembler-times {vcvtn\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtn\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
! */
  
  VCVT_TEST (vcvtp, _s16_f16, int, float)
  /* { dg-final { scan-assembler-times {vcvtp\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtp\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }
! */
  
  VCVT_TEST (vcvtp, _u16_f16, uint, float)
  /* { dg-final { scan-assembler-times {vcvtp\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtp\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }
! */
  
  UNOP_TEST (vabs)
  /* { dg-final { scan-assembler-times {vabs\.f16\td[0-9]+, d[0-9]+} 1 } }
--- 188,222 ----
  
  VCVT_TEST (vcvta, _s16_f16, int, float)
  /* { dg-final { scan-assembler-times {vcvta\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvta\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }  */
  
  VCVT_TEST (vcvta, _u16_f16, uint, float)
  /* { dg-final { scan-assembler-times {vcvta\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvta\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }  */
  
  VCVT_TEST (vcvtm, _s16_f16, int, float)
  /* { dg-final { scan-assembler-times {vcvtm\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtm\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }  */
  
  VCVT_TEST (vcvtm, _u16_f16, uint, float)
  /* { dg-final { scan-assembler-times {vcvtm\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtm\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }  */
  
  VCVT_TEST (vcvtn, _s16_f16, int, float)
  /* { dg-final { scan-assembler-times {vcvtn\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtn\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }  */
  
  VCVT_TEST (vcvtn, _u16_f16, uint, float)
  /* { dg-final { scan-assembler-times {vcvtn\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtn\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }  */
  
  VCVT_TEST (vcvtp, _s16_f16, int, float)
  /* { dg-final { scan-assembler-times {vcvtp\.s16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtp\.s16\.f16\tq[0-9]+, q[0-9]+} 1 } }  */
  
  VCVT_TEST (vcvtp, _u16_f16, uint, float)
  /* { dg-final { scan-assembler-times {vcvtp\.u16\.f16\td[0-9]+, d[0-9]+} 1 } }
!    { dg-final { scan-assembler-times {vcvtp\.u16\.f16\tq[0-9]+, q[0-9]+} 1 } }  */
  
  UNOP_TEST (vabs)
  /* { dg-final { scan-assembler-times {vabs\.f16\td[0-9]+, d[0-9]+} 1 } }
*************** BINOP_TEST (vminnm)
*** 326,339 ****
    { dg-final { scan-assembler-times {vminnm\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } }  */
  
  BINOP_TEST (vmul)
! /* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 3 } }
!    { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 2 } }  */
  BINOP_LANE_TEST (vmul, 2)
  /* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+\[2\]} 1 } }
     { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, d[0-9]+\[2\]} 1 } }  */
  BINOP_N_TEST (vmul)
! /* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+} 3 } }
!    { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 2 } }*/
  
  float16x4_t
  test_vpadd_16x4 (float16x4_t a, float16x4_t b)
--- 319,360 ----
    { dg-final { scan-assembler-times {vminnm\.f16\tq[0-9]+, q[0-9]+, q[0-9]+} 1 } }  */
  
  BINOP_TEST (vmul)
! /*
! ** test_vmul_16x4:
! **	...
! **	vmul\.f16	d[0-9]+, d[0-9]+, d[0-9]+
! **	...
! */
! /*
! ** test_vmul_16x8:
! **	...
! **	vmul\.f16	q[0-9]+, q[0-9]+, q[0-9]+
! **	...
! */
  BINOP_LANE_TEST (vmul, 2)
  /* { dg-final { scan-assembler-times {vmul\.f16\td[0-9]+, d[0-9]+, d[0-9]+\[2\]} 1 } }
     { dg-final { scan-assembler-times {vmul\.f16\tq[0-9]+, q[0-9]+, d[0-9]+\[2\]} 1 } }  */
  BINOP_N_TEST (vmul)
! /*
! ** test_vmul_n_16x4:
! **	...
! **	vdup\.f?16	d[0-9]+, .+
! **	...
! **	vmul\.f16	d[0-9]+, d[0-9]+, d[0-9]+
! **	...
! */
! /*
! ** test_vmul_n_16x8:
! **	...
! ** (
! **	vdup\.f?16	q[0-9]+, .+
! ** |
! **	vld1.16	{d[0-9]+\[\], d[0-9]+\[\]}, \[(sp|r[0-9]+)\]
! ** )
! **	...
! **	vmul\.f16	q[0-9]+, q[0-9]+, q[0-9]+
! **	...
! */
  
  float16x4_t
  test_vpadd_16x4 (float16x4_t a, float16x4_t b)
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c	Sun Sep 21 22:33:06 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-1.c	Sun Sep 28 22:33:42 2025
*************** UNOP_TEST (vrnda)
*** 164,179 ****
  /* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vrndm)
! /* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vrndn)
! /* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vrndp)
! /* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vrndx)
! /* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vsqrt)
  /* { dg-final { scan-assembler-times {vsqrt\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
--- 164,179 ----
  /* { dg-final { scan-assembler-times {vrinta\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vrndm)
! /* { dg-final { scan-assembler-times {vrintm\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vrndn)
! /* { dg-final { scan-assembler-times {vrintn\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vrndp)
! /* { dg-final { scan-assembler-times {vrintp\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vrndx)
! /* { dg-final { scan-assembler-times {vrintx\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
  
  UNOP_TEST (vsqrt)
  /* { dg-final { scan-assembler-times {vsqrt\.f16\ts[0-9]+, s[0-9]+} 1 } }  */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/asm-flag-1.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/asm-flag-1.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/asm-flag-1.c	Sun Sep 21 22:33:06 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/asm-flag-1.c	Sun Sep 28 22:33:42 2025
*************** void f(char *out)
*** 32,37 ****
  /* { dg-final { scan-assembler "movhi" } } */
  /* { dg-final { scan-assembler "movls" } } */
  /* { dg-final { scan-assembler "movge" } } */
! /* { dg-final { scan-assembler "movls" } } */
  /* { dg-final { scan-assembler "movgt" } } */
  /* { dg-final { scan-assembler "movle" } } */
--- 32,37 ----
  /* { dg-final { scan-assembler "movhi" } } */
  /* { dg-final { scan-assembler "movls" } } */
  /* { dg-final { scan-assembler "movge" } } */
! /* { dg-final { scan-assembler "movlt" } } */
  /* { dg-final { scan-assembler "movgt" } } */
  /* { dg-final { scan-assembler "movle" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/csneg.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/csneg.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/csneg.c	Sun Sep 21 22:33:06 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/csneg.c	Sun Sep 28 22:33:44 2025
***************
*** 2,34 ****
  /* { dg-require-effective-target arm_arch_v8_1m_main_ok } */
  /* { dg-options "-O2" } */
  /* { dg-add-options arm_arch_v8_1m_main } */
  
  int
  test_csneg32_condasn1(int w0, int w1, int w2, int w3)
  {
    int w4;
- 
-   /* { dg-final { scan-assembler "csneg\tr\[0-9\]*.*ne" } } */
    w4 = (w0 == w1) ? -w2 : w3;
    return w4;
  }
  
  int
  test_csneg32_condasn2(int w0, int w1, int w2, int w3)
  {
    int w4;
- 
-   /* { dg-final { scan-assembler "csneg\tr\[0-9\]*.*eq" } } */
    w4 = (w0 == w1) ? w3 : -w2;
    return w4;
  }
  
  unsigned long long
  test_csneg_uxtw (unsigned int a, unsigned int b, unsigned int c)
  {
    unsigned int val;
- 
-   /* { dg-final { scan-assembler "csneg\tr\[0-9\]*.*ne" } } */
    val = a ? b : -c;
    return val;
  }
--- 2,55 ----
  /* { dg-require-effective-target arm_arch_v8_1m_main_ok } */
  /* { dg-options "-O2" } */
  /* { dg-add-options arm_arch_v8_1m_main } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
  
+ /*
+ ** test_csneg32_condasn1:
+ **	cmp\tr0, r1
+ **	csneg\tr0, r3, r2, ne
+ **	bx\tlr
+ */
  int
  test_csneg32_condasn1(int w0, int w1, int w2, int w3)
  {
    int w4;
    w4 = (w0 == w1) ? -w2 : w3;
    return w4;
  }
  
+ /*
+ ** test_csneg32_condasn2:
+ **	cmp\tr0, r1
+ **	csneg\tr0, r3, r2, eq
+ **	bx\tlr
+ */
  int
  test_csneg32_condasn2(int w0, int w1, int w2, int w3)
  {
    int w4;
    w4 = (w0 == w1) ? w3 : -w2;
    return w4;
  }
  
+ /*
+ ** test_csneg_uxtw: { target arm_little_endian }
+ **	cmp\tr0, #0
+ **	csneg\tr0, r1, r2, ne
+ **	movs\tr1, #0
+ **	bx\tlr
+ */
+ /*
+ ** test_csneg_uxtw: { target { ! arm_little_endian } }
+ **	cmp\tr0, #0
+ **	csneg\tr1, r1, r2, ne
+ **	movs\tr0, #0
+ **	bx\tlr
+ */
  unsigned long long
  test_csneg_uxtw (unsigned int a, unsigned int b, unsigned int c)
  {
    unsigned int val;
    val = a ? b : -c;
    return val;
  }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c	Sun Sep 21 22:33:06 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/dlstp-compile-asm-2.c	Sun Sep 28 22:33:45 2025
*************** void test10 (int32_t *a, int32_t *b, int
*** 326,333 ****
  }
  /*
     We don't need that extra vctp in the loop, but we currently do not optimize
!    it away, however, it is not wrong to use it...
! */
  /*
  ** test10:
  **...
--- 326,332 ----
  }
  /*
     We don't need that extra vctp in the loop, but we currently do not optimize
!    it away, however, it is not wrong to use it... */
  /*
  ** test10:
  **...
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c	Sun Sep 21 22:33:07 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f16.c	Sun Sep 28 22:33:45 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
  /* { dg-add-options arm_v8_1m_mve_fp } */
  /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
*************** foo (float16x8_t a)
*** 10,22 ****
  {
    return vgetq_lane_f16 (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.u16"  }  } */
  
  float16_t
  foo1 (float16x8_t a)
  {
    return vgetq_lane (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.u16"  }  } */
--- 11,47 ----
  {
    return vgetq_lane_f16 (a, 1);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v8hf
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.u16\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.u16\t(r[0-9]+), q0\[1\]
! **	vmov\.f16\ts0, \1\t@ __fp16
! ** )
! **	bx\tlr
! */
  
  float16_t
  foo1 (float16x8_t a)
  {
    return vgetq_lane (a, 1);
  }
! /*
! ** foo1:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v8hf
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.u16\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.u16\t(r[0-9]+), q0\[1\]
! **	vmov\.f16\ts0, \1\t@ __fp16
! ** )
! **	bx\tlr
! */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c	Sun Sep 21 22:33:07 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_f32.c	Sun Sep 28 22:33:45 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
  /* { dg-add-options arm_v8_1m_mve_fp } */
  /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
*************** foo (float32x4_t a)
*** 10,22 ****
  {
    return vgetq_lane_f32 (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.32"  }  } */
  
  float32_t
  foo1 (float32x4_t a)
  {
    return vgetq_lane (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.32"  }  } */
--- 11,47 ----
  {
    return vgetq_lane_f32 (a, 1);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v4sf
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.32\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.32\t(r[0-9]+), q0\[1\]
! **	vmov\ts0, \1
! ** )
! **	bx\tlr
! */
  
  float32_t
  foo1 (float32x4_t a)
  {
    return vgetq_lane (a, 1);
  }
! /*
! ** foo1:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v4sf
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.32\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.32\t(r[0-9]+), q0\[1\]
! **	vmov\ts0, \1
! ** )
! **	bx\tlr
! */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c	Sun Sep 21 22:33:07 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s16.c	Sun Sep 28 22:33:45 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
*************** foo (int16x8_t a)
*** 10,22 ****
  {
    return vgetq_lane_s16 (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.s16"  }  } */
  
  int16_t
  foo1 (int16x8_t a)
  {
    return vgetq_lane (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.s16"  }  } */
--- 11,45 ----
  {
    return vgetq_lane_s16 (a, 1);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v8hi
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.s16\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.s16\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
  
  int16_t
  foo1 (int16x8_t a)
  {
    return vgetq_lane (a, 1);
  }
! /*
! ** foo1:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v8hi
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.s16\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.s16\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c	Sun Sep 21 22:33:07 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s32.c	Sun Sep 28 22:33:45 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
*************** foo (int32x4_t a)
*** 10,22 ****
  {
    return vgetq_lane_s32 (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.32"  }  } */
  
  int32_t
  foo1 (int32x4_t a)
  {
    return vgetq_lane (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.32"  }  } */
--- 11,45 ----
  {
    return vgetq_lane_s32 (a, 1);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v4si
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.32\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.32\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
  
  int32_t
  foo1 (int32x4_t a)
  {
    return vgetq_lane (a, 1);
  }
! /*
! ** foo1:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v4si
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.32\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.32\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c	Sun Sep 21 22:33:07 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_s8.c	Sun Sep 28 22:33:45 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
*************** foo (int8x16_t a)
*** 10,22 ****
  {
    return vgetq_lane_s8 (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.s8"  }  } */
  
  int8_t
  foo1 (int8x16_t a)
  {
    return vgetq_lane (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.s8"  }  } */
--- 11,45 ----
  {
    return vgetq_lane_s8 (a, 1);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v16qi
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.s8\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.s8\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
  
  int8_t
  foo1 (int8x16_t a)
  {
    return vgetq_lane (a, 1);
  }
! /*
! ** foo1:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v16qi
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.s8\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.s8\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c	Sun Sep 21 22:33:07 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u16.c	Sun Sep 28 22:33:45 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
*************** foo (uint16x8_t a)
*** 10,22 ****
  {
    return vgetq_lane_u16 (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.u16"  }  } */
  
  uint16_t
  foo1 (uint16x8_t a)
  {
    return vgetq_lane (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.u16"  }  } */
--- 11,45 ----
  {
    return vgetq_lane_u16 (a, 1);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v8hi
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.u16\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.u16\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
  
  uint16_t
  foo1 (uint16x8_t a)
  {
    return vgetq_lane (a, 1);
  }
! /*
! ** foo1:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v8hi
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.u16\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.u16\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c	Sun Sep 21 22:33:07 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c	Sun Sep 28 22:33:45 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
*************** foo (uint32x4_t a)
*** 10,22 ****
  {
    return vgetq_lane_u32 (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.32"  }  } */
  
  uint32_t
  foo1 (uint32x4_t a)
  {
    return vgetq_lane (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.32"  }  } */
--- 11,45 ----
  {
    return vgetq_lane_u32 (a, 1);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v4si
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.32\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.32\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
  
  uint32_t
  foo1 (uint32x4_t a)
  {
    return vgetq_lane (a, 1);
  }
! /*
! ** foo1:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v4si
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.32\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.32\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c	Sun Sep 21 22:33:07 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c	Sun Sep 28 22:33:45 2025
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
  /* { dg-additional-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
  
  #include "arm_mve.h"
  
*************** foo (uint8x16_t a)
*** 10,22 ****
  {
    return vgetq_lane_u8 (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.u8"  }  } */
  
  uint8_t
  foo1 (uint8x16_t a)
  {
    return vgetq_lane (a, 1);
  }
! 
! /* { dg-final { scan-assembler "vmov.u8"  }  } */
--- 11,45 ----
  {
    return vgetq_lane_u8 (a, 1);
  }
! /*
! ** foo:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v16qi
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.u8\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.u8\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
  
  uint8_t
  foo1 (uint8x16_t a)
  {
    return vgetq_lane (a, 1);
  }
! /*
! ** foo1:
! ** (
! 	-mfloat-abi=softfp
! **	vmov\td[0-9]+, r0, r1  @ v16qi
! **	vmov\td[0-9]+, r2, r3
! **	vmov\.u8\tr0, q[0-7]\[1\]
! ** |
! 	-mfloat-abi=hard
! **	vmov\.u8\tr0, q0\[1\]
! ** )
! **	bx\tlr
! */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memcmp-2.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memcmp-2.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memcmp-2.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memcmp-2.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile { target ia32 } } */
! /* { dg-options "-O2 -mavx2 -mmove-max=128 -mstore-max=128" } */
  
  int foo(char *a)
  {
--- 1,5 ----
  /* { dg-do compile { target ia32 } } */
! /* { dg-options "-O2 -mavx2 -mmove-max=128" } */
  
  int foo(char *a)
  {
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memcpy-19.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memcpy-19.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memcpy-19.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memcpy-19.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=sapphirerapids -mmove-max=128 -mstore-max=128" } */
  
  extern char *dst, *src;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=sapphirerapids -mmove-max=128" } */
  
  extern char *dst, *src;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memcpy-20.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memcpy-20.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memcpy-20.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memcpy-20.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=sapphirerapids -mmove-max=256 -mstore-max=256" } */
  
  extern char *dst, *src;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=sapphirerapids -mmove-max=256" } */
  
  extern char *dst, *src;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-11.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-11.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-11.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-11.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-14.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-14.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-14.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-14.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-2.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-2.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-2.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-2.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-20.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-20.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-20.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-20.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-23.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-23.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-23.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-23.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-29.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-29.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-29.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-29.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-30.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-30.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-30.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-30.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-33.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-33.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-33.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-33.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-34.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-34.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-34.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-34.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-37.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-37.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-37.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-37.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_store_by_pieces" } */
  
  void
  foo (int a1, int a2, int a3, int a4, int a5, int a6, int x, char *dst)
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx512f -mavx2 -mtune-ctrl=avx256_move_by_pieces" } */
  
  void
  foo (int a1, int a2, int a3, int a4, int a5, int a6, int x, char *dst)
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-44.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-44.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-44.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-44.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-45.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-45.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-45.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-45.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=x86-64 -mavx512f -mtune-ctrl=avx512_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=x86-64 -mavx512f -mtune-ctrl=avx512_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-47.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-47.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-47.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-47.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=sapphirerapids -mstore-max=128" } */
+ /* { dg-warning ".-mstore-max=. is deprecated; use .-mmove-max=. instead" "" { target *-*-* } 0 } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-48.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-48.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-48.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-48.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=sapphirerapids -mstore-max=256" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=sapphirerapids -mmove-max=256" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-5.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-5.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pieces-memset-5.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pieces-memset-5.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx2 -mavx -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr100865-10a.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr100865-10a.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr100865-10a.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr100865-10a.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile { target int128 } } */
! /* { dg-options "-O3 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern __int128 array[16];
  
--- 1,5 ----
  /* { dg-do compile { target int128 } } */
! /* { dg-options "-O3 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern __int128 array[16];
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr100865-4a.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr100865-4a.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr100865-4a.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr100865-4a.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
  
  extern char array[64];
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
  
  extern char array[64];
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr104610.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr104610.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr104610.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr104610.c	Sun Sep 28 22:33:49 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx -mmove-max=256 -mstore-max=256 -fno-stack-protector" } */
  /* { dg-final { scan-assembler-times {(?n)vptest.*ymm} 1 } } */
  /* { dg-final { scan-assembler-times {sete} 1 } } */
  /* { dg-final { scan-assembler-not {(?n)je.*L[0-9]} } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx -mmove-max=256 -fno-stack-protector" } */
  /* { dg-final { scan-assembler-times {(?n)vptest.*ymm} 1 } } */
  /* { dg-final { scan-assembler-times {sete} 1 } } */
  /* { dg-final { scan-assembler-not {(?n)je.*L[0-9]} } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr121410.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr121410.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr121410.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr121410.c	Sun Sep 28 22:33:51 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=x86-64 -mavx512f -mstore-max=128" } */
  
  extern unsigned _BitInt(3719) a;
  extern _BitInt(465) g;
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=x86-64 -mavx512f -mmove-max=128" } */
  
  extern unsigned _BitInt(3719) a;
  extern _BitInt(465) g;
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr122021-0.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr122021-0.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr122021-0.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr122021-0.c	Sun Sep 28 22:33:51 2025
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -m32" } */
+ 
+ #include <stddef.h>
+ #include <stdint.h>
+ 
+ __attribute__ ((noipa)) static void
+ vp9_build_inter_predictor (int a)
+ {
+   int16_t row = a * 2;
+   int32_t row_w = (int)((int64_t)row * 16384 >> 14);
+ 
+   if (row_w != -544)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   vp9_build_inter_predictor (-272);
+   return 0;
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr90773-20.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr90773-20.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr90773-20.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr90773-20.c	Sun Sep 28 22:33:53 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr90773-21.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr90773-21.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr90773-21.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr90773-21.c	Sun Sep 28 22:33:53 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr90773-22.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr90773-22.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr90773-22.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr90773-22.c	Sun Sep 28 22:33:53 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr90773-23.c gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr90773-23.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/i386/pr90773-23.c	Sun Sep 21 22:33:13 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/i386/pr90773-23.c	Sun Sep 28 22:33:53 2025
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_store_by_pieces" } */
  
  extern char *dst;
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
  
  extern char *dst;
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_1.c gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_1.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_1.c	Sun Sep 28 22:33:54 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */
+ /* { dg-final { scan-tree-dump {missed:   not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */
+ /* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */
+ 
+ void
+ __attribute__ ((target ("lsx")))
+ foo (void)
+ {}
+ 
+ void
+ bar (void)
+ {
+   foo ();
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_2.c gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_2.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_2.c	Sun Sep 28 22:33:54 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */
+ /* { dg-final { scan-tree-dump {missed:   not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */
+ /* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */
+ 
+ void
+ __attribute__ ((target ("lasx")))
+ foo (void)
+ {}
+ 
+ void
+ __attribute__ ((target ("lsx")))
+ bar (void)
+ {
+   foo ();
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_3.c gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_3.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_3.c	Sun Sep 28 22:33:54 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */
+ /* { dg-final { scan-tree-dump {missed:   not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */
+ /* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */
+ 
+ void
+ __attribute__ ((target ("arch=la64v1.1")))
+ foo (void)
+ {}
+ 
+ void
+ __attribute__ ((target ("arch=la64v1.0")))
+ bar (void)
+ {
+   foo ();
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_4.c gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_4.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_4.c	Sun Sep 28 22:33:54 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */
+ /* { dg-final { scan-tree-dump {missed:   not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */
+ /* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */
+ 
+ void
+ foo (void)
+ {}
+ 
+ void
+ __attribute__ ((target ("cmodel=extreme")))
+ bar (void)
+ {
+   foo ();
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_5.c gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_5.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_5.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_5.c	Sun Sep 28 22:33:54 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */
+ /* { dg-final { scan-tree-dump {\(inlined\)} "einline" } } */
+ 
+ void
+ __attribute__ ((always_inline))
+ inline
+ foo (void)
+ {}
+ 
+ void
+ __attribute__ ((target ("cmodel=extreme")))
+ bar (void)
+ {
+   foo ();
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_6.c gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_6.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/can_inline_6.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/can_inline_6.c	Sun Sep 28 22:33:54 2025
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=loongarch64 -mabi=lp64d -fdump-tree-einline-details -O2" } */
+ /* { dg-final { scan-tree-dump {missed:   not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */
+ /* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */
+ 
+ void
+ __attribute__ ((target ("strict-align")))
+ foo (void)
+ {}
+ 
+ void
+ bar (void)
+ {
+   foo ();
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/fclass-compile.c gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/fclass-compile.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/fclass-compile.c	Sun Sep 21 22:33:14 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/fclass-compile.c	Sun Sep 28 22:33:54 2025
***************
*** 1,14 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -march=loongarch64 -mfpu=64 -mabi=lp64d" } */
  /* { dg-final { scan-assembler-times "fclass\\.s" 1 } } */
  /* { dg-final { scan-assembler-times "fclass\\.d" 1 } } */
  
  __attribute__ ((noipa)) int
  test_fclass_f (float f)
  {
    return __builtin_isinf (f)
  	 | __builtin_isnormal (f) << 1
! 	 | __builtin_isfinite (f) << 2;
  }
  
  __attribute__ ((noipa)) int
--- 1,16 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fsignaling-nans -march=loongarch64 -mfpu=64 -mabi=lp64d" } */
  /* { dg-final { scan-assembler-times "fclass\\.s" 1 } } */
  /* { dg-final { scan-assembler-times "fclass\\.d" 1 } } */
+ /* { dg-final { scan-assembler-not "fcmp" } } */
  
  __attribute__ ((noipa)) int
  test_fclass_f (float f)
  {
    return __builtin_isinf (f)
  	 | __builtin_isnormal (f) << 1
! 	 | __builtin_isfinite (f) << 2
! 	 | __builtin_isnan (f) << 3;
  }
  
  __attribute__ ((noipa)) int
*************** test_fclass_d (double d)
*** 16,20 ****
  {
    return __builtin_isinf (d)
  	 | __builtin_isnormal (d) << 1
! 	 | __builtin_isfinite (d) << 2;
  }
--- 18,23 ----
  {
    return __builtin_isinf (d)
  	 | __builtin_isnormal (d) << 1
! 	 | __builtin_isfinite (d) << 2
! 	 | __builtin_isnan (d) << 3;
  }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/fclass-run.c gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/fclass-run.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/fclass-run.c	Sun Sep 21 22:33:14 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/fclass-run.c	Sun Sep 28 22:33:54 2025
*************** main (void)
*** 37,44 ****
    ASSERT_EQ (test_fclass_f (-f_normal), 0b110);
    ASSERT_EQ (test_fclass_f (f_subnormal), 0b100);
    ASSERT_EQ (test_fclass_f (-f_subnormal), 0b100);
!   ASSERT_EQ (test_fclass_f (f_qnan), 0);
!   ASSERT_EQ (test_fclass_f (f_snan), 0);
  
    ASSERT_EQ (test_fclass_d (d_inf), 0b001);
    ASSERT_EQ (test_fclass_d (-d_inf), 0b001);
--- 37,44 ----
    ASSERT_EQ (test_fclass_f (-f_normal), 0b110);
    ASSERT_EQ (test_fclass_f (f_subnormal), 0b100);
    ASSERT_EQ (test_fclass_f (-f_subnormal), 0b100);
!   ASSERT_EQ (test_fclass_f (f_qnan), 0b1000);
!   ASSERT_EQ (test_fclass_f (f_snan), 0b1000);
  
    ASSERT_EQ (test_fclass_d (d_inf), 0b001);
    ASSERT_EQ (test_fclass_d (-d_inf), 0b001);
*************** main (void)
*** 48,53 ****
    ASSERT_EQ (test_fclass_d (-d_normal), 0b110);
    ASSERT_EQ (test_fclass_d (d_subnormal), 0b100);
    ASSERT_EQ (test_fclass_d (-d_subnormal), 0b100);
!   ASSERT_EQ (test_fclass_d (d_qnan), 0);
!   ASSERT_EQ (test_fclass_d (d_snan), 0);
  }
--- 48,53 ----
    ASSERT_EQ (test_fclass_d (-d_normal), 0b110);
    ASSERT_EQ (test_fclass_d (d_subnormal), 0b100);
    ASSERT_EQ (test_fclass_d (-d_subnormal), 0b100);
!   ASSERT_EQ (test_fclass_d (d_qnan), 0b1000);
!   ASSERT_EQ (test_fclass_d (d_snan), 0b1000);
  }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/pr121875.c gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/pr121875.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/loongarch/pr121875.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/loongarch/pr121875.c	Sun Sep 28 22:33:54 2025
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=loongarch64 -mabi=lp64d -O2" } */
+ 
+ [[gnu::always_inline]] inline void f() {}
+ [[gnu::target("lasx")]] int main() {f();}
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips-msubf.c gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips-msubf.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips-msubf.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips-msubf.c	Sun Sep 28 22:33:54 2025
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mhard-float -ffast-math -march=mips32r6" } */
+ /* { dg-skip-if "code quality test" { *-*-* } { "-O0" "-O1" } { "" } } */
+ /* { dg-final { scan-assembler-times "\tmsubf\\.s\t" 2 } } */
+ /* { dg-final { scan-assembler-times "\tmsubf\\.d\t" 2 } } */
+ 
+ NOMIPS16 float
+ test01 (float x, float y, float z)
+ {
+   return x - (y * z);
+ }
+ 
+ NOMIPS16 double
+ test02 (double x, double y, double z)
+ {
+   return x - (y * z);
+ }
+ 
+ NOMIPS16 float
+ test03 (float x, float y, float z)
+ {
+   return (y * z) - x;
+ }
+ 
+ NOMIPS16 double
+ test04 (double x, double y, double z)
+ {
+   return (y * z) - x;
+ }
+ 
+ 
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips16e2-cache.c gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips16e2-cache.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips16e2-cache.c	Sun Sep 21 22:33:14 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips16e2-cache.c	Sun Sep 28 22:33:54 2025
***************
*** 1,4 ****
! /* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 -mips32r2 -mips16 -mmips16e2" } */
  /* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
  
  /* Test cache.  */
--- 1,4 ----
! /* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 isa_rev=2 -mmips16e2" } */
  /* { dg-skip-if "naming registers makes this a code quality test" { *-*-* } { "-O0" } { "" } } */
  
  /* Test cache.  */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips16e2-cmov.c gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips16e2-cmov.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips16e2-cmov.c	Sun Sep 21 22:33:14 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips16e2-cmov.c	Sun Sep 28 22:33:54 2025
***************
*** 1,4 ****
! /* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 -mips16 -mmips16e2 -mbranch-cost=2" } */
  /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
  
  /* Test MOVN.  */
--- 1,4 ----
! /* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 isa_rev=2 -mmips16e2 -mbranch-cost=2" } */
  /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
  
  /* Test MOVN.  */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips16e2-gp.c gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips16e2-gp.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips16e2-gp.c	Sun Sep 21 22:33:14 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips16e2-gp.c	Sun Sep 28 22:33:54 2025
***************
*** 1,4 ****
! /* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 -mips16 -mmips16e2" } */
  /* { dg-skip-if "per-function expected output" { *-*-* } { "-flto" } { "" } } */
   
  /* Generate GP-relative ADDIU.  */
--- 1,4 ----
! /* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 isa_rev=2 -mmips16e2" } */
  /* { dg-skip-if "per-function expected output" { *-*-* } { "-flto" } { "" } } */
   
  /* Generate GP-relative ADDIU.  */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips16e2.c gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips16e2.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/mips/mips16e2.c	Sun Sep 21 22:33:14 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/mips/mips16e2.c	Sun Sep 28 22:33:54 2025
***************
*** 1,4 ****
! /* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 -mips16 -mmips16e2" } */
  /* { dg-skip-if "per-function expected output" { *-*-* } { "-flto" } { "" } } */
   
  /* ANDI is a two operand instruction.  Hence, it won't be generated if src and
--- 1,4 ----
! /* { dg-options "-mno-abicalls -mgpopt -G8 -mabi=32 isa_rev=2 -mmips16e2" } */
  /* { dg-skip-if "per-function expected output" { *-*-* } { "-flto" } { "" } } */
   
  /* ANDI is a two operand instruction.  Hence, it won't be generated if src and
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/mips/pr99217.c gcc-16-20250928/gcc/testsuite/gcc.target/mips/pr99217.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/mips/pr99217.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/mips/pr99217.c	Sun Sep 28 22:33:54 2025
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fpatchable-function-entry=1" } */
+ /* { dg-final { scan-assembler "foo:\n.*.LPFE0:\n\t.set\tnoreorder\n\tnop\n\t.set\treorder" } } */
+ 
+ /* Test the placement of the .LPFE0 label.  */
+ 
+ void
+ foo (void)
+ {
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-1.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-1.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-1.c	Sun Sep 21 22:33:16 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-1.c	Sun Sep 28 22:33:57 2025
***************
*** 4,10 ****
  /* { dg-options "-O1 -mabi=ti" } */
  
  
! int test(int a, int b, void (*fp)(void))
! { /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
    return a+b;
  }
--- 4,10 ----
  /* { dg-options "-O1 -mabi=ti" } */
  
  
! int test(int a, int b, void (*fp)(void)) /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
! {
    return a+b;
  }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-11.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-11.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-11.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-11.c	Sun Sep 28 22:33:57 2025
***************
*** 0 ****
--- 1,14 ----
+ /* Test TI ABI unsupported constructs */
+ 
+ /* { dg-do assemble } */
+ /* { dg-options "-O1 -mabi=ti" } */
+ 
+ struct s1 {
+     int (*f)(void);  /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
+     int a;
+ };
+ 
+ int test1(void)
+ {
+   return ((struct s1 *)0x11223344)->a;
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-12.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-12.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-12.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-12.c	Sun Sep 28 22:33:57 2025
***************
*** 0 ****
--- 1,15 ----
+ /* Test TI ABI unsupported constructs */
+ 
+ /* { dg-do assemble } */
+ /* { dg-options "-O1 -mabi=ti" } */
+ 
+ struct s1 {
+     int (*f)(void);  /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
+     int a;
+ };
+ 
+ struct s1 g1;
+ struct s1 g2;
+ struct s1 g3;
+ 
+ int (*g_f1)(char);  /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-2.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-2.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-2.c	Sun Sep 21 22:33:16 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-2.c	Sun Sep 28 22:33:57 2025
*************** struct big {
*** 8,15 ****
  	char c[9];
  };
  
! struct big test(void)
! { /* { dg-error "large return values not supported with '-mabi=ti' option" } */
    static struct big b;
    return b;
  }
--- 8,15 ----
  	char c[9];
  };
  
! struct big test(void) /* { dg-error "large return values not supported with '-mabi=ti' option" } */
! {
    static struct big b;
    return b;
  }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-3.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-3.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-3.c	Sun Sep 21 22:33:16 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-3.c	Sun Sep 28 22:33:57 2025
***************
*** 4,12 ****
  /* { dg-options "-O1 -mabi=ti" } */
  
  
! extern void extfunc(void (*fp)(void));
  
  void test(void)
  {
!   extfunc(test); /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
  }
--- 4,12 ----
  /* { dg-options "-O1 -mabi=ti" } */
  
  
! extern void extfunc(void (*fp)(void)); /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
  
  void test(void)
  {
!   extfunc(test);
  }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-5.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-5.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-5.c	Sun Sep 21 22:33:16 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-5.c	Sun Sep 28 22:33:57 2025
***************
*** 4,16 ****
  /* { dg-options "-O1 -mabi=ti" } */
  
  struct s1 {
!     void (*f)(void);
      int a;
  };
  
  struct s2 {
      union {
! 	void (*f)(void);
  	int a;
  	long b;
      } u;
--- 4,16 ----
  /* { dg-options "-O1 -mabi=ti" } */
  
  struct s1 {
!     void (*f)(void); /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
      int a;
  };
  
  struct s2 {
      union {
! 	void (*f)(int); /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
  	int a;
  	long b;
      } u;
*************** struct s2 {
*** 18,33 ****
  
  int test1(struct s1 *p)
  {
!   return p->a; /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
    return 1;
  }
  
  int test1_unused_arg(struct s1 p, int a)
! { /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
    return a;
  }
  
  int test2(struct s2 v)
! { /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
    return 2;
  }
--- 18,33 ----
  
  int test1(struct s1 *p)
  {
!   return p->a;
    return 1;
  }
  
  int test1_unused_arg(struct s1 p, int a)
! {
    return a;
  }
  
  int test2(struct s2 v)
! {
    return 2;
  }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-6.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-6.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-6.c	Sun Sep 21 22:33:16 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-6.c	Sun Sep 28 22:33:57 2025
***************
*** 4,12 ****
  /* { dg-options "-O1 -mabi=ti" } */
  
  
! extern void (*extfuncp)(int);
  
  void test(void)
  {
!   extfuncp(1); /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
  }
--- 4,12 ----
  /* { dg-options "-O1 -mabi=ti" } */
  
  
! extern void (*extfuncp)(int); /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
  
  void test(void)
  {
!   extfuncp(1);
  }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-7.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-7.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-7.c	Sun Sep 21 22:33:16 2025
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-7.c	Sun Sep 28 22:33:57 2025
***************
*** 4,21 ****
  /* { dg-options "-O1 -mabi=ti" } */
  
  struct s1 {
!     int (*f)(void);
      int a;
  };
  
! extern struct s1 s;
  
  int test1(void)
  {
!   return s.f(); /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
  }
  
  int test2(void)
  {
!   return s.a; /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
  }
--- 4,35 ----
  /* { dg-options "-O1 -mabi=ti" } */
  
  struct s1 {
!     int (*f)(void);  /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
      int a;
  };
  
! struct s2 {
!     int (*f)(short);  /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
!     int a;
! };
! 
! struct s3 {
!     int (*f)(char);  /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
!     int a;
!     int b;
!     int c;
! };
! 
! extern struct s1 g_s1;
! extern struct s2 g_s2;
! struct s3 g_s3;
  
  int test1(void)
  {
!   return g_s1.f();
  }
  
  int test2(void)
  {
!   return g_s2.a;
  }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-8.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-8.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-8.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-8.c	Sun Sep 28 22:33:57 2025
***************
*** 0 ****
--- 1,48 ----
+ /* Test TI ABI unsupported constructs */
+ 
+ /* { dg-do assemble } */
+ /* { dg-options "-O1 -mabi=ti" } */
+ 
+ struct s0 {
+     int f0 : 2; /* { dg-error "bit-fields not supported with '-mabi=ti' option" } */
+     int f1;
+ };
+ struct s0 g_s;
+ 
+ struct s1 {
+     int f : 2; /* { dg-error "bit-fields not supported with '-mabi=ti' option" } */
+     int a;
+ };
+ struct s1 g_s1;
+ int test1(void)
+ {
+   struct s1 s;
+ 
+   return sizeof(s);
+ }
+ 
+ struct s2 {
+     int a2;
+     int f2 : 3; /* { dg-error "bit-fields not supported with '-mabi=ti' option" } */
+ };
+ struct s22 {
+ 	struct s2 *p;
+ };
+ int test2(struct s22 *s)
+ {
+   return s->p->f2 + s->p->a2;
+ }
+ 
+ int test2a(struct s2 *s)
+ {
+   return s->f2 - s->a2;
+ }
+ 
+ struct s3 {
+     int a3;
+     int f3 : 3; /* { dg-error "bit-fields not supported with '-mabi=ti' option" } */
+ };
+ int test3(struct s3 s)
+ {
+   return 0;
+ }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-9.c gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-9.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/pru/mabi-ti-9.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/pru/mabi-ti-9.c	Sun Sep 28 22:33:57 2025
***************
*** 0 ****
--- 1,16 ----
+ /* Test TI ABI unsupported constructs */
+ 
+ /* { dg-do assemble } */
+ /* { dg-options "-O1 -mabi=ti" } */
+ 
+ struct s1 {
+     int (*f)(void);  /* { dg-error "function pointers not supported with '-mabi=ti' option" } */
+     int a;
+ };
+ 
+ struct s2 {
+     struct s1 *s;
+     int a;
+ };
+ 
+ struct s2 g_s2;
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/pr121778-1.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/pr121778-1.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/pr121778-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/pr121778-1.c	Sun Sep 28 22:33:59 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile { target { rv32 } } } */
+ /* { dg-options "-march=rv32gc_zbb -mabi=ilp32 -O2" } */
+ 
+ unsigned int
+ foo (unsigned int a)
+ {
+   return (a << 1) | ((a >> 31) ^ 1);
+ }
+ 
+  /* { dg-final { scan-assembler {\mrori} } } */
+  /* { dg-final { scan-assembler {\mxori} } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/pr121778-2.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/pr121778-2.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/pr121778-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/pr121778-2.c	Sun Sep 28 22:33:59 2025
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile { target { rv64 } } } */
+ /* { dg-options "-march=rv64gc_zbb -mabi=lp64 -O2" } */
+ 
+ unsigned long
+ foo (unsigned long a)
+ {
+   return (a << 1) | ((a >> 63) ^ 1);
+ }
+ 
+  /* { dg-final { scan-assembler {\mrori} } } */
+  /* { dg-final { scan-assembler {\mxori} } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/pr121982.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/pr121982.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/pr121982.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/pr121982.c	Sun Sep 28 22:33:59 2025
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-mcpu=tt-ascalon-d8 -mtune=tt-ascalon-d8" } */
+ 
+ /* Verify we don't ICE on the following test cases.  */
+ 
+ typedef char __attribute__((__vector_size__ (32))) vqi;
+ typedef short __attribute__((__vector_size__ (32))) vhi;
+ typedef int __attribute__((__vector_size__ (32))) vsi;
+ typedef long __attribute__((__vector_size__ (32))) vdi;
+ 
+ #define TEST(type) type foo_ ## type (type x, type y) { return x / y; }
+ 
+ TEST(vqi)
+ TEST(vhi)
+ TEST(vsi)
+ TEST(vdi)
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u32.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u32.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv32.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv32.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv64.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv64.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u16-from-u64.rv64.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv32.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv32.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv64.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv64.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u32-from-u64.rv64.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u16.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u16.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u16.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u32.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u32.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv32.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv32.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv64.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv64.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-6-u8-from-u64.rv64.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT)
+ 
+ /* { dg-final { scan-tree-dump-times ".SAT_MUL" 1 "optimized" } } */
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u32.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u32.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_5_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u64.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u64.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u16-from-u64.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_5_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u32-from-u64.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u32-from-u64.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u32-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u32-from-u64.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_5_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u16.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u16.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u16.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u16.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_5_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u32.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u32.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u32.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u32.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_5_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u64.c gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u64.c
*** gcc-16-20250921/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u64.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gcc.target/riscv/sat/sat_u_mul-run-6-u8-from-u64.c	Sun Sep 28 22:34:01 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_5_WRAP(NT, WT, x, y)
+ 
+ DEF_SAT_U_MUL_FMT_5_WRAP(NT, WT)
+ 
+ #include "scalar_sat_binary_run_xxx.h"
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gfortran.dg/deferred_character_39.f90 gcc-16-20250928/gcc/testsuite/gfortran.dg/deferred_character_39.f90
*** gcc-16-20250921/gcc/testsuite/gfortran.dg/deferred_character_39.f90	Sun Sep 21 22:33:22 2025
--- gcc-16-20250928/gcc/testsuite/gfortran.dg/deferred_character_39.f90	Sun Sep 28 22:34:06 2025
***************
*** 1,5 ****
--- 1,6 ----
  ! { dg-do run }
  ! PR fortran/108581 - issues with rank-2 deferred-length character arrays
+ ! PR fortran/121939 - ICE in gfc_conv_string_parameter
  
  program p
    call pr108581
*************** subroutine test2
*** 79,86 ****
    allocate (a, source = reshape (str1,[1,size(str1)]))
    allocate (b, source = reshape (str1,[1,size(str1)]))
    allocate (c, source = reshape (str4,[1,size(str4)]))
! ! allocate (d, source=c)        ! ICE, tracked as pr121939
!   d => c
    ! Positive non-unit stride
    s0 = concat (str1(1::2))
    write(s1,'(4A)') a(1,1::2)
--- 80,87 ----
    allocate (a, source = reshape (str1,[1,size(str1)]))
    allocate (b, source = reshape (str1,[1,size(str1)]))
    allocate (c, source = reshape (str4,[1,size(str4)]))
!   allocate (d, source = c)      ! fixed with pr121939
! ! d => c
    ! Positive non-unit stride
    s0 = concat (str1(1::2))
    write(s1,'(4A)') a(1,1::2)
*************** subroutine test2
*** 124,136 ****
    if (s2 /= s0) stop 26
    if (s3 /= s0) stop 27
    if (s4 /= s0) stop 28
!   deallocate (a,b,c)
  
    ! More complex cases with shape=[2,4]
    allocate (e, source = reshape (str2,[2,size(str2,2)]))
    allocate (f, source = reshape (str2,[2,size(str2,2)]))
    allocate (g, source = reshape (str5,[2,size(str5,2)]))
!   h => g
    s0 = concat (str2(1,3:1:-2))
    write(s1,'(4A)') e(1,3:1:-2)
    write(s2,'(4A)') f(1,3:1:-2)
--- 125,138 ----
    if (s2 /= s0) stop 26
    if (s3 /= s0) stop 27
    if (s4 /= s0) stop 28
!   deallocate (a,b,c,d)
  
    ! More complex cases with shape=[2,4]
    allocate (e, source = reshape (str2,[2,size(str2,2)]))
    allocate (f, source = reshape (str2,[2,size(str2,2)]))
    allocate (g, source = reshape (str5,[2,size(str5,2)]))
!   allocate (h, source = reshape (str5,[2,size(str5,2)])) ! fixed with pr121939
! ! h => g
    s0 = concat (str2(1,3:1:-2))
    write(s1,'(4A)') e(1,3:1:-2)
    write(s2,'(4A)') f(1,3:1:-2)
*************** subroutine test2
*** 220,226 ****
    if (s2 /= s0) stop 66
    if (s3 /= s0) stop 67
    if (s4 /= s0) stop 68
!   deallocate (e,f,g)
  
  contains
  
--- 222,228 ----
    if (s2 /= s0) stop 66
    if (s3 /= s0) stop 67
    if (s4 /= s0) stop 68
!   deallocate (e,f,g,h)
  
  contains
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gfortran.dg/pdt_48.f03 gcc-16-20250928/gcc/testsuite/gfortran.dg/pdt_48.f03
*** gcc-16-20250921/gcc/testsuite/gfortran.dg/pdt_48.f03	Sun Sep 21 22:33:24 2025
--- gcc-16-20250928/gcc/testsuite/gfortran.dg/pdt_48.f03	Sun Sep 28 22:34:09 2025
*************** contains
*** 16,32 ****
      integer :: c
      c=max(a,b)
    end function diy_max
!                 
    function add(a,b) result(c)
      type(vec(k=*)), intent(in) :: a,b
      type(vec(k=max(a%k,b%k))) :: c      ! Fails
      !type(vec(k=diy_max(a%k,b%k))) :: c ! Worked with diy_max
      !type(vec(k=a%k+b%k)) :: c          ! Worked with +
!     
      c%foo(1:a%k)=a%foo
      c%foo(1:b%k)=c%foo(1:b%k)+b%foo
  
!     if (c%k /= 5) stop 1 
    end function add
  end module pdt_m
  
--- 16,33 ----
      integer :: c
      c=max(a,b)
    end function diy_max
! 
    function add(a,b) result(c)
      type(vec(k=*)), intent(in) :: a,b
      type(vec(k=max(a%k,b%k))) :: c      ! Fails
      !type(vec(k=diy_max(a%k,b%k))) :: c ! Worked with diy_max
      !type(vec(k=a%k+b%k)) :: c          ! Worked with +
! 
      c%foo(1:a%k)=a%foo
+     c%foo(a%k+1:) = 0
      c%foo(1:b%k)=c%foo(1:b%k)+b%foo
  
!     if (c%k /= 5) stop 1
    end function add
  end module pdt_m
  
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gfortran.dg/pr103508.f90 gcc-16-20250928/gcc/testsuite/gfortran.dg/pr103508.f90
*** gcc-16-20250921/gcc/testsuite/gfortran.dg/pr103508.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gfortran.dg/pr103508.f90	Sun Sep 28 22:34:09 2025
***************
*** 0 ****
--- 1,22 ----
+ ! { dg-do compile }
+ !
+ ! Check the fix for PR103508. As noted in comment 6 of the PR, the bug
+ ! has nothing to do with PDTs. However, the contributor's test has been
+ ! retained.
+ !
+ ! Contributed by Gerhard Steinmetz  <gscfq@t-online.de>
+ !
+ program p
+    type t
+       integer :: n = 1
+       character(3) :: c
+    end type
+    block
+       block
+          type(t) :: x
+          x%c = 'abc'
+          print *, len(x%c)
+       end ! { dg-error "END BLOCK statement expected" }
+    end    ! { dg-error "END BLOCK statement expected" }
+ end
+ ! { dg-error "Unexpected end of file" "" { target "*-*-*" } 0 }
diff -Nrcpad gcc-16-20250921/gcc/testsuite/gfortran.dg/submodule_34.f90 gcc-16-20250928/gcc/testsuite/gfortran.dg/submodule_34.f90
*** gcc-16-20250921/gcc/testsuite/gfortran.dg/submodule_34.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/gcc/testsuite/gfortran.dg/submodule_34.f90	Sun Sep 28 22:34:10 2025
***************
*** 0 ****
--- 1,63 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/122046
+ ! The check for illegal recursion used to trigger on assertion when resolving
+ ! the array spec of the dummy argument in the submodule
+ !
+ ! Contributed by Tomáš Trnka <trnka@scm.com>
+ 
+ module ChemicalSystemModule
+ 
+    implicit none
+    private
+ 
+    type, public :: ChemicalSystemType
+    contains
+       procedure, public  :: NumAtoms
+    end type
+ 
+ contains
+ 
+    elemental integer function NumAtoms(self)
+       class(ChemicalSystemType), intent(in) :: self
+ 
+       NumAtoms = 123
+ 
+    end function
+ 
+ end module
+ 
+ module ChemicalSystemUtilsModule
+ 
+    use ChemicalSystemModule
+ 
+    implicit none
+    private
+ 
+    public :: ChemicalSystemRMSD
+ 
+    interface
+ 
+       module subroutine ChemicalSystemRMSD(modelSys, rmsdGrad)
+          type(ChemicalSystemType), intent(in)  :: modelSys
+          real                    , intent(out) :: rmsdGrad(3,modelSys%NumAtoms())
+       end subroutine
+ 
+    end interface
+ 
+ end module
+ 
+ submodule(ChemicalSystemUtilsModule) ChemicalSystemUtilsSubModule
+    use ChemicalSystemModule
+ 
+    implicit none
+ 
+ contains
+ 
+    module subroutine ChemicalSystemRMSD(modelSys, rmsdGrad)
+       type(ChemicalSystemType), intent(in)   :: modelSys
+       real                    , intent(out)  :: rmsdGrad(3,modelSys%NumAtoms())
+    end subroutine
+ 
+ end submodule
+ 
diff -Nrcpad gcc-16-20250921/gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint-c.py gcc-16-20250928/gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint-c.py
*** gcc-16-20250921/gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint-c.py	Sun Sep 21 22:33:29 2025
--- gcc-16-20250928/gcc/testsuite/libgdiagnostics.dg/test-fix-it-hint-c.py	Sun Sep 28 22:34:24 2025
*************** def test_sarif_output_with_fixes(sarif):
*** 37,42 ****
--- 37,43 ----
  
      assert len(results[0]['fixes']) == 1
      fix = results[0]['fixes'][0]
+     assert fix['description']['text'] == "Replace 'colour' with 'color'"
      assert len(fix['artifactChanges']) == 1
      change = fix['artifactChanges'][0]
      assert change['artifactLocation']['uri'].endswith('test-fix-it-hint.c')
diff -Nrcpad gcc-16-20250921/gcc/tree-ssa-ccp.cc gcc-16-20250928/gcc/tree-ssa-ccp.cc
*** gcc-16-20250921/gcc/tree-ssa-ccp.cc	Sun Sep 21 22:33:31 2025
--- gcc-16-20250928/gcc/tree-ssa-ccp.cc	Sun Sep 28 22:34:25 2025
*************** pass_fold_builtins::execute (function *f
*** 4242,4247 ****
--- 4242,4250 ----
    basic_block bb;
    unsigned int todoflags = 0;
  
+   /* Set last full fold prop if not already set. */
+   fun->curr_properties |= PROP_last_full_fold;
+ 
    FOR_EACH_BB_FN (bb, fun)
      {
        gimple_stmt_iterator i;
*************** pass_fold_builtins::execute (function *f
*** 4280,4296 ****
  	      tree result = NULL_TREE;
  	      switch (DECL_FUNCTION_CODE (callee))
  		{
- 		case BUILT_IN_CONSTANT_P:
- 		  /* Resolve __builtin_constant_p.  If it hasn't been
- 		     folded to integer_one_node by now, it's fairly
- 		     certain that the value simply isn't constant.  */
- 		  result = integer_zero_node;
- 		  break;
- 
- 		case BUILT_IN_ASSUME_ALIGNED:
- 		  /* Remove __builtin_assume_aligned.  */
- 		  result = gimple_call_arg (stmt, 0);
- 		  break;
  
  		case BUILT_IN_STACK_RESTORE:
  		  result = optimize_stack_restore (i);
--- 4283,4288 ----
diff -Nrcpad gcc-16-20250921/gcc/tree-ssa-math-opts.cc gcc-16-20250928/gcc/tree-ssa-math-opts.cc
*** gcc-16-20250921/gcc/tree-ssa-math-opts.cc	Sun Sep 21 22:33:31 2025
--- gcc-16-20250928/gcc/tree-ssa-math-opts.cc	Sun Sep 28 22:34:25 2025
*************** build_and_insert_cast (gimple_stmt_itera
*** 1642,1653 ****
  	  && CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def)))
  	{
  	  tree cast_rhs = gimple_assign_rhs1 (def);
! 	  unsigned rhs_prec = TYPE_PRECISION (TREE_TYPE (cast_rhs));
  	  unsigned type_prec = TYPE_PRECISION (type);
! 	  unsigned val_prec = TYPE_PRECISION (TREE_TYPE (val));
  
  	  if (type_prec >= rhs_prec && val_prec >= rhs_prec)
! 	    rhs = cast_rhs;
  	}
      }
  
--- 1642,1665 ----
  	  && CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def)))
  	{
  	  tree cast_rhs = gimple_assign_rhs1 (def);
! 	  tree cast_rhs_type = TREE_TYPE (cast_rhs);
! 	  tree val_type = TREE_TYPE (val);
! 
! 	  bool unsigned_p = TYPE_UNSIGNED (type);
! 	  bool unsigned_rhs_p = TYPE_UNSIGNED (cast_rhs_type);
! 	  bool unsigned_val_p = TYPE_UNSIGNED (val_type);
! 
! 	  unsigned rhs_prec = TYPE_PRECISION (cast_rhs_type);
  	  unsigned type_prec = TYPE_PRECISION (type);
! 	  unsigned val_prec = TYPE_PRECISION (val_type);
  
  	  if (type_prec >= rhs_prec && val_prec >= rhs_prec)
! 	    {
! 	      /* Aka any sign extend from small to big size */
! 	      if (!((val_prec > rhs_prec && !unsigned_val_p && !unsigned_rhs_p)
! 		  || (type_prec > val_prec && !unsigned_p && !unsigned_val_p)))
! 		rhs = cast_rhs;
! 	    }
  	}
      }
  
diff -Nrcpad gcc-16-20250921/gcc/tree-ssa-sccvn.cc gcc-16-20250928/gcc/tree-ssa-sccvn.cc
*** gcc-16-20250921/gcc/tree-ssa-sccvn.cc	Sun Sep 21 22:33:31 2025
--- gcc-16-20250928/gcc/tree-ssa-sccvn.cc	Sun Sep 28 22:34:25 2025
*************** vn_nary_simplify (vn_nary_op_t nary)
*** 2622,2627 ****
--- 2622,2633 ----
  		      nary->type, nary->length);
    memcpy (op.ops, nary->op, sizeof (tree) * nary->length);
    tree res = vn_nary_build_or_lookup_1 (&op, false, true);
+   /* Do not update *NARY with a simplified result that contains abnormals.
+      This matches what maybe_push_res_to_seq does when requesting insertion.  */
+   for (unsigned i = 0; i < op.num_ops; ++i)
+     if (TREE_CODE (op.ops[i]) == SSA_NAME
+ 	&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op.ops[i]))
+       return res;
    if (op.code.is_tree_code ()
        && op.num_ops <= nary->length
        && (tree_code) op.code != CONSTRUCTOR)
diff -Nrcpad gcc-16-20250921/gcc/tree-vect-patterns.cc gcc-16-20250928/gcc/tree-vect-patterns.cc
*** gcc-16-20250921/gcc/tree-vect-patterns.cc	Sun Sep 21 22:33:31 2025
--- gcc-16-20250928/gcc/tree-vect-patterns.cc	Sun Sep 28 22:34:25 2025
*************** vect_recog_rotate_pattern (vec_info *vin
*** 3882,3887 ****
--- 3882,3891 ----
  	goto use_rotate;
      }
  
+   /* We may not use a reduction operand twice.  */
+   if (vect_is_reduction (stmt_vinfo))
+     return NULL;
+ 
    tree utype = unsigned_type_for (type);
    tree uvectype = get_vectype_for_scalar_type (vinfo, utype);
    if (!uvectype)
diff -Nrcpad gcc-16-20250921/gcc/tree-vect-stmts.cc gcc-16-20250928/gcc/tree-vect-stmts.cc
*** gcc-16-20250921/gcc/tree-vect-stmts.cc	Sun Sep 21 22:33:31 2025
--- gcc-16-20250928/gcc/tree-vect-stmts.cc	Sun Sep 28 22:34:25 2025
*************** get_load_store_type (vec_info  *vinfo, s
*** 2134,2174 ****
  	      || *memory_access_type == VMAT_CONTIGUOUS_REVERSE)
  	  && maybe_gt (group_size, TYPE_VECTOR_SUBPARTS (vectype)))
  	{
! 	  if (SLP_TREE_LANES (slp_node) == 1)
! 	    {
! 	      *memory_access_type = VMAT_ELEMENTWISE;
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				 "single-element interleaving not supported "
! 				 "for not adjacent vector loads, using "
! 				 "elementwise access\n");
! 	    }
! 	  else
! 	    {
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				 "single-element interleaving not supported "
! 				 "for not adjacent vector loads\n");
! 	      return false;
! 	    }
  	}
  
!       /* For single-element interleaving also fall back to elementwise
! 	 access in case we did not lower a permutation and cannot
! 	 code generate it.  */
        if (loop_vinfo
! 	  && single_element_p
! 	  && SLP_TREE_LANES (slp_node) == 1
! 	  && (*memory_access_type == VMAT_CONTIGUOUS
! 	      || *memory_access_type == VMAT_CONTIGUOUS_REVERSE)
  	  && SLP_TREE_LOAD_PERMUTATION (slp_node).exists ()
  	  && !perm_ok)
  	{
  	  *memory_access_type = VMAT_ELEMENTWISE;
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 			     "single-element interleaving permutation not "
! 			     "supported, using elementwise access\n");
  	}
  
        overrun_p = (loop_vinfo && gap != 0
--- 2134,2159 ----
  	      || *memory_access_type == VMAT_CONTIGUOUS_REVERSE)
  	  && maybe_gt (group_size, TYPE_VECTOR_SUBPARTS (vectype)))
  	{
! 	  *memory_access_type = VMAT_ELEMENTWISE;
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 			     "single-element interleaving not supported "
! 			     "for not adjacent vector loads, using "
! 			     "elementwise access\n");
  	}
  
!       /* Also fall back to elementwise access in case we did not lower a
! 	 permutation and cannot code generate it.  */
        if (loop_vinfo
! 	  && *memory_access_type != VMAT_ELEMENTWISE
  	  && SLP_TREE_LOAD_PERMUTATION (slp_node).exists ()
  	  && !perm_ok)
  	{
  	  *memory_access_type = VMAT_ELEMENTWISE;
  	  if (dump_enabled_p ())
  	    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 			     "permutation not supported, using elementwise "
! 			     "access\n");
  	}
  
        overrun_p = (loop_vinfo && gap != 0
*************** get_load_store_type (vec_info  *vinfo, s
*** 2498,2512 ****
       traditional behavior until that can be fixed.  */
    if (*memory_access_type == VMAT_ELEMENTWISE
        && !STMT_VINFO_STRIDED_P (first_stmt_info)
!       && !(stmt_info == DR_GROUP_FIRST_ELEMENT (stmt_info)
! 	   && !DR_GROUP_NEXT_ELEMENT (stmt_info)
! 	   && !pow2p_hwi (DR_GROUP_SIZE (stmt_info))))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
  			 "not falling back to elementwise accesses\n");
        return false;
      }
    return true;
  }
  
--- 2483,2502 ----
       traditional behavior until that can be fixed.  */
    if (*memory_access_type == VMAT_ELEMENTWISE
        && !STMT_VINFO_STRIDED_P (first_stmt_info)
!       && !(STMT_VINFO_GROUPED_ACCESS (stmt_info)
! 	   && single_element_p
! 	   && !pow2p_hwi (group_size)))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
  			 "not falling back to elementwise accesses\n");
        return false;
      }
+ 
+   /* For BB vectorization build up the vector from existing scalar defs.  */
+   if (!loop_vinfo && *memory_access_type == VMAT_ELEMENTWISE)
+     return false;
+ 
    return true;
  }
  
*************** vectorizable_load (vec_info *vinfo,
*** 9480,9490 ****
    /* ???  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;
  
--- 9470,9480 ----
    /* ???  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;
  
*************** vectorizable_load (vec_info *vinfo,
*** 9727,9754 ****
  	{
  	  first_stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
  	  first_dr_info = STMT_VINFO_DR_INFO (first_stmt_info);
  	}
        else
  	{
  	  first_stmt_info = stmt_info;
  	  first_dr_info = dr_info;
  	}
  
!       if (grouped_load && memory_access_type == VMAT_STRIDED_SLP)
  	{
! 	  group_size = DR_GROUP_SIZE (first_stmt_info);
! 	  ref_type = get_group_alias_ptr_type (first_stmt_info);
  	}
        else
! 	{
! 	  if (grouped_load)
! 	    cst_offset
! 	      = (tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (vectype)))
! 		 * vect_get_place_in_interleaving_chain (stmt_info,
! 							 first_stmt_info));
! 	  group_size = 1;
! 	  ref_type = reference_alias_ptr_type (DR_REF (dr_info->dr));
! 	}
  
        if (!costing_p)
  	{
--- 9717,9740 ----
  	{
  	  first_stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info);
  	  first_dr_info = STMT_VINFO_DR_INFO (first_stmt_info);
+ 	  ref_type = get_group_alias_ptr_type (first_stmt_info);
  	}
        else
  	{
  	  first_stmt_info = stmt_info;
  	  first_dr_info = dr_info;
+ 	  ref_type = reference_alias_ptr_type (DR_REF (dr_info->dr));
  	}
  
!       if (grouped_load)
  	{
! 	  if (memory_access_type == VMAT_STRIDED_SLP)
! 	    group_size = DR_GROUP_SIZE (first_stmt_info);
! 	  else /* VMAT_ELEMENTWISE */
! 	    group_size = SLP_TREE_LANES (slp_node);
  	}
        else
! 	group_size = 1;
  
        if (!costing_p)
  	{
*************** vectorizable_load (vec_info *vinfo,
*** 9887,9892 ****
--- 9873,9879 ----
        int ncopies;
        if (slp_perm)
  	{
+ 	  gcc_assert (memory_access_type != VMAT_ELEMENTWISE);
  	  /* We don't yet generate SLP_TREE_LOAD_PERMUTATIONs for
  	     variable VF.  */
  	  unsigned int const_vf = vf.to_constant ();
*************** vectorizable_load (vec_info *vinfo,
*** 9922,9929 ****
  						     slp_node, 0, vect_body);
  		  continue;
  		}
  	      tree this_off = build_int_cst (TREE_TYPE (alias_off),
! 					     group_el * elsz + cst_offset);
  	      tree data_ref = build2 (MEM_REF, ltype, running_off, this_off);
  	      vect_copy_ref_info (data_ref, DR_REF (first_dr_info->dr));
  	      new_temp = make_ssa_name (ltype);
--- 9909,9921 ----
  						     slp_node, 0, vect_body);
  		  continue;
  		}
+ 	      unsigned int load_el = group_el;
+ 	      /* For elementwise accesses apply a load permutation directly.  */
+ 	      if (memory_access_type == VMAT_ELEMENTWISE
+ 		  && SLP_TREE_LOAD_PERMUTATION (slp_node).exists ())
+ 		load_el = SLP_TREE_LOAD_PERMUTATION (slp_node)[group_el];
  	      tree this_off = build_int_cst (TREE_TYPE (alias_off),
! 					     load_el * elsz + cst_offset);
  	      tree data_ref = build2 (MEM_REF, ltype, running_off, this_off);
  	      vect_copy_ref_info (data_ref, DR_REF (first_dr_info->dr));
  	      new_temp = make_ssa_name (ltype);
diff -Nrcpad gcc-16-20250921/gcc/tree.cc gcc-16-20250928/gcc/tree.cc
*** gcc-16-20250921/gcc/tree.cc	Sun Sep 21 22:33:31 2025
--- gcc-16-20250928/gcc/tree.cc	Sun Sep 28 22:34:25 2025
*************** get_attr_nonstring_decl (tree expr, tree
*** 15424,15460 ****
    return NULL_TREE;
  }
  
- /* Return length of attribute names string,
-    if arglist chain > 1, -1 otherwise.  */
- 
- int
- get_target_clone_attr_len (tree arglist)
- {
-   tree arg;
-   int str_len_sum = 0;
-   int argnum = 0;
- 
-   for (arg = arglist; arg; arg = TREE_CHAIN (arg))
-     {
-       const char *str = TREE_STRING_POINTER (TREE_VALUE (arg));
-       size_t len = strlen (str);
-       str_len_sum += len + 1;
-       for (const char *p = strchr (str, TARGET_CLONES_ATTR_SEPARATOR);
- 	   p;
- 	   p = strchr (p + 1, TARGET_CLONES_ATTR_SEPARATOR))
- 	argnum++;
-       argnum++;
-     }
-   if (argnum <= 1)
-     return -1;
-   return str_len_sum;
- }
- 
  /* Returns an auto_vec of string_slices containing the version strings from
!    ARGLIST.  DEFAULT_COUNT is incremented for each default version found.  */
  
  auto_vec<string_slice>
! get_clone_attr_versions (const tree arglist, int *default_count)
  {
    gcc_assert (TREE_CODE (arglist) == TREE_LIST);
    auto_vec<string_slice> versions;
--- 15424,15437 ----
    return NULL_TREE;
  }
  
  /* Returns an auto_vec of string_slices containing the version strings from
!    ARGLIST.  DEFAULT_COUNT is incremented for each default version found.
!    If FILTER is true then any invalid versions strings are not included.  */
  
  auto_vec<string_slice>
! get_clone_attr_versions (const tree arglist,
! 			 int *default_count,
! 			 bool filter)
  {
    gcc_assert (TREE_CODE (arglist) == TREE_LIST);
    auto_vec<string_slice> versions;
*************** get_clone_attr_versions (const tree argl
*** 15470,15475 ****
--- 15447,15455 ----
  	  string_slice attr = string_slice::tokenize (&str, separators);
  	  attr = attr.strip ();
  
+ 	  if (filter && !targetm.check_target_clone_version (attr, NULL))
+ 	    continue;
+ 
  	  if (attr == "default" && default_count)
  	    (*default_count)++;
  	  versions.safe_push (attr);
*************** get_clone_attr_versions (const tree argl
*** 15480,15494 ****
  
  /* Returns an auto_vec of string_slices containing the version strings from
     the target_clone attribute from DECL.  DEFAULT_COUNT is incremented for each
!    default version found.  */
  auto_vec<string_slice>
! get_clone_versions (const tree decl, int *default_count)
  {
    tree attr = lookup_attribute ("target_clones", DECL_ATTRIBUTES (decl));
    if (!attr)
      return auto_vec<string_slice> ();
    tree arglist = TREE_VALUE (attr);
!   return get_clone_attr_versions (arglist, default_count);
  }
  
  /* If DECL has a target_version attribute, returns a string_slice containing the
--- 15460,15475 ----
  
  /* Returns an auto_vec of string_slices containing the version strings from
     the target_clone attribute from DECL.  DEFAULT_COUNT is incremented for each
!    default version found.  If FILTER is true then any invalid versions strings
!    are not included.  */
  auto_vec<string_slice>
! get_clone_versions (const tree decl, int *default_count, bool filter)
  {
    tree attr = lookup_attribute ("target_clones", DECL_ATTRIBUTES (decl));
    if (!attr)
      return auto_vec<string_slice> ();
    tree arglist = TREE_VALUE (attr);
!   return get_clone_attr_versions (arglist, default_count, filter);
  }
  
  /* If DECL has a target_version attribute, returns a string_slice containing the
*************** get_target_version (const tree decl)
*** 15509,15514 ****
--- 15490,15738 ----
  	   .strip ();
  }
  
+ /* Returns true if FN1 and FN2 define disjoint function versions in an FMV
+    function set.  That is, the two declarations are completely non-overlapping.
+    For target_version semantics, that means if one is a target clone and one is
+    a target version, the target_version must not be defined by the target_clone,
+    and for two target_clones, they must not define any of the same version.
+ 
+    FN1 and FN2 should be function decls.  */
+ 
+ bool
+ disjoint_version_decls (tree fn1, tree fn2)
+ {
+   if (TREE_CODE (fn1) != FUNCTION_DECL
+       || TREE_CODE (fn2) != FUNCTION_DECL)
+     return false;
+ 
+   if (TARGET_HAS_FMV_TARGET_ATTRIBUTE)
+     {
+       tree attr1 = lookup_attribute ("target", DECL_ATTRIBUTES (fn1));
+       tree attr2 = lookup_attribute ("target", DECL_ATTRIBUTES (fn2));
+ 
+       /* At least one function decl should have the target attribute
+ 	 specified.  */
+       if (attr1 == NULL_TREE && attr2 == NULL_TREE)
+ 	return false;
+ 
+       /* Diagnose missing target attribute if one of the decls is already
+ 	 multi-versioned.  */
+       if (attr1 == NULL_TREE || attr2 == NULL_TREE)
+ 	{
+ 	  if (DECL_FUNCTION_VERSIONED (fn1) || DECL_FUNCTION_VERSIONED (fn2))
+ 	    {
+ 	      if (attr2 != NULL_TREE)
+ 		{
+ 		  std::swap (fn1, fn2);
+ 		  attr1 = attr2;
+ 		}
+ 	      auto_diagnostic_group d;
+ 	      error_at (DECL_SOURCE_LOCATION (fn2),
+ 			"missing %<target%> attribute for multi-versioned %qD",
+ 			fn2);
+ 	      inform (DECL_SOURCE_LOCATION (fn1),
+ 		      "previous declaration of %qD", fn1);
+ 	      /* Prevent diagnosing of the same error multiple times.  */
+ 	      DECL_ATTRIBUTES (fn2)
+ 		= tree_cons (get_identifier ("target"),
+ 			     copy_node (TREE_VALUE (attr1)),
+ 			     DECL_ATTRIBUTES (fn2));
+ 	    }
+ 	  return false;
+ 	}
+ 
+       char *target1 = sorted_attr_string (TREE_VALUE (attr1));
+       char *target2 = sorted_attr_string (TREE_VALUE (attr2));
+ 
+       /* The sorted target strings must be different for fn1 and fn2
+ 	 to be versions.  */
+       bool result = strcmp (target1, target2) != 0;
+ 
+       XDELETEVEC (target1);
+       XDELETEVEC (target2);
+ 
+       return result;
+     }
+   else
+     {
+       /* As this is symmetric, can remove the case where fn2 is target clone
+ 	 and fn1 is target version by swapping here.  */
+       if (lookup_attribute ("target_clones", DECL_ATTRIBUTES (fn2)))
+ 	std::swap (fn1, fn2);
+ 
+       if (lookup_attribute ("target_clones", DECL_ATTRIBUTES (fn1)))
+ 	{
+ 	  auto_vec<string_slice> fn1_versions = get_clone_versions (fn1);
+ 	  /* fn1 is target_clone.  */
+ 	  if (lookup_attribute ("target_clones", DECL_ATTRIBUTES (fn2)))
+ 	    {
+ 	      /* Both are target_clone.  */
+ 	      auto_vec<string_slice> fn2_versions = get_clone_versions (fn2);
+ 	      for (string_slice v1 : fn1_versions)
+ 		{
+ 		  for (string_slice v2 : fn2_versions)
+ 		    if (targetm.target_option.same_function_versions (v1, v2))
+ 		      return false;
+ 		}
+ 	      return true;
+ 	    }
+ 	  else
+ 	    {
+ 	      string_slice v2 = get_target_version (fn2);
+ 
+ 	      /* target and target_clones is always conflicting for target
+ 		 semantics.  */
+ 	      if (TARGET_HAS_FMV_TARGET_ATTRIBUTE)
+ 		return false;
+ 
+ 	      /* Only fn1 is target clone.  */
+ 	      if (!v2.is_valid ())
+ 		v2 = "default";
+ 	      for (string_slice v1 : fn1_versions)
+ 		if (targetm.target_option.same_function_versions (v1, v2))
+ 		  return false;
+ 	      return true;
+ 	    }
+ 	}
+       else
+ 	{
+ 	  /* Both are target_version.  */
+ 	  string_slice v1 = get_target_version (fn1);
+ 	  string_slice v2 = get_target_version (fn2);
+ 
+ 	  if (!v1.is_valid () && !v2.is_valid ())
+ 	    return false;
+ 
+ 	  if (!v1.is_valid ())
+ 	    v1 = "default";
+ 	  if (!v2.is_valid ())
+ 	    v2 = "default";
+ 
+ 	  if (targetm.target_option.same_function_versions (v1, v2))
+ 	    return false;
+ 
+ 	  return true;
+ 	}
+     }
+ }
+ 
+ /* Check if the target_version/target_clones attributes are mergeable
+    for two decls, and if so returns false.
+    If they aren't mergeable, diagnose this and return true.
+    Only works for target_version semantics.  */
+ bool
+ diagnose_versioned_decls (tree old_decl, tree new_decl)
+ {
+   gcc_assert (!TARGET_HAS_FMV_TARGET_ATTRIBUTE);
+ 
+   string_slice old_target_attr = get_target_version (old_decl);
+   string_slice new_target_attr = get_target_version (new_decl);
+ 
+   tree old_target_clones_attr = lookup_attribute ("target_clones",
+ 						  DECL_ATTRIBUTES (old_decl));
+   tree new_target_clones_attr = lookup_attribute ("target_clones",
+ 						  DECL_ATTRIBUTES (new_decl));
+ 
+   /* If none of these are annotated, then it is mergeable.  */
+   if (!old_target_attr.is_valid ()
+       && !old_target_attr.is_valid ()
+       && !old_target_clones_attr
+       && !new_target_clones_attr)
+     return false;
+ 
+   /* If fn1 is unnanotated and fn2 contains default, then is mergeable.  */
+   if (!old_target_attr.is_valid ()
+       && !old_target_clones_attr
+       && is_function_default_version (new_decl))
+     return false;
+ 
+   /* If fn2 is unnanotated and fn1 contains default, then is mergeable.  */
+   if (!new_target_attr.is_valid ()
+       && !new_target_clones_attr
+       && is_function_default_version (old_decl))
+     return false;
+ 
+   /* In the case where both are annotated with target_clones, only mergeable if
+      the two sets of target_clones imply the same set of versions.  */
+   if (old_target_clones_attr && new_target_clones_attr)
+     {
+       auto_vec<string_slice> fn1_versions = get_clone_versions (old_decl);
+       auto_vec<string_slice> fn2_versions = get_clone_versions (new_decl);
+ 
+       bool mergeable = true;
+ 
+       if (fn1_versions.length () != fn2_versions.length ())
+ 	mergeable = false;
+ 
+       /* Check both inclusion directions.  */
+       for (auto fn1v : fn1_versions)
+ 	{
+ 	  bool matched = false;
+ 	  for (auto fn2v : fn2_versions)
+ 	    if (targetm.target_option.same_function_versions (fn1v, fn2v))
+ 	      matched = true;
+ 	  if (!matched)
+ 	    mergeable = false;
+ 	}
+ 
+       for (auto fn2v : fn2_versions)
+ 	{
+ 	  bool matched = false;
+ 	  for (auto fn1v : fn1_versions)
+ 	    if (targetm.target_option.same_function_versions (fn1v, fn2v))
+ 	      matched = true;
+ 	  if (!matched)
+ 	    mergeable = false;
+ 	}
+ 
+       if (!mergeable)
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (new_decl),
+ 		    "%qD conflicts with overlapping %<target_clone%> "
+ 		    "declaration",
+ 		    new_decl);
+ 	  inform (DECL_SOURCE_LOCATION (old_decl),
+ 		  "previous declaration of %qD", old_decl);
+ 	  return true;
+ 	}
+ 
+       return false;
+     }
+ 
+   /* If olddecl is target clones and newdecl is a target_version.
+      As they are not distinct this implies newdecl redefines a version of
+      olddecl.  Not mergeable.  */
+   if (new_target_clones_attr)
+     {
+       gcc_assert (old_target_attr.is_valid ());
+ 
+       error_at (DECL_SOURCE_LOCATION (new_decl),
+ 		"%qD conflicts for version %qB",
+ 		new_decl, &old_target_attr);
+       inform (DECL_SOURCE_LOCATION (old_decl),
+ 	      "previous declaration of %qD",
+ 	      old_decl);
+       return true;
+     }
+ 
+   if (old_target_clones_attr)
+     {
+       gcc_assert (new_target_attr.is_valid ());
+ 
+       error_at (DECL_SOURCE_LOCATION (new_decl),
+ 		"%qD conflicts with a previous declaration for version %qB",
+ 		new_decl, &new_target_attr);
+       inform (DECL_SOURCE_LOCATION (old_decl),
+ 	      "previous declaration of %qD",
+ 	      old_decl);
+       return true;
+     }
+ 
+   /* The only remaining case is two target_version annotated decls.  Must
+      be mergeable as otherwise are distinct.  */
+   return false;
+ }
+ 
  void
  tree_cc_finalize (void)
  {
diff -Nrcpad gcc-16-20250921/gcc/tree.h gcc-16-20250928/gcc/tree.h
*** gcc-16-20250921/gcc/tree.h	Sun Sep 21 22:33:31 2025
--- gcc-16-20250928/gcc/tree.h	Sun Sep 28 22:34:25 2025
*************** extern unsigned fndecl_dealloc_argno (tr
*** 7101,7116 ****
     object or pointer.  Otherwise return null.  */
  extern tree get_attr_nonstring_decl (tree, tree * = NULL);
  
- extern int get_target_clone_attr_len (tree);
- 
  /* Returns the version string for a decl with target_version attribute.
     Returns an invalid string_slice if no attribute is present.  */
  extern string_slice get_target_version (const tree);
  /* Returns a vector of the version strings from a target_clones attribute on
!    a decl.  Can also record the number of default versions found.  */
! extern auto_vec<string_slice> get_clone_versions (const tree, int * = NULL);
  /* Returns a vector of the version strings from a target_clones attribute
!    directly.  */
! extern auto_vec<string_slice> get_clone_attr_versions (const tree, int *);
  
  #endif  /* GCC_TREE_H  */
--- 7101,7124 ----
     object or pointer.  Otherwise return null.  */
  extern tree get_attr_nonstring_decl (tree, tree * = NULL);
  
  /* Returns the version string for a decl with target_version attribute.
     Returns an invalid string_slice if no attribute is present.  */
  extern string_slice get_target_version (const tree);
  /* Returns a vector of the version strings from a target_clones attribute on
!    a decl.  Can also record the number of default versions found.
!    Use bool to control whether or not the results should
!    be filtered with TARGET_CHECK_TARGET_CLONE_VERSION.  */
! extern auto_vec<string_slice> get_clone_versions
!   (const tree,int * = NULL, bool = true);
  /* Returns a vector of the version strings from a target_clones attribute
!    directly.  Additionally takes a bool to control whether or not the results
!    should be filtered with TARGET_CHECK_TARGET_CLONE_VERSION.  */
! extern auto_vec<string_slice> get_clone_attr_versions
!   (const tree, int *, bool = true);
! 
! /* Checks if two decls define any overlapping versions.  */
! extern bool disjoint_version_decls (tree, tree);
! /* Checks if two overlapping decls are not mergeable.  */
! extern bool diagnose_versioned_decls (tree, tree);
  
  #endif  /* GCC_TREE_H  */
diff -Nrcpad gcc-16-20250921/libbacktrace/filetype.awk gcc-16-20250928/libbacktrace/filetype.awk
*** gcc-16-20250921/libbacktrace/filetype.awk	Sun Sep 21 22:33:32 2025
--- gcc-16-20250928/libbacktrace/filetype.awk	Sun Sep 28 22:34:26 2025
***************
*** 3,8 ****
--- 3,9 ----
  /^\177ELF\002/      { if (NR == 1) { print "elf64"; exit } }
  /^\114\001/         { if (NR == 1) { print "pecoff"; exit } }
  /^\144\206/         { if (NR == 1) { print "pecoff"; exit } }
+ /^\000\000\377\377/ { if (NR == 1) { print "pecoff"; exit } }
  /^\001\337/         { if (NR == 1) { print "xcoff32"; exit } }
  /^\001\367/         { if (NR == 1) { print "xcoff64"; exit } }
  /^\376\355\372\316/ { if (NR == 1) { print "macho"; exit } }
diff -Nrcpad gcc-16-20250921/libcpp/ChangeLog gcc-16-20250928/libcpp/ChangeLog
*** gcc-16-20250921/libcpp/ChangeLog	Sun Sep 21 22:33:32 2025
--- gcc-16-20250928/libcpp/ChangeLog	Sun Sep 28 22:34:26 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-09-23  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR diagnostics/121986
+ 	* include/rich-location.h (fixit_hint::deletion_p): New accessor.
+ 	(fixit_hint::replacement_p): New accessor.
+ 
  2025-09-18  David Malcolm  <dmalcolm@redhat.com>
  
  	* include/line-map.h (enum location_aspect): Convert to...
diff -Nrcpad gcc-16-20250921/libcpp/include/rich-location.h gcc-16-20250928/libcpp/include/rich-location.h
*** gcc-16-20250921/libcpp/include/rich-location.h	Sun Sep 21 22:33:32 2025
--- gcc-16-20250928/libcpp/include/rich-location.h	Sun Sep 28 22:34:26 2025
*************** class fixit_hint
*** 642,647 ****
--- 642,649 ----
    size_t get_length () const { return m_len; }
  
    bool insertion_p () const { return m_start == m_next_loc; }
+   bool deletion_p () const { return m_len == 0; }
+   bool replacement_p () const { return m_len > 0 && m_start != m_next_loc; }
  
    bool ends_with_newline_p () const;
  
diff -Nrcpad gcc-16-20250921/libgcc/ChangeLog gcc-16-20250928/libgcc/ChangeLog
*** gcc-16-20250921/libgcc/ChangeLog	Sun Sep 21 22:33:32 2025
--- gcc-16-20250928/libgcc/ChangeLog	Sun Sep 28 22:34:26 2025
***************
*** 1,3 ****
--- 1,7 ----
+ 2025-09-25  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/sync-libfuncs.c (atomic_store_8): Fix asm.
+ 
  2025-09-19  Jim Lin  <jim@andestech.com>
  
  	* config/riscv/save-restore.S: Only save/restore the registers
diff -Nrcpad gcc-16-20250921/libgcc/config/pa/sync-libfuncs.c gcc-16-20250928/libgcc/config/pa/sync-libfuncs.c
*** gcc-16-20250921/libgcc/config/pa/sync-libfuncs.c	Sun Sep 21 22:33:33 2025
--- gcc-16-20250928/libgcc/config/pa/sync-libfuncs.c	Sun Sep 28 22:34:27 2025
*************** atomic_store_8 (volatile void *ptr, u64
*** 133,143 ****
  {
    double tmp;
  
!   asm volatile ("stws|stw} %2,-16(%%sp)\n\t"
! 		"{stws|stw} %R2,-12(%%sp)\n\t"
! 		"{fldds|fldd} -16(%%sp),%1\n\t"
! 		"{fstds|fstd} %1,0(%0)"
! 		: "=m" (ptr), "=&f" (tmp) : "r" (value): "memory");
  }
  #endif
  
--- 133,143 ----
  {
    double tmp;
  
!   asm volatile ("{stws|stw} %1,-16(%%sp)\n\t"
! 		"{stws|stw} %R1,-12(%%sp)\n\t"
! 		"{fldds|fldd} -16(%%sp),%0\n\t"
! 		: "=f" (tmp) : "r" (value): "memory");
!   *(volatile double *)ptr = tmp;
  }
  #endif
  
diff -Nrcpad gcc-16-20250921/libstdc++-v3/ChangeLog gcc-16-20250928/libstdc++-v3/ChangeLog
*** gcc-16-20250921/libstdc++-v3/ChangeLog	Sun Sep 21 22:33:41 2025
--- gcc-16-20250928/libstdc++-v3/ChangeLog	Sun Sep 28 22:35:06 2025
***************
*** 1,3 ****
--- 1,331 ----
+ 2025-09-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/20_util/allocator_traits/members/allocate_hint.cc:
+ 	Value-initialize variables to avoid -Wmaybe-uninitialized
+ 	warning.
+ 	* testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc:
+ 	Likewise.
+ 	* testsuite/20_util/duration/114244.cc: Likewise.
+ 	* testsuite/20_util/duration/io.cc: Likewise.
+ 
+ 2025-09-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/deque.tcc (deque::_M_shrink_to_fit): Cast
+ 	difference_type to size_type to avoid -Wsign-compare warning.
+ 	* include/std/spanstream (basic_spanbuf::seekoff): Cast
+ 	streamoff to size_t to avoid -Wsign-compare warning.
+ 
+ 2025-09-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc:
+ 	Fix assignment used instead of equality comparison.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc:
+ 	Likewise.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc:
+ 	Likewise.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc:
+ 	Likewise.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc:
+ 	Likewise.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc:
+ 	Likewise.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc:
+ 	Likewise.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc:
+ 	Likewise.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc:
+ 	Likewise.
+ 	* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc:
+ 	Likewise.
+ 	* testsuite/23_containers/map/cons/from_range.cc: Fix is_equal
+ 	function and expected value of comparison functions after
+ 	construction.
+ 	* testsuite/23_containers/multimap/cons/from_range.cc: Likewise.
+ 	* testsuite/23_containers/multiset/cons/from_range.cc: Likewise.
+ 	* testsuite/23_containers/set/cons/from_range.cc: Likewise.
+ 	* testsuite/23_containers/unordered_map/cons/from_range.cc: Fix
+ 	is_equal functions.
+ 	* testsuite/23_containers/unordered_multimap/cons/from_range.cc:
+ 	Likewise.
+ 	* testsuite/23_containers/unordered_multiset/cons/from_range.cc:
+ 	Likewise.
+ 	* testsuite/23_containers/unordered_set/cons/from_range.cc:
+ 	Likewise.
+ 	* testsuite/25_algorithms/minmax/constrained.cc: Fix assignment
+ 	used instead of equality comparison.
+ 	* testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc:
+ 	Likewise.
+ 
+ 2025-09-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_algobase.h (__search, __is_permutation):
+ 	Reuse predicate instead of creating a new one each time.
+ 	* include/bits/stl_algo.h (__is_permutation): Likewise.
+ 
+ 2025-09-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/deque (erase_if): Move predicate instead of
+ 	wrapping with std::ref.
+ 	(erase): Forward to erase_if.
+ 	* include/std/inplace_vector (erase_if, erase): Likewise.
+ 	* include/std/string (erase_if, erase): Likewise.
+ 	* include/std/vector (erase_if, erase): Likewise.
+ 
+ 2025-09-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/predefined_ops.h (equal_to, less): Define aliases
+ 	for std::equal_to<void> and std::less<void>.
+ 	(bind1st, bind2nd, not1, __equal_to): New object generator
+ 	functions for adapting predicates.
+ 	(__iter_less_iter, __iter_less_val, __iter_comp_val)
+ 	(__val_less_iter, __val_comp_iter, __iter_equal_to_iter)
+ 	(__iter_equal_to_val, __iter_comp_iter, __negate): Remove all
+ 	object generator functions and the class templates they return.
+ 	* include/bits/stl_algo.h (__move_median_to_first, __find_if_not)
+ 	(__find_if_not_n, __search_n_aux, find_end, find_if_not)
+ 	(__remove_copy_if, remove_copy, remove_copy_if, remove)
+ 	(remove_if, __adjacent_find, __unique, unique, __unique_copy)
+ 	(__unique_copy_1, __stable_partition_adaptive, stable_partition)
+ 	(__heap_select, __partial_sort_copy, partial_sort_copy)
+ 	(__unguarded_linear_insert, __insertion_sort)
+ 	(__unguarded_insertion_sort, __unguarded_partition)
+ 	(lower_bound, __upper_bound, upper_bound, __equal_range)
+ 	(equal_range, binary_search, __move_merge_adaptive)
+ 	(__move_merge_adaptive_backward, __merge_adaptive_resize)
+ 	(__merge_without_buffer, inplace_merge, __move_merge)
+ 	(__includes, includes, __next_permutation, next_permutation)
+ 	(__prev_permutation, prev_permutation, __replace_copy_if)
+ 	(replace_copy, replace_copy_if, __is_sorted_until)
+ 	(is_sorted_until, __minmax_element, minmax_element, minmax)
+ 	(is_permutation, __is_permutation, find, find_if, adjacent_find)
+ 	(count, count_if, search, search_n, unique_copy, partial_sort)
+ 	(nth_element, sort, __merge, merge, stable_sort, __set_union)
+ 	(set_union, __set_intersection, set_intersection)
+ 	(__set_difference, set_difference, __set_symmetric_difference)
+ 	(set_symmetric_difference, __min_element, min_element)
+ 	(__max_element, max_element, min, max): Use direct predicates
+ 	instead of __iter_equal_to_iter, __iter_comp_iter, and
+ 	__iter_less_iter, __negate etc. Dereference iterators when
+ 	invoking predicates.
+ 	* include/bits/stl_algobase.h (__lexicographical_compare_impl)
+ 	(__lexicographical_compare::__lc, __lower_bound, lower_bound)
+ 	(lexicographical_compare, __mismatch, mismatch, __find_if)
+ 	(__count_if, __remove_if, __search, __is_permutation)
+ 	(is_permutation, search): Likewise.
+ 	* include/bits/stl_function.h (equal_to<void>, less<void>):
+ 	Define transparent comparison functions for C++98 and C++11.
+ 	* include/bits/stl_heap.h (__is_heap_until, __is_heap)
+ 	(__push_heap, push_heap, __adjust_heap, pop_heap, make_heap)
+ 	(sort_heap, is_heap_until, is_heap): Likewise.
+ 	* include/std/deque (erase_if): Remove call to __pred_iter.
+ 	(erase): Replace __iter_equals_val with __equal_to.
+ 	* include/std/inplace_vector (erase_if, erase): Likewise.
+ 	* include/std/string (erase_if, erase): Likewise.
+ 	* include/std/vector (erase_if, erase): Likewise.
+ 
+ 2025-09-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122062
+ 	* include/bits/random.tcc (__detail::__normalize): Use void cast
+ 	for operands of comma operator.
+ 	(piecewise_linear_distribution): Likewise.
+ 	* testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc:
+ 	New test.
+ 
+ 2025-09-25  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* include/std/mdspan (__static_quotient): New overload.
+ 
+ 2025-09-25  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_algo.h: Check robust_nonmodifying_seq_ops
+ 	feature test macro instead of checking __cplusplus value. Add
+ 	comment to another __cplusplus check.
+ 	* include/bits/stl_algobase.h: Add comment to #endif.
+ 
+ 2025-09-25  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/79147
+ 	PR libstdc++/103650
+ 	* include/Makefile.am (c++config.h): Adjust sed command to
+ 	comment out STDC_HEADERS macro.
+ 	* include/Makefile.in: Regenerate.
+ 
+ 2025-09-25  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 
+ 	* testsuite/23_containers/mdspan/layouts/empty.cc: Fix indent.
+ 	* testsuite/23_containers/mdspan/layouts/mapping.cc
+ 	(test_stride_1d): Fix test.
+ 	(test_stride_2d): Rewrite using a struct.
+ 	(test_stride_3d): Ditto.
+ 	(has_static_is_exhaustive): New concept.
+ 	(test_mapping_properties): Update test.
+ 
+ 2025-09-24  Luc Grosheintz  <luc.grosheintz@gmail.com>
+ 	    Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/20_util/function_objects/not_fn/nttp.cc: Move
+ 	test of feature testing macro to version.cc
+ 	* testsuite/20_util/function_objects/not_fn/version.cc: New test.
+ 
+ 2025-09-24  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/chrono_io.h (__formatter_duration::_S_spec_for_tp):
+ 	Extracted from defition of formatter<sys_time>::__defSpec.
+ 	(formatter<chrono::sys_time<_Duration>, _CharT>::parse): Simplify
+ 	condition in if contexpr.
+ 	(formatter<chrono::sys_time<_Duration>, _CharT>::__stream_insertable):
+ 	Remove.
+ 	(formatter<chrono::sys_time<_Duration>, _CharT>::__defSpec)
+ 	(formatter<chrono::local_time<_Duration>, _CharT>::__defSpec):
+ 	Compute using __formatter_duration::_S_spec_for_tp.
+ 	(forrmatter<chrono::sys_time<_Duration>, _CharT>::parse): Check if
+ 	parse _M_chrono_spec
+ 	* testsuite/std/time/format/empty_spec.cc: Extend tests for floating
+ 	point and other non-streamable durations (years).
+ 
+ 2025-09-24  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/chrono_io.h (__formatter_chrono::_M_parse):
+ 	Replace _ParseContext with basic_format_parse_context<_CharT> and
+ 	make it non-template.
+ 	(__formatter_duration::_M_parse): Replace _ParseContext with
+ 	basic_format_parse_context<_CharT> and remove unused default
+ 	argument.
+ 
+ 2025-09-24  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* testsuite/17_intro/names.cc: Undefine 'u' on s390*-linux.
+ 
+ 2025-09-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/random.h: Include <bits/ios_base.h> instead of
+ 	<iomanip>. Change preprocessor checks to use internal feature
+ 	test macro.
+ 	(philox_engine): Reword doxygen comments. Use typename instead
+ 	of class in template parameter lists. Reformat and adjust
+ 	whitespace.
+ 	(philox_engine::_If_seed_seq): Replace alias template with
+ 	__is_seed_seq variable template.
+ 	(philox_engine::philox_engine(result_type)): Define inline.
+ 	(philox_engine::seed(result_type), philox_engine::set_counter)
+ 	(philox_engine::operator(), philox_engine::discard): Likewise.
+ 	(operator==): Define as defaulted.
+ 	(operator<<): Reuse widened char.
+ 	* include/bits/random.tcc: Reformat and adjust whitespace.
+ 	(philox_engine::_M_philox): Use std::array copy constructor and
+ 	std::array::fill instead of looping.
+ 	* testsuite/26_numerics/random/philox4x32.cc: Gate test on
+ 	feature test macro. Add static_assert to check typedef.
+ 	* testsuite/26_numerics/random/philox4x64.cc: Likewise.
+ 	* testsuite/26_numerics/random/philox_engine/cons/copy.cc: Add
+ 	VERIFY assertions to check copies are equal. Test different
+ 	seeds.
+ 	* testsuite/26_numerics/random/philox_engine/cons/default.cc:
+ 	Add VERIFY assertions to check construction results.
+ 	* testsuite/26_numerics/random/philox_engine/cons/seed.cc:
+ 	Likewise.
+ 	* testsuite/26_numerics/random/philox_engine/operators/equal.cc:
+ 	Also test inequality.
+ 	* testsuite/26_numerics/random/philox_engine/operators/serialize.cc:
+ 	Remove redundant include and return.
+ 	* testsuite/26_numerics/random/philox_engine/requirements/constants.cc:
+ 	Check values of all constants.
+ 	* testsuite/26_numerics/random/philox_engine/requirements/typedefs.cc:
+ 	Check typedefs are correct.
+ 	* testsuite/26_numerics/random/philox_engine/cons/119794.cc:
+ 	Removed.
+ 	* testsuite/26_numerics/random/philox_engine/cons/seed_seq.cc:
+ 	Removed.
+ 	* testsuite/26_numerics/random/philox_engine/operators/inequal.cc:
+ 	Removed.
+ 	* testsuite/26_numerics/random/philox_engine/requirements/constexpr_data.cc:
+ 	Removed.
+ 	* testsuite/26_numerics/random/philox_engine/requirements/constexpr_functions.cc:
+ 	Removed.
+ 	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
+ 	line number.
+ 
+ 2025-09-23  1nfocalypse  <1nfocalypse@protonmail.com>
+ 
+ 	PR libstdc++/119794
+ 	* include/bits/random.h (philox_engine): Define.
+ 	* include/bits/random.tcc (philox_engine): Define member
+ 	functions.
+ 	* include/bits/version.def (philox_engine): New macro.
+ 	* include/bits/version.h: Regenerated.
+ 	* include/std/random: Define __glibcxx_want_philox_engine and
+ 	include <bits/version.h>.
+ 	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
+ 	line number.
+ 	* testsuite/26_numerics/random/philox4x32.cc: New test.
+ 	* testsuite/26_numerics/random/philox4x64.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/cons/119794.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/cons/copy.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/cons/default.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/cons/seed.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/cons/seed_seq.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/operators/equal.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/operators/inequal.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/operators/serialize.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/requirements/constants.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/requirements/constexpr_data.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/requirements/constexpr_functions.cc: New test.
+ 	* testsuite/26_numerics/random/philox_engine/requirements/typedefs.cc: New test.
+ 
+ 2025-09-23  Ben Wu  <soggysocks206@gmail.com>
+ 
+ 	PR libstdc++/118087
+ 	* include/bits/deque.tcc: Use _Temporary_value in
+ 	_M_emplace_aux.
+ 	* include/bits/stl_deque.h: Introduce _Temporary_value.
+ 	* testsuite/23_containers/deque/modifiers/emplace/118087.cc:
+ 	New test.
+ 
+ 2025-09-23  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/121940
+ 	* include/bits/funcwrap.h (__polyfunc::__deduce_funcref): Return void
+ 	for ill-formed constructs.
+ 	(function_ref(nontype_t<__f>, _Tp&&)): Constrain on __deduce_funcref
+ 	producing non-void results.
+ 	* testsuite/20_util/function_ref/deduction.cc: Negative tests.
+ 
+ 2025-09-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/79147
+ 	* include/Makefile.am (c++config.h): Adjust sed command to
+ 	comment out all PACKAGE_XXX macros and to avoid adjusting
+ 	PACKAGE_VERSION twice.
+ 	* include/Makefile.in: Regenerate.
+ 
+ 2025-09-23  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/chrono_io.h (formatter<chrono::utc_time, _CharT>):
+ 	(formatter<chrono::gps_time<_Duration>, _CharT>)
+ 	(formatter<chrono::tai_time<_Duration>, _CharT): Remove
+ 	__formatter_chrono base class.
+ 
+ 2025-09-22  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/chrono_io.h(__formatter_chrono::_M_parse): Update
+ 	needed flags for %g, %G, %V, %U, %W.
+ 	(__formatter_chrono::_M_format_to): Change how %V is handled.
+ 	(__formatter_chrono::_M_g_G): Merged into _M_g_G_V.
+ 	(__formatter_chrono::_M_g_G_V): Reworked from _M_g_G.
+ 	(__formatter_chrono::_M_U_V_W): Changed into _M_U_V.
+ 	(__formatter_chrono::_M_U_W): Reworked implementation.
+ 	* testsuite/std/time/year_month_day/io.cc: New tests.
+ 
+ 2025-09-22  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/106658
+ 	* include/bits/stl_construct.h (std::start_lifetime_as_array)
+ 	(std::start_lifetime_as): Moved from std/memory, with update
+ 	to guard macros.
+ 	* include/std/memory (std::start_lifetime_as_array)
+ 	(std::start_lifetime_as): Moved to bits/stl_construct.h.
+ 
  2025-09-19  Nathan Myers  <ncm@cantrip.org>
  
  	PR libstdc++/119744
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/Makefile.am gcc-16-20250928/libstdc++-v3/include/Makefile.am
*** gcc-16-20250921/libstdc++-v3/include/Makefile.am	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/Makefile.am	Sun Sep 28 22:35:07 2025
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1420,1430 ****
  	-e "$$verbose_assert" \
  	    < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
  	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
! 	    -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
! 	    -e 's/VERSION/_GLIBCXX_VERSION/g' \
  	    -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
  	    -e 's/LT_OBJDIR/_GLIBCXX_LT_OBJDIR/g' \
! 	    -e 's/STDC_HEADERS/_GLIBCXX_STDC_HEADERS/g' \
  	    -e 's/_DARWIN_USE_64_BIT_INODE/_GLIBCXX_DARWIN_USE_64_BIT_INODE/g' \
  	    -e 's/_FILE_OFFSET_BITS/_GLIBCXX_FILE_OFFSET_BITS/g' \
  	    -e 's/_LARGE_FILES/_GLIBCXX_LARGE_FILES/g' \
--- 1420,1430 ----
  	-e "$$verbose_assert" \
  	    < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
  	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
! 	    -e '/PACKAGE/s,^,// ,' \
! 	    -e '/PACKAGE/!s/VERSION/_GLIBCXX_VERSION/g' \
  	    -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
  	    -e 's/LT_OBJDIR/_GLIBCXX_LT_OBJDIR/g' \
! 	    -e 's,^#.*STDC_HEADERS,// &,' \
  	    -e 's/_DARWIN_USE_64_BIT_INODE/_GLIBCXX_DARWIN_USE_64_BIT_INODE/g' \
  	    -e 's/_FILE_OFFSET_BITS/_GLIBCXX_FILE_OFFSET_BITS/g' \
  	    -e 's/_LARGE_FILES/_GLIBCXX_LARGE_FILES/g' \
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/Makefile.in gcc-16-20250928/libstdc++-v3/include/Makefile.in
*** gcc-16-20250921/libstdc++-v3/include/Makefile.in	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/Makefile.in	Sun Sep 28 22:35:07 2025
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1897,1907 ****
  	-e "$$verbose_assert" \
  	    < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
  	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
! 	    -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
! 	    -e 's/VERSION/_GLIBCXX_VERSION/g' \
  	    -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
  	    -e 's/LT_OBJDIR/_GLIBCXX_LT_OBJDIR/g' \
! 	    -e 's/STDC_HEADERS/_GLIBCXX_STDC_HEADERS/g' \
  	    -e 's/_DARWIN_USE_64_BIT_INODE/_GLIBCXX_DARWIN_USE_64_BIT_INODE/g' \
  	    -e 's/_FILE_OFFSET_BITS/_GLIBCXX_FILE_OFFSET_BITS/g' \
  	    -e 's/_LARGE_FILES/_GLIBCXX_LARGE_FILES/g' \
--- 1897,1907 ----
  	-e "$$verbose_assert" \
  	    < ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
  	sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
! 	    -e '/PACKAGE/s,^,// ,' \
! 	    -e '/PACKAGE/!s/VERSION/_GLIBCXX_VERSION/g' \
  	    -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
  	    -e 's/LT_OBJDIR/_GLIBCXX_LT_OBJDIR/g' \
! 	    -e 's,^#.*STDC_HEADERS,// &,' \
  	    -e 's/_DARWIN_USE_64_BIT_INODE/_GLIBCXX_DARWIN_USE_64_BIT_INODE/g' \
  	    -e 's/_FILE_OFFSET_BITS/_GLIBCXX_FILE_OFFSET_BITS/g' \
  	    -e 's/_LARGE_FILES/_GLIBCXX_LARGE_FILES/g' \
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/chrono_io.h gcc-16-20250928/libstdc++-v3/include/bits/chrono_io.h
*** gcc-16-20250921/libstdc++-v3/include/bits/chrono_io.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/chrono_io.h	Sun Sep 28 22:35:07 2025
*************** namespace __format
*** 559,840 ****
        __formatter_chrono(_ChronoSpec<_CharT> __spec) noexcept
        : _M_spec(__spec)
        { }
  
!       template<typename _ParseContext>
! 	constexpr typename _ParseContext::iterator
! 	_M_parse(_ParseContext& __pc, _ChronoParts __parts,
! 		 const _ChronoSpec<_CharT>& __def)
! 	{
! 	  auto __first = __pc.begin();
! 	  auto __last = __pc.end();
! 
! 	  _ChronoSpec<_CharT> __spec = __def;
  
! 	  auto __finalize = [this, &__spec, &__def] {
! 	    using enum _ChronoParts;
!             _ChronoParts __checked 
! 	      = __spec._M_debug ? _YearMonthDay|_IndexedWeekday
! 	                        : _Month|_Weekday;
! 	    // n.b. for calendar types __def._M_needed contains only parts
! 	    // copied from the input, remaining ones are computed, and thus ok
! 	    __spec._M_needs_ok_check 
! 	      = __spec._M_needs(__def._M_needed & __checked);
! 	    _M_spec = __spec;
! 	  };
  
! 	  auto __finished = [&] {
! 	    if (__first == __last || *__first == '}')
! 	      {
! 		__finalize();
! 		return true;
! 	      }
! 	    return false;
! 	  };
  
! 	  if (__finished())
! 	    return __first;
  
! 	  __first = __spec._M_parse_fill_and_align(__first, __last);
! 	  if (__finished())
! 	    return __first;
  
! 	  __first = __spec._M_parse_width(__first, __last, __pc);
! 	  if (__finished())
! 	    return __first;
  
! 	  if (*__first == '.')
! 	    {
! 	      if ((__parts & _ChronoParts::_EpochUnits) == 0
  		  || !__spec._M_floating_point_rep)
! 		__throw_format_error("format error: invalid precision for duration");
  
! 	      // Precision is allowed, but value is ignored.
! 	      __first = _Spec<_CharT>()._M_parse_precision(__first, __last, __pc);
! 	      // Still inditate that there was user supplied precision.
! 	      __spec._M_prec_kind = _WP_value;
! 	     if (__finished())
! 	       return __first;
! 	    }
  
! 	  __spec._M_localized = false;
! 	  __first = __spec._M_parse_locale(__first, __last);
! 	  if (__finished())
! 	    return __first;
  
! 	  // Everything up to the end of the string or the first '}' is a
! 	  // chrono-specs string. Check it is valid.
! 	  {
! 	    __string_view __str(__first, __last - __first);
! 	    auto __end = __str.find('}');
! 	    if (__end != __str.npos)
! 	      {
! 		__str.remove_suffix(__str.length() - __end);
! 		__last = __first + __end;
! 	      }
! 	    if (__str.find('{') != __str.npos)
! 	      __throw_format_error("chrono format error: '{' in chrono-specs");
! 	  }
  
! 	  // Parse chrono-specs in [first,last), checking each conversion-spec
! 	  // against __parts (so fail for %Y if no year in parts).
! 	  // Save range in __spec._M_chrono_specs.
! 	  __spec._M_debug = false;
! 	  __spec._M_locale_specific = false;
! 	  __spec._M_needed = _ChronoParts::_None;
! 	  __spec._M_chrono_specs = __string_view();
  
! 	  const auto __chrono_specs = __first++; // Skip leading '%'
! 	  if (*__chrono_specs != '%')
! 	    __throw_format_error("chrono format error: no '%' at start of "
! 				 "chrono-specs");
  
! 	  _CharT __mod{};
! 	  bool __conv = true;
! 	  while (__first != __last)
! 	    {
! 	      enum _Mods { _Mod_none, _Mod_E, _Mod_O, _Mod_E_O };
! 	      _Mods __allowed_mods = _Mod_none;
  
! 	      _ChronoParts __needed = _ChronoParts::_None;
! 	      bool __locale_specific = false;
  
! 	      _CharT __c = *__first++;
! 	      switch (__c)
! 		{
! 		using enum _ChronoParts;
! 		case 'a':
! 		case 'A':
! 		  __needed = _Weekday;
! 		  __locale_specific = true;
! 		  break;
! 		case 'b':
! 		case 'h':
! 		case 'B':
! 		  __needed = _Month;
! 		  __locale_specific = true;
! 		  break;
! 		case 'c':
! 		  __needed = _Date|_HoursMinutesSeconds;
! 		  __allowed_mods = _Mod_E;
! 		  __locale_specific = true;
! 		  break;
! 		case 'C':
! 		  __needed = _Year;
! 		  __allowed_mods = _Mod_E;
! 		  break;
! 		case 'd':
! 		case 'e':
! 		  __needed = _Day;
! 		  __allowed_mods = _Mod_O;
! 		  break;
! 		case 'D':
! 		case 'F':
! 		  __needed = _YearMonthDay;
! 		  break;
! 		case 'g':
! 		case 'G':
! 		  __needed = _LocalDays|_Weekday;
! 		  break;
! 		case 'H':
! 		case 'I':
! 		  __needed = _HoursMinutesSeconds;
! 		  __allowed_mods = _Mod_O;
! 		  break;
! 		case 'j':
! 		  __needed = __parts & _DayOfYear;
! 		  // If we do not know day-of-year then we must have a duration,
! 		  // which is to be formatted as decimal number of days.
! 		  if (__needed == _None)
! 		    __needed = _HoursMinutesSeconds;
! 		  break;
! 		case 'm':
! 		  __needed = _Month;
! 		  __allowed_mods = _Mod_O;
! 		  break;
! 		case 'M':
! 		  __needed = _HoursMinutesSeconds;
! 		  __allowed_mods = _Mod_O;
! 		  break;
! 		case 'p':
! 		case 'r':
! 		  __locale_specific = true;
! 		  [[fallthrough]];
! 		case 'R':
! 		  __needed = _HoursMinutesSeconds;
! 		  break;
! 		case 'T':
! 		  __needed = _TimeOfDay;
! 		  break;
! 		case 'q':
! 		  __needed = _UnitSuffix;
! 		  break;
! 		case 'Q':
! 		  __needed = _EpochUnits;
! 		  break;
! 		case 'S':
! 		  __needed = _TimeOfDay;
! 		  __allowed_mods = _Mod_O;
! 		  break;
! 		case 'u':
! 		case 'w':
! 		  __needed = _Weekday;
! 		  __allowed_mods = _Mod_O;
! 		  break;
! 		case 'U':
! 		case 'V':
! 		case 'W':
! 		  __needed = _LocalDays|_Year|_DayOfYear|_Weekday;
! 		  __allowed_mods = _Mod_O;
! 		  break;
! 		case 'x':
! 		  __needed = _Date;
! 		  __locale_specific = true;
! 		  __allowed_mods = _Mod_E;
! 		  break;
! 		case 'X':
  		  __needed = _HoursMinutesSeconds;
! 		  __locale_specific = true;
! 		  __allowed_mods = _Mod_E;
! 		  break;
! 		case 'y':
! 		  __needed = _Year;
! 		  __allowed_mods = _Mod_E_O;
! 		  break;
! 		case 'Y':
! 		  __needed = _Year;
! 		  __allowed_mods = _Mod_E;
! 		  break;
! 		case 'z':
! 		  __needed = _ZoneOffset;
! 		  __allowed_mods = _Mod_E_O;
! 		  break;
! 		case 'Z':
! 		  __needed = _ZoneAbbrev;
! 		  break;
! 		case 'n':
! 		case 't':
! 		case '%':
! 		  break;
! 		case 'O':
! 		case 'E':
! 		  if (__mod) [[unlikely]]
! 		    {
! 		      __allowed_mods = _Mod_none;
! 		      break;
! 		    }
! 		  __mod = __c;
! 		  continue;
! 		default:
! 		  __throw_format_error("chrono format error: invalid "
! 				       " specifier in chrono-specs");
! 		}
! 
! 	      if ((__mod == 'E' && !(__allowed_mods & _Mod_E))
! 		    || (__mod == 'O' && !(__allowed_mods & _Mod_O)))
! 		__throw_format_error("chrono format error: invalid "
! 				     " modifier in chrono-specs");
! 	      if (__mod && __c != 'z')
  		__locale_specific = true;
! 	      __mod = _CharT();
  
! 	      // localized formats do not include subseconds
! 	      if (__locale_specific)
! 		__needed -= _ChronoParts::_Subseconds;
  
! 	      if ((__parts & __needed) != __needed)
! 		__throw_format_error("chrono format error: format argument "
! 				     "does not contain the information "
! 				     "required by the chrono-specs");
! 	      __spec._M_needed |= __needed;
! 	      __spec._M_locale_specific |= __locale_specific;
  
! 	      // Scan for next '%', ignoring literal-chars before it.
! 	      size_t __pos = __string_view(__first, __last - __first).find('%');
! 	      if (__pos == 0)
! 		++__first;
! 	      else
! 		{
! 		  if (__pos == __string_view::npos)
! 		    {
! 		      __first = __last;
! 		      __conv = false;
! 		    }
! 		  else
! 		    __first += __pos + 1;
! 		}
! 	    }
  
! 	  // Check for a '%' conversion-spec without a type.
! 	  if (__conv || __mod != _CharT())
! 	    __throw_format_error("chrono format error: unescaped '%' in "
! 				 "chrono-specs");
  
! 	  __spec._M_chrono_specs
! 	    = __string_view(__chrono_specs, __first - __chrono_specs);
  
! 	  __finalize();
! 	  return __first;
! 	}
  
        // pre: !_M_spec._M_chrono_specs.empty()
        template<typename _FormatContext>
--- 559,839 ----
        __formatter_chrono(_ChronoSpec<_CharT> __spec) noexcept
        : _M_spec(__spec)
        { }
+ 	
+       constexpr typename basic_format_parse_context<_CharT>::iterator
+       _M_parse(basic_format_parse_context<_CharT>& __pc, _ChronoParts __parts,
+ 	       const _ChronoSpec<_CharT>& __def)
+       {
+ 	auto __first = __pc.begin();
+ 	auto __last = __pc.end();
  
! 	_ChronoSpec<_CharT> __spec = __def;
  
! 	auto __finalize = [this, &__spec, &__def] {
! 	  using enum _ChronoParts;
! 	  _ChronoParts __checked
! 	    = __spec._M_debug ? _YearMonthDay|_IndexedWeekday
! 			      : _Month|_Weekday;
! 	  // n.b. for calendar types __def._M_needed contains only parts
! 	  // copied from the input, remaining ones are computed, and thus ok
! 	  __spec._M_needs_ok_check
! 	     = __spec._M_needs(__def._M_needed & __checked);
! 	  _M_spec = __spec;
! 	};
  
! 	auto __finished = [&] {
! 	  if (__first == __last || *__first == '}')
! 	    {
! 	      __finalize();
! 	      return true;
! 	    }
! 	  return false;
! 	};
  
! 	if (__finished())
! 	  return __first;
  
! 	__first = __spec._M_parse_fill_and_align(__first, __last);
! 	if (__finished())
! 	  return __first;
  
! 	__first = __spec._M_parse_width(__first, __last, __pc);
! 	if (__finished())
! 	  return __first;
  
! 	if (*__first == '.')
! 	  {
! 	    if ((__parts & _ChronoParts::_EpochUnits) == 0
  		  || !__spec._M_floating_point_rep)
! 	      __throw_format_error("format error: invalid precision for duration");
  
! 	    // Precision is allowed, but value is ignored.
! 	    __first = _Spec<_CharT>()._M_parse_precision(__first, __last, __pc);
! 	    // Still inditate that there was user supplied precision.
! 	    __spec._M_prec_kind = _WP_value;
! 	    if (__finished())
! 	      return __first;
! 	  }
  
! 	__spec._M_localized = false;
! 	__first = __spec._M_parse_locale(__first, __last);
! 	if (__finished())
! 	  return __first;
  
! 	// Everything up to the end of the string or the first '}' is a
! 	// chrono-specs string. Check it is valid.
! 	{
! 	  __string_view __str(__first, __last - __first);
! 	  auto __end = __str.find('}');
! 	  if (__end != __str.npos)
! 	    {
! 	      __str.remove_suffix(__str.length() - __end);
! 	      __last = __first + __end;
! 	    }
! 	  if (__str.find('{') != __str.npos)
! 	    __throw_format_error("chrono format error: '{' in chrono-specs");
! 	}
  
! 	// Parse chrono-specs in [first,last), checking each conversion-spec
! 	// against __parts (so fail for %Y if no year in parts).
! 	// Save range in __spec._M_chrono_specs.
! 	__spec._M_debug = false;
! 	__spec._M_locale_specific = false;
! 	__spec._M_needed = _ChronoParts::_None;
! 	__spec._M_chrono_specs = __string_view();
  
! 	const auto __chrono_specs = __first++; // Skip leading '%'
! 	if (*__chrono_specs != '%')
! 	  __throw_format_error("chrono format error: no '%' at start of "
! 			       "chrono-specs");
  
! 	_CharT __mod{};
! 	bool __conv = true;
! 	while (__first != __last)
! 	  {
! 	    enum _Mods { _Mod_none, _Mod_E, _Mod_O, _Mod_E_O };
! 	    _Mods __allowed_mods = _Mod_none;
  
! 	    _ChronoParts __needed = _ChronoParts::_None;
! 	    bool __locale_specific = false;
  
! 	    _CharT __c = *__first++;
! 	    switch (__c)
! 	      {
! 	      using enum _ChronoParts;
! 	      case 'a':
! 	      case 'A':
! 		__needed = _Weekday;
! 		__locale_specific = true;
! 		break;
! 	      case 'b':
! 	      case 'h':
! 	      case 'B':
! 		__needed = _Month;
! 		__locale_specific = true;
! 		break;
! 	      case 'c':
! 		__needed = _Date|_HoursMinutesSeconds;
! 		__allowed_mods = _Mod_E;
! 		__locale_specific = true;
! 		break;
! 	      case 'C':
! 		__needed = _Year;
! 		__allowed_mods = _Mod_E;
! 		break;
! 	      case 'd':
! 	      case 'e':
! 		__needed = _Day;
! 		__allowed_mods = _Mod_O;
! 		break;
! 	      case 'D':
! 	      case 'F':
! 		__needed = _YearMonthDay;
! 		break;
! 	      case 'g':
! 	      case 'G':
! 	      case 'V':
! 		__needed = _LocalDays|_Year|_DayOfYear|_Weekday;
! 		break;
! 	      case 'H':
! 	      case 'I':
! 		__needed = _HoursMinutesSeconds;
! 		__allowed_mods = _Mod_O;
! 		break;
! 	      case 'j':
! 		__needed = __parts & _DayOfYear;
! 		// If we do not know day-of-year then we must have a duration,
! 		// which is to be formatted as decimal number of days.
! 		if (__needed == _None)
  		  __needed = _HoursMinutesSeconds;
! 		break;
! 	      case 'm':
! 		__needed = _Month;
! 		__allowed_mods = _Mod_O;
! 		break;
! 	      case 'M':
! 		__needed = _HoursMinutesSeconds;
! 		__allowed_mods = _Mod_O;
! 		break;
! 	      case 'p':
! 	      case 'r':
  		__locale_specific = true;
! 		[[fallthrough]];
! 	      case 'R':
! 		__needed = _HoursMinutesSeconds;
! 		break;
! 	      case 'T':
! 		__needed = _TimeOfDay;
! 		break;
! 	      case 'q':
! 		__needed = _UnitSuffix;
! 		break;
! 	      case 'Q':
! 		__needed = _EpochUnits;
! 		break;
! 	      case 'S':
! 		__needed = _TimeOfDay;
! 		__allowed_mods = _Mod_O;
! 		break;
! 	      case 'u':
! 	      case 'w':
! 		__needed = _Weekday;
! 		__allowed_mods = _Mod_O;
! 		break;
! 	      case 'U':
! 	      case 'W':
! 		__needed = _DayOfYear|_Weekday;
! 		__allowed_mods = _Mod_O;
! 		break;
! 	      case 'x':
! 		__needed = _Date;
! 		__locale_specific = true;
! 		__allowed_mods = _Mod_E;
! 		break;
! 	      case 'X':
! 		__needed = _HoursMinutesSeconds;
! 		__locale_specific = true;
! 		__allowed_mods = _Mod_E;
! 		break;
! 	      case 'y':
! 		__needed = _Year;
! 		__allowed_mods = _Mod_E_O;
! 		break;
! 	      case 'Y':
! 		__needed = _Year;
! 		__allowed_mods = _Mod_E;
! 		break;
! 	      case 'z':
! 		__needed = _ZoneOffset;
! 		__allowed_mods = _Mod_E_O;
! 		break;
! 	      case 'Z':
! 		__needed = _ZoneAbbrev;
! 		break;
! 	      case 'n':
! 	      case 't':
! 	      case '%':
! 		break;
! 	      case 'O':
! 	      case 'E':
! 		if (__mod) [[unlikely]]
! 		  {
! 		    __allowed_mods = _Mod_none;
! 		    break;
! 		  }
! 		__mod = __c;
! 		continue;
! 	      default:
! 		__throw_format_error("chrono format error: invalid specifier "
! 				     "in chrono-specs");
! 	    }
  
! 	    if ((__mod == 'E' && !(__allowed_mods & _Mod_E))
! 		   || (__mod == 'O' && !(__allowed_mods & _Mod_O)))
! 	      __throw_format_error("chrono format error: invalid  modifier "
! 				   "in chrono-specs");
! 	    if (__mod && __c != 'z')
! 	      __locale_specific = true;
! 	    __mod = _CharT();
  
! 	    // localized formats do not include subseconds
! 	    if (__locale_specific)
! 	      __needed -= _ChronoParts::_Subseconds;
  
! 	    if ((__parts & __needed) != __needed)
! 	      __throw_format_error("chrono format error: format argument does "
! 				   "not contain the information required by the "
! 				   "chrono-specs");
! 	    __spec._M_needed |= __needed;
! 	    __spec._M_locale_specific |= __locale_specific;
  
! 	    // Scan for next '%', ignoring literal-chars before it.
! 	    size_t __pos = __string_view(__first, __last - __first).find('%');
! 	    if (__pos == 0)
! 	      ++__first;
! 	    else
! 	      {
! 		if (__pos == __string_view::npos)
! 		  {
! 		    __first = __last;
! 		    __conv = false;
! 		  }
! 		else
! 		  __first += __pos + 1;
! 	      }
! 	  }
  
! 	// Check for a '%' conversion-spec without a type.
! 	if (__conv || __mod != _CharT())
! 	  __throw_format_error("chrono format error: unescaped '%' in "
! 			       "chrono-specs");
  
! 	__spec._M_chrono_specs
! 	  = __string_view(__chrono_specs, __first - __chrono_specs);
! 
! 	__finalize();
! 	return __first;
!       }
  
        // pre: !_M_spec._M_chrono_specs.empty()
        template<typename _FormatContext>
*************** namespace __format
*** 869,875 ****
  	  return __sink._M_finish(_M_spec._M_align, _M_spec._M_fill);
  	}
  
- 
        _ChronoSpec<_CharT> _M_spec;
  
      protected:
--- 868,873 ----
*************** namespace __format
*** 1147,1153 ****
  		  break;
  		case 'g':
  		case 'G':
! 		  __out = _M_g_G(__t, std::move(__out), __c == 'G');
  		  break;
  		case 'H':
  		case 'I':
--- 1145,1152 ----
  		  break;
  		case 'g':
  		case 'G':
! 		case 'V':
! 		  __out = _M_g_G_V(__t, std::move(__out), __c);
  		  break;
  		case 'H':
  		case 'I':
*************** namespace __format
*** 1189,1197 ****
  		  __out = _M_u_w(__t._M_weekday, std::move(__out), __c);
  		  break;
  		case 'U':
- 		case 'V':
  		case 'W':
! 		  __out = _M_U_V_W(__t, std::move(__out), __c);
  		  break;
  		case 'z':
  		  __out = _M_z(__t._M_zone_offset, std::move(__out), (bool)__mod);
--- 1188,1195 ----
  		  __out = _M_u_w(__t._M_weekday, std::move(__out), __c);
  		  break;
  		case 'U':
  		case 'W':
! 		  __out = _M_U_W(__t, std::move(__out), __c);
  		  break;
  		case 'z':
  		  __out = _M_z(__t._M_zone_offset, std::move(__out), (bool)__mod);
*************** namespace __format
*** 1441,1458 ****
  
        template<typename _OutIter>
  	_OutIter
! 	_M_g_G(const _ChronoData<_CharT>& __t, _OutIter __out,
! 	       bool __full) const
  	{
! 	  // %g last two decimal digits of the ISO week-based year.
! 	  // %G ISO week-based year.
  	  using namespace chrono;
! 	  auto __d = __t._M_ldays;
! 	  // Move to nearest Thursday:
! 	  __d -= (__t._M_weekday - Monday) - days(3);
! 	  // ISO week-based year is the year that contains that Thursday:
! 	  year __y = year_month_day(__d).year();
! 	  return _M_C_y_Y(__y, std::move(__out), "yY"[__full]);
  	}
  
        template<typename _OutIter>
--- 1439,1485 ----
  
        template<typename _OutIter>
  	_OutIter
! 	_M_g_G_V(const _ChronoData<_CharT>& __t, _OutIter __out,
! 		_CharT __conv) const
  	{
! 	  // %g  last two decimal digits of the ISO week-based year.
! 	  // %G  ISO week-based year.
! 	  // %V  ISO week-based week number as a decimal number.
! 	  // %OV Locale's alternative numeric rep.
! 
! 	  // ISO week-based year of __t is the year that contains the nearest
! 	  // Thursday. The ISO week of __t is the number of weeks since
! 	  // January 1 of that year.
! 
  	  using namespace chrono;
! 	  // Offset of the nearest Thursday:
! 	  const days __offset = (__t._M_weekday - Monday) - days(3);
! 	  // Nearest Thursday as local days:
! 	  const local_days __ild = __t._M_ldays - __offset;
! 	  // Day of year of nearest Thursday:
! 	  days __idoy = __t._M_day_of_year - __offset;
! 
! 	  // Year of nearest Thursday:
! 	  year __iyear;
! 	  if (__idoy <= days(0))
! 	    __iyear = __t._M_year - years(1);
! 	  else if (__idoy <= days(365))
! 	    __iyear = __t._M_year;
! 	  else if (__idoy == days(366) && __t._M_year.is_leap())
! 	    __iyear = __t._M_year;
! 	  else if (__idoy <= days(730))
! 	    __iyear = __t._M_year + years(1);
! 	  else [[unlikely]]
! 	    __iyear = year_month_day(__ild).year();
! 
! 	  if (__conv != 'V')
! 	    return _M_C_y_Y(__iyear, std::move(__out), "yY"[__conv == 'G']);
! 
! 	  if (__iyear != __t._M_year)
! 	    __idoy = __ild - local_days(__iyear/January/0);
! 
! 	  const auto __wi = chrono::floor<weeks>(__idoy - days(1)).count() + 1;
! 	  return __format::__write(std::move(__out), _S_two_digits(__wi));
  	}
  
        template<typename _OutIter>
*************** namespace __format
*** 1709,1743 ****
  
        template<typename _OutIter>
  	_OutIter
! 	_M_U_V_W(const _ChronoData<_CharT>& __t, _OutIter __out,
! 		 _CharT __conv) const
  	{
  	  // %U  Week number of the year as a decimal number, from first Sunday.
  	  // %OU Locale's alternative numeric rep.
- 	  // %V  ISO week-based week number as a decimal number.
- 	  // %OV Locale's alternative numeric rep.
  	  // %W  Week number of the year as a decimal number, from first Monday.
  	  // %OW Locale's alternative numeric rep.
- 	  using namespace chrono;
  
! 	  auto __d = __t._M_ldays;
! 	  local_days __first; // First day of week 1.
! 	  if (__conv == 'V') // W01 begins on Monday before first Thursday.
! 	    {
! 	      // Move to nearest Thursday:
! 	      __d -= (__t._M_weekday - Monday) - days(3);
! 	      // ISO week of __t is number of weeks since January 1 of the
! 	      // same year as that nearest Thursday.
! 	      __first = local_days(year_month_day(__d).year()/January/1);
! 	    }
! 	  else
! 	    {
! 	      const weekday __weekstart = __conv == 'U' ? Sunday : Monday;
! 	      __first = local_days(__t._M_year/January/__weekstart[1]);
! 	    }
! 	  auto __weeks = chrono::floor<weeks>(__d - __first);
! 	  __string_view __sv = _S_two_digits(__weeks.count() + 1);
! 	  return __format::__write(std::move(__out), __sv);
  	}
  
        template<typename _OutIter>
--- 1736,1754 ----
  
        template<typename _OutIter>
  	_OutIter
! 	_M_U_W(const _ChronoData<_CharT>& __t, _OutIter __out,
! 	       _CharT __conv) const
  	{
  	  // %U  Week number of the year as a decimal number, from first Sunday.
  	  // %OU Locale's alternative numeric rep.
  	  // %W  Week number of the year as a decimal number, from first Monday.
  	  // %OW Locale's alternative numeric rep.
  
! 	  using namespace chrono;
! 	  const weekday __weekstart = __conv == 'U' ? Sunday : Monday;
! 	  const days __offset = __t._M_weekday - __weekstart;
! 	  auto __weeks = chrono::floor<weeks>(__t._M_day_of_year - __offset - days(1));
! 	  return __format::__write(std::move(__out), _S_two_digits(__weeks.count() + 1));
  	}
  
        template<typename _OutIter>
*************** namespace __format
*** 1918,1930 ****
  	  return __res;
  	};
  
        using __formatter_chrono<_CharT>::__formatter_chrono;
        using __formatter_chrono<_CharT>::_M_spec;
  
!       template<typename _Duration, typename _ParseContext>
! 	constexpr typename _ParseContext::iterator
! 	_M_parse(_ParseContext& __pc, _ChronoParts __parts,
! 		 const _ChronoSpec<_CharT>& __def = {})
  	{
  	  using _Rep = typename _Duration::rep;
  	  using enum _ChronoParts;
--- 1929,1959 ----
  	  return __res;
  	};
  
+       template<typename _Duration>
+ 	static consteval
+ 	_ChronoSpec<_CharT>
+ 	_S_spec_for_tp()
+ 	{
+ 	  using enum _ChronoParts;
+ 	  // streaming of local_time is defined in terms of sys_time
+ 	  constexpr bool __stream_insertable =
+ 	    requires (basic_ostream<_CharT>& __os, chrono::sys_time<_Duration> __t)
+ 	      { __os << __t; };
+ 	  if constexpr (!__stream_insertable)
+ 	    return _S_spec_for<_Duration>(_None);
+ 	  else if constexpr (is_convertible_v<_Duration, chrono::days>)
+ 	    return _S_spec_for<_Duration>(_Date);
+ 	  else
+ 	    return _S_spec_for<_Duration>(_DateTime);
+ 	}
+ 
        using __formatter_chrono<_CharT>::__formatter_chrono;
        using __formatter_chrono<_CharT>::_M_spec;
  
!       template<typename _Duration>
! 	constexpr typename basic_format_parse_context<_CharT>::iterator
! 	_M_parse(basic_format_parse_context<_CharT>& __pc, _ChronoParts __parts,
! 		 const _ChronoSpec<_CharT>& __def)
  	{
  	  using _Rep = typename _Duration::rep;
  	  using enum _ChronoParts;
*************** namespace __format
*** 2901,2912 ****
        parse(basic_format_parse_context<_CharT>& __pc)
        {
  	using enum __format::_ChronoParts;
! 	auto __next
  	  = _M_f.template _M_parse<_Duration>(__pc, _ZonedDateTime, __defSpec);
! 	if constexpr (!__stream_insertable)
  	  if (_M_f._M_spec._M_chrono_specs.empty())
  	    __format::__invalid_chrono_spec(); // chrono-specs can't be empty
! 	return __next;
       }
  
       template<typename _Out>
--- 2930,2941 ----
        parse(basic_format_parse_context<_CharT>& __pc)
        {
  	using enum __format::_ChronoParts;
! 	auto __res
  	  = _M_f.template _M_parse<_Duration>(__pc, _ZonedDateTime, __defSpec);
! 	if constexpr (__defSpec._M_chrono_specs.empty())
  	  if (_M_f._M_spec._M_chrono_specs.empty())
  	    __format::__invalid_chrono_spec(); // chrono-specs can't be empty
! 	return __res;
       }
  
       template<typename _Out>
*************** namespace __format
*** 2924,2951 ****
         }
  
      private:
!       static constexpr bool __stream_insertable
! 	= requires (basic_ostream<_CharT>& __os,
! 		    chrono::sys_time<_Duration> __t) { __os << __t; };
! 
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  using enum __format::_ChronoParts;
! 	  __format::_ChronoParts __needed = _DateTime;
! 	  if constexpr (!__stream_insertable)
! 	    __needed = _None;
! 	  else if constexpr (is_convertible_v<_Duration, chrono::days>)
! 	    __needed = _Date;
! 	  return __format::__formatter_duration<_CharT>::
! 		   template _S_spec_for<_Duration>(__needed);
! 	}();
  
        __format::__formatter_duration<_CharT> _M_f{__defSpec};
      };
  
    template<typename _Duration, __format::__char _CharT>
      struct formatter<chrono::utc_time<_Duration>, _CharT>
-     : __format::__formatter_chrono<_CharT>
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
--- 2953,2966 ----
         }
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec =
! 	__format::__formatter_duration<_CharT>::template _S_spec_for_tp<_Duration>();
  
        __format::__formatter_duration<_CharT> _M_f{__defSpec};
      };
  
    template<typename _Duration, __format::__char _CharT>
      struct formatter<chrono::utc_time<_Duration>, _CharT>
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
*************** namespace __format
*** 2990,2996 ****
  
    template<typename _Duration, __format::__char _CharT>
      struct formatter<chrono::tai_time<_Duration>, _CharT>
-     : __format::__formatter_chrono<_CharT>
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
--- 3005,3010 ----
*************** namespace __format
*** 3026,3032 ****
  
    template<typename _Duration, __format::__char _CharT>
      struct formatter<chrono::gps_time<_Duration>, _CharT>
-     : __format::__formatter_chrono<_CharT>
      {
        constexpr typename basic_format_parse_context<_CharT>::iterator
        parse(basic_format_parse_context<_CharT>& __pc)
--- 3040,3045 ----
*************** namespace __format
*** 3102,3108 ****
        parse(basic_format_parse_context<_CharT>& __pc)
        {
  	using enum __format::_ChronoParts;
! 	return _M_f.template _M_parse<_Duration>(__pc, _DateTime, __defSpec);
        }
  
        template<typename _Out>
--- 3115,3126 ----
        parse(basic_format_parse_context<_CharT>& __pc)
        {
  	using enum __format::_ChronoParts;
! 	auto __res
! 	  = _M_f.template _M_parse<_Duration>(__pc, _DateTime, __defSpec);
! 	if constexpr (__defSpec._M_chrono_specs.empty())
! 	  if (_M_f._M_spec._M_chrono_specs.empty())
! 	    __format::__invalid_chrono_spec(); // chrono-specs can't be empty
! 	return __res;
        }
  
        template<typename _Out>
*************** namespace __format
*** 3118,3132 ****
  	}
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec = []
! 	{
! 	  using enum __format::_ChronoParts;
! 	  __format::_ChronoParts __needed = _DateTime;
! 	  if constexpr (is_convertible_v<_Duration, chrono::days>)
! 	    __needed = _Date;
! 	  return __format::__formatter_duration<_CharT>::
! 		   template _S_spec_for<_Duration>(__needed);
! 	}();
  
        __format::__formatter_duration<_CharT> _M_f{__defSpec};
      };
--- 3136,3143 ----
  	}
  
      private:
!       static constexpr __format::_ChronoSpec<_CharT> __defSpec =
! 	__format::__formatter_duration<_CharT>::template _S_spec_for_tp<_Duration>();
  
        __format::__formatter_duration<_CharT> _M_f{__defSpec};
      };
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/deque.tcc gcc-16-20250928/libstdc++-v3/include/bits/deque.tcc
*** gcc-16-20250921/libstdc++-v3/include/bits/deque.tcc	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/deque.tcc	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 381,387 ****
  
        const difference_type __back_capacity
  	= (this->_M_impl._M_finish._M_last - this->_M_impl._M_finish._M_cur);
!       if (__front_capacity + __back_capacity < _S_buffer_size())
  	return false;
  
        return std::__shrink_to_fit_aux<deque>::_S_do_it(*this);
--- 381,387 ----
  
        const difference_type __back_capacity
  	= (this->_M_impl._M_finish._M_last - this->_M_impl._M_finish._M_cur);
!       if (size_type(__front_capacity + __back_capacity) < _S_buffer_size())
  	return false;
  
        return std::__shrink_to_fit_aux<deque>::_S_do_it(*this);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 664,670 ****
        deque<_Tp, _Alloc>::
        _M_emplace_aux(iterator __pos, _Args&&... __args)
        {
! 	value_type __x_copy(std::forward<_Args>(__args)...); // XXX copy
  #else
      typename deque<_Tp, _Alloc>::iterator
        deque<_Tp, _Alloc>::
--- 664,673 ----
        deque<_Tp, _Alloc>::
        _M_emplace_aux(iterator __pos, _Args&&... __args)
        {
! 	// We should construct this temporary while the deque is
! 	// in its current state in case something in __args...
! 	// depends on that state before shuffling elements around.
! 	_Temporary_value __tmp(this, std::forward<_Args>(__args)...);
  #else
      typename deque<_Tp, _Alloc>::iterator
        deque<_Tp, _Alloc>::
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 695,701 ****
  	    __pos = this->_M_impl._M_start + __index;
  	    _GLIBCXX_MOVE_BACKWARD3(__pos, __back2, __back1);
  	  }
! 	*__pos = _GLIBCXX_MOVE(__x_copy);
  	return __pos;
        }
  
--- 698,708 ----
  	    __pos = this->_M_impl._M_start + __index;
  	    _GLIBCXX_MOVE_BACKWARD3(__pos, __back2, __back1);
  	  }
! #if __cplusplus >= 201103L
! 	*__pos = std::move(__tmp._M_val());
! #else
! 	*__pos = __x_copy;
! #endif
  	return __pos;
        }
  
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/funcwrap.h gcc-16-20250928/libstdc++-v3/include/bits/funcwrap.h
*** gcc-16-20250921/libstdc++-v3/include/bits/funcwrap.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/funcwrap.h	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 538,551 ****
        struct __skip_first_arg<_Ret(*)(_Arg, _Args...) noexcept(_Noex)>
        { using type = _Ret(_Args...) noexcept(_Noex); };
  
      template<typename _Fn, typename _Tr>
        consteval auto
        __deduce_funcref()
        {
  	if constexpr (is_member_object_pointer_v<_Fn>)
! 	  // TODO Consider reporting issue to make this noexcept
! 	  return static_cast<invoke_result_t<_Fn, _Tr>(*)()>(nullptr);
! 	else
  	  return static_cast<__skip_first_arg<_Fn>::type*>(nullptr);
        }
    } // namespace __polyfunc
--- 538,555 ----
        struct __skip_first_arg<_Ret(*)(_Arg, _Args...) noexcept(_Noex)>
        { using type = _Ret(_Args...) noexcept(_Noex); };
  
+     // Returns a function pointer to signature to be used with function_ref, or void.
      template<typename _Fn, typename _Tr>
        consteval auto
        __deduce_funcref()
        {
  	if constexpr (is_member_object_pointer_v<_Fn>)
! 	  {
! 	    if constexpr (is_invocable_v<_Fn, _Tr>)
! 	      // TODO Consider reporting issue to make this noexcept
! 	      return static_cast<invoke_result_t<_Fn, _Tr>(*)()>(nullptr);
! 	  }
! 	else if constexpr (requires { typename __skip_first_arg<_Fn>::type; })
  	  return static_cast<__skip_first_arg<_Fn>::type*>(nullptr);
        }
    } // namespace __polyfunc
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 562,572 ****
      requires is_function_v<_Fn>
      function_ref(nontype_t<__f>) -> function_ref<_Fn>;
  
!   template<auto __f, typename _Tp, class _Fn = decltype(__f)>
!     requires is_member_pointer_v<_Fn> || is_function_v<remove_pointer_t<_Fn>>
      function_ref(nontype_t<__f>, _Tp&&)
!       -> function_ref<
! 	   remove_pointer_t<decltype(__polyfunc::__deduce_funcref<_Fn, _Tp&>())>>;
  
  #endif // __glibcxx_function_ref
  
--- 566,577 ----
      requires is_function_v<_Fn>
      function_ref(nontype_t<__f>) -> function_ref<_Fn>;
  
!   template<auto __f, typename _Tp,
! 	   typename _SignaturePtr =
! 	     decltype(__polyfunc::__deduce_funcref<decltype(__f), _Tp&>())>
!     requires (!is_void_v<_SignaturePtr>)
      function_ref(nontype_t<__f>, _Tp&&)
!       -> function_ref<remove_pointer_t<_SignaturePtr>>;
  
  #endif // __glibcxx_function_ref
  
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/predefined_ops.h gcc-16-20250928/libstdc++-v3/include/bits/predefined_ops.h
*** gcc-16-20250921/libstdc++-v3/include/bits/predefined_ops.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/predefined_ops.h	Sun Sep 28 22:35:07 2025
***************
*** 30,405 ****
  #ifndef _GLIBCXX_PREDEFINED_OPS_H
  #define _GLIBCXX_PREDEFINED_OPS_H	1
  
! #include <bits/move.h>
  
  namespace __gnu_cxx
  {
  namespace __ops
  {
!   struct _Iter_less_iter
!   {
!     template<typename _Iterator1, typename _Iterator2>
!       _GLIBCXX14_CONSTEXPR
!       bool
!       operator()(_Iterator1 __it1, _Iterator2 __it2) const
!       { return *__it1 < *__it2; }
!   };
! 
!   _GLIBCXX14_CONSTEXPR
!   inline _Iter_less_iter
!   __iter_less_iter()
!   { return _Iter_less_iter(); }
! 
!   struct _Iter_less_val
!   {
! #if __cplusplus >= 201103L
!     constexpr _Iter_less_val() = default;
! #else
!     _Iter_less_val() { }
! #endif
! 
!     _GLIBCXX20_CONSTEXPR
!     explicit
!     _Iter_less_val(_Iter_less_iter) { }
! 
!     template<typename _Iterator, typename _Value>
!       _GLIBCXX20_CONSTEXPR
!       bool
!       operator()(_Iterator __it, _Value& __val) const
!       { return *__it < __val; }
!   };
! 
!   _GLIBCXX20_CONSTEXPR
!   inline _Iter_less_val
!   __iter_less_val()
!   { return _Iter_less_val(); }
! 
!   _GLIBCXX20_CONSTEXPR
!   inline _Iter_less_val
!   __iter_comp_val(_Iter_less_iter)
!   { return _Iter_less_val(); }
  
-   struct _Val_less_iter
-   {
  #if __cplusplus >= 201103L
-     constexpr _Val_less_iter() = default;
- #else
-     _Val_less_iter() { }
- #endif
- 
-     _GLIBCXX20_CONSTEXPR
-     explicit
-     _Val_less_iter(_Iter_less_iter) { }
- 
-     template<typename _Value, typename _Iterator>
-       _GLIBCXX20_CONSTEXPR
-       bool
-       operator()(_Value& __val, _Iterator __it) const
-       { return __val < *__it; }
-   };
- 
-   _GLIBCXX20_CONSTEXPR
-   inline _Val_less_iter
-   __val_less_iter()
-   { return _Val_less_iter(); }
- 
-   _GLIBCXX20_CONSTEXPR
-   inline _Val_less_iter
-   __val_comp_iter(_Iter_less_iter)
-   { return _Val_less_iter(); }
  
!   struct _Iter_equal_to_iter
!   {
!     template<typename _Iterator1, typename _Iterator2>
!       _GLIBCXX20_CONSTEXPR
!       bool
!       operator()(_Iterator1 __it1, _Iterator2 __it2) const
!       { return *__it1 == *__it2; }
!   };
! 
!   _GLIBCXX20_CONSTEXPR
!   inline _Iter_equal_to_iter
!   __iter_equal_to_iter()
!   { return _Iter_equal_to_iter(); }
! 
!   struct _Iter_equal_to_val
!   {
!     template<typename _Iterator, typename _Value>
!       _GLIBCXX20_CONSTEXPR
!       bool
!       operator()(_Iterator __it, _Value& __val) const
!       { return *__it == __val; }
!   };
! 
!   _GLIBCXX20_CONSTEXPR
!   inline _Iter_equal_to_val
!   __iter_equal_to_val()
!   { return _Iter_equal_to_val(); }
! 
!   _GLIBCXX20_CONSTEXPR
!   inline _Iter_equal_to_val
!   __iter_comp_val(_Iter_equal_to_iter)
!   { return _Iter_equal_to_val(); }
! 
!   template<typename _Compare>
!     struct _Iter_comp_iter
!     {
!       _Compare _M_comp;
! 
!       explicit _GLIBCXX14_CONSTEXPR
!       _Iter_comp_iter(_Compare __comp)
! 	: _M_comp(_GLIBCXX_MOVE(__comp))
!       { }
! 
!       template<typename _Iterator1, typename _Iterator2>
!         _GLIBCXX14_CONSTEXPR
!         bool
!         operator()(_Iterator1 __it1, _Iterator2 __it2)
!         { return bool(_M_comp(*__it1, *__it2)); }
!     };
  
!   template<typename _Compare>
!     _GLIBCXX14_CONSTEXPR
!     inline _Iter_comp_iter<_Compare>
!     __iter_comp_iter(_Compare __comp)
!     { return _Iter_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); }
  
!   template<typename _Compare>
!     struct _Iter_comp_val
      {
!       _Compare _M_comp;
! 
!       _GLIBCXX20_CONSTEXPR
!       explicit
!       _Iter_comp_val(_Compare __comp)
! 	: _M_comp(_GLIBCXX_MOVE(__comp))
!       { }
  
!       _GLIBCXX20_CONSTEXPR
!       explicit
!       _Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp)
! 	: _M_comp(__comp._M_comp)
!       { }
  
! #if __cplusplus >= 201103L
!       _GLIBCXX20_CONSTEXPR
!       explicit
!       _Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp)
! 	: _M_comp(std::move(__comp._M_comp))
!       { }
! #endif
  
!       template<typename _Iterator, typename _Value>
! 	_GLIBCXX20_CONSTEXPR
! 	bool
! 	operator()(_Iterator __it, _Value& __val)
! 	{ return bool(_M_comp(*__it, __val)); }
      };
  
!   template<typename _Compare>
!     _GLIBCXX20_CONSTEXPR
!     inline _Iter_comp_val<_Compare>
!     __iter_comp_val(_Compare __comp)
!     { return _Iter_comp_val<_Compare>(_GLIBCXX_MOVE(__comp)); }
! 
!   template<typename _Compare>
!     _GLIBCXX20_CONSTEXPR
!     inline _Iter_comp_val<_Compare>
!     __iter_comp_val(_Iter_comp_iter<_Compare> __comp)
!     { return _Iter_comp_val<_Compare>(_GLIBCXX_MOVE(__comp)); }
  
!   template<typename _Compare>
!     struct _Val_comp_iter
      {
!       _Compare _M_comp;
! 
!       _GLIBCXX20_CONSTEXPR
!       explicit
!       _Val_comp_iter(_Compare __comp)
! 	: _M_comp(_GLIBCXX_MOVE(__comp))
!       { }
  
!       _GLIBCXX20_CONSTEXPR
!       explicit
!       _Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp)
! 	: _M_comp(__comp._M_comp)
!       { }
  
! #if __cplusplus >= 201103L
!       _GLIBCXX20_CONSTEXPR
!       explicit
!       _Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp)
! 	: _M_comp(std::move(__comp._M_comp))
!       { }
! #endif
  
!       template<typename _Value, typename _Iterator>
! 	_GLIBCXX20_CONSTEXPR
! 	bool
! 	operator()(_Value& __val, _Iterator __it)
! 	{ return bool(_M_comp(__val, *__it)); }
      };
  
!   template<typename _Compare>
!     _GLIBCXX20_CONSTEXPR
!     inline _Val_comp_iter<_Compare>
!     __val_comp_iter(_Compare __comp)
!     { return _Val_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); }
! 
!   template<typename _Compare>
!     _GLIBCXX20_CONSTEXPR
!     inline _Val_comp_iter<_Compare>
!     __val_comp_iter(_Iter_comp_iter<_Compare> __comp)
!     { return _Val_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); }
  
!   template<typename _Value>
!     struct _Iter_equals_val
!     {
!       _Value& _M_value;
  
!       _GLIBCXX20_CONSTEXPR
!       explicit
!       _Iter_equals_val(_Value& __value)
! 	: _M_value(__value)
!       { }
  
!       template<typename _Iterator>
! 	_GLIBCXX20_CONSTEXPR
! 	bool
! 	operator()(_Iterator __it)
! 	{ return *__it == _M_value; }
!     };
  
!   template<typename _Value>
!     _GLIBCXX20_CONSTEXPR
!     inline _Iter_equals_val<_Value>
!     __iter_equals_val(_Value& __val)
!     { return _Iter_equals_val<_Value>(__val); }
  
!   template<typename _Iterator1>
!     struct _Iter_equals_iter
      {
!       _Iterator1 _M_it1;
  
-       _GLIBCXX20_CONSTEXPR
        explicit
!       _Iter_equals_iter(_Iterator1 __it1)
! 	: _M_it1(__it1)
!       { }
  
!       template<typename _Iterator2>
! 	_GLIBCXX20_CONSTEXPR
! 	bool
! 	operator()(_Iterator2 __it2)
! 	{ return *__it2 == *_M_it1; }
!     };
  
!   template<typename _Iterator>
!     _GLIBCXX20_CONSTEXPR
!     inline _Iter_equals_iter<_Iterator>
!     __iter_comp_iter(_Iter_equal_to_iter, _Iterator __it)
!     { return _Iter_equals_iter<_Iterator>(__it); }
  
!   template<typename _Predicate>
!     struct _Iter_pred
      {
!       _Predicate _M_pred;
  
-       _GLIBCXX20_CONSTEXPR
        explicit
!       _Iter_pred(_Predicate __pred)
! 	: _M_pred(_GLIBCXX_MOVE(__pred))
!       { }
! 
!       template<typename _Iterator>
! 	_GLIBCXX20_CONSTEXPR
! 	bool
! 	operator()(_Iterator __it)
! 	{ return bool(_M_pred(*__it)); }
!     };
! 
!   template<typename _Predicate>
!     _GLIBCXX20_CONSTEXPR
!     inline _Iter_pred<_Predicate>
!     __pred_iter(_Predicate __pred)
!     { return _Iter_pred<_Predicate>(_GLIBCXX_MOVE(__pred)); }
! 
!   template<typename _Compare, typename _Value>
!     struct _Iter_comp_to_val
!     {
!       _Compare _M_comp;
!       _Value& _M_value;
  
!       _GLIBCXX20_CONSTEXPR
!       _Iter_comp_to_val(_Compare __comp, _Value& __value)
! 	: _M_comp(_GLIBCXX_MOVE(__comp)), _M_value(__value)
!       { }
  
!       template<typename _Iterator>
! 	_GLIBCXX20_CONSTEXPR
! 	bool
! 	operator()(_Iterator __it)
! 	{ return bool(_M_comp(*__it, _M_value)); }
      };
  
!   template<typename _Compare, typename _Value>
!     _Iter_comp_to_val<_Compare, _Value>
!     _GLIBCXX20_CONSTEXPR
!     __iter_comp_val(_Compare __comp, _Value &__val)
      {
!       return _Iter_comp_to_val<_Compare, _Value>(_GLIBCXX_MOVE(__comp), __val);
!     }
  
!   template<typename _Compare, typename _Iterator1>
!     struct _Iter_comp_to_iter
!     {
!       _Compare _M_comp;
!       _Iterator1 _M_it1;
  
!       _GLIBCXX20_CONSTEXPR
!       _Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1)
! 	: _M_comp(_GLIBCXX_MOVE(__comp)), _M_it1(__it1)
!       { }
  
!       template<typename _Iterator2>
! 	_GLIBCXX20_CONSTEXPR
  	bool
! 	operator()(_Iterator2 __it2)
! 	{ return bool(_M_comp(*__it2, *_M_it1)); }
      };
  
!   template<typename _Compare, typename _Iterator>
!     _GLIBCXX20_CONSTEXPR
!     inline _Iter_comp_to_iter<_Compare, _Iterator>
!     __iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it)
!     {
!       return _Iter_comp_to_iter<_Compare, _Iterator>(
! 	  _GLIBCXX_MOVE(__comp._M_comp), __it);
!     }
  
!   template<typename _Predicate>
!     struct _Iter_negate
!     {
!       _Predicate _M_pred;
  
!       _GLIBCXX20_CONSTEXPR
!       explicit
!       _Iter_negate(_Predicate __pred)
! 	: _M_pred(_GLIBCXX_MOVE(__pred))
!       { }
  
!       template<typename _Iterator>
! 	_GLIBCXX20_CONSTEXPR
! 	bool
! 	operator()(_Iterator __it)
! 	{ return !bool(_M_pred(*__it)); }
!     };
  
!   template<typename _Predicate>
!     _GLIBCXX20_CONSTEXPR
!     inline _Iter_negate<_Predicate>
!     __negate(_Iter_pred<_Predicate> __pred)
!     { return _Iter_negate<_Predicate>(_GLIBCXX_MOVE(__pred._M_pred)); }
  
  } // namespace __ops
  } // namespace __gnu_cxx
--- 30,207 ----
  #ifndef _GLIBCXX_PREDEFINED_OPS_H
  #define _GLIBCXX_PREDEFINED_OPS_H	1
  
! #include <bits/stl_function.h> // less<void>, equal_to<void>
! #if __cplusplus >= 201103L
! # include <type_traits>        // is_empty, is_scalar, __conditional_t, __or_
! #else
! # include <ext/type_traits.h>  // __conditional_type
! #endif
  
  namespace __gnu_cxx
  {
  namespace __ops
  {
!   // These two explicit specializations are always defined by libstdc++,
!   // even when __cpp_lib_transparent_operators is not defined.
!   typedef std::equal_to<void> equal_to;
!   typedef std::less<void> less;
  
  #if __cplusplus >= 201103L
  
!   template<typename _Fn>
!     using __by_ref_or_value_fn
!       = std::__conditional_t<std::__or_<std::is_empty<_Fn>,
! 					std::is_scalar<_Fn>>::value,
! 			     _Fn, _Fn&>;
  
!   // More generic replacements for the deprecated utilities
!   // std::bind1st, std::bind2nd, and std::not1.
!   // These aren't fully "transparent" like std::less<void> because they
!   // do not use perfect forwarding, everything is treated as an lvalue.
  
!   template<typename _Func, typename _Value, bool _Val_2nd = false>
!     struct _Comp_with_val
      {
!       using _Fn = __by_ref_or_value_fn<_Func>;
  
!       explicit constexpr
!       _Comp_with_val(_Fn __f, const _Value& __v)
!       : _M_f(__f), _M_val(__v) { }
  
!       [[__no_unique_address__]] _Fn _M_f;
!       const _Value& _M_val;
  
!       template<typename _Tp>
! 	_GLIBCXX14_CONSTEXPR bool
! 	operator()(_Tp&& __arg)
! 	{
! #pragma GCC diagnostic push
! #pragma GCC diagnostic ignored "-Wc++17-extensions"
! 	  if constexpr (_Val_2nd)
! 	    return _M_f(__arg, _M_val);
! 	  else
! 	    return _M_f(_M_val, __arg);
! #pragma GCC diagnostic pop
! 	}
      };
  
!   template<typename _Func, typename _Value>
!     using _Comp_with_val_1st = _Comp_with_val<_Func, _Value, false>;
!   template<typename _Func, typename _Value>
!     using _Comp_with_val_2nd = _Comp_with_val<_Func, _Value, true>;
  
!     template<typename _Func>
!     struct _Unary_negate
      {
!       using _Fn = __by_ref_or_value_fn<_Func>;
  
!       explicit constexpr
!       _Unary_negate(_Fn __f) : _M_f(__f) { }
  
!       [[__no_unique_address__]] _Fn _M_f;
  
!       template<typename _Tp>
! 	_GLIBCXX14_CONSTEXPR bool
! 	operator()(_Tp&& __arg) { return !_M_f(__arg); }
      };
  
!   template<typename _Func>
!     constexpr _Unary_negate<_Func>
!     not1(_Func& __f)
!     { return _Unary_negate<_Func>(__f); }
  
! #else // <= C++11
  
!   template<typename _Fn>
!     struct __by_ref_or_value_fn
!     : __conditional_type<__is_empty(_Fn), _Fn, _Fn&>
!     { };
  
!   template<typename _Fn>
!     struct __by_ref_or_value_fn<_Fn*>
!     { typedef _Fn* __type; };
  
!   // We don't use std::binder1st, std::binder2nd, or std::unary_negate here
!   // because they require adaptable function objects, i.e. types with nested
!   // result_type and argument_type/first_argument_type/second_argument_type.
  
!   template<typename _Func, typename _Value>
!     struct _Comp_with_val_1st
      {
!       typedef typename __by_ref_or_value_fn<_Func>::__type _Fn;
  
        explicit
!       _Comp_with_val_1st(_Fn __f, const _Value& __v)
!       : _M_f(__f), _M_val(__v) { }
  
!       _Fn _M_f;
!       const _Value& _M_val;
  
!       template<typename _Tp>
! 	bool operator()(_Tp& __arg) { return _M_f(_M_val, __arg); }
!       template<typename _Tp>
! 	bool operator()(const _Tp& __arg) { return _M_f(_M_val, __arg); }
!     };
  
!   template<typename _Func, typename _Value>
!     struct _Comp_with_val_2nd
      {
!       typedef typename __by_ref_or_value_fn<_Func>::__type _Fn;
  
        explicit
!       _Comp_with_val_2nd(_Fn __f, const _Value& __v)
!       : _M_f(__f), _M_val(__v) { }
  
!       _Fn _M_f;
!       const _Value& _M_val;
  
!       template<typename _Tp>
! 	bool operator()(_Tp& __arg) { return _M_f(__arg, _M_val); }
!       template<typename _Tp>
! 	bool operator()(const _Tp& __arg) { return _M_f(__arg, _M_val); }
      };
  
!   template<typename _Func>
!     struct _Unary_negate_1 // N.B. different name for C++98 to satisfy ODR
      {
!       typedef typename __by_ref_or_value_fn<_Func>::__type _Fn;
  
!       explicit _Unary_negate_1(_Fn __f) : _M_f(__f) { }
  
!       _Fn _M_f;
  
!       template<typename _Tp>
  	bool
! 	operator()(_Tp& __arg) { return !_M_f(__arg); }
!       template<typename _Tp>
! 	bool
! 	operator()(const _Tp& __arg) { return !_M_f(__arg); }
      };
  
!   template<typename _Func>
!     inline _Unary_negate_1<_Func>
!     not1(_Func& __f)
!     { return _Unary_negate_1<_Func>(__f); }
! #endif
  
!   // N.B. these functions take lvalue references because we want to avoid
!   // returning a call wrapper that has a dangling reference to a prvalue.
  
!   template<typename _Func, typename _Value>
!     _GLIBCXX_CONSTEXPR inline _Comp_with_val_1st<_Func, _Value>
!     bind1st(_Func& __f, const _Value& __val)
!     { return _Comp_with_val_1st<_Func, _Value>(__f, __val); }
  
!   template<typename _Func, typename _Value>
!     _GLIBCXX_CONSTEXPR inline _Comp_with_val_2nd<_Func, _Value>
!     bind2nd(_Func& __f, const _Value& __val)
!     { return _Comp_with_val_2nd<_Func, _Value>(__f, __val); }
  
!   // Equivalent to bind2nd(equal_to{}, val)
!   template<typename _Value>
!     _GLIBCXX_CONSTEXPR inline _Comp_with_val_2nd<equal_to, _Value>
!     __equal_to(const _Value& __val)
!     { return _Comp_with_val_2nd<equal_to, _Value>(equal_to(), __val); }
  
  } // namespace __ops
  } // namespace __gnu_cxx
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/random.h gcc-16-20250928/libstdc++-v3/include/bits/random.h
*** gcc-16-20250921/libstdc++-v3/include/bits/random.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/random.h	Sun Sep 28 22:35:07 2025
***************
*** 32,37 ****
--- 32,38 ----
  #define _RANDOM_H 1
  
  #include <vector>
+ #include <bits/ios_base.h>
  #include <bits/uniform_int_dist.h>
  
  namespace std _GLIBCXX_VISIBILITY(default)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1688,1693 ****
--- 1689,1951 ----
      { return !(__lhs == __rhs); }
  #endif
  
+ #if __glibcxx_philox_engine // >= C++26
+   /**
+    * @brief A discrete pseudorandom number generator with weak cryptographic
+    * properties
+    *
+    * This algorithm was designed to be used for highly parallel random number
+    * generation, and is capable of immensely long periods.  It provides
+    * "Crush-resistance", denoting an ability to pass the TestU01 Suite's
+    * "Big Crush" test, demonstrating significant apparent entropy.
+    *
+    * It is not intended for cryptographic use and should not be used for such,
+    * despite being based on cryptographic primitives.
+    *
+    * The typedefs `philox4x32` and `philox4x64` are provided as suitable
+    * defaults for most use cases, providing high-quality random numbers
+    * with reasonable performance.
+    *
+    * This algorithm was created by John Salmon, Mark Moraes, Ron Dror, and
+    * David Shaw as a product of D.E. Shaw Research.
+    *
+    * @tparam __w  	Word size
+    * @tparam __n  	Buffer size
+    * @tparam __r  	Rounds
+    * @tparam __consts	Multiplication and round constant pack, ordered as
+    * 			M_{0}, C_{0}, M_{1}, C_{1}, ... , M_{N/2-1}, C_{N/2-1}
+    *
+    * @headerfile random
+    * @since C++26
+    */
+   template<typename _UIntType, size_t __w, size_t __n, size_t __r,
+ 	   _UIntType... __consts>
+     class philox_engine
+     {
+       static_assert(__n == 2 || __n == 4,
+ 	      "template argument N must be either 2 or 4");
+       static_assert(sizeof...(__consts) == __n,
+ 	      "length of consts array must match specified N");
+       static_assert(0 < __r, "a number of rounds must be specified");
+       static_assert((0 < __w && __w <= numeric_limits<_UIntType>::digits),
+ 	      "specified bitlength must match input type");
+ 
+       template<typename _Sseq>
+ 	static constexpr bool __is_seed_seq = requires {
+ 	  typename __detail::_If_seed_seq_for<_Sseq, philox_engine, _UIntType>;
+ 	};
+ 
+       template <size_t __ind0, size_t __ind1>
+ 	static constexpr
+ 	array<_UIntType, __n / 2>
+ 	_S_popArray()
+ 	{
+ 	  if constexpr (__n == 4)
+ 	    return {__consts...[__ind0], __consts...[__ind1]};
+ 	  else
+ 	    return {__consts...[__ind0]};
+ 	}
+ 
+       public:
+ 	using result_type = _UIntType;
+ 	// public members
+ 	static constexpr size_t word_size = __w;
+ 	static constexpr size_t word_count = __n;
+ 	static constexpr size_t round_count = __r;
+ 	static constexpr array<result_type, __n / 2> multipliers
+ 	  = _S_popArray<0,2>();
+ 	static constexpr array<result_type, __n / 2> round_consts
+ 	  = _S_popArray<1,3>();
+ 
+ 	/// The minimum value that this engine can return
+ 	static constexpr result_type
+ 	min()
+ 	{ return 0; }
+ 
+ 	/// The maximum value that this engine can return
+ 	static constexpr result_type
+ 	max()
+ 	{
+ 	  return ((1ull << (__w - 1)) | ((1ull << (__w - 1)) - 1));
+ 	}
+ 	// default key value
+ 	static constexpr result_type default_seed = 20111115u;
+ 
+ 	// constructors
+ 	philox_engine()
+ 	: philox_engine(default_seed)
+ 	{ }
+ 
+ 	explicit
+ 	philox_engine(result_type __value)
+ 	: _M_x{}, _M_y{}, _M_k{}, _M_i(__n - 1)
+ 	{ _M_k[0] = __value & max(); }
+ 
+ 	/** @brief seed sequence constructor for %philox_engine
+ 	  *
+ 	  *  @param __q the seed sequence
+ 	  */
+ 	template<typename _Sseq> requires __is_seed_seq<_Sseq>
+ 	  explicit
+ 	  philox_engine(_Sseq& __q)
+ 	  {
+ 	    seed(__q);
+ 	  }
+ 
+ 	void
+ 	seed(result_type __value = default_seed)
+ 	{
+ 	  _M_x = {};
+ 	  _M_y = {};
+ 	  _M_k = {};
+ 	  _M_k[0] = __value & max();
+ 	  _M_i = __n - 1;
+ 	}
+ 
+ 	/** @brief seeds %philox_engine by seed sequence
+ 	  *
+ 	  * @param __q the seed sequence
+ 	  */
+ 	template<typename _Sseq>
+ 	  void
+ 	  seed(_Sseq& __q) requires __is_seed_seq<_Sseq>;
+ 
+ 	/** @brief sets the internal counter "cleartext"
+ 	  *
+ 	  * @param __counter std::array of len N
+ 	  */
+ 	void
+ 	set_counter(const array<result_type, __n>& __counter)
+ 	{
+ 	  for (size_t __j = 0; __j < __n; ++__j)
+ 	    _M_x[__j] = __counter[__n - 1 - __j] & max();
+ 	  _M_i = __n - 1;
+ 	}
+ 
+ 	/** @brief compares two %philox_engine objects
+ 	  *
+ 	  * @returns true if the objects will produce an identical stream,
+ 	  *          false otherwise
+ 	  */
+ 	friend bool
+ 	operator==(const philox_engine&, const philox_engine&) = default;
+ 
+ 	/** @brief outputs a single w-bit number and handles state advancement
+ 	  *
+ 	  * @returns return_type
+ 	  */
+ 	result_type
+ 	operator()()
+ 	{
+ 	  _M_transition();
+ 	  return _M_y[_M_i];
+ 	}
+ 
+ 	/** @brief discards __z numbers
+ 	  *
+ 	  * @param __z number of iterations to discard
+ 	  */
+ 	void
+ 	discard(unsigned long long __z)
+ 	{
+ 	  while (__z--)
+ 	    _M_transition();
+ 	}
+ 
+ 	/** @brief outputs the state of the generator
+ 	 *
+ 	 * @param __os An output stream.
+ 	 * @param __x  A %philox_engine object reference
+ 	 *
+ 	 * @returns the state of the Philox Engine in __os
+ 	 */
+ 	template<typename _CharT, typename _Traits>
+ 	  friend basic_ostream<_CharT, _Traits>&
+ 	  operator<<(basic_ostream<_CharT, _Traits>& __os,
+ 		     const philox_engine& __x)
+ 	  {
+ 	    const typename ios_base::fmtflags __flags = __os.flags();
+ 	    const _CharT __fill = __os.fill();
+ 	    __os.flags(ios_base::dec | ios_base::left);
+ 	    _CharT __space = __os.widen(' ');
+ 	    __os.fill(__space);
+ 	    for (auto& __subkey : __x._M_k)
+ 	      __os << __subkey << __space;
+ 	    for (auto& __ctr : __x._M_x)
+ 	      __os << __ctr << __space;
+ 	    __os << __x._M_i;
+ 	    __os.flags(__flags);
+ 	    __os.fill(__fill);
+ 	    return __os;
+ 	  }
+ 
+ 	/** @brief takes input to set the state of the %philox_engine object
+ 	  *
+ 	  * @param __is An input stream.
+ 	  * @param __x  A %philox_engine object reference
+ 	  *
+ 	  * @returns %philox_engine object is set with values from instream
+ 	  */
+ 	template <typename _CharT, typename _Traits>
+ 	  friend basic_istream<_CharT, _Traits>&
+ 	  operator>>(basic_istream<_CharT, _Traits>& __is,
+ 		     philox_engine& __x)
+ 	  {
+ 	    const typename ios_base::fmtflags __flags = __is.flags();
+ 	    __is.flags(ios_base::dec | ios_base::skipws);
+ 	    for (auto& __subkey : __x._M_k)
+ 	      __is >> __subkey;
+ 	    for (auto& __ctr : __x._M_x)
+ 	      __is >> __ctr;
+ 	    array<_UIntType, __n> __tmpCtr = __x._M_x;
+ 	    unsigned char __setIndex = 0;
+ 	    for (size_t __j = 0; __j < __x._M_x.size(); ++__j)
+ 	      {
+ 		if (__x._M_x[__j] > 0)
+ 		  {
+ 		    __setIndex = __j;
+ 		    break;
+ 		  }
+ 	      }
+ 	    for (size_t __j = 0; __j <= __setIndex; ++__j)
+ 	      {
+ 		if (__j != __setIndex)
+ 		  __x._M_x[__j] = max();
+ 		else
+ 		  --__x._M_x[__j];
+ 	      }
+ 	    __x._M_philox();
+ 	    __x._M_x = __tmpCtr;
+ 	    __is >> __x._M_i;
+ 	    __is.flags(__flags);
+ 	    return __is;
+ 	  }
+ 
+       private:
+ 	// private state variables
+ 	array<_UIntType, __n> _M_x;
+ 	array<_UIntType, __n / 2> _M_k;
+ 	array<_UIntType, __n> _M_y;
+ 	unsigned long long _M_i = 0;
+ 
+ 	// The high W bits of the product of __a and __b
+ 	static _UIntType
+ 	_S_mulhi(_UIntType __a, _UIntType __b); // (A*B)/2^W
+ 
+ 	// The low W bits of the product of __a and __b
+ 	static _UIntType
+ 	_S_mullo(_UIntType __a, _UIntType __b); // (A*B)%2^W
+ 
+ 	// An R-round substitution/Feistel Network hybrid for philox_engine
+ 	void
+ 	_M_philox();
+ 
+ 	// The transition function
+ 	void
+ 	_M_transition();
+     };
+ #endif
+ 
    /**
     * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller.
     */
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1742,1747 ****
--- 2000,2022 ----
  
    typedef minstd_rand0 default_random_engine;
  
+ #if __glibcxx_philox_engine
+ 
+   /// 32-bit four-word Philox engine.
+   typedef philox_engine<
+     uint_fast32_t,
+     32, 4, 10,
+     0xCD9E8D57, 0x9E3779B9,
+     0xD2511F53, 0xBB67AE85> philox4x32;
+ 
+   /// 64-bit four-word Philox engine.
+   typedef philox_engine<
+     uint_fast64_t,
+     64, 4, 10,
+     0xCA5A826395121157, 0x9E3779B97F4A7C15,
+     0xD2E7470EE14C6C93, 0xBB67AE8584CAA73B> philox4x64;
+ #endif
+ 
    /**
     * A standard interface to a platform-specific non-deterministic
     * random number generator (if any are available).
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/random.tcc gcc-16-20250928/libstdc++-v3/include/bits/random.tcc
*** gcc-16-20250921/libstdc++-v3/include/bits/random.tcc	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/random.tcc	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 83,89 ****
        __normalize(_InputIterator __first, _InputIterator __last,
  		  _OutputIterator __result, const _Tp& __factor)
        {
! 	for (; __first != __last; ++__first, ++__result)
  	  *__result = *__first / __factor;
  	return __result;
        }
--- 83,89 ----
        __normalize(_InputIterator __first, _InputIterator __last,
  		  _OutputIterator __result, const _Tp& __factor)
        {
! 	for (; __first != __last; ++__first, (void) ++__result)
  	  *__result = *__first / __factor;
  	return __result;
        }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 907,912 ****
--- 907,1035 ----
        return __is;
      }
  
+ #if __glibcxx_philox_engine // >= C++26
+ 
+   template<typename _UIntType, size_t __w, size_t __n, size_t __r,
+ 	   _UIntType... __consts>
+     _UIntType
+     philox_engine<_UIntType, __w, __n, __r, __consts...>::
+     _S_mulhi(_UIntType __a, _UIntType __b)
+     {
+       const __uint128_t __num =
+ 	  static_cast<__uint128_t>(__a) * static_cast<__uint128_t>(__b);
+       return static_cast<_UIntType>((__num >> __w) & max());
+     }
+ 
+   template<typename _UIntType, size_t __w, size_t __n, size_t __r,
+ 	   _UIntType... __consts>
+     _UIntType
+     philox_engine<_UIntType, __w, __n, __r, __consts...>::
+     _S_mullo(_UIntType __a, _UIntType __b)
+     {
+       return static_cast<_UIntType>((__a * __b) & max());
+     }
+ 
+   template<typename _UIntType, size_t __w, size_t __n, size_t __r,
+ 	   _UIntType... __consts>
+     void
+     philox_engine<_UIntType, __w, __n, __r, __consts...>::_M_transition()
+     {
+       ++_M_i;
+       if (_M_i != __n)
+ 	return;
+ 
+       _M_philox();
+       if constexpr (__n == 4)
+ 	{
+ 	  __uint128_t __uh =
+ 	    (static_cast<__uint128_t>(_M_x[1]) << __w)
+ 		  | (static_cast<__uint128_t>(_M_x[0]) + 1);
+ 	  __uint128_t __lh =
+ 	    ((static_cast<__uint128_t>(_M_x[3]) << __w)
+ 		  | (_M_x[2]));
+ 	  __uint128_t __bigMask =
+ 	    (static_cast<__uint128_t>(1) << ((2 * __w) - 1))
+ 		  | ((static_cast<__uint128_t>(1) << ((2 * __w) - 1)) - 1);
+ 	  if ((__uh & __bigMask) == 0)
+ 	    {
+ 	      ++__lh;
+ 	      __uh = 0;
+ 	    }
+ 	  _M_x[0] = __uh & max();
+ 	  _M_x[1] = (__uh >> (__w)) & max();
+ 	  _M_x[2] = __lh & max();
+ 	  _M_x[3] = (__lh >> (__w)) & max();
+ 	}
+       else
+ 	{
+ 	  __uint128_t __num =
+ 		  (static_cast<__uint128_t>(_M_x[1]) << __w)
+ 		  | (static_cast<__uint128_t>(_M_x[0]) + 1);
+ 	  _M_x[0] = __num & max();
+ 	  _M_x[1] = (__num >> __w) & max();
+ 	}
+       _M_i = 0;
+     }
+ 
+   template<typename _UIntType, size_t __w, size_t __n, size_t __r,
+ 	   _UIntType... __consts>
+     void
+     philox_engine<_UIntType, __w, __n, __r, __consts...>::_M_philox()
+     {
+       array<_UIntType, __n> __outputSeq = _M_x;
+       for (size_t __j = 0; __j < __r; ++__j)
+ 	{
+ 	  array<_UIntType, __n> __intermedSeq{};
+ 	  if constexpr (__n == 4)
+ 	    {
+ 	      __intermedSeq[0] = __outputSeq[2];
+ 	      __intermedSeq[1] = __outputSeq[1];
+ 	      __intermedSeq[2] = __outputSeq[0];
+ 	      __intermedSeq[3] = __outputSeq[3];
+ 	    }
+ 	  else
+ 	    {
+ 	      __intermedSeq[0] = __outputSeq[0];
+ 	      __intermedSeq[1] = __outputSeq[1];
+ 	    }
+ 	  for (unsigned long __k = 0; __k < (__n/2); ++__k)
+ 	    {
+ 	      __outputSeq[2*__k]
+ 		= _S_mulhi(__intermedSeq[2*__k], multipliers[__k])
+ 		    ^ (((_M_k[__k] + (__j * round_consts[__k])) & max()))
+ 		    ^ __intermedSeq[2*__k+1];
+ 
+ 	      __outputSeq[(2*__k)+1]
+ 		= _S_mullo(__intermedSeq[2*__k], multipliers[__k]);
+ 	    }
+ 	}
+       _M_y = __outputSeq;
+     }
+ 
+   template<typename _UIntType, size_t __w, size_t __n, size_t __r,
+ 	   _UIntType... __consts>
+   template<typename _Sseq>
+     void
+     philox_engine<_UIntType, __w, __n, __r, __consts...>::seed(_Sseq& __q)
+     requires __is_seed_seq<_Sseq>
+     {
+       seed(0);
+ 
+       const unsigned __p = 1 + ((__w - 1) / 32);
+       uint_least32_t __tmpArr[(__n/2) * __p];
+       __q.generate(__tmpArr + 0, __tmpArr + ((__n/2) * __p));
+       for (unsigned __k = 0; __k < (__n/2); ++__k)
+ 	{
+ 	  unsigned long long __precalc = 0;
+ 	  for (unsigned __j = 0; __j < __p; ++__j)
+ 	    {
+ 	      unsigned long long __multiplicand = (1ull << (32 * __j));
+ 	      __precalc += (__tmpArr[__k * __p + __j] * __multiplicand) & max();
+ 	    }
+ 	  _M_k[__k] = __precalc;
+ 	}
+     }
+ #endif // philox_engine
  
    template<typename _IntType, typename _CharT, typename _Traits>
      std::basic_ostream<_CharT, _Traits>&
*************** namespace __detail
*** 3078,3084 ****
  		 _InputIteratorW __wbegin)
        : _M_int(), _M_den(), _M_cp(), _M_m()
        {
! 	for (; __bbegin != __bend; ++__bbegin, ++__wbegin)
  	  {
  	    _M_int.push_back(*__bbegin);
  	    _M_den.push_back(*__wbegin);
--- 3201,3207 ----
  		 _InputIteratorW __wbegin)
        : _M_int(), _M_den(), _M_cp(), _M_m()
        {
! 	for (; __bbegin != __bend; ++__bbegin, (void) ++__wbegin)
  	  {
  	    _M_int.push_back(*__bbegin);
  	    _M_den.push_back(*__wbegin);
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/stl_algo.h gcc-16-20250928/libstdc++-v3/include/bits/stl_algo.h
*** gcc-16-20250921/libstdc++-v3/include/bits/stl_algo.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/stl_algo.h	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 85,105 ****
    template<typename _Iterator, typename _Compare>
      _GLIBCXX20_CONSTEXPR
      void
!     __move_median_to_first(_Iterator __result,_Iterator __a, _Iterator __b,
  			   _Iterator __c, _Compare __comp)
      {
!       if (__comp(__a, __b))
  	{
! 	  if (__comp(__b, __c))
  	    std::iter_swap(__result, __b);
! 	  else if (__comp(__a, __c))
  	    std::iter_swap(__result, __c);
  	  else
  	    std::iter_swap(__result, __a);
  	}
!       else if (__comp(__a, __c))
  	std::iter_swap(__result, __a);
!       else if (__comp(__b, __c))
  	std::iter_swap(__result, __c);
        else
  	std::iter_swap(__result, __b);
--- 85,105 ----
    template<typename _Iterator, typename _Compare>
      _GLIBCXX20_CONSTEXPR
      void
!     __move_median_to_first(_Iterator __result, _Iterator __a, _Iterator __b,
  			   _Iterator __c, _Compare __comp)
      {
!       if (__comp(*__a, *__b))
  	{
! 	  if (__comp(*__b, *__c))
  	    std::iter_swap(__result, __b);
! 	  else if (__comp(*__a, *__c))
  	    std::iter_swap(__result, __c);
  	  else
  	    std::iter_swap(__result, __a);
  	}
!       else if (__comp(*__a, *__c))
  	std::iter_swap(__result, __a);
!       else if (__comp(*__b, *__c))
  	std::iter_swap(__result, __c);
        else
  	std::iter_swap(__result, __b);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 113,119 ****
  		  _Predicate __pred)
      {
        return std::__find_if(__first, __last,
! 			    __gnu_cxx::__ops::__negate(__pred));
      }
  
    /// Like find_if_not(), but uses and updates a count of the
--- 113,119 ----
  		  _Predicate __pred)
      {
        return std::__find_if(__first, __last,
! 			    __gnu_cxx::__ops::not1(__pred));
      }
  
    /// Like find_if_not(), but uses and updates a count of the
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 125,131 ****
      __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred)
      {
        for (; __len; --__len,  (void) ++__first)
! 	if (!__pred(__first))
  	  break;
        return __first;
      }
--- 125,131 ----
      __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred)
      {
        for (; __len; --__len,  (void) ++__first)
! 	if (!__pred(*__first))
  	  break;
        return __first;
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 162,168 ****
  	    __n = __count;
  	  _ForwardIterator __i = __first;
  	  ++__i;
! 	  while (__i != __last && __n != 1 && __unary_pred(__i))
  	    {
  	      ++__i;
  	      --__n;
--- 162,168 ----
  	    __n = __count;
  	  _ForwardIterator __i = __first;
  	  ++__i;
! 	  while (__i != __last && __n != 1 && __unary_pred(*__i))
  	    {
  	      ++__i;
  	      --__n;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 201,207 ****
  	  // __first here is always pointing to one past the last element of
  	  // next possible match.
  	  _RandomAccessIter __backTrack = __first;
! 	  while (__unary_pred(--__backTrack))
  	    {
  	      if (--__remainder == 0)
  		return __first - _DistanceType(__count); // Success
--- 201,207 ----
  	  // __first here is always pointing to one past the last element of
  	  // next possible match.
  	  _RandomAccessIter __backTrack = __first;
! 	  while (__unary_pred(*--__backTrack))
  	    {
  	      if (--__remainder == 0)
  		return __first - _DistanceType(__count); // Success
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 339,345 ****
        return std::__find_end(__first1, __last1, __first2, __last2,
  			     std::__iterator_category(__first1),
  			     std::__iterator_category(__first2),
! 			     __gnu_cxx::__ops::__iter_equal_to_iter());
      }
  
    /**
--- 339,345 ----
        return std::__find_end(__first1, __last1, __first2, __last2,
  			     std::__iterator_category(__first1),
  			     std::__iterator_category(__first2),
! 			     __gnu_cxx::__ops::equal_to());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 390,396 ****
        return std::__find_end(__first1, __last1, __first2, __last2,
  			     std::__iterator_category(__first1),
  			     std::__iterator_category(__first2),
! 			     __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
  #if __cplusplus >= 201103L
--- 390,396 ----
        return std::__find_end(__first1, __last1, __first2, __last2,
  			     std::__iterator_category(__first1),
  			     std::__iterator_category(__first2),
! 			     __comp);
      }
  
  #if __cplusplus >= 201103L
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 470,477 ****
        __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
  	      typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
!       return std::__find_if_not(__first, __last,
! 				__gnu_cxx::__ops::__pred_iter(__pred));
      }
  
    /**
--- 470,476 ----
        __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
  	      typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
!       return std::__find_if_not(__first, __last, __pred);
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 551,557 ****
  		     _OutputIterator __result, _Predicate __pred)
      {
        for (; __first != __last; ++__first)
! 	if (!__pred(__first))
  	  {
  	    *__result = *__first;
  	    ++__result;
--- 550,556 ----
  		     _OutputIterator __result, _Predicate __pred)
      {
        for (; __first != __last; ++__first)
! 	if (!__pred(*__first))
  	  {
  	    *__result = *__first;
  	    ++__result;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 588,594 ****
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__remove_copy_if(__first, __last, __result,
! 	__gnu_cxx::__ops::__iter_equals_val(__value));
      }
  
    /**
--- 587,593 ----
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__remove_copy_if(__first, __last, __result,
! 				   __gnu_cxx::__ops::__equal_to(__value));
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 621,628 ****
  	    typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__remove_copy_if(__first, __last, __result,
! 				   __gnu_cxx::__ops::__pred_iter(__pred));
      }
  
  #if __cplusplus >= 201103L
--- 620,626 ----
  	    typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__remove_copy_if(__first, __last, __result, __pred);
      }
  
  #if __cplusplus >= 201103L
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 780,786 ****
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__remove_if(__first, __last,
! 		__gnu_cxx::__ops::__iter_equals_val(__value));
      }
  
    /**
--- 778,784 ----
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__remove_if(__first, __last,
! 			      __gnu_cxx::__ops::__equal_to(__value));
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 813,820 ****
  	    typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__remove_if(__first, __last,
! 			      __gnu_cxx::__ops::__pred_iter(__pred));
      }
  
    template<typename _ForwardIterator, typename _BinaryPredicate>
--- 811,817 ----
  	    typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__remove_if(__first, __last, __pred);
      }
  
    template<typename _ForwardIterator, typename _BinaryPredicate>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 828,834 ****
        _ForwardIterator __next = __first;
        while (++__next != __last)
  	{
! 	  if (__binary_pred(__first, __next))
  	    return __first;
  	  __first = __next;
  	}
--- 825,831 ----
        _ForwardIterator __next = __first;
        while (++__next != __last)
  	{
! 	  if (__binary_pred(*__first, *__next))
  	    return __first;
  	  __first = __next;
  	}
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 850,856 ****
        _ForwardIterator __dest = __first;
        ++__first;
        while (++__first != __last)
! 	if (!__binary_pred(__dest, __first))
  	  *++__dest = _GLIBCXX_MOVE(*__first);
        return ++__dest;
      }
--- 847,853 ----
        _ForwardIterator __dest = __first;
        ++__first;
        while (++__first != __last)
! 	if (!__binary_pred(*__dest, *__first))
  	  *++__dest = _GLIBCXX_MOVE(*__first);
        return ++__dest;
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 881,888 ****
  		     typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__unique(__first, __last,
! 			   __gnu_cxx::__ops::__iter_equal_to_iter());
      }
  
    /**
--- 878,884 ----
  		     typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__unique(__first, __last, __gnu_cxx::__ops::equal_to());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 914,921 ****
  		typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__unique(__first, __last,
! 			   __gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
      }
  
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
--- 910,916 ----
  		typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__unique(__first, __last, __binary_pred);
      }
  
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 934,940 ****
        _ForwardIterator __prev = __first;
        *__result = *__first;
        while (++__first != __last)
! 	if (!__binary_pred(__prev, __first))
  	  {
  	    *++__result = *__first;
  	    __prev = __first;
--- 929,935 ----
        _ForwardIterator __prev = __first;
        *__result = *__first;
        while (++__first != __last)
! 	if (!__binary_pred(*__prev, *__first))
  	  {
  	    *++__result = *__first;
  	    __prev = __first;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 956,962 ****
        _Val __value = *__first;
        *__result = __value;
        while (++__first != __last)
! 	if (!__binary_pred(std::__addressof(__value), __first))
  	  {
  	    __value = *__first;
  	    *++__result = __value;
--- 951,957 ----
        _Val __value = *__first;
        *__result = __value;
        while (++__first != __last)
! 	if (!__binary_pred(__value, *__first))
  	  {
  	    __value = *__first;
  	    *++__result = __value;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 975,981 ****
      {
        *__result = *__first;
        while (++__first != __last)
! 	if (!__binary_pred(__result, __first))
  	  *++__result = *__first;
        return ++__result;
      }
--- 970,976 ----
      {
        *__result = *__first;
        while (++__first != __last)
! 	if (!__binary_pred(*__result, *__first))
  	  *++__result = *__first;
        return ++__result;
      }
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1445,1454 ****
    // partition
  
    /// This is a helper function...
!   /// Requires __first != __last and !__pred(__first)
    /// and __len == distance(__first, __last).
    ///
!   /// !__pred(__first) allows us to guarantee that we don't
    /// move-assign an element onto itself.
    template<typename _ForwardIterator, typename _Pointer, typename _Predicate,
  	   typename _Distance>
--- 1440,1449 ----
    // partition
  
    /// This is a helper function...
!   /// Requires __first != __last and !__pred(*__first)
    /// and __len == distance(__first, __last).
    ///
!   /// !__pred(*__first) allows us to guarantee that we don't
    /// move-assign an element onto itself.
    template<typename _ForwardIterator, typename _Pointer, typename _Predicate,
  	   typename _Distance>
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1468,1481 ****
  	  _ForwardIterator __result1 = __first;
  	  _Pointer __result2 = __buffer;
  
! 	  // The precondition guarantees that !__pred(__first), so
  	  // move that element to the buffer before starting the loop.
  	  // This ensures that we only call __pred once per element.
  	  *__result2 = _GLIBCXX_MOVE(*__first);
  	  ++__result2;
  	  ++__first;
  	  for (; __first != __last; ++__first)
! 	    if (__pred(__first))
  	      {
  		*__result1 = _GLIBCXX_MOVE(*__first);
  		++__result1;
--- 1463,1476 ----
  	  _ForwardIterator __result1 = __first;
  	  _Pointer __result2 = __buffer;
  
! 	  // The precondition guarantees that !__pred(*__first), so
  	  // move that element to the buffer before starting the loop.
  	  // This ensures that we only call __pred once per element.
  	  *__result2 = _GLIBCXX_MOVE(*__first);
  	  ++__result2;
  	  ++__first;
  	  for (; __first != __last; ++__first)
! 	    if (__pred(*__first))
  	      {
  		*__result1 = _GLIBCXX_MOVE(*__first);
  		++__result1;
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1581,1588 ****
  	    typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__stable_partition(__first, __last,
! 				     __gnu_cxx::__ops::__pred_iter(__pred));
      }
  #endif // HOSTED
  
--- 1576,1582 ----
  	    typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__stable_partition(__first, __last, __pred);
      }
  #endif // HOSTED
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1598,1604 ****
      {
        std::__make_heap(__first, __middle, __comp);
        for (_RandomAccessIterator __i = __middle; __i < __last; ++__i)
! 	if (__comp(__i, __first))
  	  std::__pop_heap(__first, __middle, __i, __comp);
      }
  
--- 1592,1598 ----
      {
        std::__make_heap(__first, __middle, __comp);
        for (_RandomAccessIterator __i = __middle; __i < __last; ++__i)
! 	if (__comp(*__i, *__first))
  	  std::__pop_heap(__first, __middle, __i, __comp);
      }
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1631,1637 ****
        std::__make_heap(__result_first, __result_real_last, __comp);
        while (__first != __last)
  	{
! 	  if (__comp(__first, __result_first))
  	    std::__adjust_heap(__result_first, _DistanceType(0),
  			       _DistanceType(__result_real_last
  					     - __result_first),
--- 1625,1631 ----
        std::__make_heap(__result_first, __result_real_last, __comp);
        while (__first != __last)
  	{
! 	  if (__comp(*__first, *__result_first))
  	    std::__adjust_heap(__result_first, _DistanceType(0),
  			       _DistanceType(__result_real_last
  					     - __result_first),
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1689,1695 ****
  
        return std::__partial_sort_copy(__first, __last,
  				      __result_first, __result_last,
! 				      __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 1683,1689 ----
  
        return std::__partial_sort_copy(__first, __last,
  				      __result_first, __result_last,
! 				      __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1744,1750 ****
  
        return std::__partial_sort_copy(__first, __last,
  				      __result_first, __result_last,
! 				__gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    /// @cond undocumented
--- 1738,1744 ----
  
        return std::__partial_sort_copy(__first, __last,
  				      __result_first, __result_last,
! 				      __comp);
      }
  
    /// @cond undocumented
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1760,1766 ****
  	__val = _GLIBCXX_MOVE(*__last);
        _RandomAccessIterator __next = __last;
        --__next;
!       while (__comp(__val, __next))
  	{
  	  *__last = _GLIBCXX_MOVE(*__next);
  	  __last = __next;
--- 1754,1760 ----
  	__val = _GLIBCXX_MOVE(*__last);
        _RandomAccessIterator __next = __last;
        --__next;
!       while (__comp(__val, *__next))
  	{
  	  *__last = _GLIBCXX_MOVE(*__next);
  	  __last = __next;
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1784,1798 ****
  
        for (_RandomAccessIterator __i = __first + _Dist(1); __i != __last; ++__i)
  	{
! 	  if (__comp(__i, __first))
  	    {
  	      typename _IterTraits::value_type __val = _GLIBCXX_MOVE(*__i);
  	      _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + _Dist(1));
  	      *__first = _GLIBCXX_MOVE(__val);
  	    }
  	  else
! 	    std::__unguarded_linear_insert(__i,
! 				__gnu_cxx::__ops::__val_comp_iter(__comp));
  	}
      }
  
--- 1778,1791 ----
  
        for (_RandomAccessIterator __i = __first + _Dist(1); __i != __last; ++__i)
  	{
! 	  if (__comp(*__i, *__first))
  	    {
  	      typename _IterTraits::value_type __val = _GLIBCXX_MOVE(*__i);
  	      _GLIBCXX_MOVE_BACKWARD3(__first, __i, __i + _Dist(1));
  	      *__first = _GLIBCXX_MOVE(__val);
  	    }
  	  else
! 	    std::__unguarded_linear_insert(__i, __comp);
  	}
      }
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1804,1811 ****
  			       _RandomAccessIterator __last, _Compare __comp)
      {
        for (_RandomAccessIterator __i = __first; __i != __last; ++__i)
! 	std::__unguarded_linear_insert(__i,
! 				__gnu_cxx::__ops::__val_comp_iter(__comp));
      }
  
    /**
--- 1797,1803 ----
  			       _RandomAccessIterator __last, _Compare __comp)
      {
        for (_RandomAccessIterator __i = __first; __i != __last; ++__i)
! 	std::__unguarded_linear_insert(__i, __comp);
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1844,1853 ****
      {
        while (true)
  	{
! 	  while (__comp(__first, __pivot))
  	    ++__first;
  	  --__last;
! 	  while (__comp(__pivot, __last))
  	    --__last;
  	  if (!(__first < __last))
  	    return __first;
--- 1836,1845 ----
      {
        while (true)
  	{
! 	  while (__comp(*__first, *__pivot))
  	    ++__first;
  	  --__last;
! 	  while (__comp(*__pivot, *__last))
  	    --__last;
  	  if (!(__first < __last))
  	    return __first;
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 1989,1996 ****
        __glibcxx_requires_partitioned_lower_pred(__first, __last,
  						__val, __comp);
  
!       return std::__lower_bound(__first, __last, __val,
! 				__gnu_cxx::__ops::__iter_comp_val(__comp));
      }
  
    template<typename _ForwardIterator, typename _Tp, typename _Compare>
--- 1981,1987 ----
        __glibcxx_requires_partitioned_lower_pred(__first, __last,
  						__val, __comp);
  
!       return std::__lower_bound(__first, __last, __val, __comp);
      }
  
    template<typename _ForwardIterator, typename _Tp, typename _Compare>
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2009,2015 ****
  	  _DistanceType __half = __len >> 1;
  	  _ForwardIterator __middle = __first;
  	  std::advance(__middle, __half);
! 	  if (__comp(__val, __middle))
  	    __len = __half;
  	  else
  	    {
--- 2000,2006 ----
  	  _DistanceType __half = __len >> 1;
  	  _ForwardIterator __middle = __first;
  	  std::advance(__middle, __half);
! 	  if (__comp(__val, *__middle))
  	    __len = __half;
  	  else
  	    {
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2045,2051 ****
        __glibcxx_requires_partitioned_upper(__first, __last, __val);
  
        return std::__upper_bound(__first, __last, __val,
! 				__gnu_cxx::__ops::__val_less_iter());
      }
  
    /**
--- 2036,2042 ----
        __glibcxx_requires_partitioned_upper(__first, __last, __val);
  
        return std::__upper_bound(__first, __last, __val,
! 				__gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2076,2092 ****
        __glibcxx_requires_partitioned_upper_pred(__first, __last,
  						__val, __comp);
  
!       return std::__upper_bound(__first, __last, __val,
! 				__gnu_cxx::__ops::__val_comp_iter(__comp));
      }
  
!   template<typename _ForwardIterator, typename _Tp,
! 	   typename _CompareItTp, typename _CompareTpIt>
      _GLIBCXX20_CONSTEXPR
      pair<_ForwardIterator, _ForwardIterator>
      __equal_range(_ForwardIterator __first, _ForwardIterator __last,
! 		  const _Tp& __val,
! 		  _CompareItTp __comp_it_val, _CompareTpIt __comp_val_it)
      {
        typedef typename iterator_traits<_ForwardIterator>::difference_type
  	_DistanceType;
--- 2067,2080 ----
        __glibcxx_requires_partitioned_upper_pred(__first, __last,
  						__val, __comp);
  
!       return std::__upper_bound(__first, __last, __val, __comp);
      }
  
!   template<typename _ForwardIterator, typename _Tp, typename _Compare>
      _GLIBCXX20_CONSTEXPR
      pair<_ForwardIterator, _ForwardIterator>
      __equal_range(_ForwardIterator __first, _ForwardIterator __last,
! 		  const _Tp& __val, _Compare __comp)
      {
        typedef typename iterator_traits<_ForwardIterator>::difference_type
  	_DistanceType;
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2098,2118 ****
  	  _DistanceType __half = __len >> 1;
  	  _ForwardIterator __middle = __first;
  	  std::advance(__middle, __half);
! 	  if (__comp_it_val(__middle, __val))
  	    {
  	      __first = __middle;
  	      ++__first;
  	      __len = __len - __half - 1;
  	    }
! 	  else if (__comp_val_it(__val, __middle))
  	    __len = __half;
  	  else
  	    {
  	      _ForwardIterator __left
! 		= std::__lower_bound(__first, __middle, __val, __comp_it_val);
  	      std::advance(__first, __len);
  	      _ForwardIterator __right
! 		= std::__upper_bound(++__middle, __first, __val, __comp_val_it);
  	      return pair<_ForwardIterator, _ForwardIterator>(__left, __right);
  	    }
  	}
--- 2086,2106 ----
  	  _DistanceType __half = __len >> 1;
  	  _ForwardIterator __middle = __first;
  	  std::advance(__middle, __half);
! 	  if (__comp(*__middle, __val))
  	    {
  	      __first = __middle;
  	      ++__first;
  	      __len = __len - __half - 1;
  	    }
! 	  else if (__comp(__val, *__middle))
  	    __len = __half;
  	  else
  	    {
  	      _ForwardIterator __left
! 		= std::__lower_bound(__first, __middle, __val, __comp);
  	      std::advance(__first, __len);
  	      _ForwardIterator __right
! 		= std::__upper_bound(++__middle, __first, __val, __comp);
  	      return pair<_ForwardIterator, _ForwardIterator>(__left, __right);
  	    }
  	}
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2152,2159 ****
        __glibcxx_requires_partitioned_upper(__first, __last, __val);
  
        return std::__equal_range(__first, __last, __val,
! 				__gnu_cxx::__ops::__iter_less_val(),
! 				__gnu_cxx::__ops::__val_less_iter());
      }
  
    /**
--- 2140,2146 ----
        __glibcxx_requires_partitioned_upper(__first, __last, __val);
  
        return std::__equal_range(__first, __last, __val,
! 				__gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2190,2198 ****
        __glibcxx_requires_partitioned_upper_pred(__first, __last,
  						__val, __comp);
  
!       return std::__equal_range(__first, __last, __val,
! 				__gnu_cxx::__ops::__iter_comp_val(__comp),
! 				__gnu_cxx::__ops::__val_comp_iter(__comp));
      }
  
    /**
--- 2177,2183 ----
        __glibcxx_requires_partitioned_upper_pred(__first, __last,
  						__val, __comp);
  
!       return std::__equal_range(__first, __last, __val, __comp);
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2221,2228 ****
        __glibcxx_requires_partitioned_upper(__first, __last, __val);
  
        _ForwardIterator __i
! 	= std::__lower_bound(__first, __last, __val,
! 			     __gnu_cxx::__ops::__iter_less_val());
        return __i != __last && !(__val < *__i);
      }
  
--- 2206,2212 ----
        __glibcxx_requires_partitioned_upper(__first, __last, __val);
  
        _ForwardIterator __i
! 	= std::__lower_bound(__first, __last, __val, __gnu_cxx::__ops::less());
        return __i != __last && !(__val < *__i);
      }
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2257,2264 ****
  						__val, __comp);
  
        _ForwardIterator __i
! 	= std::__lower_bound(__first, __last, __val,
! 			     __gnu_cxx::__ops::__iter_comp_val(__comp));
        return __i != __last && !bool(__comp(__val, *__i));
      }
  
--- 2241,2247 ----
  						__val, __comp);
  
        _ForwardIterator __i
! 	= std::__lower_bound(__first, __last, __val, __comp);
        return __i != __last && !bool(__comp(__val, *__i));
      }
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2274,2280 ****
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(__first2, __first1))
  	    {
  	      *__result = _GLIBCXX_MOVE(*__first2);
  	      ++__first2;
--- 2257,2263 ----
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(*__first2, *__first1))
  	    {
  	      *__result = _GLIBCXX_MOVE(*__first2);
  	      ++__first2;
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2313,2319 ****
        --__last2;
        while (true)
  	{
! 	  if (__comp(__last2, __last1))
  	    {
  	      *--__result = _GLIBCXX_MOVE(*__last1);
  	      if (__first1 == __last1)
--- 2296,2302 ----
        --__last2;
        while (true)
  	{
! 	  if (__comp(*__last2, *__last1))
  	    {
  	      *--__result = _GLIBCXX_MOVE(*__last1);
  	      if (__first1 == __last1)
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2419,2426 ****
  	      __len11 = __len1 / 2;
  	      std::advance(__first_cut, __len11);
  	      __second_cut
! 		= std::__lower_bound(__middle, __last, *__first_cut,
! 				     __gnu_cxx::__ops::__iter_comp_val(__comp));
  	      __len22 = std::distance(__middle, __second_cut);
  	    }
  	  else
--- 2402,2408 ----
  	      __len11 = __len1 / 2;
  	      std::advance(__first_cut, __len11);
  	      __second_cut
! 		= std::__lower_bound(__middle, __last, *__first_cut, __comp);
  	      __len22 = std::distance(__middle, __second_cut);
  	    }
  	  else
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2428,2435 ****
  	      __len22 = __len2 / 2;
  	      std::advance(__second_cut, __len22);
  	      __first_cut
! 		= std::__upper_bound(__first, __middle, *__second_cut,
! 				     __gnu_cxx::__ops::__val_comp_iter(__comp));
  	      __len11 = std::distance(__first, __first_cut);
  	    }
  
--- 2410,2416 ----
  	      __len22 = __len2 / 2;
  	      std::advance(__second_cut, __len22);
  	      __first_cut
! 		= std::__upper_bound(__first, __middle, *__second_cut, __comp);
  	      __len11 = std::distance(__first, __first_cut);
  	    }
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2463,2469 ****
  
        if (__len1 + __len2 == 2)
  	{
! 	  if (__comp(__middle, __first))
  	    std::iter_swap(__first, __middle);
  	  return;
  	}
--- 2444,2450 ----
  
        if (__len1 + __len2 == 2)
  	{
! 	  if (__comp(*__middle, *__first))
  	    std::iter_swap(__first, __middle);
  	  return;
  	}
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2477,2484 ****
  	  __len11 = __len1 / 2;
  	  std::advance(__first_cut, __len11);
  	  __second_cut
! 	    = std::__lower_bound(__middle, __last, *__first_cut,
! 				 __gnu_cxx::__ops::__iter_comp_val(__comp));
  	  __len22 = std::distance(__middle, __second_cut);
  	}
        else
--- 2458,2464 ----
  	  __len11 = __len1 / 2;
  	  std::advance(__first_cut, __len11);
  	  __second_cut
! 	    = std::__lower_bound(__middle, __last, *__first_cut, __comp);
  	  __len22 = std::distance(__middle, __second_cut);
  	}
        else
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2486,2493 ****
  	  __len22 = __len2 / 2;
  	  std::advance(__second_cut, __len22);
  	  __first_cut
! 	    = std::__upper_bound(__first, __middle, *__second_cut,
! 				 __gnu_cxx::__ops::__val_comp_iter(__comp));
  	  __len11 = std::distance(__first, __first_cut);
  	}
  
--- 2466,2472 ----
  	  __len22 = __len2 / 2;
  	  std::advance(__second_cut, __len22);
  	  __first_cut
! 	    = std::__upper_bound(__first, __middle, *__second_cut, __comp);
  	  __len11 = std::distance(__first, __first_cut);
  	}
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2581,2587 ****
        __glibcxx_requires_irreflexive(__first, __last);
  
        std::__inplace_merge(__first, __middle, __last,
! 			   __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 2560,2566 ----
        __glibcxx_requires_irreflexive(__first, __last);
  
        std::__inplace_merge(__first, __middle, __last,
! 			   __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2624,2631 ****
        __glibcxx_requires_sorted_pred(__middle, __last, __comp);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       std::__inplace_merge(__first, __middle, __last,
! 			   __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
  
--- 2603,2609 ----
        __glibcxx_requires_sorted_pred(__middle, __last, __comp);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       std::__inplace_merge(__first, __middle, __last, __comp);
      }
  
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2639,2645 ****
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(__first2, __first1))
  	    {
  	      *__result = _GLIBCXX_MOVE(*__first2);
  	      ++__first2;
--- 2617,2623 ----
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(*__first2, *__first1))
  	    {
  	      *__result = _GLIBCXX_MOVE(*__first2);
  	      ++__first2;
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2804,2812 ****
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(__first2, __first1))
  	    return false;
! 	  if (!__comp(__first1, __first2))
  	    ++__first2;
  	  ++__first1;
  	}
--- 2782,2790 ----
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(*__first2, *__first1))
  	    return false;
! 	  if (!__comp(*__first1, *__first2))
  	    ++__first2;
  	  ++__first1;
  	}
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2853,2859 ****
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
        return std::__includes(__first1, __last1, __first2, __last2,
! 			     __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 2831,2837 ----
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
        return std::__includes(__first1, __last1, __first2, __last2,
! 			     __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2899,2906 ****
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return std::__includes(__first1, __last1, __first2, __last2,
! 			     __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    // nth_element
--- 2877,2883 ----
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return std::__includes(__first1, __last1, __first2, __last2, __comp);
      }
  
    // nth_element
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2932,2941 ****
  	{
  	  _BidirectionalIterator __ii = __i;
  	  --__i;
! 	  if (__comp(__i, __ii))
  	    {
  	      _BidirectionalIterator __j = __last;
! 	      while (!__comp(__i, --__j))
  		{}
  	      std::iter_swap(__i, __j);
  	      std::__reverse(__ii, __last,
--- 2909,2918 ----
  	{
  	  _BidirectionalIterator __ii = __i;
  	  --__i;
! 	  if (__comp(*__i, *__ii))
  	    {
  	      _BidirectionalIterator __j = __last;
! 	      while (!__comp(*__i, *--__j))
  		{}
  	      std::iter_swap(__i, __j);
  	      std::__reverse(__ii, __last,
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 2977,2984 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       return std::__next_permutation
! 	(__first, __last, __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 2954,2960 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       return std::__next_permutation(__first, __last, __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3011,3018 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return std::__next_permutation
! 	(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _BidirectionalIterator, typename _Compare>
--- 2987,2993 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return std::__next_permutation(__first, __last, __comp);
      }
  
    template<typename _BidirectionalIterator, typename _Compare>
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3034,3043 ****
  	{
  	  _BidirectionalIterator __ii = __i;
  	  --__i;
! 	  if (__comp(__ii, __i))
  	    {
  	      _BidirectionalIterator __j = __last;
! 	      while (!__comp(--__j, __i))
  		{}
  	      std::iter_swap(__i, __j);
  	      std::__reverse(__ii, __last,
--- 3009,3018 ----
  	{
  	  _BidirectionalIterator __ii = __i;
  	  --__i;
! 	  if (__comp(*__ii, *__i))
  	    {
  	      _BidirectionalIterator __j = __last;
! 	      while (!__comp(*--__j, *__i))
  		{}
  	      std::iter_swap(__i, __j);
  	      std::__reverse(__ii, __last,
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3080,3087 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       return std::__prev_permutation(__first, __last,
! 				     __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 3055,3061 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       return std::__prev_permutation(__first, __last, __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3114,3121 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return std::__prev_permutation(__first, __last,
! 				__gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    // replace
--- 3088,3094 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return std::__prev_permutation(__first, __last, __comp);
      }
  
    // replace
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3130,3136 ****
  		      _Predicate __pred, const _Tp& __new_value)
      {
        for (; __first != __last; ++__first, (void)++__result)
! 	if (__pred(__first))
  	  *__result = __new_value;
  	else
  	  *__result = *__first;
--- 3103,3109 ----
  		      _Predicate __pred, const _Tp& __new_value)
      {
        for (; __first != __last; ++__first, (void)++__result)
! 	if (__pred(*__first))
  	  *__result = __new_value;
  	else
  	  *__result = *__first;
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3167,3174 ****
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__replace_copy_if(__first, __last, __result,
! 			__gnu_cxx::__ops::__iter_equals_val(__old_value),
! 					      __new_value);
      }
  
    /**
--- 3140,3147 ----
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__replace_copy_if(__first, __last, __result,
! 				    __gnu_cxx::__ops::__equal_to(__old_value),
! 				    __new_value);
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3202,3210 ****
  	    typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__replace_copy_if(__first, __last, __result,
! 				__gnu_cxx::__ops::__pred_iter(__pred),
! 					      __new_value);
      }
  
  #if __cplusplus >= 201103L
--- 3175,3182 ----
  	    typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__replace_copy_if(__first, __last, __result, __pred,
! 				    __new_value);
      }
  
  #if __cplusplus >= 201103L
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3248,3254 ****
  
        _ForwardIterator __next = __first;
        for (++__next; __next != __last; __first = __next, (void)++__next)
! 	if (__comp(__next, __first))
  	  return __next;
        return __next;
      }
--- 3220,3226 ----
  
        _ForwardIterator __next = __first;
        for (++__next; __next != __last; __first = __next, (void)++__next)
! 	if (__comp(*__next, *__first))
  	  return __next;
        return __next;
      }
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3274,3280 ****
        __glibcxx_requires_irreflexive(__first, __last);
  
        return std::__is_sorted_until(__first, __last,
! 				    __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 3246,3252 ----
        __glibcxx_requires_irreflexive(__first, __last);
  
        return std::__is_sorted_until(__first, __last,
! 				    __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3300,3307 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return std::__is_sorted_until(__first, __last,
! 				    __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    /**
--- 3272,3278 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return std::__is_sorted_until(__first, __last, __comp);
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3354,3360 ****
  	return std::make_pair(__first, __first);
  
        _ForwardIterator __min{}, __max{};
!       if (__comp(__next, __first))
  	{
  	  __min = __next;
  	  __max = __first;
--- 3325,3331 ----
  	return std::make_pair(__first, __first);
  
        _ForwardIterator __min{}, __max{};
!       if (__comp(*__next, *__first))
  	{
  	  __min = __next;
  	  __max = __first;
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3373,3397 ****
  	  __next = __first;
  	  if (++__next == __last)
  	    {
! 	      if (__comp(__first, __min))
  		__min = __first;
! 	      else if (!__comp(__first, __max))
  		__max = __first;
  	      break;
  	    }
  
! 	  if (__comp(__next, __first))
  	    {
! 	      if (__comp(__next, __min))
  		__min = __next;
! 	      if (!__comp(__first, __max))
  		__max = __first;
  	    }
  	  else
  	    {
! 	      if (__comp(__first, __min))
  		__min = __first;
! 	      if (!__comp(__next, __max))
  		__max = __next;
  	    }
  
--- 3344,3368 ----
  	  __next = __first;
  	  if (++__next == __last)
  	    {
! 	      if (__comp(*__first, *__min))
  		__min = __first;
! 	      else if (!__comp(*__first, *__max))
  		__max = __first;
  	      break;
  	    }
  
! 	  if (__comp(*__next, *__first))
  	    {
! 	      if (__comp(*__next, *__min))
  		__min = __next;
! 	      if (!__comp(*__first, *__max))
  		__max = __first;
  	    }
  	  else
  	    {
! 	      if (__comp(*__first, *__min))
  		__min = __first;
! 	      if (!__comp(*__next, *__max))
  		__max = __next;
  	    }
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3425,3432 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       return std::__minmax_element(__first, __last,
! 				   __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 3396,3402 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       return std::__minmax_element(__first, __last, __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3455,3462 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return std::__minmax_element(__first, __last,
! 				   __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _Tp>
--- 3425,3431 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return std::__minmax_element(__first, __last, __comp);
      }
  
    template<typename _Tp>
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3467,3473 ****
        __glibcxx_requires_irreflexive(__l.begin(), __l.end());
        pair<const _Tp*, const _Tp*> __p =
  	std::__minmax_element(__l.begin(), __l.end(),
! 			      __gnu_cxx::__ops::__iter_less_iter());
        return std::make_pair(*__p.first, *__p.second);
      }
  
--- 3436,3442 ----
        __glibcxx_requires_irreflexive(__l.begin(), __l.end());
        pair<const _Tp*, const _Tp*> __p =
  	std::__minmax_element(__l.begin(), __l.end(),
! 			      __gnu_cxx::__ops::less());
        return std::make_pair(*__p.first, *__p.second);
      }
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3478,3485 ****
      {
        __glibcxx_requires_irreflexive_pred(__l.begin(), __l.end(), __comp);
        pair<const _Tp*, const _Tp*> __p =
! 	std::__minmax_element(__l.begin(), __l.end(),
! 			      __gnu_cxx::__ops::__iter_comp_iter(__comp));
        return std::make_pair(*__p.first, *__p.second);
      }
  
--- 3447,3453 ----
      {
        __glibcxx_requires_irreflexive_pred(__l.begin(), __l.end(), __comp);
        pair<const _Tp*, const _Tp*> __p =
! 	std::__minmax_element(__l.begin(), __l.end(), __comp);
        return std::make_pair(*__p.first, *__p.second);
      }
  
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3512,3522 ****
  	    typename iterator_traits<_ForwardIterator2>::value_type>)
        __glibcxx_requires_valid_range(__first1, __last1);
  
!       return std::__is_permutation(__first1, __last1, __first2,
! 				   __gnu_cxx::__ops::__iter_comp_iter(__pred));
      }
  
! #if __cplusplus > 201103L
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
    template<typename _ForwardIterator1, typename _ForwardIterator2,
--- 3480,3489 ----
  	    typename iterator_traits<_ForwardIterator2>::value_type>)
        __glibcxx_requires_valid_range(__first1, __last1);
  
!       return std::__is_permutation(__first1, __last1, __first2, __pred);
      }
  
! #if __glibcxx_robust_nonmodifying_seq_ops // C++ >= 14
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
    template<typename _ForwardIterator1, typename _ForwardIterator2,
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3544,3550 ****
        // have the same elements in the same order.
        for (; __first1 != __last1 && __first2 != __last2;
  	  ++__first1, (void)++__first2)
! 	if (!__pred(__first1, __first2))
  	  break;
  
        if constexpr (__ra_iters)
--- 3511,3517 ----
        // have the same elements in the same order.
        for (; __first1 != __last1 && __first2 != __last2;
  	  ++__first1, (void)++__first2)
! 	if (!__pred(*__first1, *__first2))
  	  break;
  
        if constexpr (__ra_iters)
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3564,3579 ****
  
        for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan)
  	{
! 	  if (__scan != std::__find_if(__first1, __scan,
! 			__gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)))
  	    continue; // We've seen this one before.
  
! 	  auto __matches = std::__count_if(__first2, __last2,
! 		__gnu_cxx::__ops::__iter_comp_iter(__pred, __scan));
  	  if (0 == __matches
! 	      || std::__count_if(__scan, __last1,
! 			__gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))
! 	      != __matches)
  	    return false;
  	}
        return true;
--- 3531,3544 ----
  
        for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan)
  	{
! 	  auto&& __scan_val = *__scan;
! 	  auto __scaneq = __gnu_cxx::__ops::bind1st(__pred, __scan_val);
! 	  if (__scan != std::__find_if(__first1, __scan, __scaneq))
  	    continue; // We've seen this one before.
  
! 	  auto __matches = std::__count_if(__first2, __last2, __scaneq);
  	  if (0 == __matches
! 		|| std::__count_if(__scan, __last1, __scaneq) != __matches)
  	    return false;
  	}
        return true;
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3602,3610 ****
        __glibcxx_requires_valid_range(__first1, __last1);
        __glibcxx_requires_valid_range(__first2, __last2);
  
!       return
! 	std::__is_permutation(__first1, __last1, __first2, __last2,
! 			      __gnu_cxx::__ops::__iter_equal_to_iter());
      }
  
    /**
--- 3567,3574 ----
        __glibcxx_requires_valid_range(__first1, __last1);
        __glibcxx_requires_valid_range(__first2, __last2);
  
!       return std::__is_permutation(__first1, __last1, __first2, __last2,
! 				   __gnu_cxx::__ops::equal_to());
      }
  
    /**
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 3633,3641 ****
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return std::__is_permutation(__first1, __last1, __first2, __last2,
! 				   __gnu_cxx::__ops::__iter_comp_iter(__pred));
      }
! #endif // C++14
  
  #ifdef  __glibcxx_clamp // C++ >= 17
    /**
--- 3597,3605 ----
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return std::__is_permutation(__first1, __last1, __first2, __last2,
! 				   __pred);
      }
! #endif // __glibcxx_robust_nonmodifying_seq_ops
  
  #ifdef  __glibcxx_clamp // C++ >= 17
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 3912,3918 ****
  #endif
  
        return std::__find_if(__first, __last,
! 			    __gnu_cxx::__ops::__iter_equals_val(__val));
      }
  
    /**
--- 3876,3882 ----
  #endif
  
        return std::__find_if(__first, __last,
! 			    __gnu_cxx::__ops::__equal_to(__val));
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 3937,3944 ****
  	      typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__find_if(__first, __last,
! 			    __gnu_cxx::__ops::__pred_iter(__pred));
      }
  
    /**
--- 3901,3907 ----
  	      typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__find_if(__first, __last, __pred);
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4043,4049 ****
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__adjacent_find(__first, __last,
! 				  __gnu_cxx::__ops::__iter_equal_to_iter());
      }
  
    /**
--- 4006,4012 ----
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__adjacent_find(__first, __last,
! 				  __gnu_cxx::__ops::equal_to());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4070,4077 ****
  	    typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__adjacent_find(__first, __last,
! 			__gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
      }
  
    /**
--- 4033,4039 ----
  	    typename iterator_traits<_ForwardIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__adjacent_find(__first, __last, __binary_pred);
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4095,4101 ****
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__count_if(__first, __last,
! 			     __gnu_cxx::__ops::__iter_equals_val(__value));
      }
  
    /**
--- 4057,4063 ----
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__count_if(__first, __last,
! 			     __gnu_cxx::__ops::__equal_to(__value));
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4118,4125 ****
  	    typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__count_if(__first, __last,
! 			     __gnu_cxx::__ops::__pred_iter(__pred));
      }
  
    /**
--- 4080,4086 ----
  	    typename iterator_traits<_InputIterator>::value_type>)
        __glibcxx_requires_valid_range(__first, __last);
  
!       return std::__count_if(__first, __last, __pred);
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4164,4170 ****
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return std::__search(__first1, __last1, __first2, __last2,
! 			   __gnu_cxx::__ops::__iter_equal_to_iter());
      }
  
    /**
--- 4125,4131 ----
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return std::__search(__first1, __last1, __first2, __last2,
! 			   __gnu_cxx::__ops::equal_to());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4195,4201 ****
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__search_n(__first, __last, __count,
! 			     __gnu_cxx::__ops::__iter_equals_val(__val));
      }
  
  
--- 4156,4162 ----
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__search_n(__first, __last, __count,
! 			     __gnu_cxx::__ops::__equal_to(__val));
      }
  
  
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4231,4237 ****
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__search_n(__first, __last, __count,
! 		__gnu_cxx::__ops::__iter_comp_val(__binary_pred, __val));
      }
  
  #if __cplusplus >= 201703L
--- 4192,4198 ----
        __glibcxx_requires_valid_range(__first, __last);
  
        return std::__search_n(__first, __last, __count,
! 			     __gnu_cxx::__ops::bind2nd(__binary_pred, __val));
      }
  
  #if __cplusplus >= 201703L
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4488,4494 ****
        if (__first == __last)
  	return __result;
        return std::__unique_copy(__first, __last, __result,
! 				__gnu_cxx::__ops::__iter_equal_to_iter(),
  				std::__iterator_category(__first));
      }
  
--- 4449,4455 ----
        if (__first == __last)
  	return __result;
        return std::__unique_copy(__first, __last, __result,
! 				__gnu_cxx::__ops::equal_to(),
  				std::__iterator_category(__first));
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4529,4536 ****
  
        if (__first == __last)
  	return __result;
!       return std::__unique_copy(__first, __last, __result,
! 			__gnu_cxx::__ops::__iter_comp_iter(__binary_pred),
  				std::__iterator_category(__first));
      }
  
--- 4490,4496 ----
  
        if (__first == __last)
  	return __result;
!       return std::__unique_copy(__first, __last, __result, __binary_pred,
  				std::__iterator_category(__first));
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4717,4723 ****
        __glibcxx_requires_irreflexive(__first, __last);
  
        std::__partial_sort(__first, __middle, __last,
! 			  __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 4677,4683 ----
        __glibcxx_requires_irreflexive(__first, __last);
  
        std::__partial_sort(__first, __middle, __last,
! 			  __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4757,4764 ****
        __glibcxx_requires_valid_range(__middle, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       std::__partial_sort(__first, __middle, __last,
! 			  __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    /**
--- 4717,4723 ----
        __glibcxx_requires_valid_range(__middle, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       std::__partial_sort(__first, __middle, __last, __comp);
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4796,4802 ****
  
        std::__introselect(__first, __nth, __last,
  			 std::__lg(__last - __first) * 2,
! 			 __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 4755,4761 ----
  
        std::__introselect(__first, __nth, __last,
  			 std::__lg(__last - __first) * 2,
! 			 __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4837,4843 ****
  
        std::__introselect(__first, __nth, __last,
  			 std::__lg(__last - __first) * 2,
! 			 __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    /**
--- 4796,4802 ----
  
        std::__introselect(__first, __nth, __last,
  			 std::__lg(__last - __first) * 2,
! 			 __comp);
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4867,4873 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       std::__sort(__first, __last, __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 4826,4832 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       std::__sort(__first, __last, __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4900,4906 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       std::__sort(__first, __last, __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
--- 4859,4865 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       std::__sort(__first, __last, __comp);
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4913,4919 ****
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(__first2, __first1))
  	    {
  	      *__result = *__first2;
  	      ++__first2;
--- 4872,4878 ----
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(*__first2, *__first1))
  	    {
  	      *__result = *__first2;
  	      ++__first2;
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 4971,4979 ****
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::__merge(__first1, __last1,
! 				     __first2, __last2, __result,
! 				     __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 4930,4937 ----
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::__merge(__first1, __last1, __first2, __last2,
! 				     __result, __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5022,5030 ****
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::__merge(__first1, __last1,
! 				__first2, __last2, __result,
! 				__gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _RandomAccessIterator, typename _Compare>
--- 4980,4987 ----
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::__merge(__first1, __last1, __first2, __last2,
! 				     __result, __comp);
      }
  
    template<typename _RandomAccessIterator, typename _Compare>
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5098,5104 ****
        __glibcxx_requires_irreflexive(__first, __last);
  
        _GLIBCXX_STD_A::__stable_sort(__first, __last,
! 				    __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 5055,5061 ----
        __glibcxx_requires_irreflexive(__first, __last);
  
        _GLIBCXX_STD_A::__stable_sort(__first, __last,
! 				    __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5134,5146 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       _GLIBCXX_STD_A::__stable_sort(__first, __last,
! 				    __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
! 	   typename _OutputIterator,
! 	   typename _Compare>
      _GLIBCXX20_CONSTEXPR
      _OutputIterator
      __set_union(_InputIterator1 __first1, _InputIterator1 __last1,
--- 5091,5101 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       _GLIBCXX_STD_A::__stable_sort(__first, __last, __comp);
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
! 	   typename _OutputIterator, typename _Compare>
      _GLIBCXX20_CONSTEXPR
      _OutputIterator
      __set_union(_InputIterator1 __first1, _InputIterator1 __last1,
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5149,5160 ****
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(__first1, __first2))
  	    {
  	      *__result = *__first1;
  	      ++__first1;
  	    }
! 	  else if (__comp(__first2, __first1))
  	    {
  	      *__result = *__first2;
  	      ++__first2;
--- 5104,5115 ----
      {
        while (__first1 != __last1 && __first2 != __last2)
  	{
! 	  if (__comp(*__first1, *__first2))
  	    {
  	      *__result = *__first1;
  	      ++__first1;
  	    }
! 	  else if (__comp(*__first2, *__first1))
  	    {
  	      *__result = *__first2;
  	      ++__first2;
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5216,5224 ****
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::__set_union(__first1, __last1,
! 				__first2, __last2, __result,
! 				__gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 5171,5178 ----
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::__set_union(__first1, __last1, __first2, __last2,
! 					 __result, __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5267,5280 ****
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::__set_union(__first1, __last1,
! 				__first2, __last2, __result,
! 				__gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
! 	   typename _OutputIterator,
! 	   typename _Compare>
      _GLIBCXX20_CONSTEXPR
      _OutputIterator
      __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
--- 5221,5232 ----
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::__set_union(__first1, __last1, __first2, __last2,
! 					 __result, __comp);
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
! 	   typename _OutputIterator, typename _Compare>
      _GLIBCXX20_CONSTEXPR
      _OutputIterator
      __set_intersection(_InputIterator1 __first1, _InputIterator1 __last1,
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5282,5290 ****
  		       _OutputIterator __result, _Compare __comp)
      {
        while (__first1 != __last1 && __first2 != __last2)
! 	if (__comp(__first1, __first2))
  	  ++__first1;
! 	else if (__comp(__first2, __first1))
  	  ++__first2;
  	else
  	  {
--- 5234,5242 ----
  		       _OutputIterator __result, _Compare __comp)
      {
        while (__first1 != __last1 && __first2 != __last2)
! 	if (__comp(*__first1, *__first2))
  	  ++__first1;
! 	else if (__comp(*__first2, *__first1))
  	  ++__first2;
  	else
  	  {
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5338,5346 ****
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::__set_intersection(__first1, __last1,
! 				     __first2, __last2, __result,
! 				     __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 5290,5298 ----
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::
! 	       __set_intersection(__first1, __last1, __first2, __last2,
! 				  __result, __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5388,5401 ****
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::__set_intersection(__first1, __last1,
! 				__first2, __last2, __result,
! 				__gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
! 	   typename _OutputIterator,
! 	   typename _Compare>
      _GLIBCXX20_CONSTEXPR
      _OutputIterator
      __set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
--- 5340,5352 ----
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::
! 	       __set_intersection(__first1, __last1, __first2, __last2,
! 				  __result, __comp);
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
! 	   typename _OutputIterator, typename _Compare>
      _GLIBCXX20_CONSTEXPR
      _OutputIterator
      __set_difference(_InputIterator1 __first1, _InputIterator1 __last1,
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5403,5415 ****
  		     _OutputIterator __result, _Compare __comp)
      {
        while (__first1 != __last1 && __first2 != __last2)
! 	if (__comp(__first1, __first2))
  	  {
  	    *__result = *__first1;
  	    ++__first1;
  	    ++__result;
  	  }
! 	else if (__comp(__first2, __first1))
  	  ++__first2;
  	else
  	  {
--- 5354,5366 ----
  		     _OutputIterator __result, _Compare __comp)
      {
        while (__first1 != __last1 && __first2 != __last2)
! 	if (__comp(*__first1, *__first2))
  	  {
  	    *__result = *__first1;
  	    ++__first1;
  	    ++__result;
  	  }
! 	else if (__comp(*__first2, *__first1))
  	  ++__first2;
  	else
  	  {
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5463,5471 ****
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::__set_difference(__first1, __last1,
! 				   __first2, __last2, __result,
! 				   __gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 5414,5422 ----
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::
! 	       __set_difference(__first1, __last1, __first2, __last2, __result,
! 				__gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5515,5523 ****
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::__set_difference(__first1, __last1,
! 				   __first2, __last2, __result,
! 				   __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
--- 5466,5474 ----
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::
! 	       __set_difference(__first1, __last1, __first2, __last2, __result,
! 				__comp);
      }
  
    template<typename _InputIterator1, typename _InputIterator2,
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5533,5545 ****
  			       _Compare __comp)
      {
        while (__first1 != __last1 && __first2 != __last2)
! 	if (__comp(__first1, __first2))
  	  {
  	    *__result = *__first1;
  	    ++__first1;
  	    ++__result;
  	  }
! 	else if (__comp(__first2, __first1))
  	  {
  	    *__result = *__first2;
  	    ++__first2;
--- 5484,5496 ----
  			       _Compare __comp)
      {
        while (__first1 != __last1 && __first2 != __last2)
! 	if (__comp(*__first1, *__first2))
  	  {
  	    *__result = *__first1;
  	    ++__first1;
  	    ++__result;
  	  }
! 	else if (__comp(*__first2, *__first1))
  	  {
  	    *__result = *__first2;
  	    ++__first2;
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5598,5606 ****
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::__set_symmetric_difference(__first1, __last1,
! 					__first2, __last2, __result,
! 					__gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 5549,5557 ----
        __glibcxx_requires_irreflexive2(__first1, __last1);
        __glibcxx_requires_irreflexive2(__first2, __last2);
  
!       return _GLIBCXX_STD_A::
! 	       __set_symmetric_difference(__first1, __last1, __first2, __last2,
! 					  __result, __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5651,5659 ****
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::__set_symmetric_difference(__first1, __last1,
! 				__first2, __last2, __result,
! 				__gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _ForwardIterator, typename _Compare>
--- 5602,5610 ----
        __glibcxx_requires_irreflexive_pred2(__first1, __last1, __comp);
        __glibcxx_requires_irreflexive_pred2(__first2, __last2, __comp);
  
!       return _GLIBCXX_STD_A::
! 	       __set_symmetric_difference(__first1, __last1, __first2, __last2,
! 					  __result, __comp);
      }
  
    template<typename _ForwardIterator, typename _Compare>
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5666,5672 ****
  	return __first;
        _ForwardIterator __result = __first;
        while (++__first != __last)
! 	if (__comp(__first, __result))
  	  __result = __first;
        return __result;
      }
--- 5617,5623 ----
  	return __first;
        _ForwardIterator __result = __first;
        while (++__first != __last)
! 	if (__comp(*__first, *__result))
  	  __result = __first;
        return __result;
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5680,5687 ****
    */
    template<typename _ForwardIterator>
      _GLIBCXX_NODISCARD _GLIBCXX14_CONSTEXPR
!     _ForwardIterator
!     inline min_element(_ForwardIterator __first, _ForwardIterator __last)
      {
        // concept requirements
        __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
--- 5631,5638 ----
    */
    template<typename _ForwardIterator>
      _GLIBCXX_NODISCARD _GLIBCXX14_CONSTEXPR
!     inline _ForwardIterator
!     min_element(_ForwardIterator __first, _ForwardIterator __last)
      {
        // concept requirements
        __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5691,5697 ****
        __glibcxx_requires_irreflexive(__first, __last);
  
        return _GLIBCXX_STD_A::__min_element(__first, __last,
! 				__gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 5642,5648 ----
        __glibcxx_requires_irreflexive(__first, __last);
  
        return _GLIBCXX_STD_A::__min_element(__first, __last,
! 					   __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5717,5724 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return _GLIBCXX_STD_A::__min_element(__first, __last,
! 				__gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _ForwardIterator, typename _Compare>
--- 5668,5674 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return _GLIBCXX_STD_A::__min_element(__first, __last, __comp);
      }
  
    template<typename _ForwardIterator, typename _Compare>
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5730,5736 ****
        if (__first == __last) return __first;
        _ForwardIterator __result = __first;
        while (++__first != __last)
! 	if (__comp(__result, __first))
  	  __result = __first;
        return __result;
      }
--- 5680,5686 ----
        if (__first == __last) return __first;
        _ForwardIterator __result = __first;
        while (++__first != __last)
! 	if (__comp(*__result, *__first))
  	  __result = __first;
        return __result;
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5755,5761 ****
        __glibcxx_requires_irreflexive(__first, __last);
  
        return _GLIBCXX_STD_A::__max_element(__first, __last,
! 				__gnu_cxx::__ops::__iter_less_iter());
      }
  
    /**
--- 5705,5711 ----
        __glibcxx_requires_irreflexive(__first, __last);
  
        return _GLIBCXX_STD_A::__max_element(__first, __last,
! 					   __gnu_cxx::__ops::less());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5781,5788 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return _GLIBCXX_STD_A::__max_element(__first, __last,
! 				__gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
  #if __cplusplus >= 201103L
--- 5731,5737 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       return _GLIBCXX_STD_A::__max_element(__first, __last, __comp);
      }
  
  #if __cplusplus >= 201103L
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5794,5800 ****
      {
        __glibcxx_requires_irreflexive(__l.begin(), __l.end());
        return *_GLIBCXX_STD_A::__min_element(__l.begin(), __l.end(),
! 	  __gnu_cxx::__ops::__iter_less_iter());
      }
  
    template<typename _Tp, typename _Compare>
--- 5743,5749 ----
      {
        __glibcxx_requires_irreflexive(__l.begin(), __l.end());
        return *_GLIBCXX_STD_A::__min_element(__l.begin(), __l.end(),
! 					    __gnu_cxx::__ops::less());
      }
  
    template<typename _Tp, typename _Compare>
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5803,5810 ****
      min(initializer_list<_Tp> __l, _Compare __comp)
      {
        __glibcxx_requires_irreflexive_pred(__l.begin(), __l.end(), __comp);
!       return *_GLIBCXX_STD_A::__min_element(__l.begin(), __l.end(),
! 	  __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
    template<typename _Tp>
--- 5752,5758 ----
      min(initializer_list<_Tp> __l, _Compare __comp)
      {
        __glibcxx_requires_irreflexive_pred(__l.begin(), __l.end(), __comp);
!       return *_GLIBCXX_STD_A::__min_element(__l.begin(), __l.end(), __comp);
      }
  
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5814,5820 ****
      {
        __glibcxx_requires_irreflexive(__l.begin(), __l.end());
        return *_GLIBCXX_STD_A::__max_element(__l.begin(), __l.end(),
! 	  __gnu_cxx::__ops::__iter_less_iter());
      }
  
    template<typename _Tp, typename _Compare>
--- 5762,5768 ----
      {
        __glibcxx_requires_irreflexive(__l.begin(), __l.end());
        return *_GLIBCXX_STD_A::__max_element(__l.begin(), __l.end(),
! 					    __gnu_cxx::__ops::less());
      }
  
    template<typename _Tp, typename _Compare>
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 5823,5834 ****
      max(initializer_list<_Tp> __l, _Compare __comp)
      {
        __glibcxx_requires_irreflexive_pred(__l.begin(), __l.end(), __comp);
!       return *_GLIBCXX_STD_A::__max_element(__l.begin(), __l.end(),
! 	  __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  #endif // C++11
  
! #if __cplusplus >= 201402L
    /// Reservoir sampling algorithm.
    template<typename _InputIterator, typename _RandomAccessIterator,
             typename _Size, typename _UniformRandomBitGenerator>
--- 5771,5781 ----
      max(initializer_list<_Tp> __l, _Compare __comp)
      {
        __glibcxx_requires_irreflexive_pred(__l.begin(), __l.end(), __comp);
!       return *_GLIBCXX_STD_A::__max_element(__l.begin(), __l.end(), __comp);
      }
  #endif // C++11
  
! #if __cplusplus >= 201402L // C++17 std::sample and C++14 experimental::sample
    /// Reservoir sampling algorithm.
    template<typename _InputIterator, typename _RandomAccessIterator,
             typename _Size, typename _UniformRandomBitGenerator>
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/stl_algobase.h gcc-16-20250928/libstdc++-v3/include/bits/stl_algobase.h
*** gcc-16-20250921/libstdc++-v3/include/bits/stl_algobase.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/stl_algobase.h	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1340,1348 ****
        for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
  	   ++__first1, (void)++__first2)
  	{
! 	  if (__comp(__first1, __first2))
  	    return true;
! 	  if (__comp(__first2, __first1))
  	    return false;
  	}
        return __first1 == __last1 && __first2 != __last2;
--- 1340,1348 ----
        for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
  	   ++__first1, (void)++__first2)
  	{
! 	  if (__comp(*__first1, *__first2))
  	    return true;
! 	  if (__comp(*__first2, *__first1))
  	    return false;
  	}
        return __first1 == __last1 && __first2 != __last2;
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1356,1365 ****
  	static bool
  	__lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
  	{
! 	  using __gnu_cxx::__ops::__iter_less_iter;
  	  return std::__lexicographical_compare_impl(__first1, __last1,
  						     __first2, __last2,
! 						     __iter_less_iter());
  	}
  
        template<typename _II1, typename _II2>
--- 1356,1365 ----
  	static bool
  	__lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
  	{
! 	  using __gnu_cxx::__ops::less;
  	  return std::__lexicographical_compare_impl(__first1, __last1,
  						     __first2, __last2,
! 						     less());
  	}
  
        template<typename _II1, typename _II2>
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1515,1521 ****
  	  _DistanceType __half = __len >> 1;
  	  _ForwardIterator __middle = __first;
  	  std::advance(__middle, __half);
! 	  if (__comp(__middle, __val))
  	    {
  	      __first = __middle;
  	      ++__first;
--- 1515,1521 ----
  	  _DistanceType __half = __len >> 1;
  	  _ForwardIterator __middle = __first;
  	  std::advance(__middle, __half);
! 	  if (__comp(*__middle, __val))
  	    {
  	      __first = __middle;
  	      ++__first;
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1551,1557 ****
        __glibcxx_requires_partitioned_lower(__first, __last, __val);
  
        return std::__lower_bound(__first, __last, __val,
! 				__gnu_cxx::__ops::__iter_less_val());
      }
  
    /// This is a helper function for the sort routines and for random.tcc.
--- 1551,1557 ----
        __glibcxx_requires_partitioned_lower(__first, __last, __val);
  
        return std::__lower_bound(__first, __last, __val,
! 				__gnu_cxx::__ops::less());
      }
  
    /// This is a helper function for the sort routines and for random.tcc.
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 1825,1832 ****
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return std::__lexicographical_compare_impl
! 	(__first1, __last1, __first2, __last2,
! 	 __gnu_cxx::__ops::__iter_comp_iter(__comp));
      }
  
  #if __cpp_lib_three_way_comparison
--- 1825,1831 ----
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return std::__lexicographical_compare_impl
! 	(__first1, __last1, __first2, __last2, __comp);
      }
  
  #if __cpp_lib_three_way_comparison
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 1934,1940 ****
      __mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
  	       _InputIterator2 __first2, _BinaryPredicate __binary_pred)
      {
!       while (__first1 != __last1 && __binary_pred(__first1, __first2))
  	{
  	  ++__first1;
  	  ++__first2;
--- 1933,1939 ----
      __mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
  	       _InputIterator2 __first2, _BinaryPredicate __binary_pred)
      {
!       while (__first1 != __last1 && __binary_pred(*__first1, *__first2))
  	{
  	  ++__first1;
  	  ++__first2;
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 1970,1976 ****
        __glibcxx_requires_valid_range(__first1, __last1);
  
        return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2,
! 			     __gnu_cxx::__ops::__iter_equal_to_iter());
      }
  
    /**
--- 1969,1975 ----
        __glibcxx_requires_valid_range(__first1, __last1);
  
        return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2,
! 					__gnu_cxx::__ops::equal_to());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 2002,2008 ****
        __glibcxx_requires_valid_range(__first1, __last1);
  
        return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2,
! 	__gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
      }
  
  #if __glibcxx_robust_nonmodifying_seq_ops // C++ >= 14
--- 2001,2007 ----
        __glibcxx_requires_valid_range(__first1, __last1);
  
        return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2,
! 					__binary_pred);
      }
  
  #if __glibcxx_robust_nonmodifying_seq_ops // C++ >= 14
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 2015,2021 ****
  	       _BinaryPredicate __binary_pred)
      {
        while (__first1 != __last1 && __first2 != __last2
! 	     && __binary_pred(__first1, __first2))
  	{
  	  ++__first1;
  	  ++__first2;
--- 2014,2020 ----
  	       _BinaryPredicate __binary_pred)
      {
        while (__first1 != __last1 && __first2 != __last2
! 	     && __binary_pred(*__first1, *__first2))
  	{
  	  ++__first1;
  	  ++__first2;
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 2053,2059 ****
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2,
! 			     __gnu_cxx::__ops::__iter_equal_to_iter());
      }
  
    /**
--- 2052,2058 ----
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2,
! 					__gnu_cxx::__ops::equal_to());
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 2088,2096 ****
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2,
! 			     __gnu_cxx::__ops::__iter_comp_iter(__binary_pred));
      }
! #endif
  
  _GLIBCXX_END_NAMESPACE_ALGO
  
--- 2087,2095 ----
        __glibcxx_requires_valid_range(__first2, __last2);
  
        return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2,
! 			     __binary_pred);
      }
! #endif // __glibcxx_robust_nonmodifying_seq_ops
  
  _GLIBCXX_END_NAMESPACE_ALGO
  
*************** _GLIBCXX_END_NAMESPACE_ALGO
*** 2101,2107 ****
      __find_if(_Iterator __first, _Iterator __last, _Predicate __pred)
      {
  #pragma GCC unroll 4
!       while (__first != __last && !__pred(__first))
  	++__first;
        return __first;
      }
--- 2100,2106 ----
      __find_if(_Iterator __first, _Iterator __last, _Predicate __pred)
      {
  #pragma GCC unroll 4
!       while (__first != __last && !__pred(*__first))
  	++__first;
        return __first;
      }
*************** _GLIBCXX_END_NAMESPACE_ALGO
*** 2113,2119 ****
      {
        typename iterator_traits<_InputIterator>::difference_type __n = 0;
        for (; __first != __last; ++__first)
! 	if (__pred(__first))
  	  ++__n;
        return __n;
      }
--- 2112,2118 ----
      {
        typename iterator_traits<_InputIterator>::difference_type __n = 0;
        for (; __first != __last; ++__first)
! 	if (__pred(*__first))
  	  ++__n;
        return __n;
      }
*************** _GLIBCXX_END_NAMESPACE_ALGO
*** 2130,2136 ****
        _ForwardIterator __result = __first;
        ++__first;
        for (; __first != __last; ++__first)
! 	if (!__pred(__first))
  	  {
  	    *__result = _GLIBCXX_MOVE(*__first);
  	    ++__result;
--- 2129,2135 ----
        _ForwardIterator __result = __first;
        ++__first;
        for (; __first != __last; ++__first)
! 	if (!__pred(*__first))
  	  {
  	    *__result = _GLIBCXX_MOVE(*__first);
  	    ++__result;
*************** _GLIBCXX_END_NAMESPACE_ALGO
*** 2150,2169 ****
        if (__first1 == __last1 || __first2 == __last2)
  	return __first1;
  
        // Test for a pattern of length 1.
        _ForwardIterator2 __p1(__first2);
        if (++__p1 == __last2)
! 	return std::__find_if(__first1, __last1,
! 		__gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2));
  
        // General case.
        _ForwardIterator1 __current = __first1;
  
        for (;;)
  	{
! 	  __first1 =
! 	    std::__find_if(__first1, __last1,
! 		__gnu_cxx::__ops::__iter_comp_iter(__predicate, __first2));
  
  	  if (__first1 == __last1)
  	    return __last1;
--- 2149,2169 ----
        if (__first1 == __last1 || __first2 == __last2)
  	return __first1;
  
+       __decltype(*__first2) __first2_val(*__first2);
+       __decltype(__gnu_cxx::__ops::bind2nd(__predicate, __first2_val))
+ 	__match_first = __gnu_cxx::__ops::bind2nd(__predicate, __first2_val);
+ 
        // Test for a pattern of length 1.
        _ForwardIterator2 __p1(__first2);
        if (++__p1 == __last2)
! 	return std::__find_if(__first1, __last1, __match_first);
  
        // General case.
        _ForwardIterator1 __current = __first1;
  
        for (;;)
  	{
! 	  __first1 = std::__find_if(__first1, __last1, __match_first);
  
  	  if (__first1 == __last1)
  	    return __last1;
*************** _GLIBCXX_END_NAMESPACE_ALGO
*** 2173,2179 ****
  	  if (++__current == __last1)
  	    return __last1;
  
! 	  while (__predicate(__current, __p))
  	    {
  	      if (++__p == __last2)
  		return __first1;
--- 2173,2179 ----
  	  if (++__current == __last1)
  	    return __last1;
  
! 	  while (__predicate(*__current, *__p))
  	    {
  	      if (++__p == __last2)
  		return __first1;
*************** _GLIBCXX_END_NAMESPACE_ALGO
*** 2184,2189 ****
--- 2184,2190 ----
  	}
        return __first1;
      }
+ #undef __match_first
  
  #if __cplusplus >= 201103L
    template<typename _ForwardIterator1, typename _ForwardIterator2,
*************** _GLIBCXX_END_NAMESPACE_ALGO
*** 2196,2202 ****
        // Efficiently compare identical prefixes:  O(N) if sequences
        // have the same elements in the same order.
        for (; __first1 != __last1; ++__first1, (void)++__first2)
! 	if (!__pred(__first1, __first2))
  	  break;
  
        if (__first1 == __last1)
--- 2197,2203 ----
        // Efficiently compare identical prefixes:  O(N) if sequences
        // have the same elements in the same order.
        for (; __first1 != __last1; ++__first1, (void)++__first2)
! 	if (!__pred(*__first1, *__first2))
  	  break;
  
        if (__first1 == __last1)
*************** _GLIBCXX_END_NAMESPACE_ALGO
*** 2208,2224 ****
        std::advance(__last2, std::distance(__first1, __last1));
        for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan)
  	{
! 	  if (__scan != std::__find_if(__first1, __scan,
! 			  __gnu_cxx::__ops::__iter_comp_iter(__pred, __scan)))
  	    continue; // We've seen this one before.
  
! 	  auto __matches
! 	    = std::__count_if(__first2, __last2,
! 			__gnu_cxx::__ops::__iter_comp_iter(__pred, __scan));
! 	  if (0 == __matches ||
! 	      std::__count_if(__scan, __last1,
! 			__gnu_cxx::__ops::__iter_comp_iter(__pred, __scan))
! 	      != __matches)
  	    return false;
  	}
        return true;
--- 2209,2222 ----
        std::advance(__last2, std::distance(__first1, __last1));
        for (_ForwardIterator1 __scan = __first1; __scan != __last1; ++__scan)
  	{
! 	  auto&& __scan_val = *__scan;
! 	  auto __scaneq = __gnu_cxx::__ops::bind1st(__pred, __scan_val);
! 	  if (__scan != std::__find_if(__first1, __scan, __scaneq))
  	    continue; // We've seen this one before.
  
! 	  auto __matches = std::__count_if(__first2, __last2, __scaneq);
! 	  if (0 == __matches
! 		|| std::__count_if(__scan, __last1, __scaneq) != __matches)
  	    return false;
  	}
        return true;
*************** _GLIBCXX_END_NAMESPACE_ALGO
*** 2251,2257 ****
        __glibcxx_requires_valid_range(__first1, __last1);
  
        return std::__is_permutation(__first1, __last1, __first2,
! 				   __gnu_cxx::__ops::__iter_equal_to_iter());
      }
  #endif // C++11
  
--- 2249,2255 ----
        __glibcxx_requires_valid_range(__first1, __last1);
  
        return std::__is_permutation(__first1, __last1, __first2,
! 				   __gnu_cxx::__ops::equal_to());
      }
  #endif // C++11
  
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 2295,2302 ****
        __glibcxx_requires_valid_range(__first1, __last1);
        __glibcxx_requires_valid_range(__first2, __last2);
  
!       return std::__search(__first1, __last1, __first2, __last2,
! 			   __gnu_cxx::__ops::__iter_comp_iter(__predicate));
      }
  
  _GLIBCXX_END_NAMESPACE_ALGO
--- 2293,2299 ----
        __glibcxx_requires_valid_range(__first1, __last1);
        __glibcxx_requires_valid_range(__first2, __last2);
  
!       return std::__search(__first1, __last1, __first2, __last2, __predicate);
      }
  
  _GLIBCXX_END_NAMESPACE_ALGO
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/stl_construct.h gcc-16-20250928/libstdc++-v3/include/bits/stl_construct.h
*** gcc-16-20250921/libstdc++-v3/include/bits/stl_construct.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/stl_construct.h	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 281,286 ****
--- 281,409 ----
      }
  #endif // C++17
  
+ #if __glibcxx_start_lifetime_as >= 202207L // C++ >= 23
+   template<typename _Tp>
+     [[__gnu__::__always_inline__]]
+     inline _Tp*
+     start_lifetime_as(void* __p) noexcept
+     {
+ #if __glibcxx_is_implicit_lifetime >= 202302L
+       static_assert(is_implicit_lifetime_v<_Tp>);
+ #endif
+       auto __q = reinterpret_cast<_Tp*>(__p);
+       __asm__ __volatile__("" : "=g" (__q), "=m" (*__q)
+ 			   : "0" (__q), "m" (*__q));
+       return __q;
+     }
+ 
+   template<typename _Tp>
+     [[__gnu__::__always_inline__]]
+     inline const _Tp*
+     start_lifetime_as(const void* __p) noexcept
+     {
+ #if __glibcxx_is_implicit_lifetime >= 202302L
+       static_assert(is_implicit_lifetime_v<_Tp>);
+ #endif
+       auto __q = reinterpret_cast<const _Tp*>(__p);
+       auto __r = reinterpret_cast<_Tp*>(const_cast<void*>(__p));
+       __asm__ __volatile__("" : "=g" (__q), "=m" (*__r)
+ 			   : "0" (__q), "m" (*__q));
+       return __q;
+     }
+ 
+   template<typename _Tp>
+     [[__gnu__::__always_inline__]]
+     inline volatile _Tp*
+     start_lifetime_as(volatile void* __p) noexcept
+     {
+ #if __glibcxx_is_implicit_lifetime >= 202302L
+       static_assert(is_implicit_lifetime_v<_Tp>);
+ #endif
+       auto __q = reinterpret_cast<volatile _Tp*>(__p);
+       auto __r = reinterpret_cast<_Tp*>(const_cast<void*>(__p));
+       __asm__ __volatile__("" : "=g" (__q), "=m" (*__r)
+ 			   : "0" (__q), "m" (*__q));
+       return __q;
+     }
+ 
+   template<typename _Tp>
+     [[__gnu__::__always_inline__]]
+     inline const volatile _Tp*
+     start_lifetime_as(const volatile void* __p) noexcept
+     {
+ #if __glibcxx_is_implicit_lifetime >= 202302L
+       static_assert(is_implicit_lifetime_v<_Tp>);
+ #endif
+       auto __q = reinterpret_cast<const volatile _Tp*>(__p);
+       auto __r = reinterpret_cast<_Tp*>(const_cast<void*>(__p));
+       __asm__ __volatile__("" : "=g" (__q), "=m" (*__r)
+ 			   : "0" (__q), "m" (*__q));
+       return __q;
+     }
+ 
+   template<typename _Tp>
+     [[__gnu__::__always_inline__]]
+     inline _Tp*
+     start_lifetime_as_array(void* __p, size_t __n) noexcept
+     {
+       auto __q = reinterpret_cast<_Tp*>(__p);
+       if (!__n)
+ 	return __q;
+       auto __r = (__extension__ reinterpret_cast<_Tp(*)[__n]>(__p));
+       __asm__ __volatile__("" : "=g" (__q), "=m" (*__r)
+ 			   : "0" (__q), "m" (*__r));
+       return __q;
+     }
+ 
+   template<typename _Tp>
+     [[__gnu__::__always_inline__]]
+     inline const _Tp*
+     start_lifetime_as_array(const void* __p, size_t __n) noexcept
+     {
+       auto __q = reinterpret_cast<const _Tp*>(__p);
+       if (!__n)
+ 	return __q;
+       auto __r = (__extension__ reinterpret_cast<const _Tp(*)[__n]>(__p));
+       auto __s = (__extension__
+ 		  reinterpret_cast<_Tp(*)[__n]>(const_cast<void*>(__p)));
+       __asm__ __volatile__("" : "=g" (__q), "=m" (*__s)
+ 			   : "0" (__q), "m" (*__r));
+       return __q;
+     }
+ 
+   template<typename _Tp>
+     [[__gnu__::__always_inline__]]
+     inline volatile _Tp*
+     start_lifetime_as_array(volatile void* __p, size_t __n) noexcept
+     {
+       auto __q = reinterpret_cast<volatile _Tp*>(__p);
+       if (!__n)
+ 	return __q;
+       auto __r = (__extension__ reinterpret_cast<volatile _Tp(*)[__n]>(__p));
+       auto __s = (__extension__
+ 		  reinterpret_cast<_Tp(*)[__n]>(const_cast<void*>(__p)));
+       __asm__ __volatile__("" : "=g" (__q), "=m" (*__s)
+ 			   : "0" (__q), "m" (*__r));
+       return __q;
+     }
+ 
+   template<typename _Tp>
+     [[__gnu__::__always_inline__]]
+     inline const volatile _Tp*
+     start_lifetime_as_array(const volatile void* __p, size_t __n) noexcept
+     {
+       auto __q = reinterpret_cast<const volatile _Tp*>(__p);
+       if (!__n)
+ 	return __q;
+       auto __r = (__extension__ reinterpret_cast<const volatile _Tp(*)[__n]>(__p));
+       auto __s = (__extension__
+ 		  reinterpret_cast<_Tp(*)[__n]>(const_cast<void*>(__p)));
+       __asm__ __volatile__("" : "=g" (__q), "=m" (*__s)
+ 			   : "0" (__q), "m" (*__r));
+       return __q;
+     }
+ #endif // C++23
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/stl_deque.h gcc-16-20250928/libstdc++-v3/include/bits/stl_deque.h
*** gcc-16-20250921/libstdc++-v3/include/bits/stl_deque.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/stl_deque.h	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2163,2168 ****
--- 2163,2197 ----
        iterator
        _M_insert_aux(iterator __pos, const value_type& __x);
  #else
+       struct _Temporary_value
+       {
+ 	template<typename... _Args>
+ 	  _GLIBCXX20_CONSTEXPR explicit
+ 	  _Temporary_value(deque* __deque, _Args&&... __args) : _M_this(__deque)
+ 	  {
+ 	    _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(),
+ 				     std::forward<_Args>(__args)...);
+ 	  }
+ 
+ 	_GLIBCXX20_CONSTEXPR
+ 	~_Temporary_value()
+ 	{ _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); }
+ 
+ 	_GLIBCXX20_CONSTEXPR value_type&
+ 	_M_val() noexcept { return __tmp_val; }
+ 
+       private:
+ 	_GLIBCXX20_CONSTEXPR _Tp*
+ 	_M_ptr() noexcept { return std::__addressof(__tmp_val); }
+ 
+ 	union
+ 	{
+ 	  _Tp __tmp_val;
+ 	};
+ 
+ 	deque* _M_this;
+       };
+ 
        iterator
        _M_insert_aux(iterator __pos, const value_type& __x)
        { return _M_emplace_aux(__pos, __x); }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/stl_function.h gcc-16-20250928/libstdc++-v3/include/bits/stl_function.h
*** gcc-16-20250921/libstdc++-v3/include/bits/stl_function.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/stl_function.h	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 762,767 ****
--- 762,819 ----
  	      is_convertible<_Tp, const volatile void*>,
  	      is_convertible<_Up, const volatile void*>>;
      };
+ #else // < C++14
+ 
+   // We need less<void> and equal_to<void> for <bits/predefined_ops.h>
+ 
+   template<>
+     struct equal_to<void>
+     {
+ #ifdef __cpp_rvalue_references
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(_Tp&& __t, _Up&& __u) const
+ 	{ return __t == __u; }
+ #else // C++98
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(_Tp& __t, _Up& __u) const { return __t == __u; }
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(const _Tp& __t, _Up& __u) const { return __t == __u; }
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(_Tp& __t, const _Up& __u) const { return __t == __u; }
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(const _Tp& __t, const _Up& __u) const { return __t == __u; }
+ #endif
+     };
+ 
+   template<>
+     struct less<void>
+     {
+ #ifdef __cpp_rvalue_references
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(_Tp&& __t, _Up&& __u) const
+ 	{ return __t < __u; }
+ #else // C++98
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(_Tp& __t, _Up& __u) const { return __t < __u; }
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(const _Tp& __t, _Up& __u) const { return __t < __u; }
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(_Tp& __t, const _Up& __u) const { return __t < __u; }
+       template<typename _Tp, typename _Up>
+ 	bool
+ 	operator()(const _Tp& __t, const _Up& __u) const { return __t < __u; }
+ #endif
+     };
+ 
  #endif // __glibcxx_transparent_operators
    /** @}  */
  
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/stl_heap.h gcc-16-20250928/libstdc++-v3/include/bits/stl_heap.h
*** gcc-16-20250921/libstdc++-v3/include/bits/stl_heap.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/stl_heap.h	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 85,91 ****
        _Distance __parent = 0;
        for (_Distance __child = 1; __child < __n; ++__child)
  	{
! 	  if (__comp(__first + __parent, __first + __child))
  	    return __child;
  	  if ((__child & 1) == 0)
  	    ++__parent;
--- 85,91 ----
        _Distance __parent = 0;
        for (_Distance __child = 1; __child < __n; ++__child)
  	{
! 	  if (__comp(__first[__parent], __first[__child]))
  	    return __child;
  	  if ((__child & 1) == 0)
  	    ++__parent;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 101,107 ****
      __is_heap(_RandomAccessIterator __first, _Distance __n)
      {
        typename iterator_traits<_RandomAccessIterator>::difference_type __d(__n);
!       __gnu_cxx::__ops::_Iter_less_iter __comp;
        return std::__is_heap_until(__first, __d, __comp) == __n;
      }
  
--- 101,107 ----
      __is_heap(_RandomAccessIterator __first, _Distance __n)
      {
        typename iterator_traits<_RandomAccessIterator>::difference_type __d(__n);
!       __gnu_cxx::__ops::less __comp;
        return std::__is_heap_until(__first, __d, __comp) == __n;
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 112,120 ****
      __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n)
      {
        typename iterator_traits<_RandomAccessIterator>::difference_type __d(__n);
!       typedef __decltype(__comp) _Cmp;
!       __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp));
!       return std::__is_heap_until(__first, __d, __cmp) == __n;
      }
  
    template<typename _RandomAccessIterator>
--- 112,118 ----
      __is_heap(_RandomAccessIterator __first, _Compare __comp, _Distance __n)
      {
        typename iterator_traits<_RandomAccessIterator>::difference_type __d(__n);
!       return std::__is_heap_until(__first, __d, __comp) == __n;
      }
  
    template<typename _RandomAccessIterator>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 145,151 ****
  		_Compare& __comp)
      {
        _Distance __parent = (__holeIndex - 1) / 2;
!       while (__holeIndex > __topIndex && __comp(__first + __parent, __value))
  	{
  	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __parent));
  	  __holeIndex = __parent;
--- 143,149 ----
  		_Compare& __comp)
      {
        _Distance __parent = (__holeIndex - 1) / 2;
!       while (__holeIndex > __topIndex && __comp(__first[__parent], __value))
  	{
  	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __parent));
  	  __holeIndex = __parent;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 182,188 ****
        __glibcxx_requires_irreflexive(__first, __last);
        __glibcxx_requires_heap(__first, __last - _DistanceType(1));
  
!       __gnu_cxx::__ops::_Iter_less_val __comp;
        _ValueType __value = _GLIBCXX_MOVE(*(__last - _DistanceType(1)));
        std::__push_heap(__first, _DistanceType((__last - __first) - 1),
  		       _DistanceType(0), _GLIBCXX_MOVE(__value), __comp);
--- 180,186 ----
        __glibcxx_requires_irreflexive(__first, __last);
        __glibcxx_requires_heap(__first, __last - _DistanceType(1));
  
!       __gnu_cxx::__ops::less __comp;
        _ValueType __value = _GLIBCXX_MOVE(*(__last - _DistanceType(1)));
        std::__push_heap(__first, _DistanceType((__last - __first) - 1),
  		       _DistanceType(0), _GLIBCXX_MOVE(__value), __comp);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 218,228 ****
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
        __glibcxx_requires_heap_pred(__first, __last - _DistanceType(1), __comp);
  
-       __decltype(__gnu_cxx::__ops::__iter_comp_val(_GLIBCXX_MOVE(__comp)))
- 	__cmp(_GLIBCXX_MOVE(__comp));
        _ValueType __value = _GLIBCXX_MOVE(*(__last - _DistanceType(1)));
        std::__push_heap(__first, _DistanceType((__last - __first) - 1),
! 		       _DistanceType(0), _GLIBCXX_MOVE(__value), __cmp);
      }
  
    template<typename _RandomAccessIterator, typename _Distance,
--- 216,224 ----
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
        __glibcxx_requires_heap_pred(__first, __last - _DistanceType(1), __comp);
  
        _ValueType __value = _GLIBCXX_MOVE(*(__last - _DistanceType(1)));
        std::__push_heap(__first, _DistanceType((__last - __first) - 1),
! 		       _DistanceType(0), _GLIBCXX_MOVE(__value), __comp);
      }
  
    template<typename _RandomAccessIterator, typename _Distance,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 237,244 ****
        while (__secondChild < (__len - 1) / 2)
  	{
  	  __secondChild = 2 * (__secondChild + 1);
! 	  if (__comp(__first + __secondChild,
! 		     __first + (__secondChild - 1)))
  	    __secondChild--;
  	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __secondChild));
  	  __holeIndex = __secondChild;
--- 233,240 ----
        while (__secondChild < (__len - 1) / 2)
  	{
  	  __secondChild = 2 * (__secondChild + 1);
! 	  if (__comp(__first[__secondChild],
! 		     __first[__secondChild - 1]))
  	    __secondChild--;
  	  *(__first + __holeIndex) = _GLIBCXX_MOVE(*(__first + __secondChild));
  	  __holeIndex = __secondChild;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 250,259 ****
  						     + (__secondChild - 1)));
  	  __holeIndex = __secondChild - 1;
  	}
-       __decltype(__gnu_cxx::__ops::__iter_comp_val(_GLIBCXX_MOVE(__comp)))
- 	__cmp(_GLIBCXX_MOVE(__comp));
        std::__push_heap(__first, __holeIndex, __topIndex,
! 		       _GLIBCXX_MOVE(__value), __cmp);
      }
  
    template<typename _RandomAccessIterator, typename _Compare>
--- 246,253 ----
  						     + (__secondChild - 1)));
  	  __holeIndex = __secondChild - 1;
  	}
        std::__push_heap(__first, __holeIndex, __topIndex,
! 		       _GLIBCXX_MOVE(__value), __comp);
      }
  
    template<typename _RandomAccessIterator, typename _Compare>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 303,309 ****
        if (__last - __first > 1)
  	{
  	  --__last;
! 	  __gnu_cxx::__ops::_Iter_less_iter __comp;
  	  std::__pop_heap(__first, __last, __last, __comp);
  	}
      }
--- 297,303 ----
        if (__last - __first > 1)
  	{
  	  --__last;
! 	  __gnu_cxx::__ops::less __comp;
  	  std::__pop_heap(__first, __last, __last, __comp);
  	}
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 335,344 ****
  
        if (__last - __first > 1)
  	{
- 	  typedef __decltype(__comp) _Cmp;
- 	  __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp));
  	  --__last;
! 	  std::__pop_heap(__first, __last, __last, __cmp);
  	}
      }
  
--- 329,336 ----
  
        if (__last - __first > 1)
  	{
  	  --__last;
! 	  std::__pop_heap(__first, __last, __last, __comp);
  	}
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 390,396 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       __gnu_cxx::__ops::_Iter_less_iter __comp;
        std::__make_heap(__first, __last, __comp);
      }
  
--- 382,388 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       __gnu_cxx::__ops::less __comp;
        std::__make_heap(__first, __last, __comp);
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 416,424 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       typedef __decltype(__comp) _Cmp;
!       __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp));
!       std::__make_heap(__first, __last, __cmp);
      }
  
    template<typename _RandomAccessIterator, typename _Compare>
--- 408,414 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
!       std::__make_heap(__first, __last, __comp);
      }
  
    template<typename _RandomAccessIterator, typename _Compare>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 456,462 ****
        __glibcxx_requires_irreflexive(__first, __last);
        __glibcxx_requires_heap(__first, __last);
  
!       __gnu_cxx::__ops::_Iter_less_iter __comp;
        std::__sort_heap(__first, __last, __comp);
      }
  
--- 446,452 ----
        __glibcxx_requires_irreflexive(__first, __last);
        __glibcxx_requires_heap(__first, __last);
  
!       __gnu_cxx::__ops::less __comp;
        std::__sort_heap(__first, __last, __comp);
      }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 483,491 ****
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
        __glibcxx_requires_heap_pred(__first, __last, __comp);
  
!       typedef __decltype(__comp) _Cmp;
!       __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp));
!       std::__sort_heap(__first, __last, __cmp);
      }
  
  #if __cplusplus >= 201103L
--- 473,479 ----
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
        __glibcxx_requires_heap_pred(__first, __last, __comp);
  
!       std::__sort_heap(__first, __last, __comp);
      }
  
  #if __cplusplus >= 201103L
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 512,518 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       __gnu_cxx::__ops::_Iter_less_iter __comp;
        return __first +
  	std::__is_heap_until(__first, std::distance(__first, __last), __comp);
      }
--- 500,506 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive(__first, __last);
  
!       __gnu_cxx::__ops::less __comp;
        return __first +
  	std::__is_heap_until(__first, std::distance(__first, __last), __comp);
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 540,549 ****
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
-       typedef __decltype(__comp) _Cmp;
-       __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp));
        return __first
! 	+ std::__is_heap_until(__first, std::distance(__first, __last), __cmp);
      }
  
    /**
--- 528,536 ----
        __glibcxx_requires_valid_range(__first, __last);
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
        return __first
! 	+ std::__is_heap_until(__first, std::distance(__first, __last),
! 			       __comp);
      }
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 580,588 ****
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
        const auto __dist = std::distance(__first, __last);
!       typedef __decltype(__comp) _Cmp;
!       __gnu_cxx::__ops::_Iter_comp_iter<_Cmp> __cmp(_GLIBCXX_MOVE(__comp));
!       return std::__is_heap_until(__first, __dist, __cmp) == __dist;
      }
  #endif
  
--- 567,573 ----
        __glibcxx_requires_irreflexive_pred(__first, __last, __comp);
  
        const auto __dist = std::distance(__first, __last);
!       return std::__is_heap_until(__first, __dist, __comp) == __dist;
      }
  #endif
  
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/version.def gcc-16-20250928/libstdc++-v3/include/bits/version.def
*** gcc-16-20250921/libstdc++-v3/include/bits/version.def	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/version.def	Sun Sep 28 22:35:07 2025
*************** ftms = {
*** 2137,2142 ****
--- 2137,2151 ----
    };
  };
  
+ ftms = {
+   name = philox_engine;
+   values = {
+     v = 202406;
+     cxxmin = 26;
+     extra_cond = "__SIZEOF_INT128__";
+   };
+ };
+ 
  // Standard test specifications.
  stds[97] = ">= 199711L";
  stds[03] = ">= 199711L";
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/bits/version.h gcc-16-20250928/libstdc++-v3/include/bits/version.h
*** gcc-16-20250921/libstdc++-v3/include/bits/version.h	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/bits/version.h	Sun Sep 28 22:35:07 2025
***************
*** 2397,2400 ****
--- 2397,2410 ----
  #endif /* !defined(__cpp_lib_constexpr_exceptions) && defined(__glibcxx_want_constexpr_exceptions) */
  #undef __glibcxx_want_constexpr_exceptions
  
+ #if !defined(__cpp_lib_philox_engine)
+ # if (__cplusplus >  202302L) && (__SIZEOF_INT128__)
+ #  define __glibcxx_philox_engine 202406L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_philox_engine)
+ #   define __cpp_lib_philox_engine 202406L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_philox_engine) && defined(__glibcxx_want_philox_engine) */
+ #undef __glibcxx_want_philox_engine
+ 
  #undef __glibcxx_want_all
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/std/deque gcc-16-20250928/libstdc++-v3/include/std/deque
*** gcc-16-20250921/libstdc++-v3/include/std/deque	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/std/deque	Sun Sep 28 22:35:07 2025
***************
*** 66,72 ****
  #include <bits/stl_construct.h>
  #include <bits/stl_uninitialized.h>
  #include <bits/stl_deque.h>
- #include <bits/refwrap.h>
  #include <bits/range_access.h>
  #include <bits/deque.tcc>
  
--- 66,71 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 109,115 ****
        const auto __osz = __cont.size();
        const auto __end = __ucont.end();
        auto __removed = std::__remove_if(__ucont.begin(), __end,
! 					__ops::__pred_iter(std::ref(__pred)));
        if (__removed != __end)
  	{
  	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
--- 108,114 ----
        const auto __osz = __cont.size();
        const auto __end = __ucont.end();
        auto __removed = std::__remove_if(__ucont.begin(), __end,
! 					std::move(__pred));
        if (__removed != __end)
  	{
  	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 124,145 ****
  	   typename _Up _GLIBCXX26_DEF_VAL_T(_Tp)>
      inline typename deque<_Tp, _Alloc>::size_type
      erase(deque<_Tp, _Alloc>& __cont, const _Up& __value)
!     {
!       using namespace __gnu_cxx;
!       _GLIBCXX_STD_C::deque<_Tp, _Alloc>& __ucont = __cont;
!       const auto __osz = __cont.size();
!       const auto __end = __ucont.end();
!       auto __removed = std::__remove_if(__ucont.begin(), __end,
! 					__ops::__iter_equals_val(__value));
!       if (__removed != __end)
! 	{
! 	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
! 		       __cont.end());
! 	  return __osz - __cont.size();
! 	}
  
-       return 0;
-     }
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // __cpp_lib_erase_if
--- 123,130 ----
  	   typename _Up _GLIBCXX26_DEF_VAL_T(_Tp)>
      inline typename deque<_Tp, _Alloc>::size_type
      erase(deque<_Tp, _Alloc>& __cont, const _Up& __value)
!     { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // __cpp_lib_erase_if
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/std/inplace_vector gcc-16-20250928/libstdc++-v3/include/std/inplace_vector
*** gcc-16-20250921/libstdc++-v3/include/std/inplace_vector	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/std/inplace_vector	Sun Sep 28 22:35:07 2025
***************
*** 42,48 ****
  #include <bits/ranges_base.h> // borrowed_iterator_t, __detail::__container_compatible_range
  #include <bits/ranges_util.h> // subrange
  #include <bits/ranges_uninitialized.h>
- #include <bits/refwrap.h>
  #include <bits/stl_construct.h>
  #include <bits/stl_uninitialized.h>
  #include <bits/stl_algo.h> // rotate
--- 42,47 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1343,1349 ****
        const auto __osz = __cont.size();
        const auto __end = __cont.end();
        auto __removed = std::__remove_if(__cont.begin(), __end,
! 					__ops::__pred_iter(std::ref(__pred)));
        if (__removed != __end)
  	{
  	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
--- 1342,1348 ----
        const auto __osz = __cont.size();
        const auto __end = __cont.end();
        auto __removed = std::__remove_if(__cont.begin(), __end,
! 					std::move(__pred));
        if (__removed != __end)
  	{
  	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1357,1376 ****
    template<typename _Tp, size_t _Nm, typename _Up = _Tp>
      constexpr  size_t
      erase(inplace_vector<_Tp, _Nm>& __cont, const _Up& __value)
!     {
!       using namespace __gnu_cxx;
!       const auto __osz = __cont.size();
!       const auto __end = __cont.end();
!       auto __removed = std::__remove_if(__cont.begin(), __end,
! 					__ops::__iter_equals_val(__value));
!       if (__removed != __end)
! 	{
! 	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
! 		       __cont.end());
! 	  return __osz - __cont.size();
! 	}
!       return 0;
!     }
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 1356,1362 ----
    template<typename _Tp, size_t _Nm, typename _Up = _Tp>
      constexpr  size_t
      erase(inplace_vector<_Tp, _Nm>& __cont, const _Up& __value)
!     { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/std/mdspan gcc-16-20250928/libstdc++-v3/include/std/mdspan
*** gcc-16-20250921/libstdc++-v3/include/std/mdspan	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/std/mdspan	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 597,609 ****
  	return __res;
        }
  
!     template<typename _Extents,
!              typename _IndexType = typename _Extents::index_type>
        consteval _IndexType
!       __static_quotient(_IndexType __nom = __gnu_cxx::__int_traits<_IndexType>
! 						    ::__max)
        {
- 	std::span<const size_t> __sta_exts = __static_extents<_Extents>();
  	for (auto __factor : __sta_exts)
  	  {
  	    if (__factor != dynamic_extent)
--- 597,607 ----
  	return __res;
        }
  
!     template<typename _IndexType>
        consteval _IndexType
!       __static_quotient(std::span<const size_t> __sta_exts,
! 	_IndexType __nom = __gnu_cxx::__int_traits<_IndexType>::__max)
        {
  	for (auto __factor : __sta_exts)
  	  {
  	    if (__factor != dynamic_extent)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 614,619 ****
--- 612,628 ----
  	return __nom;
        }
  
+     template<typename _Extents,
+ 	     typename _IndexType = typename _Extents::index_type>
+       requires __is_extents<_Extents>
+       consteval _IndexType
+       __static_quotient(_IndexType __nom
+ 			  = __gnu_cxx::__int_traits<_IndexType>::__max)
+       {
+ 	std::span<const size_t> __sta_exts = __static_extents<_Extents>();
+ 	return __static_quotient<_IndexType>(__sta_exts, __nom);
+       }
+ 
      template<typename _Extents>
        constexpr bool
        __is_representable_extents(const _Extents& __exts) noexcept
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/std/memory gcc-16-20250928/libstdc++-v3/include/std/memory
*** gcc-16-20250921/libstdc++-v3/include/std/memory	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/std/memory	Sun Sep 28 22:35:07 2025
*************** _GLIBCXX_END_NAMESPACE_VERSION
*** 173,306 ****
  } // namespace
  #endif // C++11 to C++20
  
- #if __cpp_lib_start_lifetime_as >= 202207L // C++ >= 23
- namespace std _GLIBCXX_VISIBILITY(default)
- {
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
-   template<typename _Tp>
-     [[__gnu__::__always_inline__]]
-     inline _Tp*
-     start_lifetime_as(void* __p) noexcept
-     {
- #if __cpp_lib_is_implicit_lifetime >= 202302L
-       static_assert(is_implicit_lifetime_v<_Tp>);
- #endif
-       auto __q = reinterpret_cast<_Tp*>(__p);
-       __asm__ __volatile__("" : "=g" (__q), "=m" (*__q)
- 			   : "0" (__q), "m" (*__q));
-       return __q;
-     }
- 
-   template<typename _Tp>
-     [[__gnu__::__always_inline__]]
-     inline const _Tp*
-     start_lifetime_as(const void* __p) noexcept
-     {
- #if __cpp_lib_is_implicit_lifetime >= 202302L
-       static_assert(is_implicit_lifetime_v<_Tp>);
- #endif
-       auto __q = reinterpret_cast<const _Tp*>(__p);
-       auto __r = reinterpret_cast<_Tp*>(const_cast<void*>(__p));
-       __asm__ __volatile__("" : "=g" (__q), "=m" (*__r)
- 			   : "0" (__q), "m" (*__q));
-       return __q;
-     }
- 
-   template<typename _Tp>
-     [[__gnu__::__always_inline__]]
-     inline volatile _Tp*
-     start_lifetime_as(volatile void* __p) noexcept
-     {
- #if __cpp_lib_is_implicit_lifetime >= 202302L
-       static_assert(is_implicit_lifetime_v<_Tp>);
- #endif
-       auto __q = reinterpret_cast<volatile _Tp*>(__p);
-       auto __r = reinterpret_cast<_Tp*>(const_cast<void*>(__p));
-       __asm__ __volatile__("" : "=g" (__q), "=m" (*__r)
- 			   : "0" (__q), "m" (*__q));
-       return __q;
-     }
- 
-   template<typename _Tp>
-     [[__gnu__::__always_inline__]]
-     inline const volatile _Tp*
-     start_lifetime_as(const volatile void* __p) noexcept
-     {
- #if __cpp_lib_is_implicit_lifetime >= 202302L
-       static_assert(is_implicit_lifetime_v<_Tp>);
- #endif
-       auto __q = reinterpret_cast<const volatile _Tp*>(__p);
-       auto __r = reinterpret_cast<_Tp*>(const_cast<void*>(__p));
-       __asm__ __volatile__("" : "=g" (__q), "=m" (*__r)
- 			   : "0" (__q), "m" (*__q));
-       return __q;
-     }
- 
-   template<typename _Tp>
-     [[__gnu__::__always_inline__]]
-     inline _Tp*
-     start_lifetime_as_array(void* __p, size_t __n) noexcept
-     {
-       auto __q = reinterpret_cast<_Tp*>(__p);
-       if (!__n)
- 	return __q;
-       auto __r = (__extension__ reinterpret_cast<_Tp(*)[__n]>(__p));
-       __asm__ __volatile__("" : "=g" (__q), "=m" (*__r)
- 			   : "0" (__q), "m" (*__r));
-       return __q;
-     }
- 
-   template<typename _Tp>
-     [[__gnu__::__always_inline__]]
-     inline const _Tp*
-     start_lifetime_as_array(const void* __p, size_t __n) noexcept
-     {
-       auto __q = reinterpret_cast<const _Tp*>(__p);
-       if (!__n)
- 	return __q;
-       auto __r = (__extension__ reinterpret_cast<const _Tp(*)[__n]>(__p));
-       auto __s = (__extension__
- 		  reinterpret_cast<_Tp(*)[__n]>(const_cast<void*>(__p)));
-       __asm__ __volatile__("" : "=g" (__q), "=m" (*__s)
- 			   : "0" (__q), "m" (*__r));
-       return __q;
-     }
- 
-   template<typename _Tp>
-     [[__gnu__::__always_inline__]]
-     inline volatile _Tp*
-     start_lifetime_as_array(volatile void* __p, size_t __n) noexcept
-     {
-       auto __q = reinterpret_cast<volatile _Tp*>(__p);
-       if (!__n)
- 	return __q;
-       auto __r = (__extension__ reinterpret_cast<volatile _Tp(*)[__n]>(__p));
-       auto __s = (__extension__
- 		  reinterpret_cast<_Tp(*)[__n]>(const_cast<void*>(__p)));
-       __asm__ __volatile__("" : "=g" (__q), "=m" (*__s)
- 			   : "0" (__q), "m" (*__r));
-       return __q;
-     }
- 
-   template<typename _Tp>
-     [[__gnu__::__always_inline__]]
-     inline const volatile _Tp*
-     start_lifetime_as_array(const volatile void* __p, size_t __n) noexcept
-     {
-       auto __q = reinterpret_cast<const volatile _Tp*>(__p);
-       if (!__n)
- 	return __q;
-       auto __r = (__extension__ reinterpret_cast<const volatile _Tp(*)[__n]>(__p));
-       auto __s = (__extension__
- 		  reinterpret_cast<_Tp(*)[__n]>(const_cast<void*>(__p)));
-       __asm__ __volatile__("" : "=g" (__q), "=m" (*__s)
- 			   : "0" (__q), "m" (*__r));
-       return __q;
-     }
- _GLIBCXX_END_NAMESPACE_VERSION
- } // namespace
- #endif
- 
  #ifdef __cpp_lib_parallel_algorithm // C++ >= 17 && HOSTED
  // Parallel STL algorithms
  # if _PSTL_EXECUTION_POLICIES_DEFINED
--- 173,178 ----
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/std/random gcc-16-20250928/libstdc++-v3/include/std/random
*** gcc-16-20250921/libstdc++-v3/include/std/random	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/std/random	Sun Sep 28 22:35:07 2025
***************
*** 39,44 ****
--- 39,47 ----
  # include <bits/c++0x_warning.h>
  #else
  
+ #define __glibcxx_want_philox_engine
+ #include <bits/version.h>
+ 
  #include <cmath>
  #include <cstdint> // For uint_fast32_t, uint_fast64_t, uint_least32_t
  #include <cstdlib>
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/std/spanstream gcc-16-20250928/libstdc++-v3/include/std/spanstream
*** gcc-16-20250921/libstdc++-v3/include/std/spanstream	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/std/spanstream	Sun Sep 28 22:35:07 2025
*************** template<typename _CharT, typename _Trai
*** 152,158 ****
  
        if (__way == ios_base::beg)
  	{
! 	  if (0 <= __off && __off <= _M_buf.size())
  	    {
  	      if (__which & ios_base::in)
  		this->setg(this->eback(), this->eback() + __off, this->egptr());
--- 152,158 ----
  
        if (__way == ios_base::beg)
  	{
! 	  if (0 <= __off && (size_t)__off <= _M_buf.size())
  	    {
  	      if (__which & ios_base::in)
  		this->setg(this->eback(), this->eback() + __off, this->egptr());
*************** template<typename _CharT, typename _Trai
*** 188,194 ****
  	  if (__builtin_add_overflow(__base, __off, &__off)) [[unlikely]]
  	    return __ret;
  
! 	  if (__off < 0 || __off > _M_buf.size()) [[unlikely]]
  	    return __ret;
  
  	  if (__which & ios_base::in)
--- 188,194 ----
  	  if (__builtin_add_overflow(__base, __off, &__off)) [[unlikely]]
  	    return __ret;
  
! 	  if (__off < 0 || (size_t)__off > _M_buf.size()) [[unlikely]]
  	    return __ret;
  
  	  if (__which & ios_base::in)
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/std/string gcc-16-20250928/libstdc++-v3/include/std/string
*** gcc-16-20250921/libstdc++-v3/include/std/string	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/std/string	Sun Sep 28 22:35:07 2025
***************
*** 51,57 ****
  #include <bits/stl_function.h> // For less
  #include <ext/numeric_traits.h>
  #include <bits/stl_algobase.h>
- #include <bits/refwrap.h>
  #include <bits/range_access.h>
  #include <bits/basic_string.h>
  #include <bits/basic_string.tcc>
--- 51,56 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 104,110 ****
        const auto __osz = __cont.size();
        const auto __end = __cont.end();
        auto __removed = std::__remove_if(__cont.begin(), __end,
! 					__ops::__pred_iter(std::ref(__pred)));
        __cont.erase(__removed, __end);
        return __osz - __cont.size();
      }
--- 103,109 ----
        const auto __osz = __cont.size();
        const auto __end = __cont.end();
        auto __removed = std::__remove_if(__cont.begin(), __end,
! 					std::move(__pred));
        __cont.erase(__removed, __end);
        return __osz - __cont.size();
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 114,128 ****
      _GLIBCXX20_CONSTEXPR
      inline typename basic_string<_CharT, _Traits, _Alloc>::size_type
      erase(basic_string<_CharT, _Traits, _Alloc>& __cont, const _Up& __value)
!     {
!       using namespace __gnu_cxx;
!       const auto __osz = __cont.size();
!       const auto __end = __cont.end();
!       auto __removed = std::__remove_if(__cont.begin(), __end,
! 					__ops::__iter_equals_val(__value));
!       __cont.erase(__removed, __end);
!       return __osz - __cont.size();
!     }
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // __cpp_lib_erase_if
--- 113,120 ----
      _GLIBCXX20_CONSTEXPR
      inline typename basic_string<_CharT, _Traits, _Alloc>::size_type
      erase(basic_string<_CharT, _Traits, _Alloc>& __cont, const _Up& __value)
!     { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
! 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // __cpp_lib_erase_if
diff -Nrcpad gcc-16-20250921/libstdc++-v3/include/std/vector gcc-16-20250928/libstdc++-v3/include/std/vector
*** gcc-16-20250921/libstdc++-v3/include/std/vector	Sun Sep 21 22:33:42 2025
--- gcc-16-20250928/libstdc++-v3/include/std/vector	Sun Sep 28 22:35:07 2025
***************
*** 67,73 ****
  #include <bits/stl_uninitialized.h>
  #include <bits/stl_vector.h>
  #include <bits/stl_bvector.h>
- #include <bits/refwrap.h>
  #include <bits/range_access.h>
  
  #ifndef _GLIBCXX_EXPORT_TEMPLATE
--- 67,72 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 122,128 ****
        const auto __osz = __cont.size();
        const auto __end = __ucont.end();
        auto __removed = std::__remove_if(__ucont.begin(), __end,
! 					__ops::__pred_iter(std::ref(__pred)));
        if (__removed != __end)
  	{
  	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
--- 121,127 ----
        const auto __osz = __cont.size();
        const auto __end = __ucont.end();
        auto __removed = std::__remove_if(__ucont.begin(), __end,
! 					std::move(__pred));
        if (__removed != __end)
  	{
  	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 138,159 ****
      _GLIBCXX20_CONSTEXPR
      inline typename vector<_Tp, _Alloc>::size_type
      erase(vector<_Tp, _Alloc>& __cont, const _Up& __value)
!     {
!       using namespace __gnu_cxx;
!       _GLIBCXX_STD_C::vector<_Tp, _Alloc>& __ucont = __cont;
!       const auto __osz = __cont.size();
!       const auto __end = __ucont.end();
!       auto __removed = std::__remove_if(__ucont.begin(), __end,
! 					__ops::__iter_equals_val(__value));
!       if (__removed != __end)
! 	{
! 	  __cont.erase(__niter_wrap(__cont.begin(), __removed),
! 		       __cont.end());
! 	  return __osz - __cont.size();
! 	}
  
-       return 0;
-     }
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // __cpp_lib_erase_if
--- 137,144 ----
      _GLIBCXX20_CONSTEXPR
      inline typename vector<_Tp, _Alloc>::size_type
      erase(vector<_Tp, _Alloc>& __cont, const _Up& __value)
!     { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // __cpp_lib_erase_if
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/17_intro/names.cc gcc-16-20250928/libstdc++-v3/testsuite/17_intro/names.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/17_intro/names.cc	Sun Sep 21 22:33:43 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/17_intro/names.cc	Sun Sep 28 22:35:07 2025
***************
*** 286,291 ****
--- 286,293 ----
  // <sys/ucontext.h> defines fpreg_t::d and fpreg_t::f
  #undef d
  #undef f
+ // <asm/types.h> defines __vector128::u
+ #undef u
  #endif
  
  #if defined (__linux__) && defined (__sparc__)
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc gcc-16-20250928/libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc	Sun Sep 21 22:33:43 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc	Sun Sep 28 22:35:08 2025
*************** void test02()
*** 74,80 ****
  {
    typedef std::allocator_traits<unhintable_allocator<X>> traits_type;
    traits_type::allocator_type a;
!   traits_type::const_void_pointer v;
    X* p __attribute__((unused)) = traits_type::allocate(a, 1, v);
    VERIFY( a.called );
  }
--- 74,80 ----
  {
    typedef std::allocator_traits<unhintable_allocator<X>> traits_type;
    traits_type::allocator_type a;
!   traits_type::const_void_pointer v = nullptr;
    X* p __attribute__((unused)) = traits_type::allocate(a, 1, v);
    VERIFY( a.called );
  }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc gcc-16-20250928/libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc	Sun Sep 21 22:33:43 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc	Sun Sep 28 22:35:08 2025
*************** void test01()
*** 58,64 ****
  {
    typedef std::allocator_traits<Alloc<int>> traits_type;
    traits_type::allocator_type a;
!   traits_type::const_void_pointer v;
    traits_type::pointer p = traits_type::allocate(a, 1, v);
    traits_type::deallocate(a, p, 1);
  }
--- 58,64 ----
  {
    typedef std::allocator_traits<Alloc<int>> traits_type;
    traits_type::allocator_type a;
!   traits_type::const_void_pointer v = nullptr;
    traits_type::pointer p = traits_type::allocate(a, 1, v);
    traits_type::deallocate(a, p, 1);
  }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/20_util/duration/114244.cc gcc-16-20250928/libstdc++-v3/testsuite/20_util/duration/114244.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/20_util/duration/114244.cc	Sun Sep 21 22:33:43 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/20_util/duration/114244.cc	Sun Sep 28 22:35:08 2025
*************** test_pr114244()
*** 13,20 ****
  {
    using namespace std::chrono;
    seconds s;
!   milliseconds ms;
!   microseconds us;
  
    std::istringstream is;
  
--- 13,20 ----
  {
    using namespace std::chrono;
    seconds s;
!   milliseconds ms{};
!   microseconds us{};
  
    std::istringstream is;
  
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/20_util/duration/io.cc gcc-16-20250928/libstdc++-v3/testsuite/20_util/duration/io.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/20_util/duration/io.cc	Sun Sep 21 22:33:43 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/20_util/duration/io.cc	Sun Sep 28 22:35:08 2025
*************** test_parse()
*** 193,200 ****
  {
    using namespace std::chrono;
    seconds s;
!   milliseconds ms;
!   microseconds us;
  
    std::istringstream is("   2023-07-24 13:05");
    VERIFY( is >> parse(" %Y-%m-%d %H:%M", s) );
--- 193,200 ----
  {
    using namespace std::chrono;
    seconds s;
!   milliseconds ms{};
!   microseconds us{};
  
    std::istringstream is("   2023-07-24 13:05");
    VERIFY( is >> parse(" %Y-%m-%d %H:%M", s) );
*************** test_parse()
*** 289,301 ****
  
    is.clear();
    is.str("0.5");
!   std::chrono::duration<double> ds;
    VERIFY( is >> parse("%S", ds) );
    VERIFY( ds == 0.5s );
  
    is.clear();
    is.str("0.125");
!   std::chrono::duration<double, std::milli> dms;
    VERIFY( is >> parse("%S", dms) );
    VERIFY( dms == 0.125s );
  }
--- 289,301 ----
  
    is.clear();
    is.str("0.5");
!   std::chrono::duration<double> ds{};
    VERIFY( is >> parse("%S", ds) );
    VERIFY( ds == 0.5s );
  
    is.clear();
    is.str("0.125");
!   std::chrono::duration<double, std::milli> dms{};
    VERIFY( is >> parse("%S", dms) );
    VERIFY( dms == 0.125s );
  }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc gcc-16-20250928/libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc	Sun Sep 21 22:33:43 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/20_util/function_objects/not_fn/nttp.cc	Sun Sep 28 22:35:08 2025
***************
*** 2,13 ****
  
  // { dg-do run { target c++26 } }
  
- #ifndef __cpp_lib_not_fn
- # error "Feature test macro for not_fn is missing in <functional>"
- #elif __cpp_lib_not_fn < 202306L
- # error "Feature test macro for not_fn has wrong value in <functional>"
- #endif
- 
  #include <functional>
  #include <testsuite_hooks.h>
  
--- 2,7 ----
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/20_util/function_objects/not_fn/version.cc gcc-16-20250928/libstdc++-v3/testsuite/20_util/function_objects/not_fn/version.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/20_util/function_objects/not_fn/version.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/20_util/function_objects/not_fn/version.cc	Sun Sep 28 22:35:08 2025
***************
*** 0 ****
--- 1,12 ----
+ // { dg-do preprocess { target c++17 } }
+ // { dg-add-options no_pch }
+ 
+ #include <functional>
+ 
+ #ifndef __cpp_lib_not_fn
+ # error "Feature test macro for not_fn is missing in <functional>"
+ #elif __cpp_lib_not_fn < 201603L
+ # error "Feature test macro __cpp_lib_not_fn has the wrong value for C++17 or later"
+ #elif __cplusplus > 202302L && __cpp_lib_not_fn < 202306L
+ # error "Feature test macro __cpp_lib_not_fn has the wrong value for C++26 or later"
+ #endif
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/20_util/function_ref/deduction.cc gcc-16-20250928/libstdc++-v3/testsuite/20_util/function_ref/deduction.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/20_util/function_ref/deduction.cc	Sun Sep 21 22:33:43 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/20_util/function_ref/deduction.cc	Sun Sep 28 22:35:08 2025
*************** using std::function_ref;
*** 10,15 ****
--- 10,22 ----
  
  int i = 0;
  
+ template<auto f, class... Args>
+   concept deductible = requires (Args&... args) 
+   { std::function_ref(std::nontype<f>, args...); };
+ 
+ static_assert( !deductible<1> );
+ static_assert( !deductible<1, int> );
+ 
  void f0();
  void f0n() noexcept;
  
*************** static_assert( is_same_v<decltype(functi
*** 21,26 ****
--- 28,35 ----
  			 function_ref<void()>> );
  static_assert( is_same_v<decltype(function_ref(nontype<f0n>)),
  			 function_ref<void() noexcept>> );
+ static_assert( !deductible<f0, char*> );
+ static_assert( !deductible<f0n, char*> );
  
  void f1(int);
  void f1n(int) noexcept;
*************** static_assert( is_same_v<decltype(functi
*** 37,42 ****
--- 46,53 ----
  			 function_ref<void()>> );
  static_assert( is_same_v<decltype(function_ref(nontype<f1n>, i)),
  			 function_ref<void() noexcept>> );
+ static_assert( !deductible<f1, char*> );
+ static_assert( !deductible<f1n, char*> );
  
  void f2(int*, int);
  void f2n(int*, int) noexcept;
*************** static_assert( is_same_v<decltype(functi
*** 53,58 ****
--- 64,71 ----
  			 function_ref<void(int)>> );
  static_assert( is_same_v<decltype(function_ref(nontype<f2n>, &i)),
  			 function_ref<void(int) noexcept>> );
+ static_assert( !deductible<f2, char*> );
+ static_assert( !deductible<f2n, char*> );
  
  struct S
  {
*************** struct S
*** 68,73 ****
--- 81,89 ----
  
    int fcl(float) const&;
    int fcln(float) const& noexcept;
+ 
+   int fr(int) &&;
+   int frn(int) && noexcept;
  };
  S s{};
  const S cs{};
*************** static_assert( is_same_v<decltype(functi
*** 80,95 ****
--- 96,118 ----
  			 function_ref<int&()>> );
  static_assert( is_same_v<decltype(function_ref(nontype<&S::mem>, &cs)),
  			 function_ref<const int&()>> );
+ static_assert( !deductible<&S::mem, int> );
  
  static_assert( is_same_v<decltype(function_ref(nontype<&S::f>, s)),
  			 function_ref<int()>> );
  static_assert( is_same_v<decltype(function_ref(nontype<&S::fn>, &s)),
  			 function_ref<int() noexcept>> );
+ static_assert( !deductible<&S::f, char*> );
+ static_assert( !deductible<&S::fn, char*> );
+ static_assert( !deductible<&S::f, const S> );
+ static_assert( !deductible<&S::fn, const S> );
  
  static_assert( is_same_v<decltype(function_ref(nontype<&S::fc>, &s)),
  			 function_ref<int(int)>> );
  static_assert( is_same_v<decltype(function_ref(nontype<&S::fcn>, s)),
  			 function_ref<int(int) noexcept>> );
+ static_assert( !deductible<&S::fc, char*> );
+ static_assert( !deductible<&S::fcn, char*> );
  
  static_assert( is_same_v<decltype(function_ref(nontype<&S::fl>, &s)),
  			 function_ref<int(int)>> );
*************** static_assert( is_same_v<decltype(functi
*** 101,103 ****
--- 124,131 ----
  static_assert( is_same_v<decltype(function_ref(nontype<&S::fcln>, &s)),
  			 function_ref<int(float) noexcept>> );
  
+ static_assert( !deductible<&S::fr, char*> );
+ static_assert( !deductible<&S::frn, char*> );
+ static_assert( !deductible<&S::fr, S> );
+ static_assert( !deductible<&S::frn, S> );
+ 
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 86,92 ****
      }
    VERIFY( test );
    VERIFY( i1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 86,92 ----
      }
    VERIFY( test );
    VERIFY( i1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 86,92 ****
      }
    VERIFY( test );
    VERIFY( l1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 86,92 ----
      }
    VERIFY( test );
    VERIFY( l1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 87,93 ****
      }
    VERIFY( test );
    VERIFY( ll1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 87,93 ----
      }
    VERIFY( test );
    VERIFY( ll1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 86,92 ****
      }
    VERIFY( test );
    VERIFY( ul1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 86,92 ----
      }
    VERIFY( test );
    VERIFY( ul1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 87,93 ****
      }
    VERIFY( test );
    VERIFY( ull1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 87,93 ----
      }
    VERIFY( test );
    VERIFY( ull1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 88,94 ****
      }
    VERIFY( test );
    VERIFY( i1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 88,94 ----
      }
    VERIFY( test );
    VERIFY( i1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 88,94 ****
      }
    VERIFY( test );
    VERIFY( l1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 88,94 ----
      }
    VERIFY( test );
    VERIFY( l1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 88,94 ****
      }
    VERIFY( test );
    VERIFY( ll1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 88,94 ----
      }
    VERIFY( test );
    VERIFY( ll1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 88,94 ****
      }
    VERIFY( test );
    VERIFY( ul1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 88,94 ----
      }
    VERIFY( test );
    VERIFY( ul1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc	Sun Sep 28 22:35:19 2025
*************** test01()
*** 88,94 ****
      }
    VERIFY( test );
    VERIFY( ull1 == 7 );
!   VERIFY( idx1 = 1 );
  
    try
      {
--- 88,94 ----
      }
    VERIFY( test );
    VERIFY( ull1 == 7 );
!   VERIFY( idx1 == 1 );
  
    try
      {
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/118087.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/118087.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/118087.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/118087.cc	Sun Sep 28 22:35:19 2025
***************
*** 0 ****
--- 1,43 ----
+ // { dg-do run { target c++11 } }
+ 
+ // PR libstdc++/118087
+ // std::deque::emplace does not do uses-allocator construction
+ 
+ #include <deque>
+ #include <scoped_allocator>
+ #include <testsuite_hooks.h>
+ #include <testsuite_allocator.h>
+ 
+ template<typename T>
+ using Alloc = __gnu_test::propagating_allocator<T, true>;
+ 
+ struct X
+ {
+   using allocator_type = Alloc<int>;
+   X() { }
+   X(const X&) { }
+   X(X&&) { }
+   X(const allocator_type& a) : alloc(a) { }
+   X(const X&, const allocator_type& a) : alloc(a) { }
+   X(X&&, const allocator_type& a) : alloc(a) { }
+ 
+   X& operator=(const X&) = default;
+ 
+   allocator_type alloc{-1};
+ };
+ 
+ int main()
+ {
+   std::deque<X, std::scoped_allocator_adaptor<Alloc<X>>> d(2, Alloc<X>(50));
+   VERIFY(d[0].alloc.get_personality() == 50);
+   VERIFY(d[1].alloc.get_personality() == 50);
+ 
+   d.emplace(d.begin() + 1);
+   VERIFY(d[1].alloc.get_personality() == 50);
+ 
+   d.emplace_front();
+   VERIFY(d[0].alloc.get_personality() == 50);
+ 
+   d.emplace_back();
+   VERIFY(d[d.size() - 1].alloc.get_personality() == 50);
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc	Sun Sep 21 22:33:44 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc	Sun Sep 28 22:35:19 2025
*************** constexpr bool is_equal(std::less<T>, st
*** 61,67 ****
  { return true; }
  
  constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
! { return lhs.state = rhs.state; }
  
  constexpr auto get0 = [](auto const& t) {
    using std::get;
--- 61,67 ----
  { return true; }
  
  constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
! { return lhs.state == rhs.state; }
  
  constexpr auto get0 = [](auto const& t) {
    using std::get;
*************** do_test(Alloc alloc, Cmp cmp)
*** 103,114 ****
    std::map<K, V, Cmp, Alloc> m4(std::from_range, Range(a, a+4), cmp);
    VERIFY( eq(m4, {a, 4}) );
    VERIFY( m4.get_allocator() == Alloc() );
!   VERIFY( is_equal(m4.key_comp(), Cmp()) );
  
    std::map<K, V, Cmp, Alloc> m9(std::from_range, Range(a, a+9), alloc);
    VERIFY( eq(m9, {a, 9}) );
    VERIFY( m9.get_allocator() == alloc );
!   VERIFY( is_equal(m9.key_comp(), cmp) );
  
    std::map<K, V, Cmp, Alloc> mr(std::from_range, Range(a, a+14), cmp, alloc);
    VERIFY( eq(mr, {a, 9}) );
--- 103,114 ----
    std::map<K, V, Cmp, Alloc> m4(std::from_range, Range(a, a+4), cmp);
    VERIFY( eq(m4, {a, 4}) );
    VERIFY( m4.get_allocator() == Alloc() );
!   VERIFY( is_equal(m4.key_comp(), cmp) );
  
    std::map<K, V, Cmp, Alloc> m9(std::from_range, Range(a, a+9), alloc);
    VERIFY( eq(m9, {a, 9}) );
    VERIFY( m9.get_allocator() == alloc );
!   VERIFY( is_equal(m9.key_comp(), Cmp()) );
  
    std::map<K, V, Cmp, Alloc> mr(std::from_range, Range(a, a+14), cmp, alloc);
    VERIFY( eq(mr, {a, 9}) );
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc	Sun Sep 21 22:33:45 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc	Sun Sep 28 22:35:19 2025
*************** template<typename Mapping>
*** 30,125 ****
    }
  
  template<typename Layout, typename Int>
! constexpr void
! test_static_overflow()
! {
!   constexpr Int n1 = std::numeric_limits<Int>::max();
!   constexpr size_t n2 = std::dynamic_extent - 1;
!   constexpr size_t n = std::cmp_less(n1, n2) ? size_t(n1) : n2;
  
!   verify_all(typename Layout::mapping<std::extents<Int, n, n, 0, n, n>>{});
!   verify_all(typename Layout::mapping<std::extents<Int, 0, n, n, n>>{});
!   verify_all(typename Layout::mapping<std::extents<Int, dyn, n, n, n>>{});
!   verify_all(typename Layout::mapping<std::extents<Int, n, n, n, 0>>{});
!   verify_all(typename Layout::mapping<std::extents<Int, n, n, n, dyn>>{});
! }
  
  template<typename Int, size_t N>
! constexpr std::array<Int, N>
! make_strides()
! {
!   std::array<Int, N> strides;
!   std::ranges::fill(strides, Int(1));
!   return strides;
! }
  
  template<typename Layout, typename Extents>
! constexpr typename Layout::mapping<Extents>
! make_mapping(Extents exts)
! {
!   using IndexType = typename Extents::index_type;
!   constexpr auto rank = Extents::rank();
!   constexpr auto strides = make_strides<IndexType, rank>();
  
!   if constexpr (std::same_as<Layout, std::layout_stride>)
!     return typename Layout::mapping(exts, strides);
!   else
!     return typename Layout::mapping(exts);
! }
  
  template<typename Layout, typename Int>
! constexpr void
! test_dynamic_overflow()
! {
!   constexpr Int n1 = std::numeric_limits<Int>::max();
!   constexpr size_t n2 = std::dynamic_extent - 1;
!   constexpr Int n = std::cmp_less(n1, n2) ? n1 : Int(n2);
  
!   verify_all(make_mapping<Layout>(
!       std::extents<Int, dyn, dyn, 0, dyn, dyn>{n, n, n, n}));
  
!   verify_all(make_mapping<Layout>(
!       std::extents<Int, dyn, dyn, dyn, dyn, dyn>{n, n, 0, n, n}));
  
!   verify_all(make_mapping<Layout>(
!       std::extents<Int, dyn, dyn, dyn, 0>{n, n, n}));
  
!   verify_all(make_mapping<Layout>(
!       std::extents<Int, dyn, dyn, dyn, dyn>{n, n, n, 0}));
  
!   verify_all(make_mapping<Layout>(
!       std::extents<Int, 0, dyn, dyn, dyn>{n, n, n}));
  
!   verify_all(make_mapping<Layout>(
!       std::extents<Int, dyn, dyn, dyn, dyn>{0, n, n, n}));
! }
  
  template<typename Layout, typename Int>
! constexpr void
! test_overflow()
! {
!   test_static_overflow<Layout, Int>();
!   test_dynamic_overflow<Layout, Int>();
! }
  
  template<typename Layout>
! constexpr bool
! test_all()
! {
!   test_overflow<Layout, signed char>();
!   test_overflow<Layout, short int>();
!   test_overflow<Layout, int>();
!   test_overflow<Layout, long int>();
!   test_overflow<Layout, long long int>();
  
!   test_overflow<Layout, unsigned char>();
!   test_overflow<Layout, unsigned short int>();
!   test_overflow<Layout, unsigned int>();
!   test_overflow<Layout, unsigned long int>();
!   test_overflow<Layout, unsigned long long int>();
!   test_overflow<Layout, size_t>();
!   return true;
! }
  
  int
  main()
--- 30,125 ----
    }
  
  template<typename Layout, typename Int>
!   constexpr void
!   test_static_overflow()
!   {
!     constexpr Int n1 = std::numeric_limits<Int>::max();
!     constexpr size_t n2 = std::dynamic_extent - 1;
!     constexpr size_t n = std::cmp_less(n1, n2) ? size_t(n1) : n2;
  
!     verify_all(typename Layout::mapping<std::extents<Int, n, n, 0, n, n>>{});
!     verify_all(typename Layout::mapping<std::extents<Int, 0, n, n, n>>{});
!     verify_all(typename Layout::mapping<std::extents<Int, dyn, n, n, n>>{});
!     verify_all(typename Layout::mapping<std::extents<Int, n, n, n, 0>>{});
!     verify_all(typename Layout::mapping<std::extents<Int, n, n, n, dyn>>{});
!   }
  
  template<typename Int, size_t N>
!   constexpr std::array<Int, N>
!   make_strides()
!   {
!     std::array<Int, N> strides;
!     std::ranges::fill(strides, Int(1));
!     return strides;
!   }
  
  template<typename Layout, typename Extents>
!   constexpr typename Layout::mapping<Extents>
!   make_mapping(Extents exts)
!   {
!     using IndexType = typename Extents::index_type;
!     constexpr auto rank = Extents::rank();
!     constexpr auto strides = make_strides<IndexType, rank>();
  
!     if constexpr (std::same_as<Layout, std::layout_stride>)
!       return typename Layout::mapping(exts, strides);
!     else
!       return typename Layout::mapping(exts);
!   }
  
  template<typename Layout, typename Int>
!   constexpr void
!   test_dynamic_overflow()
!   {
!     constexpr Int n1 = std::numeric_limits<Int>::max();
!     constexpr size_t n2 = std::dynamic_extent - 1;
!     constexpr Int n = std::cmp_less(n1, n2) ? n1 : Int(n2);
  
!     verify_all(make_mapping<Layout>(
! 	std::extents<Int, dyn, dyn, 0, dyn, dyn>{n, n, n, n}));
  
!     verify_all(make_mapping<Layout>(
! 	std::extents<Int, dyn, dyn, dyn, dyn, dyn>{n, n, 0, n, n}));
  
!     verify_all(make_mapping<Layout>(
! 	std::extents<Int, dyn, dyn, dyn, 0>{n, n, n}));
  
!     verify_all(make_mapping<Layout>(
! 	std::extents<Int, dyn, dyn, dyn, dyn>{n, n, n, 0}));
  
!     verify_all(make_mapping<Layout>(
! 	std::extents<Int, 0, dyn, dyn, dyn>{n, n, n}));
  
!     verify_all(make_mapping<Layout>(
! 	std::extents<Int, dyn, dyn, dyn, dyn>{0, n, n, n}));
!   }
  
  template<typename Layout, typename Int>
!   constexpr void
!   test_overflow()
!   {
!     test_static_overflow<Layout, Int>();
!     test_dynamic_overflow<Layout, Int>();
!   }
  
  template<typename Layout>
!   constexpr bool
!   test_all()
!   {
!     test_overflow<Layout, signed char>();
!     test_overflow<Layout, short int>();
!     test_overflow<Layout, int>();
!     test_overflow<Layout, long int>();
!     test_overflow<Layout, long long int>();
  
!     test_overflow<Layout, unsigned char>();
!     test_overflow<Layout, unsigned short int>();
!     test_overflow<Layout, unsigned int>();
!     test_overflow<Layout, unsigned long int>();
!     test_overflow<Layout, unsigned long long int>();
!     test_overflow<Layout, size_t>();
!     return true;
!   }
  
  int
  main()
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc	Sun Sep 21 22:33:45 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc	Sun Sep 28 22:35:19 2025
***************
*** 7,12 ****
--- 7,21 ----
  
  constexpr size_t dyn = std::dynamic_extent;
  
+ template<typename Mapping>
+   concept has_static_is_exhaustive = requires
+   {
+     { Mapping::is_exhaustive() } -> std::same_as<bool>;
+   };
+ 
+ static_assert(has_static_is_exhaustive<std::layout_right::mapping<std::extents<int>>>);
+ static_assert(!has_static_is_exhaustive<std::layout_stride::mapping<std::extents<int>>>);
+ 
  template<typename Layout, typename Extents>
    constexpr bool
    test_mapping_properties()
*************** template<typename Layout, typename Exten
*** 32,38 ****
  
      static_assert(M::is_always_unique() && M::is_unique());
      static_assert(M::is_always_strided() && M::is_strided());
!     if constexpr (!std::is_same_v<Layout, std::layout_stride>)
        static_assert(M::is_always_exhaustive() && M::is_exhaustive());
      return true;
    }
--- 41,47 ----
  
      static_assert(M::is_always_unique() && M::is_unique());
      static_assert(M::is_always_strided() && M::is_strided());
!     if constexpr (has_static_is_exhaustive<M>)
        static_assert(M::is_always_exhaustive() && M::is_exhaustive());
      return true;
    }
*************** template<typename Layout>
*** 306,312 ****
    constexpr void
    test_stride_1d()
    {
!     std::layout_left::mapping<std::extents<int, 3>> m;
      VERIFY(m.stride(0) == 1);
    }
  
--- 315,321 ----
    constexpr void
    test_stride_1d()
    {
!     typename Layout::mapping<std::extents<int, 3>> m;
      VERIFY(m.stride(0) == 1);
    }
  
*************** template<>
*** 321,393 ****
    }
  
  template<typename Layout>
!   constexpr void
!   test_stride_2d();
  
  template<>
!   constexpr void
!   test_stride_2d<std::layout_left>()
    {
!     std::layout_left::mapping<std::extents<int, 3, 5>> m;
!     VERIFY(m.stride(0) == 1);
!     VERIFY(m.stride(1) == 3);
!   }
  
  template<>
!   constexpr void
!   test_stride_2d<std::layout_right>()
    {
!     std::layout_right::mapping<std::extents<int, 3, 5>> m;
!     VERIFY(m.stride(0) == 5);
!     VERIFY(m.stride(1) == 1);
!   }
  
  template<>
    constexpr void
!   test_stride_2d<std::layout_stride>()
    {
!     std::array<int, 2> strides{13, 2};
!     std::layout_stride::mapping m(std::extents<int, 3, 5>{}, strides);
!     VERIFY(m.stride(0) == strides[0]);
!     VERIFY(m.stride(1) == strides[1]);
!     VERIFY(m.strides() == strides);
    }
  
  template<typename Layout>
!   constexpr void
!   test_stride_3d();
  
  template<>
!   constexpr void
!   test_stride_3d<std::layout_left>()
    {
!     std::layout_left::mapping m(std::dextents<int, 3>(3, 5, 7));
!     VERIFY(m.stride(0) == 1);
!     VERIFY(m.stride(1) == 3);
!     VERIFY(m.stride(2) == 3*5);
!   }
  
  template<>
!   constexpr void
!   test_stride_3d<std::layout_right>()
    {
!     std::layout_right::mapping m(std::dextents<int, 3>(3, 5, 7));
!     VERIFY(m.stride(0) == 5*7);
!     VERIFY(m.stride(1) == 7);
!     VERIFY(m.stride(2) == 1);
!   }
  
  template<>
    constexpr void
!   test_stride_3d<std::layout_stride>()
    {
!     std::dextents<int, 3> exts(3, 5, 7);
!     std::array<int, 3> strides{11, 2, 41};
!     std::layout_stride::mapping<std::dextents<int, 3>> m(exts, strides);
!     VERIFY(m.stride(0) == strides[0]);
!     VERIFY(m.stride(1) == strides[1]);
!     VERIFY(m.stride(2) == strides[2]);
!     VERIFY(m.strides() == strides);
    }
  
  template<typename Layout>
--- 330,433 ----
    }
  
  template<typename Layout>
! struct TestStride2D;
  
  template<>
!   struct TestStride2D<std::layout_left>
    {
!     static constexpr void
!     run()
!     {
!       std::layout_left::mapping<std::extents<int, 3, 5>> m;
!       VERIFY(m.stride(0) == 1);
!       VERIFY(m.stride(1) == 3);
!     }
!   };
  
  template<>
!   struct TestStride2D<std::layout_right>
    {
!     static constexpr void
!     run()
!     {
!       std::layout_right::mapping<std::extents<int, 3, 5>> m;
!       VERIFY(m.stride(0) == 5);
!       VERIFY(m.stride(1) == 1);
!     }
!   };
  
  template<>
+   struct TestStride2D<std::layout_stride>
+   {
+     static constexpr void
+     run()
+     {
+       std::array<int, 2> strides{13, 2};
+       std::layout_stride::mapping m(std::extents<int, 3, 5>{}, strides);
+       VERIFY(m.stride(0) == strides[0]);
+       VERIFY(m.stride(1) == strides[1]);
+       VERIFY(m.strides() == strides);
+     }
+   };
+ 
+ template<typename Layout>
    constexpr void
!   test_stride_2d()
    {
!     TestStride2D<Layout>::run();
    }
  
  template<typename Layout>
! struct TestStride3D;
  
  template<>
!   struct TestStride3D<std::layout_left>
    {
!     static constexpr void
!     run()
!     {
!       std::layout_left::mapping m(std::dextents<int, 3>(3, 5, 7));
!       VERIFY(m.stride(0) == 1);
!       VERIFY(m.stride(1) == 3);
!       VERIFY(m.stride(2) == 3*5);
!     }
!   };
! 
  
  template<>
!   struct TestStride3D<std::layout_right>
    {
!     static constexpr void
!     run()
!     {
!       std::layout_right::mapping m(std::dextents<int, 3>(3, 5, 7));
!       VERIFY(m.stride(0) == 5*7);
!       VERIFY(m.stride(1) == 7);
!       VERIFY(m.stride(2) == 1);
!     }
!   };
  
  template<>
+   struct TestStride3D<std::layout_stride>
+   {
+     static constexpr void
+     run()
+     {
+       std::dextents<int, 3> exts(3, 5, 7);
+       std::array<int, 3> strides{11, 2, 41};
+       std::layout_stride::mapping<std::dextents<int, 3>> m(exts, strides);
+       VERIFY(m.stride(0) == strides[0]);
+       VERIFY(m.stride(1) == strides[1]);
+       VERIFY(m.stride(2) == strides[2]);
+       VERIFY(m.strides() == strides);
+     }
+   };
+ 
+ template<typename Layout>
    constexpr void
!   test_stride_3d()
    {
!     TestStride3D<Layout>::run();
    }
  
  template<typename Layout>
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc	Sun Sep 21 22:33:45 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc	Sun Sep 28 22:35:19 2025
*************** constexpr bool is_equal(std::less<T>, st
*** 61,67 ****
  { return true; }
  
  constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
! { return lhs.state = rhs.state; }
  
  constexpr auto get0 = [](auto const& t) {
    using std::get;
--- 61,67 ----
  { return true; }
  
  constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
! { return lhs.state == rhs.state; }
  
  constexpr auto get0 = [](auto const& t) {
    using std::get;
*************** do_test(Alloc alloc, Cmp cmp)
*** 103,114 ****
    std::multimap<K, V, Cmp, Alloc> m4(std::from_range, Range(a, a+4), cmp);
    VERIFY( eq(m4, {a, 4}) );
    VERIFY( m4.get_allocator() == Alloc() );
!   VERIFY( is_equal(m4.key_comp(), Cmp()) );
  
    std::multimap<K, V, Cmp, Alloc> m9(std::from_range, Range(a, a+9), alloc);
    VERIFY( eq(m9, {a, 9}) );
    VERIFY( m9.get_allocator() == alloc );
!   VERIFY( is_equal(m9.key_comp(), cmp) );
  
    std::multimap<K, V, Cmp, Alloc> mr(std::from_range, Range(a, a+14), cmp, alloc);
    VERIFY( eq(mr, {a, 14}) );
--- 103,114 ----
    std::multimap<K, V, Cmp, Alloc> m4(std::from_range, Range(a, a+4), cmp);
    VERIFY( eq(m4, {a, 4}) );
    VERIFY( m4.get_allocator() == Alloc() );
!   VERIFY( is_equal(m4.key_comp(), cmp) );
  
    std::multimap<K, V, Cmp, Alloc> m9(std::from_range, Range(a, a+9), alloc);
    VERIFY( eq(m9, {a, 9}) );
    VERIFY( m9.get_allocator() == alloc );
!   VERIFY( is_equal(m9.key_comp(), Cmp()) );
  
    std::multimap<K, V, Cmp, Alloc> mr(std::from_range, Range(a, a+14), cmp, alloc);
    VERIFY( eq(mr, {a, 14}) );
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc	Sun Sep 21 22:33:56 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc	Sun Sep 28 22:35:19 2025
*************** constexpr bool is_equal(std::less<T>, st
*** 48,54 ****
  { return true; }
  
  constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
! { return lhs.state = rhs.state; }
  
  template<typename Range, typename Alloc, typename Cmp>
  constexpr void
--- 48,54 ----
  { return true; }
  
  constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
! { return lhs.state == rhs.state; }
  
  template<typename Range, typename Alloc, typename Cmp>
  constexpr void
*************** do_test(Alloc alloc, Cmp cmp)
*** 82,93 ****
    std::set<V, Cmp, Alloc> s4(std::from_range, Range(a, a+4), cmp);
    VERIFY( eq(s4, {a, 4}) );
    VERIFY( s4.get_allocator() == Alloc() );
!   VERIFY( is_equal(s4.key_comp(), Cmp()) );
  
    std::set<V, Cmp, Alloc> s9(std::from_range, Range(a, a+9), alloc);
    VERIFY( eq(s9, {a, 9}) );
    VERIFY( s9.get_allocator() == alloc );
!   VERIFY( is_equal(s9.key_comp(), cmp) );
  
    std::set<V, Cmp, Alloc> sr(std::from_range, Range(a, a+14), cmp, alloc);
    VERIFY( eq(sr, {a, 9}) );
--- 82,93 ----
    std::set<V, Cmp, Alloc> s4(std::from_range, Range(a, a+4), cmp);
    VERIFY( eq(s4, {a, 4}) );
    VERIFY( s4.get_allocator() == Alloc() );
!   VERIFY( is_equal(s4.key_comp(), cmp) );
  
    std::set<V, Cmp, Alloc> s9(std::from_range, Range(a, a+9), alloc);
    VERIFY( eq(s9, {a, 9}) );
    VERIFY( s9.get_allocator() == alloc );
!   VERIFY( is_equal(s9.key_comp(), Cmp()) );
  
    std::set<V, Cmp, Alloc> sr(std::from_range, Range(a, a+14), cmp, alloc);
    VERIFY( eq(sr, {a, 9}) );
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc	Sun Sep 21 22:33:56 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc	Sun Sep 28 22:35:19 2025
*************** constexpr bool is_equal(std::less<T>, st
*** 47,53 ****
  { return true; }
  
  constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
! { return lhs.state = rhs.state; }
  
  template<typename Range, typename Alloc, typename Cmp>
  constexpr void
--- 47,53 ----
  { return true; }
  
  constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
! { return lhs.state == rhs.state; }
  
  template<typename Range, typename Alloc, typename Cmp>
  constexpr void
*************** do_test(Alloc alloc, Cmp cmp)
*** 81,92 ****
    std::set<V, Cmp, Alloc> s4(std::from_range, Range(a, a+4), cmp);
    VERIFY( eq(s4, {a, 4}) );
    VERIFY( s4.get_allocator() == Alloc() );
!   VERIFY( is_equal(s4.key_comp(), Cmp()) );
  
    std::set<V, Cmp, Alloc> s9(std::from_range, Range(a, a+9), alloc);
    VERIFY( eq(s9, {a, 9}) );
    VERIFY( s9.get_allocator() == alloc );
!   VERIFY( is_equal(s9.key_comp(), cmp) );
  
    std::set<V, Cmp, Alloc> sr(std::from_range, Range(a, a+14), cmp, alloc);
    VERIFY( eq(sr, {a, 9}) );
--- 81,92 ----
    std::set<V, Cmp, Alloc> s4(std::from_range, Range(a, a+4), cmp);
    VERIFY( eq(s4, {a, 4}) );
    VERIFY( s4.get_allocator() == Alloc() );
!   VERIFY( is_equal(s4.key_comp(), cmp) );
  
    std::set<V, Cmp, Alloc> s9(std::from_range, Range(a, a+9), alloc);
    VERIFY( eq(s9, {a, 9}) );
    VERIFY( s9.get_allocator() == alloc );
!   VERIFY( is_equal(s9.key_comp(), Cmp()) );
  
    std::set<V, Cmp, Alloc> sr(std::from_range, Range(a, a+14), cmp, alloc);
    VERIFY( eq(sr, {a, 9}) );
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc	Sun Sep 21 22:33:57 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc	Sun Sep 28 22:35:19 2025
*************** constexpr bool is_equal(std::equal_to<T>
*** 100,109 ****
  { return true; }
  
  constexpr bool is_equal(StateHash lhs, StateHash rhs)
! { return lhs.state = rhs.state; }
  
  constexpr bool is_equal(StateEq lhs, StateEq rhs)
! { return lhs.state = rhs.state; }
  
  template<typename Range, typename Alloc, typename Hash, typename Equal>
  constexpr void
--- 100,109 ----
  { return true; }
  
  constexpr bool is_equal(StateHash lhs, StateHash rhs)
! { return lhs.state == rhs.state; }
  
  constexpr bool is_equal(StateEq lhs, StateEq rhs)
! { return lhs.state == rhs.state; }
  
  template<typename Range, typename Alloc, typename Hash, typename Equal>
  constexpr void
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc	Sun Sep 21 22:33:57 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc	Sun Sep 28 22:35:19 2025
*************** constexpr bool is_equal(std::equal_to<T>
*** 114,123 ****
  { return true; }
  
  constexpr bool is_equal(StateHash lhs, StateHash rhs)
! { return lhs.state = rhs.state; }
  
  constexpr bool is_equal(StateEq lhs, StateEq rhs)
! { return lhs.state = rhs.state; }
  
  template<typename Range, typename Alloc, typename Hash, typename Equal>
  constexpr void
--- 114,123 ----
  { return true; }
  
  constexpr bool is_equal(StateHash lhs, StateHash rhs)
! { return lhs.state == rhs.state; }
  
  constexpr bool is_equal(StateEq lhs, StateEq rhs)
! { return lhs.state == rhs.state; }
  
  template<typename Range, typename Alloc, typename Hash, typename Equal>
  constexpr void
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc	Sun Sep 21 22:33:57 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc	Sun Sep 28 22:35:19 2025
*************** constexpr bool is_equal(std::equal_to<T>
*** 85,95 ****
  { return true; }
  
  constexpr bool is_equal(StateHash lhs, StateHash rhs)
! { return lhs.state = rhs.state; }
  
  
  constexpr bool is_equal(StateEq lhs, StateEq rhs)
! { return lhs.state = rhs.state; }
  
  template<typename Range, typename Alloc, typename Hash, typename Equal>
  constexpr void
--- 85,95 ----
  { return true; }
  
  constexpr bool is_equal(StateHash lhs, StateHash rhs)
! { return lhs.state == rhs.state; }
  
  
  constexpr bool is_equal(StateEq lhs, StateEq rhs)
! { return lhs.state == rhs.state; }
  
  template<typename Range, typename Alloc, typename Hash, typename Equal>
  constexpr void
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc gcc-16-20250928/libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc	Sun Sep 21 22:33:57 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc	Sun Sep 28 22:35:19 2025
*************** constexpr bool is_equal(std::equal_to<T>
*** 84,94 ****
  { return true; }
  
  constexpr bool is_equal(StateHash lhs, StateHash rhs)
! { return lhs.state = rhs.state; }
  
  
  constexpr bool is_equal(StateEq lhs, StateEq rhs)
! { return lhs.state = rhs.state; }
  
  template<typename Range, typename Alloc, typename Hash, typename Equal>
  constexpr void
--- 84,94 ----
  { return true; }
  
  constexpr bool is_equal(StateHash lhs, StateHash rhs)
! { return lhs.state == rhs.state; }
  
  
  constexpr bool is_equal(StateEq lhs, StateEq rhs)
! { return lhs.state == rhs.state; }
  
  template<typename Range, typename Alloc, typename Hash, typename Equal>
  constexpr void
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc gcc-16-20250928/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc	Sun Sep 21 22:34:00 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc	Sun Sep 28 22:35:20 2025
*************** test04()
*** 101,126 ****
  
    auto p = ranges::minmax({1,2}, counted_less{});
    VERIFY( counter == 1 );
!   VERIFY( p.min = 1 );
!   VERIFY( p.max = 2 );
  
    counter = 0;
    p = ranges::minmax({1,2,3}, counted_less{});
    VERIFY( counter == 3 );
!   VERIFY( p.min = 1 );
!   VERIFY( p.max = 3 );
  
    counter = 0;
    p = ranges::minmax({1,2,3,4,5,6,7,8,9,10}, counted_less{});
    VERIFY( counter <= 15 );
!   VERIFY( p.min = 1 );
!   VERIFY( p.max = 10 );
  
    counter = 0;
    p = ranges::minmax({10,9,8,7,6,5,4,3,2,1}, counted_less{});
    VERIFY( counter <= 15 );
!   VERIFY( p.min = 1 );
!   VERIFY( p.max = 10 );
  }
  
  void
--- 101,126 ----
  
    auto p = ranges::minmax({1,2}, counted_less{});
    VERIFY( counter == 1 );
!   VERIFY( p.min == 1 );
!   VERIFY( p.max == 2 );
  
    counter = 0;
    p = ranges::minmax({1,2,3}, counted_less{});
    VERIFY( counter == 3 );
!   VERIFY( p.min == 1 );
!   VERIFY( p.max == 3 );
  
    counter = 0;
    p = ranges::minmax({1,2,3,4,5,6,7,8,9,10}, counted_less{});
    VERIFY( counter <= 15 );
!   VERIFY( p.min == 1 );
!   VERIFY( p.max == 10 );
  
    counter = 0;
    p = ranges::minmax({10,9,8,7,6,5,4,3,2,1}, counted_less{});
    VERIFY( counter <= 15 );
!   VERIFY( p.min == 1 );
!   VERIFY( p.max == 10 );
  }
  
  void
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox4x32.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox4x32.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox4x32.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox4x32.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,26 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-cpp-feature-test __cpp_lib_philox_engine }
+ 
+ // N5014 29.5.6 Engines and engine adaptors with predefined parameters
+ 
+ #include <random>
+ #include <testsuite_hooks.h>
+ 
+ using test_type = std::philox_engine<std::uint_fast32_t, 32, 4, 10,
+ 				     0xCD9E8D57, 0x9E3779B9,
+ 				     0xD2511F53, 0xBB67AE85>;
+ static_assert( std::is_same_v<test_type, std::philox4x32> );
+ 
+ void
+ test01()
+ {
+   std::philox4x32 a;
+   a.discard(9999);
+ 
+   VERIFY( a() == 1955073260 );
+ }
+ 
+ int main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox4x64.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox4x64.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox4x64.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox4x64.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,26 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-cpp-feature-test __cpp_lib_philox_engine }
+ 
+ // N5014 29.5.6 Engines and engine adaptors with predefined parameters
+ 
+ #include <random>
+ #include <testsuite_hooks.h>
+ 
+ using test_type = std::philox_engine<std::uint_fast64_t, 64, 4, 10,
+ 				     0xCA5A826395121157, 0x9E3779B97F4A7C15,
+ 				     0xD2E7470EE14C6C93, 0xBB67AE8584CAA73B>;
+ static_assert( std::is_same_v<test_type, std::philox4x64> );
+ 
+ void
+ test01()
+ {
+   std::philox4x64 a;
+   a.discard(9999);
+ 
+   VERIFY( a() == 3409172418970261260 );
+ }
+ 
+ int main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/copy.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/copy.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/copy.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/copy.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,27 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-cpp-feature-test __cpp_lib_philox_engine }
+ 
+ // N5014 29.5.4 Random Number Engine Class Templates
+ // N5014 29.5.4.5 Class Template philox_engine
+ 
+ #include <random>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01(unsigned long seed)
+ {
+ 
+   std::philox_engine<std::uint_fast32_t, 32, 4, 10, 0xCD9E8D57,
+ 	0x9E3779B9, 0xD2511F53, 0xBB67AE85> e(seed);
+ 
+   const auto f(e);
+   VERIFY( f == e );
+   auto g(f);
+   VERIFY( g == f );
+ }
+ 
+ int main()
+ {
+   test01(1ul);
+   test01(111ul);
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/default.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/default.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/default.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/default.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,49 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-cpp-feature-test __cpp_lib_philox_engine }
+ 
+ // N5014 29.5.4.5 Class Template philox_engine
+ 
+ #include <random>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test_default_ctor()
+ {
+   std::philox_engine<std::uint_fast32_t,
+ 		     32, 4, 10, 0xCD9E8D57,
+ 		     0x9E3779B9, 0xD2511F53,
+ 		     0xBB67AE85> philox4x32nullkey(0);
+ 
+   VERIFY( philox4x32nullkey.min() == 0 );
+   VERIFY( philox4x32nullkey.max() == (1ul << 31 | (1ul << 31) - 1) );
+   VERIFY( philox4x32nullkey() == 0x6627e8d5ul );
+ }
+ 
+ void
+ test_seed()
+ {
+   unsigned long seed = 2;
+   std::philox4x32 seeded(seed);
+ 
+   std::philox4x32 default_init;
+   VERIFY( seeded != default_init );
+ 
+   std::philox4x32 default_seeded(std::philox4x32::default_seed);
+   VERIFY( default_seeded == default_init );
+ }
+ 
+ void
+ test_seed_seq()
+ {
+   std::seed_seq sseq{ 1, 2, 3, 4 };
+   std::philox4x32 seeded(sseq);
+   std::philox4x32 default_init;
+   VERIFY( seeded != default_init );
+ }
+ 
+ int main()
+ {
+   test_default_ctor();
+   test_seed();
+   test_seed_seq();
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/seed.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/seed.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/seed.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/cons/seed.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,51 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-cpp-feature-test __cpp_lib_philox_engine }
+ 
+ #include <random>
+ #include <testsuite_hooks.h>
+ 
+ int f(int x)
+ {
+   std::seed_seq sq(&x, &x + 1);
+   auto rnd = std::philox4x32(sq);
+   return std::uniform_int_distribution<int>()(rnd);
+ }
+ 
+ int g(int x)
+ {
+   std::seed_seq sq(&x, &x + 1);
+   auto rnd = std::philox4x32();
+   rnd.seed(sq);
+   return std::uniform_int_distribution<int>()(rnd);
+ }
+ 
+ void
+ test01()
+ {
+   const int f1 = f(0);
+   const int f2 = f(0);
+ 
+   const int g1 = g(0);
+   const int g2 = g(0);
+ 
+   VERIFY( f1 == f2 );
+   VERIFY( g1 == g2 );
+   VERIFY( f1 == g1 );
+ }
+ 
+ void
+ test02()
+ {
+   std::philox4x64 e1(25);
+   std::philox4x64 e2;
+   VERIFY( e2 != e1 );
+   e2.seed(25);
+   VERIFY( e2 == e1 );
+ 
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/equal.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/equal.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/equal.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/equal.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,33 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-cpp-feature-test __cpp_lib_philox_engine }
+ 
+ // N5014 29.5.4.5 Class Template philox_engine
+ 
+ #include <random>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   std::philox_engine<std::uint_fast32_t,
+ 		     32, 4, 10, 0xCD9E8D57,
+ 		     0x9E3779B9, 0xD2511F53,
+ 		     0xBB67AE85> x, y;
+ 
+   VERIFY ( x == y);
+   x.discard(100);
+   y.discard(100);
+ 
+   VERIFY (x == y);
+ 
+   x.discard(2);
+   VERIFY (x != y);
+   y.discard(2);
+   VERIFY (x == y);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/serialize.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/serialize.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/serialize.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/operators/serialize.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,46 ----
+ // { dg-do run { target c++26 } }
+ // { dg-require-cpp-feature-test __cpp_lib_philox_engine }
+ 
+ // N5014 29.5.4.5 Class Template philox_engine
+ 
+ #include <sstream>
+ #include <random>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   std::stringstream str;
+   std::philox_engine<std::uint_fast32_t,
+ 		     32, 4, 10, 0xCD9E8D57,
+ 		     0x9E3779B9, 0xD2511F53,
+ 		     0xBB67AE85> x, y;
+ 
+   x();
+   str << x;
+ 
+   VERIFY ( !(x == y) );
+   str >> y;
+   VERIFY ( x == y );
+   for (unsigned long i = 0; i < 100; ++i)
+   {
+     VERIFY (x() == y());
+   }
+   str.clear();
+   str << y;
+   x();
+   x();
+   x();
+   str >> x;
+   VERIFY ( x == y );
+   for (unsigned long i = 0; i < 1000; ++i)
+   {
+     VERIFY (x() == y());
+   }
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/constants.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/constants.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/constants.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/constants.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,48 ----
+ // { dg-do compile { target c++26 } }
+ // { dg-require-cpp-feature-test __cpp_lib_philox_engine }
+ 
+ // N5014 29.5.4.5 Class Template philox_engine
+ 
+ #include <random>
+ 
+ namespace test1
+ {
+   using P = std::philox_engine<std::uint32_t, 32, 4, 5, 9, 99, 999, 9999>;
+   constexpr std::same_as<std::uint32_t> auto min = P::min();
+   static_assert( min == 0 );
+   constexpr std::same_as<std::uint32_t> auto max = P::max();
+   static_assert( max == 0xffffffff );
+   constexpr std::same_as<std::size_t> auto w = P::word_size;
+   static_assert( w == 32 );
+   constexpr std::same_as<std::size_t> auto n = P::word_count;
+   static_assert( n == 4 );
+   constexpr std::same_as<std::size_t> auto r = P::round_count;
+   static_assert( r == 5 );
+   constexpr std::array<std::uint32_t, 2> muls = P::multipliers;
+   static_assert( muls[0] == 9 && muls[1] == 999 );
+   constexpr std::array<std::uint32_t, 2> consts = P::round_consts;
+   static_assert( consts[0] == 99 && consts[1] == 9999 );
+   constexpr std::same_as<std::uint32_t> auto def = P::default_seed;
+   static_assert( def == 20111115u );
+ }
+ 
+ namespace test2
+ {
+   using P = std::philox_engine<std::uint64_t, 64, 2, 12, 77, 777>;
+   constexpr std::same_as<std::uint64_t> auto min = P::min();
+   static_assert( min == 0 );
+   constexpr std::same_as<std::uint64_t> auto max = P::max();
+   static_assert( max == 0xffffffffffffffff );
+   constexpr std::same_as<std::size_t> auto w = P::word_size;
+   static_assert( w == 64 );
+   constexpr std::same_as<std::size_t> auto n = P::word_count;
+   static_assert( n == 2 );
+   constexpr std::same_as<std::size_t> auto r = P::round_count;
+   static_assert( r == 12 );
+   constexpr std::array<std::uint64_t, 1> muls = P::multipliers;
+   static_assert( muls[0] == 77 );
+   constexpr std::array<std::uint64_t, 1> consts = P::round_consts;
+   static_assert( consts[0] == 777 );
+   constexpr std::same_as<std::uint64_t> auto def = P::default_seed;
+   static_assert( def == 20111115u );
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/typedefs.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/typedefs.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/typedefs.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/philox_engine/requirements/typedefs.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,30 ----
+ // { dg-do compile { target c++26 } }
+ // { dg-require-cpp-feature-test __cpp_lib_philox_engine }
+ 
+ // N5014 29.5.4.5 Class Template philox_engine
+ 
+ #include <random>
+ 
+ void
+ test01()
+ {
+   typedef std::philox_engine<std::uint_fast32_t,
+ 		     32, 4, 10, 0xCD9E8D57,
+ 		     0x9E3779B9, 0xD2511F53,
+ 		     0xBB67AE85> testType;
+ 
+   typedef testType::result_type result_type;
+   static_assert( std::is_same_v<result_type, std::uint_fast32_t> );
+ }
+ 
+ void
+ test02()
+ {
+   typedef std::philox_engine<std::uint_fast64_t,
+ 		     64, 4, 10, 0xCA5A826395121157,
+ 		     0x9E3779B97F4A7C15, 0xD2E7470EE14C6C93,
+ 		      0xBB67AE8584CAA73B> testType;
+ 
+   typedef testType::result_type result_type;
+   static_assert( std::is_same_v<result_type, std::uint_fast64_t> );
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc	Thu Jan  1 00:00:00 1970
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/122062.cc	Sun Sep 28 22:35:20 2025
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do compile { target c++11 } }
+ 
+ // PR libstdc++/122062
+ // piecewise_linear_distribution(firstB, lastB, firstW) invokes comma operator
+ 
+ #include <random>
+ #include <testsuite_iterators.h>
+ 
+ void
+ test_pr122062()
+ {
+   double b[1]{};
+   double w[1]{};
+   __gnu_test::random_access_container<double> B(b), W(w);
+   std::piecewise_linear_distribution<double> p(B.begin(), B.end(), W.begin());
+ }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc	Sun Sep 21 22:34:01 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc	Sun Sep 28 22:35:20 2025
*************** std::__detail::_Adaptor<std::mt19937, un
*** 10,15 ****
  auto x = std::generate_canonical<std::size_t,
  			std::numeric_limits<std::size_t>::digits>(urng);
  
! // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 270 }
  
! // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 3357 }
--- 10,15 ----
  auto x = std::generate_canonical<std::size_t,
  			std::numeric_limits<std::size_t>::digits>(urng);
  
! // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 271 }
  
! // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 3480 }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc gcc-16-20250928/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc	Sun Sep 21 22:34:01 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc	Sun Sep 28 22:35:20 2025
*************** void test01()
*** 36,43 ****
    tm time1;
    iss >> get_time(&time1, L"%H:%M:%S %Y");
    VERIFY( static_cast<bool>(iss) );
!   VERIFY(time1.tm_hour = 12);
!   VERIFY(time1.tm_min = 1);
    VERIFY(time1.tm_sec == 30);
    VERIFY(time1.tm_year == 71);
  }
--- 36,43 ----
    tm time1;
    iss >> get_time(&time1, L"%H:%M:%S %Y");
    VERIFY( static_cast<bool>(iss) );
!   VERIFY(time1.tm_hour == 12);
!   VERIFY(time1.tm_min == 1);
    VERIFY(time1.tm_sec == 30);
    VERIFY(time1.tm_year == 71);
  }
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/std/time/format/empty_spec.cc gcc-16-20250928/libstdc++-v3/testsuite/std/time/format/empty_spec.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/std/time/format/empty_spec.cc	Sun Sep 21 22:34:03 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/std/time/format/empty_spec.cc	Sun Sep 28 22:35:21 2025
*************** wall_cast(const local_time<Dur2>& tp)
*** 653,667 ****
  using decadays = duration<days::rep, std::ratio_multiply<std::deca, days::period>>;
  using kilodays = duration<days::rep, std::ratio_multiply<std::kilo, days::period>>;
  
! template<typename CharT, typename Clock>
  void
! test_time_point(bool daysAsTime)
  {
    std::basic_string<CharT> res;
  
    const auto lt = local_days(2024y/March/22) + 13h + 24min + 54s + 111222333ns;
!   auto strip_time = [daysAsTime](std::basic_string_view<CharT> sv)
!   { return daysAsTime ? sv : sv.substr(0, 10); };
  
    verify( wall_cast<Clock, nanoseconds>(lt),
  	  WIDEN("2024-03-22 13:24:54.111222333") );
--- 653,667 ----
  using decadays = duration<days::rep, std::ratio_multiply<std::deca, days::period>>;
  using kilodays = duration<days::rep, std::ratio_multiply<std::kilo, days::period>>;
  
! template<typename CharT, typename Clock, bool CustomizedOstream>
  void
! test_time_point()
  {
    std::basic_string<CharT> res;
  
    const auto lt = local_days(2024y/March/22) + 13h + 24min + 54s + 111222333ns;
!   auto strip_time = [](std::basic_string_view<CharT> sv)
!   { return CustomizedOstream ? sv.substr(0, 10) : sv; };
  
    verify( wall_cast<Clock, nanoseconds>(lt),
  	  WIDEN("2024-03-22 13:24:54.111222333") );
*************** test_time_point(bool daysAsTime)
*** 681,686 ****
--- 681,699 ----
  	  strip_time(WIDEN("2024-03-18 00:00:00")) );
    verify( wall_cast<Clock, kilodays>(lt),
  	  strip_time(WIDEN("2022-01-08 00:00:00")) );
+ 
+   if constexpr (!CustomizedOstream)
+   {
+     verify( wall_cast<Clock, duration<double>>(lt),
+ 	    WIDEN("2024-03-22 13:24:54") );
+     verify( wall_cast<Clock, years>(lt),
+ 	    WIDEN("2024-01-01 02:16:48") );
+   }
+   else
+   {
+     test_no_empty_spec<CharT, time_point<Clock, duration<double>>>();
+     test_no_empty_spec<CharT, time_point<Clock, years>>();
+   }
  }
  
  template<typename CharT>
*************** template<typename CharT>
*** 776,795 ****
  void
  test_time_points()
  {
!   test_time_point<CharT, local_t>(false);
!   test_time_point<CharT, system_clock>(false);
!   test_time_point<CharT, utc_clock>(true);
!   test_time_point<CharT, tai_clock>(true);
!   test_time_point<CharT, gps_clock>(true);
!   test_time_point<CharT, file_clock>(true);
    test_leap_second<CharT>();
  #if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI
    test_zoned_time<CharT>();
  #endif
    test_local_time_format<CharT>();
  
-   test_no_empty_spec<CharT, sys_time<years>>();
-   test_no_empty_spec<CharT, sys_time<duration<float>>>();
  }
  
  #if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI
--- 789,806 ----
  void
  test_time_points()
  {
!   test_time_point<CharT, local_t, true>();
!   test_time_point<CharT, system_clock, true>();
!   test_time_point<CharT, utc_clock, false>();
!   test_time_point<CharT, tai_clock, false>();
!   test_time_point<CharT, gps_clock, false>();
!   test_time_point<CharT, file_clock, false>();
    test_leap_second<CharT>();
  #if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI
    test_zoned_time<CharT>();
  #endif
    test_local_time_format<CharT>();
  
  }
  
  #if _GLIBCXX_USE_CXX11_ABI || !_GLIBCXX_USE_DUAL_ABI
diff -Nrcpad gcc-16-20250921/libstdc++-v3/testsuite/std/time/year_month_day/io.cc gcc-16-20250928/libstdc++-v3/testsuite/std/time/year_month_day/io.cc
*** gcc-16-20250921/libstdc++-v3/testsuite/std/time/year_month_day/io.cc	Sun Sep 21 22:34:03 2025
--- gcc-16-20250928/libstdc++-v3/testsuite/std/time/year_month_day/io.cc	Sun Sep 28 22:35:21 2025
*************** test_format()
*** 49,54 ****
--- 49,60 ----
    VERIFY( s == "Day 6 (Sat) of Week 00 of 2022" );
    s = std::format("Day {:%w (%a) of Week %U of %Y}", 2022y/January/2);
    VERIFY( s == "Day 0 (Sun) of Week 01 of 2022" );
+   s = std::format("Day {:%w (%a) of Week %U of %Y}", 2024y/January/1);
+   VERIFY( s == "Day 1 (Mon) of Week 00 of 2024" );
+   s = std::format("Day {:%w (%a) of Week %U of %Y}", 2024y/January/7);
+   VERIFY( s == "Day 0 (Sun) of Week 01 of 2024" );
+   s = std::format("Day {:%w (%a) of Week %U of %Y}", 2024y/January/8);
+   VERIFY( s == "Day 1 (Mon) of Week 01 of 2024" );
    s = std::format("Day {:%w (%a) of Week %U of %Y}", 2022y/Quindecember/20);
    VERIFY( s == "Day 1 (Mon) of Week 73 of 2022" );
    // %W: Week number for weeks starting on Monday
*************** test_format()
*** 56,62 ****
    VERIFY( s == "Day 7 (Sun) of Week 00 of 2022" );
    s = std::format("Day {:%u (%a) of Week %W of %Y}", 2022y/January/3);
    VERIFY( s == "Day 1 (Mon) of Week 01 of 2022" );
!   s = std::format("Day {:%w (%a) of Week %U of %Y}", 2022y/Quindecember/20);
    VERIFY( s == "Day 1 (Mon) of Week 73 of 2022" );
  
    // %G: ISO week-calendar year (ISO 8601)
--- 62,74 ----
    VERIFY( s == "Day 7 (Sun) of Week 00 of 2022" );
    s = std::format("Day {:%u (%a) of Week %W of %Y}", 2022y/January/3);
    VERIFY( s == "Day 1 (Mon) of Week 01 of 2022" );
!   s = std::format("Day {:%w (%a) of Week %W of %Y}", 2019y/January/1);
!   VERIFY( s == "Day 2 (Tue) of Week 00 of 2019" );
!   s = std::format("Day {:%w (%a) of Week %W of %Y}", 2019y/January/7);
!   VERIFY( s == "Day 1 (Mon) of Week 01 of 2019" );
!   s = std::format("Day {:%w (%a) of Week %W of %Y}", 2019y/January/8);
!   VERIFY( s == "Day 2 (Tue) of Week 01 of 2019" );
!   s = std::format("Day {:%w (%a) of Week %W of %Y}", 2022y/Quindecember/20);
    VERIFY( s == "Day 1 (Mon) of Week 73 of 2022" );
  
    // %G: ISO week-calendar year (ISO 8601)
*************** test_format()
*** 65,70 ****
--- 77,84 ----
    VERIFY( s == "1976-W53" );
    s = std::format("{:%G-W%V}", 1977y/1/2);
    VERIFY( s == "1976-W53" );
+   s = std::format("{:%G-W%V}", 1977y/1/3);
+   VERIFY( s == "1977-W01" );
    s = std::format("{:%G-W%V}", 1977y/12/31);
    VERIFY( s == "1977-W52" );
    s = std::format("{:%G-W%V}", 1978y/1/1);
*************** test_format()
*** 84,89 ****
--- 98,130 ----
    s = std::format("{:%G-W%V}", 1980y/18/20);
    VERIFY( s == "1981-W26" );
  
+   // "Leap weak" on year starting on Thursday
+   s = std::format("{:%G-W%V}", 2009y/12/31);
+   VERIFY( s == "2009-W53" );
+   s = std::format("{:%G-W%V}", 2010y/1/1);
+   VERIFY( s == "2009-W53" );
+   s = std::format("{:%G-W%V}", 2010y/1/3);
+   VERIFY( s == "2009-W53" );
+   s = std::format("{:%G-W%V}", 2010y/1/4);
+   VERIFY( s == "2010-W01" );
+ 
+   // "Leap weak" on leap year stating on Wednesday
+   // 2020/Dec/31 is Thurday, thus 366 day of year
+   s = std::format("{:%G-W%V}", 2020y/12/30);
+   VERIFY( s == "2020-W53" );
+   s = std::format("{:%G-W%V}", 2020y/12/31);
+   VERIFY( s == "2020-W53" );
+   s = std::format("{:%G-W%V}", 2021y/1/1);
+   VERIFY( s == "2020-W53" );
+   s = std::format("{:%G-W%V}", 2021y/1/3);
+   VERIFY( s == "2020-W53" );
+   s = std::format("{:%G-W%V}", 2021y/1/4);
+   VERIFY( s == "2021-W01" );
+   s = std::format("{:%G-W%V}", 2021y/1/7);
+   VERIFY( s == "2021-W01" );
+   s = std::format("{:%G-W%V}", 2021y/1/8);
+   VERIFY( s == "2021-W01" );
+ 
    s = std::format("{:%x}", 2022y/December/19);
    VERIFY( s == "12/19/22" );
    s = std::format("{:L%x}", 2022y/December/19);
